start tok64 d64-tT5yrD 0 REM"{delete*7} p.j.ponzo*83*waterloo/ontario 1 REM"{delete*6} 1000 GOSUB60000:PRINTCHR$(142):PRINT"{clear}{space*15}{reverse on}{blue}sprites-2" 1001 PRINT"{red}{cm a}{sh asterisk*37}{cm s}" 1002 PRINT"{sh -} {reverse on}{blue}{space*10}more on sprites{space*10}{red}{reverse off} {sh -}":ms$="ponzotutor" 1003 PRINT"{red}{cm z}{sh asterisk*37}{cm x}{black}":GOSUB63100:ms$=" welcome!" 1005 GOSUB63100:GOSUB10000 1010 v=53248:POKE2040,13:POKEv+1,150:POKEv,150:POKEv+39,1:POKEv+29,1:POKEv+23,1 1020 POKEv+39,6:POKEv+21,1:PRINT"{home}{down*6}this is a blue sprite.":FORt=1TO900:NEXT 1030 PRINT"{down}a 'sort-of' lunar lander.":FORt=1TO1000:NEXT 1040 PRINT"{down}let's look at it more closely." 1050 ms$="let's look":GOSUB63100:GOSUB63000:POKEv+21,0 1060 PRINT"{clear}{down*6}we'll display the pixels that make" 1070 PRINT"{down}up this sprite{.*3}":GOSUB63000 1075 POKEv,255:POKEv+1,180:POKEv+21,1 1080 PRINT"{clear}":GOSUB10200 1085 FORi=1TO5 1086 PRINTdn$"{reverse on}now, in binary{space*13}":FORt=1TO50:NEXT 1087 PRINTdn$"{reverse on}{space*27}":FORt=1TO50:NEXT 1088 NEXT:GOSUB10400 1090 FORi=1TO5 1091 PRINTdn$"{reverse on}{.*3}and in bit-pairs{space*8}":FORt=1TO50:NEXT 1092 PRINTdn$"{reverse on}{space*27}":FORt=1TO50:NEXT 1093 NEXT 1100 GOSUB10500:GOSUB63000 1110 PRINTps$"now we'll{space*3}" 1120 PRINTps$"{down}choose 4{space*4}" 1130 PRINTps$"{down*2}colours and " 1140 PRINTps$"{down*3}set each{space*4}" 1150 PRINTps$"{down*4}pixel pair{space*2}" 1160 PRINTps$"{down*5}to a colour " 1170 PRINTps$"{down*6}according to" 1180 PRINTps$"{down*8}{reverse on}00{reverse off}=colour #0" 1190 PRINTps$"{down*9}{reverse on}01{reverse off}=colour #1" 1200 PRINTps$"{down*10}{reverse on}10{reverse off}=colour #2" 1210 PRINTps$"{down*11}{reverse on}11{reverse off}=colour #3":GOSUB63000 1215 GOSUB10600:FORi=1TO5:PRINTdn$"base of video chip":FORt=1TO50:NEXT 1216 PRINTdn$"{reverse on}base of video chip":FORt=1TO50:NEXT:NEXT 1220 PRINTps$"v=53248:video":v=53248 1225 GOSUB63000:PRINTdn$"{black}set colour #0=1(white)" 1230 PRINTps$"{down}{reverse on}pokev+33,1 ":POKEv+33,1 1240 GOSUB63000:PRINTdn$"{reverse on}v+33=53281(background)" 1245 GOSUB63000:PRINTdn$"set colour #1=0(black)" 1250 PRINTps$"{down*2}{reverse on}pokev+37,0 ":POKEv+37,0 1260 GOSUB63000:PRINTdn$"{reverse on}v+37=sprite multi-colour reg'r #0" 1265 GOSUB63000:PRINTdn$"set colour #2=2(red)" 1270 PRINTps$"{down*3}{reverse on}pokev+39,2 ":GOSUB63000:POKEv+39,2 1280 GOSUB63000:PRINTdn$"{reverse on}v+39=colour register for sprite #0" 1285 GOSUB63000:PRINTdn$"set colour #3=3(cyan)" 1290 PRINTps$"{down*4}{reverse on}pokev+38,3 ":POKEv+38,3 1300 GOSUB63000:PRINTdn$"{reverse on}v+38=sprite multi-colour reg'r #1" :GOSUB63000 1305 PRINTdn$"{reverse on}please note{!*3}":GOSUB63000 1310 PRINTdn$"{reverse on}pokev+39,2{reverse off} changed sprite to red":GOSUB63000 1320 PRINTdn$"& {reverse on}pokev+33,1{reverse off} changed background":GOSUB63000 1330 FORi=1TO5 1331 PRINTdn$"{reverse on}but where's the black and cyan??":FORt=1TO50:NEXT 1332 PRINTdn$"{reverse on}{space*32}":FORt=1TO50:NEXT 1333 NEXT 1340 ms$=" watch!!":PRINT"{clear}":POKEv+21,0:GOSUB63100:PRINT"{clear}":GOSUB10700 1350 GOSUB60000:ms$="how to do?":GOSUB63100 1360 PRINT"{clear}the {reverse on}00{reverse off} colour was 'background'" 1370 PRINT"{down}(and shared by all visible sprites)" 1380 PRINT"{down}and {reverse on}poke v+33{reverse off} changes this colour." 1390 PRINT"{down}the {reverse on}10{reverse off} colour was the 'sprite colour'" 1400 PRINT"{down}(and can be different for each sprite)" 1410 PRINT"{down}and {reverse on}poke v+39+n{reverse off} changes this colour" 1420 PRINT"{down}(for sprite #n, with n=0 to 7)." 1430 ms$="{reverse on}01{reverse off} & {reverse on}11{reverse off}{?*3}":GOSUB63100:GOSUB63000 1440 PRINT"{clear}then, in registers {reverse on}v+37{reverse off} & {reverse on}v+38{reverse off}" 1450 PRINT"{down}are the {reverse on}sprite multi-colours{reverse off}!!" 1460 PRINT"{down}{reverse on}poke v+37{reverse off} and {reverse on}poke v+38{reverse off} with the" 1470 PRINT"{down}colours you want for the {reverse on}01{reverse off} and {reverse on}11" 1480 PRINT"{down}bit pairs!!":ms$="all shared":GOSUB63100:GOSUB63000 1490 PRINT"{clear}ok..our background changes and so does" 1500 PRINT"{down}our 'sort-of' sprite." 1510 PRINT"{down}now to {reverse on}enable{reverse off} multi-colour for" 1520 PRINT"{down}sprite #n, we: {reverse on}poke v+28,2^n{reverse off}!!":ms$="enable #n":GOSUB63100:GOSUB63000 1530 PRINT"{clear}{down*5}still no change rs!!":ms$="all shared":e #n":{141}63100:{141}63{0*3} 63999 REM "Invalid BASIC input d64-tT5yrD stop tok64 (bastext 1.0)