mirror of
https://github.com/coding-horror/basic-computer-games.git
synced 2026-01-04 00:57:13 -08:00
add all BASIC source files and folders
This commit is contained in:
7
95 Weekday/README.md
Normal file
7
95 Weekday/README.md
Normal file
@@ -0,0 +1,7 @@
|
||||
### Weekday
|
||||
|
||||
As published in Basic Computer Games (1978)
|
||||
https://www.atariarchives.org/basicgames/showpage.php?page=179
|
||||
|
||||
Downloaded from Vintage Basic at
|
||||
http://www.vintage-basic.net/games.html
|
||||
150
95 Weekday/weekday.bas
Normal file
150
95 Weekday/weekday.bas
Normal file
@@ -0,0 +1,150 @@
|
||||
10 PRINT TAB(32);"WEEKDAY"
|
||||
20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
|
||||
30 PRINT:PRINT:PRINT
|
||||
100 PRINT "WEEKDAY IS A COMPUTER DEMONSTRATION THAT"
|
||||
110 PRINT"GIVES FACTS ABOUT A DATE OF INTEREST TO YOU."
|
||||
120 PRINT
|
||||
130 PRINT "ENTER TODAY'S DATE IN THE FORM: 3,24,1979 ";
|
||||
140 INPUT M1,D1,Y1
|
||||
150 REM THIS PROGRAM DETERMINES THE DAY OF THE WEEK
|
||||
160 REM FOR A DATE AFTER 1582
|
||||
170 DEF FNA(A)=INT(A/4)
|
||||
180 DIM T(12)
|
||||
190 DEF FNB(A)=INT(A/7)
|
||||
200 REM SPACE OUTPUT AND READ IN INITIAL VALUES FOR MONTHS.
|
||||
210 FOR I= 1 TO 12
|
||||
220 READ T(I)
|
||||
230 NEXT I
|
||||
240 PRINT"ENTER DAY OF BIRTH (OR OTHER DAY OF INTEREST)";
|
||||
250 INPUT M,D,Y
|
||||
260 PRINT
|
||||
270 LET I1 = INT((Y-1500)/100)
|
||||
280 REM TEST FOR DATE BEFORE CURRENT CALENDAR.
|
||||
290 IF Y-1582 <0 THEN 1300
|
||||
300 LET A = I1*5+(I1+3)/4
|
||||
310 LET I2=INT(A-FNB(A)*7)
|
||||
320 LET Y2=INT(Y/100)
|
||||
330 LET Y3 =INT(Y-Y2*100)
|
||||
340 LET A =Y3/4+Y3+D+T(M)+I2
|
||||
350 LET B=INT(A-FNB(A)*7)+1
|
||||
360 IF M > 2 THEN 470
|
||||
370 IF Y3 = 0 THEN 440
|
||||
380 LET T1=INT(Y-FNA(Y)*4)
|
||||
390 IF T1 <> 0 THEN 470
|
||||
400 IF B<>0 THEN 420
|
||||
410 LET B=6
|
||||
420 LET B = B-1
|
||||
430 GOTO 470
|
||||
440 LET A = I1-1
|
||||
450 LET T1=INT(A-FNA(A)*4)
|
||||
460 IF T1 = 0 THEN 400
|
||||
470 IF B <>0 THEN 490
|
||||
480 LET B = 7
|
||||
490 IF (Y1*12+M1)*31+D1<(Y*12+M)*31+D THEN 550
|
||||
500 IF (Y1*12+M1)*31+D1=(Y*12+M)*31+D THEN 530
|
||||
510 PRINT M;"/";D;"/";Y;" WAS A ";
|
||||
520 GOTO 570
|
||||
530 PRINT M;"/";D;"/";Y;" IS A ";
|
||||
540 GOTO 570
|
||||
550 PRINT M;"/";D;"/";Y;" WILL BE A ";
|
||||
560 REM PRINT THE DAY OF THE WEEK THE DATE FALLS ON.
|
||||
570 IF B <>1 THEN 590
|
||||
580 PRINT "SUNDAY."
|
||||
590 IF B<>2 THEN 610
|
||||
600 PRINT "MONDAY."
|
||||
610 IF B<>3 THEN 630
|
||||
620 PRINT "TUESDAY."
|
||||
630 IF B<>4 THEN 650
|
||||
640 PRINT "WEDNESDAY."
|
||||
650 IF B<>5 THEN 670
|
||||
660 PRINT "THURSDAY."
|
||||
670 IF B<>6 THEN 690
|
||||
680 GOTO 1250
|
||||
690 IF B<>7 THEN 710
|
||||
700 PRINT "SATURDAY."
|
||||
710 IF (Y1*12+M1)*31+D1=(Y*12+M)*31+D THEN 1120
|
||||
720 LET I5=Y1-Y
|
||||
730 PRINT
|
||||
740 LET I6=M1-M
|
||||
750 LET I7=D1-D
|
||||
760 IF I7>=0 THEN 790
|
||||
770 LET I6= I6-1
|
||||
780 LET I7=I7+30
|
||||
790 IF I6>=0 THEN 820
|
||||
800 LET I5=I5-1
|
||||
810 LET I6=I6+12
|
||||
820 IF I5<0 THEN 1310
|
||||
830 IF I7 <> 0 THEN 850
|
||||
835 IF I6 <> 0 THEN 850
|
||||
840 PRINT"***HAPPY BIRTHDAY***"
|
||||
850 PRINT " "," ","YEARS","MONTHS","DAYS"
|
||||
855 PRINT " "," ","-----","------","----"
|
||||
860 PRINT "YOUR AGE (IF BIRTHDATE) ",I5,I6,I7
|
||||
870 LET A8 = (I5*365)+(I6*30)+I7+INT(I6/2)
|
||||
880 LET K5 = I5
|
||||
890 LET K6 = I6
|
||||
900 LET K7 = I7
|
||||
910 REM CALCULATE RETIREMENT DATE.
|
||||
920 LET E = Y+65
|
||||
930 REM CALCULATE TIME SPENT IN THE FOLLOWING FUNCTIONS.
|
||||
940 LET F = .35
|
||||
950 PRINT "YOU HAVE SLEPT ",
|
||||
960 GOSUB 1370
|
||||
970 LET F = .17
|
||||
980 PRINT "YOU HAVE EATEN ",
|
||||
990 GOSUB 1370
|
||||
1000 LET F = .23
|
||||
1010 IF K5 > 3 THEN 1040
|
||||
1020 PRINT "YOU HAVE PLAYED",
|
||||
1030 GOTO 1080
|
||||
1040 IF K5 > 9 THEN 1070
|
||||
1050 PRINT "YOU HAVE PLAYED/STUDIED",
|
||||
1060 GOTO 1080
|
||||
1070 PRINT "YOU HAVE WORKED/PLAYED",
|
||||
1080 GOSUB 1370
|
||||
1085 GOTO 1530
|
||||
1090 PRINT "YOU HAVE RELAXED ",K5,K6,K7
|
||||
1100 PRINT
|
||||
1110 PRINT TAB(16);"*** YOU MAY RETIRE IN";E;" ***"
|
||||
1120 PRINT
|
||||
1140 PRINT
|
||||
1200 PRINT
|
||||
1210 PRINT
|
||||
1220 PRINT
|
||||
1230 PRINT
|
||||
1240 END
|
||||
1250 IF D=13 THEN 1280
|
||||
1260 PRINT "FRIDAY."
|
||||
1270 GOTO 710
|
||||
1280 PRINT "FRIDAY THE THIRTEENTH---BEWARE!"
|
||||
1290 GOTO 710
|
||||
1300 PRINT "NOT PREPARED TO GIVE DAY OF WEEK PRIOR TO MDLXXXII. "
|
||||
1310 GOTO 1140
|
||||
1320 REM TABLE OF VALUES FOR THE MONTHS TO BE USED IN CALCULATIONS.
|
||||
1330 DATA 0, 3, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5
|
||||
1340 REM THIS IS THE CURRENT DATE USED IN THE CALCULATIONS.
|
||||
1350 REM THIS IS THE DATE TO BE CALCULATED ON.
|
||||
1360 REM CALCULATE TIME IN YEARS, MONTHS, AND DAYS
|
||||
1370 LET K1=INT(F*A8)
|
||||
1380 LET I5 = INT(K1/365)
|
||||
1390 LET K1 = K1- (I5*365)
|
||||
1400 LET I6 = INT(K1/30)
|
||||
1410 LET I7 = K1 -(I6*30)
|
||||
1420 LET K5 = K5-I5
|
||||
1430 LET K6 =K6-I6
|
||||
1440 LET K7 = K7-I7
|
||||
1450 IF K7>=0 THEN 1480
|
||||
1460 LET K7=K7+30
|
||||
1470 LET K6=K6-1
|
||||
1480 IF K6>0 THEN 1510
|
||||
1490 LET K6=K6+12
|
||||
1500 LET K5=K5-1
|
||||
1510 PRINT I5,I6,I7
|
||||
1520 RETURN
|
||||
1530 IF K6=12 THEN 1550
|
||||
1540 GOTO 1090
|
||||
1550 LET K5=K5+1
|
||||
1560 LET K6=0
|
||||
1570 GOTO 1090
|
||||
1580 REM
|
||||
1590 END
|
||||
Reference in New Issue
Block a user