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%
3sfff%=F%
4sggg%=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%
MF%=sfff%
NG%=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