Home » Personal collection » Commodore disks » disk32a_commodore_disk_user_3_7.d64 » spdriver.bas
spdriver.bas
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Personal collection » Commodore disks » disk32a_commodore_disk_user_3_7.d64 |
Filename: | spdriver.bas |
Read OK: | ✔ |
File size: | 21F6 bytes |
Load address: | 0801 |
Exec address: | 0000 |
Duplicates
There is 1 duplicate copy of this file in the archive:
- Arnold website » magazines_cdu » magazines_cdu_cdu307_cdu307.d64 » spdriver.bas
- Personal collection » Commodore disks » disk32a_commodore_disk_user_3_7.d64 » spdriver.bas
File contents
10 REM ** SPRITE CONTROLLER ** 11 REM ** FOR ** 12 REM ** COMMODORE DISK USER ** 13 REM ** (C) WILLIAM CHRISTIE, 1989 ** 15 : 16 POKE53280,0:POKE53281,11 20 PRINT"<clr><cursor down><cursor down><yellow>"TAB(14)"SPRITE DRIVER<cursor down>" 21 PRINT" BY WILLIAM A CHRISTIE, APRIL 1989" 22 INPUT"<white><cursor down><cursor down> LOAD PROGRAMS/DATA (Y/N)";A$ 23 IFA$="N"THEN 100 24 IFA$<>"Y"THEN22 25 INPUT"<cursor down> LOAD SPDRIVER.MC (Y/N)";A$ 26 IFA$="N"THEN29 27 IFA$<>"Y"THEN25 28 N$="SPDRIVER.MC":GOSUB60 29 INPUT" LOAD DECRUNCH.MC (Y/N)";A$ 30 IFA$="N"THEN33 31 IFA$<>"Y"THEN29 32 N$="DECRUNCH.MC":GOSUB60 33 INPUT" LOAD SPRITES (Y/N)";A$ 34 IFA$="N"THEN37 35 IFA$<>"Y"THEN33 36 N$="SPRITES":GOSUB60 37 INPUT" LOAD SCREEN 5 (Y/N)";A$ 38 IFA$="N"THEN41 39 IFA$<>"Y"THEN37 40 N$="SCREEN 5":GOSUB60 41 INPUT" LOAD CHARS (Y/N)";A$ 42 IFA$="N"THEN46 43 IFA$<>"Y"THEN41 44 SYS52858:N$="CHARS":GOSUB60 46 IFF=0THEN 100 47 INPUT"<cursor down> RE-LOAD OR EXIT PROGRAM (R/E) ";A$ 48 IFA$="E"THEN END 49 IFA$<>"R"THEN 47 51 F=0:GOTO25 60 POKE147,0:SYS57812N$,8,1:SYS62631:GOSUB960:IFE=62THENF=1 61 RETURN 100 CLR:PRINT"<clr>" 120 INPUT" <cursor down>ENTER PATTERN DATA INTO MEMORY";A$ 130 IFA$="Y"THEN PRINT" POKING DATA - PLEASE WAIT. ":GOTO160 140 IFA$<>"N"THEN PRINT"PLEASE ENTER 'Y' OR 'N'":GOTO120 150 GOTO820 159 : 160 BA=4096*6:BS=BA:BE=4096*7:SN=1:REM BA AND BE=PATTERN MEMORY START AND END 170 L=1:SC=1 180 I1=BA:BA=BA+2 190 I2=BA:BA=BA+2 200 READA:IFA<0THEN230 210 IFBA<BETHENPOKEBA,A:BA=BA+1:GOTO200 220 PRINT"OUT OF SPRITE DATA MEMORY AT LINE"L:PRINT"SCREEN"SC:END 230 IFA<>-1THEN260 240 GOSUB330:POKEI2,LB:POKEI2+1,HB:L=L+1:IFL<9GOTO190 250 PRINT"INCORRECT '-2' AT LINE"L-1"SCREEN"SC:END 260 IFA<>-2THEN290 270 IFL<>8THEN PRINT"MISSING DATA AT LINE"L"SCREEN"SC:END 280 GOSUB330:POKEI1,LB:POKEI2,LB:POKEI1+1,HB:POKEI2+1,HB:L=1:SC=SC+1:GOTO180 290 IFA<>-9THENPRINT"INVALID END-OF-DATA FLAG AT LINE"L:PRINT"SCREEN"SC:END 295 IFL<>1THENPRINT"MISSING '-2' AI LINE"L"SCREEN"SC:END 300 BA=BA-4:PRINT"<cursor down>DATA NOW READ IN" 310 PRINT"BYTES USED ="BA-BS 320 PRINT"BYTES FREE ="BE-BA:GOTO700 330 HB=INT(BA/256):LB=BA-(HB*256):RETURN 350 REM **************************** 360 REM ** SPRITE PATTERN SET-UP *** 370 REM **************************** 375 INPUT"<clr><white><cursor down> USE WITH DECRUNCH (Y/N)";Z$ 376 IFZ$="Y"THENDC=52480:GOTO390 377 IFZ$="N"THENDC=138:PRINT"<clr>":GOTO390 378 GOTO375 380 : 390 POKE2040,128:POKE820,1:POKE821,0:POKE1022,1:POKE53272,31 400 V=53248:POKEV+21,255:POKEV+39,1:POKEV,100:POKEV+1,10 410 SYSDC:IF F3=1THENSYS49152 420 P=PEEK(197) 430 IFP<>44THEN460 440 IFPEEK(V)<255THENPOKEV,PEEK(V)+1:GOTO420 450 POKEV,0:POKEV+16,PEEK(V+16)OR1:GOTO420 460 IFP<>47THEN490 470 IFPEEK(V)>0THENPOKEV,PEEK(V)-1:GOTO420 480 POKEV,255:POKEV+16,PEEK(V+16)AND254:GOTO420 490 IFP=10THENPOKEV+1,PEEK(V+1)-1AND255:GOTO420 500 IFP=12THENPOKEV+1,PEEK(V+1)+1AND255:GOTO420 510 IFP=59THENPOKEV+1,PEEK(V+1)-1:GOTO440:REM +1 520 IFP=9THENPOKEV+1,PEEK(V+1)+1:GOTO440 530 IFP=62THENPOKEV+1,PEEK(V+1)+1:GOTO470:REM -1 540 IFP=56THENPOKEV+1,PEEK(V+1)-1:GOTO470 550 IFP<>60THEN590 560 PRINT"<home> " 570 PRINT"<home> X"PEEK(V)"Y"PEEK(V+1);"P"PEEK(2040);"SPCOL"PEEK(V+39)AND15; 580 PRINT"C1"PEEK(V+37)AND15;"C2"PEEK(V+38)AND15:GOTO420 590 IFP=40THENPOKE2040,PEEK(2040)+1AND255:GOTO420 600 IFP=4ANDPEEK(820)<255THENPOKE820,PEEK(820)+1:SYSDC:GOTO690 610 IFP=5ANDPEEK(820)>1THENPOKE820,PEEK(820)-1:SYSDC:GOTO690 620 IFP=6THENPOKE53285,PEEK(53285)+1AND 15:GOTO420 630 IFP=3THENPOKE53286,PEEK(53286)+1AND 15:GOTO420 640 IFP=43THENPOKE2040,PEEK(2040)-1AND255:GOTO420 650 IFP=20THENPOKEV+39,(PEEK(V+39)+1)AND15:GOTO420 660 IFP=36AND(PEEK(V+28)AND1)=0 THENPOKEV+28,(PEEK(V+28)OR1):GOTO420 670 IFP=36THENPOKEV+28,(PEEK(V+28)AND254):GOTO420 675 IFP=17ANDPEEK(53272)=31THENPOKE53272,21:GOTO680 676 IFP=17THENPOKE53272,31 678 IFP=33THENPOKE646,(PEEK(646)+1)AND7 680 GOTO420 690 POKE824,PEEK(820):GOTO420 700 INPUT" <cursor down>SAVE PATTERN DATA (Y/N)";A$ 710 IFA$="N"THENPRINT:GOTO820 720 IFA$<>"Y"THENPRINT"PLEASE ENTER EITHER 'Y' OR 'N'<cursor down>":GOTO700 730 INPUT" ENTER FILENAME";N$ 780 SYS57812N$+".PD",8,1 790 BA=BA+1:GOSUB330:POKE174,LB:POKE175,HB 800 BA=BS:GOSUB330:POKE193,LB:POKE194,HB:SYS62957 819 : 820 INPUT" RUN PATTERN CONSTRUCTOR (Y/N)";A$ 821 IFA$="Y"THENRUN375 822 IFA$="N"THEN825 823 GOTO820 825 IFFF=1THENEND 828 INPUT" RUN SPRITE CONTROLLER (Y/N)";A$ 830 IFA$="Y"THENF3=1:GOTO860 840 IFA$="N"THENEND 850 GOTO820 860 INPUT" WITH DECRUNCH (Y/N)";A$ 862 IFA$="Y"THENDC=52480:GOTO390 864 IFA$="N"THENPRINT"<cursor down><cursor down>POKE824,SCREEN NUMBER (1-5 FOR DEMO)":SYS49152:END 866 GOTO860 869 : 960 OPEN15,8,15:INPUT#15,E,E$:CLOSE15:PRINT" DRIVE STATUS :";E$:RETURN 970 REM ****************************** 980 REM **** SPRITE MOVEMENT DATA **** 990 REM ****************************** 1000 REM **** SCREEN 1 **** 1100 DATA 8,254,14,3,13,33,208,0,15,254,13,16,192,1,255:REM CHAR ANIM = ON 1199 DATA-1 1200 DATA 7,8,16,6,5,0,24,62,23,152,156,2,0,4,0,15,5,5,129 1210 DATA 22,12,1,150,154,20,0,0,1,123,6,80,0,12,1,154,158,20,0,0,2,24,6,80,0,0 1299 DATA-1 1300 DATA 16,6,7,6,5,1,64,62,23,152,156,2,0,4,0,15,5,5,129 1310 DATA 22,12,1,154,158,20,0,0,2,240,6,80,0,12,1,150,154,20,0,0,1,64,6,80,0,0 1399 DATA-1 1400 DATA 16,9,7,4,5,0,24,103 1410 DATA 12,1,170,174,20,0,1,22,1,233,2,24,0 1499 DATA-1 1500 DATA 16,2,7,8,22,5,0,255,153,12,0,9,145,6,0,2 1510 DATA 12,1,142,149,2,0,0,6,0,2,24,20,4,200,24,2,6,0,2,24,20,3,153,6,95,0,0 1599 DATA-1 1600 DATA 16,4,5,0,90,197,12,1,158,169,15,0,1,255 1699 DATA-1 1700 DATA 16,4,5,0,220,197,12,1,158,169,16,0,1,255 1799 DATA -1 1800 DATA 16,6,22,7,4,5,0,0,235,23,191,195,3,0,144,0,15,20,20,129,12,0 1810 DATA 6,0,5,12,1,188,191,16,0,1,6,0,1,1,162,24,12,6,50,1,24,8,3,170,24,12 1820 DATA 12,1,192,195,14,0,1,6,50,1,24,16,2,111,24,12,20,64,24,16 1830 DATA 12,1,188,191,14,0,1,6,50,1,24,16,1,120,24,10,7,2,1,160,24,16,1,245 1840 DATA 12,0,1,150,17,3,0,14,2,15,2,2,129,10,200,13,32,208,0,6,1,0 1860 DATA 13,32,208,6,11,0 1899 DATA-2 2000 REM ***** SCREEN 2 **** 2100 DATA 13,33,208,2,15,238,255 2199 DATA-1 2200 DATA 8,254,7,8,16,0,7,5,5,0,192,81 2210 DATA 22,12,1,178,181,20,0,0,1,39,12,1,181,184,20,0,0,3,69 2229 DATA 12,1,178,181,20,0,0,2,192,12,1,181,184,20,0,0,4,81,0 2299 DATA-1 2300 DATA 16,3,7,8,5,0,35,134 2310 DATA 22,12,1,150,154,20,0,0,1,237,6,20,0,12,1,154,158,20,0,0,2,35,6,20,0,0 2399 DATA-1 2400 DATA 16,6,7,6,5,1,55,72,12,1,170,174,20,0,1 2410 DATA 22,4,217,3,72,0 2499 DATA -1 2500 DATA 255 2599 DATA -1 2600 DATA 16,3,5,0,95,90,22,12,1,213,220,20,0,1,6,30,1,12,0,26,0,0,0 2699 DATA-1 2700 DATA 16,0,7,4,5,0,192,166 2710 DATA 22,12,1,192,195,20,0,1,2,27,12,1,188,191,20,0,1,1,192,0 2799 DATA-1 2800 DATA 16,0,7,4,5,0,27,184,23,191,195,3,0,144,0,15,20,20,129 2810 DATA 22,12,1,188,191,20,0,1,1,192,12,1,192,195,20,0,1,2,27,0 2899 DATA-2 3000 REM ***** SCREEN 3 ******* 3100 DATA 13,33,208,0,15,126,8,254,1,5,255 3199 DATA -1 3200 DATA 16,9,7,3,5,0,60,30,22,12,1,175,178,16,0,0,22,26,0,0,4,65 3210 DATA 17,2,0,7,0,15,3,3,129,26,0,0,3,30,0 3299 DATA -1 3300 DATA 16,9,7,3,5,0,95,30,22,12,1,175,178,16,0,0,22,26,0,0,4,65 3310 DATA 17,2,0,7,0,15,3,3,129,26,0,0,3,30,0 3399 DATA -1 3400 DATA 16,9,7,3,5,0,176,30,22,12,1,175,178,16,0,0,22,26,0,0,4,65 3410 DATA 17,2,0,7,0,15,3,3,129,26,0,0,3,30,0 3499 DATA -1 3500 DATA 16,2,5,0,135,115,22,12,1,205,212,20,0,1,6,30,1,12,0,6,255,0,0 3599 DATA -1 3600 DATA 16,2,5,0,106,115,22,12,1,213,220,20,0,1,6,30,1,12,0,6,200,0,0 3699 DATA -1 3700 DATA 16,6,7,5,5,0,24,185,12,1,184,187,24,0,1,22,6,30,0,1,20,1,63,6,30,0 3710 DATA 2,1,2,24,0 3799 DATA -1 3800 DATA 12,0,255 3899 DATA -2 4000 REM ****** SCREEN 4 ******* 4100 DATA 13,33,208,0,15,14,8,8,1,11,13,0,159,0,255 4199 DATA -1 4200 DATA16,14,7,6,5,0,253,140,22,12,1,133,136,15,0,0,2,166,12,1,136,139,15,0,0 4210 DATA 7,10,4,212,7,6,12,1,129,132,15,0,0,1,43,6,20,0,12,1,133,136,15,0,0 4220 DATA 2,166,12,1,136,139,15,0,0,7,10,3,140,12,1,129,132,15,0,0 4230 DATA 7,6,1,253,6,20,0,0,0 4299 DATA -1 4300 DATA 16,6,7,6,22,5,0,215,180,10,3,12,1,129,132,15,0,0,1,11,6,20,0 4310 DATA 12,1,133,136,15,0,0,2,215,6,20,0,11,28,3,0,159,0 4399 DATA -1 4400 DATA16,12,7,4,5,0,24,86,12,1,196,203,22,0,0,22,10,3,1,20,1,65,6,20,0,4,233 4410 DATA 6,20,0,2,1,2,24,6,20,0,3,86,6,20,0,11,13,0,159,1,0 4499 DATA -1 4500 REM **** BORDER COLOUR BANDS **** 4501 DATA 10,250:REM LOOP COUNTER=250 4502 DATA 13,32,208,0,13,32,208,0,13,32,208,11,13,32,208,11:REM POKE BORDER COL 4510 DATA 13,32,208,12,13,32,208,12,13,32,208,15,13,32,208,15:REM MORE COLOURS 4520 DATA 13,32,208,1,13,32,208,1,13,32,208,15,13,32,208,15:REM MORE COLOURS 4530 DATA 13,32,208,12,13,32,208,12,13,32,208,11,13,32,208,11:REM FINAL COLOURS 4531 DATA 11:REM LOOP END-GOTO START 4540 DATA 22:REM SET NEW START 4541 DATA 13,32,208,6:REM SCREEN=BLUE 4542 DATA 13,32,208,0:REM SCREEN=BLACK 4543 DATA 0:REM GO BACK TO START (LINE 4540 -AND REPEAT ALWAYS!) 4599 DATA -1 4600 DATA 255 4699 DATA -1 4700 DATA 255 4799 DATA -1 4800 DATA 255 4899 DATA -2 5000 REM ****** SCREEN 5 ******* 5100 DATA 14,54,4,1,12,1,19,20,32,19,3,18,5,5,14,33,0 5110 DATA 13,33,208,0,15,255,8,0,16,1,9,137,13,0,159,0,13,1,159,0,7,3,5,1,53,33 5120 DATA 6,0,1,4,61,6,20,0,7,5,4,172,27,1,159,2,114,7,8,28,3,0,159,7,3,2,114 5130 DATA 6,0,3,1,53,6,0,2,22,20,1,20,1,0 5199 DATA -1 5200 DATA 16,5,9,137,7,3,5,1,53,33,6,100,1,4,61,6,50,0,7,5,4,157,27,1,159 5210 DATA 2,114,7,7,28,3,0,159,7,1,28,0,1,159,255 5299 DATA -1 5300 DATA 16,3,9,137,7,3,5,1,53,33,6,200,1,4,61,6,50,0,7,5,4,142,27,1,159 5310 DATA 2,114,7,6,28,3,0,159,7,2,28,0,1,159,255 5399 DATA -1 5400 DATA 16,5,9,137,7,3,5,1,53,33,6,50,2,4,61,6,50,0,7,5,4,127,27,1,159 5410 DATA 10,2,2,114,1,53,4,177,3,127,11,7,3,28,0,1,159,255 5499 DATA -1 5500 DATA16,5,9,137,7,3,5,1,53,33,6,150,2,4,61,6,50,0,7,5,4,112,6,0,2,13,1,159,1 5510 DATA 10,2,2,114,1,53,3,62,4,112,11,13,1,159,0,13,0,159,1,7,4,28,0,1,159,255 5599 DATA -1 5600 DATA 16,3,9,137,7,3,5,1,53,33,6,250,2,4,61,6,50,0,7,5,4,97,27,1,159,2,114 5610 DATA7,6,28,4,0,159,7,5,28,0,1,159,255 5699 DATA -1 5700 DATA 16,5,9,137,7,3,5,1,53,33,6,100,3,4,61,6,50,0,7,5,4,82,27,1,159,2,114 5710 DATA7,7,28,4,0,159,7,6,28,0,1,159,255 5799 DATA -1 5800 DATA 16,1,9,137,7,3,5,1,53,33,6,200,3,4,61,6,50,0,7,5,4,67,27,1,159,2,114 5810 DATA7,8,28,4,0,159,7,7,28,0,1,159,255 5899 DATA -2 9999 DATA -9
( � ** SPRITE CONTROLLER ** O � ** FOR ** v � ** COMMODORE DISK USER ** � � ** (C) WILLIAM CHRISTIE, 1989 ** � : � �53280,0:�53281,11 � �"��"�14)"SPRITE DRIVER"