Home » Archimedes archive » Acorn User » AU 1995-11.adf » !Sherston » Crystal/!Crystal2/Pt0/Library

Crystal/!Crystal2/Pt0/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 » Acorn User » AU 1995-11.adf » !Sherston
Filename: Crystal/!Crystal2/Pt0/Library
Read OK:
File size: 322D bytes
Load address: 0000
Exec address: 0000
File contents
    0REMOSCLIADFS::HardDisc4.$.Crystal2.Finish1.DemoMag.!Crystal2.Pt0.Library
    1
    2REM Below this line the programs will reside in library form.
    3REM *********************************************************
    4REM *********************************************************
    5
    6
    7
    8DEFPROCloadunsquash(area%,areasiz%,sqfile%,sqfile$)
    9area%=sprite_area1%
   10areasiz%=160*1024
   11sqfile%=sprite_area2%
   12sqbuffer%=picture2%
   13OSCLI"LOAD <Crystal2$Dir>.Pt0.sprites."+sqfile$+" "+STR$~sqfile%
   14SYS "OS_File",5,"<Crystal2$Dir>.Pt0.sprites."+sqfile$ TO ,,,,filelen%
   15PROCunsquash(sqfile%+20,filelen%-20,sqbuffer%,area%+4,areasiz%-4)
   16ENDPROC
   17
   18DEFPROCunsquash(inptr%,insiz%,bufptr%,outptr%,outsiz%)
   19SYS"Squash_Decompress",%100,bufptr%,inptr%,insiz%,outptr%,outsiz% TO r0%
   20ENDPROC
   21
   22DEFPROCst_pause
   23time%=TIME
   24ENDPROC
   25
   26DEFPROCen_pause(t%)
   27IFtime%+t%<TIME ENDPROC
   28REPEAT:UNTILtime%+t%<TIME
   29ENDPROC
   30
   31DEFPROCpause(t%)
   32time%=TIME
   33REPEAT:UNTILtime%+t%<TIME
   34ENDPROC
   35
   36DEFPROCrelease
   37REPEAT:MOUSEX,Y,Z:UNTILZ=0
   38ENDPROC
   39
   40DEFPROCload_sprites(name$)
   41PROCloadunsquash(sprite_area1%,(240*1024),picture1%,name$)
   42ENDPROC
   43
   44DEFPROCload_sprites2(name$)
   45SYS"OS_SpriteOp",&10A,sprite_area2%,"<Crystal2$Dir>.Pt0.sprites."+name$
   46ENDPROC
   47
   48DEFPROCload_picture(area%,name$)
   49load$=STR$~(area%)
   50OSCLI "LOAD <Crystal2$Dir>.Pt0.data."+name$+" "+load$
   51ENDPROC
   52
   53DEFPROCdelete_sprite(area%,name$)
   54SYS"OS_SpriteOp",&119,area%,name$
   55ENDPROC
   56
   57DEFPROCplot_sprite(x%,y%,xm%,ym%,xd%,yd%,name$,area%)
   58!(scale%+0)=xm%
   59!(scale%+4)=ym%+V%
   60!(scale%+8)=xd%
   61!(scale%+12)=yd%
   62SYS"OS_SpriteOp",&134,area%,name$,x%,y%,0,scale%,0
   63ENDPROC
   64
   65DEFPROCplot_sprite_masked(x%,y%,xm%,ym%,xd%,yd%,name$,area%)
   66!(scale%+0)=xm%
   67!(scale%+4)=ym%+V%
   68!(scale%+8)=xd%
   69!(scale%+12)=yd%
   70SYS"OS_SpriteOp",&134,sprite_area1%,name$,x%,y%,8,scale%,0
   71ENDPROC
   72
   73DEFPROCpalette
   74VDU19,1,24,136,136,136
   75LOCALp%,r%,g%,b%
   76RESTORE+5
   77FORp%=0TO15
   78READr%,g%,b%:COLOURp%,r%,g%,b%
   79NEXT
   80VDU19,1,24,0,0,0;0;
   81ENDPROC
   82
   83DATA 255,255,255,187,187,187,119,119,119,0,0,0
   84DATA 102,102,102,0,187,255,0,0,221,0,0,121
   85DATA 153,119,0,255,255,0,255,136,0,204,0,0
   86DATA 136,102,0,0,204,0,0,153,0,0,119,0
   87
   88DEFPROCinitialise_sprite_area
   89kay%=1024
   90REM IF V%=0 !sprite_area1%=160*kay%:sprite_area1%!8=16:SYS"OS_SpriteOp",&109,sprite_area1%
   91 !sprite_area1%=230*kay%:sprite_area1%!8=16:SYS"OS_SpriteOp",&109,sprite_area1%
   92REM IF V%=0 !sprite_area2%=70*kay%:sprite_area2%!8=16:SYS"OS_SpriteOp",&109,sprite_area2%
   93 !sprite_area2%=100*kay%:sprite_area2%!8=16:SYS"OS_SpriteOp",&109,sprite_area2%
   94ENDPROC
   95
   96DEFPROCpull_variables
   97draw%=!(K%+&80)
   98save_screen%=!(K%+&84)
   99save_vga_screen%=!(K%+&88)
  100screen_start%=!(K%+&8C)
  101fill_screen%=!(K%+&A4)
  102forest_area%=!(K%+&AC)
  103move_block%=!(K%+&B0)
  104screen_offsets%=!(K%+&B4)
  105effect_start%=!(K%+&B8)
  106scroll_all%=!(K%+&BC)
  107!(K%+&90)=screen_one%
  108!(K%+&94)=screen_two%
  109mscreen_one%=!(K%+&A8)          :REM find the location of second screen store
  110!(mscreen_one%+0)=screen_one%   :REM store the two screens in
  111!(mscreen_one%+4)=screen_two%
  112IF V%=0 !(K%+&98)=80*1024       :REM set screen length
  113IF V%=1 !(K%+&98)=150*1024
  114sprite_area1%=K%+1024*5                    :REM 5k code
  115!(K%+&9C)=sprite_area1%                    :REM poke sprite area in code
  116!(K%+&A0)=V%                               :REM vga%
  117REM IF V%=0 sprite_area2%=sprite_area1%+1024*160
  118 sprite_area2%=sprite_area1%+1024*230
  119REM IF V%=0 picture1%=sprite_area2%+1024*70    :REM cga all sprites 230k
  120 picture1%=sprite_area2%+1024*100          :REM vga all sprites 330k
  121picture2%=picture1%+1024*48                :REM 48k picture1
  122page%=picture2%+1024*19                    :REM 19k picture2
  123IF V%=1 :save_screen%=save_vga_screen%     :REM vga screen is bigger (150k)
  124IF V%=1 :VDU 23,17,7,2,8;16;0;0;
  125A%=TIME:FORB%=0TO20000:NEXT:sp%=TIME-A%
  126IFsp%<5 Z%=2                              :REM Arm6
  127IFsp%>4 AND sp%<7 Z%=3                    :REM Arm3
  128IFsp%>4 AND sp%<7 AND V%=1 Z%=4           :REM Arm3 +VGA
  129IFsp%>8 Z%=4                              :REM Arm2
  130ENDPROC
  131
  132DEFPROCfind_screens
  133*fx112,2
  134screen_two%=FNfind_screen(148)
  135*fx112,1
  136screen_one%=FNfind_screen(148)
  137ENDPROC
  138
  139DEFFNfind_screen(scr%)
  140!input%=scr%             :REM 148 OR 149
  141!(input%+4)=-1
  142SYS "OS_ReadVduVariables",input%,output%
  143=!output%
  144
  145DEFFNreadsysvar(a$)
  146SYS "OS_ReadVarVal",a$,blk%,256,0,0 TO ,,a%:a$="":FORA%=0TOa%-1:a$+=CHR$(blk%?A%):NEXT
  147=a$
  148
  149DEFFNreadstring(p%)
  150LOCALa$:a$="":WHILE LENa$<255 AND ?p%>31 a$+=CHR$?p%:p%+=1:ENDWHILE
  151=a$
  152
  153DEFPROCfade(x%,y%,size%,col_st%,cycle%,offsets%)
  154REM A%=width in pixels B%=height in pixels
  155SYS"OS_SpriteOp",&128,sprite_area1%,fade$ TO r0,r1,r2,A%,B%,r5,r6
  156A%=A%/2
  157REM C%= screen start offset
  158IFV%=0 C%=(x%/4)+(((1024-y%)/4)*320)
  159IFV%=1 C%=(x%/4)+(((960-y%)/4)*320)
  160!(screen_one%+C%)=&0
  161REM D% block x      E% block y
  162D%=size%:E%=size%+(vga%*4)
  163REM F% =sprite data start
  164SYS"OS_SpriteOp",&118,sprite_area1%,fade$ TO r0,r1,add%
  165F%=add%+!(add%+32)
  166G%=picture2%
  167IFoffsets%=1 CALL screen_offsets%
  168A%=40     :REM total cycles
  169B%=col_st%      :REM next colour
  170C%=cycle%       :REM next cycle before colour starting
  171D%=8:E%=4*(V%+1) :REM size
  172IF Z%=1 F%=30000  :REM pause
  173IF Z%=2 F%=25000  :REM pause
  174IF Z%=3 F%=15000  :REM pause
  175IF Z%=4 F%=2000   :REM pause
  176G%=picture2% :REM Give code work space to store addresses
  177IF fade$="fade9" OR fade$="fade7" F%=10000
  178CALL effect_start%
  179ENDPROC
  180
  181DEFPROCchain(file$)
  182IFfile$="Pt0.link":dname$="Zero":path$="$.!Crystal2."+file$
  183IFfile$="Pt1.link":dname$="One":path$="$.!Crystal2."+file$
  184IFfile$="Pt2.link":dname$="Two":path$="$.!Crystal2."+file$
  185IFfile$="Pt3.link":dname$="Three":path$="$.!Crystal2."+file$
  186IFY%=0 THEN
  187  err%=0
  188  test%=0:REPEAT:PROCfloppy_disk(dname$,path$,"$.!Crystal2")
  189  IFerr%=17 error
  190  UNTILerror%=0
  191ENDIF
  192file$="<Crystal2$dir>."+file$
  193CHAINfile$
  194STOP
  195
  196DEFPROCfloppy_disk(dname$,path$,set$)
  197SYS "OS_SpriteOp",&110,sprite_area1%,"loadsc",0,400,436,880,636
  198LOCALERROR
  199ONERRORLOCAL: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
  200REPEAT
  201  error%=0
  202  IFtest%=1 THEN
  203   VDU24,400;436;880;636;18,0,131,16,24,404;440;876;632;18,0,128,16,26
  204   MOUSEON
  205   PROCpri(430,572,"Please place")
  206   PROCpri(430,518,"disk "+dname$)
  207   okx%=760:oky%=456
  208   GCOL0,3:VDU25,4,okx%;oky%;25,1,100;0;25,1,0;56;25,1,-100;0;25,1,0;-56;
  209   GCOL0,0:VDU25,4,okx%+2;oky%+4;25,97,96;48;
  210   PROCpri(430,464,"in drive 0            OK")
  211   MOUSEON
  212   REPEAT:MOUSEmx%,my%,mc%:UNTILmc%=4 AND mx%>okx% AND mx%<okx%+100 AND my%>oky% AND my%<oky%+58
  213  ENDIF
  214  *ADFS
  215  *MOUNT 0
  216  IFdname$="Zero":dlabelname$="Zero"
  217  IFdname$="One":dlabelname$="One"
  218  IFdname$="Two":dlabelname$="Two"
  219  IFdname$="Three":dlabelname$="Three"
  220  SYS"OS_GBPB",5,,input_disk_name%
  221  len_d_n%=?input_disk_name%:name$=""
  222  FORdn%=1TOlen_d_n%
  223  IF?(input_disk_name%+dn%)>31:name$=name$+CHR$(?(input_disk_name%+dn%))
  224  NEXT
  225  SYS "OS_SpriteOp",&122,sprite_area1%,"loadsc",400,436,0
  226  IFname$<>dlabelname$:error%=1
  227  test%=1
  228  OSCLI"SET Crystal2$dir "+set$
  229  SYS "XOS_Find",&40,path$ TO h%
  230UNTILh%AND(error%=0):CLOSE#h%
  231SYS "OS_SpriteOp",&122,sprite_area1%,"loadsc",400,436,0
  232SYS "OS_SpriteOp",&119,sprite_area1%,"loadsc"
  233RESTORE ERROR
  234ENDPROC
  235
  236DEFPROCscreen_save(diskret%)
  237MOUSE RECTANGLE 0,0,1278,958
  238PROCpause(50)
  239VDU26
  240IFY%=0:PROCfloppy_screen_save:test%=0:ret$="":REPEAT:PROCfloppy_screen_return(diskret%):UNTILerror%=0
  241IFY%=1:PROChard_screen_save
  242PROCpause(50)
  243*fx15
  244ENDPROC
  245
  246DEFPROCprinter
  247SYS&000A0140 TO ;fl%
  248IF (fl% AND %1)=%1:ENDPROC
  249VDU26
  250ORIGIN0,0:SYS"XOS_SpriteOp",&119,sprite_area1%,"blank"
  251!(scale%+0)=1
  252!(scale%+4)=1
  253!(scale%+8)=1
  254!(scale%+12)=1
  255LOCALF%,E%
  256F%=OPENOUT("printer:")
  257LOCAL ERROR
  258ONERRORLOCAL:RESTORE ERROR:CLOSE#F%:OSCLI"FX229,0":ENDPROC
  259REMONERRORLOCAL: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
  260SYS"PDriver_SelectJob",F%,0,0
  261LOCAL ERROR
  262ONERRORLOCAL:RESTORE ERROR:SYS"PDriver_AbortJob",F%:SYS"PDriver_SelectJob",E%:CLOSE#F%:OSCLI"FX229,0":ENDPROC
  263REMONERRORLOCAL: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
  264!(pdrect%+0)=0:!(pdrect%+4)=0:!(pdrect%+8)=1280:!(pdrect%+12)=960
  265!(pdtrans%+0)=1<<16:!(pdtrans%+4)=0:!(pdtrans%+8)=0:!(pdtrans%+12)=1<<16
  266REM!(pdplot%+0)=128<<8:!(pdplot%+4)=512<<8
  267!(pdplot%+0)=128<<8
  268SYS"PDriver_PageSize" TO r0,r1,r2,r3,r4,r5,r6
  269SYS"PDriver_SetPageSize",,r1,r2,r3,0,r5,r6
  270!(pdplot%+4)=r6-400000:IF(pdplot%!4)<(512<<8):pdplot%!4=512<<8
  271SYS"PDriver_GiveRectangle",0,pdrect%,pdtrans%,pdplot%,&FFFFFF00
  272SYS "OS_SpriteOp",&13C,0,0,1:SYS"ColourTrans_InvalidateCache"
  273SYS"PDriver_DrawPage",1,pdrect2%,0,0 TO copiesleft%
  274WHILE copiesleft%<>0
  275PROCpd_plot_screen
  276SYS"PDriver_GetRectangle",,pdrect2% TO copiesleft%
  277ENDWHILE
  278SYS"PDriver_EndJob",F%
  279RESTORE ERROR
  280RESTORE ERROR
  281CLOSE#F%
  282REMSYS"OS_SpriteOp",&10F,sprite_area%,"blank",0,384,192,12
  283*FX229,0
  284ENDPROC
  285
  286DEFPROCpd_plot_screen
  287LOCALy%,p%,i%,f%,t%
  288*FX229,1
  289FORy%=0TO960-32STEP32
  290SYS"PDriver_SelectJob",0,0,0
  291SYS"OS_SpriteOp",&110,sprite_area1%,"blank",1,0,y%,1279,y%+32 TO r0%,r1%,r2%
  292!(scale%+0)=1:!(scale%+4)=1:!(scale%+8)=1:!(scale%+12)=1
  293SYS"PDriver_SelectJob",F%,0,0
  294f%=(r2%+44):t%=paltab%:FORi%=0TO15:!t%=!f%:t%+=4:f%+=8:NEXT
  295SYS"ColourTrans_SelectTable",12,paltab%,-1,-1,ctrans%
  296SYS "OS_SpriteOp",&234,sprite_area1%,r2%,0,y%,0,scale%,ctrans%
  297NEXT
  298ENDPROC
  299
  300DEFFNscreen_number
  301REM Crystal2$save set to directory to save to
  302sc%=0
  303REPEAT
  304sc%=sc%+1:sc$=STR$(sc%)
  305SYS"XOS_Find",&40,"<Crystal2$save>.screen"+sc$ TO h%
  306REMIFh%=-1:CLOSE#h%
  307IFh%<>0:CLOSE#h%
  308UNTILh%=0
  309=sc%
  310
  311DEFPROCfloppy_screen_save
  312SYS "OS_SpriteOp",&110,sprite_area1%,"loadsc",0,400,436,880,636
  313error%=0
  314LOCALERROR
  315ONERRORLOCAL:RESTORE ERROR:SYS "OS_SpriteOp",&122,sprite_area1%,"loadsc",400,436,0:SYS "OS_SpriteOp",&119,sprite_area1%,"loadsc":ENDPROC
  316REMREPEAT
  317REMPROCclear_load_text
  318   VDU24,400;436;880;636;18,0,131,16,24,404;440;876;632;18,0,128,16,26
  319   MOUSEON
  320   PROCpri(430,572,"Please place")
  321   PROCpri(430,518,"SAVE SCREEN")
  322   okx%=760:oky%=456
  323   GCOL0,3:VDU25,4,okx%;oky%;25,1,100;0;25,1,0;56;25,1,-100;0;25,1,0;-56;
  324   GCOL0,0:VDU25,4,okx%+2;oky%+4;25,97,96;48;
  325   PROCpri(430,464,"disk in drive 0    OK")
  326   MOUSEON
  327REPEAT:MOUSEmx%,my%,mc%:UNTIL(mc%=4)AND(mx%>okx%)AND(mx%<okx%+100)AND(my%>oky%)AND(my%<oky%+58)
  328*ADFS
  329*MOUNT 0
  330SYS"OS_GBPB",5,,input_disk_name%
  331len_d_n%=?input_disk_name%:name$=""
  332FORdn%=1TOlen_d_n%
  333IF?(input_disk_name%+dn%)>31:name$=name$+CHR$(?(input_disk_name%+dn%))
  334NEXT
  335SYS "OS_SpriteOp",&122,sprite_area1%,"loadsc",400,436,0
  336IF(name$="Zero")OR(name$="One")OR(name$="Two")OR(name$="Three"):error%=1:ERROR
  337OSCLI"SET Crystal2$Save $"
  338screen_number%=FNscreen_number
  339sc$=STR$(screen_number%)
  340OSCLI"SCREENSAVE <Crystal2$save>.Screen"+sc$
  341REM SYS"XOS_SpriteOp",2,"<Crystal2$save>.Screen"+sc$,1
  342CLOSE#0
  343SYS "OS_SpriteOp",&119,sprite_area1%,"loadsc"
  344ENDPROC
  345
  346DEFPROCfloppy_screen_return(di%)
  347SYS "OS_SpriteOp",&110,sprite_area1%,"loadsc",0,400,436,880,636
  348error%=0
  349LOCALERROR
  350ONERRORLOCAL:RESTOREERROR:SYS "OS_SpriteOp",&134,sprite_area1%,"loadsc",400,436,0:SYS "OS_SpriteOp",&119,sprite_area1%,"loadsc":error%=1:test%=1:ENDPROC
  351REPEAT
  352 error%=0
  353 IFtest%=1 THEN
  354   VDU24,400;436;880;636;18,0,131,16,24,404;440;876;632;18,0,128,16,26
  355   MOUSEON
  356   PROCpri(430,572,"Please place")
  357   IFdi%=0:PROCpri(430,518,"disk Zero"):ret$="Zero"
  358   IFdi%=1:PROCpri(430,518,"disk One"):ret$="One"
  359   IFdi%=2:PROCpri(430,518,"disk Two"):ret$="Two"
  360   IFdi%=3:PROCpri(430,518,"disk Three"):ret$="Three"
  361   okx%=760:oky%=456
  362   GCOL0,3:VDU25,4,okx%;oky%;25,1,100;0;25,1,0;56;25,1,-100;0;25,1,0;-56;
  363   GCOL0,0:VDU25,4,okx%+2;oky%+4;25,97,96;48;
  364   PROCpri(430,464,"in drive 0            OK")
  365   MOUSEON
  366   REPEAT:MOUSEmx%,my%,mc%:UNTILmc%=4 AND mx%>okx% AND mx%<okx%+100 AND my%>oky% AND my%<oky%+58
  367 ENDIF
  368 *ADFS
  369 *MOUNT 0
  370 SYS"OS_GBPB",5,,input_disk_name%
  371 len_d_n%=?input_disk_name%:name$=""
  372 FORdn%=1TOlen_d_n%
  373  IF?(input_disk_name%+dn%)>31:name$=name$+CHR$(?(input_disk_name%+dn%))
  374 NEXT
  375 test%=1
  376UNTIL name$=ret$
  377SYS "OS_SpriteOp",&122,sprite_area1%,"loadsc",400,436,0
  378SYS "OS_SpriteOp",&119,sprite_area1%,"loadsc"
  379ENDPROC
  380
  381DEFPROChard_screen_save
  382LOCALERROR
  383ONERRORLOCAL:RESTOREERROR:ENDPROC
  384screen_number%=FNscreen_number
  385sc$=STR$(screen_number%)
  386OSCLI"SCREENSAVE <Crystal2$save>.Screen"+sc$
  387RESTOREERROR
  388CLOSE#0
  389ENDPROC
  390DEFPROCdt
  391*channelvoice 1 1
  392*channelvoice 2 2
  393SYS"XOS_Module",4,"bonk"
  394SYS"XOS_Module",4,"click"
  395SYS"XOS_Module",4,"juicy"
  396SYS"XOS_Module",4,"Smbuzz"
  397SYS"XOS_Module",4,"jung"
  398*channelvoice 1 1
  399*channelvoice 2 2
  400M%=S%
  401SYS"OS_RestoreCursors"
  402CLEAR:DIMbuf% 4:FORi%=1TO16:WAIT:FORc%=0TO16:IFc%<16v%=16 ELSE v%=24
  403SYS"OS_ReadPalette",c%,v% TO ,,d%:!buf%=d%:FORb%=1TO3:IFbuf%?b%>0buf%?b%-=16:NEXT:ELSE:NEXT
  404VDU19,c%,v%,buf%?1,buf%?2,buf%?3:NEXT,
  405*FX15
  406a=INKEY(50):IFa=10 ENDPROC
  407*FX15
  408*FX225,1
  409*KEY0 PAGE=&8F00|MOLD|MRUN|M
  410*FX138,0,128
  411*BASIC
  4121STOP
  413
  414DEFPROCdummy
  415REM 'cos Adam says you need this bit
  416ENDPROC
  417
  418
