Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1811 | yogev_ezra | 1 | REM The IBM Personal Computer Donkey |
2 | REM Version 1.10 (C)Copyright IBM Corp 1981, 1982 |
||
3 | REM Licensed Material - Program Property of IBM |
||
4 | DEF SEG : POKE 106, 0 |
||
5 | SAMPLES$ = "NO" |
||
6 | DIM CAR%(900) |
||
7 | GOTO 1010 |
||
8 | SAMPLES$ = "YES" |
||
9 | 1010 KEY OFF: SCREEN 0, 1: COLOR 15, 0, 0: WIDTH 40: CLS : LOCATE 5, 19: PRINT "IBM" |
||
10 | LOCATE 7, 12, 0: PRINT "Personal Computer" |
||
11 | COLOR 10, 0: LOCATE 10, 9, 0: PRINT CHR$(213) + STRING$(21, 205) + CHR$(184) |
||
12 | LOCATE 11, 9, 0: PRINT CHR$(179) + " DONKEY " + CHR$(179) |
||
13 | LOCATE 12, 9, 0: PRINT CHR$(179) + STRING$(21, 32) + CHR$(179) |
||
14 | LOCATE 13, 9, 0: PRINT CHR$(179) + " Version 1.10 " + CHR$(179) |
||
15 | LOCATE 14, 9, 0: PRINT CHR$(212) + STRING$(21, 205) + CHR$(190) |
||
16 | COLOR 15, 0: LOCATE 17, 4, 0: PRINT "(C) Copyright IBM Corp 1981, 1982" |
||
17 | COLOR 14, 0: LOCATE 23, 7, 0: PRINT "Press space bar to continue" |
||
18 | 1100 IF INKEY$ <> "" THEN GOTO 1100 |
||
19 | 1110 CMD$ = INKEY$ |
||
20 | IF CMD$ = "" THEN GOTO 1110 |
||
21 | IF CMD$ = CHR$(27) THEN GOTO 1298 |
||
22 | IF CMD$ = " " THEN GOTO 1160 |
||
23 | GOTO 1110 |
||
24 | 1160 DEF SEG = 0 |
||
25 | IF (PEEK(&H410) AND &H30) <> &H30 THEN DEF SEG : GOTO 1291 |
||
26 | WIDTH 80: CLS : LOCATE 3, 1 |
||
27 | PRINT "HOLD IT!" |
||
28 | PRINT "YOU'RE NOT USING THE COLOR/GRAPHICS MONITOR ADAPTER!" |
||
29 | PRINT "THIS PROGRAM USES GRAPHICS AND REQUIRES THAT ADAPTER." |
||
30 | PRINT "PRESS THE SPACE BAR TO CONTINUE." |
||
31 | DEF SEG |
||
32 | 1240 IF INKEY$ <> "" THEN GOTO 1240 |
||
33 | 1250 CMD$ = INKEY$ |
||
34 | IF CMD$ = "" THEN GOTO 1250 |
||
35 | IF CMD$ = CHR$(27) THEN GOTO 1298 |
||
36 | IF CMD$ = " " THEN GOTO 1298 |
||
37 | GOTO 1250 |
||
38 | 1291 KEY OFF |
||
39 | ON ERROR GOTO 1295 |
||
40 | PLAY "p16" |
||
41 | GOTO 1300 |
||
42 | 1295 COLOR 31, 0, 0 |
||
43 | PRINT "THIS PROGRAM REQUIRES ADVANCED BASIC -- USE COMMAND 'BASICA'": COLOR 15, 0, 0: FOR I = 1 TO 9000: NEXT: RESUME 1298 |
||
44 | 1298 ON ERROR GOTO 0 |
||
45 | SCREEN 0, 1: COLOR 7, 0, 0: CLS : END |
||
46 | 1300 REM |
||
47 | COLOR 0 |
||
48 | DEFINT A-Y |
||
49 | SCREEN 1, 0: COLOR 8, 1 |
||
50 | DIM Q%(500) |
||
51 | DIM D1%(150), D2%(150), C1%(200), C2%(200) |
||
52 | DIM DNK%(300) |
||
53 | GOSUB 1940 |
||
54 | GOSUB 1780 |
||
55 | CLS |
||
56 | DIM B%(300) |
||
57 | FOR I = 2 TO 300: B%(I) = -16384 + 192: NEXT |
||
58 | B%(0) = 2: B%(1) = 193 |
||
59 | 1540 REM |
||
60 | CX = 110: CLS |
||
61 | LINE (0, 0)-(305, 199), , B |
||
62 | LINE (6, 6)-(97, 195), 1, BF |
||
63 | LINE (183, 6)-(305, 195), 1, BF |
||
64 | LOCATE 3, 5: PRINT "Donkey" |
||
65 | LOCATE 3, 29: PRINT "Driver" |
||
66 | LOCATE 19, 25: PRINT "Press Space "; |
||
67 | LOCATE 20, 25: PRINT "Bar to switch"; |
||
68 | LOCATE 21, 25: PRINT "lanes "; |
||
69 | LOCATE 23, 25: PRINT "Press ESC "; |
||
70 | LOCATE 24, 25: PRINT "to exit "; |
||
71 | FOR Y = 4 TO 199 STEP 20: LINE (140, Y)-(140, Y + 10): NEXT |
||
72 | CY = 105: CX = 105 |
||
73 | LINE (100, 0)-(100, 199): LINE (180, 0)-(180, 199) |
||
74 | 1670 LOCATE 5, 6: PRINT SD: LOCATE 5, 31: PRINT SM |
||
75 | CY = CY - 4: IF CY < 60 THEN 2230 |
||
76 | PUT (CX, CY), CAR%, PRESET |
||
77 | DX = 105 + 42 * INT(RND * 2) |
||
78 | FOR Y = (RND * -4) * 8 TO 124 STEP 6 |
||
79 | SOUND 20000, 1 |
||
80 | 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 |
||
81 | IF Y >= 3 THEN PUT (DX, Y), DNK%, PSET |
||
82 | IF CX = DX AND Y + 25 >= CY THEN 2060 |
||
83 | IF Y AND 3 THEN PUT (140, 6), B% |
||
84 | NEXT: LINE (DX, 124)-(DX + 32, 149), 0, BF: GOTO 1670 |
||
85 | 1780 CLS |
||
86 | DRAW "S8C3" |
||
87 | DRAW "BM12,1r3m+1,3d2R1ND2u1r2d4l2u1l1" |
||
88 | DRAW "d7R1nd2u2r3d6l3u2l1d3m-1,1l3" |
||
89 | DRAW "m-1,-1u3l1d2l3u6r3d2nd2r1u7l1d1l2" |
||
90 | DRAW "u4r2d1nd2R1U2" |
||
91 | DRAW "M+1,-3" |
||
92 | DRAW "BD10D2R3U2M-1,-1L1M-1,1" |
||
93 | DRAW "BD3D1R1U1L1BR2R1D1L1U1" |
||
94 | DRAW "BD2BL2D1R1U1L1BR2R1D1L1U1" |
||
95 | DRAW "BD2BL2D1R1U1L1BR2R1D1L1U1" |
||
96 | LINE (0, 0)-(40, 60), , B |
||
97 | PAINT (1, 1) |
||
98 | REM DIM CAR%(900) |
||
99 | GET (1, 1)-(29, 45), CAR% |
||
100 | RETURN |
||
101 | 1940 CLS |
||
102 | DRAW "S08" |
||
103 | DRAW "BM14,18" |
||
104 | DRAW "M+2,-4R8M+1,-1U1M+1,+1M+2,-1" |
||
105 | DRAW "M-1,1M+1,3M-1,1M-1,-2M-1,2" |
||
106 | DRAW "D3L1U3M-1,1D2L1U2L3D2L1U2M-1,-1" |
||
107 | DRAW "D3L1U5M-2,3U1" |
||
108 | PAINT (21, 14), 3 |
||
109 | PRESET (37, 10): PRESET (40, 10) |
||
110 | PRESET (37, 11): PRESET (40, 11) |
||
111 | GET (13, 0)-(45, 25), DNK% |
||
112 | RETURN |
||
113 | 2060 SD = SD + 1: LOCATE 14, 6: PRINT "BOOM!" |
||
114 | GET (DX, Y)-(DX + 16, Y + 25), D1% |
||
115 | D1X = DX: D1Y = Y: D2X = DX + 17 |
||
116 | GET (DX + 17, Y)-(DX + 31, Y + 25), D2% |
||
117 | GET (CX, CY)-(CX + 14, CY + 44), C1% |
||
118 | GET (CX + 15, CY)-(CX + 28, CY + 44), C2% |
||
119 | C1X = CX: C1Y = CY: C2X = CX + 15 |
||
120 | FOR P = 6 TO 0 STEP -1: Z = 1 / (2 ^ P): Z1 = 1 - Z |
||
121 | PUT (C1X, C1Y), C1%: PUT (C2X, C1Y), C2% |
||
122 | PUT (D1X, D1Y), D1%: PUT (D2X, D1Y), D2% |
||
123 | C1X = CX * Z1: D1Y = Y * Z1: C2X = C2X + (291 - C2X) * Z |
||
124 | D1X = DX * Z1: C1Y = C1Y + (155 - C1Y) * Z: D2X = D2X + (294 - D2X) * Z |
||
125 | PUT (C1X, C1Y), C1%: PUT (C2X, C1Y), C2% |
||
126 | PUT (D1X, D1Y), D1%: PUT (D2X, D1Y), D2% |
||
127 | SOUND 37 + RND * 200, 4: NEXT |
||
128 | FOR Y = 1 TO 2000: NEXT |
||
129 | CLS : GOTO 1540 |
||
130 | 2230 SM = SM + 1: LOCATE 7, 25: PRINT "Donkey loses!" |
||
131 | FOR Y = 1 TO 1000: NEXT |
||
132 | CLS : GOTO 1540>>>> |