Home » Archimedes archive » Zipped Apps » 6502em » !6502Em/src/!RunImage

!6502Em/src/!RunImage

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 » Zipped Apps » 6502em
Filename: !6502Em/src/!RunImage
Read OK:
File size: FA0A bytes
Load address: 0000
Exec address: 0000
File contents
   10REM > !RunImage
   20REM 6502Em (desktop frontend for binaries)
   30REM (c) Michael and Anne Borcherds, 1995
   40REM LOCK ROMRAM,memory,roms,osword7F_drive%,osword72_drive%,paging%
   50version$="2.10 (24th November 1996)"
   60
   70ON ERROR SYS "XWimp_CloseDown":SYS "XWimp_ReportError","    Fatal internal error "+STR$ ERL+": "+REPORT$,1,"6502Em":QUIT
   80
   90osword7F_drive%=1 : REM drive accessed for protected DFS discs
  100osword72_drive%=0 : REM drive accessed for protected ADFS discs
  110paging%=TRUE
  120top%=HIMEM
  130
  140HIMEM=HIMEM-96*1024
  150!HIMEM=0:SYS "OS_ReadVarVal","6502Em$SaveScreen",HIMEM,255 TO ,S$
  160IF LEFT$(S$,3)="Yes" THEN
  170sprite=HIMEM
  180save_sprite=FALSE
  190ELSE
  200HIMEM=HIMEM+96*1024
  210sprite=0
  220save_sprite=FALSE
  230ENDIF
  240
  250HIMEM=HIMEM-(64+64)*1024 : REM 64k BBC memory map + 32k Master extra memory + 256 bytes variables + spare
  260memory=HIMEM+64*1024
  270
  280IF memory<>&A0000 THEN ERROR 0,"6502Em initialisation: Fatal memory error"
  290
  300sheila=memory-&200 : REMFORI%=&100 TO &1FF STEP 4:sheila!I%=0:NEXT
  310
  320HIMEM=HIMEM-17*16*1024:roms=HIMEM
  330HIMEM=HIMEM-160*1024:code=HIMEM
  340romsize%=&4000
  350
  360filetype%=&BBC
  370
  380REM volume between 0 and 127
  390LIBRARY "<6502Em$Res>.Sound7a"
  400
  410PROCtemplates
  420PROCinitBBC
  430PROCsound_init
  440PROCnewmachine
  450PROCinit
  460PROCpoll
  470
  480END
  490
  500
  510DEFPROCinstall(sprite$)
  520LOCAL sx%,sy%,sm%,px%,py%
  530DIM text_buff &100, sprite_buff &100
  540SYS "Wimp_SpriteOp",40,,sprite$ TO ,,,sx%,sy%,,sm%
  550SYS "OS_ReadModeVariable",sm%,4 TO ,,px% : sx%=sx%<<px%
  560SYS "OS_ReadModeVariable",sm%,5 TO ,,py% : sy%=sy%<<py%
  570!q%=-1
  580q%!4=0:q%!8=-16:q%!12=q%!4+sx%:q%!16=20+sy%
  590REMq%!20=&1700312B (filled icon)
  600q%!20=&1700310B
  610
  620!(q%+24)=text_buff
  630!(q%+28)=sprite_buff
  640$text_buff=sprite$
  650$sprite_buff="S"+sprite$
  660!(q%+32)=&100
  670SYS "Wimp_CreateIcon",,q% TO !q%
  680bar_hand=!q%
  690ENDPROC
  700
  710DEFPROCreinstall(sprite$)
  720$sprite_buff="S"+sprite$
  730$text_buff=sprite$
  740buffer!0=-2
  750buffer!4=bar_hand
  760REMbuffer!8=0
  770REMbuffer!12=0
  780buffer!8=&00800080
  790buffer!12=&00800080
  800SYS"Wimp_SetIconState",,buffer
  810REMSYS"Wimp_ForceRedraw",-2,0,0,&FFFF,&FFFF
  820buffer!8=0
  830buffer!12=&00800080
  840SYS"Wimp_SetIconState",,buffer
  850ENDPROC
  860
  870DEFPROCtemplates
  880DIM t 4:$t="TASK"
  890SYS "Wimp_Initialise",200,!t,"6502Em" TO RO%,hand%
  900DIM q% 256, q2% 256, iconmenu% 300, miscmenu% 200,rommenu% 800, machine_menu% 200, oscli_menu 20
  910DIM pokemenu% 50, pokevalid% 12, poketext% 12, drag 40
  920DIM temp_regs 12*4, buffer &100
  930PROCclearmem(HIMEM,top%)
  940PROCinstall("OS�1.2")
  950
  960PROCreadpatches
  970PROCreadspeeds
  980
  990IF RO%>299 THEN
 1000SYS "OS_Byte",161,140 TO ,,t% : THREED%=-(t% AND 1)
 1010IF THREED%=TRUE THEN SYS "Wimp_OpenTemplate",,"<6502Em$Res>.Template3D" ELSE SYS "Wimp_OpenTemplate",,"<6502Em$Res>.Templates"
 1020SYS "Wimp_LoadTemplate",,-1,,,-1,"info" TO ,A%,B%
 1030SYS "Wimp_LoadTemplate",,-1,,,-1,"xfer_send" TO ,C%,D%
 1040SYS "Wimp_LoadTemplate",,-1,,,-1,"xfer_send2" TO ,E%,F%
 1050SYS "Wimp_LoadTemplate",,-1,,,-1,"config" TO ,G%,H%
 1060ELSE
 1070SYS "Wimp_OpenTemplate",,"<6502Em$Res>.Templates"
 1080A%=700 : B%=300 : C%=400 : D%=350 : E%=C% : F%=D%
 1090G%=2000:H%=2000
 1100ENDIF
 1110DIM buffer2 A%, icon3 B%, xfer1 C%+4, xfer2 D%, xfer3 E%+4, xfer4 F%
 1120DIM config G%, config2 H%+4
 1130SYS "Wimp_LoadTemplate",,buffer2,icon3,icon3+B%,-1,"info"
 1140SYS "Wimp_LoadTemplate",,xfer1,xfer2,xfer2+D%,-1,"xfer_send"
 1150SYS "Wimp_LoadTemplate",,xfer3,xfer4,xfer4+F%,-1,"xfer_send2"
 1160SYS "Wimp_LoadTemplate",,config,config2,config2+H%,-1,"config"
 1170SYS "Wimp_CloseTemplate"
 1180SYS "Wimp_CreateWindow",,xfer1 TO A%:xfer%=A%
 1190SYS "Wimp_CreateWindow",,xfer3 TO A%:xfer2%=A%
 1200SYS "Wimp_CreateWindow",,config TO A%:config%=A% : config_open%=FALSE
 1210SYS "Wimp_CreateWindow",,buffer2 TO A%:info%=A%
 1220
 1230!buffer=info%
 1240buffer!4=9
 1250SYS "Wimp_GetIconState",,buffer
 1260$(buffer!28)=version$+CHR$0
 1270
 1280!buffer=info%
 1290buffer!4=11
 1300SYS "Wimp_GetIconState",,buffer
 1310OSCLI"Load <6502Em$Res>.SerialNo "+STR$~(buffer!28)
 1320ENDPROC
 1330
 1340DEFPROCinit
 1350SYS "OS_GetEnv" TO A$
 1360IF RIGHT$(A$,1)=" " THEN
 1370I%=0
 1380REPEATI%+=1:UNTILMID$(A$,LENA$-I%,1)<>" "
 1390A$=LEFT$(A$,LENA$-I%)
 1400ENDIF
 1410IF RIGHT$(A$,1)=CHR$34 THEN A$=LEFT$(A$,LENA$-1)
 1420IF LEFT$(A$,1)=CHR$34 THEN A$=RIGHT$(A$,LENA$-1)
 1430I%=0
 1440REPEATI%+=1:UNTILMID$(A$,LENA$-I%,1)=" " OR I%=LENA$
 1450A$=RIGHT$(A$,I%)
 1460IF FNupper(MID$(A$,LENA$-9,10))<>".!RUNIMAGE" THEN PROCsnap_load(A$):PROCBBC
 1470
 1480ENDPROC
 1490
 1500DEFPROCpoll
 1510ON ERROR IF FNreport(REPORT$,ERR<>1)=2 THEN PROCquit
 1520
 1530REPEAT
 1540mask%=%1100000110011
 1550SYS "Wimp_Poll",mask%,q% TO action%
 1560
 1570CASE action% OF
 1580WHEN  2    : SYS "Wimp_OpenWindow",,q%:IF !q%=config% THEN config_open%=TRUE
 1590WHEN  3    : SYS "Wimp_CloseWindow",,q%:IF !q%=config% THEN config_open%=FALSE
 1600WHEN  6    : PROCclick
 1610WHEN  7    : PROCsave
 1620WHEN  8    : PROCkey
 1630WHEN  9    : PROCdecodemenu
 1640WHEN 17,18 : PROCmessage
 1650ENDCASE
 1660
 1670UNTILFALSE
 1680ENDPROC
 1690
 1700DEFPROCmessage
 1710CASE q%!16 OF
 1720WHEN 0 : PROCquit
 1730WHEN 2 :
 1740IF q%!12=myref% THEN
 1750SYS "OS_WriteN",q%+44 TO A$
 1760IF A$="<Wimp$Scrap>" THEN
 1770SYS "XOS_ReadVarVal","Wimp$Scrap",,-1 TO ,,A%
 1780IF A%=0 THEN SYS "Wimp_ReportError","    Scrap file not set",1,"6502Em":ENDPROC
 1790ENDIF
 1800IF save_sprite% THEN
 1810PROCsprite_save(A$)
 1820!buffer=xfer2%
 1830ELSE
 1840PROCsnap_save(A$)
 1850!buffer=xfer%
 1860ENDIF
 1870
 1880IF LEFT$(A$,6)<>"<Wimp$" THEN
 1890buffer!4=1
 1900SYS "Wimp_GetIconState",,buffer
 1910$(buffer!28)=A$
 1920ENDIF
 1930
 1940q%!16=3 : q%!12=q%!8 : SYS "Wimp_SendMessage",17,q%,q%!4
 1950ENDIF
 1960WHEN 3
 1970SYS "OS_WriteN",q%+44 TO A$
 1980CASE q%!40 OF
 1990WHEN &B22 : PROCdfsimage(A$)
 2000WHEN filetype% : PROCsnap_load(A$)
 2010WHEN &FFB,&FFE : PROCfile_load(A$):PROCBBC
 2020ENDCASE
 2030WHEN 5 :
 2040CASE q%!40 OF
 2050
 2060WHEN filetype% : REM Snapshot
 2070q%!16=4:q%!12=q%!8:SYS "Wimp_SendMessage",17,q%,q%!20
 2080SYS "OS_WriteN",q%+44 TO A$
 2090PROCsnap_load(A$) : PROCBBC
 2100
 2110OTHERWISE
 2120IF NOTINKEY-1 THEN
 2130SYS "OS_WriteN",q%+44 TO A$
 2140F$=A$
 2150SYS "OS_File",5,F$ TO type%,,load%,exec%,length%
 2160IF type%=2 AND LEFT$(RIGHT$(F$,LENF$-LENFNleaf(F$)-1),1)<>"!" THEN ENDPROC
 2170IF type%=2 THEN F$=A$+".!Run":SYS "OS_File",5,F$ TO type%,,load%,exec%,length%:IF (load% AND &FFF00)=&BBC00 THEN q%!16=4:q%!12=q%!8:SYS "Wimp_SendMessage",17,q%,q%!20:PROCsnap_load(F$) : PROCBBC : ENDPROC
 2180IF type%=0 THEN F$=A$+"."+RIGHT$(A$,LENA$-LENFNleaf(A$)-2):SYS "OS_File",5,F$ TO type%,,load%,exec%,length%
 2190
 2200
 2210  IF ((load%>>>16)=0 OR (load%>>>16)=&FFFF OR (load%>>>16)=&00FF) AND (load% AND &FFFF)<&8000 AND type%=1 THEN
 2220  q%!16=4:q%!12=q%!8:SYS "Wimp_SendMessage",17,q%,q%!20
 2230  PROCfile_load(F$)
 2240  PROCBBC
 2250  ENDIF
 2260ENDIF
 2270ENDCASE
 2280WHEN &400C1 : REMPROCmode
 2290ENDCASE
 2300ENDPROC
 2310
 2320DEFPROCkey
 2330CASE !q% OF
 2340WHEN config%
 2350
 2360IF q%!24=13 AND q%!4=16 THEN
 2370SYS "Wimp_GetIconState",,q%
 2380PROCnewspeed(VAL$(q%!28))
 2390ELSE
 2400SYS "Wimp_ProcessKey",q%!24
 2410ENDIF
 2420
 2430WHEN xfer%,xfer2%
 2440
 2450IF q%!4=1 AND q%!24=13 THEN
 2460!buffer=!q%
 2470buffer!4=1
 2480SYS "Wimp_GetIconState",,buffer
 2490IF !q%=xfer% THEN PROCsnap_save($(buffer!28)) ELSE PROCsprite_save($(buffer!28))
 2500SYS "Wimp_CreateMenu",-1
 2510ELSE
 2520SYS "Wimp_ProcessKey",q%!24
 2530ENDIF
 2540
 2550ENDCASE
 2560ENDPROC
 2570
 2580DEFPROCclick
 2590mx%=q%!0
 2600my%=q%!4
 2610mb%=q%!8
 2620h%=q%!12
 2630i%=q%!16
 2640IF h%=config% THEN PROCconfig:ENDPROC
 2650IF h%=-2 THEN
 2660IF mb%=2 THEN PROCopenmenu(iconmenu%,mx%-64,96+7*44)
 2670IF mb%=1 THEN
 2680REMPROCreadCSD
 2690REMPROCBBC
 2700PROCopenconfig
 2710ENDIF
 2720IF mb%=4 THEN
 2730IF INKEY-1 OR INKEY-2 THEN PROCreadCSD
 2740PROCBBC
 2750ENDIF
 2760ENDIF
 2770IF i%=3 AND (h%=xfer% OR h%=xfer2%) THEN SYS "Wimp_CreateMenu",-1
 2780
 2790IF (h%=xfer% OR h%=xfer2%) AND i%=2 AND (mb%=1 OR mb%=4) THEN
 2800!buffer=h%
 2810buffer!4=1
 2820SYS "Wimp_GetIconState",,buffer
 2830IF h%=xfer% THEN PROCsnap_save($(buffer!28)) ELSE PROCsprite_save($(buffer!28))
 2840IF mb%<>1 THEN SYS "Wimp_CreateMenu",-1
 2850ENDIF
 2860
 2870IF h%=xfer% AND i%=0 THEN
 2880save_sprite%=FALSE
 2890!xfer1=xfer% : SYS "Wimp_GetWindowInfo",,xfer1
 2900!buffer=xfer% : buffer!4=0 : SYS "Wimp_GetIconState",,buffer
 2910drag!0=0
 2920drag!8=xfer1!4+buffer!8
 2930drag!12=xfer1!16+buffer!12
 2940drag!16=xfer1!4+buffer!16
 2950drag!20=xfer1!16+buffer!20
 2960SYS "OS_Byte",161,&1C TO ,,byte%
 2970IF RO%>299 AND (byte% AND 2)=2 THEN
 2980drag!4=7
 2990solid%=TRUE
 3000ELSE
 3010drag!4=5
 3020solid%=FALSE
 3030ENDIF
 3040drag!24=-100
 3050drag!28=-100
 3060drag!32=30000
 3070drag!36=30000
 3080IF solid% THEN SYS "DragASprite_Start",%11000101,1,"file_BBC",drag+8 ELSE SYS "Wimp_DragBox",,drag
 3090ENDIF
 3100IF h%=xfer2% AND i%=0 THEN
 3110save_sprite%=TRUE
 3120!xfer3=xfer2% : SYS "Wimp_GetWindowInfo",,xfer3
 3130!buffer=xfer2% : buffer!4=0 : SYS "Wimp_GetIconState",,buffer
 3140drag!0=0
 3150drag!8=xfer3!4+buffer!8
 3160drag!12=xfer3!16+buffer!12
 3170drag!16=xfer3!4+buffer!16
 3180drag!20=xfer3!16+buffer!20
 3190SYS "OS_Byte",161,&1C TO ,,byte%
 3200IF RO%>299 AND (byte% AND 2)=2 THEN
 3210drag!4=7
 3220solid%=TRUE
 3230ELSE
 3240drag!4=5
 3250solid%=FALSE
 3260ENDIF
 3270drag!24=-100
 3280drag!28=-100
 3290drag!32=30000
 3300drag!36=30000
 3310IF solid% THEN SYS "DragASprite_Start",%11000101,1,"file_FF9",drag+8 ELSE SYS "Wimp_DragBox",,drag
 3320ENDIF
 3330ENDPROC
 3340
 3350
 3360DEFPROCmenus
 3370LOCALP%
 3380PROCmenuheader(iconmenu%,"6502Em",LEN"Single Task "*16+12)
 3390PROCmenuitem(0,info%,&07000001,"Info")
 3400PROCmenuitem(0,rommenu%,&07000001,"ROMs")
 3410PROCmenuitem(0,miscmenu%,&07000001,"Misc")
 3420REMPROCmenuitem(0,-1,&07000001,"Read CSD")
 3430REMPROCmenuitem(0,-1,&07000001,"Reset")
 3440PROCmenuitem(0,xfer%,&07000001,"Save")
 3450IF sprite=0 THEN
 3460PROCmenuitem(0,xfer2%,&07000001 OR (2^22),"Sprite")
 3470ELSE
 3480PROCmenuitem(0,xfer2%,&07000001 OR -(2^22)*(sprite!4=0),"Sprite")
 3490ENDIF
 3500PROCmenuitem(0,-1,&07000001,"Config...")
 3510PROCmenuitem(&80,-1,&07000001,"Quit")
 3520
 3530buffer!0=0:buffer!4=0:buffer!8=0
 3540SYS "OS_ReadVarVal","6502Em$Keymap",buffer,255 TO ,S$
 3550keymap%=FNkeymap(S$)
 3560
 3570IF keymaps%<>0 THEN
 3580PROCmenuheader(keysmenu%,"Keymap",12*16+12)
 3590FORI%=1 TO keymaps%
 3600PROCmenuitem(-&80*(I%=keymaps%)-(keymap%=I%),-1,&07000001,keymap$(I%))
 3610NEXT
 3620ENDIF
 3630
 3640IF patches%<>0 THEN
 3650PROCmenuheader(patchmenu%,"Patches",12*16+12)
 3660FORI%=1 TO patches%
 3670PROCmenuitem(-2*(I%=patches%),-1,&07000001,patch$(I%))
 3680NEXT
 3690PROCmenuitem(&80,-1,&07000001,"(none)")
 3700ENDIF
 3710
 3720PROCmenuheader(speedmenu%,"Speed",6*16+12)
 3730FORI%=0 TO speeds%
 3740PROCmenuitem(-&80*(I%=speeds%),-1,&07000001,speed$(I%))
 3750NEXT
 3760
 3770PROCmenuheader(rommenu%,"Protected?",12*16+12)
 3780FORI%=15 TO 0 STEP -1
 3790PROCmenuitem(-(?(ROMRAM+I%)<>0)-&80*(I%=0),-1,&07000001,FNROMname(I%))
 3800NEXT
 3810
 3820PROCmenuheader(miscmenu%,"Misc",LEN"Disable Tape "*16+12)
 3830PROCmenuitem(0,-1,&07000001,"Read CSD")
 3840PROCmenuitem(0,-1,&07000001,"Reset")
 3850IF machine%=0 OR machine%=4 THEN
 3860PROCmenuitem(0,-1,&07000001,"Disable Tape")
 3870ELSE
 3880PROCmenuitem(0,-1,&07000001 OR 2^22,"Disable Tape")
 3890ENDIF
 3900PROCmenuitem(&80,-1,&07000001,"No Joystick")
 3910
 3920PROCmenuheader(machine_menu%,"Machine",LEN"Master 128 "*16+12)
 3930PROCmenuitem(0,-1,&07000001 OR -(2^22)*(Machine%(0)=0),Machine$(0))
 3940PROCmenuitem(0,-1,&07000001 OR -(2^22)*(Machine%(1)=0),Machine$(1))
 3950PROCmenuitem(0,-1,&07000001 OR -(2^22)*(Machine%(2)=0),Machine$(2))
 3960PROCmenuitem(0,-1,&07000001 OR -(2^22)*(Machine%(3)=0),Machine$(3))
 3970PROCmenuitem(&80,-1,&07000001 OR -(2^22)*(Machine%(4)=0),Machine$(4))
 3980
 3990ENDPROC
 4000
 4010DEFPROCmenuheader(A%,B$,G%)
 4020P%=A%
 4030$P%=B$+CHR$13
 4040P%?12=7 : P%?13=2 : P%?14=7 : P%?15=0
 4050P%!16=G% : P%!20=44 : P%!24=0
 4060P%+=28
 4070ENDPROC
 4080
 4090DEFPROCmenuitem(A%,B%,C%,D$)
 4100P%!0=A%
 4110P%!4=B%
 4120P%!8=C%
 4130$(P%+12)=D$+CHR$13
 4140P%+=24
 4150ENDPROC
 4160
 4170DEFPROCindirecteditem(A%,B%,C%,D$,E%)
 4180P%!0=A%
 4190P%!4=B%
 4200P%!8=C%+&07000000
 4210P%!12=E%
 4220P%!16=0
 4230P%!20=LEND$+1
 4240$E%=D$+CHR$13
 4250P%+=24
 4260ENDPROC
 4270
 4280DEFPROCdecodemenu
 4290CASE current_menu% OF
 4300WHEN iconmenu%     : PROCiconmenu
 4310WHEN machine_menu% : IF !q%<>-1 AND !q%<>machine% THEN machine%=!q%:PROCnewmachine
 4320WHEN keysmenu%     : IF !q%<>-1 THEN PROCsetkeymap(keymap$(!q%+1))
 4330
 4340WHEN patchmenu%    : IF !q%>=patches% THEN
 4350                     patch%=0:PROCpokeicontext(14,"(none)")
 4360                     ELSE
 4370                     IF patch%<>!q%+1 THEN patch%=!q%+1:PROCloadpatch
 4380                     ENDIF
 4390WHEN speedmenu%    : PROCnewspeed(VAL(LEFT$(speed$(!q%),LENspeed$(!q%)-1)))
 4400ENDCASE
 4410SYS "Wimp_GetPointerInfo",,q%
 4420IF (q%!8 AND %1)>0 THEN PROCopenmenu(current_menu%,0,0)
 4430ENDPROC
 4440
 4450DEFPROCiconmenu
 4460CASE !q% OF
 4470  WHEN 0 : REM Info
 4480  WHEN 5 : REM Configure
 4490           PROCopenconfig
 4500  WHEN 1    : REM ROMs
 4510    IF q%!4 > -1 THEN
 4520    S%=15-(q%!4 AND 15)
 4530    IF FNvalidROM(S%) OR ?(ROMRAM+S%)=2 THEN
 4540    IF ?(ROMRAM+S%)=2 THEN ?(ROMRAM+S%)=0 ELSE ?(ROMRAM+S%)=1-?(ROMRAM+S%)
 4550    ELSE
 4560    ?(ROMRAM+S%)=2
 4570    ENDIF
 4580    ENDIF
 4590  WHEN 2    : REM Misc
 4600    IF q%!4 > -1 THEN
 4610    CASE q%!4 OF
 4620    WHEN 0 : PROCreadCSD
 4630    WHEN 1 : PROCreset(2)
 4640    WHEN 2 : PROCdisableCFS
 4650    WHEN 3 : joystick%=FALSE
 4660    ENDCASE
 4670    ENDIF
 4680  WHEN 3    : REM Save
 4690  WHEN 4    : REM Sprite
 4700  OTHERWISE : PROCquit
 4710ENDCASE
 4720ENDPROC
 4730
 4740DEFPROCmenuitem2(A%,B%,C%,D%,E%,F%)
 4750P%!0=A%
 4760P%!4=B%
 4770P%!8=C%
 4780P%!12=D%
 4790P%!16=E%
 4800P%!20=F%
 4810P%+=24
 4820ENDPROC
 4830
 4840DEFFNcount(A$,B$)
 4850LOCALI%,C%
 4860FORI%=1 TO LENA$
 4870IF MID$(A$,I%,1)=B$ THEN C%+=1
 4880NEXT
 4890=C%
 4900
 4910DEFFNletter(A$)
 4920LOCAL I%,J%
 4930FORI%=1 TO LENA$
 4940IF INSTR("ABCDEFabcdef",MID$(A$,I%,1)) THEN J%=TRUE:I%=LENA$
 4950NEXT
 4960=J%
 4970
 4980
 4990DEFPROCsave
 5000IF solid% THEN SYS "DragASprite_Stop"
 5010K$=""
 5020IF save_sprite% THEN !drag=xfer2% ELSE !drag=xfer%
 5030drag!4=1
 5040SYS "Wimp_GetIconState",,drag
 5050P%=drag!28-1
 5060REPEAT P%+=1
 5070IF ?P%<>13 THEN K$=K$+CHR$?P%
 5080IF ?P%=ASC"." OR ?P%=ASC":" THEN K$=""
 5090UNTIL?P%=13
 5100SYS "Wimp_GetPointerInfo",,q%
 5110IF q%!12<>xfer% AND q%!12<>xfer2% THEN SYS "Wimp_CreateMenu",-1
 5120q%!20=q%!12
 5130q%!24=q%!16
 5140q%!28=q%!0
 5150q%!32=q%!4
 5160
 5170IF save_sprite%=FALSE THEN
 5180q%!36=65667
 5190q%!40=filetype%
 5200ELSE
 5210q%!36=80*1024
 5220q%!40=&FF9
 5230ENDIF
 5240
 5250q%!12=0
 5260q%!16=1
 5270$(q%+44)=K$+CHR$0
 5280q%!0=(48+LENK$) AND %111111100
 5290
 5300SYS "XWimp_SendMessage",17,q%,q%!20,q%!24
 5310myref%=q%!8
 5320ENDPROC
 5330
 5340DEFFNleaf(A$)
 5350LOCAL I%
 5360I%=LENA$+1
 5370REPEATI%-=1:UNTIL MID$(A$,I%,1)="."
 5380=LEFT$(A$,I%-1)
 5390
 5400DEFPROCerr
 5410ONERROR OFF
 5420IF FNreport(REPORT$,TRUE) THEN PROCquit ELSE PROCpoll
 5430ENDPROC
 5440
 5450DEFPROCerr2(M%)
 5460LOCAL ERROR
 5470ONERROR LOCAL PROCerr
 5480IF hand%<>0 THEN SYS "XOS_Find",0,hand% : REM CLOSE#hand%
 5490SYS "XWimp_SetMode",M% : SYS "X6502_RemoveExitHandler"
 5500IF sound%=TRUE THEN PROCsound_restore
 5510IF FNreport(REPORT$,TRUE) THEN PROCquit ELSE PROCpoll
 5520ENDPROC
 5530
 5540DEF FNreport(a$,E%)
 5550LOCAL A%
 5560IF E% THEN
 5570 SYS "XWimp_ReportError","    Internal error "+STR$ ERL+": "+a$,3,"6502Em" TO ,A%
 5580ELSE SYS "XWimp_ReportError","    "+a$,1,"6502Em" TO ,A%
 5590ENDIF
 5600=A%
 5610
 5620DEFFNcsd
 5630SYS "OS_GBPB",6,,buffer
 5640buffer?(buffer?1+2)=13
 5650=$(buffer+2)
 5660
 5670DEFPROCreadCSD
 5680
 5690LOCAL ERROR
 5700
 5710ON ERROR LOCAL : RESTORE ERROR : fs$="ADFS:":disc$="":path$="$":subpath$="":SYS "XWimp_ReportError","    Error in reading current directory: "+REPORT$,1,"6502Em":ENDPROC
 5720
 5730
 5740FOR I%=0 TO 1
 5750SYS "OS_Args" TO FS%
 5760SYS "OS_FSControl",33,FS%,STRING$(20," "),20 TO ,,fs$
 5770IF fs$<>"" THEN fs$=fs$+":":I%=1 ELSE OSCLI"DIR <6502Em$Dir>.^"
 5780NEXT
 5790
 5800SYS "OS_GBPB",5,,buffer
 5810buffer?(?buffer+1)=13
 5820disc$=$(buffer+1)
 5830IF disc$=CHR$34+"Unset"+CHR$34 THEN disc$="" ELSE disc$=":"+disc$+"."
 5840
 5850path$=FNcsd
 5860IF path$<>"$" THEN
 5870REMSYS "OS_FSControl",11,"@"
 5880REPEAT
 5890SYS "OS_FSControl",0,"^"
 5900CSD$=FNcsd
 5910path$=CSD$+"."+path$
 5920UNTIL CSD$="$"
 5930IF RIGHT$(path$,7)=CHR$34+"Unset"+CHR$34 THEN path$="$"
 5940SYS "OS_FSControl",0,path$
 5950ENDIF
 5960
 5970subpath$=""
 5980ENDPROC
 5990
 6000DEFPROCinitBBC
 6010
 6020!&97000=&A0A0A0A0
 6030!&97004=&A0A0A0A0
 6040!&97008=&A0A0A0A0
 6050!&9700C=&A0A0A0A0
 6060
 6070joystick%=TRUE
 6080
 6090DIM R%(7)
 6100
 6110DIM BBC$(&7C),ARC$(&78),Elec$(3,13)
 6120RESTORE
 6130FORI%=0 TO 3
 6140FORJ%=13 TO 0 STEP -1
 6150READ Elec$(I%,J%)
 6160NEXT
 6170NEXT
 6180FORI%=0 TO 7
 6190FORJ%=0 TO 12
 6200READ BBC$(I%*16+J%)
 6210NEXT
 6220NEXT
 6230FORI%=0 TO &78
 6240READ ARC$(I%)
 6250NEXT
 6260
 6270PROCreadkeymaps
 6280REMPROCsetkeymap("Default")
 6290PROCelkkeys("<6502Em$Res>.ElkKeys")
 6300SYS "6502_Register"
 6310
 6320DIM Machine$(4),Machine%(4),MachineSprite$(4)
 6330
 6340imagefile%=FALSE
 6350disable_reset=FALSE
 6360default_machine%=0
 6370
 6380Machine$(0)="BBC B"        : MachineSprite$(0)="OS�1.2"
 6390Machine$(1)="Master 128"   : MachineSprite$(1)="OS�3.2"
 6400Machine$(2)="   MOS 3.5"   : MachineSprite$(2)="OS�3.5"
 6410Machine$(3)="Compact"      : MachineSprite$(3)="OS�5.1"
 6420Machine$(4)="Electron"     : MachineSprite$(4)="OS�1.0"
 6430
 6440Q=OPENIN"<6502Em$RomPath>Electron"
 6450IF Q<>0 THEN CLOSE#Q:Machine%(4)=TRUE ELSE Machine%(4)=FALSE
 6460
 6470Q=OPENIN"<6502Em$RomPath>OS1,2"
 6480IF Q<>0 THEN CLOSE#Q:Machine%(0)=TRUE ELSE Machine%(0)=FALSE
 6490IF Machine%(0)=FALSE THEN default_machine%=1
 6500
 6510Q=OPENIN"<6502Em$RomPath>M128.OS3,2"
 6520IF Q<>0 THEN CLOSE#Q : Machine%(1)=TRUE ELSE Machine%(1)=FALSE
 6530IF Machine%(0)=FALSE AND Machine%(1)=FALSE THEN default_machine%=2
 6540
 6550Q=OPENIN"<6502Em$RomPath>M128.OS3,5"
 6560IF Q<>0 THEN CLOSE#Q : Machine%(2)=TRUE ELSE Machine%(2)=FALSE
 6570IF Machine%(0)=FALSE AND Machine%(1)=FALSE AND Machine%(2)=FALSE THEN default_machine%=3
 6580
 6590Q=OPENIN"<6502Em$RomPath>Compact.OS5,1"
 6600IF Q<>0 THEN CLOSE#Q : Machine%(3)=TRUE ELSE Machine%(3)=FALSE
 6610IF Machine%(0)=FALSE AND Machine%(1)=FALSE AND Machine%(2)=FALSE AND Machine%(3)=FALSE THEN ERROR 0,"No ROMs found - please run !Rip65Host"
 6620
 6630REMQ=OPENIN"<6502Em$Dir>.Code"
 6640REML%=EXT#Q
 6650REMCLOSE#Q
 6660REMDIM code L%+3000
 6670REMDIM roms 17*16*1024
 6680
 6690DIM cmos%(63) : PROCloadCMOS
 6700DIM eeprom%(255) : PROCloadEEPROM
 6710REMWHILE (code AND 15)<>0 : code+=1 : ENDWHILE
 6720
 6730indexfile$="":index%=0:newindex%=-1
 6740
 6750REM!buffer=0
 6760REMSYS "OS_ReadVarVal","6502Em$SaveScreen",buffer,255 TO ,S$
 6770REMIF LEFT$(S$,3)="Yes" THEN
 6780REMDIM sprite 80*1024+300
 6790REMsprite!0=80*1024+256
 6800REMsprite!8=16
 6810REMSYS "OS_SpriteOp",256+9,sprite
 6820REMsave_sprite=FALSE
 6830REMELSE
 6840REMsprite=0
 6850REMsave_sprite=FALSE
 6860REMENDIF
 6870
 6880PROCreadCSD
 6890FS$=fs$:DISC$=disc$:PATH$=path$:SUBPATH$=subpath$
 6900
 6910PROCassemble
 6920PROCload_options
 6930REMOSCLI"LOAD <6502Em$Dir>.Code "+STR$~code
 6940REMCALL code+!init_addr
 6950REMPROCnewmachine
 6960
 6970
 6980IF file_xxx THEN OSCLI"IconSprites <6502Em$Res>.file_xxx"
 6990
 7000
 7010
 7020REMmemory?&F1B1=3 : REM OSFSC
 7030REMmemory?&FFCE=3 : REM OSFIND
 7040REMmemory?&FFD1=3 : REM OSGBPB
 7050REMmemory?&FFD4=3 : REM OSBPUT
 7060REMmemory?&FFD7=3 : REM OSBGET
 7070REMmemory?&FFDA=3 : REM OSARGS
 7080REMmemory?&FFDD=3 : REM OSFILE
 7090
 7100REMmemory?&FFF1=3 : REM OSWORD
 7110REMmemory?&FFE0=&23 : REM OSRDCH
 7120
 7130*FX229,1
 7140
 7150
 7160patch%=0:REMPROCreset(1)
 7170
 7180REMmemory?&FFF7=3 : REM OSCLI
 7190REMmemory?&DF89=3 : REM OSCLI
 7200REMmemory?&EF02=3 :REM KEYV
 7210REMmemory?&FFF4=&13 : REM OSBYTE
 7220REMmemory?&FFE0=&23 : REM OSRDCH
 7230REMmemory?&FFCB=&23
 7240ENDPROC
 7250
 7260DEFPROCSRRAM
 7270?(ROMRAM+socket%)=0
 7280socket%=(socket%-1) AND 15
 7290ENDPROC
 7300
 7310DEFPROCkillROM(S%)
 7320LOCALI%
 7330?(ROMRAM+S%)=2 : REM empty
 7340FOR I%=0 TO 255 STEP 16
 7350I%!(roms+romsize%*S%)=0
 7360NEXT
 7370ENDPROC
 7380
 7390DEFPROCloadROM(R$,R%)
 7400LOCALQ%
 7410IF machine%=4 AND (socket%=9 OR socket%=8) THEN socket%=7
 7420S%=socket%
 7430socket%=(socket%-1) AND 15
 7440SYS "OS_Find",&4E,R$,"6502Em$ROMPath" TO Q%
 7450SYS "OS_GBPB",3,Q%,roms+romsize%*S%,&4000
 7460CLOSE#Q%
 7470?(ROMRAM+S%)=R%
 7480ENDPROC
 7490
 7500DEFPROCinitROMs
 7510LOCAL S%
 7520FOR S%=0 TO 15
 7530?(ROMRAM+S%)=2 : REM 0=RAM
 7540                 REM 1=ROM
 7550                 REM 2=empty
 7560NEXT
 7570ENDPROC
 7580
 7590DEFFNROMname(S%)
 7600IF ?(ROMRAM+S%)=2 THEN ="Empty"
 7610LOCALN$,I%
 7620I%=roms?(romsize%*S%+7)
 7630IF FNvalidROM(S%) THEN
 7640FORI%=0 TO 11
 7650N$=N$+CHR$roms?(romsize%*S%+&9+I%)
 7660IF roms?(romsize%*S%+&B)=0 THEN I%=11
 7670NEXT
 7680ELSE
 7690N$="RAM "+STR$~S%
 7700ENDIF
 7710=N$
 7720
 7730DEFFNvalidROM(S%)
 7740LOCALI%
 7750I%=roms?(romsize%*S%+7)
 7760IF roms?(romsize%*S%+I%+1)=&28 AND roms?(romsize%*S%+I%+2)=&43 AND roms?(romsize%*S%+I%+3)=&29 THEN =TRUE ELSE =FALSE
 7770=0
 7780DEFPROCreset(A%)
 7790IF disable_reset THEN ENDPROC
 7800
 7810IF A%>=2 THEN PROCclearmem(memory,memory+&8000)
 7820
 7830IF A%>=1 THEN
 7840?ier=&80   : REM ier
 7850?ier2=&80  : REM ier2
 7860?Eifr=%10
 7870?Eier=%0
 7880?Elatch=0
 7890!T1R=&F0<<24
 7900!T2R=&F0<<24
 7910!T3R=&F0<<24
 7920!T4R=&F0<<24
 7930OSCLI"LOAD <6502Em$Res>.SHEILA "+STR$~sheila
 7940ENDIF
 7950?fe10=&22 : REM motor off etc
 7960sheila!&C0=&7070B7AB
 7970
 7980PROCsetmemmap
 7990?ACCCON=0
 8000PROCsetmemmap2
 8010
 8020REMIF patch%=0 THEN Palette%=TRUE
 8030
 8040?f=%100
 8050
 8060REMmemory?&FE40=0
 8070REMmemory?&FE60=0
 8080
 8090sheila?&20=2 : REM teletext
 8100
 8110REMmemory?&E0A4=3 : REM where OSWRCH goes to
 8120REMmemory?&E7EB=3 : REM where OSWORD goes to
 8130
 8140REMmemory?&E98F=10 : REM default repeat delay (OS1.2)
 8150
 8160REMmemory?&FE4E=&0 : REM force power on reset
 8170REMmemory?&FE6E=&0
 8180
 8190REMmemory?ier=0 : REM force power on reset
 8200REMmemory?ier2=0
 8210
 8220REMmemory?&28E=&80 : REM 32K
 8230REMmemory?&DA2F=&EA
 8240REMmemory?&DA30=&EA
 8250REMmemory?&355=7
 8260
 8270REM!pc_store=&8000 << 16 : !a=1 << 24
 8280REM!pc_store=&D9CD << 16
 8290REM!pc_store=&47B1 << 16
 8300!pc_store=(memory?&FFFC + (memory?&FFFD << 8)) << 16
 8310REM!pc_store=(FNpeek(&FFFC) + (FNpeek(&FFFD) << 8)) << 16
 8320ENDPROC
 8330
 8340DEFPROCBBC
 8350LOCAL ERROR
 8360
 8370SYS "XOS_SWINumberFromString",,"ImageDFS_Version" TO ; F
 8380IF (F AND 1)=0 THEN dfssupport=TRUE ELSE dfssupport=FALSE
 8390
 8400IF dfssupport SYS "ImageDFS_EnteringEmulator"
 8410
 8420
 8430*FX9
 8440wimp_mode=MODE
 8450REMSYS "6502_ReInit"
 8460?lastmode=255
 8470SYS "Hourglass_Smash"
 8480REM Assign sound channels & start note
 8490PROCsound_setup
 8500SYS "6502_InstallExitHandler",wimp_mode
 8510
 8520ONERROR LOCAL PROCerr2(wimp_mode)
 8530
 8540!patch_on=((machine%<>4) AND (patch%>0) AND %1) + (joystick% AND %10) + (Cursor% AND %100) + (scroll_hack% AND %1000) + (NOTsound_on% AND %10000)
 8550
 8560!speed_loc=speed*2000000/5000
 8570
 8580VDU23,16,1,254| : REM NOSCROLL
 8590SYS "OS_Byte",202,0,255 TO ,FX202
 8600SYS "OS_Byte",247,0,255 TO ,FX247
 8610SYS "OS_Byte",247,255,0
 8620
 8630SYS "OS_Byte",106,&81 : REM unlink pointer, shape 1
 8640MOUSE COLOUR 3,255,255,255
 8650
 8660SYS "OS_Byte",202,memory?&25A AND %10000,%11101111
 8670SYS "OS_Byte",118
 8680
 8690hand%=OPENINtapefile$
 8700?tape_handle=hand%
 8710
 8720REPEAT
 8730
 8740IF newindex%>=0 index%=newindex%
 8750IF OSRDCH% THEN PROCpoke(&FFE0,OSRDCH_loc) ELSE PROCpoke(&FFE0,&23)
 8760?ROMSEL=1+ROMSEL%
 8770?Palette=1+Palette%
 8780REM?cursor_on=1+Cursor%
 8790PROCsetmemmap
 8800A%=roms
 8810D%=memory : REM R3
 8820SYS &600FA,0 : REM Wimp_SetWatchdogState Off
 8830b%=USR(code+!start_offset)
 8840SYS &600FA,1 : REM Wimp_SetWatchdogState On
 8850PROCsetmemmap2
 8860*FX15
 8870REMPRINTb%:VDU7:Q=GET
 8880CASE b% OF
 8890WHEN 11
 8900IF INKEY-2 THEN
 8910IF hand%<>0 THEN PTR#hand%=FNmax(0,PTR#hand%-350)
 8920ELSE
 8930IF INKEY-1 THEN volume%+=5 ELSE volume%-=5
 8940IF volume%>127 THEN volume%=127
 8950IF volume%<0 THEN volume%=0
 8960PROCsound_restore:PROCsound_setup
 8970ENDIF
 8980
 8990WHEN 10 : CLS:?lastmode=255:REMSYS "6502_ReInit":REMmemory?&EC=&E2
 9000WHEN 66 : PRINT~!pc_store:Q=GET
 9010WHEN 15
 9020IF INKEY-3 THEN PROCreset(2) ELSE PROCreset(0)
 9030
 9040WHEN 3
 9050REMPRINT "*****";~!pc_store >>> 16 : PRINT'a?3,y?3 : REPEATQ=GET:UNTILQ=48
 9060REMOSCLI"SAVE RAM:$.Memory "+STR$~memory+" +10000 0 0"
 9070IF FNpeek(!pc_store >>> 16)=3 AND (!pc_store >>> 16)<&C000 THEN
 9080REMIF memory?((!pc_store >>> 16)+1)<&80 THEN PRINT"LL"memory?((!pc_store >>> 16)+1) : Q=GET
 9090REMPRINT TAB(0,0);~FNpeek((!pc_store >>> 16)+1);"   ";:REMQ=GET
 9100CASE FNpeek((!pc_store >>> 16)+1) OF
 9110WHEN 0   : PROCosfsc
 9120WHEN 1   : PROCosfind
 9130WHEN 2   : PROCosgbpb
 9140WHEN 3   : PROCosbput
 9150WHEN 4   : PROCosbget
 9160WHEN 5   : PROCosargs
 9170WHEN 6   : PROCosfile
 9180WHEN &40 : PROCosword2
 9190WHEN &41 : PROCosbyte2
 9200WHEN &80 : PROCreadCMOS
 9210WHEN &81 : PROCwriteCMOS
 9220WHEN &82 : PROCreadEEPROM
 9230WHEN &83 : PROCwriteEEPROM
 9240WHEN &D0 : PROCsrload
 9250WHEN &D1 : PROCsrwrite
 9260WHEN &D2 : PROCdrive
 9270WHEN &D3 : PROCboot
 9280WHEN &D5 : PROCback : a?3=0 : PROCrts
 9290WHEN &D6 : PROCmount
 9300WHEN &FF : b%=12 : PROCrts : REM *Quit
 9310ENDCASE
 9320ELSE
 9330CASE (!pc_store >>> 16) OF
 9340WHEN &FFF1,&E7EB : PROCosword2
 9350WHEN &FFE0 : PROCosrdch
 9360WHEN &FFD7 : PROCosbget
 9370WHEN &FFD4 : PROCosbput
 9380WHEN &FFDD : PROCosfile
 9390WHEN &FFDA : PROCosargs
 9400WHEN &FFD1 : PROCosgbpb
 9410WHEN &FFCE : PROCosfind :REM Open or close a file for byte access
 9420WHEN &F1B1,&F0E8 : PROCosfsc
 9430ENDCASE
 9440
 9450ENDIF
 9460
 9470WHEN 7
 9480cb=(y?3)<<8
 9490cb+=x?3
 9500cb+=memory
 9510FOR I%=0 TO 7
 9520R%(I%)=cb!(9+I%*4)
 9530IF (cb?4 AND (1<<I%)) <> 0 THEN R%(I%)=FNaddr(R%(I%))
 9540NEXT
 9550swi%=cb?0
 9560swi%+=(cb?1)<<8
 9570swi%+=(cb?2)<<16
 9580
 9590REMIF swi%=&61140 THEN
 9600REMbase=cb!9
 9610REMPRINT"GGG";~memory?(base+6);"GGG":Q=GET
 9620REMENDIF
 9630
 9640REMSYS "OS_SWINumberToString",swi%,buffer,255 TO ,swi$
 9650REMPRINT"Opcode 7 ";~swi%:Q=GET
 9660IF dfssupport THEN
 9670
 9680CASE swi% OF
 9690
 9700WHEN &61140 : REM"XPRESDFS_FDCOperation"
 9710base=cb!9
 9720  CASE memory?base OF
 9730  WHEN 0,1,2,3
 9740  WHEN &21 : memory?base=0
 9750  WHEN &4B : memory?base=1
 9760  WHEN &E0 : memory?base=2
 9770  WHEN &EA : memory?base=3
 9780  OTHERWISE
 9790  PRINT"Drive ";memory?base;"  "
 9800  ENDCASE
 9810IF memory?(base+6)=&80 THEN memory?(base+6)=&53
 9820IF memory?(base+6)=&A0 THEN memory?(base+6)=&4B
 9830REMPRINT"FDCOp ";memory?(base+6);"  "
 9840IF memory?(base+11)<>0 THEN memory?(base+9)=memory?(base+9)+1
 9850memory?(base+9)=(memory?(base+9) AND %11111) OR 32
 9860IF memory?(base+6)<>&81 THEN SYS "XImageDFS_OSWORD7F",,base MOD 256,base DIV 256,memory TO R%(0) ; F
 9870
 9880WHEN &61141 : REM "XPRESDFS_ReadFDCStatus"
 9890
 9900WHEN &61142 : REM "XPRESDFS_SetDFSdrives"
 9910REMPRINT~R%(0),~R%(1)
 9920REMSYS "DFS_RISCOSToBBCDrive",R%(0),R%(1)
 9930
 9940WHEN &61143 : REM "XPRESDFS_SetDFSStep"
 9950REM R%(0)=40 or 80 for *STEP40, *STEP80
 9960
 9970OTHERWISE
 9980SYS (swi% OR 2^17),R%(0),R%(1),R%(2),R%(3),R%(4),R%(5),R%(6),R%(7) TO R%(0),R%(1),R%(2),R%(3),R%(4),R%(5),R%(6),R%(7) ; F
 9990
10000ENDCASE
10010
10020ELSE
10030SYS (swi% OR 2^17),R%(0),R%(1),R%(2),R%(3),R%(4),R%(5),R%(6),R%(7) TO R%(0),R%(1),R%(2),R%(3),R%(4),R%(5),R%(6),R%(7) ; F
10040ENDIF
10050
10060IF cb?3<>0 THEN
10070FOR I%=0 TO cb?3-1
10080IF (cb?5 AND (1<<I%)) <> 0 THEN R%(I%)=R%(I%)-memory
10090cb!(9+I%*4)=R%(I%)
10100NEXT
10110ENDIF
10120
10130
10140
10150IF (F AND 1)<>0 AND (swi% AND 2^17)=0 THEN
10160A%=R%(0)
10170PROCswi_error
10180ELSE
10190
10200IF (F AND 1)<>0 AND cb?8<>0 THEN
10210err=cb?6
10220err+=(cb?7)<<8
10230err+=memory
10240J%=FALSE
10250err?0=0
10260FOR I%=0 TO cb?8-2
10270err?(I%+1)=R%(0)?I%
10280IF err?I%=0 THEN J%=TRUE
10290NEXT
10300IF J%=FALSE THEN err?(cb?8-1)=0
10310ENDIF
10320
10330!pc_store=!pc_store+(1 << 16)
10340?f=?f AND %1100011
10350IF (F AND 1)<>0 THEN ?f=?f OR %01000000
10360IF (F AND 2)<>0 THEN ?f=?f OR %00000001
10370IF (F AND 4)<>0 THEN ?f=?f OR %00000010
10380IF (F AND 8)<>0 THEN ?f=?f OR %10000000
10390
10400ENDIF
10410
10420WHEN 12:
10430
10440
10450OTHERWISE
10460REMPRINT"b% = ";b% : Q=GET
10470
10480ENDCASE
10490
10500UNTILb%=12
10510
10520IF hand%<>0 THEN SYS "XOS_Find",0,hand% : REM CLOSE#hand%
10530
10540SYS "OS_Byte",202,FX202
10550SYS "OS_Byte",247,FX247
10560
10570SYS "OS_Byte",106,1 : REM relink pointer, shape 1
10580
10590*Set Key$11 "<6502Em$Key11>"
10600*Set Key$12 "<6502Em$Key12>"
10610
10620SYS "6502_RemoveExitHandler"
10630
10640REM Restore sound channels
10650PROCsound_restore
10660
10670IF sprite<>0 THEN
10680sprite!0=80*1024+256
10690sprite!8=16
10700SYS "XOS_SpriteOp",256+9,sprite
10710SYS "XOS_SpriteOp",256+16,sprite,"BBCScreen",1,0,0,1279,1023
10720ENDIF
10730
10740SYS "Wimp_SetMode",wimp_mode
10750
10760*FX15,0
10770
10780IF dfssupport SYS "ImageDFS_LeavingEmulator"
10790
10800ENDPROC
10810
10820DEFFNmax(A%,B%)
10830IF A%>B% THEN =A% ELSE =B%
10840=0
10850DEFPROCpullpc
10860sp?3=sp?3+1
10870pc_store?2=?(memory+&100+sp?3)
10880sp?3=sp?3+1
10890pc_store?3=?(memory+&100+sp?3)
10900ENDPROC
10910
10920DEFPROCassemble
10930a=memory-&100+0
10940a=memory-&100+0
10950x=memory-&100+4
10960y=memory-&100+8
10970f=memory-&100+12
10980sp=memory-&100+16
10990pc_store=memory-&100+20
11000T1R=memory-&100+32
11010T2R=memory-&100+40
11020T3R=memory-&100+48
11030T4R=memory-&100+56
11040screenR=memory-&100+64
11050ifr=memory-&100+76
11060ier=memory-&100+77
11070ifr2=memory-&100+78
11080ier2=memory-&100+79
11090rom=memory-&100+96
11100
11110ROMSEL=memory-&100+92
11120romsel=memory-&100+96
11130Palette=memory-&100+164
11140ROMRAM=memory-&100+100
11150patch_on=memory-&100+176:!patch_on=0
11160lastmode=memory-&100+178
11170fe10=memory-&100+179
11180tape_handle=memory-&100+117
11190tape_count=memory-&100+180
11200ACCCON=memory-&100+172
11210Elatch=memory-&100+188
11220Eifr=memory-&100+189
11230Eier=memory-&100+190
11240ROMint=memory-&100+191
11250speed_loc=memory-&100+196
11260
11270P%=code
11280[OPT2
11290.Oa
11300EQUD 0
11310.Ox
11320EQUD 0
11330.Oy
11340EQUD 0
11350.Of
11360EQUD 0
11370.Osp
11380EQUD 0
11390.Opc_store
11400EQUD 0
11410.start_offset
11420EQUD 0
11430.trace
11440EQUD 0
11450.trace2
11460EQUD 0
11470.init_addr
11480EQUD 0
11490.crt_addr
11500EQUD 0
11510.T1_addr
11520EQUD 0
11530.ifr_addr
11540EQUD 0
11550.column_counter_addr
11560EQUD 0
11570.ROMSEL_addr
11580EQUD 0
11590.Palette_addr
11600EQUD 0
11610.speed_addr
11620EQUD 0
11630.elite_addr
11640EQUD 0
11650.opco_addr                    EQUD 0
11660.bcd_addr                     EQUD 0
11670.sheila_writetab_addr         EQUD 0
11680.sheila_readtab_addr          EQUD 0
11690.sound_vectors_addr           EQUD 0
11700.patch_addr                   EQUD 0
11710]
11720ENDPROC
11730
11740DEFPROCrts
11750sp?3=sp?3+1
11760pc_store?2=memory?(&100+sp?3)
11770sp?3=sp?3+1
11780pc_store?3=memory?(&100+sp?3)
11790!pc_store=!pc_store+(1 << 16)
11800REMPRINT~!pc_store:Q=GET
11810ENDPROC
11820!pc_store=&8004 << 16 : REM RTS
11830
11840REMpc_store?2=?(sp?3+&101+memory)
11850REMpc_store?3=?(sp?3+&102+memory)
11860REMsp?3=sp?3 + 2
11870ENDPROC
11880
11890DEFPROCosfile
11900REMPRINT"OSFILE "a?3:Q=GET
11910addr=memory+x?3+(y?3)*256
11920CASE a?3 OF
11930WHEN 0
11940a%=a?3
11950b$=FNaddpath($(FNaddr(addr!0 AND &FFFF)))
11960c%=addr!2
11970d%=addr!6
11980e%=FNaddr((addr!10 AND &FFFF))
11990f%=FNaddr((addr!14 AND &FFFF))
12000REMPRINT~a%,b$,~c%,~d%,e%,~f%
12010SYS "XOS_File",a%,b$,c%,d%,e%,f% TO A% ; F
12020IF (F AND 1)=0 THEN PROCrts ELSE PROCswi_error
12030WHEN 5
12040b$=$(FNaddr(addr!0 AND &FFFF))
12050SYS "XOS_File",13,FNadd_(b$),,,FN_path(b$) TO A%,,c%,d%,e%,f% ; F
12060IF (F AND 1)=1 THEN
12070PROCswi_error
12080ELSE
12090a?3=A%
12100addr!2=c%
12110addr!6=d%
12120addr!10=e%
12130addr!14=f%
12140PROCrts
12150ENDIF
12160WHEN 6
12170b$=$(FNaddr(addr!0 AND &FFFF))
12180SYS "XOS_File",6,FNaddpath(b$) TO A%,,c%,d%,e%,f% ; F
12190IF (F AND 1)=1 THEN
12200PROCswi_error
12210ELSE
12220a?3=A%
12230addr!2=c%
12240addr!6=d%
12250addr!10=e%
12260addr!14=f%
12270PROCrts
12280ENDIF
12290
12300WHEN 255
12310a%=a?3
12320b$=$(FNaddr(addr!0 AND &FFFF))
12330REMB%=(addr!0 AND &FFFF)+memory
12340c%=FNaddr(addr!2 AND &FFFF)
12350IF (addr!2 AND &FFFF0000)=&FFFE0000 THEN c%-=&13000
12360d%=addr?6
12370IF d%<>0 THEN SYS "XOS_File",13,FNadd_(b$),,,FN_path(b$) TO ,,c%: d%=0 : c%=FNaddr(c% AND &FFFF)
12380SYS "XOS_File",13,FNadd_(b$),,,FN_path(b$) TO ,,,,length%
12390IF c%+length%>memory+&8000 AND c%<memory+&8000 THEN
12400length%=memory+&7FFF-c%
12410SYS "XOS_Find",&4D,FNadd_(b$),FN_path(b$) TO A% ; F
12420IF (F AND 1)=0 THEN SYS "XOS_GBPB",4,A%,c%,length%:SYS "XOS_Find",0,A%:PROCrts ELSE PROCswi_error
12430ELSE
12440SYS "XOS_File",12,FNadd_(b$),c%,0,FN_path(b$) TO A%,,c%,d%,e%,f% ; F
12450a?3=A%
12460addr!2=c%
12470addr!6=d%
12480addr!10=e%
12490addr!14=f%
12500IF (F AND 1)=0 THEN PROCrts ELSE PROCswi_error
12510ENDIF
12520REMPRINT~a%,b$,~c%,~d%,~memory : Q=GET
12530REMSYS "XOS_File",12,FNadd_(b$),c%,0,FN_path(b$) TO A%,,c%,d%,e%,f% ; F
12540a?3=1
12550REMa?3=A%
12560REMaddr!2=c%
12570REMaddr!6=d%
12580REMaddr!10=e%
12590REMaddr!14=f%
12600REMIF (F AND 1)=0 THEN PROCrts ELSE PROCswi_error
12610REMPRINT~!pc_store : Q=GET
12620OTHERWISE
12630PRINT"OSFILE ";a?3 : Q=GET
12640ENDCASE
12650ENDPROC
12660
12670DEFPROCswi_error
12680LOCALA$
12690A$=""
12700FOR I%=0 TO 253
12710REMIF A%?I%=0 THEN I%=260 ELSE A$=A$+CHR$(A%?I%):PRINTA$
12720memory?(&102+I%)=A%?(I%+4)
12730IF A%?(I%+4)=0 THEN I%=253
12740NEXT
12750REMA$=A$+CHR$13
12760memory?&100=0
12770memory?&101=?A%
12780REM$(memory+&102)=A$
12790!pc_store=&100 << 16
12800ENDPROC
12810
12820DEFPROCbrk(A%,A$)
12830A$=A$+CHR$0
12840FOR I%=0 TO LENA$-1
12850memory?(&102+I%)=ASCMID$(A$,I%+1,1)
12860NEXT
12870memory?&100=0
12880memory?&101=A%
12890!pc_store=&100 << 16
12900ENDPROC
12910
12920DEFFNmin(A%,B%) IF A%<B% THEN =A% ELSE =B%
12930=0
12940
12950DEFPROCosgbpb
12960REMPRINT"OSGBPB";a?3 : Q=GET
12970addr%=memory+x?3+(y?3 << 8)
12980b%=?addr%
12990c%=addr%!1
13000d%=addr%!5
13010e%=addr%!9
13020
13030
13040IF a?3=9 THEN
13050
13060  SYS "XOS_GBPB",a?3,fs$+disc$+path$+subpath$,FNaddr(c% AND &FFFF),b%,e%,d%,0 TO A%,,,d%,e% ; F
13070  IF (F AND 1)=0 THEN
13080  ?addr%=d%
13090  addr%!9=e%
13100  IF (F AND %10)=0 THEN ?f=(?f AND %11111110) ELSE ?f=?f OR 1
13110  PROCrts
13120  ELSE
13130  PROCswi_error
13140  ENDIF
13150
13160ELSE
13170
13180  SYS "OS_FSControl",11,fs$ : REM set temporary filing system
13190  SYS "OS_FSControl",0,disc$+path$+subpath$ : REM change dir
13200  
13210  IF (a?3=3 OR a?3=4) AND c%<&8000 AND c%+e%>&8000 THEN e%=&8000-c% : REM stop overflow at &8000
13220  
13230  SYS "XOS_GBPB",a?3,b%,FNaddr(c% AND &FFFF),d%,e% TO A%,,c%,d%,e% ; F
13240
13250  SYS "OS_FSControl",19
13260
13270  IF (F AND 1)=0 THEN
13280  addr%!1=c%-memory
13290  addr%!5=d%
13300  addr%!9=e%
13310  IF (F AND %10)=0 THEN ?f=(?f AND %11111110) ELSE ?f=?f OR 1
13320  PROCrts
13330  ELSE
13340  PROCswi_error
13350  ENDIF
13360
13370ENDIF
13380ENDPROC
13390
13400DEFPROCosargs
13410CASE a?3 OF
13420WHEN 0 :
13430IF y?3<>0 THEN
13440SYS "XOS_Args",a?3,y?3 TO A%,,L% ; F
13450IF (F AND 1)=0 THEN memory!(x?3)=L%:PROCrts ELSE PROCswi_error
13460ELSE
13470a?3=4 : PROCrts
13480ENDIF
13490WHEN 1 :
13500SYS "XOS_Args",a?3,y?3,memory!(x?3) TO A% ; F
13510IF (F AND 1)=0 THEN PROCrts ELSE PROCswi_error
13520WHEN 2 :
13530SYS "XOS_Args",a?3,y?3 TO A%,,L% ; F
13540IF (F AND 1)=0 THEN memory!(x?3)=L%:PROCrts ELSE PROCswi_error
13550WHEN 255 :
13560SYS "XOS_Args",a?3,y?3 TO A% ; F
13570IF (F AND 1)=0 THEN PROCrts ELSE PROCswi_error
13580OTHERWISE : PROCrts
13590ENDCASE
13600ENDPROC
13610
13620DEFFNupper(A$)
13630LOCALI%,B$
13640FORI%=1 TO LENA$
13650IF MID$(A$,I%,1)>="a" AND MID$(A$,I%,1)<="z" THEN B$=B$+CHR$(ASCMID$(A$,I%,1)-32) ELSE B$=B$+MID$(A$,I%,1)
13660NEXT
13670=B$
13680
13690DEFPROCquit
13700ONERROR OFF
13710SYS "X6502_DeRegister" TO A%
13720IF A%=0 THEN SYS "XOS_Module",4,"6502Support"
13730SYS "Wimp_CloseDown"
13740END
13750ENDPROC
13760
13770DEFPROCsnap_save(F$)
13780IF INSTR(F$,".")=0 AND INSTR(F$,":")=0 AND LEFT$(F$,6)<>"<Wimp$" THEN SYS "Wimp_ReportError","    To save, drag the file icon to a directory viewer":ENDPROC
13790LOCALQ,I%
13800
13810length%=&10200-&8000
13820!buffer=xfer%:buffer!4=4
13830SYS "Wimp_GetIconState",,buffer
13840IF (buffer!24 AND 2^21)<>0 THEN length%=&10200-&4000
13850!buffer=xfer%:buffer!4=5
13860SYS "Wimp_GetIconState",,buffer
13870IF (buffer!24 AND 2^21)<>0 THEN length%=&10200
13880
13890Q=OPENOUTF$
13900BPUT#Q,"BBC Snapshot101"
13910SYS "OS_GBPB",2,Q,memory-&200,length%
13920CLOSE#Q
13930OSCLI"SetType "+F$+" "+STR$~filetype%
13940ENDPROC
13950
13960DEFPROCsnap_load(file$)
13970LOCAL file%,I%,ok%,machine$,M%,patch$
13980file%=OPENIN(file$)
13990type$=GET$#file%
14000IF EXT#file%=0 THEN type$="BBC Script"
14010IF LEFT$(type$,64)=STRING$(48,CHR$0)+"!BBC tape file!"+CHR$0 THEN type$="BBC Tapefile"
14020
14030CASE type$ OF
14040
14050WHEN "BBC Tapefile"
14060
14070CLOSE#file%
14080tapefile$=file$
14090
14100WHEN "BBC Script"
14110
14120LOCAL ERROR
14130
14140ON ERROR LOCAL : RESTORE ERROR : SYS "XWimp_ReportError","    Error in script: "+REPORT$,3,"6502Em" TO ,A%:IF A%=2 THEN PROCquit ELSE PROCpoll
14150
14160scroll_hack%=FALSE
14170
14180
14190  IF EOF#file% THEN
14200   A$=""
14210  ELSE
14220   A$=FNupper(GET$#file%)
14230  ENDIF
14240  REPEAT
14250    B$=LEFT$(A$,INSTR(A$," ")-1)
14260    ok%=TRUE
14270    CASE B$ OF
14280    WHEN "PALETTE"
14290      IF INSTR(A$,"ON") THEN Palette%=TRUE ELSE Palette%=FALSE
14300    WHEN "CURSOR"
14310      IF INSTR(A$,"ON") THEN Cursor%=TRUE ELSE Cursor%=FALSE
14320    WHEN "EXACTSPEED"
14330      IF INSTR(A$,"ON") THEN PROCnewspeed(100) ELSE PROCnewspeed(10000)
14340    WHEN "SOUND"
14350      IF INSTR(A$,"ON") THEN sound_on%=TRUE ELSE sound_on%=FALSE
14360    WHEN "DISABLETAPE"
14370      PROCdisableCFS
14380    WHEN "SCROLLHACK"
14390      scroll_hack%=TRUE
14400    WHEN "KEYMAP"
14410      K$=RIGHT$(A$,LENA$-INSTR(A$," "))
14420      PROCsetkeymap(K$)
14430    WHEN "PATCH"
14440      IF patches%<>0 THEN
14450        patch%=0
14460        FORI%=1 TO patches%
14470          patch$=RIGHT$(A$,LENpatch$(I%))
14480          PROCstrip(patch$)
14490          IF FNupper(patch$(I%))=patch$ THEN
14500            patch%=I%
14510            PROCloadpatch
14520          ENDIF
14530        NEXT
14540      ENDIF
14550    WHEN "SPEED"
14560      PROCnewspeed(VALRIGHT$(A$,LENA$-6))
14570    WHEN "INDEXFILE"
14580      T$=RIGHT$(A$,LENA$-10)
14590      T%=OPENIN(FNleaf(file$)+"."+T$)
14600      IF T%<>0 THEN CLOSE#T%:indexfile$=FNleaf(file$)+"."+T$:index%=0 ELSE ERROR 1,"Index File "+T$+" not found"
14610    WHEN "TAPEFILE"
14620      T$=RIGHT$(A$,LENA$-9)
14630      T%=OPENIN(FNleaf(file$)+"."+T$)
14640      IF T%<>0 THEN CLOSE#T%:tapefile$=FNleaf(file$)+"."+T$ ELSE ERROR 1,"Tape File "+T$+" not found"
14650    WHEN "LOADROM"
14660      L$=RIGHT$(A$,LENA$-8)
14670      IF INSTR(L$,":")=0 THEN
14680        PROCloadROM(FNleaf(file$)+"."+L$,1)
14690      ELSE
14700        PROCloadROM(L$,1)
14710      ENDIF
14720    WHEN "LOADRAM"
14730      L$=RIGHT$(A$,LENA$-8)
14740      IF INSTR(L$,":")=0 THEN
14750        PROCloadROM(FNleaf(file$)+"."+L$,0)
14760      ELSE
14770        PROCloadROM(L$,1)
14780      ENDIF
14790    WHEN "KILLROM"
14800      L$=RIGHT$(A$,LENA$-8)
14810      FOR I%=0 TO 15
14820      IF LEFT$(FNupper(FNROMname(I%)),LENL$)=L$ THEN PROCkillROM(I%)
14830      NEXT
14840    WHEN "MACHINE"
14850      machine$=RIGHT$(A$,LENA$-8)
14860      PROCstrip(machine$)
14870      CASE machine$ OF
14880      WHEN "BBC","BBCB","BBC B"
14890        M%=0
14900      WHEN "MASTER","MASTER128","MASTER 128"
14910        M%=1
14920      WHEN "OS3.5","OS 3.5","OS3,5","OS 3.5"
14930        M%=2
14940      WHEN "COMPACT","MASTER COMPACT"
14950        M%=3
14960      WHEN "ELECTRON","ELK"
14970        M%=4
14980      OTHERWISE
14990        CLOSE#file%:ERROR 1,"Unknown machine '"+machine$+"'"
15000      ENDCASE
15010      IF M%<>machine% THEN machine%=M%:PROCnewmachine
15020    OTHERWISE
15030      ok%=FALSE
15040    ENDCASE
15050    IF ok% THEN
15060      IF EOF#file% THEN
15070        A$=""
15080      ELSE
15090        A$=FNupper(GET$#file%)
15100      ENDIF
15110    ENDIF
15120  UNTIL FNi("PATCH") AND FNi("PALETTE") AND FNi("MACHINE") AND FNi("INDEXFILE") AND FNi("TAPEFILE") AND FNi("KEYMAP") AND FNi("CURSOR") AND FNi("EXACTSPEED") AND FNi("DISABLETAPE") AND FNi("LOADROM") AND FNi("LOADRAM") AND FNi("KILLROM") AND FNi("SOUND") AND FNi("SCROLLHACK") AND FNi("SPEED")
15130
15140  CLOSE#file%
15150  IF A$="" THEN
15160    A$=FNleaf(file$)
15170    PROCfile_load(A$+"."+RIGHT$(A$,LENA$-LENFNleaf(A$)-2))
15180  ELSE
15190    IF LEFT$(A$,5)="CHAIN" OR LEFT$(A$,1)="*" OR INSTR(A$," ")>0 THEN
15200      osrdch$=A$+CHR$13
15210      PROCreset(2)
15220      osrdch_count%=0
15230      OSRDCH_loc_tmp=OSRDCH_loc
15240      OSRDCH_loc=3
15250      PROCnewpath(FNleaf(file$)+".JUNK")
15260    ELSE
15270      PROCfile_load(FNleaf(file$)+"."+A$)
15280    ENDIF
15290  ENDIF
15300WHEN "BBC Snapshot   " :
15310  IF EXT#file%=&10110 THEN
15320    SYS "OS_GBPB",4,file%,memory-&100,&10100
15330    PTR#file%=&10110-&200
15340    SYS "OS_GBPB",4,file%,sheila,&100
15350  ELSE
15360    SYS "OS_GBPB",4,file%,memory-&100,EXT#file%-&110
15370    SYS "OS_GBPB",4,file%,sheila,&100
15380  ENDIF
15390  CLOSE#file%
15400WHEN "BBC Snapshot101" :
15410  SYS "OS_GBPB",4,file%,memory-&200,EXT#file%-&10
15420  CLOSE#file%
15430OTHERWISE : REM BBC ROM
15440  CLOSE#file%
15450  PROCloadROM(A$,1)
15460ENDCASE
15470ENDPROC
15480
15490DEFFNi(B$)
15500IF INSTR(A$,B$)=0 THEN =TRUE ELSE =FALSE
15510=0
15520DEFPROCfile_load(F$)
15530imagefile%=FALSE
15540PROCnewpath(F$)
15550REMOSCLI"DIR "+FNleaf(F$)
15560FORI%=1 TO LENF$
15570IF MID$(F$,LENF$-I%,1)="." OR MID$(F$,LENF$-I%,1)=":" THEN L%=I%:I%=LENF$
15580NEXT
15590A$=RIGHT$(F$,L%)
15600SYS "OS_File",5,F$ TO object%,,load2%,exec2%,length%
15610load%=load2% AND &FFFF
15620exec%=exec2% AND &FFFF
15630IF object%=0 THEN exec%=&FFFF : REM DFSImage but no !Boot
15640osrdch$="*/"+A$+CHR$13 : REM default
15650IF exec%=&801F OR exec%=&8023 OR exec%=&802B OR exec%=&80E7 THEN osrdch$="PAGE=&"+STR$~load%+CHR$13+"CHAIN"+CHR$34+A$+CHR$34+CHR$13
15660IF (load2% AND &FFF00)=&FFB00 THEN osrdch$="CHAIN"+CHR$34+A$+CHR$34+CHR$13
15670IF exec%=&FFFF OR (load2% AND &FFF00)=&FFE00 OR (load2%=0 AND exec2%=0) THEN osrdch$="*EXEC "+A$+CHR$13:IF machine%=0 THEN osrdch$="PAGE=&1900"+CHR$13+"NEW"+CHR$13+osrdch$
15680PROCreset(2)
15690osrdch_count%=0
15700OSRDCH_loc_tmp=OSRDCH_loc
15710OSRDCH_loc=3
15720ENDPROC
15730
15740DEFPROCosrdch
15750osrdch_count%+=1
15760a?3=ASCMID$(osrdch$,osrdch_count%,1)
15770PROCrts
15780IF osrdch_count%=LENosrdch$ THEN OSRDCH_loc=OSRDCH_loc_tmp : PROCpoke(&FFE0,OSRDCH_loc)
15790ENDPROC
15800
15810DEFFNbinary(B%)
15820LOCALA$,I%
15830FORI%=0 TO 7
15840IF (B% AND 2^I%)=0 THEN A$="0"+A$ ELSE A$="1"+A$
15850NEXT
15860=A$
15870
15880DEFPROCnewpath(F$)
15890SYS "OS_GSTrans",F$,buffer,255 TO ,F$
15900fs$=LEFT$(F$,INSTR(F$,":"))
15910F$=RIGHT$(F$,LENF$-LENfs$)
15920
15930IF LEFT$(F$,1)=":" THEN
15940disc$=LEFT$(F$,INSTR(F$,"."))
15950F$=RIGHT$(F$,LENF$-LENdisc$)
15960ELSE
15970disc$=""
15980ENDIF
15990
16000path$=FNleaf(F$)
16010subpath$=""
16020IF MID$(path$,LENpath$-1,1)="." THEN subpath$=RIGHT$(path$,2):path$=LEFT$(path$,LENpath$-2)
16030ENDPROC
16040
16050DEFFNnumeric(A$)
16060IF A$>="0" AND A$<="9" THEN =TRUE ELSE =FALSE
16070=0
16080DEFFNadd_(F$)
16090IF LEFT$(F$,1)=":" AND FNnumeric(MID$(F$,2,1)) AND MID$(F$,3,1)="." THEN F$=RIGHT$(F$,LENF$-3)
16100IF INSTR(F$,":") THEN =F$
16110IF LEFT$(F$,1)=CHR$34 AND RIGHT$(F$,1)=CHR$34 THEN F$=MID$(F$,2,LENF$-2) : REM Remove quotes
16120
16130IF (F$="" OR INSTR(F$,"|")) AND indexfile$<>"" THEN
16140Q=OPENINindexfile$
16150PTR#Q=index%
16160F$=GET$#Q
16170newindex%=PTR#Q
16180IF newindex%=EXT#Q THEN newindex%=0
16190CLOSE#Q
16200ENDIF
16210
16220IF MID$(F$,2,1)="." THEN
16230IF LEFT$(F$,1)="$" THEN =RIGHT$(F$,LENF$-2)
16240=F$
16250ELSE
16260=F$
16270ENDIF
16280=""
16290
16300DEFFN_path(F$)
16310IF LEFT$(F$,1)=":" AND FNnumeric(MID$(F$,2,1)) AND MID$(F$,3,1)="." THEN F$=RIGHT$(F$,LENF$-3)
16320IF INSTR(F$,":") THEN =""
16330IF MID$(F$,2,1)="." THEN
16340=fs$+disc$+path$+"."
16350ELSE
16360=fs$+disc$+path$+subpath$+"."
16370ENDIF
16380=""
16390
16400DEFFNaddpath(F$)
16410IF LEFT$(F$,1)=":" AND FNnumeric(MID$(F$,2,1)) AND MID$(F$,3,1)="." THEN F$=RIGHT$(F$,LENF$-3)
16420IF INSTR(F$,":") THEN =F$
16430IF LEFT$(F$,1)=CHR$34 AND RIGHT$(F$,1)=CHR$34 THEN F$=MID$(F$,2,LENF$-2) : REM Remove quotes
16440IF MID$(F$,2,1)="." THEN
16450IF LEFT$(F$,1)="$" THEN =path$+"."+RIGHT$(F$,LENF$-2)
16460=fs$+disc$+path$+"."+F$
16470ELSE
16480=fs$+disc$+path$+subpath$+"."+F$
16490ENDIF
16500=""
16510
16520DEFFNstrip(F$)
16530LOCALI%
16540REPEATI%+=1:UNTILMID$(F$,I%,1)<>"*" AND MID$(F$,I%,1)<>" "
16550=RIGHT$(F$,LENF$-I%+1)
16560
16570DEFPROCstrip(RETURN s$)
16580WHILE LEFT$(s$,1)=" "
16590 s$=MID$(s$,2)
16600ENDWHILE
16610WHILE RIGHT$(s$,1)=" "
16620 s$=LEFT$(s$,LEN s$-1)
16630ENDWHILE
16640ENDPROC
16650
16660DEFPROCstrip2(RETURN s$)
16670WHILE LEFT$(s$,1)=" " OR LEFT$(s$,1)="*"
16680 s$=MID$(s$,2)
16690ENDWHILE
16700WHILE RIGHT$(s$,1)=" " OR RIGHT$(s$,1)="*"
16710 s$=LEFT$(s$,LEN s$-1)
16720ENDWHILE
16730ENDPROC
16740
16750DEFPROCdir(D$)
16760FS$=fs$:DISC$=disc$:PATH$=path$:SUBPATH$=subpath$
16770REMPRINTD$:Q=GET
16780LOCALI%
16790REPEATI%+=1:UNTILMID$(D$,I%,1)<>" "
16800D$=RIGHT$(D$,LEND$-I%+1)
16810IF INSTR(D$," ") THEN
16820D$=LEFT$(D$,INSTR(D$," ")-1)
16830ELSE
16840IF LEND$=4 AND LEFT$(FNupper(D$),3)="DIR" THEN D$=RIGHT$(D$,1)
16850ENDIF
16860
16870IF D$="^" THEN
16880IF subpath$<>"" THEN subpath$="":PROCrts:ENDPROC
16890IF INSTR(path$,".")=0 THEN path$="$":PROCrts:ENDPROC
16900I%=LENpath$
16910REPEATI%-=1:UNTILMID$(path$,I%,1)="."
16920path$=LEFT$(path$,I%-1)
16930PROCrts:ENDPROC
16940ENDIF
16950
16960IF D$="$" OR LEND$=0 THEN subpath$="":PROCrts:ENDPROC
16970IF LEND$=1 THEN
16980SYS "XOS_File",13,D$,,,fs$+disc$+path$+"." TO A% ; F
16990IF (F AND 1)<>0 THEN PROCswi_error:ENDPROC
17000IF (A% AND 2)=0 AND LEND$=1 THEN subpath$="":PROCrts:ENDPROC : REM no error returned if you try to change to a non-existing single letter directory
17010IF (A% AND 2)=0 THEN PROCbrk(214,"Directory '"+D$+"' not found") ELSE subpath$="."+D$:PROCrts
17020ENDPROC
17030ENDIF
17040
17050IF INSTR(D$,":")>1 THEN
17060IF RIGHT$(D$,1)<>":" THEN SYS "XOS_File",17,D$ TO A% ; F:IF (F AND 1)<>0 THEN PROCswi_error:ENDPROC
17070SYS "OS_FSControl",11,D$ TO ,E$,E%
17080IF E%<>-1 THEN SYS "OS_FSControl",19:fs$=LEFT$(D$,LEND$-LENE$):D$=E$ ELSE PROCbrk(248,"No such filing system"):ENDPROC
17090path$=""
17100subpath$=""
17110disc$=""
17120IF LEFT$(D$,1)<>":" THEN path$="$"
17130ENDIF
17140
17150IF LEFT$(D$,1)=":" THEN
17160I%=0:disc$=""
17170REPEAT I%+=1
17180disc$=disc$+MID$(D$,I%,1)
17190UNTIL MID$(D$,I%+1,1)="." OR I%=LEND$
17200IF I%=LEND$ THEN D$="" ELSE D$=RIGHT$(D$,LEND$-LENdisc$-1)
17210path$="":subpath$=""
17220ENDIF
17230
17240IF LEFT$(D$,1)="$" AND LEND$>2 THEN path$="$":subpath$="":D$=RIGHT$(D$,LEND$-2)
17250
17260IF disc$<>"" AND RIGHT$(disc$,1)<>"." AND path$<>"" THEN disc$=disc$+"."
17270SYS "XOS_File",13,D$,,,fs$+disc$+path$+subpath$+"." TO A% ; F
17280IF disc$<>"" AND RIGHT$(disc$,1)<>"." THEN disc$=disc$+"."
17290IF (F AND 1)<>0 THEN PROCrestoreCSD:PROCswi_error:ENDPROC
17300IF (A% AND 2)=0 THEN
17310PROCrestoreCSD
17320PROCbrk(214,"Directory '"+D$+"' not found")
17330ELSE
17340IF D$<>"" THEN
17350IF path$<>"" THEN path$=path$+subpath$+"."+D$:subpath$="" ELSE path$=D$
17360ENDIF
17370PROCrts
17380ENDIF
17390IF path$="" THEN path$="$"
17400ENDPROC
17410
17420DEFPROCback
17430SWAP fs$,FS$
17440SWAP disc$,DISC$
17450SWAP path$,PATH$
17460SWAP subpath$,SUBPATH$
17470ENDPROC
17480
17490DEFPROCrestoreCSD
17500fs$=FS$:disc$=DISC$:path$=PATH$:subpath$=SUBPATH$
17510ENDPROC
17520
17530DEFPROCosfsc
17540REMPRINT"OSFSC ";a?3:Q=GET
17550CASE a?3 OF
17560  WHEN 1   : REMx?3=(EOF#x?3) AND &FF
17570             SYS "XOS_Args",5,x?3 TO A%,,x?3 ; F
17580             IF (F AND 1)=0 THEN PROCrts ELSE PROCswi_error
17590             IF x?3<>0 THEN x?3=&FF
17600  WHEN 3   : addr=FNaddr(x?3+((y?3) << 8))
17610             b$=FNstrip($addr)
17620             SYS "XOS_Find",&4D,FNadd_(b$),FN_path(b$) TO Q ; F
17630             A%=Q
17640
17650             IF Q=0 OR (F AND 1)<>0 THEN
17660             IF LEFT$(FNupper(b$),4)="DIR " OR (LEFT$(FNupper(b$),3)="DIR" AND LENb$=4) THEN
17670             PROCdir(RIGHT$(b$,LENb$-4))
17680             ELSE
17690             IF Oscli% THEN
17700             SYS "XOS_CLI",b$ TO A% ; F
17710             IF (F AND 1)=0 THEN PROCrts ELSE PROCswi_error
17720             ELSE
17730             PROCbrk(254,"Bad Command")
17740             ENDIF
17750             ENDIF
17760             ELSE
17770             CLOSE#Q
17780             b$=FNaddpath(b$)
17790             SYS "OS_File",5,b$ TO ,,c%,d% : c%=FNaddr(c% AND &FFFF)
17800             SYS "OS_File",255,b$,c%,0
17810             !pc_store=d% << 16
17820             ENDIF
17830  WHEN 2,4 : addr=FNaddr(x?3+((y?3) << 8))
17840             b$=$addr
17850             REMb$=FNaddpath(b$)
17860             SYS "XOS_File",13,FNadd_(b$),,,FN_path(b$) TO A%,,c%,d%,length% ; f% : c%=FNaddr(c% AND &FFFF)
17870             IF c%+length%>memory+&8000 AND c%<memory+&8000 THEN length%=memory+&8000-c%
17880             SYS "XOS_Find",&4D,FNadd_(b$),FN_path(b$) TO A% ; f%
17890             IF (f% AND 1)=0 THEN SYS "XOS_GBPB",4,A%,c%,length%:SYS "XOS_Find",0,A%
17900             REMIF (f% AND 1)=0 THEN SYS "XOS_File",12,FNadd_(b$),c%,0,FN_path(b$) TO A% ; f%
17910             IF (f% AND 1)=0 THEN !pc_store=d% << 16 ELSE PROCswi_error
17920  WHEN 5   : PROCrts:REMOSCLI"CAT":Q=GET:PROCrts
17930  WHEN 0,6,8 : PROCrts
17940  WHEN 9,10,11 : PROCrts : REM *EX, *INFO, *RUN (LibFS)
17950  OTHERWISE  PRINT"OSFSC ";a?3 : Q=GET
17960ENDCASE
17970ENDPROC
17980
17990DEFPROCosfind
18000addr=FNaddr(x?3+(y?3)*256)
18010IF a?3=0 THEN
18020SYS "XOS_Find",0,y?3 TO A% ; F
18030A%=0:F=0 : REM fix for Master 128 !?!?
18040ELSE
18050SYS "XOS_Find",(a?3) OR 1,FNadd_($addr),FN_path($addr) TO A% ; F
18060ENDIF
18070IF (F AND 1)=0 THEN a?3=A% : PROCrts ELSE PROCswi_error
18080ENDPROC
18090
18100DEFPROCosbget
18110 SYS "XOS_BGet",a?3,y?3 TO A% ; F%
18120 IF (F AND 1)=0 THEN
18130 a?3=A%
18140 ?f=?f AND %11111110
18150 IF (F% AND 2)<>0 THEN ?f+=1
18160 PROCrts
18170 ELSE
18180 PROCswi_error
18190 ENDIF
18200ENDPROC
18210
18220DEFPROCosbput
18230 SYS "XOS_BPut",a?3,y?3 TO A% ; F
18240 IF (F AND 1)=0 THEN PROCrts ELSE PROCswi_error
18250ENDPROC
18260
18270DEFPROCsprite_save(F$)
18280IF INSTR(F$,".")=0 AND INSTR(F$,":")=0 AND LEFT$(F$,6)<>"<Wimp$" THEN SYS "Wimp_ReportError","    To save, drag the file icon to a directory viewer":ENDPROC
18290SYS "OS_SpriteOp",256+12,sprite,F$
18300ENDPROC
18310
18320DEFFNkeymap(A$)
18330LOCALI%
18340FORI%=1 TO keymaps%
18350IF FNupper(keymap$(I%))=FNupper(A$) THEN =I%
18360NEXT
18370=0
18380
18390DEFPROCsetkeymap(A$)
18400LOCALI%
18410KeyMap$="Default"
18420IF FNupper(A$)="RISCPC" OR FNupper(A$)="ARCHIMEDES" THEN
18430A$="Default"
18440ENDIF
18450OSCLI "Set 6502Em$Keymap "+A$
18460PROCpokeicontext(12,A$)
18470FORI%=1 TO keymaps%
18480IF FNupper(keymap$(I%))=FNupper(A$) THEN KeyMap$=A$:keymap%=I%:I%=1000
18490NEXT
18491PROCreadkeys("<6502Em$Dir>.Keymaps."+KeyMap$)
18500ENDPROC
18510
18520DEFPROCreadkeymaps
18530LOCAL offset%,N%
18540keymap%=0
18550keymaps%=0
18560REPEAT
18570SYS "OS_GBPB",9,"<6502Em$Dir>.Keymaps",q%,100,offset%,&100,0 TO ,,,N%,offset%
18580keymaps%+=N%
18590UNTIL offset%=-1
18600IF keymaps%=0 THEN keysmenu%=-1:ENDPROC
18610DIM keymap$(keymaps%), keysmenu% 32+24*keymaps%
18620offset%=0
18630FOR N%=1 TO keymaps%
18640SYS "OS_GBPB",9,"<6502Em$Dir>.Keymaps",q%,1,offset%,&100,0 TO ,,,,offset%
18650keymap$(N%)=FNstring(q%)
18660NEXT
18670ENDPROC
18680
18690DEFPROCreadspeeds
18700LOCALI%
18710Q=OPENIN"<6502Em$Res>.SpeedMenu"
18720speeds%=-1
18730REPEATspeeds%+=1
18740A$=GET$#Q
18750UNTILEOF#Q OR A$=""
18760IF A$="" THEN speeds%-=1
18770PTR#Q=0
18780DIM speed$(speeds%), speedmenu% 32+24*(speeds%+3)
18790FORI%=0 TO speeds%
18800speed$(I%)=GET$#Q
18810NEXT
18820CLOSE#Q
18830ENDPROC
18840
18850
18860DEFPROCreadpatches
18870LOCAL offset%,N%
18880patch%=0
18890patches%=0
18900REPEAT
18910SYS "OS_GBPB",9,"<6502Em$Dir>.Patches",q%,100,offset%,&100,0 TO ,,,N%,offset%
18920patches%+=N%
18930UNTIL offset%=-1
18940IF patches%=0 THEN patchmenu%=-1:ENDPROC
18950DIM patch$(patches%), patchmenu% 32+24*(patches%+2)
18960offset%=0
18970FOR N%=1 TO patches%
18980SYS "OS_GBPB",9,"<6502Em$Dir>.Patches",q%,1,offset%,&100,0 TO ,,,,offset%
18990patch$(N%)=FNstring(q%)
19000NEXT
19010ENDPROC
19020
19030DEFFNstring(A%)
19040LOCALA$,I%
19050REPEAT
19060A$=A$+CHR$(A%?I%)
19070I%+=1
19080UNTILA%?I%=0
19090=A$
19100
19110DEFPROCloadpatch
19120OSCLI "Load <6502Em$Dir>.Patches."+patch$(patch%)+" "+STR$~(code+!patch_addr)
19130?patch_on=?patch_on OR 1
19140PROCpokeicontext(14,patch$(patch%))
19150ENDPROC
19160
19170DEFFNosword14_1(A%)
19180?buffer=1
19190SYS "OS_Word",14,buffer
19200=buffer?A%
19210
19220DEFPROCreadCMOS
19230CASE x?3 AND 63 OF
19240WHEN 0    : y?3=FNosword14_1(6)
19250WHEN 1    : y?3=1
19260WHEN 2    : y?3=FNosword14_1(5)
19270WHEN 3    : y?3=1
19280WHEN 4    : y?3=FNosword14_1(4)
19290WHEN 5    : y?3=1
19300WHEN 6    : y?3=FNosword14_1(3)
19310WHEN 7    : y?3=FNosword14_1(2)
19320WHEN 8    : y?3=FNosword14_1(1)
19330WHEN 9    : y?3=FNosword14_1(0)
19340WHEN 10   : y?3=%00100000
19350WHEN 11   : y?3=%00000010
19360WHEN 12   : y?3=0
19370WHEN 13   : y?3=0
19380OTHERWISE : y?3=cmos%(x?3 AND 63)
19390
19400ENDCASE
19410
19420a?3=y?3
19430
19440REMPRINTTAB(0,0);x?3 AND 63;" ";y?3;"  ":Q=GET
19450PROCrts
19460ENDPROC
19470
19480DEFPROCreadEEPROM
19490y?3=eeprom%(x?3)
19500a?3=y?3
19510PROCrts
19520ENDPROC
19530
19540DEFPROCwriteCMOS
19550cmos%(x?3 AND 63)=y?3
19560PROCrts
19570IF (x?3 AND 63)>13 THEN
19580Q=OPENUP "<6502Em$Res>.CMOS"
19590PTR#Q=x?3 AND 63
19600BPUT#Q,y?3
19610CLOSE#Q
19620ENDIF
19630ENDPROC
19640
19650DEFPROCwriteEEPROM
19660eeprom%(x?3)=y?3
19670PROCrts
19680Q=OPENUP "<6502Em$Res>.EEPROM"
19690PTR#Q=x?3
19700BPUT#Q,y?3
19710CLOSE#Q
19720ENDPROC
19730
19740DEFPROCloadCMOS
19750LOCAL Q,I%
19760Q=OPENIN "<6502Em$Res>.CMOS"
19770FOR I%=0 TO 63
19780cmos%(I%)=BGET#Q
19790NEXT
19800CLOSE#Q
19810ENDPROC
19820
19830DEFPROCloadEEPROM
19840LOCAL Q,I%
19850Q=OPENIN "<6502Em$Res>.EEPROM"
19860FOR I%=0 TO 255
19870eeprom%(I%)=BGET#Q
19880NEXT
19890CLOSE#Q
19900ENDPROC
19910
19920DEFPROCloadcode(C$)
19930OSCLI"LOAD <6502Em$Dir>."+C$+" "+STR$~code
19940CALL code+!init_addr
19950PROCsound_reinit
19960IF patch%<>0 THEN PROCloadpatch
19970ENDPROC
19980
19990DEFPROCmaster
20000PROCloadcode("CodeM")
20010OSCLI"LOAD <6502Em$Dir>.ROMS.M128.OS3,2 "+STR$~(memory+&C000)
20020OSCLI"LOAD <6502Em$Dir>.ROMS.M128.OS3,2 "+STR$~(roms+romsize%*16)
20030OSCLI"LOAD <6502Em$Res>.SHEILA "+STR$~sheila
20040socket%=15
20050PROCloadROM("M128.Terminal",1)
20060?(roms+romsize%*15+&18B7)=3
20070?(roms+romsize%*15+&18B8)=&80 : REM intercept .readCMOS
20080?(roms+romsize%*15+&18E4)=3
20090?(roms+romsize%*15+&18E5)=&81 : REM intercept .writeCMOS
20100PROCloadROM("M128.View",1)
20110PROCloadROM("VDFS",1)
20120REMPROCloadROM("M128.ADFS",1)
20130PROCloadROM("M128.BASICIV84",1)
20140PROCloadROM("M128.Edit1,00",1)
20150PROCloadROM("M128.ViewSheet",1)
20160PROCloadROM("M128.DFS2,24",1)
20170REM?(roms+&4000*9+&1163)=3
20180REM?(roms+&4000*9+&1164)=&82 : REM intercept OSWORD 7F?
20190REMPROCloadROM("VDFS",1)
20200PROCSRRAM
20210PROCSRRAM
20220PROCSRRAM
20230PROCSRRAM
20240PROCSRRAM
20250ENDPROC
20260
20270DEFPROCmaster35
20280PROCloadcode("CodeM")
20290OSCLI"LOAD <6502Em$Dir>.ROMS.M128.OS3,5 "+STR$~(memory+&C000)
20300OSCLI"LOAD <6502Em$Dir>.ROMS.M128.OS3,5 "+STR$~(roms+romsize%*16)
20310OSCLI"LOAD <6502Em$Res>.SHEILA "+STR$~sheila
20320socket%=15
20330PROCloadROM("M128.Terminal35",1)
20340?(roms+romsize%*15+&16A3)=3
20350?(roms+romsize%*15+&16A4)=&80 : REM intercept .readCMOS
20360?(roms+romsize%*15+&16D0)=3
20370?(roms+romsize%*15+&16D1)=&81 : REM intercept .writeCMOS
20380PROCloadROM("M128.ViewB3,3",1)
20390PROCloadROM("VDFS",1)
20400REMPROCloadROM("M128.ADFS2,03",1)
20410PROCloadROM("M128.BASIC4r32",1)
20420PROCloadROM("M128.Edit1,50r",1)
20430PROCloadROM("M128.ViewSh1,01",1)
20440PROCloadROM("M128.DFS2,45",1)
20450REM?(roms+&4000*9+&1163)=3
20460REM?(roms+&4000*9+&1164)=&82 : REM intercept OSWORD 7F?
20470REMPROCloadROM("VDFS",1)
20480PROCSRRAM
20490PROCSRRAM
20500PROCSRRAM
20510PROCSRRAM
20520PROCSRRAM
20530ENDPROC
20540
20550DEFPROCcompact
20560PROCloadcode("CodeM")
20570OSCLI"LOAD <6502Em$Dir>.ROMS.Compact.OS5,1 "+STR$~(memory+&C000)
20580OSCLI"LOAD <6502Em$Dir>.ROMS.Compact.OS5,1 "+STR$~(roms+&4000*16)
20590OSCLI"LOAD <6502Em$Res>.SHEILA "+STR$~sheila
20600socket%=15
20610PROCloadROM("Compact.Utils",1)
20620?(roms+romsize%*15+&9E3A-&8000)=3
20630?(roms+romsize%*15+&9E3B-&8000)=&82 : REM intercept .readCMOS
20640?(roms+romsize%*15+&9F3A-&8000)=3
20650?(roms+romsize%*15+&9F3B-&8000)=&83 : REM intercept .writeCMOS
20660PROCloadROM("Compact.BASICIV86",1)
20670REMPROCloadROM("M128.ADFS",1)
20680PROCloadROM("VDFS",1)
20690socket%=7
20700PROCSRRAM
20710PROCSRRAM
20720PROCSRRAM
20730PROCSRRAM
20740ENDPROC
20750
20760DEFPROCelectron
20770PROCloadcode("CodeE")
20780OSCLI"LOAD <6502Em$Dir>.ROMS.ELECTRON "+STR$~(memory+&C000)
20790REMmemory?&F0E8=3 : REM OSFSC
20800REMmemory?&FFCE=3 : REM OSFIND
20810REMmemory?&FFD1=3 : REM OSGBPB
20820REMmemory?&FFD4=3 : REM OSBPUT
20830REMmemory?&FFD7=3 : REM OSBGET
20840REMmemory?&FFDA=3 : REM OSARGS
20850REMmemory?&FFDD=3 : REM OSFILE
20860
20870socket%=15
20880PROCloadROM("BASICII",1)
20890PROCloadROM("VDFS",1)
20900ENDPROC
20910
20920DEFPROCBBCB
20930PROCloadcode("Code")
20940?ACCCON=0
20950OSCLI"LOAD <6502Em$Dir>.ROMS.OS1,2 "+STR$~(memory+&C000)
20960REMOSCLI"LOAD <6502Em$Dir>.ROMS.OS1,2 "+STR$~(roms+&4000*16)
20970OSCLI"LOAD <6502Em$Res>.SHEILA "+STR$~sheila
20980REMmemory?&F1B1=3 : REM OSFSC
20990REMmemory?&FFCE=3 : REM OSFIND
21000REMmemory?&FFD1=3 : REM OSGBPB
21010REMmemory?&FFD4=3 : REM OSBPUT
21020REMmemory?&FFD7=3 : REM OSBGET
21030REMmemory?&FFDA=3 : REM OSARGS
21040REMmemory?&FFDD=3 : REM OSFILE
21050
21060socket%=15
21070PROCloadROM("BASICII",1)
21080PROCloadROM("VDFS",1)
21090PROCSRRAM
21100ENDPROC
21110
21120DEFPROCnewmachine
21130PROCclearmem(roms,roms+16*romsize%)
21140PROCclearmem(memory-&200,memory+64*1024)
21150PROCinitROMs
21160
21170IF machine%>4 THEN machine%=0
21180REMIF Machine%(machine%)=FALSE THEN machine%=default_machine%
21190
21200PROCpokeicontext(10,Machine$(machine%))
21210
21220CASE machine% OF
21230
21240WHEN 1 :
21250IF Machine%(1)=0 THEN machine%+=1:PROCnewmachine:ENDPROC
21260PROCmaster
21270
21280WHEN 2 :
21290IF Machine%(2)=0 THEN machine%+=1:PROCnewmachine:ENDPROC
21300PROCmaster35
21310
21320WHEN 3 :
21330IF Machine%(3)=0 THEN machine%+=1:PROCnewmachine:ENDPROC
21340PROCcompact
21350
21360WHEN 4 :
21370PROCelectron
21380
21390OTHERWISE : PROCBBCB
21400ENDCASE
21410REMPROCreset(1)
21420REMOSRDCH_loc=FNpeek(&FFE0)
21430OSRDCH_loc=memory?&FFE0
21440
21450PROCreinstall(MachineSprite$(machine%))
21460
21470PROCreset(1)
21480
21490ENDPROC
21500
21510DEFPROCdefault_options
21520tapefile$="<6502Em$Dir>.^.Tape-In"
21530Palette%=TRUE
21540OSRDCH%=TRUE
21550ROMSEL%=TRUE
21560Cursor%=FALSE
21570Oscli%=FALSE
21580machine%=default_machine%
21590sound_on%=TRUE
21600scroll_hack%=FALSE
21610file_xxx=FALSE
21620volume%=127
21630PROCsetkeymap("Default")
21640PROCnewspeed(100)
21650ENDPROC
21660
21670DEFPROCsave_options
21680Q=OPENOUT"<6502Em$Res>.Options"
21690PRINT#Q,Palette%
21700PRINT#Q,OSRDCH%
21710PRINT#Q,ROMSEL%
21720PRINT#Q,Cursor%
21730PRINT#Q,Oscli%
21740PRINT#Q,0
21750PRINT#Q,machine%
21760PRINT#Q,sound_on%
21770PRINT#Q,file_xxx
21780PRINT#Q,volume%
21790PRINT#Q,KeyMap$
21800PRINT#Q,speed
21810CLOSE#Q
21820ENDPROC
21830
21840DEFPROCload_options
21850tapefile$="<6502Em$Dir>.^.Tape-In"
21860Q=OPENIN"<6502Em$Res>.Options"
21870IF Q=0 THEN PROCdefault_options : ENDPROC
21880INPUT#Q,Palette%
21890INPUT#Q,OSRDCH%
21900INPUT#Q,ROMSEL%
21910INPUT#Q,Cursor%
21920INPUT#Q,Oscli%
21930INPUT#Q,exact%
21940INPUT#Q,machine%
21950INPUT#Q,sound_on%
21960scroll_hack%=FALSE
21970INPUT#Q,file_xxx
21980INPUT#Q,volume%
21990INPUT#Q,K$ : PROCsetkeymap(K$)
22000INPUT#Q,speed
22010CLOSE#Q
22020ENDPROC
22030
22040DEFPROCswapmem(A%,B%,C%)
22050P%=buffer
22060[OPT2
22070.swap
22080SUBS R2,R2,#4
22090LDR R3,[R0,R2]
22100LDR R4,[R1,R2]
22110STR R3,[R1,R2]
22120STR R4,[R0,R2]
22130BNE swap
22140MOV PC,R14
22150]
22160CALL swap
22170ENDPROC
22180
22190DEFPROCclearmem(S%,E%)
22200P%=buffer
22210[OPT2
22220EQUD S% ; memory
22230EQUD E% ; memory+&8000
22240.clear
22250MOV R0,#0
22260LDR R1,buffer
22270LDR R2,buffer+4
22280.loop
22290STR R0,[R1],#4
22300CMP R1,R2
22310BNE loop
22320MOV PC,R14
22330]
22340CALL clear
22350ENDPROC
22360
22370DEFPROCosbyte2
22380PROCrts
22390ENDPROC
22400
22410DEFPROCosword2
22420LOCALaddr,sec%,len%,buff%,track%,log_sec_size,drive%
22430addr=memory?&F0
22440addr+=memory?&F1 << 8
22450addr=FNaddr(addr)
22460CASE memory?&EF OF
22470WHEN &7F
22480IF dfssupport THEN
22490SYS "XImageDFS_OSWORD7F",,memory?&F0,memory?&F1,memory
22500a?3=0
22510ELSE
22520drive%=addr?0
22530buff%=FNaddr(addr!1 AND &FFFF)
22540track%=addr?7
22550sec%=addr?8
22560len%=(addr?9) AND %11111
22570log_sec_size=((addr?9) >> 5) + 7
22580buffer?0=log_sec_size
22590buffer?1=10
22600buffer?2=1 : REM heads
22610buffer?3=1
22620buffer!4=0
22630buffer!8=0
22640buffer!12=1 << 29 : REM drive% << 29
22650buffer!16=&64000
22660buffer!20=0
22670buffer!24=0
22680buffer!28=0
22690SYS "XADFS_DiscOp",,1+(buffer << 6),(track%*10+sec%)*2^log_sec_size+(osword7F_drive% << 29),buff%,len%*2^log_sec_size TO A% ; F
22700IF (F AND 1)=0 THEN addr?10=0 ELSE addr?10=A%
22710
22720a?3=0
22730
22740ENDIF
22750
22760WHEN &72
22770REMPRINT"OSWORD 72";addr?5
22780IF addr?5=8 THEN
22790sec%=addr?8
22800sec%+=addr?7 << 8
22810sec%+=(addr?6 AND %11111) << 16
22820len%=addr?9
22830buff%=FNaddr(addr!1 AND &FFFF)
22840
22850SYS "XADFS_DiscOp",,1,sec%*256+(osword72_drive% << 29),buff%,len%*256 TO A% ; F
22860IF (F AND 1)=0 THEN ?addr=0 ELSE ?addr=A%
22870
22880REMOSCLI"SAVE MEM:DUMP "+STR$~buff%+" +"+STR$~(len%*256)+" "+STR$~(addr!1 AND &FFFF)
22890
22900a?3=0 : REM claim service call!
22910ENDIF
22920OTHERWISE REMPRINT"OSWORD ";~?&EF:Q=GET
22930ENDCASE
22940
22950PROCrts
22960REMPRINT~!pc_store
22970REMQ=GET
22980ENDPROC
22990
23000DEFPROCsplit(RETURN A$,RETURN B$)
23010LOCAL I%
23020WHILE LEFT$(A$,1)=" "
23030A$=RIGHT$(A$,LENA$-1)
23040ENDWHILE
23050FORI%=2 TO LENA$
23060IF MID$(A$,I%,1)="+" THEN A$=LEFT$(A$,I%-1)+" "+RIGHT$(A$,1+LENA$-I%):I%=255
23070NEXT
23080I%=INSTR(A$," ")
23090REMIF INSTR(A$,"+")>1 AND INSTR(A$,"+")<I% THEN I%=INSTR(A$,"+")
23100B$=LEFT$(A$,I%-1)
23110A$=RIGHT$(A$,LENA$-I%)
23120ENDPROC
23130
23140DEFPROCsplit2(RETURN A$,RETURN B$)
23150LOCAL I%
23160WHILE LEFT$(A$,1)=" "
23170A$=RIGHT$(A$,LENA$-1)
23180ENDWHILE
23190I%=INSTR(A$," ")
23200B$=LEFT$(A$,I%-1)
23210A$=RIGHT$(A$,LENA$-I%)
23220ENDPROC
23230
23240DEFPROCsplit3(RETURN A$,RETURN B$)
23250LOCAL I%,J%
23260WHILE (LEFT$(A$,1)=" " OR LEFT$(A$,1)=".")
23270A$=RIGHT$(A$,LENA$-1)
23280ENDWHILE
23290I%=INSTR(A$," ")
23300J%=INSTR(A$,".")
23310IF J%>0 AND (J%<I% OR I%=0) THEN I%=J%
23320B$=LEFT$(A$,I%-1)
23330A$=RIGHT$(A$,LENA$-I%)
23340ENDPROC
23350
23360DEFPROCsrwrite
23370
23380LOCAL A$,C$,addr,I%,J%
23390addr=memory?&F2
23400addr+=(memory?&F3) << 8
23410addr=FNaddr(addr)
23420addr+=y?3
23430C$=$addr
23440
23450PROCsplit(C$,A$)
23460
23470IF LENA$>4 THEN PROCbrk(0,"Bad Address"):ENDPROC
23480FORI%=1 TO LENA$
23490J%=ASCMID$(A$,I%,1)
23500IF (J%<48 OR J%>57) AND (J%<65 OR J%>70) THEN PROCbrk(0,"Bad Address"):ENDPROC
23510NEXT
23520
23530start%=EVAL("&"+A$)
23540
23550IF start%>&8000 THEN PROCbrk(0,"Bad Address"):ENDPROC
23560
23570PROCsplit(C$,A$)
23580
23590IF LEFT$(A$,1)="+" THEN end%=start%:A$=RIGHT$(A$,LENA$-1) ELSE end%=0
23600
23610IF LENA$>4 THEN PROCbrk(0,"Bad Address"):ENDPROC
23620FORI%=1 TO LENA$
23630J%=ASCMID$(A$,I%,1)
23640IF (J%<48 OR J%>57) AND (J%<65 OR J%>70) THEN PROCbrk(0,"Bad Address"):ENDPROC
23650NEXT
23660
23670end%+=EVAL("&"+A$)
23680
23690IF end%<start% OR end%>&8000 THEN PROCbrk(0,"Bad Address"):ENDPROC
23700
23710PROCsplit(C$,A$)
23720
23730IF LENA$<>4 THEN PROCbrk(0,"Bad Address"):ENDPROC
23740FORI%=1 TO LENA$
23750J%=ASCMID$(A$,I%,1)
23760IF (J%<48 OR J%>57) AND (J%<65 OR J%>70) THEN PROCbrk(0,"Bad Address"):ENDPROC
23770NEXT
23780
23790dest%=EVAL("&"+A$)
23800
23810IF dest%<&8000 OR dest%>&BFFF THEN PROCbrk(0,"Bad Address"):ENDPROC
23820
23830PROCsplit(C$,A$)
23840CASE LENA$ OF
23850WHEN 1
23860A%=ASCA$
23870IF A%>=ASC"W" AND A%<=ASC"Z" THEN A%=A%-ASC"W"+ASC"4"
23880IF A%>64 AND A%<71 THEN A%-=7
23890socket%=A%-48
23900IF socket%>15 OR socket%<0 THEN PROCbrk(0,"Bad Socket"):ENDPROC
23910WHEN 2
23920IF LEFT$(A$,1)<"0" OR LEFT$(A$,1)>"9" OR RIGHT$(A$,1)<"0" OR RIGHT$(A$,1)>"9" THEN PROCbrk(0,"Bad Socket"):ENDPROC
23930socket%=VALA$
23940IF socket%>15 OR socket%<0 THEN PROCbrk(0,"Bad Socket"):ENDPROC
23950OTHERWISE
23960PROCbrk(0,"Bad Socket"):ENDPROC
23970ENDCASE
23980
23990REMPRINT~start%,~end%,~dest%:Q=GET
24000
24010FOR I%=0 TO FNmin(end%-start%,&BFFF-dest%) STEP 4
24020!(roms+romsize%*socket%+I%+dest%-&8000)=start%!(memory+I%)
24030NEXT
24040
24050ROMRAM?socket%=0
24060
24070a?3=0
24080PROCrts
24090
24100ENDPROC
24110
24120DEFPROCmount
24130LOCAL A$,C$,addr,drive%
24140addr=memory?&F2
24150addr+=(memory?&F3) << 8
24160addr=FNaddr(addr)
24170REMaddr+=y?3
24180C$=$addr
24190
24200PROCstrip2(C$)
24210
24220IF LEFT$(FNupper(C$),5)="MOUNT" THEN :C$="MOUNT "+RIGHT$(C$,LENC$-5)
24230
24240PROCsplit3(C$,file$)
24250
24260PROCsplit3(C$,A$)
24270
24280drive%=VALA$
24290
24300REMSYS "OS_File",5,"ADFS::"+A$+".$" TO Q
24310SYS "ADFS_Drives" TO D%,F%,H%
24320IF A$="" THEN a?3=0:PROCrts:ENDPROC
24330IF drive%<F% OR (drive%>3 AND drive%<H%+4) THEN
24340fs$="ADFS:"
24350disc$=":"+STR$drive%+"."
24360path$="$"
24370subpath$=""
24380
24390a?3=0
24400PROCrts
24410ELSE
24420PROCbrk(0,"Bad drive "+A$):ENDPROC
24430ENDIF
24440
24450ENDPROC
24460
24470
24480DEFPROCdrive
24490LOCAL A$,C$,addr,drive%
24500addr=memory?&F2
24510addr+=(memory?&F3) << 8
24520addr=FNaddr(addr)
24530REMaddr+=y?3
24540C$=$addr
24550PROCstrip2(C$)
24560IF LEFT$(FNupper(C$),5)="DRIVE" THEN C$="DRIVE "+RIGHT$(C$,LENC$-5)
24570
24580PROCsplit3(C$,file$)
24590
24600PROCsplit3(C$,A$)
24610drive%=VALC$
24620
24630CASE C$ OF
24640WHEN "0","1","2","3"
24650IF dfssupport THEN
24660 IF imagefile% THEN
24670  path$=LEFT$(path$,INSTR(path$,"DFSSide2")-2)
24680 ELSE
24690  SYS "ImageDFS_DFSToADFSDrive",drive% TO dfsdrive%
24700  REMpath$="ADFS::"+STR$drive%+".$"
24710  fs$="ADFS:":disc$=":"+STR$dfsdrive%+".":path$="$"
24720 ENDIF
24730ELSE
24740 path$=LEFT$(path$,INSTR(path$,"DFSSide2")-2)
24750ENDIF
24760
24770subpath$=""
24780IF drive%=2 OR drive%=3 THEN
24790SYS "OS_File",5,fs$+disc$+path$+".DFSSide2" TO Q
24800IF Q<>0 path$=path$+".DFSSide2"
24810ENDIF
24820
24830WHEN "R","r"
24840PROCreadCSD
24850
24860OTHERWISE
24870PROCbrk(0,"Bad Drive "+C$):ENDPROC
24880
24890ENDCASE
24900
24910a?3=0
24920PROCrts
24930ENDPROC
24940
24950DEFPROCsrload
24960LOCAL A$,C$,addr,I%,J%
24970addr=memory?&F2
24980addr+=(memory?&F3) << 8
24990addr=FNaddr(addr)
25000addr+=y?3
25010C$=$addr
25020
25030PROCsplit2(C$,file$)
25040
25050PROCsplit(C$,A$)
25060IF LENA$<>4 THEN PROCbrk(0,"Bad Address"):ENDPROC
25070FORI%=1 TO LENA$
25080J%=ASCMID$(A$,I%,1)
25090IF (J%<48 OR J%>57) AND (J%<65 OR J%>70) THEN PROCbrk(0,"Bad Address"):ENDPROC
25100NEXT
25110
25120load%=EVAL("&"+A$)
25130IF load%<&8000 OR load%>&BFFF THEN PROCbrk(0,"Bad Address"):ENDPROC
25140PROCsplit(C$,A$)
25150IF RIGHT$(A$,1)="Q" THEN A$=LEFT$(A$,LENA$-1)
25160CASE LENA$ OF
25170WHEN 1
25180A%=ASCA$
25190IF A%>=ASC"W" AND A%<=ASC"Z" THEN A%=A%-ASC"W"+ASC"4"
25200IF A%>64 AND A%<71 THEN A%-=7
25210socket%=A%-48
25220IF socket%>15 OR socket%<0 THEN PROCbrk(0,"Bad Socket"):ENDPROC
25230WHEN 2
25240IF LEFT$(A$,1)<"0" OR LEFT$(A$,1)>"9" OR RIGHT$(A$,1)<"0" OR RIGHT$(A$,1)>"9" THEN PROCbrk(0,"Bad Socket"):ENDPROC
25250socket%=VALA$
25260IF socket%>15 OR socket%<0 THEN PROCbrk(0,"Bad Socket"):ENDPROC
25270OTHERWISE
25280PROCbrk(0,"Bad Socket"):ENDPROC
25290ENDCASE
25300
25310SYS "XOS_Find",&40+%1101,FNadd_(file$),FN_path(file$) TO A% ; F
25320IF (F AND 1)<>0 THEN PROCswi_error:ENDPROC
25330H%=A%
25340SYS "XOS_GBPB",4,A%,load%-&8000+roms+romsize%*socket%,&C000-load% TO A% ; F
25350IF (F AND 1)<>0 THEN PROCswi_error:ENDPROC
25360?(ROMRAM+socket%)=0
25370SYS "XOS_Find",0,H% TO A% ; F
25380IF (F AND 1)<>0 THEN PROCswi_error:ENDPROC
25390
25400a?3=0
25410PROCrts
25420ENDPROC
25430
25440DEFPROCelkkeys(F$)
25450
25460LOCAL Q,S$,K%,A$
25470
25480SYS "6502_GetElectronMap" TO keymap
25490
25500FORI%=0 TO 1023 STEP 4
25510keymap!I%=&FF
25520NEXT
25530
25540Q=OPENINF$
25550IF Q=0 THEN ERROR 0,F$+" not found"
25560REPEAT
25570S$=FNgetword
25580IF LEFT$(S$,1)="#" THEN
25590  PROCignoreline
25600  IF INSTR(S$,"RiscPC") AND INKEY-256<&A5 THEN S$=""
25610ELSE
25620  IF S$<>"" THEN
25630    S%=FNgetelk(S$)
25640    REPEAT
25650    A$=FNgetword
25660    IF A$<>"" THEN
25670      K%=FNgetarc(A$)
25680      keymap!(K%*4)=S%
25690    ENDIF
25700    UNTILA$=""
25710  ENDIF
25720ENDIF
25730UNTIL S$="" OR EOF#Q
25740
25750CLOSE#Q
25760
25770ENDPROC
25780
25790DEFPROCreadkeys(F$)
25800
25810LOCAL Q,S$,K%,A$,shift%
25811
25830SYS "6502_ReadKeyMapAddress" TO keymap
25840FORI%=0 TO 255+256
25850keymap?I%=255
25860NEXT
25870
25880Q=OPENINF$
25890IF Q=0 THEN ERROR 0,F$+" not found"
25900REPEAT
25910S$=FNgetword
25920IF LEFT$(S$,1)="#" THEN
25930  PROCignoreline
25940  IF INSTR(S$,"RiscPC") AND INKEY-256<&A5 THEN S$=""
25960ELSE
25970  IF S$<>"" THEN
25980    IF LEFT$(S$,1)="s" AND LENS$>1 THEN shift%=TRUE:S$=RIGHT$(S$,LENS$-1) ELSE shift%=FALSE
25990    REMVDU4:PRINTS$:VDU5:PRINTGET
26000    S%=FNgetbbc(S$)
26010    REPEAT
26020    A$=FNgetword
26030    IF A$<>"" THEN
26040      K%=FNgetarc(A$)
26050      IF shift%=FALSE THEN keymap?K%=S%
26060      keymap?(K%+256)=S%
26070    ENDIF
26080    UNTILA$=""
26090  ENDIF
26100ENDIF
26110UNTIL S$="" OR EOF#Q
26120
26130CLOSE#Q
26140
26150ENDPROC
26160
26170DEFFNgetword
26180LOCAL I%,A$
26190REPEAT I%=BGET#Q : UNTIL I%>32 OR I%=10
26200IF I%=10 THEN =""
26210A$=CHR$I%
26220REPEAT I%=BGET#Q : A$=A$+CHR$I% : UNTIL I%<33
26230PTR#Q=PTR#Q-1
26240=LEFT$(A$,LENA$-1)
26250
26260DEFPROCignoreline
26270LOCALI%
26280REPEAT I%=BGET#Q : UNTILI%=&A
26290ENDPROC
26300
26310DEFFNgetelk(A$)
26320LOCALI%,J%,K%
26330FORI%=0 TO 3
26340FORJ%=0 TO 13
26350IF Elec$(I%,J%)=A$ THEN K%=(I%<<8)+J%:I%=4:J%=14
26360NEXT
26370NEXT
26380=K%
26390
26400DEFFNgetbbc(A$)
26410LOCALI%,J%
26420FOR I%=0 TO &7C
26430IF BBC$(I%)=A$ THEN J%=I%:I%=&80
26440NEXT
26450=J%
26460
26470DEFFNgetarc(A$)
26480LOCALI%,J%
26490FOR I%=&0 TO &78
26500IF ARC$(I%)=A$ THEN J%=I%:I%=&68
26510NEXT
26520=J%
26530
26540REM Electron Keys
26550DATA Escape,1,2,3,4,5,6,7,8,9,0,-,Left,Right
26560DATA CapsLock,Q,W,E,R,T,Y,U,I,O,P,Up,Down,Copy
26570DATA Ctrl,A,S,D,F,G,H,J,K,L,;,:,Return,""
26580DATA Shift,Z,X,C,V,B,N,M,",",.,/,"",Delete,Space
26590
26600REM BBC Keys
26610DATA Shift,Ctrl,bit7,bit6,bit5,bit4,bit3,bit2,bit1,bit0,"","",""
26620DATA Q,3,4,5,f4,8,f7,-,^,Left,K6,K7,""
26630DATA f0,W,E,T,7,I,9,0,_,Down,K8,K9,""
26640DATA 1,2,D,R,6,U,O,P,[,Up,K+,K-,KReturn
26650DATA CapsLock,A,X,F,Y,J,K,@,:,Return,K/,KDelete,"K."
26660DATA ShiftLock,S,C,G,H,N,L,;,],Delete,K#,K*,"K,"
26670DATA Tab,Z,Space,V,B,M,",",".",/,Copy,K0,K1,K3
26680DATA Escape,f1,f2,f3,f5,f6,f8,f9,\,Right,K4,K5,K2
26690
26700REM RISC OS Keys
26710DATA Escape,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,"",Print,"",""
26720DATA `,1,2,3,4,5,6,7,8,9,0,-,=,FALSE,<-|,Insert,Home,PageUp,NumLock,K/,K*,K#,Tab,Q,W,E,R,T,Y,U,I,O,P,[,],\,Delete,Copy,PageDown,K7,K8,K9,K-,LCtrl,A,S,D,F,G,H,J,K,L,;,',Return,K4,K5,K6,K+
26730DATA LShift,,Z,X,C,V,B,N,M,",",.,/,RShift,Up,K1,K2,K3,CapsLock,LAlt,Space,RAlt,RCtrl,Left,Down,Right,K0,K.,Enter
26740DATA "","","","","","","","","","","","","","","",""
26750DATA # : REM Risc PC key #~
26760
26770DEFPROCsetmemmap
26780IF paging%=FALSE OR machine%=0 OR machine%=4 THEN ENDPROC
26790!&97000=&A0A0A0A0
26800!&97004=&A0A0A0A0
26810!&97008=&A0A0A0A0
26820!&9700C=&A0A0A0A0
26830REMIF (?ACCCON AND %100)<>0 THEN ?&97003=&8D:!&97004=&8D8D8D8D:PROCswapmem(&A3000,&90000,&5000)
26840PROCswapmem(&A8000,roms+(?romsel AND %1111)*romsize%,romsize%)
26850?&97008=&44+(?romsel AND %1111)*4
26860?&97009=&44+(?romsel AND %1111)*4
26870?&9700A=&44+(?romsel AND %1111)*4
26880?&9700B=&44+(?romsel AND %1111)*4
26890IF (?ACCCON AND %1000)<>0 THEN ?&9700C=&89:?&9700D=&89:PROCswapmem(&AC000,&95000,&2000)
26900IF (?romsel AND %10000000)<>0 THEN ?&97008=&89:PROCswapmem(&A8000,&9D000,&1000)
26910
26920ENDPROC
26930
26940DEFPROCsetmemmap2
26950IF paging%=FALSE OR machine%=0 OR machine%=4 THEN ENDPROC
26960IF (?romsel AND %10000000)<>0 THEN PROCswapmem(&A8000,&9D000,&1000)
26970IF (?ACCCON AND %1000)<>0 THEN PROCswapmem(&AC000,&95000,&2000)
26980PROCswapmem(&A8000,roms+(?romsel AND %1111)*romsize%,romsize%)
26990REMIF (?ACCCON AND %100)<>0 THEN PROCswapmem(&A3000,&90000,&5000)
27000ENDPROC
27010
27020DEFFNpeek(A%)=?FNaddr(A%)
27030
27040DEFFNaddr(A%)=memory+A%
27050
27060DEFFNaddr2(A%)
27070LOCAL B%,C%,D%
27080IF paging% AND (machine%>0 AND machine%<4) THEN
27090B%=&97000+(A%>>>12)
27100C%=(?B%)<<12
27110D%=A%+C%
27120ELSE
27130D%=memory+A%
27140ENDIF
27150=D%
27160
27170
27180DEFPROCpoke(A%,V%)
27190memory?A%=V%:ENDPROC
27200
27210DEFPROCdisableCFS
27220IF machine%>0 AND machine%<4 THEN ENDPROC
27230vectors%=memory?&FFB7+(memory?&FFB8<<8)
27240
27250vectors%=FNaddr(vectors%)
27260addr%=vectors%?&1E+(vectors%?&1F<<8)
27270memory2=roms+romsize%*16-&C000
27280
27290memory?addr%=3 : REM OSFSC
27300memory2?addr%=3
27310memory?&FFCE=3 : REM OSFIND
27320memory2?&FFCE=3
27330memory?&FFD1=3 : REM OSGBPB
27340memory2?&FFD1=3
27350memory?&FFD4=3 : REM OSBPUT
27360memory2?&FFD4=3
27370memory?&FFD7=3 : REM OSBGET
27380memory2?&FFD7=3
27390memory?&FFDA=3 : REM OSARGS
27400memory2?&FFDA=3
27410memory?&FFDD=3 : REM OSFILE
27420memory2?&FFDD=3
27430ENDPROC
27440
27450DEFPROCboot
27460
27470REMSYS "OS_FSControl",11,fs$ : REM set temporary filing system
27480REMSYS "OS_FSControl",0,disc$+path$+subpath$ : REM change dir
27490REMSYS "XOS_GBPB",5,,buffer
27500REMSYS "OS_FSControl",19
27510
27520REMboot%=?(buffer+?buffer+1)
27530PROCrts
27540
27550IF machine%<>0 THEN ENDPROC
27560
27570Q=OPENIN(fs$+disc$+path$+subpath$+".!Boot")
27580IF Q<>0 THEN CLOSE#Q:disable_reset=TRUE:PROCfile_load(fs$+disc$+path$+subpath$+".!Boot"):disable_reset=FALSE:ENDPROC
27590Q=OPENIN(fs$+disc$+path$+subpath$+".!Run")
27600IF Q<>0 THEN CLOSE#Q:disable_reset=TRUE:PROCsnap_load(fs$+disc$+path$+subpath$+".!Run"):disable_reset=FALSE:ENDPROC
27610
27620PROCbrk(214,"File not found")
27630
27640ENDPROC
27650
27660DEFPROCopenmenu(menu%,X%,Y%)
27670PROCmenus
27680SYS "Wimp_CreateMenu",,menu%,X%,Y%
27690current_menu%=menu%
27700ENDPROC
27710
27720DEFPROCconfig
27730q%!0=config%
27740CASE i% OF
27750WHEN 1  
27760q%!4=1:SYS "Wimp_GetIconState",,q% : ROMSEL%=((q%!24 AND 2^21)<>0)
27770WHEN 2
27780q%!4=2:SYS "Wimp_GetIconState",,q% : Palette%=((q%!24 AND 2^21)<>0)
27790WHEN 3
27800q%!4=3:SYS "Wimp_GetIconState",,q% : Cursor%=((q%!24 AND 2^21)<>0)
27810WHEN 4
27820q%!4=4:SYS "Wimp_GetIconState",,q% : Oscli%=((q%!24 AND 2^21)<>0)
27830WHEN 5
27840q%!4=5:SYS "Wimp_GetIconState",,q% : scroll_hack%=((q%!24 AND 2^21)<>0)
27850WHEN 6
27860q%!4=6:SYS "Wimp_GetIconState",,q% : file_xxx=((q%!24 AND 2^21)<>0)
27870IF file_xxx THEN OSCLI"IconSprites <6502Em$Res>.file_xxx" ELSE OSCLI"IconSprites <6502Em$Res>.no_xxx"
27880WHEN 7
27890q%!4=7:SYS "Wimp_GetIconState",,q% : sound_on%=((q%!24 AND 2^21)<>0)
27900WHEN 10 : IF mb%=2 THEN PROCopenmenu(machine_menu%,mx%-64,my%)
27910WHEN 11 : PROCopenmenu(machine_menu%,mx%-64,my%)
27920WHEN 12 : IF mb%=2 PROCopenmenu(keysmenu%,mx%-64,my%)
27930WHEN 13 : PROCopenmenu(keysmenu%,mx%-64,my%)
27940WHEN 14 : IF mb%=2 PROCopenmenu(patchmenu%,mx%-64,my%)
27950WHEN 15 : PROCopenmenu(patchmenu%,mx%-64,my%)
27960WHEN 16 : IF mb%=2 PROCopenmenu(speedmenu%,mx%-64,my%)
27970WHEN 17 : PROCopenmenu(speedmenu%,mx%-64,my%)
27980WHEN 20 : PROCdefault_options:PROCsetconfig
27990WHEN 21 : PROCsave_options
28000WHEN 22 : !q%=config% : SYS "Wimp_CloseWindow",,q%
28010ENDCASE
28020ENDPROC
28030
28040DEFPROCsetconfig
28050!q%=config%:q%!12=2^21
28060q%!4=1:q%!8=-2^21*(ROMSEL%<>0):SYS "Wimp_SetIconState",,q%
28070q%!4=2:q%!8=-2^21*(Palette%<>0):SYS "Wimp_SetIconState",,q%
28080q%!4=3:q%!8=-2^21*(Cursor%<>0):SYS "Wimp_SetIconState",,q%
28090q%!4=4:q%!8=-2^21*(Oscli%<>0):SYS "Wimp_SetIconState",,q%
28100q%!4=5:q%!8=-2^21*(scroll_hack%<>0):SYS "Wimp_SetIconState",,q%
28110q%!4=6:q%!8=-2^21*(file_xxx<>0):SYS "Wimp_SetIconState",,q%
28120q%!4=7:q%!8=-2^21*(sound_on%<>0):SYS "Wimp_SetIconState",,q%
28130PROCpokeicontext(16,STR$speed+"%")
28140buffer!0=0:buffer!4=0:buffer!8=0
28150SYS "OS_ReadVarVal","6502Em$Keymap",buffer,255 TO ,S$
28160keymap%=FNkeymap(S$)
28170PROCpokeicontext(12,S$)
28180ENDPROC
28190
28200DEFPROCpokeicontext(N%,A$)
28210q%!0=config%
28220q%!4=N%
28230SYS "Wimp_GetIconState",,q%
28240$(q%!28)=A$+CHR$0
28250q%!8=0:q%!12=0
28260SYS "Wimp_SetIconState",,q%
28270ENDPROC
28280
28290DEFPROCnewspeed(S)
28300speed=S
28310PROCpokeicontext(16,STR$speed+"%")
28320ENDPROC
28330
28340DEFPROCdfsimage(A$)
28350SYS "XOS_SWINumberFromString",,"ImageDFS_Version" TO ; F
28360IF (F AND 1)=0 THEN dfssupport=TRUE ELSE dfssupport=FALSE
28370IF dfssupport=FALSE THEN PROCreport("ImageDFS (available from WSS) must be loaded to access this file"):ENDPROC
28380imagefile%=TRUE
28390PROCfile_load(A$+".!BOOT")
28400PROCBBC
28410ENDPROC
28420
28430DEFPROCreport(A$)
28440SYS"Wimp_ReportError","    "+A$,%11001,"6502Em"
28450ENDPROC
28460
28470DEFPROCopenconfig
28480           PROCsetconfig
28490           q%!0=config%
28500           SYS "Wimp_GetWindowState",,q%
28510           
28520           IF config_open%=FALSE THEN
28530           SYS "OS_ReadModeVariable",-1,4 TO ,,xeig%
28540           SYS "OS_ReadModeVariable",-1,5 TO ,,yeig%
28550           SYS "OS_ReadModeVariable",-1,11 TO ,,screenx%
28560           SYS "OS_ReadModeVariable",-1,12 TO ,,screeny%
28570           sx%=q%!12-q%!4 : sy%=q%!16-q%!8
28580           q%!4=((screenx%<<xeig%)-sx%)/2
28590           q%!8=((screeny%<<yeig%)-sy%)/2
28600           q%!12=q%!4+sx%
28610           q%!16=q%!8+sy%
28620           ENDIF
28630           
28640           q%!28=-1
28650           SYS "Wimp_OpenWindow",,q%
28660ENDPROC

� > !RunImage
,� 6502Em (desktop frontend for binaries)
*� (c) Michael and Anne Borcherds, 1995
(E� LOCK ROMRAM,memory,roms,osword7F_drive%,osword72_drive%,paging%
2(version$="2.10 (24th November 1996)"
<
Fi� � ș "XWimp_CloseDown":ș "XWimp_ReportError","    Fatal internal error "+� �+": "+�$,1,"6502Em":Ș
P
Z@osword7F_drive%=1 : � drive accessed for protected DFS discs
dAosword72_drive%=0 : � drive accessed for protected ADFS discs
n
paging%=�
x
top%=�
�
��=�-96*1024
�;!�=0:ș "OS_ReadVarVal","6502Em$SaveScreen",�,255 � ,S$
�� �S$,3)="Yes" �
�sprite=�
�save_sprite=�
��
��=�+96*1024
�sprite=0
�save_sprite=�
��
�
�c�=�-(64+64)*1024 : � 64k BBC memory map + 32k Master extra memory + 256 bytes variables + spare
memory=�+64*1024

F� memory<>&A0000 � � 0,"6502Em initialisation: Fatal memory error"
"
,Dsheila=memory-&200 : �FORI%=&100 TO &1FF STEP 4:sheila!I%=0:NEXT
6
@�=�-17*16*1024:roms=�
J�=�-160*1024:code=�
Tromsize%=&4000
^
hfiletype%=&BBC
r
|� volume between 0 and 127
�ț "<6502Em$Res>.Sound7a"
�
��templates
��initBBC
��sound_init
��newmachine
�	�init
�	�poll
�
��
�
�
���install(sprite$)
� sx%,sy%,sm%,px%,py%
&� text_buff &100, sprite_buff &100
4ș "Wimp_SpriteOp",40,,sprite$ � ,,,sx%,sy%,,sm%
&9ș "OS_ReadModeVariable",sm%,4 � ,,px% : sx%=sx%<<px%
09ș "OS_ReadModeVariable",sm%,5 � ,,py% : sy%=sy%<<py%
:
!q%=-1
D/q%!4=0:q%!8=-16:q%!12=q%!4+sx%:q%!16=20+sy%
N"�q%!20=&1700312B (filled icon)
Xq%!20=&1700310B
b
l!(q%+24)=text_buff
v!(q%+28)=sprite_buff
�$text_buff=sprite$
�$sprite_buff="S"+sprite$
�!(q%+32)=&100
�"ș "Wimp_CreateIcon",,q% � !q%
�bar_hand=!q%
��
�
���reinstall(sprite$)
�$sprite_buff="S"+sprite$
�$text_buff=sprite$
�buffer!0=-2
�buffer!4=bar_hand
��buffer!8=0
�buffer!12=0
buffer!8=&00800080
buffer!12=&00800080
 !ș"Wimp_SetIconState",,buffer
*-�SYS"Wimp_ForceRedraw",-2,0,0,&FFFF,&FFFF
4buffer!8=0
>buffer!12=&00800080
H!ș"Wimp_SetIconState",,buffer
R�
\
f��templates
p� t 4:$t="TASK"
z4ș "Wimp_Initialise",200,!t,"6502Em" � RO%,hand%
�b� q% 256, q2% 256, iconmenu% 300, miscmenu% 200,rommenu% 800, machine_menu% 200, oscli_menu 20
�8� pokemenu% 50, pokevalid% 12, poketext% 12, drag 40
�!� temp_regs 12*4, buffer &100
��clearmem(�,top%)
��install("OS�1.2")
�
��readpatches
��readspeeds
�
�� RO%>299 �
�3ș "OS_Byte",161,140 � ,,t% : THREED%=-(t% � 1)
�v� THREED%=� � ș "Wimp_OpenTemplate",,"<6502Em$Res>.Template3D" � ș "Wimp_OpenTemplate",,"<6502Em$Res>.Templates"
�3ș "Wimp_LoadTemplate",,-1,,,-1,"info" � ,A%,B%
8ș "Wimp_LoadTemplate",,-1,,,-1,"xfer_send" � ,C%,D%
9ș "Wimp_LoadTemplate",,-1,,,-1,"xfer_send2" � ,E%,F%
5ș "Wimp_LoadTemplate",,-1,,,-1,"config" � ,G%,H%
$�
.4ș "Wimp_OpenTemplate",,"<6502Em$Res>.Templates"
85A%=700 : B%=300 : C%=400 : D%=350 : E%=C% : F%=D%
BG%=2000:H%=2000
L�
VF� buffer2 A%, icon3 B%, xfer1 C%+4, xfer2 D%, xfer3 E%+4, xfer4 F%
`� config G%, config2 H%+4
j<ș "Wimp_LoadTemplate",,buffer2,icon3,icon3+B%,-1,"info"
t?ș "Wimp_LoadTemplate",,xfer1,xfer2,xfer2+D%,-1,"xfer_send"
~@ș "Wimp_LoadTemplate",,xfer3,xfer4,xfer4+F%,-1,"xfer_send2"
�Aș "Wimp_LoadTemplate",,config,config2,config2+H%,-1,"config"
�ș "Wimp_CloseTemplate"
�/ș "Wimp_CreateWindow",,xfer1 � A%:xfer%=A%
�0ș "Wimp_CreateWindow",,xfer3 � A%:xfer2%=A%
�Cș "Wimp_CreateWindow",,config � A%:config%=A% : config_open%=�
�1ș "Wimp_CreateWindow",,buffer2 � A%:info%=A%
�
�!buffer=info%
�buffer!4=9
�"ș "Wimp_GetIconState",,buffer
�$(buffer!28)=version$+�0
�
!buffer=info%

buffer!4=11
"ș "Wimp_GetIconState",,buffer
0�"Load <6502Em$Res>.SerialNo "+�~(buffer!28)
(�
2
<
��init
Fș "OS_GetEnv" � A$
P� �A$,1)=" " �
ZI%=0
d�I%+=1:��A$,�A$-I%,1)<>" "
nA$=�A$,�A$-I%)
x�
� � �A$,1)=�34 � A$=�A$,�A$-1)
� � �A$,1)=�34 � A$=�A$,�A$-1)
�I%=0
�&�I%+=1:��A$,�A$-I%,1)=" " � I%=�A$
�A$=�A$,I%)
�?� �upper(�A$,�A$-9,10))<>".!RUNIMAGE" � �snap_load(A$):�BBC
�
��
�
�
��poll
�$� � � �report(�$,�<>1)=2 � �quit
�
��
mask%=%1100000110011
%ș "Wimp_Poll",mask%,q% � action%

"Ȏ action% �
,E�  2    : ș "Wimp_OpenWindow",,q%:� !q%=config% � config_open%=�
6F�  3    : ș "Wimp_CloseWindow",,q%:� !q%=config% � config_open%=�
@�  6    : �click
J�  7    : �save
T�  8    : �key
^�  9    : �decodemenu
h� 17,18 : �message
r�
|
���
��
�
�
��message
�Ȏ q%!16 �
�� 0 : �quit
�	� 2 :
�� q%!12=myref% �
�ș "OS_WriteN",q%+44 � A$
�� A$="<Wimp$Scrap>" �
�/ș "XOS_ReadVarVal","Wimp$Scrap",,-1 � ,,A%
�H� A%=0 � ș "Wimp_ReportError","    Scrap file not set",1,"6502Em":�
��
� save_sprite% �
�sprite_save(A$)
!buffer=xfer2%
&�
0�snap_save(A$)
:!buffer=xfer%
D�
N
X� �A$,6)<>"<Wimp$" �
bbuffer!4=1
l"ș "Wimp_GetIconState",,buffer
v$(buffer!28)=A$
��
�
�;q%!16=3 : q%!12=q%!8 : ș "Wimp_SendMessage",17,q%,q%!4
��
�� 3
�ș "OS_WriteN",q%+44 � A$
�Ȏ q%!40 �
�� &B22 : �dfsimage(A$)
� � filetype% : �snap_load(A$)
�%� &FFB,&FFE : �file_load(A$):�BBC
��
�	� 5 :
�Ȏ q%!40 �

� filetype% : � Snapshot
8q%!16=4:q%!12=q%!8:ș "Wimp_SendMessage",17,q%,q%!20
 ș "OS_WriteN",q%+44 � A$
*�snap_load(A$) : �BBC
4
>
H� ��-1 �
Rș "OS_WriteN",q%+44 � A$
\	F$=A$
f2ș "OS_File",5,F$ � type%,,load%,exec%,length%
p2� type%=2 � ��F$,�F$-��leaf(F$)-1),1)<>"!" � �
z�� type%=2 � F$=A$+".!Run":ș "OS_File",5,F$ � type%,,load%,exec%,length%:� (load% � &FFF00)=&BBC00 � q%!16=4:q%!12=q%!8:ș "Wimp_SendMessage",17,q%,q%!20:�snap_load(F$) : �BBC : �
�^� type%=0 � F$=A$+"."+�A$,�A$-��leaf(A$)-2):ș "OS_File",5,F$ � type%,,load%,exec%,length%
�
�
�f  � ((load%>>>16)=0 � (load%>>>16)=&FFFF � (load%>>>16)=&00FF) � (load% � &FFFF)<&8000 � type%=1 �
�:  q%!16=4:q%!12=q%!8:ș "Wimp_SendMessage",17,q%,q%!20
�  �file_load(F$)
�
  �BBC
�  �
��
��
�� &400C1 : �PROCmode
��
��
	
		��key
	Ȏ !q% �
	$
� config%
	.
	8� q%!24=13 � q%!4=16 �
	Bș "Wimp_GetIconState",,q%
	L�newspeed(�$(q%!28))
	V�
	`ș "Wimp_ProcessKey",q%!24
	j�
	t
	~� xfer%,xfer2%
	�
	�� q%!4=1 � q%!24=13 �
	�!buffer=!q%
	�buffer!4=1
	�"ș "Wimp_GetIconState",,buffer
	�G� !q%=xfer% � �snap_save($(buffer!28)) � �sprite_save($(buffer!28))
	�ș "Wimp_CreateMenu",-1
	��
	�ș "Wimp_ProcessKey",q%!24
	��
	�
	��
�


��click
mx%=q%!0
(my%=q%!4
2mb%=q%!8
<h%=q%!12
Fi%=q%!16
P� h%=config% � �config:�
Z
� h%=-2 �
d1� mb%=2 � �openmenu(iconmenu%,mx%-64,96+7*44)
n
� mb%=1 �
x�PROCreadCSD
��PROCBBC
��openconfig
��
�
� mb%=4 �
�� �-1 � �-2 � �readCSD
��BBC
��
��
�=� i%=3 � (h%=xfer% � h%=xfer2%) � ș "Wimp_CreateMenu",-1
�
�7� (h%=xfer% � h%=xfer2%) � i%=2 � (mb%=1 � mb%=4) �
�!buffer=h%
�buffer!4=1
"ș "Wimp_GetIconState",,buffer
F� h%=xfer% � �snap_save($(buffer!28)) � �sprite_save($(buffer!28))
&� mb%<>1 � ș "Wimp_CreateMenu",-1
"�
,
6� h%=xfer% � i%=0 �
@save_sprite%=�
J1!xfer1=xfer% : ș "Wimp_GetWindowInfo",,xfer1
T?!buffer=xfer% : buffer!4=0 : ș "Wimp_GetIconState",,buffer
^drag!0=0
hdrag!8=xfer1!4+buffer!8
rdrag!12=xfer1!16+buffer!12
|drag!16=xfer1!4+buffer!16
�drag!20=xfer1!16+buffer!20
�"ș "OS_Byte",161,&1C � ,,byte%
�� RO%>299 � (byte% � 2)=2 �
�drag!4=7
�solid%=�
��
�drag!4=5
�solid%=�
��
�drag!24=-100
�drag!28=-100
�drag!32=30000
�drag!36=30000
]� solid% � ș "DragASprite_Start",%11000101,1,"file_BBC",drag+8 � ș "Wimp_DragBox",,drag
�
� h%=xfer2% � i%=0 �
&save_sprite%=�
02!xfer3=xfer2% : ș "Wimp_GetWindowInfo",,xfer3
:@!buffer=xfer2% : buffer!4=0 : ș "Wimp_GetIconState",,buffer
Ddrag!0=0
Ndrag!8=xfer3!4+buffer!8
Xdrag!12=xfer3!16+buffer!12
bdrag!16=xfer3!4+buffer!16
ldrag!20=xfer3!16+buffer!20
v"ș "OS_Byte",161,&1C � ,,byte%
�� RO%>299 � (byte% � 2)=2 �
�drag!4=7
�solid%=�
��
�drag!4=5
�solid%=�
��
�drag!24=-100
�drag!28=-100
�drag!32=30000
�drag!36=30000
�]� solid% � ș "DragASprite_Start",%11000101,1,"file_FF9",drag+8 � ș "Wimp_DragBox",,drag
��

�





 ��menus

*�P%

49�menuheader(iconmenu%,"6502Em",�"Single Task "*16+12)

>'�menuitem(0,info%,&07000001,"Info")

H*�menuitem(0,rommenu%,&07000001,"ROMs")

R+�menuitem(0,miscmenu%,&07000001,"Misc")

\,�PROCmenuitem(0,-1,&07000001,"Read CSD")

f)�PROCmenuitem(0,-1,&07000001,"Reset")

p'�menuitem(0,xfer%,&07000001,"Save")

z� sprite=0 �

�3�menuitem(0,xfer2%,&07000001 � (2^22),"Sprite")

��

�A�menuitem(0,xfer2%,&07000001 � -(2^22)*(sprite!4=0),"Sprite")

��

�)�menuitem(0,-1,&07000001,"Config...")

�&�menuitem(&80,-1,&07000001,"Quit")

�

�$buffer!0=0:buffer!4=0:buffer!8=0

�7ș "OS_ReadVarVal","6502Em$Keymap",buffer,255 � ,S$

�keymap%=�keymap(S$)

�

�� keymaps%<>0 �

�,�menuheader(keysmenu%,"Keymap",12*16+12)
�I%=1 � keymaps%
G�menuitem(-&80*(I%=keymaps%)-(keymap%=I%),-1,&07000001,keymap$(I%))
�
$�
.
8� patches%<>0 �
B.�menuheader(patchmenu%,"Patches",12*16+12)
L�I%=1 � patches%
V7�menuitem(-2*(I%=patches%),-1,&07000001,patch$(I%))
`�
j(�menuitem(&80,-1,&07000001,"(none)")
t�
~
�+�menuheader(speedmenu%,"Speed",6*16+12)
��I%=0 � speeds%
�8�menuitem(-&80*(I%=speeds%),-1,&07000001,speed$(I%))
��
�
�/�menuheader(rommenu%,"Protected?",12*16+12)
��I%=15 � 0 � -1
�F�menuitem(-(?(ROMRAM+I%)<>0)-&80*(I%=0),-1,&07000001,�ROMname(I%))
��
�
�8�menuheader(miscmenu%,"Misc",�"Disable Tape "*16+12)
�(�menuitem(0,-1,&07000001,"Read CSD")
%�menuitem(0,-1,&07000001,"Reset")

� machine%=0 � machine%=4 �
,�menuitem(0,-1,&07000001,"Disable Tape")
�
(3�menuitem(0,-1,&07000001 � 2^22,"Disable Tape")
2�
<-�menuitem(&80,-1,&07000001,"No Joystick")
F
P=�menuheader(machine_menu%,"Machine",�"Master 128 "*16+12)
ZC�menuitem(0,-1,&07000001 � -(2^22)*(Machine%(0)=0),Machine$(0))
dC�menuitem(0,-1,&07000001 � -(2^22)*(Machine%(1)=0),Machine$(1))
nC�menuitem(0,-1,&07000001 � -(2^22)*(Machine%(2)=0),Machine$(2))
xC�menuitem(0,-1,&07000001 � -(2^22)*(Machine%(3)=0),Machine$(3))
�E�menuitem(&80,-1,&07000001 � -(2^22)*(Machine%(4)=0),Machine$(4))
�
��
�
���menuheader(A%,B$,G%)
�	P%=A%
�$P%=B$+�13
�)P%?12=7 : P%?13=2 : P%?14=7 : P%?15=0
�!P%!16=G% : P%!20=44 : P%!24=0
�
P%+=28
��
�
���menuitem(A%,B%,C%,D$)
P%!0=A%
P%!4=B%
P%!8=C%
"$(P%+12)=D$+�13
,
P%+=24
6�
@
J$��indirecteditem(A%,B%,C%,D$,E%)
TP%!0=A%
^P%!4=B%
hP%!8=C%+&07000000
rP%!12=E%
|P%!16=0
�P%!20=�D$+1
�$E%=D$+�13
�
P%+=24
��
�
���decodemenu
�Ȏ current_menu% �
�� iconmenu%     : �iconmenu
�J� machine_menu% : � !q%<>-1 � !q%<>machine% � machine%=!q%:�newmachine
�<� keysmenu%     : � !q%<>-1 � �setkeymap(keymap$(!q%+1))
�
�'� patchmenu%    : � !q%>=patches% �
�<                     patch%=0:�pokeicontext(14,"(none)")
                     �
B                     � patch%<>!q%+1 � patch%=!q%+1:�loadpatch
                     �
&@� speedmenu%    : �newspeed(�(�speed$(!q%),�speed$(!q%)-1)))
0�
: ș "Wimp_GetPointerInfo",,q%
D2� (q%!8 � %1)>0 � �openmenu(current_menu%,0,0)
N�
X
b��iconmenu
lȎ !q% �
v  � 0 : � Info
�  � 5 : � Configure
�           �openconfig
�  � 1    : � ROMs
�    � q%!4 > -1 �
�    S%=15-(q%!4 � 15)
�*    � �validROM(S%) � ?(ROMRAM+S%)=2 �
�G    � ?(ROMRAM+S%)=2 � ?(ROMRAM+S%)=0 � ?(ROMRAM+S%)=1-?(ROMRAM+S%)
�	    �
�    ?(ROMRAM+S%)=2
�	    �
�	    �
�  � 2    : � Misc
�    � q%!4 > -1 �
    Ȏ q%!4 �
    � 0 : �readCSD
    � 1 : �reset(2)
     � 2 : �disableCFS
*    � 3 : joystick%=�
4	    �
>	    �
H  � 3    : � Save
R  � 4    : � Sprite
\   : �quit
f�
p�
z
�"��menuitem2(A%,B%,C%,D%,E%,F%)
�P%!0=A%
�P%!4=B%
�P%!8=C%
�P%!12=D%
�P%!16=E%
�P%!20=F%
�
P%+=24
��
�
�ݤcount(A$,B$)
�
�I%,C%
��I%=1 � �A$
� �A$,I%,1)=B$ � C%+=1
�
=C%
$
.ݤletter(A$)
8� I%,J%
B�I%=1 � �A$
L.� �"ABCDEFabcdef",�A$,I%,1)) � J%=�:I%=�A$
V�
`=J%
j
t
~
��save
�$� solid% � ș "DragASprite_Stop"
�	K$=""
�/� save_sprite% � !drag=xfer2% � !drag=xfer%
�drag!4=1
� ș "Wimp_GetIconState",,drag
�P%=drag!28-1
�� P%+=1
�� ?P%<>13 � K$=K$+�?P%
�!� ?P%=�"." � ?P%=�":" � K$=""
��?P%=13
� ș "Wimp_GetPointerInfo",,q%
�<� q%!12<>xfer% � q%!12<>xfer2% � ș "Wimp_CreateMenu",-1
q%!20=q%!12

q%!24=q%!16
q%!28=q%!0
q%!32=q%!4
(
2� save_sprite%=� �
<q%!36=65667
Fq%!40=filetype%
P�
Zq%!36=80*1024
dq%!40=&FF9
n�
x
�q%!12=0
�q%!16=1
�$(q%+44)=K$+�0
�q%!0=(48+�K$) � %111111100
�
�,ș "XWimp_SendMessage",17,q%,q%!20,q%!24
�myref%=q%!8
��
�
�ݤleaf(A$)
�� I%
�I%=�A$+1
��I%-=1:� �A$,I%,1)="."
=�A$,I%-1)

	��err
"� �
,#� �report(�$,�) � �quit � �poll
6�
@
J��err2(M%)
T� �
^
� � �err
h6� hand%<>0 � ș "XOS_Find",0,hand% : � CLOSE#hand%
r8ș "XWimp_SetMode",M% : ș "X6502_RemoveExitHandler"
|� sound%=� � �sound_restore
�#� �report(�$,�) � �quit � �poll
��
�
�� �report(a$,E%)
�� A%
�
� E% �
�N ș "XWimp_ReportError","    Internal error "+� �+": "+a$,3,"6502Em" � ,A%
�7� ș "XWimp_ReportError","    "+a$,1,"6502Em" � ,A%
��
�=A%
�
�	ݤcsd
�ș "OS_GBPB",6,,buffer
buffer?(buffer?1+2)=13
=$(buffer+2)

&
��readCSD
0
:� �
D
N�� � � : � � : fs$="ADFS:":disc$="":path$="$":subpath$="":ș "XWimp_ReportError","    Error in reading current directory: "+�$,1,"6502Em":�
X
b
l� I%=0 � 1
vș "OS_Args" � FS%
�0ș "OS_FSControl",33,FS%,�20," "),20 � ,,fs$
�8� fs$<>"" � fs$=fs$+":":I%=1 � �"DIR <6502Em$Dir>.^"
��
�
�ș "OS_GBPB",5,,buffer
�buffer?(?buffer+1)=13
�disc$=$(buffer+1)
�<� disc$=�34+"Unset"+�34 � disc$="" � disc$=":"+disc$+"."
�
�path$=�csd
�� path$<>"$" �
��SYS "OS_FSControl",11,"@"
��
ș "OS_FSControl",0,"^"

CSD$=�csd
path$=CSD$+"."+path$
 � CSD$="$"
*+� �path$,7)=�34+"Unset"+�34 � path$="$"
4ș "OS_FSControl",0,path$
>�
H
Rsubpath$=""
\�
f
p
��initBBC
z
�!&97000=&A0A0A0A0
�!&97004=&A0A0A0A0
�!&97008=&A0A0A0A0
�!&9700C=&A0A0A0A0
�
�joystick%=�
�
�� R%(7)
�
�%� BBC$(&7C),ARC$(&78),Elec$(3,13)
��
�
�I%=0 � 3
��J%=13 � 0 � -1
� Elec$(I%,J%)
�
�
$
�I%=0 � 7
.�J%=0 � 12
8� BBC$(I%*16+J%)
B�
L�
V�I%=0 � &78
`� ARC$(I%)
j�
t
~�readkeymaps
��PROCsetkeymap("Default")
�$�elkkeys("<6502Em$Res>.ElkKeys")
�ș "6502_Register"
�
�/� Machine$(4),Machine%(4),MachineSprite$(4)
�
�imagefile%=�
�disable_reset=�
�default_machine%=0
�
�;Machine$(0)="BBC B"        : MachineSprite$(0)="OS�1.2"
�;Machine$(1)="Master 128"   : MachineSprite$(1)="OS�3.2"
;Machine$(2)="   MOS 3.5"   : MachineSprite$(2)="OS�3.5"

;Machine$(3)="Compact"      : MachineSprite$(3)="OS�5.1"
;Machine$(4)="Electron"     : MachineSprite$(4)="OS�1.0"

(!Q=�"<6502Em$RomPath>Electron"
2.� Q<>0 � �#Q:Machine%(4)=� � Machine%(4)=�
<
FQ=�"<6502Em$RomPath>OS1,2"
P.� Q<>0 � �#Q:Machine%(0)=� � Machine%(0)=�
Z(� Machine%(0)=� � default_machine%=1
d
n#Q=�"<6502Em$RomPath>M128.OS3,2"
x0� Q<>0 � �#Q : Machine%(1)=� � Machine%(1)=�
�8� Machine%(0)=� � Machine%(1)=� � default_machine%=2
�
�#Q=�"<6502Em$RomPath>M128.OS3,5"
�0� Q<>0 � �#Q : Machine%(2)=� � Machine%(2)=�
�H� Machine%(0)=� � Machine%(1)=� � Machine%(2)=� � default_machine%=3
�
�&Q=�"<6502Em$RomPath>Compact.OS5,1"
�0� Q<>0 � �#Q : Machine%(3)=� � Machine%(3)=�
�q� Machine%(0)=� � Machine%(1)=� � Machine%(2)=� � Machine%(3)=� � � 0,"No ROMs found - please run !Rip65Host"
�
� �Q=OPENIN"<6502Em$Dir>.Code"
�
�L%=EXT#Q
��CLOSE#Q
�DIM code L%+3000
�DIM roms 17*16*1024

"� cmos%(63) : �loadCMOS
, � eeprom%(255) : �loadEEPROM
60�WHILE (code AND 15)<>0 : code+=1 : ENDWHILE
@
J'indexfile$="":index%=0:newindex%=-1
T
^�!buffer=0
h>�SYS "OS_ReadVarVal","6502Em$SaveScreen",buffer,255 TO ,S$
r�IF LEFT$(S$,3)="Yes" THEN
|�DIM sprite 80*1024+300
��sprite!0=80*1024+256
��sprite!8=16
�#�SYS "OS_SpriteOp",256+9,sprite
��save_sprite=FALSE
�	�ELSE
�
�sprite=0
��save_sprite=FALSE
�
�ENDIF
�
��readCSD
�5FS$=fs$:DISC$=disc$:PATH$=path$:SUBPATH$=subpath$
�
�
�assemble
�load_options
-�OSCLI"LOAD <6502Em$Dir>.Code "+STR$~code
�CALL code+!init_addr
&�PROCnewmachine
0
:
D5� file_xxx � �"IconSprites <6502Em$Res>.file_xxx"
N
X
b
l�memory?&F1B1=3 : REM OSFSC
v �memory?&FFCE=3 : REM OSFIND
� �memory?&FFD1=3 : REM OSGBPB
� �memory?&FFD4=3 : REM OSBPUT
� �memory?&FFD7=3 : REM OSBGET
� �memory?&FFDA=3 : REM OSARGS
� �memory?&FFDD=3 : REM OSFILE
�
� �memory?&FFF1=3 : REM OSWORD
�"�memory?&FFE0=&23 : REM OSRDCH
�
�*FX229,1
�
�
�patch%=0:�PROCreset(1)

�memory?&FFF7=3 : REM OSCLI
�memory?&DF89=3 : REM OSCLI
 �memory?&EF02=3 :REM KEYV
*"�memory?&FFF4=&13 : REM OSBYTE
4"�memory?&FFE0=&23 : REM OSRDCH
>�memory?&FFCB=&23
H�
R
\��SRRAM
f?(ROMRAM+socket%)=0
psocket%=(socket%-1) � 15
z�
�
���killROM(S%)
��I%
�?(ROMRAM+S%)=2 : � empty
�� I%=0 � 255 � 16
�I%!(roms+romsize%*S%)=0
��
��
�
���loadROM(R$,R%)
��Q%
�6� machine%=4 � (socket%=9 � socket%=8) � socket%=7
�S%=socket%
socket%=(socket%-1) � 15
-ș "OS_Find",&4E,R$,"6502Em$ROMPath" � Q%
,ș "OS_GBPB",3,Q%,roms+romsize%*S%,&4000
$�#Q%
.?(ROMRAM+S%)=R%
8�
B
L��initROMs
V� S%
`� S%=0 � 15
j?(ROMRAM+S%)=2 : � 0=RAM
t                 � 1=ROM
~                 � 2=empty
��
��
�
�ݤROMname(S%)
�� ?(ROMRAM+S%)=2 � ="Empty"
�
�N$,I%
�I%=roms?(romsize%*S%+7)
�� �validROM(S%) �
��I%=0 � 11
�#N$=N$+�roms?(romsize%*S%+&9+I%)
�%� roms?(romsize%*S%+&B)=0 � I%=11
��
�

N$="RAM "+�~S%
�
=N$
(
2ݤvalidROM(S%)
<�I%
FI%=roms?(romsize%*S%+7)
Pg� roms?(romsize%*S%+I%+1)=&28 � roms?(romsize%*S%+I%+2)=&43 � roms?(romsize%*S%+I%+3)=&29 � =� � =�
Z=0
d��reset(A%)
n� disable_reset � �
x
�,� A%>=2 � �clearmem(memory,memory+&8000)
�
�
� A%>=1 �
�?ier=&80   : � ier
�?ier2=&80  : � ier2
�
?Eifr=%10
�?Eier=%0
�
?Elatch=0
�!T1R=&F0<<24
�!T2R=&F0<<24
�!T3R=&F0<<24
�!T4R=&F0<<24
�)�"LOAD <6502Em$Res>.SHEILA "+�~sheila
�
?fe10=&22 : � motor off etc
sheila!&C0=&7070B7AB
"
,�setmemmap
6
?ACCCON=0
@�setmemmap2
J
T#�IF patch%=0 THEN Palette%=TRUE
^
h?f=%100
r
|�memory?&FE40=0
��memory?&FE60=0
�
�sheila?&20=2 : � teletext
�
�.�memory?&E0A4=3 : REM where OSWRCH goes to
�.�memory?&E7EB=3 : REM where OSWORD goes to
�
�7�memory?&E98F=10 : REM default repeat delay (OS1.2)
�
�/�memory?&FE4E=&0 : REM force power on reset
��memory?&FE6E=&0
�
�,�memory?ier=0 : REM force power on reset
 �memory?ier2=0
 
 �memory?&28E=&80 : REM 32K
 &�memory?&DA2F=&EA
 0�memory?&DA30=&EA
 :�memory?&355=7
 D
 N'�!pc_store=&8000 << 16 : !a=1 << 24
 X�!pc_store=&D9CD << 16
 b�!pc_store=&47B1 << 16
 l8!pc_store=(memory?&FFFC + (memory?&FFFD << 8)) << 16
 v;�!pc_store=(FNpeek(&FFFC) + (FNpeek(&FFFD) << 8)) << 16
 ��
 �
 �	��BBC
 �� �
 �
 �:ș "XOS_SWINumberFromString",,"ImageDFS_Version" � ; F
 �-� (F � 1)=0 � dfssupport=� � dfssupport=�
 �
 �/� dfssupport ș "ImageDFS_EnteringEmulator"
 �
 �
 �*FX9
 �wimp_mode=�
!�SYS "6502_ReInit"
!?lastmode=255
!ș "Hourglass_Smash"
! (� Assign sound channels & start note
!*�sound_setup
!4*ș "6502_InstallExitHandler",wimp_mode
!>
!H� � �err2(wimp_mode)
!R
!\�!patch_on=((machine%<>4) � (patch%>0) � %1) + (joystick% � %10) + (Cursor% � %100) + (scroll_hack% � %1000) + (�sound_on% � %10000)
!f
!p!!speed_loc=speed*2000000/5000
!z
!��23,16,1,254| : � NOSCROLL
!�#ș "OS_Byte",202,0,255 � ,FX202
!�#ș "OS_Byte",247,0,255 � ,FX247
!�ș "OS_Byte",247,255,0
!�
!�4ș "OS_Byte",106,&81 : � unlink pointer, shape 1
!�ȗ � 3,255,255,255
!�
!�3ș "OS_Byte",202,memory?&25A � %10000,%11101111
!�ș "OS_Byte",118
!�
!�hand%=�tapefile$
!�?tape_handle=hand%
"
"�
"
"$#� newindex%>=0 index%=newindex%
".:� OSRDCH% � �poke(&FFE0,OSRDCH_loc) � �poke(&FFE0,&23)
"8?ROMSEL=1+ROMSEL%
"B?Palette=1+Palette%
"L�?cursor_on=1+Cursor%
"V�setmemmap
"`A%=roms
"jD%=memory : � R3
"t-ș &600FA,0 : � Wimp_SetWatchdogState Off
"~b%=�(code+!start_offset)
"�,ș &600FA,1 : � Wimp_SetWatchdogState On
"��setmemmap2
"�	*FX15
"��PRINTb%:VDU7:Q=GET
"�Ȏ b% �
"�� 11
"�� �-2 �
"�,� hand%<>0 � �#hand%=�max(0,�#hand%-350)
"��
"�#� �-1 � volume%+=5 � volume%-=5
"�� volume%>127 � volume%=127
"�� volume%<0 � volume%=0
#�sound_restore:�sound_setup
#
�
#
#?� 10 : �:?lastmode=255:�SYS "6502_ReInit":REMmemory?&EC=&E2
#(� 66 : �~!pc_store:Q=�
#2� 15
#<!� �-3 � �reset(2) � �reset(0)
#F
#P� 3
#ZL�PRINT "*****";~!pc_store >>> 16 : PRINT'a?3,y?3 : REPEATQ=GET:UNTILQ=48
#d8�OSCLI"SAVE RAM:$.Memory "+STR$~memory+" +10000 0 0"
#n<� �peek(!pc_store >>> 16)=3 � (!pc_store >>> 16)<&C000 �
#x]�IF memory?((!pc_store >>> 16)+1)<&80 THEN PRINT"LL"memory?((!pc_store >>> 16)+1) : Q=GET
#�A�PRINT TAB(0,0);~FNpeek((!pc_store >>> 16)+1);"   ";:REMQ=GET
#�$Ȏ �peek((!pc_store >>> 16)+1) �
#�� 0   : �osfsc
#�� 1   : �osfind
#�� 2   : �osgbpb
#�� 3   : �osbput
#�� 4   : �osbget
#�� 5   : �osargs
#�� 6   : �osfile
#�� &40 : �osword2
#�� &41 : �osbyte2
#�� &80 : �readCMOS
#�� &81 : �writeCMOS
$� &82 : �readEEPROM
$� &83 : �writeEEPROM
$� &D0 : �srload
$"� &D1 : �srwrite
$,� &D2 : �drive
$6� &D3 : �boot
$@ � &D5 : �back : a?3=0 : �rts
$J� &D6 : �mount
$T"� &FF : b%=12 : �rts : � *Quit
$^�
$h�
$rȎ (!pc_store >>> 16) �
$|� &FFF1,&E7EB : �osword2
$�� &FFE0 : �osrdch
$�� &FFD7 : �osbget
$�� &FFD4 : �osbput
$�� &FFDD : �osfile
$�� &FFDA : �osargs
$�� &FFD1 : �osgbpb
$�=� &FFCE : �osfind :� Open or close a file for byte access
$�� &F1B1,&F0E8 : �osfsc
$��
$�
$��
$�
$�� 7
%cb=(y?3)<<8
%cb+=x?3
%cb+=memory
%&� I%=0 � 7
%0R%(I%)=cb!(9+I%*4)
%:2� (cb?4 � (1<<I%)) <> 0 � R%(I%)=�addr(R%(I%))
%D�
%N
swi%=cb?0
%Xswi%+=(cb?1)<<8
%bswi%+=(cb?2)<<16
%l
%v�IF swi%=&61140 THEN
%��base=cb!9
%�,�PRINT"GGG";~memory?(base+6);"GGG":Q=GET
%�
�ENDIF
%�
%�8�SYS "OS_SWINumberToString",swi%,buffer,255 TO ,swi$
%�!�PRINT"Opcode 7 ";~swi%:Q=GET
%�� dfssupport �
%�
%�
Ȏ swi% �
%�
%�'� &61140 : �"XPRESDFS_FDCOperation"
%�
base=cb!9
%�  Ȏ memory?base �
&  � 0,1,2,3
&  � &21 : memory?base=0
&  � &4B : memory?base=1
&   � &E0 : memory?base=2
&*  � &EA : memory?base=3
&4  
&>   �"Drive ";memory?base;"  "
&H  �
&R/� memory?(base+6)=&80 � memory?(base+6)=&53
&\/� memory?(base+6)=&A0 � memory?(base+6)=&4B
&f'�PRINT"FDCOp ";memory?(base+6);"  "
&p=� memory?(base+11)<>0 � memory?(base+9)=memory?(base+9)+1
&z3memory?(base+9)=(memory?(base+9) � %11111) � 32
&�^� memory?(base+6)<>&81 � ș "XImageDFS_OSWORD7F",,base � 256,base � 256,memory � R%(0) ; F
&�
&�)� &61141 : � "XPRESDFS_ReadFDCStatus"
&�
&�(� &61142 : � "XPRESDFS_SetDFSdrives"
&��PRINT~R%(0),~R%(1)
&�+�SYS "DFS_RISCOSToBBCDrive",R%(0),R%(1)
&�
&�&� &61143 : � "XPRESDFS_SetDFSStep"
&�)� R%(0)=40 or 80 for *STEP40, *STEP80
&�
&�
&�zș (swi% � 2^17),R%(0),R%(1),R%(2),R%(3),R%(4),R%(5),R%(6),R%(7) � R%(0),R%(1),R%(2),R%(3),R%(4),R%(5),R%(6),R%(7) ; F
'
'�
'
'$�
'.zș (swi% � 2^17),R%(0),R%(1),R%(2),R%(3),R%(4),R%(5),R%(6),R%(7) � R%(0),R%(1),R%(2),R%(3),R%(4),R%(5),R%(6),R%(7) ; F
'8�
'B
'L� cb?3<>0 �
'V� I%=0 � cb?3-1
'`2� (cb?5 � (1<<I%)) <> 0 � R%(I%)=R%(I%)-memory
'jcb!(9+I%*4)=R%(I%)
't�
'~�
'�
'�
'�
'�$� (F � 1)<>0 � (swi% � 2^17)=0 �
'�A%=R%(0)
'��swi_error
'��
'�
'�� (F � 1)<>0 � cb?8<>0 �
'�err=cb?6
'�err+=(cb?7)<<8
'�err+=memory
(J%=�
(
err?0=0
(� I%=0 � cb?8-2
(err?(I%+1)=R%(0)?I%
((� err?I%=0 � J%=�
(2�
(<� J%=� � err?(cb?8-1)=0
(F�
(P
(Z!!pc_store=!pc_store+(1 << 16)
(d?f=?f � %1100011
(n$� (F � 1)<>0 � ?f=?f � %01000000
(x$� (F � 2)<>0 � ?f=?f � %00000001
(�$� (F � 4)<>0 � ?f=?f � %00000010
(�$� (F � 8)<>0 � ?f=?f � %10000000
(�
(��
(�
(�	� 12:
(�
(�
(�
(��PRINT"b% = ";b% : Q=GET
(�
(��
(�
)
�b%=12
)
)6� hand%<>0 � ș "XOS_Find",0,hand% : � CLOSE#hand%
)"
),ș "OS_Byte",202,FX202
)6ș "OS_Byte",247,FX247
)@
)J2ș "OS_Byte",106,1 : � relink pointer, shape 1
)T
)^ *Set Key$11 "<6502Em$Key11>"
)h *Set Key$12 "<6502Em$Key12>"
)r
)|ș "6502_RemoveExitHandler"
)�
)�� Restore sound channels
)��sound_restore
)�
)�� sprite<>0 �
)�sprite!0=80*1024+256
)�sprite!8=16
)�"ș "XOS_SpriteOp",256+9,sprite
)�?ș "XOS_SpriteOp",256+16,sprite,"BBCScreen",1,0,0,1279,1023
)��
)�
)�ș "Wimp_SetMode",wimp_mode
)�
**FX15,0
*
*.� dfssupport ș "ImageDFS_LeavingEmulator"
*&
*0�
*:
*Dݤmax(A%,B%)
*N� A%>B% � =A% � =B%
*X=0
*b��pullpc
*lsp?3=sp?3+1
*v"pc_store?2=?(memory+&100+sp?3)
*�sp?3=sp?3+1
*�"pc_store?3=?(memory+&100+sp?3)
*��
*�
*���assemble
*�a=memory-&100+0
*�a=memory-&100+0
*�x=memory-&100+4
*�y=memory-&100+8
*�f=memory-&100+12
*�sp=memory-&100+16
*�pc_store=memory-&100+20
*�T1R=memory-&100+32
+T2R=memory-&100+40
+T3R=memory-&100+48
+T4R=memory-&100+56
+ screenR=memory-&100+64
+*ifr=memory-&100+76
+4ier=memory-&100+77
+>ifr2=memory-&100+78
+Hier2=memory-&100+79
+Rrom=memory-&100+96
+\
+fROMSEL=memory-&100+92
+promsel=memory-&100+96
+zPalette=memory-&100+164
+�ROMRAM=memory-&100+100
+�(patch_on=memory-&100+176:!patch_on=0
+�lastmode=memory-&100+178
+�fe10=memory-&100+179
+�tape_handle=memory-&100+117
+�tape_count=memory-&100+180
+�ACCCON=memory-&100+172
+�Elatch=memory-&100+188
+�Eifr=memory-&100+189
+�Eier=memory-&100+190
+�ROMint=memory-&100+191
+�speed_loc=memory-&100+196
+�
,P%=code
,	[OPT2
,.Oa
,$
EQUD 0
,..Ox
,8
EQUD 0
,B.Oy
,L
EQUD 0
,V.Of
,`
EQUD 0
,j.Osp
,t
EQUD 0
,~.Opc_store
,�
EQUD 0
,�.start_offset
,�
EQUD 0
,�
.trace
,�
EQUD 0
,�.trace2
,�
EQUD 0
,�.init_addr
,�
EQUD 0
,�
.crt_addr
,�
EQUD 0
,�.T1_addr
-
EQUD 0
-

.ifr_addr
-
EQUD 0
-.column_counter_addr
-(
EQUD 0
-2.ROMSEL_addr
-<
EQUD 0
-F.Palette_addr
-P
EQUD 0
-Z.speed_addr
-d
EQUD 0
-n.elite_addr
-x
EQUD 0
-�(.opco_addr                    EQUD 0
-�(.bcd_addr                     EQUD 0
-�(.sheila_writetab_addr         EQUD 0
-�(.sheila_readtab_addr          EQUD 0
-�(.sound_vectors_addr           EQUD 0
-�(.patch_addr                   EQUD 0
-�]
-��
-�
-�	��rts
-�sp?3=sp?3+1
-�!pc_store?2=memory?(&100+sp?3)
-�sp?3=sp?3+1
.!pc_store?3=memory?(&100+sp?3)
.!!pc_store=!pc_store+(1 << 16)
.�PRINT~!pc_store:Q=GET
."�
.,!!pc_store=&8004 << 16 : � RTS
.6
.@#�pc_store?2=?(sp?3+&101+memory)
.J#�pc_store?3=?(sp?3+&102+memory)
.T�sp?3=sp?3 + 2
.^�
.h
.r��osfile
.|�PRINT"OSFILE "a?3:Q=GET
.�addr=memory+x?3+(y?3)*256
.�Ȏ a?3 �
.�� 0
.�
a%=a?3
.�)b$=�addpath($(�addr(addr!0 � &FFFF)))
.�
c%=addr!2
.�
d%=addr!6
.�e%=�addr((addr!10 � &FFFF))
.�f%=�addr((addr!14 � &FFFF))
.��PRINT~a%,b$,~c%,~d%,e%,~f%
.�,ș "XOS_File",a%,b$,c%,d%,e%,f% � A% ; F
.�#� (F � 1)=0 � �rts � �swi_error
.�� 5
/b$=$(�addr(addr!0 � &FFFF))
/Aș "XOS_File",13,�add_(b$),,,�_path(b$) � A%,,c%,d%,e%,f% ; F
/� (F � 1)=1 �
/&�swi_error
/0�
/:
a?3=A%
/D
addr!2=c%
/N
addr!6=d%
/Xaddr!10=e%
/baddr!14=f%
/l�rts
/v�
/�� 6
/�b$=$(�addr(addr!0 � &FFFF))
/�6ș "XOS_File",6,�addpath(b$) � A%,,c%,d%,e%,f% ; F
/�� (F � 1)=1 �
/��swi_error
/��
/�
a?3=A%
/�
addr!2=c%
/�
addr!6=d%
/�addr!10=e%
/�addr!14=f%
/��rts
/��
0
0	� 255
0
a%=a?3
0 b$=$(�addr(addr!0 � &FFFF))
0*!�B%=(addr!0 AND &FFFF)+memory
04c%=�addr(addr!2 � &FFFF)
0>1� (addr!2 � &FFFF0000)=&FFFE0000 � c%-=&13000
0H
d%=addr?6
0RY� d%<>0 � ș "XOS_File",13,�add_(b$),,,�_path(b$) � ,,c%: d%=0 : c%=�addr(c% � &FFFF)
0\9ș "XOS_File",13,�add_(b$),,,�_path(b$) � ,,,,length%
0f1� c%+length%>memory+&8000 � c%<memory+&8000 �
0plength%=memory+&7FFF-c%
0z3ș "XOS_Find",&4D,�add_(b$),�_path(b$) � A% ; F
0�T� (F � 1)=0 � ș "XOS_GBPB",4,A%,c%,length%:ș "XOS_Find",0,A%:�rts � �swi_error
0��
0�Dș "XOS_File",12,�add_(b$),c%,0,�_path(b$) � A%,,c%,d%,e%,f% ; F
0�
a?3=A%
0�
addr!2=c%
0�
addr!6=d%
0�addr!10=e%
0�addr!14=f%
0�#� (F � 1)=0 � �rts � �swi_error
0��
0�(�PRINT~a%,b$,~c%,~d%,~memory : Q=GET
0�I�SYS "XOS_File",12,FNadd_(b$),c%,0,FN_path(b$) TO A%,,c%,d%,e%,f% ; F
0�	a?3=1
1�a?3=A%
1�addr!2=c%
1�addr!6=d%
1$�addr!10=e%
1.�addr!14=f%
183�IF (F AND 1)=0 THEN PROCrts ELSE PROCswi_error
1B�PRINT~!pc_store : Q=GET
1L
1V�"OSFILE ";a?3 : Q=�
1`�
1j�
1t
1~��swi_error
1��A$
1�	A$=""
1�� I%=0 � 253
1�:�IF A%?I%=0 THEN I%=260 ELSE A$=A$+CHR$(A%?I%):PRINTA$
1�memory?(&102+I%)=A%?(I%+4)
1�� A%?(I%+4)=0 � I%=253
1��
1��A$=A$+CHR$13
1�memory?&100=0
1�memory?&101=?A%
1��$(memory+&102)=A$
1�!pc_store=&100 << 16
2�
2

2��brk(A%,A$)
2A$=A$+�0
2(� I%=0 � �A$-1
22!memory?(&102+I%)=��A$,I%+1,1)
2<�
2Fmemory?&100=0
2Pmemory?&101=A%
2Z!pc_store=&100 << 16
2d�
2n
2x$ݤmin(A%,B%) � A%<B% � =A% � =B%
2�=0
2�
2���osgbpb
2��PRINT"OSGBPB";a?3 : Q=GET
2�addr%=memory+x?3+(y?3 << 8)
2�
b%=?addr%
2�c%=addr%!1
2�d%=addr%!5
2�e%=addr%!9
2�
2�
2�
� a?3=9 �
2�
3^  ș "XOS_GBPB",a?3,fs$+disc$+path$+subpath$,�addr(c% � &FFFF),b%,e%,d%,0 � A%,,,d%,e% ; F
3  � (F � 1)=0 �
3  ?addr%=d%
3"  addr%!9=e%
3,5  � (F � %10)=0 � ?f=(?f � %11111110) � ?f=?f � 1
36
  �rts
3@  �
3J  �swi_error
3T  �
3^
3h�
3r
3|>  ș "OS_FSControl",11,fs$ : � set temporary filing system
3�=  ș "OS_FSControl",0,disc$+path$+subpath$ : � change dir
3�  
3�Y  � (a?3=3 � a?3=4) � c%<&8000 � c%+e%>&8000 � e%=&8000-c% : � stop overflow at &8000
3�  
3�E  ș "XOS_GBPB",a?3,b%,�addr(c% � &FFFF),d%,e% � A%,,c%,d%,e% ; F
3�
3�  ș "OS_FSControl",19
3�
3�  � (F � 1)=0 �
3�  addr%!1=c%-memory
3�  addr%!5=d%
3�  addr%!9=e%
3�5  � (F � %10)=0 � ?f=(?f � %11111110) � ?f=?f � 1
4
  �rts
4  �
4  �swi_error
4&  �
40
4:�
4D�
4N
4X��osargs
4bȎ a?3 �
4l	� 0 :
4v� y?3<>0 �
4�&ș "XOS_Args",a?3,y?3 � A%,,L% ; F
4�3� (F � 1)=0 � memory!(x?3)=L%:�rts � �swi_error
4��
4�a?3=4 : �rts
4��
4�	� 1 :
4�/ș "XOS_Args",a?3,y?3,memory!(x?3) � A% ; F
4�#� (F � 1)=0 � �rts � �swi_error
4�	� 2 :
4�&ș "XOS_Args",a?3,y?3 � A%,,L% ; F
4�3� (F � 1)=0 � memory!(x?3)=L%:�rts � �swi_error
4�� 255 :
4�"ș "XOS_Args",a?3,y?3 � A% ; F
5#� (F � 1)=0 � �rts � �swi_error
5 : �rts
5�
5 �
5*
54ݤupper(A$)
5>
�I%,B$
5H�I%=1 � �A$
5RP� �A$,I%,1)>="a" � �A$,I%,1)<="z" � B$=B$+�(��A$,I%,1)-32) � B$=B$+�A$,I%,1)
5\�
5f=B$
5p
5z
��quit
5�� �
5�ș "X6502_DeRegister" � A%
5�,� A%=0 � ș "XOS_Module",4,"6502Support"
5�ș "Wimp_CloseDown"
5��
5��
5�
5���snap_save(F$)
5Ԃ� �F$,".")=0 � �F$,":")=0 � �F$,6)<>"<Wimp$" � ș "Wimp_ReportError","    To save, drag the file icon to a directory viewer":�
5�	�Q,I%
5�
5�length%=&10200-&8000
5�!buffer=xfer%:buffer!4=4
6"ș "Wimp_GetIconState",,buffer
62� (buffer!24 � 2^21)<>0 � length%=&10200-&4000
6!buffer=xfer%:buffer!4=5
6$"ș "Wimp_GetIconState",,buffer
6.,� (buffer!24 � 2^21)<>0 � length%=&10200
68
6B	Q=�F$
6L�#Q,"BBC Snapshot101"
6V(ș "OS_GBPB",2,Q,memory-&200,length%
6`�#Q
6j"�"SetType "+F$+" "+�~filetype%
6t�
6~
6���snap_load(file$)
6�%� file%,I%,ok%,machine$,M%,patch$
6�file%=�(file$)
6�type$=�#file%
6�$� �#file%=0 � type$="BBC Script"
6�D� �type$,64)=�48,�0)+"!BBC tape file!"+�0 � type$="BBC Tapefile"
6�
6�Ȏ type$ �
6�
6�� "BBC Tapefile"
6�
6��#file%
7tapefile$=file$
7

7� "BBC Script"
7
7(� �
72
7<k� � � : � � : ș "XWimp_ReportError","    Error in script: "+�$,3,"6502Em" � ,A%:� A%=2 � �quit � �poll
7F
7Pscroll_hack%=�
7Z
7d
7n  � �#file% �
7x   A$=""
7�  �
7�   A$=�upper(�#file%)
7�  �
7�  �
7�    B$=�A$,�A$," ")-1)
7�
    ok%=�
7�    Ȏ B$ �
7�    � "PALETTE"
7�/      � �A$,"ON") � Palette%=� � Palette%=�
7�    � "CURSOR"
7�-      � �A$,"ON") � Cursor%=� � Cursor%=�
7�    � "EXACTSPEED"
7�9      � �A$,"ON") � �newspeed(100) � �newspeed(10000)
8    � "SOUND"
81      � �A$,"ON") � sound_on%=� � sound_on%=�
8    � "DISABLETAPE"
8"      �disableCFS
8,    � "SCROLLHACK"
86      scroll_hack%=�
8@    � "KEYMAP"
8J      K$=�A$,�A$-�A$," "))
8T      �setkeymap(K$)
8^    � "PATCH"
8h      � patches%<>0 �
8r        patch%=0
8|        �I%=1 � patches%
8�%          patch$=�A$,�patch$(I%))
8�          �strip(patch$)
8�+          � �upper(patch$(I%))=patch$ �
8�            patch%=I%
8�            �loadpatch
8�          �
8�
        �
8�      �
8�    � "SPEED"
8�       �newspeed(��A$,�A$-6))
8�    � "INDEXFILE"
8�      T$=�A$,�A$-10)
8�#      T%=�(�leaf(file$)+"."+T$)
9d      � T%<>0 � �#T%:indexfile$=�leaf(file$)+"."+T$:index%=0 � � 1,"Index File "+T$+" not found"
9    � "TAPEFILE"
9      T$=�A$,�A$-9)
9&#      T%=�(�leaf(file$)+"."+T$)
90Y      � T%<>0 � �#T%:tapefile$=�leaf(file$)+"."+T$ � � 1,"Tape File "+T$+" not found"
9:    � "LOADROM"
9D      L$=�A$,�A$-8)
9N      � �L$,":")=0 �
9X+        �loadROM(�leaf(file$)+"."+L$,1)
9b      �
9l        �loadROM(L$,1)
9v      �
9�    � "LOADRAM"
9�      L$=�A$,�A$-8)
9�      � �L$,":")=0 �
9�+        �loadROM(�leaf(file$)+"."+L$,0)
9�      �
9�        �loadROM(L$,1)
9�      �
9�    � "KILLROM"
9�      L$=�A$,�A$-8)
9�      � I%=0 � 15
9�8      � ��upper(�ROMname(I%)),�L$)=L$ � �killROM(I%)
9�      �
9�    � "MACHINE"
:      machine$=�A$,�A$-8)
:      �strip(machine$)
:      Ȏ machine$ �
:        � "BBC","BBCB","BBC B"
:*        M%=0
:4-      � "MASTER","MASTER128","MASTER 128"
:>        M%=1
:H-      � "OS3.5","OS 3.5","OS3,5","OS 3.5"
:R        M%=2
:\&      � "COMPACT","MASTER COMPACT"
:f        M%=3
:p      � "ELECTRON","ELK"
:z        M%=4
:�      
:�8        �#file%:� 1,"Unknown machine '"+machine$+"'"
:�      �
:�2      � M%<>machine% � machine%=M%:�newmachine
:�	    
:�      ok%=�
:�	    �
:�    � ok% �
:�      � �#file% �
:�        A$=""
:�      �
:�        A$=�upper(�#file%)
:�      �
;	    �
;�  � �i("PATCH") � �i("PALETTE") � �i("MACHINE") � �i("INDEXFILE") � �i("TAPEFILE") � �i("KEYMAP") � �i("CURSOR") � �i("EXACTSPEED") � �i("DISABLETAPE") � �i("LOADROM") � �i("LOADRAM") � �i("KILLROM") � �i("SOUND") � �i("SCROLLHACK") � �i("SPEED")
;
;$
  �#file%
;.  � A$="" �
;8    A$=�leaf(file$)
;B0    �file_load(A$+"."+�A$,�A$-��leaf(A$)-2))
;L  �
;V4    � �A$,5)="CHAIN" � �A$,1)="*" � �A$," ")>0 �
;`      osrdch$=A$+�13
;j      �reset(2)
;t      osrdch_count%=0
;~#      OSRDCH_loc_tmp=OSRDCH_loc
;�      OSRDCH_loc=3
;�(      �newpath(�leaf(file$)+".JUNK")
;�	    �
;�)      �file_load(�leaf(file$)+"."+A$)
;�	    �
;�  �
;�� "BBC Snapshot   " :
;�  � �#file%=&10110 �
;�/    ș "OS_GBPB",4,file%,memory-&100,&10100
;�    �#file%=&10110-&200
;�(    ș "OS_GBPB",4,file%,sheila,&100
;�  �
<5    ș "OS_GBPB",4,file%,memory-&100,�#file%-&110
<
(    ș "OS_GBPB",4,file%,sheila,&100
<  �
<
  �#file%
<(� "BBC Snapshot101" :
<22  ș "OS_GBPB",4,file%,memory-&200,�#file%-&10
<<
  �#file%
<F : � BBC ROM
<P
  �#file%
<Z  �loadROM(A$,1)
<d�
<n�
<x
<�ݤi(B$)
<�� �A$,B$)=0 � =� � =�
<�=0
<���file_load(F$)
<�imagefile%=�
<��newpath(F$)
<��OSCLI"DIR "+FNleaf(F$)
<��I%=1 � �F$
<�:� �F$,�F$-I%,1)="." � �F$,�F$-I%,1)=":" � L%=I%:I%=�F$
<��
<�A$=�F$,L%)
<�6ș "OS_File",5,F$ � object%,,load2%,exec2%,length%
<�load%=load2% � &FFFF
=exec%=exec2% � &FFFF
=7� object%=0 � exec%=&FFFF : � DFSImage but no !Boot
=#osrdch$="*/"+A$+�13 : � default
="q� exec%=&801F � exec%=&8023 � exec%=&802B � exec%=&80E7 � osrdch$="PAGE=&"+�~load%+�13+"CHAIN"+�34+A$+�34+�13
=,?� (load2% � &FFF00)=&FFB00 � osrdch$="CHAIN"+�34+A$+�34+�13
=6�� exec%=&FFFF � (load2% � &FFF00)=&FFE00 � (load2%=0 � exec2%=0) � osrdch$="*EXEC "+A$+�13:� machine%=0 � osrdch$="PAGE=&1900"+�13+"NEW"+�13+osrdch$
=@
�reset(2)
=Josrdch_count%=0
=TOSRDCH_loc_tmp=OSRDCH_loc
=^OSRDCH_loc=3
=h�
=r
=|��osrdch
=�osrdch_count%+=1
=�"a?3=��osrdch$,osrdch_count%,1)
=��rts
=�R� osrdch_count%=�osrdch$ � OSRDCH_loc=OSRDCH_loc_tmp : �poke(&FFE0,OSRDCH_loc)
=��
=�
=�ݤbinary(B%)
=�
�A$,I%
=�
�I%=0 � 7
=�+� (B% � 2^I%)=0 � A$="0"+A$ � A$="1"+A$
=��
=�=A$
=�
>��newpath(F$)
>'ș "OS_GSTrans",F$,buffer,255 � ,F$
>fs$=�F$,�F$,":"))
>&F$=�F$,�F$-�fs$)
>0
>:� �F$,1)=":" �
>Ddisc$=�F$,�F$,"."))
>NF$=�F$,�F$-�disc$)
>X�
>bdisc$=""
>l�
>v
>�path$=�leaf(F$)
>�subpath$=""
>�H� �path$,�path$-1,1)="." � subpath$=�path$,2):path$=�path$,�path$-2)
>��
>�
>�ݤnumeric(A$)
>�!� A$>="0" � A$<="9" � =� � =�
>�=0
>�ݤadd_(F$)
>�D� �F$,1)=":" � �numeric(�F$,2,1)) � �F$,3,1)="." � F$=�F$,�F$-3)
>�� �F$,":") � =F$
>�A� �F$,1)=�34 � �F$,1)=�34 � F$=�F$,2,�F$-2) : � Remove quotes
>�
?+� (F$="" � �F$,"|")) � indexfile$<>"" �
?Q=�indexfile$
?�#Q=index%
? 
F$=�#Q
?*newindex%=�#Q
?4!� newindex%=�#Q � newindex%=0
?>�#Q
?H�
?R
?\� �F$,2,1)="." �
?f� �F$,1)="$" � =�F$,�F$-2)
?p=F$
?z�
?�=F$
?��
?�=""
?�
?�ݤ_path(F$)
?�D� �F$,1)=":" � �numeric(�F$,2,1)) � �F$,3,1)="." � F$=�F$,�F$-3)
?�� �F$,":") � =""
?�� �F$,2,1)="." �
?�=fs$+disc$+path$+"."
?��
?�!=fs$+disc$+path$+subpath$+"."
?��
?�=""
@
@ݤaddpath(F$)
@D� �F$,1)=":" � �numeric(�F$,2,1)) � �F$,3,1)="." � F$=�F$,�F$-3)
@$� �F$,":") � =F$
@.A� �F$,1)=�34 � �F$,1)=�34 � F$=�F$,2,�F$-2) : � Remove quotes
@8� �F$,2,1)="." �
@B(� �F$,1)="$" � =path$+"."+�F$,�F$-2)
@L=fs$+disc$+path$+"."+F$
@V�
@`$=fs$+disc$+path$+subpath$+"."+F$
@j�
@t=""
@~
@�ݤstrip(F$)
@��I%
@�+�I%+=1:��F$,I%,1)<>"*" � �F$,I%,1)<>" "
@�=�F$,�F$-I%+1)
@�
@���strip(� s$)
@�ȕ �s$,1)=" "
@� s$=�s$,2)
@��
@�ȕ �s$,1)=" "
@� s$=�s$,� s$-1)
@��
A�
A

A��strip2(� s$)
Aȕ �s$,1)=" " � �s$,1)="*"
A( s$=�s$,2)
A2�
A<ȕ �s$,1)=" " � �s$,1)="*"
AF s$=�s$,� s$-1)
AP�
AZ�
Ad
An
��dir(D$)
Ax5FS$=fs$:DISC$=disc$:PATH$=path$:SUBPATH$=subpath$
A��PRINTD$:Q=GET
A��I%
A��I%+=1:��D$,I%,1)<>" "
A�D$=�D$,�D$-I%+1)
A�� �D$," ") �
A�D$=�D$,�D$," ")-1)
A��
A�.� �D$=4 � ��upper(D$),3)="DIR" � D$=�D$,1)
A��
A�
A�� D$="^" �
A�'� subpath$<>"" � subpath$="":�rts:�
A�&� �path$,".")=0 � path$="$":�rts:�
B
I%=�path$
B�I%-=1:��path$,I%,1)="."
Bpath$=�path$,I%-1)
B"
�rts:�
B,�
B6
B@)� D$="$" � �D$=0 � subpath$="":�rts:�
BJ
� �D$=1 �
BT6ș "XOS_File",13,D$,,,fs$+disc$+path$+"." � A% ; F
B^� (F � 1)<>0 � �swi_error:�
Bh�� (A% � 2)=0 � �D$=1 � subpath$="":�rts:� : � no error returned if you try to change to a non-existing single letter directory
BrR� (A% � 2)=0 � �brk(214,"Directory '"+D$+"' not found") � subpath$="."+D$:�rts
B|�
B��
B�
B�� �D$,":")>1 �
B�L� �D$,1)<>":" � ș "XOS_File",17,D$ � A% ; F:� (F � 1)<>0 � �swi_error:�
B�$ș "OS_FSControl",11,D$ � ,E$,E%
B�`� E%<>-1 � ș "OS_FSControl",19:fs$=�D$,�D$-�E$):D$=E$ � �brk(248,"No such filing system"):�
B�path$=""
B�subpath$=""
B�disc$=""
B�� �D$,1)<>":" � path$="$"
B��
B�
B�� �D$,1)=":" �
CI%=0:disc$=""
C� I%+=1
Cdisc$=disc$+�D$,I%,1)
C&� �D$,I%+1,1)="." � I%=�D$
C0+� I%=�D$ � D$="" � D$=�D$,�D$-�disc$-1)
C:path$="":subpath$=""
CD�
CN
CX>� �D$,1)="$" � �D$>2 � path$="$":subpath$="":D$=�D$,�D$-2)
Cb
Cl>� disc$<>"" � �disc$,1)<>"." � path$<>"" � disc$=disc$+"."
Cv?ș "XOS_File",13,D$,,,fs$+disc$+path$+subpath$+"." � A% ; F
C�2� disc$<>"" � �disc$,1)<>"." � disc$=disc$+"."
C�+� (F � 1)<>0 � �restoreCSD:�swi_error:�
C�� (A% � 2)=0 �
C��restoreCSD
C�,�brk(214,"Directory '"+D$+"' not found")
C��
C�� D$<>"" �
C�D� path$<>"" � path$=path$+subpath$+"."+D$:subpath$="" � path$=D$
C��
C��rts
C��
C�� path$="" � path$="$"
C��
D
D
��back
DȔ fs$,FS$
D Ȕ disc$,DISC$
D*Ȕ path$,PATH$
D4Ȕ subpath$,SUBPATH$
D>�
DH
DR��restoreCSD
D\5fs$=FS$:disc$=DISC$:path$=PATH$:subpath$=SUBPATH$
Df�
Dp
Dz��osfsc
D��PRINT"OSFSC ";a?3:Q=GET
D�Ȏ a?3 �
D�$  � 1   : �x?3=(EOF#x?3) AND &FF
D�2             ș "XOS_Args",5,x?3 � A%,,x?3 ; F
D�0             � (F � 1)=0 � �rts � �swi_error
D�#             � x?3<>0 � x?3=&FF
D�*  � 3   : addr=�addr(x?3+((y?3) << 8))
D�!             b$=�strip($addr)
D�?             ș "XOS_Find",&4D,�add_(b$),�_path(b$) � Q ; F
D�             A%=Q
D�
D�%             � Q=0 � (F � 1)<>0 �
D�K             � ��upper(b$),4)="DIR " � (��upper(b$),3)="DIR" � �b$=4) �
E!             �dir(�b$,�b$-4))
E             �
E             � Oscli% �
E$)             ș "XOS_CLI",b$ � A% ; F
E.0             � (F � 1)=0 � �rts � �swi_error
E8             �
EB(             �brk(254,"Bad Command")
EL             �
EV             �
E`             �
Ej             �#Q
Et              b$=�addpath(b$)
E~C             ș "OS_File",5,b$ � ,,c%,d% : c%=�addr(c% � &FFFF)
E�)             ș "OS_File",255,b$,c%,0
E�#             !pc_store=d% << 16
E�             �
E�*  � 2,4 : addr=�addr(x?3+((y?3) << 8))
E�             b$=$addr
E�"             �b$=FNaddpath(b$)
E�h             ș "XOS_File",13,�add_(b$),,,�_path(b$) � A%,,c%,d%,length% ; f% : c%=�addr(c% � &FFFF)
E�V             � c%+length%>memory+&8000 � c%<memory+&8000 � length%=memory+&8000-c%
E�A             ș "XOS_Find",&4D,�add_(b$),�_path(b$) � A% ; f%
E�P             � (f% � 1)=0 � ș "XOS_GBPB",4,A%,c%,length%:ș "XOS_Find",0,A%
E�_             �IF (f% AND 1)=0 THEN SYS "XOS_File",12,FNadd_(b$),c%,0,FN_path(b$) TO A% ; f%
E�?             � (f% � 1)=0 � !pc_store=d% << 16 � �swi_error
F,  � 5   : �rts:�OSCLI"CAT":Q=GET:PROCrts
F
  � 0,6,8 : �rts
F3  � 9,10,11 : �rts : � *EX, *INFO, *RUN (LibFS)
F    �"OSFSC ";a?3 : Q=�
F(�
F2�
F<
FF��osfind
FPaddr=�addr(x?3+(y?3)*256)
FZ
� a?3=0 �
Fd ș "XOS_Find",0,y?3 � A% ; F
Fn(A%=0:F=0 : � fix for Master 128 !?!?
Fx�
F�?ș "XOS_Find",(a?3) � 1,�add_($addr),�_path($addr) � A% ; F
F��
F�,� (F � 1)=0 � a?3=A% : �rts � �swi_error
F��
F�
F���osbget
F�$ ș "XOS_BGet",a?3,y?3 � A% ; F%
F� � (F � 1)=0 �
F� a?3=A%
F� ?f=?f � %11111110
F� � (F% � 2)<>0 � ?f+=1
F�	 �rts
F� �
G �swi_error
G �
G�
G"
G,��osbput
G6# ș "XOS_BPut",a?3,y?3 � A% ; F
G@$ � (F � 1)=0 � �rts � �swi_error
GJ�
GT
G^��sprite_save(F$)
Gh�� �F$,".")=0 � �F$,":")=0 � �F$,6)<>"<Wimp$" � ș "Wimp_ReportError","    To save, drag the file icon to a directory viewer":�
Gr%ș "OS_SpriteOp",256+12,sprite,F$
G|�
G�
G�ݤkeymap(A$)
G��I%
G��I%=1 � keymaps%
G�*� �upper(keymap$(I%))=�upper(A$) � =I%
G��
G�=0
G�
G���setkeymap(A$)
G��I%
G�KeyMap$="Default"
G�5� �upper(A$)="RISCPC" � �upper(A$)="ARCHIMEDES" �
G�A$="Default"
H�
H� "Set 6502Em$Keymap "+A$
H�pokeicontext(12,A$)
H&�I%=1 � keymaps%
H0D� �upper(keymap$(I%))=�upper(A$) � KeyMap$=A$:keymap%=I%:I%=1000
H:�
H;.�readkeys("<6502Em$Dir>.Keymaps."+KeyMap$)
HD�
HN
HX��readkeymaps
Hb� offset%,N%
Hl
keymap%=0
Hvkeymaps%=0
H��
H�Oș "OS_GBPB",9,"<6502Em$Dir>.Keymaps",q%,100,offset%,&100,0 � ,,,N%,offset%
H�keymaps%+=N%
H�� offset%=-1
H�!� keymaps%=0 � keysmenu%=-1:�
H�1� keymap$(keymaps%), keysmenu% 32+24*keymaps%
H�
offset%=0
H�� N%=1 � keymaps%
H�Kș "OS_GBPB",9,"<6502Em$Dir>.Keymaps",q%,1,offset%,&100,0 � ,,,,offset%
H�keymap$(N%)=�string(q%)
H��
H��
H�
I��readspeeds
I�I%
IQ=�"<6502Em$Res>.SpeedMenu"
I speeds%=-1
I*�speeds%+=1
I4
A$=�#Q
I>��#Q � A$=""
IH� A$="" � speeds%-=1
IR	�#Q=0
I\3� speed$(speeds%), speedmenu% 32+24*(speeds%+3)
If�I%=0 � speeds%
Ipspeed$(I%)=�#Q
Iz�
I��#Q
I��
I�
I�
I���readpatches
I�� offset%,N%
I�patch%=0
I�patches%=0
I��
I�Oș "OS_GBPB",9,"<6502Em$Dir>.Patches",q%,100,offset%,&100,0 � ,,,N%,offset%
I�patches%+=N%
I�� offset%=-1
I�"� patches%=0 � patchmenu%=-1:�
J5� patch$(patches%), patchmenu% 32+24*(patches%+2)
J
offset%=0
J� N%=1 � patches%
J$Kș "OS_GBPB",9,"<6502Em$Dir>.Patches",q%,1,offset%,&100,0 � ,,,,offset%
J.patch$(N%)=�string(q%)
J8�
JB�
JL
JVݤstring(A%)
J`
�A$,I%
Jj�
JtA$=A$+�(A%?I%)
J~	I%+=1
J��A%?I%=0
J�=A$
J�
J���loadpatch
J�J� "Load <6502Em$Dir>.Patches."+patch$(patch%)+" "+�~(code+!patch_addr)
J�?patch_on=?patch_on � 1
J�$�pokeicontext(14,patch$(patch%))
J��
J�
J�ݤosword14_1(A%)
J�
?buffer=1
J�ș "OS_Word",14,buffer
K=buffer?A%
K

K��readCMOS
KȎ x?3 � 63 �
K(� 0    : y?3=�osword14_1(6)
K2� 1    : y?3=1
K<� 2    : y?3=�osword14_1(5)
KF� 3    : y?3=1
KP� 4    : y?3=�osword14_1(4)
KZ� 5    : y?3=1
Kd� 6    : y?3=�osword14_1(3)
Kn� 7    : y?3=�osword14_1(2)
Kx� 8    : y?3=�osword14_1(1)
K�� 9    : y?3=�osword14_1(0)
K�� 10   : y?3=%00100000
K�� 11   : y?3=%00000010
K�� 12   : y?3=0
K�� 13   : y?3=0
K� : y?3=cmos%(x?3 � 63)
K�
K��
K�
K�a?3=y?3
K�
K�0�PRINTTAB(0,0);x?3 AND 63;" ";y?3;"  ":Q=GET
K��rts
L�
L
L��readEEPROM
L"y?3=eeprom%(x?3)
L,a?3=y?3
L6�rts
L@�
LJ
LT��writeCMOS
L^cmos%(x?3 � 63)=y?3
Lh�rts
Lr� (x?3 � 63)>13 �
L|Q=� "<6502Em$Res>.CMOS"
L��#Q=x?3 � 63
L��#Q,y?3
L��#Q
L��
L��
L�
L���writeEEPROM
L�eeprom%(x?3)=y?3
L��rts
L�Q=� "<6502Em$Res>.EEPROM"
L��#Q=x?3
L��#Q,y?3
L��#Q
M�
M
M��loadCMOS
M&
� Q,I%
M0Q=� "<6502Em$Res>.CMOS"
M:� I%=0 � 63
MDcmos%(I%)=�#Q
MN�
MX�#Q
Mb�
Ml
Mv��loadEEPROM
M�
� Q,I%
M�Q=� "<6502Em$Res>.EEPROM"
M�� I%=0 � 255
M�eeprom%(I%)=�#Q
M��
M��#Q
M��
M�
M���loadcode(C$)
M�'�"LOAD <6502Em$Dir>."+C$+" "+�~code
M�� code+!init_addr
M��sound_reinit
M�� patch%<>0 � �loadpatch
N�
N
N��master
N �loadcode("CodeM")
N*:�"LOAD <6502Em$Dir>.ROMS.M128.OS3,2 "+�~(memory+&C000)
N4>�"LOAD <6502Em$Dir>.ROMS.M128.OS3,2 "+�~(roms+romsize%*16)
N>)�"LOAD <6502Em$Res>.SHEILA "+�~sheila
NHsocket%=15
NR�loadROM("M128.Terminal",1)
N\?(roms+romsize%*15+&18B7)=3
Nf9?(roms+romsize%*15+&18B8)=&80 : � intercept .readCMOS
Np?(roms+romsize%*15+&18E4)=3
Nz:?(roms+romsize%*15+&18E5)=&81 : � intercept .writeCMOS
N��loadROM("M128.View",1)
N��loadROM("VDFS",1)
N��PROCloadROM("M128.ADFS",1)
N� �loadROM("M128.BASICIV84",1)
N��loadROM("M128.Edit1,00",1)
N� �loadROM("M128.ViewSheet",1)
N��loadROM("M128.DFS2,24",1)
N��?(roms+&4000*9+&1163)=3
N�9�?(roms+&4000*9+&1164)=&82 : REM intercept OSWORD 7F?
N��PROCloadROM("VDFS",1)
N�
�SRRAM
N�
�SRRAM
N�
�SRRAM
O
�SRRAM
O
�SRRAM
O�
O$
O.��master35
O8�loadcode("CodeM")
OB:�"LOAD <6502Em$Dir>.ROMS.M128.OS3,5 "+�~(memory+&C000)
OL>�"LOAD <6502Em$Dir>.ROMS.M128.OS3,5 "+�~(roms+romsize%*16)
OV)�"LOAD <6502Em$Res>.SHEILA "+�~sheila
O`socket%=15
Oj!�loadROM("M128.Terminal35",1)
Ot?(roms+romsize%*15+&16A3)=3
O~9?(roms+romsize%*15+&16A4)=&80 : � intercept .readCMOS
O�?(roms+romsize%*15+&16D0)=3
O�:?(roms+romsize%*15+&16D1)=&81 : � intercept .writeCMOS
O��loadROM("M128.ViewB3,3",1)
O��loadROM("VDFS",1)
O�#�PROCloadROM("M128.ADFS2,03",1)
O� �loadROM("M128.BASIC4r32",1)
O� �loadROM("M128.Edit1,50r",1)
O�!�loadROM("M128.ViewSh1,01",1)
O��loadROM("M128.DFS2,45",1)
O��?(roms+&4000*9+&1163)=3
O�9�?(roms+&4000*9+&1164)=&82 : REM intercept OSWORD 7F?
O��PROCloadROM("VDFS",1)
P
�SRRAM
P

�SRRAM
P
�SRRAM
P
�SRRAM
P(
�SRRAM
P2�
P<
PF
��compact
PP�loadcode("CodeM")
PZ=�"LOAD <6502Em$Dir>.ROMS.Compact.OS5,1 "+�~(memory+&C000)
Pd>�"LOAD <6502Em$Dir>.ROMS.Compact.OS5,1 "+�~(roms+&4000*16)
Pn)�"LOAD <6502Em$Res>.SHEILA "+�~sheila
Pxsocket%=15
P��loadROM("Compact.Utils",1)
P�%?(roms+romsize%*15+&9E3A-&8000)=3
P�??(roms+romsize%*15+&9E3B-&8000)=&82 : � intercept .readCMOS
P�%?(roms+romsize%*15+&9F3A-&8000)=3
P�@?(roms+romsize%*15+&9F3B-&8000)=&83 : � intercept .writeCMOS
P�#�loadROM("Compact.BASICIV86",1)
P��PROCloadROM("M128.ADFS",1)
P��loadROM("VDFS",1)
P�
socket%=7
P�
�SRRAM
P�
�SRRAM
P�
�SRRAM
P�
�SRRAM
Q�
Q
Q��electron
Q"�loadcode("CodeE")
Q,8�"LOAD <6502Em$Dir>.ROMS.ELECTRON "+�~(memory+&C000)
Q6�memory?&F0E8=3 : REM OSFSC
Q@ �memory?&FFCE=3 : REM OSFIND
QJ �memory?&FFD1=3 : REM OSGBPB
QT �memory?&FFD4=3 : REM OSBPUT
Q^ �memory?&FFD7=3 : REM OSBGET
Qh �memory?&FFDA=3 : REM OSARGS
Qr �memory?&FFDD=3 : REM OSFILE
Q|
Q�socket%=15
Q��loadROM("BASICII",1)
Q��loadROM("VDFS",1)
Q��
Q�
Q�
��BBCB
Q��loadcode("Code")
Q�
?ACCCON=0
Q�5�"LOAD <6502Em$Dir>.ROMS.OS1,2 "+�~(memory+&C000)
Q�>�OSCLI"LOAD <6502Em$Dir>.ROMS.OS1,2 "+STR$~(roms+&4000*16)
Q�)�"LOAD <6502Em$Res>.SHEILA "+�~sheila
Q��memory?&F1B1=3 : REM OSFSC
Q� �memory?&FFCE=3 : REM OSFIND
R �memory?&FFD1=3 : REM OSGBPB
R �memory?&FFD4=3 : REM OSBPUT
R �memory?&FFD7=3 : REM OSBGET
R& �memory?&FFDA=3 : REM OSARGS
R0 �memory?&FFDD=3 : REM OSFILE
R:
RDsocket%=15
RN�loadROM("BASICII",1)
RX�loadROM("VDFS",1)
Rb
�SRRAM
Rl�
Rv
R���newmachine
R�$�clearmem(roms,roms+16*romsize%)
R�)�clearmem(memory-&200,memory+64*1024)
R�
�initROMs
R�
R�� machine%>4 � machine%=0
R�?�IF Machine%(machine%)=FALSE THEN machine%=default_machine%
R�
R�(�pokeicontext(10,Machine$(machine%))
R�
R�Ȏ machine% �
R�
R�	� 1 :
S/� Machine%(1)=0 � machine%+=1:�newmachine:�
S�master
S
S 	� 2 :
S*/� Machine%(2)=0 � machine%+=1:�newmachine:�
S4
�master35
S>
SH	� 3 :
SR/� Machine%(3)=0 � machine%+=1:�newmachine:�
S\�compact
Sf
Sp	� 4 :
Sz
�electron
S�
S�
 : �BBCB
S��
S��PROCreset(1)
S��OSRDCH_loc=FNpeek(&FFE0)
S�OSRDCH_loc=memory?&FFE0
S�
S�(�reinstall(MachineSprite$(machine%))
S�
S�
�reset(1)
S�
S��
S�
T��default_options
T&tapefile$="<6502Em$Dir>.^.Tape-In"
TPalette%=�
T$
OSRDCH%=�
T.
ROMSEL%=�
T8
Cursor%=�
TBOscli%=�
TLmachine%=default_machine%
TVsound_on%=�
T`scroll_hack%=�
Tjfile_xxx=�
Ttvolume%=127
T~�setkeymap("Default")
T��newspeed(100)
T��
T�
T���save_options
T�Q=�"<6502Em$Res>.Options"
T��#Q,Palette%
T��#Q,OSRDCH%
T��#Q,ROMSEL%
T��#Q,Cursor%
T��#Q,Oscli%
T�	�#Q,0
T��#Q,machine%
U�#Q,sound_on%
U
�#Q,file_xxx
U�#Q,volume%
U�#Q,KeyMap$
U(
�#Q,speed
U2�#Q
U<�
UF
UP��load_options
UZ&tapefile$="<6502Em$Dir>.^.Tape-In"
UdQ=�"<6502Em$Res>.Options"
Un � Q=0 � �default_options : �
Ux�#Q,Palette%
U��#Q,OSRDCH%
U��#Q,ROMSEL%
U��#Q,Cursor%
U��#Q,Oscli%
U��#Q,exact%
U��#Q,machine%
U��#Q,sound_on%
U�scroll_hack%=�
U��#Q,file_xxx
U��#Q,volume%
U��#Q,K$ : �setkeymap(K$)
U�
�#Q,speed
U��#Q
V�
V
V��swapmem(A%,B%,C%)
V"
P%=buffer
V,	[OPT2
V6	.swap
V@SUBS R2,R2,#4
VJLDR R3,[R0,R2]
VTLDR R4,[R1,R2]
V^STR R3,[R1,R2]
VhSTR R4,[R0,R2]
VrBNE swap
V|MOV PC,R14
V�]
V�
� swap
V��
V�
V���clearmem(S%,E%)
V�
P%=buffer
V�	[OPT2
V�EQUD S% ; memory
V�EQUD E% ; memory+&8000
V�
.clear
V�
MOV R0,#0
V�LDR R1,buffer
V�LDR R2,buffer+4
W	.loop
WSTR R0,[R1],#4
W
CMP R1,R2
W&BNE loop
W0MOV PC,R14
W:]
WD� clear
WN�
WX
Wb
��osbyte2
Wl�rts
Wv�
W�
W�
��osword2
W�4�addr,sec%,len%,buff%,track%,log_sec_size,drive%
W�addr=memory?&F0
W�addr+=memory?&F1 << 8
W�addr=�addr(addr)
W�Ȏ memory?&EF �
W�	� &7F
W�� dfssupport �
W�9ș "XImageDFS_OSWORD7F",,memory?&F0,memory?&F1,memory
W�	a?3=0
W��
W�drive%=addr?0
Xbuff%=�addr(addr!1 � &FFFF)
Xtrack%=addr?7
Xsec%=addr?8
X len%=(addr?9) � %11111
X*$log_sec_size=((addr?9) >> 5) + 7
X4buffer?0=log_sec_size
X>buffer?1=10
XHbuffer?2=1 : � heads
XRbuffer?3=1
X\buffer!4=0
Xfbuffer!8=0
Xp&buffer!12=1 << 29 : � drive% << 29
Xzbuffer!16=&64000
X�buffer!20=0
X�buffer!24=0
X�buffer!28=0
X��ș "XADFS_DiscOp",,1+(buffer << 6),(track%*10+sec%)*2^log_sec_size+(osword7F_drive% << 29),buff%,len%*2^log_sec_size � A% ; F
X�(� (F � 1)=0 � addr?10=0 � addr?10=A%
X�
X�	a?3=0
X�
X��
X�
X�	� &72
X��PRINT"OSWORD 72";addr?5
X�� addr?5=8 �
Ysec%=addr?8
Ysec%+=addr?7 << 8
Y!sec%+=(addr?6 � %11111) << 16
Y$len%=addr?9
Y.buff%=�addr(addr!1 � &FFFF)
Y8
YBQș "XADFS_DiscOp",,1,sec%*256+(osword72_drive% << 29),buff%,len%*256 � A% ; F
YL$� (F � 1)=0 � ?addr=0 � ?addr=A%
YV
Y`V�OSCLI"SAVE MEM:DUMP "+STR$~buff%+" +"+STR$~(len%*256)+" "+STR$~(addr!1 AND &FFFF)
Yj
Yt!a?3=0 : � claim service call!
Y~�
Y�! �PRINT"OSWORD ";~?&EF:Q=GET
Y��
Y�
Y��rts
Y��PRINT~!pc_store
Y�
�Q=GET
Y��
Y�
Y���split(� A$,� B$)
Y�� I%
Y�ȕ �A$,1)=" "
Y�A$=�A$,�A$-1)
Z�
Z
�I%=2 � �A$
Z;� �A$,I%,1)="+" � A$=�A$,I%-1)+" "+�A$,1+�A$-I%):I%=255
Z�
Z(I%=�A$," ")
Z2B�IF INSTR(A$,"+")>1 AND INSTR(A$,"+")<I% THEN I%=INSTR(A$,"+")
Z<B$=�A$,I%-1)
ZFA$=�A$,�A$-I%)
ZP�
ZZ
Zd��split2(� A$,� B$)
Zn� I%
Zxȕ �A$,1)=" "
Z�A$=�A$,�A$-1)
Z��
Z�I%=�A$," ")
Z�B$=�A$,I%-1)
Z�A$=�A$,�A$-I%)
Z��
Z�
Z���split3(� A$,� B$)
Z�� I%,J%
Z� ȕ (�A$,1)=" " � �A$,1)=".")
Z�A$=�A$,�A$-1)
Z��
Z�I%=�A$," ")
[J%=�A$,".")
[#� J%>0 � (J%<I% � I%=0) � I%=J%
[B$=�A$,I%-1)
["A$=�A$,�A$-I%)
[,�
[6
[@
��srwrite
[J
[T� A$,C$,addr,I%,J%
[^addr=memory?&F2
[haddr+=(memory?&F3) << 8
[raddr=�addr(addr)
[|
addr+=y?3
[�C$=$addr
[�
[��split(C$,A$)
[�
[�%� �A$>4 � �brk(0,"Bad Address"):�
[��I%=1 � �A$
[�J%=��A$,I%,1)
[�A� (J%<48 � J%>57) � (J%<65 � J%>70) � �brk(0,"Bad Address"):�
[��
[�
[�start%=�("&"+A$)
[�
[�,� start%>&8000 � �brk(0,"Bad Address"):�
\
\�split(C$,A$)
\
\&5� �A$,1)="+" � end%=start%:A$=�A$,�A$-1) � end%=0
\0
\:%� �A$>4 � �brk(0,"Bad Address"):�
\D�I%=1 � �A$
\NJ%=��A$,I%,1)
\XA� (J%<48 � J%>57) � (J%<65 � J%>70) � �brk(0,"Bad Address"):�
\b�
\l
\vend%+=�("&"+A$)
\�
\�8� end%<start% � end%>&8000 � �brk(0,"Bad Address"):�
\�
\��split(C$,A$)
\�
\�&� �A$<>4 � �brk(0,"Bad Address"):�
\��I%=1 � �A$
\�J%=��A$,I%,1)
\�A� (J%<48 � J%>57) � (J%<65 � J%>70) � �brk(0,"Bad Address"):�
\��
\�
\�dest%=�("&"+A$)
\�
]9� dest%<&8000 � dest%>&BFFF � �brk(0,"Bad Address"):�
]
]�split(C$,A$)
] Ȏ �A$ �
]*� 1
]4
A%=�A$
]>+� A%>=�"W" � A%<=�"Z" � A%=A%-�"W"+�"4"
]H� A%>64 � A%<71 � A%-=7
]Rsocket%=A%-48
]\5� socket%>15 � socket%<0 � �brk(0,"Bad Socket"):�
]f� 2
]pP� �A$,1)<"0" � �A$,1)>"9" � �A$,1)<"0" � �A$,1)>"9" � �brk(0,"Bad Socket"):�
]zsocket%=�A$
]�5� socket%>15 � socket%<0 � �brk(0,"Bad Socket"):�
]�
]��brk(0,"Bad Socket"):�
]��
]�
]�$�PRINT~start%,~end%,~dest%:Q=GET
]�
]�.� I%=0 � �min(end%-start%,&BFFF-dest%) � 4
]�>!(roms+romsize%*socket%+I%+dest%-&8000)=start%!(memory+I%)
]��
]�
]�ROMRAM?socket%=0
]�
^	a?3=0
^�rts
^
^$�
^.
^8��mount
^B� A$,C$,addr,drive%
^Laddr=memory?&F2
^Vaddr+=(memory?&F3) << 8
^`addr=�addr(addr)
^j�addr+=y?3
^tC$=$addr
^~
^��strip2(C$)
^�
^�6� ��upper(C$),5)="MOUNT" � :C$="MOUNT "+�C$,�C$-5)
^�
^��split3(C$,file$)
^�
^��split3(C$,A$)
^�
^�drive%=�A$
^�
^�*�SYS "OS_File",5,"ADFS::"+A$+".$" TO Q
^�ș "ADFS_Drives" � D%,F%,H%
_� A$="" � a?3=0:�rts:�
_
,� drive%<F% � (drive%>3 � drive%<H%+4) �
_fs$="ADFS:"
_disc$=":"+�drive%+"."
_(
path$="$"
_2subpath$=""
_<
_F	a?3=0
_P�rts
_Z�
_d�brk(0,"Bad drive "+A$):�
_n�
_x
_��
_�
_�
_���drive
_�� A$,C$,addr,drive%
_�addr=memory?&F2
_�addr+=(memory?&F3) << 8
_�addr=�addr(addr)
_��addr+=y?3
_�C$=$addr
_��strip2(C$)
_�5� ��upper(C$),5)="DRIVE" � C$="DRIVE "+�C$,�C$-5)
_�
`�split3(C$,file$)
`
`�split3(C$,A$)
`"drive%=�C$
`,
`6Ȏ C$ �
`@� "0","1","2","3"
`J� dfssupport �
`T � imagefile% �
`^(  path$=�path$,�path$,"DFSSide2")-2)
`h �
`r5  ș "ImageDFS_DFSToADFSDrive",drive% � dfsdrive%
`|%  �path$="ADFS::"+STR$drive%+".$"
`�4  fs$="ADFS:":disc$=":"+�dfsdrive%+".":path$="$"
`� �
`��
`�' path$=�path$,�path$,"DFSSide2")-2)
`��
`�
`�subpath$=""
`�� drive%=2 � drive%=3 �
`�2ș "OS_File",5,fs$+disc$+path$+".DFSSide2" � Q
`�"� Q<>0 path$=path$+".DFSSide2"
`��
`�
`�
� "R","r"
a�readCSD
a
a
a&�brk(0,"Bad Drive "+C$):�
a0
a:�
aD
aN	a?3=0
aX�rts
ab�
al
av��srload
a�� A$,C$,addr,I%,J%
a�addr=memory?&F2
a�addr+=(memory?&F3) << 8
a�addr=�addr(addr)
a�
addr+=y?3
a�C$=$addr
a�
a��split2(C$,file$)
a�
a��split(C$,A$)
a�&� �A$<>4 � �brk(0,"Bad Address"):�
a��I%=1 � �A$
a�J%=��A$,I%,1)
bA� (J%<48 � J%>57) � (J%<65 � J%>70) � �brk(0,"Bad Address"):�
b�
b
b load%=�("&"+A$)
b*9� load%<&8000 � load%>&BFFF � �brk(0,"Bad Address"):�
b4�split(C$,A$)
b> � �A$,1)="Q" � A$=�A$,�A$-1)
bHȎ �A$ �
bR� 1
b\
A%=�A$
bf+� A%>=�"W" � A%<=�"Z" � A%=A%-�"W"+�"4"
bp� A%>64 � A%<71 � A%-=7
bzsocket%=A%-48
b�5� socket%>15 � socket%<0 � �brk(0,"Bad Socket"):�
b�� 2
b�P� �A$,1)<"0" � �A$,1)>"9" � �A$,1)<"0" � �A$,1)>"9" � �brk(0,"Bad Socket"):�
b�socket%=�A$
b�5� socket%>15 � socket%<0 � �brk(0,"Bad Socket"):�
b�
b��brk(0,"Bad Socket"):�
b��
b�
b�?ș "XOS_Find",&40+%1101,�add_(file$),�_path(file$) � A% ; F
b�� (F � 1)<>0 � �swi_error:�
b�	H%=A%
b�Mș "XOS_GBPB",4,A%,load%-&8000+roms+romsize%*socket%,&C000-load% � A% ; F
c� (F � 1)<>0 � �swi_error:�
c?(ROMRAM+socket%)=0
cș "XOS_Find",0,H% � A% ; F
c$� (F � 1)<>0 � �swi_error:�
c.
c8	a?3=0
cB�rts
cL�
cV
c`��elkkeys(F$)
cj
ct� Q,S$,K%,A$
c~
c�%ș "6502_GetElectronMap" � keymap
c�
c��I%=0 � 1023 � 4
c�keymap!I%=&FF
c��
c�
c�	Q=�F$
c�� Q=0 � � 0,F$+" not found"
c��
c�S$=�getword
c�� �S$,1)="#" �
c�  �ignoreline
d)  � �S$,"RiscPC") � �-256<&A5 � S$=""
d
�
d  � S$<>"" �
d    S%=�getelk(S$)
d(	    �
d2    A$=�getword
d<    � A$<>"" �
dF      K%=�getarc(A$)
dP      keymap!(K%*4)=S%
dZ	    �
dd    �A$=""
dn  �
dx�
d�� S$="" � �#Q
d�
d��#Q
d�
d��
d�
d���readkeys(F$)
d�
d�� Q,S$,K%,A$,shift%
d�
d�(ș "6502_ReadKeyMapAddress" � keymap
d��I%=0 � 255+256
d�keymap?I%=255
e�
e
e	Q=�F$
e"� Q=0 � � 0,F$+" not found"
e,�
e6S$=�getword
e@� �S$,1)="#" �
eJ  �ignoreline
eT)  � �S$,"RiscPC") � �-256<&A5 � S$=""
eh�
er  � S$<>"" �
e|@    � �S$,1)="s" � �S$>1 � shift%=�:S$=�S$,�S$-1) � shift%=�
e�#    �VDU4:PRINTS$:VDU5:PRINTGET
e�    S%=�getbbc(S$)
e�	    �
e�    A$=�getword
e�    � A$<>"" �
e�      K%=�getarc(A$)
e�#      � shift%=� � keymap?K%=S%
e�      keymap?(K%+256)=S%
e�	    �
e�    �A$=""
e�  �
e��
e�� S$="" � �#Q
f
f�#Q
f
f&�
f0
f:
ݤgetword
fD� I%,A$
fN� I%=�#Q : � I%>32 � I%=10
fX� I%=10 � =""
fb
A$=�I%
fl"� I%=�#Q : A$=A$+�I% : � I%<33
fv
�#Q=�#Q-1
f�=�A$,�A$-1)
f�
f���ignoreline
f��I%
f�� I%=�#Q : �I%=&A
f��
f�
f�ݤgetelk(A$)
f�
�I%,J%,K%
f�
�I%=0 � 3
f��J%=0 � 13
f�0� Elec$(I%,J%)=A$ � K%=(I%<<8)+J%:I%=4:J%=14
f��
g�
g=K%
g
g ݤgetbbc(A$)
g*
�I%,J%
g4� I%=0 � &7C
g> � BBC$(I%)=A$ � J%=I%:I%=&80
gH�
gR=J%
g\
gfݤgetarc(A$)
gp
�I%,J%
gz� I%=&0 � &78
g� � ARC$(I%)=A$ � J%=I%:I%=&68
g��
g�=J%
g�
g�� Electron Keys
g�-� Escape,1,2,3,4,5,6,7,8,9,0,-,Left,Right
g�/� CapsLock,Q,W,E,R,T,Y,U,I,O,P,Up,Down,Copy
g�*� Ctrl,A,S,D,F,G,H,J,K,L,;,:,Return,""
g�1� Shift,Z,X,C,V,B,N,M,",",.,/,"",Delete,Space
g�
g�� BBC Keys
g�A� Shift,Ctrl,bit7,bit6,bit5,bit4,bit3,bit2,bit1,bit0,"","",""
g�'� Q,3,4,5,f4,8,f7,-,^,Left,K6,K7,""
h&� f0,W,E,T,7,I,9,0,_,Down,K8,K9,""
h(� 1,2,D,R,6,U,O,P,[,Up,K+,K-,KReturn
h5� CapsLock,A,X,F,Y,J,K,@,:,Return,K/,KDelete,"K."
h$1� ShiftLock,S,C,G,H,N,L,;,],Delete,K#,K*,"K,"
h./� Tab,Z,Space,V,B,M,",",".",/,Copy,K0,K1,K3
h82� Escape,f1,f2,f3,f5,f6,f8,f9,\,Right,K4,K5,K2
hB
hL� RISC OS Keys
hV>� Escape,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,"",Print,"",""
h`�� `,1,2,3,4,5,6,7,8,9,0,-,=,�,<-|,Insert,Home,PageUp,NumLock,K/,K*,K#,Tab,Q,W,E,R,T,Y,U,I,O,P,[,],\,Delete,Copy,PageDown,K7,K8,K9,K-,LCtrl,A,S,D,F,G,H,J,K,L,;,',Return,K4,K5,K6,K+
hjq� LShift,,Z,X,C,V,B,N,M,",",.,/,RShift,Up,K1,K2,K3,CapsLock,LAlt,Space,RAlt,RCtrl,Left,Down,Right,K0,K.,Enter
ht5� "","","","","","","","","","","","","","","",""
h~� # : REM Risc PC key #~
h�
h���setmemmap
h�-� paging%=� � machine%=0 � machine%=4 � �
h�!&97000=&A0A0A0A0
h�!&97004=&A0A0A0A0
h�!&97008=&A0A0A0A0
h�!&9700C=&A0A0A0A0
h�a�IF (?ACCCON AND %100)<>0 THEN ?&97003=&8D:!&97004=&8D8D8D8D:PROCswapmem(&A3000,&90000,&5000)
h�=�swapmem(&A8000,roms+(?romsel � %1111)*romsize%,romsize%)
h�#?&97008=&44+(?romsel � %1111)*4
h�#?&97009=&44+(?romsel � %1111)*4
h�#?&9700A=&44+(?romsel � %1111)*4
i#?&9700B=&44+(?romsel � %1111)*4
i
R� (?ACCCON � %1000)<>0 � ?&9700C=&89:?&9700D=&89:�swapmem(&AC000,&95000,&2000)
iJ� (?romsel � %10000000)<>0 � ?&97008=&89:�swapmem(&A8000,&9D000,&1000)
i
i(�
i2
i<��setmemmap2
iF-� paging%=� � machine%=0 � machine%=4 � �
iP>� (?romsel � %10000000)<>0 � �swapmem(&A8000,&9D000,&1000)
iZ:� (?ACCCON � %1000)<>0 � �swapmem(&AC000,&95000,&2000)
id=�swapmem(&A8000,roms+(?romsel � %1111)*romsize%,romsize%)
inC�IF (?ACCCON AND %100)<>0 THEN PROCswapmem(&A3000,&90000,&5000)
ix�
i�
i�ݤpeek(A%)=?�addr(A%)
i�
i�ݤaddr(A%)=memory+A%
i�
i�ݤaddr2(A%)
i�� B%,C%,D%
i�+� paging% � (machine%>0 � machine%<4) �
i�B%=&97000+(A%>>>12)
i�C%=(?B%)<<12
i�D%=A%+C%
i��
i�D%=memory+A%
j�
j=D%
j
j"
j,��poke(A%,V%)
j6memory?A%=V%:�
j@
jJ��disableCFS
jT!� machine%>0 � machine%<4 � �
j^+vectors%=memory?&FFB7+(memory?&FFB8<<8)
jh
jrvectors%=�addr(vectors%)
j|(addr%=vectors%?&1E+(vectors%?&1F<<8)
j�"memory2=roms+romsize%*16-&C000
j�
j�memory?addr%=3 : � OSFSC
j�memory2?addr%=3
j�memory?&FFCE=3 : � OSFIND
j�memory2?&FFCE=3
j�memory?&FFD1=3 : � OSGBPB
j�memory2?&FFD1=3
j�memory?&FFD4=3 : � OSBPUT
j�memory2?&FFD4=3
j�memory?&FFD7=3 : � OSBGET
j�memory2?&FFD7=3
j�memory?&FFDA=3 : � OSARGS
kmemory2?&FFDA=3
kmemory?&FFDD=3 : � OSFILE
kmemory2?&FFDD=3
k&�
k0
k:
��boot
kD
kN@�SYS "OS_FSControl",11,fs$ : REM set temporary filing system
kX?�SYS "OS_FSControl",0,disc$+path$+subpath$ : REM change dir
kb�SYS "XOS_GBPB",5,,buffer
kl�SYS "OS_FSControl",19
kv
k��boot%=?(buffer+?buffer+1)
k��rts
k�
k�� machine%<>0 � �
k�
k�*Q=�(fs$+disc$+path$+subpath$+".!Boot")
k�`� Q<>0 � �#Q:disable_reset=�:�file_load(fs$+disc$+path$+subpath$+".!Boot"):disable_reset=�:�
k�)Q=�(fs$+disc$+path$+subpath$+".!Run")
k�_� Q<>0 � �#Q:disable_reset=�:�snap_load(fs$+disc$+path$+subpath$+".!Run"):disable_reset=�:�
k�
k��brk(214,"File not found")
k�
k��
l
l��openmenu(menu%,X%,Y%)
l
�menus
l %ș "Wimp_CreateMenu",,menu%,X%,Y%
l*current_menu%=menu%
l4�
l>
lH��config
lRq%!0=config%
l\Ȏ i% �
lf	� 1  
lpCq%!4=1:ș "Wimp_GetIconState",,q% : ROMSEL%=((q%!24 � 2^21)<>0)
lz� 2
l�Dq%!4=2:ș "Wimp_GetIconState",,q% : Palette%=((q%!24 � 2^21)<>0)
l�� 3
l�Cq%!4=3:ș "Wimp_GetIconState",,q% : Cursor%=((q%!24 � 2^21)<>0)
l�� 4
l�Bq%!4=4:ș "Wimp_GetIconState",,q% : Oscli%=((q%!24 � 2^21)<>0)
l�� 5
l�Hq%!4=5:ș "Wimp_GetIconState",,q% : scroll_hack%=((q%!24 � 2^21)<>0)
l�� 6
l�Dq%!4=6:ș "Wimp_GetIconState",,q% : file_xxx=((q%!24 � 2^21)<>0)
l�Z� file_xxx � �"IconSprites <6502Em$Res>.file_xxx" � �"IconSprites <6502Em$Res>.no_xxx"
l�� 7
l�Eq%!4=7:ș "Wimp_GetIconState",,q% : sound_on%=((q%!24 � 2^21)<>0)
l�8� 10 : � mb%=2 � �openmenu(machine_menu%,mx%-64,my%)
m.� 11 : �openmenu(machine_menu%,mx%-64,my%)
m2� 12 : � mb%=2 �openmenu(keysmenu%,mx%-64,my%)
m*� 13 : �openmenu(keysmenu%,mx%-64,my%)
m$3� 14 : � mb%=2 �openmenu(patchmenu%,mx%-64,my%)
m.+� 15 : �openmenu(patchmenu%,mx%-64,my%)
m83� 16 : � mb%=2 �openmenu(speedmenu%,mx%-64,my%)
mB+� 17 : �openmenu(speedmenu%,mx%-64,my%)
mL&� 20 : �default_options:�setconfig
mV� 21 : �save_options
m`2� 22 : !q%=config% : ș "Wimp_CloseWindow",,q%
mj�
mt�
m~
m���setconfig
m�!q%=config%:q%!12=2^21
m�=q%!4=1:q%!8=-2^21*(ROMSEL%<>0):ș "Wimp_SetIconState",,q%
m�>q%!4=2:q%!8=-2^21*(Palette%<>0):ș "Wimp_SetIconState",,q%
m�=q%!4=3:q%!8=-2^21*(Cursor%<>0):ș "Wimp_SetIconState",,q%
m�<q%!4=4:q%!8=-2^21*(Oscli%<>0):ș "Wimp_SetIconState",,q%
m�Bq%!4=5:q%!8=-2^21*(scroll_hack%<>0):ș "Wimp_SetIconState",,q%
m�>q%!4=6:q%!8=-2^21*(file_xxx<>0):ș "Wimp_SetIconState",,q%
m�?q%!4=7:q%!8=-2^21*(sound_on%<>0):ș "Wimp_SetIconState",,q%
m� �pokeicontext(16,�speed+"%")
m�$buffer!0=0:buffer!4=0:buffer!8=0
m�7ș "OS_ReadVarVal","6502Em$Keymap",buffer,255 � ,S$
nkeymap%=�keymap(S$)
n
�pokeicontext(12,S$)
n�
n
n(��pokeicontext(N%,A$)
n2q%!0=config%
n<q%!4=N%
nFș "Wimp_GetIconState",,q%
nP$(q%!28)=A$+�0
nZq%!8=0:q%!12=0
ndș "Wimp_SetIconState",,q%
nn�
nx
n���newspeed(S)
n�speed=S
n� �pokeicontext(16,�speed+"%")
n��
n�
n���dfsimage(A$)
n�:ș "XOS_SWINumberFromString",,"ImageDFS_Version" � ; F
n�-� (F � 1)=0 � dfssupport=� � dfssupport=�
n�b� dfssupport=� � �report("ImageDFS (available from WSS) must be loaded to access this file"):�
n�imagefile%=�
n��file_load(A$+".!BOOT")
n��BBC
n��
o
o��report(A$)
o2ș"Wimp_ReportError","    "+A$,%11001,"6502Em"
o"�
o,
o6��openconfig
o@           �setconfig
oJ           q%!0=config%
oT+           ș "Wimp_GetWindowState",,q%
o^           
oh!           � config_open%=� �
or6           ș "OS_ReadModeVariable",-1,4 � ,,xeig%
o|6           ș "OS_ReadModeVariable",-1,5 � ,,yeig%
o�:           ș "OS_ReadModeVariable",-1,11 � ,,screenx%
o�:           ș "OS_ReadModeVariable",-1,12 � ,,screeny%
o�.           sx%=q%!12-q%!4 : sy%=q%!16-q%!8
o�-           q%!4=((screenx%<<xeig%)-sx%)/2
o�-           q%!8=((screeny%<<yeig%)-sy%)/2
o�           q%!12=q%!4+sx%
o�           q%!16=q%!8+sy%
o�           �
o�           
o�           q%!28=-1
o�'           ș "Wimp_OpenWindow",,q%
o��
�
00000000  0d 00 0a 11 f4 20 3e 20  21 52 75 6e 49 6d 61 67  |..... > !RunImag|
00000010  65 0d 00 14 2c f4 20 36  35 30 32 45 6d 20 28 64  |e...,. 6502Em (d|
00000020  65 73 6b 74 6f 70 20 66  72 6f 6e 74 65 6e 64 20  |esktop frontend |
00000030  66 6f 72 20 62 69 6e 61  72 69 65 73 29 0d 00 1e  |for binaries)...|
00000040  2a f4 20 28 63 29 20 4d  69 63 68 61 65 6c 20 61  |*. (c) Michael a|
00000050  6e 64 20 41 6e 6e 65 20  42 6f 72 63 68 65 72 64  |nd Anne Borcherd|
00000060  73 2c 20 31 39 39 35 0d  00 28 45 f4 20 4c 4f 43  |s, 1995..(E. LOC|
00000070  4b 20 52 4f 4d 52 41 4d  2c 6d 65 6d 6f 72 79 2c  |K ROMRAM,memory,|
00000080  72 6f 6d 73 2c 6f 73 77  6f 72 64 37 46 5f 64 72  |roms,osword7F_dr|
00000090  69 76 65 25 2c 6f 73 77  6f 72 64 37 32 5f 64 72  |ive%,osword72_dr|
000000a0  69 76 65 25 2c 70 61 67  69 6e 67 25 0d 00 32 28  |ive%,paging%..2(|
000000b0  76 65 72 73 69 6f 6e 24  3d 22 32 2e 31 30 20 28  |version$="2.10 (|
000000c0  32 34 74 68 20 4e 6f 76  65 6d 62 65 72 20 31 39  |24th November 19|
000000d0  39 36 29 22 0d 00 3c 04  0d 00 46 69 ee 20 85 20  |96)"..<...Fi. . |
000000e0  c8 99 20 22 58 57 69 6d  70 5f 43 6c 6f 73 65 44  |.. "XWimp_CloseD|
000000f0  6f 77 6e 22 3a c8 99 20  22 58 57 69 6d 70 5f 52  |own":.. "XWimp_R|
00000100  65 70 6f 72 74 45 72 72  6f 72 22 2c 22 20 20 20  |eportError","   |
00000110  20 46 61 74 61 6c 20 69  6e 74 65 72 6e 61 6c 20  | Fatal internal |
00000120  65 72 72 6f 72 20 22 2b  c3 20 9e 2b 22 3a 20 22  |error "+. .+": "|
00000130  2b f6 24 2c 31 2c 22 36  35 30 32 45 6d 22 3a c8  |+.$,1,"6502Em":.|
00000140  98 0d 00 50 04 0d 00 5a  40 6f 73 77 6f 72 64 37  |...P...Z@osword7|
00000150  46 5f 64 72 69 76 65 25  3d 31 20 3a 20 f4 20 64  |F_drive%=1 : . d|
00000160  72 69 76 65 20 61 63 63  65 73 73 65 64 20 66 6f  |rive accessed fo|
00000170  72 20 70 72 6f 74 65 63  74 65 64 20 44 46 53 20  |r protected DFS |
00000180  64 69 73 63 73 0d 00 64  41 6f 73 77 6f 72 64 37  |discs..dAosword7|
00000190  32 5f 64 72 69 76 65 25  3d 30 20 3a 20 f4 20 64  |2_drive%=0 : . d|
000001a0  72 69 76 65 20 61 63 63  65 73 73 65 64 20 66 6f  |rive accessed fo|
000001b0  72 20 70 72 6f 74 65 63  74 65 64 20 41 44 46 53  |r protected ADFS|
000001c0  20 64 69 73 63 73 0d 00  6e 0d 70 61 67 69 6e 67  | discs..n.paging|
000001d0  25 3d b9 0d 00 78 0a 74  6f 70 25 3d 93 0d 00 82  |%=...x.top%=....|
000001e0  04 0d 00 8c 0f d3 3d 93  2d 39 36 2a 31 30 32 34  |......=.-96*1024|
000001f0  0d 00 96 3b 21 93 3d 30  3a c8 99 20 22 4f 53 5f  |...;!.=0:.. "OS_|
00000200  52 65 61 64 56 61 72 56  61 6c 22 2c 22 36 35 30  |ReadVarVal","650|
00000210  32 45 6d 24 53 61 76 65  53 63 72 65 65 6e 22 2c  |2Em$SaveScreen",|
00000220  93 2c 32 35 35 20 b8 20  2c 53 24 0d 00 a0 14 e7  |.,255 . ,S$.....|
00000230  20 c0 53 24 2c 33 29 3d  22 59 65 73 22 20 8c 0d  | .S$,3)="Yes" ..|
00000240  00 aa 0c 73 70 72 69 74  65 3d 93 0d 00 b4 11 73  |...sprite=.....s|
00000250  61 76 65 5f 73 70 72 69  74 65 3d a3 0d 00 be 05  |ave_sprite=.....|
00000260  cc 0d 00 c8 0f d3 3d 93  2b 39 36 2a 31 30 32 34  |......=.+96*1024|
00000270  0d 00 d2 0c 73 70 72 69  74 65 3d 30 0d 00 dc 11  |....sprite=0....|
00000280  73 61 76 65 5f 73 70 72  69 74 65 3d a3 0d 00 e6  |save_sprite=....|
00000290  05 cd 0d 00 f0 04 0d 00  fa 63 d3 3d 93 2d 28 36  |.........c.=.-(6|
000002a0  34 2b 36 34 29 2a 31 30  32 34 20 3a 20 f4 20 36  |4+64)*1024 : . 6|
000002b0  34 6b 20 42 42 43 20 6d  65 6d 6f 72 79 20 6d 61  |4k BBC memory ma|
000002c0  70 20 2b 20 33 32 6b 20  4d 61 73 74 65 72 20 65  |p + 32k Master e|
000002d0  78 74 72 61 20 6d 65 6d  6f 72 79 20 2b 20 32 35  |xtra memory + 25|
000002e0  36 20 62 79 74 65 73 20  76 61 72 69 61 62 6c 65  |6 bytes variable|
000002f0  73 20 2b 20 73 70 61 72  65 0d 01 04 14 6d 65 6d  |s + spare....mem|
00000300  6f 72 79 3d 93 2b 36 34  2a 31 30 32 34 0d 01 0e  |ory=.+64*1024...|
00000310  04 0d 01 18 46 e7 20 6d  65 6d 6f 72 79 3c 3e 26  |....F. memory<>&|
00000320  41 30 30 30 30 20 8c 20  85 20 30 2c 22 36 35 30  |A0000 . . 0,"650|
00000330  32 45 6d 20 69 6e 69 74  69 61 6c 69 73 61 74 69  |2Em initialisati|
00000340  6f 6e 3a 20 46 61 74 61  6c 20 6d 65 6d 6f 72 79  |on: Fatal memory|
00000350  20 65 72 72 6f 72 22 0d  01 22 04 0d 01 2c 44 73  | error".."...,Ds|
00000360  68 65 69 6c 61 3d 6d 65  6d 6f 72 79 2d 26 32 30  |heila=memory-&20|
00000370  30 20 3a 20 f4 46 4f 52  49 25 3d 26 31 30 30 20  |0 : .FORI%=&100 |
00000380  54 4f 20 26 31 46 46 20  53 54 45 50 20 34 3a 73  |TO &1FF STEP 4:s|
00000390  68 65 69 6c 61 21 49 25  3d 30 3a 4e 45 58 54 0d  |heila!I%=0:NEXT.|
000003a0  01 36 04 0d 01 40 19 d3  3d 93 2d 31 37 2a 31 36  |.6...@..=.-17*16|
000003b0  2a 31 30 32 34 3a 72 6f  6d 73 3d 93 0d 01 4a 17  |*1024:roms=...J.|
000003c0  d3 3d 93 2d 31 36 30 2a  31 30 32 34 3a 63 6f 64  |.=.-160*1024:cod|
000003d0  65 3d 93 0d 01 54 12 72  6f 6d 73 69 7a 65 25 3d  |e=...T.romsize%=|
000003e0  26 34 30 30 30 0d 01 5e  04 0d 01 68 12 66 69 6c  |&4000..^...h.fil|
000003f0  65 74 79 70 65 25 3d 26  42 42 43 0d 01 72 04 0d  |etype%=&BBC..r..|
00000400  01 7c 1e f4 20 76 6f 6c  75 6d 65 20 62 65 74 77  |.|.. volume betw|
00000410  65 65 6e 20 30 20 61 6e  64 20 31 32 37 0d 01 86  |een 0 and 127...|
00000420  1d c8 9b 20 22 3c 36 35  30 32 45 6d 24 52 65 73  |... "<6502Em$Res|
00000430  3e 2e 53 6f 75 6e 64 37  61 22 0d 01 90 04 0d 01  |>.Sound7a"......|
00000440  9a 0e f2 74 65 6d 70 6c  61 74 65 73 0d 01 a4 0c  |...templates....|
00000450  f2 69 6e 69 74 42 42 43  0d 01 ae 0f f2 73 6f 75  |.initBBC.....sou|
00000460  6e 64 5f 69 6e 69 74 0d  01 b8 0f f2 6e 65 77 6d  |nd_init.....newm|
00000470  61 63 68 69 6e 65 0d 01  c2 09 f2 69 6e 69 74 0d  |achine.....init.|
00000480  01 cc 09 f2 70 6f 6c 6c  0d 01 d6 04 0d 01 e0 05  |....poll........|
00000490  e0 0d 01 ea 04 0d 01 f4  04 0d 01 fe 16 dd f2 69  |...............i|
000004a0  6e 73 74 61 6c 6c 28 73  70 72 69 74 65 24 29 0d  |nstall(sprite$).|
000004b0  02 08 19 ea 20 73 78 25  2c 73 79 25 2c 73 6d 25  |.... sx%,sy%,sm%|
000004c0  2c 70 78 25 2c 70 79 25  0d 02 12 26 de 20 74 65  |,px%,py%...&. te|
000004d0  78 74 5f 62 75 66 66 20  26 31 30 30 2c 20 73 70  |xt_buff &100, sp|
000004e0  72 69 74 65 5f 62 75 66  66 20 26 31 30 30 0d 02  |rite_buff &100..|
000004f0  1c 34 c8 99 20 22 57 69  6d 70 5f 53 70 72 69 74  |.4.. "Wimp_Sprit|
00000500  65 4f 70 22 2c 34 30 2c  2c 73 70 72 69 74 65 24  |eOp",40,,sprite$|
00000510  20 b8 20 2c 2c 2c 73 78  25 2c 73 79 25 2c 2c 73  | . ,,,sx%,sy%,,s|
00000520  6d 25 0d 02 26 39 c8 99  20 22 4f 53 5f 52 65 61  |m%..&9.. "OS_Rea|
00000530  64 4d 6f 64 65 56 61 72  69 61 62 6c 65 22 2c 73  |dModeVariable",s|
00000540  6d 25 2c 34 20 b8 20 2c  2c 70 78 25 20 3a 20 73  |m%,4 . ,,px% : s|
00000550  78 25 3d 73 78 25 3c 3c  70 78 25 0d 02 30 39 c8  |x%=sx%<<px%..09.|
00000560  99 20 22 4f 53 5f 52 65  61 64 4d 6f 64 65 56 61  |. "OS_ReadModeVa|
00000570  72 69 61 62 6c 65 22 2c  73 6d 25 2c 35 20 b8 20  |riable",sm%,5 . |
00000580  2c 2c 70 79 25 20 3a 20  73 79 25 3d 73 79 25 3c  |,,py% : sy%=sy%<|
00000590  3c 70 79 25 0d 02 3a 0a  21 71 25 3d 2d 31 0d 02  |<py%..:.!q%=-1..|
000005a0  44 2f 71 25 21 34 3d 30  3a 71 25 21 38 3d 2d 31  |D/q%!4=0:q%!8=-1|
000005b0  36 3a 71 25 21 31 32 3d  71 25 21 34 2b 73 78 25  |6:q%!12=q%!4+sx%|
000005c0  3a 71 25 21 31 36 3d 32  30 2b 73 79 25 0d 02 4e  |:q%!16=20+sy%..N|
000005d0  22 f4 71 25 21 32 30 3d  26 31 37 30 30 33 31 32  |".q%!20=&1700312|
000005e0  42 20 28 66 69 6c 6c 65  64 20 69 63 6f 6e 29 0d  |B (filled icon).|
000005f0  02 58 13 71 25 21 32 30  3d 26 31 37 30 30 33 31  |.X.q%!20=&170031|
00000600  30 42 0d 02 62 04 0d 02  6c 16 21 28 71 25 2b 32  |0B..b...l.!(q%+2|
00000610  34 29 3d 74 65 78 74 5f  62 75 66 66 0d 02 76 18  |4)=text_buff..v.|
00000620  21 28 71 25 2b 32 38 29  3d 73 70 72 69 74 65 5f  |!(q%+28)=sprite_|
00000630  62 75 66 66 0d 02 80 16  24 74 65 78 74 5f 62 75  |buff....$text_bu|
00000640  66 66 3d 73 70 72 69 74  65 24 0d 02 8a 1c 24 73  |ff=sprite$....$s|
00000650  70 72 69 74 65 5f 62 75  66 66 3d 22 53 22 2b 73  |prite_buff="S"+s|
00000660  70 72 69 74 65 24 0d 02  94 11 21 28 71 25 2b 33  |prite$....!(q%+3|
00000670  32 29 3d 26 31 30 30 0d  02 9e 22 c8 99 20 22 57  |2)=&100...".. "W|
00000680  69 6d 70 5f 43 72 65 61  74 65 49 63 6f 6e 22 2c  |imp_CreateIcon",|
00000690  2c 71 25 20 b8 20 21 71  25 0d 02 a8 10 62 61 72  |,q% . !q%....bar|
000006a0  5f 68 61 6e 64 3d 21 71  25 0d 02 b2 05 e1 0d 02  |_hand=!q%.......|
000006b0  bc 04 0d 02 c6 18 dd f2  72 65 69 6e 73 74 61 6c  |........reinstal|
000006c0  6c 28 73 70 72 69 74 65  24 29 0d 02 d0 1c 24 73  |l(sprite$)....$s|
000006d0  70 72 69 74 65 5f 62 75  66 66 3d 22 53 22 2b 73  |prite_buff="S"+s|
000006e0  70 72 69 74 65 24 0d 02  da 16 24 74 65 78 74 5f  |prite$....$text_|
000006f0  62 75 66 66 3d 73 70 72  69 74 65 24 0d 02 e4 0f  |buff=sprite$....|
00000700  62 75 66 66 65 72 21 30  3d 2d 32 0d 02 ee 15 62  |buffer!0=-2....b|
00000710  75 66 66 65 72 21 34 3d  62 61 72 5f 68 61 6e 64  |uffer!4=bar_hand|
00000720  0d 02 f8 0f f4 62 75 66  66 65 72 21 38 3d 30 0d  |.....buffer!8=0.|
00000730  03 02 10 f4 62 75 66 66  65 72 21 31 32 3d 30 0d  |....buffer!12=0.|
00000740  03 0c 16 62 75 66 66 65  72 21 38 3d 26 30 30 38  |...buffer!8=&008|
00000750  30 30 30 38 30 0d 03 16  17 62 75 66 66 65 72 21  |00080....buffer!|
00000760  31 32 3d 26 30 30 38 30  30 30 38 30 0d 03 20 21  |12=&00800080.. !|
00000770  c8 99 22 57 69 6d 70 5f  53 65 74 49 63 6f 6e 53  |.."Wimp_SetIconS|
00000780  74 61 74 65 22 2c 2c 62  75 66 66 65 72 0d 03 2a  |tate",,buffer..*|
00000790  2d f4 53 59 53 22 57 69  6d 70 5f 46 6f 72 63 65  |-.SYS"Wimp_Force|
000007a0  52 65 64 72 61 77 22 2c  2d 32 2c 30 2c 30 2c 26  |Redraw",-2,0,0,&|
000007b0  46 46 46 46 2c 26 46 46  46 46 0d 03 34 0e 62 75  |FFFF,&FFFF..4.bu|
000007c0  66 66 65 72 21 38 3d 30  0d 03 3e 17 62 75 66 66  |ffer!8=0..>.buff|
000007d0  65 72 21 31 32 3d 26 30  30 38 30 30 30 38 30 0d  |er!12=&00800080.|
000007e0  03 48 21 c8 99 22 57 69  6d 70 5f 53 65 74 49 63  |.H!.."Wimp_SetIc|
000007f0  6f 6e 53 74 61 74 65 22  2c 2c 62 75 66 66 65 72  |onState",,buffer|
00000800  0d 03 52 05 e1 0d 03 5c  04 0d 03 66 0f dd f2 74  |..R....\...f...t|
00000810  65 6d 70 6c 61 74 65 73  0d 03 70 13 de 20 74 20  |emplates..p.. t |
00000820  34 3a 24 74 3d 22 54 41  53 4b 22 0d 03 7a 34 c8  |4:$t="TASK"..z4.|
00000830  99 20 22 57 69 6d 70 5f  49 6e 69 74 69 61 6c 69  |. "Wimp_Initiali|
00000840  73 65 22 2c 32 30 30 2c  21 74 2c 22 36 35 30 32  |se",200,!t,"6502|
00000850  45 6d 22 20 b8 20 52 4f  25 2c 68 61 6e 64 25 0d  |Em" . RO%,hand%.|
00000860  03 84 62 de 20 71 25 20  32 35 36 2c 20 71 32 25  |..b. q% 256, q2%|
00000870  20 32 35 36 2c 20 69 63  6f 6e 6d 65 6e 75 25 20  | 256, iconmenu% |
00000880  33 30 30 2c 20 6d 69 73  63 6d 65 6e 75 25 20 32  |300, miscmenu% 2|
00000890  30 30 2c 72 6f 6d 6d 65  6e 75 25 20 38 30 30 2c  |00,rommenu% 800,|
000008a0  20 6d 61 63 68 69 6e 65  5f 6d 65 6e 75 25 20 32  | machine_menu% 2|
000008b0  30 30 2c 20 6f 73 63 6c  69 5f 6d 65 6e 75 20 32  |00, oscli_menu 2|
000008c0  30 0d 03 8e 38 de 20 70  6f 6b 65 6d 65 6e 75 25  |0...8. pokemenu%|
000008d0  20 35 30 2c 20 70 6f 6b  65 76 61 6c 69 64 25 20  | 50, pokevalid% |
000008e0  31 32 2c 20 70 6f 6b 65  74 65 78 74 25 20 31 32  |12, poketext% 12|
000008f0  2c 20 64 72 61 67 20 34  30 0d 03 98 21 de 20 74  |, drag 40...!. t|
00000900  65 6d 70 5f 72 65 67 73  20 31 32 2a 34 2c 20 62  |emp_regs 12*4, b|
00000910  75 66 66 65 72 20 26 31  30 30 0d 03 a2 15 f2 63  |uffer &100.....c|
00000920  6c 65 61 72 6d 65 6d 28  93 2c 74 6f 70 25 29 0d  |learmem(.,top%).|
00000930  03 ac 16 f2 69 6e 73 74  61 6c 6c 28 22 4f 53 a0  |....install("OS.|
00000940  31 2e 32 22 29 0d 03 b6  04 0d 03 c0 10 f2 72 65  |1.2").........re|
00000950  61 64 70 61 74 63 68 65  73 0d 03 ca 0f f2 72 65  |adpatches.....re|
00000960  61 64 73 70 65 65 64 73  0d 03 d4 04 0d 03 de 0f  |adspeeds........|
00000970  e7 20 52 4f 25 3e 32 39  39 20 8c 0d 03 e8 33 c8  |. RO%>299 ....3.|
00000980  99 20 22 4f 53 5f 42 79  74 65 22 2c 31 36 31 2c  |. "OS_Byte",161,|
00000990  31 34 30 20 b8 20 2c 2c  74 25 20 3a 20 54 48 52  |140 . ,,t% : THR|
000009a0  45 45 44 25 3d 2d 28 74  25 20 80 20 31 29 0d 03  |EED%=-(t% . 1)..|
000009b0  f2 76 e7 20 54 48 52 45  45 44 25 3d b9 20 8c 20  |.v. THREED%=. . |
000009c0  c8 99 20 22 57 69 6d 70  5f 4f 70 65 6e 54 65 6d  |.. "Wimp_OpenTem|
000009d0  70 6c 61 74 65 22 2c 2c  22 3c 36 35 30 32 45 6d  |plate",,"<6502Em|
000009e0  24 52 65 73 3e 2e 54 65  6d 70 6c 61 74 65 33 44  |$Res>.Template3D|
000009f0  22 20 8b 20 c8 99 20 22  57 69 6d 70 5f 4f 70 65  |" . .. "Wimp_Ope|
00000a00  6e 54 65 6d 70 6c 61 74  65 22 2c 2c 22 3c 36 35  |nTemplate",,"<65|
00000a10  30 32 45 6d 24 52 65 73  3e 2e 54 65 6d 70 6c 61  |02Em$Res>.Templa|
00000a20  74 65 73 22 0d 03 fc 33  c8 99 20 22 57 69 6d 70  |tes"...3.. "Wimp|
00000a30  5f 4c 6f 61 64 54 65 6d  70 6c 61 74 65 22 2c 2c  |_LoadTemplate",,|
00000a40  2d 31 2c 2c 2c 2d 31 2c  22 69 6e 66 6f 22 20 b8  |-1,,,-1,"info" .|
00000a50  20 2c 41 25 2c 42 25 0d  04 06 38 c8 99 20 22 57  | ,A%,B%...8.. "W|
00000a60  69 6d 70 5f 4c 6f 61 64  54 65 6d 70 6c 61 74 65  |imp_LoadTemplate|
00000a70  22 2c 2c 2d 31 2c 2c 2c  2d 31 2c 22 78 66 65 72  |",,-1,,,-1,"xfer|
00000a80  5f 73 65 6e 64 22 20 b8  20 2c 43 25 2c 44 25 0d  |_send" . ,C%,D%.|
00000a90  04 10 39 c8 99 20 22 57  69 6d 70 5f 4c 6f 61 64  |..9.. "Wimp_Load|
00000aa0  54 65 6d 70 6c 61 74 65  22 2c 2c 2d 31 2c 2c 2c  |Template",,-1,,,|
00000ab0  2d 31 2c 22 78 66 65 72  5f 73 65 6e 64 32 22 20  |-1,"xfer_send2" |
00000ac0  b8 20 2c 45 25 2c 46 25  0d 04 1a 35 c8 99 20 22  |. ,E%,F%...5.. "|
00000ad0  57 69 6d 70 5f 4c 6f 61  64 54 65 6d 70 6c 61 74  |Wimp_LoadTemplat|
00000ae0  65 22 2c 2c 2d 31 2c 2c  2c 2d 31 2c 22 63 6f 6e  |e",,-1,,,-1,"con|
00000af0  66 69 67 22 20 b8 20 2c  47 25 2c 48 25 0d 04 24  |fig" . ,G%,H%..$|
00000b00  05 cc 0d 04 2e 34 c8 99  20 22 57 69 6d 70 5f 4f  |.....4.. "Wimp_O|
00000b10  70 65 6e 54 65 6d 70 6c  61 74 65 22 2c 2c 22 3c  |penTemplate",,"<|
00000b20  36 35 30 32 45 6d 24 52  65 73 3e 2e 54 65 6d 70  |6502Em$Res>.Temp|
00000b30  6c 61 74 65 73 22 0d 04  38 35 41 25 3d 37 30 30  |lates"..85A%=700|
00000b40  20 3a 20 42 25 3d 33 30  30 20 3a 20 43 25 3d 34  | : B%=300 : C%=4|
00000b50  30 30 20 3a 20 44 25 3d  33 35 30 20 3a 20 45 25  |00 : D%=350 : E%|
00000b60  3d 43 25 20 3a 20 46 25  3d 44 25 0d 04 42 13 47  |=C% : F%=D%..B.G|
00000b70  25 3d 32 30 30 30 3a 48  25 3d 32 30 30 30 0d 04  |%=2000:H%=2000..|
00000b80  4c 05 cd 0d 04 56 46 de  20 62 75 66 66 65 72 32  |L....VF. buffer2|
00000b90  20 41 25 2c 20 69 63 6f  6e 33 20 42 25 2c 20 78  | A%, icon3 B%, x|
00000ba0  66 65 72 31 20 43 25 2b  34 2c 20 78 66 65 72 32  |fer1 C%+4, xfer2|
00000bb0  20 44 25 2c 20 78 66 65  72 33 20 45 25 2b 34 2c  | D%, xfer3 E%+4,|
00000bc0  20 78 66 65 72 34 20 46  25 0d 04 60 1d de 20 63  | xfer4 F%..`.. c|
00000bd0  6f 6e 66 69 67 20 47 25  2c 20 63 6f 6e 66 69 67  |onfig G%, config|
00000be0  32 20 48 25 2b 34 0d 04  6a 3c c8 99 20 22 57 69  |2 H%+4..j<.. "Wi|
00000bf0  6d 70 5f 4c 6f 61 64 54  65 6d 70 6c 61 74 65 22  |mp_LoadTemplate"|
00000c00  2c 2c 62 75 66 66 65 72  32 2c 69 63 6f 6e 33 2c  |,,buffer2,icon3,|
00000c10  69 63 6f 6e 33 2b 42 25  2c 2d 31 2c 22 69 6e 66  |icon3+B%,-1,"inf|
00000c20  6f 22 0d 04 74 3f c8 99  20 22 57 69 6d 70 5f 4c  |o"..t?.. "Wimp_L|
00000c30  6f 61 64 54 65 6d 70 6c  61 74 65 22 2c 2c 78 66  |oadTemplate",,xf|
00000c40  65 72 31 2c 78 66 65 72  32 2c 78 66 65 72 32 2b  |er1,xfer2,xfer2+|
00000c50  44 25 2c 2d 31 2c 22 78  66 65 72 5f 73 65 6e 64  |D%,-1,"xfer_send|
00000c60  22 0d 04 7e 40 c8 99 20  22 57 69 6d 70 5f 4c 6f  |"..~@.. "Wimp_Lo|
00000c70  61 64 54 65 6d 70 6c 61  74 65 22 2c 2c 78 66 65  |adTemplate",,xfe|
00000c80  72 33 2c 78 66 65 72 34  2c 78 66 65 72 34 2b 46  |r3,xfer4,xfer4+F|
00000c90  25 2c 2d 31 2c 22 78 66  65 72 5f 73 65 6e 64 32  |%,-1,"xfer_send2|
00000ca0  22 0d 04 88 41 c8 99 20  22 57 69 6d 70 5f 4c 6f  |"...A.. "Wimp_Lo|
00000cb0  61 64 54 65 6d 70 6c 61  74 65 22 2c 2c 63 6f 6e  |adTemplate",,con|
00000cc0  66 69 67 2c 63 6f 6e 66  69 67 32 2c 63 6f 6e 66  |fig,config2,conf|
00000cd0  69 67 32 2b 48 25 2c 2d  31 2c 22 63 6f 6e 66 69  |ig2+H%,-1,"confi|
00000ce0  67 22 0d 04 92 1b c8 99  20 22 57 69 6d 70 5f 43  |g"...... "Wimp_C|
00000cf0  6c 6f 73 65 54 65 6d 70  6c 61 74 65 22 0d 04 9c  |loseTemplate"...|
00000d00  2f c8 99 20 22 57 69 6d  70 5f 43 72 65 61 74 65  |/.. "Wimp_Create|
00000d10  57 69 6e 64 6f 77 22 2c  2c 78 66 65 72 31 20 b8  |Window",,xfer1 .|
00000d20  20 41 25 3a 78 66 65 72  25 3d 41 25 0d 04 a6 30  | A%:xfer%=A%...0|
00000d30  c8 99 20 22 57 69 6d 70  5f 43 72 65 61 74 65 57  |.. "Wimp_CreateW|
00000d40  69 6e 64 6f 77 22 2c 2c  78 66 65 72 33 20 b8 20  |indow",,xfer3 . |
00000d50  41 25 3a 78 66 65 72 32  25 3d 41 25 0d 04 b0 43  |A%:xfer2%=A%...C|
00000d60  c8 99 20 22 57 69 6d 70  5f 43 72 65 61 74 65 57  |.. "Wimp_CreateW|
00000d70  69 6e 64 6f 77 22 2c 2c  63 6f 6e 66 69 67 20 b8  |indow",,config .|
00000d80  20 41 25 3a 63 6f 6e 66  69 67 25 3d 41 25 20 3a  | A%:config%=A% :|
00000d90  20 63 6f 6e 66 69 67 5f  6f 70 65 6e 25 3d a3 0d  | config_open%=..|
00000da0  04 ba 31 c8 99 20 22 57  69 6d 70 5f 43 72 65 61  |..1.. "Wimp_Crea|
00000db0  74 65 57 69 6e 64 6f 77  22 2c 2c 62 75 66 66 65  |teWindow",,buffe|
00000dc0  72 32 20 b8 20 41 25 3a  69 6e 66 6f 25 3d 41 25  |r2 . A%:info%=A%|
00000dd0  0d 04 c4 04 0d 04 ce 11  21 62 75 66 66 65 72 3d  |........!buffer=|
00000de0  69 6e 66 6f 25 0d 04 d8  0e 62 75 66 66 65 72 21  |info%....buffer!|
00000df0  34 3d 39 0d 04 e2 22 c8  99 20 22 57 69 6d 70 5f  |4=9...".. "Wimp_|
00000e00  47 65 74 49 63 6f 6e 53  74 61 74 65 22 2c 2c 62  |GetIconState",,b|
00000e10  75 66 66 65 72 0d 04 ec  1c 24 28 62 75 66 66 65  |uffer....$(buffe|
00000e20  72 21 32 38 29 3d 76 65  72 73 69 6f 6e 24 2b bd  |r!28)=version$+.|
00000e30  30 0d 04 f6 04 0d 05 00  11 21 62 75 66 66 65 72  |0........!buffer|
00000e40  3d 69 6e 66 6f 25 0d 05  0a 0f 62 75 66 66 65 72  |=info%....buffer|
00000e50  21 34 3d 31 31 0d 05 14  22 c8 99 20 22 57 69 6d  |!4=11...".. "Wim|
00000e60  70 5f 47 65 74 49 63 6f  6e 53 74 61 74 65 22 2c  |p_GetIconState",|
00000e70  2c 62 75 66 66 65 72 0d  05 1e 30 ff 22 4c 6f 61  |,buffer...0."Loa|
00000e80  64 20 3c 36 35 30 32 45  6d 24 52 65 73 3e 2e 53  |d <6502Em$Res>.S|
00000e90  65 72 69 61 6c 4e 6f 20  22 2b c3 7e 28 62 75 66  |erialNo "+.~(buf|
00000ea0  66 65 72 21 32 38 29 0d  05 28 05 e1 0d 05 32 04  |fer!28)..(....2.|
00000eb0  0d 05 3c 0a dd f2 69 6e  69 74 0d 05 46 17 c8 99  |..<...init..F...|
00000ec0  20 22 4f 53 5f 47 65 74  45 6e 76 22 20 b8 20 41  | "OS_GetEnv" . A|
00000ed0  24 0d 05 50 12 e7 20 c2  41 24 2c 31 29 3d 22 20  |$..P.. .A$,1)=" |
00000ee0  22 20 8c 0d 05 5a 08 49  25 3d 30 0d 05 64 1e f5  |" ...Z.I%=0..d..|
00000ef0  49 25 2b 3d 31 3a fd c1  41 24 2c a9 41 24 2d 49  |I%+=1:..A$,.A$-I|
00000f00  25 2c 31 29 3c 3e 22 20  22 0d 05 6e 12 41 24 3d  |%,1)<>" "..n.A$=|
00000f10  c0 41 24 2c a9 41 24 2d  49 25 29 0d 05 78 05 cd  |.A$,.A$-I%)..x..|
00000f20  0d 05 82 20 e7 20 c2 41  24 2c 31 29 3d bd 33 34  |... . .A$,1)=.34|
00000f30  20 8c 20 41 24 3d c0 41  24 2c a9 41 24 2d 31 29  | . A$=.A$,.A$-1)|
00000f40  0d 05 8c 20 e7 20 c0 41  24 2c 31 29 3d bd 33 34  |... . .A$,1)=.34|
00000f50  20 8c 20 41 24 3d c2 41  24 2c a9 41 24 2d 31 29  | . A$=.A$,.A$-1)|
00000f60  0d 05 96 08 49 25 3d 30  0d 05 a0 26 f5 49 25 2b  |....I%=0...&.I%+|
00000f70  3d 31 3a fd c1 41 24 2c  a9 41 24 2d 49 25 2c 31  |=1:..A$,.A$-I%,1|
00000f80  29 3d 22 20 22 20 84 20  49 25 3d a9 41 24 0d 05  |)=" " . I%=.A$..|
00000f90  aa 0e 41 24 3d c2 41 24  2c 49 25 29 0d 05 b4 3f  |..A$=.A$,I%)...?|
00000fa0  e7 20 a4 75 70 70 65 72  28 c1 41 24 2c a9 41 24  |. .upper(.A$,.A$|
00000fb0  2d 39 2c 31 30 29 29 3c  3e 22 2e 21 52 55 4e 49  |-9,10))<>".!RUNI|
00000fc0  4d 41 47 45 22 20 8c 20  f2 73 6e 61 70 5f 6c 6f  |MAGE" . .snap_lo|
00000fd0  61 64 28 41 24 29 3a f2  42 42 43 0d 05 be 04 0d  |ad(A$):.BBC.....|
00000fe0  05 c8 05 e1 0d 05 d2 04  0d 05 dc 0a dd f2 70 6f  |..............po|
00000ff0  6c 6c 0d 05 e6 24 ee 20  85 20 e7 20 a4 72 65 70  |ll...$. . . .rep|
00001000  6f 72 74 28 f6 24 2c 9f  3c 3e 31 29 3d 32 20 8c  |ort(.$,.<>1)=2 .|
00001010  20 f2 71 75 69 74 0d 05  f0 04 0d 05 fa 05 f5 0d  | .quit..........|
00001020  06 04 18 6d 61 73 6b 25  3d 25 31 31 30 30 30 30  |...mask%=%110000|
00001030  30 31 31 30 30 31 31 0d  06 0e 25 c8 99 20 22 57  |0110011...%.. "W|
00001040  69 6d 70 5f 50 6f 6c 6c  22 2c 6d 61 73 6b 25 2c  |imp_Poll",mask%,|
00001050  71 25 20 b8 20 61 63 74  69 6f 6e 25 0d 06 18 04  |q% . action%....|
00001060  0d 06 22 10 c8 8e 20 61  63 74 69 6f 6e 25 20 ca  |.."... action% .|
00001070  0d 06 2c 45 c9 20 20 32  20 20 20 20 3a 20 c8 99  |..,E.  2    : ..|
00001080  20 22 57 69 6d 70 5f 4f  70 65 6e 57 69 6e 64 6f  | "Wimp_OpenWindo|
00001090  77 22 2c 2c 71 25 3a e7  20 21 71 25 3d 63 6f 6e  |w",,q%:. !q%=con|
000010a0  66 69 67 25 20 8c 20 63  6f 6e 66 69 67 5f 6f 70  |fig% . config_op|
000010b0  65 6e 25 3d b9 0d 06 36  46 c9 20 20 33 20 20 20  |en%=...6F.  3   |
000010c0  20 3a 20 c8 99 20 22 57  69 6d 70 5f 43 6c 6f 73  | : .. "Wimp_Clos|
000010d0  65 57 69 6e 64 6f 77 22  2c 2c 71 25 3a e7 20 21  |eWindow",,q%:. !|
000010e0  71 25 3d 63 6f 6e 66 69  67 25 20 8c 20 63 6f 6e  |q%=config% . con|
000010f0  66 69 67 5f 6f 70 65 6e  25 3d a3 0d 06 40 14 c9  |fig_open%=...@..|
00001100  20 20 36 20 20 20 20 3a  20 f2 63 6c 69 63 6b 0d  |  6    : .click.|
00001110  06 4a 13 c9 20 20 37 20  20 20 20 3a 20 f2 73 61  |.J..  7    : .sa|
00001120  76 65 0d 06 54 12 c9 20  20 38 20 20 20 20 3a 20  |ve..T..  8    : |
00001130  f2 6b 65 79 0d 06 5e 19  c9 20 20 39 20 20 20 20  |.key..^..  9    |
00001140  3a 20 f2 64 65 63 6f 64  65 6d 65 6e 75 0d 06 68  |: .decodemenu..h|
00001150  16 c9 20 31 37 2c 31 38  20 3a 20 f2 6d 65 73 73  |.. 17,18 : .mess|
00001160  61 67 65 0d 06 72 05 cb  0d 06 7c 04 0d 06 86 06  |age..r....|.....|
00001170  fd a3 0d 06 90 05 e1 0d  06 9a 04 0d 06 a4 0d dd  |................|
00001180  f2 6d 65 73 73 61 67 65  0d 06 ae 0e c8 8e 20 71  |.message...... q|
00001190  25 21 31 36 20 ca 0d 06  b8 0f c9 20 30 20 3a 20  |%!16 ...... 0 : |
000011a0  f2 71 75 69 74 0d 06 c2  09 c9 20 32 20 3a 0d 06  |.quit..... 2 :..|
000011b0  cc 14 e7 20 71 25 21 31  32 3d 6d 79 72 65 66 25  |... q%!12=myref%|
000011c0  20 8c 0d 06 d6 1d c8 99  20 22 4f 53 5f 57 72 69  | ....... "OS_Wri|
000011d0  74 65 4e 22 2c 71 25 2b  34 34 20 b8 20 41 24 0d  |teN",q%+44 . A$.|
000011e0  06 e0 19 e7 20 41 24 3d  22 3c 57 69 6d 70 24 53  |.... A$="<Wimp$S|
000011f0  63 72 61 70 3e 22 20 8c  0d 06 ea 2f c8 99 20 22  |crap>" ..../.. "|
00001200  58 4f 53 5f 52 65 61 64  56 61 72 56 61 6c 22 2c  |XOS_ReadVarVal",|
00001210  22 57 69 6d 70 24 53 63  72 61 70 22 2c 2c 2d 31  |"Wimp$Scrap",,-1|
00001220  20 b8 20 2c 2c 41 25 0d  06 f4 48 e7 20 41 25 3d  | . ,,A%...H. A%=|
00001230  30 20 8c 20 c8 99 20 22  57 69 6d 70 5f 52 65 70  |0 . .. "Wimp_Rep|
00001240  6f 72 74 45 72 72 6f 72  22 2c 22 20 20 20 20 53  |ortError","    S|
00001250  63 72 61 70 20 66 69 6c  65 20 6e 6f 74 20 73 65  |crap file not se|
00001260  74 22 2c 31 2c 22 36 35  30 32 45 6d 22 3a e1 0d  |t",1,"6502Em":..|
00001270  06 fe 05 cd 0d 07 08 14  e7 20 73 61 76 65 5f 73  |......... save_s|
00001280  70 72 69 74 65 25 20 8c  0d 07 12 14 f2 73 70 72  |prite% ......spr|
00001290  69 74 65 5f 73 61 76 65  28 41 24 29 0d 07 1c 12  |ite_save(A$)....|
000012a0  21 62 75 66 66 65 72 3d  78 66 65 72 32 25 0d 07  |!buffer=xfer2%..|
000012b0  26 05 cc 0d 07 30 12 f2  73 6e 61 70 5f 73 61 76  |&....0..snap_sav|
000012c0  65 28 41 24 29 0d 07 3a  11 21 62 75 66 66 65 72  |e(A$)..:.!buffer|
000012d0  3d 78 66 65 72 25 0d 07  44 05 cd 0d 07 4e 04 0d  |=xfer%..D....N..|
000012e0  07 58 18 e7 20 c0 41 24  2c 36 29 3c 3e 22 3c 57  |.X.. .A$,6)<>"<W|
000012f0  69 6d 70 24 22 20 8c 0d  07 62 0e 62 75 66 66 65  |imp$" ...b.buffe|
00001300  72 21 34 3d 31 0d 07 6c  22 c8 99 20 22 57 69 6d  |r!4=1..l".. "Wim|
00001310  70 5f 47 65 74 49 63 6f  6e 53 74 61 74 65 22 2c  |p_GetIconState",|
00001320  2c 62 75 66 66 65 72 0d  07 76 13 24 28 62 75 66  |,buffer..v.$(buf|
00001330  66 65 72 21 32 38 29 3d  41 24 0d 07 80 05 cd 0d  |fer!28)=A$......|
00001340  07 8a 04 0d 07 94 3b 71  25 21 31 36 3d 33 20 3a  |......;q%!16=3 :|
00001350  20 71 25 21 31 32 3d 71  25 21 38 20 3a 20 c8 99  | q%!12=q%!8 : ..|
00001360  20 22 57 69 6d 70 5f 53  65 6e 64 4d 65 73 73 61  | "Wimp_SendMessa|
00001370  67 65 22 2c 31 37 2c 71  25 2c 71 25 21 34 0d 07  |ge",17,q%,q%!4..|
00001380  9e 05 cd 0d 07 a8 07 c9  20 33 0d 07 b2 1d c8 99  |........ 3......|
00001390  20 22 4f 53 5f 57 72 69  74 65 4e 22 2c 71 25 2b  | "OS_WriteN",q%+|
000013a0  34 34 20 b8 20 41 24 0d  07 bc 0e c8 8e 20 71 25  |44 . A$...... q%|
000013b0  21 34 30 20 ca 0d 07 c6  1a c9 20 26 42 32 32 20  |!40 ...... &B22 |
000013c0  3a 20 f2 64 66 73 69 6d  61 67 65 28 41 24 29 0d  |: .dfsimage(A$).|
000013d0  07 d0 20 c9 20 66 69 6c  65 74 79 70 65 25 20 3a  |.. . filetype% :|
000013e0  20 f2 73 6e 61 70 5f 6c  6f 61 64 28 41 24 29 0d  | .snap_load(A$).|
000013f0  07 da 25 c9 20 26 46 46  42 2c 26 46 46 45 20 3a  |..%. &FFB,&FFE :|
00001400  20 f2 66 69 6c 65 5f 6c  6f 61 64 28 41 24 29 3a  | .file_load(A$):|
00001410  f2 42 42 43 0d 07 e4 05  cb 0d 07 ee 09 c9 20 35  |.BBC.......... 5|
00001420  20 3a 0d 07 f8 0e c8 8e  20 71 25 21 34 30 20 ca  | :...... q%!40 .|
00001430  0d 08 02 04 0d 08 0c 1c  c9 20 66 69 6c 65 74 79  |......... filety|
00001440  70 65 25 20 3a 20 f4 20  53 6e 61 70 73 68 6f 74  |pe% : . Snapshot|
00001450  0d 08 16 38 71 25 21 31  36 3d 34 3a 71 25 21 31  |...8q%!16=4:q%!1|
00001460  32 3d 71 25 21 38 3a c8  99 20 22 57 69 6d 70 5f  |2=q%!8:.. "Wimp_|
00001470  53 65 6e 64 4d 65 73 73  61 67 65 22 2c 31 37 2c  |SendMessage",17,|
00001480  71 25 2c 71 25 21 32 30  0d 08 20 1d c8 99 20 22  |q%,q%!20.. ... "|
00001490  4f 53 5f 57 72 69 74 65  4e 22 2c 71 25 2b 34 34  |OS_WriteN",q%+44|
000014a0  20 b8 20 41 24 0d 08 2a  19 f2 73 6e 61 70 5f 6c  | . A$..*..snap_l|
000014b0  6f 61 64 28 41 24 29 20  3a 20 f2 42 42 43 0d 08  |oad(A$) : .BBC..|
000014c0  34 04 0d 08 3e 05 7f 0d  08 48 0c e7 20 ac a6 2d  |4...>....H.. ..-|
000014d0  31 20 8c 0d 08 52 1d c8  99 20 22 4f 53 5f 57 72  |1 ...R... "OS_Wr|
000014e0  69 74 65 4e 22 2c 71 25  2b 34 34 20 b8 20 41 24  |iteN",q%+44 . A$|
000014f0  0d 08 5c 09 46 24 3d 41  24 0d 08 66 32 c8 99 20  |..\.F$=A$..f2.. |
00001500  22 4f 53 5f 46 69 6c 65  22 2c 35 2c 46 24 20 b8  |"OS_File",5,F$ .|
00001510  20 74 79 70 65 25 2c 2c  6c 6f 61 64 25 2c 65 78  | type%,,load%,ex|
00001520  65 63 25 2c 6c 65 6e 67  74 68 25 0d 08 70 32 e7  |ec%,length%..p2.|
00001530  20 74 79 70 65 25 3d 32  20 80 20 c0 c2 46 24 2c  | type%=2 . ..F$,|
00001540  a9 46 24 2d a9 a4 6c 65  61 66 28 46 24 29 2d 31  |.F$-..leaf(F$)-1|
00001550  29 2c 31 29 3c 3e 22 21  22 20 8c 20 e1 0d 08 7a  |),1)<>"!" . ...z|
00001560  b7 e7 20 74 79 70 65 25  3d 32 20 8c 20 46 24 3d  |.. type%=2 . F$=|
00001570  41 24 2b 22 2e 21 52 75  6e 22 3a c8 99 20 22 4f  |A$+".!Run":.. "O|
00001580  53 5f 46 69 6c 65 22 2c  35 2c 46 24 20 b8 20 74  |S_File",5,F$ . t|
00001590  79 70 65 25 2c 2c 6c 6f  61 64 25 2c 65 78 65 63  |ype%,,load%,exec|
000015a0  25 2c 6c 65 6e 67 74 68  25 3a e7 20 28 6c 6f 61  |%,length%:. (loa|
000015b0  64 25 20 80 20 26 46 46  46 30 30 29 3d 26 42 42  |d% . &FFF00)=&BB|
000015c0  43 30 30 20 8c 20 71 25  21 31 36 3d 34 3a 71 25  |C00 . q%!16=4:q%|
000015d0  21 31 32 3d 71 25 21 38  3a c8 99 20 22 57 69 6d  |!12=q%!8:.. "Wim|
000015e0  70 5f 53 65 6e 64 4d 65  73 73 61 67 65 22 2c 31  |p_SendMessage",1|
000015f0  37 2c 71 25 2c 71 25 21  32 30 3a f2 73 6e 61 70  |7,q%,q%!20:.snap|
00001600  5f 6c 6f 61 64 28 46 24  29 20 3a 20 f2 42 42 43  |_load(F$) : .BBC|
00001610  20 3a 20 e1 0d 08 84 5e  e7 20 74 79 70 65 25 3d  | : ....^. type%=|
00001620  30 20 8c 20 46 24 3d 41  24 2b 22 2e 22 2b c2 41  |0 . F$=A$+"."+.A|
00001630  24 2c a9 41 24 2d a9 a4  6c 65 61 66 28 41 24 29  |$,.A$-..leaf(A$)|
00001640  2d 32 29 3a c8 99 20 22  4f 53 5f 46 69 6c 65 22  |-2):.. "OS_File"|
00001650  2c 35 2c 46 24 20 b8 20  74 79 70 65 25 2c 2c 6c  |,5,F$ . type%,,l|
00001660  6f 61 64 25 2c 65 78 65  63 25 2c 6c 65 6e 67 74  |oad%,exec%,lengt|
00001670  68 25 0d 08 8e 04 0d 08  98 04 0d 08 a2 66 20 20  |h%...........f  |
00001680  e7 20 28 28 6c 6f 61 64  25 3e 3e 3e 31 36 29 3d  |. ((load%>>>16)=|
00001690  30 20 84 20 28 6c 6f 61  64 25 3e 3e 3e 31 36 29  |0 . (load%>>>16)|
000016a0  3d 26 46 46 46 46 20 84  20 28 6c 6f 61 64 25 3e  |=&FFFF . (load%>|
000016b0  3e 3e 31 36 29 3d 26 30  30 46 46 29 20 80 20 28  |>>16)=&00FF) . (|
000016c0  6c 6f 61 64 25 20 80 20  26 46 46 46 46 29 3c 26  |load% . &FFFF)<&|
000016d0  38 30 30 30 20 80 20 74  79 70 65 25 3d 31 20 8c  |8000 . type%=1 .|
000016e0  0d 08 ac 3a 20 20 71 25  21 31 36 3d 34 3a 71 25  |...:  q%!16=4:q%|
000016f0  21 31 32 3d 71 25 21 38  3a c8 99 20 22 57 69 6d  |!12=q%!8:.. "Wim|
00001700  70 5f 53 65 6e 64 4d 65  73 73 61 67 65 22 2c 31  |p_SendMessage",1|
00001710  37 2c 71 25 2c 71 25 21  32 30 0d 08 b6 14 20 20  |7,q%,q%!20....  |
00001720  f2 66 69 6c 65 5f 6c 6f  61 64 28 46 24 29 0d 08  |.file_load(F$)..|
00001730  c0 0a 20 20 f2 42 42 43  0d 08 ca 07 20 20 cd 0d  |..  .BBC....  ..|
00001740  08 d4 05 cd 0d 08 de 05  cb 0d 08 e8 18 c9 20 26  |.............. &|
00001750  34 30 30 43 31 20 3a 20  f4 50 52 4f 43 6d 6f 64  |400C1 : .PROCmod|
00001760  65 0d 08 f2 05 cb 0d 08  fc 05 e1 0d 09 06 04 0d  |e...............|
00001770  09 10 09 dd f2 6b 65 79  0d 09 1a 0c c8 8e 20 21  |.....key...... !|
00001780  71 25 20 ca 0d 09 24 0d  c9 20 63 6f 6e 66 69 67  |q% ...$.. config|
00001790  25 0d 09 2e 04 0d 09 38  1a e7 20 71 25 21 32 34  |%......8.. q%!24|
000017a0  3d 31 33 20 80 20 71 25  21 34 3d 31 36 20 8c 0d  |=13 . q%!4=16 ..|
000017b0  09 42 1e c8 99 20 22 57  69 6d 70 5f 47 65 74 49  |.B... "Wimp_GetI|
000017c0  63 6f 6e 53 74 61 74 65  22 2c 2c 71 25 0d 09 4c  |conState",,q%..L|
000017d0  18 f2 6e 65 77 73 70 65  65 64 28 bb 24 28 71 25  |..newspeed(.$(q%|
000017e0  21 32 38 29 29 0d 09 56  05 cc 0d 09 60 1e c8 99  |!28))..V....`...|
000017f0  20 22 57 69 6d 70 5f 50  72 6f 63 65 73 73 4b 65  | "Wimp_ProcessKe|
00001800  79 22 2c 71 25 21 32 34  0d 09 6a 05 cd 0d 09 74  |y",q%!24..j....t|
00001810  04 0d 09 7e 12 c9 20 78  66 65 72 25 2c 78 66 65  |...~.. xfer%,xfe|
00001820  72 32 25 0d 09 88 04 0d  09 92 19 e7 20 71 25 21  |r2%......... q%!|
00001830  34 3d 31 20 80 20 71 25  21 32 34 3d 31 33 20 8c  |4=1 . q%!24=13 .|
00001840  0d 09 9c 0f 21 62 75 66  66 65 72 3d 21 71 25 0d  |....!buffer=!q%.|
00001850  09 a6 0e 62 75 66 66 65  72 21 34 3d 31 0d 09 b0  |...buffer!4=1...|
00001860  22 c8 99 20 22 57 69 6d  70 5f 47 65 74 49 63 6f  |".. "Wimp_GetIco|
00001870  6e 53 74 61 74 65 22 2c  2c 62 75 66 66 65 72 0d  |nState",,buffer.|
00001880  09 ba 47 e7 20 21 71 25  3d 78 66 65 72 25 20 8c  |..G. !q%=xfer% .|
00001890  20 f2 73 6e 61 70 5f 73  61 76 65 28 24 28 62 75  | .snap_save($(bu|
000018a0  66 66 65 72 21 32 38 29  29 20 8b 20 f2 73 70 72  |ffer!28)) . .spr|
000018b0  69 74 65 5f 73 61 76 65  28 24 28 62 75 66 66 65  |ite_save($(buffe|
000018c0  72 21 32 38 29 29 0d 09  c4 1b c8 99 20 22 57 69  |r!28))...... "Wi|
000018d0  6d 70 5f 43 72 65 61 74  65 4d 65 6e 75 22 2c 2d  |mp_CreateMenu",-|
000018e0  31 0d 09 ce 05 cc 0d 09  d8 1e c8 99 20 22 57 69  |1........... "Wi|
000018f0  6d 70 5f 50 72 6f 63 65  73 73 4b 65 79 22 2c 71  |mp_ProcessKey",q|
00001900  25 21 32 34 0d 09 e2 05  cd 0d 09 ec 04 0d 09 f6  |%!24............|
00001910  05 cb 0d 0a 00 05 e1 0d  0a 0a 04 0d 0a 14 0b dd  |................|
00001920  f2 63 6c 69 63 6b 0d 0a  1e 0c 6d 78 25 3d 71 25  |.click....mx%=q%|
00001930  21 30 0d 0a 28 0c 6d 79  25 3d 71 25 21 34 0d 0a  |!0..(.my%=q%!4..|
00001940  32 0c 6d 62 25 3d 71 25  21 38 0d 0a 3c 0c 68 25  |2.mb%=q%!8..<.h%|
00001950  3d 71 25 21 31 32 0d 0a  46 0c 69 25 3d 71 25 21  |=q%!12..F.i%=q%!|
00001960  31 36 0d 0a 50 1c e7 20  68 25 3d 63 6f 6e 66 69  |16..P.. h%=confi|
00001970  67 25 20 8c 20 f2 63 6f  6e 66 69 67 3a e1 0d 0a  |g% . .config:...|
00001980  5a 0d e7 20 68 25 3d 2d  32 20 8c 0d 0a 64 31 e7  |Z.. h%=-2 ...d1.|
00001990  20 6d 62 25 3d 32 20 8c  20 f2 6f 70 65 6e 6d 65  | mb%=2 . .openme|
000019a0  6e 75 28 69 63 6f 6e 6d  65 6e 75 25 2c 6d 78 25  |nu(iconmenu%,mx%|
000019b0  2d 36 34 2c 39 36 2b 37  2a 34 34 29 0d 0a 6e 0d  |-64,96+7*44)..n.|
000019c0  e7 20 6d 62 25 3d 31 20  8c 0d 0a 78 10 f4 50 52  |. mb%=1 ...x..PR|
000019d0  4f 43 72 65 61 64 43 53  44 0d 0a 82 0c f4 50 52  |OCreadCSD.....PR|
000019e0  4f 43 42 42 43 0d 0a 8c  0f f2 6f 70 65 6e 63 6f  |OCBBC.....openco|
000019f0  6e 66 69 67 0d 0a 96 05  cd 0d 0a a0 0d e7 20 6d  |nfig.......... m|
00001a00  62 25 3d 34 20 8c 0d 0a  aa 1a e7 20 a6 2d 31 20  |b%=4 ...... .-1 |
00001a10  84 20 a6 2d 32 20 8c 20  f2 72 65 61 64 43 53 44  |. .-2 . .readCSD|
00001a20  0d 0a b4 08 f2 42 42 43  0d 0a be 05 cd 0d 0a c8  |.....BBC........|
00001a30  05 cd 0d 0a d2 3d e7 20  69 25 3d 33 20 80 20 28  |.....=. i%=3 . (|
00001a40  68 25 3d 78 66 65 72 25  20 84 20 68 25 3d 78 66  |h%=xfer% . h%=xf|
00001a50  65 72 32 25 29 20 8c 20  c8 99 20 22 57 69 6d 70  |er2%) . .. "Wimp|
00001a60  5f 43 72 65 61 74 65 4d  65 6e 75 22 2c 2d 31 0d  |_CreateMenu",-1.|
00001a70  0a dc 04 0d 0a e6 37 e7  20 28 68 25 3d 78 66 65  |......7. (h%=xfe|
00001a80  72 25 20 84 20 68 25 3d  78 66 65 72 32 25 29 20  |r% . h%=xfer2%) |
00001a90  80 20 69 25 3d 32 20 80  20 28 6d 62 25 3d 31 20  |. i%=2 . (mb%=1 |
00001aa0  84 20 6d 62 25 3d 34 29  20 8c 0d 0a f0 0e 21 62  |. mb%=4) .....!b|
00001ab0  75 66 66 65 72 3d 68 25  0d 0a fa 0e 62 75 66 66  |uffer=h%....buff|
00001ac0  65 72 21 34 3d 31 0d 0b  04 22 c8 99 20 22 57 69  |er!4=1...".. "Wi|
00001ad0  6d 70 5f 47 65 74 49 63  6f 6e 53 74 61 74 65 22  |mp_GetIconState"|
00001ae0  2c 2c 62 75 66 66 65 72  0d 0b 0e 46 e7 20 68 25  |,,buffer...F. h%|
00001af0  3d 78 66 65 72 25 20 8c  20 f2 73 6e 61 70 5f 73  |=xfer% . .snap_s|
00001b00  61 76 65 28 24 28 62 75  66 66 65 72 21 32 38 29  |ave($(buffer!28)|
00001b10  29 20 8b 20 f2 73 70 72  69 74 65 5f 73 61 76 65  |) . .sprite_save|
00001b20  28 24 28 62 75 66 66 65  72 21 32 38 29 29 0d 0b  |($(buffer!28))..|
00001b30  18 26 e7 20 6d 62 25 3c  3e 31 20 8c 20 c8 99 20  |.&. mb%<>1 . .. |
00001b40  22 57 69 6d 70 5f 43 72  65 61 74 65 4d 65 6e 75  |"Wimp_CreateMenu|
00001b50  22 2c 2d 31 0d 0b 22 05  cd 0d 0b 2c 04 0d 0b 36  |",-1.."....,...6|
00001b60  17 e7 20 68 25 3d 78 66  65 72 25 20 80 20 69 25  |.. h%=xfer% . i%|
00001b70  3d 30 20 8c 0d 0b 40 12  73 61 76 65 5f 73 70 72  |=0 ...@.save_spr|
00001b80  69 74 65 25 3d a3 0d 0b  4a 31 21 78 66 65 72 31  |ite%=...J1!xfer1|
00001b90  3d 78 66 65 72 25 20 3a  20 c8 99 20 22 57 69 6d  |=xfer% : .. "Wim|
00001ba0  70 5f 47 65 74 57 69 6e  64 6f 77 49 6e 66 6f 22  |p_GetWindowInfo"|
00001bb0  2c 2c 78 66 65 72 31 0d  0b 54 3f 21 62 75 66 66  |,,xfer1..T?!buff|
00001bc0  65 72 3d 78 66 65 72 25  20 3a 20 62 75 66 66 65  |er=xfer% : buffe|
00001bd0  72 21 34 3d 30 20 3a 20  c8 99 20 22 57 69 6d 70  |r!4=0 : .. "Wimp|
00001be0  5f 47 65 74 49 63 6f 6e  53 74 61 74 65 22 2c 2c  |_GetIconState",,|
00001bf0  62 75 66 66 65 72 0d 0b  5e 0c 64 72 61 67 21 30  |buffer..^.drag!0|
00001c00  3d 30 0d 0b 68 1b 64 72  61 67 21 38 3d 78 66 65  |=0..h.drag!8=xfe|
00001c10  72 31 21 34 2b 62 75 66  66 65 72 21 38 0d 0b 72  |r1!4+buffer!8..r|
00001c20  1e 64 72 61 67 21 31 32  3d 78 66 65 72 31 21 31  |.drag!12=xfer1!1|
00001c30  36 2b 62 75 66 66 65 72  21 31 32 0d 0b 7c 1d 64  |6+buffer!12..|.d|
00001c40  72 61 67 21 31 36 3d 78  66 65 72 31 21 34 2b 62  |rag!16=xfer1!4+b|
00001c50  75 66 66 65 72 21 31 36  0d 0b 86 1e 64 72 61 67  |uffer!16....drag|
00001c60  21 32 30 3d 78 66 65 72  31 21 31 36 2b 62 75 66  |!20=xfer1!16+buf|
00001c70  66 65 72 21 32 30 0d 0b  90 22 c8 99 20 22 4f 53  |fer!20...".. "OS|
00001c80  5f 42 79 74 65 22 2c 31  36 31 2c 26 31 43 20 b8  |_Byte",161,&1C .|
00001c90  20 2c 2c 62 79 74 65 25  0d 0b 9a 1f e7 20 52 4f  | ,,byte%..... RO|
00001ca0  25 3e 32 39 39 20 80 20  28 62 79 74 65 25 20 80  |%>299 . (byte% .|
00001cb0  20 32 29 3d 32 20 8c 0d  0b a4 0c 64 72 61 67 21  | 2)=2 .....drag!|
00001cc0  34 3d 37 0d 0b ae 0c 73  6f 6c 69 64 25 3d b9 0d  |4=7....solid%=..|
00001cd0  0b b8 05 cc 0d 0b c2 0c  64 72 61 67 21 34 3d 35  |........drag!4=5|
00001ce0  0d 0b cc 0c 73 6f 6c 69  64 25 3d a3 0d 0b d6 05  |....solid%=.....|
00001cf0  cd 0d 0b e0 10 64 72 61  67 21 32 34 3d 2d 31 30  |.....drag!24=-10|
00001d00  30 0d 0b ea 10 64 72 61  67 21 32 38 3d 2d 31 30  |0....drag!28=-10|
00001d10  30 0d 0b f4 11 64 72 61  67 21 33 32 3d 33 30 30  |0....drag!32=300|
00001d20  30 30 0d 0b fe 11 64 72  61 67 21 33 36 3d 33 30  |00....drag!36=30|
00001d30  30 30 30 0d 0c 08 5d e7  20 73 6f 6c 69 64 25 20  |000...]. solid% |
00001d40  8c 20 c8 99 20 22 44 72  61 67 41 53 70 72 69 74  |. .. "DragASprit|
00001d50  65 5f 53 74 61 72 74 22  2c 25 31 31 30 30 30 31  |e_Start",%110001|
00001d60  30 31 2c 31 2c 22 66 69  6c 65 5f 42 42 43 22 2c  |01,1,"file_BBC",|
00001d70  64 72 61 67 2b 38 20 8b  20 c8 99 20 22 57 69 6d  |drag+8 . .. "Wim|
00001d80  70 5f 44 72 61 67 42 6f  78 22 2c 2c 64 72 61 67  |p_DragBox",,drag|
00001d90  0d 0c 12 05 cd 0d 0c 1c  18 e7 20 68 25 3d 78 66  |.......... h%=xf|
00001da0  65 72 32 25 20 80 20 69  25 3d 30 20 8c 0d 0c 26  |er2% . i%=0 ...&|
00001db0  12 73 61 76 65 5f 73 70  72 69 74 65 25 3d b9 0d  |.save_sprite%=..|
00001dc0  0c 30 32 21 78 66 65 72  33 3d 78 66 65 72 32 25  |.02!xfer3=xfer2%|
00001dd0  20 3a 20 c8 99 20 22 57  69 6d 70 5f 47 65 74 57  | : .. "Wimp_GetW|
00001de0  69 6e 64 6f 77 49 6e 66  6f 22 2c 2c 78 66 65 72  |indowInfo",,xfer|
00001df0  33 0d 0c 3a 40 21 62 75  66 66 65 72 3d 78 66 65  |3..:@!buffer=xfe|
00001e00  72 32 25 20 3a 20 62 75  66 66 65 72 21 34 3d 30  |r2% : buffer!4=0|
00001e10  20 3a 20 c8 99 20 22 57  69 6d 70 5f 47 65 74 49  | : .. "Wimp_GetI|
00001e20  63 6f 6e 53 74 61 74 65  22 2c 2c 62 75 66 66 65  |conState",,buffe|
00001e30  72 0d 0c 44 0c 64 72 61  67 21 30 3d 30 0d 0c 4e  |r..D.drag!0=0..N|
00001e40  1b 64 72 61 67 21 38 3d  78 66 65 72 33 21 34 2b  |.drag!8=xfer3!4+|
00001e50  62 75 66 66 65 72 21 38  0d 0c 58 1e 64 72 61 67  |buffer!8..X.drag|
00001e60  21 31 32 3d 78 66 65 72  33 21 31 36 2b 62 75 66  |!12=xfer3!16+buf|
00001e70  66 65 72 21 31 32 0d 0c  62 1d 64 72 61 67 21 31  |fer!12..b.drag!1|
00001e80  36 3d 78 66 65 72 33 21  34 2b 62 75 66 66 65 72  |6=xfer3!4+buffer|
00001e90  21 31 36 0d 0c 6c 1e 64  72 61 67 21 32 30 3d 78  |!16..l.drag!20=x|
00001ea0  66 65 72 33 21 31 36 2b  62 75 66 66 65 72 21 32  |fer3!16+buffer!2|
00001eb0  30 0d 0c 76 22 c8 99 20  22 4f 53 5f 42 79 74 65  |0..v".. "OS_Byte|
00001ec0  22 2c 31 36 31 2c 26 31  43 20 b8 20 2c 2c 62 79  |",161,&1C . ,,by|
00001ed0  74 65 25 0d 0c 80 1f e7  20 52 4f 25 3e 32 39 39  |te%..... RO%>299|
00001ee0  20 80 20 28 62 79 74 65  25 20 80 20 32 29 3d 32  | . (byte% . 2)=2|
00001ef0  20 8c 0d 0c 8a 0c 64 72  61 67 21 34 3d 37 0d 0c  | .....drag!4=7..|
00001f00  94 0c 73 6f 6c 69 64 25  3d b9 0d 0c 9e 05 cc 0d  |..solid%=.......|
00001f10  0c a8 0c 64 72 61 67 21  34 3d 35 0d 0c b2 0c 73  |...drag!4=5....s|
00001f20  6f 6c 69 64 25 3d a3 0d  0c bc 05 cd 0d 0c c6 10  |olid%=..........|
00001f30  64 72 61 67 21 32 34 3d  2d 31 30 30 0d 0c d0 10  |drag!24=-100....|
00001f40  64 72 61 67 21 32 38 3d  2d 31 30 30 0d 0c da 11  |drag!28=-100....|
00001f50  64 72 61 67 21 33 32 3d  33 30 30 30 30 0d 0c e4  |drag!32=30000...|
00001f60  11 64 72 61 67 21 33 36  3d 33 30 30 30 30 0d 0c  |.drag!36=30000..|
00001f70  ee 5d e7 20 73 6f 6c 69  64 25 20 8c 20 c8 99 20  |.]. solid% . .. |
00001f80  22 44 72 61 67 41 53 70  72 69 74 65 5f 53 74 61  |"DragASprite_Sta|
00001f90  72 74 22 2c 25 31 31 30  30 30 31 30 31 2c 31 2c  |rt",%11000101,1,|
00001fa0  22 66 69 6c 65 5f 46 46  39 22 2c 64 72 61 67 2b  |"file_FF9",drag+|
00001fb0  38 20 8b 20 c8 99 20 22  57 69 6d 70 5f 44 72 61  |8 . .. "Wimp_Dra|
00001fc0  67 42 6f 78 22 2c 2c 64  72 61 67 0d 0c f8 05 cd  |gBox",,drag.....|
00001fd0  0d 0d 02 05 e1 0d 0d 0c  04 0d 0d 16 04 0d 0d 20  |............... |
00001fe0  0b dd f2 6d 65 6e 75 73  0d 0d 2a 07 ea 50 25 0d  |...menus..*..P%.|
00001ff0  0d 34 39 f2 6d 65 6e 75  68 65 61 64 65 72 28 69  |.49.menuheader(i|
00002000  63 6f 6e 6d 65 6e 75 25  2c 22 36 35 30 32 45 6d  |conmenu%,"6502Em|
00002010  22 2c a9 22 53 69 6e 67  6c 65 20 54 61 73 6b 20  |",."Single Task |
00002020  22 2a 31 36 2b 31 32 29  0d 0d 3e 27 f2 6d 65 6e  |"*16+12)..>'.men|
00002030  75 69 74 65 6d 28 30 2c  69 6e 66 6f 25 2c 26 30  |uitem(0,info%,&0|
00002040  37 30 30 30 30 30 31 2c  22 49 6e 66 6f 22 29 0d  |7000001,"Info").|
00002050  0d 48 2a f2 6d 65 6e 75  69 74 65 6d 28 30 2c 72  |.H*.menuitem(0,r|
00002060  6f 6d 6d 65 6e 75 25 2c  26 30 37 30 30 30 30 30  |ommenu%,&0700000|
00002070  31 2c 22 52 4f 4d 73 22  29 0d 0d 52 2b f2 6d 65  |1,"ROMs")..R+.me|
00002080  6e 75 69 74 65 6d 28 30  2c 6d 69 73 63 6d 65 6e  |nuitem(0,miscmen|
00002090  75 25 2c 26 30 37 30 30  30 30 30 31 2c 22 4d 69  |u%,&07000001,"Mi|
000020a0  73 63 22 29 0d 0d 5c 2c  f4 50 52 4f 43 6d 65 6e  |sc")..\,.PROCmen|
000020b0  75 69 74 65 6d 28 30 2c  2d 31 2c 26 30 37 30 30  |uitem(0,-1,&0700|
000020c0  30 30 30 31 2c 22 52 65  61 64 20 43 53 44 22 29  |0001,"Read CSD")|
000020d0  0d 0d 66 29 f4 50 52 4f  43 6d 65 6e 75 69 74 65  |..f).PROCmenuite|
000020e0  6d 28 30 2c 2d 31 2c 26  30 37 30 30 30 30 30 31  |m(0,-1,&07000001|
000020f0  2c 22 52 65 73 65 74 22  29 0d 0d 70 27 f2 6d 65  |,"Reset")..p'.me|
00002100  6e 75 69 74 65 6d 28 30  2c 78 66 65 72 25 2c 26  |nuitem(0,xfer%,&|
00002110  30 37 30 30 30 30 30 31  2c 22 53 61 76 65 22 29  |07000001,"Save")|
00002120  0d 0d 7a 10 e7 20 73 70  72 69 74 65 3d 30 20 8c  |..z.. sprite=0 .|
00002130  0d 0d 84 33 f2 6d 65 6e  75 69 74 65 6d 28 30 2c  |...3.menuitem(0,|
00002140  78 66 65 72 32 25 2c 26  30 37 30 30 30 30 30 31  |xfer2%,&07000001|
00002150  20 84 20 28 32 5e 32 32  29 2c 22 53 70 72 69 74  | . (2^22),"Sprit|
00002160  65 22 29 0d 0d 8e 05 cc  0d 0d 98 41 f2 6d 65 6e  |e")........A.men|
00002170  75 69 74 65 6d 28 30 2c  78 66 65 72 32 25 2c 26  |uitem(0,xfer2%,&|
00002180  30 37 30 30 30 30 30 31  20 84 20 2d 28 32 5e 32  |07000001 . -(2^2|
00002190  32 29 2a 28 73 70 72 69  74 65 21 34 3d 30 29 2c  |2)*(sprite!4=0),|
000021a0  22 53 70 72 69 74 65 22  29 0d 0d a2 05 cd 0d 0d  |"Sprite").......|
000021b0  ac 29 f2 6d 65 6e 75 69  74 65 6d 28 30 2c 2d 31  |.).menuitem(0,-1|
000021c0  2c 26 30 37 30 30 30 30  30 31 2c 22 43 6f 6e 66  |,&07000001,"Conf|
000021d0  69 67 2e 2e 2e 22 29 0d  0d b6 26 f2 6d 65 6e 75  |ig...")...&.menu|
000021e0  69 74 65 6d 28 26 38 30  2c 2d 31 2c 26 30 37 30  |item(&80,-1,&070|
000021f0  30 30 30 30 31 2c 22 51  75 69 74 22 29 0d 0d c0  |00001,"Quit")...|
00002200  04 0d 0d ca 24 62 75 66  66 65 72 21 30 3d 30 3a  |....$buffer!0=0:|
00002210  62 75 66 66 65 72 21 34  3d 30 3a 62 75 66 66 65  |buffer!4=0:buffe|
00002220  72 21 38 3d 30 0d 0d d4  37 c8 99 20 22 4f 53 5f  |r!8=0...7.. "OS_|
00002230  52 65 61 64 56 61 72 56  61 6c 22 2c 22 36 35 30  |ReadVarVal","650|
00002240  32 45 6d 24 4b 65 79 6d  61 70 22 2c 62 75 66 66  |2Em$Keymap",buff|
00002250  65 72 2c 32 35 35 20 b8  20 2c 53 24 0d 0d de 17  |er,255 . ,S$....|
00002260  6b 65 79 6d 61 70 25 3d  a4 6b 65 79 6d 61 70 28  |keymap%=.keymap(|
00002270  53 24 29 0d 0d e8 04 0d  0d f2 13 e7 20 6b 65 79  |S$)......... key|
00002280  6d 61 70 73 25 3c 3e 30  20 8c 0d 0d fc 2c f2 6d  |maps%<>0 ....,.m|
00002290  65 6e 75 68 65 61 64 65  72 28 6b 65 79 73 6d 65  |enuheader(keysme|
000022a0  6e 75 25 2c 22 4b 65 79  6d 61 70 22 2c 31 32 2a  |nu%,"Keymap",12*|
000022b0  31 36 2b 31 32 29 0d 0e  06 14 e3 49 25 3d 31 20  |16+12).....I%=1 |
000022c0  b8 20 6b 65 79 6d 61 70  73 25 0d 0e 10 47 f2 6d  |. keymaps%...G.m|
000022d0  65 6e 75 69 74 65 6d 28  2d 26 38 30 2a 28 49 25  |enuitem(-&80*(I%|
000022e0  3d 6b 65 79 6d 61 70 73  25 29 2d 28 6b 65 79 6d  |=keymaps%)-(keym|
000022f0  61 70 25 3d 49 25 29 2c  2d 31 2c 26 30 37 30 30  |ap%=I%),-1,&0700|
00002300  30 30 30 31 2c 6b 65 79  6d 61 70 24 28 49 25 29  |0001,keymap$(I%)|
00002310  29 0d 0e 1a 05 ed 0d 0e  24 05 cd 0d 0e 2e 04 0d  |).......$.......|
00002320  0e 38 13 e7 20 70 61 74  63 68 65 73 25 3c 3e 30  |.8.. patches%<>0|
00002330  20 8c 0d 0e 42 2e f2 6d  65 6e 75 68 65 61 64 65  | ...B..menuheade|
00002340  72 28 70 61 74 63 68 6d  65 6e 75 25 2c 22 50 61  |r(patchmenu%,"Pa|
00002350  74 63 68 65 73 22 2c 31  32 2a 31 36 2b 31 32 29  |tches",12*16+12)|
00002360  0d 0e 4c 14 e3 49 25 3d  31 20 b8 20 70 61 74 63  |..L..I%=1 . patc|
00002370  68 65 73 25 0d 0e 56 37  f2 6d 65 6e 75 69 74 65  |hes%..V7.menuite|
00002380  6d 28 2d 32 2a 28 49 25  3d 70 61 74 63 68 65 73  |m(-2*(I%=patches|
00002390  25 29 2c 2d 31 2c 26 30  37 30 30 30 30 30 31 2c  |%),-1,&07000001,|
000023a0  70 61 74 63 68 24 28 49  25 29 29 0d 0e 60 05 ed  |patch$(I%))..`..|
000023b0  0d 0e 6a 28 f2 6d 65 6e  75 69 74 65 6d 28 26 38  |..j(.menuitem(&8|
000023c0  30 2c 2d 31 2c 26 30 37  30 30 30 30 30 31 2c 22  |0,-1,&07000001,"|
000023d0  28 6e 6f 6e 65 29 22 29  0d 0e 74 05 cd 0d 0e 7e  |(none)")..t....~|
000023e0  04 0d 0e 88 2b f2 6d 65  6e 75 68 65 61 64 65 72  |....+.menuheader|
000023f0  28 73 70 65 65 64 6d 65  6e 75 25 2c 22 53 70 65  |(speedmenu%,"Spe|
00002400  65 64 22 2c 36 2a 31 36  2b 31 32 29 0d 0e 92 13  |ed",6*16+12)....|
00002410  e3 49 25 3d 30 20 b8 20  73 70 65 65 64 73 25 0d  |.I%=0 . speeds%.|
00002420  0e 9c 38 f2 6d 65 6e 75  69 74 65 6d 28 2d 26 38  |..8.menuitem(-&8|
00002430  30 2a 28 49 25 3d 73 70  65 65 64 73 25 29 2c 2d  |0*(I%=speeds%),-|
00002440  31 2c 26 30 37 30 30 30  30 30 31 2c 73 70 65 65  |1,&07000001,spee|
00002450  64 24 28 49 25 29 29 0d  0e a6 05 ed 0d 0e b0 04  |d$(I%)).........|
00002460  0d 0e ba 2f f2 6d 65 6e  75 68 65 61 64 65 72 28  |.../.menuheader(|
00002470  72 6f 6d 6d 65 6e 75 25  2c 22 50 72 6f 74 65 63  |rommenu%,"Protec|
00002480  74 65 64 3f 22 2c 31 32  2a 31 36 2b 31 32 29 0d  |ted?",12*16+12).|
00002490  0e c4 13 e3 49 25 3d 31  35 20 b8 20 30 20 88 20  |....I%=15 . 0 . |
000024a0  2d 31 0d 0e ce 46 f2 6d  65 6e 75 69 74 65 6d 28  |-1...F.menuitem(|
000024b0  2d 28 3f 28 52 4f 4d 52  41 4d 2b 49 25 29 3c 3e  |-(?(ROMRAM+I%)<>|
000024c0  30 29 2d 26 38 30 2a 28  49 25 3d 30 29 2c 2d 31  |0)-&80*(I%=0),-1|
000024d0  2c 26 30 37 30 30 30 30  30 31 2c a4 52 4f 4d 6e  |,&07000001,.ROMn|
000024e0  61 6d 65 28 49 25 29 29  0d 0e d8 05 ed 0d 0e e2  |ame(I%))........|
000024f0  04 0d 0e ec 38 f2 6d 65  6e 75 68 65 61 64 65 72  |....8.menuheader|
00002500  28 6d 69 73 63 6d 65 6e  75 25 2c 22 4d 69 73 63  |(miscmenu%,"Misc|
00002510  22 2c a9 22 44 69 73 61  62 6c 65 20 54 61 70 65  |",."Disable Tape|
00002520  20 22 2a 31 36 2b 31 32  29 0d 0e f6 28 f2 6d 65  | "*16+12)...(.me|
00002530  6e 75 69 74 65 6d 28 30  2c 2d 31 2c 26 30 37 30  |nuitem(0,-1,&070|
00002540  30 30 30 30 31 2c 22 52  65 61 64 20 43 53 44 22  |00001,"Read CSD"|
00002550  29 0d 0f 00 25 f2 6d 65  6e 75 69 74 65 6d 28 30  |)...%.menuitem(0|
00002560  2c 2d 31 2c 26 30 37 30  30 30 30 30 31 2c 22 52  |,-1,&07000001,"R|
00002570  65 73 65 74 22 29 0d 0f  0a 1f e7 20 6d 61 63 68  |eset")..... mach|
00002580  69 6e 65 25 3d 30 20 84  20 6d 61 63 68 69 6e 65  |ine%=0 . machine|
00002590  25 3d 34 20 8c 0d 0f 14  2c f2 6d 65 6e 75 69 74  |%=4 ....,.menuit|
000025a0  65 6d 28 30 2c 2d 31 2c  26 30 37 30 30 30 30 30  |em(0,-1,&0700000|
000025b0  31 2c 22 44 69 73 61 62  6c 65 20 54 61 70 65 22  |1,"Disable Tape"|
000025c0  29 0d 0f 1e 05 cc 0d 0f  28 33 f2 6d 65 6e 75 69  |).......(3.menui|
000025d0  74 65 6d 28 30 2c 2d 31  2c 26 30 37 30 30 30 30  |tem(0,-1,&070000|
000025e0  30 31 20 84 20 32 5e 32  32 2c 22 44 69 73 61 62  |01 . 2^22,"Disab|
000025f0  6c 65 20 54 61 70 65 22  29 0d 0f 32 05 cd 0d 0f  |le Tape")..2....|
00002600  3c 2d f2 6d 65 6e 75 69  74 65 6d 28 26 38 30 2c  |<-.menuitem(&80,|
00002610  2d 31 2c 26 30 37 30 30  30 30 30 31 2c 22 4e 6f  |-1,&07000001,"No|
00002620  20 4a 6f 79 73 74 69 63  6b 22 29 0d 0f 46 04 0d  | Joystick")..F..|
00002630  0f 50 3d f2 6d 65 6e 75  68 65 61 64 65 72 28 6d  |.P=.menuheader(m|
00002640  61 63 68 69 6e 65 5f 6d  65 6e 75 25 2c 22 4d 61  |achine_menu%,"Ma|
00002650  63 68 69 6e 65 22 2c a9  22 4d 61 73 74 65 72 20  |chine",."Master |
00002660  31 32 38 20 22 2a 31 36  2b 31 32 29 0d 0f 5a 43  |128 "*16+12)..ZC|
00002670  f2 6d 65 6e 75 69 74 65  6d 28 30 2c 2d 31 2c 26  |.menuitem(0,-1,&|
00002680  30 37 30 30 30 30 30 31  20 84 20 2d 28 32 5e 32  |07000001 . -(2^2|
00002690  32 29 2a 28 4d 61 63 68  69 6e 65 25 28 30 29 3d  |2)*(Machine%(0)=|
000026a0  30 29 2c 4d 61 63 68 69  6e 65 24 28 30 29 29 0d  |0),Machine$(0)).|
000026b0  0f 64 43 f2 6d 65 6e 75  69 74 65 6d 28 30 2c 2d  |.dC.menuitem(0,-|
000026c0  31 2c 26 30 37 30 30 30  30 30 31 20 84 20 2d 28  |1,&07000001 . -(|
000026d0  32 5e 32 32 29 2a 28 4d  61 63 68 69 6e 65 25 28  |2^22)*(Machine%(|
000026e0  31 29 3d 30 29 2c 4d 61  63 68 69 6e 65 24 28 31  |1)=0),Machine$(1|
000026f0  29 29 0d 0f 6e 43 f2 6d  65 6e 75 69 74 65 6d 28  |))..nC.menuitem(|
00002700  30 2c 2d 31 2c 26 30 37  30 30 30 30 30 31 20 84  |0,-1,&07000001 .|
00002710  20 2d 28 32 5e 32 32 29  2a 28 4d 61 63 68 69 6e  | -(2^22)*(Machin|
00002720  65 25 28 32 29 3d 30 29  2c 4d 61 63 68 69 6e 65  |e%(2)=0),Machine|
00002730  24 28 32 29 29 0d 0f 78  43 f2 6d 65 6e 75 69 74  |$(2))..xC.menuit|
00002740  65 6d 28 30 2c 2d 31 2c  26 30 37 30 30 30 30 30  |em(0,-1,&0700000|
00002750  31 20 84 20 2d 28 32 5e  32 32 29 2a 28 4d 61 63  |1 . -(2^22)*(Mac|
00002760  68 69 6e 65 25 28 33 29  3d 30 29 2c 4d 61 63 68  |hine%(3)=0),Mach|
00002770  69 6e 65 24 28 33 29 29  0d 0f 82 45 f2 6d 65 6e  |ine$(3))...E.men|
00002780  75 69 74 65 6d 28 26 38  30 2c 2d 31 2c 26 30 37  |uitem(&80,-1,&07|
00002790  30 30 30 30 30 31 20 84  20 2d 28 32 5e 32 32 29  |000001 . -(2^22)|
000027a0  2a 28 4d 61 63 68 69 6e  65 25 28 34 29 3d 30 29  |*(Machine%(4)=0)|
000027b0  2c 4d 61 63 68 69 6e 65  24 28 34 29 29 0d 0f 8c  |,Machine$(4))...|
000027c0  04 0d 0f 96 05 e1 0d 0f  a0 04 0d 0f aa 1a dd f2  |................|
000027d0  6d 65 6e 75 68 65 61 64  65 72 28 41 25 2c 42 24  |menuheader(A%,B$|
000027e0  2c 47 25 29 0d 0f b4 09  50 25 3d 41 25 0d 0f be  |,G%)....P%=A%...|
000027f0  0e 24 50 25 3d 42 24 2b  bd 31 33 0d 0f c8 29 50  |.$P%=B$+.13...)P|
00002800  25 3f 31 32 3d 37 20 3a  20 50 25 3f 31 33 3d 32  |%?12=7 : P%?13=2|
00002810  20 3a 20 50 25 3f 31 34  3d 37 20 3a 20 50 25 3f  | : P%?14=7 : P%?|
00002820  31 35 3d 30 0d 0f d2 21  50 25 21 31 36 3d 47 25  |15=0...!P%!16=G%|
00002830  20 3a 20 50 25 21 32 30  3d 34 34 20 3a 20 50 25  | : P%!20=44 : P%|
00002840  21 32 34 3d 30 0d 0f dc  0a 50 25 2b 3d 32 38 0d  |!24=0....P%+=28.|
00002850  0f e6 05 e1 0d 0f f0 04  0d 0f fa 1b dd f2 6d 65  |..............me|
00002860  6e 75 69 74 65 6d 28 41  25 2c 42 25 2c 43 25 2c  |nuitem(A%,B%,C%,|
00002870  44 24 29 0d 10 04 0b 50  25 21 30 3d 41 25 0d 10  |D$)....P%!0=A%..|
00002880  0e 0b 50 25 21 34 3d 42  25 0d 10 18 0b 50 25 21  |..P%!4=B%....P%!|
00002890  38 3d 43 25 0d 10 22 13  24 28 50 25 2b 31 32 29  |8=C%..".$(P%+12)|
000028a0  3d 44 24 2b bd 31 33 0d  10 2c 0a 50 25 2b 3d 32  |=D$+.13..,.P%+=2|
000028b0  34 0d 10 36 05 e1 0d 10  40 04 0d 10 4a 24 dd f2  |4..6....@...J$..|
000028c0  69 6e 64 69 72 65 63 74  65 64 69 74 65 6d 28 41  |indirecteditem(A|
000028d0  25 2c 42 25 2c 43 25 2c  44 24 2c 45 25 29 0d 10  |%,B%,C%,D$,E%)..|
000028e0  54 0b 50 25 21 30 3d 41  25 0d 10 5e 0b 50 25 21  |T.P%!0=A%..^.P%!|
000028f0  34 3d 42 25 0d 10 68 15  50 25 21 38 3d 43 25 2b  |4=B%..h.P%!8=C%+|
00002900  26 30 37 30 30 30 30 30  30 0d 10 72 0c 50 25 21  |&07000000..r.P%!|
00002910  31 32 3d 45 25 0d 10 7c  0b 50 25 21 31 36 3d 30  |12=E%..|.P%!16=0|
00002920  0d 10 86 0f 50 25 21 32  30 3d a9 44 24 2b 31 0d  |....P%!20=.D$+1.|
00002930  10 90 0e 24 45 25 3d 44  24 2b bd 31 33 0d 10 9a  |...$E%=D$+.13...|
00002940  0a 50 25 2b 3d 32 34 0d  10 a4 05 e1 0d 10 ae 04  |.P%+=24.........|
00002950  0d 10 b8 10 dd f2 64 65  63 6f 64 65 6d 65 6e 75  |......decodemenu|
00002960  0d 10 c2 16 c8 8e 20 63  75 72 72 65 6e 74 5f 6d  |...... current_m|
00002970  65 6e 75 25 20 ca 0d 10  cc 1f c9 20 69 63 6f 6e  |enu% ...... icon|
00002980  6d 65 6e 75 25 20 20 20  20 20 3a 20 f2 69 63 6f  |menu%     : .ico|
00002990  6e 6d 65 6e 75 0d 10 d6  4a c9 20 6d 61 63 68 69  |nmenu...J. machi|
000029a0  6e 65 5f 6d 65 6e 75 25  20 3a 20 e7 20 21 71 25  |ne_menu% : . !q%|
000029b0  3c 3e 2d 31 20 80 20 21  71 25 3c 3e 6d 61 63 68  |<>-1 . !q%<>mach|
000029c0  69 6e 65 25 20 8c 20 6d  61 63 68 69 6e 65 25 3d  |ine% . machine%=|
000029d0  21 71 25 3a f2 6e 65 77  6d 61 63 68 69 6e 65 0d  |!q%:.newmachine.|
000029e0  10 e0 3c c9 20 6b 65 79  73 6d 65 6e 75 25 20 20  |..<. keysmenu%  |
000029f0  20 20 20 3a 20 e7 20 21  71 25 3c 3e 2d 31 20 8c  |   : . !q%<>-1 .|
00002a00  20 f2 73 65 74 6b 65 79  6d 61 70 28 6b 65 79 6d  | .setkeymap(keym|
00002a10  61 70 24 28 21 71 25 2b  31 29 29 0d 10 ea 04 0d  |ap$(!q%+1)).....|
00002a20  10 f4 27 c9 20 70 61 74  63 68 6d 65 6e 75 25 20  |..'. patchmenu% |
00002a30  20 20 20 3a 20 e7 20 21  71 25 3e 3d 70 61 74 63  |   : . !q%>=patc|
00002a40  68 65 73 25 20 8c 0d 10  fe 3c 20 20 20 20 20 20  |hes% ....<      |
00002a50  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 70  |               p|
00002a60  61 74 63 68 25 3d 30 3a  f2 70 6f 6b 65 69 63 6f  |atch%=0:.pokeico|
00002a70  6e 74 65 78 74 28 31 34  2c 22 28 6e 6f 6e 65 29  |ntext(14,"(none)|
00002a80  22 29 0d 11 08 1a 20 20  20 20 20 20 20 20 20 20  |")....          |
00002a90  20 20 20 20 20 20 20 20  20 20 20 cc 0d 11 12 42  |           ....B|
00002aa0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002ab0  20 20 20 20 20 e7 20 70  61 74 63 68 25 3c 3e 21  |     . patch%<>!|
00002ac0  71 25 2b 31 20 8c 20 70  61 74 63 68 25 3d 21 71  |q%+1 . patch%=!q|
00002ad0  25 2b 31 3a f2 6c 6f 61  64 70 61 74 63 68 0d 11  |%+1:.loadpatch..|
00002ae0  1c 1a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |..              |
00002af0  20 20 20 20 20 20 20 cd  0d 11 26 40 c9 20 73 70  |       ...&@. sp|
00002b00  65 65 64 6d 65 6e 75 25  20 20 20 20 3a 20 f2 6e  |eedmenu%    : .n|
00002b10  65 77 73 70 65 65 64 28  bb 28 c0 73 70 65 65 64  |ewspeed(.(.speed|
00002b20  24 28 21 71 25 29 2c a9  73 70 65 65 64 24 28 21  |$(!q%),.speed$(!|
00002b30  71 25 29 2d 31 29 29 29  0d 11 30 05 cb 0d 11 3a  |q%)-1)))..0....:|
00002b40  20 c8 99 20 22 57 69 6d  70 5f 47 65 74 50 6f 69  | .. "Wimp_GetPoi|
00002b50  6e 74 65 72 49 6e 66 6f  22 2c 2c 71 25 0d 11 44  |nterInfo",,q%..D|
00002b60  32 e7 20 28 71 25 21 38  20 80 20 25 31 29 3e 30  |2. (q%!8 . %1)>0|
00002b70  20 8c 20 f2 6f 70 65 6e  6d 65 6e 75 28 63 75 72  | . .openmenu(cur|
00002b80  72 65 6e 74 5f 6d 65 6e  75 25 2c 30 2c 30 29 0d  |rent_menu%,0,0).|
00002b90  11 4e 05 e1 0d 11 58 04  0d 11 62 0e dd f2 69 63  |.N....X...b...ic|
00002ba0  6f 6e 6d 65 6e 75 0d 11  6c 0c c8 8e 20 21 71 25  |onmenu..l... !q%|
00002bb0  20 ca 0d 11 76 12 20 20  c9 20 30 20 3a 20 f4 20  | ...v.  . 0 : . |
00002bc0  49 6e 66 6f 0d 11 80 17  20 20 c9 20 35 20 3a 20  |Info....  . 5 : |
00002bd0  f4 20 43 6f 6e 66 69 67  75 72 65 0d 11 8a 1a 20  |. Configure.... |
00002be0  20 20 20 20 20 20 20 20  20 20 f2 6f 70 65 6e 63  |          .openc|
00002bf0  6f 6e 66 69 67 0d 11 94  15 20 20 c9 20 31 20 20  |onfig....  . 1  |
00002c00  20 20 3a 20 f4 20 52 4f  4d 73 0d 11 9e 15 20 20  |  : . ROMs....  |
00002c10  20 20 e7 20 71 25 21 34  20 3e 20 2d 31 20 8c 0d  |  . q%!4 > -1 ..|
00002c20  11 a8 19 20 20 20 20 53  25 3d 31 35 2d 28 71 25  |...    S%=15-(q%|
00002c30  21 34 20 80 20 31 35 29  0d 11 b2 2a 20 20 20 20  |!4 . 15)...*    |
00002c40  e7 20 a4 76 61 6c 69 64  52 4f 4d 28 53 25 29 20  |. .validROM(S%) |
00002c50  84 20 3f 28 52 4f 4d 52  41 4d 2b 53 25 29 3d 32  |. ?(ROMRAM+S%)=2|
00002c60  20 8c 0d 11 bc 47 20 20  20 20 e7 20 3f 28 52 4f  | ....G    . ?(RO|
00002c70  4d 52 41 4d 2b 53 25 29  3d 32 20 8c 20 3f 28 52  |MRAM+S%)=2 . ?(R|
00002c80  4f 4d 52 41 4d 2b 53 25  29 3d 30 20 8b 20 3f 28  |OMRAM+S%)=0 . ?(|
00002c90  52 4f 4d 52 41 4d 2b 53  25 29 3d 31 2d 3f 28 52  |ROMRAM+S%)=1-?(R|
00002ca0  4f 4d 52 41 4d 2b 53 25  29 0d 11 c6 09 20 20 20  |OMRAM+S%)....   |
00002cb0  20 cc 0d 11 d0 16 20 20  20 20 3f 28 52 4f 4d 52  | .....    ?(ROMR|
00002cc0  41 4d 2b 53 25 29 3d 32  0d 11 da 09 20 20 20 20  |AM+S%)=2....    |
00002cd0  cd 0d 11 e4 09 20 20 20  20 cd 0d 11 ee 15 20 20  |.....    .....  |
00002ce0  c9 20 32 20 20 20 20 3a  20 f4 20 4d 69 73 63 0d  |. 2    : . Misc.|
00002cf0  11 f8 15 20 20 20 20 e7  20 71 25 21 34 20 3e 20  |...    . q%!4 > |
00002d00  2d 31 20 8c 0d 12 02 11  20 20 20 20 c8 8e 20 71  |-1 .....    .. q|
00002d10  25 21 34 20 ca 0d 12 0c  16 20 20 20 20 c9 20 30  |%!4 .....    . 0|
00002d20  20 3a 20 f2 72 65 61 64  43 53 44 0d 12 16 17 20  | : .readCSD.... |
00002d30  20 20 20 c9 20 31 20 3a  20 f2 72 65 73 65 74 28  |   . 1 : .reset(|
00002d40  32 29 0d 12 20 19 20 20  20 20 c9 20 32 20 3a 20  |2).. .    . 2 : |
00002d50  f2 64 69 73 61 62 6c 65  43 46 53 0d 12 2a 19 20  |.disableCFS..*. |
00002d60  20 20 20 c9 20 33 20 3a  20 6a 6f 79 73 74 69 63  |   . 3 : joystic|
00002d70  6b 25 3d a3 0d 12 34 09  20 20 20 20 cb 0d 12 3e  |k%=...4.    ...>|
00002d80  09 20 20 20 20 cd 0d 12  48 15 20 20 c9 20 33 20  |.    ...H.  . 3 |
00002d90  20 20 20 3a 20 f4 20 53  61 76 65 0d 12 52 17 20  |   : . Save..R. |
00002da0  20 c9 20 34 20 20 20 20  3a 20 f4 20 53 70 72 69  | . 4    : . Spri|
00002db0  74 65 0d 12 5c 0f 20 20  7f 20 3a 20 f2 71 75 69  |te..\.  . : .qui|
00002dc0  74 0d 12 66 05 cb 0d 12  70 05 e1 0d 12 7a 04 0d  |t..f....p....z..|
00002dd0  12 84 22 dd f2 6d 65 6e  75 69 74 65 6d 32 28 41  |.."..menuitem2(A|
00002de0  25 2c 42 25 2c 43 25 2c  44 25 2c 45 25 2c 46 25  |%,B%,C%,D%,E%,F%|
00002df0  29 0d 12 8e 0b 50 25 21  30 3d 41 25 0d 12 98 0b  |)....P%!0=A%....|
00002e00  50 25 21 34 3d 42 25 0d  12 a2 0b 50 25 21 38 3d  |P%!4=B%....P%!8=|
00002e10  43 25 0d 12 ac 0c 50 25  21 31 32 3d 44 25 0d 12  |C%....P%!12=D%..|
00002e20  b6 0c 50 25 21 31 36 3d  45 25 0d 12 c0 0c 50 25  |..P%!16=E%....P%|
00002e30  21 32 30 3d 46 25 0d 12  ca 0a 50 25 2b 3d 32 34  |!20=F%....P%+=24|
00002e40  0d 12 d4 05 e1 0d 12 de  04 0d 12 e8 12 dd a4 63  |...............c|
00002e50  6f 75 6e 74 28 41 24 2c  42 24 29 0d 12 f2 0a ea  |ount(A$,B$).....|
00002e60  49 25 2c 43 25 0d 12 fc  0f e3 49 25 3d 31 20 b8  |I%,C%.....I%=1 .|
00002e70  20 a9 41 24 0d 13 06 1a  e7 20 c1 41 24 2c 49 25  | .A$..... .A$,I%|
00002e80  2c 31 29 3d 42 24 20 8c  20 43 25 2b 3d 31 0d 13  |,1)=B$ . C%+=1..|
00002e90  10 05 ed 0d 13 1a 07 3d  43 25 0d 13 24 04 0d 13  |.......=C%..$...|
00002ea0  2e 10 dd a4 6c 65 74 74  65 72 28 41 24 29 0d 13  |....letter(A$)..|
00002eb0  38 0b ea 20 49 25 2c 4a  25 0d 13 42 0f e3 49 25  |8.. I%,J%..B..I%|
00002ec0  3d 31 20 b8 20 a9 41 24  0d 13 4c 2e e7 20 a7 22  |=1 . .A$..L.. ."|
00002ed0  41 42 43 44 45 46 61 62  63 64 65 66 22 2c c1 41  |ABCDEFabcdef",.A|
00002ee0  24 2c 49 25 2c 31 29 29  20 8c 20 4a 25 3d b9 3a  |$,I%,1)) . J%=.:|
00002ef0  49 25 3d a9 41 24 0d 13  56 05 ed 0d 13 60 07 3d  |I%=.A$..V....`.=|
00002f00  4a 25 0d 13 6a 04 0d 13  74 04 0d 13 7e 0a dd f2  |J%..j...t...~...|
00002f10  73 61 76 65 0d 13 88 24  e7 20 73 6f 6c 69 64 25  |save...$. solid%|
00002f20  20 8c 20 c8 99 20 22 44  72 61 67 41 53 70 72 69  | . .. "DragASpri|
00002f30  74 65 5f 53 74 6f 70 22  0d 13 92 09 4b 24 3d 22  |te_Stop"....K$="|
00002f40  22 0d 13 9c 2f e7 20 73  61 76 65 5f 73 70 72 69  |".../. save_spri|
00002f50  74 65 25 20 8c 20 21 64  72 61 67 3d 78 66 65 72  |te% . !drag=xfer|
00002f60  32 25 20 8b 20 21 64 72  61 67 3d 78 66 65 72 25  |2% . !drag=xfer%|
00002f70  0d 13 a6 0c 64 72 61 67  21 34 3d 31 0d 13 b0 20  |....drag!4=1... |
00002f80  c8 99 20 22 57 69 6d 70  5f 47 65 74 49 63 6f 6e  |.. "Wimp_GetIcon|
00002f90  53 74 61 74 65 22 2c 2c  64 72 61 67 0d 13 ba 10  |State",,drag....|
00002fa0  50 25 3d 64 72 61 67 21  32 38 2d 31 0d 13 c4 0b  |P%=drag!28-1....|
00002fb0  f5 20 50 25 2b 3d 31 0d  13 ce 1a e7 20 3f 50 25  |. P%+=1..... ?P%|
00002fc0  3c 3e 31 33 20 8c 20 4b  24 3d 4b 24 2b bd 3f 50  |<>13 . K$=K$+.?P|
00002fd0  25 0d 13 d8 21 e7 20 3f  50 25 3d 97 22 2e 22 20  |%...!. ?P%=."." |
00002fe0  84 20 3f 50 25 3d 97 22  3a 22 20 8c 20 4b 24 3d  |. ?P%=.":" . K$=|
00002ff0  22 22 0d 13 e2 0b fd 3f  50 25 3d 31 33 0d 13 ec  |"".....?P%=13...|
00003000  20 c8 99 20 22 57 69 6d  70 5f 47 65 74 50 6f 69  | .. "Wimp_GetPoi|
00003010  6e 74 65 72 49 6e 66 6f  22 2c 2c 71 25 0d 13 f6  |nterInfo",,q%...|
00003020  3c e7 20 71 25 21 31 32  3c 3e 78 66 65 72 25 20  |<. q%!12<>xfer% |
00003030  80 20 71 25 21 31 32 3c  3e 78 66 65 72 32 25 20  |. q%!12<>xfer2% |
00003040  8c 20 c8 99 20 22 57 69  6d 70 5f 43 72 65 61 74  |. .. "Wimp_Creat|
00003050  65 4d 65 6e 75 22 2c 2d  31 0d 14 00 0f 71 25 21  |eMenu",-1....q%!|
00003060  32 30 3d 71 25 21 31 32  0d 14 0a 0f 71 25 21 32  |20=q%!12....q%!2|
00003070  34 3d 71 25 21 31 36 0d  14 14 0e 71 25 21 32 38  |4=q%!16....q%!28|
00003080  3d 71 25 21 30 0d 14 1e  0e 71 25 21 33 32 3d 71  |=q%!0....q%!32=q|
00003090  25 21 34 0d 14 28 04 0d  14 32 16 e7 20 73 61 76  |%!4..(...2.. sav|
000030a0  65 5f 73 70 72 69 74 65  25 3d a3 20 8c 0d 14 3c  |e_sprite%=. ...<|
000030b0  0f 71 25 21 33 36 3d 36  35 36 36 37 0d 14 46 13  |.q%!36=65667..F.|
000030c0  71 25 21 34 30 3d 66 69  6c 65 74 79 70 65 25 0d  |q%!40=filetype%.|
000030d0  14 50 05 cc 0d 14 5a 11  71 25 21 33 36 3d 38 30  |.P....Z.q%!36=80|
000030e0  2a 31 30 32 34 0d 14 64  0e 71 25 21 34 30 3d 26  |*1024..d.q%!40=&|
000030f0  46 46 39 0d 14 6e 05 cd  0d 14 78 04 0d 14 82 0b  |FF9..n....x.....|
00003100  71 25 21 31 32 3d 30 0d  14 8c 0b 71 25 21 31 36  |q%!12=0....q%!16|
00003110  3d 31 0d 14 96 12 24 28  71 25 2b 34 34 29 3d 4b  |=1....$(q%+44)=K|
00003120  24 2b bd 30 0d 14 a0 1e  71 25 21 30 3d 28 34 38  |$+.0....q%!0=(48|
00003130  2b a9 4b 24 29 20 80 20  25 31 31 31 31 31 31 31  |+.K$) . %1111111|
00003140  30 30 0d 14 aa 04 0d 14  b4 2c c8 99 20 22 58 57  |00.......,.. "XW|
00003150  69 6d 70 5f 53 65 6e 64  4d 65 73 73 61 67 65 22  |imp_SendMessage"|
00003160  2c 31 37 2c 71 25 2c 71  25 21 32 30 2c 71 25 21  |,17,q%,q%!20,q%!|
00003170  32 34 0d 14 be 0f 6d 79  72 65 66 25 3d 71 25 21  |24....myref%=q%!|
00003180  38 0d 14 c8 05 e1 0d 14  d2 04 0d 14 dc 0e dd a4  |8...............|
00003190  6c 65 61 66 28 41 24 29  0d 14 e6 08 ea 20 49 25  |leaf(A$)..... I%|
000031a0  0d 14 f0 0c 49 25 3d a9  41 24 2b 31 0d 14 fa 1a  |....I%=.A$+1....|
000031b0  f5 49 25 2d 3d 31 3a fd  20 c1 41 24 2c 49 25 2c  |.I%-=1:. .A$,I%,|
000031c0  31 29 3d 22 2e 22 0d 15  04 0e 3d c0 41 24 2c 49  |1)="."....=.A$,I|
000031d0  25 2d 31 29 0d 15 0e 04  0d 15 18 09 dd f2 65 72  |%-1)..........er|
000031e0  72 0d 15 22 08 ee 85 20  87 0d 15 2c 23 e7 20 a4  |r.."... ...,#. .|
000031f0  72 65 70 6f 72 74 28 f6  24 2c b9 29 20 8c 20 f2  |report(.$,.) . .|
00003200  71 75 69 74 20 8b 20 f2  70 6f 6c 6c 0d 15 36 05  |quit . .poll..6.|
00003210  e1 0d 15 40 04 0d 15 4a  0e dd f2 65 72 72 32 28  |...@...J...err2(|
00003220  4d 25 29 0d 15 54 07 ea  20 85 0d 15 5e 0d ee 85  |M%)..T.. ...^...|
00003230  20 ea 20 f2 65 72 72 0d  15 68 36 e7 20 68 61 6e  | . .err..h6. han|
00003240  64 25 3c 3e 30 20 8c 20  c8 99 20 22 58 4f 53 5f  |d%<>0 . .. "XOS_|
00003250  46 69 6e 64 22 2c 30 2c  68 61 6e 64 25 20 3a 20  |Find",0,hand% : |
00003260  f4 20 43 4c 4f 53 45 23  68 61 6e 64 25 0d 15 72  |. CLOSE#hand%..r|
00003270  38 c8 99 20 22 58 57 69  6d 70 5f 53 65 74 4d 6f  |8.. "XWimp_SetMo|
00003280  64 65 22 2c 4d 25 20 3a  20 c8 99 20 22 58 36 35  |de",M% : .. "X65|
00003290  30 32 5f 52 65 6d 6f 76  65 45 78 69 74 48 61 6e  |02_RemoveExitHan|
000032a0  64 6c 65 72 22 0d 15 7c  1f e7 20 73 6f 75 6e 64  |dler"..|.. sound|
000032b0  25 3d b9 20 8c 20 f2 73  6f 75 6e 64 5f 72 65 73  |%=. . .sound_res|
000032c0  74 6f 72 65 0d 15 86 23  e7 20 a4 72 65 70 6f 72  |tore...#. .repor|
000032d0  74 28 f6 24 2c b9 29 20  8c 20 f2 71 75 69 74 20  |t(.$,.) . .quit |
000032e0  8b 20 f2 70 6f 6c 6c 0d  15 90 05 e1 0d 15 9a 04  |. .poll.........|
000032f0  0d 15 a4 14 dd 20 a4 72  65 70 6f 72 74 28 61 24  |..... .report(a$|
00003300  2c 45 25 29 0d 15 ae 08  ea 20 41 25 0d 15 b8 0a  |,E%)..... A%....|
00003310  e7 20 45 25 20 8c 0d 15  c2 4e 20 c8 99 20 22 58  |. E% ....N .. "X|
00003320  57 69 6d 70 5f 52 65 70  6f 72 74 45 72 72 6f 72  |Wimp_ReportError|
00003330  22 2c 22 20 20 20 20 49  6e 74 65 72 6e 61 6c 20  |","    Internal |
00003340  65 72 72 6f 72 20 22 2b  c3 20 9e 2b 22 3a 20 22  |error "+. .+": "|
00003350  2b 61 24 2c 33 2c 22 36  35 30 32 45 6d 22 20 b8  |+a$,3,"6502Em" .|
00003360  20 2c 41 25 0d 15 cc 37  cc 20 c8 99 20 22 58 57  | ,A%...7. .. "XW|
00003370  69 6d 70 5f 52 65 70 6f  72 74 45 72 72 6f 72 22  |imp_ReportError"|
00003380  2c 22 20 20 20 20 22 2b  61 24 2c 31 2c 22 36 35  |,"    "+a$,1,"65|
00003390  30 32 45 6d 22 20 b8 20  2c 41 25 0d 15 d6 05 cd  |02Em" . ,A%.....|
000033a0  0d 15 e0 07 3d 41 25 0d  15 ea 04 0d 15 f4 09 dd  |....=A%.........|
000033b0  a4 63 73 64 0d 15 fe 1a  c8 99 20 22 4f 53 5f 47  |.csd...... "OS_G|
000033c0  42 50 42 22 2c 36 2c 2c  62 75 66 66 65 72 0d 16  |BPB",6,,buffer..|
000033d0  08 1a 62 75 66 66 65 72  3f 28 62 75 66 66 65 72  |..buffer?(buffer|
000033e0  3f 31 2b 32 29 3d 31 33  0d 16 12 10 3d 24 28 62  |?1+2)=13....=$(b|
000033f0  75 66 66 65 72 2b 32 29  0d 16 1c 04 0d 16 26 0d  |uffer+2)......&.|
00003400  dd f2 72 65 61 64 43 53  44 0d 16 30 04 0d 16 3a  |..readCSD..0...:|
00003410  07 ea 20 85 0d 16 44 04  0d 16 4e 8e ee 20 85 20  |.. ...D...N.. . |
00003420  ea 20 3a 20 f7 20 85 20  3a 20 66 73 24 3d 22 41  |. : . . : fs$="A|
00003430  44 46 53 3a 22 3a 64 69  73 63 24 3d 22 22 3a 70  |DFS:":disc$="":p|
00003440  61 74 68 24 3d 22 24 22  3a 73 75 62 70 61 74 68  |ath$="$":subpath|
00003450  24 3d 22 22 3a c8 99 20  22 58 57 69 6d 70 5f 52  |$="":.. "XWimp_R|
00003460  65 70 6f 72 74 45 72 72  6f 72 22 2c 22 20 20 20  |eportError","   |
00003470  20 45 72 72 6f 72 20 69  6e 20 72 65 61 64 69 6e  | Error in readin|
00003480  67 20 63 75 72 72 65 6e  74 20 64 69 72 65 63 74  |g current direct|
00003490  6f 72 79 3a 20 22 2b f6  24 2c 31 2c 22 36 35 30  |ory: "+.$,1,"650|
000034a0  32 45 6d 22 3a e1 0d 16  58 04 0d 16 62 04 0d 16  |2Em":...X...b...|
000034b0  6c 0e e3 20 49 25 3d 30  20 b8 20 31 0d 16 76 16  |l.. I%=0 . 1..v.|
000034c0  c8 99 20 22 4f 53 5f 41  72 67 73 22 20 b8 20 46  |.. "OS_Args" . F|
000034d0  53 25 0d 16 80 30 c8 99  20 22 4f 53 5f 46 53 43  |S%...0.. "OS_FSC|
000034e0  6f 6e 74 72 6f 6c 22 2c  33 33 2c 46 53 25 2c c4  |ontrol",33,FS%,.|
000034f0  32 30 2c 22 20 22 29 2c  32 30 20 b8 20 2c 2c 66  |20," "),20 . ,,f|
00003500  73 24 0d 16 8a 38 e7 20  66 73 24 3c 3e 22 22 20  |s$...8. fs$<>"" |
00003510  8c 20 66 73 24 3d 66 73  24 2b 22 3a 22 3a 49 25  |. fs$=fs$+":":I%|
00003520  3d 31 20 8b 20 ff 22 44  49 52 20 3c 36 35 30 32  |=1 . ."DIR <6502|
00003530  45 6d 24 44 69 72 3e 2e  5e 22 0d 16 94 05 ed 0d  |Em$Dir>.^"......|
00003540  16 9e 04 0d 16 a8 1a c8  99 20 22 4f 53 5f 47 42  |......... "OS_GB|
00003550  50 42 22 2c 35 2c 2c 62  75 66 66 65 72 0d 16 b2  |PB",5,,buffer...|
00003560  19 62 75 66 66 65 72 3f  28 3f 62 75 66 66 65 72  |.buffer?(?buffer|
00003570  2b 31 29 3d 31 33 0d 16  bc 15 64 69 73 63 24 3d  |+1)=13....disc$=|
00003580  24 28 62 75 66 66 65 72  2b 31 29 0d 16 c6 3c e7  |$(buffer+1)...<.|
00003590  20 64 69 73 63 24 3d bd  33 34 2b 22 55 6e 73 65  | disc$=.34+"Unse|
000035a0  74 22 2b bd 33 34 20 8c  20 64 69 73 63 24 3d 22  |t"+.34 . disc$="|
000035b0  22 20 8b 20 64 69 73 63  24 3d 22 3a 22 2b 64 69  |" . disc$=":"+di|
000035c0  73 63 24 2b 22 2e 22 0d  16 d0 04 0d 16 da 0e 70  |sc$+"."........p|
000035d0  61 74 68 24 3d a4 63 73  64 0d 16 e4 12 e7 20 70  |ath$=.csd..... p|
000035e0  61 74 68 24 3c 3e 22 24  22 20 8c 0d 16 ee 1e f4  |ath$<>"$" ......|
000035f0  53 59 53 20 22 4f 53 5f  46 53 43 6f 6e 74 72 6f  |SYS "OS_FSContro|
00003600  6c 22 2c 31 31 2c 22 40  22 0d 16 f8 05 f5 0d 17  |l",11,"@".......|
00003610  02 1b c8 99 20 22 4f 53  5f 46 53 43 6f 6e 74 72  |.... "OS_FSContr|
00003620  6f 6c 22 2c 30 2c 22 5e  22 0d 17 0c 0d 43 53 44  |ol",0,"^"....CSD|
00003630  24 3d a4 63 73 64 0d 17  16 18 70 61 74 68 24 3d  |$=.csd....path$=|
00003640  43 53 44 24 2b 22 2e 22  2b 70 61 74 68 24 0d 17  |CSD$+"."+path$..|
00003650  20 0e fd 20 43 53 44 24  3d 22 24 22 0d 17 2a 2b  | .. CSD$="$"..*+|
00003660  e7 20 c2 70 61 74 68 24  2c 37 29 3d bd 33 34 2b  |. .path$,7)=.34+|
00003670  22 55 6e 73 65 74 22 2b  bd 33 34 20 8c 20 70 61  |"Unset"+.34 . pa|
00003680  74 68 24 3d 22 24 22 0d  17 34 1d c8 99 20 22 4f  |th$="$"..4... "O|
00003690  53 5f 46 53 43 6f 6e 74  72 6f 6c 22 2c 30 2c 70  |S_FSControl",0,p|
000036a0  61 74 68 24 0d 17 3e 05  cd 0d 17 48 04 0d 17 52  |ath$..>....H...R|
000036b0  0f 73 75 62 70 61 74 68  24 3d 22 22 0d 17 5c 05  |.subpath$=""..\.|
000036c0  e1 0d 17 66 04 0d 17 70  0d dd f2 69 6e 69 74 42  |...f...p...initB|
000036d0  42 43 0d 17 7a 04 0d 17  84 15 21 26 39 37 30 30  |BC..z.....!&9700|
000036e0  30 3d 26 41 30 41 30 41  30 41 30 0d 17 8e 15 21  |0=&A0A0A0A0....!|
000036f0  26 39 37 30 30 34 3d 26  41 30 41 30 41 30 41 30  |&97004=&A0A0A0A0|
00003700  0d 17 98 15 21 26 39 37  30 30 38 3d 26 41 30 41  |....!&97008=&A0A|
00003710  30 41 30 41 30 0d 17 a2  15 21 26 39 37 30 30 43  |0A0A0....!&9700C|
00003720  3d 26 41 30 41 30 41 30  41 30 0d 17 ac 04 0d 17  |=&A0A0A0A0......|
00003730  b6 0f 6a 6f 79 73 74 69  63 6b 25 3d b9 0d 17 c0  |..joystick%=....|
00003740  04 0d 17 ca 0b de 20 52  25 28 37 29 0d 17 d4 04  |...... R%(7)....|
00003750  0d 17 de 25 de 20 42 42  43 24 28 26 37 43 29 2c  |...%. BBC$(&7C),|
00003760  41 52 43 24 28 26 37 38  29 2c 45 6c 65 63 24 28  |ARC$(&78),Elec$(|
00003770  33 2c 31 33 29 0d 17 e8  05 f7 0d 17 f2 0d e3 49  |3,13)..........I|
00003780  25 3d 30 20 b8 20 33 0d  17 fc 13 e3 4a 25 3d 31  |%=0 . 3.....J%=1|
00003790  33 20 b8 20 30 20 88 20  2d 31 0d 18 06 12 f3 20  |3 . 0 . -1..... |
000037a0  45 6c 65 63 24 28 49 25  2c 4a 25 29 0d 18 10 05  |Elec$(I%,J%)....|
000037b0  ed 0d 18 1a 05 ed 0d 18  24 0d e3 49 25 3d 30 20  |........$..I%=0 |
000037c0  b8 20 37 0d 18 2e 0e e3  4a 25 3d 30 20 b8 20 31  |. 7.....J%=0 . 1|
000037d0  32 0d 18 38 14 f3 20 42  42 43 24 28 49 25 2a 31  |2..8.. BBC$(I%*1|
000037e0  36 2b 4a 25 29 0d 18 42  05 ed 0d 18 4c 05 ed 0d  |6+J%)..B....L...|
000037f0  18 56 0f e3 49 25 3d 30  20 b8 20 26 37 38 0d 18  |.V..I%=0 . &78..|
00003800  60 0e f3 20 41 52 43 24  28 49 25 29 0d 18 6a 05  |`.. ARC$(I%)..j.|
00003810  ed 0d 18 74 04 0d 18 7e  10 f2 72 65 61 64 6b 65  |...t...~..readke|
00003820  79 6d 61 70 73 0d 18 88  1d f4 50 52 4f 43 73 65  |ymaps.....PROCse|
00003830  74 6b 65 79 6d 61 70 28  22 44 65 66 61 75 6c 74  |tkeymap("Default|
00003840  22 29 0d 18 92 24 f2 65  6c 6b 6b 65 79 73 28 22  |")...$.elkkeys("|
00003850  3c 36 35 30 32 45 6d 24  52 65 73 3e 2e 45 6c 6b  |<6502Em$Res>.Elk|
00003860  4b 65 79 73 22 29 0d 18  9c 16 c8 99 20 22 36 35  |Keys")...... "65|
00003870  30 32 5f 52 65 67 69 73  74 65 72 22 0d 18 a6 04  |02_Register"....|
00003880  0d 18 b0 2f de 20 4d 61  63 68 69 6e 65 24 28 34  |.../. Machine$(4|
00003890  29 2c 4d 61 63 68 69 6e  65 25 28 34 29 2c 4d 61  |),Machine%(4),Ma|
000038a0  63 68 69 6e 65 53 70 72  69 74 65 24 28 34 29 0d  |chineSprite$(4).|
000038b0  18 ba 04 0d 18 c4 10 69  6d 61 67 65 66 69 6c 65  |.......imagefile|
000038c0  25 3d a3 0d 18 ce 13 64  69 73 61 62 6c 65 5f 72  |%=.....disable_r|
000038d0  65 73 65 74 3d a3 0d 18  d8 16 64 65 66 61 75 6c  |eset=.....defaul|
000038e0  74 5f 6d 61 63 68 69 6e  65 25 3d 30 0d 18 e2 04  |t_machine%=0....|
000038f0  0d 18 ec 3b 4d 61 63 68  69 6e 65 24 28 30 29 3d  |...;Machine$(0)=|
00003900  22 42 42 43 20 42 22 20  20 20 20 20 20 20 20 3a  |"BBC B"        :|
00003910  20 4d 61 63 68 69 6e 65  53 70 72 69 74 65 24 28  | MachineSprite$(|
00003920  30 29 3d 22 4f 53 a0 31  2e 32 22 0d 18 f6 3b 4d  |0)="OS.1.2"...;M|
00003930  61 63 68 69 6e 65 24 28  31 29 3d 22 4d 61 73 74  |achine$(1)="Mast|
00003940  65 72 20 31 32 38 22 20  20 20 3a 20 4d 61 63 68  |er 128"   : Mach|
00003950  69 6e 65 53 70 72 69 74  65 24 28 31 29 3d 22 4f  |ineSprite$(1)="O|
00003960  53 a0 33 2e 32 22 0d 19  00 3b 4d 61 63 68 69 6e  |S.3.2"...;Machin|
00003970  65 24 28 32 29 3d 22 20  20 20 4d 4f 53 20 33 2e  |e$(2)="   MOS 3.|
00003980  35 22 20 20 20 3a 20 4d  61 63 68 69 6e 65 53 70  |5"   : MachineSp|
00003990  72 69 74 65 24 28 32 29  3d 22 4f 53 a0 33 2e 35  |rite$(2)="OS.3.5|
000039a0  22 0d 19 0a 3b 4d 61 63  68 69 6e 65 24 28 33 29  |"...;Machine$(3)|
000039b0  3d 22 43 6f 6d 70 61 63  74 22 20 20 20 20 20 20  |="Compact"      |
000039c0  3a 20 4d 61 63 68 69 6e  65 53 70 72 69 74 65 24  |: MachineSprite$|
000039d0  28 33 29 3d 22 4f 53 a0  35 2e 31 22 0d 19 14 3b  |(3)="OS.5.1"...;|
000039e0  4d 61 63 68 69 6e 65 24  28 34 29 3d 22 45 6c 65  |Machine$(4)="Ele|
000039f0  63 74 72 6f 6e 22 20 20  20 20 20 3a 20 4d 61 63  |ctron"     : Mac|
00003a00  68 69 6e 65 53 70 72 69  74 65 24 28 34 29 3d 22  |hineSprite$(4)="|
00003a10  4f 53 a0 31 2e 30 22 0d  19 1e 04 0d 19 28 21 51  |OS.1.0"......(!Q|
00003a20  3d 8e 22 3c 36 35 30 32  45 6d 24 52 6f 6d 50 61  |=."<6502Em$RomPa|
00003a30  74 68 3e 45 6c 65 63 74  72 6f 6e 22 0d 19 32 2e  |th>Electron"..2.|
00003a40  e7 20 51 3c 3e 30 20 8c  20 d9 23 51 3a 4d 61 63  |. Q<>0 . .#Q:Mac|
00003a50  68 69 6e 65 25 28 34 29  3d b9 20 8b 20 4d 61 63  |hine%(4)=. . Mac|
00003a60  68 69 6e 65 25 28 34 29  3d a3 0d 19 3c 04 0d 19  |hine%(4)=...<...|
00003a70  46 1e 51 3d 8e 22 3c 36  35 30 32 45 6d 24 52 6f  |F.Q=."<6502Em$Ro|
00003a80  6d 50 61 74 68 3e 4f 53  31 2c 32 22 0d 19 50 2e  |mPath>OS1,2"..P.|
00003a90  e7 20 51 3c 3e 30 20 8c  20 d9 23 51 3a 4d 61 63  |. Q<>0 . .#Q:Mac|
00003aa0  68 69 6e 65 25 28 30 29  3d b9 20 8b 20 4d 61 63  |hine%(0)=. . Mac|
00003ab0  68 69 6e 65 25 28 30 29  3d a3 0d 19 5a 28 e7 20  |hine%(0)=...Z(. |
00003ac0  4d 61 63 68 69 6e 65 25  28 30 29 3d a3 20 8c 20  |Machine%(0)=. . |
00003ad0  64 65 66 61 75 6c 74 5f  6d 61 63 68 69 6e 65 25  |default_machine%|
00003ae0  3d 31 0d 19 64 04 0d 19  6e 23 51 3d 8e 22 3c 36  |=1..d...n#Q=."<6|
00003af0  35 30 32 45 6d 24 52 6f  6d 50 61 74 68 3e 4d 31  |502Em$RomPath>M1|
00003b00  32 38 2e 4f 53 33 2c 32  22 0d 19 78 30 e7 20 51  |28.OS3,2"..x0. Q|
00003b10  3c 3e 30 20 8c 20 d9 23  51 20 3a 20 4d 61 63 68  |<>0 . .#Q : Mach|
00003b20  69 6e 65 25 28 31 29 3d  b9 20 8b 20 4d 61 63 68  |ine%(1)=. . Mach|
00003b30  69 6e 65 25 28 31 29 3d  a3 0d 19 82 38 e7 20 4d  |ine%(1)=....8. M|
00003b40  61 63 68 69 6e 65 25 28  30 29 3d a3 20 80 20 4d  |achine%(0)=. . M|
00003b50  61 63 68 69 6e 65 25 28  31 29 3d a3 20 8c 20 64  |achine%(1)=. . d|
00003b60  65 66 61 75 6c 74 5f 6d  61 63 68 69 6e 65 25 3d  |efault_machine%=|
00003b70  32 0d 19 8c 04 0d 19 96  23 51 3d 8e 22 3c 36 35  |2.......#Q=."<65|
00003b80  30 32 45 6d 24 52 6f 6d  50 61 74 68 3e 4d 31 32  |02Em$RomPath>M12|
00003b90  38 2e 4f 53 33 2c 35 22  0d 19 a0 30 e7 20 51 3c  |8.OS3,5"...0. Q<|
00003ba0  3e 30 20 8c 20 d9 23 51  20 3a 20 4d 61 63 68 69  |>0 . .#Q : Machi|
00003bb0  6e 65 25 28 32 29 3d b9  20 8b 20 4d 61 63 68 69  |ne%(2)=. . Machi|
00003bc0  6e 65 25 28 32 29 3d a3  0d 19 aa 48 e7 20 4d 61  |ne%(2)=....H. Ma|
00003bd0  63 68 69 6e 65 25 28 30  29 3d a3 20 80 20 4d 61  |chine%(0)=. . Ma|
00003be0  63 68 69 6e 65 25 28 31  29 3d a3 20 80 20 4d 61  |chine%(1)=. . Ma|
00003bf0  63 68 69 6e 65 25 28 32  29 3d a3 20 8c 20 64 65  |chine%(2)=. . de|
00003c00  66 61 75 6c 74 5f 6d 61  63 68 69 6e 65 25 3d 33  |fault_machine%=3|
00003c10  0d 19 b4 04 0d 19 be 26  51 3d 8e 22 3c 36 35 30  |.......&Q=."<650|
00003c20  32 45 6d 24 52 6f 6d 50  61 74 68 3e 43 6f 6d 70  |2Em$RomPath>Comp|
00003c30  61 63 74 2e 4f 53 35 2c  31 22 0d 19 c8 30 e7 20  |act.OS5,1"...0. |
00003c40  51 3c 3e 30 20 8c 20 d9  23 51 20 3a 20 4d 61 63  |Q<>0 . .#Q : Mac|
00003c50  68 69 6e 65 25 28 33 29  3d b9 20 8b 20 4d 61 63  |hine%(3)=. . Mac|
00003c60  68 69 6e 65 25 28 33 29  3d a3 0d 19 d2 71 e7 20  |hine%(3)=....q. |
00003c70  4d 61 63 68 69 6e 65 25  28 30 29 3d a3 20 80 20  |Machine%(0)=. . |
00003c80  4d 61 63 68 69 6e 65 25  28 31 29 3d a3 20 80 20  |Machine%(1)=. . |
00003c90  4d 61 63 68 69 6e 65 25  28 32 29 3d a3 20 80 20  |Machine%(2)=. . |
00003ca0  4d 61 63 68 69 6e 65 25  28 33 29 3d a3 20 8c 20  |Machine%(3)=. . |
00003cb0  85 20 30 2c 22 4e 6f 20  52 4f 4d 73 20 66 6f 75  |. 0,"No ROMs fou|
00003cc0  6e 64 20 2d 20 70 6c 65  61 73 65 20 72 75 6e 20  |nd - please run |
00003cd0  21 52 69 70 36 35 48 6f  73 74 22 0d 19 dc 04 0d  |!Rip65Host".....|
00003ce0  19 e6 20 f4 51 3d 4f 50  45 4e 49 4e 22 3c 36 35  |.. .Q=OPENIN"<65|
00003cf0  30 32 45 6d 24 44 69 72  3e 2e 43 6f 64 65 22 0d  |02Em$Dir>.Code".|
00003d00  19 f0 0d f4 4c 25 3d 45  58 54 23 51 0d 19 fa 0c  |....L%=EXT#Q....|
00003d10  f4 43 4c 4f 53 45 23 51  0d 1a 04 15 f4 44 49 4d  |.CLOSE#Q.....DIM|
00003d20  20 63 6f 64 65 20 4c 25  2b 33 30 30 30 0d 1a 0e  | code L%+3000...|
00003d30  18 f4 44 49 4d 20 72 6f  6d 73 20 31 37 2a 31 36  |..DIM roms 17*16|
00003d40  2a 31 30 32 34 0d 1a 18  04 0d 1a 22 1b de 20 63  |*1024......".. c|
00003d50  6d 6f 73 25 28 36 33 29  20 3a 20 f2 6c 6f 61 64  |mos%(63) : .load|
00003d60  43 4d 4f 53 0d 1a 2c 20  de 20 65 65 70 72 6f 6d  |CMOS.., . eeprom|
00003d70  25 28 32 35 35 29 20 3a  20 f2 6c 6f 61 64 45 45  |%(255) : .loadEE|
00003d80  50 52 4f 4d 0d 1a 36 30  f4 57 48 49 4c 45 20 28  |PROM..60.WHILE (|
00003d90  63 6f 64 65 20 41 4e 44  20 31 35 29 3c 3e 30 20  |code AND 15)<>0 |
00003da0  3a 20 63 6f 64 65 2b 3d  31 20 3a 20 45 4e 44 57  |: code+=1 : ENDW|
00003db0  48 49 4c 45 0d 1a 40 04  0d 1a 4a 27 69 6e 64 65  |HILE..@...J'inde|
00003dc0  78 66 69 6c 65 24 3d 22  22 3a 69 6e 64 65 78 25  |xfile$="":index%|
00003dd0  3d 30 3a 6e 65 77 69 6e  64 65 78 25 3d 2d 31 0d  |=0:newindex%=-1.|
00003de0  1a 54 04 0d 1a 5e 0e f4  21 62 75 66 66 65 72 3d  |.T...^..!buffer=|
00003df0  30 0d 1a 68 3e f4 53 59  53 20 22 4f 53 5f 52 65  |0..h>.SYS "OS_Re|
00003e00  61 64 56 61 72 56 61 6c  22 2c 22 36 35 30 32 45  |adVarVal","6502E|
00003e10  6d 24 53 61 76 65 53 63  72 65 65 6e 22 2c 62 75  |m$SaveScreen",bu|
00003e20  66 66 65 72 2c 32 35 35  20 54 4f 20 2c 53 24 0d  |ffer,255 TO ,S$.|
00003e30  1a 72 1e f4 49 46 20 4c  45 46 54 24 28 53 24 2c  |.r..IF LEFT$(S$,|
00003e40  33 29 3d 22 59 65 73 22  20 54 48 45 4e 0d 1a 7c  |3)="Yes" THEN..||
00003e50  1b f4 44 49 4d 20 73 70  72 69 74 65 20 38 30 2a  |..DIM sprite 80*|
00003e60  31 30 32 34 2b 33 30 30  0d 1a 86 19 f4 73 70 72  |1024+300.....spr|
00003e70  69 74 65 21 30 3d 38 30  2a 31 30 32 34 2b 32 35  |ite!0=80*1024+25|
00003e80  36 0d 1a 90 10 f4 73 70  72 69 74 65 21 38 3d 31  |6.....sprite!8=1|
00003e90  36 0d 1a 9a 23 f4 53 59  53 20 22 4f 53 5f 53 70  |6...#.SYS "OS_Sp|
00003ea0  72 69 74 65 4f 70 22 2c  32 35 36 2b 39 2c 73 70  |riteOp",256+9,sp|
00003eb0  72 69 74 65 0d 1a a4 16  f4 73 61 76 65 5f 73 70  |rite.....save_sp|
00003ec0  72 69 74 65 3d 46 41 4c  53 45 0d 1a ae 09 f4 45  |rite=FALSE.....E|
00003ed0  4c 53 45 0d 1a b8 0d f4  73 70 72 69 74 65 3d 30  |LSE.....sprite=0|
00003ee0  0d 1a c2 16 f4 73 61 76  65 5f 73 70 72 69 74 65  |.....save_sprite|
00003ef0  3d 46 41 4c 53 45 0d 1a  cc 0a f4 45 4e 44 49 46  |=FALSE.....ENDIF|
00003f00  0d 1a d6 04 0d 1a e0 0c  f2 72 65 61 64 43 53 44  |.........readCSD|
00003f10  0d 1a ea 35 46 53 24 3d  66 73 24 3a 44 49 53 43  |...5FS$=fs$:DISC|
00003f20  24 3d 64 69 73 63 24 3a  50 41 54 48 24 3d 70 61  |$=disc$:PATH$=pa|
00003f30  74 68 24 3a 53 55 42 50  41 54 48 24 3d 73 75 62  |th$:SUBPATH$=sub|
00003f40  70 61 74 68 24 0d 1a f4  04 0d 1a fe 0d f2 61 73  |path$.........as|
00003f50  73 65 6d 62 6c 65 0d 1b  08 11 f2 6c 6f 61 64 5f  |semble.....load_|
00003f60  6f 70 74 69 6f 6e 73 0d  1b 12 2d f4 4f 53 43 4c  |options...-.OSCL|
00003f70  49 22 4c 4f 41 44 20 3c  36 35 30 32 45 6d 24 44  |I"LOAD <6502Em$D|
00003f80  69 72 3e 2e 43 6f 64 65  20 22 2b 53 54 52 24 7e  |ir>.Code "+STR$~|
00003f90  63 6f 64 65 0d 1b 1c 19  f4 43 41 4c 4c 20 63 6f  |code.....CALL co|
00003fa0  64 65 2b 21 69 6e 69 74  5f 61 64 64 72 0d 1b 26  |de+!init_addr..&|
00003fb0  13 f4 50 52 4f 43 6e 65  77 6d 61 63 68 69 6e 65  |..PROCnewmachine|
00003fc0  0d 1b 30 04 0d 1b 3a 04  0d 1b 44 35 e7 20 66 69  |..0...:...D5. fi|
00003fd0  6c 65 5f 78 78 78 20 8c  20 ff 22 49 63 6f 6e 53  |le_xxx . ."IconS|
00003fe0  70 72 69 74 65 73 20 3c  36 35 30 32 45 6d 24 52  |prites <6502Em$R|
00003ff0  65 73 3e 2e 66 69 6c 65  5f 78 78 78 22 0d 1b 4e  |es>.file_xxx"..N|
00004000  04 0d 1b 58 04 0d 1b 62  04 0d 1b 6c 1f f4 6d 65  |...X...b...l..me|
00004010  6d 6f 72 79 3f 26 46 31  42 31 3d 33 20 3a 20 52  |mory?&F1B1=3 : R|
00004020  45 4d 20 4f 53 46 53 43  0d 1b 76 20 f4 6d 65 6d  |EM OSFSC..v .mem|
00004030  6f 72 79 3f 26 46 46 43  45 3d 33 20 3a 20 52 45  |ory?&FFCE=3 : RE|
00004040  4d 20 4f 53 46 49 4e 44  0d 1b 80 20 f4 6d 65 6d  |M OSFIND... .mem|
00004050  6f 72 79 3f 26 46 46 44  31 3d 33 20 3a 20 52 45  |ory?&FFD1=3 : RE|
00004060  4d 20 4f 53 47 42 50 42  0d 1b 8a 20 f4 6d 65 6d  |M OSGBPB... .mem|
00004070  6f 72 79 3f 26 46 46 44  34 3d 33 20 3a 20 52 45  |ory?&FFD4=3 : RE|
00004080  4d 20 4f 53 42 50 55 54  0d 1b 94 20 f4 6d 65 6d  |M OSBPUT... .mem|
00004090  6f 72 79 3f 26 46 46 44  37 3d 33 20 3a 20 52 45  |ory?&FFD7=3 : RE|
000040a0  4d 20 4f 53 42 47 45 54  0d 1b 9e 20 f4 6d 65 6d  |M OSBGET... .mem|
000040b0  6f 72 79 3f 26 46 46 44  41 3d 33 20 3a 20 52 45  |ory?&FFDA=3 : RE|
000040c0  4d 20 4f 53 41 52 47 53  0d 1b a8 20 f4 6d 65 6d  |M OSARGS... .mem|
000040d0  6f 72 79 3f 26 46 46 44  44 3d 33 20 3a 20 52 45  |ory?&FFDD=3 : RE|
000040e0  4d 20 4f 53 46 49 4c 45  0d 1b b2 04 0d 1b bc 20  |M OSFILE....... |
000040f0  f4 6d 65 6d 6f 72 79 3f  26 46 46 46 31 3d 33 20  |.memory?&FFF1=3 |
00004100  3a 20 52 45 4d 20 4f 53  57 4f 52 44 0d 1b c6 22  |: REM OSWORD..."|
00004110  f4 6d 65 6d 6f 72 79 3f  26 46 46 45 30 3d 26 32  |.memory?&FFE0=&2|
00004120  33 20 3a 20 52 45 4d 20  4f 53 52 44 43 48 0d 1b  |3 : REM OSRDCH..|
00004130  d0 04 0d 1b da 0c 2a 46  58 32 32 39 2c 31 0d 1b  |......*FX229,1..|
00004140  e4 04 0d 1b ee 04 0d 1b  f8 1a 70 61 74 63 68 25  |..........patch%|
00004150  3d 30 3a f4 50 52 4f 43  72 65 73 65 74 28 31 29  |=0:.PROCreset(1)|
00004160  0d 1c 02 04 0d 1c 0c 1f  f4 6d 65 6d 6f 72 79 3f  |.........memory?|
00004170  26 46 46 46 37 3d 33 20  3a 20 52 45 4d 20 4f 53  |&FFF7=3 : REM OS|
00004180  43 4c 49 0d 1c 16 1f f4  6d 65 6d 6f 72 79 3f 26  |CLI.....memory?&|
00004190  44 46 38 39 3d 33 20 3a  20 52 45 4d 20 4f 53 43  |DF89=3 : REM OSC|
000041a0  4c 49 0d 1c 20 1d f4 6d  65 6d 6f 72 79 3f 26 45  |LI.. ..memory?&E|
000041b0  46 30 32 3d 33 20 3a 52  45 4d 20 4b 45 59 56 0d  |F02=3 :REM KEYV.|
000041c0  1c 2a 22 f4 6d 65 6d 6f  72 79 3f 26 46 46 46 34  |.*".memory?&FFF4|
000041d0  3d 26 31 33 20 3a 20 52  45 4d 20 4f 53 42 59 54  |=&13 : REM OSBYT|
000041e0  45 0d 1c 34 22 f4 6d 65  6d 6f 72 79 3f 26 46 46  |E..4".memory?&FF|
000041f0  45 30 3d 26 32 33 20 3a  20 52 45 4d 20 4f 53 52  |E0=&23 : REM OSR|
00004200  44 43 48 0d 1c 3e 15 f4  6d 65 6d 6f 72 79 3f 26  |DCH..>..memory?&|
00004210  46 46 43 42 3d 26 32 33  0d 1c 48 05 e1 0d 1c 52  |FFCB=&23..H....R|
00004220  04 0d 1c 5c 0b dd f2 53  52 52 41 4d 0d 1c 66 17  |...\...SRRAM..f.|
00004230  3f 28 52 4f 4d 52 41 4d  2b 73 6f 63 6b 65 74 25  |?(ROMRAM+socket%|
00004240  29 3d 30 0d 1c 70 1c 73  6f 63 6b 65 74 25 3d 28  |)=0..p.socket%=(|
00004250  73 6f 63 6b 65 74 25 2d  31 29 20 80 20 31 35 0d  |socket%-1) . 15.|
00004260  1c 7a 05 e1 0d 1c 84 04  0d 1c 8e 11 dd f2 6b 69  |.z............ki|
00004270  6c 6c 52 4f 4d 28 53 25  29 0d 1c 98 07 ea 49 25  |llROM(S%).....I%|
00004280  0d 1c a2 1c 3f 28 52 4f  4d 52 41 4d 2b 53 25 29  |....?(ROMRAM+S%)|
00004290  3d 32 20 3a 20 f4 20 65  6d 70 74 79 0d 1c ac 15  |=2 : . empty....|
000042a0  e3 20 49 25 3d 30 20 b8  20 32 35 35 20 88 20 31  |. I%=0 . 255 . 1|
000042b0  36 0d 1c b6 1b 49 25 21  28 72 6f 6d 73 2b 72 6f  |6....I%!(roms+ro|
000042c0  6d 73 69 7a 65 25 2a 53  25 29 3d 30 0d 1c c0 05  |msize%*S%)=0....|
000042d0  ed 0d 1c ca 05 e1 0d 1c  d4 04 0d 1c de 14 dd f2  |................|
000042e0  6c 6f 61 64 52 4f 4d 28  52 24 2c 52 25 29 0d 1c  |loadROM(R$,R%)..|
000042f0  e8 07 ea 51 25 0d 1c f2  36 e7 20 6d 61 63 68 69  |...Q%...6. machi|
00004300  6e 65 25 3d 34 20 80 20  28 73 6f 63 6b 65 74 25  |ne%=4 . (socket%|
00004310  3d 39 20 84 20 73 6f 63  6b 65 74 25 3d 38 29 20  |=9 . socket%=8) |
00004320  8c 20 73 6f 63 6b 65 74  25 3d 37 0d 1c fc 0e 53  |. socket%=7....S|
00004330  25 3d 73 6f 63 6b 65 74  25 0d 1d 06 1c 73 6f 63  |%=socket%....soc|
00004340  6b 65 74 25 3d 28 73 6f  63 6b 65 74 25 2d 31 29  |ket%=(socket%-1)|
00004350  20 80 20 31 35 0d 1d 10  2d c8 99 20 22 4f 53 5f  | . 15...-.. "OS_|
00004360  46 69 6e 64 22 2c 26 34  45 2c 52 24 2c 22 36 35  |Find",&4E,R$,"65|
00004370  30 32 45 6d 24 52 4f 4d  50 61 74 68 22 20 b8 20  |02Em$ROMPath" . |
00004380  51 25 0d 1d 1a 2c c8 99  20 22 4f 53 5f 47 42 50  |Q%...,.. "OS_GBP|
00004390  42 22 2c 33 2c 51 25 2c  72 6f 6d 73 2b 72 6f 6d  |B",3,Q%,roms+rom|
000043a0  73 69 7a 65 25 2a 53 25  2c 26 34 30 30 30 0d 1d  |size%*S%,&4000..|
000043b0  24 08 d9 23 51 25 0d 1d  2e 13 3f 28 52 4f 4d 52  |$..#Q%....?(ROMR|
000043c0  41 4d 2b 53 25 29 3d 52  25 0d 1d 38 05 e1 0d 1d  |AM+S%)=R%..8....|
000043d0  42 04 0d 1d 4c 0e dd f2  69 6e 69 74 52 4f 4d 73  |B...L...initROMs|
000043e0  0d 1d 56 08 ea 20 53 25  0d 1d 60 0f e3 20 53 25  |..V.. S%..`.. S%|
000043f0  3d 30 20 b8 20 31 35 0d  1d 6a 1c 3f 28 52 4f 4d  |=0 . 15..j.?(ROM|
00004400  52 41 4d 2b 53 25 29 3d  32 20 3a 20 f4 20 30 3d  |RAM+S%)=2 : . 0=|
00004410  52 41 4d 0d 1d 74 1c 20  20 20 20 20 20 20 20 20  |RAM..t.         |
00004420  20 20 20 20 20 20 20 20  f4 20 31 3d 52 4f 4d 0d  |        . 1=ROM.|
00004430  1d 7e 1e 20 20 20 20 20  20 20 20 20 20 20 20 20  |.~.             |
00004440  20 20 20 20 f4 20 32 3d  65 6d 70 74 79 0d 1d 88  |    . 2=empty...|
00004450  05 ed 0d 1d 92 05 e1 0d  1d 9c 04 0d 1d a6 11 dd  |................|
00004460  a4 52 4f 4d 6e 61 6d 65  28 53 25 29 0d 1d b0 1f  |.ROMname(S%)....|
00004470  e7 20 3f 28 52 4f 4d 52  41 4d 2b 53 25 29 3d 32  |. ?(ROMRAM+S%)=2|
00004480  20 8c 20 3d 22 45 6d 70  74 79 22 0d 1d ba 0a ea  | . ="Empty".....|
00004490  4e 24 2c 49 25 0d 1d c4  1b 49 25 3d 72 6f 6d 73  |N$,I%....I%=roms|
000044a0  3f 28 72 6f 6d 73 69 7a  65 25 2a 53 25 2b 37 29  |?(romsize%*S%+7)|
000044b0  0d 1d ce 15 e7 20 a4 76  61 6c 69 64 52 4f 4d 28  |..... .validROM(|
000044c0  53 25 29 20 8c 0d 1d d8  0e e3 49 25 3d 30 20 b8  |S%) ......I%=0 .|
000044d0  20 31 31 0d 1d e2 23 4e  24 3d 4e 24 2b bd 72 6f  | 11...#N$=N$+.ro|
000044e0  6d 73 3f 28 72 6f 6d 73  69 7a 65 25 2a 53 25 2b  |ms?(romsize%*S%+|
000044f0  26 39 2b 49 25 29 0d 1d  ec 25 e7 20 72 6f 6d 73  |&9+I%)...%. roms|
00004500  3f 28 72 6f 6d 73 69 7a  65 25 2a 53 25 2b 26 42  |?(romsize%*S%+&B|
00004510  29 3d 30 20 8c 20 49 25  3d 31 31 0d 1d f6 05 ed  |)=0 . I%=11.....|
00004520  0d 1e 00 05 cc 0d 1e 0a  12 4e 24 3d 22 52 41 4d  |.........N$="RAM|
00004530  20 22 2b c3 7e 53 25 0d  1e 14 05 cd 0d 1e 1e 07  | "+.~S%.........|
00004540  3d 4e 24 0d 1e 28 04 0d  1e 32 12 dd a4 76 61 6c  |=N$..(...2...val|
00004550  69 64 52 4f 4d 28 53 25  29 0d 1e 3c 07 ea 49 25  |idROM(S%)..<..I%|
00004560  0d 1e 46 1b 49 25 3d 72  6f 6d 73 3f 28 72 6f 6d  |..F.I%=roms?(rom|
00004570  73 69 7a 65 25 2a 53 25  2b 37 29 0d 1e 50 67 e7  |size%*S%+7)..Pg.|
00004580  20 72 6f 6d 73 3f 28 72  6f 6d 73 69 7a 65 25 2a  | roms?(romsize%*|
00004590  53 25 2b 49 25 2b 31 29  3d 26 32 38 20 80 20 72  |S%+I%+1)=&28 . r|
000045a0  6f 6d 73 3f 28 72 6f 6d  73 69 7a 65 25 2a 53 25  |oms?(romsize%*S%|
000045b0  2b 49 25 2b 32 29 3d 26  34 33 20 80 20 72 6f 6d  |+I%+2)=&43 . rom|
000045c0  73 3f 28 72 6f 6d 73 69  7a 65 25 2a 53 25 2b 49  |s?(romsize%*S%+I|
000045d0  25 2b 33 29 3d 26 32 39  20 8c 20 3d b9 20 8b 20  |%+3)=&29 . =. . |
000045e0  3d a3 0d 1e 5a 06 3d 30  0d 1e 64 0f dd f2 72 65  |=...Z.=0..d...re|
000045f0  73 65 74 28 41 25 29 0d  1e 6e 17 e7 20 64 69 73  |set(A%)..n.. dis|
00004600  61 62 6c 65 5f 72 65 73  65 74 20 8c 20 e1 0d 1e  |able_reset . ...|
00004610  78 04 0d 1e 82 2c e7 20  41 25 3e 3d 32 20 8c 20  |x....,. A%>=2 . |
00004620  f2 63 6c 65 61 72 6d 65  6d 28 6d 65 6d 6f 72 79  |.clearmem(memory|
00004630  2c 6d 65 6d 6f 72 79 2b  26 38 30 30 30 29 0d 1e  |,memory+&8000)..|
00004640  8c 04 0d 1e 96 0d e7 20  41 25 3e 3d 31 20 8c 0d  |....... A%>=1 ..|
00004650  1e a0 16 3f 69 65 72 3d  26 38 30 20 20 20 3a 20  |...?ier=&80   : |
00004660  f4 20 69 65 72 0d 1e aa  17 3f 69 65 72 32 3d 26  |. ier....?ier2=&|
00004670  38 30 20 20 3a 20 f4 20  69 65 72 32 0d 1e b4 0d  |80  : . ier2....|
00004680  3f 45 69 66 72 3d 25 31  30 0d 1e be 0c 3f 45 69  |?Eifr=%10....?Ei|
00004690  65 72 3d 25 30 0d 1e c8  0d 3f 45 6c 61 74 63 68  |er=%0....?Elatch|
000046a0  3d 30 0d 1e d2 10 21 54  31 52 3d 26 46 30 3c 3c  |=0....!T1R=&F0<<|
000046b0  32 34 0d 1e dc 10 21 54  32 52 3d 26 46 30 3c 3c  |24....!T2R=&F0<<|
000046c0  32 34 0d 1e e6 10 21 54  33 52 3d 26 46 30 3c 3c  |24....!T3R=&F0<<|
000046d0  32 34 0d 1e f0 10 21 54  34 52 3d 26 46 30 3c 3c  |24....!T4R=&F0<<|
000046e0  32 34 0d 1e fa 29 ff 22  4c 4f 41 44 20 3c 36 35  |24...)."LOAD <65|
000046f0  30 32 45 6d 24 52 65 73  3e 2e 53 48 45 49 4c 41  |02Em$Res>.SHEILA|
00004700  20 22 2b c3 7e 73 68 65  69 6c 61 0d 1f 04 05 cd  | "+.~sheila.....|
00004710  0d 1f 0e 1f 3f 66 65 31  30 3d 26 32 32 20 3a 20  |....?fe10=&22 : |
00004720  f4 20 6d 6f 74 6f 72 20  6f 66 66 20 65 74 63 0d  |. motor off etc.|
00004730  1f 18 18 73 68 65 69 6c  61 21 26 43 30 3d 26 37  |...sheila!&C0=&7|
00004740  30 37 30 42 37 41 42 0d  1f 22 04 0d 1f 2c 0e f2  |070B7AB.."...,..|
00004750  73 65 74 6d 65 6d 6d 61  70 0d 1f 36 0d 3f 41 43  |setmemmap..6.?AC|
00004760  43 43 4f 4e 3d 30 0d 1f  40 0f f2 73 65 74 6d 65  |CCON=0..@..setme|
00004770  6d 6d 61 70 32 0d 1f 4a  04 0d 1f 54 23 f4 49 46  |mmap2..J...T#.IF|
00004780  20 70 61 74 63 68 25 3d  30 20 54 48 45 4e 20 50  | patch%=0 THEN P|
00004790  61 6c 65 74 74 65 25 3d  54 52 55 45 0d 1f 5e 04  |alette%=TRUE..^.|
000047a0  0d 1f 68 0b 3f 66 3d 25  31 30 30 0d 1f 72 04 0d  |..h.?f=%100..r..|
000047b0  1f 7c 13 f4 6d 65 6d 6f  72 79 3f 26 46 45 34 30  |.|..memory?&FE40|
000047c0  3d 30 0d 1f 86 13 f4 6d  65 6d 6f 72 79 3f 26 46  |=0.....memory?&F|
000047d0  45 36 30 3d 30 0d 1f 90  04 0d 1f 9a 1d 73 68 65  |E60=0........she|
000047e0  69 6c 61 3f 26 32 30 3d  32 20 3a 20 f4 20 74 65  |ila?&20=2 : . te|
000047f0  6c 65 74 65 78 74 0d 1f  a4 04 0d 1f ae 2e f4 6d  |letext.........m|
00004800  65 6d 6f 72 79 3f 26 45  30 41 34 3d 33 20 3a 20  |emory?&E0A4=3 : |
00004810  52 45 4d 20 77 68 65 72  65 20 4f 53 57 52 43 48  |REM where OSWRCH|
00004820  20 67 6f 65 73 20 74 6f  0d 1f b8 2e f4 6d 65 6d  | goes to.....mem|
00004830  6f 72 79 3f 26 45 37 45  42 3d 33 20 3a 20 52 45  |ory?&E7EB=3 : RE|
00004840  4d 20 77 68 65 72 65 20  4f 53 57 4f 52 44 20 67  |M where OSWORD g|
00004850  6f 65 73 20 74 6f 0d 1f  c2 04 0d 1f cc 37 f4 6d  |oes to.......7.m|
00004860  65 6d 6f 72 79 3f 26 45  39 38 46 3d 31 30 20 3a  |emory?&E98F=10 :|
00004870  20 52 45 4d 20 64 65 66  61 75 6c 74 20 72 65 70  | REM default rep|
00004880  65 61 74 20 64 65 6c 61  79 20 28 4f 53 31 2e 32  |eat delay (OS1.2|
00004890  29 0d 1f d6 04 0d 1f e0  2f f4 6d 65 6d 6f 72 79  |)......./.memory|
000048a0  3f 26 46 45 34 45 3d 26  30 20 3a 20 52 45 4d 20  |?&FE4E=&0 : REM |
000048b0  66 6f 72 63 65 20 70 6f  77 65 72 20 6f 6e 20 72  |force power on r|
000048c0  65 73 65 74 0d 1f ea 14  f4 6d 65 6d 6f 72 79 3f  |eset.....memory?|
000048d0  26 46 45 36 45 3d 26 30  0d 1f f4 04 0d 1f fe 2c  |&FE6E=&0.......,|
000048e0  f4 6d 65 6d 6f 72 79 3f  69 65 72 3d 30 20 3a 20  |.memory?ier=0 : |
000048f0  52 45 4d 20 66 6f 72 63  65 20 70 6f 77 65 72 20  |REM force power |
00004900  6f 6e 20 72 65 73 65 74  0d 20 08 12 f4 6d 65 6d  |on reset. ...mem|
00004910  6f 72 79 3f 69 65 72 32  3d 30 0d 20 12 04 0d 20  |ory?ier2=0. ... |
00004920  1c 1e f4 6d 65 6d 6f 72  79 3f 26 32 38 45 3d 26  |...memory?&28E=&|
00004930  38 30 20 3a 20 52 45 4d  20 33 32 4b 0d 20 26 15  |80 : REM 32K. &.|
00004940  f4 6d 65 6d 6f 72 79 3f  26 44 41 32 46 3d 26 45  |.memory?&DA2F=&E|
00004950  41 0d 20 30 15 f4 6d 65  6d 6f 72 79 3f 26 44 41  |A. 0..memory?&DA|
00004960  33 30 3d 26 45 41 0d 20  3a 12 f4 6d 65 6d 6f 72  |30=&EA. :..memor|
00004970  79 3f 26 33 35 35 3d 37  0d 20 44 04 0d 20 4e 27  |y?&355=7. D.. N'|
00004980  f4 21 70 63 5f 73 74 6f  72 65 3d 26 38 30 30 30  |.!pc_store=&8000|
00004990  20 3c 3c 20 31 36 20 3a  20 21 61 3d 31 20 3c 3c  | << 16 : !a=1 <<|
000049a0  20 32 34 0d 20 58 1a f4  21 70 63 5f 73 74 6f 72  | 24. X..!pc_stor|
000049b0  65 3d 26 44 39 43 44 20  3c 3c 20 31 36 0d 20 62  |e=&D9CD << 16. b|
000049c0  1a f4 21 70 63 5f 73 74  6f 72 65 3d 26 34 37 42  |..!pc_store=&47B|
000049d0  31 20 3c 3c 20 31 36 0d  20 6c 38 21 70 63 5f 73  |1 << 16. l8!pc_s|
000049e0  74 6f 72 65 3d 28 6d 65  6d 6f 72 79 3f 26 46 46  |tore=(memory?&FF|
000049f0  46 43 20 2b 20 28 6d 65  6d 6f 72 79 3f 26 46 46  |FC + (memory?&FF|
00004a00  46 44 20 3c 3c 20 38 29  29 20 3c 3c 20 31 36 0d  |FD << 8)) << 16.|
00004a10  20 76 3b f4 21 70 63 5f  73 74 6f 72 65 3d 28 46  | v;.!pc_store=(F|
00004a20  4e 70 65 65 6b 28 26 46  46 46 43 29 20 2b 20 28  |Npeek(&FFFC) + (|
00004a30  46 4e 70 65 65 6b 28 26  46 46 46 44 29 20 3c 3c  |FNpeek(&FFFD) <<|
00004a40  20 38 29 29 20 3c 3c 20  31 36 0d 20 80 05 e1 0d  | 8)) << 16. ....|
00004a50  20 8a 04 0d 20 94 09 dd  f2 42 42 43 0d 20 9e 07  | ... ....BBC. ..|
00004a60  ea 20 85 0d 20 a8 04 0d  20 b2 3a c8 99 20 22 58  |. .. ... .:.. "X|
00004a70  4f 53 5f 53 57 49 4e 75  6d 62 65 72 46 72 6f 6d  |OS_SWINumberFrom|
00004a80  53 74 72 69 6e 67 22 2c  2c 22 49 6d 61 67 65 44  |String",,"ImageD|
00004a90  46 53 5f 56 65 72 73 69  6f 6e 22 20 b8 20 3b 20  |FS_Version" . ; |
00004aa0  46 0d 20 bc 2d e7 20 28  46 20 80 20 31 29 3d 30  |F. .-. (F . 1)=0|
00004ab0  20 8c 20 64 66 73 73 75  70 70 6f 72 74 3d b9 20  | . dfssupport=. |
00004ac0  8b 20 64 66 73 73 75 70  70 6f 72 74 3d a3 0d 20  |. dfssupport=.. |
00004ad0  c6 04 0d 20 d0 2f e7 20  64 66 73 73 75 70 70 6f  |... ./. dfssuppo|
00004ae0  72 74 20 c8 99 20 22 49  6d 61 67 65 44 46 53 5f  |rt .. "ImageDFS_|
00004af0  45 6e 74 65 72 69 6e 67  45 6d 75 6c 61 74 6f 72  |EnteringEmulator|
00004b00  22 0d 20 da 04 0d 20 e4  04 0d 20 ee 08 2a 46 58  |". ... ... ..*FX|
00004b10  39 0d 20 f8 0f 77 69 6d  70 5f 6d 6f 64 65 3d eb  |9. ..wimp_mode=.|
00004b20  0d 21 02 16 f4 53 59 53  20 22 36 35 30 32 5f 52  |.!...SYS "6502_R|
00004b30  65 49 6e 69 74 22 0d 21  0c 11 3f 6c 61 73 74 6d  |eInit".!..?lastm|
00004b40  6f 64 65 3d 32 35 35 0d  21 16 18 c8 99 20 22 48  |ode=255.!.... "H|
00004b50  6f 75 72 67 6c 61 73 73  5f 53 6d 61 73 68 22 0d  |ourglass_Smash".|
00004b60  21 20 28 f4 20 41 73 73  69 67 6e 20 73 6f 75 6e  |! (. Assign soun|
00004b70  64 20 63 68 61 6e 6e 65  6c 73 20 26 20 73 74 61  |d channels & sta|
00004b80  72 74 20 6e 6f 74 65 0d  21 2a 10 f2 73 6f 75 6e  |rt note.!*..soun|
00004b90  64 5f 73 65 74 75 70 0d  21 34 2a c8 99 20 22 36  |d_setup.!4*.. "6|
00004ba0  35 30 32 5f 49 6e 73 74  61 6c 6c 45 78 69 74 48  |502_InstallExitH|
00004bb0  61 6e 64 6c 65 72 22 2c  77 69 6d 70 5f 6d 6f 64  |andler",wimp_mod|
00004bc0  65 0d 21 3e 04 0d 21 48  19 ee 85 20 ea 20 f2 65  |e.!>..!H... . .e|
00004bd0  72 72 32 28 77 69 6d 70  5f 6d 6f 64 65 29 0d 21  |rr2(wimp_mode).!|
00004be0  52 04 0d 21 5c 87 21 70  61 74 63 68 5f 6f 6e 3d  |R..!\.!patch_on=|
00004bf0  28 28 6d 61 63 68 69 6e  65 25 3c 3e 34 29 20 80  |((machine%<>4) .|
00004c00  20 28 70 61 74 63 68 25  3e 30 29 20 80 20 25 31  | (patch%>0) . %1|
00004c10  29 20 2b 20 28 6a 6f 79  73 74 69 63 6b 25 20 80  |) + (joystick% .|
00004c20  20 25 31 30 29 20 2b 20  28 43 75 72 73 6f 72 25  | %10) + (Cursor%|
00004c30  20 80 20 25 31 30 30 29  20 2b 20 28 73 63 72 6f  | . %100) + (scro|
00004c40  6c 6c 5f 68 61 63 6b 25  20 80 20 25 31 30 30 30  |ll_hack% . %1000|
00004c50  29 20 2b 20 28 ac 73 6f  75 6e 64 5f 6f 6e 25 20  |) + (.sound_on% |
00004c60  80 20 25 31 30 30 30 30  29 0d 21 66 04 0d 21 70  |. %10000).!f..!p|
00004c70  21 21 73 70 65 65 64 5f  6c 6f 63 3d 73 70 65 65  |!!speed_loc=spee|
00004c80  64 2a 32 30 30 30 30 30  30 2f 35 30 30 30 0d 21  |d*2000000/5000.!|
00004c90  7a 04 0d 21 84 1e ef 32  33 2c 31 36 2c 31 2c 32  |z..!...23,16,1,2|
00004ca0  35 34 7c 20 3a 20 f4 20  4e 4f 53 43 52 4f 4c 4c  |54| : . NOSCROLL|
00004cb0  0d 21 8e 23 c8 99 20 22  4f 53 5f 42 79 74 65 22  |.!.#.. "OS_Byte"|
00004cc0  2c 32 30 32 2c 30 2c 32  35 35 20 b8 20 2c 46 58  |,202,0,255 . ,FX|
00004cd0  32 30 32 0d 21 98 23 c8  99 20 22 4f 53 5f 42 79  |202.!.#.. "OS_By|
00004ce0  74 65 22 2c 32 34 37 2c  30 2c 32 35 35 20 b8 20  |te",247,0,255 . |
00004cf0  2c 46 58 32 34 37 0d 21  a2 1a c8 99 20 22 4f 53  |,FX247.!.... "OS|
00004d00  5f 42 79 74 65 22 2c 32  34 37 2c 32 35 35 2c 30  |_Byte",247,255,0|
00004d10  0d 21 ac 04 0d 21 b6 34  c8 99 20 22 4f 53 5f 42  |.!...!.4.. "OS_B|
00004d20  79 74 65 22 2c 31 30 36  2c 26 38 31 20 3a 20 f4  |yte",106,&81 : .|
00004d30  20 75 6e 6c 69 6e 6b 20  70 6f 69 6e 74 65 72 2c  | unlink pointer,|
00004d40  20 73 68 61 70 65 20 31  0d 21 c0 16 c8 97 20 fb  | shape 1.!.... .|
00004d50  20 33 2c 32 35 35 2c 32  35 35 2c 32 35 35 0d 21  | 3,255,255,255.!|
00004d60  ca 04 0d 21 d4 33 c8 99  20 22 4f 53 5f 42 79 74  |...!.3.. "OS_Byt|
00004d70  65 22 2c 32 30 32 2c 6d  65 6d 6f 72 79 3f 26 32  |e",202,memory?&2|
00004d80  35 41 20 80 20 25 31 30  30 30 30 2c 25 31 31 31  |5A . %10000,%111|
00004d90  30 31 31 31 31 0d 21 de  14 c8 99 20 22 4f 53 5f  |01111.!.... "OS_|
00004da0  42 79 74 65 22 2c 31 31  38 0d 21 e8 04 0d 21 f2  |Byte",118.!...!.|
00004db0  14 68 61 6e 64 25 3d 8e  74 61 70 65 66 69 6c 65  |.hand%=.tapefile|
00004dc0  24 0d 21 fc 16 3f 74 61  70 65 5f 68 61 6e 64 6c  |$.!..?tape_handl|
00004dd0  65 3d 68 61 6e 64 25 0d  22 06 04 0d 22 10 05 f5  |e=hand%."..."...|
00004de0  0d 22 1a 04 0d 22 24 23  e7 20 6e 65 77 69 6e 64  |."..."$#. newind|
00004df0  65 78 25 3e 3d 30 20 69  6e 64 65 78 25 3d 6e 65  |ex%>=0 index%=ne|
00004e00  77 69 6e 64 65 78 25 0d  22 2e 3a e7 20 4f 53 52  |windex%.".:. OSR|
00004e10  44 43 48 25 20 8c 20 f2  70 6f 6b 65 28 26 46 46  |DCH% . .poke(&FF|
00004e20  45 30 2c 4f 53 52 44 43  48 5f 6c 6f 63 29 20 8b  |E0,OSRDCH_loc) .|
00004e30  20 f2 70 6f 6b 65 28 26  46 46 45 30 2c 26 32 33  | .poke(&FFE0,&23|
00004e40  29 0d 22 38 15 3f 52 4f  4d 53 45 4c 3d 31 2b 52  |)."8.?ROMSEL=1+R|
00004e50  4f 4d 53 45 4c 25 0d 22  42 17 3f 50 61 6c 65 74  |OMSEL%."B.?Palet|
00004e60  74 65 3d 31 2b 50 61 6c  65 74 74 65 25 0d 22 4c  |te=1+Palette%."L|
00004e70  19 f4 3f 63 75 72 73 6f  72 5f 6f 6e 3d 31 2b 43  |..?cursor_on=1+C|
00004e80  75 72 73 6f 72 25 0d 22  56 0e f2 73 65 74 6d 65  |ursor%."V..setme|
00004e90  6d 6d 61 70 0d 22 60 0b  41 25 3d 72 6f 6d 73 0d  |mmap."`.A%=roms.|
00004ea0  22 6a 14 44 25 3d 6d 65  6d 6f 72 79 20 3a 20 f4  |"j.D%=memory : .|
00004eb0  20 52 33 0d 22 74 2d c8  99 20 26 36 30 30 46 41  | R3."t-.. &600FA|
00004ec0  2c 30 20 3a 20 f4 20 57  69 6d 70 5f 53 65 74 57  |,0 : . Wimp_SetW|
00004ed0  61 74 63 68 64 6f 67 53  74 61 74 65 20 4f 66 66  |atchdogState Off|
00004ee0  0d 22 7e 1c 62 25 3d ba  28 63 6f 64 65 2b 21 73  |."~.b%=.(code+!s|
00004ef0  74 61 72 74 5f 6f 66 66  73 65 74 29 0d 22 88 2c  |tart_offset).".,|
00004f00  c8 99 20 26 36 30 30 46  41 2c 31 20 3a 20 f4 20  |.. &600FA,1 : . |
00004f10  57 69 6d 70 5f 53 65 74  57 61 74 63 68 64 6f 67  |Wimp_SetWatchdog|
00004f20  53 74 61 74 65 20 4f 6e  0d 22 92 0f f2 73 65 74  |State On."...set|
00004f30  6d 65 6d 6d 61 70 32 0d  22 9c 09 2a 46 58 31 35  |memmap2."..*FX15|
00004f40  0d 22 a6 17 f4 50 52 49  4e 54 62 25 3a 56 44 55  |."...PRINTb%:VDU|
00004f50  37 3a 51 3d 47 45 54 0d  22 b0 0b c8 8e 20 62 25  |7:Q=GET.".... b%|
00004f60  20 ca 0d 22 ba 08 c9 20  31 31 0d 22 c4 0b e7 20  | .."... 11."... |
00004f70  a6 2d 32 20 8c 0d 22 ce  2c e7 20 68 61 6e 64 25  |.-2 ..".,. hand%|
00004f80  3c 3e 30 20 8c 20 cf 23  68 61 6e 64 25 3d a4 6d  |<>0 . .#hand%=.m|
00004f90  61 78 28 30 2c 8f 23 68  61 6e 64 25 2d 33 35 30  |ax(0,.#hand%-350|
00004fa0  29 0d 22 d8 05 cc 0d 22  e2 23 e7 20 a6 2d 31 20  |)."....".#. .-1 |
00004fb0  8c 20 76 6f 6c 75 6d 65  25 2b 3d 35 20 8b 20 76  |. volume%+=5 . v|
00004fc0  6f 6c 75 6d 65 25 2d 3d  35 0d 22 ec 1f e7 20 76  |olume%-=5."... v|
00004fd0  6f 6c 75 6d 65 25 3e 31  32 37 20 8c 20 76 6f 6c  |olume%>127 . vol|
00004fe0  75 6d 65 25 3d 31 32 37  0d 22 f6 1b e7 20 76 6f  |ume%=127."... vo|
00004ff0  6c 75 6d 65 25 3c 30 20  8c 20 76 6f 6c 75 6d 65  |lume%<0 . volume|
00005000  25 3d 30 0d 23 00 1f f2  73 6f 75 6e 64 5f 72 65  |%=0.#...sound_re|
00005010  73 74 6f 72 65 3a f2 73  6f 75 6e 64 5f 73 65 74  |store:.sound_set|
00005020  75 70 0d 23 0a 05 cd 0d  23 14 04 0d 23 1e 3f c9  |up.#....#...#.?.|
00005030  20 31 30 20 3a 20 db 3a  3f 6c 61 73 74 6d 6f 64  | 10 : .:?lastmod|
00005040  65 3d 32 35 35 3a f4 53  59 53 20 22 36 35 30 32  |e=255:.SYS "6502|
00005050  5f 52 65 49 6e 69 74 22  3a 52 45 4d 6d 65 6d 6f  |_ReInit":REMmemo|
00005060  72 79 3f 26 45 43 3d 26  45 32 0d 23 28 1a c9 20  |ry?&EC=&E2.#(.. |
00005070  36 36 20 3a 20 f1 7e 21  70 63 5f 73 74 6f 72 65  |66 : .~!pc_store|
00005080  3a 51 3d a5 0d 23 32 08  c9 20 31 35 0d 23 3c 21  |:Q=..#2.. 15.#<!|
00005090  e7 20 a6 2d 33 20 8c 20  f2 72 65 73 65 74 28 32  |. .-3 . .reset(2|
000050a0  29 20 8b 20 f2 72 65 73  65 74 28 30 29 0d 23 46  |) . .reset(0).#F|
000050b0  04 0d 23 50 07 c9 20 33  0d 23 5a 4c f4 50 52 49  |..#P.. 3.#ZL.PRI|
000050c0  4e 54 20 22 2a 2a 2a 2a  2a 22 3b 7e 21 70 63 5f  |NT "*****";~!pc_|
000050d0  73 74 6f 72 65 20 3e 3e  3e 20 31 36 20 3a 20 50  |store >>> 16 : P|
000050e0  52 49 4e 54 27 61 3f 33  2c 79 3f 33 20 3a 20 52  |RINT'a?3,y?3 : R|
000050f0  45 50 45 41 54 51 3d 47  45 54 3a 55 4e 54 49 4c  |EPEATQ=GET:UNTIL|
00005100  51 3d 34 38 0d 23 64 38  f4 4f 53 43 4c 49 22 53  |Q=48.#d8.OSCLI"S|
00005110  41 56 45 20 52 41 4d 3a  24 2e 4d 65 6d 6f 72 79  |AVE RAM:$.Memory|
00005120  20 22 2b 53 54 52 24 7e  6d 65 6d 6f 72 79 2b 22  | "+STR$~memory+"|
00005130  20 2b 31 30 30 30 30 20  30 20 30 22 0d 23 6e 3c  | +10000 0 0".#n<|
00005140  e7 20 a4 70 65 65 6b 28  21 70 63 5f 73 74 6f 72  |. .peek(!pc_stor|
00005150  65 20 3e 3e 3e 20 31 36  29 3d 33 20 80 20 28 21  |e >>> 16)=3 . (!|
00005160  70 63 5f 73 74 6f 72 65  20 3e 3e 3e 20 31 36 29  |pc_store >>> 16)|
00005170  3c 26 43 30 30 30 20 8c  0d 23 78 5d f4 49 46 20  |<&C000 ..#x].IF |
00005180  6d 65 6d 6f 72 79 3f 28  28 21 70 63 5f 73 74 6f  |memory?((!pc_sto|
00005190  72 65 20 3e 3e 3e 20 31  36 29 2b 31 29 3c 26 38  |re >>> 16)+1)<&8|
000051a0  30 20 54 48 45 4e 20 50  52 49 4e 54 22 4c 4c 22  |0 THEN PRINT"LL"|
000051b0  6d 65 6d 6f 72 79 3f 28  28 21 70 63 5f 73 74 6f  |memory?((!pc_sto|
000051c0  72 65 20 3e 3e 3e 20 31  36 29 2b 31 29 20 3a 20  |re >>> 16)+1) : |
000051d0  51 3d 47 45 54 0d 23 82  41 f4 50 52 49 4e 54 20  |Q=GET.#.A.PRINT |
000051e0  54 41 42 28 30 2c 30 29  3b 7e 46 4e 70 65 65 6b  |TAB(0,0);~FNpeek|
000051f0  28 28 21 70 63 5f 73 74  6f 72 65 20 3e 3e 3e 20  |((!pc_store >>> |
00005200  31 36 29 2b 31 29 3b 22  20 20 20 22 3b 3a 52 45  |16)+1);"   ";:RE|
00005210  4d 51 3d 47 45 54 0d 23  8c 24 c8 8e 20 a4 70 65  |MQ=GET.#.$.. .pe|
00005220  65 6b 28 28 21 70 63 5f  73 74 6f 72 65 20 3e 3e  |ek((!pc_store >>|
00005230  3e 20 31 36 29 2b 31 29  20 ca 0d 23 96 12 c9 20  |> 16)+1) ..#... |
00005240  30 20 20 20 3a 20 f2 6f  73 66 73 63 0d 23 a0 13  |0   : .osfsc.#..|
00005250  c9 20 31 20 20 20 3a 20  f2 6f 73 66 69 6e 64 0d  |. 1   : .osfind.|
00005260  23 aa 13 c9 20 32 20 20  20 3a 20 f2 6f 73 67 62  |#... 2   : .osgb|
00005270  70 62 0d 23 b4 13 c9 20  33 20 20 20 3a 20 f2 6f  |pb.#... 3   : .o|
00005280  73 62 70 75 74 0d 23 be  13 c9 20 34 20 20 20 3a  |sbput.#... 4   :|
00005290  20 f2 6f 73 62 67 65 74  0d 23 c8 13 c9 20 35 20  | .osbget.#... 5 |
000052a0  20 20 3a 20 f2 6f 73 61  72 67 73 0d 23 d2 13 c9  |  : .osargs.#...|
000052b0  20 36 20 20 20 3a 20 f2  6f 73 66 69 6c 65 0d 23  | 6   : .osfile.#|
000052c0  dc 14 c9 20 26 34 30 20  3a 20 f2 6f 73 77 6f 72  |... &40 : .oswor|
000052d0  64 32 0d 23 e6 14 c9 20  26 34 31 20 3a 20 f2 6f  |d2.#... &41 : .o|
000052e0  73 62 79 74 65 32 0d 23  f0 15 c9 20 26 38 30 20  |sbyte2.#... &80 |
000052f0  3a 20 f2 72 65 61 64 43  4d 4f 53 0d 23 fa 16 c9  |: .readCMOS.#...|
00005300  20 26 38 31 20 3a 20 f2  77 72 69 74 65 43 4d 4f  | &81 : .writeCMO|
00005310  53 0d 24 04 17 c9 20 26  38 32 20 3a 20 f2 72 65  |S.$... &82 : .re|
00005320  61 64 45 45 50 52 4f 4d  0d 24 0e 18 c9 20 26 38  |adEEPROM.$... &8|
00005330  33 20 3a 20 f2 77 72 69  74 65 45 45 50 52 4f 4d  |3 : .writeEEPROM|
00005340  0d 24 18 13 c9 20 26 44  30 20 3a 20 f2 73 72 6c  |.$... &D0 : .srl|
00005350  6f 61 64 0d 24 22 14 c9  20 26 44 31 20 3a 20 f2  |oad.$".. &D1 : .|
00005360  73 72 77 72 69 74 65 0d  24 2c 12 c9 20 26 44 32  |srwrite.$,.. &D2|
00005370  20 3a 20 f2 64 72 69 76  65 0d 24 36 11 c9 20 26  | : .drive.$6.. &|
00005380  44 33 20 3a 20 f2 62 6f  6f 74 0d 24 40 20 c9 20  |D3 : .boot.$@ . |
00005390  26 44 35 20 3a 20 f2 62  61 63 6b 20 3a 20 61 3f  |&D5 : .back : a?|
000053a0  33 3d 30 20 3a 20 f2 72  74 73 0d 24 4a 12 c9 20  |3=0 : .rts.$J.. |
000053b0  26 44 36 20 3a 20 f2 6d  6f 75 6e 74 0d 24 54 22  |&D6 : .mount.$T"|
000053c0  c9 20 26 46 46 20 3a 20  62 25 3d 31 32 20 3a 20  |. &FF : b%=12 : |
000053d0  f2 72 74 73 20 3a 20 f4  20 2a 51 75 69 74 0d 24  |.rts : . *Quit.$|
000053e0  5e 05 cb 0d 24 68 05 cc  0d 24 72 1b c8 8e 20 28  |^...$h...$r... (|
000053f0  21 70 63 5f 73 74 6f 72  65 20 3e 3e 3e 20 31 36  |!pc_store >>> 16|
00005400  29 20 ca 0d 24 7c 1c c9  20 26 46 46 46 31 2c 26  |) ..$|.. &FFF1,&|
00005410  45 37 45 42 20 3a 20 f2  6f 73 77 6f 72 64 32 0d  |E7EB : .osword2.|
00005420  24 86 15 c9 20 26 46 46  45 30 20 3a 20 f2 6f 73  |$... &FFE0 : .os|
00005430  72 64 63 68 0d 24 90 15  c9 20 26 46 46 44 37 20  |rdch.$... &FFD7 |
00005440  3a 20 f2 6f 73 62 67 65  74 0d 24 9a 15 c9 20 26  |: .osbget.$... &|
00005450  46 46 44 34 20 3a 20 f2  6f 73 62 70 75 74 0d 24  |FFD4 : .osbput.$|
00005460  a4 15 c9 20 26 46 46 44  44 20 3a 20 f2 6f 73 66  |... &FFDD : .osf|
00005470  69 6c 65 0d 24 ae 15 c9  20 26 46 46 44 41 20 3a  |ile.$... &FFDA :|
00005480  20 f2 6f 73 61 72 67 73  0d 24 b8 15 c9 20 26 46  | .osargs.$... &F|
00005490  46 44 31 20 3a 20 f2 6f  73 67 62 70 62 0d 24 c2  |FD1 : .osgbpb.$.|
000054a0  3d c9 20 26 46 46 43 45  20 3a 20 f2 6f 73 66 69  |=. &FFCE : .osfi|
000054b0  6e 64 20 3a f4 20 4f 70  65 6e 20 6f 72 20 63 6c  |nd :. Open or cl|
000054c0  6f 73 65 20 61 20 66 69  6c 65 20 66 6f 72 20 62  |ose a file for b|
000054d0  79 74 65 20 61 63 63 65  73 73 0d 24 cc 1a c9 20  |yte access.$... |
000054e0  26 46 31 42 31 2c 26 46  30 45 38 20 3a 20 f2 6f  |&F1B1,&F0E8 : .o|
000054f0  73 66 73 63 0d 24 d6 05  cb 0d 24 e0 04 0d 24 ea  |sfsc.$....$...$.|
00005500  05 cd 0d 24 f4 04 0d 24  fe 07 c9 20 37 0d 25 08  |...$...$... 7.%.|
00005510  0f 63 62 3d 28 79 3f 33  29 3c 3c 38 0d 25 12 0b  |.cb=(y?3)<<8.%..|
00005520  63 62 2b 3d 78 3f 33 0d  25 1c 0e 63 62 2b 3d 6d  |cb+=x?3.%..cb+=m|
00005530  65 6d 6f 72 79 0d 25 26  0e e3 20 49 25 3d 30 20  |emory.%&.. I%=0 |
00005540  b8 20 37 0d 25 30 16 52  25 28 49 25 29 3d 63 62  |. 7.%0.R%(I%)=cb|
00005550  21 28 39 2b 49 25 2a 34  29 0d 25 3a 32 e7 20 28  |!(9+I%*4).%:2. (|
00005560  63 62 3f 34 20 80 20 28  31 3c 3c 49 25 29 29 20  |cb?4 . (1<<I%)) |
00005570  3c 3e 20 30 20 8c 20 52  25 28 49 25 29 3d a4 61  |<> 0 . R%(I%)=.a|
00005580  64 64 72 28 52 25 28 49  25 29 29 0d 25 44 05 ed  |ddr(R%(I%)).%D..|
00005590  0d 25 4e 0d 73 77 69 25  3d 63 62 3f 30 0d 25 58  |.%N.swi%=cb?0.%X|
000055a0  13 73 77 69 25 2b 3d 28  63 62 3f 31 29 3c 3c 38  |.swi%+=(cb?1)<<8|
000055b0  0d 25 62 14 73 77 69 25  2b 3d 28 63 62 3f 32 29  |.%b.swi%+=(cb?2)|
000055c0  3c 3c 31 36 0d 25 6c 04  0d 25 76 18 f4 49 46 20  |<<16.%l..%v..IF |
000055d0  73 77 69 25 3d 26 36 31  31 34 30 20 54 48 45 4e  |swi%=&61140 THEN|
000055e0  0d 25 80 0e f4 62 61 73  65 3d 63 62 21 39 0d 25  |.%...base=cb!9.%|
000055f0  8a 2c f4 50 52 49 4e 54  22 47 47 47 22 3b 7e 6d  |.,.PRINT"GGG";~m|
00005600  65 6d 6f 72 79 3f 28 62  61 73 65 2b 36 29 3b 22  |emory?(base+6);"|
00005610  47 47 47 22 3a 51 3d 47  45 54 0d 25 94 0a f4 45  |GGG":Q=GET.%...E|
00005620  4e 44 49 46 0d 25 9e 04  0d 25 a8 38 f4 53 59 53  |NDIF.%...%.8.SYS|
00005630  20 22 4f 53 5f 53 57 49  4e 75 6d 62 65 72 54 6f  | "OS_SWINumberTo|
00005640  53 74 72 69 6e 67 22 2c  73 77 69 25 2c 62 75 66  |String",swi%,buf|
00005650  66 65 72 2c 32 35 35 20  54 4f 20 2c 73 77 69 24  |fer,255 TO ,swi$|
00005660  0d 25 b2 21 f4 50 52 49  4e 54 22 4f 70 63 6f 64  |.%.!.PRINT"Opcod|
00005670  65 20 37 20 22 3b 7e 73  77 69 25 3a 51 3d 47 45  |e 7 ";~swi%:Q=GE|
00005680  54 0d 25 bc 12 e7 20 64  66 73 73 75 70 70 6f 72  |T.%... dfssuppor|
00005690  74 20 8c 0d 25 c6 04 0d  25 d0 0d c8 8e 20 73 77  |t ..%...%.... sw|
000056a0  69 25 20 ca 0d 25 da 04  0d 25 e4 27 c9 20 26 36  |i% ..%...%.'. &6|
000056b0  31 31 34 30 20 3a 20 f4  22 58 50 52 45 53 44 46  |1140 : ."XPRESDF|
000056c0  53 5f 46 44 43 4f 70 65  72 61 74 69 6f 6e 22 0d  |S_FDCOperation".|
000056d0  25 ee 0d 62 61 73 65 3d  63 62 21 39 0d 25 f8 16  |%..base=cb!9.%..|
000056e0  20 20 c8 8e 20 6d 65 6d  6f 72 79 3f 62 61 73 65  |  .. memory?base|
000056f0  20 ca 0d 26 02 0f 20 20  c9 20 30 2c 31 2c 32 2c  | ..&..  . 0,1,2,|
00005700  33 0d 26 0c 1b 20 20 c9  20 26 32 31 20 3a 20 6d  |3.&..  . &21 : m|
00005710  65 6d 6f 72 79 3f 62 61  73 65 3d 30 0d 26 16 1b  |emory?base=0.&..|
00005720  20 20 c9 20 26 34 42 20  3a 20 6d 65 6d 6f 72 79  |  . &4B : memory|
00005730  3f 62 61 73 65 3d 31 0d  26 20 1b 20 20 c9 20 26  |?base=1.& .  . &|
00005740  45 30 20 3a 20 6d 65 6d  6f 72 79 3f 62 61 73 65  |E0 : memory?base|
00005750  3d 32 0d 26 2a 1b 20 20  c9 20 26 45 41 20 3a 20  |=2.&*.  . &EA : |
00005760  6d 65 6d 6f 72 79 3f 62  61 73 65 3d 33 0d 26 34  |memory?base=3.&4|
00005770  07 20 20 7f 0d 26 3e 20  20 20 f1 22 44 72 69 76  |.  ..&>   ."Driv|
00005780  65 20 22 3b 6d 65 6d 6f  72 79 3f 62 61 73 65 3b  |e ";memory?base;|
00005790  22 20 20 22 0d 26 48 07  20 20 cb 0d 26 52 2f e7  |"  ".&H.  ..&R/.|
000057a0  20 6d 65 6d 6f 72 79 3f  28 62 61 73 65 2b 36 29  | memory?(base+6)|
000057b0  3d 26 38 30 20 8c 20 6d  65 6d 6f 72 79 3f 28 62  |=&80 . memory?(b|
000057c0  61 73 65 2b 36 29 3d 26  35 33 0d 26 5c 2f e7 20  |ase+6)=&53.&\/. |
000057d0  6d 65 6d 6f 72 79 3f 28  62 61 73 65 2b 36 29 3d  |memory?(base+6)=|
000057e0  26 41 30 20 8c 20 6d 65  6d 6f 72 79 3f 28 62 61  |&A0 . memory?(ba|
000057f0  73 65 2b 36 29 3d 26 34  42 0d 26 66 27 f4 50 52  |se+6)=&4B.&f'.PR|
00005800  49 4e 54 22 46 44 43 4f  70 20 22 3b 6d 65 6d 6f  |INT"FDCOp ";memo|
00005810  72 79 3f 28 62 61 73 65  2b 36 29 3b 22 20 20 22  |ry?(base+6);"  "|
00005820  0d 26 70 3d e7 20 6d 65  6d 6f 72 79 3f 28 62 61  |.&p=. memory?(ba|
00005830  73 65 2b 31 31 29 3c 3e  30 20 8c 20 6d 65 6d 6f  |se+11)<>0 . memo|
00005840  72 79 3f 28 62 61 73 65  2b 39 29 3d 6d 65 6d 6f  |ry?(base+9)=memo|
00005850  72 79 3f 28 62 61 73 65  2b 39 29 2b 31 0d 26 7a  |ry?(base+9)+1.&z|
00005860  33 6d 65 6d 6f 72 79 3f  28 62 61 73 65 2b 39 29  |3memory?(base+9)|
00005870  3d 28 6d 65 6d 6f 72 79  3f 28 62 61 73 65 2b 39  |=(memory?(base+9|
00005880  29 20 80 20 25 31 31 31  31 31 29 20 84 20 33 32  |) . %11111) . 32|
00005890  0d 26 84 5e e7 20 6d 65  6d 6f 72 79 3f 28 62 61  |.&.^. memory?(ba|
000058a0  73 65 2b 36 29 3c 3e 26  38 31 20 8c 20 c8 99 20  |se+6)<>&81 . .. |
000058b0  22 58 49 6d 61 67 65 44  46 53 5f 4f 53 57 4f 52  |"XImageDFS_OSWOR|
000058c0  44 37 46 22 2c 2c 62 61  73 65 20 83 20 32 35 36  |D7F",,base . 256|
000058d0  2c 62 61 73 65 20 81 20  32 35 36 2c 6d 65 6d 6f  |,base . 256,memo|
000058e0  72 79 20 b8 20 52 25 28  30 29 20 3b 20 46 0d 26  |ry . R%(0) ; F.&|
000058f0  8e 04 0d 26 98 29 c9 20  26 36 31 31 34 31 20 3a  |...&.). &61141 :|
00005900  20 f4 20 22 58 50 52 45  53 44 46 53 5f 52 65 61  | . "XPRESDFS_Rea|
00005910  64 46 44 43 53 74 61 74  75 73 22 0d 26 a2 04 0d  |dFDCStatus".&...|
00005920  26 ac 28 c9 20 26 36 31  31 34 32 20 3a 20 f4 20  |&.(. &61142 : . |
00005930  22 58 50 52 45 53 44 46  53 5f 53 65 74 44 46 53  |"XPRESDFS_SetDFS|
00005940  64 72 69 76 65 73 22 0d  26 b6 17 f4 50 52 49 4e  |drives".&...PRIN|
00005950  54 7e 52 25 28 30 29 2c  7e 52 25 28 31 29 0d 26  |T~R%(0),~R%(1).&|
00005960  c0 2b f4 53 59 53 20 22  44 46 53 5f 52 49 53 43  |.+.SYS "DFS_RISC|
00005970  4f 53 54 6f 42 42 43 44  72 69 76 65 22 2c 52 25  |OSToBBCDrive",R%|
00005980  28 30 29 2c 52 25 28 31  29 0d 26 ca 04 0d 26 d4  |(0),R%(1).&...&.|
00005990  26 c9 20 26 36 31 31 34  33 20 3a 20 f4 20 22 58  |&. &61143 : . "X|
000059a0  50 52 45 53 44 46 53 5f  53 65 74 44 46 53 53 74  |PRESDFS_SetDFSSt|
000059b0  65 70 22 0d 26 de 29 f4  20 52 25 28 30 29 3d 34  |ep".&.). R%(0)=4|
000059c0  30 20 6f 72 20 38 30 20  66 6f 72 20 2a 53 54 45  |0 or 80 for *STE|
000059d0  50 34 30 2c 20 2a 53 54  45 50 38 30 0d 26 e8 04  |P40, *STEP80.&..|
000059e0  0d 26 f2 05 7f 0d 26 fc  7a c8 99 20 28 73 77 69  |.&....&.z.. (swi|
000059f0  25 20 84 20 32 5e 31 37  29 2c 52 25 28 30 29 2c  |% . 2^17),R%(0),|
00005a00  52 25 28 31 29 2c 52 25  28 32 29 2c 52 25 28 33  |R%(1),R%(2),R%(3|
00005a10  29 2c 52 25 28 34 29 2c  52 25 28 35 29 2c 52 25  |),R%(4),R%(5),R%|
00005a20  28 36 29 2c 52 25 28 37  29 20 b8 20 52 25 28 30  |(6),R%(7) . R%(0|
00005a30  29 2c 52 25 28 31 29 2c  52 25 28 32 29 2c 52 25  |),R%(1),R%(2),R%|
00005a40  28 33 29 2c 52 25 28 34  29 2c 52 25 28 35 29 2c  |(3),R%(4),R%(5),|
00005a50  52 25 28 36 29 2c 52 25  28 37 29 20 3b 20 46 0d  |R%(6),R%(7) ; F.|
00005a60  27 06 04 0d 27 10 05 cb  0d 27 1a 04 0d 27 24 05  |'...'....'...'$.|
00005a70  cc 0d 27 2e 7a c8 99 20  28 73 77 69 25 20 84 20  |..'.z.. (swi% . |
00005a80  32 5e 31 37 29 2c 52 25  28 30 29 2c 52 25 28 31  |2^17),R%(0),R%(1|
00005a90  29 2c 52 25 28 32 29 2c  52 25 28 33 29 2c 52 25  |),R%(2),R%(3),R%|
00005aa0  28 34 29 2c 52 25 28 35  29 2c 52 25 28 36 29 2c  |(4),R%(5),R%(6),|
00005ab0  52 25 28 37 29 20 b8 20  52 25 28 30 29 2c 52 25  |R%(7) . R%(0),R%|
00005ac0  28 31 29 2c 52 25 28 32  29 2c 52 25 28 33 29 2c  |(1),R%(2),R%(3),|
00005ad0  52 25 28 34 29 2c 52 25  28 35 29 2c 52 25 28 36  |R%(4),R%(5),R%(6|
00005ae0  29 2c 52 25 28 37 29 20  3b 20 46 0d 27 38 05 cd  |),R%(7) ; F.'8..|
00005af0  0d 27 42 04 0d 27 4c 0f  e7 20 63 62 3f 33 3c 3e  |.'B..'L.. cb?3<>|
00005b00  30 20 8c 0d 27 56 13 e3  20 49 25 3d 30 20 b8 20  |0 ..'V.. I%=0 . |
00005b10  63 62 3f 33 2d 31 0d 27  60 32 e7 20 28 63 62 3f  |cb?3-1.'`2. (cb?|
00005b20  35 20 80 20 28 31 3c 3c  49 25 29 29 20 3c 3e 20  |5 . (1<<I%)) <> |
00005b30  30 20 8c 20 52 25 28 49  25 29 3d 52 25 28 49 25  |0 . R%(I%)=R%(I%|
00005b40  29 2d 6d 65 6d 6f 72 79  0d 27 6a 16 63 62 21 28  |)-memory.'j.cb!(|
00005b50  39 2b 49 25 2a 34 29 3d  52 25 28 49 25 29 0d 27  |9+I%*4)=R%(I%).'|
00005b60  74 05 ed 0d 27 7e 05 cd  0d 27 88 04 0d 27 92 04  |t...'~...'...'..|
00005b70  0d 27 9c 04 0d 27 a6 24  e7 20 28 46 20 80 20 31  |.'...'.$. (F . 1|
00005b80  29 3c 3e 30 20 80 20 28  73 77 69 25 20 80 20 32  |)<>0 . (swi% . 2|
00005b90  5e 31 37 29 3d 30 20 8c  0d 27 b0 0c 41 25 3d 52  |^17)=0 ..'..A%=R|
00005ba0  25 28 30 29 0d 27 ba 0e  f2 73 77 69 5f 65 72 72  |%(0).'...swi_err|
00005bb0  6f 72 0d 27 c4 05 cc 0d  27 ce 04 0d 27 d8 1c e7  |or.'....'...'...|
00005bc0  20 28 46 20 80 20 31 29  3c 3e 30 20 80 20 63 62  | (F . 1)<>0 . cb|
00005bd0  3f 38 3c 3e 30 20 8c 0d  27 e2 0c 65 72 72 3d 63  |?8<>0 ..'..err=c|
00005be0  62 3f 36 0d 27 ec 12 65  72 72 2b 3d 28 63 62 3f  |b?6.'..err+=(cb?|
00005bf0  37 29 3c 3c 38 0d 27 f6  0f 65 72 72 2b 3d 6d 65  |7)<<8.'..err+=me|
00005c00  6d 6f 72 79 0d 28 00 08  4a 25 3d a3 0d 28 0a 0b  |mory.(..J%=..(..|
00005c10  65 72 72 3f 30 3d 30 0d  28 14 13 e3 20 49 25 3d  |err?0=0.(... I%=|
00005c20  30 20 b8 20 63 62 3f 38  2d 32 0d 28 1e 17 65 72  |0 . cb?8-2.(..er|
00005c30  72 3f 28 49 25 2b 31 29  3d 52 25 28 30 29 3f 49  |r?(I%+1)=R%(0)?I|
00005c40  25 0d 28 28 15 e7 20 65  72 72 3f 49 25 3d 30 20  |%.((.. err?I%=0 |
00005c50  8c 20 4a 25 3d b9 0d 28  32 05 ed 0d 28 3c 1b e7  |. J%=..(2...(<..|
00005c60  20 4a 25 3d a3 20 8c 20  65 72 72 3f 28 63 62 3f  | J%=. . err?(cb?|
00005c70  38 2d 31 29 3d 30 0d 28  46 05 cd 0d 28 50 04 0d  |8-1)=0.(F...(P..|
00005c80  28 5a 21 21 70 63 5f 73  74 6f 72 65 3d 21 70 63  |(Z!!pc_store=!pc|
00005c90  5f 73 74 6f 72 65 2b 28  31 20 3c 3c 20 31 36 29  |_store+(1 << 16)|
00005ca0  0d 28 64 14 3f 66 3d 3f  66 20 80 20 25 31 31 30  |.(d.?f=?f . %110|
00005cb0  30 30 31 31 0d 28 6e 24  e7 20 28 46 20 80 20 31  |0011.(n$. (F . 1|
00005cc0  29 3c 3e 30 20 8c 20 3f  66 3d 3f 66 20 84 20 25  |)<>0 . ?f=?f . %|
00005cd0  30 31 30 30 30 30 30 30  0d 28 78 24 e7 20 28 46  |01000000.(x$. (F|
00005ce0  20 80 20 32 29 3c 3e 30  20 8c 20 3f 66 3d 3f 66  | . 2)<>0 . ?f=?f|
00005cf0  20 84 20 25 30 30 30 30  30 30 30 31 0d 28 82 24  | . %00000001.(.$|
00005d00  e7 20 28 46 20 80 20 34  29 3c 3e 30 20 8c 20 3f  |. (F . 4)<>0 . ?|
00005d10  66 3d 3f 66 20 84 20 25  30 30 30 30 30 30 31 30  |f=?f . %00000010|
00005d20  0d 28 8c 24 e7 20 28 46  20 80 20 38 29 3c 3e 30  |.(.$. (F . 8)<>0|
00005d30  20 8c 20 3f 66 3d 3f 66  20 84 20 25 31 30 30 30  | . ?f=?f . %1000|
00005d40  30 30 30 30 0d 28 96 04  0d 28 a0 05 cd 0d 28 aa  |0000.(...(....(.|
00005d50  04 0d 28 b4 09 c9 20 31  32 3a 0d 28 be 04 0d 28  |..(... 12:.(...(|
00005d60  c8 04 0d 28 d2 05 7f 0d  28 dc 1c f4 50 52 49 4e  |...(....(...PRIN|
00005d70  54 22 62 25 20 3d 20 22  3b 62 25 20 3a 20 51 3d  |T"b% = ";b% : Q=|
00005d80  47 45 54 0d 28 e6 04 0d  28 f0 05 cb 0d 28 fa 04  |GET.(...(....(..|
00005d90  0d 29 04 0a fd 62 25 3d  31 32 0d 29 0e 04 0d 29  |.)...b%=12.)...)|
00005da0  18 36 e7 20 68 61 6e 64  25 3c 3e 30 20 8c 20 c8  |.6. hand%<>0 . .|
00005db0  99 20 22 58 4f 53 5f 46  69 6e 64 22 2c 30 2c 68  |. "XOS_Find",0,h|
00005dc0  61 6e 64 25 20 3a 20 f4  20 43 4c 4f 53 45 23 68  |and% : . CLOSE#h|
00005dd0  61 6e 64 25 0d 29 22 04  0d 29 2c 1a c8 99 20 22  |and%.)"..),... "|
00005de0  4f 53 5f 42 79 74 65 22  2c 32 30 32 2c 46 58 32  |OS_Byte",202,FX2|
00005df0  30 32 0d 29 36 1a c8 99  20 22 4f 53 5f 42 79 74  |02.)6... "OS_Byt|
00005e00  65 22 2c 32 34 37 2c 46  58 32 34 37 0d 29 40 04  |e",247,FX247.)@.|
00005e10  0d 29 4a 32 c8 99 20 22  4f 53 5f 42 79 74 65 22  |.)J2.. "OS_Byte"|
00005e20  2c 31 30 36 2c 31 20 3a  20 f4 20 72 65 6c 69 6e  |,106,1 : . relin|
00005e30  6b 20 70 6f 69 6e 74 65  72 2c 20 73 68 61 70 65  |k pointer, shape|
00005e40  20 31 0d 29 54 04 0d 29  5e 20 2a 53 65 74 20 4b  | 1.)T..)^ *Set K|
00005e50  65 79 24 31 31 20 22 3c  36 35 30 32 45 6d 24 4b  |ey$11 "<6502Em$K|
00005e60  65 79 31 31 3e 22 0d 29  68 20 2a 53 65 74 20 4b  |ey11>".)h *Set K|
00005e70  65 79 24 31 32 20 22 3c  36 35 30 32 45 6d 24 4b  |ey$12 "<6502Em$K|
00005e80  65 79 31 32 3e 22 0d 29  72 04 0d 29 7c 1f c8 99  |ey12>".)r..)|...|
00005e90  20 22 36 35 30 32 5f 52  65 6d 6f 76 65 45 78 69  | "6502_RemoveExi|
00005ea0  74 48 61 6e 64 6c 65 72  22 0d 29 86 04 0d 29 90  |tHandler".)...).|
00005eb0  1c f4 20 52 65 73 74 6f  72 65 20 73 6f 75 6e 64  |.. Restore sound|
00005ec0  20 63 68 61 6e 6e 65 6c  73 0d 29 9a 12 f2 73 6f  | channels.)...so|
00005ed0  75 6e 64 5f 72 65 73 74  6f 72 65 0d 29 a4 04 0d  |und_restore.)...|
00005ee0  29 ae 11 e7 20 73 70 72  69 74 65 3c 3e 30 20 8c  |)... sprite<>0 .|
00005ef0  0d 29 b8 18 73 70 72 69  74 65 21 30 3d 38 30 2a  |.)..sprite!0=80*|
00005f00  31 30 32 34 2b 32 35 36  0d 29 c2 0f 73 70 72 69  |1024+256.)..spri|
00005f10  74 65 21 38 3d 31 36 0d  29 cc 22 c8 99 20 22 58  |te!8=16.).".. "X|
00005f20  4f 53 5f 53 70 72 69 74  65 4f 70 22 2c 32 35 36  |OS_SpriteOp",256|
00005f30  2b 39 2c 73 70 72 69 74  65 0d 29 d6 3f c8 99 20  |+9,sprite.).?.. |
00005f40  22 58 4f 53 5f 53 70 72  69 74 65 4f 70 22 2c 32  |"XOS_SpriteOp",2|
00005f50  35 36 2b 31 36 2c 73 70  72 69 74 65 2c 22 42 42  |56+16,sprite,"BB|
00005f60  43 53 63 72 65 65 6e 22  2c 31 2c 30 2c 30 2c 31  |CScreen",1,0,0,1|
00005f70  32 37 39 2c 31 30 32 33  0d 29 e0 05 cd 0d 29 ea  |279,1023.)....).|
00005f80  04 0d 29 f4 1f c8 99 20  22 57 69 6d 70 5f 53 65  |..).... "Wimp_Se|
00005f90  74 4d 6f 64 65 22 2c 77  69 6d 70 5f 6d 6f 64 65  |tMode",wimp_mode|
00005fa0  0d 29 fe 04 0d 2a 08 0b  2a 46 58 31 35 2c 30 0d  |.)...*..*FX15,0.|
00005fb0  2a 12 04 0d 2a 1c 2e e7  20 64 66 73 73 75 70 70  |*...*... dfssupp|
00005fc0  6f 72 74 20 c8 99 20 22  49 6d 61 67 65 44 46 53  |ort .. "ImageDFS|
00005fd0  5f 4c 65 61 76 69 6e 67  45 6d 75 6c 61 74 6f 72  |_LeavingEmulator|
00005fe0  22 0d 2a 26 04 0d 2a 30  05 e1 0d 2a 3a 04 0d 2a  |".*&..*0...*:..*|
00005ff0  44 10 dd a4 6d 61 78 28  41 25 2c 42 25 29 0d 2a  |D...max(A%,B%).*|
00006000  4e 17 e7 20 41 25 3e 42  25 20 8c 20 3d 41 25 20  |N.. A%>B% . =A% |
00006010  8b 20 3d 42 25 0d 2a 58  06 3d 30 0d 2a 62 0c dd  |. =B%.*X.=0.*b..|
00006020  f2 70 75 6c 6c 70 63 0d  2a 6c 0f 73 70 3f 33 3d  |.pullpc.*l.sp?3=|
00006030  73 70 3f 33 2b 31 0d 2a  76 22 70 63 5f 73 74 6f  |sp?3+1.*v"pc_sto|
00006040  72 65 3f 32 3d 3f 28 6d  65 6d 6f 72 79 2b 26 31  |re?2=?(memory+&1|
00006050  30 30 2b 73 70 3f 33 29  0d 2a 80 0f 73 70 3f 33  |00+sp?3).*..sp?3|
00006060  3d 73 70 3f 33 2b 31 0d  2a 8a 22 70 63 5f 73 74  |=sp?3+1.*."pc_st|
00006070  6f 72 65 3f 33 3d 3f 28  6d 65 6d 6f 72 79 2b 26  |ore?3=?(memory+&|
00006080  31 30 30 2b 73 70 3f 33  29 0d 2a 94 05 e1 0d 2a  |100+sp?3).*....*|
00006090  9e 04 0d 2a a8 0e dd f2  61 73 73 65 6d 62 6c 65  |...*....assemble|
000060a0  0d 2a b2 13 61 3d 6d 65  6d 6f 72 79 2d 26 31 30  |.*..a=memory-&10|
000060b0  30 2b 30 0d 2a bc 13 61  3d 6d 65 6d 6f 72 79 2d  |0+0.*..a=memory-|
000060c0  26 31 30 30 2b 30 0d 2a  c6 13 78 3d 6d 65 6d 6f  |&100+0.*..x=memo|
000060d0  72 79 2d 26 31 30 30 2b  34 0d 2a d0 13 79 3d 6d  |ry-&100+4.*..y=m|
000060e0  65 6d 6f 72 79 2d 26 31  30 30 2b 38 0d 2a da 14  |emory-&100+8.*..|
000060f0  66 3d 6d 65 6d 6f 72 79  2d 26 31 30 30 2b 31 32  |f=memory-&100+12|
00006100  0d 2a e4 15 73 70 3d 6d  65 6d 6f 72 79 2d 26 31  |.*..sp=memory-&1|
00006110  30 30 2b 31 36 0d 2a ee  1b 70 63 5f 73 74 6f 72  |00+16.*..pc_stor|
00006120  65 3d 6d 65 6d 6f 72 79  2d 26 31 30 30 2b 32 30  |e=memory-&100+20|
00006130  0d 2a f8 16 54 31 52 3d  6d 65 6d 6f 72 79 2d 26  |.*..T1R=memory-&|
00006140  31 30 30 2b 33 32 0d 2b  02 16 54 32 52 3d 6d 65  |100+32.+..T2R=me|
00006150  6d 6f 72 79 2d 26 31 30  30 2b 34 30 0d 2b 0c 16  |mory-&100+40.+..|
00006160  54 33 52 3d 6d 65 6d 6f  72 79 2d 26 31 30 30 2b  |T3R=memory-&100+|
00006170  34 38 0d 2b 16 16 54 34  52 3d 6d 65 6d 6f 72 79  |48.+..T4R=memory|
00006180  2d 26 31 30 30 2b 35 36  0d 2b 20 1a 73 63 72 65  |-&100+56.+ .scre|
00006190  65 6e 52 3d 6d 65 6d 6f  72 79 2d 26 31 30 30 2b  |enR=memory-&100+|
000061a0  36 34 0d 2b 2a 16 69 66  72 3d 6d 65 6d 6f 72 79  |64.+*.ifr=memory|
000061b0  2d 26 31 30 30 2b 37 36  0d 2b 34 16 69 65 72 3d  |-&100+76.+4.ier=|
000061c0  6d 65 6d 6f 72 79 2d 26  31 30 30 2b 37 37 0d 2b  |memory-&100+77.+|
000061d0  3e 17 69 66 72 32 3d 6d  65 6d 6f 72 79 2d 26 31  |>.ifr2=memory-&1|
000061e0  30 30 2b 37 38 0d 2b 48  17 69 65 72 32 3d 6d 65  |00+78.+H.ier2=me|
000061f0  6d 6f 72 79 2d 26 31 30  30 2b 37 39 0d 2b 52 16  |mory-&100+79.+R.|
00006200  72 6f 6d 3d 6d 65 6d 6f  72 79 2d 26 31 30 30 2b  |rom=memory-&100+|
00006210  39 36 0d 2b 5c 04 0d 2b  66 19 52 4f 4d 53 45 4c  |96.+\..+f.ROMSEL|
00006220  3d 6d 65 6d 6f 72 79 2d  26 31 30 30 2b 39 32 0d  |=memory-&100+92.|
00006230  2b 70 19 72 6f 6d 73 65  6c 3d 6d 65 6d 6f 72 79  |+p.romsel=memory|
00006240  2d 26 31 30 30 2b 39 36  0d 2b 7a 1b 50 61 6c 65  |-&100+96.+z.Pale|
00006250  74 74 65 3d 6d 65 6d 6f  72 79 2d 26 31 30 30 2b  |tte=memory-&100+|
00006260  31 36 34 0d 2b 84 1a 52  4f 4d 52 41 4d 3d 6d 65  |164.+..ROMRAM=me|
00006270  6d 6f 72 79 2d 26 31 30  30 2b 31 30 30 0d 2b 8e  |mory-&100+100.+.|
00006280  28 70 61 74 63 68 5f 6f  6e 3d 6d 65 6d 6f 72 79  |(patch_on=memory|
00006290  2d 26 31 30 30 2b 31 37  36 3a 21 70 61 74 63 68  |-&100+176:!patch|
000062a0  5f 6f 6e 3d 30 0d 2b 98  1c 6c 61 73 74 6d 6f 64  |_on=0.+..lastmod|
000062b0  65 3d 6d 65 6d 6f 72 79  2d 26 31 30 30 2b 31 37  |e=memory-&100+17|
000062c0  38 0d 2b a2 18 66 65 31  30 3d 6d 65 6d 6f 72 79  |8.+..fe10=memory|
000062d0  2d 26 31 30 30 2b 31 37  39 0d 2b ac 1f 74 61 70  |-&100+179.+..tap|
000062e0  65 5f 68 61 6e 64 6c 65  3d 6d 65 6d 6f 72 79 2d  |e_handle=memory-|
000062f0  26 31 30 30 2b 31 31 37  0d 2b b6 1e 74 61 70 65  |&100+117.+..tape|
00006300  5f 63 6f 75 6e 74 3d 6d  65 6d 6f 72 79 2d 26 31  |_count=memory-&1|
00006310  30 30 2b 31 38 30 0d 2b  c0 1a 41 43 43 43 4f 4e  |00+180.+..ACCCON|
00006320  3d 6d 65 6d 6f 72 79 2d  26 31 30 30 2b 31 37 32  |=memory-&100+172|
00006330  0d 2b ca 1a 45 6c 61 74  63 68 3d 6d 65 6d 6f 72  |.+..Elatch=memor|
00006340  79 2d 26 31 30 30 2b 31  38 38 0d 2b d4 18 45 69  |y-&100+188.+..Ei|
00006350  66 72 3d 6d 65 6d 6f 72  79 2d 26 31 30 30 2b 31  |fr=memory-&100+1|
00006360  38 39 0d 2b de 18 45 69  65 72 3d 6d 65 6d 6f 72  |89.+..Eier=memor|
00006370  79 2d 26 31 30 30 2b 31  39 30 0d 2b e8 1a 52 4f  |y-&100+190.+..RO|
00006380  4d 69 6e 74 3d 6d 65 6d  6f 72 79 2d 26 31 30 30  |Mint=memory-&100|
00006390  2b 31 39 31 0d 2b f2 1d  73 70 65 65 64 5f 6c 6f  |+191.+..speed_lo|
000063a0  63 3d 6d 65 6d 6f 72 79  2d 26 31 30 30 2b 31 39  |c=memory-&100+19|
000063b0  36 0d 2b fc 04 0d 2c 06  0b 50 25 3d 63 6f 64 65  |6.+...,..P%=code|
000063c0  0d 2c 10 09 5b 4f 50 54  32 0d 2c 1a 07 2e 4f 61  |.,..[OPT2.,...Oa|
000063d0  0d 2c 24 0a 45 51 55 44  20 30 0d 2c 2e 07 2e 4f  |.,$.EQUD 0.,...O|
000063e0  78 0d 2c 38 0a 45 51 55  44 20 30 0d 2c 42 07 2e  |x.,8.EQUD 0.,B..|
000063f0  4f 79 0d 2c 4c 0a 45 51  55 44 20 30 0d 2c 56 07  |Oy.,L.EQUD 0.,V.|
00006400  2e 4f 66 0d 2c 60 0a 45  51 55 44 20 30 0d 2c 6a  |.Of.,`.EQUD 0.,j|
00006410  08 2e 4f 73 70 0d 2c 74  0a 45 51 55 44 20 30 0d  |..Osp.,t.EQUD 0.|
00006420  2c 7e 0e 2e 4f 70 63 5f  73 74 6f 72 65 0d 2c 88  |,~..Opc_store.,.|
00006430  0a 45 51 55 44 20 30 0d  2c 92 11 2e 73 74 61 72  |.EQUD 0.,...star|
00006440  74 5f 6f 66 66 73 65 74  0d 2c 9c 0a 45 51 55 44  |t_offset.,..EQUD|
00006450  20 30 0d 2c a6 0a 2e 74  72 61 63 65 0d 2c b0 0a  | 0.,...trace.,..|
00006460  45 51 55 44 20 30 0d 2c  ba 0b 2e 74 72 61 63 65  |EQUD 0.,...trace|
00006470  32 0d 2c c4 0a 45 51 55  44 20 30 0d 2c ce 0e 2e  |2.,..EQUD 0.,...|
00006480  69 6e 69 74 5f 61 64 64  72 0d 2c d8 0a 45 51 55  |init_addr.,..EQU|
00006490  44 20 30 0d 2c e2 0d 2e  63 72 74 5f 61 64 64 72  |D 0.,...crt_addr|
000064a0  0d 2c ec 0a 45 51 55 44  20 30 0d 2c f6 0c 2e 54  |.,..EQUD 0.,...T|
000064b0  31 5f 61 64 64 72 0d 2d  00 0a 45 51 55 44 20 30  |1_addr.-..EQUD 0|
000064c0  0d 2d 0a 0d 2e 69 66 72  5f 61 64 64 72 0d 2d 14  |.-...ifr_addr.-.|
000064d0  0a 45 51 55 44 20 30 0d  2d 1e 18 2e 63 6f 6c 75  |.EQUD 0.-...colu|
000064e0  6d 6e 5f 63 6f 75 6e 74  65 72 5f 61 64 64 72 0d  |mn_counter_addr.|
000064f0  2d 28 0a 45 51 55 44 20  30 0d 2d 32 10 2e 52 4f  |-(.EQUD 0.-2..RO|
00006500  4d 53 45 4c 5f 61 64 64  72 0d 2d 3c 0a 45 51 55  |MSEL_addr.-<.EQU|
00006510  44 20 30 0d 2d 46 11 2e  50 61 6c 65 74 74 65 5f  |D 0.-F..Palette_|
00006520  61 64 64 72 0d 2d 50 0a  45 51 55 44 20 30 0d 2d  |addr.-P.EQUD 0.-|
00006530  5a 0f 2e 73 70 65 65 64  5f 61 64 64 72 0d 2d 64  |Z..speed_addr.-d|
00006540  0a 45 51 55 44 20 30 0d  2d 6e 0f 2e 65 6c 69 74  |.EQUD 0.-n..elit|
00006550  65 5f 61 64 64 72 0d 2d  78 0a 45 51 55 44 20 30  |e_addr.-x.EQUD 0|
00006560  0d 2d 82 28 2e 6f 70 63  6f 5f 61 64 64 72 20 20  |.-.(.opco_addr  |
00006570  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00006580  20 20 45 51 55 44 20 30  0d 2d 8c 28 2e 62 63 64  |  EQUD 0.-.(.bcd|
00006590  5f 61 64 64 72 20 20 20  20 20 20 20 20 20 20 20  |_addr           |
000065a0  20 20 20 20 20 20 20 20  20 20 45 51 55 44 20 30  |          EQUD 0|
000065b0  0d 2d 96 28 2e 73 68 65  69 6c 61 5f 77 72 69 74  |.-.(.sheila_writ|
000065c0  65 74 61 62 5f 61 64 64  72 20 20 20 20 20 20 20  |etab_addr       |
000065d0  20 20 45 51 55 44 20 30  0d 2d a0 28 2e 73 68 65  |  EQUD 0.-.(.she|
000065e0  69 6c 61 5f 72 65 61 64  74 61 62 5f 61 64 64 72  |ila_readtab_addr|
000065f0  20 20 20 20 20 20 20 20  20 20 45 51 55 44 20 30  |          EQUD 0|
00006600  0d 2d aa 28 2e 73 6f 75  6e 64 5f 76 65 63 74 6f  |.-.(.sound_vecto|
00006610  72 73 5f 61 64 64 72 20  20 20 20 20 20 20 20 20  |rs_addr         |
00006620  20 20 45 51 55 44 20 30  0d 2d b4 28 2e 70 61 74  |  EQUD 0.-.(.pat|
00006630  63 68 5f 61 64 64 72 20  20 20 20 20 20 20 20 20  |ch_addr         |
00006640  20 20 20 20 20 20 20 20  20 20 45 51 55 44 20 30  |          EQUD 0|
00006650  0d 2d be 05 5d 0d 2d c8  05 e1 0d 2d d2 04 0d 2d  |.-..].-....-...-|
00006660  dc 09 dd f2 72 74 73 0d  2d e6 0f 73 70 3f 33 3d  |....rts.-..sp?3=|
00006670  73 70 3f 33 2b 31 0d 2d  f0 21 70 63 5f 73 74 6f  |sp?3+1.-.!pc_sto|
00006680  72 65 3f 32 3d 6d 65 6d  6f 72 79 3f 28 26 31 30  |re?2=memory?(&10|
00006690  30 2b 73 70 3f 33 29 0d  2d fa 0f 73 70 3f 33 3d  |0+sp?3).-..sp?3=|
000066a0  73 70 3f 33 2b 31 0d 2e  04 21 70 63 5f 73 74 6f  |sp?3+1...!pc_sto|
000066b0  72 65 3f 33 3d 6d 65 6d  6f 72 79 3f 28 26 31 30  |re?3=memory?(&10|
000066c0  30 2b 73 70 3f 33 29 0d  2e 0e 21 21 70 63 5f 73  |0+sp?3)...!!pc_s|
000066d0  74 6f 72 65 3d 21 70 63  5f 73 74 6f 72 65 2b 28  |tore=!pc_store+(|
000066e0  31 20 3c 3c 20 31 36 29  0d 2e 18 1a f4 50 52 49  |1 << 16).....PRI|
000066f0  4e 54 7e 21 70 63 5f 73  74 6f 72 65 3a 51 3d 47  |NT~!pc_store:Q=G|
00006700  45 54 0d 2e 22 05 e1 0d  2e 2c 21 21 70 63 5f 73  |ET.."....,!!pc_s|
00006710  74 6f 72 65 3d 26 38 30  30 34 20 3c 3c 20 31 36  |tore=&8004 << 16|
00006720  20 3a 20 f4 20 52 54 53  0d 2e 36 04 0d 2e 40 23  | : . RTS..6...@#|
00006730  f4 70 63 5f 73 74 6f 72  65 3f 32 3d 3f 28 73 70  |.pc_store?2=?(sp|
00006740  3f 33 2b 26 31 30 31 2b  6d 65 6d 6f 72 79 29 0d  |?3+&101+memory).|
00006750  2e 4a 23 f4 70 63 5f 73  74 6f 72 65 3f 33 3d 3f  |.J#.pc_store?3=?|
00006760  28 73 70 3f 33 2b 26 31  30 32 2b 6d 65 6d 6f 72  |(sp?3+&102+memor|
00006770  79 29 0d 2e 54 12 f4 73  70 3f 33 3d 73 70 3f 33  |y)..T..sp?3=sp?3|
00006780  20 2b 20 32 0d 2e 5e 05  e1 0d 2e 68 04 0d 2e 72  | + 2..^....h...r|
00006790  0c dd f2 6f 73 66 69 6c  65 0d 2e 7c 1c f4 50 52  |...osfile..|..PR|
000067a0  49 4e 54 22 4f 53 46 49  4c 45 20 22 61 3f 33 3a  |INT"OSFILE "a?3:|
000067b0  51 3d 47 45 54 0d 2e 86  1d 61 64 64 72 3d 6d 65  |Q=GET....addr=me|
000067c0  6d 6f 72 79 2b 78 3f 33  2b 28 79 3f 33 29 2a 32  |mory+x?3+(y?3)*2|
000067d0  35 36 0d 2e 90 0c c8 8e  20 61 3f 33 20 ca 0d 2e  |56...... a?3 ...|
000067e0  9a 07 c9 20 30 0d 2e a4  0a 61 25 3d 61 3f 33 0d  |... 0....a%=a?3.|
000067f0  2e ae 29 62 24 3d a4 61  64 64 70 61 74 68 28 24  |..)b$=.addpath($|
00006800  28 a4 61 64 64 72 28 61  64 64 72 21 30 20 80 20  |(.addr(addr!0 . |
00006810  26 46 46 46 46 29 29 29  0d 2e b8 0d 63 25 3d 61  |&FFFF)))....c%=a|
00006820  64 64 72 21 32 0d 2e c2  0d 64 25 3d 61 64 64 72  |ddr!2....d%=addr|
00006830  21 36 0d 2e cc 1f 65 25  3d a4 61 64 64 72 28 28  |!6....e%=.addr((|
00006840  61 64 64 72 21 31 30 20  80 20 26 46 46 46 46 29  |addr!10 . &FFFF)|
00006850  29 0d 2e d6 1f 66 25 3d  a4 61 64 64 72 28 28 61  |)....f%=.addr((a|
00006860  64 64 72 21 31 34 20 80  20 26 46 46 46 46 29 29  |ddr!14 . &FFFF))|
00006870  0d 2e e0 1f f4 50 52 49  4e 54 7e 61 25 2c 62 24  |.....PRINT~a%,b$|
00006880  2c 7e 63 25 2c 7e 64 25  2c 65 25 2c 7e 66 25 0d  |,~c%,~d%,e%,~f%.|
00006890  2e ea 2c c8 99 20 22 58  4f 53 5f 46 69 6c 65 22  |..,.. "XOS_File"|
000068a0  2c 61 25 2c 62 24 2c 63  25 2c 64 25 2c 65 25 2c  |,a%,b$,c%,d%,e%,|
000068b0  66 25 20 b8 20 41 25 20  3b 20 46 0d 2e f4 23 e7  |f% . A% ; F...#.|
000068c0  20 28 46 20 80 20 31 29  3d 30 20 8c 20 f2 72 74  | (F . 1)=0 . .rt|
000068d0  73 20 8b 20 f2 73 77 69  5f 65 72 72 6f 72 0d 2e  |s . .swi_error..|
000068e0  fe 07 c9 20 35 0d 2f 08  1f 62 24 3d 24 28 a4 61  |... 5./..b$=$(.a|
000068f0  64 64 72 28 61 64 64 72  21 30 20 80 20 26 46 46  |ddr(addr!0 . &FF|
00006900  46 46 29 29 0d 2f 12 41  c8 99 20 22 58 4f 53 5f  |FF))./.A.. "XOS_|
00006910  46 69 6c 65 22 2c 31 33  2c a4 61 64 64 5f 28 62  |File",13,.add_(b|
00006920  24 29 2c 2c 2c a4 5f 70  61 74 68 28 62 24 29 20  |$),,,._path(b$) |
00006930  b8 20 41 25 2c 2c 63 25  2c 64 25 2c 65 25 2c 66  |. A%,,c%,d%,e%,f|
00006940  25 20 3b 20 46 0d 2f 1c  11 e7 20 28 46 20 80 20  |% ; F./... (F . |
00006950  31 29 3d 31 20 8c 0d 2f  26 0e f2 73 77 69 5f 65  |1)=1 ../&..swi_e|
00006960  72 72 6f 72 0d 2f 30 05  cc 0d 2f 3a 0a 61 3f 33  |rror./0.../:.a?3|
00006970  3d 41 25 0d 2f 44 0d 61  64 64 72 21 32 3d 63 25  |=A%./D.addr!2=c%|
00006980  0d 2f 4e 0d 61 64 64 72  21 36 3d 64 25 0d 2f 58  |./N.addr!6=d%./X|
00006990  0e 61 64 64 72 21 31 30  3d 65 25 0d 2f 62 0e 61  |.addr!10=e%./b.a|
000069a0  64 64 72 21 31 34 3d 66  25 0d 2f 6c 08 f2 72 74  |ddr!14=f%./l..rt|
000069b0  73 0d 2f 76 05 cd 0d 2f  80 07 c9 20 36 0d 2f 8a  |s./v.../... 6./.|
000069c0  1f 62 24 3d 24 28 a4 61  64 64 72 28 61 64 64 72  |.b$=$(.addr(addr|
000069d0  21 30 20 80 20 26 46 46  46 46 29 29 0d 2f 94 36  |!0 . &FFFF))./.6|
000069e0  c8 99 20 22 58 4f 53 5f  46 69 6c 65 22 2c 36 2c  |.. "XOS_File",6,|
000069f0  a4 61 64 64 70 61 74 68  28 62 24 29 20 b8 20 41  |.addpath(b$) . A|
00006a00  25 2c 2c 63 25 2c 64 25  2c 65 25 2c 66 25 20 3b  |%,,c%,d%,e%,f% ;|
00006a10  20 46 0d 2f 9e 11 e7 20  28 46 20 80 20 31 29 3d  | F./... (F . 1)=|
00006a20  31 20 8c 0d 2f a8 0e f2  73 77 69 5f 65 72 72 6f  |1 ../...swi_erro|
00006a30  72 0d 2f b2 05 cc 0d 2f  bc 0a 61 3f 33 3d 41 25  |r./..../..a?3=A%|
00006a40  0d 2f c6 0d 61 64 64 72  21 32 3d 63 25 0d 2f d0  |./..addr!2=c%./.|
00006a50  0d 61 64 64 72 21 36 3d  64 25 0d 2f da 0e 61 64  |.addr!6=d%./..ad|
00006a60  64 72 21 31 30 3d 65 25  0d 2f e4 0e 61 64 64 72  |dr!10=e%./..addr|
00006a70  21 31 34 3d 66 25 0d 2f  ee 08 f2 72 74 73 0d 2f  |!14=f%./...rts./|
00006a80  f8 05 cd 0d 30 02 04 0d  30 0c 09 c9 20 32 35 35  |....0...0... 255|
00006a90  0d 30 16 0a 61 25 3d 61  3f 33 0d 30 20 1f 62 24  |.0..a%=a?3.0 .b$|
00006aa0  3d 24 28 a4 61 64 64 72  28 61 64 64 72 21 30 20  |=$(.addr(addr!0 |
00006ab0  80 20 26 46 46 46 46 29  29 0d 30 2a 21 f4 42 25  |. &FFFF)).0*!.B%|
00006ac0  3d 28 61 64 64 72 21 30  20 41 4e 44 20 26 46 46  |=(addr!0 AND &FF|
00006ad0  46 46 29 2b 6d 65 6d 6f  72 79 0d 30 34 1c 63 25  |FF)+memory.04.c%|
00006ae0  3d a4 61 64 64 72 28 61  64 64 72 21 32 20 80 20  |=.addr(addr!2 . |
00006af0  26 46 46 46 46 29 0d 30  3e 31 e7 20 28 61 64 64  |&FFFF).0>1. (add|
00006b00  72 21 32 20 80 20 26 46  46 46 46 30 30 30 30 29  |r!2 . &FFFF0000)|
00006b10  3d 26 46 46 46 45 30 30  30 30 20 8c 20 63 25 2d  |=&FFFE0000 . c%-|
00006b20  3d 26 31 33 30 30 30 0d  30 48 0d 64 25 3d 61 64  |=&13000.0H.d%=ad|
00006b30  64 72 3f 36 0d 30 52 59  e7 20 64 25 3c 3e 30 20  |dr?6.0RY. d%<>0 |
00006b40  8c 20 c8 99 20 22 58 4f  53 5f 46 69 6c 65 22 2c  |. .. "XOS_File",|
00006b50  31 33 2c a4 61 64 64 5f  28 62 24 29 2c 2c 2c a4  |13,.add_(b$),,,.|
00006b60  5f 70 61 74 68 28 62 24  29 20 b8 20 2c 2c 63 25  |_path(b$) . ,,c%|
00006b70  3a 20 64 25 3d 30 20 3a  20 63 25 3d a4 61 64 64  |: d%=0 : c%=.add|
00006b80  72 28 63 25 20 80 20 26  46 46 46 46 29 0d 30 5c  |r(c% . &FFFF).0\|
00006b90  39 c8 99 20 22 58 4f 53  5f 46 69 6c 65 22 2c 31  |9.. "XOS_File",1|
00006ba0  33 2c a4 61 64 64 5f 28  62 24 29 2c 2c 2c a4 5f  |3,.add_(b$),,,._|
00006bb0  70 61 74 68 28 62 24 29  20 b8 20 2c 2c 2c 2c 6c  |path(b$) . ,,,,l|
00006bc0  65 6e 67 74 68 25 0d 30  66 31 e7 20 63 25 2b 6c  |ength%.0f1. c%+l|
00006bd0  65 6e 67 74 68 25 3e 6d  65 6d 6f 72 79 2b 26 38  |ength%>memory+&8|
00006be0  30 30 30 20 80 20 63 25  3c 6d 65 6d 6f 72 79 2b  |000 . c%<memory+|
00006bf0  26 38 30 30 30 20 8c 0d  30 70 1b 6c 65 6e 67 74  |&8000 ..0p.lengt|
00006c00  68 25 3d 6d 65 6d 6f 72  79 2b 26 37 46 46 46 2d  |h%=memory+&7FFF-|
00006c10  63 25 0d 30 7a 33 c8 99  20 22 58 4f 53 5f 46 69  |c%.0z3.. "XOS_Fi|
00006c20  6e 64 22 2c 26 34 44 2c  a4 61 64 64 5f 28 62 24  |nd",&4D,.add_(b$|
00006c30  29 2c a4 5f 70 61 74 68  28 62 24 29 20 b8 20 41  |),._path(b$) . A|
00006c40  25 20 3b 20 46 0d 30 84  54 e7 20 28 46 20 80 20  |% ; F.0.T. (F . |
00006c50  31 29 3d 30 20 8c 20 c8  99 20 22 58 4f 53 5f 47  |1)=0 . .. "XOS_G|
00006c60  42 50 42 22 2c 34 2c 41  25 2c 63 25 2c 6c 65 6e  |BPB",4,A%,c%,len|
00006c70  67 74 68 25 3a c8 99 20  22 58 4f 53 5f 46 69 6e  |gth%:.. "XOS_Fin|
00006c80  64 22 2c 30 2c 41 25 3a  f2 72 74 73 20 8b 20 f2  |d",0,A%:.rts . .|
00006c90  73 77 69 5f 65 72 72 6f  72 0d 30 8e 05 cc 0d 30  |swi_error.0....0|
00006ca0  98 44 c8 99 20 22 58 4f  53 5f 46 69 6c 65 22 2c  |.D.. "XOS_File",|
00006cb0  31 32 2c a4 61 64 64 5f  28 62 24 29 2c 63 25 2c  |12,.add_(b$),c%,|
00006cc0  30 2c a4 5f 70 61 74 68  28 62 24 29 20 b8 20 41  |0,._path(b$) . A|
00006cd0  25 2c 2c 63 25 2c 64 25  2c 65 25 2c 66 25 20 3b  |%,,c%,d%,e%,f% ;|
00006ce0  20 46 0d 30 a2 0a 61 3f  33 3d 41 25 0d 30 ac 0d  | F.0..a?3=A%.0..|
00006cf0  61 64 64 72 21 32 3d 63  25 0d 30 b6 0d 61 64 64  |addr!2=c%.0..add|
00006d00  72 21 36 3d 64 25 0d 30  c0 0e 61 64 64 72 21 31  |r!6=d%.0..addr!1|
00006d10  30 3d 65 25 0d 30 ca 0e  61 64 64 72 21 31 34 3d  |0=e%.0..addr!14=|
00006d20  66 25 0d 30 d4 23 e7 20  28 46 20 80 20 31 29 3d  |f%.0.#. (F . 1)=|
00006d30  30 20 8c 20 f2 72 74 73  20 8b 20 f2 73 77 69 5f  |0 . .rts . .swi_|
00006d40  65 72 72 6f 72 0d 30 de  05 cd 0d 30 e8 28 f4 50  |error.0....0.(.P|
00006d50  52 49 4e 54 7e 61 25 2c  62 24 2c 7e 63 25 2c 7e  |RINT~a%,b$,~c%,~|
00006d60  64 25 2c 7e 6d 65 6d 6f  72 79 20 3a 20 51 3d 47  |d%,~memory : Q=G|
00006d70  45 54 0d 30 f2 49 f4 53  59 53 20 22 58 4f 53 5f  |ET.0.I.SYS "XOS_|
00006d80  46 69 6c 65 22 2c 31 32  2c 46 4e 61 64 64 5f 28  |File",12,FNadd_(|
00006d90  62 24 29 2c 63 25 2c 30  2c 46 4e 5f 70 61 74 68  |b$),c%,0,FN_path|
00006da0  28 62 24 29 20 54 4f 20  41 25 2c 2c 63 25 2c 64  |(b$) TO A%,,c%,d|
00006db0  25 2c 65 25 2c 66 25 20  3b 20 46 0d 30 fc 09 61  |%,e%,f% ; F.0..a|
00006dc0  3f 33 3d 31 0d 31 06 0b  f4 61 3f 33 3d 41 25 0d  |?3=1.1...a?3=A%.|
00006dd0  31 10 0e f4 61 64 64 72  21 32 3d 63 25 0d 31 1a  |1...addr!2=c%.1.|
00006de0  0e f4 61 64 64 72 21 36  3d 64 25 0d 31 24 0f f4  |..addr!6=d%.1$..|
00006df0  61 64 64 72 21 31 30 3d  65 25 0d 31 2e 0f f4 61  |addr!10=e%.1...a|
00006e00  64 64 72 21 31 34 3d 66  25 0d 31 38 33 f4 49 46  |ddr!14=f%.183.IF|
00006e10  20 28 46 20 41 4e 44 20  31 29 3d 30 20 54 48 45  | (F AND 1)=0 THE|
00006e20  4e 20 50 52 4f 43 72 74  73 20 45 4c 53 45 20 50  |N PROCrts ELSE P|
00006e30  52 4f 43 73 77 69 5f 65  72 72 6f 72 0d 31 42 1c  |ROCswi_error.1B.|
00006e40  f4 50 52 49 4e 54 7e 21  70 63 5f 73 74 6f 72 65  |.PRINT~!pc_store|
00006e50  20 3a 20 51 3d 47 45 54  0d 31 4c 05 7f 0d 31 56  | : Q=GET.1L...1V|
00006e60  18 f1 22 4f 53 46 49 4c  45 20 22 3b 61 3f 33 20  |.."OSFILE ";a?3 |
00006e70  3a 20 51 3d a5 0d 31 60  05 cb 0d 31 6a 05 e1 0d  |: Q=..1`...1j...|
00006e80  31 74 04 0d 31 7e 0f dd  f2 73 77 69 5f 65 72 72  |1t..1~...swi_err|
00006e90  6f 72 0d 31 88 07 ea 41  24 0d 31 92 09 41 24 3d  |or.1...A$.1..A$=|
00006ea0  22 22 0d 31 9c 10 e3 20  49 25 3d 30 20 b8 20 32  |"".1... I%=0 . 2|
00006eb0  35 33 0d 31 a6 3a f4 49  46 20 41 25 3f 49 25 3d  |53.1.:.IF A%?I%=|
00006ec0  30 20 54 48 45 4e 20 49  25 3d 32 36 30 20 45 4c  |0 THEN I%=260 EL|
00006ed0  53 45 20 41 24 3d 41 24  2b 43 48 52 24 28 41 25  |SE A$=A$+CHR$(A%|
00006ee0  3f 49 25 29 3a 50 52 49  4e 54 41 24 0d 31 b0 1e  |?I%):PRINTA$.1..|
00006ef0  6d 65 6d 6f 72 79 3f 28  26 31 30 32 2b 49 25 29  |memory?(&102+I%)|
00006f00  3d 41 25 3f 28 49 25 2b  34 29 0d 31 ba 1a e7 20  |=A%?(I%+4).1... |
00006f10  41 25 3f 28 49 25 2b 34  29 3d 30 20 8c 20 49 25  |A%?(I%+4)=0 . I%|
00006f20  3d 32 35 33 0d 31 c4 05  ed 0d 31 ce 11 f4 41 24  |=253.1....1...A$|
00006f30  3d 41 24 2b 43 48 52 24  31 33 0d 31 d8 11 6d 65  |=A$+CHR$13.1..me|
00006f40  6d 6f 72 79 3f 26 31 30  30 3d 30 0d 31 e2 13 6d  |mory?&100=0.1..m|
00006f50  65 6d 6f 72 79 3f 26 31  30 31 3d 3f 41 25 0d 31  |emory?&101=?A%.1|
00006f60  ec 16 f4 24 28 6d 65 6d  6f 72 79 2b 26 31 30 32  |...$(memory+&102|
00006f70  29 3d 41 24 0d 31 f6 18  21 70 63 5f 73 74 6f 72  |)=A$.1..!pc_stor|
00006f80  65 3d 26 31 30 30 20 3c  3c 20 31 36 0d 32 00 05  |e=&100 << 16.2..|
00006f90  e1 0d 32 0a 04 0d 32 14  10 dd f2 62 72 6b 28 41  |..2...2....brk(A|
00006fa0  25 2c 41 24 29 0d 32 1e  0c 41 24 3d 41 24 2b bd  |%,A$).2..A$=A$+.|
00006fb0  30 0d 32 28 12 e3 20 49  25 3d 30 20 b8 20 a9 41  |0.2(.. I%=0 . .A|
00006fc0  24 2d 31 0d 32 32 21 6d  65 6d 6f 72 79 3f 28 26  |$-1.22!memory?(&|
00006fd0  31 30 32 2b 49 25 29 3d  97 c1 41 24 2c 49 25 2b  |102+I%)=..A$,I%+|
00006fe0  31 2c 31 29 0d 32 3c 05  ed 0d 32 46 11 6d 65 6d  |1,1).2<...2F.mem|
00006ff0  6f 72 79 3f 26 31 30 30  3d 30 0d 32 50 12 6d 65  |ory?&100=0.2P.me|
00007000  6d 6f 72 79 3f 26 31 30  31 3d 41 25 0d 32 5a 18  |mory?&101=A%.2Z.|
00007010  21 70 63 5f 73 74 6f 72  65 3d 26 31 30 30 20 3c  |!pc_store=&100 <|
00007020  3c 20 31 36 0d 32 64 05  e1 0d 32 6e 04 0d 32 78  |< 16.2d...2n..2x|
00007030  24 dd a4 6d 69 6e 28 41  25 2c 42 25 29 20 e7 20  |$..min(A%,B%) . |
00007040  41 25 3c 42 25 20 8c 20  3d 41 25 20 8b 20 3d 42  |A%<B% . =A% . =B|
00007050  25 0d 32 82 06 3d 30 0d  32 8c 04 0d 32 96 0c dd  |%.2..=0.2...2...|
00007060  f2 6f 73 67 62 70 62 0d  32 a0 1e f4 50 52 49 4e  |.osgbpb.2...PRIN|
00007070  54 22 4f 53 47 42 50 42  22 3b 61 3f 33 20 3a 20  |T"OSGBPB";a?3 : |
00007080  51 3d 47 45 54 0d 32 aa  1f 61 64 64 72 25 3d 6d  |Q=GET.2..addr%=m|
00007090  65 6d 6f 72 79 2b 78 3f  33 2b 28 79 3f 33 20 3c  |emory+x?3+(y?3 <|
000070a0  3c 20 38 29 0d 32 b4 0d  62 25 3d 3f 61 64 64 72  |< 8).2..b%=?addr|
000070b0  25 0d 32 be 0e 63 25 3d  61 64 64 72 25 21 31 0d  |%.2..c%=addr%!1.|
000070c0  32 c8 0e 64 25 3d 61 64  64 72 25 21 35 0d 32 d2  |2..d%=addr%!5.2.|
000070d0  0e 65 25 3d 61 64 64 72  25 21 39 0d 32 dc 04 0d  |.e%=addr%!9.2...|
000070e0  32 e6 04 0d 32 f0 0d e7  20 61 3f 33 3d 39 20 8c  |2...2... a?3=9 .|
000070f0  0d 32 fa 04 0d 33 04 5e  20 20 c8 99 20 22 58 4f  |.2...3.^  .. "XO|
00007100  53 5f 47 42 50 42 22 2c  61 3f 33 2c 66 73 24 2b  |S_GBPB",a?3,fs$+|
00007110  64 69 73 63 24 2b 70 61  74 68 24 2b 73 75 62 70  |disc$+path$+subp|
00007120  61 74 68 24 2c a4 61 64  64 72 28 63 25 20 80 20  |ath$,.addr(c% . |
00007130  26 46 46 46 46 29 2c 62  25 2c 65 25 2c 64 25 2c  |&FFFF),b%,e%,d%,|
00007140  30 20 b8 20 41 25 2c 2c  2c 64 25 2c 65 25 20 3b  |0 . A%,,,d%,e% ;|
00007150  20 46 0d 33 0e 13 20 20  e7 20 28 46 20 80 20 31  | F.3..  . (F . 1|
00007160  29 3d 30 20 8c 0d 33 18  0f 20 20 3f 61 64 64 72  |)=0 ..3..  ?addr|
00007170  25 3d 64 25 0d 33 22 10  20 20 61 64 64 72 25 21  |%=d%.3".  addr%!|
00007180  39 3d 65 25 0d 33 2c 35  20 20 e7 20 28 46 20 80  |9=e%.3,5  . (F .|
00007190  20 25 31 30 29 3d 30 20  8c 20 3f 66 3d 28 3f 66  | %10)=0 . ?f=(?f|
000071a0  20 80 20 25 31 31 31 31  31 31 31 30 29 20 8b 20  | . %11111110) . |
000071b0  3f 66 3d 3f 66 20 84 20  31 0d 33 36 0a 20 20 f2  |?f=?f . 1.36.  .|
000071c0  72 74 73 0d 33 40 07 20  20 cc 0d 33 4a 10 20 20  |rts.3@.  ..3J.  |
000071d0  f2 73 77 69 5f 65 72 72  6f 72 0d 33 54 07 20 20  |.swi_error.3T.  |
000071e0  cd 0d 33 5e 04 0d 33 68  05 cc 0d 33 72 04 0d 33  |..3^..3h...3r..3|
000071f0  7c 3e 20 20 c8 99 20 22  4f 53 5f 46 53 43 6f 6e  ||>  .. "OS_FSCon|
00007200  74 72 6f 6c 22 2c 31 31  2c 66 73 24 20 3a 20 f4  |trol",11,fs$ : .|
00007210  20 73 65 74 20 74 65 6d  70 6f 72 61 72 79 20 66  | set temporary f|
00007220  69 6c 69 6e 67 20 73 79  73 74 65 6d 0d 33 86 3d  |iling system.3.=|
00007230  20 20 c8 99 20 22 4f 53  5f 46 53 43 6f 6e 74 72  |  .. "OS_FSContr|
00007240  6f 6c 22 2c 30 2c 64 69  73 63 24 2b 70 61 74 68  |ol",0,disc$+path|
00007250  24 2b 73 75 62 70 61 74  68 24 20 3a 20 f4 20 63  |$+subpath$ : . c|
00007260  68 61 6e 67 65 20 64 69  72 0d 33 90 06 20 20 0d  |hange dir.3..  .|
00007270  33 9a 59 20 20 e7 20 28  61 3f 33 3d 33 20 84 20  |3.Y  . (a?3=3 . |
00007280  61 3f 33 3d 34 29 20 80  20 63 25 3c 26 38 30 30  |a?3=4) . c%<&800|
00007290  30 20 80 20 63 25 2b 65  25 3e 26 38 30 30 30 20  |0 . c%+e%>&8000 |
000072a0  8c 20 65 25 3d 26 38 30  30 30 2d 63 25 20 3a 20  |. e%=&8000-c% : |
000072b0  f4 20 73 74 6f 70 20 6f  76 65 72 66 6c 6f 77 20  |. stop overflow |
000072c0  61 74 20 26 38 30 30 30  0d 33 a4 06 20 20 0d 33  |at &8000.3..  .3|
000072d0  ae 45 20 20 c8 99 20 22  58 4f 53 5f 47 42 50 42  |.E  .. "XOS_GBPB|
000072e0  22 2c 61 3f 33 2c 62 25  2c a4 61 64 64 72 28 63  |",a?3,b%,.addr(c|
000072f0  25 20 80 20 26 46 46 46  46 29 2c 64 25 2c 65 25  |% . &FFFF),d%,e%|
00007300  20 b8 20 41 25 2c 2c 63  25 2c 64 25 2c 65 25 20  | . A%,,c%,d%,e% |
00007310  3b 20 46 0d 33 b8 04 0d  33 c2 1a 20 20 c8 99 20  |; F.3...3..  .. |
00007320  22 4f 53 5f 46 53 43 6f  6e 74 72 6f 6c 22 2c 31  |"OS_FSControl",1|
00007330  39 0d 33 cc 04 0d 33 d6  13 20 20 e7 20 28 46 20  |9.3...3..  . (F |
00007340  80 20 31 29 3d 30 20 8c  0d 33 e0 17 20 20 61 64  |. 1)=0 ..3..  ad|
00007350  64 72 25 21 31 3d 63 25  2d 6d 65 6d 6f 72 79 0d  |dr%!1=c%-memory.|
00007360  33 ea 10 20 20 61 64 64  72 25 21 35 3d 64 25 0d  |3..  addr%!5=d%.|
00007370  33 f4 10 20 20 61 64 64  72 25 21 39 3d 65 25 0d  |3..  addr%!9=e%.|
00007380  33 fe 35 20 20 e7 20 28  46 20 80 20 25 31 30 29  |3.5  . (F . %10)|
00007390  3d 30 20 8c 20 3f 66 3d  28 3f 66 20 80 20 25 31  |=0 . ?f=(?f . %1|
000073a0  31 31 31 31 31 31 30 29  20 8b 20 3f 66 3d 3f 66  |1111110) . ?f=?f|
000073b0  20 84 20 31 0d 34 08 0a  20 20 f2 72 74 73 0d 34  | . 1.4..  .rts.4|
000073c0  12 07 20 20 cc 0d 34 1c  10 20 20 f2 73 77 69 5f  |..  ..4..  .swi_|
000073d0  65 72 72 6f 72 0d 34 26  07 20 20 cd 0d 34 30 04  |error.4&.  ..40.|
000073e0  0d 34 3a 05 cd 0d 34 44  05 e1 0d 34 4e 04 0d 34  |.4:...4D...4N..4|
000073f0  58 0c dd f2 6f 73 61 72  67 73 0d 34 62 0c c8 8e  |X...osargs.4b...|
00007400  20 61 3f 33 20 ca 0d 34  6c 09 c9 20 30 20 3a 0d  | a?3 ..4l.. 0 :.|
00007410  34 76 0e e7 20 79 3f 33  3c 3e 30 20 8c 0d 34 80  |4v.. y?3<>0 ..4.|
00007420  26 c8 99 20 22 58 4f 53  5f 41 72 67 73 22 2c 61  |&.. "XOS_Args",a|
00007430  3f 33 2c 79 3f 33 20 b8  20 41 25 2c 2c 4c 25 20  |?3,y?3 . A%,,L% |
00007440  3b 20 46 0d 34 8a 33 e7  20 28 46 20 80 20 31 29  |; F.4.3. (F . 1)|
00007450  3d 30 20 8c 20 6d 65 6d  6f 72 79 21 28 78 3f 33  |=0 . memory!(x?3|
00007460  29 3d 4c 25 3a f2 72 74  73 20 8b 20 f2 73 77 69  |)=L%:.rts . .swi|
00007470  5f 65 72 72 6f 72 0d 34  94 05 cc 0d 34 9e 10 61  |_error.4....4..a|
00007480  3f 33 3d 34 20 3a 20 f2  72 74 73 0d 34 a8 05 cd  |?3=4 : .rts.4...|
00007490  0d 34 b2 09 c9 20 31 20  3a 0d 34 bc 2f c8 99 20  |.4... 1 :.4./.. |
000074a0  22 58 4f 53 5f 41 72 67  73 22 2c 61 3f 33 2c 79  |"XOS_Args",a?3,y|
000074b0  3f 33 2c 6d 65 6d 6f 72  79 21 28 78 3f 33 29 20  |?3,memory!(x?3) |
000074c0  b8 20 41 25 20 3b 20 46  0d 34 c6 23 e7 20 28 46  |. A% ; F.4.#. (F|
000074d0  20 80 20 31 29 3d 30 20  8c 20 f2 72 74 73 20 8b  | . 1)=0 . .rts .|
000074e0  20 f2 73 77 69 5f 65 72  72 6f 72 0d 34 d0 09 c9  | .swi_error.4...|
000074f0  20 32 20 3a 0d 34 da 26  c8 99 20 22 58 4f 53 5f  | 2 :.4.&.. "XOS_|
00007500  41 72 67 73 22 2c 61 3f  33 2c 79 3f 33 20 b8 20  |Args",a?3,y?3 . |
00007510  41 25 2c 2c 4c 25 20 3b  20 46 0d 34 e4 33 e7 20  |A%,,L% ; F.4.3. |
00007520  28 46 20 80 20 31 29 3d  30 20 8c 20 6d 65 6d 6f  |(F . 1)=0 . memo|
00007530  72 79 21 28 78 3f 33 29  3d 4c 25 3a f2 72 74 73  |ry!(x?3)=L%:.rts|
00007540  20 8b 20 f2 73 77 69 5f  65 72 72 6f 72 0d 34 ee  | . .swi_error.4.|
00007550  0b c9 20 32 35 35 20 3a  0d 34 f8 22 c8 99 20 22  |.. 255 :.4.".. "|
00007560  58 4f 53 5f 41 72 67 73  22 2c 61 3f 33 2c 79 3f  |XOS_Args",a?3,y?|
00007570  33 20 b8 20 41 25 20 3b  20 46 0d 35 02 23 e7 20  |3 . A% ; F.5.#. |
00007580  28 46 20 80 20 31 29 3d  30 20 8c 20 f2 72 74 73  |(F . 1)=0 . .rts|
00007590  20 8b 20 f2 73 77 69 5f  65 72 72 6f 72 0d 35 0c  | . .swi_error.5.|
000075a0  0c 7f 20 3a 20 f2 72 74  73 0d 35 16 05 cb 0d 35  |.. : .rts.5....5|
000075b0  20 05 e1 0d 35 2a 04 0d  35 34 0f dd a4 75 70 70  | ...5*..54...upp|
000075c0  65 72 28 41 24 29 0d 35  3e 0a ea 49 25 2c 42 24  |er(A$).5>..I%,B$|
000075d0  0d 35 48 0f e3 49 25 3d  31 20 b8 20 a9 41 24 0d  |.5H..I%=1 . .A$.|
000075e0  35 52 50 e7 20 c1 41 24  2c 49 25 2c 31 29 3e 3d  |5RP. .A$,I%,1)>=|
000075f0  22 61 22 20 80 20 c1 41  24 2c 49 25 2c 31 29 3c  |"a" . .A$,I%,1)<|
00007600  3d 22 7a 22 20 8c 20 42  24 3d 42 24 2b bd 28 97  |="z" . B$=B$+.(.|
00007610  c1 41 24 2c 49 25 2c 31  29 2d 33 32 29 20 8b 20  |.A$,I%,1)-32) . |
00007620  42 24 3d 42 24 2b c1 41  24 2c 49 25 2c 31 29 0d  |B$=B$+.A$,I%,1).|
00007630  35 5c 05 ed 0d 35 66 07  3d 42 24 0d 35 70 04 0d  |5\...5f.=B$.5p..|
00007640  35 7a 0a dd f2 71 75 69  74 0d 35 84 08 ee 85 20  |5z...quit.5.... |
00007650  87 0d 35 8e 1e c8 99 20  22 58 36 35 30 32 5f 44  |..5.... "X6502_D|
00007660  65 52 65 67 69 73 74 65  72 22 20 b8 20 41 25 0d  |eRegister" . A%.|
00007670  35 98 2c e7 20 41 25 3d  30 20 8c 20 c8 99 20 22  |5.,. A%=0 . .. "|
00007680  58 4f 53 5f 4d 6f 64 75  6c 65 22 2c 34 2c 22 36  |XOS_Module",4,"6|
00007690  35 30 32 53 75 70 70 6f  72 74 22 0d 35 a2 17 c8  |502Support".5...|
000076a0  99 20 22 57 69 6d 70 5f  43 6c 6f 73 65 44 6f 77  |. "Wimp_CloseDow|
000076b0  6e 22 0d 35 ac 05 e0 0d  35 b6 05 e1 0d 35 c0 04  |n".5....5....5..|
000076c0  0d 35 ca 13 dd f2 73 6e  61 70 5f 73 61 76 65 28  |.5....snap_save(|
000076d0  46 24 29 0d 35 d4 82 e7  20 a7 46 24 2c 22 2e 22  |F$).5... .F$,"."|
000076e0  29 3d 30 20 80 20 a7 46  24 2c 22 3a 22 29 3d 30  |)=0 . .F$,":")=0|
000076f0  20 80 20 c0 46 24 2c 36  29 3c 3e 22 3c 57 69 6d  | . .F$,6)<>"<Wim|
00007700  70 24 22 20 8c 20 c8 99  20 22 57 69 6d 70 5f 52  |p$" . .. "Wimp_R|
00007710  65 70 6f 72 74 45 72 72  6f 72 22 2c 22 20 20 20  |eportError","   |
00007720  20 54 6f 20 73 61 76 65  2c 20 64 72 61 67 20 74  | To save, drag t|
00007730  68 65 20 66 69 6c 65 20  69 63 6f 6e 20 74 6f 20  |he file icon to |
00007740  61 20 64 69 72 65 63 74  6f 72 79 20 76 69 65 77  |a directory view|
00007750  65 72 22 3a e1 0d 35 de  09 ea 51 2c 49 25 0d 35  |er":..5...Q,I%.5|
00007760  e8 04 0d 35 f2 18 6c 65  6e 67 74 68 25 3d 26 31  |...5..length%=&1|
00007770  30 32 30 30 2d 26 38 30  30 30 0d 35 fc 1c 21 62  |0200-&8000.5..!b|
00007780  75 66 66 65 72 3d 78 66  65 72 25 3a 62 75 66 66  |uffer=xfer%:buff|
00007790  65 72 21 34 3d 34 0d 36  06 22 c8 99 20 22 57 69  |er!4=4.6.".. "Wi|
000077a0  6d 70 5f 47 65 74 49 63  6f 6e 53 74 61 74 65 22  |mp_GetIconState"|
000077b0  2c 2c 62 75 66 66 65 72  0d 36 10 32 e7 20 28 62  |,,buffer.6.2. (b|
000077c0  75 66 66 65 72 21 32 34  20 80 20 32 5e 32 31 29  |uffer!24 . 2^21)|
000077d0  3c 3e 30 20 8c 20 6c 65  6e 67 74 68 25 3d 26 31  |<>0 . length%=&1|
000077e0  30 32 30 30 2d 26 34 30  30 30 0d 36 1a 1c 21 62  |0200-&4000.6..!b|
000077f0  75 66 66 65 72 3d 78 66  65 72 25 3a 62 75 66 66  |uffer=xfer%:buff|
00007800  65 72 21 34 3d 35 0d 36  24 22 c8 99 20 22 57 69  |er!4=5.6$".. "Wi|
00007810  6d 70 5f 47 65 74 49 63  6f 6e 53 74 61 74 65 22  |mp_GetIconState"|
00007820  2c 2c 62 75 66 66 65 72  0d 36 2e 2c e7 20 28 62  |,,buffer.6.,. (b|
00007830  75 66 66 65 72 21 32 34  20 80 20 32 5e 32 31 29  |uffer!24 . 2^21)|
00007840  3c 3e 30 20 8c 20 6c 65  6e 67 74 68 25 3d 26 31  |<>0 . length%=&1|
00007850  30 32 30 30 0d 36 38 04  0d 36 42 09 51 3d ae 46  |0200.68..6B.Q=.F|
00007860  24 0d 36 4c 19 d5 23 51  2c 22 42 42 43 20 53 6e  |$.6L..#Q,"BBC Sn|
00007870  61 70 73 68 6f 74 31 30  31 22 0d 36 56 28 c8 99  |apshot101".6V(..|
00007880  20 22 4f 53 5f 47 42 50  42 22 2c 32 2c 51 2c 6d  | "OS_GBPB",2,Q,m|
00007890  65 6d 6f 72 79 2d 26 32  30 30 2c 6c 65 6e 67 74  |emory-&200,lengt|
000078a0  68 25 0d 36 60 07 d9 23  51 0d 36 6a 22 ff 22 53  |h%.6`..#Q.6j"."S|
000078b0  65 74 54 79 70 65 20 22  2b 46 24 2b 22 20 22 2b  |etType "+F$+" "+|
000078c0  c3 7e 66 69 6c 65 74 79  70 65 25 0d 36 74 05 e1  |.~filetype%.6t..|
000078d0  0d 36 7e 04 0d 36 88 16  dd f2 73 6e 61 70 5f 6c  |.6~..6....snap_l|
000078e0  6f 61 64 28 66 69 6c 65  24 29 0d 36 92 25 ea 20  |oad(file$).6.%. |
000078f0  66 69 6c 65 25 2c 49 25  2c 6f 6b 25 2c 6d 61 63  |file%,I%,ok%,mac|
00007900  68 69 6e 65 24 2c 4d 25  2c 70 61 74 63 68 24 0d  |hine$,M%,patch$.|
00007910  36 9c 12 66 69 6c 65 25  3d 8e 28 66 69 6c 65 24  |6..file%=.(file$|
00007920  29 0d 36 a6 11 74 79 70  65 24 3d be 23 66 69 6c  |).6..type$=.#fil|
00007930  65 25 0d 36 b0 24 e7 20  a2 23 66 69 6c 65 25 3d  |e%.6.$. .#file%=|
00007940  30 20 8c 20 74 79 70 65  24 3d 22 42 42 43 20 53  |0 . type$="BBC S|
00007950  63 72 69 70 74 22 0d 36  ba 44 e7 20 c0 74 79 70  |cript".6.D. .typ|
00007960  65 24 2c 36 34 29 3d c4  34 38 2c bd 30 29 2b 22  |e$,64)=.48,.0)+"|
00007970  21 42 42 43 20 74 61 70  65 20 66 69 6c 65 21 22  |!BBC tape file!"|
00007980  2b bd 30 20 8c 20 74 79  70 65 24 3d 22 42 42 43  |+.0 . type$="BBC|
00007990  20 54 61 70 65 66 69 6c  65 22 0d 36 c4 04 0d 36  | Tapefile".6...6|
000079a0  ce 0e c8 8e 20 74 79 70  65 24 20 ca 0d 36 d8 04  |.... type$ ..6..|
000079b0  0d 36 e2 14 c9 20 22 42  42 43 20 54 61 70 65 66  |.6... "BBC Tapef|
000079c0  69 6c 65 22 0d 36 ec 04  0d 36 f6 0b d9 23 66 69  |ile".6...6...#fi|
000079d0  6c 65 25 0d 37 00 13 74  61 70 65 66 69 6c 65 24  |le%.7..tapefile$|
000079e0  3d 66 69 6c 65 24 0d 37  0a 04 0d 37 14 12 c9 20  |=file$.7...7... |
000079f0  22 42 42 43 20 53 63 72  69 70 74 22 0d 37 1e 04  |"BBC Script".7..|
00007a00  0d 37 28 07 ea 20 85 0d  37 32 04 0d 37 3c 6b ee  |.7(.. ..72..7<k.|
00007a10  20 85 20 ea 20 3a 20 f7  20 85 20 3a 20 c8 99 20  | . . : . . : .. |
00007a20  22 58 57 69 6d 70 5f 52  65 70 6f 72 74 45 72 72  |"XWimp_ReportErr|
00007a30  6f 72 22 2c 22 20 20 20  20 45 72 72 6f 72 20 69  |or","    Error i|
00007a40  6e 20 73 63 72 69 70 74  3a 20 22 2b f6 24 2c 33  |n script: "+.$,3|
00007a50  2c 22 36 35 30 32 45 6d  22 20 b8 20 2c 41 25 3a  |,"6502Em" . ,A%:|
00007a60  e7 20 41 25 3d 32 20 8c  20 f2 71 75 69 74 20 8b  |. A%=2 . .quit .|
00007a70  20 f2 70 6f 6c 6c 0d 37  46 04 0d 37 50 12 73 63  | .poll.7F..7P.sc|
00007a80  72 6f 6c 6c 5f 68 61 63  6b 25 3d a3 0d 37 5a 04  |roll_hack%=..7Z.|
00007a90  0d 37 64 04 0d 37 6e 11  20 20 e7 20 c5 23 66 69  |.7d..7n.  . .#fi|
00007aa0  6c 65 25 20 8c 0d 37 78  0c 20 20 20 41 24 3d 22  |le% ..7x.   A$="|
00007ab0  22 0d 37 82 07 20 20 cc  0d 37 8c 19 20 20 20 41  |".7..  ..7..   A|
00007ac0  24 3d a4 75 70 70 65 72  28 be 23 66 69 6c 65 25  |$=.upper(.#file%|
00007ad0  29 0d 37 96 07 20 20 cd  0d 37 a0 07 20 20 f5 0d  |).7..  ..7..  ..|
00007ae0  37 aa 1a 20 20 20 20 42  24 3d c0 41 24 2c a7 41  |7..    B$=.A$,.A|
00007af0  24 2c 22 20 22 29 2d 31  29 0d 37 b4 0d 20 20 20  |$," ")-1).7..   |
00007b00  20 6f 6b 25 3d b9 0d 37  be 0f 20 20 20 20 c8 8e  | ok%=..7..    ..|
00007b10  20 42 24 20 ca 0d 37 c8  13 20 20 20 20 c9 20 22  | B$ ..7..    . "|
00007b20  50 41 4c 45 54 54 45 22  0d 37 d2 2f 20 20 20 20  |PALETTE".7./    |
00007b30  20 20 e7 20 a7 41 24 2c  22 4f 4e 22 29 20 8c 20  |  . .A$,"ON") . |
00007b40  50 61 6c 65 74 74 65 25  3d b9 20 8b 20 50 61 6c  |Palette%=. . Pal|
00007b50  65 74 74 65 25 3d a3 0d  37 dc 12 20 20 20 20 c9  |ette%=..7..    .|
00007b60  20 22 43 55 52 53 4f 52  22 0d 37 e6 2d 20 20 20  | "CURSOR".7.-   |
00007b70  20 20 20 e7 20 a7 41 24  2c 22 4f 4e 22 29 20 8c  |   . .A$,"ON") .|
00007b80  20 43 75 72 73 6f 72 25  3d b9 20 8b 20 43 75 72  | Cursor%=. . Cur|
00007b90  73 6f 72 25 3d a3 0d 37  f0 16 20 20 20 20 c9 20  |sor%=..7..    . |
00007ba0  22 45 58 41 43 54 53 50  45 45 44 22 0d 37 fa 39  |"EXACTSPEED".7.9|
00007bb0  20 20 20 20 20 20 e7 20  a7 41 24 2c 22 4f 4e 22  |      . .A$,"ON"|
00007bc0  29 20 8c 20 f2 6e 65 77  73 70 65 65 64 28 31 30  |) . .newspeed(10|
00007bd0  30 29 20 8b 20 f2 6e 65  77 73 70 65 65 64 28 31  |0) . .newspeed(1|
00007be0  30 30 30 30 29 0d 38 04  11 20 20 20 20 c9 20 22  |0000).8..    . "|
00007bf0  53 4f 55 4e 44 22 0d 38  0e 31 20 20 20 20 20 20  |SOUND".8.1      |
00007c00  e7 20 a7 41 24 2c 22 4f  4e 22 29 20 8c 20 73 6f  |. .A$,"ON") . so|
00007c10  75 6e 64 5f 6f 6e 25 3d  b9 20 8b 20 73 6f 75 6e  |und_on%=. . soun|
00007c20  64 5f 6f 6e 25 3d a3 0d  38 18 17 20 20 20 20 c9  |d_on%=..8..    .|
00007c30  20 22 44 49 53 41 42 4c  45 54 41 50 45 22 0d 38  | "DISABLETAPE".8|
00007c40  22 15 20 20 20 20 20 20  f2 64 69 73 61 62 6c 65  |".      .disable|
00007c50  43 46 53 0d 38 2c 16 20  20 20 20 c9 20 22 53 43  |CFS.8,.    . "SC|
00007c60  52 4f 4c 4c 48 41 43 4b  22 0d 38 36 18 20 20 20  |ROLLHACK".86.   |
00007c70  20 20 20 73 63 72 6f 6c  6c 5f 68 61 63 6b 25 3d  |   scroll_hack%=|
00007c80  b9 0d 38 40 12 20 20 20  20 c9 20 22 4b 45 59 4d  |..8@.    . "KEYM|
00007c90  41 50 22 0d 38 4a 1e 20  20 20 20 20 20 4b 24 3d  |AP".8J.      K$=|
00007ca0  c2 41 24 2c a9 41 24 2d  a7 41 24 2c 22 20 22 29  |.A$,.A$-.A$," ")|
00007cb0  29 0d 38 54 18 20 20 20  20 20 20 f2 73 65 74 6b  |).8T.      .setk|
00007cc0  65 79 6d 61 70 28 4b 24  29 0d 38 5e 11 20 20 20  |eymap(K$).8^.   |
00007cd0  20 c9 20 22 50 41 54 43  48 22 0d 38 68 19 20 20  | . "PATCH".8h.  |
00007ce0  20 20 20 20 e7 20 70 61  74 63 68 65 73 25 3c 3e  |    . patches%<>|
00007cf0  30 20 8c 0d 38 72 14 20  20 20 20 20 20 20 20 70  |0 ..8r.        p|
00007d00  61 74 63 68 25 3d 30 0d  38 7c 1c 20 20 20 20 20  |atch%=0.8|.     |
00007d10  20 20 20 e3 49 25 3d 31  20 b8 20 70 61 74 63 68  |   .I%=1 . patch|
00007d20  65 73 25 0d 38 86 25 20  20 20 20 20 20 20 20 20  |es%.8.%         |
00007d30  20 70 61 74 63 68 24 3d  c2 41 24 2c a9 70 61 74  | patch$=.A$,.pat|
00007d40  63 68 24 28 49 25 29 29  0d 38 90 1c 20 20 20 20  |ch$(I%)).8..    |
00007d50  20 20 20 20 20 20 f2 73  74 72 69 70 28 70 61 74  |      .strip(pat|
00007d60  63 68 24 29 0d 38 9a 2b  20 20 20 20 20 20 20 20  |ch$).8.+        |
00007d70  20 20 e7 20 a4 75 70 70  65 72 28 70 61 74 63 68  |  . .upper(patch|
00007d80  24 28 49 25 29 29 3d 70  61 74 63 68 24 20 8c 0d  |$(I%))=patch$ ..|
00007d90  38 a4 19 20 20 20 20 20  20 20 20 20 20 20 20 70  |8..            p|
00007da0  61 74 63 68 25 3d 49 25  0d 38 ae 1a 20 20 20 20  |atch%=I%.8..    |
00007db0  20 20 20 20 20 20 20 20  f2 6c 6f 61 64 70 61 74  |        .loadpat|
00007dc0  63 68 0d 38 b8 0f 20 20  20 20 20 20 20 20 20 20  |ch.8..          |
00007dd0  cd 0d 38 c2 0d 20 20 20  20 20 20 20 20 ed 0d 38  |..8..        ..8|
00007de0  cc 0b 20 20 20 20 20 20  cd 0d 38 d6 11 20 20 20  |..      ..8..   |
00007df0  20 c9 20 22 53 50 45 45  44 22 0d 38 e0 20 20 20  | . "SPEED".8.   |
00007e00  20 20 20 20 f2 6e 65 77  73 70 65 65 64 28 bb c2  |    .newspeed(..|
00007e10  41 24 2c a9 41 24 2d 36  29 29 0d 38 ea 15 20 20  |A$,.A$-6)).8..  |
00007e20  20 20 c9 20 22 49 4e 44  45 58 46 49 4c 45 22 0d  |  . "INDEXFILE".|
00007e30  38 f4 18 20 20 20 20 20  20 54 24 3d c2 41 24 2c  |8..      T$=.A$,|
00007e40  a9 41 24 2d 31 30 29 0d  38 fe 23 20 20 20 20 20  |.A$-10).8.#     |
00007e50  20 54 25 3d 8e 28 a4 6c  65 61 66 28 66 69 6c 65  | T%=.(.leaf(file|
00007e60  24 29 2b 22 2e 22 2b 54  24 29 0d 39 08 64 20 20  |$)+"."+T$).9.d  |
00007e70  20 20 20 20 e7 20 54 25  3c 3e 30 20 8c 20 d9 23  |    . T%<>0 . .#|
00007e80  54 25 3a 69 6e 64 65 78  66 69 6c 65 24 3d a4 6c  |T%:indexfile$=.l|
00007e90  65 61 66 28 66 69 6c 65  24 29 2b 22 2e 22 2b 54  |eaf(file$)+"."+T|
00007ea0  24 3a 69 6e 64 65 78 25  3d 30 20 8b 20 85 20 31  |$:index%=0 . . 1|
00007eb0  2c 22 49 6e 64 65 78 20  46 69 6c 65 20 22 2b 54  |,"Index File "+T|
00007ec0  24 2b 22 20 6e 6f 74 20  66 6f 75 6e 64 22 0d 39  |$+" not found".9|
00007ed0  12 14 20 20 20 20 c9 20  22 54 41 50 45 46 49 4c  |..    . "TAPEFIL|
00007ee0  45 22 0d 39 1c 17 20 20  20 20 20 20 54 24 3d c2  |E".9..      T$=.|
00007ef0  41 24 2c a9 41 24 2d 39  29 0d 39 26 23 20 20 20  |A$,.A$-9).9&#   |
00007f00  20 20 20 54 25 3d 8e 28  a4 6c 65 61 66 28 66 69  |   T%=.(.leaf(fi|
00007f10  6c 65 24 29 2b 22 2e 22  2b 54 24 29 0d 39 30 59  |le$)+"."+T$).90Y|
00007f20  20 20 20 20 20 20 e7 20  54 25 3c 3e 30 20 8c 20  |      . T%<>0 . |
00007f30  d9 23 54 25 3a 74 61 70  65 66 69 6c 65 24 3d a4  |.#T%:tapefile$=.|
00007f40  6c 65 61 66 28 66 69 6c  65 24 29 2b 22 2e 22 2b  |leaf(file$)+"."+|
00007f50  54 24 20 8b 20 85 20 31  2c 22 54 61 70 65 20 46  |T$ . . 1,"Tape F|
00007f60  69 6c 65 20 22 2b 54 24  2b 22 20 6e 6f 74 20 66  |ile "+T$+" not f|
00007f70  6f 75 6e 64 22 0d 39 3a  13 20 20 20 20 c9 20 22  |ound".9:.    . "|
00007f80  4c 4f 41 44 52 4f 4d 22  0d 39 44 17 20 20 20 20  |LOADROM".9D.    |
00007f90  20 20 4c 24 3d c2 41 24  2c a9 41 24 2d 38 29 0d  |  L$=.A$,.A$-8).|
00007fa0  39 4e 18 20 20 20 20 20  20 e7 20 a7 4c 24 2c 22  |9N.      . .L$,"|
00007fb0  3a 22 29 3d 30 20 8c 0d  39 58 2b 20 20 20 20 20  |:")=0 ..9X+     |
00007fc0  20 20 20 f2 6c 6f 61 64  52 4f 4d 28 a4 6c 65 61  |   .loadROM(.lea|
00007fd0  66 28 66 69 6c 65 24 29  2b 22 2e 22 2b 4c 24 2c  |f(file$)+"."+L$,|
00007fe0  31 29 0d 39 62 0b 20 20  20 20 20 20 cc 0d 39 6c  |1).9b.      ..9l|
00007ff0  1a 20 20 20 20 20 20 20  20 f2 6c 6f 61 64 52 4f  |.        .loadRO|
00008000  4d 28 4c 24 2c 31 29 0d  39 76 0b 20 20 20 20 20  |M(L$,1).9v.     |
00008010  20 cd 0d 39 80 13 20 20  20 20 c9 20 22 4c 4f 41  | ..9..    . "LOA|
00008020  44 52 41 4d 22 0d 39 8a  17 20 20 20 20 20 20 4c  |DRAM".9..      L|
00008030  24 3d c2 41 24 2c a9 41  24 2d 38 29 0d 39 94 18  |$=.A$,.A$-8).9..|
00008040  20 20 20 20 20 20 e7 20  a7 4c 24 2c 22 3a 22 29  |      . .L$,":")|
00008050  3d 30 20 8c 0d 39 9e 2b  20 20 20 20 20 20 20 20  |=0 ..9.+        |
00008060  f2 6c 6f 61 64 52 4f 4d  28 a4 6c 65 61 66 28 66  |.loadROM(.leaf(f|
00008070  69 6c 65 24 29 2b 22 2e  22 2b 4c 24 2c 30 29 0d  |ile$)+"."+L$,0).|
00008080  39 a8 0b 20 20 20 20 20  20 cc 0d 39 b2 1a 20 20  |9..      ..9..  |
00008090  20 20 20 20 20 20 f2 6c  6f 61 64 52 4f 4d 28 4c  |      .loadROM(L|
000080a0  24 2c 31 29 0d 39 bc 0b  20 20 20 20 20 20 cd 0d  |$,1).9..      ..|
000080b0  39 c6 13 20 20 20 20 c9  20 22 4b 49 4c 4c 52 4f  |9..    . "KILLRO|
000080c0  4d 22 0d 39 d0 17 20 20  20 20 20 20 4c 24 3d c2  |M".9..      L$=.|
000080d0  41 24 2c a9 41 24 2d 38  29 0d 39 da 15 20 20 20  |A$,.A$-8).9..   |
000080e0  20 20 20 e3 20 49 25 3d  30 20 b8 20 31 35 0d 39  |   . I%=0 . 15.9|
000080f0  e4 38 20 20 20 20 20 20  e7 20 c0 a4 75 70 70 65  |.8      . ..uppe|
00008100  72 28 a4 52 4f 4d 6e 61  6d 65 28 49 25 29 29 2c  |r(.ROMname(I%)),|
00008110  a9 4c 24 29 3d 4c 24 20  8c 20 f2 6b 69 6c 6c 52  |.L$)=L$ . .killR|
00008120  4f 4d 28 49 25 29 0d 39  ee 0b 20 20 20 20 20 20  |OM(I%).9..      |
00008130  ed 0d 39 f8 13 20 20 20  20 c9 20 22 4d 41 43 48  |..9..    . "MACH|
00008140  49 4e 45 22 0d 3a 02 1d  20 20 20 20 20 20 6d 61  |INE".:..      ma|
00008150  63 68 69 6e 65 24 3d c2  41 24 2c a9 41 24 2d 38  |chine$=.A$,.A$-8|
00008160  29 0d 3a 0c 1a 20 20 20  20 20 20 f2 73 74 72 69  |).:..      .stri|
00008170  70 28 6d 61 63 68 69 6e  65 24 29 0d 3a 16 17 20  |p(machine$).:.. |
00008180  20 20 20 20 20 c8 8e 20  6d 61 63 68 69 6e 65 24  |     .. machine$|
00008190  20 ca 0d 3a 20 20 20 20  20 20 20 20 c9 20 22 42  | ..:        . "B|
000081a0  42 43 22 2c 22 42 42 43  42 22 2c 22 42 42 43 20  |BC","BBCB","BBC |
000081b0  42 22 0d 3a 2a 10 20 20  20 20 20 20 20 20 4d 25  |B".:*.        M%|
000081c0  3d 30 0d 3a 34 2d 20 20  20 20 20 20 c9 20 22 4d  |=0.:4-      . "M|
000081d0  41 53 54 45 52 22 2c 22  4d 41 53 54 45 52 31 32  |ASTER","MASTER12|
000081e0  38 22 2c 22 4d 41 53 54  45 52 20 31 32 38 22 0d  |8","MASTER 128".|
000081f0  3a 3e 10 20 20 20 20 20  20 20 20 4d 25 3d 31 0d  |:>.        M%=1.|
00008200  3a 48 2d 20 20 20 20 20  20 c9 20 22 4f 53 33 2e  |:H-      . "OS3.|
00008210  35 22 2c 22 4f 53 20 33  2e 35 22 2c 22 4f 53 33  |5","OS 3.5","OS3|
00008220  2c 35 22 2c 22 4f 53 20  33 2e 35 22 0d 3a 52 10  |,5","OS 3.5".:R.|
00008230  20 20 20 20 20 20 20 20  4d 25 3d 32 0d 3a 5c 26  |        M%=2.:\&|
00008240  20 20 20 20 20 20 c9 20  22 43 4f 4d 50 41 43 54  |      . "COMPACT|
00008250  22 2c 22 4d 41 53 54 45  52 20 43 4f 4d 50 41 43  |","MASTER COMPAC|
00008260  54 22 0d 3a 66 10 20 20  20 20 20 20 20 20 4d 25  |T".:f.        M%|
00008270  3d 33 0d 3a 70 1c 20 20  20 20 20 20 c9 20 22 45  |=3.:p.      . "E|
00008280  4c 45 43 54 52 4f 4e 22  2c 22 45 4c 4b 22 0d 3a  |LECTRON","ELK".:|
00008290  7a 10 20 20 20 20 20 20  20 20 4d 25 3d 34 0d 3a  |z.        M%=4.:|
000082a0  84 0b 20 20 20 20 20 20  7f 0d 3a 8e 38 20 20 20  |..      ..:.8   |
000082b0  20 20 20 20 20 d9 23 66  69 6c 65 25 3a 85 20 31  |     .#file%:. 1|
000082c0  2c 22 55 6e 6b 6e 6f 77  6e 20 6d 61 63 68 69 6e  |,"Unknown machin|
000082d0  65 20 27 22 2b 6d 61 63  68 69 6e 65 24 2b 22 27  |e '"+machine$+"'|
000082e0  22 0d 3a 98 0b 20 20 20  20 20 20 cb 0d 3a a2 32  |".:..      ..:.2|
000082f0  20 20 20 20 20 20 e7 20  4d 25 3c 3e 6d 61 63 68  |      . M%<>mach|
00008300  69 6e 65 25 20 8c 20 6d  61 63 68 69 6e 65 25 3d  |ine% . machine%=|
00008310  4d 25 3a f2 6e 65 77 6d  61 63 68 69 6e 65 0d 3a  |M%:.newmachine.:|
00008320  ac 09 20 20 20 20 7f 0d  3a b6 0f 20 20 20 20 20  |..    ..:..     |
00008330  20 6f 6b 25 3d a3 0d 3a  c0 09 20 20 20 20 cb 0d  | ok%=..:..    ..|
00008340  3a ca 0f 20 20 20 20 e7  20 6f 6b 25 20 8c 0d 3a  |:..    . ok% ..:|
00008350  d4 15 20 20 20 20 20 20  e7 20 c5 23 66 69 6c 65  |..      . .#file|
00008360  25 20 8c 0d 3a de 11 20  20 20 20 20 20 20 20 41  |% ..:..        A|
00008370  24 3d 22 22 0d 3a e8 0b  20 20 20 20 20 20 cc 0d  |$="".:..      ..|
00008380  3a f2 1e 20 20 20 20 20  20 20 20 41 24 3d a4 75  |:..        A$=.u|
00008390  70 70 65 72 28 be 23 66  69 6c 65 25 29 0d 3a fc  |pper(.#file%).:.|
000083a0  0b 20 20 20 20 20 20 cd  0d 3b 06 09 20 20 20 20  |.      ..;..    |
000083b0  cd 0d 3b 10 fa 20 20 fd  20 a4 69 28 22 50 41 54  |..;..  . .i("PAT|
000083c0  43 48 22 29 20 80 20 a4  69 28 22 50 41 4c 45 54  |CH") . .i("PALET|
000083d0  54 45 22 29 20 80 20 a4  69 28 22 4d 41 43 48 49  |TE") . .i("MACHI|
000083e0  4e 45 22 29 20 80 20 a4  69 28 22 49 4e 44 45 58  |NE") . .i("INDEX|
000083f0  46 49 4c 45 22 29 20 80  20 a4 69 28 22 54 41 50  |FILE") . .i("TAP|
00008400  45 46 49 4c 45 22 29 20  80 20 a4 69 28 22 4b 45  |EFILE") . .i("KE|
00008410  59 4d 41 50 22 29 20 80  20 a4 69 28 22 43 55 52  |YMAP") . .i("CUR|
00008420  53 4f 52 22 29 20 80 20  a4 69 28 22 45 58 41 43  |SOR") . .i("EXAC|
00008430  54 53 50 45 45 44 22 29  20 80 20 a4 69 28 22 44  |TSPEED") . .i("D|
00008440  49 53 41 42 4c 45 54 41  50 45 22 29 20 80 20 a4  |ISABLETAPE") . .|
00008450  69 28 22 4c 4f 41 44 52  4f 4d 22 29 20 80 20 a4  |i("LOADROM") . .|
00008460  69 28 22 4c 4f 41 44 52  41 4d 22 29 20 80 20 a4  |i("LOADRAM") . .|
00008470  69 28 22 4b 49 4c 4c 52  4f 4d 22 29 20 80 20 a4  |i("KILLROM") . .|
00008480  69 28 22 53 4f 55 4e 44  22 29 20 80 20 a4 69 28  |i("SOUND") . .i(|
00008490  22 53 43 52 4f 4c 4c 48  41 43 4b 22 29 20 80 20  |"SCROLLHACK") . |
000084a0  a4 69 28 22 53 50 45 45  44 22 29 0d 3b 1a 04 0d  |.i("SPEED").;...|
000084b0  3b 24 0d 20 20 d9 23 66  69 6c 65 25 0d 3b 2e 0f  |;$.  .#file%.;..|
000084c0  20 20 e7 20 41 24 3d 22  22 20 8c 0d 3b 38 17 20  |  . A$="" ..;8. |
000084d0  20 20 20 41 24 3d a4 6c  65 61 66 28 66 69 6c 65  |   A$=.leaf(file|
000084e0  24 29 0d 3b 42 30 20 20  20 20 f2 66 69 6c 65 5f  |$).;B0    .file_|
000084f0  6c 6f 61 64 28 41 24 2b  22 2e 22 2b c2 41 24 2c  |load(A$+"."+.A$,|
00008500  a9 41 24 2d a9 a4 6c 65  61 66 28 41 24 29 2d 32  |.A$-..leaf(A$)-2|
00008510  29 29 0d 3b 4c 07 20 20  cc 0d 3b 56 34 20 20 20  |)).;L.  ..;V4   |
00008520  20 e7 20 c0 41 24 2c 35  29 3d 22 43 48 41 49 4e  | . .A$,5)="CHAIN|
00008530  22 20 84 20 c0 41 24 2c  31 29 3d 22 2a 22 20 84  |" . .A$,1)="*" .|
00008540  20 a7 41 24 2c 22 20 22  29 3e 30 20 8c 0d 3b 60  | .A$," ")>0 ..;`|
00008550  18 20 20 20 20 20 20 6f  73 72 64 63 68 24 3d 41  |.      osrdch$=A|
00008560  24 2b bd 31 33 0d 3b 6a  13 20 20 20 20 20 20 f2  |$+.13.;j.      .|
00008570  72 65 73 65 74 28 32 29  0d 3b 74 19 20 20 20 20  |reset(2).;t.    |
00008580  20 20 6f 73 72 64 63 68  5f 63 6f 75 6e 74 25 3d  |  osrdch_count%=|
00008590  30 0d 3b 7e 23 20 20 20  20 20 20 4f 53 52 44 43  |0.;~#      OSRDC|
000085a0  48 5f 6c 6f 63 5f 74 6d  70 3d 4f 53 52 44 43 48  |H_loc_tmp=OSRDCH|
000085b0  5f 6c 6f 63 0d 3b 88 16  20 20 20 20 20 20 4f 53  |_loc.;..      OS|
000085c0  52 44 43 48 5f 6c 6f 63  3d 33 0d 3b 92 28 20 20  |RDCH_loc=3.;.(  |
000085d0  20 20 20 20 f2 6e 65 77  70 61 74 68 28 a4 6c 65  |    .newpath(.le|
000085e0  61 66 28 66 69 6c 65 24  29 2b 22 2e 4a 55 4e 4b  |af(file$)+".JUNK|
000085f0  22 29 0d 3b 9c 09 20 20  20 20 cc 0d 3b a6 29 20  |").;..    ..;.) |
00008600  20 20 20 20 20 f2 66 69  6c 65 5f 6c 6f 61 64 28  |     .file_load(|
00008610  a4 6c 65 61 66 28 66 69  6c 65 24 29 2b 22 2e 22  |.leaf(file$)+"."|
00008620  2b 41 24 29 0d 3b b0 09  20 20 20 20 cd 0d 3b ba  |+A$).;..    ..;.|
00008630  07 20 20 cd 0d 3b c4 19  c9 20 22 42 42 43 20 53  |.  ..;... "BBC S|
00008640  6e 61 70 73 68 6f 74 20  20 20 22 20 3a 0d 3b ce  |napshot   " :.;.|
00008650  18 20 20 e7 20 a2 23 66  69 6c 65 25 3d 26 31 30  |.  . .#file%=&10|
00008660  31 31 30 20 8c 0d 3b d8  2f 20 20 20 20 c8 99 20  |110 ..;./    .. |
00008670  22 4f 53 5f 47 42 50 42  22 2c 34 2c 66 69 6c 65  |"OS_GBPB",4,file|
00008680  25 2c 6d 65 6d 6f 72 79  2d 26 31 30 30 2c 26 31  |%,memory-&100,&1|
00008690  30 31 30 30 0d 3b e2 1b  20 20 20 20 cf 23 66 69  |0100.;..    .#fi|
000086a0  6c 65 25 3d 26 31 30 31  31 30 2d 26 32 30 30 0d  |le%=&10110-&200.|
000086b0  3b ec 28 20 20 20 20 c8  99 20 22 4f 53 5f 47 42  |;.(    .. "OS_GB|
000086c0  50 42 22 2c 34 2c 66 69  6c 65 25 2c 73 68 65 69  |PB",4,file%,shei|
000086d0  6c 61 2c 26 31 30 30 0d  3b f6 07 20 20 cc 0d 3c  |la,&100.;..  ..<|
000086e0  00 35 20 20 20 20 c8 99  20 22 4f 53 5f 47 42 50  |.5    .. "OS_GBP|
000086f0  42 22 2c 34 2c 66 69 6c  65 25 2c 6d 65 6d 6f 72  |B",4,file%,memor|
00008700  79 2d 26 31 30 30 2c a2  23 66 69 6c 65 25 2d 26  |y-&100,.#file%-&|
00008710  31 31 30 0d 3c 0a 28 20  20 20 20 c8 99 20 22 4f  |110.<.(    .. "O|
00008720  53 5f 47 42 50 42 22 2c  34 2c 66 69 6c 65 25 2c  |S_GBPB",4,file%,|
00008730  73 68 65 69 6c 61 2c 26  31 30 30 0d 3c 14 07 20  |sheila,&100.<.. |
00008740  20 cd 0d 3c 1e 0d 20 20  d9 23 66 69 6c 65 25 0d  | ..<..  .#file%.|
00008750  3c 28 19 c9 20 22 42 42  43 20 53 6e 61 70 73 68  |<(.. "BBC Snapsh|
00008760  6f 74 31 30 31 22 20 3a  0d 3c 32 32 20 20 c8 99  |ot101" :.<22  ..|
00008770  20 22 4f 53 5f 47 42 50  42 22 2c 34 2c 66 69 6c  | "OS_GBPB",4,fil|
00008780  65 25 2c 6d 65 6d 6f 72  79 2d 26 32 30 30 2c a2  |e%,memory-&200,.|
00008790  23 66 69 6c 65 25 2d 26  31 30 0d 3c 3c 0d 20 20  |#file%-&10.<<.  |
000087a0  d9 23 66 69 6c 65 25 0d  3c 46 11 7f 20 3a 20 f4  |.#file%.<F.. : .|
000087b0  20 42 42 43 20 52 4f 4d  0d 3c 50 0d 20 20 d9 23  | BBC ROM.<P.  .#|
000087c0  66 69 6c 65 25 0d 3c 5a  14 20 20 f2 6c 6f 61 64  |file%.<Z.  .load|
000087d0  52 4f 4d 28 41 24 2c 31  29 0d 3c 64 05 cb 0d 3c  |ROM(A$,1).<d...<|
000087e0  6e 05 e1 0d 3c 78 04 0d  3c 82 0b dd a4 69 28 42  |n...<x..<....i(B|
000087f0  24 29 0d 3c 8c 19 e7 20  a7 41 24 2c 42 24 29 3d  |$).<... .A$,B$)=|
00008800  30 20 8c 20 3d b9 20 8b  20 3d a3 0d 3c 96 06 3d  |0 . =. . =..<..=|
00008810  30 0d 3c a0 13 dd f2 66  69 6c 65 5f 6c 6f 61 64  |0.<....file_load|
00008820  28 46 24 29 0d 3c aa 10  69 6d 61 67 65 66 69 6c  |(F$).<..imagefil|
00008830  65 25 3d a3 0d 3c b4 10  f2 6e 65 77 70 61 74 68  |e%=..<...newpath|
00008840  28 46 24 29 0d 3c be 1b  f4 4f 53 43 4c 49 22 44  |(F$).<...OSCLI"D|
00008850  49 52 20 22 2b 46 4e 6c  65 61 66 28 46 24 29 0d  |IR "+FNleaf(F$).|
00008860  3c c8 0f e3 49 25 3d 31  20 b8 20 a9 46 24 0d 3c  |<...I%=1 . .F$.<|
00008870  d2 3a e7 20 c1 46 24 2c  a9 46 24 2d 49 25 2c 31  |.:. .F$,.F$-I%,1|
00008880  29 3d 22 2e 22 20 84 20  c1 46 24 2c a9 46 24 2d  |)="." . .F$,.F$-|
00008890  49 25 2c 31 29 3d 22 3a  22 20 8c 20 4c 25 3d 49  |I%,1)=":" . L%=I|
000088a0  25 3a 49 25 3d a9 46 24  0d 3c dc 05 ed 0d 3c e6  |%:I%=.F$.<....<.|
000088b0  0e 41 24 3d c2 46 24 2c  4c 25 29 0d 3c f0 36 c8  |.A$=.F$,L%).<.6.|
000088c0  99 20 22 4f 53 5f 46 69  6c 65 22 2c 35 2c 46 24  |. "OS_File",5,F$|
000088d0  20 b8 20 6f 62 6a 65 63  74 25 2c 2c 6c 6f 61 64  | . object%,,load|
000088e0  32 25 2c 65 78 65 63 32  25 2c 6c 65 6e 67 74 68  |2%,exec2%,length|
000088f0  25 0d 3c fa 18 6c 6f 61  64 25 3d 6c 6f 61 64 32  |%.<..load%=load2|
00008900  25 20 80 20 26 46 46 46  46 0d 3d 04 18 65 78 65  |% . &FFFF.=..exe|
00008910  63 25 3d 65 78 65 63 32  25 20 80 20 26 46 46 46  |c%=exec2% . &FFF|
00008920  46 0d 3d 0e 37 e7 20 6f  62 6a 65 63 74 25 3d 30  |F.=.7. object%=0|
00008930  20 8c 20 65 78 65 63 25  3d 26 46 46 46 46 20 3a  | . exec%=&FFFF :|
00008940  20 f4 20 44 46 53 49 6d  61 67 65 20 62 75 74 20  | . DFSImage but |
00008950  6e 6f 20 21 42 6f 6f 74  0d 3d 18 23 6f 73 72 64  |no !Boot.=.#osrd|
00008960  63 68 24 3d 22 2a 2f 22  2b 41 24 2b bd 31 33 20  |ch$="*/"+A$+.13 |
00008970  3a 20 f4 20 64 65 66 61  75 6c 74 0d 3d 22 71 e7  |: . default.="q.|
00008980  20 65 78 65 63 25 3d 26  38 30 31 46 20 84 20 65  | exec%=&801F . e|
00008990  78 65 63 25 3d 26 38 30  32 33 20 84 20 65 78 65  |xec%=&8023 . exe|
000089a0  63 25 3d 26 38 30 32 42  20 84 20 65 78 65 63 25  |c%=&802B . exec%|
000089b0  3d 26 38 30 45 37 20 8c  20 6f 73 72 64 63 68 24  |=&80E7 . osrdch$|
000089c0  3d 22 50 41 47 45 3d 26  22 2b c3 7e 6c 6f 61 64  |="PAGE=&"+.~load|
000089d0  25 2b bd 31 33 2b 22 43  48 41 49 4e 22 2b bd 33  |%+.13+"CHAIN"+.3|
000089e0  34 2b 41 24 2b bd 33 34  2b bd 31 33 0d 3d 2c 3f  |4+A$+.34+.13.=,?|
000089f0  e7 20 28 6c 6f 61 64 32  25 20 80 20 26 46 46 46  |. (load2% . &FFF|
00008a00  30 30 29 3d 26 46 46 42  30 30 20 8c 20 6f 73 72  |00)=&FFB00 . osr|
00008a10  64 63 68 24 3d 22 43 48  41 49 4e 22 2b bd 33 34  |dch$="CHAIN"+.34|
00008a20  2b 41 24 2b bd 33 34 2b  bd 31 33 0d 3d 36 98 e7  |+A$+.34+.13.=6..|
00008a30  20 65 78 65 63 25 3d 26  46 46 46 46 20 84 20 28  | exec%=&FFFF . (|
00008a40  6c 6f 61 64 32 25 20 80  20 26 46 46 46 30 30 29  |load2% . &FFF00)|
00008a50  3d 26 46 46 45 30 30 20  84 20 28 6c 6f 61 64 32  |=&FFE00 . (load2|
00008a60  25 3d 30 20 80 20 65 78  65 63 32 25 3d 30 29 20  |%=0 . exec2%=0) |
00008a70  8c 20 6f 73 72 64 63 68  24 3d 22 2a 45 58 45 43  |. osrdch$="*EXEC|
00008a80  20 22 2b 41 24 2b bd 31  33 3a e7 20 6d 61 63 68  | "+A$+.13:. mach|
00008a90  69 6e 65 25 3d 30 20 8c  20 6f 73 72 64 63 68 24  |ine%=0 . osrdch$|
00008aa0  3d 22 50 41 47 45 3d 26  31 39 30 30 22 2b bd 31  |="PAGE=&1900"+.1|
00008ab0  33 2b 22 4e 45 57 22 2b  bd 31 33 2b 6f 73 72 64  |3+"NEW"+.13+osrd|
00008ac0  63 68 24 0d 3d 40 0d f2  72 65 73 65 74 28 32 29  |ch$.=@..reset(2)|
00008ad0  0d 3d 4a 13 6f 73 72 64  63 68 5f 63 6f 75 6e 74  |.=J.osrdch_count|
00008ae0  25 3d 30 0d 3d 54 1d 4f  53 52 44 43 48 5f 6c 6f  |%=0.=T.OSRDCH_lo|
00008af0  63 5f 74 6d 70 3d 4f 53  52 44 43 48 5f 6c 6f 63  |c_tmp=OSRDCH_loc|
00008b00  0d 3d 5e 10 4f 53 52 44  43 48 5f 6c 6f 63 3d 33  |.=^.OSRDCH_loc=3|
00008b10  0d 3d 68 05 e1 0d 3d 72  04 0d 3d 7c 0c dd f2 6f  |.=h...=r..=|...o|
00008b20  73 72 64 63 68 0d 3d 86  14 6f 73 72 64 63 68 5f  |srdch.=..osrdch_|
00008b30  63 6f 75 6e 74 25 2b 3d  31 0d 3d 90 22 61 3f 33  |count%+=1.=."a?3|
00008b40  3d 97 c1 6f 73 72 64 63  68 24 2c 6f 73 72 64 63  |=..osrdch$,osrdc|
00008b50  68 5f 63 6f 75 6e 74 25  2c 31 29 0d 3d 9a 08 f2  |h_count%,1).=...|
00008b60  72 74 73 0d 3d a4 52 e7  20 6f 73 72 64 63 68 5f  |rts.=.R. osrdch_|
00008b70  63 6f 75 6e 74 25 3d a9  6f 73 72 64 63 68 24 20  |count%=.osrdch$ |
00008b80  8c 20 4f 53 52 44 43 48  5f 6c 6f 63 3d 4f 53 52  |. OSRDCH_loc=OSR|
00008b90  44 43 48 5f 6c 6f 63 5f  74 6d 70 20 3a 20 f2 70  |DCH_loc_tmp : .p|
00008ba0  6f 6b 65 28 26 46 46 45  30 2c 4f 53 52 44 43 48  |oke(&FFE0,OSRDCH|
00008bb0  5f 6c 6f 63 29 0d 3d ae  05 e1 0d 3d b8 04 0d 3d  |_loc).=....=...=|
00008bc0  c2 10 dd a4 62 69 6e 61  72 79 28 42 25 29 0d 3d  |....binary(B%).=|
00008bd0  cc 0a ea 41 24 2c 49 25  0d 3d d6 0d e3 49 25 3d  |...A$,I%.=...I%=|
00008be0  30 20 b8 20 37 0d 3d e0  2b e7 20 28 42 25 20 80  |0 . 7.=.+. (B% .|
00008bf0  20 32 5e 49 25 29 3d 30  20 8c 20 41 24 3d 22 30  | 2^I%)=0 . A$="0|
00008c00  22 2b 41 24 20 8b 20 41  24 3d 22 31 22 2b 41 24  |"+A$ . A$="1"+A$|
00008c10  0d 3d ea 05 ed 0d 3d f4  07 3d 41 24 0d 3d fe 04  |.=....=..=A$.=..|
00008c20  0d 3e 08 11 dd f2 6e 65  77 70 61 74 68 28 46 24  |.>....newpath(F$|
00008c30  29 0d 3e 12 27 c8 99 20  22 4f 53 5f 47 53 54 72  |).>.'.. "OS_GSTr|
00008c40  61 6e 73 22 2c 46 24 2c  62 75 66 66 65 72 2c 32  |ans",F$,buffer,2|
00008c50  35 35 20 b8 20 2c 46 24  0d 3e 1c 15 66 73 24 3d  |55 . ,F$.>..fs$=|
00008c60  c0 46 24 2c a7 46 24 2c  22 3a 22 29 29 0d 3e 26  |.F$,.F$,":")).>&|
00008c70  14 46 24 3d c2 46 24 2c  a9 46 24 2d a9 66 73 24  |.F$=.F$,.F$-.fs$|
00008c80  29 0d 3e 30 04 0d 3e 3a  12 e7 20 c0 46 24 2c 31  |).>0..>:.. .F$,1|
00008c90  29 3d 22 3a 22 20 8c 0d  3e 44 17 64 69 73 63 24  |)=":" ..>D.disc$|
00008ca0  3d c0 46 24 2c a7 46 24  2c 22 2e 22 29 29 0d 3e  |=.F$,.F$,".")).>|
00008cb0  4e 16 46 24 3d c2 46 24  2c a9 46 24 2d a9 64 69  |N.F$=.F$,.F$-.di|
00008cc0  73 63 24 29 0d 3e 58 05  cc 0d 3e 62 0c 64 69 73  |sc$).>X...>b.dis|
00008cd0  63 24 3d 22 22 0d 3e 6c  05 cd 0d 3e 76 04 0d 3e  |c$="".>l...>v..>|
00008ce0  80 13 70 61 74 68 24 3d  a4 6c 65 61 66 28 46 24  |..path$=.leaf(F$|
00008cf0  29 0d 3e 8a 0f 73 75 62  70 61 74 68 24 3d 22 22  |).>..subpath$=""|
00008d00  0d 3e 94 48 e7 20 c1 70  61 74 68 24 2c a9 70 61  |.>.H. .path$,.pa|
00008d10  74 68 24 2d 31 2c 31 29  3d 22 2e 22 20 8c 20 73  |th$-1,1)="." . s|
00008d20  75 62 70 61 74 68 24 3d  c2 70 61 74 68 24 2c 32  |ubpath$=.path$,2|
00008d30  29 3a 70 61 74 68 24 3d  c0 70 61 74 68 24 2c a9  |):path$=.path$,.|
00008d40  70 61 74 68 24 2d 32 29  0d 3e 9e 05 e1 0d 3e a8  |path$-2).>....>.|
00008d50  04 0d 3e b2 11 dd a4 6e  75 6d 65 72 69 63 28 41  |..>....numeric(A|
00008d60  24 29 0d 3e bc 21 e7 20  41 24 3e 3d 22 30 22 20  |$).>.!. A$>="0" |
00008d70  80 20 41 24 3c 3d 22 39  22 20 8c 20 3d b9 20 8b  |. A$<="9" . =. .|
00008d80  20 3d a3 0d 3e c6 06 3d  30 0d 3e d0 0e dd a4 61  | =..>..=0.>....a|
00008d90  64 64 5f 28 46 24 29 0d  3e da 44 e7 20 c0 46 24  |dd_(F$).>.D. .F$|
00008da0  2c 31 29 3d 22 3a 22 20  80 20 a4 6e 75 6d 65 72  |,1)=":" . .numer|
00008db0  69 63 28 c1 46 24 2c 32  2c 31 29 29 20 80 20 c1  |ic(.F$,2,1)) . .|
00008dc0  46 24 2c 33 2c 31 29 3d  22 2e 22 20 8c 20 46 24  |F$,3,1)="." . F$|
00008dd0  3d c2 46 24 2c a9 46 24  2d 33 29 0d 3e e4 14 e7  |=.F$,.F$-3).>...|
00008de0  20 a7 46 24 2c 22 3a 22  29 20 8c 20 3d 46 24 0d  | .F$,":") . =F$.|
00008df0  3e ee 41 e7 20 c0 46 24  2c 31 29 3d bd 33 34 20  |>.A. .F$,1)=.34 |
00008e00  80 20 c2 46 24 2c 31 29  3d bd 33 34 20 8c 20 46  |. .F$,1)=.34 . F|
00008e10  24 3d c1 46 24 2c 32 2c  a9 46 24 2d 32 29 20 3a  |$=.F$,2,.F$-2) :|
00008e20  20 f4 20 52 65 6d 6f 76  65 20 71 75 6f 74 65 73  | . Remove quotes|
00008e30  0d 3e f8 04 0d 3f 02 2b  e7 20 28 46 24 3d 22 22  |.>...?.+. (F$=""|
00008e40  20 84 20 a7 46 24 2c 22  7c 22 29 29 20 80 20 69  | . .F$,"|")) . i|
00008e50  6e 64 65 78 66 69 6c 65  24 3c 3e 22 22 20 8c 0d  |ndexfile$<>"" ..|
00008e60  3f 0c 11 51 3d 8e 69 6e  64 65 78 66 69 6c 65 24  |?..Q=.indexfile$|
00008e70  0d 3f 16 0e cf 23 51 3d  69 6e 64 65 78 25 0d 3f  |.?...#Q=index%.?|
00008e80  20 0a 46 24 3d be 23 51  0d 3f 2a 11 6e 65 77 69  | .F$=.#Q.?*.newi|
00008e90  6e 64 65 78 25 3d 8f 23  51 0d 3f 34 21 e7 20 6e  |ndex%=.#Q.?4!. n|
00008ea0  65 77 69 6e 64 65 78 25  3d a2 23 51 20 8c 20 6e  |ewindex%=.#Q . n|
00008eb0  65 77 69 6e 64 65 78 25  3d 30 0d 3f 3e 07 d9 23  |ewindex%=0.?>..#|
00008ec0  51 0d 3f 48 05 cd 0d 3f  52 04 0d 3f 5c 14 e7 20  |Q.?H...?R..?\.. |
00008ed0  c1 46 24 2c 32 2c 31 29  3d 22 2e 22 20 8c 0d 3f  |.F$,2,1)="." ..?|
00008ee0  66 1e e7 20 c0 46 24 2c  31 29 3d 22 24 22 20 8c  |f.. .F$,1)="$" .|
00008ef0  20 3d c2 46 24 2c a9 46  24 2d 32 29 0d 3f 70 07  | =.F$,.F$-2).?p.|
00008f00  3d 46 24 0d 3f 7a 05 cc  0d 3f 84 07 3d 46 24 0d  |=F$.?z...?..=F$.|
00008f10  3f 8e 05 cd 0d 3f 98 07  3d 22 22 0d 3f a2 04 0d  |?....?..="".?...|
00008f20  3f ac 0f dd a4 5f 70 61  74 68 28 46 24 29 0d 3f  |?...._path(F$).?|
00008f30  b6 44 e7 20 c0 46 24 2c  31 29 3d 22 3a 22 20 80  |.D. .F$,1)=":" .|
00008f40  20 a4 6e 75 6d 65 72 69  63 28 c1 46 24 2c 32 2c  | .numeric(.F$,2,|
00008f50  31 29 29 20 80 20 c1 46  24 2c 33 2c 31 29 3d 22  |1)) . .F$,3,1)="|
00008f60  2e 22 20 8c 20 46 24 3d  c2 46 24 2c a9 46 24 2d  |." . F$=.F$,.F$-|
00008f70  33 29 0d 3f c0 14 e7 20  a7 46 24 2c 22 3a 22 29  |3).?... .F$,":")|
00008f80  20 8c 20 3d 22 22 0d 3f  ca 14 e7 20 c1 46 24 2c  | . ="".?... .F$,|
00008f90  32 2c 31 29 3d 22 2e 22  20 8c 0d 3f d4 18 3d 66  |2,1)="." ..?..=f|
00008fa0  73 24 2b 64 69 73 63 24  2b 70 61 74 68 24 2b 22  |s$+disc$+path$+"|
00008fb0  2e 22 0d 3f de 05 cc 0d  3f e8 21 3d 66 73 24 2b  |.".?....?.!=fs$+|
00008fc0  64 69 73 63 24 2b 70 61  74 68 24 2b 73 75 62 70  |disc$+path$+subp|
00008fd0  61 74 68 24 2b 22 2e 22  0d 3f f2 05 cd 0d 3f fc  |ath$+".".?....?.|
00008fe0  07 3d 22 22 0d 40 06 04  0d 40 10 11 dd a4 61 64  |.="".@...@....ad|
00008ff0  64 70 61 74 68 28 46 24  29 0d 40 1a 44 e7 20 c0  |dpath(F$).@.D. .|
00009000  46 24 2c 31 29 3d 22 3a  22 20 80 20 a4 6e 75 6d  |F$,1)=":" . .num|
00009010  65 72 69 63 28 c1 46 24  2c 32 2c 31 29 29 20 80  |eric(.F$,2,1)) .|
00009020  20 c1 46 24 2c 33 2c 31  29 3d 22 2e 22 20 8c 20  | .F$,3,1)="." . |
00009030  46 24 3d c2 46 24 2c a9  46 24 2d 33 29 0d 40 24  |F$=.F$,.F$-3).@$|
00009040  14 e7 20 a7 46 24 2c 22  3a 22 29 20 8c 20 3d 46  |.. .F$,":") . =F|
00009050  24 0d 40 2e 41 e7 20 c0  46 24 2c 31 29 3d bd 33  |$.@.A. .F$,1)=.3|
00009060  34 20 80 20 c2 46 24 2c  31 29 3d bd 33 34 20 8c  |4 . .F$,1)=.34 .|
00009070  20 46 24 3d c1 46 24 2c  32 2c a9 46 24 2d 32 29  | F$=.F$,2,.F$-2)|
00009080  20 3a 20 f4 20 52 65 6d  6f 76 65 20 71 75 6f 74  | : . Remove quot|
00009090  65 73 0d 40 38 14 e7 20  c1 46 24 2c 32 2c 31 29  |es.@8.. .F$,2,1)|
000090a0  3d 22 2e 22 20 8c 0d 40  42 28 e7 20 c0 46 24 2c  |="." ..@B(. .F$,|
000090b0  31 29 3d 22 24 22 20 8c  20 3d 70 61 74 68 24 2b  |1)="$" . =path$+|
000090c0  22 2e 22 2b c2 46 24 2c  a9 46 24 2d 32 29 0d 40  |"."+.F$,.F$-2).@|
000090d0  4c 1b 3d 66 73 24 2b 64  69 73 63 24 2b 70 61 74  |L.=fs$+disc$+pat|
000090e0  68 24 2b 22 2e 22 2b 46  24 0d 40 56 05 cc 0d 40  |h$+"."+F$.@V...@|
000090f0  60 24 3d 66 73 24 2b 64  69 73 63 24 2b 70 61 74  |`$=fs$+disc$+pat|
00009100  68 24 2b 73 75 62 70 61  74 68 24 2b 22 2e 22 2b  |h$+subpath$+"."+|
00009110  46 24 0d 40 6a 05 cd 0d  40 74 07 3d 22 22 0d 40  |F$.@j...@t.="".@|
00009120  7e 04 0d 40 88 0f dd a4  73 74 72 69 70 28 46 24  |~..@....strip(F$|
00009130  29 0d 40 92 07 ea 49 25  0d 40 9c 2b f5 49 25 2b  |).@...I%.@.+.I%+|
00009140  3d 31 3a fd c1 46 24 2c  49 25 2c 31 29 3c 3e 22  |=1:..F$,I%,1)<>"|
00009150  2a 22 20 80 20 c1 46 24  2c 49 25 2c 31 29 3c 3e  |*" . .F$,I%,1)<>|
00009160  22 20 22 0d 40 a6 12 3d  c2 46 24 2c a9 46 24 2d  |" ".@..=.F$,.F$-|
00009170  49 25 2b 31 29 0d 40 b0  04 0d 40 ba 11 dd f2 73  |I%+1).@...@....s|
00009180  74 72 69 70 28 f8 20 73  24 29 0d 40 c4 11 c8 95  |trip(. s$).@....|
00009190  20 c0 73 24 2c 31 29 3d  22 20 22 0d 40 ce 0e 20  | .s$,1)=" ".@.. |
000091a0  73 24 3d c1 73 24 2c 32  29 0d 40 d8 05 ce 0d 40  |s$=.s$,2).@....@|
000091b0  e2 11 c8 95 20 c2 73 24  2c 31 29 3d 22 20 22 0d  |.... .s$,1)=" ".|
000091c0  40 ec 13 20 73 24 3d c0  73 24 2c a9 20 73 24 2d  |@.. s$=.s$,. s$-|
000091d0  31 29 0d 40 f6 05 ce 0d  41 00 05 e1 0d 41 0a 04  |1).@....A....A..|
000091e0  0d 41 14 12 dd f2 73 74  72 69 70 32 28 f8 20 73  |.A....strip2(. s|
000091f0  24 29 0d 41 1e 1e c8 95  20 c0 73 24 2c 31 29 3d  |$).A.... .s$,1)=|
00009200  22 20 22 20 84 20 c0 73  24 2c 31 29 3d 22 2a 22  |" " . .s$,1)="*"|
00009210  0d 41 28 0e 20 73 24 3d  c1 73 24 2c 32 29 0d 41  |.A(. s$=.s$,2).A|
00009220  32 05 ce 0d 41 3c 1e c8  95 20 c2 73 24 2c 31 29  |2...A<... .s$,1)|
00009230  3d 22 20 22 20 84 20 c2  73 24 2c 31 29 3d 22 2a  |=" " . .s$,1)="*|
00009240  22 0d 41 46 13 20 73 24  3d c0 73 24 2c a9 20 73  |".AF. s$=.s$,. s|
00009250  24 2d 31 29 0d 41 50 05  ce 0d 41 5a 05 e1 0d 41  |$-1).AP...AZ...A|
00009260  64 04 0d 41 6e 0d dd f2  64 69 72 28 44 24 29 0d  |d..An...dir(D$).|
00009270  41 78 35 46 53 24 3d 66  73 24 3a 44 49 53 43 24  |Ax5FS$=fs$:DISC$|
00009280  3d 64 69 73 63 24 3a 50  41 54 48 24 3d 70 61 74  |=disc$:PATH$=pat|
00009290  68 24 3a 53 55 42 50 41  54 48 24 3d 73 75 62 70  |h$:SUBPATH$=subp|
000092a0  61 74 68 24 0d 41 82 12  f4 50 52 49 4e 54 44 24  |ath$.A...PRINTD$|
000092b0  3a 51 3d 47 45 54 0d 41  8c 07 ea 49 25 0d 41 96  |:Q=GET.A...I%.A.|
000092c0  1a f5 49 25 2b 3d 31 3a  fd c1 44 24 2c 49 25 2c  |..I%+=1:..D$,I%,|
000092d0  31 29 3c 3e 22 20 22 0d  41 a0 14 44 24 3d c2 44  |1)<>" ".A..D$=.D|
000092e0  24 2c a9 44 24 2d 49 25  2b 31 29 0d 41 aa 10 e7  |$,.D$-I%+1).A...|
000092f0  20 a7 44 24 2c 22 20 22  29 20 8c 0d 41 b4 16 44  | .D$," ") ..A..D|
00009300  24 3d c0 44 24 2c a7 44  24 2c 22 20 22 29 2d 31  |$=.D$,.D$," ")-1|
00009310  29 0d 41 be 05 cc 0d 41  c8 2e e7 20 a9 44 24 3d  |).A....A... .D$=|
00009320  34 20 80 20 c0 a4 75 70  70 65 72 28 44 24 29 2c  |4 . ..upper(D$),|
00009330  33 29 3d 22 44 49 52 22  20 8c 20 44 24 3d c2 44  |3)="DIR" . D$=.D|
00009340  24 2c 31 29 0d 41 d2 05  cd 0d 41 dc 04 0d 41 e6  |$,1).A....A...A.|
00009350  0e e7 20 44 24 3d 22 5e  22 20 8c 0d 41 f0 27 e7  |.. D$="^" ..A.'.|
00009360  20 73 75 62 70 61 74 68  24 3c 3e 22 22 20 8c 20  | subpath$<>"" . |
00009370  73 75 62 70 61 74 68 24  3d 22 22 3a f2 72 74 73  |subpath$="":.rts|
00009380  3a e1 0d 41 fa 26 e7 20  a7 70 61 74 68 24 2c 22  |:..A.&. .path$,"|
00009390  2e 22 29 3d 30 20 8c 20  70 61 74 68 24 3d 22 24  |.")=0 . path$="$|
000093a0  22 3a f2 72 74 73 3a e1  0d 42 04 0d 49 25 3d a9  |":.rts:..B..I%=.|
000093b0  70 61 74 68 24 0d 42 0e  1c f5 49 25 2d 3d 31 3a  |path$.B...I%-=1:|
000093c0  fd c1 70 61 74 68 24 2c  49 25 2c 31 29 3d 22 2e  |..path$,I%,1)=".|
000093d0  22 0d 42 18 16 70 61 74  68 24 3d c0 70 61 74 68  |".B..path$=.path|
000093e0  24 2c 49 25 2d 31 29 0d  42 22 0a f2 72 74 73 3a  |$,I%-1).B"..rts:|
000093f0  e1 0d 42 2c 05 cd 0d 42  36 04 0d 42 40 29 e7 20  |..B,...B6..B@). |
00009400  44 24 3d 22 24 22 20 84  20 a9 44 24 3d 30 20 8c  |D$="$" . .D$=0 .|
00009410  20 73 75 62 70 61 74 68  24 3d 22 22 3a f2 72 74  | subpath$="":.rt|
00009420  73 3a e1 0d 42 4a 0d e7  20 a9 44 24 3d 31 20 8c  |s:..BJ.. .D$=1 .|
00009430  0d 42 54 36 c8 99 20 22  58 4f 53 5f 46 69 6c 65  |.BT6.. "XOS_File|
00009440  22 2c 31 33 2c 44 24 2c  2c 2c 66 73 24 2b 64 69  |",13,D$,,,fs$+di|
00009450  73 63 24 2b 70 61 74 68  24 2b 22 2e 22 20 b8 20  |sc$+path$+"." . |
00009460  41 25 20 3b 20 46 0d 42  5e 1f e7 20 28 46 20 80  |A% ; F.B^.. (F .|
00009470  20 31 29 3c 3e 30 20 8c  20 f2 73 77 69 5f 65 72  | 1)<>0 . .swi_er|
00009480  72 6f 72 3a e1 0d 42 68  82 e7 20 28 41 25 20 80  |ror:..Bh.. (A% .|
00009490  20 32 29 3d 30 20 80 20  a9 44 24 3d 31 20 8c 20  | 2)=0 . .D$=1 . |
000094a0  73 75 62 70 61 74 68 24  3d 22 22 3a f2 72 74 73  |subpath$="":.rts|
000094b0  3a e1 20 3a 20 f4 20 6e  6f 20 65 72 72 6f 72 20  |:. : . no error |
000094c0  72 65 74 75 72 6e 65 64  20 69 66 20 79 6f 75 20  |returned if you |
000094d0  74 72 79 20 74 6f 20 63  68 61 6e 67 65 20 74 6f  |try to change to|
000094e0  20 61 20 6e 6f 6e 2d 65  78 69 73 74 69 6e 67 20  | a non-existing |
000094f0  73 69 6e 67 6c 65 20 6c  65 74 74 65 72 20 64 69  |single letter di|
00009500  72 65 63 74 6f 72 79 0d  42 72 52 e7 20 28 41 25  |rectory.BrR. (A%|
00009510  20 80 20 32 29 3d 30 20  8c 20 f2 62 72 6b 28 32  | . 2)=0 . .brk(2|
00009520  31 34 2c 22 44 69 72 65  63 74 6f 72 79 20 27 22  |14,"Directory '"|
00009530  2b 44 24 2b 22 27 20 6e  6f 74 20 66 6f 75 6e 64  |+D$+"' not found|
00009540  22 29 20 8b 20 73 75 62  70 61 74 68 24 3d 22 2e  |") . subpath$=".|
00009550  22 2b 44 24 3a f2 72 74  73 0d 42 7c 05 e1 0d 42  |"+D$:.rts.B|...B|
00009560  86 05 cd 0d 42 90 04 0d  42 9a 12 e7 20 a7 44 24  |....B...B... .D$|
00009570  2c 22 3a 22 29 3e 31 20  8c 0d 42 a4 4c e7 20 c2  |,":")>1 ..B.L. .|
00009580  44 24 2c 31 29 3c 3e 22  3a 22 20 8c 20 c8 99 20  |D$,1)<>":" . .. |
00009590  22 58 4f 53 5f 46 69 6c  65 22 2c 31 37 2c 44 24  |"XOS_File",17,D$|
000095a0  20 b8 20 41 25 20 3b 20  46 3a e7 20 28 46 20 80  | . A% ; F:. (F .|
000095b0  20 31 29 3c 3e 30 20 8c  20 f2 73 77 69 5f 65 72  | 1)<>0 . .swi_er|
000095c0  72 6f 72 3a e1 0d 42 ae  24 c8 99 20 22 4f 53 5f  |ror:..B.$.. "OS_|
000095d0  46 53 43 6f 6e 74 72 6f  6c 22 2c 31 31 2c 44 24  |FSControl",11,D$|
000095e0  20 b8 20 2c 45 24 2c 45  25 0d 42 b8 60 e7 20 45  | . ,E$,E%.B.`. E|
000095f0  25 3c 3e 2d 31 20 8c 20  c8 99 20 22 4f 53 5f 46  |%<>-1 . .. "OS_F|
00009600  53 43 6f 6e 74 72 6f 6c  22 2c 31 39 3a 66 73 24  |SControl",19:fs$|
00009610  3d c0 44 24 2c a9 44 24  2d a9 45 24 29 3a 44 24  |=.D$,.D$-.E$):D$|
00009620  3d 45 24 20 8b 20 f2 62  72 6b 28 32 34 38 2c 22  |=E$ . .brk(248,"|
00009630  4e 6f 20 73 75 63 68 20  66 69 6c 69 6e 67 20 73  |No such filing s|
00009640  79 73 74 65 6d 22 29 3a  e1 0d 42 c2 0c 70 61 74  |ystem"):..B..pat|
00009650  68 24 3d 22 22 0d 42 cc  0f 73 75 62 70 61 74 68  |h$="".B..subpath|
00009660  24 3d 22 22 0d 42 d6 0c  64 69 73 63 24 3d 22 22  |$="".B..disc$=""|
00009670  0d 42 e0 1d e7 20 c0 44  24 2c 31 29 3c 3e 22 3a  |.B... .D$,1)<>":|
00009680  22 20 8c 20 70 61 74 68  24 3d 22 24 22 0d 42 ea  |" . path$="$".B.|
00009690  05 cd 0d 42 f4 04 0d 42  fe 12 e7 20 c0 44 24 2c  |...B...B... .D$,|
000096a0  31 29 3d 22 3a 22 20 8c  0d 43 08 11 49 25 3d 30  |1)=":" ..C..I%=0|
000096b0  3a 64 69 73 63 24 3d 22  22 0d 43 12 0b f5 20 49  |:disc$="".C... I|
000096c0  25 2b 3d 31 0d 43 1c 19  64 69 73 63 24 3d 64 69  |%+=1.C..disc$=di|
000096d0  73 63 24 2b c1 44 24 2c  49 25 2c 31 29 0d 43 26  |sc$+.D$,I%,1).C&|
000096e0  1e fd 20 c1 44 24 2c 49  25 2b 31 2c 31 29 3d 22  |.. .D$,I%+1,1)="|
000096f0  2e 22 20 84 20 49 25 3d  a9 44 24 0d 43 30 2b e7  |." . I%=.D$.C0+.|
00009700  20 49 25 3d a9 44 24 20  8c 20 44 24 3d 22 22 20  | I%=.D$ . D$="" |
00009710  8b 20 44 24 3d c2 44 24  2c a9 44 24 2d a9 64 69  |. D$=.D$,.D$-.di|
00009720  73 63 24 2d 31 29 0d 43  3a 18 70 61 74 68 24 3d  |sc$-1).C:.path$=|
00009730  22 22 3a 73 75 62 70 61  74 68 24 3d 22 22 0d 43  |"":subpath$="".C|
00009740  44 05 cd 0d 43 4e 04 0d  43 58 3e e7 20 c0 44 24  |D...CN..CX>. .D$|
00009750  2c 31 29 3d 22 24 22 20  80 20 a9 44 24 3e 32 20  |,1)="$" . .D$>2 |
00009760  8c 20 70 61 74 68 24 3d  22 24 22 3a 73 75 62 70  |. path$="$":subp|
00009770  61 74 68 24 3d 22 22 3a  44 24 3d c2 44 24 2c a9  |ath$="":D$=.D$,.|
00009780  44 24 2d 32 29 0d 43 62  04 0d 43 6c 3e e7 20 64  |D$-2).Cb..Cl>. d|
00009790  69 73 63 24 3c 3e 22 22  20 80 20 c2 64 69 73 63  |isc$<>"" . .disc|
000097a0  24 2c 31 29 3c 3e 22 2e  22 20 80 20 70 61 74 68  |$,1)<>"." . path|
000097b0  24 3c 3e 22 22 20 8c 20  64 69 73 63 24 3d 64 69  |$<>"" . disc$=di|
000097c0  73 63 24 2b 22 2e 22 0d  43 76 3f c8 99 20 22 58  |sc$+".".Cv?.. "X|
000097d0  4f 53 5f 46 69 6c 65 22  2c 31 33 2c 44 24 2c 2c  |OS_File",13,D$,,|
000097e0  2c 66 73 24 2b 64 69 73  63 24 2b 70 61 74 68 24  |,fs$+disc$+path$|
000097f0  2b 73 75 62 70 61 74 68  24 2b 22 2e 22 20 b8 20  |+subpath$+"." . |
00009800  41 25 20 3b 20 46 0d 43  80 32 e7 20 64 69 73 63  |A% ; F.C.2. disc|
00009810  24 3c 3e 22 22 20 80 20  c2 64 69 73 63 24 2c 31  |$<>"" . .disc$,1|
00009820  29 3c 3e 22 2e 22 20 8c  20 64 69 73 63 24 3d 64  |)<>"." . disc$=d|
00009830  69 73 63 24 2b 22 2e 22  0d 43 8a 2b e7 20 28 46  |isc$+".".C.+. (F|
00009840  20 80 20 31 29 3c 3e 30  20 8c 20 f2 72 65 73 74  | . 1)<>0 . .rest|
00009850  6f 72 65 43 53 44 3a f2  73 77 69 5f 65 72 72 6f  |oreCSD:.swi_erro|
00009860  72 3a e1 0d 43 94 12 e7  20 28 41 25 20 80 20 32  |r:..C... (A% . 2|
00009870  29 3d 30 20 8c 0d 43 9e  0f f2 72 65 73 74 6f 72  |)=0 ..C...restor|
00009880  65 43 53 44 0d 43 a8 2c  f2 62 72 6b 28 32 31 34  |eCSD.C.,.brk(214|
00009890  2c 22 44 69 72 65 63 74  6f 72 79 20 27 22 2b 44  |,"Directory '"+D|
000098a0  24 2b 22 27 20 6e 6f 74  20 66 6f 75 6e 64 22 29  |$+"' not found")|
000098b0  0d 43 b2 05 cc 0d 43 bc  0e e7 20 44 24 3c 3e 22  |.C....C... D$<>"|
000098c0  22 20 8c 0d 43 c6 44 e7  20 70 61 74 68 24 3c 3e  |" ..C.D. path$<>|
000098d0  22 22 20 8c 20 70 61 74  68 24 3d 70 61 74 68 24  |"" . path$=path$|
000098e0  2b 73 75 62 70 61 74 68  24 2b 22 2e 22 2b 44 24  |+subpath$+"."+D$|
000098f0  3a 73 75 62 70 61 74 68  24 3d 22 22 20 8b 20 70  |:subpath$="" . p|
00009900  61 74 68 24 3d 44 24 0d  43 d0 05 cd 0d 43 da 08  |ath$=D$.C....C..|
00009910  f2 72 74 73 0d 43 e4 05  cd 0d 43 ee 1a e7 20 70  |.rts.C....C... p|
00009920  61 74 68 24 3d 22 22 20  8c 20 70 61 74 68 24 3d  |ath$="" . path$=|
00009930  22 24 22 0d 43 f8 05 e1  0d 44 02 04 0d 44 0c 0a  |"$".C....D...D..|
00009940  dd f2 62 61 63 6b 0d 44  16 0e c8 94 20 66 73 24  |..back.D.... fs$|
00009950  2c 46 53 24 0d 44 20 12  c8 94 20 64 69 73 63 24  |,FS$.D ... disc$|
00009960  2c 44 49 53 43 24 0d 44  2a 12 c8 94 20 70 61 74  |,DISC$.D*... pat|
00009970  68 24 2c 50 41 54 48 24  0d 44 34 18 c8 94 20 73  |h$,PATH$.D4... s|
00009980  75 62 70 61 74 68 24 2c  53 55 42 50 41 54 48 24  |ubpath$,SUBPATH$|
00009990  0d 44 3e 05 e1 0d 44 48  04 0d 44 52 10 dd f2 72  |.D>...DH..DR...r|
000099a0  65 73 74 6f 72 65 43 53  44 0d 44 5c 35 66 73 24  |estoreCSD.D\5fs$|
000099b0  3d 46 53 24 3a 64 69 73  63 24 3d 44 49 53 43 24  |=FS$:disc$=DISC$|
000099c0  3a 70 61 74 68 24 3d 50  41 54 48 24 3a 73 75 62  |:path$=PATH$:sub|
000099d0  70 61 74 68 24 3d 53 55  42 50 41 54 48 24 0d 44  |path$=SUBPATH$.D|
000099e0  66 05 e1 0d 44 70 04 0d  44 7a 0b dd f2 6f 73 66  |f...Dp..Dz...osf|
000099f0  73 63 0d 44 84 1c f4 50  52 49 4e 54 22 4f 53 46  |sc.D...PRINT"OSF|
00009a00  53 43 20 22 3b 61 3f 33  3a 51 3d 47 45 54 0d 44  |SC ";a?3:Q=GET.D|
00009a10  8e 0c c8 8e 20 61 3f 33  20 ca 0d 44 98 24 20 20  |.... a?3 ..D.$  |
00009a20  c9 20 31 20 20 20 3a 20  f4 78 3f 33 3d 28 45 4f  |. 1   : .x?3=(EO|
00009a30  46 23 78 3f 33 29 20 41  4e 44 20 26 46 46 0d 44  |F#x?3) AND &FF.D|
00009a40  a2 32 20 20 20 20 20 20  20 20 20 20 20 20 20 c8  |.2             .|
00009a50  99 20 22 58 4f 53 5f 41  72 67 73 22 2c 35 2c 78  |. "XOS_Args",5,x|
00009a60  3f 33 20 b8 20 41 25 2c  2c 78 3f 33 20 3b 20 46  |?3 . A%,,x?3 ; F|
00009a70  0d 44 ac 30 20 20 20 20  20 20 20 20 20 20 20 20  |.D.0            |
00009a80  20 e7 20 28 46 20 80 20  31 29 3d 30 20 8c 20 f2  | . (F . 1)=0 . .|
00009a90  72 74 73 20 8b 20 f2 73  77 69 5f 65 72 72 6f 72  |rts . .swi_error|
00009aa0  0d 44 b6 23 20 20 20 20  20 20 20 20 20 20 20 20  |.D.#            |
00009ab0  20 e7 20 78 3f 33 3c 3e  30 20 8c 20 78 3f 33 3d  | . x?3<>0 . x?3=|
00009ac0  26 46 46 0d 44 c0 2a 20  20 c9 20 33 20 20 20 3a  |&FF.D.*  . 3   :|
00009ad0  20 61 64 64 72 3d a4 61  64 64 72 28 78 3f 33 2b  | addr=.addr(x?3+|
00009ae0  28 28 79 3f 33 29 20 3c  3c 20 38 29 29 0d 44 ca  |((y?3) << 8)).D.|
00009af0  21 20 20 20 20 20 20 20  20 20 20 20 20 20 62 24  |!             b$|
00009b00  3d a4 73 74 72 69 70 28  24 61 64 64 72 29 0d 44  |=.strip($addr).D|
00009b10  d4 3f 20 20 20 20 20 20  20 20 20 20 20 20 20 c8  |.?             .|
00009b20  99 20 22 58 4f 53 5f 46  69 6e 64 22 2c 26 34 44  |. "XOS_Find",&4D|
00009b30  2c a4 61 64 64 5f 28 62  24 29 2c a4 5f 70 61 74  |,.add_(b$),._pat|
00009b40  68 28 62 24 29 20 b8 20  51 20 3b 20 46 0d 44 de  |h(b$) . Q ; F.D.|
00009b50  15 20 20 20 20 20 20 20  20 20 20 20 20 20 41 25  |.             A%|
00009b60  3d 51 0d 44 e8 04 0d 44  f2 25 20 20 20 20 20 20  |=Q.D...D.%      |
00009b70  20 20 20 20 20 20 20 e7  20 51 3d 30 20 84 20 28  |       . Q=0 . (|
00009b80  46 20 80 20 31 29 3c 3e  30 20 8c 0d 44 fc 4b 20  |F . 1)<>0 ..D.K |
00009b90  20 20 20 20 20 20 20 20  20 20 20 20 e7 20 c0 a4  |            . ..|
00009ba0  75 70 70 65 72 28 62 24  29 2c 34 29 3d 22 44 49  |upper(b$),4)="DI|
00009bb0  52 20 22 20 84 20 28 c0  a4 75 70 70 65 72 28 62  |R " . (..upper(b|
00009bc0  24 29 2c 33 29 3d 22 44  49 52 22 20 80 20 a9 62  |$),3)="DIR" . .b|
00009bd0  24 3d 34 29 20 8c 0d 45  06 21 20 20 20 20 20 20  |$=4) ..E.!      |
00009be0  20 20 20 20 20 20 20 f2  64 69 72 28 c2 62 24 2c  |       .dir(.b$,|
00009bf0  a9 62 24 2d 34 29 29 0d  45 10 12 20 20 20 20 20  |.b$-4)).E..     |
00009c00  20 20 20 20 20 20 20 20  cc 0d 45 1a 1b 20 20 20  |        ..E..   |
00009c10  20 20 20 20 20 20 20 20  20 20 e7 20 4f 73 63 6c  |          . Oscl|
00009c20  69 25 20 8c 0d 45 24 29  20 20 20 20 20 20 20 20  |i% ..E$)        |
00009c30  20 20 20 20 20 c8 99 20  22 58 4f 53 5f 43 4c 49  |     .. "XOS_CLI|
00009c40  22 2c 62 24 20 b8 20 41  25 20 3b 20 46 0d 45 2e  |",b$ . A% ; F.E.|
00009c50  30 20 20 20 20 20 20 20  20 20 20 20 20 20 e7 20  |0             . |
00009c60  28 46 20 80 20 31 29 3d  30 20 8c 20 f2 72 74 73  |(F . 1)=0 . .rts|
00009c70  20 8b 20 f2 73 77 69 5f  65 72 72 6f 72 0d 45 38  | . .swi_error.E8|
00009c80  12 20 20 20 20 20 20 20  20 20 20 20 20 20 cc 0d  |.             ..|
00009c90  45 42 28 20 20 20 20 20  20 20 20 20 20 20 20 20  |EB(             |
00009ca0  f2 62 72 6b 28 32 35 34  2c 22 42 61 64 20 43 6f  |.brk(254,"Bad Co|
00009cb0  6d 6d 61 6e 64 22 29 0d  45 4c 12 20 20 20 20 20  |mmand").EL.     |
00009cc0  20 20 20 20 20 20 20 20  cd 0d 45 56 12 20 20 20  |        ..EV.   |
00009cd0  20 20 20 20 20 20 20 20  20 20 cd 0d 45 60 12 20  |          ..E`. |
00009ce0  20 20 20 20 20 20 20 20  20 20 20 20 cc 0d 45 6a  |            ..Ej|
00009cf0  14 20 20 20 20 20 20 20  20 20 20 20 20 20 d9 23  |.             .#|
00009d00  51 0d 45 74 20 20 20 20  20 20 20 20 20 20 20 20  |Q.Et            |
00009d10  20 20 62 24 3d a4 61 64  64 70 61 74 68 28 62 24  |  b$=.addpath(b$|
00009d20  29 0d 45 7e 43 20 20 20  20 20 20 20 20 20 20 20  |).E~C           |
00009d30  20 20 c8 99 20 22 4f 53  5f 46 69 6c 65 22 2c 35  |  .. "OS_File",5|
00009d40  2c 62 24 20 b8 20 2c 2c  63 25 2c 64 25 20 3a 20  |,b$ . ,,c%,d% : |
00009d50  63 25 3d a4 61 64 64 72  28 63 25 20 80 20 26 46  |c%=.addr(c% . &F|
00009d60  46 46 46 29 0d 45 88 29  20 20 20 20 20 20 20 20  |FFF).E.)        |
00009d70  20 20 20 20 20 c8 99 20  22 4f 53 5f 46 69 6c 65  |     .. "OS_File|
00009d80  22 2c 32 35 35 2c 62 24  2c 63 25 2c 30 0d 45 92  |",255,b$,c%,0.E.|
00009d90  23 20 20 20 20 20 20 20  20 20 20 20 20 20 21 70  |#             !p|
00009da0  63 5f 73 74 6f 72 65 3d  64 25 20 3c 3c 20 31 36  |c_store=d% << 16|
00009db0  0d 45 9c 12 20 20 20 20  20 20 20 20 20 20 20 20  |.E..            |
00009dc0  20 cd 0d 45 a6 2a 20 20  c9 20 32 2c 34 20 3a 20  | ..E.*  . 2,4 : |
00009dd0  61 64 64 72 3d a4 61 64  64 72 28 78 3f 33 2b 28  |addr=.addr(x?3+(|
00009de0  28 79 3f 33 29 20 3c 3c  20 38 29 29 0d 45 b0 19  |(y?3) << 8)).E..|
00009df0  20 20 20 20 20 20 20 20  20 20 20 20 20 62 24 3d  |             b$=|
00009e00  24 61 64 64 72 0d 45 ba  22 20 20 20 20 20 20 20  |$addr.E."       |
00009e10  20 20 20 20 20 20 f4 62  24 3d 46 4e 61 64 64 70  |      .b$=FNaddp|
00009e20  61 74 68 28 62 24 29 0d  45 c4 68 20 20 20 20 20  |ath(b$).E.h     |
00009e30  20 20 20 20 20 20 20 20  c8 99 20 22 58 4f 53 5f  |        .. "XOS_|
00009e40  46 69 6c 65 22 2c 31 33  2c a4 61 64 64 5f 28 62  |File",13,.add_(b|
00009e50  24 29 2c 2c 2c a4 5f 70  61 74 68 28 62 24 29 20  |$),,,._path(b$) |
00009e60  b8 20 41 25 2c 2c 63 25  2c 64 25 2c 6c 65 6e 67  |. A%,,c%,d%,leng|
00009e70  74 68 25 20 3b 20 66 25  20 3a 20 63 25 3d a4 61  |th% ; f% : c%=.a|
00009e80  64 64 72 28 63 25 20 80  20 26 46 46 46 46 29 0d  |ddr(c% . &FFFF).|
00009e90  45 ce 56 20 20 20 20 20  20 20 20 20 20 20 20 20  |E.V             |
00009ea0  e7 20 63 25 2b 6c 65 6e  67 74 68 25 3e 6d 65 6d  |. c%+length%>mem|
00009eb0  6f 72 79 2b 26 38 30 30  30 20 80 20 63 25 3c 6d  |ory+&8000 . c%<m|
00009ec0  65 6d 6f 72 79 2b 26 38  30 30 30 20 8c 20 6c 65  |emory+&8000 . le|
00009ed0  6e 67 74 68 25 3d 6d 65  6d 6f 72 79 2b 26 38 30  |ngth%=memory+&80|
00009ee0  30 30 2d 63 25 0d 45 d8  41 20 20 20 20 20 20 20  |00-c%.E.A       |
00009ef0  20 20 20 20 20 20 c8 99  20 22 58 4f 53 5f 46 69  |      .. "XOS_Fi|
00009f00  6e 64 22 2c 26 34 44 2c  a4 61 64 64 5f 28 62 24  |nd",&4D,.add_(b$|
00009f10  29 2c a4 5f 70 61 74 68  28 62 24 29 20 b8 20 41  |),._path(b$) . A|
00009f20  25 20 3b 20 66 25 0d 45  e2 50 20 20 20 20 20 20  |% ; f%.E.P      |
00009f30  20 20 20 20 20 20 20 e7  20 28 66 25 20 80 20 31  |       . (f% . 1|
00009f40  29 3d 30 20 8c 20 c8 99  20 22 58 4f 53 5f 47 42  |)=0 . .. "XOS_GB|
00009f50  50 42 22 2c 34 2c 41 25  2c 63 25 2c 6c 65 6e 67  |PB",4,A%,c%,leng|
00009f60  74 68 25 3a c8 99 20 22  58 4f 53 5f 46 69 6e 64  |th%:.. "XOS_Find|
00009f70  22 2c 30 2c 41 25 0d 45  ec 5f 20 20 20 20 20 20  |",0,A%.E._      |
00009f80  20 20 20 20 20 20 20 f4  49 46 20 28 66 25 20 41  |       .IF (f% A|
00009f90  4e 44 20 31 29 3d 30 20  54 48 45 4e 20 53 59 53  |ND 1)=0 THEN SYS|
00009fa0  20 22 58 4f 53 5f 46 69  6c 65 22 2c 31 32 2c 46  | "XOS_File",12,F|
00009fb0  4e 61 64 64 5f 28 62 24  29 2c 63 25 2c 30 2c 46  |Nadd_(b$),c%,0,F|
00009fc0  4e 5f 70 61 74 68 28 62  24 29 20 54 4f 20 41 25  |N_path(b$) TO A%|
00009fd0  20 3b 20 66 25 0d 45 f6  3f 20 20 20 20 20 20 20  | ; f%.E.?       |
00009fe0  20 20 20 20 20 20 e7 20  28 66 25 20 80 20 31 29  |      . (f% . 1)|
00009ff0  3d 30 20 8c 20 21 70 63  5f 73 74 6f 72 65 3d 64  |=0 . !pc_store=d|
0000a000  25 20 3c 3c 20 31 36 20  8b 20 f2 73 77 69 5f 65  |% << 16 . .swi_e|
0000a010  72 72 6f 72 0d 46 00 2c  20 20 c9 20 35 20 20 20  |rror.F.,  . 5   |
0000a020  3a 20 f2 72 74 73 3a f4  4f 53 43 4c 49 22 43 41  |: .rts:.OSCLI"CA|
0000a030  54 22 3a 51 3d 47 45 54  3a 50 52 4f 43 72 74 73  |T":Q=GET:PROCrts|
0000a040  0d 46 0a 14 20 20 c9 20  30 2c 36 2c 38 20 3a 20  |.F..  . 0,6,8 : |
0000a050  f2 72 74 73 0d 46 14 33  20 20 c9 20 39 2c 31 30  |.rts.F.3  . 9,10|
0000a060  2c 31 31 20 3a 20 f2 72  74 73 20 3a 20 f4 20 2a  |,11 : .rts : . *|
0000a070  45 58 2c 20 2a 49 4e 46  4f 2c 20 2a 52 55 4e 20  |EX, *INFO, *RUN |
0000a080  28 4c 69 62 46 53 29 0d  46 1e 1c 20 20 7f 20 20  |(LibFS).F..  .  |
0000a090  f1 22 4f 53 46 53 43 20  22 3b 61 3f 33 20 3a 20  |."OSFSC ";a?3 : |
0000a0a0  51 3d a5 0d 46 28 05 cb  0d 46 32 05 e1 0d 46 3c  |Q=..F(...F2...F<|
0000a0b0  04 0d 46 46 0c dd f2 6f  73 66 69 6e 64 0d 46 50  |..FF...osfind.FP|
0000a0c0  1d 61 64 64 72 3d a4 61  64 64 72 28 78 3f 33 2b  |.addr=.addr(x?3+|
0000a0d0  28 79 3f 33 29 2a 32 35  36 29 0d 46 5a 0d e7 20  |(y?3)*256).FZ.. |
0000a0e0  61 3f 33 3d 30 20 8c 0d  46 64 20 c8 99 20 22 58  |a?3=0 ..Fd .. "X|
0000a0f0  4f 53 5f 46 69 6e 64 22  2c 30 2c 79 3f 33 20 b8  |OS_Find",0,y?3 .|
0000a100  20 41 25 20 3b 20 46 0d  46 6e 28 41 25 3d 30 3a  | A% ; F.Fn(A%=0:|
0000a110  46 3d 30 20 3a 20 f4 20  66 69 78 20 66 6f 72 20  |F=0 : . fix for |
0000a120  4d 61 73 74 65 72 20 31  32 38 20 21 3f 21 3f 0d  |Master 128 !?!?.|
0000a130  46 78 05 cc 0d 46 82 3f  c8 99 20 22 58 4f 53 5f  |Fx...F.?.. "XOS_|
0000a140  46 69 6e 64 22 2c 28 61  3f 33 29 20 84 20 31 2c  |Find",(a?3) . 1,|
0000a150  a4 61 64 64 5f 28 24 61  64 64 72 29 2c a4 5f 70  |.add_($addr),._p|
0000a160  61 74 68 28 24 61 64 64  72 29 20 b8 20 41 25 20  |ath($addr) . A% |
0000a170  3b 20 46 0d 46 8c 05 cd  0d 46 96 2c e7 20 28 46  |; F.F....F.,. (F|
0000a180  20 80 20 31 29 3d 30 20  8c 20 61 3f 33 3d 41 25  | . 1)=0 . a?3=A%|
0000a190  20 3a 20 f2 72 74 73 20  8b 20 f2 73 77 69 5f 65  | : .rts . .swi_e|
0000a1a0  72 72 6f 72 0d 46 a0 05  e1 0d 46 aa 04 0d 46 b4  |rror.F....F...F.|
0000a1b0  0c dd f2 6f 73 62 67 65  74 0d 46 be 24 20 c8 99  |...osbget.F.$ ..|
0000a1c0  20 22 58 4f 53 5f 42 47  65 74 22 2c 61 3f 33 2c  | "XOS_BGet",a?3,|
0000a1d0  79 3f 33 20 b8 20 41 25  20 3b 20 46 25 0d 46 c8  |y?3 . A% ; F%.F.|
0000a1e0  12 20 e7 20 28 46 20 80  20 31 29 3d 30 20 8c 0d  |. . (F . 1)=0 ..|
0000a1f0  46 d2 0b 20 61 3f 33 3d  41 25 0d 46 dc 16 20 3f  |F.. a?3=A%.F.. ?|
0000a200  66 3d 3f 66 20 80 20 25  31 31 31 31 31 31 31 30  |f=?f . %11111110|
0000a210  0d 46 e6 1a 20 e7 20 28  46 25 20 80 20 32 29 3c  |.F.. . (F% . 2)<|
0000a220  3e 30 20 8c 20 3f 66 2b  3d 31 0d 46 f0 09 20 f2  |>0 . ?f+=1.F.. .|
0000a230  72 74 73 0d 46 fa 06 20  cc 0d 47 04 0f 20 f2 73  |rts.F.. ..G.. .s|
0000a240  77 69 5f 65 72 72 6f 72  0d 47 0e 06 20 cd 0d 47  |wi_error.G.. ..G|
0000a250  18 05 e1 0d 47 22 04 0d  47 2c 0c dd f2 6f 73 62  |....G"..G,...osb|
0000a260  70 75 74 0d 47 36 23 20  c8 99 20 22 58 4f 53 5f  |put.G6# .. "XOS_|
0000a270  42 50 75 74 22 2c 61 3f  33 2c 79 3f 33 20 b8 20  |BPut",a?3,y?3 . |
0000a280  41 25 20 3b 20 46 0d 47  40 24 20 e7 20 28 46 20  |A% ; F.G@$ . (F |
0000a290  80 20 31 29 3d 30 20 8c  20 f2 72 74 73 20 8b 20  |. 1)=0 . .rts . |
0000a2a0  f2 73 77 69 5f 65 72 72  6f 72 0d 47 4a 05 e1 0d  |.swi_error.GJ...|
0000a2b0  47 54 04 0d 47 5e 15 dd  f2 73 70 72 69 74 65 5f  |GT..G^...sprite_|
0000a2c0  73 61 76 65 28 46 24 29  0d 47 68 82 e7 20 a7 46  |save(F$).Gh.. .F|
0000a2d0  24 2c 22 2e 22 29 3d 30  20 80 20 a7 46 24 2c 22  |$,".")=0 . .F$,"|
0000a2e0  3a 22 29 3d 30 20 80 20  c0 46 24 2c 36 29 3c 3e  |:")=0 . .F$,6)<>|
0000a2f0  22 3c 57 69 6d 70 24 22  20 8c 20 c8 99 20 22 57  |"<Wimp$" . .. "W|
0000a300  69 6d 70 5f 52 65 70 6f  72 74 45 72 72 6f 72 22  |imp_ReportError"|
0000a310  2c 22 20 20 20 20 54 6f  20 73 61 76 65 2c 20 64  |,"    To save, d|
0000a320  72 61 67 20 74 68 65 20  66 69 6c 65 20 69 63 6f  |rag the file ico|
0000a330  6e 20 74 6f 20 61 20 64  69 72 65 63 74 6f 72 79  |n to a directory|
0000a340  20 76 69 65 77 65 72 22  3a e1 0d 47 72 25 c8 99  | viewer":..Gr%..|
0000a350  20 22 4f 53 5f 53 70 72  69 74 65 4f 70 22 2c 32  | "OS_SpriteOp",2|
0000a360  35 36 2b 31 32 2c 73 70  72 69 74 65 2c 46 24 0d  |56+12,sprite,F$.|
0000a370  47 7c 05 e1 0d 47 86 04  0d 47 90 10 dd a4 6b 65  |G|...G...G....ke|
0000a380  79 6d 61 70 28 41 24 29  0d 47 9a 07 ea 49 25 0d  |ymap(A$).G...I%.|
0000a390  47 a4 14 e3 49 25 3d 31  20 b8 20 6b 65 79 6d 61  |G...I%=1 . keyma|
0000a3a0  70 73 25 0d 47 ae 2a e7  20 a4 75 70 70 65 72 28  |ps%.G.*. .upper(|
0000a3b0  6b 65 79 6d 61 70 24 28  49 25 29 29 3d a4 75 70  |keymap$(I%))=.up|
0000a3c0  70 65 72 28 41 24 29 20  8c 20 3d 49 25 0d 47 b8  |per(A$) . =I%.G.|
0000a3d0  05 ed 0d 47 c2 06 3d 30  0d 47 cc 04 0d 47 d6 13  |...G..=0.G...G..|
0000a3e0  dd f2 73 65 74 6b 65 79  6d 61 70 28 41 24 29 0d  |..setkeymap(A$).|
0000a3f0  47 e0 07 ea 49 25 0d 47  ea 15 4b 65 79 4d 61 70  |G...I%.G..KeyMap|
0000a400  24 3d 22 44 65 66 61 75  6c 74 22 0d 47 f4 35 e7  |$="Default".G.5.|
0000a410  20 a4 75 70 70 65 72 28  41 24 29 3d 22 52 49 53  | .upper(A$)="RIS|
0000a420  43 50 43 22 20 84 20 a4  75 70 70 65 72 28 41 24  |CPC" . .upper(A$|
0000a430  29 3d 22 41 52 43 48 49  4d 45 44 45 53 22 20 8c  |)="ARCHIMEDES" .|
0000a440  0d 47 fe 10 41 24 3d 22  44 65 66 61 75 6c 74 22  |.G..A$="Default"|
0000a450  0d 48 08 05 cd 0d 48 12  1d ff 20 22 53 65 74 20  |.H....H... "Set |
0000a460  36 35 30 32 45 6d 24 4b  65 79 6d 61 70 20 22 2b  |6502Em$Keymap "+|
0000a470  41 24 0d 48 1c 18 f2 70  6f 6b 65 69 63 6f 6e 74  |A$.H...pokeicont|
0000a480  65 78 74 28 31 32 2c 41  24 29 0d 48 26 14 e3 49  |ext(12,A$).H&..I|
0000a490  25 3d 31 20 b8 20 6b 65  79 6d 61 70 73 25 0d 48  |%=1 . keymaps%.H|
0000a4a0  30 44 e7 20 a4 75 70 70  65 72 28 6b 65 79 6d 61  |0D. .upper(keyma|
0000a4b0  70 24 28 49 25 29 29 3d  a4 75 70 70 65 72 28 41  |p$(I%))=.upper(A|
0000a4c0  24 29 20 8c 20 4b 65 79  4d 61 70 24 3d 41 24 3a  |$) . KeyMap$=A$:|
0000a4d0  6b 65 79 6d 61 70 25 3d  49 25 3a 49 25 3d 31 30  |keymap%=I%:I%=10|
0000a4e0  30 30 0d 48 3a 05 ed 0d  48 3b 2e f2 72 65 61 64  |00.H:...H;..read|
0000a4f0  6b 65 79 73 28 22 3c 36  35 30 32 45 6d 24 44 69  |keys("<6502Em$Di|
0000a500  72 3e 2e 4b 65 79 6d 61  70 73 2e 22 2b 4b 65 79  |r>.Keymaps."+Key|
0000a510  4d 61 70 24 29 0d 48 44  05 e1 0d 48 4e 04 0d 48  |Map$).HD...HN..H|
0000a520  58 11 dd f2 72 65 61 64  6b 65 79 6d 61 70 73 0d  |X...readkeymaps.|
0000a530  48 62 10 ea 20 6f 66 66  73 65 74 25 2c 4e 25 0d  |Hb.. offset%,N%.|
0000a540  48 6c 0d 6b 65 79 6d 61  70 25 3d 30 0d 48 76 0e  |Hl.keymap%=0.Hv.|
0000a550  6b 65 79 6d 61 70 73 25  3d 30 0d 48 80 05 f5 0d  |keymaps%=0.H....|
0000a560  48 8a 4f c8 99 20 22 4f  53 5f 47 42 50 42 22 2c  |H.O.. "OS_GBPB",|
0000a570  39 2c 22 3c 36 35 30 32  45 6d 24 44 69 72 3e 2e  |9,"<6502Em$Dir>.|
0000a580  4b 65 79 6d 61 70 73 22  2c 71 25 2c 31 30 30 2c  |Keymaps",q%,100,|
0000a590  6f 66 66 73 65 74 25 2c  26 31 30 30 2c 30 20 b8  |offset%,&100,0 .|
0000a5a0  20 2c 2c 2c 4e 25 2c 6f  66 66 73 65 74 25 0d 48  | ,,,N%,offset%.H|
0000a5b0  94 10 6b 65 79 6d 61 70  73 25 2b 3d 4e 25 0d 48  |..keymaps%+=N%.H|
0000a5c0  9e 10 fd 20 6f 66 66 73  65 74 25 3d 2d 31 0d 48  |... offset%=-1.H|
0000a5d0  a8 21 e7 20 6b 65 79 6d  61 70 73 25 3d 30 20 8c  |.!. keymaps%=0 .|
0000a5e0  20 6b 65 79 73 6d 65 6e  75 25 3d 2d 31 3a e1 0d  | keysmenu%=-1:..|
0000a5f0  48 b2 31 de 20 6b 65 79  6d 61 70 24 28 6b 65 79  |H.1. keymap$(key|
0000a600  6d 61 70 73 25 29 2c 20  6b 65 79 73 6d 65 6e 75  |maps%), keysmenu|
0000a610  25 20 33 32 2b 32 34 2a  6b 65 79 6d 61 70 73 25  |% 32+24*keymaps%|
0000a620  0d 48 bc 0d 6f 66 66 73  65 74 25 3d 30 0d 48 c6  |.H..offset%=0.H.|
0000a630  15 e3 20 4e 25 3d 31 20  b8 20 6b 65 79 6d 61 70  |.. N%=1 . keymap|
0000a640  73 25 0d 48 d0 4b c8 99  20 22 4f 53 5f 47 42 50  |s%.H.K.. "OS_GBP|
0000a650  42 22 2c 39 2c 22 3c 36  35 30 32 45 6d 24 44 69  |B",9,"<6502Em$Di|
0000a660  72 3e 2e 4b 65 79 6d 61  70 73 22 2c 71 25 2c 31  |r>.Keymaps",q%,1|
0000a670  2c 6f 66 66 73 65 74 25  2c 26 31 30 30 2c 30 20  |,offset%,&100,0 |
0000a680  b8 20 2c 2c 2c 2c 6f 66  66 73 65 74 25 0d 48 da  |. ,,,,offset%.H.|
0000a690  1b 6b 65 79 6d 61 70 24  28 4e 25 29 3d a4 73 74  |.keymap$(N%)=.st|
0000a6a0  72 69 6e 67 28 71 25 29  0d 48 e4 05 ed 0d 48 ee  |ring(q%).H....H.|
0000a6b0  05 e1 0d 48 f8 04 0d 49  02 10 dd f2 72 65 61 64  |...H...I....read|
0000a6c0  73 70 65 65 64 73 0d 49  0c 07 ea 49 25 0d 49 16  |speeds.I...I%.I.|
0000a6d0  1f 51 3d 8e 22 3c 36 35  30 32 45 6d 24 52 65 73  |.Q=."<6502Em$Res|
0000a6e0  3e 2e 53 70 65 65 64 4d  65 6e 75 22 0d 49 20 0e  |>.SpeedMenu".I .|
0000a6f0  73 70 65 65 64 73 25 3d  2d 31 0d 49 2a 0f f5 73  |speeds%=-1.I*..s|
0000a700  70 65 65 64 73 25 2b 3d  31 0d 49 34 0a 41 24 3d  |peeds%+=1.I4.A$=|
0000a710  be 23 51 0d 49 3e 10 fd  c5 23 51 20 84 20 41 24  |.#Q.I>...#Q . A$|
0000a720  3d 22 22 0d 49 48 18 e7  20 41 24 3d 22 22 20 8c  |="".IH.. A$="" .|
0000a730  20 73 70 65 65 64 73 25  2d 3d 31 0d 49 52 09 cf  | speeds%-=1.IR..|
0000a740  23 51 3d 30 0d 49 5c 33  de 20 73 70 65 65 64 24  |#Q=0.I\3. speed$|
0000a750  28 73 70 65 65 64 73 25  29 2c 20 73 70 65 65 64  |(speeds%), speed|
0000a760  6d 65 6e 75 25 20 33 32  2b 32 34 2a 28 73 70 65  |menu% 32+24*(spe|
0000a770  65 64 73 25 2b 33 29 0d  49 66 13 e3 49 25 3d 30  |eds%+3).If..I%=0|
0000a780  20 b8 20 73 70 65 65 64  73 25 0d 49 70 12 73 70  | . speeds%.Ip.sp|
0000a790  65 65 64 24 28 49 25 29  3d be 23 51 0d 49 7a 05  |eed$(I%)=.#Q.Iz.|
0000a7a0  ed 0d 49 84 07 d9 23 51  0d 49 8e 05 e1 0d 49 98  |..I...#Q.I....I.|
0000a7b0  04 0d 49 a2 04 0d 49 ac  11 dd f2 72 65 61 64 70  |..I...I....readp|
0000a7c0  61 74 63 68 65 73 0d 49  b6 10 ea 20 6f 66 66 73  |atches.I... offs|
0000a7d0  65 74 25 2c 4e 25 0d 49  c0 0c 70 61 74 63 68 25  |et%,N%.I..patch%|
0000a7e0  3d 30 0d 49 ca 0e 70 61  74 63 68 65 73 25 3d 30  |=0.I..patches%=0|
0000a7f0  0d 49 d4 05 f5 0d 49 de  4f c8 99 20 22 4f 53 5f  |.I....I.O.. "OS_|
0000a800  47 42 50 42 22 2c 39 2c  22 3c 36 35 30 32 45 6d  |GBPB",9,"<6502Em|
0000a810  24 44 69 72 3e 2e 50 61  74 63 68 65 73 22 2c 71  |$Dir>.Patches",q|
0000a820  25 2c 31 30 30 2c 6f 66  66 73 65 74 25 2c 26 31  |%,100,offset%,&1|
0000a830  30 30 2c 30 20 b8 20 2c  2c 2c 4e 25 2c 6f 66 66  |00,0 . ,,,N%,off|
0000a840  73 65 74 25 0d 49 e8 10  70 61 74 63 68 65 73 25  |set%.I..patches%|
0000a850  2b 3d 4e 25 0d 49 f2 10  fd 20 6f 66 66 73 65 74  |+=N%.I... offset|
0000a860  25 3d 2d 31 0d 49 fc 22  e7 20 70 61 74 63 68 65  |%=-1.I.". patche|
0000a870  73 25 3d 30 20 8c 20 70  61 74 63 68 6d 65 6e 75  |s%=0 . patchmenu|
0000a880  25 3d 2d 31 3a e1 0d 4a  06 35 de 20 70 61 74 63  |%=-1:..J.5. patc|
0000a890  68 24 28 70 61 74 63 68  65 73 25 29 2c 20 70 61  |h$(patches%), pa|
0000a8a0  74 63 68 6d 65 6e 75 25  20 33 32 2b 32 34 2a 28  |tchmenu% 32+24*(|
0000a8b0  70 61 74 63 68 65 73 25  2b 32 29 0d 4a 10 0d 6f  |patches%+2).J..o|
0000a8c0  66 66 73 65 74 25 3d 30  0d 4a 1a 15 e3 20 4e 25  |ffset%=0.J... N%|
0000a8d0  3d 31 20 b8 20 70 61 74  63 68 65 73 25 0d 4a 24  |=1 . patches%.J$|
0000a8e0  4b c8 99 20 22 4f 53 5f  47 42 50 42 22 2c 39 2c  |K.. "OS_GBPB",9,|
0000a8f0  22 3c 36 35 30 32 45 6d  24 44 69 72 3e 2e 50 61  |"<6502Em$Dir>.Pa|
0000a900  74 63 68 65 73 22 2c 71  25 2c 31 2c 6f 66 66 73  |tches",q%,1,offs|
0000a910  65 74 25 2c 26 31 30 30  2c 30 20 b8 20 2c 2c 2c  |et%,&100,0 . ,,,|
0000a920  2c 6f 66 66 73 65 74 25  0d 4a 2e 1a 70 61 74 63  |,offset%.J..patc|
0000a930  68 24 28 4e 25 29 3d a4  73 74 72 69 6e 67 28 71  |h$(N%)=.string(q|
0000a940  25 29 0d 4a 38 05 ed 0d  4a 42 05 e1 0d 4a 4c 04  |%).J8...JB...JL.|
0000a950  0d 4a 56 10 dd a4 73 74  72 69 6e 67 28 41 25 29  |.JV...string(A%)|
0000a960  0d 4a 60 0a ea 41 24 2c  49 25 0d 4a 6a 05 f5 0d  |.J`..A$,I%.Jj...|
0000a970  4a 74 12 41 24 3d 41 24  2b bd 28 41 25 3f 49 25  |Jt.A$=A$+.(A%?I%|
0000a980  29 0d 4a 7e 09 49 25 2b  3d 31 0d 4a 88 0c fd 41  |).J~.I%+=1.J...A|
0000a990  25 3f 49 25 3d 30 0d 4a  92 07 3d 41 24 0d 4a 9c  |%?I%=0.J..=A$.J.|
0000a9a0  04 0d 4a a6 0f dd f2 6c  6f 61 64 70 61 74 63 68  |..J....loadpatch|
0000a9b0  0d 4a b0 4a ff 20 22 4c  6f 61 64 20 3c 36 35 30  |.J.J. "Load <650|
0000a9c0  32 45 6d 24 44 69 72 3e  2e 50 61 74 63 68 65 73  |2Em$Dir>.Patches|
0000a9d0  2e 22 2b 70 61 74 63 68  24 28 70 61 74 63 68 25  |."+patch$(patch%|
0000a9e0  29 2b 22 20 22 2b c3 7e  28 63 6f 64 65 2b 21 70  |)+" "+.~(code+!p|
0000a9f0  61 74 63 68 5f 61 64 64  72 29 0d 4a ba 1b 3f 70  |atch_addr).J..?p|
0000aa00  61 74 63 68 5f 6f 6e 3d  3f 70 61 74 63 68 5f 6f  |atch_on=?patch_o|
0000aa10  6e 20 84 20 31 0d 4a c4  24 f2 70 6f 6b 65 69 63  |n . 1.J.$.pokeic|
0000aa20  6f 6e 74 65 78 74 28 31  34 2c 70 61 74 63 68 24  |ontext(14,patch$|
0000aa30  28 70 61 74 63 68 25 29  29 0d 4a ce 05 e1 0d 4a  |(patch%)).J....J|
0000aa40  d8 04 0d 4a e2 14 dd a4  6f 73 77 6f 72 64 31 34  |...J....osword14|
0000aa50  5f 31 28 41 25 29 0d 4a  ec 0d 3f 62 75 66 66 65  |_1(A%).J..?buffe|
0000aa60  72 3d 31 0d 4a f6 1a c8  99 20 22 4f 53 5f 57 6f  |r=1.J.... "OS_Wo|
0000aa70  72 64 22 2c 31 34 2c 62  75 66 66 65 72 0d 4b 00  |rd",14,buffer.K.|
0000aa80  0e 3d 62 75 66 66 65 72  3f 41 25 0d 4b 0a 04 0d  |.=buffer?A%.K...|
0000aa90  4b 14 0e dd f2 72 65 61  64 43 4d 4f 53 0d 4b 1e  |K....readCMOS.K.|
0000aaa0  11 c8 8e 20 78 3f 33 20  80 20 36 33 20 ca 0d 4b  |... x?3 . 63 ..K|
0000aab0  28 1f c9 20 30 20 20 20  20 3a 20 79 3f 33 3d a4  |(.. 0    : y?3=.|
0000aac0  6f 73 77 6f 72 64 31 34  5f 31 28 36 29 0d 4b 32  |osword14_1(6).K2|
0000aad0  12 c9 20 31 20 20 20 20  3a 20 79 3f 33 3d 31 0d  |.. 1    : y?3=1.|
0000aae0  4b 3c 1f c9 20 32 20 20  20 20 3a 20 79 3f 33 3d  |K<.. 2    : y?3=|
0000aaf0  a4 6f 73 77 6f 72 64 31  34 5f 31 28 35 29 0d 4b  |.osword14_1(5).K|
0000ab00  46 12 c9 20 33 20 20 20  20 3a 20 79 3f 33 3d 31  |F.. 3    : y?3=1|
0000ab10  0d 4b 50 1f c9 20 34 20  20 20 20 3a 20 79 3f 33  |.KP.. 4    : y?3|
0000ab20  3d a4 6f 73 77 6f 72 64  31 34 5f 31 28 34 29 0d  |=.osword14_1(4).|
0000ab30  4b 5a 12 c9 20 35 20 20  20 20 3a 20 79 3f 33 3d  |KZ.. 5    : y?3=|
0000ab40  31 0d 4b 64 1f c9 20 36  20 20 20 20 3a 20 79 3f  |1.Kd.. 6    : y?|
0000ab50  33 3d a4 6f 73 77 6f 72  64 31 34 5f 31 28 33 29  |3=.osword14_1(3)|
0000ab60  0d 4b 6e 1f c9 20 37 20  20 20 20 3a 20 79 3f 33  |.Kn.. 7    : y?3|
0000ab70  3d a4 6f 73 77 6f 72 64  31 34 5f 31 28 32 29 0d  |=.osword14_1(2).|
0000ab80  4b 78 1f c9 20 38 20 20  20 20 3a 20 79 3f 33 3d  |Kx.. 8    : y?3=|
0000ab90  a4 6f 73 77 6f 72 64 31  34 5f 31 28 31 29 0d 4b  |.osword14_1(1).K|
0000aba0  82 1f c9 20 39 20 20 20  20 3a 20 79 3f 33 3d a4  |... 9    : y?3=.|
0000abb0  6f 73 77 6f 72 64 31 34  5f 31 28 30 29 0d 4b 8c  |osword14_1(0).K.|
0000abc0  1a c9 20 31 30 20 20 20  3a 20 79 3f 33 3d 25 30  |.. 10   : y?3=%0|
0000abd0  30 31 30 30 30 30 30 0d  4b 96 1a c9 20 31 31 20  |0100000.K... 11 |
0000abe0  20 20 3a 20 79 3f 33 3d  25 30 30 30 30 30 30 31  |  : y?3=%0000001|
0000abf0  30 0d 4b a0 12 c9 20 31  32 20 20 20 3a 20 79 3f  |0.K... 12   : y?|
0000ac00  33 3d 30 0d 4b aa 12 c9  20 31 33 20 20 20 3a 20  |3=0.K... 13   : |
0000ac10  79 3f 33 3d 30 0d 4b b4  1b 7f 20 3a 20 79 3f 33  |y?3=0.K... : y?3|
0000ac20  3d 63 6d 6f 73 25 28 78  3f 33 20 80 20 36 33 29  |=cmos%(x?3 . 63)|
0000ac30  0d 4b be 04 0d 4b c8 05  cb 0d 4b d2 04 0d 4b dc  |.K...K....K...K.|
0000ac40  0b 61 3f 33 3d 79 3f 33  0d 4b e6 04 0d 4b f0 30  |.a?3=y?3.K...K.0|
0000ac50  f4 50 52 49 4e 54 54 41  42 28 30 2c 30 29 3b 78  |.PRINTTAB(0,0);x|
0000ac60  3f 33 20 41 4e 44 20 36  33 3b 22 20 22 3b 79 3f  |?3 AND 63;" ";y?|
0000ac70  33 3b 22 20 20 22 3a 51  3d 47 45 54 0d 4b fa 08  |3;"  ":Q=GET.K..|
0000ac80  f2 72 74 73 0d 4c 04 05  e1 0d 4c 0e 04 0d 4c 18  |.rts.L....L...L.|
0000ac90  10 dd f2 72 65 61 64 45  45 50 52 4f 4d 0d 4c 22  |...readEEPROM.L"|
0000aca0  14 79 3f 33 3d 65 65 70  72 6f 6d 25 28 78 3f 33  |.y?3=eeprom%(x?3|
0000acb0  29 0d 4c 2c 0b 61 3f 33  3d 79 3f 33 0d 4c 36 08  |).L,.a?3=y?3.L6.|
0000acc0  f2 72 74 73 0d 4c 40 05  e1 0d 4c 4a 04 0d 4c 54  |.rts.L@...LJ..LT|
0000acd0  0f dd f2 77 72 69 74 65  43 4d 4f 53 0d 4c 5e 17  |...writeCMOS.L^.|
0000ace0  63 6d 6f 73 25 28 78 3f  33 20 80 20 36 33 29 3d  |cmos%(x?3 . 63)=|
0000acf0  79 3f 33 0d 4c 68 08 f2  72 74 73 0d 4c 72 15 e7  |y?3.Lh..rts.Lr..|
0000ad00  20 28 78 3f 33 20 80 20  36 33 29 3e 31 33 20 8c  | (x?3 . 63)>13 .|
0000ad10  0d 4c 7c 1b 51 3d ad 20  22 3c 36 35 30 32 45 6d  |.L|.Q=. "<6502Em|
0000ad20  24 52 65 73 3e 2e 43 4d  4f 53 22 0d 4c 86 10 cf  |$Res>.CMOS".L...|
0000ad30  23 51 3d 78 3f 33 20 80  20 36 33 0d 4c 90 0b d5  |#Q=x?3 . 63.L...|
0000ad40  23 51 2c 79 3f 33 0d 4c  9a 07 d9 23 51 0d 4c a4  |#Q,y?3.L...#Q.L.|
0000ad50  05 cd 0d 4c ae 05 e1 0d  4c b8 04 0d 4c c2 11 dd  |...L....L...L...|
0000ad60  f2 77 72 69 74 65 45 45  50 52 4f 4d 0d 4c cc 14  |.writeEEPROM.L..|
0000ad70  65 65 70 72 6f 6d 25 28  78 3f 33 29 3d 79 3f 33  |eeprom%(x?3)=y?3|
0000ad80  0d 4c d6 08 f2 72 74 73  0d 4c e0 1d 51 3d ad 20  |.L...rts.L..Q=. |
0000ad90  22 3c 36 35 30 32 45 6d  24 52 65 73 3e 2e 45 45  |"<6502Em$Res>.EE|
0000ada0  50 52 4f 4d 22 0d 4c ea  0b cf 23 51 3d 78 3f 33  |PROM".L...#Q=x?3|
0000adb0  0d 4c f4 0b d5 23 51 2c  79 3f 33 0d 4c fe 07 d9  |.L...#Q,y?3.L...|
0000adc0  23 51 0d 4d 08 05 e1 0d  4d 12 04 0d 4d 1c 0e dd  |#Q.M....M...M...|
0000add0  f2 6c 6f 61 64 43 4d 4f  53 0d 4d 26 0a ea 20 51  |.loadCMOS.M&.. Q|
0000ade0  2c 49 25 0d 4d 30 1b 51  3d 8e 20 22 3c 36 35 30  |,I%.M0.Q=. "<650|
0000adf0  32 45 6d 24 52 65 73 3e  2e 43 4d 4f 53 22 0d 4d  |2Em$Res>.CMOS".M|
0000ae00  3a 0f e3 20 49 25 3d 30  20 b8 20 36 33 0d 4d 44  |:.. I%=0 . 63.MD|
0000ae10  11 63 6d 6f 73 25 28 49  25 29 3d 9a 23 51 0d 4d  |.cmos%(I%)=.#Q.M|
0000ae20  4e 05 ed 0d 4d 58 07 d9  23 51 0d 4d 62 05 e1 0d  |N...MX..#Q.Mb...|
0000ae30  4d 6c 04 0d 4d 76 10 dd  f2 6c 6f 61 64 45 45 50  |Ml..Mv...loadEEP|
0000ae40  52 4f 4d 0d 4d 80 0a ea  20 51 2c 49 25 0d 4d 8a  |ROM.M... Q,I%.M.|
0000ae50  1d 51 3d 8e 20 22 3c 36  35 30 32 45 6d 24 52 65  |.Q=. "<6502Em$Re|
0000ae60  73 3e 2e 45 45 50 52 4f  4d 22 0d 4d 94 10 e3 20  |s>.EEPROM".M... |
0000ae70  49 25 3d 30 20 b8 20 32  35 35 0d 4d 9e 13 65 65  |I%=0 . 255.M..ee|
0000ae80  70 72 6f 6d 25 28 49 25  29 3d 9a 23 51 0d 4d a8  |prom%(I%)=.#Q.M.|
0000ae90  05 ed 0d 4d b2 07 d9 23  51 0d 4d bc 05 e1 0d 4d  |...M...#Q.M....M|
0000aea0  c6 04 0d 4d d0 12 dd f2  6c 6f 61 64 63 6f 64 65  |...M....loadcode|
0000aeb0  28 43 24 29 0d 4d da 27  ff 22 4c 4f 41 44 20 3c  |(C$).M.'."LOAD <|
0000aec0  36 35 30 32 45 6d 24 44  69 72 3e 2e 22 2b 43 24  |6502Em$Dir>."+C$|
0000aed0  2b 22 20 22 2b c3 7e 63  6f 64 65 0d 4d e4 15 d6  |+" "+.~code.M...|
0000aee0  20 63 6f 64 65 2b 21 69  6e 69 74 5f 61 64 64 72  | code+!init_addr|
0000aef0  0d 4d ee 11 f2 73 6f 75  6e 64 5f 72 65 69 6e 69  |.M...sound_reini|
0000af00  74 0d 4d f8 1c e7 20 70  61 74 63 68 25 3c 3e 30  |t.M... patch%<>0|
0000af10  20 8c 20 f2 6c 6f 61 64  70 61 74 63 68 0d 4e 02  | . .loadpatch.N.|
0000af20  05 e1 0d 4e 0c 04 0d 4e  16 0c dd f2 6d 61 73 74  |...N...N....mast|
0000af30  65 72 0d 4e 20 16 f2 6c  6f 61 64 63 6f 64 65 28  |er.N ..loadcode(|
0000af40  22 43 6f 64 65 4d 22 29  0d 4e 2a 3a ff 22 4c 4f  |"CodeM").N*:."LO|
0000af50  41 44 20 3c 36 35 30 32  45 6d 24 44 69 72 3e 2e  |AD <6502Em$Dir>.|
0000af60  52 4f 4d 53 2e 4d 31 32  38 2e 4f 53 33 2c 32 20  |ROMS.M128.OS3,2 |
0000af70  22 2b c3 7e 28 6d 65 6d  6f 72 79 2b 26 43 30 30  |"+.~(memory+&C00|
0000af80  30 29 0d 4e 34 3e ff 22  4c 4f 41 44 20 3c 36 35  |0).N4>."LOAD <65|
0000af90  30 32 45 6d 24 44 69 72  3e 2e 52 4f 4d 53 2e 4d  |02Em$Dir>.ROMS.M|
0000afa0  31 32 38 2e 4f 53 33 2c  32 20 22 2b c3 7e 28 72  |128.OS3,2 "+.~(r|
0000afb0  6f 6d 73 2b 72 6f 6d 73  69 7a 65 25 2a 31 36 29  |oms+romsize%*16)|
0000afc0  0d 4e 3e 29 ff 22 4c 4f  41 44 20 3c 36 35 30 32  |.N>)."LOAD <6502|
0000afd0  45 6d 24 52 65 73 3e 2e  53 48 45 49 4c 41 20 22  |Em$Res>.SHEILA "|
0000afe0  2b c3 7e 73 68 65 69 6c  61 0d 4e 48 0e 73 6f 63  |+.~sheila.NH.soc|
0000aff0  6b 65 74 25 3d 31 35 0d  4e 52 1f f2 6c 6f 61 64  |ket%=15.NR..load|
0000b000  52 4f 4d 28 22 4d 31 32  38 2e 54 65 72 6d 69 6e  |ROM("M128.Termin|
0000b010  61 6c 22 2c 31 29 0d 4e  5c 1f 3f 28 72 6f 6d 73  |al",1).N\.?(roms|
0000b020  2b 72 6f 6d 73 69 7a 65  25 2a 31 35 2b 26 31 38  |+romsize%*15+&18|
0000b030  42 37 29 3d 33 0d 4e 66  39 3f 28 72 6f 6d 73 2b  |B7)=3.Nf9?(roms+|
0000b040  72 6f 6d 73 69 7a 65 25  2a 31 35 2b 26 31 38 42  |romsize%*15+&18B|
0000b050  38 29 3d 26 38 30 20 3a  20 f4 20 69 6e 74 65 72  |8)=&80 : . inter|
0000b060  63 65 70 74 20 2e 72 65  61 64 43 4d 4f 53 0d 4e  |cept .readCMOS.N|
0000b070  70 1f 3f 28 72 6f 6d 73  2b 72 6f 6d 73 69 7a 65  |p.?(roms+romsize|
0000b080  25 2a 31 35 2b 26 31 38  45 34 29 3d 33 0d 4e 7a  |%*15+&18E4)=3.Nz|
0000b090  3a 3f 28 72 6f 6d 73 2b  72 6f 6d 73 69 7a 65 25  |:?(roms+romsize%|
0000b0a0  2a 31 35 2b 26 31 38 45  35 29 3d 26 38 31 20 3a  |*15+&18E5)=&81 :|
0000b0b0  20 f4 20 69 6e 74 65 72  63 65 70 74 20 2e 77 72  | . intercept .wr|
0000b0c0  69 74 65 43 4d 4f 53 0d  4e 84 1b f2 6c 6f 61 64  |iteCMOS.N...load|
0000b0d0  52 4f 4d 28 22 4d 31 32  38 2e 56 69 65 77 22 2c  |ROM("M128.View",|
0000b0e0  31 29 0d 4e 8e 16 f2 6c  6f 61 64 52 4f 4d 28 22  |1).N...loadROM("|
0000b0f0  56 44 46 53 22 2c 31 29  0d 4e 98 1f f4 50 52 4f  |VDFS",1).N...PRO|
0000b100  43 6c 6f 61 64 52 4f 4d  28 22 4d 31 32 38 2e 41  |CloadROM("M128.A|
0000b110  44 46 53 22 2c 31 29 0d  4e a2 20 f2 6c 6f 61 64  |DFS",1).N. .load|
0000b120  52 4f 4d 28 22 4d 31 32  38 2e 42 41 53 49 43 49  |ROM("M128.BASICI|
0000b130  56 38 34 22 2c 31 29 0d  4e ac 1f f2 6c 6f 61 64  |V84",1).N...load|
0000b140  52 4f 4d 28 22 4d 31 32  38 2e 45 64 69 74 31 2c  |ROM("M128.Edit1,|
0000b150  30 30 22 2c 31 29 0d 4e  b6 20 f2 6c 6f 61 64 52  |00",1).N. .loadR|
0000b160  4f 4d 28 22 4d 31 32 38  2e 56 69 65 77 53 68 65  |OM("M128.ViewShe|
0000b170  65 74 22 2c 31 29 0d 4e  c0 1e f2 6c 6f 61 64 52  |et",1).N...loadR|
0000b180  4f 4d 28 22 4d 31 32 38  2e 44 46 53 32 2c 32 34  |OM("M128.DFS2,24|
0000b190  22 2c 31 29 0d 4e ca 1c  f4 3f 28 72 6f 6d 73 2b  |",1).N...?(roms+|
0000b1a0  26 34 30 30 30 2a 39 2b  26 31 31 36 33 29 3d 33  |&4000*9+&1163)=3|
0000b1b0  0d 4e d4 39 f4 3f 28 72  6f 6d 73 2b 26 34 30 30  |.N.9.?(roms+&400|
0000b1c0  30 2a 39 2b 26 31 31 36  34 29 3d 26 38 32 20 3a  |0*9+&1164)=&82 :|
0000b1d0  20 52 45 4d 20 69 6e 74  65 72 63 65 70 74 20 4f  | REM intercept O|
0000b1e0  53 57 4f 52 44 20 37 46  3f 0d 4e de 1a f4 50 52  |SWORD 7F?.N...PR|
0000b1f0  4f 43 6c 6f 61 64 52 4f  4d 28 22 56 44 46 53 22  |OCloadROM("VDFS"|
0000b200  2c 31 29 0d 4e e8 0a f2  53 52 52 41 4d 0d 4e f2  |,1).N...SRRAM.N.|
0000b210  0a f2 53 52 52 41 4d 0d  4e fc 0a f2 53 52 52 41  |..SRRAM.N...SRRA|
0000b220  4d 0d 4f 06 0a f2 53 52  52 41 4d 0d 4f 10 0a f2  |M.O...SRRAM.O...|
0000b230  53 52 52 41 4d 0d 4f 1a  05 e1 0d 4f 24 04 0d 4f  |SRRAM.O....O$..O|
0000b240  2e 0e dd f2 6d 61 73 74  65 72 33 35 0d 4f 38 16  |....master35.O8.|
0000b250  f2 6c 6f 61 64 63 6f 64  65 28 22 43 6f 64 65 4d  |.loadcode("CodeM|
0000b260  22 29 0d 4f 42 3a ff 22  4c 4f 41 44 20 3c 36 35  |").OB:."LOAD <65|
0000b270  30 32 45 6d 24 44 69 72  3e 2e 52 4f 4d 53 2e 4d  |02Em$Dir>.ROMS.M|
0000b280  31 32 38 2e 4f 53 33 2c  35 20 22 2b c3 7e 28 6d  |128.OS3,5 "+.~(m|
0000b290  65 6d 6f 72 79 2b 26 43  30 30 30 29 0d 4f 4c 3e  |emory+&C000).OL>|
0000b2a0  ff 22 4c 4f 41 44 20 3c  36 35 30 32 45 6d 24 44  |."LOAD <6502Em$D|
0000b2b0  69 72 3e 2e 52 4f 4d 53  2e 4d 31 32 38 2e 4f 53  |ir>.ROMS.M128.OS|
0000b2c0  33 2c 35 20 22 2b c3 7e  28 72 6f 6d 73 2b 72 6f  |3,5 "+.~(roms+ro|
0000b2d0  6d 73 69 7a 65 25 2a 31  36 29 0d 4f 56 29 ff 22  |msize%*16).OV)."|
0000b2e0  4c 4f 41 44 20 3c 36 35  30 32 45 6d 24 52 65 73  |LOAD <6502Em$Res|
0000b2f0  3e 2e 53 48 45 49 4c 41  20 22 2b c3 7e 73 68 65  |>.SHEILA "+.~she|
0000b300  69 6c 61 0d 4f 60 0e 73  6f 63 6b 65 74 25 3d 31  |ila.O`.socket%=1|
0000b310  35 0d 4f 6a 21 f2 6c 6f  61 64 52 4f 4d 28 22 4d  |5.Oj!.loadROM("M|
0000b320  31 32 38 2e 54 65 72 6d  69 6e 61 6c 33 35 22 2c  |128.Terminal35",|
0000b330  31 29 0d 4f 74 1f 3f 28  72 6f 6d 73 2b 72 6f 6d  |1).Ot.?(roms+rom|
0000b340  73 69 7a 65 25 2a 31 35  2b 26 31 36 41 33 29 3d  |size%*15+&16A3)=|
0000b350  33 0d 4f 7e 39 3f 28 72  6f 6d 73 2b 72 6f 6d 73  |3.O~9?(roms+roms|
0000b360  69 7a 65 25 2a 31 35 2b  26 31 36 41 34 29 3d 26  |ize%*15+&16A4)=&|
0000b370  38 30 20 3a 20 f4 20 69  6e 74 65 72 63 65 70 74  |80 : . intercept|
0000b380  20 2e 72 65 61 64 43 4d  4f 53 0d 4f 88 1f 3f 28  | .readCMOS.O..?(|
0000b390  72 6f 6d 73 2b 72 6f 6d  73 69 7a 65 25 2a 31 35  |roms+romsize%*15|
0000b3a0  2b 26 31 36 44 30 29 3d  33 0d 4f 92 3a 3f 28 72  |+&16D0)=3.O.:?(r|
0000b3b0  6f 6d 73 2b 72 6f 6d 73  69 7a 65 25 2a 31 35 2b  |oms+romsize%*15+|
0000b3c0  26 31 36 44 31 29 3d 26  38 31 20 3a 20 f4 20 69  |&16D1)=&81 : . i|
0000b3d0  6e 74 65 72 63 65 70 74  20 2e 77 72 69 74 65 43  |ntercept .writeC|
0000b3e0  4d 4f 53 0d 4f 9c 1f f2  6c 6f 61 64 52 4f 4d 28  |MOS.O...loadROM(|
0000b3f0  22 4d 31 32 38 2e 56 69  65 77 42 33 2c 33 22 2c  |"M128.ViewB3,3",|
0000b400  31 29 0d 4f a6 16 f2 6c  6f 61 64 52 4f 4d 28 22  |1).O...loadROM("|
0000b410  56 44 46 53 22 2c 31 29  0d 4f b0 23 f4 50 52 4f  |VDFS",1).O.#.PRO|
0000b420  43 6c 6f 61 64 52 4f 4d  28 22 4d 31 32 38 2e 41  |CloadROM("M128.A|
0000b430  44 46 53 32 2c 30 33 22  2c 31 29 0d 4f ba 20 f2  |DFS2,03",1).O. .|
0000b440  6c 6f 61 64 52 4f 4d 28  22 4d 31 32 38 2e 42 41  |loadROM("M128.BA|
0000b450  53 49 43 34 72 33 32 22  2c 31 29 0d 4f c4 20 f2  |SIC4r32",1).O. .|
0000b460  6c 6f 61 64 52 4f 4d 28  22 4d 31 32 38 2e 45 64  |loadROM("M128.Ed|
0000b470  69 74 31 2c 35 30 72 22  2c 31 29 0d 4f ce 21 f2  |it1,50r",1).O.!.|
0000b480  6c 6f 61 64 52 4f 4d 28  22 4d 31 32 38 2e 56 69  |loadROM("M128.Vi|
0000b490  65 77 53 68 31 2c 30 31  22 2c 31 29 0d 4f d8 1e  |ewSh1,01",1).O..|
0000b4a0  f2 6c 6f 61 64 52 4f 4d  28 22 4d 31 32 38 2e 44  |.loadROM("M128.D|
0000b4b0  46 53 32 2c 34 35 22 2c  31 29 0d 4f e2 1c f4 3f  |FS2,45",1).O...?|
0000b4c0  28 72 6f 6d 73 2b 26 34  30 30 30 2a 39 2b 26 31  |(roms+&4000*9+&1|
0000b4d0  31 36 33 29 3d 33 0d 4f  ec 39 f4 3f 28 72 6f 6d  |163)=3.O.9.?(rom|
0000b4e0  73 2b 26 34 30 30 30 2a  39 2b 26 31 31 36 34 29  |s+&4000*9+&1164)|
0000b4f0  3d 26 38 32 20 3a 20 52  45 4d 20 69 6e 74 65 72  |=&82 : REM inter|
0000b500  63 65 70 74 20 4f 53 57  4f 52 44 20 37 46 3f 0d  |cept OSWORD 7F?.|
0000b510  4f f6 1a f4 50 52 4f 43  6c 6f 61 64 52 4f 4d 28  |O...PROCloadROM(|
0000b520  22 56 44 46 53 22 2c 31  29 0d 50 00 0a f2 53 52  |"VDFS",1).P...SR|
0000b530  52 41 4d 0d 50 0a 0a f2  53 52 52 41 4d 0d 50 14  |RAM.P...SRRAM.P.|
0000b540  0a f2 53 52 52 41 4d 0d  50 1e 0a f2 53 52 52 41  |..SRRAM.P...SRRA|
0000b550  4d 0d 50 28 0a f2 53 52  52 41 4d 0d 50 32 05 e1  |M.P(..SRRAM.P2..|
0000b560  0d 50 3c 04 0d 50 46 0d  dd f2 63 6f 6d 70 61 63  |.P<..PF...compac|
0000b570  74 0d 50 50 16 f2 6c 6f  61 64 63 6f 64 65 28 22  |t.PP..loadcode("|
0000b580  43 6f 64 65 4d 22 29 0d  50 5a 3d ff 22 4c 4f 41  |CodeM").PZ=."LOA|
0000b590  44 20 3c 36 35 30 32 45  6d 24 44 69 72 3e 2e 52  |D <6502Em$Dir>.R|
0000b5a0  4f 4d 53 2e 43 6f 6d 70  61 63 74 2e 4f 53 35 2c  |OMS.Compact.OS5,|
0000b5b0  31 20 22 2b c3 7e 28 6d  65 6d 6f 72 79 2b 26 43  |1 "+.~(memory+&C|
0000b5c0  30 30 30 29 0d 50 64 3e  ff 22 4c 4f 41 44 20 3c  |000).Pd>."LOAD <|
0000b5d0  36 35 30 32 45 6d 24 44  69 72 3e 2e 52 4f 4d 53  |6502Em$Dir>.ROMS|
0000b5e0  2e 43 6f 6d 70 61 63 74  2e 4f 53 35 2c 31 20 22  |.Compact.OS5,1 "|
0000b5f0  2b c3 7e 28 72 6f 6d 73  2b 26 34 30 30 30 2a 31  |+.~(roms+&4000*1|
0000b600  36 29 0d 50 6e 29 ff 22  4c 4f 41 44 20 3c 36 35  |6).Pn)."LOAD <65|
0000b610  30 32 45 6d 24 52 65 73  3e 2e 53 48 45 49 4c 41  |02Em$Res>.SHEILA|
0000b620  20 22 2b c3 7e 73 68 65  69 6c 61 0d 50 78 0e 73  | "+.~sheila.Px.s|
0000b630  6f 63 6b 65 74 25 3d 31  35 0d 50 82 1f f2 6c 6f  |ocket%=15.P...lo|
0000b640  61 64 52 4f 4d 28 22 43  6f 6d 70 61 63 74 2e 55  |adROM("Compact.U|
0000b650  74 69 6c 73 22 2c 31 29  0d 50 8c 25 3f 28 72 6f  |tils",1).P.%?(ro|
0000b660  6d 73 2b 72 6f 6d 73 69  7a 65 25 2a 31 35 2b 26  |ms+romsize%*15+&|
0000b670  39 45 33 41 2d 26 38 30  30 30 29 3d 33 0d 50 96  |9E3A-&8000)=3.P.|
0000b680  3f 3f 28 72 6f 6d 73 2b  72 6f 6d 73 69 7a 65 25  |??(roms+romsize%|
0000b690  2a 31 35 2b 26 39 45 33  42 2d 26 38 30 30 30 29  |*15+&9E3B-&8000)|
0000b6a0  3d 26 38 32 20 3a 20 f4  20 69 6e 74 65 72 63 65  |=&82 : . interce|
0000b6b0  70 74 20 2e 72 65 61 64  43 4d 4f 53 0d 50 a0 25  |pt .readCMOS.P.%|
0000b6c0  3f 28 72 6f 6d 73 2b 72  6f 6d 73 69 7a 65 25 2a  |?(roms+romsize%*|
0000b6d0  31 35 2b 26 39 46 33 41  2d 26 38 30 30 30 29 3d  |15+&9F3A-&8000)=|
0000b6e0  33 0d 50 aa 40 3f 28 72  6f 6d 73 2b 72 6f 6d 73  |3.P.@?(roms+roms|
0000b6f0  69 7a 65 25 2a 31 35 2b  26 39 46 33 42 2d 26 38  |ize%*15+&9F3B-&8|
0000b700  30 30 30 29 3d 26 38 33  20 3a 20 f4 20 69 6e 74  |000)=&83 : . int|
0000b710  65 72 63 65 70 74 20 2e  77 72 69 74 65 43 4d 4f  |ercept .writeCMO|
0000b720  53 0d 50 b4 23 f2 6c 6f  61 64 52 4f 4d 28 22 43  |S.P.#.loadROM("C|
0000b730  6f 6d 70 61 63 74 2e 42  41 53 49 43 49 56 38 36  |ompact.BASICIV86|
0000b740  22 2c 31 29 0d 50 be 1f  f4 50 52 4f 43 6c 6f 61  |",1).P...PROCloa|
0000b750  64 52 4f 4d 28 22 4d 31  32 38 2e 41 44 46 53 22  |dROM("M128.ADFS"|
0000b760  2c 31 29 0d 50 c8 16 f2  6c 6f 61 64 52 4f 4d 28  |,1).P...loadROM(|
0000b770  22 56 44 46 53 22 2c 31  29 0d 50 d2 0d 73 6f 63  |"VDFS",1).P..soc|
0000b780  6b 65 74 25 3d 37 0d 50  dc 0a f2 53 52 52 41 4d  |ket%=7.P...SRRAM|
0000b790  0d 50 e6 0a f2 53 52 52  41 4d 0d 50 f0 0a f2 53  |.P...SRRAM.P...S|
0000b7a0  52 52 41 4d 0d 50 fa 0a  f2 53 52 52 41 4d 0d 51  |RRAM.P...SRRAM.Q|
0000b7b0  04 05 e1 0d 51 0e 04 0d  51 18 0e dd f2 65 6c 65  |....Q...Q....ele|
0000b7c0  63 74 72 6f 6e 0d 51 22  16 f2 6c 6f 61 64 63 6f  |ctron.Q"..loadco|
0000b7d0  64 65 28 22 43 6f 64 65  45 22 29 0d 51 2c 38 ff  |de("CodeE").Q,8.|
0000b7e0  22 4c 4f 41 44 20 3c 36  35 30 32 45 6d 24 44 69  |"LOAD <6502Em$Di|
0000b7f0  72 3e 2e 52 4f 4d 53 2e  45 4c 45 43 54 52 4f 4e  |r>.ROMS.ELECTRON|
0000b800  20 22 2b c3 7e 28 6d 65  6d 6f 72 79 2b 26 43 30  | "+.~(memory+&C0|
0000b810  30 30 29 0d 51 36 1f f4  6d 65 6d 6f 72 79 3f 26  |00).Q6..memory?&|
0000b820  46 30 45 38 3d 33 20 3a  20 52 45 4d 20 4f 53 46  |F0E8=3 : REM OSF|
0000b830  53 43 0d 51 40 20 f4 6d  65 6d 6f 72 79 3f 26 46  |SC.Q@ .memory?&F|
0000b840  46 43 45 3d 33 20 3a 20  52 45 4d 20 4f 53 46 49  |FCE=3 : REM OSFI|
0000b850  4e 44 0d 51 4a 20 f4 6d  65 6d 6f 72 79 3f 26 46  |ND.QJ .memory?&F|
0000b860  46 44 31 3d 33 20 3a 20  52 45 4d 20 4f 53 47 42  |FD1=3 : REM OSGB|
0000b870  50 42 0d 51 54 20 f4 6d  65 6d 6f 72 79 3f 26 46  |PB.QT .memory?&F|
0000b880  46 44 34 3d 33 20 3a 20  52 45 4d 20 4f 53 42 50  |FD4=3 : REM OSBP|
0000b890  55 54 0d 51 5e 20 f4 6d  65 6d 6f 72 79 3f 26 46  |UT.Q^ .memory?&F|
0000b8a0  46 44 37 3d 33 20 3a 20  52 45 4d 20 4f 53 42 47  |FD7=3 : REM OSBG|
0000b8b0  45 54 0d 51 68 20 f4 6d  65 6d 6f 72 79 3f 26 46  |ET.Qh .memory?&F|
0000b8c0  46 44 41 3d 33 20 3a 20  52 45 4d 20 4f 53 41 52  |FDA=3 : REM OSAR|
0000b8d0  47 53 0d 51 72 20 f4 6d  65 6d 6f 72 79 3f 26 46  |GS.Qr .memory?&F|
0000b8e0  46 44 44 3d 33 20 3a 20  52 45 4d 20 4f 53 46 49  |FDD=3 : REM OSFI|
0000b8f0  4c 45 0d 51 7c 04 0d 51  86 0e 73 6f 63 6b 65 74  |LE.Q|..Q..socket|
0000b900  25 3d 31 35 0d 51 90 19  f2 6c 6f 61 64 52 4f 4d  |%=15.Q...loadROM|
0000b910  28 22 42 41 53 49 43 49  49 22 2c 31 29 0d 51 9a  |("BASICII",1).Q.|
0000b920  16 f2 6c 6f 61 64 52 4f  4d 28 22 56 44 46 53 22  |..loadROM("VDFS"|
0000b930  2c 31 29 0d 51 a4 05 e1  0d 51 ae 04 0d 51 b8 0a  |,1).Q....Q...Q..|
0000b940  dd f2 42 42 43 42 0d 51  c2 15 f2 6c 6f 61 64 63  |..BBCB.Q...loadc|
0000b950  6f 64 65 28 22 43 6f 64  65 22 29 0d 51 cc 0d 3f  |ode("Code").Q..?|
0000b960  41 43 43 43 4f 4e 3d 30  0d 51 d6 35 ff 22 4c 4f  |ACCCON=0.Q.5."LO|
0000b970  41 44 20 3c 36 35 30 32  45 6d 24 44 69 72 3e 2e  |AD <6502Em$Dir>.|
0000b980  52 4f 4d 53 2e 4f 53 31  2c 32 20 22 2b c3 7e 28  |ROMS.OS1,2 "+.~(|
0000b990  6d 65 6d 6f 72 79 2b 26  43 30 30 30 29 0d 51 e0  |memory+&C000).Q.|
0000b9a0  3e f4 4f 53 43 4c 49 22  4c 4f 41 44 20 3c 36 35  |>.OSCLI"LOAD <65|
0000b9b0  30 32 45 6d 24 44 69 72  3e 2e 52 4f 4d 53 2e 4f  |02Em$Dir>.ROMS.O|
0000b9c0  53 31 2c 32 20 22 2b 53  54 52 24 7e 28 72 6f 6d  |S1,2 "+STR$~(rom|
0000b9d0  73 2b 26 34 30 30 30 2a  31 36 29 0d 51 ea 29 ff  |s+&4000*16).Q.).|
0000b9e0  22 4c 4f 41 44 20 3c 36  35 30 32 45 6d 24 52 65  |"LOAD <6502Em$Re|
0000b9f0  73 3e 2e 53 48 45 49 4c  41 20 22 2b c3 7e 73 68  |s>.SHEILA "+.~sh|
0000ba00  65 69 6c 61 0d 51 f4 1f  f4 6d 65 6d 6f 72 79 3f  |eila.Q...memory?|
0000ba10  26 46 31 42 31 3d 33 20  3a 20 52 45 4d 20 4f 53  |&F1B1=3 : REM OS|
0000ba20  46 53 43 0d 51 fe 20 f4  6d 65 6d 6f 72 79 3f 26  |FSC.Q. .memory?&|
0000ba30  46 46 43 45 3d 33 20 3a  20 52 45 4d 20 4f 53 46  |FFCE=3 : REM OSF|
0000ba40  49 4e 44 0d 52 08 20 f4  6d 65 6d 6f 72 79 3f 26  |IND.R. .memory?&|
0000ba50  46 46 44 31 3d 33 20 3a  20 52 45 4d 20 4f 53 47  |FFD1=3 : REM OSG|
0000ba60  42 50 42 0d 52 12 20 f4  6d 65 6d 6f 72 79 3f 26  |BPB.R. .memory?&|
0000ba70  46 46 44 34 3d 33 20 3a  20 52 45 4d 20 4f 53 42  |FFD4=3 : REM OSB|
0000ba80  50 55 54 0d 52 1c 20 f4  6d 65 6d 6f 72 79 3f 26  |PUT.R. .memory?&|
0000ba90  46 46 44 37 3d 33 20 3a  20 52 45 4d 20 4f 53 42  |FFD7=3 : REM OSB|
0000baa0  47 45 54 0d 52 26 20 f4  6d 65 6d 6f 72 79 3f 26  |GET.R& .memory?&|
0000bab0  46 46 44 41 3d 33 20 3a  20 52 45 4d 20 4f 53 41  |FFDA=3 : REM OSA|
0000bac0  52 47 53 0d 52 30 20 f4  6d 65 6d 6f 72 79 3f 26  |RGS.R0 .memory?&|
0000bad0  46 46 44 44 3d 33 20 3a  20 52 45 4d 20 4f 53 46  |FFDD=3 : REM OSF|
0000bae0  49 4c 45 0d 52 3a 04 0d  52 44 0e 73 6f 63 6b 65  |ILE.R:..RD.socke|
0000baf0  74 25 3d 31 35 0d 52 4e  19 f2 6c 6f 61 64 52 4f  |t%=15.RN..loadRO|
0000bb00  4d 28 22 42 41 53 49 43  49 49 22 2c 31 29 0d 52  |M("BASICII",1).R|
0000bb10  58 16 f2 6c 6f 61 64 52  4f 4d 28 22 56 44 46 53  |X..loadROM("VDFS|
0000bb20  22 2c 31 29 0d 52 62 0a  f2 53 52 52 41 4d 0d 52  |",1).Rb..SRRAM.R|
0000bb30  6c 05 e1 0d 52 76 04 0d  52 80 10 dd f2 6e 65 77  |l...Rv..R....new|
0000bb40  6d 61 63 68 69 6e 65 0d  52 8a 24 f2 63 6c 65 61  |machine.R.$.clea|
0000bb50  72 6d 65 6d 28 72 6f 6d  73 2c 72 6f 6d 73 2b 31  |rmem(roms,roms+1|
0000bb60  36 2a 72 6f 6d 73 69 7a  65 25 29 0d 52 94 29 f2  |6*romsize%).R.).|
0000bb70  63 6c 65 61 72 6d 65 6d  28 6d 65 6d 6f 72 79 2d  |clearmem(memory-|
0000bb80  26 32 30 30 2c 6d 65 6d  6f 72 79 2b 36 34 2a 31  |&200,memory+64*1|
0000bb90  30 32 34 29 0d 52 9e 0d  f2 69 6e 69 74 52 4f 4d  |024).R...initROM|
0000bba0  73 0d 52 a8 04 0d 52 b2  1d e7 20 6d 61 63 68 69  |s.R...R... machi|
0000bbb0  6e 65 25 3e 34 20 8c 20  6d 61 63 68 69 6e 65 25  |ne%>4 . machine%|
0000bbc0  3d 30 0d 52 bc 3f f4 49  46 20 4d 61 63 68 69 6e  |=0.R.?.IF Machin|
0000bbd0  65 25 28 6d 61 63 68 69  6e 65 25 29 3d 46 41 4c  |e%(machine%)=FAL|
0000bbe0  53 45 20 54 48 45 4e 20  6d 61 63 68 69 6e 65 25  |SE THEN machine%|
0000bbf0  3d 64 65 66 61 75 6c 74  5f 6d 61 63 68 69 6e 65  |=default_machine|
0000bc00  25 0d 52 c6 04 0d 52 d0  28 f2 70 6f 6b 65 69 63  |%.R...R.(.pokeic|
0000bc10  6f 6e 74 65 78 74 28 31  30 2c 4d 61 63 68 69 6e  |ontext(10,Machin|
0000bc20  65 24 28 6d 61 63 68 69  6e 65 25 29 29 0d 52 da  |e$(machine%)).R.|
0000bc30  04 0d 52 e4 11 c8 8e 20  6d 61 63 68 69 6e 65 25  |..R.... machine%|
0000bc40  20 ca 0d 52 ee 04 0d 52  f8 09 c9 20 31 20 3a 0d  | ..R...R... 1 :.|
0000bc50  53 02 2f e7 20 4d 61 63  68 69 6e 65 25 28 31 29  |S./. Machine%(1)|
0000bc60  3d 30 20 8c 20 6d 61 63  68 69 6e 65 25 2b 3d 31  |=0 . machine%+=1|
0000bc70  3a f2 6e 65 77 6d 61 63  68 69 6e 65 3a e1 0d 53  |:.newmachine:..S|
0000bc80  0c 0b f2 6d 61 73 74 65  72 0d 53 16 04 0d 53 20  |...master.S...S |
0000bc90  09 c9 20 32 20 3a 0d 53  2a 2f e7 20 4d 61 63 68  |.. 2 :.S*/. Mach|
0000bca0  69 6e 65 25 28 32 29 3d  30 20 8c 20 6d 61 63 68  |ine%(2)=0 . mach|
0000bcb0  69 6e 65 25 2b 3d 31 3a  f2 6e 65 77 6d 61 63 68  |ine%+=1:.newmach|
0000bcc0  69 6e 65 3a e1 0d 53 34  0d f2 6d 61 73 74 65 72  |ine:..S4..master|
0000bcd0  33 35 0d 53 3e 04 0d 53  48 09 c9 20 33 20 3a 0d  |35.S>..SH.. 3 :.|
0000bce0  53 52 2f e7 20 4d 61 63  68 69 6e 65 25 28 33 29  |SR/. Machine%(3)|
0000bcf0  3d 30 20 8c 20 6d 61 63  68 69 6e 65 25 2b 3d 31  |=0 . machine%+=1|
0000bd00  3a f2 6e 65 77 6d 61 63  68 69 6e 65 3a e1 0d 53  |:.newmachine:..S|
0000bd10  5c 0c f2 63 6f 6d 70 61  63 74 0d 53 66 04 0d 53  |\..compact.Sf..S|
0000bd20  70 09 c9 20 34 20 3a 0d  53 7a 0d f2 65 6c 65 63  |p.. 4 :.Sz..elec|
0000bd30  74 72 6f 6e 0d 53 84 04  0d 53 8e 0d 7f 20 3a 20  |tron.S...S... : |
0000bd40  f2 42 42 43 42 0d 53 98  05 cb 0d 53 a2 11 f4 50  |.BBCB.S....S...P|
0000bd50  52 4f 43 72 65 73 65 74  28 31 29 0d 53 ac 1d f4  |ROCreset(1).S...|
0000bd60  4f 53 52 44 43 48 5f 6c  6f 63 3d 46 4e 70 65 65  |OSRDCH_loc=FNpee|
0000bd70  6b 28 26 46 46 45 30 29  0d 53 b6 1b 4f 53 52 44  |k(&FFE0).S..OSRD|
0000bd80  43 48 5f 6c 6f 63 3d 6d  65 6d 6f 72 79 3f 26 46  |CH_loc=memory?&F|
0000bd90  46 45 30 0d 53 c0 04 0d  53 ca 28 f2 72 65 69 6e  |FE0.S...S.(.rein|
0000bda0  73 74 61 6c 6c 28 4d 61  63 68 69 6e 65 53 70 72  |stall(MachineSpr|
0000bdb0  69 74 65 24 28 6d 61 63  68 69 6e 65 25 29 29 0d  |ite$(machine%)).|
0000bdc0  53 d4 04 0d 53 de 0d f2  72 65 73 65 74 28 31 29  |S...S...reset(1)|
0000bdd0  0d 53 e8 04 0d 53 f2 05  e1 0d 53 fc 04 0d 54 06  |.S...S....S...T.|
0000bde0  15 dd f2 64 65 66 61 75  6c 74 5f 6f 70 74 69 6f  |...default_optio|
0000bdf0  6e 73 0d 54 10 26 74 61  70 65 66 69 6c 65 24 3d  |ns.T.&tapefile$=|
0000be00  22 3c 36 35 30 32 45 6d  24 44 69 72 3e 2e 5e 2e  |"<6502Em$Dir>.^.|
0000be10  54 61 70 65 2d 49 6e 22  0d 54 1a 0e 50 61 6c 65  |Tape-In".T..Pale|
0000be20  74 74 65 25 3d b9 0d 54  24 0d 4f 53 52 44 43 48  |tte%=..T$.OSRDCH|
0000be30  25 3d b9 0d 54 2e 0d 52  4f 4d 53 45 4c 25 3d b9  |%=..T..ROMSEL%=.|
0000be40  0d 54 38 0d 43 75 72 73  6f 72 25 3d a3 0d 54 42  |.T8.Cursor%=..TB|
0000be50  0c 4f 73 63 6c 69 25 3d  a3 0d 54 4c 1d 6d 61 63  |.Oscli%=..TL.mac|
0000be60  68 69 6e 65 25 3d 64 65  66 61 75 6c 74 5f 6d 61  |hine%=default_ma|
0000be70  63 68 69 6e 65 25 0d 54  56 0f 73 6f 75 6e 64 5f  |chine%.TV.sound_|
0000be80  6f 6e 25 3d b9 0d 54 60  12 73 63 72 6f 6c 6c 5f  |on%=..T`.scroll_|
0000be90  68 61 63 6b 25 3d a3 0d  54 6a 0e 66 69 6c 65 5f  |hack%=..Tj.file_|
0000bea0  78 78 78 3d a3 0d 54 74  0f 76 6f 6c 75 6d 65 25  |xxx=..Tt.volume%|
0000beb0  3d 31 32 37 0d 54 7e 19  f2 73 65 74 6b 65 79 6d  |=127.T~..setkeym|
0000bec0  61 70 28 22 44 65 66 61  75 6c 74 22 29 0d 54 88  |ap("Default").T.|
0000bed0  12 f2 6e 65 77 73 70 65  65 64 28 31 30 30 29 0d  |..newspeed(100).|
0000bee0  54 92 05 e1 0d 54 9c 04  0d 54 a6 12 dd f2 73 61  |T....T...T....sa|
0000bef0  76 65 5f 6f 70 74 69 6f  6e 73 0d 54 b0 1d 51 3d  |ve_options.T..Q=|
0000bf00  ae 22 3c 36 35 30 32 45  6d 24 52 65 73 3e 2e 4f  |."<6502Em$Res>.O|
0000bf10  70 74 69 6f 6e 73 22 0d  54 ba 10 f1 23 51 2c 50  |ptions".T...#Q,P|
0000bf20  61 6c 65 74 74 65 25 0d  54 c4 0f f1 23 51 2c 4f  |alette%.T...#Q,O|
0000bf30  53 52 44 43 48 25 0d 54  ce 0f f1 23 51 2c 52 4f  |SRDCH%.T...#Q,RO|
0000bf40  4d 53 45 4c 25 0d 54 d8  0f f1 23 51 2c 43 75 72  |MSEL%.T...#Q,Cur|
0000bf50  73 6f 72 25 0d 54 e2 0e  f1 23 51 2c 4f 73 63 6c  |sor%.T...#Q,Oscl|
0000bf60  69 25 0d 54 ec 09 f1 23  51 2c 30 0d 54 f6 10 f1  |i%.T...#Q,0.T...|
0000bf70  23 51 2c 6d 61 63 68 69  6e 65 25 0d 55 00 11 f1  |#Q,machine%.U...|
0000bf80  23 51 2c 73 6f 75 6e 64  5f 6f 6e 25 0d 55 0a 10  |#Q,sound_on%.U..|
0000bf90  f1 23 51 2c 66 69 6c 65  5f 78 78 78 0d 55 14 0f  |.#Q,file_xxx.U..|
0000bfa0  f1 23 51 2c 76 6f 6c 75  6d 65 25 0d 55 1e 0f f1  |.#Q,volume%.U...|
0000bfb0  23 51 2c 4b 65 79 4d 61  70 24 0d 55 28 0d f1 23  |#Q,KeyMap$.U(..#|
0000bfc0  51 2c 73 70 65 65 64 0d  55 32 07 d9 23 51 0d 55  |Q,speed.U2..#Q.U|
0000bfd0  3c 05 e1 0d 55 46 04 0d  55 50 12 dd f2 6c 6f 61  |<...UF..UP...loa|
0000bfe0  64 5f 6f 70 74 69 6f 6e  73 0d 55 5a 26 74 61 70  |d_options.UZ&tap|
0000bff0  65 66 69 6c 65 24 3d 22  3c 36 35 30 32 45 6d 24  |efile$="<6502Em$|
0000c000  44 69 72 3e 2e 5e 2e 54  61 70 65 2d 49 6e 22 0d  |Dir>.^.Tape-In".|
0000c010  55 64 1d 51 3d 8e 22 3c  36 35 30 32 45 6d 24 52  |Ud.Q=."<6502Em$R|
0000c020  65 73 3e 2e 4f 70 74 69  6f 6e 73 22 0d 55 6e 20  |es>.Options".Un |
0000c030  e7 20 51 3d 30 20 8c 20  f2 64 65 66 61 75 6c 74  |. Q=0 . .default|
0000c040  5f 6f 70 74 69 6f 6e 73  20 3a 20 e1 0d 55 78 10  |_options : ..Ux.|
0000c050  e8 23 51 2c 50 61 6c 65  74 74 65 25 0d 55 82 0f  |.#Q,Palette%.U..|
0000c060  e8 23 51 2c 4f 53 52 44  43 48 25 0d 55 8c 0f e8  |.#Q,OSRDCH%.U...|
0000c070  23 51 2c 52 4f 4d 53 45  4c 25 0d 55 96 0f e8 23  |#Q,ROMSEL%.U...#|
0000c080  51 2c 43 75 72 73 6f 72  25 0d 55 a0 0e e8 23 51  |Q,Cursor%.U...#Q|
0000c090  2c 4f 73 63 6c 69 25 0d  55 aa 0e e8 23 51 2c 65  |,Oscli%.U...#Q,e|
0000c0a0  78 61 63 74 25 0d 55 b4  10 e8 23 51 2c 6d 61 63  |xact%.U...#Q,mac|
0000c0b0  68 69 6e 65 25 0d 55 be  11 e8 23 51 2c 73 6f 75  |hine%.U...#Q,sou|
0000c0c0  6e 64 5f 6f 6e 25 0d 55  c8 12 73 63 72 6f 6c 6c  |nd_on%.U..scroll|
0000c0d0  5f 68 61 63 6b 25 3d a3  0d 55 d2 10 e8 23 51 2c  |_hack%=..U...#Q,|
0000c0e0  66 69 6c 65 5f 78 78 78  0d 55 dc 0f e8 23 51 2c  |file_xxx.U...#Q,|
0000c0f0  76 6f 6c 75 6d 65 25 0d  55 e6 1b e8 23 51 2c 4b  |volume%.U...#Q,K|
0000c100  24 20 3a 20 f2 73 65 74  6b 65 79 6d 61 70 28 4b  |$ : .setkeymap(K|
0000c110  24 29 0d 55 f0 0d e8 23  51 2c 73 70 65 65 64 0d  |$).U...#Q,speed.|
0000c120  55 fa 07 d9 23 51 0d 56  04 05 e1 0d 56 0e 04 0d  |U...#Q.V....V...|
0000c130  56 18 17 dd f2 73 77 61  70 6d 65 6d 28 41 25 2c  |V....swapmem(A%,|
0000c140  42 25 2c 43 25 29 0d 56  22 0d 50 25 3d 62 75 66  |B%,C%).V".P%=buf|
0000c150  66 65 72 0d 56 2c 09 5b  4f 50 54 32 0d 56 36 09  |fer.V,.[OPT2.V6.|
0000c160  2e 73 77 61 70 0d 56 40  11 53 55 42 53 20 52 32  |.swap.V@.SUBS R2|
0000c170  2c 52 32 2c 23 34 0d 56  4a 12 4c 44 52 20 52 33  |,R2,#4.VJ.LDR R3|
0000c180  2c 5b 52 30 2c 52 32 5d  0d 56 54 12 4c 44 52 20  |,[R0,R2].VT.LDR |
0000c190  52 34 2c 5b 52 31 2c 52  32 5d 0d 56 5e 12 53 54  |R4,[R1,R2].V^.ST|
0000c1a0  52 20 52 33 2c 5b 52 31  2c 52 32 5d 0d 56 68 12  |R R3,[R1,R2].Vh.|
0000c1b0  53 54 52 20 52 34 2c 5b  52 30 2c 52 32 5d 0d 56  |STR R4,[R0,R2].V|
0000c1c0  72 0c 42 4e 45 20 73 77  61 70 0d 56 7c 0e 4d 4f  |r.BNE swap.V|.MO|
0000c1d0  56 20 50 43 2c 52 31 34  0d 56 86 05 5d 0d 56 90  |V PC,R14.V..].V.|
0000c1e0  0a d6 20 73 77 61 70 0d  56 9a 05 e1 0d 56 a4 04  |.. swap.V....V..|
0000c1f0  0d 56 ae 15 dd f2 63 6c  65 61 72 6d 65 6d 28 53  |.V....clearmem(S|
0000c200  25 2c 45 25 29 0d 56 b8  0d 50 25 3d 62 75 66 66  |%,E%).V..P%=buff|
0000c210  65 72 0d 56 c2 09 5b 4f  50 54 32 0d 56 cc 14 45  |er.V..[OPT2.V..E|
0000c220  51 55 44 20 53 25 20 3b  20 6d 65 6d 6f 72 79 0d  |QUD S% ; memory.|
0000c230  56 d6 1a 45 51 55 44 20  45 25 20 3b 20 6d 65 6d  |V..EQUD E% ; mem|
0000c240  6f 72 79 2b 26 38 30 30  30 0d 56 e0 0a 2e 63 6c  |ory+&8000.V...cl|
0000c250  65 61 72 0d 56 ea 0d 4d  4f 56 20 52 30 2c 23 30  |ear.V..MOV R0,#0|
0000c260  0d 56 f4 11 4c 44 52 20  52 31 2c 62 75 66 66 65  |.V..LDR R1,buffe|
0000c270  72 0d 56 fe 13 4c 44 52  20 52 32 2c 62 75 66 66  |r.V..LDR R2,buff|
0000c280  65 72 2b 34 0d 57 08 09  2e 6c 6f 6f 70 0d 57 12  |er+4.W...loop.W.|
0000c290  12 53 54 52 20 52 30 2c  5b 52 31 5d 2c 23 34 0d  |.STR R0,[R1],#4.|
0000c2a0  57 1c 0d 43 4d 50 20 52  31 2c 52 32 0d 57 26 0c  |W..CMP R1,R2.W&.|
0000c2b0  42 4e 45 20 6c 6f 6f 70  0d 57 30 0e 4d 4f 56 20  |BNE loop.W0.MOV |
0000c2c0  50 43 2c 52 31 34 0d 57  3a 05 5d 0d 57 44 0b d6  |PC,R14.W:.].WD..|
0000c2d0  20 63 6c 65 61 72 0d 57  4e 05 e1 0d 57 58 04 0d  | clear.WN...WX..|
0000c2e0  57 62 0d dd f2 6f 73 62  79 74 65 32 0d 57 6c 08  |Wb...osbyte2.Wl.|
0000c2f0  f2 72 74 73 0d 57 76 05  e1 0d 57 80 04 0d 57 8a  |.rts.Wv...W...W.|
0000c300  0d dd f2 6f 73 77 6f 72  64 32 0d 57 94 34 ea 61  |...osword2.W.4.a|
0000c310  64 64 72 2c 73 65 63 25  2c 6c 65 6e 25 2c 62 75  |ddr,sec%,len%,bu|
0000c320  66 66 25 2c 74 72 61 63  6b 25 2c 6c 6f 67 5f 73  |ff%,track%,log_s|
0000c330  65 63 5f 73 69 7a 65 2c  64 72 69 76 65 25 0d 57  |ec_size,drive%.W|
0000c340  9e 13 61 64 64 72 3d 6d  65 6d 6f 72 79 3f 26 46  |..addr=memory?&F|
0000c350  30 0d 57 a8 19 61 64 64  72 2b 3d 6d 65 6d 6f 72  |0.W..addr+=memor|
0000c360  79 3f 26 46 31 20 3c 3c  20 38 0d 57 b2 14 61 64  |y?&F1 << 8.W..ad|
0000c370  64 72 3d a4 61 64 64 72  28 61 64 64 72 29 0d 57  |dr=.addr(addr).W|
0000c380  bc 13 c8 8e 20 6d 65 6d  6f 72 79 3f 26 45 46 20  |.... memory?&EF |
0000c390  ca 0d 57 c6 09 c9 20 26  37 46 0d 57 d0 12 e7 20  |..W... &7F.W... |
0000c3a0  64 66 73 73 75 70 70 6f  72 74 20 8c 0d 57 da 39  |dfssupport ..W.9|
0000c3b0  c8 99 20 22 58 49 6d 61  67 65 44 46 53 5f 4f 53  |.. "XImageDFS_OS|
0000c3c0  57 4f 52 44 37 46 22 2c  2c 6d 65 6d 6f 72 79 3f  |WORD7F",,memory?|
0000c3d0  26 46 30 2c 6d 65 6d 6f  72 79 3f 26 46 31 2c 6d  |&F0,memory?&F1,m|
0000c3e0  65 6d 6f 72 79 0d 57 e4  09 61 3f 33 3d 30 0d 57  |emory.W..a?3=0.W|
0000c3f0  ee 05 cc 0d 57 f8 11 64  72 69 76 65 25 3d 61 64  |....W..drive%=ad|
0000c400  64 72 3f 30 0d 58 02 1f  62 75 66 66 25 3d a4 61  |dr?0.X..buff%=.a|
0000c410  64 64 72 28 61 64 64 72  21 31 20 80 20 26 46 46  |ddr(addr!1 . &FF|
0000c420  46 46 29 0d 58 0c 11 74  72 61 63 6b 25 3d 61 64  |FF).X..track%=ad|
0000c430  64 72 3f 37 0d 58 16 0f  73 65 63 25 3d 61 64 64  |dr?7.X..sec%=add|
0000c440  72 3f 38 0d 58 20 1a 6c  65 6e 25 3d 28 61 64 64  |r?8.X .len%=(add|
0000c450  72 3f 39 29 20 80 20 25  31 31 31 31 31 0d 58 2a  |r?9) . %11111.X*|
0000c460  24 6c 6f 67 5f 73 65 63  5f 73 69 7a 65 3d 28 28  |$log_sec_size=((|
0000c470  61 64 64 72 3f 39 29 20  3e 3e 20 35 29 20 2b 20  |addr?9) >> 5) + |
0000c480  37 0d 58 34 19 62 75 66  66 65 72 3f 30 3d 6c 6f  |7.X4.buffer?0=lo|
0000c490  67 5f 73 65 63 5f 73 69  7a 65 0d 58 3e 0f 62 75  |g_sec_size.X>.bu|
0000c4a0  66 66 65 72 3f 31 3d 31  30 0d 58 48 18 62 75 66  |ffer?1=10.XH.buf|
0000c4b0  66 65 72 3f 32 3d 31 20  3a 20 f4 20 68 65 61 64  |fer?2=1 : . head|
0000c4c0  73 0d 58 52 0e 62 75 66  66 65 72 3f 33 3d 31 0d  |s.XR.buffer?3=1.|
0000c4d0  58 5c 0e 62 75 66 66 65  72 21 34 3d 30 0d 58 66  |X\.buffer!4=0.Xf|
0000c4e0  0e 62 75 66 66 65 72 21  38 3d 30 0d 58 70 26 62  |.buffer!8=0.Xp&b|
0000c4f0  75 66 66 65 72 21 31 32  3d 31 20 3c 3c 20 32 39  |uffer!12=1 << 29|
0000c500  20 3a 20 f4 20 64 72 69  76 65 25 20 3c 3c 20 32  | : . drive% << 2|
0000c510  39 0d 58 7a 14 62 75 66  66 65 72 21 31 36 3d 26  |9.Xz.buffer!16=&|
0000c520  36 34 30 30 30 0d 58 84  0f 62 75 66 66 65 72 21  |64000.X..buffer!|
0000c530  32 30 3d 30 0d 58 8e 0f  62 75 66 66 65 72 21 32  |20=0.X..buffer!2|
0000c540  34 3d 30 0d 58 98 0f 62  75 66 66 65 72 21 32 38  |4=0.X..buffer!28|
0000c550  3d 30 0d 58 a2 81 c8 99  20 22 58 41 44 46 53 5f  |=0.X.... "XADFS_|
0000c560  44 69 73 63 4f 70 22 2c  2c 31 2b 28 62 75 66 66  |DiscOp",,1+(buff|
0000c570  65 72 20 3c 3c 20 36 29  2c 28 74 72 61 63 6b 25  |er << 6),(track%|
0000c580  2a 31 30 2b 73 65 63 25  29 2a 32 5e 6c 6f 67 5f  |*10+sec%)*2^log_|
0000c590  73 65 63 5f 73 69 7a 65  2b 28 6f 73 77 6f 72 64  |sec_size+(osword|
0000c5a0  37 46 5f 64 72 69 76 65  25 20 3c 3c 20 32 39 29  |7F_drive% << 29)|
0000c5b0  2c 62 75 66 66 25 2c 6c  65 6e 25 2a 32 5e 6c 6f  |,buff%,len%*2^lo|
0000c5c0  67 5f 73 65 63 5f 73 69  7a 65 20 b8 20 41 25 20  |g_sec_size . A% |
0000c5d0  3b 20 46 0d 58 ac 28 e7  20 28 46 20 80 20 31 29  |; F.X.(. (F . 1)|
0000c5e0  3d 30 20 8c 20 61 64 64  72 3f 31 30 3d 30 20 8b  |=0 . addr?10=0 .|
0000c5f0  20 61 64 64 72 3f 31 30  3d 41 25 0d 58 b6 04 0d  | addr?10=A%.X...|
0000c600  58 c0 09 61 3f 33 3d 30  0d 58 ca 04 0d 58 d4 05  |X..a?3=0.X...X..|
0000c610  cd 0d 58 de 04 0d 58 e8  09 c9 20 26 37 32 0d 58  |..X...X... &72.X|
0000c620  f2 1c f4 50 52 49 4e 54  22 4f 53 57 4f 52 44 20  |...PRINT"OSWORD |
0000c630  37 32 22 3b 61 64 64 72  3f 35 0d 58 fc 10 e7 20  |72";addr?5.X... |
0000c640  61 64 64 72 3f 35 3d 38  20 8c 0d 59 06 0f 73 65  |addr?5=8 ..Y..se|
0000c650  63 25 3d 61 64 64 72 3f  38 0d 59 10 15 73 65 63  |c%=addr?8.Y..sec|
0000c660  25 2b 3d 61 64 64 72 3f  37 20 3c 3c 20 38 0d 59  |%+=addr?7 << 8.Y|
0000c670  1a 21 73 65 63 25 2b 3d  28 61 64 64 72 3f 36 20  |.!sec%+=(addr?6 |
0000c680  80 20 25 31 31 31 31 31  29 20 3c 3c 20 31 36 0d  |. %11111) << 16.|
0000c690  59 24 0f 6c 65 6e 25 3d  61 64 64 72 3f 39 0d 59  |Y$.len%=addr?9.Y|
0000c6a0  2e 1f 62 75 66 66 25 3d  a4 61 64 64 72 28 61 64  |..buff%=.addr(ad|
0000c6b0  64 72 21 31 20 80 20 26  46 46 46 46 29 0d 59 38  |dr!1 . &FFFF).Y8|
0000c6c0  04 0d 59 42 51 c8 99 20  22 58 41 44 46 53 5f 44  |..YBQ.. "XADFS_D|
0000c6d0  69 73 63 4f 70 22 2c 2c  31 2c 73 65 63 25 2a 32  |iscOp",,1,sec%*2|
0000c6e0  35 36 2b 28 6f 73 77 6f  72 64 37 32 5f 64 72 69  |56+(osword72_dri|
0000c6f0  76 65 25 20 3c 3c 20 32  39 29 2c 62 75 66 66 25  |ve% << 29),buff%|
0000c700  2c 6c 65 6e 25 2a 32 35  36 20 b8 20 41 25 20 3b  |,len%*256 . A% ;|
0000c710  20 46 0d 59 4c 24 e7 20  28 46 20 80 20 31 29 3d  | F.YL$. (F . 1)=|
0000c720  30 20 8c 20 3f 61 64 64  72 3d 30 20 8b 20 3f 61  |0 . ?addr=0 . ?a|
0000c730  64 64 72 3d 41 25 0d 59  56 04 0d 59 60 56 f4 4f  |ddr=A%.YV..Y`V.O|
0000c740  53 43 4c 49 22 53 41 56  45 20 4d 45 4d 3a 44 55  |SCLI"SAVE MEM:DU|
0000c750  4d 50 20 22 2b 53 54 52  24 7e 62 75 66 66 25 2b  |MP "+STR$~buff%+|
0000c760  22 20 2b 22 2b 53 54 52  24 7e 28 6c 65 6e 25 2a  |" +"+STR$~(len%*|
0000c770  32 35 36 29 2b 22 20 22  2b 53 54 52 24 7e 28 61  |256)+" "+STR$~(a|
0000c780  64 64 72 21 31 20 41 4e  44 20 26 46 46 46 46 29  |ddr!1 AND &FFFF)|
0000c790  0d 59 6a 04 0d 59 74 21  61 3f 33 3d 30 20 3a 20  |.Yj..Yt!a?3=0 : |
0000c7a0  f4 20 63 6c 61 69 6d 20  73 65 72 76 69 63 65 20  |. claim service |
0000c7b0  63 61 6c 6c 21 0d 59 7e  05 cd 0d 59 88 21 7f 20  |call!.Y~...Y.!. |
0000c7c0  f4 50 52 49 4e 54 22 4f  53 57 4f 52 44 20 22 3b  |.PRINT"OSWORD ";|
0000c7d0  7e 3f 26 45 46 3a 51 3d  47 45 54 0d 59 92 05 cb  |~?&EF:Q=GET.Y...|
0000c7e0  0d 59 9c 04 0d 59 a6 08  f2 72 74 73 0d 59 b0 14  |.Y...Y...rts.Y..|
0000c7f0  f4 50 52 49 4e 54 7e 21  70 63 5f 73 74 6f 72 65  |.PRINT~!pc_store|
0000c800  0d 59 ba 0a f4 51 3d 47  45 54 0d 59 c4 05 e1 0d  |.Y...Q=GET.Y....|
0000c810  59 ce 04 0d 59 d8 16 dd  f2 73 70 6c 69 74 28 f8  |Y...Y....split(.|
0000c820  20 41 24 2c f8 20 42 24  29 0d 59 e2 08 ea 20 49  | A$,. B$).Y... I|
0000c830  25 0d 59 ec 11 c8 95 20  c0 41 24 2c 31 29 3d 22  |%.Y.... .A$,1)="|
0000c840  20 22 0d 59 f6 11 41 24  3d c2 41 24 2c a9 41 24  | ".Y..A$=.A$,.A$|
0000c850  2d 31 29 0d 5a 00 05 ce  0d 5a 0a 0f e3 49 25 3d  |-1).Z....Z...I%=|
0000c860  32 20 b8 20 a9 41 24 0d  5a 14 3b e7 20 c1 41 24  |2 . .A$.Z.;. .A$|
0000c870  2c 49 25 2c 31 29 3d 22  2b 22 20 8c 20 41 24 3d  |,I%,1)="+" . A$=|
0000c880  c0 41 24 2c 49 25 2d 31  29 2b 22 20 22 2b c2 41  |.A$,I%-1)+" "+.A|
0000c890  24 2c 31 2b a9 41 24 2d  49 25 29 3a 49 25 3d 32  |$,1+.A$-I%):I%=2|
0000c8a0  35 35 0d 5a 1e 05 ed 0d  5a 28 0f 49 25 3d a7 41  |55.Z....Z(.I%=.A|
0000c8b0  24 2c 22 20 22 29 0d 5a  32 42 f4 49 46 20 49 4e  |$," ").Z2B.IF IN|
0000c8c0  53 54 52 28 41 24 2c 22  2b 22 29 3e 31 20 41 4e  |STR(A$,"+")>1 AN|
0000c8d0  44 20 49 4e 53 54 52 28  41 24 2c 22 2b 22 29 3c  |D INSTR(A$,"+")<|
0000c8e0  49 25 20 54 48 45 4e 20  49 25 3d 49 4e 53 54 52  |I% THEN I%=INSTR|
0000c8f0  28 41 24 2c 22 2b 22 29  0d 5a 3c 10 42 24 3d c0  |(A$,"+").Z<.B$=.|
0000c900  41 24 2c 49 25 2d 31 29  0d 5a 46 12 41 24 3d c2  |A$,I%-1).ZF.A$=.|
0000c910  41 24 2c a9 41 24 2d 49  25 29 0d 5a 50 05 e1 0d  |A$,.A$-I%).ZP...|
0000c920  5a 5a 04 0d 5a 64 17 dd  f2 73 70 6c 69 74 32 28  |ZZ..Zd...split2(|
0000c930  f8 20 41 24 2c f8 20 42  24 29 0d 5a 6e 08 ea 20  |. A$,. B$).Zn.. |
0000c940  49 25 0d 5a 78 11 c8 95  20 c0 41 24 2c 31 29 3d  |I%.Zx... .A$,1)=|
0000c950  22 20 22 0d 5a 82 11 41  24 3d c2 41 24 2c a9 41  |" ".Z..A$=.A$,.A|
0000c960  24 2d 31 29 0d 5a 8c 05  ce 0d 5a 96 0f 49 25 3d  |$-1).Z....Z..I%=|
0000c970  a7 41 24 2c 22 20 22 29  0d 5a a0 10 42 24 3d c0  |.A$," ").Z..B$=.|
0000c980  41 24 2c 49 25 2d 31 29  0d 5a aa 12 41 24 3d c2  |A$,I%-1).Z..A$=.|
0000c990  41 24 2c a9 41 24 2d 49  25 29 0d 5a b4 05 e1 0d  |A$,.A$-I%).Z....|
0000c9a0  5a be 04 0d 5a c8 17 dd  f2 73 70 6c 69 74 33 28  |Z...Z....split3(|
0000c9b0  f8 20 41 24 2c f8 20 42  24 29 0d 5a d2 0b ea 20  |. A$,. B$).Z... |
0000c9c0  49 25 2c 4a 25 0d 5a dc  20 c8 95 20 28 c0 41 24  |I%,J%.Z. .. (.A$|
0000c9d0  2c 31 29 3d 22 20 22 20  84 20 c0 41 24 2c 31 29  |,1)=" " . .A$,1)|
0000c9e0  3d 22 2e 22 29 0d 5a e6  11 41 24 3d c2 41 24 2c  |=".").Z..A$=.A$,|
0000c9f0  a9 41 24 2d 31 29 0d 5a  f0 05 ce 0d 5a fa 0f 49  |.A$-1).Z....Z..I|
0000ca00  25 3d a7 41 24 2c 22 20  22 29 0d 5b 04 0f 4a 25  |%=.A$," ").[..J%|
0000ca10  3d a7 41 24 2c 22 2e 22  29 0d 5b 0e 23 e7 20 4a  |=.A$,".").[.#. J|
0000ca20  25 3e 30 20 80 20 28 4a  25 3c 49 25 20 84 20 49  |%>0 . (J%<I% . I|
0000ca30  25 3d 30 29 20 8c 20 49  25 3d 4a 25 0d 5b 18 10  |%=0) . I%=J%.[..|
0000ca40  42 24 3d c0 41 24 2c 49  25 2d 31 29 0d 5b 22 12  |B$=.A$,I%-1).[".|
0000ca50  41 24 3d c2 41 24 2c a9  41 24 2d 49 25 29 0d 5b  |A$=.A$,.A$-I%).[|
0000ca60  2c 05 e1 0d 5b 36 04 0d  5b 40 0d dd f2 73 72 77  |,...[6..[@...srw|
0000ca70  72 69 74 65 0d 5b 4a 04  0d 5b 54 16 ea 20 41 24  |rite.[J..[T.. A$|
0000ca80  2c 43 24 2c 61 64 64 72  2c 49 25 2c 4a 25 0d 5b  |,C$,addr,I%,J%.[|
0000ca90  5e 13 61 64 64 72 3d 6d  65 6d 6f 72 79 3f 26 46  |^.addr=memory?&F|
0000caa0  32 0d 5b 68 1b 61 64 64  72 2b 3d 28 6d 65 6d 6f  |2.[h.addr+=(memo|
0000cab0  72 79 3f 26 46 33 29 20  3c 3c 20 38 0d 5b 72 14  |ry?&F3) << 8.[r.|
0000cac0  61 64 64 72 3d a4 61 64  64 72 28 61 64 64 72 29  |addr=.addr(addr)|
0000cad0  0d 5b 7c 0d 61 64 64 72  2b 3d 79 3f 33 0d 5b 86  |.[|.addr+=y?3.[.|
0000cae0  0c 43 24 3d 24 61 64 64  72 0d 5b 90 04 0d 5b 9a  |.C$=$addr.[...[.|
0000caf0  11 f2 73 70 6c 69 74 28  43 24 2c 41 24 29 0d 5b  |..split(C$,A$).[|
0000cb00  a4 04 0d 5b ae 25 e7 20  a9 41 24 3e 34 20 8c 20  |...[.%. .A$>4 . |
0000cb10  f2 62 72 6b 28 30 2c 22  42 61 64 20 41 64 64 72  |.brk(0,"Bad Addr|
0000cb20  65 73 73 22 29 3a e1 0d  5b b8 0f e3 49 25 3d 31  |ess"):..[...I%=1|
0000cb30  20 b8 20 a9 41 24 0d 5b  c2 11 4a 25 3d 97 c1 41  | . .A$.[..J%=..A|
0000cb40  24 2c 49 25 2c 31 29 0d  5b cc 41 e7 20 28 4a 25  |$,I%,1).[.A. (J%|
0000cb50  3c 34 38 20 84 20 4a 25  3e 35 37 29 20 80 20 28  |<48 . J%>57) . (|
0000cb60  4a 25 3c 36 35 20 84 20  4a 25 3e 37 30 29 20 8c  |J%<65 . J%>70) .|
0000cb70  20 f2 62 72 6b 28 30 2c  22 42 61 64 20 41 64 64  | .brk(0,"Bad Add|
0000cb80  72 65 73 73 22 29 3a e1  0d 5b d6 05 ed 0d 5b e0  |ress"):..[....[.|
0000cb90  04 0d 5b ea 14 73 74 61  72 74 25 3d a0 28 22 26  |..[..start%=.("&|
0000cba0  22 2b 41 24 29 0d 5b f4  04 0d 5b fe 2c e7 20 73  |"+A$).[...[.,. s|
0000cbb0  74 61 72 74 25 3e 26 38  30 30 30 20 8c 20 f2 62  |tart%>&8000 . .b|
0000cbc0  72 6b 28 30 2c 22 42 61  64 20 41 64 64 72 65 73  |rk(0,"Bad Addres|
0000cbd0  73 22 29 3a e1 0d 5c 08  04 0d 5c 12 11 f2 73 70  |s"):..\...\...sp|
0000cbe0  6c 69 74 28 43 24 2c 41  24 29 0d 5c 1c 04 0d 5c  |lit(C$,A$).\...\|
0000cbf0  26 35 e7 20 c0 41 24 2c  31 29 3d 22 2b 22 20 8c  |&5. .A$,1)="+" .|
0000cc00  20 65 6e 64 25 3d 73 74  61 72 74 25 3a 41 24 3d  | end%=start%:A$=|
0000cc10  c2 41 24 2c a9 41 24 2d  31 29 20 8b 20 65 6e 64  |.A$,.A$-1) . end|
0000cc20  25 3d 30 0d 5c 30 04 0d  5c 3a 25 e7 20 a9 41 24  |%=0.\0..\:%. .A$|
0000cc30  3e 34 20 8c 20 f2 62 72  6b 28 30 2c 22 42 61 64  |>4 . .brk(0,"Bad|
0000cc40  20 41 64 64 72 65 73 73  22 29 3a e1 0d 5c 44 0f  | Address"):..\D.|
0000cc50  e3 49 25 3d 31 20 b8 20  a9 41 24 0d 5c 4e 11 4a  |.I%=1 . .A$.\N.J|
0000cc60  25 3d 97 c1 41 24 2c 49  25 2c 31 29 0d 5c 58 41  |%=..A$,I%,1).\XA|
0000cc70  e7 20 28 4a 25 3c 34 38  20 84 20 4a 25 3e 35 37  |. (J%<48 . J%>57|
0000cc80  29 20 80 20 28 4a 25 3c  36 35 20 84 20 4a 25 3e  |) . (J%<65 . J%>|
0000cc90  37 30 29 20 8c 20 f2 62  72 6b 28 30 2c 22 42 61  |70) . .brk(0,"Ba|
0000cca0  64 20 41 64 64 72 65 73  73 22 29 3a e1 0d 5c 62  |d Address"):..\b|
0000ccb0  05 ed 0d 5c 6c 04 0d 5c  76 13 65 6e 64 25 2b 3d  |...\l..\v.end%+=|
0000ccc0  a0 28 22 26 22 2b 41 24  29 0d 5c 80 04 0d 5c 8a  |.("&"+A$).\...\.|
0000ccd0  38 e7 20 65 6e 64 25 3c  73 74 61 72 74 25 20 84  |8. end%<start% .|
0000cce0  20 65 6e 64 25 3e 26 38  30 30 30 20 8c 20 f2 62  | end%>&8000 . .b|
0000ccf0  72 6b 28 30 2c 22 42 61  64 20 41 64 64 72 65 73  |rk(0,"Bad Addres|
0000cd00  73 22 29 3a e1 0d 5c 94  04 0d 5c 9e 11 f2 73 70  |s"):..\...\...sp|
0000cd10  6c 69 74 28 43 24 2c 41  24 29 0d 5c a8 04 0d 5c  |lit(C$,A$).\...\|
0000cd20  b2 26 e7 20 a9 41 24 3c  3e 34 20 8c 20 f2 62 72  |.&. .A$<>4 . .br|
0000cd30  6b 28 30 2c 22 42 61 64  20 41 64 64 72 65 73 73  |k(0,"Bad Address|
0000cd40  22 29 3a e1 0d 5c bc 0f  e3 49 25 3d 31 20 b8 20  |"):..\...I%=1 . |
0000cd50  a9 41 24 0d 5c c6 11 4a  25 3d 97 c1 41 24 2c 49  |.A$.\..J%=..A$,I|
0000cd60  25 2c 31 29 0d 5c d0 41  e7 20 28 4a 25 3c 34 38  |%,1).\.A. (J%<48|
0000cd70  20 84 20 4a 25 3e 35 37  29 20 80 20 28 4a 25 3c  | . J%>57) . (J%<|
0000cd80  36 35 20 84 20 4a 25 3e  37 30 29 20 8c 20 f2 62  |65 . J%>70) . .b|
0000cd90  72 6b 28 30 2c 22 42 61  64 20 41 64 64 72 65 73  |rk(0,"Bad Addres|
0000cda0  73 22 29 3a e1 0d 5c da  05 ed 0d 5c e4 04 0d 5c  |s"):..\....\...\|
0000cdb0  ee 13 64 65 73 74 25 3d  a0 28 22 26 22 2b 41 24  |..dest%=.("&"+A$|
0000cdc0  29 0d 5c f8 04 0d 5d 02  39 e7 20 64 65 73 74 25  |).\...].9. dest%|
0000cdd0  3c 26 38 30 30 30 20 84  20 64 65 73 74 25 3e 26  |<&8000 . dest%>&|
0000cde0  42 46 46 46 20 8c 20 f2  62 72 6b 28 30 2c 22 42  |BFFF . .brk(0,"B|
0000cdf0  61 64 20 41 64 64 72 65  73 73 22 29 3a e1 0d 5d  |ad Address"):..]|
0000ce00  0c 04 0d 5d 16 11 f2 73  70 6c 69 74 28 43 24 2c  |...]...split(C$,|
0000ce10  41 24 29 0d 5d 20 0c c8  8e 20 a9 41 24 20 ca 0d  |A$).] ... .A$ ..|
0000ce20  5d 2a 07 c9 20 31 0d 5d  34 0a 41 25 3d 97 41 24  |]*.. 1.]4.A%=.A$|
0000ce30  0d 5d 3e 2b e7 20 41 25  3e 3d 97 22 57 22 20 80  |.]>+. A%>=."W" .|
0000ce40  20 41 25 3c 3d 97 22 5a  22 20 8c 20 41 25 3d 41  | A%<=."Z" . A%=A|
0000ce50  25 2d 97 22 57 22 2b 97  22 34 22 0d 5d 48 1b e7  |%-."W"+."4".]H..|
0000ce60  20 41 25 3e 36 34 20 80  20 41 25 3c 37 31 20 8c  | A%>64 . A%<71 .|
0000ce70  20 41 25 2d 3d 37 0d 5d  52 11 73 6f 63 6b 65 74  | A%-=7.]R.socket|
0000ce80  25 3d 41 25 2d 34 38 0d  5d 5c 35 e7 20 73 6f 63  |%=A%-48.]\5. soc|
0000ce90  6b 65 74 25 3e 31 35 20  84 20 73 6f 63 6b 65 74  |ket%>15 . socket|
0000cea0  25 3c 30 20 8c 20 f2 62  72 6b 28 30 2c 22 42 61  |%<0 . .brk(0,"Ba|
0000ceb0  64 20 53 6f 63 6b 65 74  22 29 3a e1 0d 5d 66 07  |d Socket"):..]f.|
0000cec0  c9 20 32 0d 5d 70 50 e7  20 c0 41 24 2c 31 29 3c  |. 2.]pP. .A$,1)<|
0000ced0  22 30 22 20 84 20 c0 41  24 2c 31 29 3e 22 39 22  |"0" . .A$,1)>"9"|
0000cee0  20 84 20 c2 41 24 2c 31  29 3c 22 30 22 20 84 20  | . .A$,1)<"0" . |
0000cef0  c2 41 24 2c 31 29 3e 22  39 22 20 8c 20 f2 62 72  |.A$,1)>"9" . .br|
0000cf00  6b 28 30 2c 22 42 61 64  20 53 6f 63 6b 65 74 22  |k(0,"Bad Socket"|
0000cf10  29 3a e1 0d 5d 7a 0f 73  6f 63 6b 65 74 25 3d bb  |):..]z.socket%=.|
0000cf20  41 24 0d 5d 84 35 e7 20  73 6f 63 6b 65 74 25 3e  |A$.].5. socket%>|
0000cf30  31 35 20 84 20 73 6f 63  6b 65 74 25 3c 30 20 8c  |15 . socket%<0 .|
0000cf40  20 f2 62 72 6b 28 30 2c  22 42 61 64 20 53 6f 63  | .brk(0,"Bad Soc|
0000cf50  6b 65 74 22 29 3a e1 0d  5d 8e 05 7f 0d 5d 98 1a  |ket"):..]....]..|
0000cf60  f2 62 72 6b 28 30 2c 22  42 61 64 20 53 6f 63 6b  |.brk(0,"Bad Sock|
0000cf70  65 74 22 29 3a e1 0d 5d  a2 05 cb 0d 5d ac 04 0d  |et"):..]....]...|
0000cf80  5d b6 24 f4 50 52 49 4e  54 7e 73 74 61 72 74 25  |].$.PRINT~start%|
0000cf90  2c 7e 65 6e 64 25 2c 7e  64 65 73 74 25 3a 51 3d  |,~end%,~dest%:Q=|
0000cfa0  47 45 54 0d 5d c0 04 0d  5d ca 2e e3 20 49 25 3d  |GET.]...]... I%=|
0000cfb0  30 20 b8 20 a4 6d 69 6e  28 65 6e 64 25 2d 73 74  |0 . .min(end%-st|
0000cfc0  61 72 74 25 2c 26 42 46  46 46 2d 64 65 73 74 25  |art%,&BFFF-dest%|
0000cfd0  29 20 88 20 34 0d 5d d4  3e 21 28 72 6f 6d 73 2b  |) . 4.].>!(roms+|
0000cfe0  72 6f 6d 73 69 7a 65 25  2a 73 6f 63 6b 65 74 25  |romsize%*socket%|
0000cff0  2b 49 25 2b 64 65 73 74  25 2d 26 38 30 30 30 29  |+I%+dest%-&8000)|
0000d000  3d 73 74 61 72 74 25 21  28 6d 65 6d 6f 72 79 2b  |=start%!(memory+|
0000d010  49 25 29 0d 5d de 05 ed  0d 5d e8 04 0d 5d f2 14  |I%).]....]...]..|
0000d020  52 4f 4d 52 41 4d 3f 73  6f 63 6b 65 74 25 3d 30  |ROMRAM?socket%=0|
0000d030  0d 5d fc 04 0d 5e 06 09  61 3f 33 3d 30 0d 5e 10  |.]...^..a?3=0.^.|
0000d040  08 f2 72 74 73 0d 5e 1a  04 0d 5e 24 05 e1 0d 5e  |..rts.^...^$...^|
0000d050  2e 04 0d 5e 38 0b dd f2  6d 6f 75 6e 74 0d 5e 42  |...^8...mount.^B|
0000d060  17 ea 20 41 24 2c 43 24  2c 61 64 64 72 2c 64 72  |.. A$,C$,addr,dr|
0000d070  69 76 65 25 0d 5e 4c 13  61 64 64 72 3d 6d 65 6d  |ive%.^L.addr=mem|
0000d080  6f 72 79 3f 26 46 32 0d  5e 56 1b 61 64 64 72 2b  |ory?&F2.^V.addr+|
0000d090  3d 28 6d 65 6d 6f 72 79  3f 26 46 33 29 20 3c 3c  |=(memory?&F3) <<|
0000d0a0  20 38 0d 5e 60 14 61 64  64 72 3d a4 61 64 64 72  | 8.^`.addr=.addr|
0000d0b0  28 61 64 64 72 29 0d 5e  6a 0e f4 61 64 64 72 2b  |(addr).^j..addr+|
0000d0c0  3d 79 3f 33 0d 5e 74 0c  43 24 3d 24 61 64 64 72  |=y?3.^t.C$=$addr|
0000d0d0  0d 5e 7e 04 0d 5e 88 0f  f2 73 74 72 69 70 32 28  |.^~..^...strip2(|
0000d0e0  43 24 29 0d 5e 92 04 0d  5e 9c 36 e7 20 c0 a4 75  |C$).^...^.6. ..u|
0000d0f0  70 70 65 72 28 43 24 29  2c 35 29 3d 22 4d 4f 55  |pper(C$),5)="MOU|
0000d100  4e 54 22 20 8c 20 3a 43  24 3d 22 4d 4f 55 4e 54  |NT" . :C$="MOUNT|
0000d110  20 22 2b c2 43 24 2c a9  43 24 2d 35 29 0d 5e a6  | "+.C$,.C$-5).^.|
0000d120  04 0d 5e b0 15 f2 73 70  6c 69 74 33 28 43 24 2c  |..^...split3(C$,|
0000d130  66 69 6c 65 24 29 0d 5e  ba 04 0d 5e c4 12 f2 73  |file$).^...^...s|
0000d140  70 6c 69 74 33 28 43 24  2c 41 24 29 0d 5e ce 04  |plit3(C$,A$).^..|
0000d150  0d 5e d8 0e 64 72 69 76  65 25 3d bb 41 24 0d 5e  |.^..drive%=.A$.^|
0000d160  e2 04 0d 5e ec 2a f4 53  59 53 20 22 4f 53 5f 46  |...^.*.SYS "OS_F|
0000d170  69 6c 65 22 2c 35 2c 22  41 44 46 53 3a 3a 22 2b  |ile",5,"ADFS::"+|
0000d180  41 24 2b 22 2e 24 22 20  54 4f 20 51 0d 5e f6 1f  |A$+".$" TO Q.^..|
0000d190  c8 99 20 22 41 44 46 53  5f 44 72 69 76 65 73 22  |.. "ADFS_Drives"|
0000d1a0  20 b8 20 44 25 2c 46 25  2c 48 25 0d 5f 00 1a e7  | . D%,F%,H%._...|
0000d1b0  20 41 24 3d 22 22 20 8c  20 61 3f 33 3d 30 3a f2  | A$="" . a?3=0:.|
0000d1c0  72 74 73 3a e1 0d 5f 0a  2c e7 20 64 72 69 76 65  |rts:.._.,. drive|
0000d1d0  25 3c 46 25 20 84 20 28  64 72 69 76 65 25 3e 33  |%<F% . (drive%>3|
0000d1e0  20 80 20 64 72 69 76 65  25 3c 48 25 2b 34 29 20  | . drive%<H%+4) |
0000d1f0  8c 0d 5f 14 0f 66 73 24  3d 22 41 44 46 53 3a 22  |.._..fs$="ADFS:"|
0000d200  0d 5f 1e 19 64 69 73 63  24 3d 22 3a 22 2b c3 64  |._..disc$=":"+.d|
0000d210  72 69 76 65 25 2b 22 2e  22 0d 5f 28 0d 70 61 74  |rive%+"."._(.pat|
0000d220  68 24 3d 22 24 22 0d 5f  32 0f 73 75 62 70 61 74  |h$="$"._2.subpat|
0000d230  68 24 3d 22 22 0d 5f 3c  04 0d 5f 46 09 61 3f 33  |h$=""._<.._F.a?3|
0000d240  3d 30 0d 5f 50 08 f2 72  74 73 0d 5f 5a 05 cc 0d  |=0._P..rts._Z...|
0000d250  5f 64 1d f2 62 72 6b 28  30 2c 22 42 61 64 20 64  |_d..brk(0,"Bad d|
0000d260  72 69 76 65 20 22 2b 41  24 29 3a e1 0d 5f 6e 05  |rive "+A$):.._n.|
0000d270  cd 0d 5f 78 04 0d 5f 82  05 e1 0d 5f 8c 04 0d 5f  |.._x.._...._..._|
0000d280  96 04 0d 5f a0 0b dd f2  64 72 69 76 65 0d 5f aa  |..._....drive._.|
0000d290  17 ea 20 41 24 2c 43 24  2c 61 64 64 72 2c 64 72  |.. A$,C$,addr,dr|
0000d2a0  69 76 65 25 0d 5f b4 13  61 64 64 72 3d 6d 65 6d  |ive%._..addr=mem|
0000d2b0  6f 72 79 3f 26 46 32 0d  5f be 1b 61 64 64 72 2b  |ory?&F2._..addr+|
0000d2c0  3d 28 6d 65 6d 6f 72 79  3f 26 46 33 29 20 3c 3c  |=(memory?&F3) <<|
0000d2d0  20 38 0d 5f c8 14 61 64  64 72 3d a4 61 64 64 72  | 8._..addr=.addr|
0000d2e0  28 61 64 64 72 29 0d 5f  d2 0e f4 61 64 64 72 2b  |(addr)._...addr+|
0000d2f0  3d 79 3f 33 0d 5f dc 0c  43 24 3d 24 61 64 64 72  |=y?3._..C$=$addr|
0000d300  0d 5f e6 0f f2 73 74 72  69 70 32 28 43 24 29 0d  |._...strip2(C$).|
0000d310  5f f0 35 e7 20 c0 a4 75  70 70 65 72 28 43 24 29  |_.5. ..upper(C$)|
0000d320  2c 35 29 3d 22 44 52 49  56 45 22 20 8c 20 43 24  |,5)="DRIVE" . C$|
0000d330  3d 22 44 52 49 56 45 20  22 2b c2 43 24 2c a9 43  |="DRIVE "+.C$,.C|
0000d340  24 2d 35 29 0d 5f fa 04  0d 60 04 15 f2 73 70 6c  |$-5)._...`...spl|
0000d350  69 74 33 28 43 24 2c 66  69 6c 65 24 29 0d 60 0e  |it3(C$,file$).`.|
0000d360  04 0d 60 18 12 f2 73 70  6c 69 74 33 28 43 24 2c  |..`...split3(C$,|
0000d370  41 24 29 0d 60 22 0e 64  72 69 76 65 25 3d bb 43  |A$).`".drive%=.C|
0000d380  24 0d 60 2c 04 0d 60 36  0b c8 8e 20 43 24 20 ca  |$.`,..`6... C$ .|
0000d390  0d 60 40 15 c9 20 22 30  22 2c 22 31 22 2c 22 32  |.`@.. "0","1","2|
0000d3a0  22 2c 22 33 22 0d 60 4a  12 e7 20 64 66 73 73 75  |","3".`J.. dfssu|
0000d3b0  70 70 6f 72 74 20 8c 0d  60 54 13 20 e7 20 69 6d  |pport ..`T. . im|
0000d3c0  61 67 65 66 69 6c 65 25  20 8c 0d 60 5e 28 20 20  |agefile% ..`^(  |
0000d3d0  70 61 74 68 24 3d c0 70  61 74 68 24 2c a7 70 61  |path$=.path$,.pa|
0000d3e0  74 68 24 2c 22 44 46 53  53 69 64 65 32 22 29 2d  |th$,"DFSSide2")-|
0000d3f0  32 29 0d 60 68 06 20 cc  0d 60 72 35 20 20 c8 99  |2).`h. ..`r5  ..|
0000d400  20 22 49 6d 61 67 65 44  46 53 5f 44 46 53 54 6f  | "ImageDFS_DFSTo|
0000d410  41 44 46 53 44 72 69 76  65 22 2c 64 72 69 76 65  |ADFSDrive",drive|
0000d420  25 20 b8 20 64 66 73 64  72 69 76 65 25 0d 60 7c  |% . dfsdrive%.`||
0000d430  25 20 20 f4 70 61 74 68  24 3d 22 41 44 46 53 3a  |%  .path$="ADFS:|
0000d440  3a 22 2b 53 54 52 24 64  72 69 76 65 25 2b 22 2e  |:"+STR$drive%+".|
0000d450  24 22 0d 60 86 34 20 20  66 73 24 3d 22 41 44 46  |$".`.4  fs$="ADF|
0000d460  53 3a 22 3a 64 69 73 63  24 3d 22 3a 22 2b c3 64  |S:":disc$=":"+.d|
0000d470  66 73 64 72 69 76 65 25  2b 22 2e 22 3a 70 61 74  |fsdrive%+".":pat|
0000d480  68 24 3d 22 24 22 0d 60  90 06 20 cd 0d 60 9a 05  |h$="$".`.. ..`..|
0000d490  cc 0d 60 a4 27 20 70 61  74 68 24 3d c0 70 61 74  |..`.' path$=.pat|
0000d4a0  68 24 2c a7 70 61 74 68  24 2c 22 44 46 53 53 69  |h$,.path$,"DFSSi|
0000d4b0  64 65 32 22 29 2d 32 29  0d 60 ae 05 cd 0d 60 b8  |de2")-2).`....`.|
0000d4c0  04 0d 60 c2 0f 73 75 62  70 61 74 68 24 3d 22 22  |..`..subpath$=""|
0000d4d0  0d 60 cc 1b e7 20 64 72  69 76 65 25 3d 32 20 84  |.`... drive%=2 .|
0000d4e0  20 64 72 69 76 65 25 3d  33 20 8c 0d 60 d6 32 c8  | drive%=3 ..`.2.|
0000d4f0  99 20 22 4f 53 5f 46 69  6c 65 22 2c 35 2c 66 73  |. "OS_File",5,fs|
0000d500  24 2b 64 69 73 63 24 2b  70 61 74 68 24 2b 22 2e  |$+disc$+path$+".|
0000d510  44 46 53 53 69 64 65 32  22 20 b8 20 51 0d 60 e0  |DFSSide2" . Q.`.|
0000d520  22 e7 20 51 3c 3e 30 20  70 61 74 68 24 3d 70 61  |". Q<>0 path$=pa|
0000d530  74 68 24 2b 22 2e 44 46  53 53 69 64 65 32 22 0d  |th$+".DFSSide2".|
0000d540  60 ea 05 cd 0d 60 f4 04  0d 60 fe 0d c9 20 22 52  |`....`...`... "R|
0000d550  22 2c 22 72 22 0d 61 08  0c f2 72 65 61 64 43 53  |","r".a...readCS|
0000d560  44 0d 61 12 04 0d 61 1c  05 7f 0d 61 26 1d f2 62  |D.a...a....a&..b|
0000d570  72 6b 28 30 2c 22 42 61  64 20 44 72 69 76 65 20  |rk(0,"Bad Drive |
0000d580  22 2b 43 24 29 3a e1 0d  61 30 04 0d 61 3a 05 cb  |"+C$):..a0..a:..|
0000d590  0d 61 44 04 0d 61 4e 09  61 3f 33 3d 30 0d 61 58  |.aD..aN.a?3=0.aX|
0000d5a0  08 f2 72 74 73 0d 61 62  05 e1 0d 61 6c 04 0d 61  |..rts.ab...al..a|
0000d5b0  76 0c dd f2 73 72 6c 6f  61 64 0d 61 80 16 ea 20  |v...srload.a... |
0000d5c0  41 24 2c 43 24 2c 61 64  64 72 2c 49 25 2c 4a 25  |A$,C$,addr,I%,J%|
0000d5d0  0d 61 8a 13 61 64 64 72  3d 6d 65 6d 6f 72 79 3f  |.a..addr=memory?|
0000d5e0  26 46 32 0d 61 94 1b 61  64 64 72 2b 3d 28 6d 65  |&F2.a..addr+=(me|
0000d5f0  6d 6f 72 79 3f 26 46 33  29 20 3c 3c 20 38 0d 61  |mory?&F3) << 8.a|
0000d600  9e 14 61 64 64 72 3d a4  61 64 64 72 28 61 64 64  |..addr=.addr(add|
0000d610  72 29 0d 61 a8 0d 61 64  64 72 2b 3d 79 3f 33 0d  |r).a..addr+=y?3.|
0000d620  61 b2 0c 43 24 3d 24 61  64 64 72 0d 61 bc 04 0d  |a..C$=$addr.a...|
0000d630  61 c6 15 f2 73 70 6c 69  74 32 28 43 24 2c 66 69  |a...split2(C$,fi|
0000d640  6c 65 24 29 0d 61 d0 04  0d 61 da 11 f2 73 70 6c  |le$).a...a...spl|
0000d650  69 74 28 43 24 2c 41 24  29 0d 61 e4 26 e7 20 a9  |it(C$,A$).a.&. .|
0000d660  41 24 3c 3e 34 20 8c 20  f2 62 72 6b 28 30 2c 22  |A$<>4 . .brk(0,"|
0000d670  42 61 64 20 41 64 64 72  65 73 73 22 29 3a e1 0d  |Bad Address"):..|
0000d680  61 ee 0f e3 49 25 3d 31  20 b8 20 a9 41 24 0d 61  |a...I%=1 . .A$.a|
0000d690  f8 11 4a 25 3d 97 c1 41  24 2c 49 25 2c 31 29 0d  |..J%=..A$,I%,1).|
0000d6a0  62 02 41 e7 20 28 4a 25  3c 34 38 20 84 20 4a 25  |b.A. (J%<48 . J%|
0000d6b0  3e 35 37 29 20 80 20 28  4a 25 3c 36 35 20 84 20  |>57) . (J%<65 . |
0000d6c0  4a 25 3e 37 30 29 20 8c  20 f2 62 72 6b 28 30 2c  |J%>70) . .brk(0,|
0000d6d0  22 42 61 64 20 41 64 64  72 65 73 73 22 29 3a e1  |"Bad Address"):.|
0000d6e0  0d 62 0c 05 ed 0d 62 16  04 0d 62 20 13 6c 6f 61  |.b....b...b .loa|
0000d6f0  64 25 3d a0 28 22 26 22  2b 41 24 29 0d 62 2a 39  |d%=.("&"+A$).b*9|
0000d700  e7 20 6c 6f 61 64 25 3c  26 38 30 30 30 20 84 20  |. load%<&8000 . |
0000d710  6c 6f 61 64 25 3e 26 42  46 46 46 20 8c 20 f2 62  |load%>&BFFF . .b|
0000d720  72 6b 28 30 2c 22 42 61  64 20 41 64 64 72 65 73  |rk(0,"Bad Addres|
0000d730  73 22 29 3a e1 0d 62 34  11 f2 73 70 6c 69 74 28  |s"):..b4..split(|
0000d740  43 24 2c 41 24 29 0d 62  3e 20 e7 20 c2 41 24 2c  |C$,A$).b> . .A$,|
0000d750  31 29 3d 22 51 22 20 8c  20 41 24 3d c0 41 24 2c  |1)="Q" . A$=.A$,|
0000d760  a9 41 24 2d 31 29 0d 62  48 0c c8 8e 20 a9 41 24  |.A$-1).bH... .A$|
0000d770  20 ca 0d 62 52 07 c9 20  31 0d 62 5c 0a 41 25 3d  | ..bR.. 1.b\.A%=|
0000d780  97 41 24 0d 62 66 2b e7  20 41 25 3e 3d 97 22 57  |.A$.bf+. A%>=."W|
0000d790  22 20 80 20 41 25 3c 3d  97 22 5a 22 20 8c 20 41  |" . A%<=."Z" . A|
0000d7a0  25 3d 41 25 2d 97 22 57  22 2b 97 22 34 22 0d 62  |%=A%-."W"+."4".b|
0000d7b0  70 1b e7 20 41 25 3e 36  34 20 80 20 41 25 3c 37  |p.. A%>64 . A%<7|
0000d7c0  31 20 8c 20 41 25 2d 3d  37 0d 62 7a 11 73 6f 63  |1 . A%-=7.bz.soc|
0000d7d0  6b 65 74 25 3d 41 25 2d  34 38 0d 62 84 35 e7 20  |ket%=A%-48.b.5. |
0000d7e0  73 6f 63 6b 65 74 25 3e  31 35 20 84 20 73 6f 63  |socket%>15 . soc|
0000d7f0  6b 65 74 25 3c 30 20 8c  20 f2 62 72 6b 28 30 2c  |ket%<0 . .brk(0,|
0000d800  22 42 61 64 20 53 6f 63  6b 65 74 22 29 3a e1 0d  |"Bad Socket"):..|
0000d810  62 8e 07 c9 20 32 0d 62  98 50 e7 20 c0 41 24 2c  |b... 2.b.P. .A$,|
0000d820  31 29 3c 22 30 22 20 84  20 c0 41 24 2c 31 29 3e  |1)<"0" . .A$,1)>|
0000d830  22 39 22 20 84 20 c2 41  24 2c 31 29 3c 22 30 22  |"9" . .A$,1)<"0"|
0000d840  20 84 20 c2 41 24 2c 31  29 3e 22 39 22 20 8c 20  | . .A$,1)>"9" . |
0000d850  f2 62 72 6b 28 30 2c 22  42 61 64 20 53 6f 63 6b  |.brk(0,"Bad Sock|
0000d860  65 74 22 29 3a e1 0d 62  a2 0f 73 6f 63 6b 65 74  |et"):..b..socket|
0000d870  25 3d bb 41 24 0d 62 ac  35 e7 20 73 6f 63 6b 65  |%=.A$.b.5. socke|
0000d880  74 25 3e 31 35 20 84 20  73 6f 63 6b 65 74 25 3c  |t%>15 . socket%<|
0000d890  30 20 8c 20 f2 62 72 6b  28 30 2c 22 42 61 64 20  |0 . .brk(0,"Bad |
0000d8a0  53 6f 63 6b 65 74 22 29  3a e1 0d 62 b6 05 7f 0d  |Socket"):..b....|
0000d8b0  62 c0 1a f2 62 72 6b 28  30 2c 22 42 61 64 20 53  |b...brk(0,"Bad S|
0000d8c0  6f 63 6b 65 74 22 29 3a  e1 0d 62 ca 05 cb 0d 62  |ocket"):..b....b|
0000d8d0  d4 04 0d 62 de 3f c8 99  20 22 58 4f 53 5f 46 69  |...b.?.. "XOS_Fi|
0000d8e0  6e 64 22 2c 26 34 30 2b  25 31 31 30 31 2c a4 61  |nd",&40+%1101,.a|
0000d8f0  64 64 5f 28 66 69 6c 65  24 29 2c a4 5f 70 61 74  |dd_(file$),._pat|
0000d900  68 28 66 69 6c 65 24 29  20 b8 20 41 25 20 3b 20  |h(file$) . A% ; |
0000d910  46 0d 62 e8 1f e7 20 28  46 20 80 20 31 29 3c 3e  |F.b... (F . 1)<>|
0000d920  30 20 8c 20 f2 73 77 69  5f 65 72 72 6f 72 3a e1  |0 . .swi_error:.|
0000d930  0d 62 f2 09 48 25 3d 41  25 0d 62 fc 4d c8 99 20  |.b..H%=A%.b.M.. |
0000d940  22 58 4f 53 5f 47 42 50  42 22 2c 34 2c 41 25 2c  |"XOS_GBPB",4,A%,|
0000d950  6c 6f 61 64 25 2d 26 38  30 30 30 2b 72 6f 6d 73  |load%-&8000+roms|
0000d960  2b 72 6f 6d 73 69 7a 65  25 2a 73 6f 63 6b 65 74  |+romsize%*socket|
0000d970  25 2c 26 43 30 30 30 2d  6c 6f 61 64 25 20 b8 20  |%,&C000-load% . |
0000d980  41 25 20 3b 20 46 0d 63  06 1f e7 20 28 46 20 80  |A% ; F.c... (F .|
0000d990  20 31 29 3c 3e 30 20 8c  20 f2 73 77 69 5f 65 72  | 1)<>0 . .swi_er|
0000d9a0  72 6f 72 3a e1 0d 63 10  17 3f 28 52 4f 4d 52 41  |ror:..c..?(ROMRA|
0000d9b0  4d 2b 73 6f 63 6b 65 74  25 29 3d 30 0d 63 1a 1f  |M+socket%)=0.c..|
0000d9c0  c8 99 20 22 58 4f 53 5f  46 69 6e 64 22 2c 30 2c  |.. "XOS_Find",0,|
0000d9d0  48 25 20 b8 20 41 25 20  3b 20 46 0d 63 24 1f e7  |H% . A% ; F.c$..|
0000d9e0  20 28 46 20 80 20 31 29  3c 3e 30 20 8c 20 f2 73  | (F . 1)<>0 . .s|
0000d9f0  77 69 5f 65 72 72 6f 72  3a e1 0d 63 2e 04 0d 63  |wi_error:..c...c|
0000da00  38 09 61 3f 33 3d 30 0d  63 42 08 f2 72 74 73 0d  |8.a?3=0.cB..rts.|
0000da10  63 4c 05 e1 0d 63 56 04  0d 63 60 11 dd f2 65 6c  |cL...cV..c`...el|
0000da20  6b 6b 65 79 73 28 46 24  29 0d 63 6a 04 0d 63 74  |kkeys(F$).cj..ct|
0000da30  10 ea 20 51 2c 53 24 2c  4b 25 2c 41 24 0d 63 7e  |.. Q,S$,K%,A$.c~|
0000da40  04 0d 63 88 25 c8 99 20  22 36 35 30 32 5f 47 65  |..c.%.. "6502_Ge|
0000da50  74 45 6c 65 63 74 72 6f  6e 4d 61 70 22 20 b8 20  |tElectronMap" . |
0000da60  6b 65 79 6d 61 70 0d 63  92 04 0d 63 9c 14 e3 49  |keymap.c...c...I|
0000da70  25 3d 30 20 b8 20 31 30  32 33 20 88 20 34 0d 63  |%=0 . 1023 . 4.c|
0000da80  a6 11 6b 65 79 6d 61 70  21 49 25 3d 26 46 46 0d  |..keymap!I%=&FF.|
0000da90  63 b0 05 ed 0d 63 ba 04  0d 63 c4 09 51 3d 8e 46  |c....c...c..Q=.F|
0000daa0  24 0d 63 ce 1f e7 20 51  3d 30 20 8c 20 85 20 30  |$.c... Q=0 . . 0|
0000dab0  2c 46 24 2b 22 20 6e 6f  74 20 66 6f 75 6e 64 22  |,F$+" not found"|
0000dac0  0d 63 d8 05 f5 0d 63 e2  0f 53 24 3d a4 67 65 74  |.c....c..S$=.get|
0000dad0  77 6f 72 64 0d 63 ec 12  e7 20 c0 53 24 2c 31 29  |word.c... .S$,1)|
0000dae0  3d 22 23 22 20 8c 0d 63  f6 11 20 20 f2 69 67 6e  |="#" ..c..  .ign|
0000daf0  6f 72 65 6c 69 6e 65 0d  64 00 29 20 20 e7 20 a7  |oreline.d.)  . .|
0000db00  53 24 2c 22 52 69 73 63  50 43 22 29 20 80 20 a6  |S$,"RiscPC") . .|
0000db10  2d 32 35 36 3c 26 41 35  20 8c 20 53 24 3d 22 22  |-256<&A5 . S$=""|
0000db20  0d 64 0a 05 cc 0d 64 14  10 20 20 e7 20 53 24 3c  |.d....d..  . S$<|
0000db30  3e 22 22 20 8c 0d 64 1e  16 20 20 20 20 53 25 3d  |>"" ..d..    S%=|
0000db40  a4 67 65 74 65 6c 6b 28  53 24 29 0d 64 28 09 20  |.getelk(S$).d(. |
0000db50  20 20 20 f5 0d 64 32 13  20 20 20 20 41 24 3d a4  |   ..d2.    A$=.|
0000db60  67 65 74 77 6f 72 64 0d  64 3c 12 20 20 20 20 e7  |getword.d<.    .|
0000db70  20 41 24 3c 3e 22 22 20  8c 0d 64 46 18 20 20 20  | A$<>"" ..dF.   |
0000db80  20 20 20 4b 25 3d a4 67  65 74 61 72 63 28 41 24  |   K%=.getarc(A$|
0000db90  29 0d 64 50 1a 20 20 20  20 20 20 6b 65 79 6d 61  |).dP.      keyma|
0000dba0  70 21 28 4b 25 2a 34 29  3d 53 25 0d 64 5a 09 20  |p!(K%*4)=S%.dZ. |
0000dbb0  20 20 20 cd 0d 64 64 0e  20 20 20 20 fd 41 24 3d  |   ..dd.    .A$=|
0000dbc0  22 22 0d 64 6e 07 20 20  cd 0d 64 78 05 cd 0d 64  |"".dn.  ..dx...d|
0000dbd0  82 11 fd 20 53 24 3d 22  22 20 84 20 c5 23 51 0d  |... S$="" . .#Q.|
0000dbe0  64 8c 04 0d 64 96 07 d9  23 51 0d 64 a0 04 0d 64  |d...d...#Q.d...d|
0000dbf0  aa 05 e1 0d 64 b4 04 0d  64 be 12 dd f2 72 65 61  |....d...d....rea|
0000dc00  64 6b 65 79 73 28 46 24  29 0d 64 c8 04 0d 64 d2  |dkeys(F$).d...d.|
0000dc10  17 ea 20 51 2c 53 24 2c  4b 25 2c 41 24 2c 73 68  |.. Q,S$,K%,A$,sh|
0000dc20  69 66 74 25 0d 64 d3 04  0d 64 e6 28 c8 99 20 22  |ift%.d...d.(.. "|
0000dc30  36 35 30 32 5f 52 65 61  64 4b 65 79 4d 61 70 41  |6502_ReadKeyMapA|
0000dc40  64 64 72 65 73 73 22 20  b8 20 6b 65 79 6d 61 70  |ddress" . keymap|
0000dc50  0d 64 f0 13 e3 49 25 3d  30 20 b8 20 32 35 35 2b  |.d...I%=0 . 255+|
0000dc60  32 35 36 0d 64 fa 11 6b  65 79 6d 61 70 3f 49 25  |256.d..keymap?I%|
0000dc70  3d 32 35 35 0d 65 04 05  ed 0d 65 0e 04 0d 65 18  |=255.e....e...e.|
0000dc80  09 51 3d 8e 46 24 0d 65  22 1f e7 20 51 3d 30 20  |.Q=.F$.e".. Q=0 |
0000dc90  8c 20 85 20 30 2c 46 24  2b 22 20 6e 6f 74 20 66  |. . 0,F$+" not f|
0000dca0  6f 75 6e 64 22 0d 65 2c  05 f5 0d 65 36 0f 53 24  |ound".e,...e6.S$|
0000dcb0  3d a4 67 65 74 77 6f 72  64 0d 65 40 12 e7 20 c0  |=.getword.e@.. .|
0000dcc0  53 24 2c 31 29 3d 22 23  22 20 8c 0d 65 4a 11 20  |S$,1)="#" ..eJ. |
0000dcd0  20 f2 69 67 6e 6f 72 65  6c 69 6e 65 0d 65 54 29  | .ignoreline.eT)|
0000dce0  20 20 e7 20 a7 53 24 2c  22 52 69 73 63 50 43 22  |  . .S$,"RiscPC"|
0000dcf0  29 20 80 20 a6 2d 32 35  36 3c 26 41 35 20 8c 20  |) . .-256<&A5 . |
0000dd00  53 24 3d 22 22 0d 65 68  05 cc 0d 65 72 10 20 20  |S$="".eh...er.  |
0000dd10  e7 20 53 24 3c 3e 22 22  20 8c 0d 65 7c 40 20 20  |. S$<>"" ..e|@  |
0000dd20  20 20 e7 20 c0 53 24 2c  31 29 3d 22 73 22 20 80  |  . .S$,1)="s" .|
0000dd30  20 a9 53 24 3e 31 20 8c  20 73 68 69 66 74 25 3d  | .S$>1 . shift%=|
0000dd40  b9 3a 53 24 3d c2 53 24  2c a9 53 24 2d 31 29 20  |.:S$=.S$,.S$-1) |
0000dd50  8b 20 73 68 69 66 74 25  3d a3 0d 65 86 23 20 20  |. shift%=..e.#  |
0000dd60  20 20 f4 56 44 55 34 3a  50 52 49 4e 54 53 24 3a  |  .VDU4:PRINTS$:|
0000dd70  56 44 55 35 3a 50 52 49  4e 54 47 45 54 0d 65 90  |VDU5:PRINTGET.e.|
0000dd80  16 20 20 20 20 53 25 3d  a4 67 65 74 62 62 63 28  |.    S%=.getbbc(|
0000dd90  53 24 29 0d 65 9a 09 20  20 20 20 f5 0d 65 a4 13  |S$).e..    ..e..|
0000dda0  20 20 20 20 41 24 3d a4  67 65 74 77 6f 72 64 0d  |    A$=.getword.|
0000ddb0  65 ae 12 20 20 20 20 e7  20 41 24 3c 3e 22 22 20  |e..    . A$<>"" |
0000ddc0  8c 0d 65 b8 18 20 20 20  20 20 20 4b 25 3d a4 67  |..e..      K%=.g|
0000ddd0  65 74 61 72 63 28 41 24  29 0d 65 c2 23 20 20 20  |etarc(A$).e.#   |
0000dde0  20 20 20 e7 20 73 68 69  66 74 25 3d a3 20 8c 20  |   . shift%=. . |
0000ddf0  6b 65 79 6d 61 70 3f 4b  25 3d 53 25 0d 65 cc 1c  |keymap?K%=S%.e..|
0000de00  20 20 20 20 20 20 6b 65  79 6d 61 70 3f 28 4b 25  |      keymap?(K%|
0000de10  2b 32 35 36 29 3d 53 25  0d 65 d6 09 20 20 20 20  |+256)=S%.e..    |
0000de20  cd 0d 65 e0 0e 20 20 20  20 fd 41 24 3d 22 22 0d  |..e..    .A$="".|
0000de30  65 ea 07 20 20 cd 0d 65  f4 05 cd 0d 65 fe 11 fd  |e..  ..e....e...|
0000de40  20 53 24 3d 22 22 20 84  20 c5 23 51 0d 66 08 04  | S$="" . .#Q.f..|
0000de50  0d 66 12 07 d9 23 51 0d  66 1c 04 0d 66 26 05 e1  |.f...#Q.f...f&..|
0000de60  0d 66 30 04 0d 66 3a 0d  dd a4 67 65 74 77 6f 72  |.f0..f:...getwor|
0000de70  64 0d 66 44 0b ea 20 49  25 2c 41 24 0d 66 4e 1e  |d.fD.. I%,A$.fN.|
0000de80  f5 20 49 25 3d 9a 23 51  20 3a 20 fd 20 49 25 3e  |. I%=.#Q : . I%>|
0000de90  33 32 20 84 20 49 25 3d  31 30 0d 66 58 11 e7 20  |32 . I%=10.fX.. |
0000dea0  49 25 3d 31 30 20 8c 20  3d 22 22 0d 66 62 0a 41  |I%=10 . ="".fb.A|
0000deb0  24 3d bd 49 25 0d 66 6c  22 f5 20 49 25 3d 9a 23  |$=.I%.fl". I%=.#|
0000dec0  51 20 3a 20 41 24 3d 41  24 2b bd 49 25 20 3a 20  |Q : A$=A$+.I% : |
0000ded0  fd 20 49 25 3c 33 33 0d  66 76 0d cf 23 51 3d 8f  |. I%<33.fv..#Q=.|
0000dee0  23 51 2d 31 0d 66 80 0f  3d c0 41 24 2c a9 41 24  |#Q-1.f..=.A$,.A$|
0000def0  2d 31 29 0d 66 8a 04 0d  66 94 10 dd f2 69 67 6e  |-1).f...f....ign|
0000df00  6f 72 65 6c 69 6e 65 0d  66 9e 07 ea 49 25 0d 66  |oreline.f...I%.f|
0000df10  a8 15 f5 20 49 25 3d 9a  23 51 20 3a 20 fd 49 25  |... I%=.#Q : .I%|
0000df20  3d 26 41 0d 66 b2 05 e1  0d 66 bc 04 0d 66 c6 10  |=&A.f....f...f..|
0000df30  dd a4 67 65 74 65 6c 6b  28 41 24 29 0d 66 d0 0d  |..getelk(A$).f..|
0000df40  ea 49 25 2c 4a 25 2c 4b  25 0d 66 da 0d e3 49 25  |.I%,J%,K%.f...I%|
0000df50  3d 30 20 b8 20 33 0d 66  e4 0e e3 4a 25 3d 30 20  |=0 . 3.f...J%=0 |
0000df60  b8 20 31 33 0d 66 ee 30  e7 20 45 6c 65 63 24 28  |. 13.f.0. Elec$(|
0000df70  49 25 2c 4a 25 29 3d 41  24 20 8c 20 4b 25 3d 28  |I%,J%)=A$ . K%=(|
0000df80  49 25 3c 3c 38 29 2b 4a  25 3a 49 25 3d 34 3a 4a  |I%<<8)+J%:I%=4:J|
0000df90  25 3d 31 34 0d 66 f8 05  ed 0d 67 02 05 ed 0d 67  |%=14.f....g....g|
0000dfa0  0c 07 3d 4b 25 0d 67 16  04 0d 67 20 10 dd a4 67  |..=K%.g...g ...g|
0000dfb0  65 74 62 62 63 28 41 24  29 0d 67 2a 0a ea 49 25  |etbbc(A$).g*..I%|
0000dfc0  2c 4a 25 0d 67 34 10 e3  20 49 25 3d 30 20 b8 20  |,J%.g4.. I%=0 . |
0000dfd0  26 37 43 0d 67 3e 20 e7  20 42 42 43 24 28 49 25  |&7C.g> . BBC$(I%|
0000dfe0  29 3d 41 24 20 8c 20 4a  25 3d 49 25 3a 49 25 3d  |)=A$ . J%=I%:I%=|
0000dff0  26 38 30 0d 67 48 05 ed  0d 67 52 07 3d 4a 25 0d  |&80.gH...gR.=J%.|
0000e000  67 5c 04 0d 67 66 10 dd  a4 67 65 74 61 72 63 28  |g\..gf...getarc(|
0000e010  41 24 29 0d 67 70 0a ea  49 25 2c 4a 25 0d 67 7a  |A$).gp..I%,J%.gz|
0000e020  11 e3 20 49 25 3d 26 30  20 b8 20 26 37 38 0d 67  |.. I%=&0 . &78.g|
0000e030  84 20 e7 20 41 52 43 24  28 49 25 29 3d 41 24 20  |. . ARC$(I%)=A$ |
0000e040  8c 20 4a 25 3d 49 25 3a  49 25 3d 26 36 38 0d 67  |. J%=I%:I%=&68.g|
0000e050  8e 05 ed 0d 67 98 07 3d  4a 25 0d 67 a2 04 0d 67  |....g..=J%.g...g|
0000e060  ac 13 f4 20 45 6c 65 63  74 72 6f 6e 20 4b 65 79  |... Electron Key|
0000e070  73 0d 67 b6 2d dc 20 45  73 63 61 70 65 2c 31 2c  |s.g.-. Escape,1,|
0000e080  32 2c 33 2c 34 2c 35 2c  36 2c 37 2c 38 2c 39 2c  |2,3,4,5,6,7,8,9,|
0000e090  30 2c 2d 2c 4c 65 66 74  2c 52 69 67 68 74 0d 67  |0,-,Left,Right.g|
0000e0a0  c0 2f dc 20 43 61 70 73  4c 6f 63 6b 2c 51 2c 57  |./. CapsLock,Q,W|
0000e0b0  2c 45 2c 52 2c 54 2c 59  2c 55 2c 49 2c 4f 2c 50  |,E,R,T,Y,U,I,O,P|
0000e0c0  2c 55 70 2c 44 6f 77 6e  2c 43 6f 70 79 0d 67 ca  |,Up,Down,Copy.g.|
0000e0d0  2a dc 20 43 74 72 6c 2c  41 2c 53 2c 44 2c 46 2c  |*. Ctrl,A,S,D,F,|
0000e0e0  47 2c 48 2c 4a 2c 4b 2c  4c 2c 3b 2c 3a 2c 52 65  |G,H,J,K,L,;,:,Re|
0000e0f0  74 75 72 6e 2c 22 22 0d  67 d4 31 dc 20 53 68 69  |turn,"".g.1. Shi|
0000e100  66 74 2c 5a 2c 58 2c 43  2c 56 2c 42 2c 4e 2c 4d  |ft,Z,X,C,V,B,N,M|
0000e110  2c 22 2c 22 2c 2e 2c 2f  2c 22 22 2c 44 65 6c 65  |,",",.,/,"",Dele|
0000e120  74 65 2c 53 70 61 63 65  0d 67 de 04 0d 67 e8 0e  |te,Space.g...g..|
0000e130  f4 20 42 42 43 20 4b 65  79 73 0d 67 f2 41 dc 20  |. BBC Keys.g.A. |
0000e140  53 68 69 66 74 2c 43 74  72 6c 2c 62 69 74 37 2c  |Shift,Ctrl,bit7,|
0000e150  62 69 74 36 2c 62 69 74  35 2c 62 69 74 34 2c 62  |bit6,bit5,bit4,b|
0000e160  69 74 33 2c 62 69 74 32  2c 62 69 74 31 2c 62 69  |it3,bit2,bit1,bi|
0000e170  74 30 2c 22 22 2c 22 22  2c 22 22 0d 67 fc 27 dc  |t0,"","","".g.'.|
0000e180  20 51 2c 33 2c 34 2c 35  2c 66 34 2c 38 2c 66 37  | Q,3,4,5,f4,8,f7|
0000e190  2c 2d 2c 5e 2c 4c 65 66  74 2c 4b 36 2c 4b 37 2c  |,-,^,Left,K6,K7,|
0000e1a0  22 22 0d 68 06 26 dc 20  66 30 2c 57 2c 45 2c 54  |"".h.&. f0,W,E,T|
0000e1b0  2c 37 2c 49 2c 39 2c 30  2c 5f 2c 44 6f 77 6e 2c  |,7,I,9,0,_,Down,|
0000e1c0  4b 38 2c 4b 39 2c 22 22  0d 68 10 28 dc 20 31 2c  |K8,K9,"".h.(. 1,|
0000e1d0  32 2c 44 2c 52 2c 36 2c  55 2c 4f 2c 50 2c 5b 2c  |2,D,R,6,U,O,P,[,|
0000e1e0  55 70 2c 4b 2b 2c 4b 2d  2c 4b 52 65 74 75 72 6e  |Up,K+,K-,KReturn|
0000e1f0  0d 68 1a 35 dc 20 43 61  70 73 4c 6f 63 6b 2c 41  |.h.5. CapsLock,A|
0000e200  2c 58 2c 46 2c 59 2c 4a  2c 4b 2c 40 2c 3a 2c 52  |,X,F,Y,J,K,@,:,R|
0000e210  65 74 75 72 6e 2c 4b 2f  2c 4b 44 65 6c 65 74 65  |eturn,K/,KDelete|
0000e220  2c 22 4b 2e 22 0d 68 24  31 dc 20 53 68 69 66 74  |,"K.".h$1. Shift|
0000e230  4c 6f 63 6b 2c 53 2c 43  2c 47 2c 48 2c 4e 2c 4c  |Lock,S,C,G,H,N,L|
0000e240  2c 3b 2c 5d 2c 44 65 6c  65 74 65 2c 4b 23 2c 4b  |,;,],Delete,K#,K|
0000e250  2a 2c 22 4b 2c 22 0d 68  2e 2f dc 20 54 61 62 2c  |*,"K,".h./. Tab,|
0000e260  5a 2c 53 70 61 63 65 2c  56 2c 42 2c 4d 2c 22 2c  |Z,Space,V,B,M,",|
0000e270  22 2c 22 2e 22 2c 2f 2c  43 6f 70 79 2c 4b 30 2c  |",".",/,Copy,K0,|
0000e280  4b 31 2c 4b 33 0d 68 38  32 dc 20 45 73 63 61 70  |K1,K3.h82. Escap|
0000e290  65 2c 66 31 2c 66 32 2c  66 33 2c 66 35 2c 66 36  |e,f1,f2,f3,f5,f6|
0000e2a0  2c 66 38 2c 66 39 2c 5c  2c 52 69 67 68 74 2c 4b  |,f8,f9,\,Right,K|
0000e2b0  34 2c 4b 35 2c 4b 32 0d  68 42 04 0d 68 4c 12 f4  |4,K5,K2.hB..hL..|
0000e2c0  20 52 49 53 43 20 4f 53  20 4b 65 79 73 0d 68 56  | RISC OS Keys.hV|
0000e2d0  3e dc 20 45 73 63 61 70  65 2c 66 31 2c 66 32 2c  |>. Escape,f1,f2,|
0000e2e0  66 33 2c 66 34 2c 66 35  2c 66 36 2c 66 37 2c 66  |f3,f4,f5,f6,f7,f|
0000e2f0  38 2c 66 39 2c 66 31 30  2c 66 31 31 2c 22 22 2c  |8,f9,f10,f11,"",|
0000e300  50 72 69 6e 74 2c 22 22  2c 22 22 0d 68 60 b7 dc  |Print,"","".h`..|
0000e310  20 60 2c 31 2c 32 2c 33  2c 34 2c 35 2c 36 2c 37  | `,1,2,3,4,5,6,7|
0000e320  2c 38 2c 39 2c 30 2c 2d  2c 3d 2c a3 2c 3c 2d 7c  |,8,9,0,-,=,.,<-||
0000e330  2c 49 6e 73 65 72 74 2c  48 6f 6d 65 2c 50 61 67  |,Insert,Home,Pag|
0000e340  65 55 70 2c 4e 75 6d 4c  6f 63 6b 2c 4b 2f 2c 4b  |eUp,NumLock,K/,K|
0000e350  2a 2c 4b 23 2c 54 61 62  2c 51 2c 57 2c 45 2c 52  |*,K#,Tab,Q,W,E,R|
0000e360  2c 54 2c 59 2c 55 2c 49  2c 4f 2c 50 2c 5b 2c 5d  |,T,Y,U,I,O,P,[,]|
0000e370  2c 5c 2c 44 65 6c 65 74  65 2c 43 6f 70 79 2c 50  |,\,Delete,Copy,P|
0000e380  61 67 65 44 6f 77 6e 2c  4b 37 2c 4b 38 2c 4b 39  |ageDown,K7,K8,K9|
0000e390  2c 4b 2d 2c 4c 43 74 72  6c 2c 41 2c 53 2c 44 2c  |,K-,LCtrl,A,S,D,|
0000e3a0  46 2c 47 2c 48 2c 4a 2c  4b 2c 4c 2c 3b 2c 27 2c  |F,G,H,J,K,L,;,',|
0000e3b0  52 65 74 75 72 6e 2c 4b  34 2c 4b 35 2c 4b 36 2c  |Return,K4,K5,K6,|
0000e3c0  4b 2b 0d 68 6a 71 dc 20  4c 53 68 69 66 74 2c 2c  |K+.hjq. LShift,,|
0000e3d0  5a 2c 58 2c 43 2c 56 2c  42 2c 4e 2c 4d 2c 22 2c  |Z,X,C,V,B,N,M,",|
0000e3e0  22 2c 2e 2c 2f 2c 52 53  68 69 66 74 2c 55 70 2c  |",.,/,RShift,Up,|
0000e3f0  4b 31 2c 4b 32 2c 4b 33  2c 43 61 70 73 4c 6f 63  |K1,K2,K3,CapsLoc|
0000e400  6b 2c 4c 41 6c 74 2c 53  70 61 63 65 2c 52 41 6c  |k,LAlt,Space,RAl|
0000e410  74 2c 52 43 74 72 6c 2c  4c 65 66 74 2c 44 6f 77  |t,RCtrl,Left,Dow|
0000e420  6e 2c 52 69 67 68 74 2c  4b 30 2c 4b 2e 2c 45 6e  |n,Right,K0,K.,En|
0000e430  74 65 72 0d 68 74 35 dc  20 22 22 2c 22 22 2c 22  |ter.ht5. "","","|
0000e440  22 2c 22 22 2c 22 22 2c  22 22 2c 22 22 2c 22 22  |","","","","",""|
0000e450  2c 22 22 2c 22 22 2c 22  22 2c 22 22 2c 22 22 2c  |,"","","","","",|
0000e460  22 22 2c 22 22 2c 22 22  0d 68 7e 1c dc 20 23 20  |"","","".h~.. # |
0000e470  3a 20 52 45 4d 20 52 69  73 63 20 50 43 20 6b 65  |: REM Risc PC ke|
0000e480  79 20 23 7e 0d 68 88 04  0d 68 92 0f dd f2 73 65  |y #~.h...h....se|
0000e490  74 6d 65 6d 6d 61 70 0d  68 9c 2d e7 20 70 61 67  |tmemmap.h.-. pag|
0000e4a0  69 6e 67 25 3d a3 20 84  20 6d 61 63 68 69 6e 65  |ing%=. . machine|
0000e4b0  25 3d 30 20 84 20 6d 61  63 68 69 6e 65 25 3d 34  |%=0 . machine%=4|
0000e4c0  20 8c 20 e1 0d 68 a6 15  21 26 39 37 30 30 30 3d  | . ..h..!&97000=|
0000e4d0  26 41 30 41 30 41 30 41  30 0d 68 b0 15 21 26 39  |&A0A0A0A0.h..!&9|
0000e4e0  37 30 30 34 3d 26 41 30  41 30 41 30 41 30 0d 68  |7004=&A0A0A0A0.h|
0000e4f0  ba 15 21 26 39 37 30 30  38 3d 26 41 30 41 30 41  |..!&97008=&A0A0A|
0000e500  30 41 30 0d 68 c4 15 21  26 39 37 30 30 43 3d 26  |0A0.h..!&9700C=&|
0000e510  41 30 41 30 41 30 41 30  0d 68 ce 61 f4 49 46 20  |A0A0A0A0.h.a.IF |
0000e520  28 3f 41 43 43 43 4f 4e  20 41 4e 44 20 25 31 30  |(?ACCCON AND %10|
0000e530  30 29 3c 3e 30 20 54 48  45 4e 20 3f 26 39 37 30  |0)<>0 THEN ?&970|
0000e540  30 33 3d 26 38 44 3a 21  26 39 37 30 30 34 3d 26  |03=&8D:!&97004=&|
0000e550  38 44 38 44 38 44 38 44  3a 50 52 4f 43 73 77 61  |8D8D8D8D:PROCswa|
0000e560  70 6d 65 6d 28 26 41 33  30 30 30 2c 26 39 30 30  |pmem(&A3000,&900|
0000e570  30 30 2c 26 35 30 30 30  29 0d 68 d8 3d f2 73 77  |00,&5000).h.=.sw|
0000e580  61 70 6d 65 6d 28 26 41  38 30 30 30 2c 72 6f 6d  |apmem(&A8000,rom|
0000e590  73 2b 28 3f 72 6f 6d 73  65 6c 20 80 20 25 31 31  |s+(?romsel . %11|
0000e5a0  31 31 29 2a 72 6f 6d 73  69 7a 65 25 2c 72 6f 6d  |11)*romsize%,rom|
0000e5b0  73 69 7a 65 25 29 0d 68  e2 23 3f 26 39 37 30 30  |size%).h.#?&9700|
0000e5c0  38 3d 26 34 34 2b 28 3f  72 6f 6d 73 65 6c 20 80  |8=&44+(?romsel .|
0000e5d0  20 25 31 31 31 31 29 2a  34 0d 68 ec 23 3f 26 39  | %1111)*4.h.#?&9|
0000e5e0  37 30 30 39 3d 26 34 34  2b 28 3f 72 6f 6d 73 65  |7009=&44+(?romse|
0000e5f0  6c 20 80 20 25 31 31 31  31 29 2a 34 0d 68 f6 23  |l . %1111)*4.h.#|
0000e600  3f 26 39 37 30 30 41 3d  26 34 34 2b 28 3f 72 6f  |?&9700A=&44+(?ro|
0000e610  6d 73 65 6c 20 80 20 25  31 31 31 31 29 2a 34 0d  |msel . %1111)*4.|
0000e620  69 00 23 3f 26 39 37 30  30 42 3d 26 34 34 2b 28  |i.#?&9700B=&44+(|
0000e630  3f 72 6f 6d 73 65 6c 20  80 20 25 31 31 31 31 29  |?romsel . %1111)|
0000e640  2a 34 0d 69 0a 52 e7 20  28 3f 41 43 43 43 4f 4e  |*4.i.R. (?ACCCON|
0000e650  20 80 20 25 31 30 30 30  29 3c 3e 30 20 8c 20 3f  | . %1000)<>0 . ?|
0000e660  26 39 37 30 30 43 3d 26  38 39 3a 3f 26 39 37 30  |&9700C=&89:?&970|
0000e670  30 44 3d 26 38 39 3a f2  73 77 61 70 6d 65 6d 28  |0D=&89:.swapmem(|
0000e680  26 41 43 30 30 30 2c 26  39 35 30 30 30 2c 26 32  |&AC000,&95000,&2|
0000e690  30 30 30 29 0d 69 14 4a  e7 20 28 3f 72 6f 6d 73  |000).i.J. (?roms|
0000e6a0  65 6c 20 80 20 25 31 30  30 30 30 30 30 30 29 3c  |el . %10000000)<|
0000e6b0  3e 30 20 8c 20 3f 26 39  37 30 30 38 3d 26 38 39  |>0 . ?&97008=&89|
0000e6c0  3a f2 73 77 61 70 6d 65  6d 28 26 41 38 30 30 30  |:.swapmem(&A8000|
0000e6d0  2c 26 39 44 30 30 30 2c  26 31 30 30 30 29 0d 69  |,&9D000,&1000).i|
0000e6e0  1e 04 0d 69 28 05 e1 0d  69 32 04 0d 69 3c 10 dd  |...i(...i2..i<..|
0000e6f0  f2 73 65 74 6d 65 6d 6d  61 70 32 0d 69 46 2d e7  |.setmemmap2.iF-.|
0000e700  20 70 61 67 69 6e 67 25  3d a3 20 84 20 6d 61 63  | paging%=. . mac|
0000e710  68 69 6e 65 25 3d 30 20  84 20 6d 61 63 68 69 6e  |hine%=0 . machin|
0000e720  65 25 3d 34 20 8c 20 e1  0d 69 50 3e e7 20 28 3f  |e%=4 . ..iP>. (?|
0000e730  72 6f 6d 73 65 6c 20 80  20 25 31 30 30 30 30 30  |romsel . %100000|
0000e740  30 30 29 3c 3e 30 20 8c  20 f2 73 77 61 70 6d 65  |00)<>0 . .swapme|
0000e750  6d 28 26 41 38 30 30 30  2c 26 39 44 30 30 30 2c  |m(&A8000,&9D000,|
0000e760  26 31 30 30 30 29 0d 69  5a 3a e7 20 28 3f 41 43  |&1000).iZ:. (?AC|
0000e770  43 43 4f 4e 20 80 20 25  31 30 30 30 29 3c 3e 30  |CCON . %1000)<>0|
0000e780  20 8c 20 f2 73 77 61 70  6d 65 6d 28 26 41 43 30  | . .swapmem(&AC0|
0000e790  30 30 2c 26 39 35 30 30  30 2c 26 32 30 30 30 29  |00,&95000,&2000)|
0000e7a0  0d 69 64 3d f2 73 77 61  70 6d 65 6d 28 26 41 38  |.id=.swapmem(&A8|
0000e7b0  30 30 30 2c 72 6f 6d 73  2b 28 3f 72 6f 6d 73 65  |000,roms+(?romse|
0000e7c0  6c 20 80 20 25 31 31 31  31 29 2a 72 6f 6d 73 69  |l . %1111)*romsi|
0000e7d0  7a 65 25 2c 72 6f 6d 73  69 7a 65 25 29 0d 69 6e  |ze%,romsize%).in|
0000e7e0  43 f4 49 46 20 28 3f 41  43 43 43 4f 4e 20 41 4e  |C.IF (?ACCCON AN|
0000e7f0  44 20 25 31 30 30 29 3c  3e 30 20 54 48 45 4e 20  |D %100)<>0 THEN |
0000e800  50 52 4f 43 73 77 61 70  6d 65 6d 28 26 41 33 30  |PROCswapmem(&A30|
0000e810  30 30 2c 26 39 30 30 30  30 2c 26 35 30 30 30 29  |00,&90000,&5000)|
0000e820  0d 69 78 05 e1 0d 69 82  04 0d 69 8c 19 dd a4 70  |.ix...i...i....p|
0000e830  65 65 6b 28 41 25 29 3d  3f a4 61 64 64 72 28 41  |eek(A%)=?.addr(A|
0000e840  25 29 0d 69 96 04 0d 69  a0 18 dd a4 61 64 64 72  |%).i...i....addr|
0000e850  28 41 25 29 3d 6d 65 6d  6f 72 79 2b 41 25 0d 69  |(A%)=memory+A%.i|
0000e860  aa 04 0d 69 b4 0f dd a4  61 64 64 72 32 28 41 25  |...i....addr2(A%|
0000e870  29 0d 69 be 0e ea 20 42  25 2c 43 25 2c 44 25 0d  |).i... B%,C%,D%.|
0000e880  69 c8 2b e7 20 70 61 67  69 6e 67 25 20 80 20 28  |i.+. paging% . (|
0000e890  6d 61 63 68 69 6e 65 25  3e 30 20 80 20 6d 61 63  |machine%>0 . mac|
0000e8a0  68 69 6e 65 25 3c 34 29  20 8c 0d 69 d2 17 42 25  |hine%<4) ..i..B%|
0000e8b0  3d 26 39 37 30 30 30 2b  28 41 25 3e 3e 3e 31 32  |=&97000+(A%>>>12|
0000e8c0  29 0d 69 dc 10 43 25 3d  28 3f 42 25 29 3c 3c 31  |).i..C%=(?B%)<<1|
0000e8d0  32 0d 69 e6 0c 44 25 3d  41 25 2b 43 25 0d 69 f0  |2.i..D%=A%+C%.i.|
0000e8e0  05 cc 0d 69 fa 10 44 25  3d 6d 65 6d 6f 72 79 2b  |...i..D%=memory+|
0000e8f0  41 25 0d 6a 04 05 cd 0d  6a 0e 07 3d 44 25 0d 6a  |A%.j....j..=D%.j|
0000e900  18 04 0d 6a 22 04 0d 6a  2c 11 dd f2 70 6f 6b 65  |...j"..j,...poke|
0000e910  28 41 25 2c 56 25 29 0d  6a 36 12 6d 65 6d 6f 72  |(A%,V%).j6.memor|
0000e920  79 3f 41 25 3d 56 25 3a  e1 0d 6a 40 04 0d 6a 4a  |y?A%=V%:..j@..jJ|
0000e930  10 dd f2 64 69 73 61 62  6c 65 43 46 53 0d 6a 54  |...disableCFS.jT|
0000e940  21 e7 20 6d 61 63 68 69  6e 65 25 3e 30 20 80 20  |!. machine%>0 . |
0000e950  6d 61 63 68 69 6e 65 25  3c 34 20 8c 20 e1 0d 6a  |machine%<4 . ..j|
0000e960  5e 2b 76 65 63 74 6f 72  73 25 3d 6d 65 6d 6f 72  |^+vectors%=memor|
0000e970  79 3f 26 46 46 42 37 2b  28 6d 65 6d 6f 72 79 3f  |y?&FFB7+(memory?|
0000e980  26 46 46 42 38 3c 3c 38  29 0d 6a 68 04 0d 6a 72  |&FFB8<<8).jh..jr|
0000e990  1c 76 65 63 74 6f 72 73  25 3d a4 61 64 64 72 28  |.vectors%=.addr(|
0000e9a0  76 65 63 74 6f 72 73 25  29 0d 6a 7c 28 61 64 64  |vectors%).j|(add|
0000e9b0  72 25 3d 76 65 63 74 6f  72 73 25 3f 26 31 45 2b  |r%=vectors%?&1E+|
0000e9c0  28 76 65 63 74 6f 72 73  25 3f 26 31 46 3c 3c 38  |(vectors%?&1F<<8|
0000e9d0  29 0d 6a 86 22 6d 65 6d  6f 72 79 32 3d 72 6f 6d  |).j."memory2=rom|
0000e9e0  73 2b 72 6f 6d 73 69 7a  65 25 2a 31 36 2d 26 43  |s+romsize%*16-&C|
0000e9f0  30 30 30 0d 6a 90 04 0d  6a 9a 1c 6d 65 6d 6f 72  |000.j...j..memor|
0000ea00  79 3f 61 64 64 72 25 3d  33 20 3a 20 f4 20 4f 53  |y?addr%=3 : . OS|
0000ea10  46 53 43 0d 6a a4 13 6d  65 6d 6f 72 79 32 3f 61  |FSC.j..memory2?a|
0000ea20  64 64 72 25 3d 33 0d 6a  ae 1d 6d 65 6d 6f 72 79  |ddr%=3.j..memory|
0000ea30  3f 26 46 46 43 45 3d 33  20 3a 20 f4 20 4f 53 46  |?&FFCE=3 : . OSF|
0000ea40  49 4e 44 0d 6a b8 13 6d  65 6d 6f 72 79 32 3f 26  |IND.j..memory2?&|
0000ea50  46 46 43 45 3d 33 0d 6a  c2 1d 6d 65 6d 6f 72 79  |FFCE=3.j..memory|
0000ea60  3f 26 46 46 44 31 3d 33  20 3a 20 f4 20 4f 53 47  |?&FFD1=3 : . OSG|
0000ea70  42 50 42 0d 6a cc 13 6d  65 6d 6f 72 79 32 3f 26  |BPB.j..memory2?&|
0000ea80  46 46 44 31 3d 33 0d 6a  d6 1d 6d 65 6d 6f 72 79  |FFD1=3.j..memory|
0000ea90  3f 26 46 46 44 34 3d 33  20 3a 20 f4 20 4f 53 42  |?&FFD4=3 : . OSB|
0000eaa0  50 55 54 0d 6a e0 13 6d  65 6d 6f 72 79 32 3f 26  |PUT.j..memory2?&|
0000eab0  46 46 44 34 3d 33 0d 6a  ea 1d 6d 65 6d 6f 72 79  |FFD4=3.j..memory|
0000eac0  3f 26 46 46 44 37 3d 33  20 3a 20 f4 20 4f 53 42  |?&FFD7=3 : . OSB|
0000ead0  47 45 54 0d 6a f4 13 6d  65 6d 6f 72 79 32 3f 26  |GET.j..memory2?&|
0000eae0  46 46 44 37 3d 33 0d 6a  fe 1d 6d 65 6d 6f 72 79  |FFD7=3.j..memory|
0000eaf0  3f 26 46 46 44 41 3d 33  20 3a 20 f4 20 4f 53 41  |?&FFDA=3 : . OSA|
0000eb00  52 47 53 0d 6b 08 13 6d  65 6d 6f 72 79 32 3f 26  |RGS.k..memory2?&|
0000eb10  46 46 44 41 3d 33 0d 6b  12 1d 6d 65 6d 6f 72 79  |FFDA=3.k..memory|
0000eb20  3f 26 46 46 44 44 3d 33  20 3a 20 f4 20 4f 53 46  |?&FFDD=3 : . OSF|
0000eb30  49 4c 45 0d 6b 1c 13 6d  65 6d 6f 72 79 32 3f 26  |ILE.k..memory2?&|
0000eb40  46 46 44 44 3d 33 0d 6b  26 05 e1 0d 6b 30 04 0d  |FFDD=3.k&...k0..|
0000eb50  6b 3a 0a dd f2 62 6f 6f  74 0d 6b 44 04 0d 6b 4e  |k:...boot.kD..kN|
0000eb60  40 f4 53 59 53 20 22 4f  53 5f 46 53 43 6f 6e 74  |@.SYS "OS_FSCont|
0000eb70  72 6f 6c 22 2c 31 31 2c  66 73 24 20 3a 20 52 45  |rol",11,fs$ : RE|
0000eb80  4d 20 73 65 74 20 74 65  6d 70 6f 72 61 72 79 20  |M set temporary |
0000eb90  66 69 6c 69 6e 67 20 73  79 73 74 65 6d 0d 6b 58  |filing system.kX|
0000eba0  3f f4 53 59 53 20 22 4f  53 5f 46 53 43 6f 6e 74  |?.SYS "OS_FSCont|
0000ebb0  72 6f 6c 22 2c 30 2c 64  69 73 63 24 2b 70 61 74  |rol",0,disc$+pat|
0000ebc0  68 24 2b 73 75 62 70 61  74 68 24 20 3a 20 52 45  |h$+subpath$ : RE|
0000ebd0  4d 20 63 68 61 6e 67 65  20 64 69 72 0d 6b 62 1d  |M change dir.kb.|
0000ebe0  f4 53 59 53 20 22 58 4f  53 5f 47 42 50 42 22 2c  |.SYS "XOS_GBPB",|
0000ebf0  35 2c 2c 62 75 66 66 65  72 0d 6b 6c 1a f4 53 59  |5,,buffer.kl..SY|
0000ec00  53 20 22 4f 53 5f 46 53  43 6f 6e 74 72 6f 6c 22  |S "OS_FSControl"|
0000ec10  2c 31 39 0d 6b 76 04 0d  6b 80 1e f4 62 6f 6f 74  |,19.kv..k...boot|
0000ec20  25 3d 3f 28 62 75 66 66  65 72 2b 3f 62 75 66 66  |%=?(buffer+?buff|
0000ec30  65 72 2b 31 29 0d 6b 8a  08 f2 72 74 73 0d 6b 94  |er+1).k...rts.k.|
0000ec40  04 0d 6b 9e 15 e7 20 6d  61 63 68 69 6e 65 25 3c  |..k... machine%<|
0000ec50  3e 30 20 8c 20 e1 0d 6b  a8 04 0d 6b b2 2a 51 3d  |>0 . ..k...k.*Q=|
0000ec60  8e 28 66 73 24 2b 64 69  73 63 24 2b 70 61 74 68  |.(fs$+disc$+path|
0000ec70  24 2b 73 75 62 70 61 74  68 24 2b 22 2e 21 42 6f  |$+subpath$+".!Bo|
0000ec80  6f 74 22 29 0d 6b bc 60  e7 20 51 3c 3e 30 20 8c  |ot").k.`. Q<>0 .|
0000ec90  20 d9 23 51 3a 64 69 73  61 62 6c 65 5f 72 65 73  | .#Q:disable_res|
0000eca0  65 74 3d b9 3a f2 66 69  6c 65 5f 6c 6f 61 64 28  |et=.:.file_load(|
0000ecb0  66 73 24 2b 64 69 73 63  24 2b 70 61 74 68 24 2b  |fs$+disc$+path$+|
0000ecc0  73 75 62 70 61 74 68 24  2b 22 2e 21 42 6f 6f 74  |subpath$+".!Boot|
0000ecd0  22 29 3a 64 69 73 61 62  6c 65 5f 72 65 73 65 74  |"):disable_reset|
0000ece0  3d a3 3a e1 0d 6b c6 29  51 3d 8e 28 66 73 24 2b  |=.:..k.)Q=.(fs$+|
0000ecf0  64 69 73 63 24 2b 70 61  74 68 24 2b 73 75 62 70  |disc$+path$+subp|
0000ed00  61 74 68 24 2b 22 2e 21  52 75 6e 22 29 0d 6b d0  |ath$+".!Run").k.|
0000ed10  5f e7 20 51 3c 3e 30 20  8c 20 d9 23 51 3a 64 69  |_. Q<>0 . .#Q:di|
0000ed20  73 61 62 6c 65 5f 72 65  73 65 74 3d b9 3a f2 73  |sable_reset=.:.s|
0000ed30  6e 61 70 5f 6c 6f 61 64  28 66 73 24 2b 64 69 73  |nap_load(fs$+dis|
0000ed40  63 24 2b 70 61 74 68 24  2b 73 75 62 70 61 74 68  |c$+path$+subpath|
0000ed50  24 2b 22 2e 21 52 75 6e  22 29 3a 64 69 73 61 62  |$+".!Run"):disab|
0000ed60  6c 65 5f 72 65 73 65 74  3d a3 3a e1 0d 6b da 04  |le_reset=.:..k..|
0000ed70  0d 6b e4 1e f2 62 72 6b  28 32 31 34 2c 22 46 69  |.k...brk(214,"Fi|
0000ed80  6c 65 20 6e 6f 74 20 66  6f 75 6e 64 22 29 0d 6b  |le not found").k|
0000ed90  ee 04 0d 6b f8 05 e1 0d  6c 02 04 0d 6c 0c 1b dd  |...k....l...l...|
0000eda0  f2 6f 70 65 6e 6d 65 6e  75 28 6d 65 6e 75 25 2c  |.openmenu(menu%,|
0000edb0  58 25 2c 59 25 29 0d 6c  16 0a f2 6d 65 6e 75 73  |X%,Y%).l...menus|
0000edc0  0d 6c 20 25 c8 99 20 22  57 69 6d 70 5f 43 72 65  |.l %.. "Wimp_Cre|
0000edd0  61 74 65 4d 65 6e 75 22  2c 2c 6d 65 6e 75 25 2c  |ateMenu",,menu%,|
0000ede0  58 25 2c 59 25 0d 6c 2a  17 63 75 72 72 65 6e 74  |X%,Y%.l*.current|
0000edf0  5f 6d 65 6e 75 25 3d 6d  65 6e 75 25 0d 6c 34 05  |_menu%=menu%.l4.|
0000ee00  e1 0d 6c 3e 04 0d 6c 48  0c dd f2 63 6f 6e 66 69  |..l>..lH...confi|
0000ee10  67 0d 6c 52 10 71 25 21  30 3d 63 6f 6e 66 69 67  |g.lR.q%!0=config|
0000ee20  25 0d 6c 5c 0b c8 8e 20  69 25 20 ca 0d 6c 66 09  |%.l\... i% ..lf.|
0000ee30  c9 20 31 20 20 0d 6c 70  43 71 25 21 34 3d 31 3a  |. 1  .lpCq%!4=1:|
0000ee40  c8 99 20 22 57 69 6d 70  5f 47 65 74 49 63 6f 6e  |.. "Wimp_GetIcon|
0000ee50  53 74 61 74 65 22 2c 2c  71 25 20 3a 20 52 4f 4d  |State",,q% : ROM|
0000ee60  53 45 4c 25 3d 28 28 71  25 21 32 34 20 80 20 32  |SEL%=((q%!24 . 2|
0000ee70  5e 32 31 29 3c 3e 30 29  0d 6c 7a 07 c9 20 32 0d  |^21)<>0).lz.. 2.|
0000ee80  6c 84 44 71 25 21 34 3d  32 3a c8 99 20 22 57 69  |l.Dq%!4=2:.. "Wi|
0000ee90  6d 70 5f 47 65 74 49 63  6f 6e 53 74 61 74 65 22  |mp_GetIconState"|
0000eea0  2c 2c 71 25 20 3a 20 50  61 6c 65 74 74 65 25 3d  |,,q% : Palette%=|
0000eeb0  28 28 71 25 21 32 34 20  80 20 32 5e 32 31 29 3c  |((q%!24 . 2^21)<|
0000eec0  3e 30 29 0d 6c 8e 07 c9  20 33 0d 6c 98 43 71 25  |>0).l... 3.l.Cq%|
0000eed0  21 34 3d 33 3a c8 99 20  22 57 69 6d 70 5f 47 65  |!4=3:.. "Wimp_Ge|
0000eee0  74 49 63 6f 6e 53 74 61  74 65 22 2c 2c 71 25 20  |tIconState",,q% |
0000eef0  3a 20 43 75 72 73 6f 72  25 3d 28 28 71 25 21 32  |: Cursor%=((q%!2|
0000ef00  34 20 80 20 32 5e 32 31  29 3c 3e 30 29 0d 6c a2  |4 . 2^21)<>0).l.|
0000ef10  07 c9 20 34 0d 6c ac 42  71 25 21 34 3d 34 3a c8  |.. 4.l.Bq%!4=4:.|
0000ef20  99 20 22 57 69 6d 70 5f  47 65 74 49 63 6f 6e 53  |. "Wimp_GetIconS|
0000ef30  74 61 74 65 22 2c 2c 71  25 20 3a 20 4f 73 63 6c  |tate",,q% : Oscl|
0000ef40  69 25 3d 28 28 71 25 21  32 34 20 80 20 32 5e 32  |i%=((q%!24 . 2^2|
0000ef50  31 29 3c 3e 30 29 0d 6c  b6 07 c9 20 35 0d 6c c0  |1)<>0).l... 5.l.|
0000ef60  48 71 25 21 34 3d 35 3a  c8 99 20 22 57 69 6d 70  |Hq%!4=5:.. "Wimp|
0000ef70  5f 47 65 74 49 63 6f 6e  53 74 61 74 65 22 2c 2c  |_GetIconState",,|
0000ef80  71 25 20 3a 20 73 63 72  6f 6c 6c 5f 68 61 63 6b  |q% : scroll_hack|
0000ef90  25 3d 28 28 71 25 21 32  34 20 80 20 32 5e 32 31  |%=((q%!24 . 2^21|
0000efa0  29 3c 3e 30 29 0d 6c ca  07 c9 20 36 0d 6c d4 44  |)<>0).l... 6.l.D|
0000efb0  71 25 21 34 3d 36 3a c8  99 20 22 57 69 6d 70 5f  |q%!4=6:.. "Wimp_|
0000efc0  47 65 74 49 63 6f 6e 53  74 61 74 65 22 2c 2c 71  |GetIconState",,q|
0000efd0  25 20 3a 20 66 69 6c 65  5f 78 78 78 3d 28 28 71  |% : file_xxx=((q|
0000efe0  25 21 32 34 20 80 20 32  5e 32 31 29 3c 3e 30 29  |%!24 . 2^21)<>0)|
0000eff0  0d 6c de 5a e7 20 66 69  6c 65 5f 78 78 78 20 8c  |.l.Z. file_xxx .|
0000f000  20 ff 22 49 63 6f 6e 53  70 72 69 74 65 73 20 3c  | ."IconSprites <|
0000f010  36 35 30 32 45 6d 24 52  65 73 3e 2e 66 69 6c 65  |6502Em$Res>.file|
0000f020  5f 78 78 78 22 20 8b 20  ff 22 49 63 6f 6e 53 70  |_xxx" . ."IconSp|
0000f030  72 69 74 65 73 20 3c 36  35 30 32 45 6d 24 52 65  |rites <6502Em$Re|
0000f040  73 3e 2e 6e 6f 5f 78 78  78 22 0d 6c e8 07 c9 20  |s>.no_xxx".l... |
0000f050  37 0d 6c f2 45 71 25 21  34 3d 37 3a c8 99 20 22  |7.l.Eq%!4=7:.. "|
0000f060  57 69 6d 70 5f 47 65 74  49 63 6f 6e 53 74 61 74  |Wimp_GetIconStat|
0000f070  65 22 2c 2c 71 25 20 3a  20 73 6f 75 6e 64 5f 6f  |e",,q% : sound_o|
0000f080  6e 25 3d 28 28 71 25 21  32 34 20 80 20 32 5e 32  |n%=((q%!24 . 2^2|
0000f090  31 29 3c 3e 30 29 0d 6c  fc 38 c9 20 31 30 20 3a  |1)<>0).l.8. 10 :|
0000f0a0  20 e7 20 6d 62 25 3d 32  20 8c 20 f2 6f 70 65 6e  | . mb%=2 . .open|
0000f0b0  6d 65 6e 75 28 6d 61 63  68 69 6e 65 5f 6d 65 6e  |menu(machine_men|
0000f0c0  75 25 2c 6d 78 25 2d 36  34 2c 6d 79 25 29 0d 6d  |u%,mx%-64,my%).m|
0000f0d0  06 2e c9 20 31 31 20 3a  20 f2 6f 70 65 6e 6d 65  |... 11 : .openme|
0000f0e0  6e 75 28 6d 61 63 68 69  6e 65 5f 6d 65 6e 75 25  |nu(machine_menu%|
0000f0f0  2c 6d 78 25 2d 36 34 2c  6d 79 25 29 0d 6d 10 32  |,mx%-64,my%).m.2|
0000f100  c9 20 31 32 20 3a 20 e7  20 6d 62 25 3d 32 20 f2  |. 12 : . mb%=2 .|
0000f110  6f 70 65 6e 6d 65 6e 75  28 6b 65 79 73 6d 65 6e  |openmenu(keysmen|
0000f120  75 25 2c 6d 78 25 2d 36  34 2c 6d 79 25 29 0d 6d  |u%,mx%-64,my%).m|
0000f130  1a 2a c9 20 31 33 20 3a  20 f2 6f 70 65 6e 6d 65  |.*. 13 : .openme|
0000f140  6e 75 28 6b 65 79 73 6d  65 6e 75 25 2c 6d 78 25  |nu(keysmenu%,mx%|
0000f150  2d 36 34 2c 6d 79 25 29  0d 6d 24 33 c9 20 31 34  |-64,my%).m$3. 14|
0000f160  20 3a 20 e7 20 6d 62 25  3d 32 20 f2 6f 70 65 6e  | : . mb%=2 .open|
0000f170  6d 65 6e 75 28 70 61 74  63 68 6d 65 6e 75 25 2c  |menu(patchmenu%,|
0000f180  6d 78 25 2d 36 34 2c 6d  79 25 29 0d 6d 2e 2b c9  |mx%-64,my%).m.+.|
0000f190  20 31 35 20 3a 20 f2 6f  70 65 6e 6d 65 6e 75 28  | 15 : .openmenu(|
0000f1a0  70 61 74 63 68 6d 65 6e  75 25 2c 6d 78 25 2d 36  |patchmenu%,mx%-6|
0000f1b0  34 2c 6d 79 25 29 0d 6d  38 33 c9 20 31 36 20 3a  |4,my%).m83. 16 :|
0000f1c0  20 e7 20 6d 62 25 3d 32  20 f2 6f 70 65 6e 6d 65  | . mb%=2 .openme|
0000f1d0  6e 75 28 73 70 65 65 64  6d 65 6e 75 25 2c 6d 78  |nu(speedmenu%,mx|
0000f1e0  25 2d 36 34 2c 6d 79 25  29 0d 6d 42 2b c9 20 31  |%-64,my%).mB+. 1|
0000f1f0  37 20 3a 20 f2 6f 70 65  6e 6d 65 6e 75 28 73 70  |7 : .openmenu(sp|
0000f200  65 65 64 6d 65 6e 75 25  2c 6d 78 25 2d 36 34 2c  |eedmenu%,mx%-64,|
0000f210  6d 79 25 29 0d 6d 4c 26  c9 20 32 30 20 3a 20 f2  |my%).mL&. 20 : .|
0000f220  64 65 66 61 75 6c 74 5f  6f 70 74 69 6f 6e 73 3a  |default_options:|
0000f230  f2 73 65 74 63 6f 6e 66  69 67 0d 6d 56 18 c9 20  |.setconfig.mV.. |
0000f240  32 31 20 3a 20 f2 73 61  76 65 5f 6f 70 74 69 6f  |21 : .save_optio|
0000f250  6e 73 0d 6d 60 32 c9 20  32 32 20 3a 20 21 71 25  |ns.m`2. 22 : !q%|
0000f260  3d 63 6f 6e 66 69 67 25  20 3a 20 c8 99 20 22 57  |=config% : .. "W|
0000f270  69 6d 70 5f 43 6c 6f 73  65 57 69 6e 64 6f 77 22  |imp_CloseWindow"|
0000f280  2c 2c 71 25 0d 6d 6a 05  cb 0d 6d 74 05 e1 0d 6d  |,,q%.mj...mt...m|
0000f290  7e 04 0d 6d 88 0f dd f2  73 65 74 63 6f 6e 66 69  |~..m....setconfi|
0000f2a0  67 0d 6d 92 1a 21 71 25  3d 63 6f 6e 66 69 67 25  |g.m..!q%=config%|
0000f2b0  3a 71 25 21 31 32 3d 32  5e 32 31 0d 6d 9c 3d 71  |:q%!12=2^21.m.=q|
0000f2c0  25 21 34 3d 31 3a 71 25  21 38 3d 2d 32 5e 32 31  |%!4=1:q%!8=-2^21|
0000f2d0  2a 28 52 4f 4d 53 45 4c  25 3c 3e 30 29 3a c8 99  |*(ROMSEL%<>0):..|
0000f2e0  20 22 57 69 6d 70 5f 53  65 74 49 63 6f 6e 53 74  | "Wimp_SetIconSt|
0000f2f0  61 74 65 22 2c 2c 71 25  0d 6d a6 3e 71 25 21 34  |ate",,q%.m.>q%!4|
0000f300  3d 32 3a 71 25 21 38 3d  2d 32 5e 32 31 2a 28 50  |=2:q%!8=-2^21*(P|
0000f310  61 6c 65 74 74 65 25 3c  3e 30 29 3a c8 99 20 22  |alette%<>0):.. "|
0000f320  57 69 6d 70 5f 53 65 74  49 63 6f 6e 53 74 61 74  |Wimp_SetIconStat|
0000f330  65 22 2c 2c 71 25 0d 6d  b0 3d 71 25 21 34 3d 33  |e",,q%.m.=q%!4=3|
0000f340  3a 71 25 21 38 3d 2d 32  5e 32 31 2a 28 43 75 72  |:q%!8=-2^21*(Cur|
0000f350  73 6f 72 25 3c 3e 30 29  3a c8 99 20 22 57 69 6d  |sor%<>0):.. "Wim|
0000f360  70 5f 53 65 74 49 63 6f  6e 53 74 61 74 65 22 2c  |p_SetIconState",|
0000f370  2c 71 25 0d 6d ba 3c 71  25 21 34 3d 34 3a 71 25  |,q%.m.<q%!4=4:q%|
0000f380  21 38 3d 2d 32 5e 32 31  2a 28 4f 73 63 6c 69 25  |!8=-2^21*(Oscli%|
0000f390  3c 3e 30 29 3a c8 99 20  22 57 69 6d 70 5f 53 65  |<>0):.. "Wimp_Se|
0000f3a0  74 49 63 6f 6e 53 74 61  74 65 22 2c 2c 71 25 0d  |tIconState",,q%.|
0000f3b0  6d c4 42 71 25 21 34 3d  35 3a 71 25 21 38 3d 2d  |m.Bq%!4=5:q%!8=-|
0000f3c0  32 5e 32 31 2a 28 73 63  72 6f 6c 6c 5f 68 61 63  |2^21*(scroll_hac|
0000f3d0  6b 25 3c 3e 30 29 3a c8  99 20 22 57 69 6d 70 5f  |k%<>0):.. "Wimp_|
0000f3e0  53 65 74 49 63 6f 6e 53  74 61 74 65 22 2c 2c 71  |SetIconState",,q|
0000f3f0  25 0d 6d ce 3e 71 25 21  34 3d 36 3a 71 25 21 38  |%.m.>q%!4=6:q%!8|
0000f400  3d 2d 32 5e 32 31 2a 28  66 69 6c 65 5f 78 78 78  |=-2^21*(file_xxx|
0000f410  3c 3e 30 29 3a c8 99 20  22 57 69 6d 70 5f 53 65  |<>0):.. "Wimp_Se|
0000f420  74 49 63 6f 6e 53 74 61  74 65 22 2c 2c 71 25 0d  |tIconState",,q%.|
0000f430  6d d8 3f 71 25 21 34 3d  37 3a 71 25 21 38 3d 2d  |m.?q%!4=7:q%!8=-|
0000f440  32 5e 32 31 2a 28 73 6f  75 6e 64 5f 6f 6e 25 3c  |2^21*(sound_on%<|
0000f450  3e 30 29 3a c8 99 20 22  57 69 6d 70 5f 53 65 74  |>0):.. "Wimp_Set|
0000f460  49 63 6f 6e 53 74 61 74  65 22 2c 2c 71 25 0d 6d  |IconState",,q%.m|
0000f470  e2 20 f2 70 6f 6b 65 69  63 6f 6e 74 65 78 74 28  |. .pokeicontext(|
0000f480  31 36 2c c3 73 70 65 65  64 2b 22 25 22 29 0d 6d  |16,.speed+"%").m|
0000f490  ec 24 62 75 66 66 65 72  21 30 3d 30 3a 62 75 66  |.$buffer!0=0:buf|
0000f4a0  66 65 72 21 34 3d 30 3a  62 75 66 66 65 72 21 38  |fer!4=0:buffer!8|
0000f4b0  3d 30 0d 6d f6 37 c8 99  20 22 4f 53 5f 52 65 61  |=0.m.7.. "OS_Rea|
0000f4c0  64 56 61 72 56 61 6c 22  2c 22 36 35 30 32 45 6d  |dVarVal","6502Em|
0000f4d0  24 4b 65 79 6d 61 70 22  2c 62 75 66 66 65 72 2c  |$Keymap",buffer,|
0000f4e0  32 35 35 20 b8 20 2c 53  24 0d 6e 00 17 6b 65 79  |255 . ,S$.n..key|
0000f4f0  6d 61 70 25 3d a4 6b 65  79 6d 61 70 28 53 24 29  |map%=.keymap(S$)|
0000f500  0d 6e 0a 18 f2 70 6f 6b  65 69 63 6f 6e 74 65 78  |.n...pokeicontex|
0000f510  74 28 31 32 2c 53 24 29  0d 6e 14 05 e1 0d 6e 1e  |t(12,S$).n....n.|
0000f520  04 0d 6e 28 19 dd f2 70  6f 6b 65 69 63 6f 6e 74  |..n(...pokeicont|
0000f530  65 78 74 28 4e 25 2c 41  24 29 0d 6e 32 10 71 25  |ext(N%,A$).n2.q%|
0000f540  21 30 3d 63 6f 6e 66 69  67 25 0d 6e 3c 0b 71 25  |!0=config%.n<.q%|
0000f550  21 34 3d 4e 25 0d 6e 46  1e c8 99 20 22 57 69 6d  |!4=N%.nF... "Wim|
0000f560  70 5f 47 65 74 49 63 6f  6e 53 74 61 74 65 22 2c  |p_GetIconState",|
0000f570  2c 71 25 0d 6e 50 12 24  28 71 25 21 32 38 29 3d  |,q%.nP.$(q%!28)=|
0000f580  41 24 2b bd 30 0d 6e 5a  12 71 25 21 38 3d 30 3a  |A$+.0.nZ.q%!8=0:|
0000f590  71 25 21 31 32 3d 30 0d  6e 64 1e c8 99 20 22 57  |q%!12=0.nd... "W|
0000f5a0  69 6d 70 5f 53 65 74 49  63 6f 6e 53 74 61 74 65  |imp_SetIconState|
0000f5b0  22 2c 2c 71 25 0d 6e 6e  05 e1 0d 6e 78 04 0d 6e  |",,q%.nn...nx..n|
0000f5c0  82 11 dd f2 6e 65 77 73  70 65 65 64 28 53 29 0d  |....newspeed(S).|
0000f5d0  6e 8c 0b 73 70 65 65 64  3d 53 0d 6e 96 20 f2 70  |n..speed=S.n. .p|
0000f5e0  6f 6b 65 69 63 6f 6e 74  65 78 74 28 31 36 2c c3  |okeicontext(16,.|
0000f5f0  73 70 65 65 64 2b 22 25  22 29 0d 6e a0 05 e1 0d  |speed+"%").n....|
0000f600  6e aa 04 0d 6e b4 12 dd  f2 64 66 73 69 6d 61 67  |n...n....dfsimag|
0000f610  65 28 41 24 29 0d 6e be  3a c8 99 20 22 58 4f 53  |e(A$).n.:.. "XOS|
0000f620  5f 53 57 49 4e 75 6d 62  65 72 46 72 6f 6d 53 74  |_SWINumberFromSt|
0000f630  72 69 6e 67 22 2c 2c 22  49 6d 61 67 65 44 46 53  |ring",,"ImageDFS|
0000f640  5f 56 65 72 73 69 6f 6e  22 20 b8 20 3b 20 46 0d  |_Version" . ; F.|
0000f650  6e c8 2d e7 20 28 46 20  80 20 31 29 3d 30 20 8c  |n.-. (F . 1)=0 .|
0000f660  20 64 66 73 73 75 70 70  6f 72 74 3d b9 20 8b 20  | dfssupport=. . |
0000f670  64 66 73 73 75 70 70 6f  72 74 3d a3 0d 6e d2 62  |dfssupport=..n.b|
0000f680  e7 20 64 66 73 73 75 70  70 6f 72 74 3d a3 20 8c  |. dfssupport=. .|
0000f690  20 f2 72 65 70 6f 72 74  28 22 49 6d 61 67 65 44  | .report("ImageD|
0000f6a0  46 53 20 28 61 76 61 69  6c 61 62 6c 65 20 66 72  |FS (available fr|
0000f6b0  6f 6d 20 57 53 53 29 20  6d 75 73 74 20 62 65 20  |om WSS) must be |
0000f6c0  6c 6f 61 64 65 64 20 74  6f 20 61 63 63 65 73 73  |loaded to access|
0000f6d0  20 74 68 69 73 20 66 69  6c 65 22 29 3a e1 0d 6e  | this file"):..n|
0000f6e0  dc 10 69 6d 61 67 65 66  69 6c 65 25 3d b9 0d 6e  |..imagefile%=..n|
0000f6f0  e6 1b f2 66 69 6c 65 5f  6c 6f 61 64 28 41 24 2b  |...file_load(A$+|
0000f700  22 2e 21 42 4f 4f 54 22  29 0d 6e f0 08 f2 42 42  |".!BOOT").n...BB|
0000f710  43 0d 6e fa 05 e1 0d 6f  04 04 0d 6f 0e 10 dd f2  |C.n....o...o....|
0000f720  72 65 70 6f 72 74 28 41  24 29 0d 6f 18 32 c8 99  |report(A$).o.2..|
0000f730  22 57 69 6d 70 5f 52 65  70 6f 72 74 45 72 72 6f  |"Wimp_ReportErro|
0000f740  72 22 2c 22 20 20 20 20  22 2b 41 24 2c 25 31 31  |r","    "+A$,%11|
0000f750  30 30 31 2c 22 36 35 30  32 45 6d 22 0d 6f 22 05  |001,"6502Em".o".|
0000f760  e1 0d 6f 2c 04 0d 6f 36  10 dd f2 6f 70 65 6e 63  |..o,..o6...openc|
0000f770  6f 6e 66 69 67 0d 6f 40  19 20 20 20 20 20 20 20  |onfig.o@.       |
0000f780  20 20 20 20 f2 73 65 74  63 6f 6e 66 69 67 0d 6f  |    .setconfig.o|
0000f790  4a 1b 20 20 20 20 20 20  20 20 20 20 20 71 25 21  |J.           q%!|
0000f7a0  30 3d 63 6f 6e 66 69 67  25 0d 6f 54 2b 20 20 20  |0=config%.oT+   |
0000f7b0  20 20 20 20 20 20 20 20  c8 99 20 22 57 69 6d 70  |        .. "Wimp|
0000f7c0  5f 47 65 74 57 69 6e 64  6f 77 53 74 61 74 65 22  |_GetWindowState"|
0000f7d0  2c 2c 71 25 0d 6f 5e 0f  20 20 20 20 20 20 20 20  |,,q%.o^.        |
0000f7e0  20 20 20 0d 6f 68 21 20  20 20 20 20 20 20 20 20  |   .oh!         |
0000f7f0  20 20 e7 20 63 6f 6e 66  69 67 5f 6f 70 65 6e 25  |  . config_open%|
0000f800  3d a3 20 8c 0d 6f 72 36  20 20 20 20 20 20 20 20  |=. ..or6        |
0000f810  20 20 20 c8 99 20 22 4f  53 5f 52 65 61 64 4d 6f  |   .. "OS_ReadMo|
0000f820  64 65 56 61 72 69 61 62  6c 65 22 2c 2d 31 2c 34  |deVariable",-1,4|
0000f830  20 b8 20 2c 2c 78 65 69  67 25 0d 6f 7c 36 20 20  | . ,,xeig%.o|6  |
0000f840  20 20 20 20 20 20 20 20  20 c8 99 20 22 4f 53 5f  |         .. "OS_|
0000f850  52 65 61 64 4d 6f 64 65  56 61 72 69 61 62 6c 65  |ReadModeVariable|
0000f860  22 2c 2d 31 2c 35 20 b8  20 2c 2c 79 65 69 67 25  |",-1,5 . ,,yeig%|
0000f870  0d 6f 86 3a 20 20 20 20  20 20 20 20 20 20 20 c8  |.o.:           .|
0000f880  99 20 22 4f 53 5f 52 65  61 64 4d 6f 64 65 56 61  |. "OS_ReadModeVa|
0000f890  72 69 61 62 6c 65 22 2c  2d 31 2c 31 31 20 b8 20  |riable",-1,11 . |
0000f8a0  2c 2c 73 63 72 65 65 6e  78 25 0d 6f 90 3a 20 20  |,,screenx%.o.:  |
0000f8b0  20 20 20 20 20 20 20 20  20 c8 99 20 22 4f 53 5f  |         .. "OS_|
0000f8c0  52 65 61 64 4d 6f 64 65  56 61 72 69 61 62 6c 65  |ReadModeVariable|
0000f8d0  22 2c 2d 31 2c 31 32 20  b8 20 2c 2c 73 63 72 65  |",-1,12 . ,,scre|
0000f8e0  65 6e 79 25 0d 6f 9a 2e  20 20 20 20 20 20 20 20  |eny%.o..        |
0000f8f0  20 20 20 73 78 25 3d 71  25 21 31 32 2d 71 25 21  |   sx%=q%!12-q%!|
0000f900  34 20 3a 20 73 79 25 3d  71 25 21 31 36 2d 71 25  |4 : sy%=q%!16-q%|
0000f910  21 38 0d 6f a4 2d 20 20  20 20 20 20 20 20 20 20  |!8.o.-          |
0000f920  20 71 25 21 34 3d 28 28  73 63 72 65 65 6e 78 25  | q%!4=((screenx%|
0000f930  3c 3c 78 65 69 67 25 29  2d 73 78 25 29 2f 32 0d  |<<xeig%)-sx%)/2.|
0000f940  6f ae 2d 20 20 20 20 20  20 20 20 20 20 20 71 25  |o.-           q%|
0000f950  21 38 3d 28 28 73 63 72  65 65 6e 79 25 3c 3c 79  |!8=((screeny%<<y|
0000f960  65 69 67 25 29 2d 73 79  25 29 2f 32 0d 6f b8 1d  |eig%)-sy%)/2.o..|
0000f970  20 20 20 20 20 20 20 20  20 20 20 71 25 21 31 32  |           q%!12|
0000f980  3d 71 25 21 34 2b 73 78  25 0d 6f c2 1d 20 20 20  |=q%!4+sx%.o..   |
0000f990  20 20 20 20 20 20 20 20  71 25 21 31 36 3d 71 25  |        q%!16=q%|
0000f9a0  21 38 2b 73 79 25 0d 6f  cc 10 20 20 20 20 20 20  |!8+sy%.o..      |
0000f9b0  20 20 20 20 20 cd 0d 6f  d6 0f 20 20 20 20 20 20  |     ..o..      |
0000f9c0  20 20 20 20 20 0d 6f e0  17 20 20 20 20 20 20 20  |     .o..       |
0000f9d0  20 20 20 20 71 25 21 32  38 3d 2d 31 0d 6f ea 27  |    q%!28=-1.o.'|
0000f9e0  20 20 20 20 20 20 20 20  20 20 20 c8 99 20 22 57  |           .. "W|
0000f9f0  69 6d 70 5f 4f 70 65 6e  57 69 6e 64 6f 77 22 2c  |imp_OpenWindow",|
0000fa00  2c 71 25 0d 6f f4 05 e1  0d ff                    |,q%.o.....|
0000fa0a