-
Notifications
You must be signed in to change notification settings - Fork 30
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fixed illegal character, converted to LF
- Loading branch information
Showing
1 changed file
with
116 additions
and
116 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,116 +1,116 @@ | ||
1 REM ---- SCROLLING ELECTRICITY DEMO BY BARRY YOST SEP 7 2019 ---- | ||
2 REM | ||
3 REM DEMONSTRATES: | ||
4 REM - MULTI-LAYER SCREEN | ||
5 REM - ANIMATED TILES (HORIZONTAL MOTION OF WAVE PATTERN) | ||
6 REM - ANIMATED COLOR | ||
7 REM - VERTICAL SCROLL FOR LAYER 1 | ||
8 REM | ||
9 REM | ||
10 REM | ||
11 REM ==INITIALIZATION== | ||
12 REM | ||
20 VPOKE $F,$3008,0 : VPOKE $F,$3009,0 : REM HSCROLL/VSCROLL -> 0 | ||
30 POKE $9F22,$10 : REM SET VRAM STEPPING=1 | ||
40 POKE $9F21,$80 : POKE $9F20,0 : REM POINT TRANSFER PORT0 TO $00:8000 | ||
50 FOR I=1 TO 192 : REM TRANSFER 192 BYTES OF CHR DATA | ||
51 READ A : POKE $9F23,A : NEXT I : REM SEND BYTE TO VERA DATA PORT0 | ||
60 VPOKE $F,$3000,$21 : VPOKE $F,$3001,6 : REM SET LAYER1 AS 8BPP TEXT | ||
70 VPOKE $F,$3002,$0 : VPOKE $F,$3003,$10 : REM $004000 FOR LAYER 1 TILE MAP | ||
80 VPOKE $F,$3004,$0 : VPOKE $F,$3005,$20 : REM USE $008000 AS TILE DATA AREA | ||
100 REM | ||
101 REM == SET CHR DATA FOR TILE 24 IN ALL 6 FRAMES AS $FF (A SOLID SQUARE) | ||
102 REM | ||
110 POKE $9F22,$10 : REM SET VRAM STEPPING=1 | ||
120 FOR I=24 TO 44 STEP 4 : REM I=TILE 24 FOR EACH FRAME | ||
130 POKE $9F21,$80 : POKE $9F20,(8 * I)AND $FF : REM POINT TO VRAM @ TILE | ||
140 IF 8*I >255 THEN POKE $9F21,$81 : REM IF > 255, INC HI BYTE | ||
150 FOR J=1 TO 8 :POKE $9F23,$FF : NEXT J : REM WRITE 8 BYTES PER TILE | ||
160 NEXT I | ||
300 REM | ||
301 REM == DRAW THE ELECTRICITY/SQUARES ON ROW 0 OF LAYER 1 == | ||
302 REM | ||
310 POKE $9F22,$10:POKE $9F21,$40:POKE $9F20,00 : REM POINT @ LYR1 TILEMAP | ||
320 C=0 : REM C IS THE ELEC. TILE TO USE | ||
330 FOR I=1TO80 : REM DRAW 80 TILES ON THE ROW | ||
340 C=C+1:IF C>3 THEN C=1 : REM C CYCLES 1,2,3,1,2,3,1,2,3,ETC... | ||
350 REM | ||
351 REM DRAW SQUARES AT THE ENDS OF THE BEAM, SPACES IN THE MIDDLE, AND | ||
352 REM DRAW ELECTRICITY ON ALL OTHER COLUMNS. | ||
353 REM | ||
360 IF I=1 OR I=35 OR I=45 OR I=80 THEN POKE $9F23,24:POKE $9F23,$50:NEXT I | ||
370 IF I>35 AND I<45 THEN POKE $9F23,0:POKE $9F23,0 :NEXT I | ||
380 IF I<81 THEN POKE $9F23,C:POKE $9F23,$FF:NEXT I | ||
400 REM | ||
401 REM == FILL LAYER0 WITH A CHARACTER == | ||
403 REM | ||
410 POKE $9F22,$10:POKE $9F21,0:POKE $9F20,0 | ||
420 REM FOR I=1 TO 64*128 : POKE $9F23,81: POKE $9F23,$6E : NEXT I | ||
430 FOR I=0 TO 41 :READ A : POKE $400+I,A : NEXT I | ||
440 SYS $400 | ||
1000 REM | ||
1001 REM === MAIN LOOP === | ||
1002 REM | ||
1010 S=3: F=-1 : SO=0 : REM INITIALIZE SCROLL/FRAME COUNTERS | ||
1020 S=S-3:IF S<0 THEN S=S+$FFF : REM CYCLE SCROLL AMOUNT -3, 0..$FFF | ||
1030 H=S AND $F00 : H=H/256 : L=S AND $FF : REM SPLIT S INTO HI/LO BYTES | ||
1040 VPOKE $F,$3008,L : VPOKE $F,$3009,H : REM UPDATE LYR 1 VSCROLL REGISTERS | ||
1050 C=INT(255*RND(1)) : VPOKE $F,$11FE,C | ||
1060 F=F+1 : IF F>5 THEN F=0 : REM CYCLE ZAP ANIMATION FRAME 0..5 | ||
1070 VPOKE $F,$3004,F*8 : REM MOVE CHR DATA POINTER (32BYTE/FRAME) | ||
1071 REM NOTE: VERA MULTIPLIES THIS BY 4 HENCE WE USE F*8 INSTEAD OF F*32. | ||
1080 SO=SO-1:IF SO<0 THEN SO=$FFF | ||
1090 H=SO AND $F00 : H=H/256 : L=SO AND $FF | ||
1100 VPOKE $F,$2008,L : VPOKE $F,$2009,H | ||
9900 GET K$ : IF K$="" THEN 1020 : REM CHECK FOR KEYPRESS TO EXIT | ||
9910 VPOKE $F,$3000,0 : REM HIDE LAYER 1 | ||
9920 VPOKE $F,$2008,0 : VPOKE $F,$2009,0 : REM RESET H/VSCROLL ON LAYER 0 | ||
9930 PRINT "ô" | ||
9999 END | ||
10000 REM TILE GRAPHICS DATA : REM FRAME CHAR CHR DATA POINTER | ||
10001 DATA 0,0,0,0,0,0,0,0 : REM 0 BLANK <-- HERE FRAME 0 | ||
10002 DATA 1,2,2,100,148,20,8,0 : REM 0 ZAP-A | ||
10003 DATA 0,128,64,64,88,36,5,2 : REM 0 ZAP-B | ||
10004 DATA 0,0,0,64,162,165,24,0 : REM 0 ZAP-C | ||
10005 DATA 0,0,0,0,0,0,0,0 : REM 1 BLANK <-- HERE FRAME 1 | ||
10006 DATA 16,40,36,68,69,66,128,0 : REM 1 ZAP-A | ||
10007 DATA 0,0,0,4,138,74,81,32 : REM 1 ZAP-B | ||
10008 DATA 0,0,0,6,41,81,128,0 : REM 1 ZAP-C | ||
10009 DATA 0,0,0,0,0,0,0,0 : REM 2 BLANK <-- HERE FRAME 2 | ||
10010 DATA 0,128,64,64,88,36,5,2 : REM 2 ZAP-A | ||
10011 DATA 0,0,0,64,162,165,24,0 : REM 2 ZAP-B | ||
10012 DATA 1,2,2,100,148,20,8,0 : REM 2 ZAP-C | ||
10013 DATA 0,0,0,0,0,0,0,0 : REM 3 BLANK <-- HERE FRAME 3 | ||
10014 DATA 0,0,0,4,138,74,81,32 : REM 3 ETC... | ||
10015 DATA 0,0,0,6,41,81,128,0 : REM 3 | ||
10016 DATA 16,40,36,68,69,66,128,0 : REM 3 | ||
10017 DATA 0,0,0,0,0,0,0,0 : REM 4 | ||
10018 DATA 0,0,0,64,162,165,24,0 : REM 4 | ||
10019 DATA 1,2,2,100,148,20,8,0 : REM 4 | ||
10020 DATA 0,128,64,64,88,36,5,2 : REM 4 | ||
10021 DATA 0,0,0,0,0,0,0,0 : REM 5 | ||
10022 DATA 0,0,0,6,41,81,128,0 : REM 5 | ||
10023 DATA 16,40,36,68,69,66,128,0 : REM 5 | ||
10024 DATA 0,0,0,4,138,74,81,32 : REM 5 | ||
11000 REM | ||
11001 REM - MACHINE CODE FOR QUICK SCREEN FILL | ||
11010 DATA 120 : REM SEI | ||
11020 DATA 169,16 : REM LDA #$10 ; SET VERA POINTER TO 00:0000 STEP 1 | ||
11030 DATA 141,34,159 : REM STA $9F22 ; | ||
11040 DATA 169,0 : REM LDA #$00 ; | ||
11050 DATA 141,33,159 : REM STA $9F21 ; | ||
11060 DATA 141,32,159 : REM STA $9F20 ; | ||
11070 DATA 162,110 : REM LDX #$6E ; COLOR CODE | ||
11080 DATA 169,64 : REM LDA #$40 | ||
11090 DATA 133,252 : REM STA $FC ; SET $FC TO 64 (64 ROWS OF TILES) | ||
11100 DATA 169,81 : REM LDA #$51 ; TILE CODE | ||
11110 DATA 198,252 : REM DEC $FC | ||
11120 DATA 48,14 : REM BMI $0428 ; JMP TO END IF DONE WITH 64 ROWS | ||
11130 DATA 160,128 : REM LDY #$80 ; SET Y INDEX TO 128 COLUMNS | ||
11140 DATA 136 : REM DEY | ||
11150 DATA 48,247 : REM BMI $0416 ; LOOP TO NEXT ROW IF DONE W/ 128 COLS | ||
11160 DATA 141,35,159 : REM STA $9F23 ; PUSH TILE TO VRAM | ||
11170 DATA 142,35,159 : REM STX $9F23 ; PUSH COLOR TO VRAM | ||
11180 DATA 76,28,4 : REM JMP $041C | ||
11190 DATA 88 : REM CLI | ||
11200 DATA 96 : REM RTS | ||
1 REM ---- SCROLLING ELECTRICITY DEMO BY BARRY YOST SEP 7 2019 ---- | ||
2 REM | ||
3 REM DEMONSTRATES: | ||
4 REM - MULTI-LAYER SCREEN | ||
5 REM - ANIMATED TILES (HORIZONTAL MOTION OF WAVE PATTERN) | ||
6 REM - ANIMATED COLOR | ||
7 REM - VERTICAL SCROLL FOR LAYER 1 | ||
8 REM | ||
9 REM | ||
10 REM | ||
11 REM ==INITIALIZATION== | ||
12 REM | ||
20 VPOKE $F,$3008,0 : VPOKE $F,$3009,0 : REM HSCROLL/VSCROLL -> 0 | ||
30 POKE $9F22,$10 : REM SET VRAM STEPPING=1 | ||
40 POKE $9F21,$80 : POKE $9F20,0 : REM POINT TRANSFER PORT0 TO $00:8000 | ||
50 FOR I=1 TO 192 : REM TRANSFER 192 BYTES OF CHR DATA | ||
51 READ A : POKE $9F23,A : NEXT I : REM SEND BYTE TO VERA DATA PORT0 | ||
60 VPOKE $F,$3000,$21 : VPOKE $F,$3001,6 : REM SET LAYER1 AS 8BPP TEXT | ||
70 VPOKE $F,$3002,$0 : VPOKE $F,$3003,$10 : REM $004000 FOR LAYER 1 TILE MAP | ||
80 VPOKE $F,$3004,$0 : VPOKE $F,$3005,$20 : REM USE $008000 AS TILE DATA AREA | ||
100 REM | ||
101 REM == SET CHR DATA FOR TILE 24 IN ALL 6 FRAMES AS $FF (A SOLID SQUARE) | ||
102 REM | ||
110 POKE $9F22,$10 : REM SET VRAM STEPPING=1 | ||
120 FOR I=24 TO 44 STEP 4 : REM I=TILE 24 FOR EACH FRAME | ||
130 POKE $9F21,$80 : POKE $9F20,(8 * I)AND $FF : REM POINT TO VRAM @ TILE | ||
140 IF 8*I >255 THEN POKE $9F21,$81 : REM IF > 255, INC HI BYTE | ||
150 FOR J=1 TO 8 :POKE $9F23,$FF : NEXT J : REM WRITE 8 BYTES PER TILE | ||
160 NEXT I | ||
300 REM | ||
301 REM == DRAW THE ELECTRICITY/SQUARES ON ROW 0 OF LAYER 1 == | ||
302 REM | ||
310 POKE $9F22,$10:POKE $9F21,$40:POKE $9F20,00 : REM POINT @ LYR1 TILEMAP | ||
320 C=0 : REM C IS THE ELEC. TILE TO USE | ||
330 FOR I=1TO80 : REM DRAW 80 TILES ON THE ROW | ||
340 C=C+1:IF C>3 THEN C=1 : REM C CYCLES 1,2,3,1,2,3,1,2,3,ETC... | ||
350 REM | ||
351 REM DRAW SQUARES AT THE ENDS OF THE BEAM, SPACES IN THE MIDDLE, AND | ||
352 REM DRAW ELECTRICITY ON ALL OTHER COLUMNS. | ||
353 REM | ||
360 IF I=1 OR I=35 OR I=45 OR I=80 THEN POKE $9F23,24:POKE $9F23,$50:NEXT I | ||
370 IF I>35 AND I<45 THEN POKE $9F23,0:POKE $9F23,0 :NEXT I | ||
380 IF I<81 THEN POKE $9F23,C:POKE $9F23,$FF:NEXT I | ||
400 REM | ||
401 REM == FILL LAYER0 WITH A CHARACTER == | ||
403 REM | ||
410 POKE $9F22,$10:POKE $9F21,0:POKE $9F20,0 | ||
420 REM FOR I=1 TO 64*128 : POKE $9F23,81: POKE $9F23,$6E : NEXT I | ||
430 FOR I=0 TO 41 :READ A : POKE $400+I,A : NEXT I | ||
440 SYS $400 | ||
1000 REM | ||
1001 REM === MAIN LOOP === | ||
1002 REM | ||
1010 S=3: F=-1 : SO=0 : REM INITIALIZE SCROLL/FRAME COUNTERS | ||
1020 S=S-3:IF S<0 THEN S=S+$FFF : REM CYCLE SCROLL AMOUNT -3, 0..$FFF | ||
1030 H=S AND $F00 : H=H/256 : L=S AND $FF : REM SPLIT S INTO HI/LO BYTES | ||
1040 VPOKE $F,$3008,L : VPOKE $F,$3009,H : REM UPDATE LYR 1 VSCROLL REGISTERS | ||
1050 C=INT(255*RND(1)) : VPOKE $F,$11FE,C | ||
1060 F=F+1 : IF F>5 THEN F=0 : REM CYCLE ZAP ANIMATION FRAME 0..5 | ||
1070 VPOKE $F,$3004,F*8 : REM MOVE CHR DATA POINTER (32BYTE/FRAME) | ||
1071 REM NOTE: VERA MULTIPLIES THIS BY 4 HENCE WE USE F*8 INSTEAD OF F*32. | ||
1080 SO=SO-1:IF SO<0 THEN SO=$FFF | ||
1090 H=SO AND $F00 : H=H/256 : L=SO AND $FF | ||
1100 VPOKE $F,$2008,L : VPOKE $F,$2009,H | ||
9900 GET K$ : IF K$="" THEN 1020 : REM CHECK FOR KEYPRESS TO EXIT | ||
9910 VPOKE $F,$3000,0 : REM HIDE LAYER 1 | ||
9920 VPOKE $F,$2008,0 : VPOKE $F,$2009,0 : REM RESET H/VSCROLL ON LAYER 0 | ||
9930 PRINT "\XF4" | ||
9999 END | ||
10000 REM TILE GRAPHICS DATA : REM FRAME CHAR CHR DATA POINTER | ||
10001 DATA 0,0,0,0,0,0,0,0 : REM 0 BLANK <-- HERE FRAME 0 | ||
10002 DATA 1,2,2,100,148,20,8,0 : REM 0 ZAP-A | ||
10003 DATA 0,128,64,64,88,36,5,2 : REM 0 ZAP-B | ||
10004 DATA 0,0,0,64,162,165,24,0 : REM 0 ZAP-C | ||
10005 DATA 0,0,0,0,0,0,0,0 : REM 1 BLANK <-- HERE FRAME 1 | ||
10006 DATA 16,40,36,68,69,66,128,0 : REM 1 ZAP-A | ||
10007 DATA 0,0,0,4,138,74,81,32 : REM 1 ZAP-B | ||
10008 DATA 0,0,0,6,41,81,128,0 : REM 1 ZAP-C | ||
10009 DATA 0,0,0,0,0,0,0,0 : REM 2 BLANK <-- HERE FRAME 2 | ||
10010 DATA 0,128,64,64,88,36,5,2 : REM 2 ZAP-A | ||
10011 DATA 0,0,0,64,162,165,24,0 : REM 2 ZAP-B | ||
10012 DATA 1,2,2,100,148,20,8,0 : REM 2 ZAP-C | ||
10013 DATA 0,0,0,0,0,0,0,0 : REM 3 BLANK <-- HERE FRAME 3 | ||
10014 DATA 0,0,0,4,138,74,81,32 : REM 3 ETC... | ||
10015 DATA 0,0,0,6,41,81,128,0 : REM 3 | ||
10016 DATA 16,40,36,68,69,66,128,0 : REM 3 | ||
10017 DATA 0,0,0,0,0,0,0,0 : REM 4 | ||
10018 DATA 0,0,0,64,162,165,24,0 : REM 4 | ||
10019 DATA 1,2,2,100,148,20,8,0 : REM 4 | ||
10020 DATA 0,128,64,64,88,36,5,2 : REM 4 | ||
10021 DATA 0,0,0,0,0,0,0,0 : REM 5 | ||
10022 DATA 0,0,0,6,41,81,128,0 : REM 5 | ||
10023 DATA 16,40,36,68,69,66,128,0 : REM 5 | ||
10024 DATA 0,0,0,4,138,74,81,32 : REM 5 | ||
11000 REM | ||
11001 REM - MACHINE CODE FOR QUICK SCREEN FILL | ||
11010 DATA 120 : REM SEI | ||
11020 DATA 169,16 : REM LDA #$10 ; SET VERA POINTER TO 00:0000 STEP 1 | ||
11030 DATA 141,34,159 : REM STA $9F22 ; | ||
11040 DATA 169,0 : REM LDA #$00 ; | ||
11050 DATA 141,33,159 : REM STA $9F21 ; | ||
11060 DATA 141,32,159 : REM STA $9F20 ; | ||
11070 DATA 162,110 : REM LDX #$6E ; COLOR CODE | ||
11080 DATA 169,64 : REM LDA #$40 | ||
11090 DATA 133,252 : REM STA $FC ; SET $FC TO 64 (64 ROWS OF TILES) | ||
11100 DATA 169,81 : REM LDA #$51 ; TILE CODE | ||
11110 DATA 198,252 : REM DEC $FC | ||
11120 DATA 48,14 : REM BMI $0428 ; JMP TO END IF DONE WITH 64 ROWS | ||
11130 DATA 160,128 : REM LDY #$80 ; SET Y INDEX TO 128 COLUMNS | ||
11140 DATA 136 : REM DEY | ||
11150 DATA 48,247 : REM BMI $0416 ; LOOP TO NEXT ROW IF DONE W/ 128 COLS | ||
11160 DATA 141,35,159 : REM STA $9F23 ; PUSH TILE TO VRAM | ||
11170 DATA 142,35,159 : REM STX $9F23 ; PUSH COLOR TO VRAM | ||
11180 DATA 76,28,4 : REM JMP $041C | ||
11190 DATA 88 : REM CLI | ||
11200 DATA 96 : REM RTS |