Compucolor.org – Virtual Media

Listing of file='DOODLE.BAS;01' on disk='vmedia/chip_78-sector.ccvf'

0 GOTO 1000
100 REM
110 REM   DOODLE
120 REM
130 REM   A PROGRAM TO DEMONSTRATE SUPERPATCH
140 REM   USES SCROLLING AND JOYSTICK NUMBER ONE
150 REM
160 REM
500 REM  SCROLL PATCH
510 Z= 28672+ X+ X:IF D< > 2THEN Z= Z+ 128* Y:IF D= 3THEN Z= Z+ W+ W- (2- C)
520 IF D= 2THEN Z= Z+ 128* (Y+ H- 1)
530 AD= SM+ 2:ZZ= INT (Z/ 256):POKE AD,Z- 256* ZZ:POKE AD+ 1,ZZ
540 POKE SM+ 5,H+ (D< 3):POKE SM+ 7,W* (C+ 1)+ (D> 2)* (1+ C)
550 POKE SM+ 9,128+ 126* (D= 4)- 126* (D= 3):POKE SM+ 10,- 255* (D= 2OR D= 3):POKE SM+ 14,128+ 126* (D= 3)- 126* (D= 4)
560 POKE SM+ 15,- 255* (D= 1OR D= 4):POKE SM+ 19,- (2- C)* (D< > 3)- (254+ C)* (D= 3):POKE SM+ 20,- 255* (D= 3)
570 IF D= 1OR D= 4THEN Z= 130+ (2* (D= 1))- W- W:GOTO 590
580 Z= 128+ 2* (D= 3)+ W+ W:IF D= 2THEN Z= 256- Z
590 POKE SM+ 27,Z:POKE SM+ 28,- 255* (D= 2)
600 RETURN
1000 PLOT 27,24,12,3,64,0:PLOT 27,4:PRINT "RUN X.PRG":PLOT 27,27
1010 CLEAR 100
1020 POKE 33283,0:POKE 33284,240
1030 X= CALL (0)
1040 TM= PEEK (32941)* 256+ PEEK (32940)
1050 SM= TM+ 182:LO= TM+ 1
2000 PLOT 12,3,64,0:OUT 8,0
2010 P= 28672
2020 X= CALL (6)
2030 ON XGOTO 2050,2060,2070,2080,2090,2100,2110,2120,2130
2040 GOTO 2020
2050 P= P+ 126:GOTO 2140
2060 P= P+ 128:GOTO 2140
2070 P= P+ 130:GOTO 2140
2080 P= P- 2:GOTO 2140
2090 GOTO 2140
2100 P= P+ 2:GOTO 2140
2110 P= P- 130:GOTO 2140
2120 P= P- 128:GOTO 2140
2130 P= P- 126:GOTO 2140
2140 C= C+ 1
2150 IF C> 400GOTO 2200
2160 IF P> 32766THEN P= P- 4094
2170 IF P< 28672THEN P= P+ 4094
2180 POKE P,37* RND (1)+ 90:POKE P+ 1,6* RND (1)+ 1
2190 GOTO 2020
2200 YC= INT ((P- 28672)/ 128)
2210 XC= INT ((P- 28672- 128* YC)/ 2)
2220 PLOT 3,127,XC,YC,70:PRINT "*":PLOT 3,64,0
2230 X= CALL (6)
2240 IF X= 2GOTO 2290
2250 IF X= 4GOTO 2350
2260 IF X= 6GOTO 2410
2270 IF X= 8GOTO 2470
2280 GOTO 2230
2290 XX= X
2300 D= 2:W= 1:H= 32:X= XC:Y= 0:C= 1:PLOT 3,127,XC,0,6:PRINT " ":PLOT 3,64,0
2310 GOSUB 500
2320 IF YC+ 1< 31THEN X= CALL (1):YC= YC+ 1
2330 X= CALL (6):IF X= XXGOTO 2320
2340 GOTO 2230
2350 XX= X
2360 D= 4:W= 64:H= 1:X= 0:Y= YC:C= 1:PLOT 3,127,63,YC,6:PRINT " ":PLOT 3,64,0
2370 GOSUB 500
2380 IF XC- 1> .5THEN X= CALL (1):XC= XC- 1
2390 X= CALL (6):IF X= XXGOTO 2380
2400 GOTO 2230
2410 XX= X
2420 D= 3:W= 64:H= 1:X= 0:Y= YC:C= 1:PLOT 3,127,0,YC,6:PRINT " ":PLOT 3,64,0
2430 GOSUB 500
2440 IF XC+ 1< 63THEN X= CALL (1):XC= XC+ 1
2450 X= CALL (6):IF X= XXGOTO 2440
2460 GOTO 2230
2470 XX= X
2480 D= 1:W= 1:H= 32:X= XC:Y= 0:C= 1:PLOT 3,127,XC,31,6:PRINT " ":PLOT 3,64,0
2490 GOSUB 500
2500 IF YC- 1> .5THEN X= CALL (1):YC= YC- 1
2510 X= CALL (6):IF X= XXGOTO 2500
2520 GOTO 2230