start tok64 d64-P1wE8q 40 REM sprite definer v2.0 100 DIM f%(64) 110 POKE 53248,250 120 POKE 53249,180 130 POKE 53269,1 135 POKE 53280,2 140 POKE 53281,2 145 POKE 53280,2 150 POKE 53277,1 155 POKE 53271,1 160 PRINT"{clear}{pink}*** sprite-definer v2.0 ***" 170 INPUT "spritenummer(0-255) ";s 180 x=0:y=1:IF s<0 THEN 170 190 POKE 2040,s 192 PRINT "1 f{pound}r mono-colour",,"{space*10}2 f{pound}r multi- coloursprites{space*2}" 194 INPUT m 196 POKE 53276,m-1 200 REM *** mainloop *** 210 GOSUB 2000 300 GET a$ 310 POKE 55296+x+y*40,7 330 x=x+m*(a$="{left}"ANDx>0)-m*(a$="{right}"ANDx<24-m) 340 y=y+(a$="{up}"ANDy>1)-(a$="{down}"ANDy<21) 350 IF a$=" "AND m=1 THEN 500 360 IF a$=" "AND m=2 THEN 600 370 IF a$="s" THEN 1000 380 IF a$="l" THEN 1200 390 IF a$="a" THEN 3000 395 IF a$="k" THEN 3200 397 IF a$="e" THEN 110 400 POKE 55296+x+y*40,0 410 GOTO 300 500 v=1024+x+y*40 510 l=76+128*-(PEEK(v)<128) 520 POKE v,l 530 v=s*64+(x AND 248)/8+y*3-3 540 k=2^(7-(x AND 7)) 550 l=-1*(l=204)*k 560 POKE v,(PEEK(v) AND (255-k))+l 570 GOTO 300 600 v=1024+x+y*40 610 l=PEEK(v) 615 IF l=76 THEN l=176 620 l=l-175 625 IF l>3 THEN l=0 630 REMpoke 55297+x+y*40,l+13 640 REMpoke 55296+x+y*40,l+13 650 GOTO 800 700 v=16320+(x AND 248)/8+y*3-3 710 IF PEEK(v) AND 2^(7-(x AND 7)) THEN 750 720 POKE v,PEEK(v) OR 2^(7-(x AND 7)) 730 GOTO 300 800 POKE v,176+l+100*(l=0) 810 POKE v+1,176+l+100*(l=0) 812 v=s*64+(x AND 248)/8+y*3-3 820 k=x AND 7 830 p=PEEK(v) AND (255-((2^(7-k))+(2^(6-k)))) 840 POKE v,(l*(2^(7-k)))/2+p 850 GOTO 300 1000 INPUT "(q)uit eller g{pound}m p] (d)isk / (k)asett";s$ 1010 IF s$="q" THEN END 1020 d=76-ASC(s$) 1030 INPUT "filnamn:";f$ 1040 OPEN 1,d,1,f$ 1050 v=INT(s*64/256) 1060 w=s*64-v*256 1070 PRINT#1,CHR$(w);CHR$(v); 1090 FOR n=s*64 TO s*64+62 1100 PRINT#1,CHR$(PEEK(n)); 1110 NEXT n 1115 PRINT#1,CHR$(s) 1120 CLOSE 1 1130 GOTO 210 1200 INPUT "load fr]n (d)isk / (k)assett";s$ 1210 d=76-ASC(s$) 1220 INPUT "filnamn:";f$ 1230 OPEN 1,d,0,f$ 1235 GET#1,f$,f$ 1240 FOR n=1 TO 64 1250 GET#1,f$ 1254 IF f$="" THEN f$=CHR$(0) 1256 f%(n)=ASC(f$) 1260 NEXT n 1265 CLOSE 1 1267 s=f%(64) 1270 PRINT "vart ska spriten ligga{space*4}"s; 1280 INPUT"{left*6}";s 1285 IF s<128 THEN 1270 1290 FOR n=0 TO 62 1300 POKE s*64+n,f%(n+1) 1310 NEXT m 1320 GOTO 210 2000 POKE 2040,s 2005 GOSUB 2500 2010 IF m<1 AND m>2 THEN 2000 2020 IF m=2 THEN GOTO 2200 2030 FOR n=0 TO 62 STEP 3 2040 FOR h=0 TO 2 2050 FOR g=0 TO 7 2055 IF PEEK(h+s*64+n)=0 THEN 2100 2060 l=PEEK(h+s*64+n) AND 2^(7-g) 2070 IF l=0 THEN 2085 2080 POKE 1064+h*8+g+40*INT(n/3),204 2085 IF PEEK(197)=20 THEN 2400 2090 NEXT g 2100 NEXT h 2110 NEXT n 2120 RETURN 2200 FOR n=0 TO 62 STEP 3 2210 FOR h=0 TO 2 2220 FOR g=0 TO 7 STEP 2 2225 IF PEEK(h+s*64+n)=0 THEN 2290 2230 l=PEEK(h+s*64+n) AND (2^(7-g)+2^(6-g)) 2240 k=176+l/(2^(6-g)) 2250 IF k=176 THEN 2275 2260 POKE 1064+h*8+g+40*INT(n/3),k 2270 POKE 1065+h*8+g+40*INT(n/3),k 2275 IF PEEK(197)=20 THEN 2400 2280 NEXT g 2290 NEXT h 2300 NEXT n 2310 RETURN 2400 FOR n=0 TO 62 2410 POKE s*64+n,0 2420 NEXT n 2430 GOSUB 2500 2440 RETURN 2500 PRINT"{clear}{light green}123456781234567812345678{space*5}spr-#"s 2510 FOR n=0 TO 20 2520 PRINT"{yellow}{L*24}{cm h}{pink}"(n) 2530 NEXT n 2540 RETURN 3000 INPUT "animation fr]n sprite ";a 3010 INPUT "{up}till sprite{space*11}";b 3015 INPUT "{up}hastighet (1-10){space*6}";c 3020 FOR n=a TO b 3030 POKE 2040,n 3035 FOR f=1 TO 100-c 3037 NEXT f 3040 IF PEEK(197)=60 THEN 3070 3050 NEXT n 3060 GOTO 3020 3070 GET a$ 3080 IF a$=" "THEN 3070 3100 PRINT "{up}animation stoppad.{space*17}{up}" 3110 GOTO 300 3200 INPUT"kopiera till sprite nummer";a 3205 IF a<128 THEN 3200 3210 FOR n=0 TO 63 3220 POKE a*64+n,PEEK(s*64+n) 3230 NEXT n 3240 s=a 3250 GOTO 200 stop tok64 (bastext 1.0)