Home » Archimedes archive » Archimedes World » AW-1996-06-Disc 2.adf » !Tables_Tables » !Tables/Pt1/Library
!Tables/Pt1/Library
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 » Archimedes archive » Archimedes World » AW-1996-06-Disc 2.adf » !Tables_Tables |
Filename: | !Tables/Pt1/Library |
Read OK: | ✔ |
File size: | 418B bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
0REMOSCLIADFS::HardDisc4.$.CURR_NEW.!Tables.Pt1.Library 1 2REM Below this line the programs will reside in library form. 3REM ********************************************************* 4REM ********************************************************* 5 6DEFPROCloadunsquash(area%,areasiz%,sqfile%,sqfile$) 7area%=sprite_area1% 8areasiz%=160*1024 9sqfile%=sprite_area2% 10sqbuffer%=picture2% 11OSCLI"LOAD <TableA$Dir>.pt1.sprites."+sqfile$+" "+STR$~sqfile% 12SYS "OS_File",5,"<TableA$Dir>.pt1.sprites."+sqfile$ TO ,,,,filelen%,type% 13IF ?(sqfile%)<>ASC("S") AND ?(sqfile%+1)<>ASC("Q"):STOP 14PROCunsquash(sqfile%+20,filelen%-20,sqbuffer%,area%+4,areasiz%-4) 15ENDPROC 16 17DEFPROCloadunsquash2(final_area%,areasiz%,sqfile%,sqfile$) 18area%=final_area% 19areasiz%=160*1024 20sqfile%=sprite_area2% 21sqbuffer%=picture2% 22OSCLI"LOAD <TableA$Dir>.pt1."+sqfile$+" "+STR$~sqfile% 23SYS "OS_File",5,"<TableA$Dir>.pt1."+sqfile$ TO ,,,,filelen% 24IF ?(sqfile%)<>ASC("S") AND ?(sqfile%+1)<>ASC("Q"):STOP 25PROCunsquash(sqfile%+20,filelen%-20,sqbuffer%,area%,areasiz%-4) 26ENDPROC 27 28DEFPROCunsquash(inptr%,insiz%,bufptr%,outptr%,outsiz%) 29SYS"Squash_Decompress",%100,bufptr%,inptr%,insiz%,outptr%,outsiz% TO r0% 30ENDPROC 31 32DEFPROCcheck_mouse(t_out%) 33t%=TIME 34 REPEAT 35 MOUSE mx%,my%,mz% 36 ma%=INKEY(1) 37 IFma%=16:PROCprinter 38 IFma%=19:PROCscreen_save(1) 39 IFma%=13:mz%=8 40 UNTIL mz%=4 OR t%+t_out%<TIME OR mz%=8 41ENDPROC 42 43DEFPROCspace(sx%,sy%,an_num%,pa%) 44PROCpause(pa%) 45*fx21,9 46*fx15 47SYS"OS_SpriteOp",&110,sprite_area1%,"space1",0,sx%,sy%,1280,sy%+68 48SYS"OS_SpriteOp",&110,sprite_area1%,"space2",0,sx%,sy%,1280,sy%+68 49alter%=1:an_t%=TIME 50PROCpause(10):sound_t%=TIME 51REPEAT:MOUSEmx%,my%,mc%:UNTILmc%=0 52FORmsxf%=1TO10:MOUSEmx%,my%,mc%:NEXT 53PROCplot_sprite_masked(sx%,sy%,1,1,1,1,"scraft1") 54MOUSEON 55cn%=1:am%=50 56REPEAT 57 PROCcheck_mouse(am%):am%=25 58 IFmz%<>4:cn%=(cn%-1)*-1:PROCplot_sprite_masked(sx%,sy%,1,1,1,1,"scraft"+STR$(cn%)) 59 IFan_num%=1 AND FNnosound=TRUE:SOUND 1,&17F,1,1 60UNTIL (mz%=4 AND mx%>sx% AND my%>sy% AND mx%<sx%+200 AND my%<sy%+68) OR mz%=8 61!(scale%+0)=1:!(scale%+4)=1:!(scale%+8)=1:!(scale%+12)=1 62flame%=2 63msxf%=0:sinc%=0:co%=0 64REPEAT 65 PROCst_pause 66 SYS"OS_SpriteOp",&13C,sa1%,"space2",0 67 SYS"OS_SpriteOp",&134,sa1%,"space1",0,0,0,scale%,0 68 PROCplot_sprite_masked(msxf%,0,1,1,1,1,"scraft"+STR$(flame%)) 69 SYS"OS_SpriteOp",&13C,sa1%,0,1 70 IFV%=1 VDU 23,17,7,6,8;16;0; 71 !(scale%+0)=1:!(scale%+4)=1:!(scale%+8)=1:!(scale%+12)=1 72 SYS"OS_SpriteOp",&134,sa1%,"space2",sx%,sy%,0,scale%,0 73 flame%=flame%+1:IFflame%=8:flame%=2 74 msxf%=msxf%+sinc%:co%=co%+1 75 IFco%>6 sinc%=sinc%+16 76 PROCen_pause(10) 77UNTIL msxf%+sx%>1280 78SYS"OS_SpriteOp",&134,sa1%,"space1",sx%,sy%,0,scale%,0 79ENDPROC 80 81DEFPROCst_pause 82time%=TIME 83ENDPROC 84 85DEFPROCen_pause(t%) 86IFtime%+t%<TIME ENDPROC 87REPEAT:UNTILtime%+t%<TIME 88ENDPROC 89 90DEFPROCpause(t%) 91time%=TIME 92REPEAT:UNTILtime%+t%<TIME 93ENDPROC 94 95DEFPROCrelease 96REPEAT:MOUSEX,Y,Z:UNTILZ=0 97ENDPROC 98 99DEFPROCcachesound(s$,ch%) 100*fx229,1 101SYS &46180,F%,s$,10,ch% TO ,,vioce%,prevo%;fl% 102*fx229,0 103ENDPROC 104 105DEFPROCcachesound2(s$,ch%) 106*fx229,1 107SYS &46180,F%,s$,11,ch% TO ,,vioce%,prevo%;fl% 108*fx229,0 109ENDPROC 110 111DEFFNnosound 112SYS"Sound_ReadControlBlock",1,0 TO ,,sccb% 113sccb%=sccb%>>24 114IFsccb%=0 THEN:=-1 115=0 116 117DEFPROCload_sprites(name$) 118PROCloadunsquash(sprite_area1%,(240*1024),picture1%,name$) 119ENDPROC 120 121DEFPROCload_sprites3(name$,final_area%) 122PROCloadunsquash2(final_area%,(240*1024),picture1%,name$) 123ENDPROC 124 125DEFPROCload_sprites2(name$) 126SYS"OS_SpriteOp",&10A,sprite_area1%,"<TableA$Dir>.Pt1.sprites."+name$ 127ENDPROC 128 129DEFPROCmerge_sprites(name$) 130SYS"OS_SpriteOp",&10B,sa1%,"<TableA$Dir>.Pt1.Sprites."+name$ 131ENDPROC 132 133DEFPROCload_picture(area%,name$) 134load$=STR$~(area%) 135OSCLI "LOAD <TableA$Dir>.Pt1.data."+name$+" "+load$ 136ENDPROC 137 138DEFPROCdelete_sprite(area%,name$) 139SYS"OS_SpriteOp",&119,area%,name$ 140ENDPROC 141 142DEFPROCplot_sprite(x%,y%,xm%,ym%,xd%,yd%,name$) 143!(scale%+0)=xm% 144!(scale%+4)=ym%*(vga%+1) 145!(scale%+8)=xd% 146!(scale%+12)=yd% 147SYS"OS_SpriteOp",&134,sa1%,name$,x%,y%,0,scale%,0 148ENDPROC 149 150DEFPROCplot_sprite_masked(x%,y%,xm%,ym%,xd%,yd%,name$) 151!(scale%+0)=xm% 152!(scale%+4)=ym%*(vga%+1) 153!(scale%+8)=xd% 154!(scale%+12)=yd% 155SYS"OS_SpriteOp",&134,sa1%,name$,x%,y%,8,scale%,0 156ENDPROC 157 158DEFPROCpalette 159VDU19,1,24,136,136,136 160LOCALp%,r%,g%,b% 161RESTORE+5 162FORp%=0TO15 163READr%,g%,b%:COLOURp%,r%,g%,b% 164NEXT 165VDU19,1,24,0,0,0;0; 166IFV%=0 VDU24,0;960;1278;1022;18,0,131,16,26 167ENDPROC 168 169DATA 255,255,255,187,187,187,119,119,119,0,0,0 170DATA 255,255,0,0,50,255,187,187,187,0,153,0 171DATA 224,224,224,164,164,164,0,0,0,255,0,0 172DATA 136,102,0,0,204,0,0,153,0,0,119,0 173 174DEFPROCinitialise_sprite_area 175kay%=1024 176!sprite_area1%=220*kay%:sprite_area1%!8=16:SYS"OS_SpriteOp",&109,sprite_area1% 177!sprite_area2%=70*kay%:sprite_area2%!8=16:SYS"OS_SpriteOp",&109,sprite_area2% 178ENDPROC 179 180DEFPROCinitialise_sprite_area_old 181REM Non moveable sprite addresses used in the game 182sprite_area1%=K%+1024*5 183kay%=1024 184!sprite_area1%=215*kay%:sprite_area1%!8=16:SYS"OS_SpriteOp",&109,sprite_area1% 185!sprite_area2%=80*kay%:sprite_area2%!8=16:SYS"OS_SpriteOp",&109,sprite_area2% 186ENDPROC 187 188DEFPROCstats 189 SYS"OS_SpriteOp",&108,sprite_area1% TO r0,r1,r2,r3,r4,r5 190 *FX112,1 191 *FX113,1 192 VDU26 193 PRINT TAB(0,0); 194 PRINT "size ";r2 195 PRINT "number ";r3 196 PRINT "first ";r4 197 PRINT "last ";r5 198STOP 199 200DEFPROCtscore(xx%,yy%) 201 IFtotal_got%<0:total_got%=0 202 T%=T%+total_got%:I%=I%+total_possible% 203 t$=STR$(T%) 204 IF LEN(t$)=2 t$="d"+t$ 205 IF LEN(t$)=1 t$="dd"+t$ 206 g$=STR$(I%) 207 IF LEN(g$)=2 g$=" "+g$ 208 IF LEN(g$)=1 g$=" "+g$ 209 i$=STR$(total_got%) 210 IF LEN(i$)=1 i$="d"+i$ 211 p$=STR$(total_possible%) 212 IF LEN(p$)=2 p$=" "+p$ 213 IF LEN(p$)=1 p$=" "+p$ 214 !(scale%+0)=1 215 !(scale%+4)=1 216 !(scale%+8)=1 217 !(scale%+12)=1 218PROCcachesound("fire!",1) 219 SYS"OS_SpriteOp",&13C,sa1%,"res2",0 220 pn%=1:x%=138:y%=68 221 FORpn%=1 TO LEN(t$) 222 SYS"OS_SpriteOp",&134,sa1%,MID$(t$,pn%,1),(x%-36)+(pn%*36),y%,0,scale%,0 223 NEXT 224 pn%=1:x%=138+38:y%=204 225 FORpn%=1 TO LEN(i$) 226 SYS"OS_SpriteOp",&134,sa1%,MID$(i$,pn%,1),(x%-36)+(pn%*36),y%,0,scale%,0 227 NEXT 228 GCOL0,3 229 IF POINT(138,20)=3:GCOL0,0 230 VDU5:MOVE 110,16+24:PRINT;g$ 231 VDU5:MOVE 110,152+24:PRINT;p$ 232 SYS"OS_SpriteOp",&13C,sa1%,0,1 233 IFV%=1 VDU 23,17,7,6,8;16;0; 234 VDU24,xx%-80;yy%-8;xx%+4;yy%+300; 235 FORpn%=xx% TO xx%-10 STEP -2 236 PROCst_pause 237 PROCplot_sprite_masked(pn%,yy%-8,1,1,1,1,"res1") 238 PROCen_pause(10) 239 NEXT 240 VDU24,xx%;yy%;xx%+300;yy%+290; 241 SOUND 1,&17F,1,1 242 FORpn%=xx%-272 TO xx% STEP 8 243 PROCst_pause 244 PROCplot_sprite(pn%,yy%,1,1,1,1,"res2") 245 PROCen_pause(5) 246 NEXT 247 PROCcachesound("clang2",1) 248 SOUND 1,&17F,1,1 249 VDU26 250ENDPROC 251 252DEFPROCpull_variables 253sprite_area1%=K% :REM 220k 254sprite_area2%=K%+1024*220 :REM 70k 255picture1%=K%+1024*290 :REM 45k 256picture2%=K%+1024*335 :REM 45k 257m_code1%=K%+1024*380 :REM 5k 258m_code2%=K%+1024*385 :REM 4k 259num_store%=K%+1024*389 :REM 1k 260REM PAGE=K%+390K 261IF vga%=1 :VDU 23,17,7,2,8;16;0;0; 262A%=TIME:FORB%=0TO20000:NEXT:sp%=TIME-A% 263IFsp%<5 zz%=2 :REM Arm6 264IFsp%>4 AND sp%<7 zz%=3 :REM Arm3 265IFsp%>4 AND sp%<7 AND V%=1 zz%=4 :REM Arm3 +VGA 266IFsp%>8 zz%=4 :REM Arm2 267ENDPROC 268 269DEFPROCpull_gen_code_var 270C%=m_code1% 271dump_sprite%=!(C%) 272move_block%=!(C%+4) 273screen_offsets%=!(C%+8) 274effect_start%=!(C%+12) 275save_screen%=!(C%+16) 276IFV%=1 save_screen%=!(C%+28) 277dump_sprite2%=!(C%) 278mscreen_one%=!(C%+20) 279mscreen_two%=!(C%+24) 280!(mscreen_one%+0)=screen_one% 281!(mscreen_two%+0)=screen_two% 282ENDPROC 283 284DEFPROCfind_screens 285*fx112,2 286screen_two%=FNfind_screen(148) 287*fx112,1 288screen_one%=FNfind_screen(148) 289ENDPROC 290 291DEFFNfind_screen(scr%) 292!input%=scr% :REM 148 OR 149 293!(input%+4)=-1 294SYS "OS_ReadVduVariables",input%,output% 295=!output% 296 297DEFFNreadsysvar(a$) 298SYS "OS_ReadVarVal",a$,blk%,256,0,0 TO ,,a%:a$="":FORA%=0TOa%-1:a$+=CHR$(blk%?A%):NEXT 299=a$ 300 301DEFFNreadstring(p%) 302LOCALa$:a$="":WHILE LENa$<255 AND ?p%>31 a$+=CHR$?p%:p%+=1:ENDWHILE 303=a$ 304 305DEFPROCfade(x%,y%,size%,col_st%,cycle%,offsets%) 306LOCAL F%,G% 307sfff%=F% 308sggg%=G% 309REM A%=width in pixels B%=height in pixels 310SYS"OS_SpriteOp",&128,sprite_area1%,fade$ TO r0,r1,r2,A%,B%,r5,r6 311A%=A%/2 312REM C%= screen start offset 313IFV%=0 C%=(x%/4)+(((1024-y%)/4)*320) 314IFV%=1 C%=(x%/4)+(((960-y%)/4)*320) 315REM IFV%=1 C%=(x%/4)+(((960-y%)/4)*320) 316REM D% block x E% block y 317D%=size%:E%=size%+(vga%*4) 318REM F% =sprite data start 319SYS"OS_SpriteOp",&118,sprite_area1%,fade$ TO r0,r1,add% 320F%=add%+!(add%+32) 321G%=picture2% 322IFoffsets%=1 CALL screen_offsets% 323A%=46 :REM total cycles 324B%=col_st% :REM next colour 325C%=cycle% :REM next cycle before colour starting 326D%=8:E%=4*(V%+1) :REM size 327IF zz%=1 F%=30000 :REM pause 328IF zz%=2 F%=25000 :REM pause 329IF zz%=3 F%=15000 :REM pause 330IF zz%=4 F%=2000 :REM pause 331G%=picture2% :REM Give code work space to store addresses 332CALL effect_start% 333F%=sfff% 334G%=sggg% 335ENDPROC 336 337DEFPROCchain(file$) 338IFfile$="Pt0.link":dname$="Zero":path$="$.!Tables."+file$ 339IFfile$="Pt1.link":dname$="One":path$="$.!Tables."+file$ 340IFfile$="Pt2.link":dname$="Two":path$="$.!Tables."+file$ 341IFfile$="Pt3.link":dname$="Three":path$="$.!Tables."+file$ 342IFY%=0 THEN 343 err%=0 344 test%=0:REPEAT:PROCfloppy_disk(dname$,path$,"$.!Tables") 345 IFerr%=17 error 346 UNTILerror%=0 347ENDIF 348file$="<TableA$dir>."+file$ 349CHAINfile$ 350STOP 351 352DEFPROCfloppy_disk(dname$,path$,set$) 353SYS "OS_SpriteOp",&110,sprite_area1%,"loadsc",0,400,436,880,636 354LOCALERROR 355ONERRORLOCAL:err%=ERR:RESTORE ERROR:SYS "OS_SpriteOp",&134,sprite_area1%,"loadsc",400,436,0:SYS "OS_SpriteOp",&119,sprite_area1%,"loadsc":error%=1:test%=1:ENDPROC 356REPEAT 357 error%=0 358 IFtest%=1 THEN 359 VDU24,400;436;880;636;18,0,131,16,24,404;440;876;632;18,0,128,16,26 360 MOUSEON 361 PROCpri(430,572,"Please place") 362 PROCpri(430,518,"disk "+dname$) 363 okx%=760:oky%=456 364 GCOL0,3:VDU25,4,okx%;oky%;25,1,100;0;25,1,0;56;25,1,-100;0;25,1,0;-56; 365 GCOL0,0:VDU25,4,okx%+2;oky%+4;25,97,96;48; 366 PROCpri(430,464,"in drive 0 OK") 367 MOUSEON 368 REPEAT:MOUSEmx%,my%,mc%:UNTILmc%=4 AND mx%>okx% AND mx%<okx%+100 AND my%>oky% AND my%<oky%+58 369 ENDIF 370 *ADFS 371 *MOUNT 0 372 IFdname$="Zero":dlabelname$="Zero" 373 IFdname$="One":dlabelname$="One" 374 IFdname$="Two":dlabelname$="Two" 375 IFdname$="Three":dlabelname$="Three" 376 SYS"OS_GBPB",5,,input_disk_name% 377 len_d_n%=?input_disk_name%:name$="" 378 FORdn%=1TOlen_d_n% 379 IF?(input_disk_name%+dn%)>31:name$=name$+CHR$(?(input_disk_name%+dn%)) 380 NEXT 381 SYS "OS_SpriteOp",&122,sprite_area1%,"loadsc",400,436,0 382 IFname$<>dlabelname$:error%=1 383 test%=1 384 OSCLI"SET TableA$dir "+set$ 385 SYS "XOS_Find",&40,path$ TO h% 386UNTILh%AND(error%=0):CLOSE#h% 387SYS "OS_SpriteOp",&122,sprite_area1%,"loadsc",400,436,0 388SYS "OS_SpriteOp",&119,sprite_area1%,"loadsc" 389RESTORE ERROR 390ENDPROC 391 392DEFPROCscreen_save(diskret%) 393PROCpause(50) 394VDU26 395IFY%=0 THEN 396 PROCfloppy_screen_save 397 IFerror%=1 THEN 398 SYS "OS_SpriteOp",&110,sprite_area1%,"loadsc",0,400,436,880,636 399 VDU24,400;436;880;636;18,0,131,16,24,404;440;876;632;18,0,128,16,26 400 MOUSEON 401 PROCpri(430,572,"Error.") 402 PROCpri(430,518,"Screen NOT saved.") 403 PROCpause(200) 404 SYS "OS_SpriteOp",&122,sprite_area1%,"loadsc",400,436,0 405 SYS "OS_SpriteOp",&119,sprite_area1%,"loadsc" 406 ENDIF 407 test%=0:ret$="":REPEAT:PROCfloppy_screen_return(diskret%):UNTILerror%=0 408ENDIF 409IFY%=1:PROChard_screen_save 410PROCpause(50) 411*fx15 412ENDPROC 413 414DEFPROCprinter 415LOCAL F%,G% 416sfff%=F% 417sggg%=G% 418VDU26 419ORIGIN0,0:SYS"XOS_SpriteOp",&119,sprite_area1%,"blank" 420!(scale%+0)=1 421!(scale%+4)=1 422!(scale%+8)=1 423!(scale%+12)=1 424LOCALF%,E% 425F%=OPENOUT("printer:") 426SYS"Hourglass_On" 427LOCAL ERROR 428ONERRORLOCAL:RESTORE ERROR:CLOSE#F%:OSCLI"FX229,0":F%=sfff%:G%=sggg%:SYS"Hourglass_Off":ENDPROC 429REMONERRORLOCAL:RESTORE ERROR:CLOSE#F%:OSCLI"FX229,0":SYS"OS_Byte",250,0,255 TO ,scr%:SYS"OS_Byte",113,scr%:PRINT REPORT$+" (Internal error code "+STR$ERL+")"+CHR$0:PROCwait(500):PROCdesk_top 430SYS"PDriver_SelectJob",F%,0,0 431LOCAL ERROR 432ONERRORLOCAL:RESTORE ERROR:SYS"PDriver_AbortJob",F%:SYS"PDriver_SelectJob",E%:CLOSE#F%:OSCLI"FX229,0":F%=sfff%:G%=sggg%:SYS"Hourglass_Off":ENDPROC 433REMONERRORLOCAL:RESTORE ERROR:SYS"PDriver_AbortJob",F%:SYS"PDriver_SelectJob",E%:CLOSE#F%:OSCLI"FX229,0":SYS"OS_Byte",250,0,255 TO ,scr%:SYS"OS_Byte",113,scr%:PRINT REPORT$+" (Internal error code "+STR$ERL+")"+CHR$0:PROCwait(500):PROCdesk_top 434!(pdrect%+0)=0:!(pdrect%+4)=0:!(pdrect%+8)=1280:!(pdrect%+12)=960 435!(pdtrans%+0)=1<<16:!(pdtrans%+4)=0:!(pdtrans%+8)=0:!(pdtrans%+12)=1<<16 436REM!(pdplot%+0)=128<<8:!(pdplot%+4)=512<<8 437!(pdplot%+0)=128<<8 438SYS"PDriver_PageSize" TO r0,r1,r2,r3,r4,r5,r6 439SYS"PDriver_SetPageSize",,r1,r2,r3,0,r5,r6 440!(pdplot%+4)=r6-400000:IF(pdplot%!4)<(512<<8):pdplot%!4=512<<8 441SYS"PDriver_GiveRectangle",0,pdrect%,pdtrans%,pdplot%,&FFFFFF00 442SYS "OS_SpriteOp",&13C,0,0,1:SYS"ColourTrans_InvalidateCache" 443SYS"PDriver_DrawPage",1,pdrect2%,0,0 TO copiesleft% 444WHILE copiesleft%<>0 445PROCpd_plot_screen 446SYS"PDriver_GetRectangle",,pdrect2% TO copiesleft% 447ENDWHILE 448SYS"PDriver_EndJob",F% 449RESTORE ERROR 450RESTORE ERROR 451CLOSE#F% 452REMSYS"OS_SpriteOp",&10F,sprite_area%,"blank",0,384,192,12 453*FX229,0 454F%=sfff% 455G%=sggg% 456SYS"Hourglass_Off" 457ENDPROC 458 459DEFPROCpd_plot_screen 460LOCALy%,p%,i%,f%,t% 461*FX229,1 462FORy%=0TO960-24STEP24 463SYS"PDriver_SelectJob",0,0,0 464SYS"OS_SpriteOp",&110,sprite_area1%,"blank",1,0,y%,1279,y%+24 TO r0%,r1%,r2% 465!(scale%+0)=1:!(scale%+4)=1:!(scale%+8)=1:!(scale%+12)=1 466SYS"PDriver_SelectJob",F%,0,0 467f%=(r2%+44):t%=paltab%:FORi%=0TO15:!t%=!f%:t%+=4:f%+=8:NEXT 468SYS"ColourTrans_SelectTable",12,paltab%,-1,-1,ctrans% 469SYS "OS_SpriteOp",&234,sprite_area1%,r2%,0,y%,0,scale%,ctrans% 470NEXT 471ENDPROC 472 473DEFFNscreen_number 474REM TableA$save set to directory to save to 475sc%=0 476REPEAT 477sc%=sc%+1:sc$=STR$(sc%) 478SYS"XOS_Find",&40,"<TableA$save>.screen"+sc$ TO h% 479REMIFh%=-1:CLOSE#h% 480IFh%<>0:CLOSE#h% 481UNTILh%=0 482=sc% 483 484DEFPROCfloppy_screen_save 485SYS "OS_SpriteOp",&110,sprite_area1%,"loadsc",0,400,436,880,636 486error%=0 487LOCALERROR 488ONERRORLOCAL:RESTORE ERROR:error%=1:SYS "OS_SpriteOp",&122,sprite_area1%,"loadsc",400,436,0:SYS "OS_SpriteOp",&119,sprite_area1%,"loadsc":ENDPROC 489REMREPEAT 490REMPROCclear_load_text 491 VDU24,400;436;880;636;18,0,131,16,24,404;440;876;632;18,0,128,16,26 492 MOUSEON 493 PROCpri(430,572,"Please place") 494 PROCpri(430,518,"SAVE SCREEN") 495 okx%=760:oky%=456 496 GCOL0,3:VDU25,4,okx%;oky%;25,1,100;0;25,1,0;56;25,1,-100;0;25,1,0;-56; 497 GCOL0,0:VDU25,4,okx%+2;oky%+4;25,97,96;48; 498 PROCpri(430,464,"disk in drive 0 OK") 499 MOUSEON 500REPEAT:MOUSEmx%,my%,mc%:UNTIL(mc%=4)AND(mx%>okx%)AND(mx%<okx%+100)AND(my%>oky%)AND(my%<oky%+58) 501*ADFS 502*MOUNT 0 503SYS"OS_GBPB",5,,input_disk_name% 504len_d_n%=?input_disk_name%:name$="" 505FORdn%=1TOlen_d_n% 506IF?(input_disk_name%+dn%)>31:name$=name$+CHR$(?(input_disk_name%+dn%)) 507NEXT 508SYS "OS_SpriteOp",&122,sprite_area1%,"loadsc",400,436,0 509IF(name$="Zero")OR(name$="One")OR(name$="Two")OR(name$="Three"):error%=1:ERROR 510OSCLI"SET TableA$Save $" 511screen_number%=FNscreen_number 512sc$=STR$(screen_number%) 513OSCLI"SCREENSAVE <TableA$save>.Screen"+sc$ 514SYS "OS_SpriteOp",&119,sprite_area1%,"loadsc" 515ENDPROC 516 517DEFPROCfloppy_screen_return(di%) 518SYS "OS_SpriteOp",&110,sprite_area1%,"loadsc",0,400,436,880,636 519error%=0 520LOCALERROR 521ONERRORLOCAL:RESTOREERROR:SYS "OS_SpriteOp",&134,sprite_area1%,"loadsc",400,436,0:SYS "OS_SpriteOp",&119,sprite_area1%,"loadsc":error%=1:test%=1:ENDPROC 522REPEAT 523 error%=0 524 IFtest%=1 THEN 525 VDU24,400;436;880;636;18,0,131,16,24,404;440;876;632;18,0,128,16,26 526 MOUSEON 527 PROCpri(430,572,"Please place") 528 IFdi%=0:PROCpri(430,518,"disk Zero"):ret$="Zero" 529 IFdi%=1:PROCpri(430,518,"disk One"):ret$="One" 530 IFdi%=2:PROCpri(430,518,"disk Two"):ret$="Two" 531 IFdi%=3:PROCpri(430,518,"disk Three"):ret$="Three" 532 okx%=760:oky%=456 533 GCOL0,3:VDU25,4,okx%;oky%;25,1,100;0;25,1,0;56;25,1,-100;0;25,1,0;-56; 534 GCOL0,0:VDU25,4,okx%+2;oky%+4;25,97,96;48; 535 PROCpri(430,464,"in drive 0 OK") 536 MOUSEON 537 REPEAT:MOUSEmx%,my%,mc%:UNTILmc%=4 AND mx%>okx% AND mx%<okx%+100 AND my%>oky% AND my%<oky%+58 538 ENDIF 539 *ADFS 540 *MOUNT 0 541 SYS"OS_GBPB",5,,input_disk_name% 542 len_d_n%=?input_disk_name%:name$="" 543 FORdn%=1TOlen_d_n% 544 IF?(input_disk_name%+dn%)>31:name$=name$+CHR$(?(input_disk_name%+dn%)) 545 NEXT 546 test%=1 547UNTIL name$=ret$ 548SYS "OS_SpriteOp",&122,sprite_area1%,"loadsc",400,436,0 549SYS "OS_SpriteOp",&119,sprite_area1%,"loadsc" 550ENDPROC 551 552DEFPROChard_screen_save 553LOCALERROR 554ONERRORLOCAL:RESTOREERROR:ENDPROC 555screen_number%=FNscreen_number 556sc$=STR$(screen_number%) 557OSCLI"SCREENSAVE <TableA$save>.Screen"+sc$ 558RESTOREERROR 559ENDPROC 560 561DEFPROCdt 562*channelvoice 1 1 563*channelvoice 2 2 564SYS"OS_RestoreCursors" 565CLEAR:DIMbuf% 4:FORi%=1TO16:WAIT:FORc%=0TO16:IFc%<16v%=16 ELSE v%=24 566SYS"OS_ReadPalette",c%,v% TO ,,d%:!buf%=d%:FORb%=1TO3:IFbuf%?b%>0buf%?b%-=16:NEXT:ELSE:NEXT 567VDU19,c%,v%,buf%?1,buf%?2,buf%?3:NEXT, 568*FX15 569a=INKEY(50):IFa=10 ENDPROC 570*FX15 571*FX225,1 572*FX229,0 573*FX220,27 574*KEY0 PAGE=&8F00|MOLD|MRUN|M 575*FX138,0,128 576*BASIC 5771STOP 578 579DEFPROCdummy 580REM 'cos Adam says you need this bit 581ENDPROC 582 583
4�ADFS::HardDisc4.$.CURR_NEW.!Tables.Pt1.Library ?� Below this line the programs will reside in library form. ?� ********************************************************* ?� ********************************************************* 2��loadunsquash(area%,areasiz%,sqfile%,sqfile$) area%=sprite_area1% areasiz%=160*1024 sqfile%=sprite_area2% sqbuffer%=picture2% ;�"LOAD <TableA$Dir>.pt1.sprites."+sqfile$+" "+�~sqfile% Kș "OS_File",5,"<TableA$Dir>.pt1.sprites."+sqfile$ � ,,,,filelen%,type% 1� ?(sqfile%)<>�("S") � ?(sqfile%+1)<>�("Q"):� B�unsquash(sqfile%+20,filelen%-20,sqbuffer%,area%+4,areasiz%-4) � 9��loadunsquash2(final_area%,areasiz%,sqfile%,sqfile$) area%=final_area% areasiz%=160*1024 sqfile%=sprite_area2% sqbuffer%=picture2% 3�"LOAD <TableA$Dir>.pt1."+sqfile$+" "+�~sqfile% =ș "OS_File",5,"<TableA$Dir>.pt1."+sqfile$ � ,,,,filelen% 1� ?(sqfile%)<>�("S") � ?(sqfile%+1)<>�("Q"):� @�unsquash(sqfile%+20,filelen%-20,sqbuffer%,area%,areasiz%-4) � 5��unsquash(inptr%,insiz%,bufptr%,outptr%,outsiz%) Jș"Squash_Decompress",%100,bufptr%,inptr%,insiz%,outptr%,outsiz% � r0% � ��check_mouse(t_out%) !t%=� " � # ȗ mx%,my%,mz% $ ma%=�(1) % �ma%=16:�printer & �ma%=19:�screen_save(1) ' �ma%=13:mz%=8 (# � mz%=4 � t%+t_out%<� � mz%=8 )� * + ��space(sx%,sy%,an_num%,pa%) ,�pause(pa%) -*fx21,9 . *fx15 /Eș"OS_SpriteOp",&110,sprite_area1%,"space1",0,sx%,sy%,1280,sy%+68 0Eș"OS_SpriteOp",&110,sprite_area1%,"space2",0,sx%,sy%,1280,sy%+68 1alter%=1:an_t%=� 2�pause(10):sound_t%=� 3�:ȗmx%,my%,mc%:�mc%=0 4�msxf%=1�10:ȗmx%,my%,mc%:� 52�plot_sprite_masked(sx%,sy%,1,1,1,1,"scraft1") 6ȗ� 7cn%=1:am%=50 8� 9 �check_mouse(am%):am%=25 :P �mz%<>4:cn%=(cn%-1)*-1:�plot_sprite_masked(sx%,sy%,1,1,1,1,"scraft"+�(cn%)) ;) �an_num%=1 � �nosound=�:� 1,&17F,1,1 <D� (mz%=4 � mx%>sx% � my%>sy% � mx%<sx%+200 � my%<sy%+68) � mz%=8 =<!(scale%+0)=1:!(scale%+4)=1:!(scale%+8)=1:!(scale%+12)=1 >flame%=2 ?msxf%=0:sinc%=0:co%=0 @� A �st_pause B* ș"OS_SpriteOp",&13C,sa1%,"space2",0 C9 ș"OS_SpriteOp",&134,sa1%,"space1",0,0,0,scale%,0 D? �plot_sprite_masked(msxf%,0,1,1,1,1,"scraft"+�(flame%)) E# ș"OS_SpriteOp",&13C,sa1%,0,1 F �V%=1 � 23,17,7,6,8;16;0; G> !(scale%+0)=1:!(scale%+4)=1:!(scale%+8)=1:!(scale%+12)=1 H; ș"OS_SpriteOp",&134,sa1%,"space2",sx%,sy%,0,scale%,0 I( flame%=flame%+1:�flame%=8:flame%=2 J! msxf%=msxf%+sinc%:co%=co%+1 K �co%>6 sinc%=sinc%+16 L �en_pause(10) M� msxf%+sx%>1280 N9ș"OS_SpriteOp",&134,sa1%,"space1",sx%,sy%,0,scale%,0 O� P Q��st_pause Rtime%=� S� T U��en_pause(t%) V�time%+t%<� � W�:�time%+t%<� X� Y Z��pause(t%) [time%=� \�:�time%+t%<� ]� ^ _ ��release `�:ȗX,Y,Z:�Z=0 a� b c��cachesound(s$,ch%) d*fx229,1 e0ș &46180,F%,s$,10,ch% � ,,vioce%,prevo%;fl% f*fx229,0 g� h i��cachesound2(s$,ch%) j*fx229,1 k0ș &46180,F%,s$,11,ch% � ,,vioce%,prevo%;fl% l*fx229,0 m� n o ݤnosound p,ș"Sound_ReadControlBlock",1,0 � ,,sccb% qsccb%=sccb%>>24 r�sccb%=0 �:=-1 s=0 t u��load_sprites(name$) v;�loadunsquash(sprite_area1%,(240*1024),picture1%,name$) w� x y&��load_sprites3(name$,final_area%) z:�loadunsquash2(final_area%,(240*1024),picture1%,name$) {� | }��load_sprites2(name$) ~Hș"OS_SpriteOp",&10A,sprite_area1%,"<TableA$Dir>.Pt1.sprites."+name$ � � ���merge_sprites(name$) �?ș"OS_SpriteOp",&10B,sa1%,"<TableA$Dir>.Pt1.Sprites."+name$ �� � ���load_picture(area%,name$) �load$=�~(area%) �3� "LOAD <TableA$Dir>.Pt1.data."+name$+" "+load$ �� � � ��delete_sprite(area%,name$) �$ș"OS_SpriteOp",&119,area%,name$ �� � �.��plot_sprite(x%,y%,xm%,ym%,xd%,yd%,name$) �!(scale%+0)=xm% �!(scale%+4)=ym%*(vga%+1) �!(scale%+8)=xd% �!(scale%+12)=yd% �4ș"OS_SpriteOp",&134,sa1%,name$,x%,y%,0,scale%,0 �� � �5��plot_sprite_masked(x%,y%,xm%,ym%,xd%,yd%,name$) �!(scale%+0)=xm% �!(scale%+4)=ym%*(vga%+1) �!(scale%+8)=xd% �!(scale%+12)=yd% �4ș"OS_SpriteOp",&134,sa1%,name$,x%,y%,8,scale%,0 �� � � ��palette ��19,1,24,136,136,136 ��p%,r%,g%,b% ��+5 ��p%=0�15 ��r%,g%,b%:�p%,r%,g%,b% �� ��19,1,24,0,0,0;0; �,�V%=0 �24,0;960;1278;1022;18,0,131,16,26 �� � �/� 255,255,255,187,187,187,119,119,119,0,0,0 �,� 255,255,0,0,50,255,187,187,187,0,153,0 �+� 224,224,224,164,164,164,0,0,0,255,0,0 �'� 136,102,0,0,204,0,0,153,0,0,119,0 � ���initialise_sprite_area � kay%=1024 �Q!sprite_area1%=220*kay%:sprite_area1%!8=16:ș"OS_SpriteOp",&109,sprite_area1% �P!sprite_area2%=70*kay%:sprite_area2%!8=16:ș"OS_SpriteOp",&109,sprite_area2% �� � � ��initialise_sprite_area_old �4� Non moveable sprite addresses used in the game �sprite_area1%=K%+1024*5 � kay%=1024 �Q!sprite_area1%=215*kay%:sprite_area1%!8=16:ș"OS_SpriteOp",&109,sprite_area1% �P!sprite_area2%=80*kay%:sprite_area2%!8=16:ș"OS_SpriteOp",&109,sprite_area2% �� � ���stats �; ș"OS_SpriteOp",&108,sprite_area1% � r0,r1,r2,r3,r4,r5 � *FX112,1 � *FX113,1 � �26 � � �0,0); � � "size ";r2 � � "number ";r3 � � "first ";r4 � � "last ";r5 �� � ���tscore(xx%,yy%) � �total_got%<0:total_got%=0 �, T%=T%+total_got%:I%=I%+total_possible% � t$=�(T%) � � �(t$)=2 t$="d"+t$ � � �(t$)=1 t$="dd"+t$ � g$=�(I%) � � �(g$)=2 g$=" "+g$ � � �(g$)=1 g$=" "+g$ � i$=�(total_got%) � � �(i$)=1 i$="d"+i$ � p$=�(total_possible%) � � �(p$)=2 p$=" "+p$ � � �(p$)=1 p$=" "+p$ � !(scale%+0)=1 � !(scale%+4)=1 � !(scale%+8)=1 � !(scale%+12)=1 ��cachesound("fire!",1) �( ș"OS_SpriteOp",&13C,sa1%,"res2",0 � pn%=1:x%=138:y%=68 � �pn%=1 � �(t$) �L ș"OS_SpriteOp",&134,sa1%,�t$,pn%,1),(x%-36)+(pn%*36),y%,0,scale%,0 � � � pn%=1:x%=138+38:y%=204 � �pn%=1 � �(i$) �L ș"OS_SpriteOp",&134,sa1%,�i$,pn%,1),(x%-36)+(pn%*36),y%,0,scale%,0 � � � �0,3 � � �138,20)=3:�0,0 � �5:� 110,16+24:�;g$ � �5:� 110,152+24:�;p$ �# ș"OS_SpriteOp",&13C,sa1%,0,1 � �V%=1 � 23,17,7,6,8;16;0; �% �24,xx%-80;yy%-8;xx%+4;yy%+300; � �pn%=xx% � xx%-10 � -2 � �st_pause �9 �plot_sprite_masked(pn%,yy%-8,1,1,1,1,"res1") � �en_pause(10) � � �" �24,xx%;yy%;xx%+300;yy%+290; � � 1,&17F,1,1 � �pn%=xx%-272 � xx% � 8 � �st_pause �. �plot_sprite(pn%,yy%,1,1,1,1,"res2") � �en_pause(5) � � � �cachesound("clang2",1) � � 1,&17F,1,1 � �26 �� � ���pull_variables �6sprite_area1%=K% :� 220k �5sprite_area2%=K%+1024*220 :� 70k �5picture1%=K%+1024*290 :� 45k 5picture2%=K%+1024*335 :� 45k 4m_code1%=K%+1024*380 :� 5k 4m_code2%=K%+1024*385 :� 4k 4num_store%=K%+1024*389 :� 1k � PAGE=K%+390K #� vga%=1 :� 23,17,7,2,8;16;0;0; A%=�:�B%=0�20000:�:sp%=�-A% 5�sp%<5 zz%=2 :� Arm6 3�sp%>4 � sp%<7 zz%=3 :� Arm3 6�sp%>4 � sp%<7 � V%=1 zz%=4 :� Arm3 +VGA 5�sp%>8 zz%=4 :� Arm2 � ��pull_gen_code_var C%=m_code1% dump_sprite%=!(C%) move_block%=!(C%+4) screen_offsets%=!(C%+8) effect_start%=!(C%+12) save_screen%=!(C%+16) �V%=1 save_screen%=!(C%+28) dump_sprite2%=!(C%) mscreen_one%=!(C%+20) mscreen_two%=!(C%+24) !!(mscreen_one%+0)=screen_one% !!(mscreen_two%+0)=screen_two% � ��find_screens *fx112,2 !screen_two%=�find_screen(148) *fx112,1 !screen_one%=�find_screen(148) !� " #ݤfind_screen(scr%) $*!input%=scr% :� 148 OR 149 %!(input%+4)=-1 &+ș "OS_ReadVduVariables",input%,output% ' =!output% ( )ݤreadsysvar(a$) *Oș "OS_ReadVarVal",a$,blk%,256,0,0 � ,,a%:a$="":�A%=0�a%-1:a$+=�(blk%?A%):� +=a$ , -ݤreadstring(p%) .2�a$:a$="":ȕ �a$<255 � ?p%>31 a$+=�?p%:p%+=1:� /=a$ 0 1/��fade(x%,y%,size%,col_st%,cycle%,offsets%) 2� F%,G% 3sfff%=F% 4sggg%=G% 5,� A%=width in pixels B%=height in pixels 6Cș"OS_SpriteOp",&128,sprite_area1%,fade$ � r0,r1,r2,A%,B%,r5,r6 7A%=A%/2 8� C%= screen start offset 9'�V%=0 C%=(x%/4)+(((1024-y%)/4)*320) :&�V%=1 C%=(x%/4)+(((960-y%)/4)*320) ;)� IFV%=1 C%=(x%/4)+(((960-y%)/4)*320) < � D% block x E% block y =D%=size%:E%=size%+(vga%*4) >� F% =sprite data start ?9ș"OS_SpriteOp",&118,sprite_area1%,fade$ � r0,r1,add% @F%=add%+!(add%+32) AG%=picture2% B!�offsets%=1 � screen_offsets% C&A%=46 :� total cycles D%B%=col_st% :� next colour E;C%=cycle% :� next cycle before colour starting FD%=8:E%=4*(V%+1) :� size G� zz%=1 F%=30000 :� pause H� zz%=2 F%=25000 :� pause I� zz%=3 F%=15000 :� pause J� zz%=4 F%=2000 :� pause K;G%=picture2% :� Give code work space to store addresses L� effect_start% MF%=sfff% NG%=sggg% O� P Q��chain(file$) R<�file$="Pt0.link":dname$="Zero":path$="$.!Tables."+file$ S;�file$="Pt1.link":dname$="One":path$="$.!Tables."+file$ T;�file$="Pt2.link":dname$="Two":path$="$.!Tables."+file$ U=�file$="Pt3.link":dname$="Three":path$="$.!Tables."+file$ V�Y%=0 � W err%=0 X6 test%=0:�:�floppy_disk(dname$,path$,"$.!Tables") Y �err%=17 error Z �error%=0 [� \file$="<TableA$dir>."+file$ ] �file$ ^� _ `$��floppy_disk(dname$,path$,set$) aBș "OS_SpriteOp",&110,sprite_area1%,"loadsc",0,400,436,880,636 b� c���:err%=�:� �:ș "OS_SpriteOp",&134,sprite_area1%,"loadsc",400,436,0:ș "OS_SpriteOp",&119,sprite_area1%,"loadsc":error%=1:test%=1:� d� e error%=0 f �test%=1 � gH �24,400;436;880;636;18,0,131,16,24,404;440;876;632;18,0,128,16,26 h ȗ� i# �pri(430,572,"Please place") j# �pri(430,518,"disk "+dname$) k okx%=760:oky%=456 lH �0,3:�25,4,okx%;oky%;25,1,100;0;25,1,0;56;25,1,-100;0;25,1,0;-56; m, �0,0:�25,4,okx%+2;oky%+4;25,97,96;48; n/ �pri(430,464,"in drive 0 OK") o ȗ� pP �:ȗmx%,my%,mc%:�mc%=4 � mx%>okx% � mx%<okx%+100 � my%>oky% � my%<oky%+58 q � r *ADFS s *MOUNT 0 t' �dname$="Zero":dlabelname$="Zero" u% �dname$="One":dlabelname$="One" v% �dname$="Two":dlabelname$="Two" w) �dname$="Three":dlabelname$="Three" x% ș"OS_GBPB",5,,input_disk_name% y) len_d_n%=?input_disk_name%:name$="" z �dn%=1�len_d_n% {H �?(input_disk_name%+dn%)>31:name$=name$+�(?(input_disk_name%+dn%)) | � }< ș "OS_SpriteOp",&122,sprite_area1%,"loadsc",400,436,0 ~" �name$<>dlabelname$:error%=1 test%=1 � �"SET TableA$dir "+set$ �" ș "XOS_Find",&40,path$ � h% ��h%�(error%=0):�#h% �:ș "OS_SpriteOp",&122,sprite_area1%,"loadsc",400,436,0 �0ș "OS_SpriteOp",&119,sprite_area1%,"loadsc" �� � �� � ���screen_save(diskret%) ��pause(50) ��26 ��Y%=0 � � �floppy_screen_save � �error%=1 � �G ș "OS_SpriteOp",&110,sprite_area1%,"loadsc",0,400,436,880,636 �J �24,400;436;880;636;18,0,131,16,24,404;440;876;632;18,0,128,16,26 � ȗ� � �pri(430,572,"Error.") �* �pri(430,518,"Screen NOT saved.") � �pause(200) �? ș "OS_SpriteOp",&122,sprite_area1%,"loadsc",400,436,0 �5 ș "OS_SpriteOp",&119,sprite_area1%,"loadsc" � � �B test%=0:ret$="":�:�floppy_screen_return(diskret%):�error%=0 �� ��Y%=1:�hard_screen_save ��pause(50) � *fx15 �� � � ��printer �� F%,G% �sfff%=F% �sggg%=G% ��26 �5ȑ0,0:ș"XOS_SpriteOp",&119,sprite_area1%,"blank" �!(scale%+0)=1 �!(scale%+4)=1 �!(scale%+8)=1 �!(scale%+12)=1 � �F%,E% �F%=�("printer:") �ș"Hourglass_On" �� � �A��:� �:�#F%:�"FX229,0":F%=sfff%:G%=sggg%:ș"Hourglass_Off":� ���ONERRORLOCAL:RESTORE ERROR:CLOSE#F%:OSCLI"FX229,0":SYS"OS_Byte",250,0,255 TO ,scr%:SYS"OS_Byte",113,scr%:PRINT REPORT$+" (Internal error code "+STR$ERL+")"+CHR$0:PROCwait(500):PROCdesk_top � ș"PDriver_SelectJob",F%,0,0 �� � �r��:� �:ș"PDriver_AbortJob",F%:ș"PDriver_SelectJob",E%:�#F%:�"FX229,0":F%=sfff%:G%=sggg%:ș"Hourglass_Off":� ���ONERRORLOCAL:RESTORE ERROR:SYS"PDriver_AbortJob",F%:SYS"PDriver_SelectJob",E%:CLOSE#F%:OSCLI"FX229,0":SYS"OS_Byte",250,0,255 TO ,scr%:SYS"OS_Byte",113,scr%:PRINT REPORT$+" (Internal error code "+STR$ERL+")"+CHR$0:PROCwait(500):PROCdesk_top �E!(pdrect%+0)=0:!(pdrect%+4)=0:!(pdrect%+8)=1280:!(pdrect%+12)=960 �L!(pdtrans%+0)=1<<16:!(pdtrans%+4)=0:!(pdtrans%+8)=0:!(pdtrans%+12)=1<<16 �,�!(pdplot%+0)=128<<8:!(pdplot%+4)=512<<8 �!(pdplot%+0)=128<<8 �/ș"PDriver_PageSize" � r0,r1,r2,r3,r4,r5,r6 �-ș"PDriver_SetPageSize",,r1,r2,r3,0,r5,r6 �A!(pdplot%+4)=r6-400000:�(pdplot%!4)<(512<<8):pdplot%!4=512<<8 �Bș"PDriver_GiveRectangle",0,pdrect%,pdtrans%,pdplot%,&FFFFFF00 �?ș "OS_SpriteOp",&13C,0,0,1:ș"ColourTrans_InvalidateCache" �5ș"PDriver_DrawPage",1,pdrect2%,0,0 � copiesleft% �ȕ copiesleft%<>0 ��pd_plot_screen �4ș"PDriver_GetRectangle",,pdrect2% � copiesleft% �� �ș"PDriver_EndJob",F% �� � �� � ��#F% �<�SYS"OS_SpriteOp",&10F,sprite_area%,"blank",0,384,192,12 �*FX229,0 �F%=sfff% �G%=sggg% �ș"Hourglass_Off" �� � ���pd_plot_screen ��y%,p%,i%,f%,t% �*FX229,1 ��y%=0�960-24�24 �ș"PDriver_SelectJob",0,0,0 �Nș"OS_SpriteOp",&110,sprite_area1%,"blank",1,0,y%,1279,y%+24 � r0%,r1%,r2% �<!(scale%+0)=1:!(scale%+4)=1:!(scale%+8)=1:!(scale%+12)=1 � ș"PDriver_SelectJob",F%,0,0 �9f%=(r2%+44):t%=paltab%:�i%=0�15:!t%=!f%:t%+=4:f%+=8:� �8ș"ColourTrans_SelectTable",12,paltab%,-1,-1,ctrans% �Aș "OS_SpriteOp",&234,sprite_area1%,r2%,0,y%,0,scale%,ctrans% �� �� � �ݤscreen_number �-� TableA$save set to directory to save to � sc%=0 �� �sc%=sc%+1:sc$=�(sc%) �4ș"XOS_Find",&40,"<TableA$save>.screen"+sc$ � h% ��IFh%=-1:CLOSE#h% ��h%<>0:�#h% � �h%=0 �=sc% � ���floppy_screen_save �Bș "OS_SpriteOp",&110,sprite_area1%,"loadsc",0,400,436,880,636 �error%=0 �� �z��:� �:error%=1:ș "OS_SpriteOp",&122,sprite_area1%,"loadsc",400,436,0:ș "OS_SpriteOp",&119,sprite_area1%,"loadsc":� ��REPEAT ��PROCclear_load_text �H �24,400;436;880;636;18,0,131,16,24,404;440;876;632;18,0,128,16,26 � ȗ� �# �pri(430,572,"Please place") �" �pri(430,518,"SAVE SCREEN") � okx%=760:oky%=456 �H �0,3:�25,4,okx%;oky%;25,1,100;0;25,1,0;56;25,1,-100;0;25,1,0;-56; �, �0,0:�25,4,okx%+2;oky%+4;25,97,96;48; �, �pri(430,464,"disk in drive 0 OK") � ȗ� �O�:ȗmx%,my%,mc%:�(mc%=4)�(mx%>okx%)�(mx%<okx%+100)�(my%>oky%)�(my%<oky%+58) � *ADFS �*MOUNT 0 �#ș"OS_GBPB",5,,input_disk_name% �'len_d_n%=?input_disk_name%:name$="" ��dn%=1�len_d_n% �F�?(input_disk_name%+dn%)>31:name$=name$+�(?(input_disk_name%+dn%)) �� �:ș "OS_SpriteOp",&122,sprite_area1%,"loadsc",400,436,0 �J�(name$="Zero")�(name$="One")�(name$="Two")�(name$="Three"):error%=1:� ��"SET TableA$Save $" �!screen_number%=�screen_number sc$=�(screen_number%) *�"SCREENSAVE <TableA$save>.Screen"+sc$ 0ș "OS_SpriteOp",&119,sprite_area1%,"loadsc" � ��floppy_screen_return(di%) Bș "OS_SpriteOp",&110,sprite_area1%,"loadsc",0,400,436,880,636 error%=0 � ���:��:ș "OS_SpriteOp",&134,sprite_area1%,"loadsc",400,436,0:ș "OS_SpriteOp",&119,sprite_area1%,"loadsc":error%=1:test%=1:� � error%=0 �test%=1 � H �24,400;436;880;636;18,0,131,16,24,404;440;876;632;18,0,128,16,26 ȗ� # �pri(430,572,"Please place") 3 �di%=0:�pri(430,518,"disk Zero"):ret$="Zero" 1 �di%=1:�pri(430,518,"disk One"):ret$="One" 1 �di%=2:�pri(430,518,"disk Two"):ret$="Two" 5 �di%=3:�pri(430,518,"disk Three"):ret$="Three" okx%=760:oky%=456 H �0,3:�25,4,okx%;oky%;25,1,100;0;25,1,0;56;25,1,-100;0;25,1,0;-56; , �0,0:�25,4,okx%+2;oky%+4;25,97,96;48; / �pri(430,464,"in drive 0 OK") ȗ� P �:ȗmx%,my%,mc%:�mc%=4 � mx%>okx% � mx%<okx%+100 � my%>oky% � my%<oky%+58 � *ADFS *MOUNT 0 $ ș"OS_GBPB",5,,input_disk_name% ( len_d_n%=?input_disk_name%:name$="" �dn%=1�len_d_n% H �?(input_disk_name%+dn%)>31:name$=name$+�(?(input_disk_name%+dn%)) ! � " test%=1 #� name$=ret$ $:ș "OS_SpriteOp",&122,sprite_area1%,"loadsc",400,436,0 %0ș "OS_SpriteOp",&119,sprite_area1%,"loadsc" &� ' (��hard_screen_save )� *��:��:� +!screen_number%=�screen_number ,sc$=�(screen_number%) -*�"SCREENSAVE <TableA$save>.Screen"+sc$ .�� /� 0 1��dt 2*channelvoice 1 1 3*channelvoice 2 2 4ș"OS_RestoreCursors" 56�:�buf% 4:�i%=1�16:Ȗ:�c%=0�16:�c%<16v%=16 � v%=24 6Pș"OS_ReadPalette",c%,v% � ,,d%:!buf%=d%:�b%=1�3:�buf%?b%>0buf%?b%-=16:�:�:� 7%�19,c%,v%,buf%?1,buf%?2,buf%?3:�, 8 *FX15 9a=�(50):�a=10 � : *FX15 ;*FX225,1 <*FX229,0 = *FX220,27 > *KEY0 PAGE=&8F00|MOLD|MRUN|M ?*FX138,0,128 @ *BASIC A1� B C��dummy D&� 'cos Adam says you need this bit E� F G �
00000000 0d 00 00 34 f4 ff 41 44 46 53 3a 3a 48 61 72 64 |...4..ADFS::Hard| 00000010 44 69 73 63 34 2e 24 2e 43 55 52 52 5f 4e 45 57 |Disc4.$.CURR_NEW| 00000020 2e 21 54 61 62 6c 65 73 2e 50 74 31 2e 4c 69 62 |.!Tables.Pt1.Lib| 00000030 72 61 72 79 0d 00 01 04 0d 00 02 3f f4 20 42 65 |rary.......?. Be| 00000040 6c 6f 77 20 74 68 69 73 20 6c 69 6e 65 20 74 68 |low this line th| 00000050 65 20 70 72 6f 67 72 61 6d 73 20 77 69 6c 6c 20 |e programs will | 00000060 72 65 73 69 64 65 20 69 6e 20 6c 69 62 72 61 72 |reside in librar| 00000070 79 20 66 6f 72 6d 2e 0d 00 03 3f f4 20 2a 2a 2a |y form....?. ***| 00000080 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 000000b0 2a 2a 2a 2a 2a 2a 0d 00 04 3f f4 20 2a 2a 2a 2a |******...?. ****| 000000c0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 000000f0 2a 2a 2a 2a 2a 0d 00 05 04 0d 00 06 32 dd f2 6c |*****.......2..l| 00000100 6f 61 64 75 6e 73 71 75 61 73 68 28 61 72 65 61 |oadunsquash(area| 00000110 25 2c 61 72 65 61 73 69 7a 25 2c 73 71 66 69 6c |%,areasiz%,sqfil| 00000120 65 25 2c 73 71 66 69 6c 65 24 29 0d 00 07 17 61 |e%,sqfile$)....a| 00000130 72 65 61 25 3d 73 70 72 69 74 65 5f 61 72 65 61 |rea%=sprite_area| 00000140 31 25 0d 00 08 15 61 72 65 61 73 69 7a 25 3d 31 |1%....areasiz%=1| 00000150 36 30 2a 31 30 32 34 0d 00 09 19 73 71 66 69 6c |60*1024....sqfil| 00000160 65 25 3d 73 70 72 69 74 65 5f 61 72 65 61 32 25 |e%=sprite_area2%| 00000170 0d 00 0a 17 73 71 62 75 66 66 65 72 25 3d 70 69 |....sqbuffer%=pi| 00000180 63 74 75 72 65 32 25 0d 00 0b 3b ff 22 4c 4f 41 |cture2%...;."LOA| 00000190 44 20 3c 54 61 62 6c 65 41 24 44 69 72 3e 2e 70 |D <TableA$Dir>.p| 000001a0 74 31 2e 73 70 72 69 74 65 73 2e 22 2b 73 71 66 |t1.sprites."+sqf| 000001b0 69 6c 65 24 2b 22 20 22 2b c3 7e 73 71 66 69 6c |ile$+" "+.~sqfil| 000001c0 65 25 0d 00 0c 4b c8 99 20 22 4f 53 5f 46 69 6c |e%...K.. "OS_Fil| 000001d0 65 22 2c 35 2c 22 3c 54 61 62 6c 65 41 24 44 69 |e",5,"<TableA$Di| 000001e0 72 3e 2e 70 74 31 2e 73 70 72 69 74 65 73 2e 22 |r>.pt1.sprites."| 000001f0 2b 73 71 66 69 6c 65 24 20 b8 20 2c 2c 2c 2c 66 |+sqfile$ . ,,,,f| 00000200 69 6c 65 6c 65 6e 25 2c 74 79 70 65 25 0d 00 0d |ilelen%,type%...| 00000210 31 e7 20 3f 28 73 71 66 69 6c 65 25 29 3c 3e 97 |1. ?(sqfile%)<>.| 00000220 28 22 53 22 29 20 80 20 3f 28 73 71 66 69 6c 65 |("S") . ?(sqfile| 00000230 25 2b 31 29 3c 3e 97 28 22 51 22 29 3a fa 0d 00 |%+1)<>.("Q"):...| 00000240 0e 42 f2 75 6e 73 71 75 61 73 68 28 73 71 66 69 |.B.unsquash(sqfi| 00000250 6c 65 25 2b 32 30 2c 66 69 6c 65 6c 65 6e 25 2d |le%+20,filelen%-| 00000260 32 30 2c 73 71 62 75 66 66 65 72 25 2c 61 72 65 |20,sqbuffer%,are| 00000270 61 25 2b 34 2c 61 72 65 61 73 69 7a 25 2d 34 29 |a%+4,areasiz%-4)| 00000280 0d 00 0f 05 e1 0d 00 10 04 0d 00 11 39 dd f2 6c |............9..l| 00000290 6f 61 64 75 6e 73 71 75 61 73 68 32 28 66 69 6e |oadunsquash2(fin| 000002a0 61 6c 5f 61 72 65 61 25 2c 61 72 65 61 73 69 7a |al_area%,areasiz| 000002b0 25 2c 73 71 66 69 6c 65 25 2c 73 71 66 69 6c 65 |%,sqfile%,sqfile| 000002c0 24 29 0d 00 12 15 61 72 65 61 25 3d 66 69 6e 61 |$)....area%=fina| 000002d0 6c 5f 61 72 65 61 25 0d 00 13 15 61 72 65 61 73 |l_area%....areas| 000002e0 69 7a 25 3d 31 36 30 2a 31 30 32 34 0d 00 14 19 |iz%=160*1024....| 000002f0 73 71 66 69 6c 65 25 3d 73 70 72 69 74 65 5f 61 |sqfile%=sprite_a| 00000300 72 65 61 32 25 0d 00 15 17 73 71 62 75 66 66 65 |rea2%....sqbuffe| 00000310 72 25 3d 70 69 63 74 75 72 65 32 25 0d 00 16 33 |r%=picture2%...3| 00000320 ff 22 4c 4f 41 44 20 3c 54 61 62 6c 65 41 24 44 |."LOAD <TableA$D| 00000330 69 72 3e 2e 70 74 31 2e 22 2b 73 71 66 69 6c 65 |ir>.pt1."+sqfile| 00000340 24 2b 22 20 22 2b c3 7e 73 71 66 69 6c 65 25 0d |$+" "+.~sqfile%.| 00000350 00 17 3d c8 99 20 22 4f 53 5f 46 69 6c 65 22 2c |..=.. "OS_File",| 00000360 35 2c 22 3c 54 61 62 6c 65 41 24 44 69 72 3e 2e |5,"<TableA$Dir>.| 00000370 70 74 31 2e 22 2b 73 71 66 69 6c 65 24 20 b8 20 |pt1."+sqfile$ . | 00000380 2c 2c 2c 2c 66 69 6c 65 6c 65 6e 25 0d 00 18 31 |,,,,filelen%...1| 00000390 e7 20 3f 28 73 71 66 69 6c 65 25 29 3c 3e 97 28 |. ?(sqfile%)<>.(| 000003a0 22 53 22 29 20 80 20 3f 28 73 71 66 69 6c 65 25 |"S") . ?(sqfile%| 000003b0 2b 31 29 3c 3e 97 28 22 51 22 29 3a fa 0d 00 19 |+1)<>.("Q"):....| 000003c0 40 f2 75 6e 73 71 75 61 73 68 28 73 71 66 69 6c |@.unsquash(sqfil| 000003d0 65 25 2b 32 30 2c 66 69 6c 65 6c 65 6e 25 2d 32 |e%+20,filelen%-2| 000003e0 30 2c 73 71 62 75 66 66 65 72 25 2c 61 72 65 61 |0,sqbuffer%,area| 000003f0 25 2c 61 72 65 61 73 69 7a 25 2d 34 29 0d 00 1a |%,areasiz%-4)...| 00000400 05 e1 0d 00 1b 04 0d 00 1c 35 dd f2 75 6e 73 71 |.........5..unsq| 00000410 75 61 73 68 28 69 6e 70 74 72 25 2c 69 6e 73 69 |uash(inptr%,insi| 00000420 7a 25 2c 62 75 66 70 74 72 25 2c 6f 75 74 70 74 |z%,bufptr%,outpt| 00000430 72 25 2c 6f 75 74 73 69 7a 25 29 0d 00 1d 4a c8 |r%,outsiz%)...J.| 00000440 99 22 53 71 75 61 73 68 5f 44 65 63 6f 6d 70 72 |."Squash_Decompr| 00000450 65 73 73 22 2c 25 31 30 30 2c 62 75 66 70 74 72 |ess",%100,bufptr| 00000460 25 2c 69 6e 70 74 72 25 2c 69 6e 73 69 7a 25 2c |%,inptr%,insiz%,| 00000470 6f 75 74 70 74 72 25 2c 6f 75 74 73 69 7a 25 20 |outptr%,outsiz% | 00000480 b8 20 72 30 25 0d 00 1e 05 e1 0d 00 1f 04 0d 00 |. r0%...........| 00000490 20 19 dd f2 63 68 65 63 6b 5f 6d 6f 75 73 65 28 | ...check_mouse(| 000004a0 74 5f 6f 75 74 25 29 0d 00 21 08 74 25 3d 91 0d |t_out%)..!.t%=..| 000004b0 00 22 07 20 20 f5 0d 00 23 16 20 20 20 20 c8 97 |.". ...#. ..| 000004c0 20 6d 78 25 2c 6d 79 25 2c 6d 7a 25 0d 00 24 10 | mx%,my%,mz%..$.| 000004d0 20 20 20 20 6d 61 25 3d a6 28 31 29 0d 00 25 18 | ma%=.(1)..%.| 000004e0 20 20 20 20 e7 6d 61 25 3d 31 36 3a f2 70 72 69 | .ma%=16:.pri| 000004f0 6e 74 65 72 0d 00 26 1f 20 20 20 20 e7 6d 61 25 |nter..&. .ma%| 00000500 3d 31 39 3a f2 73 63 72 65 65 6e 5f 73 61 76 65 |=19:.screen_save| 00000510 28 31 29 0d 00 27 15 20 20 20 20 e7 6d 61 25 3d |(1)..'. .ma%=| 00000520 31 33 3a 6d 7a 25 3d 38 0d 00 28 23 20 20 fd 20 |13:mz%=8..(# . | 00000530 6d 7a 25 3d 34 20 84 20 74 25 2b 74 5f 6f 75 74 |mz%=4 . t%+t_out| 00000540 25 3c 91 20 84 20 6d 7a 25 3d 38 0d 00 29 05 e1 |%<. . mz%=8..)..| 00000550 0d 00 2a 04 0d 00 2b 20 dd f2 73 70 61 63 65 28 |..*...+ ..space(| 00000560 73 78 25 2c 73 79 25 2c 61 6e 5f 6e 75 6d 25 2c |sx%,sy%,an_num%,| 00000570 70 61 25 29 0d 00 2c 0f f2 70 61 75 73 65 28 70 |pa%)..,..pause(p| 00000580 61 25 29 0d 00 2d 0b 2a 66 78 32 31 2c 39 0d 00 |a%)..-.*fx21,9..| 00000590 2e 09 2a 66 78 31 35 0d 00 2f 45 c8 99 22 4f 53 |..*fx15../E.."OS| 000005a0 5f 53 70 72 69 74 65 4f 70 22 2c 26 31 31 30 2c |_SpriteOp",&110,| 000005b0 73 70 72 69 74 65 5f 61 72 65 61 31 25 2c 22 73 |sprite_area1%,"s| 000005c0 70 61 63 65 31 22 2c 30 2c 73 78 25 2c 73 79 25 |pace1",0,sx%,sy%| 000005d0 2c 31 32 38 30 2c 73 79 25 2b 36 38 0d 00 30 45 |,1280,sy%+68..0E| 000005e0 c8 99 22 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c |.."OS_SpriteOp",| 000005f0 26 31 31 30 2c 73 70 72 69 74 65 5f 61 72 65 61 |&110,sprite_area| 00000600 31 25 2c 22 73 70 61 63 65 32 22 2c 30 2c 73 78 |1%,"space2",0,sx| 00000610 25 2c 73 79 25 2c 31 32 38 30 2c 73 79 25 2b 36 |%,sy%,1280,sy%+6| 00000620 38 0d 00 31 14 61 6c 74 65 72 25 3d 31 3a 61 6e |8..1.alter%=1:an| 00000630 5f 74 25 3d 91 0d 00 32 19 f2 70 61 75 73 65 28 |_t%=...2..pause(| 00000640 31 30 29 3a 73 6f 75 6e 64 5f 74 25 3d 91 0d 00 |10):sound_t%=...| 00000650 33 1a f5 3a c8 97 6d 78 25 2c 6d 79 25 2c 6d 63 |3..:..mx%,my%,mc| 00000660 25 3a fd 6d 63 25 3d 30 0d 00 34 1f e3 6d 73 78 |%:.mc%=0..4..msx| 00000670 66 25 3d 31 b8 31 30 3a c8 97 6d 78 25 2c 6d 79 |f%=1.10:..mx%,my| 00000680 25 2c 6d 63 25 3a ed 0d 00 35 32 f2 70 6c 6f 74 |%,mc%:...52.plot| 00000690 5f 73 70 72 69 74 65 5f 6d 61 73 6b 65 64 28 73 |_sprite_masked(s| 000006a0 78 25 2c 73 79 25 2c 31 2c 31 2c 31 2c 31 2c 22 |x%,sy%,1,1,1,1,"| 000006b0 73 63 72 61 66 74 31 22 29 0d 00 36 07 c8 97 ee |scraft1")..6....| 000006c0 0d 00 37 10 63 6e 25 3d 31 3a 61 6d 25 3d 35 30 |..7.cn%=1:am%=50| 000006d0 0d 00 38 05 f5 0d 00 39 1d 20 f2 63 68 65 63 6b |..8....9. .check| 000006e0 5f 6d 6f 75 73 65 28 61 6d 25 29 3a 61 6d 25 3d |_mouse(am%):am%=| 000006f0 32 35 0d 00 3a 50 20 e7 6d 7a 25 3c 3e 34 3a 63 |25..:P .mz%<>4:c| 00000700 6e 25 3d 28 63 6e 25 2d 31 29 2a 2d 31 3a f2 70 |n%=(cn%-1)*-1:.p| 00000710 6c 6f 74 5f 73 70 72 69 74 65 5f 6d 61 73 6b 65 |lot_sprite_maske| 00000720 64 28 73 78 25 2c 73 79 25 2c 31 2c 31 2c 31 2c |d(sx%,sy%,1,1,1,| 00000730 31 2c 22 73 63 72 61 66 74 22 2b c3 28 63 6e 25 |1,"scraft"+.(cn%| 00000740 29 29 0d 00 3b 29 20 e7 61 6e 5f 6e 75 6d 25 3d |))..;) .an_num%=| 00000750 31 20 80 20 a4 6e 6f 73 6f 75 6e 64 3d b9 3a d4 |1 . .nosound=.:.| 00000760 20 31 2c 26 31 37 46 2c 31 2c 31 0d 00 3c 44 fd | 1,&17F,1,1..<D.| 00000770 20 28 6d 7a 25 3d 34 20 80 20 6d 78 25 3e 73 78 | (mz%=4 . mx%>sx| 00000780 25 20 80 20 6d 79 25 3e 73 79 25 20 80 20 6d 78 |% . my%>sy% . mx| 00000790 25 3c 73 78 25 2b 32 30 30 20 80 20 6d 79 25 3c |%<sx%+200 . my%<| 000007a0 73 79 25 2b 36 38 29 20 84 20 6d 7a 25 3d 38 0d |sy%+68) . mz%=8.| 000007b0 00 3d 3c 21 28 73 63 61 6c 65 25 2b 30 29 3d 31 |.=<!(scale%+0)=1| 000007c0 3a 21 28 73 63 61 6c 65 25 2b 34 29 3d 31 3a 21 |:!(scale%+4)=1:!| 000007d0 28 73 63 61 6c 65 25 2b 38 29 3d 31 3a 21 28 73 |(scale%+8)=1:!(s| 000007e0 63 61 6c 65 25 2b 31 32 29 3d 31 0d 00 3e 0c 66 |cale%+12)=1..>.f| 000007f0 6c 61 6d 65 25 3d 32 0d 00 3f 19 6d 73 78 66 25 |lame%=2..?.msxf%| 00000800 3d 30 3a 73 69 6e 63 25 3d 30 3a 63 6f 25 3d 30 |=0:sinc%=0:co%=0| 00000810 0d 00 40 05 f5 0d 00 41 0f 20 20 f2 73 74 5f 70 |..@....A. .st_p| 00000820 61 75 73 65 0d 00 42 2a 20 20 c8 99 22 4f 53 5f |ause..B* .."OS_| 00000830 53 70 72 69 74 65 4f 70 22 2c 26 31 33 43 2c 73 |SpriteOp",&13C,s| 00000840 61 31 25 2c 22 73 70 61 63 65 32 22 2c 30 0d 00 |a1%,"space2",0..| 00000850 43 39 20 20 20 20 c8 99 22 4f 53 5f 53 70 72 69 |C9 .."OS_Spri| 00000860 74 65 4f 70 22 2c 26 31 33 34 2c 73 61 31 25 2c |teOp",&134,sa1%,| 00000870 22 73 70 61 63 65 31 22 2c 30 2c 30 2c 30 2c 73 |"space1",0,0,0,s| 00000880 63 61 6c 65 25 2c 30 0d 00 44 3f 20 20 20 20 f2 |cale%,0..D? .| 00000890 70 6c 6f 74 5f 73 70 72 69 74 65 5f 6d 61 73 6b |plot_sprite_mask| 000008a0 65 64 28 6d 73 78 66 25 2c 30 2c 31 2c 31 2c 31 |ed(msxf%,0,1,1,1| 000008b0 2c 31 2c 22 73 63 72 61 66 74 22 2b c3 28 66 6c |,1,"scraft"+.(fl| 000008c0 61 6d 65 25 29 29 0d 00 45 23 20 20 c8 99 22 4f |ame%))..E# .."O| 000008d0 53 5f 53 70 72 69 74 65 4f 70 22 2c 26 31 33 43 |S_SpriteOp",&13C| 000008e0 2c 73 61 31 25 2c 30 2c 31 0d 00 46 1f 20 20 e7 |,sa1%,0,1..F. .| 000008f0 56 25 3d 31 20 ef 20 32 33 2c 31 37 2c 37 2c 36 |V%=1 . 23,17,7,6| 00000900 2c 38 3b 31 36 3b 30 3b 0d 00 47 3e 20 20 21 28 |,8;16;0;..G> !(| 00000910 73 63 61 6c 65 25 2b 30 29 3d 31 3a 21 28 73 63 |scale%+0)=1:!(sc| 00000920 61 6c 65 25 2b 34 29 3d 31 3a 21 28 73 63 61 6c |ale%+4)=1:!(scal| 00000930 65 25 2b 38 29 3d 31 3a 21 28 73 63 61 6c 65 25 |e%+8)=1:!(scale%| 00000940 2b 31 32 29 3d 31 0d 00 48 3b 20 20 c8 99 22 4f |+12)=1..H; .."O| 00000950 53 5f 53 70 72 69 74 65 4f 70 22 2c 26 31 33 34 |S_SpriteOp",&134| 00000960 2c 73 61 31 25 2c 22 73 70 61 63 65 32 22 2c 73 |,sa1%,"space2",s| 00000970 78 25 2c 73 79 25 2c 30 2c 73 63 61 6c 65 25 2c |x%,sy%,0,scale%,| 00000980 30 0d 00 49 28 20 20 66 6c 61 6d 65 25 3d 66 6c |0..I( flame%=fl| 00000990 61 6d 65 25 2b 31 3a e7 66 6c 61 6d 65 25 3d 38 |ame%+1:.flame%=8| 000009a0 3a 66 6c 61 6d 65 25 3d 32 0d 00 4a 21 20 20 6d |:flame%=2..J! m| 000009b0 73 78 66 25 3d 6d 73 78 66 25 2b 73 69 6e 63 25 |sxf%=msxf%+sinc%| 000009c0 3a 63 6f 25 3d 63 6f 25 2b 31 0d 00 4b 1b 20 20 |:co%=co%+1..K. | 000009d0 e7 63 6f 25 3e 36 20 73 69 6e 63 25 3d 73 69 6e |.co%>6 sinc%=sin| 000009e0 63 25 2b 31 36 0d 00 4c 13 20 20 f2 65 6e 5f 70 |c%+16..L. .en_p| 000009f0 61 75 73 65 28 31 30 29 0d 00 4d 14 fd 20 6d 73 |ause(10)..M.. ms| 00000a00 78 66 25 2b 73 78 25 3e 31 32 38 30 0d 00 4e 39 |xf%+sx%>1280..N9| 00000a10 c8 99 22 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c |.."OS_SpriteOp",| 00000a20 26 31 33 34 2c 73 61 31 25 2c 22 73 70 61 63 65 |&134,sa1%,"space| 00000a30 31 22 2c 73 78 25 2c 73 79 25 2c 30 2c 73 63 61 |1",sx%,sy%,0,sca| 00000a40 6c 65 25 2c 30 0d 00 4f 05 e1 0d 00 50 04 0d 00 |le%,0..O....P...| 00000a50 51 0e dd f2 73 74 5f 70 61 75 73 65 0d 00 52 0b |Q...st_pause..R.| 00000a60 74 69 6d 65 25 3d 91 0d 00 53 05 e1 0d 00 54 04 |time%=...S....T.| 00000a70 0d 00 55 12 dd f2 65 6e 5f 70 61 75 73 65 28 74 |..U...en_pause(t| 00000a80 25 29 0d 00 56 11 e7 74 69 6d 65 25 2b 74 25 3c |%)..V..time%+t%<| 00000a90 91 20 e1 0d 00 57 11 f5 3a fd 74 69 6d 65 25 2b |. ...W..:.time%+| 00000aa0 74 25 3c 91 0d 00 58 05 e1 0d 00 59 04 0d 00 5a |t%<...X....Y...Z| 00000ab0 0f dd f2 70 61 75 73 65 28 74 25 29 0d 00 5b 0b |...pause(t%)..[.| 00000ac0 74 69 6d 65 25 3d 91 0d 00 5c 11 f5 3a fd 74 69 |time%=...\..:.ti| 00000ad0 6d 65 25 2b 74 25 3c 91 0d 00 5d 05 e1 0d 00 5e |me%+t%<...]....^| 00000ae0 04 0d 00 5f 0d dd f2 72 65 6c 65 61 73 65 0d 00 |..._...release..| 00000af0 60 12 f5 3a c8 97 58 2c 59 2c 5a 3a fd 5a 3d 30 |`..:..X,Y,Z:.Z=0| 00000b00 0d 00 61 05 e1 0d 00 62 04 0d 00 63 18 dd f2 63 |..a....b...c...c| 00000b10 61 63 68 65 73 6f 75 6e 64 28 73 24 2c 63 68 25 |achesound(s$,ch%| 00000b20 29 0d 00 64 0c 2a 66 78 32 32 39 2c 31 0d 00 65 |)..d.*fx229,1..e| 00000b30 30 c8 99 20 26 34 36 31 38 30 2c 46 25 2c 73 24 |0.. &46180,F%,s$| 00000b40 2c 31 30 2c 63 68 25 20 b8 20 2c 2c 76 69 6f 63 |,10,ch% . ,,vioc| 00000b50 65 25 2c 70 72 65 76 6f 25 3b 66 6c 25 0d 00 66 |e%,prevo%;fl%..f| 00000b60 0c 2a 66 78 32 32 39 2c 30 0d 00 67 05 e1 0d 00 |.*fx229,0..g....| 00000b70 68 04 0d 00 69 19 dd f2 63 61 63 68 65 73 6f 75 |h...i...cachesou| 00000b80 6e 64 32 28 73 24 2c 63 68 25 29 0d 00 6a 0c 2a |nd2(s$,ch%)..j.*| 00000b90 66 78 32 32 39 2c 31 0d 00 6b 30 c8 99 20 26 34 |fx229,1..k0.. &4| 00000ba0 36 31 38 30 2c 46 25 2c 73 24 2c 31 31 2c 63 68 |6180,F%,s$,11,ch| 00000bb0 25 20 b8 20 2c 2c 76 69 6f 63 65 25 2c 70 72 65 |% . ,,vioce%,pre| 00000bc0 76 6f 25 3b 66 6c 25 0d 00 6c 0c 2a 66 78 32 32 |vo%;fl%..l.*fx22| 00000bd0 39 2c 30 0d 00 6d 05 e1 0d 00 6e 04 0d 00 6f 0d |9,0..m....n...o.| 00000be0 dd a4 6e 6f 73 6f 75 6e 64 0d 00 70 2c c8 99 22 |..nosound..p,.."| 00000bf0 53 6f 75 6e 64 5f 52 65 61 64 43 6f 6e 74 72 6f |Sound_ReadContro| 00000c00 6c 42 6c 6f 63 6b 22 2c 31 2c 30 20 b8 20 2c 2c |lBlock",1,0 . ,,| 00000c10 73 63 63 62 25 0d 00 71 13 73 63 63 62 25 3d 73 |sccb%..q.sccb%=s| 00000c20 63 63 62 25 3e 3e 32 34 0d 00 72 12 e7 73 63 63 |ccb%>>24..r..scc| 00000c30 62 25 3d 30 20 8c 3a 3d 2d 31 0d 00 73 06 3d 30 |b%=0 .:=-1..s.=0| 00000c40 0d 00 74 04 0d 00 75 19 dd f2 6c 6f 61 64 5f 73 |..t...u...load_s| 00000c50 70 72 69 74 65 73 28 6e 61 6d 65 24 29 0d 00 76 |prites(name$)..v| 00000c60 3b f2 6c 6f 61 64 75 6e 73 71 75 61 73 68 28 73 |;.loadunsquash(s| 00000c70 70 72 69 74 65 5f 61 72 65 61 31 25 2c 28 32 34 |prite_area1%,(24| 00000c80 30 2a 31 30 32 34 29 2c 70 69 63 74 75 72 65 31 |0*1024),picture1| 00000c90 25 2c 6e 61 6d 65 24 29 0d 00 77 05 e1 0d 00 78 |%,name$)..w....x| 00000ca0 04 0d 00 79 26 dd f2 6c 6f 61 64 5f 73 70 72 69 |...y&..load_spri| 00000cb0 74 65 73 33 28 6e 61 6d 65 24 2c 66 69 6e 61 6c |tes3(name$,final| 00000cc0 5f 61 72 65 61 25 29 0d 00 7a 3a f2 6c 6f 61 64 |_area%)..z:.load| 00000cd0 75 6e 73 71 75 61 73 68 32 28 66 69 6e 61 6c 5f |unsquash2(final_| 00000ce0 61 72 65 61 25 2c 28 32 34 30 2a 31 30 32 34 29 |area%,(240*1024)| 00000cf0 2c 70 69 63 74 75 72 65 31 25 2c 6e 61 6d 65 24 |,picture1%,name$| 00000d00 29 0d 00 7b 05 e1 0d 00 7c 04 0d 00 7d 1a dd f2 |)..{....|...}...| 00000d10 6c 6f 61 64 5f 73 70 72 69 74 65 73 32 28 6e 61 |load_sprites2(na| 00000d20 6d 65 24 29 0d 00 7e 48 c8 99 22 4f 53 5f 53 70 |me$)..~H.."OS_Sp| 00000d30 72 69 74 65 4f 70 22 2c 26 31 30 41 2c 73 70 72 |riteOp",&10A,spr| 00000d40 69 74 65 5f 61 72 65 61 31 25 2c 22 3c 54 61 62 |ite_area1%,"<Tab| 00000d50 6c 65 41 24 44 69 72 3e 2e 50 74 31 2e 73 70 72 |leA$Dir>.Pt1.spr| 00000d60 69 74 65 73 2e 22 2b 6e 61 6d 65 24 0d 00 7f 05 |ites."+name$....| 00000d70 e1 0d 00 80 04 0d 00 81 1a dd f2 6d 65 72 67 65 |...........merge| 00000d80 5f 73 70 72 69 74 65 73 28 6e 61 6d 65 24 29 0d |_sprites(name$).| 00000d90 00 82 3f c8 99 22 4f 53 5f 53 70 72 69 74 65 4f |..?.."OS_SpriteO| 00000da0 70 22 2c 26 31 30 42 2c 73 61 31 25 2c 22 3c 54 |p",&10B,sa1%,"<T| 00000db0 61 62 6c 65 41 24 44 69 72 3e 2e 50 74 31 2e 53 |ableA$Dir>.Pt1.S| 00000dc0 70 72 69 74 65 73 2e 22 2b 6e 61 6d 65 24 0d 00 |prites."+name$..| 00000dd0 83 05 e1 0d 00 84 04 0d 00 85 1f dd f2 6c 6f 61 |.............loa| 00000de0 64 5f 70 69 63 74 75 72 65 28 61 72 65 61 25 2c |d_picture(area%,| 00000df0 6e 61 6d 65 24 29 0d 00 86 13 6c 6f 61 64 24 3d |name$)....load$=| 00000e00 c3 7e 28 61 72 65 61 25 29 0d 00 87 33 ff 20 22 |.~(area%)...3. "| 00000e10 4c 4f 41 44 20 3c 54 61 62 6c 65 41 24 44 69 72 |LOAD <TableA$Dir| 00000e20 3e 2e 50 74 31 2e 64 61 74 61 2e 22 2b 6e 61 6d |>.Pt1.data."+nam| 00000e30 65 24 2b 22 20 22 2b 6c 6f 61 64 24 0d 00 88 05 |e$+" "+load$....| 00000e40 e1 0d 00 89 04 0d 00 8a 20 dd f2 64 65 6c 65 74 |........ ..delet| 00000e50 65 5f 73 70 72 69 74 65 28 61 72 65 61 25 2c 6e |e_sprite(area%,n| 00000e60 61 6d 65 24 29 0d 00 8b 24 c8 99 22 4f 53 5f 53 |ame$)...$.."OS_S| 00000e70 70 72 69 74 65 4f 70 22 2c 26 31 31 39 2c 61 72 |priteOp",&119,ar| 00000e80 65 61 25 2c 6e 61 6d 65 24 0d 00 8c 05 e1 0d 00 |ea%,name$.......| 00000e90 8d 04 0d 00 8e 2e dd f2 70 6c 6f 74 5f 73 70 72 |........plot_spr| 00000ea0 69 74 65 28 78 25 2c 79 25 2c 78 6d 25 2c 79 6d |ite(x%,y%,xm%,ym| 00000eb0 25 2c 78 64 25 2c 79 64 25 2c 6e 61 6d 65 24 29 |%,xd%,yd%,name$)| 00000ec0 0d 00 8f 13 21 28 73 63 61 6c 65 25 2b 30 29 3d |....!(scale%+0)=| 00000ed0 78 6d 25 0d 00 90 1c 21 28 73 63 61 6c 65 25 2b |xm%....!(scale%+| 00000ee0 34 29 3d 79 6d 25 2a 28 76 67 61 25 2b 31 29 0d |4)=ym%*(vga%+1).| 00000ef0 00 91 13 21 28 73 63 61 6c 65 25 2b 38 29 3d 78 |...!(scale%+8)=x| 00000f00 64 25 0d 00 92 14 21 28 73 63 61 6c 65 25 2b 31 |d%....!(scale%+1| 00000f10 32 29 3d 79 64 25 0d 00 93 34 c8 99 22 4f 53 5f |2)=yd%...4.."OS_| 00000f20 53 70 72 69 74 65 4f 70 22 2c 26 31 33 34 2c 73 |SpriteOp",&134,s| 00000f30 61 31 25 2c 6e 61 6d 65 24 2c 78 25 2c 79 25 2c |a1%,name$,x%,y%,| 00000f40 30 2c 73 63 61 6c 65 25 2c 30 0d 00 94 05 e1 0d |0,scale%,0......| 00000f50 00 95 04 0d 00 96 35 dd f2 70 6c 6f 74 5f 73 70 |......5..plot_sp| 00000f60 72 69 74 65 5f 6d 61 73 6b 65 64 28 78 25 2c 79 |rite_masked(x%,y| 00000f70 25 2c 78 6d 25 2c 79 6d 25 2c 78 64 25 2c 79 64 |%,xm%,ym%,xd%,yd| 00000f80 25 2c 6e 61 6d 65 24 29 0d 00 97 13 21 28 73 63 |%,name$)....!(sc| 00000f90 61 6c 65 25 2b 30 29 3d 78 6d 25 0d 00 98 1c 21 |ale%+0)=xm%....!| 00000fa0 28 73 63 61 6c 65 25 2b 34 29 3d 79 6d 25 2a 28 |(scale%+4)=ym%*(| 00000fb0 76 67 61 25 2b 31 29 0d 00 99 13 21 28 73 63 61 |vga%+1)....!(sca| 00000fc0 6c 65 25 2b 38 29 3d 78 64 25 0d 00 9a 14 21 28 |le%+8)=xd%....!(| 00000fd0 73 63 61 6c 65 25 2b 31 32 29 3d 79 64 25 0d 00 |scale%+12)=yd%..| 00000fe0 9b 34 c8 99 22 4f 53 5f 53 70 72 69 74 65 4f 70 |.4.."OS_SpriteOp| 00000ff0 22 2c 26 31 33 34 2c 73 61 31 25 2c 6e 61 6d 65 |",&134,sa1%,name| 00001000 24 2c 78 25 2c 79 25 2c 38 2c 73 63 61 6c 65 25 |$,x%,y%,8,scale%| 00001010 2c 30 0d 00 9c 05 e1 0d 00 9d 04 0d 00 9e 0d dd |,0..............| 00001020 f2 70 61 6c 65 74 74 65 0d 00 9f 18 ef 31 39 2c |.palette.....19,| 00001030 31 2c 32 34 2c 31 33 36 2c 31 33 36 2c 31 33 36 |1,24,136,136,136| 00001040 0d 00 a0 10 ea 70 25 2c 72 25 2c 67 25 2c 62 25 |.....p%,r%,g%,b%| 00001050 0d 00 a1 07 f7 2b 35 0d 00 a2 0c e3 70 25 3d 30 |.....+5.....p%=0| 00001060 b8 31 35 0d 00 a3 1a f3 72 25 2c 67 25 2c 62 25 |.15.....r%,g%,b%| 00001070 3a fb 70 25 2c 72 25 2c 67 25 2c 62 25 0d 00 a4 |:.p%,r%,g%,b%...| 00001080 05 ed 0d 00 a5 15 ef 31 39 2c 31 2c 32 34 2c 30 |.......19,1,24,0| 00001090 2c 30 2c 30 3b 30 3b 0d 00 a6 2c e7 56 25 3d 30 |,0,0;0;...,.V%=0| 000010a0 20 ef 32 34 2c 30 3b 39 36 30 3b 31 32 37 38 3b | .24,0;960;1278;| 000010b0 31 30 32 32 3b 31 38 2c 30 2c 31 33 31 2c 31 36 |1022;18,0,131,16| 000010c0 2c 32 36 0d 00 a7 05 e1 0d 00 a8 04 0d 00 a9 2f |,26............/| 000010d0 dc 20 32 35 35 2c 32 35 35 2c 32 35 35 2c 31 38 |. 255,255,255,18| 000010e0 37 2c 31 38 37 2c 31 38 37 2c 31 31 39 2c 31 31 |7,187,187,119,11| 000010f0 39 2c 31 31 39 2c 30 2c 30 2c 30 0d 00 aa 2c dc |9,119,0,0,0...,.| 00001100 20 32 35 35 2c 32 35 35 2c 30 2c 30 2c 35 30 2c | 255,255,0,0,50,| 00001110 32 35 35 2c 31 38 37 2c 31 38 37 2c 31 38 37 2c |255,187,187,187,| 00001120 30 2c 31 35 33 2c 30 0d 00 ab 2b dc 20 32 32 34 |0,153,0...+. 224| 00001130 2c 32 32 34 2c 32 32 34 2c 31 36 34 2c 31 36 34 |,224,224,164,164| 00001140 2c 31 36 34 2c 30 2c 30 2c 30 2c 32 35 35 2c 30 |,164,0,0,0,255,0| 00001150 2c 30 0d 00 ac 27 dc 20 31 33 36 2c 31 30 32 2c |,0...'. 136,102,| 00001160 30 2c 30 2c 32 30 34 2c 30 2c 30 2c 31 35 33 2c |0,0,204,0,0,153,| 00001170 30 2c 30 2c 31 31 39 2c 30 0d 00 ad 04 0d 00 ae |0,0,119,0.......| 00001180 1c dd f2 69 6e 69 74 69 61 6c 69 73 65 5f 73 70 |...initialise_sp| 00001190 72 69 74 65 5f 61 72 65 61 0d 00 af 0d 6b 61 79 |rite_area....kay| 000011a0 25 3d 31 30 32 34 0d 00 b0 51 21 73 70 72 69 74 |%=1024...Q!sprit| 000011b0 65 5f 61 72 65 61 31 25 3d 32 32 30 2a 6b 61 79 |e_area1%=220*kay| 000011c0 25 3a 73 70 72 69 74 65 5f 61 72 65 61 31 25 21 |%:sprite_area1%!| 000011d0 38 3d 31 36 3a c8 99 22 4f 53 5f 53 70 72 69 74 |8=16:.."OS_Sprit| 000011e0 65 4f 70 22 2c 26 31 30 39 2c 73 70 72 69 74 65 |eOp",&109,sprite| 000011f0 5f 61 72 65 61 31 25 0d 00 b1 50 21 73 70 72 69 |_area1%...P!spri| 00001200 74 65 5f 61 72 65 61 32 25 3d 37 30 2a 6b 61 79 |te_area2%=70*kay| 00001210 25 3a 73 70 72 69 74 65 5f 61 72 65 61 32 25 21 |%:sprite_area2%!| 00001220 38 3d 31 36 3a c8 99 22 4f 53 5f 53 70 72 69 74 |8=16:.."OS_Sprit| 00001230 65 4f 70 22 2c 26 31 30 39 2c 73 70 72 69 74 65 |eOp",&109,sprite| 00001240 5f 61 72 65 61 32 25 0d 00 b2 05 e1 0d 00 b3 04 |_area2%.........| 00001250 0d 00 b4 20 dd f2 69 6e 69 74 69 61 6c 69 73 65 |... ..initialise| 00001260 5f 73 70 72 69 74 65 5f 61 72 65 61 5f 6f 6c 64 |_sprite_area_old| 00001270 0d 00 b5 34 f4 20 4e 6f 6e 20 6d 6f 76 65 61 62 |...4. Non moveab| 00001280 6c 65 20 73 70 72 69 74 65 20 61 64 64 72 65 73 |le sprite addres| 00001290 73 65 73 20 75 73 65 64 20 69 6e 20 74 68 65 20 |ses used in the | 000012a0 67 61 6d 65 0d 00 b6 1b 73 70 72 69 74 65 5f 61 |game....sprite_a| 000012b0 72 65 61 31 25 3d 4b 25 2b 31 30 32 34 2a 35 0d |rea1%=K%+1024*5.| 000012c0 00 b7 0d 6b 61 79 25 3d 31 30 32 34 0d 00 b8 51 |...kay%=1024...Q| 000012d0 21 73 70 72 69 74 65 5f 61 72 65 61 31 25 3d 32 |!sprite_area1%=2| 000012e0 31 35 2a 6b 61 79 25 3a 73 70 72 69 74 65 5f 61 |15*kay%:sprite_a| 000012f0 72 65 61 31 25 21 38 3d 31 36 3a c8 99 22 4f 53 |rea1%!8=16:.."OS| 00001300 5f 53 70 72 69 74 65 4f 70 22 2c 26 31 30 39 2c |_SpriteOp",&109,| 00001310 73 70 72 69 74 65 5f 61 72 65 61 31 25 0d 00 b9 |sprite_area1%...| 00001320 50 21 73 70 72 69 74 65 5f 61 72 65 61 32 25 3d |P!sprite_area2%=| 00001330 38 30 2a 6b 61 79 25 3a 73 70 72 69 74 65 5f 61 |80*kay%:sprite_a| 00001340 72 65 61 32 25 21 38 3d 31 36 3a c8 99 22 4f 53 |rea2%!8=16:.."OS| 00001350 5f 53 70 72 69 74 65 4f 70 22 2c 26 31 30 39 2c |_SpriteOp",&109,| 00001360 73 70 72 69 74 65 5f 61 72 65 61 32 25 0d 00 ba |sprite_area2%...| 00001370 05 e1 0d 00 bb 04 0d 00 bc 0b dd f2 73 74 61 74 |............stat| 00001380 73 0d 00 bd 3b 20 c8 99 22 4f 53 5f 53 70 72 69 |s...; .."OS_Spri| 00001390 74 65 4f 70 22 2c 26 31 30 38 2c 73 70 72 69 74 |teOp",&108,sprit| 000013a0 65 5f 61 72 65 61 31 25 20 b8 20 72 30 2c 72 31 |e_area1% . r0,r1| 000013b0 2c 72 32 2c 72 33 2c 72 34 2c 72 35 0d 00 be 0d |,r2,r3,r4,r5....| 000013c0 20 2a 46 58 31 31 32 2c 31 0d 00 bf 0d 20 2a 46 | *FX112,1.... *F| 000013d0 58 31 31 33 2c 31 0d 00 c0 08 20 ef 32 36 0d 00 |X113,1.... .26..| 000013e0 c1 0d 20 f1 20 8a 30 2c 30 29 3b 0d 00 c2 11 20 |.. . .0,0);.... | 000013f0 f1 20 22 73 69 7a 65 20 22 3b 72 32 0d 00 c3 13 |. "size ";r2....| 00001400 20 f1 20 22 6e 75 6d 62 65 72 20 22 3b 72 33 0d | . "number ";r3.| 00001410 00 c4 12 20 f1 20 22 66 69 72 73 74 20 22 3b 72 |... . "first ";r| 00001420 34 0d 00 c5 11 20 f1 20 22 6c 61 73 74 20 22 3b |4.... . "last ";| 00001430 72 35 0d 00 c6 05 fa 0d 00 c7 04 0d 00 c8 15 dd |r5..............| 00001440 f2 74 73 63 6f 72 65 28 78 78 25 2c 79 79 25 29 |.tscore(xx%,yy%)| 00001450 0d 00 c9 20 20 20 e7 74 6f 74 61 6c 5f 67 6f 74 |... .total_got| 00001460 25 3c 30 3a 74 6f 74 61 6c 5f 67 6f 74 25 3d 30 |%<0:total_got%=0| 00001470 0d 00 ca 2c 20 20 54 25 3d 54 25 2b 74 6f 74 61 |..., T%=T%+tota| 00001480 6c 5f 67 6f 74 25 3a 49 25 3d 49 25 2b 74 6f 74 |l_got%:I%=I%+tot| 00001490 61 6c 5f 70 6f 73 73 69 62 6c 65 25 0d 00 cb 0e |al_possible%....| 000014a0 20 20 74 24 3d c3 28 54 25 29 0d 00 cc 19 20 20 | t$=.(T%).... | 000014b0 e7 20 a9 28 74 24 29 3d 32 20 74 24 3d 22 64 22 |. .(t$)=2 t$="d"| 000014c0 2b 74 24 0d 00 cd 1a 20 20 e7 20 a9 28 74 24 29 |+t$.... . .(t$)| 000014d0 3d 31 20 74 24 3d 22 64 64 22 2b 74 24 0d 00 ce |=1 t$="dd"+t$...| 000014e0 0e 20 20 67 24 3d c3 28 49 25 29 0d 00 cf 19 20 |. g$=.(I%).... | 000014f0 20 e7 20 a9 28 67 24 29 3d 32 20 67 24 3d 22 20 | . .(g$)=2 g$=" | 00001500 22 2b 67 24 0d 00 d0 1a 20 20 e7 20 a9 28 67 24 |"+g$.... . .(g$| 00001510 29 3d 31 20 67 24 3d 22 20 20 22 2b 67 24 0d 00 |)=1 g$=" "+g$..| 00001520 d1 16 20 20 69 24 3d c3 28 74 6f 74 61 6c 5f 67 |.. i$=.(total_g| 00001530 6f 74 25 29 0d 00 d2 19 20 20 e7 20 a9 28 69 24 |ot%).... . .(i$| 00001540 29 3d 31 20 69 24 3d 22 64 22 2b 69 24 0d 00 d3 |)=1 i$="d"+i$...| 00001550 1b 20 20 70 24 3d c3 28 74 6f 74 61 6c 5f 70 6f |. p$=.(total_po| 00001560 73 73 69 62 6c 65 25 29 0d 00 d4 19 20 20 e7 20 |ssible%).... . | 00001570 a9 28 70 24 29 3d 32 20 70 24 3d 22 20 22 2b 70 |.(p$)=2 p$=" "+p| 00001580 24 0d 00 d5 1a 20 20 e7 20 a9 28 70 24 29 3d 31 |$.... . .(p$)=1| 00001590 20 70 24 3d 22 20 20 22 2b 70 24 0d 00 d6 13 20 | p$=" "+p$.... | 000015a0 20 21 28 73 63 61 6c 65 25 2b 30 29 3d 31 0d 00 | !(scale%+0)=1..| 000015b0 d7 13 20 20 21 28 73 63 61 6c 65 25 2b 34 29 3d |.. !(scale%+4)=| 000015c0 31 0d 00 d8 13 20 20 21 28 73 63 61 6c 65 25 2b |1.... !(scale%+| 000015d0 38 29 3d 31 0d 00 d9 14 20 20 21 28 73 63 61 6c |8)=1.... !(scal| 000015e0 65 25 2b 31 32 29 3d 31 0d 00 da 1a f2 63 61 63 |e%+12)=1.....cac| 000015f0 68 65 73 6f 75 6e 64 28 22 66 69 72 65 21 22 2c |hesound("fire!",| 00001600 31 29 0d 00 db 28 20 20 c8 99 22 4f 53 5f 53 70 |1)...( .."OS_Sp| 00001610 72 69 74 65 4f 70 22 2c 26 31 33 43 2c 73 61 31 |riteOp",&13C,sa1| 00001620 25 2c 22 72 65 73 32 22 2c 30 0d 00 dc 1a 20 20 |%,"res2",0.... | 00001630 20 20 70 6e 25 3d 31 3a 78 25 3d 31 33 38 3a 79 | pn%=1:x%=138:y| 00001640 25 3d 36 38 0d 00 dd 16 20 20 20 20 e3 70 6e 25 |%=68.... .pn%| 00001650 3d 31 20 b8 20 a9 28 74 24 29 0d 00 de 4c 20 20 |=1 . .(t$)...L | 00001660 20 20 20 c8 99 22 4f 53 5f 53 70 72 69 74 65 4f | .."OS_SpriteO| 00001670 70 22 2c 26 31 33 34 2c 73 61 31 25 2c c1 74 24 |p",&134,sa1%,.t$| 00001680 2c 70 6e 25 2c 31 29 2c 28 78 25 2d 33 36 29 2b |,pn%,1),(x%-36)+| 00001690 28 70 6e 25 2a 33 36 29 2c 79 25 2c 30 2c 73 63 |(pn%*36),y%,0,sc| 000016a0 61 6c 65 25 2c 30 0d 00 df 09 20 20 20 20 ed 0d |ale%,0.... ..| 000016b0 00 e0 1e 20 20 20 20 70 6e 25 3d 31 3a 78 25 3d |... pn%=1:x%=| 000016c0 31 33 38 2b 33 38 3a 79 25 3d 32 30 34 0d 00 e1 |138+38:y%=204...| 000016d0 16 20 20 20 20 e3 70 6e 25 3d 31 20 b8 20 a9 28 |. .pn%=1 . .(| 000016e0 69 24 29 0d 00 e2 4c 20 20 20 20 20 c8 99 22 4f |i$)...L .."O| 000016f0 53 5f 53 70 72 69 74 65 4f 70 22 2c 26 31 33 34 |S_SpriteOp",&134| 00001700 2c 73 61 31 25 2c c1 69 24 2c 70 6e 25 2c 31 29 |,sa1%,.i$,pn%,1)| 00001710 2c 28 78 25 2d 33 36 29 2b 28 70 6e 25 2a 33 36 |,(x%-36)+(pn%*36| 00001720 29 2c 79 25 2c 30 2c 73 63 61 6c 65 25 2c 30 0d |),y%,0,scale%,0.| 00001730 00 e3 09 20 20 20 20 ed 0d 00 e4 0c 20 20 20 20 |... ..... | 00001740 e6 30 2c 33 0d 00 e5 19 20 20 20 20 e7 20 b0 31 |.0,3.... . .1| 00001750 33 38 2c 32 30 29 3d 33 3a e6 30 2c 30 0d 00 e6 |38,20)=3:.0,0...| 00001760 1b 20 20 20 20 ef 35 3a ec 20 31 31 30 2c 31 36 |. .5:. 110,16| 00001770 2b 32 34 3a f1 3b 67 24 0d 00 e7 1c 20 20 20 20 |+24:.;g$.... | 00001780 ef 35 3a ec 20 31 31 30 2c 31 35 32 2b 32 34 3a |.5:. 110,152+24:| 00001790 f1 3b 70 24 0d 00 e8 23 20 20 c8 99 22 4f 53 5f |.;p$...# .."OS_| 000017a0 53 70 72 69 74 65 4f 70 22 2c 26 31 33 43 2c 73 |SpriteOp",&13C,s| 000017b0 61 31 25 2c 30 2c 31 0d 00 e9 1f 20 20 e7 56 25 |a1%,0,1.... .V%| 000017c0 3d 31 20 ef 20 32 33 2c 31 37 2c 37 2c 36 2c 38 |=1 . 23,17,7,6,8| 000017d0 3b 31 36 3b 30 3b 0d 00 ea 25 20 20 ef 32 34 2c |;16;0;...% .24,| 000017e0 78 78 25 2d 38 30 3b 79 79 25 2d 38 3b 78 78 25 |xx%-80;yy%-8;xx%| 000017f0 2b 34 3b 79 79 25 2b 33 30 30 3b 0d 00 eb 1e 20 |+4;yy%+300;.... | 00001800 20 20 20 e3 70 6e 25 3d 78 78 25 20 b8 20 78 78 | .pn%=xx% . xx| 00001810 25 2d 31 30 20 88 20 2d 32 0d 00 ec 13 20 20 20 |%-10 . -2.... | 00001820 20 20 20 f2 73 74 5f 70 61 75 73 65 0d 00 ed 39 | .st_pause...9| 00001830 20 20 20 20 20 20 20 20 f2 70 6c 6f 74 5f 73 70 | .plot_sp| 00001840 72 69 74 65 5f 6d 61 73 6b 65 64 28 70 6e 25 2c |rite_masked(pn%,| 00001850 79 79 25 2d 38 2c 31 2c 31 2c 31 2c 31 2c 22 72 |yy%-8,1,1,1,1,"r| 00001860 65 73 31 22 29 0d 00 ee 17 20 20 20 20 20 20 f2 |es1").... .| 00001870 65 6e 5f 70 61 75 73 65 28 31 30 29 0d 00 ef 09 |en_pause(10)....| 00001880 20 20 20 20 ed 0d 00 f0 22 20 20 ef 32 34 2c 78 | ...." .24,x| 00001890 78 25 3b 79 79 25 3b 78 78 25 2b 33 30 30 3b 79 |x%;yy%;xx%+300;y| 000018a0 79 25 2b 32 39 30 3b 0d 00 f1 12 20 20 d4 20 31 |y%+290;.... . 1| 000018b0 2c 26 31 37 46 2c 31 2c 31 0d 00 f2 1c 20 20 e3 |,&17F,1,1.... .| 000018c0 70 6e 25 3d 78 78 25 2d 32 37 32 20 b8 20 78 78 |pn%=xx%-272 . xx| 000018d0 25 20 88 20 38 0d 00 f3 11 20 20 20 20 f2 73 74 |% . 8.... .st| 000018e0 5f 70 61 75 73 65 0d 00 f4 2e 20 20 20 20 20 20 |_pause.... | 000018f0 f2 70 6c 6f 74 5f 73 70 72 69 74 65 28 70 6e 25 |.plot_sprite(pn%| 00001900 2c 79 79 25 2c 31 2c 31 2c 31 2c 31 2c 22 72 65 |,yy%,1,1,1,1,"re| 00001910 73 32 22 29 0d 00 f5 14 20 20 20 20 f2 65 6e 5f |s2").... .en_| 00001920 70 61 75 73 65 28 35 29 0d 00 f6 07 20 20 ed 0d |pause(5).... ..| 00001930 00 f7 1d 20 20 f2 63 61 63 68 65 73 6f 75 6e 64 |... .cachesound| 00001940 28 22 63 6c 61 6e 67 32 22 2c 31 29 0d 00 f8 12 |("clang2",1)....| 00001950 20 20 d4 20 31 2c 26 31 37 46 2c 31 2c 31 0d 00 | . 1,&17F,1,1..| 00001960 f9 09 20 20 ef 32 36 0d 00 fa 05 e1 0d 00 fb 04 |.. .26.........| 00001970 0d 00 fc 14 dd f2 70 75 6c 6c 5f 76 61 72 69 61 |......pull_varia| 00001980 62 6c 65 73 0d 00 fd 36 73 70 72 69 74 65 5f 61 |bles...6sprite_a| 00001990 72 65 61 31 25 3d 4b 25 20 20 20 20 20 20 20 20 |rea1%=K% | 000019a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000019b0 20 20 20 3a f4 20 32 32 30 6b 0d 00 fe 35 73 70 | :. 220k...5sp| 000019c0 72 69 74 65 5f 61 72 65 61 32 25 3d 4b 25 2b 31 |rite_area2%=K%+1| 000019d0 30 32 34 2a 32 32 30 20 20 20 20 20 20 20 20 20 |024*220 | 000019e0 20 20 20 20 20 20 20 20 20 3a f4 20 37 30 6b 0d | :. 70k.| 000019f0 00 ff 35 70 69 63 74 75 72 65 31 25 3d 4b 25 2b |..5picture1%=K%+| 00001a00 31 30 32 34 2a 32 39 30 20 20 20 20 20 20 20 20 |1024*290 | 00001a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a f4 | :.| 00001a20 20 34 35 6b 0d 01 00 35 70 69 63 74 75 72 65 32 | 45k...5picture2| 00001a30 25 3d 4b 25 2b 31 30 32 34 2a 33 33 35 20 20 20 |%=K%+1024*335 | 00001a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001a50 20 20 20 3a f4 20 34 35 6b 0d 01 01 34 6d 5f 63 | :. 45k...4m_c| 00001a60 6f 64 65 31 25 3d 4b 25 2b 31 30 32 34 2a 33 38 |ode1%=K%+1024*38| 00001a70 30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |0 | 00001a80 20 20 20 20 20 20 20 20 3a f4 20 35 6b 0d 01 02 | :. 5k...| 00001a90 34 6d 5f 63 6f 64 65 32 25 3d 4b 25 2b 31 30 32 |4m_code2%=K%+102| 00001aa0 34 2a 33 38 35 20 20 20 20 20 20 20 20 20 20 20 |4*385 | 00001ab0 20 20 20 20 20 20 20 20 20 20 20 20 3a f4 20 34 | :. 4| 00001ac0 6b 0d 01 03 34 6e 75 6d 5f 73 74 6f 72 65 25 3d |k...4num_store%=| 00001ad0 4b 25 2b 31 30 32 34 2a 33 38 39 20 20 20 20 20 |K%+1024*389 | 00001ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001af0 3a f4 20 31 6b 0d 01 04 12 f4 20 50 41 47 45 3d |:. 1k..... PAGE=| 00001b00 4b 25 2b 33 39 30 4b 0d 01 05 23 e7 20 76 67 61 |K%+390K...#. vga| 00001b10 25 3d 31 20 3a ef 20 32 33 2c 31 37 2c 37 2c 32 |%=1 :. 23,17,7,2| 00001b20 2c 38 3b 31 36 3b 30 3b 30 3b 0d 01 06 1f 41 25 |,8;16;0;0;....A%| 00001b30 3d 91 3a e3 42 25 3d 30 b8 32 30 30 30 30 3a ed |=.:.B%=0.20000:.| 00001b40 3a 73 70 25 3d 91 2d 41 25 0d 01 07 35 e7 73 70 |:sp%=.-A%...5.sp| 00001b50 25 3c 35 20 7a 7a 25 3d 32 20 20 20 20 20 20 20 |%<5 zz%=2 | 00001b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001b70 20 20 20 20 20 20 20 3a f4 20 41 72 6d 36 0d 01 | :. Arm6..| 00001b80 08 33 e7 73 70 25 3e 34 20 80 20 73 70 25 3c 37 |.3.sp%>4 . sp%<7| 00001b90 20 7a 7a 25 3d 33 20 20 20 20 20 20 20 20 20 20 | zz%=3 | 00001ba0 20 20 20 20 20 20 20 20 20 20 3a f4 20 41 72 6d | :. Arm| 00001bb0 33 0d 01 09 36 e7 73 70 25 3e 34 20 80 20 73 70 |3...6.sp%>4 . sp| 00001bc0 25 3c 37 20 80 20 56 25 3d 31 20 7a 7a 25 3d 34 |%<7 . V%=1 zz%=4| 00001bd0 20 20 20 20 20 20 20 20 20 20 20 3a f4 20 41 72 | :. Ar| 00001be0 6d 33 20 2b 56 47 41 0d 01 0a 35 e7 73 70 25 3e |m3 +VGA...5.sp%>| 00001bf0 38 20 7a 7a 25 3d 34 20 20 20 20 20 20 20 20 20 |8 zz%=4 | 00001c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001c10 20 20 20 20 20 3a f4 20 41 72 6d 32 0d 01 0b 05 | :. Arm2....| 00001c20 e1 0d 01 0c 04 0d 01 0d 17 dd f2 70 75 6c 6c 5f |...........pull_| 00001c30 67 65 6e 5f 63 6f 64 65 5f 76 61 72 0d 01 0e 0f |gen_code_var....| 00001c40 43 25 3d 6d 5f 63 6f 64 65 31 25 0d 01 0f 16 64 |C%=m_code1%....d| 00001c50 75 6d 70 5f 73 70 72 69 74 65 25 3d 21 28 43 25 |ump_sprite%=!(C%| 00001c60 29 0d 01 10 17 6d 6f 76 65 5f 62 6c 6f 63 6b 25 |)....move_block%| 00001c70 3d 21 28 43 25 2b 34 29 0d 01 11 1b 73 63 72 65 |=!(C%+4)....scre| 00001c80 65 6e 5f 6f 66 66 73 65 74 73 25 3d 21 28 43 25 |en_offsets%=!(C%| 00001c90 2b 38 29 0d 01 12 1a 65 66 66 65 63 74 5f 73 74 |+8)....effect_st| 00001ca0 61 72 74 25 3d 21 28 43 25 2b 31 32 29 0d 01 13 |art%=!(C%+12)...| 00001cb0 19 73 61 76 65 5f 73 63 72 65 65 6e 25 3d 21 28 |.save_screen%=!(| 00001cc0 43 25 2b 31 36 29 0d 01 14 1f e7 56 25 3d 31 20 |C%+16).....V%=1 | 00001cd0 73 61 76 65 5f 73 63 72 65 65 6e 25 3d 21 28 43 |save_screen%=!(C| 00001ce0 25 2b 32 38 29 0d 01 15 17 64 75 6d 70 5f 73 70 |%+28)....dump_sp| 00001cf0 72 69 74 65 32 25 3d 21 28 43 25 29 0d 01 16 19 |rite2%=!(C%)....| 00001d00 6d 73 63 72 65 65 6e 5f 6f 6e 65 25 3d 21 28 43 |mscreen_one%=!(C| 00001d10 25 2b 32 30 29 0d 01 17 19 6d 73 63 72 65 65 6e |%+20)....mscreen| 00001d20 5f 74 77 6f 25 3d 21 28 43 25 2b 32 34 29 0d 01 |_two%=!(C%+24)..| 00001d30 18 21 21 28 6d 73 63 72 65 65 6e 5f 6f 6e 65 25 |.!!(mscreen_one%| 00001d40 2b 30 29 3d 73 63 72 65 65 6e 5f 6f 6e 65 25 0d |+0)=screen_one%.| 00001d50 01 19 21 21 28 6d 73 63 72 65 65 6e 5f 74 77 6f |..!!(mscreen_two| 00001d60 25 2b 30 29 3d 73 63 72 65 65 6e 5f 74 77 6f 25 |%+0)=screen_two%| 00001d70 0d 01 1a 05 e1 0d 01 1b 04 0d 01 1c 12 dd f2 66 |...............f| 00001d80 69 6e 64 5f 73 63 72 65 65 6e 73 0d 01 1d 0c 2a |ind_screens....*| 00001d90 66 78 31 31 32 2c 32 0d 01 1e 21 73 63 72 65 65 |fx112,2...!scree| 00001da0 6e 5f 74 77 6f 25 3d a4 66 69 6e 64 5f 73 63 72 |n_two%=.find_scr| 00001db0 65 65 6e 28 31 34 38 29 0d 01 1f 0c 2a 66 78 31 |een(148)....*fx1| 00001dc0 31 32 2c 31 0d 01 20 21 73 63 72 65 65 6e 5f 6f |12,1.. !screen_o| 00001dd0 6e 65 25 3d a4 66 69 6e 64 5f 73 63 72 65 65 6e |ne%=.find_screen| 00001de0 28 31 34 38 29 0d 01 21 05 e1 0d 01 22 04 0d 01 |(148)..!...."...| 00001df0 23 17 dd a4 66 69 6e 64 5f 73 63 72 65 65 6e 28 |#...find_screen(| 00001e00 73 63 72 25 29 0d 01 24 2a 21 69 6e 70 75 74 25 |scr%)..$*!input%| 00001e10 3d 73 63 72 25 20 20 20 20 20 20 20 20 20 20 20 |=scr% | 00001e20 20 20 3a f4 20 31 34 38 20 4f 52 20 31 34 39 0d | :. 148 OR 149.| 00001e30 01 25 12 21 28 69 6e 70 75 74 25 2b 34 29 3d 2d |.%.!(input%+4)=-| 00001e40 31 0d 01 26 2b c8 99 20 22 4f 53 5f 52 65 61 64 |1..&+.. "OS_Read| 00001e50 56 64 75 56 61 72 69 61 62 6c 65 73 22 2c 69 6e |VduVariables",in| 00001e60 70 75 74 25 2c 6f 75 74 70 75 74 25 0d 01 27 0d |put%,output%..'.| 00001e70 3d 21 6f 75 74 70 75 74 25 0d 01 28 04 0d 01 29 |=!output%..(...)| 00001e80 14 dd a4 72 65 61 64 73 79 73 76 61 72 28 61 24 |...readsysvar(a$| 00001e90 29 0d 01 2a 4f c8 99 20 22 4f 53 5f 52 65 61 64 |)..*O.. "OS_Read| 00001ea0 56 61 72 56 61 6c 22 2c 61 24 2c 62 6c 6b 25 2c |VarVal",a$,blk%,| 00001eb0 32 35 36 2c 30 2c 30 20 b8 20 2c 2c 61 25 3a 61 |256,0,0 . ,,a%:a| 00001ec0 24 3d 22 22 3a e3 41 25 3d 30 b8 61 25 2d 31 3a |$="":.A%=0.a%-1:| 00001ed0 61 24 2b 3d bd 28 62 6c 6b 25 3f 41 25 29 3a ed |a$+=.(blk%?A%):.| 00001ee0 0d 01 2b 07 3d 61 24 0d 01 2c 04 0d 01 2d 14 dd |..+.=a$..,...-..| 00001ef0 a4 72 65 61 64 73 74 72 69 6e 67 28 70 25 29 0d |.readstring(p%).| 00001f00 01 2e 32 ea 61 24 3a 61 24 3d 22 22 3a c8 95 20 |..2.a$:a$="":.. | 00001f10 a9 61 24 3c 32 35 35 20 80 20 3f 70 25 3e 33 31 |.a$<255 . ?p%>31| 00001f20 20 61 24 2b 3d bd 3f 70 25 3a 70 25 2b 3d 31 3a | a$+=.?p%:p%+=1:| 00001f30 ce 0d 01 2f 07 3d 61 24 0d 01 30 04 0d 01 31 2f |.../.=a$..0...1/| 00001f40 dd f2 66 61 64 65 28 78 25 2c 79 25 2c 73 69 7a |..fade(x%,y%,siz| 00001f50 65 25 2c 63 6f 6c 5f 73 74 25 2c 63 79 63 6c 65 |e%,col_st%,cycle| 00001f60 25 2c 6f 66 66 73 65 74 73 25 29 0d 01 32 0b ea |%,offsets%)..2..| 00001f70 20 46 25 2c 47 25 0d 01 33 0c 73 66 66 66 25 3d | F%,G%..3.sfff%=| 00001f80 46 25 0d 01 34 0c 73 67 67 67 25 3d 47 25 0d 01 |F%..4.sggg%=G%..| 00001f90 35 2c f4 20 41 25 3d 77 69 64 74 68 20 69 6e 20 |5,. A%=width in | 00001fa0 70 69 78 65 6c 73 20 42 25 3d 68 65 69 67 68 74 |pixels B%=height| 00001fb0 20 69 6e 20 70 69 78 65 6c 73 0d 01 36 43 c8 99 | in pixels..6C..| 00001fc0 22 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c 26 31 |"OS_SpriteOp",&1| 00001fd0 32 38 2c 73 70 72 69 74 65 5f 61 72 65 61 31 25 |28,sprite_area1%| 00001fe0 2c 66 61 64 65 24 20 b8 20 72 30 2c 72 31 2c 72 |,fade$ . r0,r1,r| 00001ff0 32 2c 41 25 2c 42 25 2c 72 35 2c 72 36 0d 01 37 |2,A%,B%,r5,r6..7| 00002000 0b 41 25 3d 41 25 2f 32 0d 01 38 1d f4 20 43 25 |.A%=A%/2..8.. C%| 00002010 3d 20 73 63 72 65 65 6e 20 73 74 61 72 74 20 6f |= screen start o| 00002020 66 66 73 65 74 0d 01 39 27 e7 56 25 3d 30 20 43 |ffset..9'.V%=0 C| 00002030 25 3d 28 78 25 2f 34 29 2b 28 28 28 31 30 32 34 |%=(x%/4)+(((1024| 00002040 2d 79 25 29 2f 34 29 2a 33 32 30 29 0d 01 3a 26 |-y%)/4)*320)..:&| 00002050 e7 56 25 3d 31 20 43 25 3d 28 78 25 2f 34 29 2b |.V%=1 C%=(x%/4)+| 00002060 28 28 28 39 36 30 2d 79 25 29 2f 34 29 2a 33 32 |(((960-y%)/4)*32| 00002070 30 29 0d 01 3b 29 f4 20 49 46 56 25 3d 31 20 43 |0)..;). IFV%=1 C| 00002080 25 3d 28 78 25 2f 34 29 2b 28 28 28 39 36 30 2d |%=(x%/4)+(((960-| 00002090 79 25 29 2f 34 29 2a 33 32 30 29 0d 01 3c 20 f4 |y%)/4)*320)..< .| 000020a0 20 44 25 20 62 6c 6f 63 6b 20 78 20 20 20 20 20 | D% block x | 000020b0 20 45 25 20 62 6c 6f 63 6b 20 79 0d 01 3d 1e 44 | E% block y..=.D| 000020c0 25 3d 73 69 7a 65 25 3a 45 25 3d 73 69 7a 65 25 |%=size%:E%=size%| 000020d0 2b 28 76 67 61 25 2a 34 29 0d 01 3e 1b f4 20 46 |+(vga%*4)..>.. F| 000020e0 25 20 3d 73 70 72 69 74 65 20 64 61 74 61 20 73 |% =sprite data s| 000020f0 74 61 72 74 0d 01 3f 39 c8 99 22 4f 53 5f 53 70 |tart..?9.."OS_Sp| 00002100 72 69 74 65 4f 70 22 2c 26 31 31 38 2c 73 70 72 |riteOp",&118,spr| 00002110 69 74 65 5f 61 72 65 61 31 25 2c 66 61 64 65 24 |ite_area1%,fade$| 00002120 20 b8 20 72 30 2c 72 31 2c 61 64 64 25 0d 01 40 | . r0,r1,add%..@| 00002130 16 46 25 3d 61 64 64 25 2b 21 28 61 64 64 25 2b |.F%=add%+!(add%+| 00002140 33 32 29 0d 01 41 10 47 25 3d 70 69 63 74 75 72 |32)..A.G%=pictur| 00002150 65 32 25 0d 01 42 21 e7 6f 66 66 73 65 74 73 25 |e2%..B!.offsets%| 00002160 3d 31 20 d6 20 73 63 72 65 65 6e 5f 6f 66 66 73 |=1 . screen_offs| 00002170 65 74 73 25 0d 01 43 26 41 25 3d 34 36 20 20 20 |ets%..C&A%=46 | 00002180 20 20 20 20 20 20 20 20 20 20 20 3a f4 20 74 6f | :. to| 00002190 74 61 6c 20 63 79 63 6c 65 73 0d 01 44 25 42 25 |tal cycles..D%B%| 000021a0 3d 63 6f 6c 5f 73 74 25 20 20 20 20 20 20 20 20 |=col_st% | 000021b0 20 3a f4 20 6e 65 78 74 20 63 6f 6c 6f 75 72 0d | :. next colour.| 000021c0 01 45 3b 43 25 3d 63 79 63 6c 65 25 20 20 20 20 |.E;C%=cycle% | 000021d0 20 20 20 20 20 20 3a f4 20 6e 65 78 74 20 63 79 | :. next cy| 000021e0 63 6c 65 20 62 65 66 6f 72 65 20 63 6f 6c 6f 75 |cle before colou| 000021f0 72 20 73 74 61 72 74 69 6e 67 0d 01 46 1e 44 25 |r starting..F.D%| 00002200 3d 38 3a 45 25 3d 34 2a 28 56 25 2b 31 29 20 20 |=8:E%=4*(V%+1) | 00002210 20 3a f4 20 73 69 7a 65 0d 01 47 1e e7 20 7a 7a | :. size..G.. zz| 00002220 25 3d 31 20 46 25 3d 33 30 30 30 30 20 20 3a f4 |%=1 F%=30000 :.| 00002230 20 70 61 75 73 65 0d 01 48 1e e7 20 7a 7a 25 3d | pause..H.. zz%=| 00002240 32 20 46 25 3d 32 35 30 30 30 20 20 3a f4 20 70 |2 F%=25000 :. p| 00002250 61 75 73 65 0d 01 49 1e e7 20 7a 7a 25 3d 33 20 |ause..I.. zz%=3 | 00002260 46 25 3d 31 35 30 30 30 20 20 3a f4 20 70 61 75 |F%=15000 :. pau| 00002270 73 65 0d 01 4a 1e e7 20 7a 7a 25 3d 34 20 46 25 |se..J.. zz%=4 F%| 00002280 3d 32 30 30 30 20 20 20 3a f4 20 70 61 75 73 65 |=2000 :. pause| 00002290 0d 01 4b 3b 47 25 3d 70 69 63 74 75 72 65 32 25 |..K;G%=picture2%| 000022a0 20 3a f4 20 47 69 76 65 20 63 6f 64 65 20 77 6f | :. Give code wo| 000022b0 72 6b 20 73 70 61 63 65 20 74 6f 20 73 74 6f 72 |rk space to stor| 000022c0 65 20 61 64 64 72 65 73 73 65 73 0d 01 4c 13 d6 |e addresses..L..| 000022d0 20 65 66 66 65 63 74 5f 73 74 61 72 74 25 0d 01 | effect_start%..| 000022e0 4d 0c 46 25 3d 73 66 66 66 25 0d 01 4e 0c 47 25 |M.F%=sfff%..N.G%| 000022f0 3d 73 67 67 67 25 0d 01 4f 05 e1 0d 01 50 04 0d |=sggg%..O....P..| 00002300 01 51 12 dd f2 63 68 61 69 6e 28 66 69 6c 65 24 |.Q...chain(file$| 00002310 29 0d 01 52 3c e7 66 69 6c 65 24 3d 22 50 74 30 |)..R<.file$="Pt0| 00002320 2e 6c 69 6e 6b 22 3a 64 6e 61 6d 65 24 3d 22 5a |.link":dname$="Z| 00002330 65 72 6f 22 3a 70 61 74 68 24 3d 22 24 2e 21 54 |ero":path$="$.!T| 00002340 61 62 6c 65 73 2e 22 2b 66 69 6c 65 24 0d 01 53 |ables."+file$..S| 00002350 3b e7 66 69 6c 65 24 3d 22 50 74 31 2e 6c 69 6e |;.file$="Pt1.lin| 00002360 6b 22 3a 64 6e 61 6d 65 24 3d 22 4f 6e 65 22 3a |k":dname$="One":| 00002370 70 61 74 68 24 3d 22 24 2e 21 54 61 62 6c 65 73 |path$="$.!Tables| 00002380 2e 22 2b 66 69 6c 65 24 0d 01 54 3b e7 66 69 6c |."+file$..T;.fil| 00002390 65 24 3d 22 50 74 32 2e 6c 69 6e 6b 22 3a 64 6e |e$="Pt2.link":dn| 000023a0 61 6d 65 24 3d 22 54 77 6f 22 3a 70 61 74 68 24 |ame$="Two":path$| 000023b0 3d 22 24 2e 21 54 61 62 6c 65 73 2e 22 2b 66 69 |="$.!Tables."+fi| 000023c0 6c 65 24 0d 01 55 3d e7 66 69 6c 65 24 3d 22 50 |le$..U=.file$="P| 000023d0 74 33 2e 6c 69 6e 6b 22 3a 64 6e 61 6d 65 24 3d |t3.link":dname$=| 000023e0 22 54 68 72 65 65 22 3a 70 61 74 68 24 3d 22 24 |"Three":path$="$| 000023f0 2e 21 54 61 62 6c 65 73 2e 22 2b 66 69 6c 65 24 |.!Tables."+file$| 00002400 0d 01 56 0b e7 59 25 3d 30 20 8c 0d 01 57 0c 20 |..V..Y%=0 ...W. | 00002410 20 65 72 72 25 3d 30 0d 01 58 36 20 20 74 65 73 | err%=0..X6 tes| 00002420 74 25 3d 30 3a f5 3a f2 66 6c 6f 70 70 79 5f 64 |t%=0:.:.floppy_d| 00002430 69 73 6b 28 64 6e 61 6d 65 24 2c 70 61 74 68 24 |isk(dname$,path$| 00002440 2c 22 24 2e 21 54 61 62 6c 65 73 22 29 0d 01 59 |,"$.!Tables")..Y| 00002450 14 20 20 e7 65 72 72 25 3d 31 37 20 65 72 72 6f |. .err%=17 erro| 00002460 72 0d 01 5a 0f 20 20 fd 65 72 72 6f 72 25 3d 30 |r..Z. .error%=0| 00002470 0d 01 5b 05 cd 0d 01 5c 1f 66 69 6c 65 24 3d 22 |..[....\.file$="| 00002480 3c 54 61 62 6c 65 41 24 64 69 72 3e 2e 22 2b 66 |<TableA$dir>."+f| 00002490 69 6c 65 24 0d 01 5d 0a d7 66 69 6c 65 24 0d 01 |ile$..]..file$..| 000024a0 5e 05 fa 0d 01 5f 04 0d 01 60 24 dd f2 66 6c 6f |^...._...`$..flo| 000024b0 70 70 79 5f 64 69 73 6b 28 64 6e 61 6d 65 24 2c |ppy_disk(dname$,| 000024c0 70 61 74 68 24 2c 73 65 74 24 29 0d 01 61 42 c8 |path$,set$)..aB.| 000024d0 99 20 22 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c |. "OS_SpriteOp",| 000024e0 26 31 31 30 2c 73 70 72 69 74 65 5f 61 72 65 61 |&110,sprite_area| 000024f0 31 25 2c 22 6c 6f 61 64 73 63 22 2c 30 2c 34 30 |1%,"loadsc",0,40| 00002500 30 2c 34 33 36 2c 38 38 30 2c 36 33 36 0d 01 62 |0,436,880,636..b| 00002510 06 ea 85 0d 01 63 89 ee 85 ea 3a 65 72 72 25 3d |.....c....:err%=| 00002520 9f 3a f7 20 85 3a c8 99 20 22 4f 53 5f 53 70 72 |.:. .:.. "OS_Spr| 00002530 69 74 65 4f 70 22 2c 26 31 33 34 2c 73 70 72 69 |iteOp",&134,spri| 00002540 74 65 5f 61 72 65 61 31 25 2c 22 6c 6f 61 64 73 |te_area1%,"loads| 00002550 63 22 2c 34 30 30 2c 34 33 36 2c 30 3a c8 99 20 |c",400,436,0:.. | 00002560 22 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c 26 31 |"OS_SpriteOp",&1| 00002570 31 39 2c 73 70 72 69 74 65 5f 61 72 65 61 31 25 |19,sprite_area1%| 00002580 2c 22 6c 6f 61 64 73 63 22 3a 65 72 72 6f 72 25 |,"loadsc":error%| 00002590 3d 31 3a 74 65 73 74 25 3d 31 3a e1 0d 01 64 05 |=1:test%=1:...d.| 000025a0 f5 0d 01 65 0e 20 20 65 72 72 6f 72 25 3d 30 0d |...e. error%=0.| 000025b0 01 66 10 20 20 e7 74 65 73 74 25 3d 31 20 8c 0d |.f. .test%=1 ..| 000025c0 01 67 48 20 20 20 ef 32 34 2c 34 30 30 3b 34 33 |.gH .24,400;43| 000025d0 36 3b 38 38 30 3b 36 33 36 3b 31 38 2c 30 2c 31 |6;880;636;18,0,1| 000025e0 33 31 2c 31 36 2c 32 34 2c 34 30 34 3b 34 34 30 |31,16,24,404;440| 000025f0 3b 38 37 36 3b 36 33 32 3b 31 38 2c 30 2c 31 32 |;876;632;18,0,12| 00002600 38 2c 31 36 2c 32 36 0d 01 68 0a 20 20 20 c8 97 |8,16,26..h. ..| 00002610 ee 0d 01 69 23 20 20 20 f2 70 72 69 28 34 33 30 |...i# .pri(430| 00002620 2c 35 37 32 2c 22 50 6c 65 61 73 65 20 70 6c 61 |,572,"Please pla| 00002630 63 65 22 29 0d 01 6a 23 20 20 20 f2 70 72 69 28 |ce")..j# .pri(| 00002640 34 33 30 2c 35 31 38 2c 22 64 69 73 6b 20 22 2b |430,518,"disk "+| 00002650 64 6e 61 6d 65 24 29 0d 01 6b 18 20 20 20 6f 6b |dname$)..k. ok| 00002660 78 25 3d 37 36 30 3a 6f 6b 79 25 3d 34 35 36 0d |x%=760:oky%=456.| 00002670 01 6c 48 20 20 20 e6 30 2c 33 3a ef 32 35 2c 34 |.lH .0,3:.25,4| 00002680 2c 6f 6b 78 25 3b 6f 6b 79 25 3b 32 35 2c 31 2c |,okx%;oky%;25,1,| 00002690 31 30 30 3b 30 3b 32 35 2c 31 2c 30 3b 35 36 3b |100;0;25,1,0;56;| 000026a0 32 35 2c 31 2c 2d 31 30 30 3b 30 3b 32 35 2c 31 |25,1,-100;0;25,1| 000026b0 2c 30 3b 2d 35 36 3b 0d 01 6d 2c 20 20 20 e6 30 |,0;-56;..m, .0| 000026c0 2c 30 3a ef 32 35 2c 34 2c 6f 6b 78 25 2b 32 3b |,0:.25,4,okx%+2;| 000026d0 6f 6b 79 25 2b 34 3b 32 35 2c 39 37 2c 39 36 3b |oky%+4;25,97,96;| 000026e0 34 38 3b 0d 01 6e 2f 20 20 20 f2 70 72 69 28 34 |48;..n/ .pri(4| 000026f0 33 30 2c 34 36 34 2c 22 69 6e 20 64 72 69 76 65 |30,464,"in drive| 00002700 20 30 20 20 20 20 20 20 20 20 20 20 20 20 4f 4b | 0 OK| 00002710 22 29 0d 01 6f 0a 20 20 20 c8 97 ee 0d 01 70 50 |")..o. .....pP| 00002720 20 20 20 f5 3a c8 97 6d 78 25 2c 6d 79 25 2c 6d | .:..mx%,my%,m| 00002730 63 25 3a fd 6d 63 25 3d 34 20 80 20 6d 78 25 3e |c%:.mc%=4 . mx%>| 00002740 6f 6b 78 25 20 80 20 6d 78 25 3c 6f 6b 78 25 2b |okx% . mx%<okx%+| 00002750 31 30 30 20 80 20 6d 79 25 3e 6f 6b 79 25 20 80 |100 . my%>oky% .| 00002760 20 6d 79 25 3c 6f 6b 79 25 2b 35 38 0d 01 71 07 | my%<oky%+58..q.| 00002770 20 20 cd 0d 01 72 0b 20 20 2a 41 44 46 53 0d 01 | ...r. *ADFS..| 00002780 73 0e 20 20 2a 4d 4f 55 4e 54 20 30 0d 01 74 27 |s. *MOUNT 0..t'| 00002790 20 20 e7 64 6e 61 6d 65 24 3d 22 5a 65 72 6f 22 | .dname$="Zero"| 000027a0 3a 64 6c 61 62 65 6c 6e 61 6d 65 24 3d 22 5a 65 |:dlabelname$="Ze| 000027b0 72 6f 22 0d 01 75 25 20 20 e7 64 6e 61 6d 65 24 |ro"..u% .dname$| 000027c0 3d 22 4f 6e 65 22 3a 64 6c 61 62 65 6c 6e 61 6d |="One":dlabelnam| 000027d0 65 24 3d 22 4f 6e 65 22 0d 01 76 25 20 20 e7 64 |e$="One"..v% .d| 000027e0 6e 61 6d 65 24 3d 22 54 77 6f 22 3a 64 6c 61 62 |name$="Two":dlab| 000027f0 65 6c 6e 61 6d 65 24 3d 22 54 77 6f 22 0d 01 77 |elname$="Two"..w| 00002800 29 20 20 e7 64 6e 61 6d 65 24 3d 22 54 68 72 65 |) .dname$="Thre| 00002810 65 22 3a 64 6c 61 62 65 6c 6e 61 6d 65 24 3d 22 |e":dlabelname$="| 00002820 54 68 72 65 65 22 0d 01 78 25 20 20 c8 99 22 4f |Three"..x% .."O| 00002830 53 5f 47 42 50 42 22 2c 35 2c 2c 69 6e 70 75 74 |S_GBPB",5,,input| 00002840 5f 64 69 73 6b 5f 6e 61 6d 65 25 0d 01 79 29 20 |_disk_name%..y) | 00002850 20 6c 65 6e 5f 64 5f 6e 25 3d 3f 69 6e 70 75 74 | len_d_n%=?input| 00002860 5f 64 69 73 6b 5f 6e 61 6d 65 25 3a 6e 61 6d 65 |_disk_name%:name| 00002870 24 3d 22 22 0d 01 7a 15 20 20 e3 64 6e 25 3d 31 |$=""..z. .dn%=1| 00002880 b8 6c 65 6e 5f 64 5f 6e 25 0d 01 7b 48 20 20 e7 |.len_d_n%..{H .| 00002890 3f 28 69 6e 70 75 74 5f 64 69 73 6b 5f 6e 61 6d |?(input_disk_nam| 000028a0 65 25 2b 64 6e 25 29 3e 33 31 3a 6e 61 6d 65 24 |e%+dn%)>31:name$| 000028b0 3d 6e 61 6d 65 24 2b bd 28 3f 28 69 6e 70 75 74 |=name$+.(?(input| 000028c0 5f 64 69 73 6b 5f 6e 61 6d 65 25 2b 64 6e 25 29 |_disk_name%+dn%)| 000028d0 29 0d 01 7c 07 20 20 ed 0d 01 7d 3c 20 20 c8 99 |)..|. ...}< ..| 000028e0 20 22 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c 26 | "OS_SpriteOp",&| 000028f0 31 32 32 2c 73 70 72 69 74 65 5f 61 72 65 61 31 |122,sprite_area1| 00002900 25 2c 22 6c 6f 61 64 73 63 22 2c 34 30 30 2c 34 |%,"loadsc",400,4| 00002910 33 36 2c 30 0d 01 7e 22 20 20 e7 6e 61 6d 65 24 |36,0..~" .name$| 00002920 3c 3e 64 6c 61 62 65 6c 6e 61 6d 65 24 3a 65 72 |<>dlabelname$:er| 00002930 72 6f 72 25 3d 31 0d 01 7f 0d 20 20 74 65 73 74 |ror%=1.... test| 00002940 25 3d 31 0d 01 80 1d 20 20 ff 22 53 45 54 20 54 |%=1.... ."SET T| 00002950 61 62 6c 65 41 24 64 69 72 20 22 2b 73 65 74 24 |ableA$dir "+set$| 00002960 0d 01 81 22 20 20 c8 99 20 22 58 4f 53 5f 46 69 |..." .. "XOS_Fi| 00002970 6e 64 22 2c 26 34 30 2c 70 61 74 68 24 20 b8 20 |nd",&40,path$ . | 00002980 68 25 0d 01 82 17 fd 68 25 80 28 65 72 72 6f 72 |h%.....h%.(error| 00002990 25 3d 30 29 3a d9 23 68 25 0d 01 83 3a c8 99 20 |%=0):.#h%...:.. | 000029a0 22 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c 26 31 |"OS_SpriteOp",&1| 000029b0 32 32 2c 73 70 72 69 74 65 5f 61 72 65 61 31 25 |22,sprite_area1%| 000029c0 2c 22 6c 6f 61 64 73 63 22 2c 34 30 30 2c 34 33 |,"loadsc",400,43| 000029d0 36 2c 30 0d 01 84 30 c8 99 20 22 4f 53 5f 53 70 |6,0...0.. "OS_Sp| 000029e0 72 69 74 65 4f 70 22 2c 26 31 31 39 2c 73 70 72 |riteOp",&119,spr| 000029f0 69 74 65 5f 61 72 65 61 31 25 2c 22 6c 6f 61 64 |ite_area1%,"load| 00002a00 73 63 22 0d 01 85 07 f7 20 85 0d 01 86 05 e1 0d |sc"..... .......| 00002a10 01 87 04 0d 01 88 1b dd f2 73 63 72 65 65 6e 5f |.........screen_| 00002a20 73 61 76 65 28 64 69 73 6b 72 65 74 25 29 0d 01 |save(diskret%)..| 00002a30 89 0e f2 70 61 75 73 65 28 35 30 29 0d 01 8a 07 |...pause(50)....| 00002a40 ef 32 36 0d 01 8b 0b e7 59 25 3d 30 20 8c 0d 01 |.26.....Y%=0 ...| 00002a50 8c 1a 20 20 20 f2 66 6c 6f 70 70 79 5f 73 63 72 |.. .floppy_scr| 00002a60 65 65 6e 5f 73 61 76 65 0d 01 8d 12 20 20 20 e7 |een_save.... .| 00002a70 65 72 72 6f 72 25 3d 31 20 8c 0d 01 8e 47 20 20 |error%=1 ....G | 00002a80 20 20 20 c8 99 20 22 4f 53 5f 53 70 72 69 74 65 | .. "OS_Sprite| 00002a90 4f 70 22 2c 26 31 31 30 2c 73 70 72 69 74 65 5f |Op",&110,sprite_| 00002aa0 61 72 65 61 31 25 2c 22 6c 6f 61 64 73 63 22 2c |area1%,"loadsc",| 00002ab0 30 2c 34 30 30 2c 34 33 36 2c 38 38 30 2c 36 33 |0,400,436,880,63| 00002ac0 36 0d 01 8f 4a 20 20 20 20 20 ef 32 34 2c 34 30 |6...J .24,40| 00002ad0 30 3b 34 33 36 3b 38 38 30 3b 36 33 36 3b 31 38 |0;436;880;636;18| 00002ae0 2c 30 2c 31 33 31 2c 31 36 2c 32 34 2c 34 30 34 |,0,131,16,24,404| 00002af0 3b 34 34 30 3b 38 37 36 3b 36 33 32 3b 31 38 2c |;440;876;632;18,| 00002b00 30 2c 31 32 38 2c 31 36 2c 32 36 0d 01 90 0c 20 |0,128,16,26.... | 00002b10 20 20 20 20 c8 97 ee 0d 01 91 1f 20 20 20 20 20 | ....... | 00002b20 f2 70 72 69 28 34 33 30 2c 35 37 32 2c 22 45 72 |.pri(430,572,"Er| 00002b30 72 6f 72 2e 22 29 0d 01 92 2a 20 20 20 20 20 f2 |ror.")...* .| 00002b40 70 72 69 28 34 33 30 2c 35 31 38 2c 22 53 63 72 |pri(430,518,"Scr| 00002b50 65 65 6e 20 4e 4f 54 20 73 61 76 65 64 2e 22 29 |een NOT saved.")| 00002b60 0d 01 93 14 20 20 20 20 20 f2 70 61 75 73 65 28 |.... .pause(| 00002b70 32 30 30 29 0d 01 94 3f 20 20 20 20 20 c8 99 20 |200)...? .. | 00002b80 22 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c 26 31 |"OS_SpriteOp",&1| 00002b90 32 32 2c 73 70 72 69 74 65 5f 61 72 65 61 31 25 |22,sprite_area1%| 00002ba0 2c 22 6c 6f 61 64 73 63 22 2c 34 30 30 2c 34 33 |,"loadsc",400,43| 00002bb0 36 2c 30 0d 01 95 35 20 20 20 20 20 c8 99 20 22 |6,0...5 .. "| 00002bc0 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c 26 31 31 |OS_SpriteOp",&11| 00002bd0 39 2c 73 70 72 69 74 65 5f 61 72 65 61 31 25 2c |9,sprite_area1%,| 00002be0 22 6c 6f 61 64 73 63 22 0d 01 96 08 20 20 20 cd |"loadsc".... .| 00002bf0 0d 01 97 42 20 20 20 74 65 73 74 25 3d 30 3a 72 |...B test%=0:r| 00002c00 65 74 24 3d 22 22 3a f5 3a f2 66 6c 6f 70 70 79 |et$="":.:.floppy| 00002c10 5f 73 63 72 65 65 6e 5f 72 65 74 75 72 6e 28 64 |_screen_return(d| 00002c20 69 73 6b 72 65 74 25 29 3a fd 65 72 72 6f 72 25 |iskret%):.error%| 00002c30 3d 30 0d 01 98 05 cd 0d 01 99 1b e7 59 25 3d 31 |=0..........Y%=1| 00002c40 3a f2 68 61 72 64 5f 73 63 72 65 65 6e 5f 73 61 |:.hard_screen_sa| 00002c50 76 65 0d 01 9a 0e f2 70 61 75 73 65 28 35 30 29 |ve.....pause(50)| 00002c60 0d 01 9b 09 2a 66 78 31 35 0d 01 9c 05 e1 0d 01 |....*fx15.......| 00002c70 9d 04 0d 01 9e 0d dd f2 70 72 69 6e 74 65 72 0d |........printer.| 00002c80 01 9f 0b ea 20 46 25 2c 47 25 0d 01 a0 0c 73 66 |.... F%,G%....sf| 00002c90 66 66 25 3d 46 25 0d 01 a1 0c 73 67 67 67 25 3d |ff%=F%....sggg%=| 00002ca0 47 25 0d 01 a2 07 ef 32 36 0d 01 a3 35 c8 91 30 |G%.....26...5..0| 00002cb0 2c 30 3a c8 99 22 58 4f 53 5f 53 70 72 69 74 65 |,0:.."XOS_Sprite| 00002cc0 4f 70 22 2c 26 31 31 39 2c 73 70 72 69 74 65 5f |Op",&119,sprite_| 00002cd0 61 72 65 61 31 25 2c 22 62 6c 61 6e 6b 22 0d 01 |area1%,"blank"..| 00002ce0 a4 11 21 28 73 63 61 6c 65 25 2b 30 29 3d 31 0d |..!(scale%+0)=1.| 00002cf0 01 a5 11 21 28 73 63 61 6c 65 25 2b 34 29 3d 31 |...!(scale%+4)=1| 00002d00 0d 01 a6 11 21 28 73 63 61 6c 65 25 2b 38 29 3d |....!(scale%+8)=| 00002d10 31 0d 01 a7 12 21 28 73 63 61 6c 65 25 2b 31 32 |1....!(scale%+12| 00002d20 29 3d 31 0d 01 a8 0a ea 46 25 2c 45 25 0d 01 a9 |)=1.....F%,E%...| 00002d30 14 46 25 3d ae 28 22 70 72 69 6e 74 65 72 3a 22 |.F%=.("printer:"| 00002d40 29 0d 01 aa 14 c8 99 22 48 6f 75 72 67 6c 61 73 |)......"Hourglas| 00002d50 73 5f 4f 6e 22 0d 01 ab 07 ea 20 85 0d 01 ac 41 |s_On"..... ....A| 00002d60 ee 85 ea 3a f7 20 85 3a d9 23 46 25 3a ff 22 46 |...:. .:.#F%:."F| 00002d70 58 32 32 39 2c 30 22 3a 46 25 3d 73 66 66 66 25 |X229,0":F%=sfff%| 00002d80 3a 47 25 3d 73 67 67 67 25 3a c8 99 22 48 6f 75 |:G%=sggg%:.."Hou| 00002d90 72 67 6c 61 73 73 5f 4f 66 66 22 3a e1 0d 01 ad |rglass_Off":....| 00002da0 c1 f4 4f 4e 45 52 52 4f 52 4c 4f 43 41 4c 3a 52 |..ONERRORLOCAL:R| 00002db0 45 53 54 4f 52 45 20 45 52 52 4f 52 3a 43 4c 4f |ESTORE ERROR:CLO| 00002dc0 53 45 23 46 25 3a 4f 53 43 4c 49 22 46 58 32 32 |SE#F%:OSCLI"FX22| 00002dd0 39 2c 30 22 3a 53 59 53 22 4f 53 5f 42 79 74 65 |9,0":SYS"OS_Byte| 00002de0 22 2c 32 35 30 2c 30 2c 32 35 35 20 54 4f 20 2c |",250,0,255 TO ,| 00002df0 73 63 72 25 3a 53 59 53 22 4f 53 5f 42 79 74 65 |scr%:SYS"OS_Byte| 00002e00 22 2c 31 31 33 2c 73 63 72 25 3a 50 52 49 4e 54 |",113,scr%:PRINT| 00002e10 20 52 45 50 4f 52 54 24 2b 22 20 28 49 6e 74 65 | REPORT$+" (Inte| 00002e20 72 6e 61 6c 20 65 72 72 6f 72 20 63 6f 64 65 20 |rnal error code | 00002e30 22 2b 53 54 52 24 45 52 4c 2b 22 29 22 2b 43 48 |"+STR$ERL+")"+CH| 00002e40 52 24 30 3a 50 52 4f 43 77 61 69 74 28 35 30 30 |R$0:PROCwait(500| 00002e50 29 3a 50 52 4f 43 64 65 73 6b 5f 74 6f 70 0d 01 |):PROCdesk_top..| 00002e60 ae 20 c8 99 22 50 44 72 69 76 65 72 5f 53 65 6c |. .."PDriver_Sel| 00002e70 65 63 74 4a 6f 62 22 2c 46 25 2c 30 2c 30 0d 01 |ectJob",F%,0,0..| 00002e80 af 07 ea 20 85 0d 01 b0 72 ee 85 ea 3a f7 20 85 |... ....r...:. .| 00002e90 3a c8 99 22 50 44 72 69 76 65 72 5f 41 62 6f 72 |:.."PDriver_Abor| 00002ea0 74 4a 6f 62 22 2c 46 25 3a c8 99 22 50 44 72 69 |tJob",F%:.."PDri| 00002eb0 76 65 72 5f 53 65 6c 65 63 74 4a 6f 62 22 2c 45 |ver_SelectJob",E| 00002ec0 25 3a d9 23 46 25 3a ff 22 46 58 32 32 39 2c 30 |%:.#F%:."FX229,0| 00002ed0 22 3a 46 25 3d 73 66 66 66 25 3a 47 25 3d 73 67 |":F%=sfff%:G%=sg| 00002ee0 67 67 25 3a c8 99 22 48 6f 75 72 67 6c 61 73 73 |gg%:.."Hourglass| 00002ef0 5f 4f 66 66 22 3a e1 0d 01 b1 f4 f4 4f 4e 45 52 |_Off":......ONER| 00002f00 52 4f 52 4c 4f 43 41 4c 3a 52 45 53 54 4f 52 45 |RORLOCAL:RESTORE| 00002f10 20 45 52 52 4f 52 3a 53 59 53 22 50 44 72 69 76 | ERROR:SYS"PDriv| 00002f20 65 72 5f 41 62 6f 72 74 4a 6f 62 22 2c 46 25 3a |er_AbortJob",F%:| 00002f30 53 59 53 22 50 44 72 69 76 65 72 5f 53 65 6c 65 |SYS"PDriver_Sele| 00002f40 63 74 4a 6f 62 22 2c 45 25 3a 43 4c 4f 53 45 23 |ctJob",E%:CLOSE#| 00002f50 46 25 3a 4f 53 43 4c 49 22 46 58 32 32 39 2c 30 |F%:OSCLI"FX229,0| 00002f60 22 3a 53 59 53 22 4f 53 5f 42 79 74 65 22 2c 32 |":SYS"OS_Byte",2| 00002f70 35 30 2c 30 2c 32 35 35 20 54 4f 20 2c 73 63 72 |50,0,255 TO ,scr| 00002f80 25 3a 53 59 53 22 4f 53 5f 42 79 74 65 22 2c 31 |%:SYS"OS_Byte",1| 00002f90 31 33 2c 73 63 72 25 3a 50 52 49 4e 54 20 52 45 |13,scr%:PRINT RE| 00002fa0 50 4f 52 54 24 2b 22 20 28 49 6e 74 65 72 6e 61 |PORT$+" (Interna| 00002fb0 6c 20 65 72 72 6f 72 20 63 6f 64 65 20 22 2b 53 |l error code "+S| 00002fc0 54 52 24 45 52 4c 2b 22 29 22 2b 43 48 52 24 30 |TR$ERL+")"+CHR$0| 00002fd0 3a 50 52 4f 43 77 61 69 74 28 35 30 30 29 3a 50 |:PROCwait(500):P| 00002fe0 52 4f 43 64 65 73 6b 5f 74 6f 70 0d 01 b2 45 21 |ROCdesk_top...E!| 00002ff0 28 70 64 72 65 63 74 25 2b 30 29 3d 30 3a 21 28 |(pdrect%+0)=0:!(| 00003000 70 64 72 65 63 74 25 2b 34 29 3d 30 3a 21 28 70 |pdrect%+4)=0:!(p| 00003010 64 72 65 63 74 25 2b 38 29 3d 31 32 38 30 3a 21 |drect%+8)=1280:!| 00003020 28 70 64 72 65 63 74 25 2b 31 32 29 3d 39 36 30 |(pdrect%+12)=960| 00003030 0d 01 b3 4c 21 28 70 64 74 72 61 6e 73 25 2b 30 |...L!(pdtrans%+0| 00003040 29 3d 31 3c 3c 31 36 3a 21 28 70 64 74 72 61 6e |)=1<<16:!(pdtran| 00003050 73 25 2b 34 29 3d 30 3a 21 28 70 64 74 72 61 6e |s%+4)=0:!(pdtran| 00003060 73 25 2b 38 29 3d 30 3a 21 28 70 64 74 72 61 6e |s%+8)=0:!(pdtran| 00003070 73 25 2b 31 32 29 3d 31 3c 3c 31 36 0d 01 b4 2c |s%+12)=1<<16...,| 00003080 f4 21 28 70 64 70 6c 6f 74 25 2b 30 29 3d 31 32 |.!(pdplot%+0)=12| 00003090 38 3c 3c 38 3a 21 28 70 64 70 6c 6f 74 25 2b 34 |8<<8:!(pdplot%+4| 000030a0 29 3d 35 31 32 3c 3c 38 0d 01 b5 17 21 28 70 64 |)=512<<8....!(pd| 000030b0 70 6c 6f 74 25 2b 30 29 3d 31 32 38 3c 3c 38 0d |plot%+0)=128<<8.| 000030c0 01 b6 2f c8 99 22 50 44 72 69 76 65 72 5f 50 61 |../.."PDriver_Pa| 000030d0 67 65 53 69 7a 65 22 20 b8 20 72 30 2c 72 31 2c |geSize" . r0,r1,| 000030e0 72 32 2c 72 33 2c 72 34 2c 72 35 2c 72 36 0d 01 |r2,r3,r4,r5,r6..| 000030f0 b7 2d c8 99 22 50 44 72 69 76 65 72 5f 53 65 74 |.-.."PDriver_Set| 00003100 50 61 67 65 53 69 7a 65 22 2c 2c 72 31 2c 72 32 |PageSize",,r1,r2| 00003110 2c 72 33 2c 30 2c 72 35 2c 72 36 0d 01 b8 41 21 |,r3,0,r5,r6...A!| 00003120 28 70 64 70 6c 6f 74 25 2b 34 29 3d 72 36 2d 34 |(pdplot%+4)=r6-4| 00003130 30 30 30 30 30 3a e7 28 70 64 70 6c 6f 74 25 21 |00000:.(pdplot%!| 00003140 34 29 3c 28 35 31 32 3c 3c 38 29 3a 70 64 70 6c |4)<(512<<8):pdpl| 00003150 6f 74 25 21 34 3d 35 31 32 3c 3c 38 0d 01 b9 42 |ot%!4=512<<8...B| 00003160 c8 99 22 50 44 72 69 76 65 72 5f 47 69 76 65 52 |.."PDriver_GiveR| 00003170 65 63 74 61 6e 67 6c 65 22 2c 30 2c 70 64 72 65 |ectangle",0,pdre| 00003180 63 74 25 2c 70 64 74 72 61 6e 73 25 2c 70 64 70 |ct%,pdtrans%,pdp| 00003190 6c 6f 74 25 2c 26 46 46 46 46 46 46 30 30 0d 01 |lot%,&FFFFFF00..| 000031a0 ba 3f c8 99 20 22 4f 53 5f 53 70 72 69 74 65 4f |.?.. "OS_SpriteO| 000031b0 70 22 2c 26 31 33 43 2c 30 2c 30 2c 31 3a c8 99 |p",&13C,0,0,1:..| 000031c0 22 43 6f 6c 6f 75 72 54 72 61 6e 73 5f 49 6e 76 |"ColourTrans_Inv| 000031d0 61 6c 69 64 61 74 65 43 61 63 68 65 22 0d 01 bb |alidateCache"...| 000031e0 35 c8 99 22 50 44 72 69 76 65 72 5f 44 72 61 77 |5.."PDriver_Draw| 000031f0 50 61 67 65 22 2c 31 2c 70 64 72 65 63 74 32 25 |Page",1,pdrect2%| 00003200 2c 30 2c 30 20 b8 20 63 6f 70 69 65 73 6c 65 66 |,0,0 . copieslef| 00003210 74 25 0d 01 bc 15 c8 95 20 63 6f 70 69 65 73 6c |t%...... copiesl| 00003220 65 66 74 25 3c 3e 30 0d 01 bd 13 f2 70 64 5f 70 |eft%<>0.....pd_p| 00003230 6c 6f 74 5f 73 63 72 65 65 6e 0d 01 be 34 c8 99 |lot_screen...4..| 00003240 22 50 44 72 69 76 65 72 5f 47 65 74 52 65 63 74 |"PDriver_GetRect| 00003250 61 6e 67 6c 65 22 2c 2c 70 64 72 65 63 74 32 25 |angle",,pdrect2%| 00003260 20 b8 20 63 6f 70 69 65 73 6c 65 66 74 25 0d 01 | . copiesleft%..| 00003270 bf 05 ce 0d 01 c0 19 c8 99 22 50 44 72 69 76 65 |........."PDrive| 00003280 72 5f 45 6e 64 4a 6f 62 22 2c 46 25 0d 01 c1 07 |r_EndJob",F%....| 00003290 f7 20 85 0d 01 c2 07 f7 20 85 0d 01 c3 08 d9 23 |. ...... ......#| 000032a0 46 25 0d 01 c4 3c f4 53 59 53 22 4f 53 5f 53 70 |F%...<.SYS"OS_Sp| 000032b0 72 69 74 65 4f 70 22 2c 26 31 30 46 2c 73 70 72 |riteOp",&10F,spr| 000032c0 69 74 65 5f 61 72 65 61 25 2c 22 62 6c 61 6e 6b |ite_area%,"blank| 000032d0 22 2c 30 2c 33 38 34 2c 31 39 32 2c 31 32 0d 01 |",0,384,192,12..| 000032e0 c5 0c 2a 46 58 32 32 39 2c 30 0d 01 c6 0c 46 25 |..*FX229,0....F%| 000032f0 3d 73 66 66 66 25 0d 01 c7 0c 47 25 3d 73 67 67 |=sfff%....G%=sgg| 00003300 67 25 0d 01 c8 15 c8 99 22 48 6f 75 72 67 6c 61 |g%......"Hourgla| 00003310 73 73 5f 4f 66 66 22 0d 01 c9 05 e1 0d 01 ca 04 |ss_Off".........| 00003320 0d 01 cb 14 dd f2 70 64 5f 70 6c 6f 74 5f 73 63 |......pd_plot_sc| 00003330 72 65 65 6e 0d 01 cc 13 ea 79 25 2c 70 25 2c 69 |reen.....y%,p%,i| 00003340 25 2c 66 25 2c 74 25 0d 01 cd 0c 2a 46 58 32 32 |%,f%,t%....*FX22| 00003350 39 2c 31 0d 01 ce 13 e3 79 25 3d 30 b8 39 36 30 |9,1.....y%=0.960| 00003360 2d 32 34 88 32 34 0d 01 cf 1f c8 99 22 50 44 72 |-24.24......"PDr| 00003370 69 76 65 72 5f 53 65 6c 65 63 74 4a 6f 62 22 2c |iver_SelectJob",| 00003380 30 2c 30 2c 30 0d 01 d0 4e c8 99 22 4f 53 5f 53 |0,0,0...N.."OS_S| 00003390 70 72 69 74 65 4f 70 22 2c 26 31 31 30 2c 73 70 |priteOp",&110,sp| 000033a0 72 69 74 65 5f 61 72 65 61 31 25 2c 22 62 6c 61 |rite_area1%,"bla| 000033b0 6e 6b 22 2c 31 2c 30 2c 79 25 2c 31 32 37 39 2c |nk",1,0,y%,1279,| 000033c0 79 25 2b 32 34 20 b8 20 72 30 25 2c 72 31 25 2c |y%+24 . r0%,r1%,| 000033d0 72 32 25 0d 01 d1 3c 21 28 73 63 61 6c 65 25 2b |r2%...<!(scale%+| 000033e0 30 29 3d 31 3a 21 28 73 63 61 6c 65 25 2b 34 29 |0)=1:!(scale%+4)| 000033f0 3d 31 3a 21 28 73 63 61 6c 65 25 2b 38 29 3d 31 |=1:!(scale%+8)=1| 00003400 3a 21 28 73 63 61 6c 65 25 2b 31 32 29 3d 31 0d |:!(scale%+12)=1.| 00003410 01 d2 20 c8 99 22 50 44 72 69 76 65 72 5f 53 65 |.. .."PDriver_Se| 00003420 6c 65 63 74 4a 6f 62 22 2c 46 25 2c 30 2c 30 0d |lectJob",F%,0,0.| 00003430 01 d3 39 66 25 3d 28 72 32 25 2b 34 34 29 3a 74 |..9f%=(r2%+44):t| 00003440 25 3d 70 61 6c 74 61 62 25 3a e3 69 25 3d 30 b8 |%=paltab%:.i%=0.| 00003450 31 35 3a 21 74 25 3d 21 66 25 3a 74 25 2b 3d 34 |15:!t%=!f%:t%+=4| 00003460 3a 66 25 2b 3d 38 3a ed 0d 01 d4 38 c8 99 22 43 |:f%+=8:....8.."C| 00003470 6f 6c 6f 75 72 54 72 61 6e 73 5f 53 65 6c 65 63 |olourTrans_Selec| 00003480 74 54 61 62 6c 65 22 2c 31 32 2c 70 61 6c 74 61 |tTable",12,palta| 00003490 62 25 2c 2d 31 2c 2d 31 2c 63 74 72 61 6e 73 25 |b%,-1,-1,ctrans%| 000034a0 0d 01 d5 41 c8 99 20 22 4f 53 5f 53 70 72 69 74 |...A.. "OS_Sprit| 000034b0 65 4f 70 22 2c 26 32 33 34 2c 73 70 72 69 74 65 |eOp",&234,sprite| 000034c0 5f 61 72 65 61 31 25 2c 72 32 25 2c 30 2c 79 25 |_area1%,r2%,0,y%| 000034d0 2c 30 2c 73 63 61 6c 65 25 2c 63 74 72 61 6e 73 |,0,scale%,ctrans| 000034e0 25 0d 01 d6 05 ed 0d 01 d7 05 e1 0d 01 d8 04 0d |%...............| 000034f0 01 d9 13 dd a4 73 63 72 65 65 6e 5f 6e 75 6d 62 |.....screen_numb| 00003500 65 72 0d 01 da 2d f4 20 54 61 62 6c 65 41 24 73 |er...-. TableA$s| 00003510 61 76 65 20 73 65 74 20 74 6f 20 64 69 72 65 63 |ave set to direc| 00003520 74 6f 72 79 20 74 6f 20 73 61 76 65 20 74 6f 0d |tory to save to.| 00003530 01 db 09 73 63 25 3d 30 0d 01 dc 05 f5 0d 01 dd |...sc%=0........| 00003540 18 73 63 25 3d 73 63 25 2b 31 3a 73 63 24 3d c3 |.sc%=sc%+1:sc$=.| 00003550 28 73 63 25 29 0d 01 de 34 c8 99 22 58 4f 53 5f |(sc%)...4.."XOS_| 00003560 46 69 6e 64 22 2c 26 34 30 2c 22 3c 54 61 62 6c |Find",&40,"<Tabl| 00003570 65 41 24 73 61 76 65 3e 2e 73 63 72 65 65 6e 22 |eA$save>.screen"| 00003580 2b 73 63 24 20 b8 20 68 25 0d 01 df 15 f4 49 46 |+sc$ . h%.....IF| 00003590 68 25 3d 2d 31 3a 43 4c 4f 53 45 23 68 25 0d 01 |h%=-1:CLOSE#h%..| 000035a0 e0 0f e7 68 25 3c 3e 30 3a d9 23 68 25 0d 01 e1 |...h%<>0:.#h%...| 000035b0 09 fd 68 25 3d 30 0d 01 e2 08 3d 73 63 25 0d 01 |..h%=0....=sc%..| 000035c0 e3 04 0d 01 e4 18 dd f2 66 6c 6f 70 70 79 5f 73 |........floppy_s| 000035d0 63 72 65 65 6e 5f 73 61 76 65 0d 01 e5 42 c8 99 |creen_save...B..| 000035e0 20 22 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c 26 | "OS_SpriteOp",&| 000035f0 31 31 30 2c 73 70 72 69 74 65 5f 61 72 65 61 31 |110,sprite_area1| 00003600 25 2c 22 6c 6f 61 64 73 63 22 2c 30 2c 34 30 30 |%,"loadsc",0,400| 00003610 2c 34 33 36 2c 38 38 30 2c 36 33 36 0d 01 e6 0c |,436,880,636....| 00003620 65 72 72 6f 72 25 3d 30 0d 01 e7 06 ea 85 0d 01 |error%=0........| 00003630 e8 7a ee 85 ea 3a f7 20 85 3a 65 72 72 6f 72 25 |.z...:. .:error%| 00003640 3d 31 3a c8 99 20 22 4f 53 5f 53 70 72 69 74 65 |=1:.. "OS_Sprite| 00003650 4f 70 22 2c 26 31 32 32 2c 73 70 72 69 74 65 5f |Op",&122,sprite_| 00003660 61 72 65 61 31 25 2c 22 6c 6f 61 64 73 63 22 2c |area1%,"loadsc",| 00003670 34 30 30 2c 34 33 36 2c 30 3a c8 99 20 22 4f 53 |400,436,0:.. "OS| 00003680 5f 53 70 72 69 74 65 4f 70 22 2c 26 31 31 39 2c |_SpriteOp",&119,| 00003690 73 70 72 69 74 65 5f 61 72 65 61 31 25 2c 22 6c |sprite_area1%,"l| 000036a0 6f 61 64 73 63 22 3a e1 0d 01 e9 0b f4 52 45 50 |oadsc":......REP| 000036b0 45 41 54 0d 01 ea 18 f4 50 52 4f 43 63 6c 65 61 |EAT.....PROCclea| 000036c0 72 5f 6c 6f 61 64 5f 74 65 78 74 0d 01 eb 48 20 |r_load_text...H | 000036d0 20 20 ef 32 34 2c 34 30 30 3b 34 33 36 3b 38 38 | .24,400;436;88| 000036e0 30 3b 36 33 36 3b 31 38 2c 30 2c 31 33 31 2c 31 |0;636;18,0,131,1| 000036f0 36 2c 32 34 2c 34 30 34 3b 34 34 30 3b 38 37 36 |6,24,404;440;876| 00003700 3b 36 33 32 3b 31 38 2c 30 2c 31 32 38 2c 31 36 |;632;18,0,128,16| 00003710 2c 32 36 0d 01 ec 0a 20 20 20 c8 97 ee 0d 01 ed |,26.... ......| 00003720 23 20 20 20 f2 70 72 69 28 34 33 30 2c 35 37 32 |# .pri(430,572| 00003730 2c 22 50 6c 65 61 73 65 20 70 6c 61 63 65 22 29 |,"Please place")| 00003740 0d 01 ee 22 20 20 20 f2 70 72 69 28 34 33 30 2c |..." .pri(430,| 00003750 35 31 38 2c 22 53 41 56 45 20 53 43 52 45 45 4e |518,"SAVE SCREEN| 00003760 22 29 0d 01 ef 18 20 20 20 6f 6b 78 25 3d 37 36 |").... okx%=76| 00003770 30 3a 6f 6b 79 25 3d 34 35 36 0d 01 f0 48 20 20 |0:oky%=456...H | 00003780 20 e6 30 2c 33 3a ef 32 35 2c 34 2c 6f 6b 78 25 | .0,3:.25,4,okx%| 00003790 3b 6f 6b 79 25 3b 32 35 2c 31 2c 31 30 30 3b 30 |;oky%;25,1,100;0| 000037a0 3b 32 35 2c 31 2c 30 3b 35 36 3b 32 35 2c 31 2c |;25,1,0;56;25,1,| 000037b0 2d 31 30 30 3b 30 3b 32 35 2c 31 2c 30 3b 2d 35 |-100;0;25,1,0;-5| 000037c0 36 3b 0d 01 f1 2c 20 20 20 e6 30 2c 30 3a ef 32 |6;..., .0,0:.2| 000037d0 35 2c 34 2c 6f 6b 78 25 2b 32 3b 6f 6b 79 25 2b |5,4,okx%+2;oky%+| 000037e0 34 3b 32 35 2c 39 37 2c 39 36 3b 34 38 3b 0d 01 |4;25,97,96;48;..| 000037f0 f2 2c 20 20 20 f2 70 72 69 28 34 33 30 2c 34 36 |., .pri(430,46| 00003800 34 2c 22 64 69 73 6b 20 69 6e 20 64 72 69 76 65 |4,"disk in drive| 00003810 20 30 20 20 20 20 4f 4b 22 29 0d 01 f3 0a 20 20 | 0 OK").... | 00003820 20 c8 97 ee 0d 01 f4 4f f5 3a c8 97 6d 78 25 2c | ......O.:..mx%,| 00003830 6d 79 25 2c 6d 63 25 3a fd 28 6d 63 25 3d 34 29 |my%,mc%:.(mc%=4)| 00003840 80 28 6d 78 25 3e 6f 6b 78 25 29 80 28 6d 78 25 |.(mx%>okx%).(mx%| 00003850 3c 6f 6b 78 25 2b 31 30 30 29 80 28 6d 79 25 3e |<okx%+100).(my%>| 00003860 6f 6b 79 25 29 80 28 6d 79 25 3c 6f 6b 79 25 2b |oky%).(my%<oky%+| 00003870 35 38 29 0d 01 f5 09 2a 41 44 46 53 0d 01 f6 0c |58)....*ADFS....| 00003880 2a 4d 4f 55 4e 54 20 30 0d 01 f7 23 c8 99 22 4f |*MOUNT 0...#.."O| 00003890 53 5f 47 42 50 42 22 2c 35 2c 2c 69 6e 70 75 74 |S_GBPB",5,,input| 000038a0 5f 64 69 73 6b 5f 6e 61 6d 65 25 0d 01 f8 27 6c |_disk_name%...'l| 000038b0 65 6e 5f 64 5f 6e 25 3d 3f 69 6e 70 75 74 5f 64 |en_d_n%=?input_d| 000038c0 69 73 6b 5f 6e 61 6d 65 25 3a 6e 61 6d 65 24 3d |isk_name%:name$=| 000038d0 22 22 0d 01 f9 13 e3 64 6e 25 3d 31 b8 6c 65 6e |"".....dn%=1.len| 000038e0 5f 64 5f 6e 25 0d 01 fa 46 e7 3f 28 69 6e 70 75 |_d_n%...F.?(inpu| 000038f0 74 5f 64 69 73 6b 5f 6e 61 6d 65 25 2b 64 6e 25 |t_disk_name%+dn%| 00003900 29 3e 33 31 3a 6e 61 6d 65 24 3d 6e 61 6d 65 24 |)>31:name$=name$| 00003910 2b bd 28 3f 28 69 6e 70 75 74 5f 64 69 73 6b 5f |+.(?(input_disk_| 00003920 6e 61 6d 65 25 2b 64 6e 25 29 29 0d 01 fb 05 ed |name%+dn%)).....| 00003930 0d 01 fc 3a c8 99 20 22 4f 53 5f 53 70 72 69 74 |...:.. "OS_Sprit| 00003940 65 4f 70 22 2c 26 31 32 32 2c 73 70 72 69 74 65 |eOp",&122,sprite| 00003950 5f 61 72 65 61 31 25 2c 22 6c 6f 61 64 73 63 22 |_area1%,"loadsc"| 00003960 2c 34 30 30 2c 34 33 36 2c 30 0d 01 fd 4a e7 28 |,400,436,0...J.(| 00003970 6e 61 6d 65 24 3d 22 5a 65 72 6f 22 29 84 28 6e |name$="Zero").(n| 00003980 61 6d 65 24 3d 22 4f 6e 65 22 29 84 28 6e 61 6d |ame$="One").(nam| 00003990 65 24 3d 22 54 77 6f 22 29 84 28 6e 61 6d 65 24 |e$="Two").(name$| 000039a0 3d 22 54 68 72 65 65 22 29 3a 65 72 72 6f 72 25 |="Three"):error%| 000039b0 3d 31 3a 85 0d 01 fe 18 ff 22 53 45 54 20 54 61 |=1:......"SET Ta| 000039c0 62 6c 65 41 24 53 61 76 65 20 24 22 0d 01 ff 21 |bleA$Save $"...!| 000039d0 73 63 72 65 65 6e 5f 6e 75 6d 62 65 72 25 3d a4 |screen_number%=.| 000039e0 73 63 72 65 65 6e 5f 6e 75 6d 62 65 72 0d 02 00 |screen_number...| 000039f0 19 73 63 24 3d c3 28 73 63 72 65 65 6e 5f 6e 75 |.sc$=.(screen_nu| 00003a00 6d 62 65 72 25 29 0d 02 01 2a ff 22 53 43 52 45 |mber%)...*."SCRE| 00003a10 45 4e 53 41 56 45 20 3c 54 61 62 6c 65 41 24 73 |ENSAVE <TableA$s| 00003a20 61 76 65 3e 2e 53 63 72 65 65 6e 22 2b 73 63 24 |ave>.Screen"+sc$| 00003a30 0d 02 02 30 c8 99 20 22 4f 53 5f 53 70 72 69 74 |...0.. "OS_Sprit| 00003a40 65 4f 70 22 2c 26 31 31 39 2c 73 70 72 69 74 65 |eOp",&119,sprite| 00003a50 5f 61 72 65 61 31 25 2c 22 6c 6f 61 64 73 63 22 |_area1%,"loadsc"| 00003a60 0d 02 03 05 e1 0d 02 04 04 0d 02 05 1f dd f2 66 |...............f| 00003a70 6c 6f 70 70 79 5f 73 63 72 65 65 6e 5f 72 65 74 |loppy_screen_ret| 00003a80 75 72 6e 28 64 69 25 29 0d 02 06 42 c8 99 20 22 |urn(di%)...B.. "| 00003a90 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c 26 31 31 |OS_SpriteOp",&11| 00003aa0 30 2c 73 70 72 69 74 65 5f 61 72 65 61 31 25 2c |0,sprite_area1%,| 00003ab0 22 6c 6f 61 64 73 63 22 2c 30 2c 34 30 30 2c 34 |"loadsc",0,400,4| 00003ac0 33 36 2c 38 38 30 2c 36 33 36 0d 02 07 0c 65 72 |36,880,636....er| 00003ad0 72 6f 72 25 3d 30 0d 02 08 06 ea 85 0d 02 09 81 |ror%=0..........| 00003ae0 ee 85 ea 3a f7 85 3a c8 99 20 22 4f 53 5f 53 70 |...:..:.. "OS_Sp| 00003af0 72 69 74 65 4f 70 22 2c 26 31 33 34 2c 73 70 72 |riteOp",&134,spr| 00003b00 69 74 65 5f 61 72 65 61 31 25 2c 22 6c 6f 61 64 |ite_area1%,"load| 00003b10 73 63 22 2c 34 30 30 2c 34 33 36 2c 30 3a c8 99 |sc",400,436,0:..| 00003b20 20 22 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c 26 | "OS_SpriteOp",&| 00003b30 31 31 39 2c 73 70 72 69 74 65 5f 61 72 65 61 31 |119,sprite_area1| 00003b40 25 2c 22 6c 6f 61 64 73 63 22 3a 65 72 72 6f 72 |%,"loadsc":error| 00003b50 25 3d 31 3a 74 65 73 74 25 3d 31 3a e1 0d 02 0a |%=1:test%=1:....| 00003b60 05 f5 0d 02 0b 0d 20 65 72 72 6f 72 25 3d 30 0d |...... error%=0.| 00003b70 02 0c 0f 20 e7 74 65 73 74 25 3d 31 20 8c 0d 02 |... .test%=1 ...| 00003b80 0d 48 20 20 20 ef 32 34 2c 34 30 30 3b 34 33 36 |.H .24,400;436| 00003b90 3b 38 38 30 3b 36 33 36 3b 31 38 2c 30 2c 31 33 |;880;636;18,0,13| 00003ba0 31 2c 31 36 2c 32 34 2c 34 30 34 3b 34 34 30 3b |1,16,24,404;440;| 00003bb0 38 37 36 3b 36 33 32 3b 31 38 2c 30 2c 31 32 38 |876;632;18,0,128| 00003bc0 2c 31 36 2c 32 36 0d 02 0e 0a 20 20 20 c8 97 ee |,16,26.... ...| 00003bd0 0d 02 0f 23 20 20 20 f2 70 72 69 28 34 33 30 2c |...# .pri(430,| 00003be0 35 37 32 2c 22 50 6c 65 61 73 65 20 70 6c 61 63 |572,"Please plac| 00003bf0 65 22 29 0d 02 10 33 20 20 20 e7 64 69 25 3d 30 |e")...3 .di%=0| 00003c00 3a f2 70 72 69 28 34 33 30 2c 35 31 38 2c 22 64 |:.pri(430,518,"d| 00003c10 69 73 6b 20 5a 65 72 6f 22 29 3a 72 65 74 24 3d |isk Zero"):ret$=| 00003c20 22 5a 65 72 6f 22 0d 02 11 31 20 20 20 e7 64 69 |"Zero"...1 .di| 00003c30 25 3d 31 3a f2 70 72 69 28 34 33 30 2c 35 31 38 |%=1:.pri(430,518| 00003c40 2c 22 64 69 73 6b 20 4f 6e 65 22 29 3a 72 65 74 |,"disk One"):ret| 00003c50 24 3d 22 4f 6e 65 22 0d 02 12 31 20 20 20 e7 64 |$="One"...1 .d| 00003c60 69 25 3d 32 3a f2 70 72 69 28 34 33 30 2c 35 31 |i%=2:.pri(430,51| 00003c70 38 2c 22 64 69 73 6b 20 54 77 6f 22 29 3a 72 65 |8,"disk Two"):re| 00003c80 74 24 3d 22 54 77 6f 22 0d 02 13 35 20 20 20 e7 |t$="Two"...5 .| 00003c90 64 69 25 3d 33 3a f2 70 72 69 28 34 33 30 2c 35 |di%=3:.pri(430,5| 00003ca0 31 38 2c 22 64 69 73 6b 20 54 68 72 65 65 22 29 |18,"disk Three")| 00003cb0 3a 72 65 74 24 3d 22 54 68 72 65 65 22 0d 02 14 |:ret$="Three"...| 00003cc0 18 20 20 20 6f 6b 78 25 3d 37 36 30 3a 6f 6b 79 |. okx%=760:oky| 00003cd0 25 3d 34 35 36 0d 02 15 48 20 20 20 e6 30 2c 33 |%=456...H .0,3| 00003ce0 3a ef 32 35 2c 34 2c 6f 6b 78 25 3b 6f 6b 79 25 |:.25,4,okx%;oky%| 00003cf0 3b 32 35 2c 31 2c 31 30 30 3b 30 3b 32 35 2c 31 |;25,1,100;0;25,1| 00003d00 2c 30 3b 35 36 3b 32 35 2c 31 2c 2d 31 30 30 3b |,0;56;25,1,-100;| 00003d10 30 3b 32 35 2c 31 2c 30 3b 2d 35 36 3b 0d 02 16 |0;25,1,0;-56;...| 00003d20 2c 20 20 20 e6 30 2c 30 3a ef 32 35 2c 34 2c 6f |, .0,0:.25,4,o| 00003d30 6b 78 25 2b 32 3b 6f 6b 79 25 2b 34 3b 32 35 2c |kx%+2;oky%+4;25,| 00003d40 39 37 2c 39 36 3b 34 38 3b 0d 02 17 2f 20 20 20 |97,96;48;.../ | 00003d50 f2 70 72 69 28 34 33 30 2c 34 36 34 2c 22 69 6e |.pri(430,464,"in| 00003d60 20 64 72 69 76 65 20 30 20 20 20 20 20 20 20 20 | drive 0 | 00003d70 20 20 20 20 4f 4b 22 29 0d 02 18 0a 20 20 20 c8 | OK").... .| 00003d80 97 ee 0d 02 19 50 20 20 20 f5 3a c8 97 6d 78 25 |.....P .:..mx%| 00003d90 2c 6d 79 25 2c 6d 63 25 3a fd 6d 63 25 3d 34 20 |,my%,mc%:.mc%=4 | 00003da0 80 20 6d 78 25 3e 6f 6b 78 25 20 80 20 6d 78 25 |. mx%>okx% . mx%| 00003db0 3c 6f 6b 78 25 2b 31 30 30 20 80 20 6d 79 25 3e |<okx%+100 . my%>| 00003dc0 6f 6b 79 25 20 80 20 6d 79 25 3c 6f 6b 79 25 2b |oky% . my%<oky%+| 00003dd0 35 38 0d 02 1a 06 20 cd 0d 02 1b 0a 20 2a 41 44 |58.... ..... *AD| 00003de0 46 53 0d 02 1c 0d 20 2a 4d 4f 55 4e 54 20 30 0d |FS.... *MOUNT 0.| 00003df0 02 1d 24 20 c8 99 22 4f 53 5f 47 42 50 42 22 2c |..$ .."OS_GBPB",| 00003e00 35 2c 2c 69 6e 70 75 74 5f 64 69 73 6b 5f 6e 61 |5,,input_disk_na| 00003e10 6d 65 25 0d 02 1e 28 20 6c 65 6e 5f 64 5f 6e 25 |me%...( len_d_n%| 00003e20 3d 3f 69 6e 70 75 74 5f 64 69 73 6b 5f 6e 61 6d |=?input_disk_nam| 00003e30 65 25 3a 6e 61 6d 65 24 3d 22 22 0d 02 1f 14 20 |e%:name$="".... | 00003e40 e3 64 6e 25 3d 31 b8 6c 65 6e 5f 64 5f 6e 25 0d |.dn%=1.len_d_n%.| 00003e50 02 20 48 20 20 e7 3f 28 69 6e 70 75 74 5f 64 69 |. H .?(input_di| 00003e60 73 6b 5f 6e 61 6d 65 25 2b 64 6e 25 29 3e 33 31 |sk_name%+dn%)>31| 00003e70 3a 6e 61 6d 65 24 3d 6e 61 6d 65 24 2b bd 28 3f |:name$=name$+.(?| 00003e80 28 69 6e 70 75 74 5f 64 69 73 6b 5f 6e 61 6d 65 |(input_disk_name| 00003e90 25 2b 64 6e 25 29 29 0d 02 21 06 20 ed 0d 02 22 |%+dn%))..!. ..."| 00003ea0 0c 20 74 65 73 74 25 3d 31 0d 02 23 10 fd 20 6e |. test%=1..#.. n| 00003eb0 61 6d 65 24 3d 72 65 74 24 0d 02 24 3a c8 99 20 |ame$=ret$..$:.. | 00003ec0 22 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c 26 31 |"OS_SpriteOp",&1| 00003ed0 32 32 2c 73 70 72 69 74 65 5f 61 72 65 61 31 25 |22,sprite_area1%| 00003ee0 2c 22 6c 6f 61 64 73 63 22 2c 34 30 30 2c 34 33 |,"loadsc",400,43| 00003ef0 36 2c 30 0d 02 25 30 c8 99 20 22 4f 53 5f 53 70 |6,0..%0.. "OS_Sp| 00003f00 72 69 74 65 4f 70 22 2c 26 31 31 39 2c 73 70 72 |riteOp",&119,spr| 00003f10 69 74 65 5f 61 72 65 61 31 25 2c 22 6c 6f 61 64 |ite_area1%,"load| 00003f20 73 63 22 0d 02 26 05 e1 0d 02 27 04 0d 02 28 16 |sc"..&....'...(.| 00003f30 dd f2 68 61 72 64 5f 73 63 72 65 65 6e 5f 73 61 |..hard_screen_sa| 00003f40 76 65 0d 02 29 06 ea 85 0d 02 2a 0c ee 85 ea 3a |ve..).....*....:| 00003f50 f7 85 3a e1 0d 02 2b 21 73 63 72 65 65 6e 5f 6e |..:...+!screen_n| 00003f60 75 6d 62 65 72 25 3d a4 73 63 72 65 65 6e 5f 6e |umber%=.screen_n| 00003f70 75 6d 62 65 72 0d 02 2c 19 73 63 24 3d c3 28 73 |umber..,.sc$=.(s| 00003f80 63 72 65 65 6e 5f 6e 75 6d 62 65 72 25 29 0d 02 |creen_number%)..| 00003f90 2d 2a ff 22 53 43 52 45 45 4e 53 41 56 45 20 3c |-*."SCREENSAVE <| 00003fa0 54 61 62 6c 65 41 24 73 61 76 65 3e 2e 53 63 72 |TableA$save>.Scr| 00003fb0 65 65 6e 22 2b 73 63 24 0d 02 2e 06 f7 85 0d 02 |een"+sc$........| 00003fc0 2f 05 e1 0d 02 30 04 0d 02 31 08 dd f2 64 74 0d |/....0...1...dt.| 00003fd0 02 32 15 2a 63 68 61 6e 6e 65 6c 76 6f 69 63 65 |.2.*channelvoice| 00003fe0 20 31 20 31 0d 02 33 15 2a 63 68 61 6e 6e 65 6c | 1 1..3.*channel| 00003ff0 76 6f 69 63 65 20 32 20 32 0d 02 34 19 c8 99 22 |voice 2 2..4..."| 00004000 4f 53 5f 52 65 73 74 6f 72 65 43 75 72 73 6f 72 |OS_RestoreCursor| 00004010 73 22 0d 02 35 36 d8 3a de 62 75 66 25 20 34 3a |s"..56.:.buf% 4:| 00004020 e3 69 25 3d 31 b8 31 36 3a c8 96 3a e3 63 25 3d |.i%=1.16:..:.c%=| 00004030 30 b8 31 36 3a e7 63 25 3c 31 36 76 25 3d 31 36 |0.16:.c%<16v%=16| 00004040 20 8b 20 76 25 3d 32 34 0d 02 36 50 c8 99 22 4f | . v%=24..6P.."O| 00004050 53 5f 52 65 61 64 50 61 6c 65 74 74 65 22 2c 63 |S_ReadPalette",c| 00004060 25 2c 76 25 20 b8 20 2c 2c 64 25 3a 21 62 75 66 |%,v% . ,,d%:!buf| 00004070 25 3d 64 25 3a e3 62 25 3d 31 b8 33 3a e7 62 75 |%=d%:.b%=1.3:.bu| 00004080 66 25 3f 62 25 3e 30 62 75 66 25 3f 62 25 2d 3d |f%?b%>0buf%?b%-=| 00004090 31 36 3a ed 3a 8b 3a ed 0d 02 37 25 ef 31 39 2c |16:.:.:...7%.19,| 000040a0 63 25 2c 76 25 2c 62 75 66 25 3f 31 2c 62 75 66 |c%,v%,buf%?1,buf| 000040b0 25 3f 32 2c 62 75 66 25 3f 33 3a ed 2c 0d 02 38 |%?2,buf%?3:.,..8| 000040c0 09 2a 46 58 31 35 0d 02 39 13 61 3d a6 28 35 30 |.*FX15..9.a=.(50| 000040d0 29 3a e7 61 3d 31 30 20 e1 0d 02 3a 09 2a 46 58 |):.a=10 ...:.*FX| 000040e0 31 35 0d 02 3b 0c 2a 46 58 32 32 35 2c 31 0d 02 |15..;.*FX225,1..| 000040f0 3c 0c 2a 46 58 32 32 39 2c 30 0d 02 3d 0d 2a 46 |<.*FX229,0..=.*F| 00004100 58 32 32 30 2c 32 37 0d 02 3e 20 2a 4b 45 59 30 |X220,27..> *KEY0| 00004110 20 50 41 47 45 3d 26 38 46 30 30 7c 4d 4f 4c 44 | PAGE=&8F00|MOLD| 00004120 7c 4d 52 55 4e 7c 4d 0d 02 3f 10 2a 46 58 31 33 ||MRUN|M..?.*FX13| 00004130 38 2c 30 2c 31 32 38 0d 02 40 0a 2a 42 41 53 49 |8,0,128..@.*BASI| 00004140 43 0d 02 41 06 31 fa 0d 02 42 04 0d 02 43 0b dd |C..A.1...B...C..| 00004150 f2 64 75 6d 6d 79 0d 02 44 26 f4 20 27 63 6f 73 |.dummy..D&. 'cos| 00004160 20 41 64 61 6d 20 73 61 79 73 20 79 6f 75 20 6e | Adam says you n| 00004170 65 65 64 20 74 68 69 73 20 62 69 74 0d 02 45 05 |eed this bit..E.| 00004180 e1 0d 02 46 04 0d 02 47 04 0d ff |...F...G...| 0000418b