F�ADFS::HardDisc4.$.Crystal2.Finish1.DemoMag.!Crystal2.Pt0.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 <Crystal2$Dir>.Pt0.sprites."+sqfile$+" "+�~sqfile%
Gș "OS_File",5,"<Crystal2$Dir>.Pt0.sprites."+sqfile$ � ,,,,filelen%
B�unsquash(sqfile%+20,filelen%-20,sqbuffer%,area%+4,areasiz%-4)
�

5��unsquash(inptr%,insiz%,bufptr%,outptr%,outsiz%)
Jș"Squash_Decompress",%100,bufptr%,inptr%,insiz%,outptr%,outsiz% � r0%
�

��st_pause
time%=�
�

��en_pause(t%)
�time%+t%<� �
�:�time%+t%<�
�

��pause(t%)
 time%=�
!�:�time%+t%<�
"�
#
$
��release
%�:ȗX,Y,Z:�Z=0
&�
'
(��load_sprites(name$)
);�loadunsquash(sprite_area1%,(240*1024),picture1%,name$)
*�
+
,��load_sprites2(name$)
-Jș"OS_SpriteOp",&10A,sprite_area2%,"<Crystal2$Dir>.Pt0.sprites."+name$
.�
/
0��load_picture(area%,name$)
1load$=�~(area%)
25� "LOAD <Crystal2$Dir>.Pt0.data."+name$+" "+load$
3�
4
5 ��delete_sprite(area%,name$)
6$ș"OS_SpriteOp",&119,area%,name$
7�
8
94��plot_sprite(x%,y%,xm%,ym%,xd%,yd%,name$,area%)
:!(scale%+0)=xm%
;!(scale%+4)=ym%+V%
<!(scale%+8)=xd%
=!(scale%+12)=yd%
>5ș"OS_SpriteOp",&134,area%,name$,x%,y%,0,scale%,0
?�
@
A;��plot_sprite_masked(x%,y%,xm%,ym%,xd%,yd%,name$,area%)
B!(scale%+0)=xm%
C!(scale%+4)=ym%+V%
D!(scale%+8)=xd%
E!(scale%+12)=yd%
F=ș"OS_SpriteOp",&134,sprite_area1%,name$,x%,y%,8,scale%,0
G�
H
I
��palette
J�19,1,24,136,136,136
K�p%,r%,g%,b%
L�+5
M�p%=0�15
N�r%,g%,b%:�p%,r%,g%,b%
O�
P�19,1,24,0,0,0;0;
Q�
R
S/� 255,255,255,187,187,187,119,119,119,0,0,0
T+� 102,102,102,0,187,255,0,0,221,0,0,121
U+� 153,119,0,255,255,0,255,136,0,204,0,0
V'� 136,102,0,0,204,0,0,153,0,0,119,0
W
X��initialise_sprite_area
Y
kay%=1024
Z\� IF V%=0 !sprite_area1%=160*kay%:sprite_area1%!8=16:SYS"OS_SpriteOp",&109,sprite_area1%
[R !sprite_area1%=230*kay%:sprite_area1%!8=16:ș"OS_SpriteOp",&109,sprite_area1%
\[� IF V%=0 !sprite_area2%=70*kay%:sprite_area2%!8=16:SYS"OS_SpriteOp",&109,sprite_area2%
]R !sprite_area2%=100*kay%:sprite_area2%!8=16:ș"OS_SpriteOp",&109,sprite_area2%
^�
_
`��pull_variables
adraw%=!(K%+&80)
bsave_screen%=!(K%+&84)
csave_vga_screen%=!(K%+&88)
dscreen_start%=!(K%+&8C)
efill_screen%=!(K%+&A4)
fforest_area%=!(K%+&AC)
gmove_block%=!(K%+&B0)
hscreen_offsets%=!(K%+&B4)
ieffect_start%=!(K%+&B8)
jscroll_all%=!(K%+&BC)
k!(K%+&90)=screen_one%
l!(K%+&94)=screen_two%
mOmscreen_one%=!(K%+&A8)          :� find the location of second screen store
n?!(mscreen_one%+0)=screen_one%   :� store the two screens in
o!!(mscreen_one%+4)=screen_two%
p7� V%=0 !(K%+&98)=80*1024       :� set screen length
q� V%=1 !(K%+&98)=150*1024
r9sprite_area1%=K%+1024*5                    :� 5k code
sJ!(K%+&9C)=sprite_area1%                    :� poke sprite area in code
t6!(K%+&A0)=V%                               :� vga%
u2� IF V%=0 sprite_area2%=sprite_area1%+1024*160
v) sprite_area2%=sprite_area1%+1024*230
wJ� IF V%=0 picture1%=sprite_area2%+1024*70    :REM cga all sprites 230k
xF picture1%=sprite_area2%+1024*100          :� vga all sprites 330k
y>picture2%=picture1%+1024*48                :� 48k picture1
z>page%=picture2%+1024*19                    :� 19k picture2
{L� V%=1 :save_screen%=save_vga_screen%     :� vga screen is bigger (150k)
|!� V%=1 :� 23,17,7,2,8;16;0;0;
}A%=�:�B%=0�20000:�:sp%=�-A%
~4�sp%<5 Z%=2                              :� Arm6
2�sp%>4 � sp%<7 Z%=3                    :� Arm3
�5�sp%>4 � sp%<7 � V%=1 Z%=4           :� Arm3 +VGA
�4�sp%>8 Z%=4                              :� Arm2
��
�
���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$
�
�/��fade(x%,y%,size%,col_st%,cycle%,offsets%)
�,� A%=width in pixels B%=height in pixels
�Cș"OS_SpriteOp",&128,sprite_area1%,fade$ � r0,r1,r2,A%,B%,r5,r6
�A%=A%/2
�� C%= screen start offset
�'�V%=0 C%=(x%/4)+(((1024-y%)/4)*320)
�&�V%=1 C%=(x%/4)+(((960-y%)/4)*320)
�!(screen_one%+C%)=&0
� � 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)
�G%=picture2%
�!�offsets%=1 � screen_offsets%
�A%=40     :� total cycles
�"B%=col_st%      :� next colour
�8C%=cycle%       :� next cycle before colour starting
�D%=8:E%=4*(V%+1) :� size
�� Z%=1 F%=30000  :� pause
�� Z%=2 F%=25000  :� pause
�� Z%=3 F%=15000  :� pause
�� Z%=4 F%=2000   :� pause
�;G%=picture2% :� Give code work space to store addresses
�,� fade$="fade9" � fade$="fade7" F%=10000
�� effect_start%
��
�
���chain(file$)
�>�file$="Pt0.link":dname$="Zero":path$="$.!Crystal2."+file$
�=�file$="Pt1.link":dname$="One":path$="$.!Crystal2."+file$
�=�file$="Pt2.link":dname$="Two":path$="$.!Crystal2."+file$
�?�file$="Pt3.link":dname$="Three":path$="$.!Crystal2."+file$
��Y%=0 �
�  err%=0
�8  test%=0:�:�floppy_disk(dname$,path$,"$.!Crystal2")
�  �err%=17 error
�  �error%=0
��
�!file$="<Crystal2$dir>."+file$
�
�file$
��
�
�$��floppy_disk(dname$,path$,set$)
�Bș "OS_SpriteOp",&110,sprite_area1%,"loadsc",0,400,436,880,636
��
lj��:err%=�:� �:ș "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")
�#   �pri(430,518,"disk "+dname$)
�   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
�'  �dname$="Zero":dlabelname$="Zero"
�%  �dname$="One":dlabelname$="One"
�%  �dname$="Two":dlabelname$="Two"
�)  �dname$="Three":dlabelname$="Three"
�%  ș"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%))
�  �
�<  ș "OS_SpriteOp",&122,sprite_area1%,"loadsc",400,436,0
�"  �name$<>dlabelname$:error%=1
�
  test%=1
�  �"SET Crystal2$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%)
�ȗ ȓ 0,0,1278,958
��pause(50)
��26
�Y�Y%=0:�floppy_screen_save:test%=0:ret$="":�:�floppy_screen_return(diskret%):�error%=0
��Y%=1:�hard_screen_save
��pause(50)
�	*fx15
��
�
�
��printer
�ș&000A0140 � ;fl%
�� (fl% � %1)=%1:�
��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:")
� �
��:� �:�#F%:�"FX229,0":�
��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
� �
N��:� �:ș"PDriver_AbortJob",F%:ș"PDriver_SelectJob",E%:�#F%:�"FX229,0":�
��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
�

��pd_plot_screen
�y%,p%,i%,f%,t%
 *FX229,1
!�y%=0�960-32�32
"ș"PDriver_SelectJob",0,0,0
#Nș"OS_SpriteOp",&110,sprite_area1%,"blank",1,0,y%,1279,y%+32 � 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
-/� Crystal2$save set to directory to save to
.	sc%=0
/�
0sc%=sc%+1:sc$=�(sc%)
16ș"XOS_Find",&40,"<Crystal2$save>.screen"+sc$ � h%
2�IFh%=-1:CLOSE#h%
3�h%<>0:�#h%
4	�h%=0
5=sc%
6
7��floppy_screen_save
8Bș "OS_SpriteOp",&110,sprite_area1%,"loadsc",0,400,436,880,636
9error%=0
:�
;q��:� �:ș "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")
A"   �pri(430,518,"SAVE SCREEN")
B   okx%=760:oky%=456
CH   �0,3:�25,4,okx%;oky%;25,1,100;0;25,1,0;56;25,1,-100;0;25,1,0;-56;
D,   �0,0:�25,4,okx%+2;oky%+4;25,97,96;48;
E,   �pri(430,464,"disk in drive 0    OK")
F
   ȗ�
GO�:ȗmx%,my%,mc%:�(mc%=4)�(mx%>okx%)�(mx%<okx%+100)�(my%>oky%)�(my%<oky%+58)
H	*ADFS
I*MOUNT 0
J#ș"OS_GBPB",5,,input_disk_name%
K'len_d_n%=?input_disk_name%:name$=""
L�dn%=1�len_d_n%
MF�?(input_disk_name%+dn%)>31:name$=name$+�(?(input_disk_name%+dn%))
N�
O:ș "OS_SpriteOp",&122,sprite_area1%,"loadsc",400,436,0
PJ�(name$="Zero")�(name$="One")�(name$="Two")�(name$="Three"):error%=1:�
Q�"SET Crystal2$Save $"
R!screen_number%=�screen_number
Ssc$=�(screen_number%)
T,�"SCREENSAVE <Crystal2$save>.Screen"+sc$
U8� SYS"XOS_SpriteOp",2,"<Crystal2$save>.Screen"+sc$,1
V�#0
W0ș "OS_SpriteOp",&119,sprite_area1%,"loadsc"
X�
Y
Z��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
a �test%=1 �
bH   �24,400;436;880;636;18,0,131,16,24,404;440;876;632;18,0,128,16,26
c
   ȗ�
d#   �pri(430,572,"Please place")
e3   �di%=0:�pri(430,518,"disk Zero"):ret$="Zero"
f1   �di%=1:�pri(430,518,"disk One"):ret$="One"
g1   �di%=2:�pri(430,518,"disk Two"):ret$="Two"
h5   �di%=3:�pri(430,518,"disk Three"):ret$="Three"
i   okx%=760:oky%=456
jH   �0,3:�25,4,okx%;oky%;25,1,100;0;25,1,0;56;25,1,-100;0;25,1,0;-56;
k,   �0,0:�25,4,okx%+2;oky%+4;25,97,96;48;
l/   �pri(430,464,"in drive 0            OK")
m
   ȗ�
nP   �:ȗmx%,my%,mc%:�mc%=4 � mx%>okx% � mx%<okx%+100 � my%>oky% � my%<oky%+58
o �
p
 *ADFS
q
 *MOUNT 0
r$ ș"OS_GBPB",5,,input_disk_name%
s( len_d_n%=?input_disk_name%:name$=""
t �dn%=1�len_d_n%
uH  �?(input_disk_name%+dn%)>31:name$=name$+�(?(input_disk_name%+dn%))
v �
w test%=1
x� name$=ret$
y:ș "OS_SpriteOp",&122,sprite_area1%,"loadsc",400,436,0
z0ș "OS_SpriteOp",&119,sprite_area1%,"loadsc"
{�
|
}��hard_screen_save
~�
��:��:�
�!screen_number%=�screen_number
�sc$=�(screen_number%)
�,�"SCREENSAVE <Crystal2$save>.Screen"+sc$
���
��#0
��
���dt
�*channelvoice 1 1
�*channelvoice 2 2
�ș"XOS_Module",4,"bonk"
�ș"XOS_Module",4,"click"
�ș"XOS_Module",4,"juicy"
�ș"XOS_Module",4,"Smbuzz"
�ș"XOS_Module",4,"jung"
�*channelvoice 1 1
�*channelvoice 2 2
�	M%=S%
�ș"OS_RestoreCursors"
�6�:�buf% 4:�i%=1�16:Ȗ:�c%=0�16:�c%<16v%=16 � v%=24
�Pș"OS_ReadPalette",c%,v% � ,,d%:!buf%=d%:�b%=1�3:�buf%?b%>0buf%?b%-=16:�:�:�
�%�19,c%,v%,buf%?1,buf%?2,buf%?3:�,
�	*FX15
�a=�(50):�a=10 �
�	*FX15
�*FX225,1
� *KEY0 PAGE=&8F00|MOLD|MRUN|M
�*FX138,0,128
�
*BASIC
�1�
�
���dummy
�&� 'cos Adam says you need this bit
��
�
�
�
00000000  0d 00 00 46 f4 ff 41 44  46 53 3a 3a 48 61 72 64  |...F..ADFS::Hard|
00000010  44 69 73 63 34 2e 24 2e  43 72 79 73 74 61 6c 32  |Disc4.$.Crystal2|
00000020  2e 46 69 6e 69 73 68 31  2e 44 65 6d 6f 4d 61 67  |.Finish1.DemoMag|
00000030  2e 21 43 72 79 73 74 61  6c 32 2e 50 74 30 2e 4c  |.!Crystal2.Pt0.L|
00000040  69 62 72 61 72 79 0d 00  01 04 0d 00 02 3f f4 20  |ibrary.......?. |
00000050  42 65 6c 6f 77 20 74 68  69 73 20 6c 69 6e 65 20  |Below this line |
00000060  74 68 65 20 70 72 6f 67  72 61 6d 73 20 77 69 6c  |the programs wil|
00000070  6c 20 72 65 73 69 64 65  20 69 6e 20 6c 69 62 72  |l reside in libr|
00000080  61 72 79 20 66 6f 72 6d  2e 0d 00 03 3f f4 20 2a  |ary form....?. *|
00000090  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
000000c0  2a 2a 2a 2a 2a 2a 2a 2a  0d 00 04 3f f4 20 2a 2a  |********...?. **|
000000d0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00000100  2a 2a 2a 2a 2a 2a 2a 0d  00 05 04 0d 00 06 04 0d  |*******.........|
00000110  00 07 04 0d 00 08 32 dd  f2 6c 6f 61 64 75 6e 73  |......2..loaduns|
00000120  71 75 61 73 68 28 61 72  65 61 25 2c 61 72 65 61  |quash(area%,area|
00000130  73 69 7a 25 2c 73 71 66  69 6c 65 25 2c 73 71 66  |siz%,sqfile%,sqf|
00000140  69 6c 65 24 29 0d 00 09  17 61 72 65 61 25 3d 73  |ile$)....area%=s|
00000150  70 72 69 74 65 5f 61 72  65 61 31 25 0d 00 0a 15  |prite_area1%....|
00000160  61 72 65 61 73 69 7a 25  3d 31 36 30 2a 31 30 32  |areasiz%=160*102|
00000170  34 0d 00 0b 19 73 71 66  69 6c 65 25 3d 73 70 72  |4....sqfile%=spr|
00000180  69 74 65 5f 61 72 65 61  32 25 0d 00 0c 17 73 71  |ite_area2%....sq|
00000190  62 75 66 66 65 72 25 3d  70 69 63 74 75 72 65 32  |buffer%=picture2|
000001a0  25 0d 00 0d 3d ff 22 4c  4f 41 44 20 3c 43 72 79  |%...=."LOAD <Cry|
000001b0  73 74 61 6c 32 24 44 69  72 3e 2e 50 74 30 2e 73  |stal2$Dir>.Pt0.s|
000001c0  70 72 69 74 65 73 2e 22  2b 73 71 66 69 6c 65 24  |prites."+sqfile$|
000001d0  2b 22 20 22 2b c3 7e 73  71 66 69 6c 65 25 0d 00  |+" "+.~sqfile%..|
000001e0  0e 47 c8 99 20 22 4f 53  5f 46 69 6c 65 22 2c 35  |.G.. "OS_File",5|
000001f0  2c 22 3c 43 72 79 73 74  61 6c 32 24 44 69 72 3e  |,"<Crystal2$Dir>|
00000200  2e 50 74 30 2e 73 70 72  69 74 65 73 2e 22 2b 73  |.Pt0.sprites."+s|
00000210  71 66 69 6c 65 24 20 b8  20 2c 2c 2c 2c 66 69 6c  |qfile$ . ,,,,fil|
00000220  65 6c 65 6e 25 0d 00 0f  42 f2 75 6e 73 71 75 61  |elen%...B.unsqua|
00000230  73 68 28 73 71 66 69 6c  65 25 2b 32 30 2c 66 69  |sh(sqfile%+20,fi|
00000240  6c 65 6c 65 6e 25 2d 32  30 2c 73 71 62 75 66 66  |lelen%-20,sqbuff|
00000250  65 72 25 2c 61 72 65 61  25 2b 34 2c 61 72 65 61  |er%,area%+4,area|
00000260  73 69 7a 25 2d 34 29 0d  00 10 05 e1 0d 00 11 04  |siz%-4).........|
00000270  0d 00 12 35 dd f2 75 6e  73 71 75 61 73 68 28 69  |...5..unsquash(i|
00000280  6e 70 74 72 25 2c 69 6e  73 69 7a 25 2c 62 75 66  |nptr%,insiz%,buf|
00000290  70 74 72 25 2c 6f 75 74  70 74 72 25 2c 6f 75 74  |ptr%,outptr%,out|
000002a0  73 69 7a 25 29 0d 00 13  4a c8 99 22 53 71 75 61  |siz%)...J.."Squa|
000002b0  73 68 5f 44 65 63 6f 6d  70 72 65 73 73 22 2c 25  |sh_Decompress",%|
000002c0  31 30 30 2c 62 75 66 70  74 72 25 2c 69 6e 70 74  |100,bufptr%,inpt|
000002d0  72 25 2c 69 6e 73 69 7a  25 2c 6f 75 74 70 74 72  |r%,insiz%,outptr|
000002e0  25 2c 6f 75 74 73 69 7a  25 20 b8 20 72 30 25 0d  |%,outsiz% . r0%.|
000002f0  00 14 05 e1 0d 00 15 04  0d 00 16 0e dd f2 73 74  |..............st|
00000300  5f 70 61 75 73 65 0d 00  17 0b 74 69 6d 65 25 3d  |_pause....time%=|
00000310  91 0d 00 18 05 e1 0d 00  19 04 0d 00 1a 12 dd f2  |................|
00000320  65 6e 5f 70 61 75 73 65  28 74 25 29 0d 00 1b 11  |en_pause(t%)....|
00000330  e7 74 69 6d 65 25 2b 74  25 3c 91 20 e1 0d 00 1c  |.time%+t%<. ....|
00000340  11 f5 3a fd 74 69 6d 65  25 2b 74 25 3c 91 0d 00  |..:.time%+t%<...|
00000350  1d 05 e1 0d 00 1e 04 0d  00 1f 0f dd f2 70 61 75  |.............pau|
00000360  73 65 28 74 25 29 0d 00  20 0b 74 69 6d 65 25 3d  |se(t%).. .time%=|
00000370  91 0d 00 21 11 f5 3a fd  74 69 6d 65 25 2b 74 25  |...!..:.time%+t%|
00000380  3c 91 0d 00 22 05 e1 0d  00 23 04 0d 00 24 0d dd  |<..."....#...$..|
00000390  f2 72 65 6c 65 61 73 65  0d 00 25 12 f5 3a c8 97  |.release..%..:..|
000003a0  58 2c 59 2c 5a 3a fd 5a  3d 30 0d 00 26 05 e1 0d  |X,Y,Z:.Z=0..&...|
000003b0  00 27 04 0d 00 28 19 dd  f2 6c 6f 61 64 5f 73 70  |.'...(...load_sp|
000003c0  72 69 74 65 73 28 6e 61  6d 65 24 29 0d 00 29 3b  |rites(name$)..);|
000003d0  f2 6c 6f 61 64 75 6e 73  71 75 61 73 68 28 73 70  |.loadunsquash(sp|
000003e0  72 69 74 65 5f 61 72 65  61 31 25 2c 28 32 34 30  |rite_area1%,(240|
000003f0  2a 31 30 32 34 29 2c 70  69 63 74 75 72 65 31 25  |*1024),picture1%|
00000400  2c 6e 61 6d 65 24 29 0d  00 2a 05 e1 0d 00 2b 04  |,name$)..*....+.|
00000410  0d 00 2c 1a dd f2 6c 6f  61 64 5f 73 70 72 69 74  |..,...load_sprit|
00000420  65 73 32 28 6e 61 6d 65  24 29 0d 00 2d 4a c8 99  |es2(name$)..-J..|
00000430  22 4f 53 5f 53 70 72 69  74 65 4f 70 22 2c 26 31  |"OS_SpriteOp",&1|
00000440  30 41 2c 73 70 72 69 74  65 5f 61 72 65 61 32 25  |0A,sprite_area2%|
00000450  2c 22 3c 43 72 79 73 74  61 6c 32 24 44 69 72 3e  |,"<Crystal2$Dir>|
00000460  2e 50 74 30 2e 73 70 72  69 74 65 73 2e 22 2b 6e  |.Pt0.sprites."+n|
00000470  61 6d 65 24 0d 00 2e 05  e1 0d 00 2f 04 0d 00 30  |ame$......./...0|
00000480  1f dd f2 6c 6f 61 64 5f  70 69 63 74 75 72 65 28  |...load_picture(|
00000490  61 72 65 61 25 2c 6e 61  6d 65 24 29 0d 00 31 13  |area%,name$)..1.|
000004a0  6c 6f 61 64 24 3d c3 7e  28 61 72 65 61 25 29 0d  |load$=.~(area%).|
000004b0  00 32 35 ff 20 22 4c 4f  41 44 20 3c 43 72 79 73  |.25. "LOAD <Crys|
000004c0  74 61 6c 32 24 44 69 72  3e 2e 50 74 30 2e 64 61  |tal2$Dir>.Pt0.da|
000004d0  74 61 2e 22 2b 6e 61 6d  65 24 2b 22 20 22 2b 6c  |ta."+name$+" "+l|
000004e0  6f 61 64 24 0d 00 33 05  e1 0d 00 34 04 0d 00 35  |oad$..3....4...5|
000004f0  20 dd f2 64 65 6c 65 74  65 5f 73 70 72 69 74 65  | ..delete_sprite|
00000500  28 61 72 65 61 25 2c 6e  61 6d 65 24 29 0d 00 36  |(area%,name$)..6|
00000510  24 c8 99 22 4f 53 5f 53  70 72 69 74 65 4f 70 22  |$.."OS_SpriteOp"|
00000520  2c 26 31 31 39 2c 61 72  65 61 25 2c 6e 61 6d 65  |,&119,area%,name|
00000530  24 0d 00 37 05 e1 0d 00  38 04 0d 00 39 34 dd f2  |$..7....8...94..|
00000540  70 6c 6f 74 5f 73 70 72  69 74 65 28 78 25 2c 79  |plot_sprite(x%,y|
00000550  25 2c 78 6d 25 2c 79 6d  25 2c 78 64 25 2c 79 64  |%,xm%,ym%,xd%,yd|
00000560  25 2c 6e 61 6d 65 24 2c  61 72 65 61 25 29 0d 00  |%,name$,area%)..|
00000570  3a 13 21 28 73 63 61 6c  65 25 2b 30 29 3d 78 6d  |:.!(scale%+0)=xm|
00000580  25 0d 00 3b 16 21 28 73  63 61 6c 65 25 2b 34 29  |%..;.!(scale%+4)|
00000590  3d 79 6d 25 2b 56 25 0d  00 3c 13 21 28 73 63 61  |=ym%+V%..<.!(sca|
000005a0  6c 65 25 2b 38 29 3d 78  64 25 0d 00 3d 14 21 28  |le%+8)=xd%..=.!(|
000005b0  73 63 61 6c 65 25 2b 31  32 29 3d 79 64 25 0d 00  |scale%+12)=yd%..|
000005c0  3e 35 c8 99 22 4f 53 5f  53 70 72 69 74 65 4f 70  |>5.."OS_SpriteOp|
000005d0  22 2c 26 31 33 34 2c 61  72 65 61 25 2c 6e 61 6d  |",&134,area%,nam|
000005e0  65 24 2c 78 25 2c 79 25  2c 30 2c 73 63 61 6c 65  |e$,x%,y%,0,scale|
000005f0  25 2c 30 0d 00 3f 05 e1  0d 00 40 04 0d 00 41 3b  |%,0..?....@...A;|
00000600  dd f2 70 6c 6f 74 5f 73  70 72 69 74 65 5f 6d 61  |..plot_sprite_ma|
00000610  73 6b 65 64 28 78 25 2c  79 25 2c 78 6d 25 2c 79  |sked(x%,y%,xm%,y|
00000620  6d 25 2c 78 64 25 2c 79  64 25 2c 6e 61 6d 65 24  |m%,xd%,yd%,name$|
00000630  2c 61 72 65 61 25 29 0d  00 42 13 21 28 73 63 61  |,area%)..B.!(sca|
00000640  6c 65 25 2b 30 29 3d 78  6d 25 0d 00 43 16 21 28  |le%+0)=xm%..C.!(|
00000650  73 63 61 6c 65 25 2b 34  29 3d 79 6d 25 2b 56 25  |scale%+4)=ym%+V%|
00000660  0d 00 44 13 21 28 73 63  61 6c 65 25 2b 38 29 3d  |..D.!(scale%+8)=|
00000670  78 64 25 0d 00 45 14 21  28 73 63 61 6c 65 25 2b  |xd%..E.!(scale%+|
00000680  31 32 29 3d 79 64 25 0d  00 46 3d c8 99 22 4f 53  |12)=yd%..F=.."OS|
00000690  5f 53 70 72 69 74 65 4f  70 22 2c 26 31 33 34 2c  |_SpriteOp",&134,|
000006a0  73 70 72 69 74 65 5f 61  72 65 61 31 25 2c 6e 61  |sprite_area1%,na|
000006b0  6d 65 24 2c 78 25 2c 79  25 2c 38 2c 73 63 61 6c  |me$,x%,y%,8,scal|
000006c0  65 25 2c 30 0d 00 47 05  e1 0d 00 48 04 0d 00 49  |e%,0..G....H...I|
000006d0  0d dd f2 70 61 6c 65 74  74 65 0d 00 4a 18 ef 31  |...palette..J..1|
000006e0  39 2c 31 2c 32 34 2c 31  33 36 2c 31 33 36 2c 31  |9,1,24,136,136,1|
000006f0  33 36 0d 00 4b 10 ea 70  25 2c 72 25 2c 67 25 2c  |36..K..p%,r%,g%,|
00000700  62 25 0d 00 4c 07 f7 2b  35 0d 00 4d 0c e3 70 25  |b%..L..+5..M..p%|
00000710  3d 30 b8 31 35 0d 00 4e  1a f3 72 25 2c 67 25 2c  |=0.15..N..r%,g%,|
00000720  62 25 3a fb 70 25 2c 72  25 2c 67 25 2c 62 25 0d  |b%:.p%,r%,g%,b%.|
00000730  00 4f 05 ed 0d 00 50 15  ef 31 39 2c 31 2c 32 34  |.O....P..19,1,24|
00000740  2c 30 2c 30 2c 30 3b 30  3b 0d 00 51 05 e1 0d 00  |,0,0,0;0;..Q....|
00000750  52 04 0d 00 53 2f dc 20  32 35 35 2c 32 35 35 2c  |R...S/. 255,255,|
00000760  32 35 35 2c 31 38 37 2c  31 38 37 2c 31 38 37 2c  |255,187,187,187,|
00000770  31 31 39 2c 31 31 39 2c  31 31 39 2c 30 2c 30 2c  |119,119,119,0,0,|
00000780  30 0d 00 54 2b dc 20 31  30 32 2c 31 30 32 2c 31  |0..T+. 102,102,1|
00000790  30 32 2c 30 2c 31 38 37  2c 32 35 35 2c 30 2c 30  |02,0,187,255,0,0|
000007a0  2c 32 32 31 2c 30 2c 30  2c 31 32 31 0d 00 55 2b  |,221,0,0,121..U+|
000007b0  dc 20 31 35 33 2c 31 31  39 2c 30 2c 32 35 35 2c  |. 153,119,0,255,|
000007c0  32 35 35 2c 30 2c 32 35  35 2c 31 33 36 2c 30 2c  |255,0,255,136,0,|
000007d0  32 30 34 2c 30 2c 30 0d  00 56 27 dc 20 31 33 36  |204,0,0..V'. 136|
000007e0  2c 31 30 32 2c 30 2c 30  2c 32 30 34 2c 30 2c 30  |,102,0,0,204,0,0|
000007f0  2c 31 35 33 2c 30 2c 30  2c 31 31 39 2c 30 0d 00  |,153,0,0,119,0..|
00000800  57 04 0d 00 58 1c dd f2  69 6e 69 74 69 61 6c 69  |W...X...initiali|
00000810  73 65 5f 73 70 72 69 74  65 5f 61 72 65 61 0d 00  |se_sprite_area..|
00000820  59 0d 6b 61 79 25 3d 31  30 32 34 0d 00 5a 5c f4  |Y.kay%=1024..Z\.|
00000830  20 49 46 20 56 25 3d 30  20 21 73 70 72 69 74 65  | IF V%=0 !sprite|
00000840  5f 61 72 65 61 31 25 3d  31 36 30 2a 6b 61 79 25  |_area1%=160*kay%|
00000850  3a 73 70 72 69 74 65 5f  61 72 65 61 31 25 21 38  |:sprite_area1%!8|
00000860  3d 31 36 3a 53 59 53 22  4f 53 5f 53 70 72 69 74  |=16:SYS"OS_Sprit|
00000870  65 4f 70 22 2c 26 31 30  39 2c 73 70 72 69 74 65  |eOp",&109,sprite|
00000880  5f 61 72 65 61 31 25 0d  00 5b 52 20 21 73 70 72  |_area1%..[R !spr|
00000890  69 74 65 5f 61 72 65 61  31 25 3d 32 33 30 2a 6b  |ite_area1%=230*k|
000008a0  61 79 25 3a 73 70 72 69  74 65 5f 61 72 65 61 31  |ay%:sprite_area1|
000008b0  25 21 38 3d 31 36 3a c8  99 22 4f 53 5f 53 70 72  |%!8=16:.."OS_Spr|
000008c0  69 74 65 4f 70 22 2c 26  31 30 39 2c 73 70 72 69  |iteOp",&109,spri|
000008d0  74 65 5f 61 72 65 61 31  25 0d 00 5c 5b f4 20 49  |te_area1%..\[. I|
000008e0  46 20 56 25 3d 30 20 21  73 70 72 69 74 65 5f 61  |F V%=0 !sprite_a|
000008f0  72 65 61 32 25 3d 37 30  2a 6b 61 79 25 3a 73 70  |rea2%=70*kay%:sp|
00000900  72 69 74 65 5f 61 72 65  61 32 25 21 38 3d 31 36  |rite_area2%!8=16|
00000910  3a 53 59 53 22 4f 53 5f  53 70 72 69 74 65 4f 70  |:SYS"OS_SpriteOp|
00000920  22 2c 26 31 30 39 2c 73  70 72 69 74 65 5f 61 72  |",&109,sprite_ar|
00000930  65 61 32 25 0d 00 5d 52  20 21 73 70 72 69 74 65  |ea2%..]R !sprite|
00000940  5f 61 72 65 61 32 25 3d  31 30 30 2a 6b 61 79 25  |_area2%=100*kay%|
00000950  3a 73 70 72 69 74 65 5f  61 72 65 61 32 25 21 38  |:sprite_area2%!8|
00000960  3d 31 36 3a c8 99 22 4f  53 5f 53 70 72 69 74 65  |=16:.."OS_Sprite|
00000970  4f 70 22 2c 26 31 30 39  2c 73 70 72 69 74 65 5f  |Op",&109,sprite_|
00000980  61 72 65 61 32 25 0d 00  5e 05 e1 0d 00 5f 04 0d  |area2%..^...._..|
00000990  00 60 14 dd f2 70 75 6c  6c 5f 76 61 72 69 61 62  |.`...pull_variab|
000009a0  6c 65 73 0d 00 61 13 64  72 61 77 25 3d 21 28 4b  |les..a.draw%=!(K|
000009b0  25 2b 26 38 30 29 0d 00  62 1a 73 61 76 65 5f 73  |%+&80)..b.save_s|
000009c0  63 72 65 65 6e 25 3d 21  28 4b 25 2b 26 38 34 29  |creen%=!(K%+&84)|
000009d0  0d 00 63 1e 73 61 76 65  5f 76 67 61 5f 73 63 72  |..c.save_vga_scr|
000009e0  65 65 6e 25 3d 21 28 4b  25 2b 26 38 38 29 0d 00  |een%=!(K%+&88)..|
000009f0  64 1b 73 63 72 65 65 6e  5f 73 74 61 72 74 25 3d  |d.screen_start%=|
00000a00  21 28 4b 25 2b 26 38 43  29 0d 00 65 1a 66 69 6c  |!(K%+&8C)..e.fil|
00000a10  6c 5f 73 63 72 65 65 6e  25 3d 21 28 4b 25 2b 26  |l_screen%=!(K%+&|
00000a20  41 34 29 0d 00 66 1a 66  6f 72 65 73 74 5f 61 72  |A4)..f.forest_ar|
00000a30  65 61 25 3d 21 28 4b 25  2b 26 41 43 29 0d 00 67  |ea%=!(K%+&AC)..g|
00000a40  19 6d 6f 76 65 5f 62 6c  6f 63 6b 25 3d 21 28 4b  |.move_block%=!(K|
00000a50  25 2b 26 42 30 29 0d 00  68 1d 73 63 72 65 65 6e  |%+&B0)..h.screen|
00000a60  5f 6f 66 66 73 65 74 73  25 3d 21 28 4b 25 2b 26  |_offsets%=!(K%+&|
00000a70  42 34 29 0d 00 69 1b 65  66 66 65 63 74 5f 73 74  |B4)..i.effect_st|
00000a80  61 72 74 25 3d 21 28 4b  25 2b 26 42 38 29 0d 00  |art%=!(K%+&B8)..|
00000a90  6a 19 73 63 72 6f 6c 6c  5f 61 6c 6c 25 3d 21 28  |j.scroll_all%=!(|
00000aa0  4b 25 2b 26 42 43 29 0d  00 6b 19 21 28 4b 25 2b  |K%+&BC)..k.!(K%+|
00000ab0  26 39 30 29 3d 73 63 72  65 65 6e 5f 6f 6e 65 25  |&90)=screen_one%|
00000ac0  0d 00 6c 19 21 28 4b 25  2b 26 39 34 29 3d 73 63  |..l.!(K%+&94)=sc|
00000ad0  72 65 65 6e 5f 74 77 6f  25 0d 00 6d 4f 6d 73 63  |reen_two%..mOmsc|
00000ae0  72 65 65 6e 5f 6f 6e 65  25 3d 21 28 4b 25 2b 26  |reen_one%=!(K%+&|
00000af0  41 38 29 20 20 20 20 20  20 20 20 20 20 3a f4 20  |A8)          :. |
00000b00  66 69 6e 64 20 74 68 65  20 6c 6f 63 61 74 69 6f  |find the locatio|
00000b10  6e 20 6f 66 20 73 65 63  6f 6e 64 20 73 63 72 65  |n of second scre|
00000b20  65 6e 20 73 74 6f 72 65  0d 00 6e 3f 21 28 6d 73  |en store..n?!(ms|
00000b30  63 72 65 65 6e 5f 6f 6e  65 25 2b 30 29 3d 73 63  |creen_one%+0)=sc|
00000b40  72 65 65 6e 5f 6f 6e 65  25 20 20 20 3a f4 20 73  |reen_one%   :. s|
00000b50  74 6f 72 65 20 74 68 65  20 74 77 6f 20 73 63 72  |tore the two scr|
00000b60  65 65 6e 73 20 69 6e 0d  00 6f 21 21 28 6d 73 63  |eens in..o!!(msc|
00000b70  72 65 65 6e 5f 6f 6e 65  25 2b 34 29 3d 73 63 72  |reen_one%+4)=scr|
00000b80  65 65 6e 5f 74 77 6f 25  0d 00 70 37 e7 20 56 25  |een_two%..p7. V%|
00000b90  3d 30 20 21 28 4b 25 2b  26 39 38 29 3d 38 30 2a  |=0 !(K%+&98)=80*|
00000ba0  31 30 32 34 20 20 20 20  20 20 20 3a f4 20 73 65  |1024       :. se|
00000bb0  74 20 73 63 72 65 65 6e  20 6c 65 6e 67 74 68 0d  |t screen length.|
00000bc0  00 71 1d e7 20 56 25 3d  31 20 21 28 4b 25 2b 26  |.q.. V%=1 !(K%+&|
00000bd0  39 38 29 3d 31 35 30 2a  31 30 32 34 0d 00 72 39  |98)=150*1024..r9|
00000be0  73 70 72 69 74 65 5f 61  72 65 61 31 25 3d 4b 25  |sprite_area1%=K%|
00000bf0  2b 31 30 32 34 2a 35 20  20 20 20 20 20 20 20 20  |+1024*5         |
00000c00  20 20 20 20 20 20 20 20  20 20 20 3a f4 20 35 6b  |           :. 5k|
00000c10  20 63 6f 64 65 0d 00 73  4a 21 28 4b 25 2b 26 39  | code..sJ!(K%+&9|
00000c20  43 29 3d 73 70 72 69 74  65 5f 61 72 65 61 31 25  |C)=sprite_area1%|
00000c30  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000c40  20 20 20 20 3a f4 20 70  6f 6b 65 20 73 70 72 69  |    :. poke spri|
00000c50  74 65 20 61 72 65 61 20  69 6e 20 63 6f 64 65 0d  |te area in code.|
00000c60  00 74 36 21 28 4b 25 2b  26 41 30 29 3d 56 25 20  |.t6!(K%+&A0)=V% |
00000c70  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000c80  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3a f4  |              :.|
00000c90  20 76 67 61 25 0d 00 75  32 f4 20 49 46 20 56 25  | vga%..u2. IF V%|
00000ca0  3d 30 20 73 70 72 69 74  65 5f 61 72 65 61 32 25  |=0 sprite_area2%|
00000cb0  3d 73 70 72 69 74 65 5f  61 72 65 61 31 25 2b 31  |=sprite_area1%+1|
00000cc0  30 32 34 2a 31 36 30 0d  00 76 29 20 73 70 72 69  |024*160..v) spri|
00000cd0  74 65 5f 61 72 65 61 32  25 3d 73 70 72 69 74 65  |te_area2%=sprite|
00000ce0  5f 61 72 65 61 31 25 2b  31 30 32 34 2a 32 33 30  |_area1%+1024*230|
00000cf0  0d 00 77 4a f4 20 49 46  20 56 25 3d 30 20 70 69  |..wJ. IF V%=0 pi|
00000d00  63 74 75 72 65 31 25 3d  73 70 72 69 74 65 5f 61  |cture1%=sprite_a|
00000d10  72 65 61 32 25 2b 31 30  32 34 2a 37 30 20 20 20  |rea2%+1024*70   |
00000d20  20 3a 52 45 4d 20 63 67  61 20 61 6c 6c 20 73 70  | :REM cga all sp|
00000d30  72 69 74 65 73 20 32 33  30 6b 0d 00 78 46 20 70  |rites 230k..xF p|
00000d40  69 63 74 75 72 65 31 25  3d 73 70 72 69 74 65 5f  |icture1%=sprite_|
00000d50  61 72 65 61 32 25 2b 31  30 32 34 2a 31 30 30 20  |area2%+1024*100 |
00000d60  20 20 20 20 20 20 20 20  20 3a f4 20 76 67 61 20  |         :. vga |
00000d70  61 6c 6c 20 73 70 72 69  74 65 73 20 33 33 30 6b  |all sprites 330k|
00000d80  0d 00 79 3e 70 69 63 74  75 72 65 32 25 3d 70 69  |..y>picture2%=pi|
00000d90  63 74 75 72 65 31 25 2b  31 30 32 34 2a 34 38 20  |cture1%+1024*48 |
00000da0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3a  |               :|
00000db0  f4 20 34 38 6b 20 70 69  63 74 75 72 65 31 0d 00  |. 48k picture1..|
00000dc0  7a 3e 70 61 67 65 25 3d  70 69 63 74 75 72 65 32  |z>page%=picture2|
00000dd0  25 2b 31 30 32 34 2a 31  39 20 20 20 20 20 20 20  |%+1024*19       |
00000de0  20 20 20 20 20 20 20 20  20 20 20 20 20 3a f4 20  |             :. |
00000df0  31 39 6b 20 70 69 63 74  75 72 65 32 0d 00 7b 4c  |19k picture2..{L|
00000e00  e7 20 56 25 3d 31 20 3a  73 61 76 65 5f 73 63 72  |. V%=1 :save_scr|
00000e10  65 65 6e 25 3d 73 61 76  65 5f 76 67 61 5f 73 63  |een%=save_vga_sc|
00000e20  72 65 65 6e 25 20 20 20  20 20 3a f4 20 76 67 61  |reen%     :. vga|
00000e30  20 73 63 72 65 65 6e 20  69 73 20 62 69 67 67 65  | screen is bigge|
00000e40  72 20 28 31 35 30 6b 29  0d 00 7c 21 e7 20 56 25  |r (150k)..|!. V%|
00000e50  3d 31 20 3a ef 20 32 33  2c 31 37 2c 37 2c 32 2c  |=1 :. 23,17,7,2,|
00000e60  38 3b 31 36 3b 30 3b 30  3b 0d 00 7d 1f 41 25 3d  |8;16;0;0;..}.A%=|
00000e70  91 3a e3 42 25 3d 30 b8  32 30 30 30 30 3a ed 3a  |.:.B%=0.20000:.:|
00000e80  73 70 25 3d 91 2d 41 25  0d 00 7e 34 e7 73 70 25  |sp%=.-A%..~4.sp%|
00000e90  3c 35 20 5a 25 3d 32 20  20 20 20 20 20 20 20 20  |<5 Z%=2         |
00000ea0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000eb0  20 20 20 20 20 3a f4 20  41 72 6d 36 0d 00 7f 32  |     :. Arm6...2|
00000ec0  e7 73 70 25 3e 34 20 80  20 73 70 25 3c 37 20 5a  |.sp%>4 . sp%<7 Z|
00000ed0  25 3d 33 20 20 20 20 20  20 20 20 20 20 20 20 20  |%=3             |
00000ee0  20 20 20 20 20 20 20 3a  f4 20 41 72 6d 33 0d 00  |       :. Arm3..|
00000ef0  80 35 e7 73 70 25 3e 34  20 80 20 73 70 25 3c 37  |.5.sp%>4 . sp%<7|
00000f00  20 80 20 56 25 3d 31 20  5a 25 3d 34 20 20 20 20  | . V%=1 Z%=4    |
00000f10  20 20 20 20 20 20 20 3a  f4 20 41 72 6d 33 20 2b  |       :. Arm3 +|
00000f20  56 47 41 0d 00 81 34 e7  73 70 25 3e 38 20 5a 25  |VGA...4.sp%>8 Z%|
00000f30  3d 34 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |=4              |
00000f40  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000f50  3a f4 20 41 72 6d 32 0d  00 82 05 e1 0d 00 83 04  |:. Arm2.........|
00000f60  0d 00 84 12 dd f2 66 69  6e 64 5f 73 63 72 65 65  |......find_scree|
00000f70  6e 73 0d 00 85 0c 2a 66  78 31 31 32 2c 32 0d 00  |ns....*fx112,2..|
00000f80  86 21 73 63 72 65 65 6e  5f 74 77 6f 25 3d a4 66  |.!screen_two%=.f|
00000f90  69 6e 64 5f 73 63 72 65  65 6e 28 31 34 38 29 0d  |ind_screen(148).|
00000fa0  00 87 0c 2a 66 78 31 31  32 2c 31 0d 00 88 21 73  |...*fx112,1...!s|
00000fb0  63 72 65 65 6e 5f 6f 6e  65 25 3d a4 66 69 6e 64  |creen_one%=.find|
00000fc0  5f 73 63 72 65 65 6e 28  31 34 38 29 0d 00 89 05  |_screen(148)....|
00000fd0  e1 0d 00 8a 04 0d 00 8b  17 dd a4 66 69 6e 64 5f  |...........find_|
00000fe0  73 63 72 65 65 6e 28 73  63 72 25 29 0d 00 8c 2a  |screen(scr%)...*|
00000ff0  21 69 6e 70 75 74 25 3d  73 63 72 25 20 20 20 20  |!input%=scr%    |
00001000  20 20 20 20 20 20 20 20  20 3a f4 20 31 34 38 20  |         :. 148 |
00001010  4f 52 20 31 34 39 0d 00  8d 12 21 28 69 6e 70 75  |OR 149....!(inpu|
00001020  74 25 2b 34 29 3d 2d 31  0d 00 8e 2b c8 99 20 22  |t%+4)=-1...+.. "|
00001030  4f 53 5f 52 65 61 64 56  64 75 56 61 72 69 61 62  |OS_ReadVduVariab|
00001040  6c 65 73 22 2c 69 6e 70  75 74 25 2c 6f 75 74 70  |les",input%,outp|
00001050  75 74 25 0d 00 8f 0d 3d  21 6f 75 74 70 75 74 25  |ut%....=!output%|
00001060  0d 00 90 04 0d 00 91 14  dd a4 72 65 61 64 73 79  |..........readsy|
00001070  73 76 61 72 28 61 24 29  0d 00 92 4f c8 99 20 22  |svar(a$)...O.. "|
00001080  4f 53 5f 52 65 61 64 56  61 72 56 61 6c 22 2c 61  |OS_ReadVarVal",a|
00001090  24 2c 62 6c 6b 25 2c 32  35 36 2c 30 2c 30 20 b8  |$,blk%,256,0,0 .|
000010a0  20 2c 2c 61 25 3a 61 24  3d 22 22 3a e3 41 25 3d  | ,,a%:a$="":.A%=|
000010b0  30 b8 61 25 2d 31 3a 61  24 2b 3d bd 28 62 6c 6b  |0.a%-1:a$+=.(blk|
000010c0  25 3f 41 25 29 3a ed 0d  00 93 07 3d 61 24 0d 00  |%?A%):.....=a$..|
000010d0  94 04 0d 00 95 14 dd a4  72 65 61 64 73 74 72 69  |........readstri|
000010e0  6e 67 28 70 25 29 0d 00  96 32 ea 61 24 3a 61 24  |ng(p%)...2.a$:a$|
000010f0  3d 22 22 3a c8 95 20 a9  61 24 3c 32 35 35 20 80  |="":.. .a$<255 .|
00001100  20 3f 70 25 3e 33 31 20  61 24 2b 3d bd 3f 70 25  | ?p%>31 a$+=.?p%|
00001110  3a 70 25 2b 3d 31 3a ce  0d 00 97 07 3d 61 24 0d  |:p%+=1:.....=a$.|
00001120  00 98 04 0d 00 99 2f dd  f2 66 61 64 65 28 78 25  |....../..fade(x%|
00001130  2c 79 25 2c 73 69 7a 65  25 2c 63 6f 6c 5f 73 74  |,y%,size%,col_st|
00001140  25 2c 63 79 63 6c 65 25  2c 6f 66 66 73 65 74 73  |%,cycle%,offsets|
00001150  25 29 0d 00 9a 2c f4 20  41 25 3d 77 69 64 74 68  |%)...,. A%=width|
00001160  20 69 6e 20 70 69 78 65  6c 73 20 42 25 3d 68 65  | in pixels B%=he|
00001170  69 67 68 74 20 69 6e 20  70 69 78 65 6c 73 0d 00  |ight in pixels..|
00001180  9b 43 c8 99 22 4f 53 5f  53 70 72 69 74 65 4f 70  |.C.."OS_SpriteOp|
00001190  22 2c 26 31 32 38 2c 73  70 72 69 74 65 5f 61 72  |",&128,sprite_ar|
000011a0  65 61 31 25 2c 66 61 64  65 24 20 b8 20 72 30 2c  |ea1%,fade$ . r0,|
000011b0  72 31 2c 72 32 2c 41 25  2c 42 25 2c 72 35 2c 72  |r1,r2,A%,B%,r5,r|
000011c0  36 0d 00 9c 0b 41 25 3d  41 25 2f 32 0d 00 9d 1d  |6....A%=A%/2....|
000011d0  f4 20 43 25 3d 20 73 63  72 65 65 6e 20 73 74 61  |. C%= screen sta|
000011e0  72 74 20 6f 66 66 73 65  74 0d 00 9e 27 e7 56 25  |rt offset...'.V%|
000011f0  3d 30 20 43 25 3d 28 78  25 2f 34 29 2b 28 28 28  |=0 C%=(x%/4)+(((|
00001200  31 30 32 34 2d 79 25 29  2f 34 29 2a 33 32 30 29  |1024-y%)/4)*320)|
00001210  0d 00 9f 26 e7 56 25 3d  31 20 43 25 3d 28 78 25  |...&.V%=1 C%=(x%|
00001220  2f 34 29 2b 28 28 28 39  36 30 2d 79 25 29 2f 34  |/4)+(((960-y%)/4|
00001230  29 2a 33 32 30 29 0d 00  a0 18 21 28 73 63 72 65  |)*320)....!(scre|
00001240  65 6e 5f 6f 6e 65 25 2b  43 25 29 3d 26 30 0d 00  |en_one%+C%)=&0..|
00001250  a1 20 f4 20 44 25 20 62  6c 6f 63 6b 20 78 20 20  |. . D% block x  |
00001260  20 20 20 20 45 25 20 62  6c 6f 63 6b 20 79 0d 00  |    E% block y..|
00001270  a2 1e 44 25 3d 73 69 7a  65 25 3a 45 25 3d 73 69  |..D%=size%:E%=si|
00001280  7a 65 25 2b 28 76 67 61  25 2a 34 29 0d 00 a3 1b  |ze%+(vga%*4)....|
00001290  f4 20 46 25 20 3d 73 70  72 69 74 65 20 64 61 74  |. F% =sprite dat|
000012a0  61 20 73 74 61 72 74 0d  00 a4 39 c8 99 22 4f 53  |a start...9.."OS|
000012b0  5f 53 70 72 69 74 65 4f  70 22 2c 26 31 31 38 2c  |_SpriteOp",&118,|
000012c0  73 70 72 69 74 65 5f 61  72 65 61 31 25 2c 66 61  |sprite_area1%,fa|
000012d0  64 65 24 20 b8 20 72 30  2c 72 31 2c 61 64 64 25  |de$ . r0,r1,add%|
000012e0  0d 00 a5 16 46 25 3d 61  64 64 25 2b 21 28 61 64  |....F%=add%+!(ad|
000012f0  64 25 2b 33 32 29 0d 00  a6 10 47 25 3d 70 69 63  |d%+32)....G%=pic|
00001300  74 75 72 65 32 25 0d 00  a7 21 e7 6f 66 66 73 65  |ture2%...!.offse|
00001310  74 73 25 3d 31 20 d6 20  73 63 72 65 65 6e 5f 6f  |ts%=1 . screen_o|
00001320  66 66 73 65 74 73 25 0d  00 a8 1d 41 25 3d 34 30  |ffsets%....A%=40|
00001330  20 20 20 20 20 3a f4 20  74 6f 74 61 6c 20 63 79  |     :. total cy|
00001340  63 6c 65 73 0d 00 a9 22  42 25 3d 63 6f 6c 5f 73  |cles..."B%=col_s|
00001350  74 25 20 20 20 20 20 20  3a f4 20 6e 65 78 74 20  |t%      :. next |
00001360  63 6f 6c 6f 75 72 0d 00  aa 38 43 25 3d 63 79 63  |colour...8C%=cyc|
00001370  6c 65 25 20 20 20 20 20  20 20 3a f4 20 6e 65 78  |le%       :. nex|
00001380  74 20 63 79 63 6c 65 20  62 65 66 6f 72 65 20 63  |t cycle before c|
00001390  6f 6c 6f 75 72 20 73 74  61 72 74 69 6e 67 0d 00  |olour starting..|
000013a0  ab 1c 44 25 3d 38 3a 45  25 3d 34 2a 28 56 25 2b  |..D%=8:E%=4*(V%+|
000013b0  31 29 20 3a f4 20 73 69  7a 65 0d 00 ac 1d e7 20  |1) :. size..... |
000013c0  5a 25 3d 31 20 46 25 3d  33 30 30 30 30 20 20 3a  |Z%=1 F%=30000  :|
000013d0  f4 20 70 61 75 73 65 0d  00 ad 1d e7 20 5a 25 3d  |. pause..... Z%=|
000013e0  32 20 46 25 3d 32 35 30  30 30 20 20 3a f4 20 70  |2 F%=25000  :. p|
000013f0  61 75 73 65 0d 00 ae 1d  e7 20 5a 25 3d 33 20 46  |ause..... Z%=3 F|
00001400  25 3d 31 35 30 30 30 20  20 3a f4 20 70 61 75 73  |%=15000  :. paus|
00001410  65 0d 00 af 1d e7 20 5a  25 3d 34 20 46 25 3d 32  |e..... Z%=4 F%=2|
00001420  30 30 30 20 20 20 3a f4  20 70 61 75 73 65 0d 00  |000   :. pause..|
00001430  b0 3b 47 25 3d 70 69 63  74 75 72 65 32 25 20 3a  |.;G%=picture2% :|
00001440  f4 20 47 69 76 65 20 63  6f 64 65 20 77 6f 72 6b  |. Give code work|
00001450  20 73 70 61 63 65 20 74  6f 20 73 74 6f 72 65 20  | space to store |
00001460  61 64 64 72 65 73 73 65  73 0d 00 b1 2c e7 20 66  |addresses...,. f|
00001470  61 64 65 24 3d 22 66 61  64 65 39 22 20 84 20 66  |ade$="fade9" . f|
00001480  61 64 65 24 3d 22 66 61  64 65 37 22 20 46 25 3d  |ade$="fade7" F%=|
00001490  31 30 30 30 30 0d 00 b2  13 d6 20 65 66 66 65 63  |10000..... effec|
000014a0  74 5f 73 74 61 72 74 25  0d 00 b3 05 e1 0d 00 b4  |t_start%........|
000014b0  04 0d 00 b5 12 dd f2 63  68 61 69 6e 28 66 69 6c  |.......chain(fil|
000014c0  65 24 29 0d 00 b6 3e e7  66 69 6c 65 24 3d 22 50  |e$)...>.file$="P|
000014d0  74 30 2e 6c 69 6e 6b 22  3a 64 6e 61 6d 65 24 3d  |t0.link":dname$=|
000014e0  22 5a 65 72 6f 22 3a 70  61 74 68 24 3d 22 24 2e  |"Zero":path$="$.|
000014f0  21 43 72 79 73 74 61 6c  32 2e 22 2b 66 69 6c 65  |!Crystal2."+file|
00001500  24 0d 00 b7 3d e7 66 69  6c 65 24 3d 22 50 74 31  |$...=.file$="Pt1|
00001510  2e 6c 69 6e 6b 22 3a 64  6e 61 6d 65 24 3d 22 4f  |.link":dname$="O|
00001520  6e 65 22 3a 70 61 74 68  24 3d 22 24 2e 21 43 72  |ne":path$="$.!Cr|
00001530  79 73 74 61 6c 32 2e 22  2b 66 69 6c 65 24 0d 00  |ystal2."+file$..|
00001540  b8 3d e7 66 69 6c 65 24  3d 22 50 74 32 2e 6c 69  |.=.file$="Pt2.li|
00001550  6e 6b 22 3a 64 6e 61 6d  65 24 3d 22 54 77 6f 22  |nk":dname$="Two"|
00001560  3a 70 61 74 68 24 3d 22  24 2e 21 43 72 79 73 74  |:path$="$.!Cryst|
00001570  61 6c 32 2e 22 2b 66 69  6c 65 24 0d 00 b9 3f e7  |al2."+file$...?.|
00001580  66 69 6c 65 24 3d 22 50  74 33 2e 6c 69 6e 6b 22  |file$="Pt3.link"|
00001590  3a 64 6e 61 6d 65 24 3d  22 54 68 72 65 65 22 3a  |:dname$="Three":|
000015a0  70 61 74 68 24 3d 22 24  2e 21 43 72 79 73 74 61  |path$="$.!Crysta|
000015b0  6c 32 2e 22 2b 66 69 6c  65 24 0d 00 ba 0b e7 59  |l2."+file$.....Y|
000015c0  25 3d 30 20 8c 0d 00 bb  0c 20 20 65 72 72 25 3d  |%=0 .....  err%=|
000015d0  30 0d 00 bc 38 20 20 74  65 73 74 25 3d 30 3a f5  |0...8  test%=0:.|
000015e0  3a f2 66 6c 6f 70 70 79  5f 64 69 73 6b 28 64 6e  |:.floppy_disk(dn|
000015f0  61 6d 65 24 2c 70 61 74  68 24 2c 22 24 2e 21 43  |ame$,path$,"$.!C|
00001600  72 79 73 74 61 6c 32 22  29 0d 00 bd 14 20 20 e7  |rystal2")....  .|
00001610  65 72 72 25 3d 31 37 20  65 72 72 6f 72 0d 00 be  |err%=17 error...|
00001620  0f 20 20 fd 65 72 72 6f  72 25 3d 30 0d 00 bf 05  |.  .error%=0....|
00001630  cd 0d 00 c0 21 66 69 6c  65 24 3d 22 3c 43 72 79  |....!file$="<Cry|
00001640  73 74 61 6c 32 24 64 69  72 3e 2e 22 2b 66 69 6c  |stal2$dir>."+fil|
00001650  65 24 0d 00 c1 0a d7 66  69 6c 65 24 0d 00 c2 05  |e$.....file$....|
00001660  fa 0d 00 c3 04 0d 00 c4  24 dd f2 66 6c 6f 70 70  |........$..flopp|
00001670  79 5f 64 69 73 6b 28 64  6e 61 6d 65 24 2c 70 61  |y_disk(dname$,pa|
00001680  74 68 24 2c 73 65 74 24  29 0d 00 c5 42 c8 99 20  |th$,set$)...B.. |
00001690  22 4f 53 5f 53 70 72 69  74 65 4f 70 22 2c 26 31  |"OS_SpriteOp",&1|
000016a0  31 30 2c 73 70 72 69 74  65 5f 61 72 65 61 31 25  |10,sprite_area1%|
000016b0  2c 22 6c 6f 61 64 73 63  22 2c 30 2c 34 30 30 2c  |,"loadsc",0,400,|
000016c0  34 33 36 2c 38 38 30 2c  36 33 36 0d 00 c6 06 ea  |436,880,636.....|
000016d0  85 0d 00 c7 89 ee 85 ea  3a 65 72 72 25 3d 9f 3a  |........:err%=.:|
000016e0  f7 20 85 3a c8 99 20 22  4f 53 5f 53 70 72 69 74  |. .:.. "OS_Sprit|
000016f0  65 4f 70 22 2c 26 31 33  34 2c 73 70 72 69 74 65  |eOp",&134,sprite|
00001700  5f 61 72 65 61 31 25 2c  22 6c 6f 61 64 73 63 22  |_area1%,"loadsc"|
00001710  2c 34 30 30 2c 34 33 36  2c 30 3a c8 99 20 22 4f  |,400,436,0:.. "O|
00001720  53 5f 53 70 72 69 74 65  4f 70 22 2c 26 31 31 39  |S_SpriteOp",&119|
00001730  2c 73 70 72 69 74 65 5f  61 72 65 61 31 25 2c 22  |,sprite_area1%,"|
00001740  6c 6f 61 64 73 63 22 3a  65 72 72 6f 72 25 3d 31  |loadsc":error%=1|
00001750  3a 74 65 73 74 25 3d 31  3a e1 0d 00 c8 05 f5 0d  |:test%=1:.......|
00001760  00 c9 0e 20 20 65 72 72  6f 72 25 3d 30 0d 00 ca  |...  error%=0...|
00001770  10 20 20 e7 74 65 73 74  25 3d 31 20 8c 0d 00 cb  |.  .test%=1 ....|
00001780  48 20 20 20 ef 32 34 2c  34 30 30 3b 34 33 36 3b  |H   .24,400;436;|
00001790  38 38 30 3b 36 33 36 3b  31 38 2c 30 2c 31 33 31  |880;636;18,0,131|
000017a0  2c 31 36 2c 32 34 2c 34  30 34 3b 34 34 30 3b 38  |,16,24,404;440;8|
000017b0  37 36 3b 36 33 32 3b 31  38 2c 30 2c 31 32 38 2c  |76;632;18,0,128,|
000017c0  31 36 2c 32 36 0d 00 cc  0a 20 20 20 c8 97 ee 0d  |16,26....   ....|
000017d0  00 cd 23 20 20 20 f2 70  72 69 28 34 33 30 2c 35  |..#   .pri(430,5|
000017e0  37 32 2c 22 50 6c 65 61  73 65 20 70 6c 61 63 65  |72,"Please place|
000017f0  22 29 0d 00 ce 23 20 20  20 f2 70 72 69 28 34 33  |")...#   .pri(43|
00001800  30 2c 35 31 38 2c 22 64  69 73 6b 20 22 2b 64 6e  |0,518,"disk "+dn|
00001810  61 6d 65 24 29 0d 00 cf  18 20 20 20 6f 6b 78 25  |ame$)....   okx%|
00001820  3d 37 36 30 3a 6f 6b 79  25 3d 34 35 36 0d 00 d0  |=760:oky%=456...|
00001830  48 20 20 20 e6 30 2c 33  3a ef 32 35 2c 34 2c 6f  |H   .0,3:.25,4,o|
00001840  6b 78 25 3b 6f 6b 79 25  3b 32 35 2c 31 2c 31 30  |kx%;oky%;25,1,10|
00001850  30 3b 30 3b 32 35 2c 31  2c 30 3b 35 36 3b 32 35  |0;0;25,1,0;56;25|
00001860  2c 31 2c 2d 31 30 30 3b  30 3b 32 35 2c 31 2c 30  |,1,-100;0;25,1,0|
00001870  3b 2d 35 36 3b 0d 00 d1  2c 20 20 20 e6 30 2c 30  |;-56;...,   .0,0|
00001880  3a ef 32 35 2c 34 2c 6f  6b 78 25 2b 32 3b 6f 6b  |:.25,4,okx%+2;ok|
00001890  79 25 2b 34 3b 32 35 2c  39 37 2c 39 36 3b 34 38  |y%+4;25,97,96;48|
000018a0  3b 0d 00 d2 2f 20 20 20  f2 70 72 69 28 34 33 30  |;.../   .pri(430|
000018b0  2c 34 36 34 2c 22 69 6e  20 64 72 69 76 65 20 30  |,464,"in drive 0|
000018c0  20 20 20 20 20 20 20 20  20 20 20 20 4f 4b 22 29  |            OK")|
000018d0  0d 00 d3 0a 20 20 20 c8  97 ee 0d 00 d4 50 20 20  |....   ......P  |
000018e0  20 f5 3a c8 97 6d 78 25  2c 6d 79 25 2c 6d 63 25  | .:..mx%,my%,mc%|
000018f0  3a fd 6d 63 25 3d 34 20  80 20 6d 78 25 3e 6f 6b  |:.mc%=4 . mx%>ok|
00001900  78 25 20 80 20 6d 78 25  3c 6f 6b 78 25 2b 31 30  |x% . mx%<okx%+10|
00001910  30 20 80 20 6d 79 25 3e  6f 6b 79 25 20 80 20 6d  |0 . my%>oky% . m|
00001920  79 25 3c 6f 6b 79 25 2b  35 38 0d 00 d5 07 20 20  |y%<oky%+58....  |
00001930  cd 0d 00 d6 0b 20 20 2a  41 44 46 53 0d 00 d7 0e  |.....  *ADFS....|
00001940  20 20 2a 4d 4f 55 4e 54  20 30 0d 00 d8 27 20 20  |  *MOUNT 0...'  |
00001950  e7 64 6e 61 6d 65 24 3d  22 5a 65 72 6f 22 3a 64  |.dname$="Zero":d|
00001960  6c 61 62 65 6c 6e 61 6d  65 24 3d 22 5a 65 72 6f  |labelname$="Zero|
00001970  22 0d 00 d9 25 20 20 e7  64 6e 61 6d 65 24 3d 22  |"...%  .dname$="|
00001980  4f 6e 65 22 3a 64 6c 61  62 65 6c 6e 61 6d 65 24  |One":dlabelname$|
00001990  3d 22 4f 6e 65 22 0d 00  da 25 20 20 e7 64 6e 61  |="One"...%  .dna|
000019a0  6d 65 24 3d 22 54 77 6f  22 3a 64 6c 61 62 65 6c  |me$="Two":dlabel|
000019b0  6e 61 6d 65 24 3d 22 54  77 6f 22 0d 00 db 29 20  |name$="Two"...) |
000019c0  20 e7 64 6e 61 6d 65 24  3d 22 54 68 72 65 65 22  | .dname$="Three"|
000019d0  3a 64 6c 61 62 65 6c 6e  61 6d 65 24 3d 22 54 68  |:dlabelname$="Th|
000019e0  72 65 65 22 0d 00 dc 25  20 20 c8 99 22 4f 53 5f  |ree"...%  .."OS_|
000019f0  47 42 50 42 22 2c 35 2c  2c 69 6e 70 75 74 5f 64  |GBPB",5,,input_d|
00001a00  69 73 6b 5f 6e 61 6d 65  25 0d 00 dd 29 20 20 6c  |isk_name%...)  l|
00001a10  65 6e 5f 64 5f 6e 25 3d  3f 69 6e 70 75 74 5f 64  |en_d_n%=?input_d|
00001a20  69 73 6b 5f 6e 61 6d 65  25 3a 6e 61 6d 65 24 3d  |isk_name%:name$=|
00001a30  22 22 0d 00 de 15 20 20  e3 64 6e 25 3d 31 b8 6c  |""....  .dn%=1.l|
00001a40  65 6e 5f 64 5f 6e 25 0d  00 df 48 20 20 e7 3f 28  |en_d_n%...H  .?(|
00001a50  69 6e 70 75 74 5f 64 69  73 6b 5f 6e 61 6d 65 25  |input_disk_name%|
00001a60  2b 64 6e 25 29 3e 33 31  3a 6e 61 6d 65 24 3d 6e  |+dn%)>31:name$=n|
00001a70  61 6d 65 24 2b bd 28 3f  28 69 6e 70 75 74 5f 64  |ame$+.(?(input_d|
00001a80  69 73 6b 5f 6e 61 6d 65  25 2b 64 6e 25 29 29 0d  |isk_name%+dn%)).|
00001a90  00 e0 07 20 20 ed 0d 00  e1 3c 20 20 c8 99 20 22  |...  ....<  .. "|
00001aa0  4f 53 5f 53 70 72 69 74  65 4f 70 22 2c 26 31 32  |OS_SpriteOp",&12|
00001ab0  32 2c 73 70 72 69 74 65  5f 61 72 65 61 31 25 2c  |2,sprite_area1%,|
00001ac0  22 6c 6f 61 64 73 63 22  2c 34 30 30 2c 34 33 36  |"loadsc",400,436|
00001ad0  2c 30 0d 00 e2 22 20 20  e7 6e 61 6d 65 24 3c 3e  |,0..."  .name$<>|
00001ae0  64 6c 61 62 65 6c 6e 61  6d 65 24 3a 65 72 72 6f  |dlabelname$:erro|
00001af0  72 25 3d 31 0d 00 e3 0d  20 20 74 65 73 74 25 3d  |r%=1....  test%=|
00001b00  31 0d 00 e4 1f 20 20 ff  22 53 45 54 20 43 72 79  |1....  ."SET Cry|
00001b10  73 74 61 6c 32 24 64 69  72 20 22 2b 73 65 74 24  |stal2$dir "+set$|
00001b20  0d 00 e5 22 20 20 c8 99  20 22 58 4f 53 5f 46 69  |..."  .. "XOS_Fi|
00001b30  6e 64 22 2c 26 34 30 2c  70 61 74 68 24 20 b8 20  |nd",&40,path$ . |
00001b40  68 25 0d 00 e6 17 fd 68  25 80 28 65 72 72 6f 72  |h%.....h%.(error|
00001b50  25 3d 30 29 3a d9 23 68  25 0d 00 e7 3a c8 99 20  |%=0):.#h%...:.. |
00001b60  22 4f 53 5f 53 70 72 69  74 65 4f 70 22 2c 26 31  |"OS_SpriteOp",&1|
00001b70  32 32 2c 73 70 72 69 74  65 5f 61 72 65 61 31 25  |22,sprite_area1%|
00001b80  2c 22 6c 6f 61 64 73 63  22 2c 34 30 30 2c 34 33  |,"loadsc",400,43|
00001b90  36 2c 30 0d 00 e8 30 c8  99 20 22 4f 53 5f 53 70  |6,0...0.. "OS_Sp|
00001ba0  72 69 74 65 4f 70 22 2c  26 31 31 39 2c 73 70 72  |riteOp",&119,spr|
00001bb0  69 74 65 5f 61 72 65 61  31 25 2c 22 6c 6f 61 64  |ite_area1%,"load|
00001bc0  73 63 22 0d 00 e9 07 f7  20 85 0d 00 ea 05 e1 0d  |sc"..... .......|
00001bd0  00 eb 04 0d 00 ec 1b dd  f2 73 63 72 65 65 6e 5f  |.........screen_|
00001be0  73 61 76 65 28 64 69 73  6b 72 65 74 25 29 0d 00  |save(diskret%)..|
00001bf0  ed 16 c8 97 20 c8 93 20  30 2c 30 2c 31 32 37 38  |.... .. 0,0,1278|
00001c00  2c 39 35 38 0d 00 ee 0e  f2 70 61 75 73 65 28 35  |,958.....pause(5|
00001c10  30 29 0d 00 ef 07 ef 32  36 0d 00 f0 59 e7 59 25  |0).....26...Y.Y%|
00001c20  3d 30 3a f2 66 6c 6f 70  70 79 5f 73 63 72 65 65  |=0:.floppy_scree|
00001c30  6e 5f 73 61 76 65 3a 74  65 73 74 25 3d 30 3a 72  |n_save:test%=0:r|
00001c40  65 74 24 3d 22 22 3a f5  3a f2 66 6c 6f 70 70 79  |et$="":.:.floppy|
00001c50  5f 73 63 72 65 65 6e 5f  72 65 74 75 72 6e 28 64  |_screen_return(d|
00001c60  69 73 6b 72 65 74 25 29  3a fd 65 72 72 6f 72 25  |iskret%):.error%|
00001c70  3d 30 0d 00 f1 1b e7 59  25 3d 31 3a f2 68 61 72  |=0.....Y%=1:.har|
00001c80  64 5f 73 63 72 65 65 6e  5f 73 61 76 65 0d 00 f2  |d_screen_save...|
00001c90  0e f2 70 61 75 73 65 28  35 30 29 0d 00 f3 09 2a  |..pause(50)....*|
00001ca0  66 78 31 35 0d 00 f4 05  e1 0d 00 f5 04 0d 00 f6  |fx15............|
00001cb0  0d dd f2 70 72 69 6e 74  65 72 0d 00 f7 16 c8 99  |...printer......|
00001cc0  26 30 30 30 41 30 31 34  30 20 b8 20 3b 66 6c 25  |&000A0140 . ;fl%|
00001cd0  0d 00 f8 15 e7 20 28 66  6c 25 20 80 20 25 31 29  |..... (fl% . %1)|
00001ce0  3d 25 31 3a e1 0d 00 f9  07 ef 32 36 0d 00 fa 35  |=%1:......26...5|
00001cf0  c8 91 30 2c 30 3a c8 99  22 58 4f 53 5f 53 70 72  |..0,0:.."XOS_Spr|
00001d00  69 74 65 4f 70 22 2c 26  31 31 39 2c 73 70 72 69  |iteOp",&119,spri|
00001d10  74 65 5f 61 72 65 61 31  25 2c 22 62 6c 61 6e 6b  |te_area1%,"blank|
00001d20  22 0d 00 fb 11 21 28 73  63 61 6c 65 25 2b 30 29  |"....!(scale%+0)|
00001d30  3d 31 0d 00 fc 11 21 28  73 63 61 6c 65 25 2b 34  |=1....!(scale%+4|
00001d40  29 3d 31 0d 00 fd 11 21  28 73 63 61 6c 65 25 2b  |)=1....!(scale%+|
00001d50  38 29 3d 31 0d 00 fe 12  21 28 73 63 61 6c 65 25  |8)=1....!(scale%|
00001d60  2b 31 32 29 3d 31 0d 00  ff 0a ea 46 25 2c 45 25  |+12)=1.....F%,E%|
00001d70  0d 01 00 14 46 25 3d ae  28 22 70 72 69 6e 74 65  |....F%=.("printe|
00001d80  72 3a 22 29 0d 01 01 07  ea 20 85 0d 01 02 1d ee  |r:")..... ......|
00001d90  85 ea 3a f7 20 85 3a d9  23 46 25 3a ff 22 46 58  |..:. .:.#F%:."FX|
00001da0  32 32 39 2c 30 22 3a e1  0d 01 03 c1 f4 4f 4e 45  |229,0":......ONE|
00001db0  52 52 4f 52 4c 4f 43 41  4c 3a 52 45 53 54 4f 52  |RRORLOCAL:RESTOR|
00001dc0  45 20 45 52 52 4f 52 3a  43 4c 4f 53 45 23 46 25  |E ERROR:CLOSE#F%|
00001dd0  3a 4f 53 43 4c 49 22 46  58 32 32 39 2c 30 22 3a  |:OSCLI"FX229,0":|
00001de0  53 59 53 22 4f 53 5f 42  79 74 65 22 2c 32 35 30  |SYS"OS_Byte",250|
00001df0  2c 30 2c 32 35 35 20 54  4f 20 2c 73 63 72 25 3a  |,0,255 TO ,scr%:|
00001e00  53 59 53 22 4f 53 5f 42  79 74 65 22 2c 31 31 33  |SYS"OS_Byte",113|
00001e10  2c 73 63 72 25 3a 50 52  49 4e 54 20 52 45 50 4f  |,scr%:PRINT REPO|
00001e20  52 54 24 2b 22 20 28 49  6e 74 65 72 6e 61 6c 20  |RT$+" (Internal |
00001e30  65 72 72 6f 72 20 63 6f  64 65 20 22 2b 53 54 52  |error code "+STR|
00001e40  24 45 52 4c 2b 22 29 22  2b 43 48 52 24 30 3a 50  |$ERL+")"+CHR$0:P|
00001e50  52 4f 43 77 61 69 74 28  35 30 30 29 3a 50 52 4f  |ROCwait(500):PRO|
00001e60  43 64 65 73 6b 5f 74 6f  70 0d 01 04 20 c8 99 22  |Cdesk_top... .."|
00001e70  50 44 72 69 76 65 72 5f  53 65 6c 65 63 74 4a 6f  |PDriver_SelectJo|
00001e80  62 22 2c 46 25 2c 30 2c  30 0d 01 05 07 ea 20 85  |b",F%,0,0..... .|
00001e90  0d 01 06 4e ee 85 ea 3a  f7 20 85 3a c8 99 22 50  |...N...:. .:.."P|
00001ea0  44 72 69 76 65 72 5f 41  62 6f 72 74 4a 6f 62 22  |Driver_AbortJob"|
00001eb0  2c 46 25 3a c8 99 22 50  44 72 69 76 65 72 5f 53  |,F%:.."PDriver_S|
00001ec0  65 6c 65 63 74 4a 6f 62  22 2c 45 25 3a d9 23 46  |electJob",E%:.#F|
00001ed0  25 3a ff 22 46 58 32 32  39 2c 30 22 3a e1 0d 01  |%:."FX229,0":...|
00001ee0  07 f4 f4 4f 4e 45 52 52  4f 52 4c 4f 43 41 4c 3a  |...ONERRORLOCAL:|
00001ef0  52 45 53 54 4f 52 45 20  45 52 52 4f 52 3a 53 59  |RESTORE ERROR:SY|
00001f00  53 22 50 44 72 69 76 65  72 5f 41 62 6f 72 74 4a  |S"PDriver_AbortJ|
00001f10  6f 62 22 2c 46 25 3a 53  59 53 22 50 44 72 69 76  |ob",F%:SYS"PDriv|
00001f20  65 72 5f 53 65 6c 65 63  74 4a 6f 62 22 2c 45 25  |er_SelectJob",E%|
00001f30  3a 43 4c 4f 53 45 23 46  25 3a 4f 53 43 4c 49 22  |:CLOSE#F%:OSCLI"|
00001f40  46 58 32 32 39 2c 30 22  3a 53 59 53 22 4f 53 5f  |FX229,0":SYS"OS_|
00001f50  42 79 74 65 22 2c 32 35  30 2c 30 2c 32 35 35 20  |Byte",250,0,255 |
00001f60  54 4f 20 2c 73 63 72 25  3a 53 59 53 22 4f 53 5f  |TO ,scr%:SYS"OS_|
00001f70  42 79 74 65 22 2c 31 31  33 2c 73 63 72 25 3a 50  |Byte",113,scr%:P|
00001f80  52 49 4e 54 20 52 45 50  4f 52 54 24 2b 22 20 28  |RINT REPORT$+" (|
00001f90  49 6e 74 65 72 6e 61 6c  20 65 72 72 6f 72 20 63  |Internal error c|
00001fa0  6f 64 65 20 22 2b 53 54  52 24 45 52 4c 2b 22 29  |ode "+STR$ERL+")|
00001fb0  22 2b 43 48 52 24 30 3a  50 52 4f 43 77 61 69 74  |"+CHR$0:PROCwait|
00001fc0  28 35 30 30 29 3a 50 52  4f 43 64 65 73 6b 5f 74  |(500):PROCdesk_t|
00001fd0  6f 70 0d 01 08 45 21 28  70 64 72 65 63 74 25 2b  |op...E!(pdrect%+|
00001fe0  30 29 3d 30 3a 21 28 70  64 72 65 63 74 25 2b 34  |0)=0:!(pdrect%+4|
00001ff0  29 3d 30 3a 21 28 70 64  72 65 63 74 25 2b 38 29  |)=0:!(pdrect%+8)|
00002000  3d 31 32 38 30 3a 21 28  70 64 72 65 63 74 25 2b  |=1280:!(pdrect%+|
00002010  31 32 29 3d 39 36 30 0d  01 09 4c 21 28 70 64 74  |12)=960...L!(pdt|
00002020  72 61 6e 73 25 2b 30 29  3d 31 3c 3c 31 36 3a 21  |rans%+0)=1<<16:!|
00002030  28 70 64 74 72 61 6e 73  25 2b 34 29 3d 30 3a 21  |(pdtrans%+4)=0:!|
00002040  28 70 64 74 72 61 6e 73  25 2b 38 29 3d 30 3a 21  |(pdtrans%+8)=0:!|
00002050  28 70 64 74 72 61 6e 73  25 2b 31 32 29 3d 31 3c  |(pdtrans%+12)=1<|
00002060  3c 31 36 0d 01 0a 2c f4  21 28 70 64 70 6c 6f 74  |<16...,.!(pdplot|
00002070  25 2b 30 29 3d 31 32 38  3c 3c 38 3a 21 28 70 64  |%+0)=128<<8:!(pd|
00002080  70 6c 6f 74 25 2b 34 29  3d 35 31 32 3c 3c 38 0d  |plot%+4)=512<<8.|
00002090  01 0b 17 21 28 70 64 70  6c 6f 74 25 2b 30 29 3d  |...!(pdplot%+0)=|
000020a0  31 32 38 3c 3c 38 0d 01  0c 2f c8 99 22 50 44 72  |128<<8.../.."PDr|
000020b0  69 76 65 72 5f 50 61 67  65 53 69 7a 65 22 20 b8  |iver_PageSize" .|
000020c0  20 72 30 2c 72 31 2c 72  32 2c 72 33 2c 72 34 2c  | r0,r1,r2,r3,r4,|
000020d0  72 35 2c 72 36 0d 01 0d  2d c8 99 22 50 44 72 69  |r5,r6...-.."PDri|
000020e0  76 65 72 5f 53 65 74 50  61 67 65 53 69 7a 65 22  |ver_SetPageSize"|
000020f0  2c 2c 72 31 2c 72 32 2c  72 33 2c 30 2c 72 35 2c  |,,r1,r2,r3,0,r5,|
00002100  72 36 0d 01 0e 41 21 28  70 64 70 6c 6f 74 25 2b  |r6...A!(pdplot%+|
00002110  34 29 3d 72 36 2d 34 30  30 30 30 30 3a e7 28 70  |4)=r6-400000:.(p|
00002120  64 70 6c 6f 74 25 21 34  29 3c 28 35 31 32 3c 3c  |dplot%!4)<(512<<|
00002130  38 29 3a 70 64 70 6c 6f  74 25 21 34 3d 35 31 32  |8):pdplot%!4=512|
00002140  3c 3c 38 0d 01 0f 42 c8  99 22 50 44 72 69 76 65  |<<8...B.."PDrive|
00002150  72 5f 47 69 76 65 52 65  63 74 61 6e 67 6c 65 22  |r_GiveRectangle"|
00002160  2c 30 2c 70 64 72 65 63  74 25 2c 70 64 74 72 61  |,0,pdrect%,pdtra|
00002170  6e 73 25 2c 70 64 70 6c  6f 74 25 2c 26 46 46 46  |ns%,pdplot%,&FFF|
00002180  46 46 46 30 30 0d 01 10  3f c8 99 20 22 4f 53 5f  |FFF00...?.. "OS_|
00002190  53 70 72 69 74 65 4f 70  22 2c 26 31 33 43 2c 30  |SpriteOp",&13C,0|
000021a0  2c 30 2c 31 3a c8 99 22  43 6f 6c 6f 75 72 54 72  |,0,1:.."ColourTr|
000021b0  61 6e 73 5f 49 6e 76 61  6c 69 64 61 74 65 43 61  |ans_InvalidateCa|
000021c0  63 68 65 22 0d 01 11 35  c8 99 22 50 44 72 69 76  |che"...5.."PDriv|
000021d0  65 72 5f 44 72 61 77 50  61 67 65 22 2c 31 2c 70  |er_DrawPage",1,p|
000021e0  64 72 65 63 74 32 25 2c  30 2c 30 20 b8 20 63 6f  |drect2%,0,0 . co|
000021f0  70 69 65 73 6c 65 66 74  25 0d 01 12 15 c8 95 20  |piesleft%...... |
00002200  63 6f 70 69 65 73 6c 65  66 74 25 3c 3e 30 0d 01  |copiesleft%<>0..|
00002210  13 13 f2 70 64 5f 70 6c  6f 74 5f 73 63 72 65 65  |...pd_plot_scree|
00002220  6e 0d 01 14 34 c8 99 22  50 44 72 69 76 65 72 5f  |n...4.."PDriver_|
00002230  47 65 74 52 65 63 74 61  6e 67 6c 65 22 2c 2c 70  |GetRectangle",,p|
00002240  64 72 65 63 74 32 25 20  b8 20 63 6f 70 69 65 73  |drect2% . copies|
00002250  6c 65 66 74 25 0d 01 15  05 ce 0d 01 16 19 c8 99  |left%...........|
00002260  22 50 44 72 69 76 65 72  5f 45 6e 64 4a 6f 62 22  |"PDriver_EndJob"|
00002270  2c 46 25 0d 01 17 07 f7  20 85 0d 01 18 07 f7 20  |,F%..... ...... |
00002280  85 0d 01 19 08 d9 23 46  25 0d 01 1a 3c f4 53 59  |......#F%...<.SY|
00002290  53 22 4f 53 5f 53 70 72  69 74 65 4f 70 22 2c 26  |S"OS_SpriteOp",&|
000022a0  31 30 46 2c 73 70 72 69  74 65 5f 61 72 65 61 25  |10F,sprite_area%|
000022b0  2c 22 62 6c 61 6e 6b 22  2c 30 2c 33 38 34 2c 31  |,"blank",0,384,1|
000022c0  39 32 2c 31 32 0d 01 1b  0c 2a 46 58 32 32 39 2c  |92,12....*FX229,|
000022d0  30 0d 01 1c 05 e1 0d 01  1d 04 0d 01 1e 14 dd f2  |0...............|
000022e0  70 64 5f 70 6c 6f 74 5f  73 63 72 65 65 6e 0d 01  |pd_plot_screen..|
000022f0  1f 13 ea 79 25 2c 70 25  2c 69 25 2c 66 25 2c 74  |...y%,p%,i%,f%,t|
00002300  25 0d 01 20 0c 2a 46 58  32 32 39 2c 31 0d 01 21  |%.. .*FX229,1..!|
00002310  13 e3 79 25 3d 30 b8 39  36 30 2d 33 32 88 33 32  |..y%=0.960-32.32|
00002320  0d 01 22 1f c8 99 22 50  44 72 69 76 65 72 5f 53  |.."..."PDriver_S|
00002330  65 6c 65 63 74 4a 6f 62  22 2c 30 2c 30 2c 30 0d  |electJob",0,0,0.|
00002340  01 23 4e c8 99 22 4f 53  5f 53 70 72 69 74 65 4f  |.#N.."OS_SpriteO|
00002350  70 22 2c 26 31 31 30 2c  73 70 72 69 74 65 5f 61  |p",&110,sprite_a|
00002360  72 65 61 31 25 2c 22 62  6c 61 6e 6b 22 2c 31 2c  |rea1%,"blank",1,|
00002370  30 2c 79 25 2c 31 32 37  39 2c 79 25 2b 33 32 20  |0,y%,1279,y%+32 |
00002380  b8 20 72 30 25 2c 72 31  25 2c 72 32 25 0d 01 24  |. r0%,r1%,r2%..$|
00002390  3c 21 28 73 63 61 6c 65  25 2b 30 29 3d 31 3a 21  |<!(scale%+0)=1:!|
000023a0  28 73 63 61 6c 65 25 2b  34 29 3d 31 3a 21 28 73  |(scale%+4)=1:!(s|
000023b0  63 61 6c 65 25 2b 38 29  3d 31 3a 21 28 73 63 61  |cale%+8)=1:!(sca|
000023c0  6c 65 25 2b 31 32 29 3d  31 0d 01 25 20 c8 99 22  |le%+12)=1..% .."|
000023d0  50 44 72 69 76 65 72 5f  53 65 6c 65 63 74 4a 6f  |PDriver_SelectJo|
000023e0  62 22 2c 46 25 2c 30 2c  30 0d 01 26 39 66 25 3d  |b",F%,0,0..&9f%=|
000023f0  28 72 32 25 2b 34 34 29  3a 74 25 3d 70 61 6c 74  |(r2%+44):t%=palt|
00002400  61 62 25 3a e3 69 25 3d  30 b8 31 35 3a 21 74 25  |ab%:.i%=0.15:!t%|
00002410  3d 21 66 25 3a 74 25 2b  3d 34 3a 66 25 2b 3d 38  |=!f%:t%+=4:f%+=8|
00002420  3a ed 0d 01 27 38 c8 99  22 43 6f 6c 6f 75 72 54  |:...'8.."ColourT|
00002430  72 61 6e 73 5f 53 65 6c  65 63 74 54 61 62 6c 65  |rans_SelectTable|
00002440  22 2c 31 32 2c 70 61 6c  74 61 62 25 2c 2d 31 2c  |",12,paltab%,-1,|
00002450  2d 31 2c 63 74 72 61 6e  73 25 0d 01 28 41 c8 99  |-1,ctrans%..(A..|
00002460  20 22 4f 53 5f 53 70 72  69 74 65 4f 70 22 2c 26  | "OS_SpriteOp",&|
00002470  32 33 34 2c 73 70 72 69  74 65 5f 61 72 65 61 31  |234,sprite_area1|
00002480  25 2c 72 32 25 2c 30 2c  79 25 2c 30 2c 73 63 61  |%,r2%,0,y%,0,sca|
00002490  6c 65 25 2c 63 74 72 61  6e 73 25 0d 01 29 05 ed  |le%,ctrans%..)..|
000024a0  0d 01 2a 05 e1 0d 01 2b  04 0d 01 2c 13 dd a4 73  |..*....+...,...s|
000024b0  63 72 65 65 6e 5f 6e 75  6d 62 65 72 0d 01 2d 2f  |creen_number..-/|
000024c0  f4 20 43 72 79 73 74 61  6c 32 24 73 61 76 65 20  |. Crystal2$save |
000024d0  73 65 74 20 74 6f 20 64  69 72 65 63 74 6f 72 79  |set to directory|
000024e0  20 74 6f 20 73 61 76 65  20 74 6f 0d 01 2e 09 73  | to save to....s|
000024f0  63 25 3d 30 0d 01 2f 05  f5 0d 01 30 18 73 63 25  |c%=0../....0.sc%|
00002500  3d 73 63 25 2b 31 3a 73  63 24 3d c3 28 73 63 25  |=sc%+1:sc$=.(sc%|
00002510  29 0d 01 31 36 c8 99 22  58 4f 53 5f 46 69 6e 64  |)..16.."XOS_Find|
00002520  22 2c 26 34 30 2c 22 3c  43 72 79 73 74 61 6c 32  |",&40,"<Crystal2|
00002530  24 73 61 76 65 3e 2e 73  63 72 65 65 6e 22 2b 73  |$save>.screen"+s|
00002540  63 24 20 b8 20 68 25 0d  01 32 15 f4 49 46 68 25  |c$ . h%..2..IFh%|
00002550  3d 2d 31 3a 43 4c 4f 53  45 23 68 25 0d 01 33 0f  |=-1:CLOSE#h%..3.|
00002560  e7 68 25 3c 3e 30 3a d9  23 68 25 0d 01 34 09 fd  |.h%<>0:.#h%..4..|
00002570  68 25 3d 30 0d 01 35 08  3d 73 63 25 0d 01 36 04  |h%=0..5.=sc%..6.|
00002580  0d 01 37 18 dd f2 66 6c  6f 70 70 79 5f 73 63 72  |..7...floppy_scr|
00002590  65 65 6e 5f 73 61 76 65  0d 01 38 42 c8 99 20 22  |een_save..8B.. "|
000025a0  4f 53 5f 53 70 72 69 74  65 4f 70 22 2c 26 31 31  |OS_SpriteOp",&11|
000025b0  30 2c 73 70 72 69 74 65  5f 61 72 65 61 31 25 2c  |0,sprite_area1%,|
000025c0  22 6c 6f 61 64 73 63 22  2c 30 2c 34 30 30 2c 34  |"loadsc",0,400,4|
000025d0  33 36 2c 38 38 30 2c 36  33 36 0d 01 39 0c 65 72  |36,880,636..9.er|
000025e0  72 6f 72 25 3d 30 0d 01  3a 06 ea 85 0d 01 3b 71  |ror%=0..:.....;q|
000025f0  ee 85 ea 3a f7 20 85 3a  c8 99 20 22 4f 53 5f 53  |...:. .:.. "OS_S|
00002600  70 72 69 74 65 4f 70 22  2c 26 31 32 32 2c 73 70  |priteOp",&122,sp|
00002610  72 69 74 65 5f 61 72 65  61 31 25 2c 22 6c 6f 61  |rite_area1%,"loa|
00002620  64 73 63 22 2c 34 30 30  2c 34 33 36 2c 30 3a c8  |dsc",400,436,0:.|
00002630  99 20 22 4f 53 5f 53 70  72 69 74 65 4f 70 22 2c  |. "OS_SpriteOp",|
00002640  26 31 31 39 2c 73 70 72  69 74 65 5f 61 72 65 61  |&119,sprite_area|
00002650  31 25 2c 22 6c 6f 61 64  73 63 22 3a e1 0d 01 3c  |1%,"loadsc":...<|
00002660  0b f4 52 45 50 45 41 54  0d 01 3d 18 f4 50 52 4f  |..REPEAT..=..PRO|
00002670  43 63 6c 65 61 72 5f 6c  6f 61 64 5f 74 65 78 74  |Cclear_load_text|
00002680  0d 01 3e 48 20 20 20 ef  32 34 2c 34 30 30 3b 34  |..>H   .24,400;4|
00002690  33 36 3b 38 38 30 3b 36  33 36 3b 31 38 2c 30 2c  |36;880;636;18,0,|
000026a0  31 33 31 2c 31 36 2c 32  34 2c 34 30 34 3b 34 34  |131,16,24,404;44|
000026b0  30 3b 38 37 36 3b 36 33  32 3b 31 38 2c 30 2c 31  |0;876;632;18,0,1|
000026c0  32 38 2c 31 36 2c 32 36  0d 01 3f 0a 20 20 20 c8  |28,16,26..?.   .|
000026d0  97 ee 0d 01 40 23 20 20  20 f2 70 72 69 28 34 33  |....@#   .pri(43|
000026e0  30 2c 35 37 32 2c 22 50  6c 65 61 73 65 20 70 6c  |0,572,"Please pl|
000026f0  61 63 65 22 29 0d 01 41  22 20 20 20 f2 70 72 69  |ace")..A"   .pri|
00002700  28 34 33 30 2c 35 31 38  2c 22 53 41 56 45 20 53  |(430,518,"SAVE S|
00002710  43 52 45 45 4e 22 29 0d  01 42 18 20 20 20 6f 6b  |CREEN")..B.   ok|
00002720  78 25 3d 37 36 30 3a 6f  6b 79 25 3d 34 35 36 0d  |x%=760:oky%=456.|
00002730  01 43 48 20 20 20 e6 30  2c 33 3a ef 32 35 2c 34  |.CH   .0,3:.25,4|
00002740  2c 6f 6b 78 25 3b 6f 6b  79 25 3b 32 35 2c 31 2c  |,okx%;oky%;25,1,|
00002750  31 30 30 3b 30 3b 32 35  2c 31 2c 30 3b 35 36 3b  |100;0;25,1,0;56;|
00002760  32 35 2c 31 2c 2d 31 30  30 3b 30 3b 32 35 2c 31  |25,1,-100;0;25,1|
00002770  2c 30 3b 2d 35 36 3b 0d  01 44 2c 20 20 20 e6 30  |,0;-56;..D,   .0|
00002780  2c 30 3a ef 32 35 2c 34  2c 6f 6b 78 25 2b 32 3b  |,0:.25,4,okx%+2;|
00002790  6f 6b 79 25 2b 34 3b 32  35 2c 39 37 2c 39 36 3b  |oky%+4;25,97,96;|
000027a0  34 38 3b 0d 01 45 2c 20  20 20 f2 70 72 69 28 34  |48;..E,   .pri(4|
000027b0  33 30 2c 34 36 34 2c 22  64 69 73 6b 20 69 6e 20  |30,464,"disk in |
000027c0  64 72 69 76 65 20 30 20  20 20 20 4f 4b 22 29 0d  |drive 0    OK").|
000027d0  01 46 0a 20 20 20 c8 97  ee 0d 01 47 4f f5 3a c8  |.F.   .....GO.:.|
000027e0  97 6d 78 25 2c 6d 79 25  2c 6d 63 25 3a fd 28 6d  |.mx%,my%,mc%:.(m|
000027f0  63 25 3d 34 29 80 28 6d  78 25 3e 6f 6b 78 25 29  |c%=4).(mx%>okx%)|
00002800  80 28 6d 78 25 3c 6f 6b  78 25 2b 31 30 30 29 80  |.(mx%<okx%+100).|
00002810  28 6d 79 25 3e 6f 6b 79  25 29 80 28 6d 79 25 3c  |(my%>oky%).(my%<|
00002820  6f 6b 79 25 2b 35 38 29  0d 01 48 09 2a 41 44 46  |oky%+58)..H.*ADF|
00002830  53 0d 01 49 0c 2a 4d 4f  55 4e 54 20 30 0d 01 4a  |S..I.*MOUNT 0..J|
00002840  23 c8 99 22 4f 53 5f 47  42 50 42 22 2c 35 2c 2c  |#.."OS_GBPB",5,,|
00002850  69 6e 70 75 74 5f 64 69  73 6b 5f 6e 61 6d 65 25  |input_disk_name%|
00002860  0d 01 4b 27 6c 65 6e 5f  64 5f 6e 25 3d 3f 69 6e  |..K'len_d_n%=?in|
00002870  70 75 74 5f 64 69 73 6b  5f 6e 61 6d 65 25 3a 6e  |put_disk_name%:n|
00002880  61 6d 65 24 3d 22 22 0d  01 4c 13 e3 64 6e 25 3d  |ame$=""..L..dn%=|
00002890  31 b8 6c 65 6e 5f 64 5f  6e 25 0d 01 4d 46 e7 3f  |1.len_d_n%..MF.?|
000028a0  28 69 6e 70 75 74 5f 64  69 73 6b 5f 6e 61 6d 65  |(input_disk_name|
000028b0  25 2b 64 6e 25 29 3e 33  31 3a 6e 61 6d 65 24 3d  |%+dn%)>31:name$=|
000028c0  6e 61 6d 65 24 2b bd 28  3f 28 69 6e 70 75 74 5f  |name$+.(?(input_|
000028d0  64 69 73 6b 5f 6e 61 6d  65 25 2b 64 6e 25 29 29  |disk_name%+dn%))|
000028e0  0d 01 4e 05 ed 0d 01 4f  3a c8 99 20 22 4f 53 5f  |..N....O:.. "OS_|
000028f0  53 70 72 69 74 65 4f 70  22 2c 26 31 32 32 2c 73  |SpriteOp",&122,s|
00002900  70 72 69 74 65 5f 61 72  65 61 31 25 2c 22 6c 6f  |prite_area1%,"lo|
00002910  61 64 73 63 22 2c 34 30  30 2c 34 33 36 2c 30 0d  |adsc",400,436,0.|
00002920  01 50 4a e7 28 6e 61 6d  65 24 3d 22 5a 65 72 6f  |.PJ.(name$="Zero|
00002930  22 29 84 28 6e 61 6d 65  24 3d 22 4f 6e 65 22 29  |").(name$="One")|
00002940  84 28 6e 61 6d 65 24 3d  22 54 77 6f 22 29 84 28  |.(name$="Two").(|
00002950  6e 61 6d 65 24 3d 22 54  68 72 65 65 22 29 3a 65  |name$="Three"):e|
00002960  72 72 6f 72 25 3d 31 3a  85 0d 01 51 1a ff 22 53  |rror%=1:...Q.."S|
00002970  45 54 20 43 72 79 73 74  61 6c 32 24 53 61 76 65  |ET Crystal2$Save|
00002980  20 24 22 0d 01 52 21 73  63 72 65 65 6e 5f 6e 75  | $"..R!screen_nu|
00002990  6d 62 65 72 25 3d a4 73  63 72 65 65 6e 5f 6e 75  |mber%=.screen_nu|
000029a0  6d 62 65 72 0d 01 53 19  73 63 24 3d c3 28 73 63  |mber..S.sc$=.(sc|
000029b0  72 65 65 6e 5f 6e 75 6d  62 65 72 25 29 0d 01 54  |reen_number%)..T|
000029c0  2c ff 22 53 43 52 45 45  4e 53 41 56 45 20 3c 43  |,."SCREENSAVE <C|
000029d0  72 79 73 74 61 6c 32 24  73 61 76 65 3e 2e 53 63  |rystal2$save>.Sc|
000029e0  72 65 65 6e 22 2b 73 63  24 0d 01 55 38 f4 20 53  |reen"+sc$..U8. S|
000029f0  59 53 22 58 4f 53 5f 53  70 72 69 74 65 4f 70 22  |YS"XOS_SpriteOp"|
00002a00  2c 32 2c 22 3c 43 72 79  73 74 61 6c 32 24 73 61  |,2,"<Crystal2$sa|
00002a10  76 65 3e 2e 53 63 72 65  65 6e 22 2b 73 63 24 2c  |ve>.Screen"+sc$,|
00002a20  31 0d 01 56 07 d9 23 30  0d 01 57 30 c8 99 20 22  |1..V..#0..W0.. "|
00002a30  4f 53 5f 53 70 72 69 74  65 4f 70 22 2c 26 31 31  |OS_SpriteOp",&11|
00002a40  39 2c 73 70 72 69 74 65  5f 61 72 65 61 31 25 2c  |9,sprite_area1%,|
00002a50  22 6c 6f 61 64 73 63 22  0d 01 58 05 e1 0d 01 59  |"loadsc"..X....Y|
00002a60  04 0d 01 5a 1f dd f2 66  6c 6f 70 70 79 5f 73 63  |...Z...floppy_sc|
00002a70  72 65 65 6e 5f 72 65 74  75 72 6e 28 64 69 25 29  |reen_return(di%)|
00002a80  0d 01 5b 42 c8 99 20 22  4f 53 5f 53 70 72 69 74  |..[B.. "OS_Sprit|
00002a90  65 4f 70 22 2c 26 31 31  30 2c 73 70 72 69 74 65  |eOp",&110,sprite|
00002aa0  5f 61 72 65 61 31 25 2c  22 6c 6f 61 64 73 63 22  |_area1%,"loadsc"|
00002ab0  2c 30 2c 34 30 30 2c 34  33 36 2c 38 38 30 2c 36  |,0,400,436,880,6|
00002ac0  33 36 0d 01 5c 0c 65 72  72 6f 72 25 3d 30 0d 01  |36..\.error%=0..|
00002ad0  5d 06 ea 85 0d 01 5e 81  ee 85 ea 3a f7 85 3a c8  |].....^....:..:.|
00002ae0  99 20 22 4f 53 5f 53 70  72 69 74 65 4f 70 22 2c  |. "OS_SpriteOp",|
00002af0  26 31 33 34 2c 73 70 72  69 74 65 5f 61 72 65 61  |&134,sprite_area|
00002b00  31 25 2c 22 6c 6f 61 64  73 63 22 2c 34 30 30 2c  |1%,"loadsc",400,|
00002b10  34 33 36 2c 30 3a c8 99  20 22 4f 53 5f 53 70 72  |436,0:.. "OS_Spr|
00002b20  69 74 65 4f 70 22 2c 26  31 31 39 2c 73 70 72 69  |iteOp",&119,spri|
00002b30  74 65 5f 61 72 65 61 31  25 2c 22 6c 6f 61 64 73  |te_area1%,"loads|
00002b40  63 22 3a 65 72 72 6f 72  25 3d 31 3a 74 65 73 74  |c":error%=1:test|
00002b50  25 3d 31 3a e1 0d 01 5f  05 f5 0d 01 60 0d 20 65  |%=1:..._....`. e|
00002b60  72 72 6f 72 25 3d 30 0d  01 61 0f 20 e7 74 65 73  |rror%=0..a. .tes|
00002b70  74 25 3d 31 20 8c 0d 01  62 48 20 20 20 ef 32 34  |t%=1 ...bH   .24|
00002b80  2c 34 30 30 3b 34 33 36  3b 38 38 30 3b 36 33 36  |,400;436;880;636|
00002b90  3b 31 38 2c 30 2c 31 33  31 2c 31 36 2c 32 34 2c  |;18,0,131,16,24,|
00002ba0  34 30 34 3b 34 34 30 3b  38 37 36 3b 36 33 32 3b  |404;440;876;632;|
00002bb0  31 38 2c 30 2c 31 32 38  2c 31 36 2c 32 36 0d 01  |18,0,128,16,26..|
00002bc0  63 0a 20 20 20 c8 97 ee  0d 01 64 23 20 20 20 f2  |c.   .....d#   .|
00002bd0  70 72 69 28 34 33 30 2c  35 37 32 2c 22 50 6c 65  |pri(430,572,"Ple|
00002be0  61 73 65 20 70 6c 61 63  65 22 29 0d 01 65 33 20  |ase place")..e3 |
00002bf0  20 20 e7 64 69 25 3d 30  3a f2 70 72 69 28 34 33  |  .di%=0:.pri(43|
00002c00  30 2c 35 31 38 2c 22 64  69 73 6b 20 5a 65 72 6f  |0,518,"disk Zero|
00002c10  22 29 3a 72 65 74 24 3d  22 5a 65 72 6f 22 0d 01  |"):ret$="Zero"..|
00002c20  66 31 20 20 20 e7 64 69  25 3d 31 3a f2 70 72 69  |f1   .di%=1:.pri|
00002c30  28 34 33 30 2c 35 31 38  2c 22 64 69 73 6b 20 4f  |(430,518,"disk O|
00002c40  6e 65 22 29 3a 72 65 74  24 3d 22 4f 6e 65 22 0d  |ne"):ret$="One".|
00002c50  01 67 31 20 20 20 e7 64  69 25 3d 32 3a f2 70 72  |.g1   .di%=2:.pr|
00002c60  69 28 34 33 30 2c 35 31  38 2c 22 64 69 73 6b 20  |i(430,518,"disk |
00002c70  54 77 6f 22 29 3a 72 65  74 24 3d 22 54 77 6f 22  |Two"):ret$="Two"|
00002c80  0d 01 68 35 20 20 20 e7  64 69 25 3d 33 3a f2 70  |..h5   .di%=3:.p|
00002c90  72 69 28 34 33 30 2c 35  31 38 2c 22 64 69 73 6b  |ri(430,518,"disk|
00002ca0  20 54 68 72 65 65 22 29  3a 72 65 74 24 3d 22 54  | Three"):ret$="T|
00002cb0  68 72 65 65 22 0d 01 69  18 20 20 20 6f 6b 78 25  |hree"..i.   okx%|
00002cc0  3d 37 36 30 3a 6f 6b 79  25 3d 34 35 36 0d 01 6a  |=760:oky%=456..j|
00002cd0  48 20 20 20 e6 30 2c 33  3a ef 32 35 2c 34 2c 6f  |H   .0,3:.25,4,o|
00002ce0  6b 78 25 3b 6f 6b 79 25  3b 32 35 2c 31 2c 31 30  |kx%;oky%;25,1,10|
00002cf0  30 3b 30 3b 32 35 2c 31  2c 30 3b 35 36 3b 32 35  |0;0;25,1,0;56;25|
00002d00  2c 31 2c 2d 31 30 30 3b  30 3b 32 35 2c 31 2c 30  |,1,-100;0;25,1,0|
00002d10  3b 2d 35 36 3b 0d 01 6b  2c 20 20 20 e6 30 2c 30  |;-56;..k,   .0,0|
00002d20  3a ef 32 35 2c 34 2c 6f  6b 78 25 2b 32 3b 6f 6b  |:.25,4,okx%+2;ok|
00002d30  79 25 2b 34 3b 32 35 2c  39 37 2c 39 36 3b 34 38  |y%+4;25,97,96;48|
00002d40  3b 0d 01 6c 2f 20 20 20  f2 70 72 69 28 34 33 30  |;..l/   .pri(430|
00002d50  2c 34 36 34 2c 22 69 6e  20 64 72 69 76 65 20 30  |,464,"in drive 0|
00002d60  20 20 20 20 20 20 20 20  20 20 20 20 4f 4b 22 29  |            OK")|
00002d70  0d 01 6d 0a 20 20 20 c8  97 ee 0d 01 6e 50 20 20  |..m.   .....nP  |
00002d80  20 f5 3a c8 97 6d 78 25  2c 6d 79 25 2c 6d 63 25  | .:..mx%,my%,mc%|
00002d90  3a fd 6d 63 25 3d 34 20  80 20 6d 78 25 3e 6f 6b  |:.mc%=4 . mx%>ok|
00002da0  78 25 20 80 20 6d 78 25  3c 6f 6b 78 25 2b 31 30  |x% . mx%<okx%+10|
00002db0  30 20 80 20 6d 79 25 3e  6f 6b 79 25 20 80 20 6d  |0 . my%>oky% . m|
00002dc0  79 25 3c 6f 6b 79 25 2b  35 38 0d 01 6f 06 20 cd  |y%<oky%+58..o. .|
00002dd0  0d 01 70 0a 20 2a 41 44  46 53 0d 01 71 0d 20 2a  |..p. *ADFS..q. *|
00002de0  4d 4f 55 4e 54 20 30 0d  01 72 24 20 c8 99 22 4f  |MOUNT 0..r$ .."O|
00002df0  53 5f 47 42 50 42 22 2c  35 2c 2c 69 6e 70 75 74  |S_GBPB",5,,input|
00002e00  5f 64 69 73 6b 5f 6e 61  6d 65 25 0d 01 73 28 20  |_disk_name%..s( |
00002e10  6c 65 6e 5f 64 5f 6e 25  3d 3f 69 6e 70 75 74 5f  |len_d_n%=?input_|
00002e20  64 69 73 6b 5f 6e 61 6d  65 25 3a 6e 61 6d 65 24  |disk_name%:name$|
00002e30  3d 22 22 0d 01 74 14 20  e3 64 6e 25 3d 31 b8 6c  |=""..t. .dn%=1.l|
00002e40  65 6e 5f 64 5f 6e 25 0d  01 75 48 20 20 e7 3f 28  |en_d_n%..uH  .?(|
00002e50  69 6e 70 75 74 5f 64 69  73 6b 5f 6e 61 6d 65 25  |input_disk_name%|
00002e60  2b 64 6e 25 29 3e 33 31  3a 6e 61 6d 65 24 3d 6e  |+dn%)>31:name$=n|
00002e70  61 6d 65 24 2b bd 28 3f  28 69 6e 70 75 74 5f 64  |ame$+.(?(input_d|
00002e80  69 73 6b 5f 6e 61 6d 65  25 2b 64 6e 25 29 29 0d  |isk_name%+dn%)).|
00002e90  01 76 06 20 ed 0d 01 77  0c 20 74 65 73 74 25 3d  |.v. ...w. test%=|
00002ea0  31 0d 01 78 10 fd 20 6e  61 6d 65 24 3d 72 65 74  |1..x.. name$=ret|
00002eb0  24 0d 01 79 3a c8 99 20  22 4f 53 5f 53 70 72 69  |$..y:.. "OS_Spri|
00002ec0  74 65 4f 70 22 2c 26 31  32 32 2c 73 70 72 69 74  |teOp",&122,sprit|
00002ed0  65 5f 61 72 65 61 31 25  2c 22 6c 6f 61 64 73 63  |e_area1%,"loadsc|
00002ee0  22 2c 34 30 30 2c 34 33  36 2c 30 0d 01 7a 30 c8  |",400,436,0..z0.|
00002ef0  99 20 22 4f 53 5f 53 70  72 69 74 65 4f 70 22 2c  |. "OS_SpriteOp",|
00002f00  26 31 31 39 2c 73 70 72  69 74 65 5f 61 72 65 61  |&119,sprite_area|
00002f10  31 25 2c 22 6c 6f 61 64  73 63 22 0d 01 7b 05 e1  |1%,"loadsc"..{..|
00002f20  0d 01 7c 04 0d 01 7d 16  dd f2 68 61 72 64 5f 73  |..|...}...hard_s|
00002f30  63 72 65 65 6e 5f 73 61  76 65 0d 01 7e 06 ea 85  |creen_save..~...|
00002f40  0d 01 7f 0c ee 85 ea 3a  f7 85 3a e1 0d 01 80 21  |.......:..:....!|
00002f50  73 63 72 65 65 6e 5f 6e  75 6d 62 65 72 25 3d a4  |screen_number%=.|
00002f60  73 63 72 65 65 6e 5f 6e  75 6d 62 65 72 0d 01 81  |screen_number...|
00002f70  19 73 63 24 3d c3 28 73  63 72 65 65 6e 5f 6e 75  |.sc$=.(screen_nu|
00002f80  6d 62 65 72 25 29 0d 01  82 2c ff 22 53 43 52 45  |mber%)...,."SCRE|
00002f90  45 4e 53 41 56 45 20 3c  43 72 79 73 74 61 6c 32  |ENSAVE <Crystal2|
00002fa0  24 73 61 76 65 3e 2e 53  63 72 65 65 6e 22 2b 73  |$save>.Screen"+s|
00002fb0  63 24 0d 01 83 06 f7 85  0d 01 84 07 d9 23 30 0d  |c$...........#0.|
00002fc0  01 85 05 e1 0d 01 86 08  dd f2 64 74 0d 01 87 15  |..........dt....|
00002fd0  2a 63 68 61 6e 6e 65 6c  76 6f 69 63 65 20 31 20  |*channelvoice 1 |
00002fe0  31 0d 01 88 15 2a 63 68  61 6e 6e 65 6c 76 6f 69  |1....*channelvoi|
00002ff0  63 65 20 32 20 32 0d 01  89 1b c8 99 22 58 4f 53  |ce 2 2......"XOS|
00003000  5f 4d 6f 64 75 6c 65 22  2c 34 2c 22 62 6f 6e 6b  |_Module",4,"bonk|
00003010  22 0d 01 8a 1c c8 99 22  58 4f 53 5f 4d 6f 64 75  |"......"XOS_Modu|
00003020  6c 65 22 2c 34 2c 22 63  6c 69 63 6b 22 0d 01 8b  |le",4,"click"...|
00003030  1c c8 99 22 58 4f 53 5f  4d 6f 64 75 6c 65 22 2c  |..."XOS_Module",|
00003040  34 2c 22 6a 75 69 63 79  22 0d 01 8c 1d c8 99 22  |4,"juicy"......"|
00003050  58 4f 53 5f 4d 6f 64 75  6c 65 22 2c 34 2c 22 53  |XOS_Module",4,"S|
00003060  6d 62 75 7a 7a 22 0d 01  8d 1b c8 99 22 58 4f 53  |mbuzz"......"XOS|
00003070  5f 4d 6f 64 75 6c 65 22  2c 34 2c 22 6a 75 6e 67  |_Module",4,"jung|
00003080  22 0d 01 8e 15 2a 63 68  61 6e 6e 65 6c 76 6f 69  |"....*channelvoi|
00003090  63 65 20 31 20 31 0d 01  8f 15 2a 63 68 61 6e 6e  |ce 1 1....*chann|
000030a0  65 6c 76 6f 69 63 65 20  32 20 32 0d 01 90 09 4d  |elvoice 2 2....M|
000030b0  25 3d 53 25 0d 01 91 19  c8 99 22 4f 53 5f 52 65  |%=S%......"OS_Re|
000030c0  73 74 6f 72 65 43 75 72  73 6f 72 73 22 0d 01 92  |storeCursors"...|
000030d0  36 d8 3a de 62 75 66 25  20 34 3a e3 69 25 3d 31  |6.:.buf% 4:.i%=1|
000030e0  b8 31 36 3a c8 96 3a e3  63 25 3d 30 b8 31 36 3a  |.16:..:.c%=0.16:|
000030f0  e7 63 25 3c 31 36 76 25  3d 31 36 20 8b 20 76 25  |.c%<16v%=16 . v%|
00003100  3d 32 34 0d 01 93 50 c8  99 22 4f 53 5f 52 65 61  |=24...P.."OS_Rea|
00003110  64 50 61 6c 65 74 74 65  22 2c 63 25 2c 76 25 20  |dPalette",c%,v% |
00003120  b8 20 2c 2c 64 25 3a 21  62 75 66 25 3d 64 25 3a  |. ,,d%:!buf%=d%:|
00003130  e3 62 25 3d 31 b8 33 3a  e7 62 75 66 25 3f 62 25  |.b%=1.3:.buf%?b%|
00003140  3e 30 62 75 66 25 3f 62  25 2d 3d 31 36 3a ed 3a  |>0buf%?b%-=16:.:|
00003150  8b 3a ed 0d 01 94 25 ef  31 39 2c 63 25 2c 76 25  |.:....%.19,c%,v%|
00003160  2c 62 75 66 25 3f 31 2c  62 75 66 25 3f 32 2c 62  |,buf%?1,buf%?2,b|
00003170  75 66 25 3f 33 3a ed 2c  0d 01 95 09 2a 46 58 31  |uf%?3:.,....*FX1|
00003180  35 0d 01 96 13 61 3d a6  28 35 30 29 3a e7 61 3d  |5....a=.(50):.a=|
00003190  31 30 20 e1 0d 01 97 09  2a 46 58 31 35 0d 01 98  |10 .....*FX15...|
000031a0  0c 2a 46 58 32 32 35 2c  31 0d 01 99 20 2a 4b 45  |.*FX225,1... *KE|
000031b0  59 30 20 50 41 47 45 3d  26 38 46 30 30 7c 4d 4f  |Y0 PAGE=&8F00|MO|
000031c0  4c 44 7c 4d 52 55 4e 7c  4d 0d 01 9a 10 2a 46 58  |LD|MRUN|M....*FX|
000031d0  31 33 38 2c 30 2c 31 32  38 0d 01 9b 0a 2a 42 41  |138,0,128....*BA|
000031e0  53 49 43 0d 01 9c 06 31  fa 0d 01 9d 04 0d 01 9e  |SIC....1........|
000031f0  0b dd f2 64 75 6d 6d 79  0d 01 9f 26 f4 20 27 63  |...dummy...&. 'c|
00003200  6f 73 20 41 64 61 6d 20  73 61 79 73 20 79 6f 75  |os Adam says you|
00003210  20 6e 65 65 64 20 74 68  69 73 20 62 69 74 0d 01  | need this bit..|
00003220  a0 05 e1 0d 01 a1 04 0d  01 a2 04 0d ff           |.............|
0000322d