From 5cac1ff949c3d0c175dd081a767ffdec89f862ab Mon Sep 17 00:00:00 2001 From: Phil Spilsbury Date: Wed, 22 Sep 2021 12:29:15 +0100 Subject: [PATCH] Create DONKEY.BAS --- DONKEY.BAS | 131 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 DONKEY.BAS diff --git a/DONKEY.BAS b/DONKEY.BAS new file mode 100644 index 0000000..2f14d8e --- /dev/null +++ b/DONKEY.BAS @@ -0,0 +1,131 @@ +940 REM The IBM Personal Computer Donkey +950 REM Version 1.10 (C)Copyright IBM Corp 1981, 1982 +960 REM Licensed Material - Program Property of IBM +975 DEF SEG: POKE 106,0 +980 SAMPLES$="NO" +990 GOTO 1010 +1000 SAMPLES$="YES" +1010 KEY OFF:SCREEN 0,1:COLOR 15,0,0:WIDTH 40:CLS:LOCATE 5,19:PRINT "IBM" +1020 LOCATE 7,12,0:PRINT "Personal Computer" +1030 COLOR 10,0:LOCATE 10,9,0:PRINT CHR$(213)+STRING$(21,205)+CHR$(184) +1040 LOCATE 11,9,0:PRINT CHR$(179)+" DONKEY "+CHR$(179) +1050 LOCATE 12,9,0:PRINT CHR$(179)+STRING$(21,32)+CHR$(179) +1060 LOCATE 13,9,0:PRINT CHR$(179)+" Version 1.1O "+CHR$(179) +1070 LOCATE 14,9,0:PRINT CHR$(212)+STRING$(21,205)+CHR$(190) +1080 COLOR 15,0:LOCATE 17,4,0:PRINT "(C) Copyright IBM Corp 1981, 1982" +1090 COLOR 14,0:LOCATE 23,7,0:PRINT "Press space bar to continue" +1100 IF INKEY$<>"" THEN GOTO 1100 +1110 CMD$ = INKEY$ +1120 IF CMD$ = "" THEN GOTO 1110 +1130 IF CMD$ = CHR$(27) THEN GOTO 1298 +1140 IF CMD$ = " " THEN GOTO 1160 +1150 GOTO 1110 +1160 DEF SEG=0 +1170 IF (PEEK(&H410) AND &H30)<>&H30 THEN DEF SEG:GOTO 1291 +1180 WIDTH 80:CLS:LOCATE 3,1 +1190 PRINT "HOLD IT!" +1200 PRINT "YOU'RE NOT USING THE COLOR/GRAPHICS MONITOR ADAPTER!" +1210 PRINT "THIS PROGRAM USES GRAPHICS AND REQUIRES THAT ADAPTER." +1220 PRINT "PRESS THE SPACE BAR TO CONTINUE." +1230 DEF SEG +1240 IF INKEY$<>"" THEN GOTO 1240 +1250 CMD$ = INKEY$ +1260 IF CMD$ = "" THEN GOTO 1250 +1270 IF CMD$ = CHR$(27) THEN GOTO 1298 +1280 IF CMD$ = " " THEN GOTO 1298 +1290 GOTO 1250 +1291 KEY OFF +1292 ON ERROR GOTO 1295 +1293 PLAY "p16" +1294 GOTO 1300 +1295 COLOR 31,0,0 +1296 PRINT "THIS PROGRAM REQUIRES ADVANCED BASIC -- USE COMMAND 'BASICA'":COLOR 15,0,0:FOR I=1 TO 9000:NEXT: RESUME 1298 +1298 ON ERROR GOTO 0 +1299 SCREEN 0,1:IF SAMPLES$="YES" THEN CHAIN"samples",1000 ELSE COLOR 7,0,0:CLS:END +1300 REM +1410 COLOR 0 +1420 DEFINT A-Y +1440 SCREEN 1,0:COLOR 8,1 +1450 DIM Q%(500) +1460 DIM D1%(150),D2%(150),C1%(200),C2%(200) +1470 DIM DNK%(300) +1480 GOSUB 1940 +1490 GOSUB 1780 +1500 CLS +1510 DIM B%(300) +1520 FOR I=2 TO 300:B%(I)=-16384+192:NEXT +1530 B%(0)=2:B%(1)=193 +1540 REM +1550 CX=110:CLS +1590 LINE (0,0)-(305,199),,B +1600 LINE (6,6)-(97,195),1,BF +1610 LINE (183,6)-(305,195),1,BF +1620 LOCATE 3,5:PRINT "Donkey" +1630 LOCATE 3,29:PRINT "Driver" +1631 LOCATE 19,25:PRINT"Press Space "; +1632 LOCATE 20,25:PRINT"Bar to switch"; +1633 LOCATE 21,25:PRINT"lanes "; +1635 LOCATE 23,25:PRINT"Press ESC "; +1636 LOCATE 24,25:PRINT"to exit "; +1640 FOR Y=4 TO 199 STEP 20:LINE(140,Y)-(140,Y+10):NEXT +1650 CY=105:CX=105 +1660 LINE (100,0)-(100,199):LINE(180,0)-(180,199) +1670 LOCATE 5,6:PRINT SD:LOCATE 5,31:PRINT SM +1680 CY=CY-4:IF CY<60 THEN 2230 +1690 PUT (CX,CY),CAR%,PRESET +1700 DX=105+42*INT(RND*2) +1710 FOR Y=(RND*-4)*8 TO 124 STEP 6 +1720 SOUND 20000,1 +1730 A$=INKEY$:IF A$=CHR$(27) THEN 1298 ELSE POKE 106,0:IF LEN(A$)>0 THEN LINE (CX,CY)-(CX+28,CY+44),0,BF:CX=252-CX:PUT (CX,CY),CAR%,PRESET:SOUND 200,1 +1740 IF Y=>3 THEN PUT (DX,Y),DNK%,PSET +1750 IF CX=DX AND Y+25>=CY THEN 2060 +1760 IF Y AND 3 THEN PUT (140,6),B% +1770 NEXT:LINE (DX,124)-(DX+32,149),0,BF:GOTO 1670 +1780 CLS +1790 DRAW "S8C3" +1800 DRAW"BM12,1r3m+1,3d2R1ND2u1r2d4l2u1l1" +1810 DRAW"d7R1nd2u2r3d6l3u2l1d3m-1,1l3" +1820 DRAW"m-1,-1u3l1d2l3u6r3d2nd2r1u7l1d1l2" +1830 DRAW"u4r2d1nd2R1U2" +1840 DRAW"M+1,-3" +1850 DRAW"BD10D2R3U2M-1,-1L1M-1,1" +1860 DRAW"BD3D1R1U1L1BR2R1D1L1U1 +1870 DRAW"BD2BL2D1R1U1L1BR2R1D1L1U1 +1880 DRAW"BD2BL2D1R1U1L1BR2R1D1L1U1 +1890 LINE(0,0)-(40,60),,B +1900 PAINT (1,1) +1910 DIM CAR%(900) +1920 GET(1,1)-(29,45),CAR% +1930 RETURN +1940 CLS +1950 DRAW"S08" +1960 DRAW "BM14,18" +1970 DRAW"M+2,-4R8M+1,-1U1M+1,+1M+2,-1 +1980 DRAW"M-1,1M+1,3M-1,1M-1,-2M-1,2" +1990 DRAW"D3L1U3M-1,1D2L1U2L3D2L1U2M-1,-1" +2000 DRAW"D3L1U5M-2,3U1" +2010 PAINT (21,14),3 +2020 PRESET (37,10):PRESET (40,10) +2030 PRESET (37,11):PRESET (40,11) +2040 GET (13,0)-(45,25),DNK% +2050 RETURN +2060 SD=SD+1:LOCATE 14,6:PRINT "BOOM!" +2070 GET (DX,Y)-(DX+16,Y+25),D1% +2080 D1X=DX:D1Y=Y:D2X=DX+17 +2090 GET (DX+17,Y)-(DX+31,Y+25),D2% +2100 GET (CX,CY)-(CX+14,CY+44),C1% +2110 GET (CX+15,CY)-(CX+28,CY+44),C2% +2120 C1X=CX:C1Y=CY:C2X=CX+15 +2130 FOR P=6 TO 0 STEP -1:Z=1/(2^P):Z1=1-Z +2140 PUT (C1X,C1Y),C1%:PUT(C2X,C1Y),C2% +2150 PUT (D1X,D1Y),D1%:PUT(D2X,D1Y),D2% +2160 C1X=CX*Z1:D1Y=Y*Z1:C2X=C2X+(291-C2X)*Z +2170 D1X=DX*Z1:C1Y=C1Y+(155-C1Y)*Z:D2X=D2X+(294-D2X)*Z +2180 PUT (C1X,C1Y),C1%:PUT(C2X,C1Y),C2% +2190 PUT (D1X,D1Y),D1%:PUT(D2X,D1Y),D2% +2200 SOUND 37+RND*200,4:NEXT +2210 FOR Y=1 TO 2000:NEXT +2220 CLS:GOTO 1540 +2230 SM=SM+1:LOCATE 7,25:PRINT "Donkey loses!" +2240 FOR Y=1 TO 1000:NEXT +2250 CLS:GOTO 1540