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"