100 REM SPRITECAT 110 REM ANDY GAMBLE SEPT 1984 130 CU$="[157][157][157][157][157][157][157][157][157][157][157][157][157]" 140 BL$=" " 150 CL$="[204] [205] [216] [217] [206] [196] [211] [195] [209] [197] [208] [200]ELP " 160 ME$="LMXYNDSCQHEP":MM$="BC01MR":POKE53272,23 170 DIMSD(63):VC=53248:COL=1:BC=0:M0=2:M1=5 180 FORI=1TO63:POKE703+I,0:NEXT 190 POKEVC+32,9:POKEVC+33,BC:PRINTCHR$(129) 200 POKE2040,11:POKEVC+39,COL:POKEVC+21,1:POKEVC,70:POKEVC+1,140 210 PRINTCHR$(147)CL$:GOSUB390 220 REM *** MAIN PROGRAM *** 230 GOSUB1900 240 FORI=1TOLEN(ME$):IFX$=MID$(ME$,I,1)THEN270 250 IFX$=CHR$(ASC(MID$(ME$,I,1))+128)THEN270 260 NEXT:GOTO230 270 ONIGOSUB300,480,760,790,820,1070,1210,1340,1370,1390,1540,1790 280 GOTO230 290 REM *** LOAD SPRITE *** 300 PRINT"[147]"BL$"[198]ILE NAME"; 310 INPUTFL$ 315 IFFL$=""THENPRINT""BL$:GOSUB390:RETURN 320 FORI=LEN(FL$)TO1STEP-1:IFMID$(FL$,I,1)=" "THENFL$=LEFT$(FL$,I-1):NEXT 330 OPEN15,8,15:OPEN1,8,4,FL$+",S,4" 340 INPUT#15,A$,B$,C$,D$:IFVAL(A$)=0THEN380 350 PRINT""BL$""B$": ";:GOSUB1920 360 GOSUB1900 370 GOTO390 380 FORI=1TO63:INPUT#1,SD(I):POKE703+I,SD(I):NEXT 390 POKEVC+21,1:PRINT""TAB(23)"[196]ATA" 400 FORI=1TO63STEP3 410 PRINTTAB(20); 420 FORJ=0TO1 430 PRINTSD(I+J)",";:NEXT 440 PRINTSD(I+2) 450 NEXT 460 PRINT""CL$:CLOSE15:CLOSE1:RETURN 470 REM *** MULTI-COLOR *** 480 PRINT"[147]"BL$"[205]ULTICOLOR:[194] [195] 0 1 [205] [210]" 490 PRINT""TAB(15)"[194] = [194]ACKGROUND COLOR" 500 PRINT""TAB(15)"[195] = [211]PRITE COLOR" 510 PRINT""TAB(15)"0 = [205]ULITCOLOR #0" 520 PRINT""TAB(15)"1 = [205]ULITCOLOR #1" 530 PRINT""TAB(15)"[205] = [205]ULTICOLOR ON/OFF" 540 PRINT""TAB(15)"[210] = [210]ETURN TO MAIN MENU" 550 GOSUB1900 560 FORI=1TOLEN(MM$) 570 IFX$=MID$(MM$,I,1)THEN600 580 IFX$=CHR$(ASC(MID$(MM$,I,1))+128)THEN600 590 NEXT:GOTO550 600 ONIGOSUB640,1340,670,700,730 610 IFI=6THENPRINT"[147]"BL$:GOSUB390:RETURN 620 GOTO550 630 REM ** BACKGROUND COLOR ** 640 BC=BC+1:IFBC=16THENBC=0 650 POKEVC+33,BC:RETURN 660 REM ** MULTICOLOR #0 ** 670 M0=M0+1:IFM0=16THENM0=0 680 POKEVC+37,M0:RETURN 690 REM ** MULTICOLOR #1 ** 700 M1=M1+1:IFM1=16THENM1=0 710 POKEVC+38,M1:RETURN 720 REM ** MULTICOLOR ON/OFF ** 730 IFPEEK(VC+28)=0THENPOKEVC+28,1:RETURN 740 POKEVC+28,0:RETURN 750 REM ** X-EXPAND ** 760 IFPEEK(VC+29)=0THENPOKEVC+29,1:RETURN 770 POKEVC+29,0:RETURN 780 REM ** Y-EXPAND ** 790 IFPEEK(VC+23)=0THENPOKEVC+23,1:RETURN 800 POKEVC+23,0:RETURN 810 REM ** ENTER DATA ** 820 PRINT""BL$"[197]NTER DIGITS ONLY, ENDING WITH RETURN" 830 PRINT""; 840 FORI=1TO21:PRINTTAB(20)" ":NEXT 850 PRINT""TAB(23)"[196]ATA":PRINTTAB(21); 860 FORI=1TO63STEP3 870 FORJ=0TO2 880 SD$="" 890 PRINT"[164][157]"; 900 GOSUB1900:LS=LEN(SD$) 910 IFX$="*"THENPRINTLEFT$(CU$,LS)MID$(BL$,2,LS+1)LEFT$(CU$,LS+1);:GOTO880 920 IFLS=3THENGOTO950 930 IFX$>="0"ANDX$<="9"THENSD$=SD$+X$:PRINTX$; 940 IFX$=CHR$(13)ANDLS=0THENPRINT"0"; 950 IFX$=CHR$(13)GOTO970 960 GOTO890 970 SD=VAL(SD$):IFSD<=255THEN1000 980 LS=LEN(SD$):PRINTLEFT$(CU$,LS)MID$(BL$,2,LS+1)LEFT$(CU$,LS+1); 990 GOTO880 1000 IFJ<2THENPRINT" , ";:GOTO1020 1010 PRINT" "; 1020 SD(I+J)=SD:POKE703+I+J,SD 1030 NEXTJ:PRINT:PRINTTAB(21); 1040 NEXTI 1050 PRINT"[147]"CL$:GOSUB390:RETURN 1060 REM ** DISKIF ** 1070 PRINT"[147]"BL$:PRINTTAB(5);:POKEVC+21,0 1080 OPEN1,8,0,"$0" 1090 GET#1,A$,A$ 1100 GET#1,A$,A$ 1110 IFA$=""THEN1170 1120 GET#1,A$,B$ 1130 PRINTASC(A$+CHR$(0))+ASC(B$+CHR$(0))*256; 1140 GET#1,A$ 1150 IFA$=""THENPRINT:PRINTTAB(5);:GOTO1100 1160 PRINTA$;:GOTO1140 1170 CLOSE1:PRINT""BL$"";:GOSUB1920 1180 GOSUB1900 1190 PRINT"[147]"CL$:POKEVC+21,1:GOSUB390:RETURN 1200 REM ** SAVE SPRITE ** 1210 PRINT""BL$"[198]ILE NAME"; 1220 INPUTFL$ 1230 FORI=LEN(FL$)TO1STEP-1:IFMID$(FL$,I,1)=" "THENFL$=LEFT$(FL$,I-1):NEXT 1240 OPEN15,8,15:OPEN1,8,4,FL$+",S,W" 1250 INPUT#15,A$,B$,C$,D$:IFVAL(A$)=0THEN1290 1260 PRINT""BL$""B$": ";:GOSUB1920 1270 GOSUB1900 1280 GOTO1320 1290 FORI=1TO63 1300 PRINT#1,SD(I) 1310 NEXT 1320 PRINT""CL$:CLOSE15:CLOSE1::RETURN 1330 REM ** COLOR ** 1340 COL=COL+1:IFCOL=16THENCOL=0 1350 POKEVC+39,COL:RETURN 1360 REM ** QUIT ** 1370 PRINT"[147]";:POKEVC+21,0:POKE53272,21:GOTO63000 1380 REM ** HELP ** 1390 PRINT"[147]"BL$"[200]ELP: ";:GOSUB1920:POKEVC+21,0 1400 PRINT"[204][146] = [204]OAD SPRITE FROM DISK" 1410 PRINT"[205][146] = [205]ULTI-COLOR MODE" 1420 PRINT"[216][146] = [197]XPAND IN X-DIRECTION" 1430 PRINT"[217][146] = [197]XPAND IN Y-DIRECTION" 1440 PRINT"[206][146] = [197]NTER NEW SPRITE DATA" 1450 PRINT"[196][146] = [196]ISK MENU" 1460 PRINT"[211][146] = [211]AVE SPRITE TO DISK" 1470 PRINT"[195][146] = [195]HANGE SPRITE COLOR" 1480 PRINT"[197][146] = [197]DIT SPRITE DATA" 1490 PRINT"[208][146] = [208]RINT SPRITE" 1500 PRINT"[209][146] = [209]UIT PROGRAM" 1510 GOSUB1900 1520 PRINT"[147]"CL$:POKEVC+21,1:GOSUB390:RETURN 1530 REM ** EDIT ** 1540 PRINT""BL$" SPACE TO CONTINUE, RETURN TO SELECT" 1550 PRINT""TAB(20); 1560 FORI=1TO63STEP3 1570 FORJ=0TO2 1580 PRINT""SD(I+J)LEFT$(CU$,LEN(STR$(SD(I+J)))+1); 1590 GOSUB1900:IFX$=" "THENPRINT"[146]"SD(I+J)"";:GOTO1750 1600 IFX$<>CHR$(13)THEN1590 1610 PRINT""BL$"[197]NTER NEW DATA: "; 1620 SD$="" 1630 PRINT"[164][157]"; 1640 GOSUB1900:LS=LEN(SD$) 1650 IFX$="*"THENPRINTLEFT$(CU$,LS)MID$(BL$,2,LS+1)LEFT$(CU$,LS+1); 1655 IFX$="*"GOTO1620 1660 IFLS=3THENGOTO1680 1670 IFX$>="0"ANDX$<="9"THENSD$=SD$+X$:PRINTX$; 1680 IFX$=CHR$(13)ANDLS=0THENPRINT"0":GOTO1710 1690 IFX$=CHR$(13)THEN1710 1700 GOTO1630 1710 SD=VAL(SD$) 1720 IFSD>255THENPRINT"[157][157][157][157] [157][157][157][157]";:GOTO1620 1730 SD(I+J)=SD:POKE703+I+J,SD 1740 PRINT"[147]"CL$:GOSUB390:RETURN 1750 NEXTJ:PRINT:PRINTTAB(20); 1760 NEXTI 1770 PRINT""CL$:RETURN 1780 REM ** PRINT ** 1790 PRINT""BL$"[208]RINTING...":OPEN4,4 1800 PRINT#4,FL$:PRINT#4 1810 FORI=1TO61STEP3 1820 FORJ=0TO2:BI=128:BI$="":SD=SD(I+J) 1830 IFSD=1THEN1830 1860 PRINT#4,BI$;:NEXT:PRINT#4,SD(I)SD(I+1)SD(I+2) 1870 NEXT 1880 CLOSE4:PRINT""CL$:RETURN 1890 REM ** GET S/R ** 1900 GETX$:IFX$=""THEN1900 1910 RETURN 1920 PRINT"[208]RESS SPACE TO CONTINUE":RETURN 63000 PRINT"[147]LOAD"CHR$(34)"C.PAYLOAD"CHR$(34)",8":PRINT"RUN" 63001 POKE832,0 63002 POKE631,13:POKE632,13:POKE198,2:END