1 REM ANIMATE A RUNNER 2 REM 3 REM PRESS SHIFT, COMMODORE, OR CTRL TO QUIT 4 REM 10 DIM CB(2),CM(2),RU$(2),BL$(2) 17 REM 18 REM GO SET UP MEMORY AND VARIABLES 19 REM 20 GOSUB 400 95 REM 96 REM MAIN MOVEMENT LOOP 97 REM 98 REM IF SHIFT, COMMODORE, OR CTRL ARE PRESSED, JUMP TO ENDING ROUTINE 99 REM 100 FOR I=0 TO 38:IF PEEK(653)<>0 THEN 200 107 REM 108 REM PRINT LEFT-FACING AND RIGHT-FACING RUNNERS IN NEW POSITION 109 REM 110 PRINT ""TAB(39-I)BL$(0)RU$(0)""TAB(I)BL$(2)RU$(2); 117 REM 118 REM CYCLE THROUGH THE CHARACTER SETS 119 REM 120 AM=AM+1:IF AM>2 THEN AM=0 127 REM 128 REM SWITCH CHARACTER SET AND WAIT A MOMENT 129 REM 130 POKE 53272,CM(AM):FOR K=0 TO 59:NEXT:NEXT 190 PRINT "[147]":GOTO 100 197 REM 198 REM RESTORE VIDEO MEMORY TO NORMAL, RE-ENABLE INTERRUPTS,AND END 199 REM 200 POKE 808,237:POKE 648,4:POKE 53272,XX:POKE 56578,PEEK(56578) OR 3 210 POKE 56576,(PEEK(56576)AND 252)OR 3:END 397 REM 398 REM SET UP VIDEO MEMORY 399 REM 400 VM=1:SM=15:FOR I=0 TO 2:CM(I)=I*2+8:NEXT:XX=PEEK(53272) 407 REM 408 REM CONVERT VIDEO POINTERS TO MEMORY ADDRESSES 409 REM 410 VB=16*1024*VM:SB=VB+1024*SM:FOR I=0 TO 2:CB(I)=CM(I)*1024+VB:NEXT 417 REM 418 REM LOOPS TO LOAD CHARACTER DATA 419 REM 420 FOR I=0 TO 16 STEP 16:FOR J=0 TO 2:B=CB(J)+I:FOR K=0 TO 15 427 REM 428 REM READ AND POKE DATA 429 REM 430 READ A:POKE B+K,A:NEXT:NEXT:NEXT 437 REM 438 REM SET CHARACTER AND SCREEN MEMORY 439 REM 440 SK=SM*16:POKE 648,SB/256 445 FOR I=0 TO 2:CM(I)=SK+CM(I):NEXT:POKE 53272,CM(0) 447 REM 448 REM SET VIDEO BLOCK 449 REM 450 POKE 56578,PEEK(56578)OR 3:POKE 56576,(PEEK(56576) AND 252) OR (3-VM) 457 REM 458 REM DISABLE SHIFT-COMMODORE AND KEYBOARD INTERRUPTS 459 REM 460 PRINT CHR$(8):POKE 808,234 467 REM 468 REM DEFINE RUNNER STRINGS 469 REM 470 RU$(0)="@[157]A":RU$(2)="B[157]C":BL$(0)=" [157] [145][157][157]":BL$(2)=" [157] [145]" 477 REM 478 REM POKE IN SPACE CHARACTERS 479 REM 480 FOR I=0 TO 2:FOR J=32*8 TO 32*8+7:POKE CB(I)+J,0:NEXT:NEXT 490 PRINT "[147]":RETURN 997 REM 998 REM CHARACTER DATA 999 REM 1000 DATA 24,56,24,12,78,45,30,12 1010 DATA 28,60,104,72,68,66,193,2 1020 DATA 24,56,24,12,12,14,62,28 1030 DATA 44,12,28,48,24,20,24,48 1040 DATA 24,56,24,12,12,14,125,13 1050 DATA 13,28,52,36,36,36,100,12 1060 DATA 24,28,24,48,114,180,120,48 1070 DATA 56,60,22,18,34,66,131,64 1080 DATA 24,28,24,48,48,112,124,56 1090 DATA 52,48,56,12,24,40,24,12 1100 DATA 24,28,24,48,48,112,190,176 1110 DATA 176,56,44,36,36,36,38,48