Home » Personal collection » Commodore disks » disk64d_odus_eclipse.d64 » sprite editor
sprite editor
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 » disk64d_odus_eclipse.d64 |
| Filename: | sprite editor |
| Read OK: | ✔ |
| File size: | 11D2 bytes |
| Load address: | 0801 |
| Exec address: | 0000 |
File contents
1 PRINT"<clr>":PRINTSPC(173);:PRINT"<reverse on>SPRITE EDITOR"
2 PRINTSPC(242);:PRINTSPC(242);:PRINT"<reverse on>DO YOU WISH INSTRUCTIONS ? (Y/N)"
3 GETA$:IFA$=""THEN3
4 IFA$<>"Y"ANDA$<>"N"THEN3
5 IFA$="N"THEN100
6 PRINT"<clr>":POKE53269,PEEK(53269)AND127:GOSUB8001
8 PRINTTAB(43):PRINT"X EXPAND/CONTRACT X AXIS"
9 PRINTTAB(43):PRINT"Y EXPAND/CONTRACT Y AXIS"
10 PRINTTAB(43):PRINT"↑ REFLECT X AXIS"
11 PRINTTAB(43):PRINT"← REFLECT Y AXIS"
12 PRINTTAB(43):PRINT"R ROTATE 90 DEGREES RIGHT"
13 PRINTTAB(43):PRINT"M MODE MULTICOLOUR/SINGLE"
14 PRINTTAB(86):PRINT"PRESS SPACE BAR TO CONTINUE"
15 GETD$:IFD$<>CHR$(32)ANDD$<>CHR$(160)THEN15
16 PRINT"<clr>":GOSUB8001
17 PRINTTAB(43):PRINT"F(1) COLOUR SINGLE MODE"
18 PRINTTAB(43):PRINT"F(3) COLOUR 1 MULTICOLOUR"
19 PRINTTAB(43):PRINT"F(5) COLOUR 2 MULTICOLOUR"
20 PRINTTAB(43):PRINT"F(7) ERASE POINT"
21 PRINTTAB(43):PRINT"S VIEW BYTE MAP"
22 PRINTTAB(43):PRINT"D CREATE DATA STATEMENTS"
23 PRINTTAB(86):PRINT"PRESS SPACE BAR TO CONTINUE"
24 GETD$:IFD$<>CHR$(32)ANDD$<>CHR$(160)THEN24
25 PRINT"<clr>":GOSUB8001
26 PRINTTAB(43):PRINT"T STORE DATA TO TAPE"
27 PRINTTAB(43):PRINT"Q QUIT/ERASE PROGRAM"
28 PRINTTAB(43):PRINT"CLR ERASE ALL POINTS":PRINTTAB(43):PRINT"F INPUT SPRITE FROM FILE"
32 PRINTTAB(43):PRINT"H HELP TO RETURN TO KEYCODES"
33 PRINTTAB(85):PRINT"***PRESS SPACE BAR TO START***"
34 PRINTTAB(50):PRINT"OR RETURN TO PROGRAM"
35 GETD$:IFD$="Q"THEN9000
36 IFD$<>CHR$(32)ANDD$<>CHR$(160)THEN35
37 GOTO100
100 FORI=0TO7:M(I)=2^(7-I):H(I)=255-M(I):NEXT:G=13*4096:PG=160
120 C=PG*64:POKE2047,PG:POKEG+21,128:POKEG+46,15:DC=255:POKE650,128
140 POKEG+14,255:POKEG+15,50
150 C1=1:C2=2:C3=3:C4=4:C5=5:C6=6:C7=7
160 C8=8:C9=9:Z=0
170 SC=1024:LL=40
210 PRINT"<clr>";:FORI=0TO20:FORJ=ZTOC2:P=PEEK(C+I*C3+J)
230 FORK=ZTOC7:A$=".":IFPANDM(K)THENA$="●"
240 PRINTA$;:NEXT:NEXT:PRINTI:NEXT:X=Z:Y=Z
245 PRINT"765432107654321076543210"
250 PRINT"<home>";
260 IFYTHENFORI=1TOY:PRINT:NEXT
270 IFXTHENPRINTSPC(X);
280 P=SC+X+Y*LL:Q=PEEK(P):R=Q
290 R=(R+128)AND255
300 POKEP,R
310 FORI=1TO30:GETA$:IFA$=" "THENNEXT:GOTO290
320 POKEP,Q
321 IFA$="X"THENPOKEG+29,128-PEEK(G+29):GOTO250
322 IFA$="Y"THENPOKEG+23,128-PEEK(G+23):GOTO250
323 IFA$="<f1>"THENPOKEG+46,(PEEK(G+46)+1)AND15:GOTO250
324 IFA$="<f3>"THENPOKEG+37,(PEEK(G+37)+1)AND15:GOTO250
325 IFA$="<f5>"THENPOKEG+38,(PEEK(G+38)+1)AND15:GOTO250
326 IFA$="M"THENPOKEG+28,128-PEEK(G+28):GOTO250
327 IFA$="S"THEN5010
328 IFA$="R"THEN6000
329 IFA$="↑"THEN6100
330 IFA$="←"THEN6200
331 IFA$="H"THENGOTO6
332 IFA$="Q"THEN9000
333 IFA$="D"THEN11000
334 IFA$="T"THEN12000
335 IFA$="F"THEN13000
339 IFA$="<cursor right>"THENX=X+1+24*(X=23):GOTO250
340 IFA$="<cursor left>"THENX=X-1-24*(X=0):GOTO250
350 IFA$="<cursor down>"THENY=Y+1+21*(Y=20):GOTO250
360 IFA$="<cursor up>"THENY=Y-1-21*(Y=0):GOTO250
370 IFA$=<>" "THEN380
375 POKEP,46:T=C+Y*C3+INT(X/C8):POKET,PEEK(T)ANDH(XANDC7):GOTO250
377 X=X+1+24*(X=23):GOTO250
380 IFA$<>"."THEN390
385 POKEP,81:T=C+Y*C3+INT(X/C8):POKET,PEEK(T)ORM(XANDC7):GOTO377
390 IFA$<>"<clr>"ANDA$="<f7>"THEN375
391 IFA$<>"<clr>"THEN250
400 PRINT"<home>";:FORI=0TO20:PRINT"........................"
410 FORJ=0TO2:POKEC+I*C3+J,Z:NEXT:NEXT
510 GOTO250
600 GETA$:IFA$=" "THEN600
610 RETURN
5010 OPEN2,8,2:PRINT"<clr>":POKE53269,PEEK(53269)AND127
5020 FORI=0TO20:PRINT#2,"BYTE ";:FORJ=0TO2:P=PEEK(C+I*3+J):PRINT#2,"%";
5030 FORK=0TO7:A$="0":IFPANDM(K)THENA$="1"
5040 PRINT#2,A$;:NEXT:IFJ<>2THENPRINT#2,",";
5050 NEXT:PRINT#2:NEXT:
5060 CLOSE2:PRINTSPC(40)
5062 PRINT"DO YOU WISH TO RETURN TO PROGRAM ? (Y/N)"
5064 GETA$:IFA$=""THEN5064
5066 IFA$="Y"THEN100
5068 IFA$<>"Y"ANDA$<>"N"THEN5064
5070 END
6000 DEF FNI(I)=J:DEF FNJ(J)=20-I
6010 GOTO6500
6100 DEF FNI(I)=20-I:DEF FNJ(J)=J
6110 GOTO6500
6200 DEF FNI(I)=I:DEF FNJ(J)=23-J
6210 GOTO6500
6500 GOSUB6900
6510 FORI=0TO20
6520 FORJ=0TO23
6530 NI=FNI(I):NJ=FNJ(J)
6535 B=PEEK(NP+I*C3+J/C8)ANDM(JANDC7)
6536 IFBTHENP=C+NI*C3+NJ/C8:POKEP,PEEK(P)ORM(NJANDC7)
6540 NEXT:NEXT
6550 GOTO210
6900 NP=C+64
6910 FORI=0TO63
6915 POKENP+I,PEEK(C+I)
6916 POKEC+I,Z:NEXT
6920 RETURN
8001 FORI=0TO39:POKE1024+I,218:NEXT
8002 FORI=1TO24:POKE1024+39+I*40,218:NEXT
8003 FORI=38TO0STEP-1:POKE1024+960+I,218:NEXT
8004 FORI=23TO1STEP-1:POKE1024+I*40,218:NEXT
8005 PRINT"<home>"
8006 PRINTSPC(93):PRINT"SPRITE EDITOR"
8007 PRINTSPC(43):PRINT"KEYCODES:"
8008 RETURN
9000 PRINT"<clr>":PRINTTAB(124):PRINT"SURE YOU WANT TO QUIT? (Y/N)"
9001 GETD$:IFD$<>"Y"ANDD$<>"N"THEN9001
9002 IFD$="Y"THEN SYS64738
9003 IFD$="N"THEN100
11000 PRINT"<clr>";:POKE53269,PEEK(53269)AND127:PRINTSPC(244);:PRINTSPC(240);:INPUT"STARTING LINE #";P
11004 PRINT"<clr>"
11009 FORX=0TO15
11010 IFX= 0THENGOSUB11200
11011 PRINTPEEK(10240+X);:PRINT",";
11015 IFX=15THENPRINT"<cursor left> "
11016 NEXT
11018 PRINTSPC(40)
11019 FORX=16TO31
11020 IFX=16THENGOSUB11200
11021 PRINTPEEK(10240+X);:PRINT",";
11025 IFX=31THENPRINT"<cursor left> "
11026 NEXT
11028 PRINTSPC(40)
11029 FORX=32TO47
11030 IFX=32THENGOSUB11200
11031 PRINTPEEK(10240+X);:PRINT",";
11035 IFX=47THENPRINT"<cursor left> "
11036 NEXT
11038 PRINTSPC(40)
11039 FORX=48TO63
11040 IFX=48THENGOSUB11200
11041 PRINTPEEK(10240+X);:PRINT",";
11045 IFX=63THENPRINT"<cursor left> ":GOTO11250
11046 NEXT
11200 IFX<15THENP=P
11201 IFX>=15ANDX<=31THENP=P+1
11202 IFX>=32ANDX<=47THENP=P+1
11210 IFX>=48ANDX<=63THENP=P+1
11220 PRINT"<cursor left>";:PRINTP;:PRINTSPC(6-LEN(STR$(P)));:PRINT"<cursor left>DATA ";:RETURN
11250 PRINTSPC(240);
11252 PRINT"DO YOU WISH TO RETURN TO PROGRAM ? (Y/N)"
11254 GETA$:IFA$=""THEN11254
11256 IFA$="Y"THEN100
11257 IFA$<>"Y"ANDA$<>"N"THEN11254
11258 END
12000 PRINT"<clr>";:POKE53269,PEEK(53269)AND127:PRINTSPC(244);:PRINTSPC(240);:INPUT"FILE NAME";E$
12001 OPEN1,8,1,E$
12004 FORX=0TO63
12006 D=PEEK(10240+X)
12008 PRINT#1,D
12012 NEXT
12014 CLOSE1
12016 PRINT"<clr>":PRINTSPC(240);
12018 PRINT"DO YOU WISH TO RETURN TO PROGRAM ? (Y/N)"
12020 GETA$:IFA$=""THEN12020
12022 IFA$="Y"THEN100
12024 IFA$<>"Y"ANDA$<>"N"THEN12020
12026 END
13000 PRINT"<clr>":POKE53269,PEEK(53269)AND127:PRINTSPC(244);:PRINTSPC(240);:INPUT"NAME OF SPRITE";E$
13001 PRINT"<clr>":PRINTSPC(244);:PRINTSPC(238);:INPUT"STARTING LOCATION POKE (10240)";SP
13002 OPEN1,8,0,E$
13004 FORX=0TO63:INPUT#1,D
13006 POKE(SP+X),D:NEXT:CLOSE1
13016 PRINT"<clr>":PRINTSPC(240);
13018 PRINT"DO YOU WISH TO RETURN TO PROGRAM ? (Y/N)"
13020 GETA$:IFA$=""THEN13020
13022 IFA$="Y"THEN100
13024 IFA$<>"Y"ANDA$<>"N"THEN13020
13026 END
$ �"�":��173);:�"SPRITE EDITOR"