Home » Archimedes archive » Archimedes World » AW-1996-08.adf » !6502DEm_6502Dem » !6502Dem/!RunImage

!6502Dem/!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 » Archimedes World » AW-1996-08.adf » !6502DEm_6502Dem
Filename: !6502Dem/!RunImage
Read OK:
File size: B178 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM > !RunImage
   20REM 6502Em (desktop frontend for binaries)
   30REM (c) Michael and Anne Borcherds, 1995
   40version$="1.50D (29th May 1996)"
   60ONERRORSYS"XWimp_CloseDown":SYS"XWimp_ReportError","    Fatal internal error "+STR$ERL+": "+REPORT$,1,"Z80Em":QUIT
   80osword7F_drive%=1
   90osword72_drive%=0
  110top%=HIMEM
  120useMEMC%=FALSE
  130IFuseMEMC%THEN
  150HIMEM=HIMEM-19*32*1024
  160memory=HIMEM+2*32*1024
  170roms=memory+32*1024
  180rom=memory-&100+96
  200ELSE
  220HIMEM=HIMEM-(64+64)*1024
  230memory=HIMEM+64*1024
  250ENDIF
  270sheila=memory-&200
  290PROCreadmemmap
  310filetype%=&BBC
  340LIBRARY"<6502Em$Res>.Sound7a"
  360PROCtemplates
  370PROCinitBBC
  380PROCsound_init
  390PROCnewmachine
  400PROCinit
  410PROCpoll
  430END
  460DEFPROCinstall(sprite$)
  470LOCALsx%,sy%,sm%,px%,py%
  480DIMtext_buff&100,sprite_buff&100
  490SYS"Wimp_SpriteOp",40,,sprite$TO,,,sx%,sy%,,sm%
  500SYS"OS_ReadModeVariable",sm%,4TO,,px%:sx%=sx%<<px%
  510SYS"OS_ReadModeVariable",sm%,5TO,,py%:sy%=sy%<<py%
  520!q%=-1
  530q%!4=0:q%!8=-16:q%!12=q%!4+sx%:q%!16=20+sy%
  550q%!20=&1700310B
  570!(q%+24)=text_buff
  580!(q%+28)=sprite_buff
  590$text_buff=sprite$
  600$sprite_buff="S"+sprite$
  610!(q%+32)=&100
  620SYS"Wimp_CreateIcon",,q%TO!q%
  630bar_hand=!q%
  640ENDPROC
  660DEFPROCreinstall(sprite$)
  670$sprite_buff="S"+sprite$
  680$text_buff=sprite$
  690buffer!0=-2
  700buffer!4=bar_hand
  730buffer!8=&00800080
  740buffer!12=&00800080
  750SYS"Wimp_SetIconState",,buffer
  770buffer!8=0
  780buffer!12=&00800080
  790SYS"Wimp_SetIconState",,buffer
  800ENDPROC
  820DEFPROCtemplates
  830DIMt 4:$t="TASK"
  840SYS"Wimp_Initialise",200,!t,"6502Em"TORO%,hand%
  850DIMq%256,q2%256,iconmenu%300,optionmenu%400,miscmenu%200,rommenu%800,machine_menu%200,oscli_menu 20
  860DIMpokemenu%50,pokevalid%12,poketext%12,drag 40
  870DIMtemp_regs 12*4,buffer&100
  880PROCinstall("OS�1.2")
  900PROCreadpatches
  920IFRO%>299THEN
  930SYS"OS_Byte",161,140TO,,t%:THREED%=-(t%AND 1)
  940IFTHREED%=TRUETHENSYS"Wimp_OpenTemplate",,"<6502Em$Res>.Template3D"ELSESYS"Wimp_OpenTemplate",,"<6502Em$Res>.Templates"
  950SYS"Wimp_LoadTemplate",,-1,,,-1,"info"TO,A%,B%
  960SYS"Wimp_LoadTemplate",,-1,,,-1,"xfer_send"TO,C%,D%
  970SYS"Wimp_LoadTemplate",,-1,,,-1,"xfer_send2"TO,E%,F%
  980ELSE
  990SYS"Wimp_OpenTemplate",,"<6502Em$Res>.Templates"
 1000A%=700:B%=300:C%=400:D%=350:E%=C%:F%=D%
 1010ENDIF
 1020DIMbuffer2 A%,icon3 B%,xfer1 C%+4,xfer2 D%,xfer3 E%+4,xfer4 F%
 1030SYS"Wimp_LoadTemplate",,buffer2,icon3,icon3+B%,-1,"info"
 1040SYS"Wimp_LoadTemplate",,xfer1,xfer2,xfer2+D%,-1,"xfer_send"
 1050SYS"Wimp_LoadTemplate",,xfer3,xfer4,xfer4+F%,-1,"xfer_send2"
 1060SYS"Wimp_CloseTemplate"
 1070SYS"Wimp_CreateWindow",,xfer1TOA%:xfer%=A%
 1080SYS"Wimp_CreateWindow",,xfer3TOA%:xfer2%=A%
 1090SYS"Wimp_CreateWindow",,buffer2TOA%:info%=A%
 1110!buffer=info%
 1120buffer!4=9
 1130SYS"Wimp_GetIconState",,buffer
 1140$(buffer!28)=version$+CHR$0
 1160!buffer=info%
 1170buffer!4=11
 1180SYS"Wimp_GetIconState",,buffer
 1190OSCLI"Load <6502Em$Res>.SerialNo "+STR$~(buffer!28)
 1200ENDPROC
 1220DEFPROCinit
 1230SYS"OS_GetEnv"TOA$
 1240IFRIGHT$(A$,1)=" "THEN
 1250I%=0
 1260REPEATI%+=1:UNTILMID$(A$,LENA$-I%,1)<>" "
 1270A$=LEFT$(A$,LENA$-I%)
 1280ENDIF
 1290IFRIGHT$(A$,1)=CHR$34THENA$=LEFT$(A$,LENA$-1)
 1300IFLEFT$(A$,1)=CHR$34THENA$=RIGHT$(A$,LENA$-1)
 1310I%=0
 1320REPEATI%+=1:UNTILMID$(A$,LENA$-I%,1)=" "ORI%=LENA$
 1330A$=RIGHT$(A$,I%)
 1340IFFNupper(MID$(A$,LENA$-9,10))<>".!RUNIMAGE"THENPROCsnap_load(A$):PROCBBC
 1360ENDPROC
 1380DEFPROCpoll
 1390ONERRORIFFNreport(REPORT$,ERR<>1)=2THENPROCquit
 1410REPEAT
 1420mask%=%1100000110011
 1430PROCresetmemmap
 1440SYS"Wimp_Poll",mask%,q%TOaction%
 1450PROCsetupmemmap
 1470CASEaction%OF
 1480WHEN2:SYS"Wimp_OpenWindow",,q%
 1490WHEN3:SYS"Wimp_CloseWindow",,q%
 1500WHEN6:PROCclick
 1510WHEN7:PROCsave
 1530WHEN9:PROCdecodemenu
 1540WHEN17,18:PROCmessage
 1550ENDCASE
 1570UNTILFALSE
 1580ENDPROC
 1600DEFPROCmessage
 1610CASEq%!16OF
 1620WHEN0:PROCquit
 1870WHEN3
 1880SYS"OS_WriteN",q%+44TOA$
 1890CASEq%!40OF
 1900WHENfiletype%:PROCsnap_load(A$)
 1910WHEN&FFB,&FFE:PROCfile_load(A$):PROCBBC
 1920ENDCASE
 1930WHEN5
 1940CASEq%!40OF
 1960WHENfiletype%
 1970q%!16=4:q%!12=q%!8:SYS"Wimp_SendMessage",17,q%,q%!20
 1980SYS"OS_WriteN",q%+44TOA$
 1990PROCsnap_load(A$):PROCBBC
 2010OTHERWISE
 2020IFNOTINKEY-1THEN
 2030SYS"OS_WriteN",q%+44TOA$
 2040F$=A$
 2050SYS"OS_File",5,F$TOtype%,,load%,exec%,length%
 2060IFtype%=2ANDLEFT$(RIGHT$(F$,LENF$-LENFNleaf(F$)-1),1)<>"!"THENENDPROC
 2070IFtype%=2THENF$=A$+".!Run":SYS"OS_File",5,F$TOtype%,,load%,exec%,length%:IF(load%AND&FFF00)=&BBC00THENq%!16=4:q%!12=q%!8:SYS"Wimp_SendMessage",17,q%,q%!20:PROCsnap_load(F$):PROCBBC:ENDPROC
 2080IFtype%=0THENF$=A$+"."+RIGHT$(A$,LENA$-LENFNleaf(A$)-2):SYS"OS_File",5,F$TOtype%,,load%,exec%,length%
 2110IF((load%>>>16)=0OR(load%>>>16)=&FFFFOR(load%>>>16)=&00FF)AND(load%AND&FFFF)<&8000AND type%=1THEN
 2120q%!16=4:q%!12=q%!8:SYS"Wimp_SendMessage",17,q%,q%!20
 2130PROCfile_load(F$)
 2140PROCBBC
 2150ENDIF
 2160ENDIF
 2170ENDCASE
 2180WHEN&400C1
 2190ENDCASE
 2200ENDPROC
 2310DEFPROCclick
 2320mx%=q%!0
 2330my%=q%!4
 2340mb%=q%!8
 2350h%=q%!12
 2360i%=q%!16
 2370IFh%=-2THEN
 2380IFmb%=2THENPROCmenus:SYS"Wimp_CreateMenu",,iconmenu%,mx%-64,96+8*44
 2390IFmb%=1THEN
 2400PROCreadCSD
 2410PROCBBC
 2420ENDIF
 2430IFmb%=4THENPROCBBC
 2440ENDIF
 2450IFi%=3AND(h%=xfer%ORh%=xfer2%)THENSYS"Wimp_CreateMenu",-1
 3010ENDPROC
 3040DEFPROCmenus
 3050LOCALP%
 3060PROCmenuheader(iconmenu%,"6502Em",LEN"Single Task "*16+12)
 3070PROCmenuitem(0,info%,&07000001,"Info")
 3080PROCmenuitem(0,optionmenu%,&07000001,"Options")
 3090PROCmenuitem(-(patch%<>0),patchmenu%,&07000001OR-(2^22)*(patches%=0),"Patch")
 3100PROCmenuitem(0,rommenu%,&07000001,"ROMs")
 3110PROCmenuitem(0,miscmenu%,&07000001,"Misc")
 3140PROCmenuitem(0,xfer%,&07000001OR(2^22),"Save")
 3160PROCmenuitem(0,xfer2%,&07000001OR(2^22),"Sprite")
 3200PROCmenuitem(&80,-1,&07000001,"Quit")
 3220buffer!0=0:buffer!4=0:buffer!8=0
 3230SYS"OS_ReadVarVal","6502Em$Keymap",buffer,255TO,S$
 3240keymap%=FNkeymap(S$)
 3260IFkeymaps%<>0THEN
 3270PROCmenuheader(keysmenu%,"Keymaps",12*16+12)
 3280FORI%=1TOkeymaps%
 3290PROCmenuitem(-&80*(I%=keymaps%)-(keymap%=I%),-1,&07000001,keymap$(I%))
 3300NEXT
 3310ENDIF
 3330IFpatches%<>0THEN
 3340PROCmenuheader(patchmenu%,"Patches",12*16+12)
 3350FORI%=1TOpatches%
 3360PROCmenuitem(-&80*(I%=patches%)-(patch%=I%),-1,&07000001,patch$(I%))
 3370NEXT
 3380ENDIF
 3400PROCmenuheader(rommenu%,"Protected?",12*16+12)
 3410FORI%=15TO0STEP-1
 3420PROCmenuitem(-(?(ROMRAM+I%)<>0)-&80*(I%=0),-1,&07000001,FNROMname(I%))
 3430NEXT
 3450PROCmenuheader(miscmenu%,"Misc",LEN"Disable Tape "*16+12)
 3460PROCmenuitem(0,-1,&07000001,"Read CSD")
 3470PROCmenuitem(0,-1,&07000001,"Reset")
 3480IFmachine%=0ORmachine%=4THEN
 3490PROCmenuitem(&80,-1,&07000001,"Disable Tape")
 3500ELSE
 3510PROCmenuitem(&80,-1,&07000001OR2^22,"Disable Tape")
 3520ENDIF
 3540PROCmenuheader(optionmenu%,"Options",LEN"Save Options "*16+12)
 3560PROCmenuitem(0,keysmenu%,&07000001OR-(2^22)*(keymaps%=0),"Keymap")
 3580PROCmenuitem(-ROMSEL%,-1,&07000001,"Paged ROMs")
 3590PROCmenuitem(-Palette%,-1,&07000001,"Palette")
 3600PROCmenuitem(-Cursor%,-1,&07000001,"Cursor")
 3610PROCindirecteditem(-Oscli%,-1,%100000001,"Pass on OSCLI",oscli_menu)
 3620PROCmenuitem(-exact%,-1,&07000001,"Exact Speed")
 3630PROCmenuitem(0,machine_menu%,&07000001,"Machine")
 3640PROCmenuitem(-sound_on%,-1,&07000001,"Sound")
 3650PROCmenuitem(-scroll_hack%,-1,&07000001,"Scroll Hack")
 3660PROCmenuitem(-file_xxx,-1,&07000001,"file_xxx")
 3670PROCmenuitem(0,-1,&07000001,"Default")
 3680PROCmenuitem(&80,-1,&07000001,"Save Options")
 3700PROCmenuheader(machine_menu%,"Machine",LEN"Master 128 "*16+12)
 3710PROCmenuitem(-(machine%=0),-1,&07000001OR-(2^22)*(Machine%(0)=0),Machine$(0))
 3720PROCmenuitem(-(machine%=1),-1,&07000001OR-(2^22)*(Machine%(1)=0),Machine$(1))
 3730PROCmenuitem(-(machine%=2),-1,&07000001OR-(2^22)*(Machine%(2)=0),Machine$(2))
 3740PROCmenuitem(-(machine%=3),-1,&07000001OR-(2^22)*(Machine%(3)=0),Machine$(3))
 3750PROCmenuitem(&80-(machine%=4),-1,&07000001OR-(2^22)*(Machine%(4)=0),Machine$(4))
 3770ENDPROC
 3790DEFPROCmenuheader(A%,B$,G%)
 3800P%=A%
 3810$P%=B$+CHR$13
 3820P%?12=7:P%?13=2:P%?14=7:P%?15=0
 3830P%!16=G%:P%!20=44:P%!24=0
 3840P%+=28
 3850ENDPROC
 3870DEFPROCmenuitem(A%,B%,C%,D$)
 3880P%!0=A%
 3890P%!4=B%
 3900P%!8=C%
 3910$(P%+12)=D$+CHR$13
 3920P%+=24
 3930ENDPROC
 3950DEFPROCindirecteditem(A%,B%,C%,D$,E%)
 3960P%!0=A%
 3970P%!4=B%
 3980P%!8=C%+&07000000
 3990P%!12=E%
 4000P%!16=0
 4010P%!20=LEND$+1
 4020$E%=D$+CHR$13
 4030P%+=24
 4040ENDPROC
 4060DEFPROCdecodemenu
 4070CASE!q%OF
 4080WHEN0
 4090WHEN1
 4100IFq%!4>-1THEN
 4110CASEq%!4OF
 4120WHEN0
 4130IFq%!8<>-1THENPROCsetkeymap(keymap$(q%!8+1))
 4140WHEN1:ROMSEL%=NOTROMSEL%
 4150WHEN2:Palette%=NOTPalette%
 4160WHEN3:Cursor%=NOTCursor%
 4170WHEN4:Oscli%=NOTOscli%
 4180WHEN5:exact%=NOTexact%
 4190WHEN6:IFq%!8<>-1AND q%!8<>machine%THENmachine%=q%!8:PROCnewmachine
 4200WHEN7:sound_on%=NOTsound_on%
 4210WHEN8:scroll_hack%=NOTscroll_hack%
 4220WHEN9:file_xxx=NOTfile_xxx:IFfile_xxxTHENOSCLI"IconSprites <6502Em$Res>.file_xxx"ELSEOSCLI"IconSprites <6502Em$Res>.no_xxx"
 4230WHEN10:PROCdefault_options:PROCnewmachine
 4240WHEN11:PROCsave_options
 4250ENDCASE
 4260ENDIF
 4270WHEN2
 4280IFq%!4=-1THEN
 4290patch%=0
 4300ELSE
 4310IFpatch%<>q%!4+1THENpatch%=q%!4+1:PROCloadpatch
 4320ENDIF
 4330WHEN3
 4340IFq%!4>-1THEN
 4350S%=15-(q%!4AND 15)
 4360IFFNvalidROM(S%)OR?(ROMRAM+S%)=2THEN
 4370IF?(ROMRAM+S%)=2THEN?(ROMRAM+S%)=0ELSE?(ROMRAM+S%)=1-?(ROMRAM+S%)
 4380ELSE
 4390?(ROMRAM+S%)=2
 4400ENDIF
 4410ENDIF
 4420WHEN4
 4430IFq%!4>-1THEN
 4440CASEq%!4OF
 4450WHEN0:PROCreadCSD
 4460WHEN1:PROCreset(1)
 4470WHEN2:PROCdisableCFS
 4480ENDCASE
 4490ENDIF
 4500WHEN5
 4510WHEN6
 4520OTHERWISE:PROCquit
 4530ENDCASE
 4540SYS"Wimp_GetPointerInfo",,q%
 4550IF(q%!8AND%1)>0THENPROCmenus:SYS"Wimp_CreateMenu",,iconmenu%,mx%-iconmenu%!16/2-24,16*4+44*2+12
 4560ENDPROC
 4580DEFPROCmenuitem2(A%,B%,C%,D%,E%,F%)
 4590P%!0=A%
 4600P%!4=B%
 4610P%!8=C%
 4620P%!12=D%
 4630P%!16=E%
 4640P%!20=F%
 4650P%+=24
 4660ENDPROC
 4680DEFFNcount(A$,B$)
 4690LOCALI%,C%
 4700FORI%=1TOLENA$
 4710IFMID$(A$,I%,1)=B$THENC%+=1
 4720NEXT
 4730=C%
 4750DEFFNletter(A$)
 4760LOCALI%,J%
 4770FORI%=1TOLENA$
 4780IFINSTR("ABCDEFabcdef",MID$(A$,I%,1))THENJ%=TRUE:I%=LENA$
 4790NEXT
 4800=J%
 4830DEFPROCsave
 4840IFsolid%THENSYS"DragASprite_Stop"
 4850K$=""
 4860IFsave_sprite%THEN!drag=xfer2%ELSE!drag=xfer%
 4870drag!4=1
 4880SYS"Wimp_GetIconState",,drag
 4890P%=drag!28-1
 4900REPEATP%+=1
 4910IF?P%<>13THENK$=K$+CHR$?P%
 4920IF?P%=ASC"."OR?P%=ASC":"THENK$=""
 4930UNTIL?P%=13
 4940SYS"Wimp_GetPointerInfo",,q%
 4950IFq%!12<>xfer%AND q%!12<>xfer2%THENSYS"Wimp_CreateMenu",-1
 4960q%!20=q%!12
 4970q%!24=q%!16
 4980q%!28=q%!0
 4990q%!32=q%!4
 5010IFsave_sprite%=FALSETHEN
 5020q%!36=65667
 5030q%!40=filetype%
 5040ELSE
 5050q%!36=80*1024
 5060q%!40=&FF9
 5070ENDIF
 5090q%!12=0
 5100q%!16=1
 5110$(q%+44)=K$+CHR$0
 5120q%!0=(48+LENK$)AND%111111100
 5140SYS"XWimp_SendMessage",17,q%,q%!20,q%!24
 5150myref%=q%!8
 5160ENDPROC
 5180DEFFNleaf(A$)
 5190LOCALI%
 5200I%=LENA$+1
 5210REPEATI%-=1:UNTILMID$(A$,I%,1)="."
 5220=LEFT$(A$,I%-1)
 5240DEFPROCerr
 5250ONERROROFF
 5260IFFNreport(REPORT$,TRUE)THENPROCquitELSEPROCpoll
 5270ENDPROC
 5290DEFPROCerr2(M%)
 5300LOCALERROR
 5310ONERRORLOCALPROCerr
 5320IFhand%<>0THENSYS"XOS_Find",0,hand%
 5330SYS"XWimp_SetMode",M%:SYS"X6502_RemoveExitHandler"
 5340IFsound%=TRUETHENPROCsound_restore
 5350IFFNreport(REPORT$,TRUE)THENPROCquitELSEPROCpoll
 5360ENDPROC
 5380DEFFNreport(a$,E%)
 5390LOCALA%
 5400IFE%THEN
 5410SYS"XWimp_ReportError","    Internal error "+STR$ERL+": "+a$,3,"6502Em"TO,A%
 5420ELSESYS"XWimp_ReportError","    "+a$,1,"6502Em"TO,A%
 5430ENDIF
 5440=A%
 5460DEFFNcsd
 5470SYS"OS_GBPB",6,,buffer
 5480buffer?(buffer?1+2)=13
 5490=$(buffer+2)
 5510DEFPROCreadCSD
 5530LOCALERROR
 5550ONERRORLOCAL:RESTOREERROR:fs$="ADFS:":disc$="":path$="$":subpath$="":SYS"XWimp_ReportError","    Error in reading current directory: "+REPORT$,1,"6502Em":ENDPROC
 5580FORI%=0TO1
 5590SYS"OS_Args"TOFS%
 5600SYS"OS_FSControl",33,FS%,STRING$(20," "),20TO,,fs$
 5610IFfs$<>""THENfs$=fs$+":":I%=1ELSEOSCLI"DIR <6502Em$Dir>.^"
 5620NEXT
 5640SYS"OS_GBPB",5,,buffer
 5650buffer?(?buffer+1)=13
 5660disc$=$(buffer+1)
 5670IFdisc$=CHR$34+"Unset"+CHR$34THENdisc$=""ELSEdisc$=":"+disc$+"."
 5690path$=FNcsd
 5700IFpath$<>"$"THEN
 5720REPEAT
 5730SYS"OS_FSControl",0,"^"
 5740CSD$=FNcsd
 5750path$=CSD$+"."+path$
 5760UNTILCSD$="$"
 5770IFRIGHT$(path$,7)=CHR$34+"Unset"+CHR$34THENpath$="$"
 5780SYS"OS_FSControl",0,path$
 5790ENDIF
 5810subpath$=""
 5820ENDPROC
 5840DEFPROCinitBBC
 5860DIMR%(7)
 5880DIMBBC$(&7C),ARC$(&78),Elec$(3,13)
 5890RESTORE
 5900FORI%=0TO3
 5910FORJ%=13TO0STEP-1
 5920READElec$(I%,J%)
 5930NEXT
 5940NEXT
 5950FORI%=0TO7
 5960FORJ%=0TO12
 5970READBBC$(I%*16+J%)
 5980NEXT
 5990NEXT
 6000FORI%=0TO&78
 6010READARC$(I%)
 6020NEXT
 6040PROCreadkeymaps
 6050PROCsetkeymap("Default")
 6060PROCelkkeys("<6502Em$Res>.ElkKeys")
 6070SYS"6502_Register"
 6090DIMMachine$(4),Machine%(4),MachineSprite$(4)
 6110disable_reset=FALSE
 6120default_machine%=0
 6140Machine$(0)="BBC B":MachineSprite$(0)="OS�1.2"
 6150Machine$(1)="Master 128":MachineSprite$(1)="OS�3.2"
 6160Machine$(2)="   MOS 3.5":MachineSprite$(2)="OS�3.5"
 6170Machine$(3)="Compact":MachineSprite$(3)="OS�5.1"
 6180Machine$(4)="Electron":MachineSprite$(4)="OS�1.0"
 6211Machine%(4)=FALSE
 6230Q=OPENIN"<6502Em$RomPath>OS1,2"
 6240IFQ<>0THENCLOSE#Q:Machine%(0)=TRUEELSEMachine%(0)=FALSE
 6250IFMachine%(0)=FALSETHENdefault_machine%=1
 6270Q=OPENIN"<6502Em$RomPath>M128.OS3,2"
 6280IFQ<>0THENCLOSE#Q:Machine%(1)=TRUEELSEMachine%(1)=FALSE
 6290IFMachine%(0)=FALSEAND Machine%(1)=FALSETHENdefault_machine%=2
 6310Q=OPENIN"<6502Em$RomPath>M128.OS3,5"
 6320IFQ<>0THENCLOSE#Q:Machine%(2)=TRUEELSEMachine%(2)=FALSE
 6330IFMachine%(0)=FALSEAND Machine%(1)=FALSEAND Machine%(2)=FALSETHENdefault_machine%=3
 6350Q=OPENIN"<6502Em$RomPath>Compact.OS5,1"
 6360IFQ<>0THENCLOSE#Q:Machine%(3)=TRUEELSEMachine%(3)=FALSE
 6370IFMachine%(0)=FALSEAND Machine%(1)=FALSEAND Machine%(2)=FALSEAND Machine%(3)=FALSETHENERROR0,"No ROMs found - please run !Rip65Host"
 6390Q=OPENIN"<6502Em$Dir>.Code"
 6400L%=EXT#Q
 6410CLOSE#Q
 6420DIMcode L%+3000
 6430IFNOTuseMEMC%THENDIMroms 17*16*1024
 6450DIMcmos%(63):PROCloadCMOS
 6460DIMeeprom%(255):PROCloadEEPROM
 6470WHILE(codeAND 15)<>0:code+=1:ENDWHILE
 6490indexfile$="":index%=0:newindex%=-1
 6600sprite=0
 6610save_sprite=FALSE
 6640PROCreadCSD
 6650FS$=fs$:DISC$=disc$:PATH$=path$:SUBPATH$=subpath$
 6670PROCassemble
 6680PROCload_options
 6740IFfile_xxxTHENOSCLI"IconSprites <6502Em$Res>.file_xxx"
 6890*FX229,1
 6920patch%=0
 7000ENDPROC
 7020DEFPROCSRRAM
 7030?(ROMRAM+socket%)=0
 7040socket%=(socket%-1)AND 15
 7050ENDPROC
 7070DEFPROCkillROM(S%)
 7080LOCALI%
 7090?(ROMRAM+S%)=2
 7100FORI%=0TO255STEP16
 7110I%!(roms+romsize%*S%)=0
 7120NEXT
 7130ENDPROC
 7150DEFPROCloadROM(R$,R%)
 7160LOCALQ%
 7170IFmachine%=4AND(socket%=9ORsocket%=8)THENsocket%=7
 7180S%=socket%
 7190socket%=(socket%-1)AND 15
 7200SYS"OS_Find",&4E,R$,"6502Em$ROMPath"TOQ%
 7210SYS"OS_GBPB",3,Q%,roms+romsize%*S%,&4000
 7220CLOSE#Q%
 7230?(ROMRAM+S%)=R%
 7240ENDPROC
 7260DEFPROCinitROMs
 7270LOCALS%
 7280FORS%=0TO15
 7290?(ROMRAM+S%)=2
 7320NEXT
 7330ENDPROC
 7350DEFFNROMname(S%)
 7360IF?(ROMRAM+S%)=2THEN="Empty"
 7370PROCresetmemmap
 7380LOCALN$,I%
 7390I%=roms?(romsize%*S%+7)
 7400IFFNvalidROM(S%)THEN
 7410FORI%=0TO11
 7420N$=N$+CHR$roms?(romsize%*S%+&9+I%)
 7430IFroms?(romsize%*S%+&B)=0THENI%=11
 7440NEXT
 7450ELSE
 7460N$="RAM "+STR$~S%
 7470ENDIF
 7480PROCsetupmemmap
 7490=N$
 7510DEFFNvalidROM(S%)
 7520LOCALI%
 7530I%=roms?(romsize%*S%+7)
 7540IFroms?(romsize%*S%+I%+1)=&28AND roms?(romsize%*S%+I%+2)=&43AND roms?(romsize%*S%+I%+3)=&29THEN=TRUEELSE=FALSE
 7560DEFPROCreset(A%)
 7570IFdisable_resetTHENENDPROC
 7580PROCsetupmemmap
 7590?fe10=&22
 7600sheila!&C0=&7070B7AB
 7620?ACCCON=0
 7660?f=%100
 7710IFA%=1THEN
 7720PROCclearmem(memory,memory+&8000)
 7730?ier=&80
 7740?ier2=&80
 7750?Eifr=%10
 7760?Eier=%0
 7770?Elatch=0
 7780!T1R=&F0<<24
 7790!T2R=&F0<<24
 7800!T3R=&F0<<24
 7810!T4R=&F0<<24
 7820OSCLI"LOAD <6502Em$Res>.SHEILA "+STR$~sheila
 7830ENDIF
 7850sheila?&20=2
 8060!pc_store=(memory?&FFFC+(memory?&FFFD<<8))<<16
 8080ENDPROC
 8100DEFPROCBBC
 8120PROCdemo("This is a demo version of 6502Em. It will work for about 2 minutes. Press F12 to finish.")
 8150LOCALERROR
 8170SYS"XOS_SWINumberFromString",,"ImageDFS_Version"TO;F
 8180IF(FAND 1)=0THENdfssupport=TRUEELSEdfssupport=FALSE
 8200*FX9
 8210wimp_mode=MODE
 8230?lastmode=255
 8240SYS"Hourglass_Smash"
 8260PROCsound_setup
 8270SYS"6502_InstallExitHandler",wimp_mode
 8290ONERRORLOCALPROCerr2(wimp_mode)
 8310!patch_on=((patch%>0)AND%1)+(exact%AND%10)+(Cursor%AND%100)+(scroll_hack%AND%1000)+(NOTsound_on%AND%10000)
 8330VDU23,16,1,254|
 8340SYS"OS_Byte",202,0,255TO,FX202
 8350SYS"OS_Byte",247,0,255TO,FX247
 8360SYS"OS_Byte",247,255,0
 8380SYS"OS_Byte",106,&81
 8390MOUSECOLOUR3,255,255,255
 8410SYS"OS_Byte",202,memory?&25AAND%10000,%11101111
 8420SYS"OS_Byte",118
 8440hand%=OPENINtapefile$
 8450?tape_handle=hand%
 8470REPEAT
 8490IFnewindex%>=0 index%=newindex%
 8500IFOSRDCH%THENPROCpoke(&FFE0,OSRDCH_loc)ELSEPROCpoke(&FFE0,&23)
 8510?ROMSEL=1+ROMSEL%
 8520?Palette=1+Palette%
 8540A%=roms
 8550D%=memory
 8560PROCsetupmemmap
 8570SYS&600FA,0
 8580b%=USR(code+!start_offset)
 8590PROCsetupmemmap
 8600SYS&600FA,1
 8610IFsprite<>0THENSYS"XOS_SpriteOp",256+16,sprite,"BBCScreen",1,0,0,1279,1023
 8620*FX15
 8640CASEb%OF
 8650WHEN11
 8660IFINKEY-2THEN
 8670IFhand%<>0THENPTR#hand%=FNmax(0,PTR#hand%-350)
 8680ELSE
 8690IFINKEY-1THENvolume%+=5ELSEvolume%-=5
 8700IFvolume%>127THENvolume%=127
 8710IFvolume%<0THENvolume%=0
 8720PROCsound_restore:PROCsound_setup
 8730ENDIF
 8740ENDIF
 8760WHEN10:CLS:?lastmode=255
 8770WHEN66:PRINT~!pc_store:Q=GET
 8780WHEN15
 8790IFINKEY-3THENPROCreset(1)ELSEPROCreset(0)
 8800ENDIF
 8820WHEN3
 8850IFFNpeek(!pc_store>>>16)=3AND(!pc_store>>>16)<&C000THEN
 8870CASEFNpeek((!pc_store>>>16)+1)OF
 8880WHEN0:PROCosfsc
 8890WHEN1:PROCosfind
 8900WHEN2:PROCosgbpb
 8910WHEN3:PROCosbput
 8920WHEN4:PROCosbget
 8930WHEN5:PROCosargs
 8940WHEN6:PROCosfile
 8950WHEN&40:PROCosword2
 8960WHEN&41:PROCosbyte2
 8970WHEN&80:PROCreadCMOS
 8980WHEN&81:PROCwriteCMOS
 8990WHEN&82:PROCreadEEPROM
 9000WHEN&83:PROCwriteEEPROM
 9010WHEN&D0:PROCsrload
 9020WHEN&D1:PROCsrwrite
 9030WHEN&D2:PROCdrive
 9040WHEN&D3:PROCboot
 9050WHEN&D5:PROCback:a?3=0:PROCrts
 9060WHEN&FF:b%=12:PROCrts
 9070ENDCASE
 9080ELSE
 9090CASE(!pc_store>>>16)OF
 9100WHEN&FFF1,&E7EB:PROCosword
 9110WHEN&FFE0:PROCosrdch
 9120WHEN&FFD7:PROCosbget
 9130WHEN&FFD4:PROCosbput
 9140WHEN&FFDD:PROCosfile
 9150WHEN&FFDA:PROCosargs
 9160WHEN&FFD1:PROCosgbpb
 9170WHEN&FFCE:PROCosfind
 9180WHEN&F1B1,&F0E8:PROCosfsc
 9190ENDCASE
 9210ENDIF
 9230WHEN7
 9240cb=(y?3)<<8
 9250cb+=x?3
 9260cb+=memory
 9270FORI%=0TO7
 9280R%(I%)=cb!(9+I%*4)
 9290IF(cb?4AND(1<<I%))<>0THENR%(I%)=R%(I%)+memory
 9300NEXT
 9310swi%=cb?0
 9320swi%+=(cb?1)<<8
 9330swi%+=(cb?2)<<16
 9420IFdfssupportTHEN
 9440CASEswi%OF
 9460WHEN&61140
 9470base=cb!9
 9480CASEmemory?baseOF
 9490WHEN0,1,2,3
 9500WHEN&21:memory?base=0
 9510WHEN&4B:memory?base=1
 9520WHEN&E0:memory?base=2
 9530WHEN&EA:memory?base=3
 9540OTHERWISE
 9550PRINT"Drive ";memory?base;"  "
 9560ENDCASE
 9570IFmemory?(base+6)=&80THENmemory?(base+6)=&53
 9580IFmemory?(base+6)=&A0THENmemory?(base+6)=&4B
 9600IFmemory?(base+11)<>0THENmemory?(base+9)=memory?(base+9)+1
 9610memory?(base+9)=(memory?(base+9)AND%11111)OR32
 9620IFmemory?(base+6)<>&81THENSYS"XImageDFS_OSWORD7F",,baseMOD256,baseDIV256,memoryTOR%(0);F
 9640WHEN&61141
 9660WHEN&61142
 9700WHEN&61143
 9730OTHERWISE
 9740SYS(swi%OR2^17),R%(0),R%(1),R%(2),R%(3),R%(4),R%(5),R%(6),R%(7)TOR%(0),R%(1),R%(2),R%(3),R%(4),R%(5),R%(6),R%(7);F
 9760ENDCASE
 9780ELSE
 9790SYS(swi%OR2^17),R%(0),R%(1),R%(2),R%(3),R%(4),R%(5),R%(6),R%(7)TOR%(0),R%(1),R%(2),R%(3),R%(4),R%(5),R%(6),R%(7);F
 9800ENDIF
 9820IFcb?3<>0THEN
 9830FORI%=0TOcb?3-1
 9840IF(cb?5AND(1<<I%))<>0THENR%(I%)=R%(I%)-memory
 9850cb!(9+I%*4)=R%(I%)
 9860NEXT
 9870ENDIF
 9910IF(FAND 1)<>0AND(swi%AND 2^17)=0THEN
 9920A%=R%(0)
 9930PROCswi_error
 9940ELSE
 9960IF(FAND 1)<>0AND cb?8<>0THEN
 9970err=cb?6
 9980err+=(cb?7)<<8
 9990err+=memory
10000J%=FALSE
10010err?0=0
10020FORI%=0TOcb?8-2
10030err?(I%+1)=R%(0)?I%
10040IFerr?I%=0THENJ%=TRUE
10050NEXT
10060IFJ%=FALSETHENerr?(cb?8-1)=0
10070ENDIF
10090!pc_store=!pc_store+(1<<16)
10100?f=?fAND%1100011
10110IF(FAND 1)<>0THEN?f=?fOR%01000000
10120IF(FAND 2)<>0THEN?f=?fOR%00000001
10130IF(FAND 4)<>0THEN?f=?fOR%00000010
10140IF(FAND 8)<>0THEN?f=?fOR%10000000
10160ENDIF
10180WHEN12
10210OTHERWISE
10240ENDCASE
10260UNTILb%=12
10280IFhand%<>0THENSYS"XOS_Find",0,hand%
10300SYS"OS_Byte",202,FX202
10310SYS"OS_Byte",247,FX247
10330SYS"OS_Byte",106,1
10350*Set Key$11 "<6502Em$Key11>"
10360*Set Key$12 "<6502Em$Key12>"
10380SYS"6502_RemoveExitHandler"
10410PROCsound_restore
10430SYS"Wimp_SetMode",wimp_mode
10450*FX15,0
10470PROCdemo("The full version is available for �15 from: Warm Silence Software, St Catherine's College, Oxford, OX1 3UJ.")
10500ENDPROC
10520DEFFNmax(A%,B%)
10530IFA%>B%THEN=A%ELSE=B%
10550DEFPROCpullpc
10560sp?3=sp?3+1
10570pc_store?2=?(memory+&100+sp?3)
10580sp?3=sp?3+1
10590pc_store?3=?(memory+&100+sp?3)
10600ENDPROC
10620DEFPROCassemble
10630a=memory-&100+0
10640a=memory-&100+0
10650x=memory-&100+4
10660y=memory-&100+8
10670f=memory-&100+12
10680sp=memory-&100+16
10690pc_store=memory-&100+20
10700T1R=memory-&100+32
10710T2R=memory-&100+40
10720T3R=memory-&100+48
10730T4R=memory-&100+56
10740screenR=memory-&100+64
10750ifr=memory-&100+76
10760ier=memory-&100+77
10770ifr2=memory-&100+78
10780ier2=memory-&100+79
10790rom=memory-&100+96
10810ROMSEL=memory-&100+92
10820Palette=memory-&100+164
10830ROMRAM=memory-&100+100
10840patch_on=memory-&100+176:!patch_on=0
10850lastmode=memory-&100+178
10860fe10=memory-&100+179
10870tape_handle=memory-&100+117
10880tape_count=memory-&100+180
10890ACCCON=memory-&100+172
10900Elatch=memory-&100+188
10910Eifr=memory-&100+189
10920Eier=memory-&100+190
10930ROMint=memory-&100+191
10950P%=code
10960[OPT2
10970.Oa
10980EQUD 0
10990.Ox
11000EQUD 0
11010.Oy
11020EQUD 0
11030.Of
11040EQUD 0
11050.Osp
11060EQUD 0
11070.Opc_store
11080EQUD 0
11090.start_offset
11100EQUD 0
11110.trace
11120EQUD 0
11130.trace2
11140EQUD 0
11150.init_addr
11160EQUD 0
11170.crt_addr
11180EQUD 0
11190.T1_addr
11200EQUD 0
11210.ifr_addr
11220EQUD 0
11230.column_counter_addr
11240EQUD 0
11250.ROMSEL_addr
11260EQUD 0
11270.Palette_addr
11280EQUD 0
11290.speed_addr
11300EQUD 0
11310.elite_addr
11320EQUD 0
11330.opco_addr EQUD 0
11340.bcd_addr EQUD 0
11350.sheila_writetab_addr EQUD 0
11360.sheila_readtab_addr EQUD 0
11370.sound_vectors_addr EQUD 0
11380.patch_addr EQUD 0
11390]
11400ENDPROC
11420DEFPROCrts
11430sp?3=sp?3+1
11440pc_store?2=memory?(&100+sp?3)
11450sp?3=sp?3+1
11460pc_store?3=memory?(&100+sp?3)
11470!pc_store=!pc_store+(1<<16)
11490ENDPROC
11500!pc_store=&8004<<16
11550ENDPROC
11570DEFPROCosfile
11590addr=memory+x?3+(y?3)*256
11600CASEa?3OF
11610WHEN0
11620a%=a?3
11630b$=FNaddpath($((addr!0AND&FFFF)+memory))
11640c%=addr!2
11650d%=addr!6
11660e%=(addr!10AND&FFFF)+memory
11670f%=(addr!14AND&FFFF)+memory
11690SYS"XOS_File",a%,b$,c%,d%,e%,f%TOA%;F
11700IF(FAND 1)=0THENPROCrtsELSEPROCswi_error
11710WHEN5
11720b$=$((addr!0AND&FFFF)+memory)
11730SYS"XOS_File",13,FNadd_(b$),,,FN_path(b$)TOA%,,c%,d%,e%,f%;F
11740IF(FAND 1)=1THEN
11750PROCswi_error
11760ELSE
11770a?3=A%
11780addr!2=c%
11790addr!6=d%
11800addr!10=e%
11810addr!14=f%
11820PROCrts
11830ENDIF
11840WHEN6
11850b$=$((addr!0AND&FFFF)+memory)
11860SYS"XOS_File",6,FNaddpath(b$)TOA%,,c%,d%,e%,f%;F
11870IF(FAND 1)=1THEN
11880PROCswi_error
11890ELSE
11900a?3=A%
11910addr!2=c%
11920addr!6=d%
11930addr!10=e%
11940addr!14=f%
11950PROCrts
11960ENDIF
11980WHEN255
11990a%=a?3
12000b$=$((addr!0AND&FFFF)+memory)
12020c%=(addr!2AND&FFFF)+memory
12030IF(addr!2AND&FFFF0000)=&FFFE0000THENc%-=&13000
12040d%=addr?6
12050IFd%<>0THENSYS"XOS_File",13,FNadd_(b$),,,FN_path(b$)TO,,c%:d%=0:c%=(c%AND&FFFF)+memory
12060SYS"XOS_File",13,FNadd_(b$),,,FN_path(b$)TO,,,,length%
12070IFc%+length%>memory+&8000AND c%<memory+&8000THEN
12080length%=memory+&7FFF-c%
12090SYS"XOS_Find",&4D,FNadd_(b$),FN_path(b$)TOA%;F
12100IF(FAND 1)=0THENSYS"XOS_GBPB",4,A%,c%,length%:SYS"XOS_Find",0,A%:PROCrtsELSEPROCswi_error
12110ELSE
12120SYS"XOS_File",12,FNadd_(b$),c%,0,FN_path(b$)TOA%,,c%,d%,e%,f%;F
12130a?3=A%
12140addr!2=c%
12150addr!6=d%
12160addr!10=e%
12170addr!14=f%
12180IF(FAND 1)=0THENPROCrtsELSEPROCswi_error
12190ENDIF
12220a?3=1
12300OTHERWISE
12310PRINT"OSFILE ";a?3:Q=GET
12320ENDCASE
12330ENDPROC
12350DEFPROCswi_error
12360LOCALA$
12370A$=""
12380FORI%=0TO253
12400memory?(&102+I%)=A%?(I%+4)
12410IFA%?(I%+4)=0THENI%=253
12420NEXT
12440memory?&100=0
12450memory?&101=?A%
12470!pc_store=&100<<16
12480ENDPROC
12500DEFPROCbrk(A%,A$)
12510A$=A$+CHR$0
12520FORI%=0TOLENA$-1
12530memory?(&102+I%)=ASCMID$(A$,I%+1,1)
12540NEXT
12550memory?&100=0
12560memory?&101=A%
12570!pc_store=&100<<16
12580ENDPROC
12600DEFFNmin(A%,B%)IFA%<B%THEN=A%ELSE=B%
12620DEFPROCosword
12630CASEa?3OF
12640WHEN0,1,2,3,4
12650pc_store?2=memory?&20C
12660pc_store?3=memory?&20D
12670WHEN0123
12680addr=x?3+(y?3<<8)
12690buff=memory?addr+(memory?(addr+1)<<8)
12700SYS"OS_ReadLine",buff+memory,memory?(addr+2),memory?(addr+3),memory?(addr+4)TO,Y%;F%
12710IF(F%AND%10)=0THENmemory?(buff+Y%)=13:Y%+=1
12720y?3=Y%
12730?f=(?fAND%11111110)OR((F%AND%10)>>1)
12740PROCrts
12750WHEN91,93
12760SYS"OS_Word",1,x?3+(y?3<<8)+memory
12770PROCrts
12780WHEN92
12790SYS"OS_Word",2,x?3+(y?3<<8)+memory
12800PROCrts
12810WHEN7
12820buffer=memory+x?3+(y?3<<8)
12910channel%=?bufferAND%11
12920flush%=?bufferAND%10000
12930sync%=buffer?1AND%111
12940cont%=buffer?1AND%11110000
12950ampl%=buffer?2:IFampl%>&EFTHENampl%+=&FF00ELSEampl%+=301:channel%+=4
12960pitch%=buffer?4
12970dur%=buffer?6
12980IFchannel%=0THEN
12990CASEpitch%AND%111OF
13000WHEN0,4:pitch%=220
13010WHEN1,5:pitch%=160
13020WHEN2,6:pitch%=100
13030WHEN3,7:pitch%=chan1_pitch%
13040ENDCASE
13050ENDIF
13060IFchannel%=1THENchan1_pitch%=pitch%
13080IFcont%=0THENSYS"Sound_Control",channel%+1,ampl%,pitch%,dur%
13100PROCrts
13120WHEN8
13170IF?(memory+x?3+(y?3<<8)+1)=0THEN?(memory+x?3+(y?3<<8)+1)=1
13180SYS"Sarah_Envelope",0,memory+x?3+(y?3<<8)
13200PROCrts
13220WHEN&7F
13230addr%=x?3+(y?3<<8)+memory
13240track%=addr%?7
13250sector%=addr%?8
13260disc_address%=sector%*256+track%*2560
13270length%=(memory?9AND%1111)*256
13280addr%?10=0
13290PROCrts
13310OTHERWISEIFa?3>20THEN
13320pc_store?2=memory?&20C
13330pc_store?3=memory?&20D
13340ENDCASE
13350ENDPROC
13370DEFPROCosgbpb
13390addr%=memory+x?3+(y?3<<8)
13400b%=?addr%
13410c%=addr%!1
13420d%=addr%!5
13430e%=addr%!9
13460IFa?3=9THEN
13480SYS"XOS_GBPB",a?3,fs$+disc$+path$+subpath$,memory+(c%AND&FFFF),b%,e%,d%,0TOA%,,,d%,e%;F
13490IF(FAND 1)=0THEN
13500?addr%=d%
13510addr%!9=e%
13520IF(FAND%10)=0THEN?f=(?fAND%11111110)ELSE?f=?fOR1
13530PROCrts
13540ELSE
13550PROCswi_error
13560ENDIF
13580ELSE
13600SYS"OS_FSControl",11,fs$
13610SYS"OS_FSControl",0,disc$+path$+subpath$
13630IF(a?3=3ORa?3=4)AND c%<&8000AND c%+e%>&8000THENe%=&8000-c%
13650SYS"XOS_GBPB",a?3,b%,memory+(c%AND&FFFF),d%,e%TOA%,,c%,d%,e%;F
13670SYS"OS_FSControl",19
13690IF(FAND 1)=0THEN
13700addr%!1=c%-memory
13710addr%!5=d%
13720addr%!9=e%
13730IF(FAND%10)=0THEN?f=(?fAND%11111110)ELSE?f=?fOR1
13740PROCrts
13750ELSE
13760PROCswi_error
13770ENDIF
13790ENDIF
13800ENDPROC
13820DEFPROCosargs
13830CASEa?3OF
13840WHEN0
13850IFy?3<>0THEN
13860SYS"XOS_Args",a?3,y?3TOA%,,L%;F
13870IF(FAND 1)=0THENmemory!(x?3)=L%:PROCrtsELSEPROCswi_error
13880ELSE
13890a?3=4:PROCrts
13900ENDIF
13910WHEN1
13920SYS"XOS_Args",a?3,y?3,memory!(x?3)TOA%;F
13930IF(FAND 1)=0THENPROCrtsELSEPROCswi_error
13940WHEN2
13950SYS"XOS_Args",a?3,y?3TOA%,,L%;F
13960IF(FAND 1)=0THENmemory!(x?3)=L%:PROCrtsELSEPROCswi_error
13970WHEN255
13980SYS"XOS_Args",a?3,y?3TOA%;F
13990IF(FAND 1)=0THENPROCrtsELSEPROCswi_error
14000OTHERWISE:PROCrts
14010ENDCASE
14020ENDPROC
14040DEFFNupper(A$)
14050LOCALI%,B$
14060FORI%=1TOLENA$
14070IFMID$(A$,I%,1)>="a"ANDMID$(A$,I%,1)<="z"THENB$=B$+CHR$(ASCMID$(A$,I%,1)-32)ELSEB$=B$+MID$(A$,I%,1)
14080NEXT
14090=B$
14110DEFPROCquit
14120ONERROROFF
14130PROCresetmemmap
14140SYS"X6502_DeRegister"TOA%
14150IFA%=0THENSYS"XOS_Module",4,"6502Support"
14160SYS"Wimp_CloseDown"
14170END
14180ENDPROC
14390DEFPROCsnap_load(file$)
14400LOCALfile%,I%,ok%,machine$,M%,patch$
14410file%=OPENIN(file$)
14420type$=GET$#file%
14430IFEXT#file%=0THENtype$="BBC Script"
14450CASEtype$OF
14470WHEN"BBC Tapefile"
14490CLOSE#file%
14500tapefile$=file$
14520WHEN"BBC Script"
14540LOCALERROR
14560ONERRORLOCAL:RESTOREERROR:SYS"XWimp_ReportError","    Error in script: "+REPORT$,3,"6502Em"TO,A%:IFA%=2THENPROCquitELSEPROCpoll
14580scroll_hack%=FALSE
14610IFEOF#file%THEN
14620A$=""
14630ELSE
14640A$=FNupper(GET$#file%)
14650ENDIF
14660REPEAT
14670B$=LEFT$(A$,INSTR(A$," ")-1)
14680ok%=TRUE
14690CASEB$OF
14700WHEN"PALETTE"
14710IFINSTR(A$,"ON")THENPalette%=TRUEELSEPalette%=FALSE
14720WHEN"CURSOR"
14730IFINSTR(A$,"ON")THENCursor%=TRUEELSECursor%=FALSE
14740WHEN"EXACTSPEED"
14750IFINSTR(A$,"ON")THENexact%=TRUEELSEexact%=FALSE
14760WHEN"SOUND"
14770IFINSTR(A$,"ON")THENsound_on%=TRUEELSEsound_on%=FALSE
14780WHEN"DISABLETAPE"
14790PROCdisableCFS
14800WHEN"SCROLLHACK"
14810scroll_hack%=TRUE
14820WHEN"KEYMAP"
14830K$=RIGHT$(A$,LENA$-INSTR(A$," "))
14840PROCsetkeymap(K$)
14850WHEN"PATCH"
14860IFpatches%<>0THEN
14870patch%=0
14880FORI%=1TOpatches%
14890patch$=RIGHT$(A$,LENpatch$(I%))
14900PROCstrip(patch$)
14910IFFNupper(patch$(I%))=patch$THEN
14920patch%=I%
14930PROCloadpatch
14940ENDIF
14950NEXT
14960ENDIF
14970WHEN"INDEXFILE"
14980T$=RIGHT$(A$,LENA$-10)
14990T%=OPENIN(FNleaf(file$)+"."+T$)
15000IFT%<>0THENCLOSE#T%:indexfile$=FNleaf(file$)+"."+T$:index%=0ELSEERROR1,"Index File "+T$+" not found"
15010WHEN"TAPEFILE"
15020T$=RIGHT$(A$,LENA$-9)
15030T%=OPENIN(FNleaf(file$)+"."+T$)
15040IFT%<>0THENCLOSE#T%:tapefile$=FNleaf(file$)+"."+T$ELSEERROR1,"Tape File "+T$+" not found"
15050WHEN"LOADROM"
15060L$=RIGHT$(A$,LENA$-8)
15070IFINSTR(L$,":")=0THEN
15080PROCloadROM(FNleaf(file$)+"."+L$,1)
15090ELSE
15100PROCloadROM(L$,1)
15110ENDIF
15120WHEN"LOADRAM"
15130L$=RIGHT$(A$,LENA$-8)
15140IFINSTR(L$,":")=0THEN
15150PROCloadROM(FNleaf(file$)+"."+L$,0)
15160ELSE
15170PROCloadROM(L$,1)
15180ENDIF
15190WHEN"KILLROM"
15200L$=RIGHT$(A$,LENA$-8)
15210FORI%=0TO15
15220IFLEFT$(FNupper(FNROMname(I%)),LENL$)=L$THENPROCkillROM(I%)
15230NEXT
15240WHEN"MACHINE"
15250machine$=RIGHT$(A$,LENA$-8)
15260PROCstrip(machine$)
15270CASEmachine$OF
15280WHEN"BBC","BBCB","BBC B"
15290M%=0
15300WHEN"MASTER","MASTER128","MASTER 128"
15310M%=1
15320WHEN"OS3.5","OS 3.5","OS3,5","OS 3.5"
15330M%=2
15340WHEN"COMPACT","MASTER COMPACT"
15350M%=3
15360WHEN"ELECTRON","ELK"
15370M%=4
15380OTHERWISE
15390CLOSE#file%:ERROR1,"Unknown machine '"+machine$+"'"
15400ENDCASE
15410IFM%<>machine%THENmachine%=M%:PROCnewmachine
15420OTHERWISE
15430ok%=FALSE
15440ENDCASE
15450IFok%THEN
15460IFEOF#file%THEN
15470A$=""
15480ELSE
15490A$=FNupper(GET$#file%)
15500ENDIF
15510ENDIF
15520UNTILFNi("PATCH")ANDFNi("PALETTE")ANDFNi("MACHINE")ANDFNi("INDEXFILE")ANDFNi("TAPEFILE")ANDFNi("KEYMAP")ANDFNi("CURSOR")ANDFNi("EXACTSPEED")ANDFNi("DISABLETAPE")ANDFNi("LOADROM")ANDFNi("LOADRAM")ANDFNi("KILLROM")ANDFNi("SOUND")ANDFNi("SCROLLHACK")
15540CLOSE#file%
15550IFA$=""THEN
15560A$=FNleaf(file$)
15570PROCfile_load(A$+"."+RIGHT$(A$,LENA$-LENFNleaf(A$)-2))
15580ELSE
15590IFLEFT$(A$,5)="CHAIN"ORLEFT$(A$,1)="*"ORINSTR(A$," ")>0THEN
15600osrdch$=A$+CHR$13
15610PROCreset(1)
15620osrdch_count%=0
15630OSRDCH_loc_tmp=OSRDCH_loc
15640OSRDCH_loc=3
15650PROCnewpath(FNleaf(file$)+".JUNK")
15660ELSE
15670PROCfile_load(FNleaf(file$)+"."+A$)
15680ENDIF
15690ENDIF
15700WHEN"BBC Snapshot   "
15710IFEXT#file%=&10110THEN
15720SYS"OS_GBPB",4,file%,memory-&100,&10100
15730PTR#file%=&10110-&200
15740SYS"OS_GBPB",4,file%,sheila,&100
15750ELSE
15760SYS"OS_GBPB",4,file%,memory-&100,EXT#file%-&110
15770SYS"OS_GBPB",4,file%,sheila,&100
15780ENDIF
15790CLOSE#file%
15800WHEN"BBC Snapshot101"
15810SYS"OS_GBPB",4,file%,memory-&200,EXT#file%-&10
15820CLOSE#file%
15830OTHERWISE
15840CLOSE#file%
15850PROCloadROM(A$,1)
15860ENDCASE
15870ENDPROC
15890DEFFNi(B$)
15900IFINSTR(A$,B$)=0THEN=TRUEELSE=FALSE
15920DEFPROCfile_load(F$)
15930PROCnewpath(F$)
15950FORI%=1TOLENF$
15960IFMID$(F$,LENF$-I%,1)="."ORMID$(F$,LENF$-I%,1)=":"THENL%=I%:I%=LENF$
15970NEXT
15980A$=RIGHT$(F$,L%)
15990SYS"OS_File",5,F$TO,,load2%,exec2%,length%
16000load%=load2%AND&FFFF
16010exec%=exec2%AND&FFFF
16020osrdch$="*/"+A$+CHR$13
16030IFexec%=&801FORexec%=&8023ORexec%=&802BORexec%=&80E7THENosrdch$="PAGE=&"+STR$~load%+CHR$13+"CHAIN"+CHR$34+A$+CHR$34+CHR$13
16040IF(load2%AND&FFF00)=&FFB00THENosrdch$="CHAIN"+CHR$34+A$+CHR$34+CHR$13
16050IFexec%=&FFFFOR(load2%AND&FFF00)=&FFE00OR(load2%=0AND exec2%=0)THENosrdch$="*EXEC "+A$+CHR$13:IFmachine%=0THENosrdch$="PAGE=&1900:"+osrdch$
16060PROCreset(1)
16070osrdch_count%=0
16080OSRDCH_loc_tmp=OSRDCH_loc
16090OSRDCH_loc=3
16100ENDPROC
16120DEFPROCosrdch
16130osrdch_count%+=1
16140a?3=ASCMID$(osrdch$,osrdch_count%,1)
16150PROCrts
16160IFosrdch_count%=LENosrdch$THENOSRDCH_loc=OSRDCH_loc_tmp:PROCpoke(&FFE0,OSRDCH_loc)
16170ENDPROC
16190DEFFNbinary(B%)
16200LOCALA$,I%
16210FORI%=0TO7
16220IF(B%AND 2^I%)=0THENA$="0"+A$ELSEA$="1"+A$
16230NEXT
16240=A$
16260DEFPROCnewpath(F$)
16270SYS"OS_GSTrans",F$,buffer,255TO,F$
16280fs$=LEFT$(F$,INSTR(F$,":"))
16290F$=RIGHT$(F$,LENF$-LENfs$)
16310IFLEFT$(F$,1)=":"THEN
16320disc$=LEFT$(F$,INSTR(F$,"."))
16330F$=RIGHT$(F$,LENF$-LENdisc$)
16340ELSE
16350disc$=""
16360ENDIF
16380path$=FNleaf(F$)
16390subpath$=""
16400IFMID$(path$,LENpath$-1,1)="."THENsubpath$=RIGHT$(path$,2):path$=LEFT$(path$,LENpath$-2)
16410ENDPROC
16430DEFFNnumeric(A$)
16440IFA$>="0"AND A$<="9"THEN=TRUEELSE=FALSE
16460DEFFNadd_(F$)
16470IFLEFT$(F$,1)=":"ANDFNnumeric(MID$(F$,2,1))ANDMID$(F$,3,1)="."THENF$=RIGHT$(F$,LENF$-3)
16480IFINSTR(F$,":")THEN=F$
16490IFLEFT$(F$,1)=CHR$34ANDRIGHT$(F$,1)=CHR$34THENF$=MID$(F$,2,LENF$-2)
16510IF(F$=""ORINSTR(F$,"|"))AND indexfile$<>""THEN
16520Q=OPENINindexfile$
16530PTR#Q=index%
16540F$=GET$#Q
16550newindex%=PTR#Q
16560IFnewindex%=EXT#QTHENnewindex%=0
16570CLOSE#Q
16580ENDIF
16600IFMID$(F$,2,1)="."THEN
16610IFLEFT$(F$,1)="$"THEN=RIGHT$(F$,LENF$-2)
16620=F$
16630ELSE
16640=F$
16650ENDIF
16660=""
16680DEFFN_path(F$)
16690IFLEFT$(F$,1)=":"ANDFNnumeric(MID$(F$,2,1))ANDMID$(F$,3,1)="."THENF$=RIGHT$(F$,LENF$-3)
16700IFINSTR(F$,":")THEN=""
16710IFMID$(F$,2,1)="."THEN
16720=fs$+disc$+path$+"."
16730ELSE
16740=fs$+disc$+path$+subpath$+"."
16750ENDIF
16760=""
16780DEFFNaddpath(F$)
16790IFLEFT$(F$,1)=":"ANDFNnumeric(MID$(F$,2,1))ANDMID$(F$,3,1)="."THENF$=RIGHT$(F$,LENF$-3)
16800IFINSTR(F$,":")THEN=F$
16810IFLEFT$(F$,1)=CHR$34ANDRIGHT$(F$,1)=CHR$34THENF$=MID$(F$,2,LENF$-2)
16820IFMID$(F$,2,1)="."THEN
16830IFLEFT$(F$,1)="$"THEN=path$+"."+RIGHT$(F$,LENF$-2)
16840=fs$+disc$+path$+"."+F$
16850ELSE
16860=fs$+disc$+path$+subpath$+"."+F$
16870ENDIF
16880=""
16900DEFFNstrip(F$)
16910LOCALI%
16920REPEATI%+=1:UNTILMID$(F$,I%,1)<>"*"ANDMID$(F$,I%,1)<>" "
16930=RIGHT$(F$,LENF$-I%+1)
16950DEFPROCstrip(RETURNs$)
16960WHILELEFT$(s$,1)=" "
16970s$=MID$(s$,2)
16980ENDWHILE
16990WHILERIGHT$(s$,1)=" "
17000s$=LEFT$(s$,LENs$-1)
17010ENDWHILE
17020ENDPROC
17040DEFPROCdir(D$)
17050FS$=fs$:DISC$=disc$:PATH$=path$:SUBPATH$=subpath$
17070LOCALI%
17080REPEATI%+=1:UNTILMID$(D$,I%,1)<>" "
17090D$=RIGHT$(D$,LEND$-I%+1)
17100IFINSTR(D$," ")THEN
17110D$=LEFT$(D$,INSTR(D$," ")-1)
17120ELSE
17130IFLEND$=4ANDLEFT$(FNupper(D$),3)="DIR"THEND$=RIGHT$(D$,1)
17140ENDIF
17160IFD$="^"THEN
17170IFsubpath$<>""THENsubpath$="":PROCrts:ENDPROC
17180IFINSTR(path$,".")=0THENpath$="$":PROCrts:ENDPROC
17190I%=LENpath$
17200REPEATI%-=1:UNTILMID$(path$,I%,1)="."
17210path$=LEFT$(path$,I%-1)
17220PROCrts:ENDPROC
17230ENDIF
17250IFD$="$"ORLEND$=0THENsubpath$="":PROCrts:ENDPROC
17260IFLEND$=1THEN
17270SYS"XOS_File",13,D$,,,fs$+disc$+path$+"."TOA%;F
17280IF(FAND 1)<>0THENPROCswi_error:ENDPROC
17290IF(A%AND 2)=0ANDLEND$=1THENsubpath$="":PROCrts:ENDPROC
17300IF(A%AND 2)=0THENPROCbrk(214,"Directory '"+D$+"' not found")ELSEsubpath$="."+D$:PROCrts
17310ENDPROC
17320ENDIF
17340IFINSTR(D$,":")>1THEN
17350IFRIGHT$(D$,1)<>":"THENSYS"XOS_File",17,D$TOA%;F:IF(FAND 1)<>0THENPROCswi_error:ENDPROC
17360SYS"OS_FSControl",11,D$TO,E$,E%
17370IFE%<>-1THENSYS"OS_FSControl",19:fs$=LEFT$(D$,LEND$-LENE$):D$=E$ELSEPROCbrk(248,"No such filing system"):ENDPROC
17380path$=""
17390subpath$=""
17400disc$=""
17410IFLEFT$(D$,1)<>":"THENpath$="$"
17420ENDIF
17440IFLEFT$(D$,1)=":"THEN
17450I%=0:disc$=""
17460REPEATI%+=1
17470disc$=disc$+MID$(D$,I%,1)
17480UNTILMID$(D$,I%+1,1)="."ORI%=LEND$
17490IFI%=LEND$THEND$=""ELSED$=RIGHT$(D$,LEND$-LENdisc$-1)
17500path$="":subpath$=""
17510ENDIF
17530IFLEFT$(D$,1)="$"ANDLEND$>2THENpath$="$":subpath$="":D$=RIGHT$(D$,LEND$-2)
17550IFdisc$<>""ANDRIGHT$(disc$,1)<>"."AND path$<>""THENdisc$=disc$+"."
17560SYS"XOS_File",13,D$,,,fs$+disc$+path$+subpath$+"."TOA%;F
17570IFdisc$<>""ANDRIGHT$(disc$,1)<>"."THENdisc$=disc$+"."
17580IF(FAND 1)<>0THENPROCrestoreCSD:PROCswi_error:ENDPROC
17590IF(A%AND 2)=0THEN
17600PROCrestoreCSD
17610PROCbrk(214,"Directory '"+D$+"' not found")
17620ELSE
17630IFD$<>""THEN
17640IFpath$<>""THENpath$=path$+subpath$+"."+D$:subpath$=""ELSEpath$=D$
17650ENDIF
17660PROCrts
17670ENDIF
17680IFpath$=""THENpath$="$"
17690ENDPROC
17710DEFPROCback
17720SWAPfs$,FS$
17730SWAPdisc$,DISC$
17740SWAPpath$,PATH$
17750SWAPsubpath$,SUBPATH$
17760ENDPROC
17780DEFPROCrestoreCSD
17790fs$=FS$:disc$=DISC$:path$=PATH$:subpath$=SUBPATH$
17800ENDPROC
17820DEFPROCosfsc
17840CASEa?3OF
17850WHEN1
17860SYS"XOS_Args",5,x?3TOA%,,x?3;F
17870IF(FAND 1)=0THENPROCrtsELSEPROCswi_error
17880IFx?3<>0THENx?3=&FF
17890WHEN3:addr=x?3+((y?3)<<8)+memory
17900b$=FNstrip($addr)
17910SYS"XOS_Find",&4D,FNadd_(b$),FN_path(b$)TOQ;F
17920A%=Q
17940IFQ=0OR(FAND 1)<>0THEN
17950IFLEFT$(FNupper(b$),4)="DIR "OR(LEFT$(FNupper(b$),3)="DIR"ANDLENb$=4)THEN
17960PROCdir(RIGHT$(b$,LENb$-4))
17970ELSE
17980IFOscli%THEN
17990SYS"XOS_CLI",b$TOA%;F
18000IF(FAND 1)=0THENPROCrtsELSEPROCswi_error
18010ELSE
18020PROCbrk(254,"Bad Command")
18030ENDIF
18040ENDIF
18050ELSE
18060CLOSE#Q
18070b$=FNaddpath(b$)
18080SYS"OS_File",5,b$TO,,c%,d%:c%=(c%AND&FFFF)+memory
18090SYS"OS_File",255,b$,c%,0
18100!pc_store=d%<<16
18110ENDIF
18120WHEN2,4:addr=x?3+((y?3)<<8)+memory
18130b$=$addr
18150SYS"XOS_File",13,FNadd_(b$),,,FN_path(b$)TOA%,,c%,d%,length%;f%:c%=(c%AND&FFFF)+memory
18160IFc%+length%>memory+&8000AND c%<memory+&8000THENlength%=memory+&8000-c%
18170SYS"XOS_Find",&4D,FNadd_(b$),FN_path(b$)TOA%;f%
18180IF(f%AND 1)=0THENSYS"XOS_GBPB",4,A%,c%,length%:SYS"XOS_Find",0,A%
18200IF(f%AND 1)=0THEN!pc_store=d%<<16ELSEPROCswi_error
18210WHEN5:PROCrts
18220WHEN0,6,8:PROCrts
18230WHEN9,10,11:PROCrts
18240OTHERWISEPRINT"OSFSC ";a?3:Q=GET
18250ENDCASE
18260ENDPROC
18280DEFPROCosfind
18290addr=memory+x?3+(y?3)*256
18300IFa?3=0THEN
18310SYS"XOS_Find",0,y?3TOA%;F
18320ELSE
18330SYS"XOS_Find",(a?3)OR1,FNadd_($addr),FN_path($addr)TOA%;F
18340ENDIF
18350IF(FAND 1)=0THENa?3=A%:PROCrtsELSEPROCswi_error
18360ENDPROC
18380DEFPROCosbget
18390SYS"XOS_BGet",a?3,y?3TOA%;F%
18400IF(FAND 1)=0THEN
18410a?3=A%
18420?f=?fAND%11111110
18430IF(F%AND 2)<>0THEN?f+=1
18440PROCrts
18450ELSE
18460PROCswi_error
18470ENDIF
18480ENDPROC
18500DEFPROCosbput
18510SYS"XOS_BPut",a?3,y?3TOA%;F
18520IF(FAND 1)=0THENPROCrtsELSEPROCswi_error
18530ENDPROC
18550DEFPROCsprite_save(F$)
18560IFINSTR(F$,".")=0ANDINSTR(F$,":")=0ANDLEFT$(F$,6)<>"<Wimp$"THENSYS"Wimp_ReportError","    To save, drag the file icon to a directory viewer":ENDPROC
18570SYS"OS_SpriteOp",256+12,sprite,F$
18580ENDPROC
18600DEFFNkeymap(A$)
18610LOCALI%
18620FORI%=1TOkeymaps%
18630IFFNupper(keymap$(I%))=FNupper(A$)THEN=I%
18640NEXT
18650=0
18670DEFPROCsetkeymap(A$)
18680LOCALI%
18690KeyMap$="Default"
18700IFFNupper(A$)="DEFAULT"THEN
18710IFMODE>255THENA$="RiscPC"ELSEA$="Archimedes"
18720ENDIF
18730OSCLI"Set 6502Em$Keymap "+A$
18740FORI%=1TOkeymaps%
18750IFFNupper(keymap$(I%))=FNupper(A$)THENKeyMap$=A$:keymap%=I%:I%=1000:PROCreadkeys("<6502Em$Dir>.Keymaps."+A$)
18760NEXT
18770ENDPROC
18790DEFPROCreadkeymaps
18800LOCALoffset%,N%
18810keymap%=0
18820keymaps%=0
18830REPEAT
18840SYS"OS_GBPB",9,"<6502Em$Dir>.Keymaps",q%,100,offset%,&100,0TO,,,N%,offset%
18850keymaps%+=N%
18860UNTILoffset%=-1
18870IFkeymaps%=0THENkeysmenu%=-1:ENDPROC
18880DIMkeymap$(keymaps%),keysmenu%32+24*keymaps%
18890offset%=0
18900FORN%=1TOkeymaps%
18910SYS"OS_GBPB",9,"<6502Em$Dir>.Keymaps",q%,1,offset%,&100,0TO,,,,offset%
18920keymap$(N%)=FNstring(q%)
18930NEXT
18940ENDPROC
18960DEFPROCreadpatches
18970LOCALoffset%,N%
18980patch%=0
18990patches%=0
19000REPEAT
19010SYS"OS_GBPB",9,"<6502Em$Dir>.Patches",q%,100,offset%,&100,0TO,,,N%,offset%
19020patches%+=N%
19030UNTILoffset%=-1
19040IFpatches%=0THENpatchmenu%=-1:ENDPROC
19050DIMpatch$(patches%),patchmenu%32+24*patches%
19060offset%=0
19070FORN%=1TOpatches%
19080SYS"OS_GBPB",9,"<6502Em$Dir>.Patches",q%,1,offset%,&100,0TO,,,,offset%
19090patch$(N%)=FNstring(q%)
19100NEXT
19110ENDPROC
19130DEFFNstring(A%)
19140LOCALA$,I%
19150REPEAT
19160A$=A$+CHR$(A%?I%)
19170I%+=1
19180UNTILA%?I%=0
19190=A$
19210DEFPROCloadpatch
19220OSCLI"Load <6502Em$Dir>.Patches."+patch$(patch%)+" "+STR$~(code+!patch_addr)
19230?patch_on=?patch_onOR1
19240ENDPROC
19260DEFFNosword14_1(A%)
19270?buffer=1
19280SYS"OS_Word",14,buffer
19290=buffer?A%
19310DEFPROCreadCMOS
19320CASEx?3AND 63OF
19330WHEN0:y?3=FNosword14_1(6)
19340WHEN1:y?3=1
19350WHEN2:y?3=FNosword14_1(5)
19360WHEN3:y?3=1
19370WHEN4:y?3=FNosword14_1(4)
19380WHEN5:y?3=1
19390WHEN6:y?3=FNosword14_1(3)
19400WHEN7:y?3=FNosword14_1(2)
19410WHEN8:y?3=FNosword14_1(1)
19420WHEN9:y?3=FNosword14_1(0)
19430WHEN10:y?3=%00100000
19440WHEN11:y?3=%00000010
19450WHEN12:y?3=0
19460WHEN13:y?3=0
19470OTHERWISE:y?3=cmos%(x?3AND 63)
19490ENDCASE
19510a?3=y?3
19540PROCrts
19550ENDPROC
19570DEFPROCreadEEPROM
19580y?3=eeprom%(x?3)
19590a?3=y?3
19600PROCrts
19610ENDPROC
19630DEFPROCwriteCMOS
19640cmos%(x?3AND 63)=y?3
19650PROCrts
19660IF(x?3AND 63)>13THEN
19670Q=OPENUP"<6502Em$Res>.CMOS"
19680PTR#Q=x?3AND 63
19690BPUT#Q,y?3
19700CLOSE#Q
19710ENDIF
19720ENDPROC
19740DEFPROCwriteEEPROM
19750eeprom%(x?3)=y?3
19760PROCrts
19770Q=OPENUP"<6502Em$Res>.EEPROM"
19780PTR#Q=x?3
19790BPUT#Q,y?3
19800CLOSE#Q
19810ENDPROC
19830DEFPROCloadCMOS
19840LOCALQ,I%
19850Q=OPENIN"<6502Em$Res>.CMOS"
19860FORI%=0TO63
19870cmos%(I%)=BGET#Q
19880NEXT
19890CLOSE#Q
19900ENDPROC
19920DEFPROCloadEEPROM
19930LOCALQ,I%
19940Q=OPENIN"<6502Em$Res>.EEPROM"
19950FORI%=0TO255
19960eeprom%(I%)=BGET#Q
19970NEXT
19980CLOSE#Q
19990ENDPROC
20010DEFPROCloadcode(C$)
20020OSCLI"LOAD <6502Em$Dir>."+C$+" "+STR$~code
20030CALLcode+!init_addr
20040PROCsound_reinit
20050IFpatch%<>0THENPROCloadpatch
20060ENDPROC
20080DEFPROCmaster
20090PROCloadcode("CodeM")
20100OSCLI"LOAD <6502Em$Dir>.ROMS.M128.OS3,2 "+STR$~(memory+&C000)
20110OSCLI"LOAD <6502Em$Dir>.ROMS.M128.OS3,2 "+STR$~(roms+romsize%*16)
20120OSCLI"LOAD <6502Em$Res>.SHEILA "+STR$~sheila
20130socket%=15
20140PROCloadROM("M128.Terminal",1)
20150?(roms+romsize%*15+&18B7)=3
20160?(roms+romsize%*15+&18B8)=&80
20170?(roms+romsize%*15+&18E4)=3
20180?(roms+romsize%*15+&18E5)=&81
20190PROCloadROM("M128.View",1)
20200PROCloadROM("VDFS",1)
20220PROCloadROM("M128.BASICIV84",1)
20230PROCloadROM("M128.Edit1,00",1)
20240PROCloadROM("M128.ViewSheet",1)
20250PROCloadROM("M128.DFS2,24",1)
20290PROCSRRAM
20300PROCSRRAM
20310PROCSRRAM
20320PROCSRRAM
20330PROCSRRAM
20340ENDPROC
20360DEFPROCmaster35
20370PROCloadcode("CodeM")
20380OSCLI"LOAD <6502Em$Dir>.ROMS.M128.OS3,5 "+STR$~(memory+&C000)
20390OSCLI"LOAD <6502Em$Dir>.ROMS.M128.OS3,5 "+STR$~(roms+romsize%*16)
20400OSCLI"LOAD <6502Em$Res>.SHEILA "+STR$~sheila
20410socket%=15
20420PROCloadROM("M128.Terminal35",1)
20430?(roms+romsize%*15+&16A3)=3
20440?(roms+romsize%*15+&16A4)=&80
20450?(roms+romsize%*15+&16D0)=3
20460?(roms+romsize%*15+&16D1)=&81
20470PROCloadROM("M128.ViewB3,3",1)
20480PROCloadROM("VDFS",1)
20500PROCloadROM("M128.BASIC4r32",1)
20510PROCloadROM("M128.Edit1,50r",1)
20520PROCloadROM("M128.ViewSh1,01",1)
20530PROCloadROM("M128.DFS2,45",1)
20570PROCSRRAM
20580PROCSRRAM
20590PROCSRRAM
20600PROCSRRAM
20610PROCSRRAM
20620ENDPROC
20640DEFPROCcompact
20650PROCloadcode("CodeM")
20660OSCLI"LOAD <6502Em$Dir>.ROMS.Compact.OS5,1 "+STR$~(memory+&C000)
20670OSCLI"LOAD <6502Em$Dir>.ROMS.Compact.OS5,1 "+STR$~(roms+&4000*16)
20680OSCLI"LOAD <6502Em$Res>.SHEILA "+STR$~sheila
20690socket%=15
20700PROCloadROM("Compact.Utils",1)
20710?(roms+romsize%*15+&9E3A-&8000)=3
20720?(roms+romsize%*15+&9E3B-&8000)=&82
20730?(roms+romsize%*15+&9F3A-&8000)=3
20740?(roms+romsize%*15+&9F3B-&8000)=&83
20750PROCloadROM("Compact.BASICIV86",1)
20770PROCloadROM("VDFS",1)
20780socket%=7
20790PROCSRRAM
20800PROCSRRAM
20810PROCSRRAM
20820PROCSRRAM
20830ENDPROC
20850DEFPROCelectron
20860PROCloadcode("CodeE")
20870OSCLI"LOAD <6502Em$Dir>.ROMS.ELECTRON "+STR$~(memory+&C000)
20960socket%=15
20970PROCloadROM("BASICII",1)
20980PROCloadROM("VDFS",1)
20990ENDPROC
21010DEFPROCBBCB
21020PROCloadcode("Code")
21030?ACCCON=0
21040IFuseMEMC%THEN
21050FORI%=0TO15
21060OSCLI"LOAD <6502Em$Dir>.ROMS.OS1,2 "+STR$~(roms+&4000+&8000*I%)
21070NEXT
21080ELSE
21090OSCLI"LOAD <6502Em$Dir>.ROMS.OS1,2 "+STR$~(memory+&C000)
21110OSCLI"LOAD <6502Em$Res>.SHEILA "+STR$~sheila
21120ENDIF
21210socket%=15
21220PROCloadROM("BASICII",1)
21230PROCloadROM("VDFS",1)
21240PROCSRRAM
21250ENDPROC
21270DEFPROCnewmachine
21280IFNOTuseMEMC%THENPROCclearmem(roms,roms+16*romsize%)
21290PROCinitROMs
21310IFmachine%>4THENmachine%=0
21340CASEmachine%OF
21360WHEN1
21370IFMachine%(1)=0THENmachine%+=1:PROCnewmachine:ENDPROC
21380PROCmaster
21400WHEN2
21410IFMachine%(2)=0THENmachine%+=1:PROCnewmachine:ENDPROC
21420PROCmaster35
21440WHEN3
21450IFMachine%(3)=0THENmachine%+=1:PROCnewmachine:ENDPROC
21460PROCcompact
21480WHEN4
21490PROCelectron
21510OTHERWISE:PROCBBCB
21520ENDCASE
21530PROCreset(1)
21540OSRDCH_loc=FNpeek(&FFE0)
21560PROCreinstall(MachineSprite$(machine%))
21590ENDPROC
21610DEFPROCdefault_options
21620tapefile$="<6502Em$Dir>.^.Tape-In"
21630Palette%=TRUE
21640OSRDCH%=TRUE
21650ROMSEL%=TRUE
21660Cursor%=FALSE
21670Oscli%=FALSE
21680exact%=TRUE
21690machine%=default_machine%
21700sound_on%=TRUE
21710scroll_hack%=FALSE
21720file_xxx=FALSE
21730volume%=127
21740PROCsetkeymap("Default")
21750ENDPROC
21770DEFPROCsave_options
21780Q=OPENOUT"<6502Em$Res>.Options"
21790PRINT#Q,Palette%
21800PRINT#Q,OSRDCH%
21810PRINT#Q,ROMSEL%
21820PRINT#Q,Cursor%
21830PRINT#Q,Oscli%
21840PRINT#Q,exact%
21850PRINT#Q,machine%
21860PRINT#Q,sound_on%
21870PRINT#Q,file_xxx
21880PRINT#Q,volume%
21890PRINT#Q,KeyMap$
21900CLOSE#Q
21910ENDPROC
21930DEFPROCload_options
21940tapefile$="<6502Em$Dir>.^.Tape-In"
21950Q=OPENIN"<6502Em$Res>.Options"
21960IFQ=0THENPROCdefault_options:ENDPROC
21970INPUT#Q,Palette%
21980INPUT#Q,OSRDCH%
21990INPUT#Q,ROMSEL%
22000INPUT#Q,Cursor%
22010INPUT#Q,Oscli%
22020INPUT#Q,exact%
22030INPUT#Q,machine%
22040INPUT#Q,sound_on%
22050scroll_hack%=FALSE
22060INPUT#Q,file_xxx
22070INPUT#Q,volume%
22080INPUT#Q,K$:PROCsetkeymap("Default"):PROCsetkeymap(K$)
22090CLOSE#Q
22100ENDPROC
22120DEFPROCclearmem(S%,E%)
22130P%=buffer
22140[OPT2
22150EQUD S%;memory
22160EQUD E%;memory+&8000
22170.clear
22180MOV R0,#0
22190LDR R1,buffer
22200LDR R2,buffer+4
22210.loop
22220STR R0,[R1],#4
22230CMP R1,R2
22240BNE loop
22250MOV PC,R14
22260]
22270CALLclear
22280ENDPROC
22300DEFPROCosbyte2
22310PROCrts
22320ENDPROC
22340DEFPROCosword2
22350LOCALaddr,sec%,len%,buff%,track%,log_sec_size,drive%
22360addr=memory?&F0
22370addr+=memory?&F1<<8
22380addr+=memory
22390CASEmemory?&EFOF
22400WHEN&7F
22410IFdfssupportTHEN
22420SYS"XImageDFS_OSWORD7F",,memory?&F0,memory?&F1,memory
22430a?3=0
22440ELSE
22450drive%=addr?0
22460buff%=memory+(addr!1AND&FFFF)
22470track%=addr?7
22480sec%=addr?8
22490len%=(addr?9)AND%11111
22500log_sec_size=((addr?9)>>5)+7
22510buffer?0=log_sec_size
22520buffer?1=10
22530buffer?2=1
22540buffer?3=1
22550buffer!4=0
22560buffer!8=0
22570buffer!12=1<<29
22580buffer!16=&64000
22590buffer!20=0
22600buffer!24=0
22610buffer!28=0
22620SYS"XADFS_DiscOp",,1+(buffer<<6),(track%*10+sec%)*2^log_sec_size+(osword7F_drive%<<29),buff%,len%*2^log_sec_sizeTOA%;F
22630IF(FAND 1)=0THENaddr?10=0ELSEaddr?10=A%
22650a?3=0
22670ENDIF
22690WHEN&72
22710IFaddr?5=8THEN
22720sec%=addr?8
22730sec%+=addr?7<<8
22740sec%+=(addr?6AND%11111)<<16
22750len%=addr?9
22760buff%=memory+(addr!1AND&FFFF)
22780SYS"XADFS_DiscOp",,1,sec%*256+(osword72_drive%<<29),buff%,len%*256TOA%;F
22790IF(FAND 1)=0THEN?addr=0ELSE?addr=A%
22830a?3=0
22840ENDIF
22850OTHERWISE
22860ENDCASE
22880PROCrts
22910ENDPROC
22930DEFPROCsplit(RETURNA$,RETURNB$)
22940LOCALI%
22950WHILELEFT$(A$,1)=" "
22960A$=RIGHT$(A$,LENA$-1)
22970ENDWHILE
22980FORI%=2TOLENA$
22990IFMID$(A$,I%,1)="+"THENA$=LEFT$(A$,I%-1)+" "+RIGHT$(A$,1+LENA$-I%):I%=255
23000NEXT
23010I%=INSTR(A$," ")
23030B$=LEFT$(A$,I%-1)
23040A$=RIGHT$(A$,LENA$-I%)
23050ENDPROC
23070DEFPROCsplit2(RETURNA$,RETURNB$)
23080LOCALI%
23090WHILELEFT$(A$,1)=" "
23100A$=RIGHT$(A$,LENA$-1)
23110ENDWHILE
23120I%=INSTR(A$," ")
23130B$=LEFT$(A$,I%-1)
23140A$=RIGHT$(A$,LENA$-I%)
23150ENDPROC
23170DEFPROCsrwrite
23190LOCALA$,C$,addr,I%,J%
23200addr=memory?&F2
23210addr+=(memory?&F3)<<8
23220addr+=memory
23230addr+=y?3
23240C$=$addr
23260PROCsplit(C$,A$)
23280IFLENA$>4THENPROCbrk(0,"Bad Address"):ENDPROC
23290FORI%=1TOLENA$
23300J%=ASCMID$(A$,I%,1)
23310IF(J%<48ORJ%>57)AND(J%<65ORJ%>70)THENPROCbrk(0,"Bad Address"):ENDPROC
23320NEXT
23340start%=EVAL("&"+A$)
23360IFstart%>&8000THENPROCbrk(0,"Bad Address"):ENDPROC
23380PROCsplit(C$,A$)
23400IFLEFT$(A$,1)="+"THENend%=start%:A$=RIGHT$(A$,LENA$-1)ELSEend%=0
23420IFLENA$>4THENPROCbrk(0,"Bad Address"):ENDPROC
23430FORI%=1TOLENA$
23440J%=ASCMID$(A$,I%,1)
23450IF(J%<48ORJ%>57)AND(J%<65ORJ%>70)THENPROCbrk(0,"Bad Address"):ENDPROC
23460NEXT
23480end%+=EVAL("&"+A$)
23500IFend%<start%ORend%>&8000THENPROCbrk(0,"Bad Address"):ENDPROC
23520PROCsplit(C$,A$)
23540IFLENA$<>4THENPROCbrk(0,"Bad Address"):ENDPROC
23550FORI%=1TOLENA$
23560J%=ASCMID$(A$,I%,1)
23570IF(J%<48ORJ%>57)AND(J%<65ORJ%>70)THENPROCbrk(0,"Bad Address"):ENDPROC
23580NEXT
23600dest%=EVAL("&"+A$)
23620IFdest%<&8000ORdest%>&BFFFTHENPROCbrk(0,"Bad Address"):ENDPROC
23640PROCsplit(C$,A$)
23650CASELENA$OF
23660WHEN1
23670A%=ASCA$
23680IFA%>=ASC"W"AND A%<=ASC"Z"THENA%=A%-ASC"W"+ASC"4"
23690IFA%>64AND A%<71THENA%-=7
23700socket%=A%-48
23710IFsocket%>15ORsocket%<0THENPROCbrk(0,"Bad Socket"):ENDPROC
23720WHEN2
23730IFLEFT$(A$,1)<"0"ORLEFT$(A$,1)>"9"ORRIGHT$(A$,1)<"0"ORRIGHT$(A$,1)>"9"THENPROCbrk(0,"Bad Socket"):ENDPROC
23740socket%=VALA$
23750IFsocket%>15ORsocket%<0THENPROCbrk(0,"Bad Socket"):ENDPROC
23760OTHERWISE
23770PROCbrk(0,"Bad Socket"):ENDPROC
23780ENDCASE
23820FORI%=0TOFNmin(end%-start%,&BFFF-dest%)STEP4
23830!(roms+romsize%*socket%+I%+dest%-&8000)=start%!(memory+I%)
23840NEXT
23860ROMRAM?socket%=0
23880a?3=0
23890PROCrts
23910ENDPROC
23930DEFPROCdrive
23940LOCALA$,C$,addr,drive%
23950addr=memory?&F2
23960addr+=(memory?&F3)<<8
23970addr+=memory
23980addr+=y?3
23990C$=$addr
24010PROCsplit(C$,file$)
24030PROCsplit(C$,A$)
24050CASEA$OF
24060WHEN"0","1"
24070IFdfssupportTHEN
24080SYS"XImageDFS_BBCToRiscOSDrive",VALA$TOdrive%
24100fs$="ADFS:"
24110disc$=":"+STR$drive%+"."
24120path$="$"
24130subpath$=""
24140ENDIF
24150WHEN"2","3"
24160IFdfssupportTHEN
24170SYS"XImageDFS_BBCToRiscOSDrive",VALA$TOdrive%
24180fs$="ADFS:"
24190disc$=":"+STR$drive%+"."
24200path$="$.DFSSide2"
24210subpath$=""
24220ENDIF
24230WHEN"R","r"
24240PROCreadCSD
24250OTHERWISE
24260PROCbrk(0,"Bad Drive"):ENDPROC
24270ENDCASE
24290a?3=0
24300PROCrts
24310ENDPROC
24330DEFPROCsrload
24340LOCALA$,C$,addr,I%,J%
24350addr=memory?&F2
24360addr+=(memory?&F3)<<8
24370addr+=memory
24380addr+=y?3
24390C$=$addr
24410PROCsplit2(C$,file$)
24430PROCsplit(C$,A$)
24440IFLENA$<>4THENPROCbrk(0,"Bad Address"):ENDPROC
24450FORI%=1TOLENA$
24460J%=ASCMID$(A$,I%,1)
24470IF(J%<48ORJ%>57)AND(J%<65ORJ%>70)THENPROCbrk(0,"Bad Address"):ENDPROC
24480NEXT
24500load%=EVAL("&"+A$)
24510IFload%<&8000ORload%>&BFFFTHENPROCbrk(0,"Bad Address"):ENDPROC
24520PROCsplit(C$,A$)
24530IFRIGHT$(A$,1)="Q"THENA$=LEFT$(A$,LENA$-1)
24540CASELENA$OF
24550WHEN1
24560A%=ASCA$
24570IFA%>=ASC"W"AND A%<=ASC"Z"THENA%=A%-ASC"W"+ASC"4"
24580IFA%>64AND A%<71THENA%-=7
24590socket%=A%-48
24600IFsocket%>15ORsocket%<0THENPROCbrk(0,"Bad Socket"):ENDPROC
24610WHEN2
24620IFLEFT$(A$,1)<"0"ORLEFT$(A$,1)>"9"ORRIGHT$(A$,1)<"0"ORRIGHT$(A$,1)>"9"THENPROCbrk(0,"Bad Socket"):ENDPROC
24630socket%=VALA$
24640IFsocket%>15ORsocket%<0THENPROCbrk(0,"Bad Socket"):ENDPROC
24650OTHERWISE
24660PROCbrk(0,"Bad Socket"):ENDPROC
24670ENDCASE
24690SYS"XOS_Find",&40+%1101,FNadd_(file$),FN_path(file$)TOA%;F
24700IF(FAND 1)<>0THENPROCswi_error:ENDPROC
24710H%=A%
24720SYS"XOS_GBPB",4,A%,load%-&8000+roms+romsize%*socket%,&C000-load%TOA%;F
24730IF(FAND 1)<>0THENPROCswi_error:ENDPROC
24740?(ROMRAM+socket%)=0
24750SYS"XOS_Find",0,H%TOA%;F
24760IF(FAND 1)<>0THENPROCswi_error:ENDPROC
24780a?3=0
24790PROCrts
24800ENDPROC
24820DEFPROCelkkeys(F$)
24840LOCALQ,S$,K%,A$
24860SYS"6502_GetElectronMap"TOkeymap
24880FORI%=0TO1023STEP4
24890keymap!I%=&FF
24900NEXT
24920Q=OPENINF$
24930IFQ=0THENERROR0,F$+" not found"
24940REPEAT
24950S$=FNgetword
24960IFLEFT$(S$,1)="#"THEN
24970PROCignoreline
24980ELSE
24990IFS$<>""THEN
25000S%=FNgetelk(S$)
25010REPEAT
25020A$=FNgetword
25030IFA$<>""THEN
25040K%=FNgetarc(A$)
25050keymap!(K%*4)=S%
25060ENDIF
25070UNTILA$=""
25080ENDIF
25090ENDIF
25100UNTILS$=""OREOF#Q
25120CLOSE#Q
25140ENDPROC
25160DEFPROCreadkeys(F$)
25180LOCALQ,S$,K%,A$
25200SYS"6502_ReadKeyMapAddress"TOkeymap
25210FORI%=0TO255
25220keymap?I%=255
25230NEXT
25250Q=OPENINF$
25260IFQ=0THENERROR0,F$+" not found"
25270REPEAT
25280S$=FNgetword
25290IFLEFT$(S$,1)="#"THEN
25300PROCignoreline
25310ELSE
25320IFS$<>""THEN
25330S%=FNgetbbc(S$)
25340REPEAT
25350A$=FNgetword
25360IFA$<>""THEN
25370K%=FNgetarc(A$)
25380keymap?K%=S%
25390ENDIF
25400UNTILA$=""
25410ENDIF
25420ENDIF
25430UNTILS$=""OREOF#Q
25450CLOSE#Q
25470ENDPROC
25490DEFFNgetword
25500LOCALI%,A$
25510REPEATI%=BGET#Q:UNTILI%>32ORI%=10
25520IFI%=10THEN=""
25530A$=CHR$I%
25540REPEATI%=BGET#Q:A$=A$+CHR$I%:UNTILI%<33
25550PTR#Q=PTR#Q-1
25560=LEFT$(A$,LENA$-1)
25580DEFPROCignoreline
25590LOCALI%
25600REPEATI%=BGET#Q:UNTILI%=&A
25610ENDPROC
25630DEFFNgetelk(A$)
25640LOCALI%,J%,K%
25650FORI%=0TO3
25660FORJ%=0TO13
25670IFElec$(I%,J%)=A$THENK%=(I%<<8)+J%:I%=4:J%=14
25680NEXT
25690NEXT
25700=K%
25720DEFFNgetbbc(A$)
25730LOCALI%,J%
25740FORI%=0TO&7C
25750IFBBC$(I%)=A$THENJ%=I%:I%=&80
25760NEXT
25770=J%
25790DEFFNgetarc(A$)
25800LOCALI%,J%
25810FORI%=&0TO&78
25820IFARC$(I%)=A$THENJ%=I%:I%=&68
25830NEXT
25840=J%
25870DATA Escape,1,2,3,4,5,6,7,8,9,0,-,Left,Right
25880DATA CapsLock,Q,W,E,R,T,Y,U,I,O,P,Up,Down,Copy
25890DATA Ctrl,A,S,D,F,G,H,J,K,L,;,:,Return,""
25900DATA Shift,Z,X,C,V,B,N,M,",",.,/,"",Delete,Space
25930DATA Shift,Ctrl,bit7,bit6,bit5,bit4,bit3,bit2,bit1,bit0,"","",""
25940DATA Q,3,4,5,f4,8,f7,-,^,Left,K6,K7,""
25950DATA f0,W,E,T,7,I,9,0,_,Down,K8,K9,""
25960DATA 1,2,D,R,6,U,O,P,[,Up,K+,K-,KReturn
25970DATA CapsLock,A,X,F,Y,J,K,@,:,Return,K/,KDelete,"K."
25980DATA ShiftLock,S,C,G,H,N,L,;,],Delete,K#,K*,"K,"
25990DATA Tab,Z,Space,V,B,M,",",".",/,Copy,K0,K1,K3
26000DATA Escape,f1,f2,f3,f5,f6,f8,f9,\,Right,K4,K5,K2
26030DATA Escape,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,"",Print,"",""
26040DATA `,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+
26050DATA LShift,,Z,X,C,V,B,N,M,",",.,/,RShift,Up,K1,K2,K3,CapsLock,LAlt,Space,RAlt,RCtrl,Left,Down,Right,K0,K.,Enter
26060DATA "","","","","","","","","","","","","","","",""
26070DATA # : REM Risc PC key #~
26090DEFPROCreadmemmap
26100IFNOTuseMEMC%THENromsize%=&4000:ENDPROC
26110romsize%=&8000
26120DIMMEMC(15),buff 256
26130SYS"OS_ReadMemMapInfo"TOS%,N%
26140IFS%<>32*1024THENERROR
26150FORI%=0TO15
26160FORJ%=0TON%-1
26170!buff=J%
26180buff!4=0
26190buff!8=0
26200buff!12=-1
26210SYS"OS_ReadMemMapEntries",buff
26220IFbuff!4=roms+32*1024*I%THENMEMC(I%)=J%:?(memory-&8000+I%)=J%:J%=N%
26230NEXT
26240NEXT
26250ENDPROC
26270DEFPROCsetupmemmap
26280IFNOTuseMEMC%THENENDPROC
26290LOCALI%
26300FORI%=0TO15
26310!buff=MEMC(I%)
26320buff!4=roms+&8000*I%
26330buff!8=0
26340buff!12=-1
26350SYS"OS_SetMemMapEntries",buff
26360NEXT
26370!buff=MEMC(?romAND 15)
26380buff!4=memory+&8000
26390buff!8=0
26400buff!12=-1
26410SYS"OS_SetMemMapEntries",buff
26420!buff=MEMC(0)
26430buff!4=roms+&8000*(?romAND 15)
26440buff!8=0
26450buff!12=-1
26460SYS"OS_SetMemMapEntries",buff
26470ENDPROC
26490DEFPROCresetmemmap
26500IFNOTuseMEMC%THENENDPROC
26510LOCALI%
26520FORI%=0TO15
26530!buff=MEMC(I%)
26540buff!4=roms+&8000*I%
26550buff!8=0
26560buff!12=-1
26570SYS"OS_SetMemMapEntries",buff
26580NEXT
26590ENDPROC
26610DEFFNpeek(A%)
26620IFNOTuseMEMC%THEN=memory?A%:ENDPROC
26630IFA%<&8000THEN
26640=memory?A%
26650ELSE
26660=?(roms-&8000+A%)
26670ENDIF
26690DEFPROCpoke(A%,V%)
26700IFNOTuseMEMC%THENmemory?A%=V%:ENDPROC
26710FORI%=0TO15
26720memory?(A%+&8000*I%)=V%
26730NEXT
26740ENDPROC
26760DEFPROCdisableCFS
26770IFmachine%>0AND machine%<4THENENDPROC
26780vectors%=memory?&FFB7+(memory?&FFB8<<8)
26800vectors%+=memory
26810addr%=vectors%?&1E+(vectors%?&1F<<8)
26820memory2=roms+romsize%*16-&C000
26840memory?addr%=3
26850memory2?addr%=3
26860memory?&FFCE=3
26870memory2?&FFCE=3
26880memory?&FFD1=3
26890memory2?&FFD1=3
26900memory?&FFD4=3
26910memory2?&FFD4=3
26920memory?&FFD7=3
26930memory2?&FFD7=3
26940memory?&FFDA=3
26950memory2?&FFDA=3
26960memory?&FFDD=3
26970memory2?&FFDD=3
26980ENDPROC
27000DEFPROCboot
27080PROCrts
27100Q=OPENIN(fs$+disc$+path$+subpath$+".!Boot")
27110IFQ<>0THENCLOSE#Q:disable_reset=TRUE:PROCfile_load(fs$+disc$+path$+subpath$+".!Boot"):disable_reset=FALSE:ENDPROC
27120Q=OPENIN(fs$+disc$+path$+subpath$+".!Run")
27130IFQ<>0THENCLOSE#Q:disable_reset=TRUE:PROCsnap_load(fs$+disc$+path$+subpath$+".!Run"):disable_reset=FALSE:ENDPROC
27150PROCbrk(214,"File not found")
27170ENDPROC
27190DEFPROCdemo(A$)
27200SYS"Wimp_ReportError","    "+A$,%11001,"6502Em"
27210ENDPROC

� > !RunImage
,� 6502Em (desktop frontend for binaries)
*� (c) Michael and Anne Borcherds, 1995
($version$="1.50D (29th May 1996)"
<c�ș"XWimp_CloseDown":ș"XWimp_ReportError","    Fatal internal error "+Þ+": "+�$,1,"Z80Em":Ș
Posword7F_drive%=1
Zosword72_drive%=0
n
top%=�
xuseMEMC%=�
��useMEMC%�
��=�-19*32*1024
�memory=�+2*32*1024
�roms=memory+32*1024
�rom=memory-&100+96
��
��=�-(64+64)*1024
�memory=�+64*1024
��
sheila=memory-&200
"�readmemmap
6filetype%=&BBC
Tț"<6502Em$Res>.Sound7a"
h�templates
r�initBBC
|�sound_init
��newmachine
�	�init
�	�poll
��
���install(sprite$)
��sx%,sy%,sm%,px%,py%
�"�text_buff&100,sprite_buff&100
�1ș"Wimp_SpriteOp",40,,sprite$�,,,sx%,sy%,,sm%
�4ș"OS_ReadModeVariable",sm%,4�,,px%:sx%=sx%<<px%
�4ș"OS_ReadModeVariable",sm%,5�,,py%:sy%=sy%<<py%

!q%=-1
/q%!4=0:q%!8=-16:q%!12=q%!4+sx%:q%!16=20+sy%
&q%!20=&1700310B
:!(q%+24)=text_buff
D!(q%+28)=sprite_buff
N$text_buff=sprite$
X$sprite_buff="S"+sprite$
b!(q%+32)=&100
lș"Wimp_CreateIcon",,q%�!q%
vbar_hand=!q%
��
���reinstall(sprite$)
�$sprite_buff="S"+sprite$
�$text_buff=sprite$
�buffer!0=-2
�buffer!4=bar_hand
�buffer!8=&00800080
�buffer!12=&00800080
�!ș"Wimp_SetIconState",,buffer
buffer!8=0
buffer!12=&00800080
!ș"Wimp_SetIconState",,buffer
 �
4��templates
>�t 4:$t="TASK"
H1ș"Wimp_Initialise",200,!t,"6502Em"�RO%,hand%
Re�q%256,q2%256,iconmenu%300,optionmenu%400,miscmenu%200,rommenu%800,machine_menu%200,oscli_menu 20
\1�pokemenu%50,pokevalid%12,poketext%12,drag 40
f�temp_regs 12*4,buffer&100
p�install("OS�1.2")
��readpatches
�
�RO%>299�
�-ș"OS_Byte",161,140�,,t%:THREED%=-(t%� 1)
�o�THREED%=��ș"Wimp_OpenTemplate",,"<6502Em$Res>.Template3D"�ș"Wimp_OpenTemplate",,"<6502Em$Res>.Templates"
�0ș"Wimp_LoadTemplate",,-1,,,-1,"info"�,A%,B%
�5ș"Wimp_LoadTemplate",,-1,,,-1,"xfer_send"�,C%,D%
�6ș"Wimp_LoadTemplate",,-1,,,-1,"xfer_send2"�,E%,F%
��
�3ș"Wimp_OpenTemplate",,"<6502Em$Res>.Templates"
�+A%=700:B%=300:C%=400:D%=350:E%=C%:F%=D%
��
�@�buffer2 A%,icon3 B%,xfer1 C%+4,xfer2 D%,xfer3 E%+4,xfer4 F%
;ș"Wimp_LoadTemplate",,buffer2,icon3,icon3+B%,-1,"info"
>ș"Wimp_LoadTemplate",,xfer1,xfer2,xfer2+D%,-1,"xfer_send"
?ș"Wimp_LoadTemplate",,xfer3,xfer4,xfer4+F%,-1,"xfer_send2"
$ș"Wimp_CloseTemplate"
.,ș"Wimp_CreateWindow",,xfer1�A%:xfer%=A%
8-ș"Wimp_CreateWindow",,xfer3�A%:xfer2%=A%
B.ș"Wimp_CreateWindow",,buffer2�A%:info%=A%
V!buffer=info%
`buffer!4=9
j!ș"Wimp_GetIconState",,buffer
t$(buffer!28)=version$+�0
�!buffer=info%
�buffer!4=11
�!ș"Wimp_GetIconState",,buffer
�0�"Load <6502Em$Res>.SerialNo "+�~(buffer!28)
��
�
��init
�ș"OS_GetEnv"�A$
���A$,1)=" "�
�I%=0
��I%+=1:��A$,�A$-I%,1)<>" "
�A$=�A$,�A$-I%)
�

��A$,1)=�34�A$=�A$,�A$-1)
�A$,1)=�34�A$=�A$,�A$-1)
I%=0
($�I%+=1:��A$,�A$-I%,1)=" "�I%=�A$
2A$=�A$,I%)
<<�upper(�A$,�A$-9,10))<>".!RUNIMAGE"��snap_load(A$):�BBC
P�
d
��poll
n��report(�$,�<>1)=2��quit
��
�mask%=%1100000110011
��resetmemmap
�"ș"Wimp_Poll",mask%,q%�action%
��setupmemmap
�Ȏaction%�
��2:ș"Wimp_OpenWindow",,q%
��3:ș"Wimp_CloseWindow",,q%
�
�6:�click
��7:�save
��9:�decodemenu
�17,18:�message
�
"��
,�
@
��message
JȎq%!16�
T�0:�quit
N�3
Xș"OS_WriteN",q%+44�A$
bȎq%!40�
l�filetype%:�snap_load(A$)
v"�&FFB,&FFE:�file_load(A$):�BBC
��
��5
�Ȏq%!40�
��filetype%
�7q%!16=4:q%!12=q%!8:ș"Wimp_SendMessage",17,q%,q%!20
�ș"OS_WriteN",q%+44�A$
��snap_load(A$):�BBC
�
�
符-1�
�ș"OS_WriteN",q%+44�A$
�	F$=A$
/ș"OS_File",5,F$�type%,,load%,exec%,length%
-�type%=2���F$,�F$-��leaf(F$)-1),1)<>"!"��
��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:�
 X�type%=0�F$=A$+"."+�A$,�A$-��leaf(A$)-2):ș"OS_File",5,F$�type%,,load%,exec%,length%
>Y�((load%>>>16)=0�(load%>>>16)=&FFFF�(load%>>>16)=&00FF)�(load%�&FFFF)<&8000� type%=1�
H7q%!16=4:q%!12=q%!8:ș"Wimp_SendMessage",17,q%,q%!20
R�file_load(F$)
\�BBC
f�
p�
z�
��&400C1
��
��
	��click
	mx%=q%!0
	my%=q%!4
	$mb%=q%!8
	.h%=q%!12
	8i%=q%!16
	B�h%=-2�
	L?�mb%=2��menus:ș"Wimp_CreateMenu",,iconmenu%,mx%-64,96+8*44
	V�mb%=1�
	`�readCSD
	j�BBC
	t�
	~�mb%=4��BBC
	��
	�5�i%=3�(h%=xfer%�h%=xfer2%)�ș"Wimp_CreateMenu",-1
��
���menus
��P%
�9�menuheader(iconmenu%,"6502Em",�"Single Task "*16+12)
�'�menuitem(0,info%,&07000001,"Info")
0�menuitem(0,optionmenu%,&07000001,"Options")
M�menuitem(-(patch%<>0),patchmenu%,&07000001�-(2^22)*(patches%=0),"Patch")
*�menuitem(0,rommenu%,&07000001,"ROMs")
&+�menuitem(0,miscmenu%,&07000001,"Misc")
D.�menuitem(0,xfer%,&07000001�(2^22),"Save")
X1�menuitem(0,xfer2%,&07000001�(2^22),"Sprite")
�&�menuitem(&80,-1,&07000001,"Quit")
�$buffer!0=0:buffer!4=0:buffer!8=0
�4ș"OS_ReadVarVal","6502Em$Keymap",buffer,255�,S$
�keymap%=�keymap(S$)
��keymaps%<>0�
�-�menuheader(keysmenu%,"Keymaps",12*16+12)
��I%=1�keymaps%
�G�menuitem(-&80*(I%=keymaps%)-(keymap%=I%),-1,&07000001,keymap$(I%))
��
��

�patches%<>0�

.�menuheader(patchmenu%,"Patches",12*16+12)

�I%=1�patches%

 E�menuitem(-&80*(I%=patches%)-(patch%=I%),-1,&07000001,patch$(I%))

*�

4�

H/�menuheader(rommenu%,"Protected?",12*16+12)

R�I%=15�0�-1

\F�menuitem(-(?(ROMRAM+I%)<>0)-&80*(I%=0),-1,&07000001,�ROMname(I%))

f�

z8�menuheader(miscmenu%,"Misc",�"Disable Tape "*16+12)

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

�%�menuitem(0,-1,&07000001,"Reset")

��machine%=0�machine%=4�

�.�menuitem(&80,-1,&07000001,"Disable Tape")

��

�3�menuitem(&80,-1,&07000001�2^22,"Disable Tape")

��

�=�menuheader(optionmenu%,"Options",�"Save Options "*16+12)

�B�menuitem(0,keysmenu%,&07000001�-(2^22)*(keymaps%=0),"Keymap")

�1�menuitem(-ROMSEL%,-1,&07000001,"Paged ROMs")
/�menuitem(-Palette%,-1,&07000001,"Palette")
-�menuitem(-Cursor%,-1,&07000001,"Cursor")
E�indirecteditem(-Oscli%,-1,%100000001,"Pass on OSCLI",oscli_menu)
$1�menuitem(-exact%,-1,&07000001,"Exact Speed")
.2�menuitem(0,machine_menu%,&07000001,"Machine")
8.�menuitem(-sound_on%,-1,&07000001,"Sound")
B7�menuitem(-scroll_hack%,-1,&07000001,"Scroll Hack")
L0�menuitem(-file_xxx,-1,&07000001,"file_xxx")
V'�menuitem(0,-1,&07000001,"Default")
`.�menuitem(&80,-1,&07000001,"Save Options")
t=�menuheader(machine_menu%,"Machine",�"Master 128 "*16+12)
~M�menuitem(-(machine%=0),-1,&07000001�-(2^22)*(Machine%(0)=0),Machine$(0))
�M�menuitem(-(machine%=1),-1,&07000001�-(2^22)*(Machine%(1)=0),Machine$(1))
�M�menuitem(-(machine%=2),-1,&07000001�-(2^22)*(Machine%(2)=0),Machine$(2))
�M�menuitem(-(machine%=3),-1,&07000001�-(2^22)*(Machine%(3)=0),Machine$(3))
�P�menuitem(&80-(machine%=4),-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%
2P%!4=B%
<P%!8=C%
F$(P%+12)=D$+�13
P
P%+=24
Z�
n$��indirecteditem(A%,B%,C%,D$,E%)
xP%!0=A%
�P%!4=B%
�P%!8=C%+&07000000
�P%!12=E%
�P%!16=0
�P%!20=�D$+1
�$E%=D$+�13
�
P%+=24
��
���decodemenu
�
Ȏ!q%�
��0
��1

�q%!4>-1�
Ȏq%!4�
�0
")�q%!8<>-1��setkeymap(keymap$(q%!8+1))
,�1:ROMSEL%=�ROMSEL%
6�2:Palette%=�Palette%
@�3:Cursor%=�Cursor%
J�4:Oscli%=�Oscli%
T�5:exact%=�exact%
^:�6:�q%!8<>-1� q%!8<>machine%�machine%=q%!8:�newmachine
h�7:sound_on%=�sound_on%
r!�8:scroll_hack%=�scroll_hack%
|k�9:file_xxx=�file_xxx:�file_xxx��"IconSprites <6502Em$Res>.file_xxx"��"IconSprites <6502Em$Res>.no_xxx"
�$�10:�default_options:�newmachine
��11:�save_options
��
��
��2
�
�q%!4=-1�
�patch%=0
��
�,�patch%<>q%!4+1�patch%=q%!4+1:�loadpatch
��
��3
�
�q%!4>-1�
�S%=15-(q%!4� 15)
"�validROM(S%)�?(ROMRAM+S%)=2�
>�?(ROMRAM+S%)=2�?(ROMRAM+S%)=0�?(ROMRAM+S%)=1-?(ROMRAM+S%)
�
&?(ROMRAM+S%)=2
0�
:�
D�4
N
�q%!4>-1�
XȎq%!4�
b�0:�readCSD
l�1:�reset(1)
v�2:�disableCFS
��
��
��5
��6
�:�quit
��
�ș"Wimp_GetPointerInfo",,q%
�Y�(q%!8�%1)>0��menus:ș"Wimp_CreateMenu",,iconmenu%,mx%-iconmenu%!16/2-24,16*4+44*2+12
��
�"��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
4�
Hݤcount(A$,B$)
R
�I%,C%
\
�I%=1��A$
f�A$,I%,1)=B$�C%+=1
p�
z=C%
�ݤletter(A$)
�
�I%,J%
�
�I%=1��A$
�+�"ABCDEFabcdef",�A$,I%,1))�J%=�:I%=�A$
��
�=J%
�
��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%
8�?P%=�"."�?P%=�":"�K$=""
B�?P%=13
Lș"Wimp_GetPointerInfo",,q%
V7�q%!12<>xfer%� q%!12<>xfer2%�ș"Wimp_CreateMenu",-1
`q%!20=q%!12
jq%!24=q%!16
tq%!28=q%!0
~q%!32=q%!4
��save_sprite%=��
�q%!36=65667
�q%!40=filetype%
��
�q%!36=80*1024
�q%!40=&FF9
��
�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$)
F�I%
PI%=�A$+1
Z�I%-=1:��A$,I%,1)="."
d=�A$,I%-1)
x	��err
�
��report(�$,�)��quit��poll
��
���err2(M%)
��
����err
�"�hand%<>0�ș"XOS_Find",0,hand%
�4ș"XWimp_SetMode",M%:ș"X6502_RemoveExitHandler"
��sound%=���sound_restore
��report(�$,�)��quit��poll
��
ݤreport(a$,E%)
�A%
�E%�
"Iș"XWimp_ReportError","    Internal error "+Þ+": "+a$,3,"6502Em"�,A%
,3�ș"XWimp_ReportError","    "+a$,1,"6502Em"�,A%
6�
@=A%
T	ݤcsd
^ș"OS_GBPB",6,,buffer
hbuffer?(buffer?1+2)=13
r=$(buffer+2)
�
��readCSD
��
����:��:fs$="ADFS:":disc$="":path$="$":subpath$="":ș"XWimp_ReportError","    Error in reading current directory: "+�$,1,"6502Em":�
��I%=0�1
�ș"OS_Args"�FS%
�-ș"OS_FSControl",33,FS%,�20," "),20�,,fs$
�3�fs$<>""�fs$=fs$+":":I%=1��"DIR <6502Em$Dir>.^"
��
ș"OS_GBPB",5,,buffer
buffer?(?buffer+1)=13
disc$=$(buffer+1)
&7�disc$=�34+"Unset"+�34�disc$=""�disc$=":"+disc$+"."
:path$=�csd
D�path$<>"$"�
X�
bș"OS_FSControl",0,"^"
l
CSD$=�csd
vpath$=CSD$+"."+path$
�
�CSD$="$"
�(��path$,7)=�34+"Unset"+�34�path$="$"
�ș"OS_FSControl",0,path$
��
�subpath$=""
��
�
��initBBC
�
�R%(7)
�$�BBC$(&7C),ARC$(&78),Elec$(3,13)
�
�I%=0�3
�J%=13�0�-1
 �Elec$(I%,J%)
*�
4�
>�I%=0�7
H�J%=0�12
R�BBC$(I%*16+J%)
\�
f�
p
�I%=0�&78
z
�ARC$(I%)
��
��readkeymaps
��setkeymap("Default")
�$�elkkeys("<6502Em$Res>.ElkKeys")
�ș"6502_Register"
�.�Machine$(4),Machine%(4),MachineSprite$(4)
�disable_reset=�
�default_machine%=0
�2Machine$(0)="BBC B":MachineSprite$(0)="OS�1.2"
7Machine$(1)="Master 128":MachineSprite$(1)="OS�3.2"
7Machine$(2)="   MOS 3.5":MachineSprite$(2)="OS�3.5"
4Machine$(3)="Compact":MachineSprite$(3)="OS�5.1"
$5Machine$(4)="Electron":MachineSprite$(4)="OS�1.0"
CMachine%(4)=�
VQ=�"<6502Em$RomPath>OS1,2"
`)�Q<>0��#Q:Machine%(0)=��Machine%(0)=�
j%�Machine%(0)=��default_machine%=1
~#Q=�"<6502Em$RomPath>M128.OS3,2"
�)�Q<>0��#Q:Machine%(1)=��Machine%(1)=�
�4�Machine%(0)=�� Machine%(1)=��default_machine%=2
�#Q=�"<6502Em$RomPath>M128.OS3,5"
�)�Q<>0��#Q:Machine%(2)=��Machine%(2)=�
�C�Machine%(0)=�� Machine%(1)=�� Machine%(2)=��default_machine%=3
�&Q=�"<6502Em$RomPath>Compact.OS5,1"
�)�Q<>0��#Q:Machine%(3)=��Machine%(3)=�
�j�Machine%(0)=�� Machine%(1)=�� Machine%(2)=�� Machine%(3)=���0,"No ROMs found - please run !Rip65Host"
�Q=�"<6502Em$Dir>.Code"

L%=�#Q

�#Q
�code L%+3000
�useMEMC%��roms 17*16*1024
2�cmos%(63):�loadCMOS
<�eeprom%(255):�loadEEPROM
Fȕ(code� 15)<>0:code+=1:�
Z'indexfile$="":index%=0:newindex%=-1
�sprite=0
�save_sprite=�
��readCSD
�5FS$=fs$:DISC$=disc$:PATH$=path$:SUBPATH$=subpath$

�assemble
�load_options
T2�file_xxx��"IconSprites <6502Em$Res>.file_xxx"
�*FX229,1
patch%=0
X�
l��SRRAM
v?(ROMRAM+socket%)=0
�socket%=(socket%-1)� 15
��
���killROM(S%)
��I%
�?(ROMRAM+S%)=2
��I%=0�255�16
�I%!(roms+romsize%*S%)=0
��
��
���loadROM(R$,R%)
��Q%
/�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
4�#Q%
>?(ROMRAM+S%)=R%
H�
\��initROMs
f�S%
p�S%=0�15
z?(ROMRAM+S%)=2
��
��
�ݤROMname(S%)
��?(ROMRAM+S%)=2�="Empty"
��resetmemmap
�
�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%
.�
8�setupmemmap
B=N$
VݤvalidROM(S%)
`�I%
jI%=roms?(romsize%*S%+7)
t`�roms?(romsize%*S%+I%+1)=&28� roms?(romsize%*S%+I%+2)=&43� roms?(romsize%*S%+I%+3)=&29�=��=�
���reset(A%)
��disable_reset��
��setupmemmap
�
?fe10=&22
�sheila!&C0=&7070B7AB
�
?ACCCON=0
�?f=%100

�A%=1�
("�clearmem(memory,memory+&8000)
2?ier=&80
<
?ier2=&80
F
?Eifr=%10
P?Eier=%0
Z
?Elatch=0
d!T1R=&F0<<24
n!T2R=&F0<<24
x!T3R=&F0<<24
�!T4R=&F0<<24
�)�"LOAD <6502Em$Res>.SHEILA "+�~sheila
��
�sheila?&20=2
|2!pc_store=(memory?&FFFC+(memory?&FFFD<<8))<<16
��
�	��BBC
�e�demo("This is a demo version of 6502Em. It will work for about 2 minutes. Press F12 to finish.")
��
�6ș"XOS_SWINumberFromString",,"ImageDFS_Version"�;F
�'�(F� 1)=0�dfssupport=��dfssupport=�
 *FX9
 wimp_mode=�
 &?lastmode=255
 0ș"Hourglass_Smash"
 D�sound_setup
 N)ș"6502_InstallExitHandler",wimp_mode
 b���err2(wimp_mode)
 vb!patch_on=((patch%>0)�%1)+(exact%�%10)+(Cursor%�%100)+(scroll_hack%�%1000)+(�sound_on%�%10000)
 ��23,16,1,254|
 � ș"OS_Byte",202,0,255�,FX202
 � ș"OS_Byte",247,0,255�,FX247
 �ș"OS_Byte",247,255,0
 �ș"OS_Byte",106,&81
 �ȗ�3,255,255,255
 �0ș"OS_Byte",202,memory?&25A�%10000,%11101111
 �ș"OS_Byte",118
 �hand%=�tapefile$
!?tape_handle=hand%
!�
!*"�newindex%>=0 index%=newindex%
!45�OSRDCH%��poke(&FFE0,OSRDCH_loc)��poke(&FFE0,&23)
!>?ROMSEL=1+ROMSEL%
!H?Palette=1+Palette%
!\A%=roms
!f
D%=memory
!p�setupmemmap
!zș&600FA,0
!�b%=�(code+!start_offset)
!��setupmemmap
!�ș&600FA,1
!�I�sprite<>0�ș"XOS_SpriteOp",256+16,sprite,"BBCScreen",1,0,0,1279,1023
!�	*FX15
!�	Ȏ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
"�
"$�
"8�10:�:?lastmode=255
"B�66:�~!pc_store:Q=�
"L�15
"V�-3��reset(1)��reset(0)
"`�
"t�3
"�4�peek(!pc_store>>>16)=3�(!pc_store>>>16)<&C000�
"� Ȏ�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
#2�&D0:�srload
#<�&D1:�srwrite
#F�&D2:�drive
#P�&D3:�boot
#Z�&D5:�back:a?3=0:�rts
#d�&FF:b%=12:�rts
#n�
#x�
#�Ȏ(!pc_store>>>16)�
#��&FFF1,&E7EB:�osword
#��&FFE0:�osrdch
#��&FFD7:�osbget
#��&FFD4:�osbput
#��&FFDD:�osfile
#��&FFDA:�osargs
#��&FFD1:�osgbpb
#��&FFCE:�osfind
#��&F1B1,&F0E8:�osfsc
#��
#��
$�7
$cb=(y?3)<<8
$"cb+=x?3
$,cb+=memory
$6�I%=0�7
$@R%(I%)=cb!(9+I%*4)
$J+�(cb?4�(1<<I%))<>0�R%(I%)=R%(I%)+memory
$T�
$^
swi%=cb?0
$hswi%+=(cb?1)<<8
$rswi%+=(cb?2)<<16
$��dfssupport�
$�Ȏswi%�
$��&61140
$�
base=cb!9
%Ȏmemory?base�
%�0,1,2,3
%�&21:memory?base=0
%&�&4B:memory?base=1
%0�&E0:memory?base=2
%:�&EA:memory?base=3
%D
%N�"Drive ";memory?base;"  "
%X�
%b,�memory?(base+6)=&80�memory?(base+6)=&53
%l,�memory?(base+6)=&A0�memory?(base+6)=&4B
%�:�memory?(base+11)<>0�memory?(base+9)=memory?(base+9)+1
%�/memory?(base+9)=(memory?(base+9)�%11111)�32
%�R�memory?(base+6)<>&81�ș"XImageDFS_OSWORD7F",,base�256,base�256,memory�R%(0);F
%��&61141
%��&61142
%��&61143
&
&sș(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
& �
&4�
&>sș(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
&H�
&\
�cb?3<>0�
&f�I%=0�cb?3-1
&p+�(cb?5�(1<<I%))<>0�R%(I%)=R%(I%)-memory
&zcb!(9+I%*4)=R%(I%)
&��
&��
&��(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%
'8�err?I%=0�J%=�
'B�
'L�J%=��err?(cb?8-1)=0
'V�
'j!pc_store=!pc_store+(1<<16)
't?f=?f�%1100011
'~�(F� 1)<>0�?f=?f�%01000000
'��(F� 2)<>0�?f=?f�%00000001
'��(F� 4)<>0�?f=?f�%00000010
'��(F� 8)<>0�?f=?f�%10000000
'��
'��12
'�
(�
(
�b%=12
(("�hand%<>0�ș"XOS_Find",0,hand%
(<ș"OS_Byte",202,FX202
(Fș"OS_Byte",247,FX247
(Zș"OS_Byte",106,1
(n *Set Key$11 "<6502Em$Key11>"
(x *Set Key$12 "<6502Em$Key12>"
(�ș"6502_RemoveExitHandler"
(��sound_restore
(�ș"Wimp_SetMode",wimp_mode
(�*FX15,0
(�x�demo("The full version is available for �15 from: Warm Silence Software, St Catherine's College, Oxford, OX1 3UJ.")
)�
)ݤmax(A%,B%)
)"�A%>B%�=A%�=B%
)6��pullpc
)@sp?3=sp?3+1
)J"pc_store?2=?(memory+&100+sp?3)
)Tsp?3=sp?3+1
)^"pc_store?3=?(memory+&100+sp?3)
)h�
)|��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
*ier=memory-&100+77
*ifr2=memory-&100+78
*ier2=memory-&100+79
*&rom=memory-&100+96
*:ROMSEL=memory-&100+92
*DPalette=memory-&100+164
*NROMRAM=memory-&100+100
*X(patch_on=memory-&100+176:!patch_on=0
*blastmode=memory-&100+178
*lfe10=memory-&100+179
*vtape_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
*�P%=code
*�	[OPT2
*�.Oa
*�
EQUD 0
*�.Ox
*�
EQUD 0
+.Oy
+
EQUD 0
+.Of
+ 
EQUD 0
+*.Osp
+4
EQUD 0
+>.Opc_store
+H
EQUD 0
+R.start_offset
+\
EQUD 0
+f
.trace
+p
EQUD 0
+z.trace2
+�
EQUD 0
+�.init_addr
+�
EQUD 0
+�
.crt_addr
+�
EQUD 0
+�.T1_addr
+�
EQUD 0
+�
.ifr_addr
+�
EQUD 0
+�.column_counter_addr
+�
EQUD 0
+�.ROMSEL_addr
+�
EQUD 0
,.Palette_addr
,
EQUD 0
,.speed_addr
,$
EQUD 0
,..elite_addr
,8
EQUD 0
,B.opco_addr EQUD 0
,L.bcd_addr EQUD 0
,V .sheila_writetab_addr EQUD 0
,`.sheila_readtab_addr EQUD 0
,j.sound_vectors_addr EQUD 0
,t.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)
,��
,�!pc_store=&8004<<16
-�
-2��osfile
-Faddr=memory+x?3+(y?3)*256
-P
Ȏa?3�
-Z�0
-d
a%=a?3
-n)b$=�addpath($((addr!0�&FFFF)+memory))
-x
c%=addr!2
-�
d%=addr!6
-�e%=(addr!10�&FFFF)+memory
-�f%=(addr!14�&FFFF)+memory
-�'ș"XOS_File",a%,b$,c%,d%,e%,f%�A%;F
-��(F� 1)=0��rts��swi_error
-��5
-�b$=$((addr!0�&FFFF)+memory)
-�<ș"XOS_File",13,�add_(b$),,,�_path(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
.6�
.@�6
.Jb$=$((addr!0�&FFFF)+memory)
.T1ș"XOS_File",6,�addpath(b$)�A%,,c%,d%,e%,f%;F
.^�(F� 1)=1�
.h�swi_error
.r�
.|
a?3=A%
.�
addr!2=c%
.�
addr!6=d%
.�addr!10=e%
.�addr!14=f%
.��rts
.��
.��255
.�
a%=a?3
.�b$=$((addr!0�&FFFF)+memory)
.�c%=(addr!2�&FFFF)+memory
.�,�(addr!2�&FFFF0000)=&FFFE0000�c%-=&13000
/
d%=addr?6
/P�d%<>0�ș"XOS_File",13,�add_(b$),,,�_path(b$)�,,c%:d%=0:c%=(c%�&FFFF)+memory
/6ș"XOS_File",13,�add_(b$),,,�_path(b$)�,,,,length%
/&.�c%+length%>memory+&8000� c%<memory+&8000�
/0length%=memory+&7FFF-c%
/:.ș"XOS_Find",&4D,�add_(b$),�_path(b$)�A%;F
/DL�(F� 1)=0�ș"XOS_GBPB",4,A%,c%,length%:ș"XOS_Find",0,A%:�rts��swi_error
/N�
/X?ș"XOS_File",12,�add_(b$),c%,0,�_path(b$)�A%,,c%,d%,e%,f%;F
/b
a?3=A%
/l
addr!2=c%
/v
addr!6=d%
/�addr!10=e%
/�addr!14=f%
/��(F� 1)=0��rts��swi_error
/��
/�	a?3=1
0
0�"OSFILE ";a?3:Q=�
0 �
0*�
0>��swi_error
0H�A$
0R	A$=""
0\
�I%=0�253
0pmemory?(&102+I%)=A%?(I%+4)
0z�A%?(I%+4)=0�I%=253
0��
0�memory?&100=0
0�memory?&101=?A%
0�!pc_store=&100<<16
0��
0���brk(A%,A$)
0�A$=A$+�0
0��I%=0��A$-1
0�!memory?(&102+I%)=��A$,I%+1,1)
0��
1memory?&100=0
1memory?&101=A%
1!pc_store=&100<<16
1$�
18ݤmin(A%,B%)�A%<B%�=A%�=B%
1L��osword
1V
Ȏa?3�
1`�0,1,2,3,4
1jpc_store?2=memory?&20C
1tpc_store?3=memory?&20D
1~	�0123
1�addr=x?3+(y?3<<8)
1�)buff=memory?addr+(memory?(addr+1)<<8)
1�Vș"OS_ReadLine",buff+memory,memory?(addr+2),memory?(addr+3),memory?(addr+4)�,Y%;F%
1�)�(F%�%10)=0�memory?(buff+Y%)=13:Y%+=1
1�
y?3=Y%
1�#?f=(?f�%11111110)�((F%�%10)>>1)
1��rts
1�
�91,93
1�%ș"OS_Word",1,x?3+(y?3<<8)+memory
1��rts
1��92
1�%ș"OS_Word",2,x?3+(y?3<<8)+memory
2�rts
2
�7
2buffer=memory+x?3+(y?3<<8)
2nchannel%=?buffer�%11
2xflush%=?buffer�%10000
2�sync%=buffer?1�%111
2�cont%=buffer?1�%11110000
2�Aampl%=buffer?2:�ampl%>&EF�ampl%+=&FF00�ampl%+=301:channel%+=4
2�pitch%=buffer?4
2�dur%=buffer?6
2��channel%=0�
2�Ȏpitch%�%111�
2��0,4:pitch%=220
2��1,5:pitch%=160
2��2,6:pitch%=100
2��3,7:pitch%=chan1_pitch%
2��
2��
3#�channel%=1�chan1_pitch%=pitch%
3;�cont%=0�ș"Sound_Control",channel%+1,ampl%,pitch%,dur%
3,�rts
3@�8
3r:�?(memory+x?3+(y?3<<8)+1)=0�?(memory+x?3+(y?3<<8)+1)=1
3|,ș"Sarah_Envelope",0,memory+x?3+(y?3<<8)
3��rts
3��&7F
3�addr%=x?3+(y?3<<8)+memory
3�track%=addr%?7
3�sector%=addr%?8
3�)disc_address%=sector%*256+track%*2560
3� length%=(memory?9�%1111)*256
3�addr%?10=0
3��rts
3�
�a?3>20�
4pc_store?2=memory?&20C
4pc_store?3=memory?&20D
4�
4&�
4:��osgbpb
4Naddr%=memory+x?3+(y?3<<8)
4X
b%=?addr%
4bc%=addr%!1
4ld%=addr%!5
4ve%=addr%!9
4��a?3=9�
4�Wș"XOS_GBPB",a?3,fs$+disc$+path$+subpath$,memory+(c%�&FFFF),b%,e%,d%,0�A%,,,d%,e%;F
4��(F� 1)=0�
4�
?addr%=d%
4�addr%!9=e%
4�(�(F�%10)=0�?f=(?f�%11111110)�?f=?f�1
4��rts
4��
4��swi_error
4��
5�
5 ș"OS_FSControl",11,fs$
5*+ș"OS_FSControl",0,disc$+path$+subpath$
5>5�(a?3=3�a?3=4)� c%<&8000� c%+e%>&8000�e%=&8000-c%
5R>ș"XOS_GBPB",a?3,b%,memory+(c%�&FFFF),d%,e%�A%,,c%,d%,e%;F
5fș"OS_FSControl",19
5z�(F� 1)=0�
5�addr%!1=c%-memory
5�addr%!5=d%
5�addr%!9=e%
5�(�(F�%10)=0�?f=(?f�%11111110)�?f=?f�1
5��rts
5��
5��swi_error
5��
5��
5��
5���osargs
6
Ȏa?3�
6�0
6�y?3<>0�
6$!ș"XOS_Args",a?3,y?3�A%,,L%;F
6.-�(F� 1)=0�memory!(x?3)=L%:�rts��swi_error
68�
6Ba?3=4:�rts
6L�
6V�1
6`*ș"XOS_Args",a?3,y?3,memory!(x?3)�A%;F
6j�(F� 1)=0��rts��swi_error
6t�2
6~!ș"XOS_Args",a?3,y?3�A%,,L%;F
6�-�(F� 1)=0�memory!(x?3)=L%:�rts��swi_error
6��255
6�ș"XOS_Args",a?3,y?3�A%;F
6��(F� 1)=0��rts��swi_error
6�
:�rts
6��
6��
6�ݤupper(A$)
6�
�I%,B$
6�
�I%=1��A$
6�I�A$,I%,1)>="a"��A$,I%,1)<="z"�B$=B$+�(��A$,I%,1)-32)�B$=B$+�A$,I%,1)
7�
7
=B$
7
��quit
7(
72�resetmemmap
7<ș"X6502_DeRegister"�A%
7F(�A%=0�ș"XOS_Module",4,"6502Support"
7Pș"Wimp_CloseDown"
7Z�
7d�
86��snap_load(file$)
8@$�file%,I%,ok%,machine$,M%,patch$
8Jfile%=�(file$)
8Ttype$=�#file%
8^!�#file%=0�type$="BBC Script"
8rȎtype$�
8��"BBC Tapefile"
8��#file%
8�tapefile$=file$
8��"BBC Script"
8��
8�\��:��:ș"XWimp_ReportError","    Error in script: "+�$,3,"6502Em"�,A%:�A%=2��quit��poll
8�scroll_hack%=�
9
��#file%�
9	A$=""
9&�
90A$=�upper(�#file%)
9:�
9D�
9NB$=�A$,�A$," ")-1)
9X	ok%=�
9b	ȎB$�
9l�"PALETTE"
9v$�A$,"ON")�Palette%=��Palette%=�
9�
�"CURSOR"
9�"�A$,"ON")�Cursor%=��Cursor%=�
9��"EXACTSPEED"
9� �A$,"ON")�exact%=��exact%=�
9��"SOUND"
9�&�A$,"ON")�sound_on%=��sound_on%=�
9��"DISABLETAPE"
9��disableCFS
9��"SCROLLHACK"
9�scroll_hack%=�
9�
�"KEYMAP"
9�K$=�A$,�A$-�A$," "))
9��setkeymap(K$)
:�"PATCH"
:�patches%<>0�
:patch%=0
: �I%=1�patches%
:*patch$=�A$,�patch$(I%))
:4�strip(patch$)
:>�upper(patch$(I%))=patch$�
:H
patch%=I%
:R�loadpatch
:\�
:f�
:p�
:z�"INDEXFILE"
:�T$=�A$,�A$-10)
:�T%=�(�leaf(file$)+"."+T$)
:�X�T%<>0��#T%:indexfile$=�leaf(file$)+"."+T$:index%=0��1,"Index File "+T$+" not found"
:��"TAPEFILE"
:�T$=�A$,�A$-9)
:�T%=�(�leaf(file$)+"."+T$)
:�M�T%<>0��#T%:tapefile$=�leaf(file$)+"."+T$��1,"Tape File "+T$+" not found"
:��"LOADROM"
:�L$=�A$,�A$-8)
:��L$,":")=0�
:�#�loadROM(�leaf(file$)+"."+L$,1)
:��
:��loadROM(L$,1)
;�
;�"LOADRAM"
;L$=�A$,�A$-8)
;$�L$,":")=0�
;.#�loadROM(�leaf(file$)+"."+L$,0)
;8�
;B�loadROM(L$,1)
;L�
;V�"KILLROM"
;`L$=�A$,�A$-8)
;j�I%=0�15
;t/�upper(�ROMname(I%)),�L$)=L$��killROM(I%)
;~�
;��"MACHINE"
;�machine$=�A$,�A$-8)
;��strip(machine$)
;�Ȏmachine$�
;��"BBC","BBCB","BBC B"
;�M%=0
;�&�"MASTER","MASTER128","MASTER 128"
;�M%=1
;�&�"OS3.5","OS 3.5","OS3,5","OS 3.5"
;�M%=2
;��"COMPACT","MASTER COMPACT"
;�M%=3
<�"ELECTRON","ELK"
<
M%=4
<
</�#file%:�1,"Unknown machine '"+machine$+"'"
<(�
<2)�M%<>machine%�machine%=M%:�newmachine
<<
<F	ok%=�
<P�
<Z	�ok%�
<d
��#file%�
<n	A$=""
<x�
<�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")
<��#file%
<��A$=""�
<�A$=�leaf(file$)
<�,�file_load(A$+"."+�A$,�A$-��leaf(A$)-2))
<��
<�*�A$,5)="CHAIN"��A$,1)="*"��A$," ")>0�
<�osrdch$=A$+�13
<�
�reset(1)
=osrdch_count%=0
=OSRDCH_loc_tmp=OSRDCH_loc
=OSRDCH_loc=3
=""�newpath(�leaf(file$)+".JUNK")
=,�
=6#�file_load(�leaf(file$)+"."+A$)
=@�
=J�
=T�"BBC Snapshot   "
=^�#file%=&10110�
=h*ș"OS_GBPB",4,file%,memory-&100,&10100
=r�#file%=&10110-&200
=|#ș"OS_GBPB",4,file%,sheila,&100
=��
=�0ș"OS_GBPB",4,file%,memory-&100,�#file%-&110
=�#ș"OS_GBPB",4,file%,sheila,&100
=��
=��#file%
=��"BBC Snapshot101"
=�/ș"OS_GBPB",4,file%,memory-&200,�#file%-&10
=��#file%
=�
=��#file%
=��loadROM(A$,1)
=��
=��
>ݤi(B$)
>�A$,B$)=0�=��=�
>0��file_load(F$)
>:�newpath(F$)
>N
�I%=1��F$
>X5�F$,�F$-I%,1)="."��F$,�F$-I%,1)=":"�L%=I%:I%=�F$
>b�
>lA$=�F$,L%)
>v,ș"OS_File",5,F$�,,load2%,exec2%,length%
>�load%=load2%�&FFFF
>�exec%=exec2%�&FFFF
>�osrdch$="*/"+A$+�13
>�h�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
>�~�exec%=&FFFF�(load2%�&FFF00)=&FFE00�(load2%=0� exec2%=0)�osrdch$="*EXEC "+A$+�13:�machine%=0�osrdch$="PAGE=&1900:"+osrdch$
>�
�reset(1)
>�osrdch_count%=0
>�OSRDCH_loc_tmp=OSRDCH_loc
>�OSRDCH_loc=3
>��
>���osrdch
?osrdch_count%+=1
?"a?3=��osrdch$,osrdch_count%,1)
?�rts
? M�osrdch_count%=�osrdch$�OSRDCH_loc=OSRDCH_loc_tmp:�poke(&FFE0,OSRDCH_loc)
?*�
?>ݤbinary(B%)
?H
�A$,I%
?R�I%=0�7
?\%�(B%� 2^I%)=0�A$="0"+A$�A$="1"+A$
?f�
?p=A$
?���newpath(F$)
?�$ș"OS_GSTrans",F$,buffer,255�,F$
?�fs$=�F$,�F$,":"))
?�F$=�F$,�F$-�fs$)
?��F$,1)=":"�
?�disc$=�F$,�F$,"."))
?�F$=�F$,�F$-�disc$)
?��
?�disc$=""
?��
?�path$=�leaf(F$)
@subpath$=""
@E�path$,�path$-1,1)="."�subpath$=�path$,2):path$=�path$,�path$-2)
@�
@.ݤnumeric(A$)
@8�A$>="0"� A$<="9"�=��=�
@Lݤadd_(F$)
@V=�F$,1)=":"��numeric(�F$,2,1))��F$,3,1)="."�F$=�F$,�F$-3)
@`�F$,":")�=F$
@j*�F$,1)=�34��F$,1)=�34�F$=�F$,2,�F$-2)
@~&�(F$=""��F$,"|"))� indexfile$<>""�
@�Q=�indexfile$
@��#Q=index%
@�
F$=�#Q
@�newindex%=�#Q
@��newindex%=�#Q�newindex%=0
@��#Q
@��
@��F$,2,1)="."�
@��F$,1)="$"�=�F$,�F$-2)
@�=F$
@��
A=F$
A
�
A=""
A(ݤ_path(F$)
A2=�F$,1)=":"��numeric(�F$,2,1))��F$,3,1)="."�F$=�F$,�F$-3)
A<�F$,":")�=""
AF�F$,2,1)="."�
AP=fs$+disc$+path$+"."
AZ�
Ad!=fs$+disc$+path$+subpath$+"."
An�
Ax=""
A�ݤaddpath(F$)
A�=�F$,1)=":"��numeric(�F$,2,1))��F$,3,1)="."�F$=�F$,�F$-3)
A��F$,":")�=F$
A�*�F$,1)=�34��F$,1)=�34�F$=�F$,2,�F$-2)
A��F$,2,1)="."�
A�%�F$,1)="$"�=path$+"."+�F$,�F$-2)
A�=fs$+disc$+path$+"."+F$
A��
A�$=fs$+disc$+path$+subpath$+"."+F$
A��
A�=""
Bݤstrip(F$)
B�I%
B)�I%+=1:��F$,I%,1)<>"*"��F$,I%,1)<>" "
B"=�F$,�F$-I%+1)
B6��strip(�s$)
B@ȕ�s$,1)=" "
BJ
s$=�s$,2)
BT�
B^ȕ�s$,1)=" "
Bhs$=�s$,�s$-1)
Br�
B|�
B�
��dir(D$)
B�5FS$=fs$:DISC$=disc$:PATH$=path$:SUBPATH$=subpath$
B��I%
B��I%+=1:��D$,I%,1)<>" "
B�D$=�D$,�D$-I%+1)
B��D$," ")�
B�D$=�D$,�D$," ")-1)
B��
B�)�D$=4���upper(D$),3)="DIR"�D$=�D$,1)
B��
C�D$="^"�
C$�subpath$<>""�subpath$="":�rts:�
C#�path$,".")=0�path$="$":�rts:�
C&
I%=�path$
C0�I%-=1:��path$,I%,1)="."
C:path$=�path$,I%-1)
CD
�rts:�
CN�
Cb$�D$="$"��D$=0�subpath$="":�rts:�
Cl�D$=1�
Cv1ș"XOS_File",13,D$,,,fs$+disc$+path$+"."�A%;F
C��(F� 1)<>0��swi_error:�
C�'�(A%� 2)=0��D$=1�subpath$="":�rts:�
C�L�(A%� 2)=0��brk(214,"Directory '"+D$+"' not found")�subpath$="."+D$:�rts
C��
C��
C��D$,":")>1�
C�@��D$,1)<>":"�ș"XOS_File",17,D$�A%;F:�(F� 1)<>0��swi_error:�
C�!ș"OS_FSControl",11,D$�,E$,E%
C�Z�E%<>-1�ș"OS_FSControl",19:fs$=�D$,�D$-�E$):D$=E$��brk(248,"No such filing system"):�
C�path$=""
C�subpath$=""
C�disc$=""
D�D$,1)<>":"�path$="$"
D�
D �D$,1)=":"�
D*I%=0:disc$=""
D4
�I%+=1
D>disc$=disc$+�D$,I%,1)
DH��D$,I%+1,1)="."�I%=�D$
DR&�I%=�D$�D$=""�D$=�D$,�D$-�disc$-1)
D\path$="":subpath$=""
Df�
Dz9�D$,1)="$"��D$>2�path$="$":subpath$="":D$=�D$,�D$-2)
D�8�disc$<>""��disc$,1)<>"."� path$<>""�disc$=disc$+"."
D�:ș"XOS_File",13,D$,,,fs$+disc$+path$+subpath$+"."�A%;F
D�-�disc$<>""��disc$,1)<>"."�disc$=disc$+"."
D�'�(F� 1)<>0��restoreCSD:�swi_error:�
D��(A%� 2)=0�
D��restoreCSD
D�,�brk(214,"Directory '"+D$+"' not found")
D��
D��D$<>""�
D�?�path$<>""�path$=path$+subpath$+"."+D$:subpath$=""�path$=D$
D��
D��rts
E�
E�path$=""�path$="$"
E�
E.
��back
E8
Ȕfs$,FS$
EBȔdisc$,DISC$
ELȔpath$,PATH$
EVȔsubpath$,SUBPATH$
E`�
Et��restoreCSD
E~5fs$=FS$:disc$=DISC$:path$=PATH$:subpath$=SUBPATH$
E��
E���osfsc
E�
Ȏa?3�
E��1
E� ș"XOS_Args",5,x?3�A%,,x?3;F
E��(F� 1)=0��rts��swi_error
E��x?3<>0�x?3=&FF
E�!�3:addr=x?3+((y?3)<<8)+memory
E�b$=�strip($addr)
E�-ș"XOS_Find",&4D,�add_(b$),�_path(b$)�Q;F
FA%=Q
F�Q=0�(F� 1)<>0�
F8�upper(b$),4)="DIR "�(��upper(b$),3)="DIR"��b$=4)�
F(�dir(�b$,�b$-4))
F2�
F<�Oscli%�
FFș"XOS_CLI",b$�A%;F
FP�(F� 1)=0��rts��swi_error
FZ�
Fd�brk(254,"Bad Command")
Fn�
Fx�
F��
F��#Q
F�b$=�addpath(b$)
F�1ș"OS_File",5,b$�,,c%,d%:c%=(c%�&FFFF)+memory
F�ș"OS_File",255,b$,c%,0
F�!pc_store=d%<<16
F��
F�#�2,4:addr=x?3+((y?3)<<8)+memory
F�b$=$addr
F�Tș"XOS_File",13,�add_(b$),,,�_path(b$)�A%,,c%,d%,length%;f%:c%=(c%�&FFFF)+memory
F�E�c%+length%>memory+&8000� c%<memory+&8000�length%=memory+&8000-c%
F�/ș"XOS_Find",&4D,�add_(b$),�_path(b$)�A%;f%
G=�(f%� 1)=0�ș"XOS_GBPB",4,A%,c%,length%:ș"XOS_Find",0,A%
G*�(f%� 1)=0�!pc_store=d%<<16��swi_error
G"�5:�rts
G,�0,6,8:�rts
G6�9,10,11:�rts
G@�"OSFSC ";a?3:Q=�
GJ�
GT�
Gh��osfind
Graddr=memory+x?3+(y?3)*256
G|�a?3=0�
G�ș"XOS_Find",0,y?3�A%;F
G��
G�8ș"XOS_Find",(a?3)�1,�add_($addr),�_path($addr)�A%;F
G��
G�$�(F� 1)=0�a?3=A%:�rts��swi_error
G��
G���osbget
G�ș"XOS_BGet",a?3,y?3�A%;F%
G��(F� 1)=0�
G�
a?3=A%
G�?f=?f�%11111110
G��(F%� 2)<>0�?f+=1
H�rts
H�
H�swi_error
H&�
H0�
HD��osbput
HNș"XOS_BPut",a?3,y?3�A%;F
HX�(F� 1)=0��rts��swi_error
Hb�
Hv��sprite_save(F$)
H�z�F$,".")=0��F$,":")=0��F$,6)<>"<Wimp$"�ș"Wimp_ReportError","    To save, drag the file icon to a directory viewer":�
H�$ș"OS_SpriteOp",256+12,sprite,F$
H��
H�ݤkeymap(A$)
H��I%
H��I%=1�keymaps%
H�'�upper(keymap$(I%))=�upper(A$)�=I%
H��
H�=0
H���setkeymap(A$)
H��I%
IKeyMap$="Default"
I�upper(A$)="DEFAULT"�
I&��>255�A$="RiscPC"�A$="Archimedes"
I �
I*�"Set 6502Em$Keymap "+A$
I4�I%=1�keymaps%
I>g�upper(keymap$(I%))=�upper(A$)�KeyMap$=A$:keymap%=I%:I%=1000:�readkeys("<6502Em$Dir>.Keymaps."+A$)
IH�
IR�
If��readkeymaps
Ip�offset%,N%
Iz
keymap%=0
I�keymaps%=0
I��
I�Lș"OS_GBPB",9,"<6502Em$Dir>.Keymaps",q%,100,offset%,&100,0�,,,N%,offset%
I�keymaps%+=N%
I��offset%=-1
I��keymaps%=0�keysmenu%=-1:�
I�.�keymap$(keymaps%),keysmenu%32+24*keymaps%
I�
offset%=0
I��N%=1�keymaps%
I�Hș"OS_GBPB",9,"<6502Em$Dir>.Keymaps",q%,1,offset%,&100,0�,,,,offset%
I�keymap$(N%)=�string(q%)
I��
I��
J��readpatches
J�offset%,N%
J$patch%=0
J.patches%=0
J8�
JBLș"OS_GBPB",9,"<6502Em$Dir>.Patches",q%,100,offset%,&100,0�,,,N%,offset%
JLpatches%+=N%
JV�offset%=-1
J`�patches%=0�patchmenu%=-1:�
Jj.�patch$(patches%),patchmenu%32+24*patches%
Jt
offset%=0
J~�N%=1�patches%
J�Hș"OS_GBPB",9,"<6502Em$Dir>.Patches",q%,1,offset%,&100,0�,,,,offset%
J�patch$(N%)=�string(q%)
J��
J��
J�ݤstring(A%)
J�
�A$,I%
J��
J�A$=A$+�(A%?I%)
J�	I%+=1
J��A%?I%=0
J�=A$
K
��loadpatch
KI�"Load <6502Em$Dir>.Patches."+patch$(patch%)+" "+�~(code+!patch_addr)
K?patch_on=?patch_on�1
K(�
K<ݤosword14_1(A%)
KF
?buffer=1
KPș"OS_Word",14,buffer
KZ=buffer?A%
Kn��readCMOS
KxȎx?3� 63�
K��0:y?3=�osword14_1(6)
K��1:y?3=1
K��2:y?3=�osword14_1(5)
K��3:y?3=1
K��4:y?3=�osword14_1(4)
K��5:y?3=1
K��6:y?3=�osword14_1(3)
K��7:y?3=�osword14_1(2)
K��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
L
�13:y?3=0
L:y?3=cmos%(x?3� 63)
L"�
L6a?3=y?3
LT�rts
L^�
Lr��readEEPROM
L|y?3=eeprom%(x?3)
L�a?3=y?3
L��rts
L��
L���writeCMOS
L�cmos%(x?3� 63)=y?3
L��rts
L��(x?3� 63)>13�
L�Q=�"<6502Em$Res>.CMOS"
L��#Q=x?3� 63
L��#Q,y?3
L��#Q
L��
M�
M��writeEEPROM
M&eeprom%(x?3)=y?3
M0�rts
M:Q=�"<6502Em$Res>.EEPROM"
MD�#Q=x?3
MN�#Q,y?3
MX�#Q
Mb�
Mv��loadCMOS
M�	�Q,I%
M�Q=�"<6502Em$Res>.CMOS"
M��I%=0�63
M�cmos%(I%)=�#Q
M��
M��#Q
M��
M���loadEEPROM
M�	�Q,I%
M�Q=�"<6502Em$Res>.EEPROM"
M�
�I%=0�255
M�eeprom%(I%)=�#Q
N�
N�#Q
N�
N*��loadcode(C$)
N4'�"LOAD <6502Em$Dir>."+C$+" "+�~code
N>�code+!init_addr
NH�sound_reinit
NR�patch%<>0��loadpatch
N\�
Np��master
Nz�loadcode("CodeM")
N�:�"LOAD <6502Em$Dir>.ROMS.M128.OS3,2 "+�~(memory+&C000)
N�>�"LOAD <6502Em$Dir>.ROMS.M128.OS3,2 "+�~(roms+romsize%*16)
N�)�"LOAD <6502Em$Res>.SHEILA "+�~sheila
N�socket%=15
N��loadROM("M128.Terminal",1)
N�?(roms+romsize%*15+&18B7)=3
N�!?(roms+romsize%*15+&18B8)=&80
N�?(roms+romsize%*15+&18E4)=3
N�!?(roms+romsize%*15+&18E5)=&81
N��loadROM("M128.View",1)
N��loadROM("VDFS",1)
N� �loadROM("M128.BASICIV84",1)
O�loadROM("M128.Edit1,00",1)
O �loadROM("M128.ViewSheet",1)
O�loadROM("M128.DFS2,24",1)
OB
�SRRAM
OL
�SRRAM
OV
�SRRAM
O`
�SRRAM
Oj
�SRRAM
Ot�
O���master35
O��loadcode("CodeM")
O�:�"LOAD <6502Em$Dir>.ROMS.M128.OS3,5 "+�~(memory+&C000)
O�>�"LOAD <6502Em$Dir>.ROMS.M128.OS3,5 "+�~(roms+romsize%*16)
O�)�"LOAD <6502Em$Res>.SHEILA "+�~sheila
O�socket%=15
O�!�loadROM("M128.Terminal35",1)
O�?(roms+romsize%*15+&16A3)=3
O�!?(roms+romsize%*15+&16A4)=&80
O�?(roms+romsize%*15+&16D0)=3
O�!?(roms+romsize%*15+&16D1)=&81
O��loadROM("M128.ViewB3,3",1)
P�loadROM("VDFS",1)
P �loadROM("M128.BASIC4r32",1)
P �loadROM("M128.Edit1,50r",1)
P(!�loadROM("M128.ViewSh1,01",1)
P2�loadROM("M128.DFS2,45",1)
PZ
�SRRAM
Pd
�SRRAM
Pn
�SRRAM
Px
�SRRAM
P�
�SRRAM
P��
P�
��compact
P��loadcode("CodeM")
P�=�"LOAD <6502Em$Dir>.ROMS.Compact.OS5,1 "+�~(memory+&C000)
P�>�"LOAD <6502Em$Dir>.ROMS.Compact.OS5,1 "+�~(roms+&4000*16)
P�)�"LOAD <6502Em$Res>.SHEILA "+�~sheila
P�socket%=15
P��loadROM("Compact.Utils",1)
P�%?(roms+romsize%*15+&9E3A-&8000)=3
P�'?(roms+romsize%*15+&9E3B-&8000)=&82
P�%?(roms+romsize%*15+&9F3A-&8000)=3
Q'?(roms+romsize%*15+&9F3B-&8000)=&83
Q#�loadROM("Compact.BASICIV86",1)
Q"�loadROM("VDFS",1)
Q,
socket%=7
Q6
�SRRAM
Q@
�SRRAM
QJ
�SRRAM
QT
�SRRAM
Q^�
Qr��electron
Q|�loadcode("CodeE")
Q�8�"LOAD <6502Em$Dir>.ROMS.ELECTRON "+�~(memory+&C000)
Q�socket%=15
Q��loadROM("BASICII",1)
Q��loadROM("VDFS",1)
Q��
R
��BBCB
R�loadcode("Code")
R&
?ACCCON=0
R0�useMEMC%�
R:�I%=0�15
RD<�"LOAD <6502Em$Dir>.ROMS.OS1,2 "+�~(roms+&4000+&8000*I%)
RN�
RX�
Rb5�"LOAD <6502Em$Dir>.ROMS.OS1,2 "+�~(memory+&C000)
Rv)�"LOAD <6502Em$Res>.SHEILA "+�~sheila
R��
R�socket%=15
R��loadROM("BASICII",1)
R��loadROM("VDFS",1)
R�
�SRRAM
S�
S��newmachine
S /�useMEMC%��clearmem(roms,roms+16*romsize%)
S*
�initROMs
S>�machine%>4�machine%=0
S\Ȏmachine%�
Sp�1
Sz,�Machine%(1)=0�machine%+=1:�newmachine:�
S��master
S��2
S�,�Machine%(2)=0�machine%+=1:�newmachine:�
S�
�master35
S��3
S�,�Machine%(3)=0�machine%+=1:�newmachine:�
S��compact
S��4
S�
�electron
T:�BBCB
T�
T
�reset(1)
T$OSRDCH_loc=�peek(&FFE0)
T8(�reinstall(MachineSprite$(machine%))
TV�
Tj��default_options
Tt&tapefile$="<6502Em$Dir>.^.Tape-In"
T~Palette%=�
T�
OSRDCH%=�
T�
ROMSEL%=�
T�
Cursor%=�
T�Oscli%=�
T�exact%=�
T�machine%=default_machine%
T�sound_on%=�
T�scroll_hack%=�
T�file_xxx=�
T�volume%=127
T��setkeymap("Default")
T��
U
��save_options
UQ=�"<6502Em$Res>.Options"
U�#Q,Palette%
U(�#Q,OSRDCH%
U2�#Q,ROMSEL%
U<�#Q,Cursor%
UF�#Q,Oscli%
UP�#Q,exact%
UZ�#Q,machine%
Ud�#Q,sound_on%
Un�#Q,file_xxx
Ux�#Q,volume%
U��#Q,KeyMap$
U��#Q
U��
U���load_options
U�&tapefile$="<6502Em$Dir>.^.Tape-In"
U�Q=�"<6502Em$Res>.Options"
U��Q=0��default_options:�
U��#Q,Palette%
U��#Q,OSRDCH%
U��#Q,ROMSEL%
U��#Q,Cursor%
U��#Q,Oscli%
V�#Q,exact%
V�#Q,machine%
V�#Q,sound_on%
V"scroll_hack%=�
V,�#Q,file_xxx
V6�#Q,volume%
V@/�#Q,K$:�setkeymap("Default"):�setkeymap(K$)
VJ�#Q
VT�
Vh��clearmem(S%,E%)
Vr
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
V�	.loop
V�STR R0,[R1],#4
V�
CMP R1,R2
V�BNE loop
V�MOV PC,R14
V�]
V�
�clear
W�
W
��osbyte2
W&�rts
W0�
WD
��osword2
WN4�addr,sec%,len%,buff%,track%,log_sec_size,drive%
WXaddr=memory?&F0
Wbaddr+=memory?&F1<<8
Wladdr+=memory
WvȎmemory?&EF�
W��&7F
W��dfssupport�
W�8ș"XImageDFS_OSWORD7F",,memory?&F0,memory?&F1,memory
W�	a?3=0
W��
W�drive%=addr?0
W�buff%=memory+(addr!1�&FFFF)
W�track%=addr?7
W�sec%=addr?8
W�len%=(addr?9)�%11111
W� log_sec_size=((addr?9)>>5)+7
W�buffer?0=log_sec_size
W�buffer?1=10
Xbuffer?2=1
Xbuffer?3=1
Xbuffer!4=0
X buffer!8=0
X*buffer!12=1<<29
X4buffer!16=&64000
X>buffer!20=0
XHbuffer!24=0
XRbuffer!28=0
X\xș"XADFS_DiscOp",,1+(buffer<<6),(track%*10+sec%)*2^log_sec_size+(osword7F_drive%<<29),buff%,len%*2^log_sec_size�A%;F
Xf"�(F� 1)=0�addr?10=0�addr?10=A%
Xz	a?3=0
X��
X��&72
X��addr?5=8�
X�sec%=addr?8
X�sec%+=addr?7<<8
X�sec%+=(addr?6�%11111)<<16
X�len%=addr?9
X�buff%=memory+(addr!1�&FFFF)
X�Jș"XADFS_DiscOp",,1,sec%*256+(osword72_drive%<<29),buff%,len%*256�A%;F
Y�(F� 1)=0�?addr=0�?addr=A%
Y.	a?3=0
Y8�
YB
YL�
Y`�rts
Y~�
Y���split(�A$,�B$)
Y��I%
Y�ȕ�A$,1)=" "
Y�A$=�A$,�A$-1)
Y��
Y�
�I%=2��A$
Y�8�A$,I%,1)="+"�A$=�A$,I%-1)+" "+�A$,1+�A$-I%):I%=255
Y��
Y�I%=�A$," ")
Y�B$=�A$,I%-1)
ZA$=�A$,�A$-I%)
Z
�
Z��split2(�A$,�B$)
Z(�I%
Z2ȕ�A$,1)=" "
Z<A$=�A$,�A$-1)
ZF�
ZPI%=�A$," ")
ZZB$=�A$,I%-1)
ZdA$=�A$,�A$-I%)
Zn�
Z�
��srwrite
Z��A$,C$,addr,I%,J%
Z�addr=memory?&F2
Z�addr+=(memory?&F3)<<8
Z�addr+=memory
Z�
addr+=y?3
Z�C$=$addr
Z��split(C$,A$)
Z�"�A$>4��brk(0,"Bad Address"):�
Z�
�I%=1��A$
[J%=��A$,I%,1)
[8�(J%<48�J%>57)�(J%<65�J%>70)��brk(0,"Bad Address"):�
[�
[,start%=�("&"+A$)
[@)�start%>&8000��brk(0,"Bad Address"):�
[T�split(C$,A$)
[h0�A$,1)="+"�end%=start%:A$=�A$,�A$-1)�end%=0
[|"�A$>4��brk(0,"Bad Address"):�
[�
�I%=1��A$
[�J%=��A$,I%,1)
[�8�(J%<48�J%>57)�(J%<65�J%>70)��brk(0,"Bad Address"):�
[��
[�end%+=�("&"+A$)
[�3�end%<start%�end%>&8000��brk(0,"Bad Address"):�
[��split(C$,A$)
[�#�A$<>4��brk(0,"Bad Address"):�
[�
�I%=1��A$
\J%=��A$,I%,1)
\8�(J%<48�J%>57)�(J%<65�J%>70)��brk(0,"Bad Address"):�
\�
\0dest%=�("&"+A$)
\D4�dest%<&8000�dest%>&BFFF��brk(0,"Bad Address"):�
\X�split(C$,A$)
\b
Ȏ�A$�
\l�1
\v
A%=�A$
\�'�A%>=�"W"� A%<=�"Z"�A%=A%-�"W"+�"4"
\��A%>64� A%<71�A%-=7
\�socket%=A%-48
\�0�socket%>15�socket%<0��brk(0,"Bad Socket"):�
\��2
\�G�A$,1)<"0"��A$,1)>"9"��A$,1)<"0"��A$,1)>"9"��brk(0,"Bad Socket"):�
\�socket%=�A$
\�0�socket%>15�socket%<0��brk(0,"Bad Socket"):�
\�
\��brk(0,"Bad Socket"):�
\��
])�I%=0��min(end%-start%,&BFFF-dest%)�4
]>!(roms+romsize%*socket%+I%+dest%-&8000)=start%!(memory+I%)
] �
]4ROMRAM?socket%=0
]H	a?3=0
]R�rts
]f�
]z��drive
]��A$,C$,addr,drive%
]�addr=memory?&F2
]�addr+=(memory?&F3)<<8
]�addr+=memory
]�
addr+=y?3
]�C$=$addr
]��split(C$,file$)
]��split(C$,A$)
]�	ȎA$�
]��"0","1"
^�dfssupport�
^-ș"XImageDFS_BBCToRiscOSDrive",�A$�drive%
^$fs$="ADFS:"
^.disc$=":"+�drive%+"."
^8
path$="$"
^Bsubpath$=""
^L�
^V�"2","3"
^`�dfssupport�
^j-ș"XImageDFS_BBCToRiscOSDrive",�A$�drive%
^tfs$="ADFS:"
^~disc$=":"+�drive%+"."
^�path$="$.DFSSide2"
^�subpath$=""
^��
^��"R","r"
^��readCSD
^�
^��brk(0,"Bad Drive"):�
^��
^�	a?3=0
^��rts
^��
_
��srload
_�A$,C$,addr,I%,J%
_addr=memory?&F2
_(addr+=(memory?&F3)<<8
_2addr+=memory
_<
addr+=y?3
_FC$=$addr
_Z�split2(C$,file$)
_n�split(C$,A$)
_x#�A$<>4��brk(0,"Bad Address"):�
_�
�I%=1��A$
_�J%=��A$,I%,1)
_�8�(J%<48�J%>57)�(J%<65�J%>70)��brk(0,"Bad Address"):�
_��
_�load%=�("&"+A$)
_�4�load%<&8000�load%>&BFFF��brk(0,"Bad Address"):�
_��split(C$,A$)
_���A$,1)="Q"�A$=�A$,�A$-1)
_�
Ȏ�A$�
_��1
_�
A%=�A$
_�'�A%>=�"W"� A%<=�"Z"�A%=A%-�"W"+�"4"
`�A%>64� A%<71�A%-=7
`socket%=A%-48
`0�socket%>15�socket%<0��brk(0,"Bad Socket"):�
`"�2
`,G�A$,1)<"0"��A$,1)>"9"��A$,1)<"0"��A$,1)>"9"��brk(0,"Bad Socket"):�
`6socket%=�A$
`@0�socket%>15�socket%<0��brk(0,"Bad Socket"):�
`J
`T�brk(0,"Bad Socket"):�
`^�
`r:ș"XOS_Find",&40+%1101,�add_(file$),�_path(file$)�A%;F
`|�(F� 1)<>0��swi_error:�
`�	H%=A%
`�Hș"XOS_GBPB",4,A%,load%-&8000+roms+romsize%*socket%,&C000-load%�A%;F
`��(F� 1)<>0��swi_error:�
`�?(ROMRAM+socket%)=0
`�ș"XOS_Find",0,H%�A%;F
`��(F� 1)<>0��swi_error:�
`�	a?3=0
`��rts
`��
`���elkkeys(F$)
a�Q,S$,K%,A$
a"ș"6502_GetElectronMap"�keymap
a0�I%=0�1023�4
a:keymap!I%=&FF
aD�
aX	Q=�F$
ab�Q=0��0,F$+" not found"
al�
avS$=�getword
a��S$,1)="#"�
a��ignoreline
a��
a��S$<>""�
a�S%=�getelk(S$)
a��
a�A$=�getword
a��A$<>""�
a�K%=�getarc(A$)
a�keymap!(K%*4)=S%
a��
a�
�A$=""
a��
b�
b�S$=""��#Q
b �#Q
b4�
bH��readkeys(F$)
b\�Q,S$,K%,A$
bp%ș"6502_ReadKeyMapAddress"�keymap
bz
�I%=0�255
b�keymap?I%=255
b��
b�	Q=�F$
b��Q=0��0,F$+" not found"
b��
b�S$=�getword
b��S$,1)="#"�
b��ignoreline
b��
b��S$<>""�
b�S%=�getbbc(S$)
b��
cA$=�getword
c�A$<>""�
cK%=�getarc(A$)
c$keymap?K%=S%
c.�
c8
�A$=""
cB�
cL�
cV�S$=""��#Q
cj�#Q
c~�
c�
ݤgetword
c�
�I%,A$
c��I%=�#Q:�I%>32�I%=10
c��I%=10�=""
c�
A$=�I%
c��I%=�#Q:A$=A$+�I%:�I%<33
c�
�#Q=�#Q-1
c�=�A$,�A$-1)
c���ignoreline
c��I%
d�I%=�#Q:�I%=&A
d
�
dݤgetelk(A$)
d(
�I%,J%,K%
d2�I%=0�3
d<�J%=0�13
dF-�Elec$(I%,J%)=A$�K%=(I%<<8)+J%:I%=4:J%=14
dP�
dZ�
dd=K%
dxݤgetbbc(A$)
d�
�I%,J%
d�
�I%=0�&7C
d��BBC$(I%)=A$�J%=I%:I%=&80
d��
d�=J%
d�ݤgetarc(A$)
d�
�I%,J%
d��I%=&0�&78
d��ARC$(I%)=A$�J%=I%:I%=&68
d��
d�=J%
e-� Escape,1,2,3,4,5,6,7,8,9,0,-,Left,Right
e/� CapsLock,Q,W,E,R,T,Y,U,I,O,P,Up,Down,Copy
e"*� Ctrl,A,S,D,F,G,H,J,K,L,;,:,Return,""
e,1� Shift,Z,X,C,V,B,N,M,",",.,/,"",Delete,Space
eJA� Shift,Ctrl,bit7,bit6,bit5,bit4,bit3,bit2,bit1,bit0,"","",""
eT'� Q,3,4,5,f4,8,f7,-,^,Left,K6,K7,""
e^&� f0,W,E,T,7,I,9,0,_,Down,K8,K9,""
eh(� 1,2,D,R,6,U,O,P,[,Up,K+,K-,KReturn
er5� CapsLock,A,X,F,Y,J,K,@,:,Return,K/,KDelete,"K."
e|1� ShiftLock,S,C,G,H,N,L,;,],Delete,K#,K*,"K,"
e�/� Tab,Z,Space,V,B,M,",",".",/,Copy,K0,K1,K3
e�2� Escape,f1,f2,f3,f5,f6,f8,f9,\,Right,K4,K5,K2
e�>� Escape,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,"",Print,"",""
e��� `,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+
e�q� LShift,,Z,X,C,V,B,N,M,",",.,/,RShift,Up,K1,K2,K3,CapsLock,LAlt,Space,RAlt,RCtrl,Left,Down,Right,K0,K.,Enter
e�5� "","","","","","","","","","","","","","","",""
e�� # : REM Risc PC key #~
e���readmemmap
e��useMEMC%�romsize%=&4000:�
e�romsize%=&8000
f�MEMC(15),buff 256
fș"OS_ReadMemMapInfo"�S%,N%
f�S%<>32*1024��
f&�I%=0�15
f0�J%=0�N%-1
f:!buff=J%
fDbuff!4=0
fNbuff!8=0
fXbuff!12=-1
fb!ș"OS_ReadMemMapEntries",buff
flC�buff!4=roms+32*1024*I%�MEMC(I%)=J%:?(memory-&8000+I%)=J%:J%=N%
fv�
f��
f��
f���setupmemmap
f��useMEMC%��
f��I%
f��I%=0�15
f�!buff=MEMC(I%)
f�buff!4=roms+&8000*I%
f�buff!8=0
f�buff!12=-1
f� ș"OS_SetMemMapEntries",buff
f��
g!buff=MEMC(?rom� 15)
gbuff!4=memory+&8000
gbuff!8=0
g buff!12=-1
g* ș"OS_SetMemMapEntries",buff
g4!buff=MEMC(0)
g> buff!4=roms+&8000*(?rom� 15)
gHbuff!8=0
gRbuff!12=-1
g\ ș"OS_SetMemMapEntries",buff
gf�
gz��resetmemmap
g��useMEMC%��
g��I%
g��I%=0�15
g�!buff=MEMC(I%)
g�buff!4=roms+&8000*I%
g�buff!8=0
g�buff!12=-1
g� ș"OS_SetMemMapEntries",buff
g��
g��
g�ݤpeek(A%)
g��useMEMC%�=memory?A%:�
h�A%<&8000�
h=memory?A%
h�
h$=?(roms-&8000+A%)
h.�
hB��poke(A%,V%)
hL�useMEMC%�memory?A%=V%:�
hV�I%=0�15
h`memory?(A%+&8000*I%)=V%
hj�
ht�
h���disableCFS
h��machine%>0� machine%<4��
h�+vectors%=memory?&FFB7+(memory?&FFB8<<8)
h�vectors%+=memory
h�(addr%=vectors%?&1E+(vectors%?&1F<<8)
h�"memory2=roms+romsize%*16-&C000
h�memory?addr%=3
h�memory2?addr%=3
h�memory?&FFCE=3
h�memory2?&FFCE=3
imemory?&FFD1=3
i
memory2?&FFD1=3
imemory?&FFD4=3
imemory2?&FFD4=3
i(memory?&FFD7=3
i2memory2?&FFD7=3
i<memory?&FFDA=3
iFmemory2?&FFDA=3
iPmemory?&FFDD=3
iZmemory2?&FFDD=3
id�
ix
��boot
i��rts
i�*Q=�(fs$+disc$+path$+subpath$+".!Boot")
i�]�Q<>0��#Q:disable_reset=�:�file_load(fs$+disc$+path$+subpath$+".!Boot"):disable_reset=�:�
i�)Q=�(fs$+disc$+path$+subpath$+".!Run")
i�\�Q<>0��#Q:disable_reset=�:�snap_load(fs$+disc$+path$+subpath$+".!Run"):disable_reset=�:�
j�brk(214,"File not found")
j"�
j6��demo(A$)
j@2ș"Wimp_ReportError","    "+A$,%11001,"6502Em"
jJ�
�
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 24 76 65 72 73 69  |s, 1995..($versi|
00000070  6f 6e 24 3d 22 31 2e 35  30 44 20 28 32 39 74 68  |on$="1.50D (29th|
00000080  20 4d 61 79 20 31 39 39  36 29 22 0d 00 3c 63 ee  | May 1996)"..<c.|
00000090  85 c8 99 22 58 57 69 6d  70 5f 43 6c 6f 73 65 44  |..."XWimp_CloseD|
000000a0  6f 77 6e 22 3a c8 99 22  58 57 69 6d 70 5f 52 65  |own":.."XWimp_Re|
000000b0  70 6f 72 74 45 72 72 6f  72 22 2c 22 20 20 20 20  |portError","    |
000000c0  46 61 74 61 6c 20 69 6e  74 65 72 6e 61 6c 20 65  |Fatal internal e|
000000d0  72 72 6f 72 20 22 2b c3  9e 2b 22 3a 20 22 2b f6  |rror "+..+": "+.|
000000e0  24 2c 31 2c 22 5a 38 30  45 6d 22 3a c8 98 0d 00  |$,1,"Z80Em":....|
000000f0  50 15 6f 73 77 6f 72 64  37 46 5f 64 72 69 76 65  |P.osword7F_drive|
00000100  25 3d 31 0d 00 5a 15 6f  73 77 6f 72 64 37 32 5f  |%=1..Z.osword72_|
00000110  64 72 69 76 65 25 3d 30  0d 00 6e 0a 74 6f 70 25  |drive%=0..n.top%|
00000120  3d 93 0d 00 78 0e 75 73  65 4d 45 4d 43 25 3d a3  |=...x.useMEMC%=.|
00000130  0d 00 82 0e e7 75 73 65  4d 45 4d 43 25 8c 0d 00  |.....useMEMC%...|
00000140  96 12 d3 3d 93 2d 31 39  2a 33 32 2a 31 30 32 34  |...=.-19*32*1024|
00000150  0d 00 a0 16 6d 65 6d 6f  72 79 3d 93 2b 32 2a 33  |....memory=.+2*3|
00000160  32 2a 31 30 32 34 0d 00  aa 17 72 6f 6d 73 3d 6d  |2*1024....roms=m|
00000170  65 6d 6f 72 79 2b 33 32  2a 31 30 32 34 0d 00 b4  |emory+32*1024...|
00000180  16 72 6f 6d 3d 6d 65 6d  6f 72 79 2d 26 31 30 30  |.rom=memory-&100|
00000190  2b 39 36 0d 00 c8 05 cc  0d 00 dc 14 d3 3d 93 2d  |+96..........=.-|
000001a0  28 36 34 2b 36 34 29 2a  31 30 32 34 0d 00 e6 14  |(64+64)*1024....|
000001b0  6d 65 6d 6f 72 79 3d 93  2b 36 34 2a 31 30 32 34  |memory=.+64*1024|
000001c0  0d 00 fa 05 cd 0d 01 0e  16 73 68 65 69 6c 61 3d  |.........sheila=|
000001d0  6d 65 6d 6f 72 79 2d 26  32 30 30 0d 01 22 0f f2  |memory-&200.."..|
000001e0  72 65 61 64 6d 65 6d 6d  61 70 0d 01 36 12 66 69  |readmemmap..6.fi|
000001f0  6c 65 74 79 70 65 25 3d  26 42 42 43 0d 01 54 1c  |letype%=&BBC..T.|
00000200  c8 9b 22 3c 36 35 30 32  45 6d 24 52 65 73 3e 2e  |.."<6502Em$Res>.|
00000210  53 6f 75 6e 64 37 61 22  0d 01 68 0e f2 74 65 6d  |Sound7a"..h..tem|
00000220  70 6c 61 74 65 73 0d 01  72 0c f2 69 6e 69 74 42  |plates..r..initB|
00000230  42 43 0d 01 7c 0f f2 73  6f 75 6e 64 5f 69 6e 69  |BC..|..sound_ini|
00000240  74 0d 01 86 0f f2 6e 65  77 6d 61 63 68 69 6e 65  |t.....newmachine|
00000250  0d 01 90 09 f2 69 6e 69  74 0d 01 9a 09 f2 70 6f  |.....init.....po|
00000260  6c 6c 0d 01 ae 05 e0 0d  01 cc 16 dd f2 69 6e 73  |ll...........ins|
00000270  74 61 6c 6c 28 73 70 72  69 74 65 24 29 0d 01 d6  |tall(sprite$)...|
00000280  18 ea 73 78 25 2c 73 79  25 2c 73 6d 25 2c 70 78  |..sx%,sy%,sm%,px|
00000290  25 2c 70 79 25 0d 01 e0  22 de 74 65 78 74 5f 62  |%,py%...".text_b|
000002a0  75 66 66 26 31 30 30 2c  73 70 72 69 74 65 5f 62  |uff&100,sprite_b|
000002b0  75 66 66 26 31 30 30 0d  01 ea 31 c8 99 22 57 69  |uff&100...1.."Wi|
000002c0  6d 70 5f 53 70 72 69 74  65 4f 70 22 2c 34 30 2c  |mp_SpriteOp",40,|
000002d0  2c 73 70 72 69 74 65 24  b8 2c 2c 2c 73 78 25 2c  |,sprite$.,,,sx%,|
000002e0  73 79 25 2c 2c 73 6d 25  0d 01 f4 34 c8 99 22 4f  |sy%,,sm%...4.."O|
000002f0  53 5f 52 65 61 64 4d 6f  64 65 56 61 72 69 61 62  |S_ReadModeVariab|
00000300  6c 65 22 2c 73 6d 25 2c  34 b8 2c 2c 70 78 25 3a  |le",sm%,4.,,px%:|
00000310  73 78 25 3d 73 78 25 3c  3c 70 78 25 0d 01 fe 34  |sx%=sx%<<px%...4|
00000320  c8 99 22 4f 53 5f 52 65  61 64 4d 6f 64 65 56 61  |.."OS_ReadModeVa|
00000330  72 69 61 62 6c 65 22 2c  73 6d 25 2c 35 b8 2c 2c  |riable",sm%,5.,,|
00000340  70 79 25 3a 73 79 25 3d  73 79 25 3c 3c 70 79 25  |py%:sy%=sy%<<py%|
00000350  0d 02 08 0a 21 71 25 3d  2d 31 0d 02 12 2f 71 25  |....!q%=-1.../q%|
00000360  21 34 3d 30 3a 71 25 21  38 3d 2d 31 36 3a 71 25  |!4=0:q%!8=-16:q%|
00000370  21 31 32 3d 71 25 21 34  2b 73 78 25 3a 71 25 21  |!12=q%!4+sx%:q%!|
00000380  31 36 3d 32 30 2b 73 79  25 0d 02 26 13 71 25 21  |16=20+sy%..&.q%!|
00000390  32 30 3d 26 31 37 30 30  33 31 30 42 0d 02 3a 16  |20=&1700310B..:.|
000003a0  21 28 71 25 2b 32 34 29  3d 74 65 78 74 5f 62 75  |!(q%+24)=text_bu|
000003b0  66 66 0d 02 44 18 21 28  71 25 2b 32 38 29 3d 73  |ff..D.!(q%+28)=s|
000003c0  70 72 69 74 65 5f 62 75  66 66 0d 02 4e 16 24 74  |prite_buff..N.$t|
000003d0  65 78 74 5f 62 75 66 66  3d 73 70 72 69 74 65 24  |ext_buff=sprite$|
000003e0  0d 02 58 1c 24 73 70 72  69 74 65 5f 62 75 66 66  |..X.$sprite_buff|
000003f0  3d 22 53 22 2b 73 70 72  69 74 65 24 0d 02 62 11  |="S"+sprite$..b.|
00000400  21 28 71 25 2b 33 32 29  3d 26 31 30 30 0d 02 6c  |!(q%+32)=&100..l|
00000410  1f c8 99 22 57 69 6d 70  5f 43 72 65 61 74 65 49  |..."Wimp_CreateI|
00000420  63 6f 6e 22 2c 2c 71 25  b8 21 71 25 0d 02 76 10  |con",,q%.!q%..v.|
00000430  62 61 72 5f 68 61 6e 64  3d 21 71 25 0d 02 80 05  |bar_hand=!q%....|
00000440  e1 0d 02 94 18 dd f2 72  65 69 6e 73 74 61 6c 6c  |.......reinstall|
00000450  28 73 70 72 69 74 65 24  29 0d 02 9e 1c 24 73 70  |(sprite$)....$sp|
00000460  72 69 74 65 5f 62 75 66  66 3d 22 53 22 2b 73 70  |rite_buff="S"+sp|
00000470  72 69 74 65 24 0d 02 a8  16 24 74 65 78 74 5f 62  |rite$....$text_b|
00000480  75 66 66 3d 73 70 72 69  74 65 24 0d 02 b2 0f 62  |uff=sprite$....b|
00000490  75 66 66 65 72 21 30 3d  2d 32 0d 02 bc 15 62 75  |uffer!0=-2....bu|
000004a0  66 66 65 72 21 34 3d 62  61 72 5f 68 61 6e 64 0d  |ffer!4=bar_hand.|
000004b0  02 da 16 62 75 66 66 65  72 21 38 3d 26 30 30 38  |...buffer!8=&008|
000004c0  30 30 30 38 30 0d 02 e4  17 62 75 66 66 65 72 21  |00080....buffer!|
000004d0  31 32 3d 26 30 30 38 30  30 30 38 30 0d 02 ee 21  |12=&00800080...!|
000004e0  c8 99 22 57 69 6d 70 5f  53 65 74 49 63 6f 6e 53  |.."Wimp_SetIconS|
000004f0  74 61 74 65 22 2c 2c 62  75 66 66 65 72 0d 03 02  |tate",,buffer...|
00000500  0e 62 75 66 66 65 72 21  38 3d 30 0d 03 0c 17 62  |.buffer!8=0....b|
00000510  75 66 66 65 72 21 31 32  3d 26 30 30 38 30 30 30  |uffer!12=&008000|
00000520  38 30 0d 03 16 21 c8 99  22 57 69 6d 70 5f 53 65  |80...!.."Wimp_Se|
00000530  74 49 63 6f 6e 53 74 61  74 65 22 2c 2c 62 75 66  |tIconState",,buf|
00000540  66 65 72 0d 03 20 05 e1  0d 03 34 0f dd f2 74 65  |fer.. ....4...te|
00000550  6d 70 6c 61 74 65 73 0d  03 3e 12 de 74 20 34 3a  |mplates..>..t 4:|
00000560  24 74 3d 22 54 41 53 4b  22 0d 03 48 31 c8 99 22  |$t="TASK"..H1.."|
00000570  57 69 6d 70 5f 49 6e 69  74 69 61 6c 69 73 65 22  |Wimp_Initialise"|
00000580  2c 32 30 30 2c 21 74 2c  22 36 35 30 32 45 6d 22  |,200,!t,"6502Em"|
00000590  b8 52 4f 25 2c 68 61 6e  64 25 0d 03 52 65 de 71  |.RO%,hand%..Re.q|
000005a0  25 32 35 36 2c 71 32 25  32 35 36 2c 69 63 6f 6e  |%256,q2%256,icon|
000005b0  6d 65 6e 75 25 33 30 30  2c 6f 70 74 69 6f 6e 6d  |menu%300,optionm|
000005c0  65 6e 75 25 34 30 30 2c  6d 69 73 63 6d 65 6e 75  |enu%400,miscmenu|
000005d0  25 32 30 30 2c 72 6f 6d  6d 65 6e 75 25 38 30 30  |%200,rommenu%800|
000005e0  2c 6d 61 63 68 69 6e 65  5f 6d 65 6e 75 25 32 30  |,machine_menu%20|
000005f0  30 2c 6f 73 63 6c 69 5f  6d 65 6e 75 20 32 30 0d  |0,oscli_menu 20.|
00000600  03 5c 31 de 70 6f 6b 65  6d 65 6e 75 25 35 30 2c  |.\1.pokemenu%50,|
00000610  70 6f 6b 65 76 61 6c 69  64 25 31 32 2c 70 6f 6b  |pokevalid%12,pok|
00000620  65 74 65 78 74 25 31 32  2c 64 72 61 67 20 34 30  |etext%12,drag 40|
00000630  0d 03 66 1e de 74 65 6d  70 5f 72 65 67 73 20 31  |..f..temp_regs 1|
00000640  32 2a 34 2c 62 75 66 66  65 72 26 31 30 30 0d 03  |2*4,buffer&100..|
00000650  70 16 f2 69 6e 73 74 61  6c 6c 28 22 4f 53 a0 31  |p..install("OS.1|
00000660  2e 32 22 29 0d 03 84 10  f2 72 65 61 64 70 61 74  |.2").....readpat|
00000670  63 68 65 73 0d 03 98 0d  e7 52 4f 25 3e 32 39 39  |ches.....RO%>299|
00000680  8c 0d 03 a2 2d c8 99 22  4f 53 5f 42 79 74 65 22  |....-.."OS_Byte"|
00000690  2c 31 36 31 2c 31 34 30  b8 2c 2c 74 25 3a 54 48  |,161,140.,,t%:TH|
000006a0  52 45 45 44 25 3d 2d 28  74 25 80 20 31 29 0d 03  |REED%=-(t%. 1)..|
000006b0  ac 6f e7 54 48 52 45 45  44 25 3d b9 8c c8 99 22  |.o.THREED%=...."|
000006c0  57 69 6d 70 5f 4f 70 65  6e 54 65 6d 70 6c 61 74  |Wimp_OpenTemplat|
000006d0  65 22 2c 2c 22 3c 36 35  30 32 45 6d 24 52 65 73  |e",,"<6502Em$Res|
000006e0  3e 2e 54 65 6d 70 6c 61  74 65 33 44 22 8b c8 99  |>.Template3D"...|
000006f0  22 57 69 6d 70 5f 4f 70  65 6e 54 65 6d 70 6c 61  |"Wimp_OpenTempla|
00000700  74 65 22 2c 2c 22 3c 36  35 30 32 45 6d 24 52 65  |te",,"<6502Em$Re|
00000710  73 3e 2e 54 65 6d 70 6c  61 74 65 73 22 0d 03 b6  |s>.Templates"...|
00000720  30 c8 99 22 57 69 6d 70  5f 4c 6f 61 64 54 65 6d  |0.."Wimp_LoadTem|
00000730  70 6c 61 74 65 22 2c 2c  2d 31 2c 2c 2c 2d 31 2c  |plate",,-1,,,-1,|
00000740  22 69 6e 66 6f 22 b8 2c  41 25 2c 42 25 0d 03 c0  |"info".,A%,B%...|
00000750  35 c8 99 22 57 69 6d 70  5f 4c 6f 61 64 54 65 6d  |5.."Wimp_LoadTem|
00000760  70 6c 61 74 65 22 2c 2c  2d 31 2c 2c 2c 2d 31 2c  |plate",,-1,,,-1,|
00000770  22 78 66 65 72 5f 73 65  6e 64 22 b8 2c 43 25 2c  |"xfer_send".,C%,|
00000780  44 25 0d 03 ca 36 c8 99  22 57 69 6d 70 5f 4c 6f  |D%...6.."Wimp_Lo|
00000790  61 64 54 65 6d 70 6c 61  74 65 22 2c 2c 2d 31 2c  |adTemplate",,-1,|
000007a0  2c 2c 2d 31 2c 22 78 66  65 72 5f 73 65 6e 64 32  |,,-1,"xfer_send2|
000007b0  22 b8 2c 45 25 2c 46 25  0d 03 d4 05 cc 0d 03 de  |".,E%,F%........|
000007c0  33 c8 99 22 57 69 6d 70  5f 4f 70 65 6e 54 65 6d  |3.."Wimp_OpenTem|
000007d0  70 6c 61 74 65 22 2c 2c  22 3c 36 35 30 32 45 6d  |plate",,"<6502Em|
000007e0  24 52 65 73 3e 2e 54 65  6d 70 6c 61 74 65 73 22  |$Res>.Templates"|
000007f0  0d 03 e8 2b 41 25 3d 37  30 30 3a 42 25 3d 33 30  |...+A%=700:B%=30|
00000800  30 3a 43 25 3d 34 30 30  3a 44 25 3d 33 35 30 3a  |0:C%=400:D%=350:|
00000810  45 25 3d 43 25 3a 46 25  3d 44 25 0d 03 f2 05 cd  |E%=C%:F%=D%.....|
00000820  0d 03 fc 40 de 62 75 66  66 65 72 32 20 41 25 2c  |...@.buffer2 A%,|
00000830  69 63 6f 6e 33 20 42 25  2c 78 66 65 72 31 20 43  |icon3 B%,xfer1 C|
00000840  25 2b 34 2c 78 66 65 72  32 20 44 25 2c 78 66 65  |%+4,xfer2 D%,xfe|
00000850  72 33 20 45 25 2b 34 2c  78 66 65 72 34 20 46 25  |r3 E%+4,xfer4 F%|
00000860  0d 04 06 3b c8 99 22 57  69 6d 70 5f 4c 6f 61 64  |...;.."Wimp_Load|
00000870  54 65 6d 70 6c 61 74 65  22 2c 2c 62 75 66 66 65  |Template",,buffe|
00000880  72 32 2c 69 63 6f 6e 33  2c 69 63 6f 6e 33 2b 42  |r2,icon3,icon3+B|
00000890  25 2c 2d 31 2c 22 69 6e  66 6f 22 0d 04 10 3e c8  |%,-1,"info"...>.|
000008a0  99 22 57 69 6d 70 5f 4c  6f 61 64 54 65 6d 70 6c  |."Wimp_LoadTempl|
000008b0  61 74 65 22 2c 2c 78 66  65 72 31 2c 78 66 65 72  |ate",,xfer1,xfer|
000008c0  32 2c 78 66 65 72 32 2b  44 25 2c 2d 31 2c 22 78  |2,xfer2+D%,-1,"x|
000008d0  66 65 72 5f 73 65 6e 64  22 0d 04 1a 3f c8 99 22  |fer_send"...?.."|
000008e0  57 69 6d 70 5f 4c 6f 61  64 54 65 6d 70 6c 61 74  |Wimp_LoadTemplat|
000008f0  65 22 2c 2c 78 66 65 72  33 2c 78 66 65 72 34 2c  |e",,xfer3,xfer4,|
00000900  78 66 65 72 34 2b 46 25  2c 2d 31 2c 22 78 66 65  |xfer4+F%,-1,"xfe|
00000910  72 5f 73 65 6e 64 32 22  0d 04 24 1a c8 99 22 57  |r_send2"..$..."W|
00000920  69 6d 70 5f 43 6c 6f 73  65 54 65 6d 70 6c 61 74  |imp_CloseTemplat|
00000930  65 22 0d 04 2e 2c c8 99  22 57 69 6d 70 5f 43 72  |e"...,.."Wimp_Cr|
00000940  65 61 74 65 57 69 6e 64  6f 77 22 2c 2c 78 66 65  |eateWindow",,xfe|
00000950  72 31 b8 41 25 3a 78 66  65 72 25 3d 41 25 0d 04  |r1.A%:xfer%=A%..|
00000960  38 2d c8 99 22 57 69 6d  70 5f 43 72 65 61 74 65  |8-.."Wimp_Create|
00000970  57 69 6e 64 6f 77 22 2c  2c 78 66 65 72 33 b8 41  |Window",,xfer3.A|
00000980  25 3a 78 66 65 72 32 25  3d 41 25 0d 04 42 2e c8  |%:xfer2%=A%..B..|
00000990  99 22 57 69 6d 70 5f 43  72 65 61 74 65 57 69 6e  |."Wimp_CreateWin|
000009a0  64 6f 77 22 2c 2c 62 75  66 66 65 72 32 b8 41 25  |dow",,buffer2.A%|
000009b0  3a 69 6e 66 6f 25 3d 41  25 0d 04 56 11 21 62 75  |:info%=A%..V.!bu|
000009c0  66 66 65 72 3d 69 6e 66  6f 25 0d 04 60 0e 62 75  |ffer=info%..`.bu|
000009d0  66 66 65 72 21 34 3d 39  0d 04 6a 21 c8 99 22 57  |ffer!4=9..j!.."W|
000009e0  69 6d 70 5f 47 65 74 49  63 6f 6e 53 74 61 74 65  |imp_GetIconState|
000009f0  22 2c 2c 62 75 66 66 65  72 0d 04 74 1c 24 28 62  |",,buffer..t.$(b|
00000a00  75 66 66 65 72 21 32 38  29 3d 76 65 72 73 69 6f  |uffer!28)=versio|
00000a10  6e 24 2b bd 30 0d 04 88  11 21 62 75 66 66 65 72  |n$+.0....!buffer|
00000a20  3d 69 6e 66 6f 25 0d 04  92 0f 62 75 66 66 65 72  |=info%....buffer|
00000a30  21 34 3d 31 31 0d 04 9c  21 c8 99 22 57 69 6d 70  |!4=11...!.."Wimp|
00000a40  5f 47 65 74 49 63 6f 6e  53 74 61 74 65 22 2c 2c  |_GetIconState",,|
00000a50  62 75 66 66 65 72 0d 04  a6 30 ff 22 4c 6f 61 64  |buffer...0."Load|
00000a60  20 3c 36 35 30 32 45 6d  24 52 65 73 3e 2e 53 65  | <6502Em$Res>.Se|
00000a70  72 69 61 6c 4e 6f 20 22  2b c3 7e 28 62 75 66 66  |rialNo "+.~(buff|
00000a80  65 72 21 32 38 29 0d 04  b0 05 e1 0d 04 c4 0a dd  |er!28)..........|
00000a90  f2 69 6e 69 74 0d 04 ce  14 c8 99 22 4f 53 5f 47  |.init......"OS_G|
00000aa0  65 74 45 6e 76 22 b8 41  24 0d 04 d8 10 e7 c2 41  |etEnv".A$......A|
00000ab0  24 2c 31 29 3d 22 20 22  8c 0d 04 e2 08 49 25 3d  |$,1)=" ".....I%=|
00000ac0  30 0d 04 ec 1e f5 49 25  2b 3d 31 3a fd c1 41 24  |0.....I%+=1:..A$|
00000ad0  2c a9 41 24 2d 49 25 2c  31 29 3c 3e 22 20 22 0d  |,.A$-I%,1)<>" ".|
00000ae0  04 f6 12 41 24 3d c0 41  24 2c a9 41 24 2d 49 25  |...A$=.A$,.A$-I%|
00000af0  29 0d 05 00 05 cd 0d 05  0a 1d e7 c2 41 24 2c 31  |)...........A$,1|
00000b00  29 3d bd 33 34 8c 41 24  3d c0 41 24 2c a9 41 24  |)=.34.A$=.A$,.A$|
00000b10  2d 31 29 0d 05 14 1d e7  c0 41 24 2c 31 29 3d bd  |-1)......A$,1)=.|
00000b20  33 34 8c 41 24 3d c2 41  24 2c a9 41 24 2d 31 29  |34.A$=.A$,.A$-1)|
00000b30  0d 05 1e 08 49 25 3d 30  0d 05 28 24 f5 49 25 2b  |....I%=0..($.I%+|
00000b40  3d 31 3a fd c1 41 24 2c  a9 41 24 2d 49 25 2c 31  |=1:..A$,.A$-I%,1|
00000b50  29 3d 22 20 22 84 49 25  3d a9 41 24 0d 05 32 0e  |)=" ".I%=.A$..2.|
00000b60  41 24 3d c2 41 24 2c 49  25 29 0d 05 3c 3c e7 a4  |A$=.A$,I%)..<<..|
00000b70  75 70 70 65 72 28 c1 41  24 2c a9 41 24 2d 39 2c  |upper(.A$,.A$-9,|
00000b80  31 30 29 29 3c 3e 22 2e  21 52 55 4e 49 4d 41 47  |10))<>".!RUNIMAG|
00000b90  45 22 8c f2 73 6e 61 70  5f 6c 6f 61 64 28 41 24  |E"..snap_load(A$|
00000ba0  29 3a f2 42 42 43 0d 05  50 05 e1 0d 05 64 0a dd  |):.BBC..P....d..|
00000bb0  f2 70 6f 6c 6c 0d 05 6e  1f ee 85 e7 a4 72 65 70  |.poll..n.....rep|
00000bc0  6f 72 74 28 f6 24 2c 9f  3c 3e 31 29 3d 32 8c f2  |ort(.$,.<>1)=2..|
00000bd0  71 75 69 74 0d 05 82 05  f5 0d 05 8c 18 6d 61 73  |quit.........mas|
00000be0  6b 25 3d 25 31 31 30 30  30 30 30 31 31 30 30 31  |k%=%110000011001|
00000bf0  31 0d 05 96 10 f2 72 65  73 65 74 6d 65 6d 6d 61  |1.....resetmemma|
00000c00  70 0d 05 a0 22 c8 99 22  57 69 6d 70 5f 50 6f 6c  |p...".."Wimp_Pol|
00000c10  6c 22 2c 6d 61 73 6b 25  2c 71 25 b8 61 63 74 69  |l",mask%,q%.acti|
00000c20  6f 6e 25 0d 05 aa 10 f2  73 65 74 75 70 6d 65 6d  |on%.....setupmem|
00000c30  6d 61 70 0d 05 be 0e c8  8e 61 63 74 69 6f 6e 25  |map......action%|
00000c40  ca 0d 05 c8 1e c9 32 3a  c8 99 22 57 69 6d 70 5f  |......2:.."Wimp_|
00000c50  4f 70 65 6e 57 69 6e 64  6f 77 22 2c 2c 71 25 0d  |OpenWindow",,q%.|
00000c60  05 d2 1f c9 33 3a c8 99  22 57 69 6d 70 5f 43 6c  |....3:.."Wimp_Cl|
00000c70  6f 73 65 57 69 6e 64 6f  77 22 2c 2c 71 25 0d 05  |oseWindow",,q%..|
00000c80  dc 0d c9 36 3a f2 63 6c  69 63 6b 0d 05 e6 0c c9  |...6:.click.....|
00000c90  37 3a f2 73 61 76 65 0d  05 fa 12 c9 39 3a f2 64  |7:.save.....9:.d|
00000ca0  65 63 6f 64 65 6d 65 6e  75 0d 06 04 13 c9 31 37  |ecodemenu.....17|
00000cb0  2c 31 38 3a f2 6d 65 73  73 61 67 65 0d 06 0e 05  |,18:.message....|
00000cc0  cb 0d 06 22 06 fd a3 0d  06 2c 05 e1 0d 06 40 0d  |...".....,....@.|
00000cd0  dd f2 6d 65 73 73 61 67  65 0d 06 4a 0c c8 8e 71  |..message..J...q|
00000ce0  25 21 31 36 ca 0d 06 54  0c c9 30 3a f2 71 75 69  |%!16...T..0:.qui|
00000cf0  74 0d 07 4e 06 c9 33 0d  07 58 1a c8 99 22 4f 53  |t..N..3..X..."OS|
00000d00  5f 57 72 69 74 65 4e 22  2c 71 25 2b 34 34 b8 41  |_WriteN",q%+44.A|
00000d10  24 0d 07 62 0c c8 8e 71  25 21 34 30 ca 0d 07 6c  |$..b...q%!40...l|
00000d20  1d c9 66 69 6c 65 74 79  70 65 25 3a f2 73 6e 61  |..filetype%:.sna|
00000d30  70 5f 6c 6f 61 64 28 41  24 29 0d 07 76 22 c9 26  |p_load(A$)..v".&|
00000d40  46 46 42 2c 26 46 46 45  3a f2 66 69 6c 65 5f 6c  |FFB,&FFE:.file_l|
00000d50  6f 61 64 28 41 24 29 3a  f2 42 42 43 0d 07 80 05  |oad(A$):.BBC....|
00000d60  cb 0d 07 8a 06 c9 35 0d  07 94 0c c8 8e 71 25 21  |......5......q%!|
00000d70  34 30 ca 0d 07 a8 0e c9  66 69 6c 65 74 79 70 65  |40......filetype|
00000d80  25 0d 07 b2 37 71 25 21  31 36 3d 34 3a 71 25 21  |%...7q%!16=4:q%!|
00000d90  31 32 3d 71 25 21 38 3a  c8 99 22 57 69 6d 70 5f  |12=q%!8:.."Wimp_|
00000da0  53 65 6e 64 4d 65 73 73  61 67 65 22 2c 31 37 2c  |SendMessage",17,|
00000db0  71 25 2c 71 25 21 32 30  0d 07 bc 1a c8 99 22 4f  |q%,q%!20......"O|
00000dc0  53 5f 57 72 69 74 65 4e  22 2c 71 25 2b 34 34 b8  |S_WriteN",q%+44.|
00000dd0  41 24 0d 07 c6 17 f2 73  6e 61 70 5f 6c 6f 61 64  |A$.....snap_load|
00000de0  28 41 24 29 3a f2 42 42  43 0d 07 da 05 7f 0d 07  |(A$):.BBC.......|
00000df0  e4 0a e7 ac a6 2d 31 8c  0d 07 ee 1a c8 99 22 4f  |.....-1......."O|
00000e00  53 5f 57 72 69 74 65 4e  22 2c 71 25 2b 34 34 b8  |S_WriteN",q%+44.|
00000e10  41 24 0d 07 f8 09 46 24  3d 41 24 0d 08 02 2f c8  |A$....F$=A$.../.|
00000e20  99 22 4f 53 5f 46 69 6c  65 22 2c 35 2c 46 24 b8  |."OS_File",5,F$.|
00000e30  74 79 70 65 25 2c 2c 6c  6f 61 64 25 2c 65 78 65  |type%,,load%,exe|
00000e40  63 25 2c 6c 65 6e 67 74  68 25 0d 08 0c 2d e7 74  |c%,length%...-.t|
00000e50  79 70 65 25 3d 32 80 c0  c2 46 24 2c a9 46 24 2d  |ype%=2...F$,.F$-|
00000e60  a9 a4 6c 65 61 66 28 46  24 29 2d 31 29 2c 31 29  |..leaf(F$)-1),1)|
00000e70  3c 3e 22 21 22 8c e1 0d  08 16 a7 e7 74 79 70 65  |<>"!".......type|
00000e80  25 3d 32 8c 46 24 3d 41  24 2b 22 2e 21 52 75 6e  |%=2.F$=A$+".!Run|
00000e90  22 3a c8 99 22 4f 53 5f  46 69 6c 65 22 2c 35 2c  |":.."OS_File",5,|
00000ea0  46 24 b8 74 79 70 65 25  2c 2c 6c 6f 61 64 25 2c  |F$.type%,,load%,|
00000eb0  65 78 65 63 25 2c 6c 65  6e 67 74 68 25 3a e7 28  |exec%,length%:.(|
00000ec0  6c 6f 61 64 25 80 26 46  46 46 30 30 29 3d 26 42  |load%.&FFF00)=&B|
00000ed0  42 43 30 30 8c 71 25 21  31 36 3d 34 3a 71 25 21  |BC00.q%!16=4:q%!|
00000ee0  31 32 3d 71 25 21 38 3a  c8 99 22 57 69 6d 70 5f  |12=q%!8:.."Wimp_|
00000ef0  53 65 6e 64 4d 65 73 73  61 67 65 22 2c 31 37 2c  |SendMessage",17,|
00000f00  71 25 2c 71 25 21 32 30  3a f2 73 6e 61 70 5f 6c  |q%,q%!20:.snap_l|
00000f10  6f 61 64 28 46 24 29 3a  f2 42 42 43 3a e1 0d 08  |oad(F$):.BBC:...|
00000f20  20 58 e7 74 79 70 65 25  3d 30 8c 46 24 3d 41 24  | X.type%=0.F$=A$|
00000f30  2b 22 2e 22 2b c2 41 24  2c a9 41 24 2d a9 a4 6c  |+"."+.A$,.A$-..l|
00000f40  65 61 66 28 41 24 29 2d  32 29 3a c8 99 22 4f 53  |eaf(A$)-2):.."OS|
00000f50  5f 46 69 6c 65 22 2c 35  2c 46 24 b8 74 79 70 65  |_File",5,F$.type|
00000f60  25 2c 2c 6c 6f 61 64 25  2c 65 78 65 63 25 2c 6c  |%,,load%,exec%,l|
00000f70  65 6e 67 74 68 25 0d 08  3e 59 e7 28 28 6c 6f 61  |ength%..>Y.((loa|
00000f80  64 25 3e 3e 3e 31 36 29  3d 30 84 28 6c 6f 61 64  |d%>>>16)=0.(load|
00000f90  25 3e 3e 3e 31 36 29 3d  26 46 46 46 46 84 28 6c  |%>>>16)=&FFFF.(l|
00000fa0  6f 61 64 25 3e 3e 3e 31  36 29 3d 26 30 30 46 46  |oad%>>>16)=&00FF|
00000fb0  29 80 28 6c 6f 61 64 25  80 26 46 46 46 46 29 3c  |).(load%.&FFFF)<|
00000fc0  26 38 30 30 30 80 20 74  79 70 65 25 3d 31 8c 0d  |&8000. type%=1..|
00000fd0  08 48 37 71 25 21 31 36  3d 34 3a 71 25 21 31 32  |.H7q%!16=4:q%!12|
00000fe0  3d 71 25 21 38 3a c8 99  22 57 69 6d 70 5f 53 65  |=q%!8:.."Wimp_Se|
00000ff0  6e 64 4d 65 73 73 61 67  65 22 2c 31 37 2c 71 25  |ndMessage",17,q%|
00001000  2c 71 25 21 32 30 0d 08  52 12 f2 66 69 6c 65 5f  |,q%!20..R..file_|
00001010  6c 6f 61 64 28 46 24 29  0d 08 5c 08 f2 42 42 43  |load(F$)..\..BBC|
00001020  0d 08 66 05 cd 0d 08 70  05 cd 0d 08 7a 05 cb 0d  |..f....p....z...|
00001030  08 84 0b c9 26 34 30 30  43 31 0d 08 8e 05 cb 0d  |....&400C1......|
00001040  08 98 05 e1 0d 09 06 0b  dd f2 63 6c 69 63 6b 0d  |..........click.|
00001050  09 10 0c 6d 78 25 3d 71  25 21 30 0d 09 1a 0c 6d  |...mx%=q%!0....m|
00001060  79 25 3d 71 25 21 34 0d  09 24 0c 6d 62 25 3d 71  |y%=q%!4..$.mb%=q|
00001070  25 21 38 0d 09 2e 0c 68  25 3d 71 25 21 31 32 0d  |%!8....h%=q%!12.|
00001080  09 38 0c 69 25 3d 71 25  21 31 36 0d 09 42 0b e7  |.8.i%=q%!16..B..|
00001090  68 25 3d 2d 32 8c 0d 09  4c 3f e7 6d 62 25 3d 32  |h%=-2...L?.mb%=2|
000010a0  8c f2 6d 65 6e 75 73 3a  c8 99 22 57 69 6d 70 5f  |..menus:.."Wimp_|
000010b0  43 72 65 61 74 65 4d 65  6e 75 22 2c 2c 69 63 6f  |CreateMenu",,ico|
000010c0  6e 6d 65 6e 75 25 2c 6d  78 25 2d 36 34 2c 39 36  |nmenu%,mx%-64,96|
000010d0  2b 38 2a 34 34 0d 09 56  0b e7 6d 62 25 3d 31 8c  |+8*44..V..mb%=1.|
000010e0  0d 09 60 0c f2 72 65 61  64 43 53 44 0d 09 6a 08  |..`..readCSD..j.|
000010f0  f2 42 42 43 0d 09 74 05  cd 0d 09 7e 0f e7 6d 62  |.BBC..t....~..mb|
00001100  25 3d 34 8c f2 42 42 43  0d 09 88 05 cd 0d 09 92  |%=4..BBC........|
00001110  35 e7 69 25 3d 33 80 28  68 25 3d 78 66 65 72 25  |5.i%=3.(h%=xfer%|
00001120  84 68 25 3d 78 66 65 72  32 25 29 8c c8 99 22 57  |.h%=xfer2%)..."W|
00001130  69 6d 70 5f 43 72 65 61  74 65 4d 65 6e 75 22 2c  |imp_CreateMenu",|
00001140  2d 31 0d 0b c2 05 e1 0d  0b e0 0b dd f2 6d 65 6e  |-1...........men|
00001150  75 73 0d 0b ea 07 ea 50  25 0d 0b f4 39 f2 6d 65  |us.....P%...9.me|
00001160  6e 75 68 65 61 64 65 72  28 69 63 6f 6e 6d 65 6e  |nuheader(iconmen|
00001170  75 25 2c 22 36 35 30 32  45 6d 22 2c a9 22 53 69  |u%,"6502Em",."Si|
00001180  6e 67 6c 65 20 54 61 73  6b 20 22 2a 31 36 2b 31  |ngle Task "*16+1|
00001190  32 29 0d 0b fe 27 f2 6d  65 6e 75 69 74 65 6d 28  |2)...'.menuitem(|
000011a0  30 2c 69 6e 66 6f 25 2c  26 30 37 30 30 30 30 30  |0,info%,&0700000|
000011b0  31 2c 22 49 6e 66 6f 22  29 0d 0c 08 30 f2 6d 65  |1,"Info")...0.me|
000011c0  6e 75 69 74 65 6d 28 30  2c 6f 70 74 69 6f 6e 6d  |nuitem(0,optionm|
000011d0  65 6e 75 25 2c 26 30 37  30 30 30 30 30 31 2c 22  |enu%,&07000001,"|
000011e0  4f 70 74 69 6f 6e 73 22  29 0d 0c 12 4d f2 6d 65  |Options")...M.me|
000011f0  6e 75 69 74 65 6d 28 2d  28 70 61 74 63 68 25 3c  |nuitem(-(patch%<|
00001200  3e 30 29 2c 70 61 74 63  68 6d 65 6e 75 25 2c 26  |>0),patchmenu%,&|
00001210  30 37 30 30 30 30 30 31  84 2d 28 32 5e 32 32 29  |07000001.-(2^22)|
00001220  2a 28 70 61 74 63 68 65  73 25 3d 30 29 2c 22 50  |*(patches%=0),"P|
00001230  61 74 63 68 22 29 0d 0c  1c 2a f2 6d 65 6e 75 69  |atch")...*.menui|
00001240  74 65 6d 28 30 2c 72 6f  6d 6d 65 6e 75 25 2c 26  |tem(0,rommenu%,&|
00001250  30 37 30 30 30 30 30 31  2c 22 52 4f 4d 73 22 29  |07000001,"ROMs")|
00001260  0d 0c 26 2b f2 6d 65 6e  75 69 74 65 6d 28 30 2c  |..&+.menuitem(0,|
00001270  6d 69 73 63 6d 65 6e 75  25 2c 26 30 37 30 30 30  |miscmenu%,&07000|
00001280  30 30 31 2c 22 4d 69 73  63 22 29 0d 0c 44 2e f2  |001,"Misc")..D..|
00001290  6d 65 6e 75 69 74 65 6d  28 30 2c 78 66 65 72 25  |menuitem(0,xfer%|
000012a0  2c 26 30 37 30 30 30 30  30 31 84 28 32 5e 32 32  |,&07000001.(2^22|
000012b0  29 2c 22 53 61 76 65 22  29 0d 0c 58 31 f2 6d 65  |),"Save")..X1.me|
000012c0  6e 75 69 74 65 6d 28 30  2c 78 66 65 72 32 25 2c  |nuitem(0,xfer2%,|
000012d0  26 30 37 30 30 30 30 30  31 84 28 32 5e 32 32 29  |&07000001.(2^22)|
000012e0  2c 22 53 70 72 69 74 65  22 29 0d 0c 80 26 f2 6d  |,"Sprite")...&.m|
000012f0  65 6e 75 69 74 65 6d 28  26 38 30 2c 2d 31 2c 26  |enuitem(&80,-1,&|
00001300  30 37 30 30 30 30 30 31  2c 22 51 75 69 74 22 29  |07000001,"Quit")|
00001310  0d 0c 94 24 62 75 66 66  65 72 21 30 3d 30 3a 62  |...$buffer!0=0:b|
00001320  75 66 66 65 72 21 34 3d  30 3a 62 75 66 66 65 72  |uffer!4=0:buffer|
00001330  21 38 3d 30 0d 0c 9e 34  c8 99 22 4f 53 5f 52 65  |!8=0...4.."OS_Re|
00001340  61 64 56 61 72 56 61 6c  22 2c 22 36 35 30 32 45  |adVarVal","6502E|
00001350  6d 24 4b 65 79 6d 61 70  22 2c 62 75 66 66 65 72  |m$Keymap",buffer|
00001360  2c 32 35 35 b8 2c 53 24  0d 0c a8 17 6b 65 79 6d  |,255.,S$....keym|
00001370  61 70 25 3d a4 6b 65 79  6d 61 70 28 53 24 29 0d  |ap%=.keymap(S$).|
00001380  0c bc 11 e7 6b 65 79 6d  61 70 73 25 3c 3e 30 8c  |....keymaps%<>0.|
00001390  0d 0c c6 2d f2 6d 65 6e  75 68 65 61 64 65 72 28  |...-.menuheader(|
000013a0  6b 65 79 73 6d 65 6e 75  25 2c 22 4b 65 79 6d 61  |keysmenu%,"Keyma|
000013b0  70 73 22 2c 31 32 2a 31  36 2b 31 32 29 0d 0c d0  |ps",12*16+12)...|
000013c0  12 e3 49 25 3d 31 b8 6b  65 79 6d 61 70 73 25 0d  |..I%=1.keymaps%.|
000013d0  0c da 47 f2 6d 65 6e 75  69 74 65 6d 28 2d 26 38  |..G.menuitem(-&8|
000013e0  30 2a 28 49 25 3d 6b 65  79 6d 61 70 73 25 29 2d  |0*(I%=keymaps%)-|
000013f0  28 6b 65 79 6d 61 70 25  3d 49 25 29 2c 2d 31 2c  |(keymap%=I%),-1,|
00001400  26 30 37 30 30 30 30 30  31 2c 6b 65 79 6d 61 70  |&07000001,keymap|
00001410  24 28 49 25 29 29 0d 0c  e4 05 ed 0d 0c ee 05 cd  |$(I%))..........|
00001420  0d 0d 02 11 e7 70 61 74  63 68 65 73 25 3c 3e 30  |.....patches%<>0|
00001430  8c 0d 0d 0c 2e f2 6d 65  6e 75 68 65 61 64 65 72  |......menuheader|
00001440  28 70 61 74 63 68 6d 65  6e 75 25 2c 22 50 61 74  |(patchmenu%,"Pat|
00001450  63 68 65 73 22 2c 31 32  2a 31 36 2b 31 32 29 0d  |ches",12*16+12).|
00001460  0d 16 12 e3 49 25 3d 31  b8 70 61 74 63 68 65 73  |....I%=1.patches|
00001470  25 0d 0d 20 45 f2 6d 65  6e 75 69 74 65 6d 28 2d  |%.. E.menuitem(-|
00001480  26 38 30 2a 28 49 25 3d  70 61 74 63 68 65 73 25  |&80*(I%=patches%|
00001490  29 2d 28 70 61 74 63 68  25 3d 49 25 29 2c 2d 31  |)-(patch%=I%),-1|
000014a0  2c 26 30 37 30 30 30 30  30 31 2c 70 61 74 63 68  |,&07000001,patch|
000014b0  24 28 49 25 29 29 0d 0d  2a 05 ed 0d 0d 34 05 cd  |$(I%))..*....4..|
000014c0  0d 0d 48 2f f2 6d 65 6e  75 68 65 61 64 65 72 28  |..H/.menuheader(|
000014d0  72 6f 6d 6d 65 6e 75 25  2c 22 50 72 6f 74 65 63  |rommenu%,"Protec|
000014e0  74 65 64 3f 22 2c 31 32  2a 31 36 2b 31 32 29 0d  |ted?",12*16+12).|
000014f0  0d 52 0f e3 49 25 3d 31  35 b8 30 88 2d 31 0d 0d  |.R..I%=15.0.-1..|
00001500  5c 46 f2 6d 65 6e 75 69  74 65 6d 28 2d 28 3f 28  |\F.menuitem(-(?(|
00001510  52 4f 4d 52 41 4d 2b 49  25 29 3c 3e 30 29 2d 26  |ROMRAM+I%)<>0)-&|
00001520  38 30 2a 28 49 25 3d 30  29 2c 2d 31 2c 26 30 37  |80*(I%=0),-1,&07|
00001530  30 30 30 30 30 31 2c a4  52 4f 4d 6e 61 6d 65 28  |000001,.ROMname(|
00001540  49 25 29 29 0d 0d 66 05  ed 0d 0d 7a 38 f2 6d 65  |I%))..f....z8.me|
00001550  6e 75 68 65 61 64 65 72  28 6d 69 73 63 6d 65 6e  |nuheader(miscmen|
00001560  75 25 2c 22 4d 69 73 63  22 2c a9 22 44 69 73 61  |u%,"Misc",."Disa|
00001570  62 6c 65 20 54 61 70 65  20 22 2a 31 36 2b 31 32  |ble Tape "*16+12|
00001580  29 0d 0d 84 28 f2 6d 65  6e 75 69 74 65 6d 28 30  |)...(.menuitem(0|
00001590  2c 2d 31 2c 26 30 37 30  30 30 30 30 31 2c 22 52  |,-1,&07000001,"R|
000015a0  65 61 64 20 43 53 44 22  29 0d 0d 8e 25 f2 6d 65  |ead CSD")...%.me|
000015b0  6e 75 69 74 65 6d 28 30  2c 2d 31 2c 26 30 37 30  |nuitem(0,-1,&070|
000015c0  30 30 30 30 31 2c 22 52  65 73 65 74 22 29 0d 0d  |00001,"Reset")..|
000015d0  98 1b e7 6d 61 63 68 69  6e 65 25 3d 30 84 6d 61  |...machine%=0.ma|
000015e0  63 68 69 6e 65 25 3d 34  8c 0d 0d a2 2e f2 6d 65  |chine%=4......me|
000015f0  6e 75 69 74 65 6d 28 26  38 30 2c 2d 31 2c 26 30  |nuitem(&80,-1,&0|
00001600  37 30 30 30 30 30 31 2c  22 44 69 73 61 62 6c 65  |7000001,"Disable|
00001610  20 54 61 70 65 22 29 0d  0d ac 05 cc 0d 0d b6 33  | Tape")........3|
00001620  f2 6d 65 6e 75 69 74 65  6d 28 26 38 30 2c 2d 31  |.menuitem(&80,-1|
00001630  2c 26 30 37 30 30 30 30  30 31 84 32 5e 32 32 2c  |,&07000001.2^22,|
00001640  22 44 69 73 61 62 6c 65  20 54 61 70 65 22 29 0d  |"Disable Tape").|
00001650  0d c0 05 cd 0d 0d d4 3d  f2 6d 65 6e 75 68 65 61  |.......=.menuhea|
00001660  64 65 72 28 6f 70 74 69  6f 6e 6d 65 6e 75 25 2c  |der(optionmenu%,|
00001670  22 4f 70 74 69 6f 6e 73  22 2c a9 22 53 61 76 65  |"Options",."Save|
00001680  20 4f 70 74 69 6f 6e 73  20 22 2a 31 36 2b 31 32  | Options "*16+12|
00001690  29 0d 0d e8 42 f2 6d 65  6e 75 69 74 65 6d 28 30  |)...B.menuitem(0|
000016a0  2c 6b 65 79 73 6d 65 6e  75 25 2c 26 30 37 30 30  |,keysmenu%,&0700|
000016b0  30 30 30 31 84 2d 28 32  5e 32 32 29 2a 28 6b 65  |0001.-(2^22)*(ke|
000016c0  79 6d 61 70 73 25 3d 30  29 2c 22 4b 65 79 6d 61  |ymaps%=0),"Keyma|
000016d0  70 22 29 0d 0d fc 31 f2  6d 65 6e 75 69 74 65 6d  |p")...1.menuitem|
000016e0  28 2d 52 4f 4d 53 45 4c  25 2c 2d 31 2c 26 30 37  |(-ROMSEL%,-1,&07|
000016f0  30 30 30 30 30 31 2c 22  50 61 67 65 64 20 52 4f  |000001,"Paged RO|
00001700  4d 73 22 29 0d 0e 06 2f  f2 6d 65 6e 75 69 74 65  |Ms").../.menuite|
00001710  6d 28 2d 50 61 6c 65 74  74 65 25 2c 2d 31 2c 26  |m(-Palette%,-1,&|
00001720  30 37 30 30 30 30 30 31  2c 22 50 61 6c 65 74 74  |07000001,"Palett|
00001730  65 22 29 0d 0e 10 2d f2  6d 65 6e 75 69 74 65 6d  |e")...-.menuitem|
00001740  28 2d 43 75 72 73 6f 72  25 2c 2d 31 2c 26 30 37  |(-Cursor%,-1,&07|
00001750  30 30 30 30 30 31 2c 22  43 75 72 73 6f 72 22 29  |000001,"Cursor")|
00001760  0d 0e 1a 45 f2 69 6e 64  69 72 65 63 74 65 64 69  |...E.indirectedi|
00001770  74 65 6d 28 2d 4f 73 63  6c 69 25 2c 2d 31 2c 25  |tem(-Oscli%,-1,%|
00001780  31 30 30 30 30 30 30 30  31 2c 22 50 61 73 73 20  |100000001,"Pass |
00001790  6f 6e 20 4f 53 43 4c 49  22 2c 6f 73 63 6c 69 5f  |on OSCLI",oscli_|
000017a0  6d 65 6e 75 29 0d 0e 24  31 f2 6d 65 6e 75 69 74  |menu)..$1.menuit|
000017b0  65 6d 28 2d 65 78 61 63  74 25 2c 2d 31 2c 26 30  |em(-exact%,-1,&0|
000017c0  37 30 30 30 30 30 31 2c  22 45 78 61 63 74 20 53  |7000001,"Exact S|
000017d0  70 65 65 64 22 29 0d 0e  2e 32 f2 6d 65 6e 75 69  |peed")...2.menui|
000017e0  74 65 6d 28 30 2c 6d 61  63 68 69 6e 65 5f 6d 65  |tem(0,machine_me|
000017f0  6e 75 25 2c 26 30 37 30  30 30 30 30 31 2c 22 4d  |nu%,&07000001,"M|
00001800  61 63 68 69 6e 65 22 29  0d 0e 38 2e f2 6d 65 6e  |achine")..8..men|
00001810  75 69 74 65 6d 28 2d 73  6f 75 6e 64 5f 6f 6e 25  |uitem(-sound_on%|
00001820  2c 2d 31 2c 26 30 37 30  30 30 30 30 31 2c 22 53  |,-1,&07000001,"S|
00001830  6f 75 6e 64 22 29 0d 0e  42 37 f2 6d 65 6e 75 69  |ound")..B7.menui|
00001840  74 65 6d 28 2d 73 63 72  6f 6c 6c 5f 68 61 63 6b  |tem(-scroll_hack|
00001850  25 2c 2d 31 2c 26 30 37  30 30 30 30 30 31 2c 22  |%,-1,&07000001,"|
00001860  53 63 72 6f 6c 6c 20 48  61 63 6b 22 29 0d 0e 4c  |Scroll Hack")..L|
00001870  30 f2 6d 65 6e 75 69 74  65 6d 28 2d 66 69 6c 65  |0.menuitem(-file|
00001880  5f 78 78 78 2c 2d 31 2c  26 30 37 30 30 30 30 30  |_xxx,-1,&0700000|
00001890  31 2c 22 66 69 6c 65 5f  78 78 78 22 29 0d 0e 56  |1,"file_xxx")..V|
000018a0  27 f2 6d 65 6e 75 69 74  65 6d 28 30 2c 2d 31 2c  |'.menuitem(0,-1,|
000018b0  26 30 37 30 30 30 30 30  31 2c 22 44 65 66 61 75  |&07000001,"Defau|
000018c0  6c 74 22 29 0d 0e 60 2e  f2 6d 65 6e 75 69 74 65  |lt")..`..menuite|
000018d0  6d 28 26 38 30 2c 2d 31  2c 26 30 37 30 30 30 30  |m(&80,-1,&070000|
000018e0  30 31 2c 22 53 61 76 65  20 4f 70 74 69 6f 6e 73  |01,"Save Options|
000018f0  22 29 0d 0e 74 3d f2 6d  65 6e 75 68 65 61 64 65  |")..t=.menuheade|
00001900  72 28 6d 61 63 68 69 6e  65 5f 6d 65 6e 75 25 2c  |r(machine_menu%,|
00001910  22 4d 61 63 68 69 6e 65  22 2c a9 22 4d 61 73 74  |"Machine",."Mast|
00001920  65 72 20 31 32 38 20 22  2a 31 36 2b 31 32 29 0d  |er 128 "*16+12).|
00001930  0e 7e 4d f2 6d 65 6e 75  69 74 65 6d 28 2d 28 6d  |.~M.menuitem(-(m|
00001940  61 63 68 69 6e 65 25 3d  30 29 2c 2d 31 2c 26 30  |achine%=0),-1,&0|
00001950  37 30 30 30 30 30 31 84  2d 28 32 5e 32 32 29 2a  |7000001.-(2^22)*|
00001960  28 4d 61 63 68 69 6e 65  25 28 30 29 3d 30 29 2c  |(Machine%(0)=0),|
00001970  4d 61 63 68 69 6e 65 24  28 30 29 29 0d 0e 88 4d  |Machine$(0))...M|
00001980  f2 6d 65 6e 75 69 74 65  6d 28 2d 28 6d 61 63 68  |.menuitem(-(mach|
00001990  69 6e 65 25 3d 31 29 2c  2d 31 2c 26 30 37 30 30  |ine%=1),-1,&0700|
000019a0  30 30 30 31 84 2d 28 32  5e 32 32 29 2a 28 4d 61  |0001.-(2^22)*(Ma|
000019b0  63 68 69 6e 65 25 28 31  29 3d 30 29 2c 4d 61 63  |chine%(1)=0),Mac|
000019c0  68 69 6e 65 24 28 31 29  29 0d 0e 92 4d f2 6d 65  |hine$(1))...M.me|
000019d0  6e 75 69 74 65 6d 28 2d  28 6d 61 63 68 69 6e 65  |nuitem(-(machine|
000019e0  25 3d 32 29 2c 2d 31 2c  26 30 37 30 30 30 30 30  |%=2),-1,&0700000|
000019f0  31 84 2d 28 32 5e 32 32  29 2a 28 4d 61 63 68 69  |1.-(2^22)*(Machi|
00001a00  6e 65 25 28 32 29 3d 30  29 2c 4d 61 63 68 69 6e  |ne%(2)=0),Machin|
00001a10  65 24 28 32 29 29 0d 0e  9c 4d f2 6d 65 6e 75 69  |e$(2))...M.menui|
00001a20  74 65 6d 28 2d 28 6d 61  63 68 69 6e 65 25 3d 33  |tem(-(machine%=3|
00001a30  29 2c 2d 31 2c 26 30 37  30 30 30 30 30 31 84 2d  |),-1,&07000001.-|
00001a40  28 32 5e 32 32 29 2a 28  4d 61 63 68 69 6e 65 25  |(2^22)*(Machine%|
00001a50  28 33 29 3d 30 29 2c 4d  61 63 68 69 6e 65 24 28  |(3)=0),Machine$(|
00001a60  33 29 29 0d 0e a6 50 f2  6d 65 6e 75 69 74 65 6d  |3))...P.menuitem|
00001a70  28 26 38 30 2d 28 6d 61  63 68 69 6e 65 25 3d 34  |(&80-(machine%=4|
00001a80  29 2c 2d 31 2c 26 30 37  30 30 30 30 30 31 84 2d  |),-1,&07000001.-|
00001a90  28 32 5e 32 32 29 2a 28  4d 61 63 68 69 6e 65 25  |(2^22)*(Machine%|
00001aa0  28 34 29 3d 30 29 2c 4d  61 63 68 69 6e 65 24 28  |(4)=0),Machine$(|
00001ab0  34 29 29 0d 0e ba 05 e1  0d 0e ce 1a dd f2 6d 65  |4))...........me|
00001ac0  6e 75 68 65 61 64 65 72  28 41 25 2c 42 24 2c 47  |nuheader(A%,B$,G|
00001ad0  25 29 0d 0e d8 09 50 25  3d 41 25 0d 0e e2 0e 24  |%)....P%=A%....$|
00001ae0  50 25 3d 42 24 2b bd 31  33 0d 0e ec 23 50 25 3f  |P%=B$+.13...#P%?|
00001af0  31 32 3d 37 3a 50 25 3f  31 33 3d 32 3a 50 25 3f  |12=7:P%?13=2:P%?|
00001b00  31 34 3d 37 3a 50 25 3f  31 35 3d 30 0d 0e f6 1d  |14=7:P%?15=0....|
00001b10  50 25 21 31 36 3d 47 25  3a 50 25 21 32 30 3d 34  |P%!16=G%:P%!20=4|
00001b20  34 3a 50 25 21 32 34 3d  30 0d 0f 00 0a 50 25 2b  |4:P%!24=0....P%+|
00001b30  3d 32 38 0d 0f 0a 05 e1  0d 0f 1e 1b dd f2 6d 65  |=28...........me|
00001b40  6e 75 69 74 65 6d 28 41  25 2c 42 25 2c 43 25 2c  |nuitem(A%,B%,C%,|
00001b50  44 24 29 0d 0f 28 0b 50  25 21 30 3d 41 25 0d 0f  |D$)..(.P%!0=A%..|
00001b60  32 0b 50 25 21 34 3d 42  25 0d 0f 3c 0b 50 25 21  |2.P%!4=B%..<.P%!|
00001b70  38 3d 43 25 0d 0f 46 13  24 28 50 25 2b 31 32 29  |8=C%..F.$(P%+12)|
00001b80  3d 44 24 2b bd 31 33 0d  0f 50 0a 50 25 2b 3d 32  |=D$+.13..P.P%+=2|
00001b90  34 0d 0f 5a 05 e1 0d 0f  6e 24 dd f2 69 6e 64 69  |4..Z....n$..indi|
00001ba0  72 65 63 74 65 64 69 74  65 6d 28 41 25 2c 42 25  |recteditem(A%,B%|
00001bb0  2c 43 25 2c 44 24 2c 45  25 29 0d 0f 78 0b 50 25  |,C%,D$,E%)..x.P%|
00001bc0  21 30 3d 41 25 0d 0f 82  0b 50 25 21 34 3d 42 25  |!0=A%....P%!4=B%|
00001bd0  0d 0f 8c 15 50 25 21 38  3d 43 25 2b 26 30 37 30  |....P%!8=C%+&070|
00001be0  30 30 30 30 30 0d 0f 96  0c 50 25 21 31 32 3d 45  |00000....P%!12=E|
00001bf0  25 0d 0f a0 0b 50 25 21  31 36 3d 30 0d 0f aa 0f  |%....P%!16=0....|
00001c00  50 25 21 32 30 3d a9 44  24 2b 31 0d 0f b4 0e 24  |P%!20=.D$+1....$|
00001c10  45 25 3d 44 24 2b bd 31  33 0d 0f be 0a 50 25 2b  |E%=D$+.13....P%+|
00001c20  3d 32 34 0d 0f c8 05 e1  0d 0f dc 10 dd f2 64 65  |=24...........de|
00001c30  63 6f 64 65 6d 65 6e 75  0d 0f e6 0a c8 8e 21 71  |codemenu......!q|
00001c40  25 ca 0d 0f f0 06 c9 30  0d 0f fa 06 c9 31 0d 10  |%......0.....1..|
00001c50  04 0d e7 71 25 21 34 3e  2d 31 8c 0d 10 0e 0b c8  |...q%!4>-1......|
00001c60  8e 71 25 21 34 ca 0d 10  18 06 c9 30 0d 10 22 29  |.q%!4......0..")|
00001c70  e7 71 25 21 38 3c 3e 2d  31 8c f2 73 65 74 6b 65  |.q%!8<>-1..setke|
00001c80  79 6d 61 70 28 6b 65 79  6d 61 70 24 28 71 25 21  |ymap(keymap$(q%!|
00001c90  38 2b 31 29 29 0d 10 2c  17 c9 31 3a 52 4f 4d 53  |8+1))..,..1:ROMS|
00001ca0  45 4c 25 3d ac 52 4f 4d  53 45 4c 25 0d 10 36 19  |EL%=.ROMSEL%..6.|
00001cb0  c9 32 3a 50 61 6c 65 74  74 65 25 3d ac 50 61 6c  |.2:Palette%=.Pal|
00001cc0  65 74 74 65 25 0d 10 40  17 c9 33 3a 43 75 72 73  |ette%..@..3:Curs|
00001cd0  6f 72 25 3d ac 43 75 72  73 6f 72 25 0d 10 4a 15  |or%=.Cursor%..J.|
00001ce0  c9 34 3a 4f 73 63 6c 69  25 3d ac 4f 73 63 6c 69  |.4:Oscli%=.Oscli|
00001cf0  25 0d 10 54 15 c9 35 3a  65 78 61 63 74 25 3d ac  |%..T..5:exact%=.|
00001d00  65 78 61 63 74 25 0d 10  5e 3a c9 36 3a e7 71 25  |exact%..^:.6:.q%|
00001d10  21 38 3c 3e 2d 31 80 20  71 25 21 38 3c 3e 6d 61  |!8<>-1. q%!8<>ma|
00001d20  63 68 69 6e 65 25 8c 6d  61 63 68 69 6e 65 25 3d  |chine%.machine%=|
00001d30  71 25 21 38 3a f2 6e 65  77 6d 61 63 68 69 6e 65  |q%!8:.newmachine|
00001d40  0d 10 68 1b c9 37 3a 73  6f 75 6e 64 5f 6f 6e 25  |..h..7:sound_on%|
00001d50  3d ac 73 6f 75 6e 64 5f  6f 6e 25 0d 10 72 21 c9  |=.sound_on%..r!.|
00001d60  38 3a 73 63 72 6f 6c 6c  5f 68 61 63 6b 25 3d ac  |8:scroll_hack%=.|
00001d70  73 63 72 6f 6c 6c 5f 68  61 63 6b 25 0d 10 7c 6b  |scroll_hack%..|k|
00001d80  c9 39 3a 66 69 6c 65 5f  78 78 78 3d ac 66 69 6c  |.9:file_xxx=.fil|
00001d90  65 5f 78 78 78 3a e7 66  69 6c 65 5f 78 78 78 8c  |e_xxx:.file_xxx.|
00001da0  ff 22 49 63 6f 6e 53 70  72 69 74 65 73 20 3c 36  |."IconSprites <6|
00001db0  35 30 32 45 6d 24 52 65  73 3e 2e 66 69 6c 65 5f  |502Em$Res>.file_|
00001dc0  78 78 78 22 8b ff 22 49  63 6f 6e 53 70 72 69 74  |xxx".."IconSprit|
00001dd0  65 73 20 3c 36 35 30 32  45 6d 24 52 65 73 3e 2e  |es <6502Em$Res>.|
00001de0  6e 6f 5f 78 78 78 22 0d  10 86 24 c9 31 30 3a f2  |no_xxx"...$.10:.|
00001df0  64 65 66 61 75 6c 74 5f  6f 70 74 69 6f 6e 73 3a  |default_options:|
00001e00  f2 6e 65 77 6d 61 63 68  69 6e 65 0d 10 90 15 c9  |.newmachine.....|
00001e10  31 31 3a f2 73 61 76 65  5f 6f 70 74 69 6f 6e 73  |11:.save_options|
00001e20  0d 10 9a 05 cb 0d 10 a4  05 cd 0d 10 ae 06 c9 32  |...............2|
00001e30  0d 10 b8 0d e7 71 25 21  34 3d 2d 31 8c 0d 10 c2  |.....q%!4=-1....|
00001e40  0c 70 61 74 63 68 25 3d  30 0d 10 cc 05 cc 0d 10  |.patch%=0.......|
00001e50  d6 2c e7 70 61 74 63 68  25 3c 3e 71 25 21 34 2b  |.,.patch%<>q%!4+|
00001e60  31 8c 70 61 74 63 68 25  3d 71 25 21 34 2b 31 3a  |1.patch%=q%!4+1:|
00001e70  f2 6c 6f 61 64 70 61 74  63 68 0d 10 e0 05 cd 0d  |.loadpatch......|
00001e80  10 ea 06 c9 33 0d 10 f4  0d e7 71 25 21 34 3e 2d  |....3.....q%!4>-|
00001e90  31 8c 0d 10 fe 14 53 25  3d 31 35 2d 28 71 25 21  |1.....S%=15-(q%!|
00001ea0  34 80 20 31 35 29 0d 11  08 22 e7 a4 76 61 6c 69  |4. 15)..."..vali|
00001eb0  64 52 4f 4d 28 53 25 29  84 3f 28 52 4f 4d 52 41  |dROM(S%).?(ROMRA|
00001ec0  4d 2b 53 25 29 3d 32 8c  0d 11 12 3e e7 3f 28 52  |M+S%)=2....>.?(R|
00001ed0  4f 4d 52 41 4d 2b 53 25  29 3d 32 8c 3f 28 52 4f  |OMRAM+S%)=2.?(RO|
00001ee0  4d 52 41 4d 2b 53 25 29  3d 30 8b 3f 28 52 4f 4d  |MRAM+S%)=0.?(ROM|
00001ef0  52 41 4d 2b 53 25 29 3d  31 2d 3f 28 52 4f 4d 52  |RAM+S%)=1-?(ROMR|
00001f00  41 4d 2b 53 25 29 0d 11  1c 05 cc 0d 11 26 12 3f  |AM+S%).......&.?|
00001f10  28 52 4f 4d 52 41 4d 2b  53 25 29 3d 32 0d 11 30  |(ROMRAM+S%)=2..0|
00001f20  05 cd 0d 11 3a 05 cd 0d  11 44 06 c9 34 0d 11 4e  |....:....D..4..N|
00001f30  0d e7 71 25 21 34 3e 2d  31 8c 0d 11 58 0b c8 8e  |..q%!4>-1...X...|
00001f40  71 25 21 34 ca 0d 11 62  0f c9 30 3a f2 72 65 61  |q%!4...b..0:.rea|
00001f50  64 43 53 44 0d 11 6c 10  c9 31 3a f2 72 65 73 65  |dCSD..l..1:.rese|
00001f60  74 28 31 29 0d 11 76 12  c9 32 3a f2 64 69 73 61  |t(1)..v..2:.disa|
00001f70  62 6c 65 43 46 53 0d 11  80 05 cb 0d 11 8a 05 cd  |bleCFS..........|
00001f80  0d 11 94 06 c9 35 0d 11  9e 06 c9 36 0d 11 a8 0b  |.....5.....6....|
00001f90  7f 3a f2 71 75 69 74 0d  11 b2 05 cb 0d 11 bc 1f  |.:.quit.........|
00001fa0  c8 99 22 57 69 6d 70 5f  47 65 74 50 6f 69 6e 74  |.."Wimp_GetPoint|
00001fb0  65 72 49 6e 66 6f 22 2c  2c 71 25 0d 11 c6 59 e7  |erInfo",,q%...Y.|
00001fc0  28 71 25 21 38 80 25 31  29 3e 30 8c f2 6d 65 6e  |(q%!8.%1)>0..men|
00001fd0  75 73 3a c8 99 22 57 69  6d 70 5f 43 72 65 61 74  |us:.."Wimp_Creat|
00001fe0  65 4d 65 6e 75 22 2c 2c  69 63 6f 6e 6d 65 6e 75  |eMenu",,iconmenu|
00001ff0  25 2c 6d 78 25 2d 69 63  6f 6e 6d 65 6e 75 25 21  |%,mx%-iconmenu%!|
00002000  31 36 2f 32 2d 32 34 2c  31 36 2a 34 2b 34 34 2a  |16/2-24,16*4+44*|
00002010  32 2b 31 32 0d 11 d0 05  e1 0d 11 e4 22 dd f2 6d  |2+12........"..m|
00002020  65 6e 75 69 74 65 6d 32  28 41 25 2c 42 25 2c 43  |enuitem2(A%,B%,C|
00002030  25 2c 44 25 2c 45 25 2c  46 25 29 0d 11 ee 0b 50  |%,D%,E%,F%)....P|
00002040  25 21 30 3d 41 25 0d 11  f8 0b 50 25 21 34 3d 42  |%!0=A%....P%!4=B|
00002050  25 0d 12 02 0b 50 25 21  38 3d 43 25 0d 12 0c 0c  |%....P%!8=C%....|
00002060  50 25 21 31 32 3d 44 25  0d 12 16 0c 50 25 21 31  |P%!12=D%....P%!1|
00002070  36 3d 45 25 0d 12 20 0c  50 25 21 32 30 3d 46 25  |6=E%.. .P%!20=F%|
00002080  0d 12 2a 0a 50 25 2b 3d  32 34 0d 12 34 05 e1 0d  |..*.P%+=24..4...|
00002090  12 48 12 dd a4 63 6f 75  6e 74 28 41 24 2c 42 24  |.H...count(A$,B$|
000020a0  29 0d 12 52 0a ea 49 25  2c 43 25 0d 12 5c 0d e3  |)..R..I%,C%..\..|
000020b0  49 25 3d 31 b8 a9 41 24  0d 12 66 17 e7 c1 41 24  |I%=1..A$..f...A$|
000020c0  2c 49 25 2c 31 29 3d 42  24 8c 43 25 2b 3d 31 0d  |,I%,1)=B$.C%+=1.|
000020d0  12 70 05 ed 0d 12 7a 07  3d 43 25 0d 12 8e 10 dd  |.p....z.=C%.....|
000020e0  a4 6c 65 74 74 65 72 28  41 24 29 0d 12 98 0a ea  |.letter(A$).....|
000020f0  49 25 2c 4a 25 0d 12 a2  0d e3 49 25 3d 31 b8 a9  |I%,J%.....I%=1..|
00002100  41 24 0d 12 ac 2b e7 a7  22 41 42 43 44 45 46 61  |A$...+.."ABCDEFa|
00002110  62 63 64 65 66 22 2c c1  41 24 2c 49 25 2c 31 29  |bcdef",.A$,I%,1)|
00002120  29 8c 4a 25 3d b9 3a 49  25 3d a9 41 24 0d 12 b6  |).J%=.:I%=.A$...|
00002130  05 ed 0d 12 c0 07 3d 4a  25 0d 12 de 0a dd f2 73  |......=J%......s|
00002140  61 76 65 0d 12 e8 20 e7  73 6f 6c 69 64 25 8c c8  |ave... .solid%..|
00002150  99 22 44 72 61 67 41 53  70 72 69 74 65 5f 53 74  |."DragASprite_St|
00002160  6f 70 22 0d 12 f2 09 4b  24 3d 22 22 0d 12 fc 2a  |op"....K$=""...*|
00002170  e7 73 61 76 65 5f 73 70  72 69 74 65 25 8c 21 64  |.save_sprite%.!d|
00002180  72 61 67 3d 78 66 65 72  32 25 8b 21 64 72 61 67  |rag=xfer2%.!drag|
00002190  3d 78 66 65 72 25 0d 13  06 0c 64 72 61 67 21 34  |=xfer%....drag!4|
000021a0  3d 31 0d 13 10 1f c8 99  22 57 69 6d 70 5f 47 65  |=1......"Wimp_Ge|
000021b0  74 49 63 6f 6e 53 74 61  74 65 22 2c 2c 64 72 61  |tIconState",,dra|
000021c0  67 0d 13 1a 10 50 25 3d  64 72 61 67 21 32 38 2d  |g....P%=drag!28-|
000021d0  31 0d 13 24 0a f5 50 25  2b 3d 31 0d 13 2e 17 e7  |1..$..P%+=1.....|
000021e0  3f 50 25 3c 3e 31 33 8c  4b 24 3d 4b 24 2b bd 3f  |?P%<>13.K$=K$+.?|
000021f0  50 25 0d 13 38 1c e7 3f  50 25 3d 97 22 2e 22 84  |P%..8..?P%=.".".|
00002200  3f 50 25 3d 97 22 3a 22  8c 4b 24 3d 22 22 0d 13  |?P%=.":".K$=""..|
00002210  42 0b fd 3f 50 25 3d 31  33 0d 13 4c 1f c8 99 22  |B..?P%=13..L..."|
00002220  57 69 6d 70 5f 47 65 74  50 6f 69 6e 74 65 72 49  |Wimp_GetPointerI|
00002230  6e 66 6f 22 2c 2c 71 25  0d 13 56 37 e7 71 25 21  |nfo",,q%..V7.q%!|
00002240  31 32 3c 3e 78 66 65 72  25 80 20 71 25 21 31 32  |12<>xfer%. q%!12|
00002250  3c 3e 78 66 65 72 32 25  8c c8 99 22 57 69 6d 70  |<>xfer2%..."Wimp|
00002260  5f 43 72 65 61 74 65 4d  65 6e 75 22 2c 2d 31 0d  |_CreateMenu",-1.|
00002270  13 60 0f 71 25 21 32 30  3d 71 25 21 31 32 0d 13  |.`.q%!20=q%!12..|
00002280  6a 0f 71 25 21 32 34 3d  71 25 21 31 36 0d 13 74  |j.q%!24=q%!16..t|
00002290  0e 71 25 21 32 38 3d 71  25 21 30 0d 13 7e 0e 71  |.q%!28=q%!0..~.q|
000022a0  25 21 33 32 3d 71 25 21  34 0d 13 92 14 e7 73 61  |%!32=q%!4.....sa|
000022b0  76 65 5f 73 70 72 69 74  65 25 3d a3 8c 0d 13 9c  |ve_sprite%=.....|
000022c0  0f 71 25 21 33 36 3d 36  35 36 36 37 0d 13 a6 13  |.q%!36=65667....|
000022d0  71 25 21 34 30 3d 66 69  6c 65 74 79 70 65 25 0d  |q%!40=filetype%.|
000022e0  13 b0 05 cc 0d 13 ba 11  71 25 21 33 36 3d 38 30  |........q%!36=80|
000022f0  2a 31 30 32 34 0d 13 c4  0e 71 25 21 34 30 3d 26  |*1024....q%!40=&|
00002300  46 46 39 0d 13 ce 05 cd  0d 13 e2 0b 71 25 21 31  |FF9.........q%!1|
00002310  32 3d 30 0d 13 ec 0b 71  25 21 31 36 3d 31 0d 13  |2=0....q%!16=1..|
00002320  f6 12 24 28 71 25 2b 34  34 29 3d 4b 24 2b bd 30  |..$(q%+44)=K$+.0|
00002330  0d 14 00 1c 71 25 21 30  3d 28 34 38 2b a9 4b 24  |....q%!0=(48+.K$|
00002340  29 80 25 31 31 31 31 31  31 31 30 30 0d 14 14 2b  |).%111111100...+|
00002350  c8 99 22 58 57 69 6d 70  5f 53 65 6e 64 4d 65 73  |.."XWimp_SendMes|
00002360  73 61 67 65 22 2c 31 37  2c 71 25 2c 71 25 21 32  |sage",17,q%,q%!2|
00002370  30 2c 71 25 21 32 34 0d  14 1e 0f 6d 79 72 65 66  |0,q%!24....myref|
00002380  25 3d 71 25 21 38 0d 14  28 05 e1 0d 14 3c 0e dd  |%=q%!8..(....<..|
00002390  a4 6c 65 61 66 28 41 24  29 0d 14 46 07 ea 49 25  |.leaf(A$)..F..I%|
000023a0  0d 14 50 0c 49 25 3d a9  41 24 2b 31 0d 14 5a 19  |..P.I%=.A$+1..Z.|
000023b0  f5 49 25 2d 3d 31 3a fd  c1 41 24 2c 49 25 2c 31  |.I%-=1:..A$,I%,1|
000023c0  29 3d 22 2e 22 0d 14 64  0e 3d c0 41 24 2c 49 25  |)="."..d.=.A$,I%|
000023d0  2d 31 29 0d 14 78 09 dd  f2 65 72 72 0d 14 82 07  |-1)..x...err....|
000023e0  ee 85 87 0d 14 8c 1e e7  a4 72 65 70 6f 72 74 28  |.........report(|
000023f0  f6 24 2c b9 29 8c f2 71  75 69 74 8b f2 70 6f 6c  |.$,.)..quit..pol|
00002400  6c 0d 14 96 05 e1 0d 14  aa 0e dd f2 65 72 72 32  |l...........err2|
00002410  28 4d 25 29 0d 14 b4 06  ea 85 0d 14 be 0b ee 85  |(M%)............|
00002420  ea f2 65 72 72 0d 14 c8  22 e7 68 61 6e 64 25 3c  |..err...".hand%<|
00002430  3e 30 8c c8 99 22 58 4f  53 5f 46 69 6e 64 22 2c  |>0..."XOS_Find",|
00002440  30 2c 68 61 6e 64 25 0d  14 d2 34 c8 99 22 58 57  |0,hand%...4.."XW|
00002450  69 6d 70 5f 53 65 74 4d  6f 64 65 22 2c 4d 25 3a  |imp_SetMode",M%:|
00002460  c8 99 22 58 36 35 30 32  5f 52 65 6d 6f 76 65 45  |.."X6502_RemoveE|
00002470  78 69 74 48 61 6e 64 6c  65 72 22 0d 14 dc 1c e7  |xitHandler".....|
00002480  73 6f 75 6e 64 25 3d b9  8c f2 73 6f 75 6e 64 5f  |sound%=...sound_|
00002490  72 65 73 74 6f 72 65 0d  14 e6 1e e7 a4 72 65 70  |restore......rep|
000024a0  6f 72 74 28 f6 24 2c b9  29 8c f2 71 75 69 74 8b  |ort(.$,.)..quit.|
000024b0  f2 70 6f 6c 6c 0d 14 f0  05 e1 0d 15 04 13 dd a4  |.poll...........|
000024c0  72 65 70 6f 72 74 28 61  24 2c 45 25 29 0d 15 0e  |report(a$,E%)...|
000024d0  07 ea 41 25 0d 15 18 08  e7 45 25 8c 0d 15 22 49  |..A%.....E%..."I|
000024e0  c8 99 22 58 57 69 6d 70  5f 52 65 70 6f 72 74 45  |.."XWimp_ReportE|
000024f0  72 72 6f 72 22 2c 22 20  20 20 20 49 6e 74 65 72  |rror","    Inter|
00002500  6e 61 6c 20 65 72 72 6f  72 20 22 2b c3 9e 2b 22  |nal error "+..+"|
00002510  3a 20 22 2b 61 24 2c 33  2c 22 36 35 30 32 45 6d  |: "+a$,3,"6502Em|
00002520  22 b8 2c 41 25 0d 15 2c  33 cc c8 99 22 58 57 69  |".,A%..,3..."XWi|
00002530  6d 70 5f 52 65 70 6f 72  74 45 72 72 6f 72 22 2c  |mp_ReportError",|
00002540  22 20 20 20 20 22 2b 61  24 2c 31 2c 22 36 35 30  |"    "+a$,1,"650|
00002550  32 45 6d 22 b8 2c 41 25  0d 15 36 05 cd 0d 15 40  |2Em".,A%..6....@|
00002560  07 3d 41 25 0d 15 54 09  dd a4 63 73 64 0d 15 5e  |.=A%..T...csd..^|
00002570  19 c8 99 22 4f 53 5f 47  42 50 42 22 2c 36 2c 2c  |..."OS_GBPB",6,,|
00002580  62 75 66 66 65 72 0d 15  68 1a 62 75 66 66 65 72  |buffer..h.buffer|
00002590  3f 28 62 75 66 66 65 72  3f 31 2b 32 29 3d 31 33  |?(buffer?1+2)=13|
000025a0  0d 15 72 10 3d 24 28 62  75 66 66 65 72 2b 32 29  |..r.=$(buffer+2)|
000025b0  0d 15 86 0d dd f2 72 65  61 64 43 53 44 0d 15 9a  |......readCSD...|
000025c0  06 ea 85 0d 15 ae 86 ee  85 ea 3a f7 85 3a 66 73  |..........:..:fs|
000025d0  24 3d 22 41 44 46 53 3a  22 3a 64 69 73 63 24 3d  |$="ADFS:":disc$=|
000025e0  22 22 3a 70 61 74 68 24  3d 22 24 22 3a 73 75 62  |"":path$="$":sub|
000025f0  70 61 74 68 24 3d 22 22  3a c8 99 22 58 57 69 6d  |path$="":.."XWim|
00002600  70 5f 52 65 70 6f 72 74  45 72 72 6f 72 22 2c 22  |p_ReportError","|
00002610  20 20 20 20 45 72 72 6f  72 20 69 6e 20 72 65 61  |    Error in rea|
00002620  64 69 6e 67 20 63 75 72  72 65 6e 74 20 64 69 72  |ding current dir|
00002630  65 63 74 6f 72 79 3a 20  22 2b f6 24 2c 31 2c 22  |ectory: "+.$,1,"|
00002640  36 35 30 32 45 6d 22 3a  e1 0d 15 cc 0b e3 49 25  |6502Em":......I%|
00002650  3d 30 b8 31 0d 15 d6 13  c8 99 22 4f 53 5f 41 72  |=0.1......"OS_Ar|
00002660  67 73 22 b8 46 53 25 0d  15 e0 2d c8 99 22 4f 53  |gs".FS%...-.."OS|
00002670  5f 46 53 43 6f 6e 74 72  6f 6c 22 2c 33 33 2c 46  |_FSControl",33,F|
00002680  53 25 2c c4 32 30 2c 22  20 22 29 2c 32 30 b8 2c  |S%,.20," "),20.,|
00002690  2c 66 73 24 0d 15 ea 33  e7 66 73 24 3c 3e 22 22  |,fs$...3.fs$<>""|
000026a0  8c 66 73 24 3d 66 73 24  2b 22 3a 22 3a 49 25 3d  |.fs$=fs$+":":I%=|
000026b0  31 8b ff 22 44 49 52 20  3c 36 35 30 32 45 6d 24  |1.."DIR <6502Em$|
000026c0  44 69 72 3e 2e 5e 22 0d  15 f4 05 ed 0d 16 08 19  |Dir>.^".........|
000026d0  c8 99 22 4f 53 5f 47 42  50 42 22 2c 35 2c 2c 62  |.."OS_GBPB",5,,b|
000026e0  75 66 66 65 72 0d 16 12  19 62 75 66 66 65 72 3f  |uffer....buffer?|
000026f0  28 3f 62 75 66 66 65 72  2b 31 29 3d 31 33 0d 16  |(?buffer+1)=13..|
00002700  1c 15 64 69 73 63 24 3d  24 28 62 75 66 66 65 72  |..disc$=$(buffer|
00002710  2b 31 29 0d 16 26 37 e7  64 69 73 63 24 3d bd 33  |+1)..&7.disc$=.3|
00002720  34 2b 22 55 6e 73 65 74  22 2b bd 33 34 8c 64 69  |4+"Unset"+.34.di|
00002730  73 63 24 3d 22 22 8b 64  69 73 63 24 3d 22 3a 22  |sc$="".disc$=":"|
00002740  2b 64 69 73 63 24 2b 22  2e 22 0d 16 3a 0e 70 61  |+disc$+"."..:.pa|
00002750  74 68 24 3d a4 63 73 64  0d 16 44 10 e7 70 61 74  |th$=.csd..D..pat|
00002760  68 24 3c 3e 22 24 22 8c  0d 16 58 05 f5 0d 16 62  |h$<>"$"...X....b|
00002770  1a c8 99 22 4f 53 5f 46  53 43 6f 6e 74 72 6f 6c  |..."OS_FSControl|
00002780  22 2c 30 2c 22 5e 22 0d  16 6c 0d 43 53 44 24 3d  |",0,"^"..l.CSD$=|
00002790  a4 63 73 64 0d 16 76 18  70 61 74 68 24 3d 43 53  |.csd..v.path$=CS|
000027a0  44 24 2b 22 2e 22 2b 70  61 74 68 24 0d 16 80 0d  |D$+"."+path$....|
000027b0  fd 43 53 44 24 3d 22 24  22 0d 16 8a 28 e7 c2 70  |.CSD$="$"...(..p|
000027c0  61 74 68 24 2c 37 29 3d  bd 33 34 2b 22 55 6e 73  |ath$,7)=.34+"Uns|
000027d0  65 74 22 2b bd 33 34 8c  70 61 74 68 24 3d 22 24  |et"+.34.path$="$|
000027e0  22 0d 16 94 1c c8 99 22  4f 53 5f 46 53 43 6f 6e  |"......"OS_FSCon|
000027f0  74 72 6f 6c 22 2c 30 2c  70 61 74 68 24 0d 16 9e  |trol",0,path$...|
00002800  05 cd 0d 16 b2 0f 73 75  62 70 61 74 68 24 3d 22  |......subpath$="|
00002810  22 0d 16 bc 05 e1 0d 16  d0 0d dd f2 69 6e 69 74  |"...........init|
00002820  42 42 43 0d 16 e4 0a de  52 25 28 37 29 0d 16 f8  |BBC.....R%(7)...|
00002830  24 de 42 42 43 24 28 26  37 43 29 2c 41 52 43 24  |$.BBC$(&7C),ARC$|
00002840  28 26 37 38 29 2c 45 6c  65 63 24 28 33 2c 31 33  |(&78),Elec$(3,13|
00002850  29 0d 17 02 05 f7 0d 17  0c 0b e3 49 25 3d 30 b8  |)..........I%=0.|
00002860  33 0d 17 16 0f e3 4a 25  3d 31 33 b8 30 88 2d 31  |3.....J%=13.0.-1|
00002870  0d 17 20 11 f3 45 6c 65  63 24 28 49 25 2c 4a 25  |.. ..Elec$(I%,J%|
00002880  29 0d 17 2a 05 ed 0d 17  34 05 ed 0d 17 3e 0b e3  |)..*....4....>..|
00002890  49 25 3d 30 b8 37 0d 17  48 0c e3 4a 25 3d 30 b8  |I%=0.7..H..J%=0.|
000028a0  31 32 0d 17 52 13 f3 42  42 43 24 28 49 25 2a 31  |12..R..BBC$(I%*1|
000028b0  36 2b 4a 25 29 0d 17 5c  05 ed 0d 17 66 05 ed 0d  |6+J%)..\....f...|
000028c0  17 70 0d e3 49 25 3d 30  b8 26 37 38 0d 17 7a 0d  |.p..I%=0.&78..z.|
000028d0  f3 41 52 43 24 28 49 25  29 0d 17 84 05 ed 0d 17  |.ARC$(I%).......|
000028e0  98 10 f2 72 65 61 64 6b  65 79 6d 61 70 73 0d 17  |...readkeymaps..|
000028f0  a2 19 f2 73 65 74 6b 65  79 6d 61 70 28 22 44 65  |...setkeymap("De|
00002900  66 61 75 6c 74 22 29 0d  17 ac 24 f2 65 6c 6b 6b  |fault")...$.elkk|
00002910  65 79 73 28 22 3c 36 35  30 32 45 6d 24 52 65 73  |eys("<6502Em$Res|
00002920  3e 2e 45 6c 6b 4b 65 79  73 22 29 0d 17 b6 15 c8  |>.ElkKeys").....|
00002930  99 22 36 35 30 32 5f 52  65 67 69 73 74 65 72 22  |."6502_Register"|
00002940  0d 17 ca 2e de 4d 61 63  68 69 6e 65 24 28 34 29  |.....Machine$(4)|
00002950  2c 4d 61 63 68 69 6e 65  25 28 34 29 2c 4d 61 63  |,Machine%(4),Mac|
00002960  68 69 6e 65 53 70 72 69  74 65 24 28 34 29 0d 17  |hineSprite$(4)..|
00002970  de 13 64 69 73 61 62 6c  65 5f 72 65 73 65 74 3d  |..disable_reset=|
00002980  a3 0d 17 e8 16 64 65 66  61 75 6c 74 5f 6d 61 63  |.....default_mac|
00002990  68 69 6e 65 25 3d 30 0d  17 fc 32 4d 61 63 68 69  |hine%=0...2Machi|
000029a0  6e 65 24 28 30 29 3d 22  42 42 43 20 42 22 3a 4d  |ne$(0)="BBC B":M|
000029b0  61 63 68 69 6e 65 53 70  72 69 74 65 24 28 30 29  |achineSprite$(0)|
000029c0  3d 22 4f 53 a0 31 2e 32  22 0d 18 06 37 4d 61 63  |="OS.1.2"...7Mac|
000029d0  68 69 6e 65 24 28 31 29  3d 22 4d 61 73 74 65 72  |hine$(1)="Master|
000029e0  20 31 32 38 22 3a 4d 61  63 68 69 6e 65 53 70 72  | 128":MachineSpr|
000029f0  69 74 65 24 28 31 29 3d  22 4f 53 a0 33 2e 32 22  |ite$(1)="OS.3.2"|
00002a00  0d 18 10 37 4d 61 63 68  69 6e 65 24 28 32 29 3d  |...7Machine$(2)=|
00002a10  22 20 20 20 4d 4f 53 20  33 2e 35 22 3a 4d 61 63  |"   MOS 3.5":Mac|
00002a20  68 69 6e 65 53 70 72 69  74 65 24 28 32 29 3d 22  |hineSprite$(2)="|
00002a30  4f 53 a0 33 2e 35 22 0d  18 1a 34 4d 61 63 68 69  |OS.3.5"...4Machi|
00002a40  6e 65 24 28 33 29 3d 22  43 6f 6d 70 61 63 74 22  |ne$(3)="Compact"|
00002a50  3a 4d 61 63 68 69 6e 65  53 70 72 69 74 65 24 28  |:MachineSprite$(|
00002a60  33 29 3d 22 4f 53 a0 35  2e 31 22 0d 18 24 35 4d  |3)="OS.5.1"..$5M|
00002a70  61 63 68 69 6e 65 24 28  34 29 3d 22 45 6c 65 63  |achine$(4)="Elec|
00002a80  74 72 6f 6e 22 3a 4d 61  63 68 69 6e 65 53 70 72  |tron":MachineSpr|
00002a90  69 74 65 24 28 34 29 3d  22 4f 53 a0 31 2e 30 22  |ite$(4)="OS.1.0"|
00002aa0  0d 18 43 11 4d 61 63 68  69 6e 65 25 28 34 29 3d  |..C.Machine%(4)=|
00002ab0  a3 0d 18 56 1e 51 3d 8e  22 3c 36 35 30 32 45 6d  |...V.Q=."<6502Em|
00002ac0  24 52 6f 6d 50 61 74 68  3e 4f 53 31 2c 32 22 0d  |$RomPath>OS1,2".|
00002ad0  18 60 29 e7 51 3c 3e 30  8c d9 23 51 3a 4d 61 63  |.`).Q<>0..#Q:Mac|
00002ae0  68 69 6e 65 25 28 30 29  3d b9 8b 4d 61 63 68 69  |hine%(0)=..Machi|
00002af0  6e 65 25 28 30 29 3d a3  0d 18 6a 25 e7 4d 61 63  |ne%(0)=...j%.Mac|
00002b00  68 69 6e 65 25 28 30 29  3d a3 8c 64 65 66 61 75  |hine%(0)=..defau|
00002b10  6c 74 5f 6d 61 63 68 69  6e 65 25 3d 31 0d 18 7e  |lt_machine%=1..~|
00002b20  23 51 3d 8e 22 3c 36 35  30 32 45 6d 24 52 6f 6d  |#Q=."<6502Em$Rom|
00002b30  50 61 74 68 3e 4d 31 32  38 2e 4f 53 33 2c 32 22  |Path>M128.OS3,2"|
00002b40  0d 18 88 29 e7 51 3c 3e  30 8c d9 23 51 3a 4d 61  |...).Q<>0..#Q:Ma|
00002b50  63 68 69 6e 65 25 28 31  29 3d b9 8b 4d 61 63 68  |chine%(1)=..Mach|
00002b60  69 6e 65 25 28 31 29 3d  a3 0d 18 92 34 e7 4d 61  |ine%(1)=....4.Ma|
00002b70  63 68 69 6e 65 25 28 30  29 3d a3 80 20 4d 61 63  |chine%(0)=.. Mac|
00002b80  68 69 6e 65 25 28 31 29  3d a3 8c 64 65 66 61 75  |hine%(1)=..defau|
00002b90  6c 74 5f 6d 61 63 68 69  6e 65 25 3d 32 0d 18 a6  |lt_machine%=2...|
00002ba0  23 51 3d 8e 22 3c 36 35  30 32 45 6d 24 52 6f 6d  |#Q=."<6502Em$Rom|
00002bb0  50 61 74 68 3e 4d 31 32  38 2e 4f 53 33 2c 35 22  |Path>M128.OS3,5"|
00002bc0  0d 18 b0 29 e7 51 3c 3e  30 8c d9 23 51 3a 4d 61  |...).Q<>0..#Q:Ma|
00002bd0  63 68 69 6e 65 25 28 32  29 3d b9 8b 4d 61 63 68  |chine%(2)=..Mach|
00002be0  69 6e 65 25 28 32 29 3d  a3 0d 18 ba 43 e7 4d 61  |ine%(2)=....C.Ma|
00002bf0  63 68 69 6e 65 25 28 30  29 3d a3 80 20 4d 61 63  |chine%(0)=.. Mac|
00002c00  68 69 6e 65 25 28 31 29  3d a3 80 20 4d 61 63 68  |hine%(1)=.. Mach|
00002c10  69 6e 65 25 28 32 29 3d  a3 8c 64 65 66 61 75 6c  |ine%(2)=..defaul|
00002c20  74 5f 6d 61 63 68 69 6e  65 25 3d 33 0d 18 ce 26  |t_machine%=3...&|
00002c30  51 3d 8e 22 3c 36 35 30  32 45 6d 24 52 6f 6d 50  |Q=."<6502Em$RomP|
00002c40  61 74 68 3e 43 6f 6d 70  61 63 74 2e 4f 53 35 2c  |ath>Compact.OS5,|
00002c50  31 22 0d 18 d8 29 e7 51  3c 3e 30 8c d9 23 51 3a  |1"...).Q<>0..#Q:|
00002c60  4d 61 63 68 69 6e 65 25  28 33 29 3d b9 8b 4d 61  |Machine%(3)=..Ma|
00002c70  63 68 69 6e 65 25 28 33  29 3d a3 0d 18 e2 6a e7  |chine%(3)=....j.|
00002c80  4d 61 63 68 69 6e 65 25  28 30 29 3d a3 80 20 4d  |Machine%(0)=.. M|
00002c90  61 63 68 69 6e 65 25 28  31 29 3d a3 80 20 4d 61  |achine%(1)=.. Ma|
00002ca0  63 68 69 6e 65 25 28 32  29 3d a3 80 20 4d 61 63  |chine%(2)=.. Mac|
00002cb0  68 69 6e 65 25 28 33 29  3d a3 8c 85 30 2c 22 4e  |hine%(3)=...0,"N|
00002cc0  6f 20 52 4f 4d 73 20 66  6f 75 6e 64 20 2d 20 70  |o ROMs found - p|
00002cd0  6c 65 61 73 65 20 72 75  6e 20 21 52 69 70 36 35  |lease run !Rip65|
00002ce0  48 6f 73 74 22 0d 18 f6  1a 51 3d 8e 22 3c 36 35  |Host"....Q=."<65|
00002cf0  30 32 45 6d 24 44 69 72  3e 2e 43 6f 64 65 22 0d  |02Em$Dir>.Code".|
00002d00  19 00 0a 4c 25 3d a2 23  51 0d 19 0a 07 d9 23 51  |...L%=.#Q.....#Q|
00002d10  0d 19 14 11 de 63 6f 64  65 20 4c 25 2b 33 30 30  |.....code L%+300|
00002d20  30 0d 19 1e 1f e7 ac 75  73 65 4d 45 4d 43 25 8c  |0......useMEMC%.|
00002d30  de 72 6f 6d 73 20 31 37  2a 31 36 2a 31 30 32 34  |.roms 17*16*1024|
00002d40  0d 19 32 18 de 63 6d 6f  73 25 28 36 33 29 3a f2  |..2..cmos%(63):.|
00002d50  6c 6f 61 64 43 4d 4f 53  0d 19 3c 1d de 65 65 70  |loadCMOS..<..eep|
00002d60  72 6f 6d 25 28 32 35 35  29 3a f2 6c 6f 61 64 45  |rom%(255):.loadE|
00002d70  45 50 52 4f 4d 0d 19 46  1d c8 95 28 63 6f 64 65  |EPROM..F...(code|
00002d80  80 20 31 35 29 3c 3e 30  3a 63 6f 64 65 2b 3d 31  |. 15)<>0:code+=1|
00002d90  3a ce 0d 19 5a 27 69 6e  64 65 78 66 69 6c 65 24  |:...Z'indexfile$|
00002da0  3d 22 22 3a 69 6e 64 65  78 25 3d 30 3a 6e 65 77  |="":index%=0:new|
00002db0  69 6e 64 65 78 25 3d 2d  31 0d 19 c8 0c 73 70 72  |index%=-1....spr|
00002dc0  69 74 65 3d 30 0d 19 d2  11 73 61 76 65 5f 73 70  |ite=0....save_sp|
00002dd0  72 69 74 65 3d a3 0d 19  f0 0c f2 72 65 61 64 43  |rite=......readC|
00002de0  53 44 0d 19 fa 35 46 53  24 3d 66 73 24 3a 44 49  |SD...5FS$=fs$:DI|
00002df0  53 43 24 3d 64 69 73 63  24 3a 50 41 54 48 24 3d  |SC$=disc$:PATH$=|
00002e00  70 61 74 68 24 3a 53 55  42 50 41 54 48 24 3d 73  |path$:SUBPATH$=s|
00002e10  75 62 70 61 74 68 24 0d  1a 0e 0d f2 61 73 73 65  |ubpath$.....asse|
00002e20  6d 62 6c 65 0d 1a 18 11  f2 6c 6f 61 64 5f 6f 70  |mble.....load_op|
00002e30  74 69 6f 6e 73 0d 1a 54  32 e7 66 69 6c 65 5f 78  |tions..T2.file_x|
00002e40  78 78 8c ff 22 49 63 6f  6e 53 70 72 69 74 65 73  |xx.."IconSprites|
00002e50  20 3c 36 35 30 32 45 6d  24 52 65 73 3e 2e 66 69  | <6502Em$Res>.fi|
00002e60  6c 65 5f 78 78 78 22 0d  1a ea 0c 2a 46 58 32 32  |le_xxx"....*FX22|
00002e70  39 2c 31 0d 1b 08 0c 70  61 74 63 68 25 3d 30 0d  |9,1....patch%=0.|
00002e80  1b 58 05 e1 0d 1b 6c 0b  dd f2 53 52 52 41 4d 0d  |.X....l...SRRAM.|
00002e90  1b 76 17 3f 28 52 4f 4d  52 41 4d 2b 73 6f 63 6b  |.v.?(ROMRAM+sock|
00002ea0  65 74 25 29 3d 30 0d 1b  80 1b 73 6f 63 6b 65 74  |et%)=0....socket|
00002eb0  25 3d 28 73 6f 63 6b 65  74 25 2d 31 29 80 20 31  |%=(socket%-1). 1|
00002ec0  35 0d 1b 8a 05 e1 0d 1b  9e 11 dd f2 6b 69 6c 6c  |5...........kill|
00002ed0  52 4f 4d 28 53 25 29 0d  1b a8 07 ea 49 25 0d 1b  |ROM(S%).....I%..|
00002ee0  b2 12 3f 28 52 4f 4d 52  41 4d 2b 53 25 29 3d 32  |..?(ROMRAM+S%)=2|
00002ef0  0d 1b bc 10 e3 49 25 3d  30 b8 32 35 35 88 31 36  |.....I%=0.255.16|
00002f00  0d 1b c6 1b 49 25 21 28  72 6f 6d 73 2b 72 6f 6d  |....I%!(roms+rom|
00002f10  73 69 7a 65 25 2a 53 25  29 3d 30 0d 1b d0 05 ed  |size%*S%)=0.....|
00002f20  0d 1b da 05 e1 0d 1b ee  14 dd f2 6c 6f 61 64 52  |...........loadR|
00002f30  4f 4d 28 52 24 2c 52 25  29 0d 1b f8 07 ea 51 25  |OM(R$,R%).....Q%|
00002f40  0d 1c 02 2f e7 6d 61 63  68 69 6e 65 25 3d 34 80  |.../.machine%=4.|
00002f50  28 73 6f 63 6b 65 74 25  3d 39 84 73 6f 63 6b 65  |(socket%=9.socke|
00002f60  74 25 3d 38 29 8c 73 6f  63 6b 65 74 25 3d 37 0d  |t%=8).socket%=7.|
00002f70  1c 0c 0e 53 25 3d 73 6f  63 6b 65 74 25 0d 1c 16  |...S%=socket%...|
00002f80  1b 73 6f 63 6b 65 74 25  3d 28 73 6f 63 6b 65 74  |.socket%=(socket|
00002f90  25 2d 31 29 80 20 31 35  0d 1c 20 2a c8 99 22 4f  |%-1). 15.. *.."O|
00002fa0  53 5f 46 69 6e 64 22 2c  26 34 45 2c 52 24 2c 22  |S_Find",&4E,R$,"|
00002fb0  36 35 30 32 45 6d 24 52  4f 4d 50 61 74 68 22 b8  |6502Em$ROMPath".|
00002fc0  51 25 0d 1c 2a 2b c8 99  22 4f 53 5f 47 42 50 42  |Q%..*+.."OS_GBPB|
00002fd0  22 2c 33 2c 51 25 2c 72  6f 6d 73 2b 72 6f 6d 73  |",3,Q%,roms+roms|
00002fe0  69 7a 65 25 2a 53 25 2c  26 34 30 30 30 0d 1c 34  |ize%*S%,&4000..4|
00002ff0  08 d9 23 51 25 0d 1c 3e  13 3f 28 52 4f 4d 52 41  |..#Q%..>.?(ROMRA|
00003000  4d 2b 53 25 29 3d 52 25  0d 1c 48 05 e1 0d 1c 5c  |M+S%)=R%..H....\|
00003010  0e dd f2 69 6e 69 74 52  4f 4d 73 0d 1c 66 07 ea  |...initROMs..f..|
00003020  53 25 0d 1c 70 0c e3 53  25 3d 30 b8 31 35 0d 1c  |S%..p..S%=0.15..|
00003030  7a 12 3f 28 52 4f 4d 52  41 4d 2b 53 25 29 3d 32  |z.?(ROMRAM+S%)=2|
00003040  0d 1c 98 05 ed 0d 1c a2  05 e1 0d 1c b6 11 dd a4  |................|
00003050  52 4f 4d 6e 61 6d 65 28  53 25 29 0d 1c c0 1c e7  |ROMname(S%).....|
00003060  3f 28 52 4f 4d 52 41 4d  2b 53 25 29 3d 32 8c 3d  |?(ROMRAM+S%)=2.=|
00003070  22 45 6d 70 74 79 22 0d  1c ca 10 f2 72 65 73 65  |"Empty".....rese|
00003080  74 6d 65 6d 6d 61 70 0d  1c d4 0a ea 4e 24 2c 49  |tmemmap.....N$,I|
00003090  25 0d 1c de 1b 49 25 3d  72 6f 6d 73 3f 28 72 6f  |%....I%=roms?(ro|
000030a0  6d 73 69 7a 65 25 2a 53  25 2b 37 29 0d 1c e8 13  |msize%*S%+7)....|
000030b0  e7 a4 76 61 6c 69 64 52  4f 4d 28 53 25 29 8c 0d  |..validROM(S%)..|
000030c0  1c f2 0c e3 49 25 3d 30  b8 31 31 0d 1c fc 23 4e  |....I%=0.11...#N|
000030d0  24 3d 4e 24 2b bd 72 6f  6d 73 3f 28 72 6f 6d 73  |$=N$+.roms?(roms|
000030e0  69 7a 65 25 2a 53 25 2b  26 39 2b 49 25 29 0d 1d  |ize%*S%+&9+I%)..|
000030f0  06 22 e7 72 6f 6d 73 3f  28 72 6f 6d 73 69 7a 65  |.".roms?(romsize|
00003100  25 2a 53 25 2b 26 42 29  3d 30 8c 49 25 3d 31 31  |%*S%+&B)=0.I%=11|
00003110  0d 1d 10 05 ed 0d 1d 1a  05 cc 0d 1d 24 12 4e 24  |............$.N$|
00003120  3d 22 52 41 4d 20 22 2b  c3 7e 53 25 0d 1d 2e 05  |="RAM "+.~S%....|
00003130  cd 0d 1d 38 10 f2 73 65  74 75 70 6d 65 6d 6d 61  |...8..setupmemma|
00003140  70 0d 1d 42 07 3d 4e 24  0d 1d 56 12 dd a4 76 61  |p..B.=N$..V...va|
00003150  6c 69 64 52 4f 4d 28 53  25 29 0d 1d 60 07 ea 49  |lidROM(S%)..`..I|
00003160  25 0d 1d 6a 1b 49 25 3d  72 6f 6d 73 3f 28 72 6f  |%..j.I%=roms?(ro|
00003170  6d 73 69 7a 65 25 2a 53  25 2b 37 29 0d 1d 74 60  |msize%*S%+7)..t`|
00003180  e7 72 6f 6d 73 3f 28 72  6f 6d 73 69 7a 65 25 2a  |.roms?(romsize%*|
00003190  53 25 2b 49 25 2b 31 29  3d 26 32 38 80 20 72 6f  |S%+I%+1)=&28. ro|
000031a0  6d 73 3f 28 72 6f 6d 73  69 7a 65 25 2a 53 25 2b  |ms?(romsize%*S%+|
000031b0  49 25 2b 32 29 3d 26 34  33 80 20 72 6f 6d 73 3f  |I%+2)=&43. roms?|
000031c0  28 72 6f 6d 73 69 7a 65  25 2a 53 25 2b 49 25 2b  |(romsize%*S%+I%+|
000031d0  33 29 3d 26 32 39 8c 3d  b9 8b 3d a3 0d 1d 88 0f  |3)=&29.=..=.....|
000031e0  dd f2 72 65 73 65 74 28  41 25 29 0d 1d 92 14 e7  |..reset(A%).....|
000031f0  64 69 73 61 62 6c 65 5f  72 65 73 65 74 8c e1 0d  |disable_reset...|
00003200  1d 9c 10 f2 73 65 74 75  70 6d 65 6d 6d 61 70 0d  |....setupmemmap.|
00003210  1d a6 0d 3f 66 65 31 30  3d 26 32 32 0d 1d b0 18  |...?fe10=&22....|
00003220  73 68 65 69 6c 61 21 26  43 30 3d 26 37 30 37 30  |sheila!&C0=&7070|
00003230  42 37 41 42 0d 1d c4 0d  3f 41 43 43 43 4f 4e 3d  |B7AB....?ACCCON=|
00003240  30 0d 1d ec 0b 3f 66 3d  25 31 30 30 0d 1e 1e 0a  |0....?f=%100....|
00003250  e7 41 25 3d 31 8c 0d 1e  28 22 f2 63 6c 65 61 72  |.A%=1...(".clear|
00003260  6d 65 6d 28 6d 65 6d 6f  72 79 2c 6d 65 6d 6f 72  |mem(memory,memor|
00003270  79 2b 26 38 30 30 30 29  0d 1e 32 0c 3f 69 65 72  |y+&8000)..2.?ier|
00003280  3d 26 38 30 0d 1e 3c 0d  3f 69 65 72 32 3d 26 38  |=&80..<.?ier2=&8|
00003290  30 0d 1e 46 0d 3f 45 69  66 72 3d 25 31 30 0d 1e  |0..F.?Eifr=%10..|
000032a0  50 0c 3f 45 69 65 72 3d  25 30 0d 1e 5a 0d 3f 45  |P.?Eier=%0..Z.?E|
000032b0  6c 61 74 63 68 3d 30 0d  1e 64 10 21 54 31 52 3d  |latch=0..d.!T1R=|
000032c0  26 46 30 3c 3c 32 34 0d  1e 6e 10 21 54 32 52 3d  |&F0<<24..n.!T2R=|
000032d0  26 46 30 3c 3c 32 34 0d  1e 78 10 21 54 33 52 3d  |&F0<<24..x.!T3R=|
000032e0  26 46 30 3c 3c 32 34 0d  1e 82 10 21 54 34 52 3d  |&F0<<24....!T4R=|
000032f0  26 46 30 3c 3c 32 34 0d  1e 8c 29 ff 22 4c 4f 41  |&F0<<24...)."LOA|
00003300  44 20 3c 36 35 30 32 45  6d 24 52 65 73 3e 2e 53  |D <6502Em$Res>.S|
00003310  48 45 49 4c 41 20 22 2b  c3 7e 73 68 65 69 6c 61  |HEILA "+.~sheila|
00003320  0d 1e 96 05 cd 0d 1e aa  10 73 68 65 69 6c 61 3f  |.........sheila?|
00003330  26 32 30 3d 32 0d 1f 7c  32 21 70 63 5f 73 74 6f  |&20=2..|2!pc_sto|
00003340  72 65 3d 28 6d 65 6d 6f  72 79 3f 26 46 46 46 43  |re=(memory?&FFFC|
00003350  2b 28 6d 65 6d 6f 72 79  3f 26 46 46 46 44 3c 3c  |+(memory?&FFFD<<|
00003360  38 29 29 3c 3c 31 36 0d  1f 90 05 e1 0d 1f a4 09  |8))<<16.........|
00003370  dd f2 42 42 43 0d 1f b8  65 f2 64 65 6d 6f 28 22  |..BBC...e.demo("|
00003380  54 68 69 73 20 69 73 20  61 20 64 65 6d 6f 20 76  |This is a demo v|
00003390  65 72 73 69 6f 6e 20 6f  66 20 36 35 30 32 45 6d  |ersion of 6502Em|
000033a0  2e 20 49 74 20 77 69 6c  6c 20 77 6f 72 6b 20 66  |. It will work f|
000033b0  6f 72 20 61 62 6f 75 74  20 32 20 6d 69 6e 75 74  |or about 2 minut|
000033c0  65 73 2e 20 50 72 65 73  73 20 46 31 32 20 74 6f  |es. Press F12 to|
000033d0  20 66 69 6e 69 73 68 2e  22 29 0d 1f d6 06 ea 85  | finish.")......|
000033e0  0d 1f ea 36 c8 99 22 58  4f 53 5f 53 57 49 4e 75  |...6.."XOS_SWINu|
000033f0  6d 62 65 72 46 72 6f 6d  53 74 72 69 6e 67 22 2c  |mberFromString",|
00003400  2c 22 49 6d 61 67 65 44  46 53 5f 56 65 72 73 69  |,"ImageDFS_Versi|
00003410  6f 6e 22 b8 3b 46 0d 1f  f4 27 e7 28 46 80 20 31  |on".;F...'.(F. 1|
00003420  29 3d 30 8c 64 66 73 73  75 70 70 6f 72 74 3d b9  |)=0.dfssupport=.|
00003430  8b 64 66 73 73 75 70 70  6f 72 74 3d a3 0d 20 08  |.dfssupport=.. .|
00003440  08 2a 46 58 39 0d 20 12  0f 77 69 6d 70 5f 6d 6f  |.*FX9. ..wimp_mo|
00003450  64 65 3d eb 0d 20 26 11  3f 6c 61 73 74 6d 6f 64  |de=.. &.?lastmod|
00003460  65 3d 32 35 35 0d 20 30  17 c8 99 22 48 6f 75 72  |e=255. 0..."Hour|
00003470  67 6c 61 73 73 5f 53 6d  61 73 68 22 0d 20 44 10  |glass_Smash". D.|
00003480  f2 73 6f 75 6e 64 5f 73  65 74 75 70 0d 20 4e 29  |.sound_setup. N)|
00003490  c8 99 22 36 35 30 32 5f  49 6e 73 74 61 6c 6c 45  |.."6502_InstallE|
000034a0  78 69 74 48 61 6e 64 6c  65 72 22 2c 77 69 6d 70  |xitHandler",wimp|
000034b0  5f 6d 6f 64 65 0d 20 62  17 ee 85 ea f2 65 72 72  |_mode. b.....err|
000034c0  32 28 77 69 6d 70 5f 6d  6f 64 65 29 0d 20 76 62  |2(wimp_mode). vb|
000034d0  21 70 61 74 63 68 5f 6f  6e 3d 28 28 70 61 74 63  |!patch_on=((patc|
000034e0  68 25 3e 30 29 80 25 31  29 2b 28 65 78 61 63 74  |h%>0).%1)+(exact|
000034f0  25 80 25 31 30 29 2b 28  43 75 72 73 6f 72 25 80  |%.%10)+(Cursor%.|
00003500  25 31 30 30 29 2b 28 73  63 72 6f 6c 6c 5f 68 61  |%100)+(scroll_ha|
00003510  63 6b 25 80 25 31 30 30  30 29 2b 28 ac 73 6f 75  |ck%.%1000)+(.sou|
00003520  6e 64 5f 6f 6e 25 80 25  31 30 30 30 30 29 0d 20  |nd_on%.%10000). |
00003530  8a 11 ef 32 33 2c 31 36  2c 31 2c 32 35 34 7c 0d  |...23,16,1,254|.|
00003540  20 94 20 c8 99 22 4f 53  5f 42 79 74 65 22 2c 32  | . .."OS_Byte",2|
00003550  30 32 2c 30 2c 32 35 35  b8 2c 46 58 32 30 32 0d  |02,0,255.,FX202.|
00003560  20 9e 20 c8 99 22 4f 53  5f 42 79 74 65 22 2c 32  | . .."OS_Byte",2|
00003570  34 37 2c 30 2c 32 35 35  b8 2c 46 58 32 34 37 0d  |47,0,255.,FX247.|
00003580  20 a8 19 c8 99 22 4f 53  5f 42 79 74 65 22 2c 32  | ...."OS_Byte",2|
00003590  34 37 2c 32 35 35 2c 30  0d 20 bc 17 c8 99 22 4f  |47,255,0. ...."O|
000035a0  53 5f 42 79 74 65 22 2c  31 30 36 2c 26 38 31 0d  |S_Byte",106,&81.|
000035b0  20 c6 14 c8 97 fb 33 2c  32 35 35 2c 32 35 35 2c  | .....3,255,255,|
000035c0  32 35 35 0d 20 da 30 c8  99 22 4f 53 5f 42 79 74  |255. .0.."OS_Byt|
000035d0  65 22 2c 32 30 32 2c 6d  65 6d 6f 72 79 3f 26 32  |e",202,memory?&2|
000035e0  35 41 80 25 31 30 30 30  30 2c 25 31 31 31 30 31  |5A.%10000,%11101|
000035f0  31 31 31 0d 20 e4 13 c8  99 22 4f 53 5f 42 79 74  |111. ...."OS_Byt|
00003600  65 22 2c 31 31 38 0d 20  f8 14 68 61 6e 64 25 3d  |e",118. ..hand%=|
00003610  8e 74 61 70 65 66 69 6c  65 24 0d 21 02 16 3f 74  |.tapefile$.!..?t|
00003620  61 70 65 5f 68 61 6e 64  6c 65 3d 68 61 6e 64 25  |ape_handle=hand%|
00003630  0d 21 16 05 f5 0d 21 2a  22 e7 6e 65 77 69 6e 64  |.!....!*".newind|
00003640  65 78 25 3e 3d 30 20 69  6e 64 65 78 25 3d 6e 65  |ex%>=0 index%=ne|
00003650  77 69 6e 64 65 78 25 0d  21 34 35 e7 4f 53 52 44  |windex%.!45.OSRD|
00003660  43 48 25 8c f2 70 6f 6b  65 28 26 46 46 45 30 2c  |CH%..poke(&FFE0,|
00003670  4f 53 52 44 43 48 5f 6c  6f 63 29 8b f2 70 6f 6b  |OSRDCH_loc)..pok|
00003680  65 28 26 46 46 45 30 2c  26 32 33 29 0d 21 3e 15  |e(&FFE0,&23).!>.|
00003690  3f 52 4f 4d 53 45 4c 3d  31 2b 52 4f 4d 53 45 4c  |?ROMSEL=1+ROMSEL|
000036a0  25 0d 21 48 17 3f 50 61  6c 65 74 74 65 3d 31 2b  |%.!H.?Palette=1+|
000036b0  50 61 6c 65 74 74 65 25  0d 21 5c 0b 41 25 3d 72  |Palette%.!\.A%=r|
000036c0  6f 6d 73 0d 21 66 0d 44  25 3d 6d 65 6d 6f 72 79  |oms.!f.D%=memory|
000036d0  0d 21 70 10 f2 73 65 74  75 70 6d 65 6d 6d 61 70  |.!p..setupmemmap|
000036e0  0d 21 7a 0e c8 99 26 36  30 30 46 41 2c 30 0d 21  |.!z...&600FA,0.!|
000036f0  84 1c 62 25 3d ba 28 63  6f 64 65 2b 21 73 74 61  |..b%=.(code+!sta|
00003700  72 74 5f 6f 66 66 73 65  74 29 0d 21 8e 10 f2 73  |rt_offset).!...s|
00003710  65 74 75 70 6d 65 6d 6d  61 70 0d 21 98 0e c8 99  |etupmemmap.!....|
00003720  26 36 30 30 46 41 2c 31  0d 21 a2 49 e7 73 70 72  |&600FA,1.!.I.spr|
00003730  69 74 65 3c 3e 30 8c c8  99 22 58 4f 53 5f 53 70  |ite<>0..."XOS_Sp|
00003740  72 69 74 65 4f 70 22 2c  32 35 36 2b 31 36 2c 73  |riteOp",256+16,s|
00003750  70 72 69 74 65 2c 22 42  42 43 53 63 72 65 65 6e  |prite,"BBCScreen|
00003760  22 2c 31 2c 30 2c 30 2c  31 32 37 39 2c 31 30 32  |",1,0,0,1279,102|
00003770  33 0d 21 ac 09 2a 46 58  31 35 0d 21 c0 09 c8 8e  |3.!..*FX15.!....|
00003780  62 25 ca 0d 21 ca 07 c9  31 31 0d 21 d4 09 e7 a6  |b%..!...11.!....|
00003790  2d 32 8c 0d 21 de 29 e7  68 61 6e 64 25 3c 3e 30  |-2..!.).hand%<>0|
000037a0  8c cf 23 68 61 6e 64 25  3d a4 6d 61 78 28 30 2c  |..#hand%=.max(0,|
000037b0  8f 23 68 61 6e 64 25 2d  33 35 30 29 0d 21 e8 05  |.#hand%-350).!..|
000037c0  cc 0d 21 f2 1e e7 a6 2d  31 8c 76 6f 6c 75 6d 65  |..!....-1.volume|
000037d0  25 2b 3d 35 8b 76 6f 6c  75 6d 65 25 2d 3d 35 0d  |%+=5.volume%-=5.|
000037e0  21 fc 1c e7 76 6f 6c 75  6d 65 25 3e 31 32 37 8c  |!...volume%>127.|
000037f0  76 6f 6c 75 6d 65 25 3d  31 32 37 0d 22 06 18 e7  |volume%=127."...|
00003800  76 6f 6c 75 6d 65 25 3c  30 8c 76 6f 6c 75 6d 65  |volume%<0.volume|
00003810  25 3d 30 0d 22 10 1f f2  73 6f 75 6e 64 5f 72 65  |%=0."...sound_re|
00003820  73 74 6f 72 65 3a f2 73  6f 75 6e 64 5f 73 65 74  |store:.sound_set|
00003830  75 70 0d 22 1a 05 cd 0d  22 24 05 cd 0d 22 38 17  |up."...."$..."8.|
00003840  c9 31 30 3a db 3a 3f 6c  61 73 74 6d 6f 64 65 3d  |.10:.:?lastmode=|
00003850  32 35 35 0d 22 42 17 c9  36 36 3a f1 7e 21 70 63  |255."B..66:.~!pc|
00003860  5f 73 74 6f 72 65 3a 51  3d a5 0d 22 4c 07 c9 31  |_store:Q=.."L..1|
00003870  35 0d 22 56 1c e7 a6 2d  33 8c f2 72 65 73 65 74  |5."V...-3..reset|
00003880  28 31 29 8b f2 72 65 73  65 74 28 30 29 0d 22 60  |(1)..reset(0)."`|
00003890  05 cd 0d 22 74 06 c9 33  0d 22 92 34 e7 a4 70 65  |..."t..3.".4..pe|
000038a0  65 6b 28 21 70 63 5f 73  74 6f 72 65 3e 3e 3e 31  |ek(!pc_store>>>1|
000038b0  36 29 3d 33 80 28 21 70  63 5f 73 74 6f 72 65 3e  |6)=3.(!pc_store>|
000038c0  3e 3e 31 36 29 3c 26 43  30 30 30 8c 0d 22 a6 20  |>>16)<&C000..". |
000038d0  c8 8e a4 70 65 65 6b 28  28 21 70 63 5f 73 74 6f  |...peek((!pc_sto|
000038e0  72 65 3e 3e 3e 31 36 29  2b 31 29 ca 0d 22 b0 0d  |re>>>16)+1).."..|
000038f0  c9 30 3a f2 6f 73 66 73  63 0d 22 ba 0e c9 31 3a  |.0:.osfsc."...1:|
00003900  f2 6f 73 66 69 6e 64 0d  22 c4 0e c9 32 3a f2 6f  |.osfind."...2:.o|
00003910  73 67 62 70 62 0d 22 ce  0e c9 33 3a f2 6f 73 62  |sgbpb."...3:.osb|
00003920  70 75 74 0d 22 d8 0e c9  34 3a f2 6f 73 62 67 65  |put."...4:.osbge|
00003930  74 0d 22 e2 0e c9 35 3a  f2 6f 73 61 72 67 73 0d  |t."...5:.osargs.|
00003940  22 ec 0e c9 36 3a f2 6f  73 66 69 6c 65 0d 22 f6  |"...6:.osfile.".|
00003950  11 c9 26 34 30 3a f2 6f  73 77 6f 72 64 32 0d 23  |..&40:.osword2.#|
00003960  00 11 c9 26 34 31 3a f2  6f 73 62 79 74 65 32 0d  |...&41:.osbyte2.|
00003970  23 0a 12 c9 26 38 30 3a  f2 72 65 61 64 43 4d 4f  |#...&80:.readCMO|
00003980  53 0d 23 14 13 c9 26 38  31 3a f2 77 72 69 74 65  |S.#...&81:.write|
00003990  43 4d 4f 53 0d 23 1e 14  c9 26 38 32 3a f2 72 65  |CMOS.#...&82:.re|
000039a0  61 64 45 45 50 52 4f 4d  0d 23 28 15 c9 26 38 33  |adEEPROM.#(..&83|
000039b0  3a f2 77 72 69 74 65 45  45 50 52 4f 4d 0d 23 32  |:.writeEEPROM.#2|
000039c0  10 c9 26 44 30 3a f2 73  72 6c 6f 61 64 0d 23 3c  |..&D0:.srload.#<|
000039d0  11 c9 26 44 31 3a f2 73  72 77 72 69 74 65 0d 23  |..&D1:.srwrite.#|
000039e0  46 0f c9 26 44 32 3a f2  64 72 69 76 65 0d 23 50  |F..&D2:.drive.#P|
000039f0  0e c9 26 44 33 3a f2 62  6f 6f 74 0d 23 5a 19 c9  |..&D3:.boot.#Z..|
00003a00  26 44 35 3a f2 62 61 63  6b 3a 61 3f 33 3d 30 3a  |&D5:.back:a?3=0:|
00003a10  f2 72 74 73 0d 23 64 13  c9 26 46 46 3a 62 25 3d  |.rts.#d..&FF:b%=|
00003a20  31 32 3a f2 72 74 73 0d  23 6e 05 cb 0d 23 78 05  |12:.rts.#n...#x.|
00003a30  cc 0d 23 82 17 c8 8e 28  21 70 63 5f 73 74 6f 72  |..#....(!pc_stor|
00003a40  65 3e 3e 3e 31 36 29 ca  0d 23 8c 18 c9 26 46 46  |e>>>16)..#...&FF|
00003a50  46 31 2c 26 45 37 45 42  3a f2 6f 73 77 6f 72 64  |F1,&E7EB:.osword|
00003a60  0d 23 96 12 c9 26 46 46  45 30 3a f2 6f 73 72 64  |.#...&FFE0:.osrd|
00003a70  63 68 0d 23 a0 12 c9 26  46 46 44 37 3a f2 6f 73  |ch.#...&FFD7:.os|
00003a80  62 67 65 74 0d 23 aa 12  c9 26 46 46 44 34 3a f2  |bget.#...&FFD4:.|
00003a90  6f 73 62 70 75 74 0d 23  b4 12 c9 26 46 46 44 44  |osbput.#...&FFDD|
00003aa0  3a f2 6f 73 66 69 6c 65  0d 23 be 12 c9 26 46 46  |:.osfile.#...&FF|
00003ab0  44 41 3a f2 6f 73 61 72  67 73 0d 23 c8 12 c9 26  |DA:.osargs.#...&|
00003ac0  46 46 44 31 3a f2 6f 73  67 62 70 62 0d 23 d2 12  |FFD1:.osgbpb.#..|
00003ad0  c9 26 46 46 43 45 3a f2  6f 73 66 69 6e 64 0d 23  |.&FFCE:.osfind.#|
00003ae0  dc 17 c9 26 46 31 42 31  2c 26 46 30 45 38 3a f2  |...&F1B1,&F0E8:.|
00003af0  6f 73 66 73 63 0d 23 e6  05 cb 0d 23 fa 05 cd 0d  |osfsc.#....#....|
00003b00  24 0e 06 c9 37 0d 24 18  0f 63 62 3d 28 79 3f 33  |$...7.$..cb=(y?3|
00003b10  29 3c 3c 38 0d 24 22 0b  63 62 2b 3d 78 3f 33 0d  |)<<8.$".cb+=x?3.|
00003b20  24 2c 0e 63 62 2b 3d 6d  65 6d 6f 72 79 0d 24 36  |$,.cb+=memory.$6|
00003b30  0b e3 49 25 3d 30 b8 37  0d 24 40 16 52 25 28 49  |..I%=0.7.$@.R%(I|
00003b40  25 29 3d 63 62 21 28 39  2b 49 25 2a 34 29 0d 24  |%)=cb!(9+I%*4).$|
00003b50  4a 2b e7 28 63 62 3f 34  80 28 31 3c 3c 49 25 29  |J+.(cb?4.(1<<I%)|
00003b60  29 3c 3e 30 8c 52 25 28  49 25 29 3d 52 25 28 49  |)<>0.R%(I%)=R%(I|
00003b70  25 29 2b 6d 65 6d 6f 72  79 0d 24 54 05 ed 0d 24  |%)+memory.$T...$|
00003b80  5e 0d 73 77 69 25 3d 63  62 3f 30 0d 24 68 13 73  |^.swi%=cb?0.$h.s|
00003b90  77 69 25 2b 3d 28 63 62  3f 31 29 3c 3c 38 0d 24  |wi%+=(cb?1)<<8.$|
00003ba0  72 14 73 77 69 25 2b 3d  28 63 62 3f 32 29 3c 3c  |r.swi%+=(cb?2)<<|
00003bb0  31 36 0d 24 cc 10 e7 64  66 73 73 75 70 70 6f 72  |16.$...dfssuppor|
00003bc0  74 8c 0d 24 e0 0b c8 8e  73 77 69 25 ca 0d 24 f4  |t..$....swi%..$.|
00003bd0  0b c9 26 36 31 31 34 30  0d 24 fe 0d 62 61 73 65  |..&61140.$..base|
00003be0  3d 63 62 21 39 0d 25 08  12 c8 8e 6d 65 6d 6f 72  |=cb!9.%....memor|
00003bf0  79 3f 62 61 73 65 ca 0d  25 12 0c c9 30 2c 31 2c  |y?base..%...0,1,|
00003c00  32 2c 33 0d 25 1c 16 c9  26 32 31 3a 6d 65 6d 6f  |2,3.%...&21:memo|
00003c10  72 79 3f 62 61 73 65 3d  30 0d 25 26 16 c9 26 34  |ry?base=0.%&..&4|
00003c20  42 3a 6d 65 6d 6f 72 79  3f 62 61 73 65 3d 31 0d  |B:memory?base=1.|
00003c30  25 30 16 c9 26 45 30 3a  6d 65 6d 6f 72 79 3f 62  |%0..&E0:memory?b|
00003c40  61 73 65 3d 32 0d 25 3a  16 c9 26 45 41 3a 6d 65  |ase=2.%:..&EA:me|
00003c50  6d 6f 72 79 3f 62 61 73  65 3d 33 0d 25 44 05 7f  |mory?base=3.%D..|
00003c60  0d 25 4e 1e f1 22 44 72  69 76 65 20 22 3b 6d 65  |.%N.."Drive ";me|
00003c70  6d 6f 72 79 3f 62 61 73  65 3b 22 20 20 22 0d 25  |mory?base;"  ".%|
00003c80  58 05 cb 0d 25 62 2c e7  6d 65 6d 6f 72 79 3f 28  |X...%b,.memory?(|
00003c90  62 61 73 65 2b 36 29 3d  26 38 30 8c 6d 65 6d 6f  |base+6)=&80.memo|
00003ca0  72 79 3f 28 62 61 73 65  2b 36 29 3d 26 35 33 0d  |ry?(base+6)=&53.|
00003cb0  25 6c 2c e7 6d 65 6d 6f  72 79 3f 28 62 61 73 65  |%l,.memory?(base|
00003cc0  2b 36 29 3d 26 41 30 8c  6d 65 6d 6f 72 79 3f 28  |+6)=&A0.memory?(|
00003cd0  62 61 73 65 2b 36 29 3d  26 34 42 0d 25 80 3a e7  |base+6)=&4B.%.:.|
00003ce0  6d 65 6d 6f 72 79 3f 28  62 61 73 65 2b 31 31 29  |memory?(base+11)|
00003cf0  3c 3e 30 8c 6d 65 6d 6f  72 79 3f 28 62 61 73 65  |<>0.memory?(base|
00003d00  2b 39 29 3d 6d 65 6d 6f  72 79 3f 28 62 61 73 65  |+9)=memory?(base|
00003d10  2b 39 29 2b 31 0d 25 8a  2f 6d 65 6d 6f 72 79 3f  |+9)+1.%./memory?|
00003d20  28 62 61 73 65 2b 39 29  3d 28 6d 65 6d 6f 72 79  |(base+9)=(memory|
00003d30  3f 28 62 61 73 65 2b 39  29 80 25 31 31 31 31 31  |?(base+9).%11111|
00003d40  29 84 33 32 0d 25 94 52  e7 6d 65 6d 6f 72 79 3f  |).32.%.R.memory?|
00003d50  28 62 61 73 65 2b 36 29  3c 3e 26 38 31 8c c8 99  |(base+6)<>&81...|
00003d60  22 58 49 6d 61 67 65 44  46 53 5f 4f 53 57 4f 52  |"XImageDFS_OSWOR|
00003d70  44 37 46 22 2c 2c 62 61  73 65 83 32 35 36 2c 62  |D7F",,base.256,b|
00003d80  61 73 65 81 32 35 36 2c  6d 65 6d 6f 72 79 b8 52  |ase.256,memory.R|
00003d90  25 28 30 29 3b 46 0d 25  a8 0b c9 26 36 31 31 34  |%(0);F.%...&6114|
00003da0  31 0d 25 bc 0b c9 26 36  31 31 34 32 0d 25 e4 0b  |1.%...&61142.%..|
00003db0  c9 26 36 31 31 34 33 0d  26 02 05 7f 0d 26 0c 73  |.&61143.&....&.s|
00003dc0  c8 99 28 73 77 69 25 84  32 5e 31 37 29 2c 52 25  |..(swi%.2^17),R%|
00003dd0  28 30 29 2c 52 25 28 31  29 2c 52 25 28 32 29 2c  |(0),R%(1),R%(2),|
00003de0  52 25 28 33 29 2c 52 25  28 34 29 2c 52 25 28 35  |R%(3),R%(4),R%(5|
00003df0  29 2c 52 25 28 36 29 2c  52 25 28 37 29 b8 52 25  |),R%(6),R%(7).R%|
00003e00  28 30 29 2c 52 25 28 31  29 2c 52 25 28 32 29 2c  |(0),R%(1),R%(2),|
00003e10  52 25 28 33 29 2c 52 25  28 34 29 2c 52 25 28 35  |R%(3),R%(4),R%(5|
00003e20  29 2c 52 25 28 36 29 2c  52 25 28 37 29 3b 46 0d  |),R%(6),R%(7);F.|
00003e30  26 20 05 cb 0d 26 34 05  cc 0d 26 3e 73 c8 99 28  |& ...&4...&>s..(|
00003e40  73 77 69 25 84 32 5e 31  37 29 2c 52 25 28 30 29  |swi%.2^17),R%(0)|
00003e50  2c 52 25 28 31 29 2c 52  25 28 32 29 2c 52 25 28  |,R%(1),R%(2),R%(|
00003e60  33 29 2c 52 25 28 34 29  2c 52 25 28 35 29 2c 52  |3),R%(4),R%(5),R|
00003e70  25 28 36 29 2c 52 25 28  37 29 b8 52 25 28 30 29  |%(6),R%(7).R%(0)|
00003e80  2c 52 25 28 31 29 2c 52  25 28 32 29 2c 52 25 28  |,R%(1),R%(2),R%(|
00003e90  33 29 2c 52 25 28 34 29  2c 52 25 28 35 29 2c 52  |3),R%(4),R%(5),R|
00003ea0  25 28 36 29 2c 52 25 28  37 29 3b 46 0d 26 48 05  |%(6),R%(7);F.&H.|
00003eb0  cd 0d 26 5c 0d e7 63 62  3f 33 3c 3e 30 8c 0d 26  |..&\..cb?3<>0..&|
00003ec0  66 10 e3 49 25 3d 30 b8  63 62 3f 33 2d 31 0d 26  |f..I%=0.cb?3-1.&|
00003ed0  70 2b e7 28 63 62 3f 35  80 28 31 3c 3c 49 25 29  |p+.(cb?5.(1<<I%)|
00003ee0  29 3c 3e 30 8c 52 25 28  49 25 29 3d 52 25 28 49  |)<>0.R%(I%)=R%(I|
00003ef0  25 29 2d 6d 65 6d 6f 72  79 0d 26 7a 16 63 62 21  |%)-memory.&z.cb!|
00003f00  28 39 2b 49 25 2a 34 29  3d 52 25 28 49 25 29 0d  |(9+I%*4)=R%(I%).|
00003f10  26 84 05 ed 0d 26 8e 05  cd 0d 26 b6 1e e7 28 46  |&....&....&...(F|
00003f20  80 20 31 29 3c 3e 30 80  28 73 77 69 25 80 20 32  |. 1)<>0.(swi%. 2|
00003f30  5e 31 37 29 3d 30 8c 0d  26 c0 0c 41 25 3d 52 25  |^17)=0..&..A%=R%|
00003f40  28 30 29 0d 26 ca 0e f2  73 77 69 5f 65 72 72 6f  |(0).&...swi_erro|
00003f50  72 0d 26 d4 05 cc 0d 26  e8 18 e7 28 46 80 20 31  |r.&....&...(F. 1|
00003f60  29 3c 3e 30 80 20 63 62  3f 38 3c 3e 30 8c 0d 26  |)<>0. cb?8<>0..&|
00003f70  f2 0c 65 72 72 3d 63 62  3f 36 0d 26 fc 12 65 72  |..err=cb?6.&..er|
00003f80  72 2b 3d 28 63 62 3f 37  29 3c 3c 38 0d 27 06 0f  |r+=(cb?7)<<8.'..|
00003f90  65 72 72 2b 3d 6d 65 6d  6f 72 79 0d 27 10 08 4a  |err+=memory.'..J|
00003fa0  25 3d a3 0d 27 1a 0b 65  72 72 3f 30 3d 30 0d 27  |%=..'..err?0=0.'|
00003fb0  24 10 e3 49 25 3d 30 b8  63 62 3f 38 2d 32 0d 27  |$..I%=0.cb?8-2.'|
00003fc0  2e 17 65 72 72 3f 28 49  25 2b 31 29 3d 52 25 28  |..err?(I%+1)=R%(|
00003fd0  30 29 3f 49 25 0d 27 38  12 e7 65 72 72 3f 49 25  |0)?I%.'8..err?I%|
00003fe0  3d 30 8c 4a 25 3d b9 0d  27 42 05 ed 0d 27 4c 18  |=0.J%=..'B...'L.|
00003ff0  e7 4a 25 3d a3 8c 65 72  72 3f 28 63 62 3f 38 2d  |.J%=..err?(cb?8-|
00004000  31 29 3d 30 0d 27 56 05  cd 0d 27 6a 1f 21 70 63  |1)=0.'V...'j.!pc|
00004010  5f 73 74 6f 72 65 3d 21  70 63 5f 73 74 6f 72 65  |_store=!pc_store|
00004020  2b 28 31 3c 3c 31 36 29  0d 27 74 12 3f 66 3d 3f  |+(1<<16).'t.?f=?|
00004030  66 80 25 31 31 30 30 30  31 31 0d 27 7e 1e e7 28  |f.%1100011.'~..(|
00004040  46 80 20 31 29 3c 3e 30  8c 3f 66 3d 3f 66 84 25  |F. 1)<>0.?f=?f.%|
00004050  30 31 30 30 30 30 30 30  0d 27 88 1e e7 28 46 80  |01000000.'...(F.|
00004060  20 32 29 3c 3e 30 8c 3f  66 3d 3f 66 84 25 30 30  | 2)<>0.?f=?f.%00|
00004070  30 30 30 30 30 31 0d 27  92 1e e7 28 46 80 20 34  |000001.'...(F. 4|
00004080  29 3c 3e 30 8c 3f 66 3d  3f 66 84 25 30 30 30 30  |)<>0.?f=?f.%0000|
00004090  30 30 31 30 0d 27 9c 1e  e7 28 46 80 20 38 29 3c  |0010.'...(F. 8)<|
000040a0  3e 30 8c 3f 66 3d 3f 66  84 25 31 30 30 30 30 30  |>0.?f=?f.%100000|
000040b0  30 30 0d 27 b0 05 cd 0d  27 c4 07 c9 31 32 0d 27  |00.'....'...12.'|
000040c0  e2 05 7f 0d 28 00 05 cb  0d 28 14 0a fd 62 25 3d  |....(....(...b%=|
000040d0  31 32 0d 28 28 22 e7 68  61 6e 64 25 3c 3e 30 8c  |12.((".hand%<>0.|
000040e0  c8 99 22 58 4f 53 5f 46  69 6e 64 22 2c 30 2c 68  |.."XOS_Find",0,h|
000040f0  61 6e 64 25 0d 28 3c 19  c8 99 22 4f 53 5f 42 79  |and%.(<..."OS_By|
00004100  74 65 22 2c 32 30 32 2c  46 58 32 30 32 0d 28 46  |te",202,FX202.(F|
00004110  19 c8 99 22 4f 53 5f 42  79 74 65 22 2c 32 34 37  |..."OS_Byte",247|
00004120  2c 46 58 32 34 37 0d 28  5a 15 c8 99 22 4f 53 5f  |,FX247.(Z..."OS_|
00004130  42 79 74 65 22 2c 31 30  36 2c 31 0d 28 6e 20 2a  |Byte",106,1.(n *|
00004140  53 65 74 20 4b 65 79 24  31 31 20 22 3c 36 35 30  |Set Key$11 "<650|
00004150  32 45 6d 24 4b 65 79 31  31 3e 22 0d 28 78 20 2a  |2Em$Key11>".(x *|
00004160  53 65 74 20 4b 65 79 24  31 32 20 22 3c 36 35 30  |Set Key$12 "<650|
00004170  32 45 6d 24 4b 65 79 31  32 3e 22 0d 28 8c 1e c8  |2Em$Key12>".(...|
00004180  99 22 36 35 30 32 5f 52  65 6d 6f 76 65 45 78 69  |."6502_RemoveExi|
00004190  74 48 61 6e 64 6c 65 72  22 0d 28 aa 12 f2 73 6f  |tHandler".(...so|
000041a0  75 6e 64 5f 72 65 73 74  6f 72 65 0d 28 be 1e c8  |und_restore.(...|
000041b0  99 22 57 69 6d 70 5f 53  65 74 4d 6f 64 65 22 2c  |."Wimp_SetMode",|
000041c0  77 69 6d 70 5f 6d 6f 64  65 0d 28 d2 0b 2a 46 58  |wimp_mode.(..*FX|
000041d0  31 35 2c 30 0d 28 e6 78  f2 64 65 6d 6f 28 22 54  |15,0.(.x.demo("T|
000041e0  68 65 20 66 75 6c 6c 20  76 65 72 73 69 6f 6e 20  |he full version |
000041f0  69 73 20 61 76 61 69 6c  61 62 6c 65 20 66 6f 72  |is available for|
00004200  20 a3 31 35 20 66 72 6f  6d 3a 20 57 61 72 6d 20  | .15 from: Warm |
00004210  53 69 6c 65 6e 63 65 20  53 6f 66 74 77 61 72 65  |Silence Software|
00004220  2c 20 53 74 20 43 61 74  68 65 72 69 6e 65 27 73  |, St Catherine's|
00004230  20 43 6f 6c 6c 65 67 65  2c 20 4f 78 66 6f 72 64  | College, Oxford|
00004240  2c 20 4f 58 31 20 33 55  4a 2e 22 29 0d 29 04 05  |, OX1 3UJ.").)..|
00004250  e1 0d 29 18 10 dd a4 6d  61 78 28 41 25 2c 42 25  |..)....max(A%,B%|
00004260  29 0d 29 22 12 e7 41 25  3e 42 25 8c 3d 41 25 8b  |).)"..A%>B%.=A%.|
00004270  3d 42 25 0d 29 36 0c dd  f2 70 75 6c 6c 70 63 0d  |=B%.)6...pullpc.|
00004280  29 40 0f 73 70 3f 33 3d  73 70 3f 33 2b 31 0d 29  |)@.sp?3=sp?3+1.)|
00004290  4a 22 70 63 5f 73 74 6f  72 65 3f 32 3d 3f 28 6d  |J"pc_store?2=?(m|
000042a0  65 6d 6f 72 79 2b 26 31  30 30 2b 73 70 3f 33 29  |emory+&100+sp?3)|
000042b0  0d 29 54 0f 73 70 3f 33  3d 73 70 3f 33 2b 31 0d  |.)T.sp?3=sp?3+1.|
000042c0  29 5e 22 70 63 5f 73 74  6f 72 65 3f 33 3d 3f 28  |)^"pc_store?3=?(|
000042d0  6d 65 6d 6f 72 79 2b 26  31 30 30 2b 73 70 3f 33  |memory+&100+sp?3|
000042e0  29 0d 29 68 05 e1 0d 29  7c 0e dd f2 61 73 73 65  |).)h...)|...asse|
000042f0  6d 62 6c 65 0d 29 86 13  61 3d 6d 65 6d 6f 72 79  |mble.)..a=memory|
00004300  2d 26 31 30 30 2b 30 0d  29 90 13 61 3d 6d 65 6d  |-&100+0.)..a=mem|
00004310  6f 72 79 2d 26 31 30 30  2b 30 0d 29 9a 13 78 3d  |ory-&100+0.)..x=|
00004320  6d 65 6d 6f 72 79 2d 26  31 30 30 2b 34 0d 29 a4  |memory-&100+4.).|
00004330  13 79 3d 6d 65 6d 6f 72  79 2d 26 31 30 30 2b 38  |.y=memory-&100+8|
00004340  0d 29 ae 14 66 3d 6d 65  6d 6f 72 79 2d 26 31 30  |.)..f=memory-&10|
00004350  30 2b 31 32 0d 29 b8 15  73 70 3d 6d 65 6d 6f 72  |0+12.)..sp=memor|
00004360  79 2d 26 31 30 30 2b 31  36 0d 29 c2 1b 70 63 5f  |y-&100+16.)..pc_|
00004370  73 74 6f 72 65 3d 6d 65  6d 6f 72 79 2d 26 31 30  |store=memory-&10|
00004380  30 2b 32 30 0d 29 cc 16  54 31 52 3d 6d 65 6d 6f  |0+20.)..T1R=memo|
00004390  72 79 2d 26 31 30 30 2b  33 32 0d 29 d6 16 54 32  |ry-&100+32.)..T2|
000043a0  52 3d 6d 65 6d 6f 72 79  2d 26 31 30 30 2b 34 30  |R=memory-&100+40|
000043b0  0d 29 e0 16 54 33 52 3d  6d 65 6d 6f 72 79 2d 26  |.)..T3R=memory-&|
000043c0  31 30 30 2b 34 38 0d 29  ea 16 54 34 52 3d 6d 65  |100+48.)..T4R=me|
000043d0  6d 6f 72 79 2d 26 31 30  30 2b 35 36 0d 29 f4 1a  |mory-&100+56.)..|
000043e0  73 63 72 65 65 6e 52 3d  6d 65 6d 6f 72 79 2d 26  |screenR=memory-&|
000043f0  31 30 30 2b 36 34 0d 29  fe 16 69 66 72 3d 6d 65  |100+64.)..ifr=me|
00004400  6d 6f 72 79 2d 26 31 30  30 2b 37 36 0d 2a 08 16  |mory-&100+76.*..|
00004410  69 65 72 3d 6d 65 6d 6f  72 79 2d 26 31 30 30 2b  |ier=memory-&100+|
00004420  37 37 0d 2a 12 17 69 66  72 32 3d 6d 65 6d 6f 72  |77.*..ifr2=memor|
00004430  79 2d 26 31 30 30 2b 37  38 0d 2a 1c 17 69 65 72  |y-&100+78.*..ier|
00004440  32 3d 6d 65 6d 6f 72 79  2d 26 31 30 30 2b 37 39  |2=memory-&100+79|
00004450  0d 2a 26 16 72 6f 6d 3d  6d 65 6d 6f 72 79 2d 26  |.*&.rom=memory-&|
00004460  31 30 30 2b 39 36 0d 2a  3a 19 52 4f 4d 53 45 4c  |100+96.*:.ROMSEL|
00004470  3d 6d 65 6d 6f 72 79 2d  26 31 30 30 2b 39 32 0d  |=memory-&100+92.|
00004480  2a 44 1b 50 61 6c 65 74  74 65 3d 6d 65 6d 6f 72  |*D.Palette=memor|
00004490  79 2d 26 31 30 30 2b 31  36 34 0d 2a 4e 1a 52 4f  |y-&100+164.*N.RO|
000044a0  4d 52 41 4d 3d 6d 65 6d  6f 72 79 2d 26 31 30 30  |MRAM=memory-&100|
000044b0  2b 31 30 30 0d 2a 58 28  70 61 74 63 68 5f 6f 6e  |+100.*X(patch_on|
000044c0  3d 6d 65 6d 6f 72 79 2d  26 31 30 30 2b 31 37 36  |=memory-&100+176|
000044d0  3a 21 70 61 74 63 68 5f  6f 6e 3d 30 0d 2a 62 1c  |:!patch_on=0.*b.|
000044e0  6c 61 73 74 6d 6f 64 65  3d 6d 65 6d 6f 72 79 2d  |lastmode=memory-|
000044f0  26 31 30 30 2b 31 37 38  0d 2a 6c 18 66 65 31 30  |&100+178.*l.fe10|
00004500  3d 6d 65 6d 6f 72 79 2d  26 31 30 30 2b 31 37 39  |=memory-&100+179|
00004510  0d 2a 76 1f 74 61 70 65  5f 68 61 6e 64 6c 65 3d  |.*v.tape_handle=|
00004520  6d 65 6d 6f 72 79 2d 26  31 30 30 2b 31 31 37 0d  |memory-&100+117.|
00004530  2a 80 1e 74 61 70 65 5f  63 6f 75 6e 74 3d 6d 65  |*..tape_count=me|
00004540  6d 6f 72 79 2d 26 31 30  30 2b 31 38 30 0d 2a 8a  |mory-&100+180.*.|
00004550  1a 41 43 43 43 4f 4e 3d  6d 65 6d 6f 72 79 2d 26  |.ACCCON=memory-&|
00004560  31 30 30 2b 31 37 32 0d  2a 94 1a 45 6c 61 74 63  |100+172.*..Elatc|
00004570  68 3d 6d 65 6d 6f 72 79  2d 26 31 30 30 2b 31 38  |h=memory-&100+18|
00004580  38 0d 2a 9e 18 45 69 66  72 3d 6d 65 6d 6f 72 79  |8.*..Eifr=memory|
00004590  2d 26 31 30 30 2b 31 38  39 0d 2a a8 18 45 69 65  |-&100+189.*..Eie|
000045a0  72 3d 6d 65 6d 6f 72 79  2d 26 31 30 30 2b 31 39  |r=memory-&100+19|
000045b0  30 0d 2a b2 1a 52 4f 4d  69 6e 74 3d 6d 65 6d 6f  |0.*..ROMint=memo|
000045c0  72 79 2d 26 31 30 30 2b  31 39 31 0d 2a c6 0b 50  |ry-&100+191.*..P|
000045d0  25 3d 63 6f 64 65 0d 2a  d0 09 5b 4f 50 54 32 0d  |%=code.*..[OPT2.|
000045e0  2a da 07 2e 4f 61 0d 2a  e4 0a 45 51 55 44 20 30  |*...Oa.*..EQUD 0|
000045f0  0d 2a ee 07 2e 4f 78 0d  2a f8 0a 45 51 55 44 20  |.*...Ox.*..EQUD |
00004600  30 0d 2b 02 07 2e 4f 79  0d 2b 0c 0a 45 51 55 44  |0.+...Oy.+..EQUD|
00004610  20 30 0d 2b 16 07 2e 4f  66 0d 2b 20 0a 45 51 55  | 0.+...Of.+ .EQU|
00004620  44 20 30 0d 2b 2a 08 2e  4f 73 70 0d 2b 34 0a 45  |D 0.+*..Osp.+4.E|
00004630  51 55 44 20 30 0d 2b 3e  0e 2e 4f 70 63 5f 73 74  |QUD 0.+>..Opc_st|
00004640  6f 72 65 0d 2b 48 0a 45  51 55 44 20 30 0d 2b 52  |ore.+H.EQUD 0.+R|
00004650  11 2e 73 74 61 72 74 5f  6f 66 66 73 65 74 0d 2b  |..start_offset.+|
00004660  5c 0a 45 51 55 44 20 30  0d 2b 66 0a 2e 74 72 61  |\.EQUD 0.+f..tra|
00004670  63 65 0d 2b 70 0a 45 51  55 44 20 30 0d 2b 7a 0b  |ce.+p.EQUD 0.+z.|
00004680  2e 74 72 61 63 65 32 0d  2b 84 0a 45 51 55 44 20  |.trace2.+..EQUD |
00004690  30 0d 2b 8e 0e 2e 69 6e  69 74 5f 61 64 64 72 0d  |0.+...init_addr.|
000046a0  2b 98 0a 45 51 55 44 20  30 0d 2b a2 0d 2e 63 72  |+..EQUD 0.+...cr|
000046b0  74 5f 61 64 64 72 0d 2b  ac 0a 45 51 55 44 20 30  |t_addr.+..EQUD 0|
000046c0  0d 2b b6 0c 2e 54 31 5f  61 64 64 72 0d 2b c0 0a  |.+...T1_addr.+..|
000046d0  45 51 55 44 20 30 0d 2b  ca 0d 2e 69 66 72 5f 61  |EQUD 0.+...ifr_a|
000046e0  64 64 72 0d 2b d4 0a 45  51 55 44 20 30 0d 2b de  |ddr.+..EQUD 0.+.|
000046f0  18 2e 63 6f 6c 75 6d 6e  5f 63 6f 75 6e 74 65 72  |..column_counter|
00004700  5f 61 64 64 72 0d 2b e8  0a 45 51 55 44 20 30 0d  |_addr.+..EQUD 0.|
00004710  2b f2 10 2e 52 4f 4d 53  45 4c 5f 61 64 64 72 0d  |+...ROMSEL_addr.|
00004720  2b fc 0a 45 51 55 44 20  30 0d 2c 06 11 2e 50 61  |+..EQUD 0.,...Pa|
00004730  6c 65 74 74 65 5f 61 64  64 72 0d 2c 10 0a 45 51  |lette_addr.,..EQ|
00004740  55 44 20 30 0d 2c 1a 0f  2e 73 70 65 65 64 5f 61  |UD 0.,...speed_a|
00004750  64 64 72 0d 2c 24 0a 45  51 55 44 20 30 0d 2c 2e  |ddr.,$.EQUD 0.,.|
00004760  0f 2e 65 6c 69 74 65 5f  61 64 64 72 0d 2c 38 0a  |..elite_addr.,8.|
00004770  45 51 55 44 20 30 0d 2c  42 15 2e 6f 70 63 6f 5f  |EQUD 0.,B..opco_|
00004780  61 64 64 72 20 45 51 55  44 20 30 0d 2c 4c 14 2e  |addr EQUD 0.,L..|
00004790  62 63 64 5f 61 64 64 72  20 45 51 55 44 20 30 0d  |bcd_addr EQUD 0.|
000047a0  2c 56 20 2e 73 68 65 69  6c 61 5f 77 72 69 74 65  |,V .sheila_write|
000047b0  74 61 62 5f 61 64 64 72  20 45 51 55 44 20 30 0d  |tab_addr EQUD 0.|
000047c0  2c 60 1f 2e 73 68 65 69  6c 61 5f 72 65 61 64 74  |,`..sheila_readt|
000047d0  61 62 5f 61 64 64 72 20  45 51 55 44 20 30 0d 2c  |ab_addr EQUD 0.,|
000047e0  6a 1e 2e 73 6f 75 6e 64  5f 76 65 63 74 6f 72 73  |j..sound_vectors|
000047f0  5f 61 64 64 72 20 45 51  55 44 20 30 0d 2c 74 16  |_addr EQUD 0.,t.|
00004800  2e 70 61 74 63 68 5f 61  64 64 72 20 45 51 55 44  |.patch_addr EQUD|
00004810  20 30 0d 2c 7e 05 5d 0d  2c 88 05 e1 0d 2c 9c 09  | 0.,~.].,....,..|
00004820  dd f2 72 74 73 0d 2c a6  0f 73 70 3f 33 3d 73 70  |..rts.,..sp?3=sp|
00004830  3f 33 2b 31 0d 2c b0 21  70 63 5f 73 74 6f 72 65  |?3+1.,.!pc_store|
00004840  3f 32 3d 6d 65 6d 6f 72  79 3f 28 26 31 30 30 2b  |?2=memory?(&100+|
00004850  73 70 3f 33 29 0d 2c ba  0f 73 70 3f 33 3d 73 70  |sp?3).,..sp?3=sp|
00004860  3f 33 2b 31 0d 2c c4 21  70 63 5f 73 74 6f 72 65  |?3+1.,.!pc_store|
00004870  3f 33 3d 6d 65 6d 6f 72  79 3f 28 26 31 30 30 2b  |?3=memory?(&100+|
00004880  73 70 3f 33 29 0d 2c ce  1f 21 70 63 5f 73 74 6f  |sp?3).,..!pc_sto|
00004890  72 65 3d 21 70 63 5f 73  74 6f 72 65 2b 28 31 3c  |re=!pc_store+(1<|
000048a0  3c 31 36 29 0d 2c e2 05  e1 0d 2c ec 17 21 70 63  |<16).,....,..!pc|
000048b0  5f 73 74 6f 72 65 3d 26  38 30 30 34 3c 3c 31 36  |_store=&8004<<16|
000048c0  0d 2d 1e 05 e1 0d 2d 32  0c dd f2 6f 73 66 69 6c  |.-....-2...osfil|
000048d0  65 0d 2d 46 1d 61 64 64  72 3d 6d 65 6d 6f 72 79  |e.-F.addr=memory|
000048e0  2b 78 3f 33 2b 28 79 3f  33 29 2a 32 35 36 0d 2d  |+x?3+(y?3)*256.-|
000048f0  50 0a c8 8e 61 3f 33 ca  0d 2d 5a 06 c9 30 0d 2d  |P...a?3..-Z..0.-|
00004900  64 0a 61 25 3d 61 3f 33  0d 2d 6e 29 62 24 3d a4  |d.a%=a?3.-n)b$=.|
00004910  61 64 64 70 61 74 68 28  24 28 28 61 64 64 72 21  |addpath($((addr!|
00004920  30 80 26 46 46 46 46 29  2b 6d 65 6d 6f 72 79 29  |0.&FFFF)+memory)|
00004930  29 0d 2d 78 0d 63 25 3d  61 64 64 72 21 32 0d 2d  |).-x.c%=addr!2.-|
00004940  82 0d 64 25 3d 61 64 64  72 21 36 0d 2d 8c 1d 65  |..d%=addr!6.-..e|
00004950  25 3d 28 61 64 64 72 21  31 30 80 26 46 46 46 46  |%=(addr!10.&FFFF|
00004960  29 2b 6d 65 6d 6f 72 79  0d 2d 96 1d 66 25 3d 28  |)+memory.-..f%=(|
00004970  61 64 64 72 21 31 34 80  26 46 46 46 46 29 2b 6d  |addr!14.&FFFF)+m|
00004980  65 6d 6f 72 79 0d 2d aa  27 c8 99 22 58 4f 53 5f  |emory.-.'.."XOS_|
00004990  46 69 6c 65 22 2c 61 25  2c 62 24 2c 63 25 2c 64  |File",a%,b$,c%,d|
000049a0  25 2c 65 25 2c 66 25 b8  41 25 3b 46 0d 2d b4 1d  |%,e%,f%.A%;F.-..|
000049b0  e7 28 46 80 20 31 29 3d  30 8c f2 72 74 73 8b f2  |.(F. 1)=0..rts..|
000049c0  73 77 69 5f 65 72 72 6f  72 0d 2d be 06 c9 35 0d  |swi_error.-...5.|
000049d0  2d c8 1f 62 24 3d 24 28  28 61 64 64 72 21 30 80  |-..b$=$((addr!0.|
000049e0  26 46 46 46 46 29 2b 6d  65 6d 6f 72 79 29 0d 2d  |&FFFF)+memory).-|
000049f0  d2 3c c8 99 22 58 4f 53  5f 46 69 6c 65 22 2c 31  |.<.."XOS_File",1|
00004a00  33 2c a4 61 64 64 5f 28  62 24 29 2c 2c 2c a4 5f  |3,.add_(b$),,,._|
00004a10  70 61 74 68 28 62 24 29  b8 41 25 2c 2c 63 25 2c  |path(b$).A%,,c%,|
00004a20  64 25 2c 65 25 2c 66 25  3b 46 0d 2d dc 0e e7 28  |d%,e%,f%;F.-...(|
00004a30  46 80 20 31 29 3d 31 8c  0d 2d e6 0e f2 73 77 69  |F. 1)=1..-...swi|
00004a40  5f 65 72 72 6f 72 0d 2d  f0 05 cc 0d 2d fa 0a 61  |_error.-....-..a|
00004a50  3f 33 3d 41 25 0d 2e 04  0d 61 64 64 72 21 32 3d  |?3=A%....addr!2=|
00004a60  63 25 0d 2e 0e 0d 61 64  64 72 21 36 3d 64 25 0d  |c%....addr!6=d%.|
00004a70  2e 18 0e 61 64 64 72 21  31 30 3d 65 25 0d 2e 22  |...addr!10=e%.."|
00004a80  0e 61 64 64 72 21 31 34  3d 66 25 0d 2e 2c 08 f2  |.addr!14=f%..,..|
00004a90  72 74 73 0d 2e 36 05 cd  0d 2e 40 06 c9 36 0d 2e  |rts..6....@..6..|
00004aa0  4a 1f 62 24 3d 24 28 28  61 64 64 72 21 30 80 26  |J.b$=$((addr!0.&|
00004ab0  46 46 46 46 29 2b 6d 65  6d 6f 72 79 29 0d 2e 54  |FFFF)+memory)..T|
00004ac0  31 c8 99 22 58 4f 53 5f  46 69 6c 65 22 2c 36 2c  |1.."XOS_File",6,|
00004ad0  a4 61 64 64 70 61 74 68  28 62 24 29 b8 41 25 2c  |.addpath(b$).A%,|
00004ae0  2c 63 25 2c 64 25 2c 65  25 2c 66 25 3b 46 0d 2e  |,c%,d%,e%,f%;F..|
00004af0  5e 0e e7 28 46 80 20 31  29 3d 31 8c 0d 2e 68 0e  |^..(F. 1)=1...h.|
00004b00  f2 73 77 69 5f 65 72 72  6f 72 0d 2e 72 05 cc 0d  |.swi_error..r...|
00004b10  2e 7c 0a 61 3f 33 3d 41  25 0d 2e 86 0d 61 64 64  |.|.a?3=A%....add|
00004b20  72 21 32 3d 63 25 0d 2e  90 0d 61 64 64 72 21 36  |r!2=c%....addr!6|
00004b30  3d 64 25 0d 2e 9a 0e 61  64 64 72 21 31 30 3d 65  |=d%....addr!10=e|
00004b40  25 0d 2e a4 0e 61 64 64  72 21 31 34 3d 66 25 0d  |%....addr!14=f%.|
00004b50  2e ae 08 f2 72 74 73 0d  2e b8 05 cd 0d 2e cc 08  |....rts.........|
00004b60  c9 32 35 35 0d 2e d6 0a  61 25 3d 61 3f 33 0d 2e  |.255....a%=a?3..|
00004b70  e0 1f 62 24 3d 24 28 28  61 64 64 72 21 30 80 26  |..b$=$((addr!0.&|
00004b80  46 46 46 46 29 2b 6d 65  6d 6f 72 79 29 0d 2e f4  |FFFF)+memory)...|
00004b90  1c 63 25 3d 28 61 64 64  72 21 32 80 26 46 46 46  |.c%=(addr!2.&FFF|
00004ba0  46 29 2b 6d 65 6d 6f 72  79 0d 2e fe 2c e7 28 61  |F)+memory...,.(a|
00004bb0  64 64 72 21 32 80 26 46  46 46 46 30 30 30 30 29  |ddr!2.&FFFF0000)|
00004bc0  3d 26 46 46 46 45 30 30  30 30 8c 63 25 2d 3d 26  |=&FFFE0000.c%-=&|
00004bd0  31 33 30 30 30 0d 2f 08  0d 64 25 3d 61 64 64 72  |13000./..d%=addr|
00004be0  3f 36 0d 2f 12 50 e7 64  25 3c 3e 30 8c c8 99 22  |?6./.P.d%<>0..."|
00004bf0  58 4f 53 5f 46 69 6c 65  22 2c 31 33 2c a4 61 64  |XOS_File",13,.ad|
00004c00  64 5f 28 62 24 29 2c 2c  2c a4 5f 70 61 74 68 28  |d_(b$),,,._path(|
00004c10  62 24 29 b8 2c 2c 63 25  3a 64 25 3d 30 3a 63 25  |b$).,,c%:d%=0:c%|
00004c20  3d 28 63 25 80 26 46 46  46 46 29 2b 6d 65 6d 6f  |=(c%.&FFFF)+memo|
00004c30  72 79 0d 2f 1c 36 c8 99  22 58 4f 53 5f 46 69 6c  |ry./.6.."XOS_Fil|
00004c40  65 22 2c 31 33 2c a4 61  64 64 5f 28 62 24 29 2c  |e",13,.add_(b$),|
00004c50  2c 2c a4 5f 70 61 74 68  28 62 24 29 b8 2c 2c 2c  |,,._path(b$).,,,|
00004c60  2c 6c 65 6e 67 74 68 25  0d 2f 26 2e e7 63 25 2b  |,length%./&..c%+|
00004c70  6c 65 6e 67 74 68 25 3e  6d 65 6d 6f 72 79 2b 26  |length%>memory+&|
00004c80  38 30 30 30 80 20 63 25  3c 6d 65 6d 6f 72 79 2b  |8000. c%<memory+|
00004c90  26 38 30 30 30 8c 0d 2f  30 1b 6c 65 6e 67 74 68  |&8000../0.length|
00004ca0  25 3d 6d 65 6d 6f 72 79  2b 26 37 46 46 46 2d 63  |%=memory+&7FFF-c|
00004cb0  25 0d 2f 3a 2e c8 99 22  58 4f 53 5f 46 69 6e 64  |%./:..."XOS_Find|
00004cc0  22 2c 26 34 44 2c a4 61  64 64 5f 28 62 24 29 2c  |",&4D,.add_(b$),|
00004cd0  a4 5f 70 61 74 68 28 62  24 29 b8 41 25 3b 46 0d  |._path(b$).A%;F.|
00004ce0  2f 44 4c e7 28 46 80 20  31 29 3d 30 8c c8 99 22  |/DL.(F. 1)=0..."|
00004cf0  58 4f 53 5f 47 42 50 42  22 2c 34 2c 41 25 2c 63  |XOS_GBPB",4,A%,c|
00004d00  25 2c 6c 65 6e 67 74 68  25 3a c8 99 22 58 4f 53  |%,length%:.."XOS|
00004d10  5f 46 69 6e 64 22 2c 30  2c 41 25 3a f2 72 74 73  |_Find",0,A%:.rts|
00004d20  8b f2 73 77 69 5f 65 72  72 6f 72 0d 2f 4e 05 cc  |..swi_error./N..|
00004d30  0d 2f 58 3f c8 99 22 58  4f 53 5f 46 69 6c 65 22  |./X?.."XOS_File"|
00004d40  2c 31 32 2c a4 61 64 64  5f 28 62 24 29 2c 63 25  |,12,.add_(b$),c%|
00004d50  2c 30 2c a4 5f 70 61 74  68 28 62 24 29 b8 41 25  |,0,._path(b$).A%|
00004d60  2c 2c 63 25 2c 64 25 2c  65 25 2c 66 25 3b 46 0d  |,,c%,d%,e%,f%;F.|
00004d70  2f 62 0a 61 3f 33 3d 41  25 0d 2f 6c 0d 61 64 64  |/b.a?3=A%./l.add|
00004d80  72 21 32 3d 63 25 0d 2f  76 0d 61 64 64 72 21 36  |r!2=c%./v.addr!6|
00004d90  3d 64 25 0d 2f 80 0e 61  64 64 72 21 31 30 3d 65  |=d%./..addr!10=e|
00004da0  25 0d 2f 8a 0e 61 64 64  72 21 31 34 3d 66 25 0d  |%./..addr!14=f%.|
00004db0  2f 94 1d e7 28 46 80 20  31 29 3d 30 8c f2 72 74  |/...(F. 1)=0..rt|
00004dc0  73 8b f2 73 77 69 5f 65  72 72 6f 72 0d 2f 9e 05  |s..swi_error./..|
00004dd0  cd 0d 2f bc 09 61 3f 33  3d 31 0d 30 0c 05 7f 0d  |../..a?3=1.0....|
00004de0  30 16 16 f1 22 4f 53 46  49 4c 45 20 22 3b 61 3f  |0..."OSFILE ";a?|
00004df0  33 3a 51 3d a5 0d 30 20  05 cb 0d 30 2a 05 e1 0d  |3:Q=..0 ...0*...|
00004e00  30 3e 0f dd f2 73 77 69  5f 65 72 72 6f 72 0d 30  |0>...swi_error.0|
00004e10  48 07 ea 41 24 0d 30 52  09 41 24 3d 22 22 0d 30  |H..A$.0R.A$="".0|
00004e20  5c 0d e3 49 25 3d 30 b8  32 35 33 0d 30 70 1e 6d  |\..I%=0.253.0p.m|
00004e30  65 6d 6f 72 79 3f 28 26  31 30 32 2b 49 25 29 3d  |emory?(&102+I%)=|
00004e40  41 25 3f 28 49 25 2b 34  29 0d 30 7a 17 e7 41 25  |A%?(I%+4).0z..A%|
00004e50  3f 28 49 25 2b 34 29 3d  30 8c 49 25 3d 32 35 33  |?(I%+4)=0.I%=253|
00004e60  0d 30 84 05 ed 0d 30 98  11 6d 65 6d 6f 72 79 3f  |.0....0..memory?|
00004e70  26 31 30 30 3d 30 0d 30  a2 13 6d 65 6d 6f 72 79  |&100=0.0..memory|
00004e80  3f 26 31 30 31 3d 3f 41  25 0d 30 b6 16 21 70 63  |?&101=?A%.0..!pc|
00004e90  5f 73 74 6f 72 65 3d 26  31 30 30 3c 3c 31 36 0d  |_store=&100<<16.|
00004ea0  30 c0 05 e1 0d 30 d4 10  dd f2 62 72 6b 28 41 25  |0....0....brk(A%|
00004eb0  2c 41 24 29 0d 30 de 0c  41 24 3d 41 24 2b bd 30  |,A$).0..A$=A$+.0|
00004ec0  0d 30 e8 0f e3 49 25 3d  30 b8 a9 41 24 2d 31 0d  |.0...I%=0..A$-1.|
00004ed0  30 f2 21 6d 65 6d 6f 72  79 3f 28 26 31 30 32 2b  |0.!memory?(&102+|
00004ee0  49 25 29 3d 97 c1 41 24  2c 49 25 2b 31 2c 31 29  |I%)=..A$,I%+1,1)|
00004ef0  0d 30 fc 05 ed 0d 31 06  11 6d 65 6d 6f 72 79 3f  |.0....1..memory?|
00004f00  26 31 30 30 3d 30 0d 31  10 12 6d 65 6d 6f 72 79  |&100=0.1..memory|
00004f10  3f 26 31 30 31 3d 41 25  0d 31 1a 16 21 70 63 5f  |?&101=A%.1..!pc_|
00004f20  73 74 6f 72 65 3d 26 31  30 30 3c 3c 31 36 0d 31  |store=&100<<16.1|
00004f30  24 05 e1 0d 31 38 1e dd  a4 6d 69 6e 28 41 25 2c  |$...18...min(A%,|
00004f40  42 25 29 e7 41 25 3c 42  25 8c 3d 41 25 8b 3d 42  |B%).A%<B%.=A%.=B|
00004f50  25 0d 31 4c 0c dd f2 6f  73 77 6f 72 64 0d 31 56  |%.1L...osword.1V|
00004f60  0a c8 8e 61 3f 33 ca 0d  31 60 0e c9 30 2c 31 2c  |...a?3..1`..0,1,|
00004f70  32 2c 33 2c 34 0d 31 6a  1a 70 63 5f 73 74 6f 72  |2,3,4.1j.pc_stor|
00004f80  65 3f 32 3d 6d 65 6d 6f  72 79 3f 26 32 30 43 0d  |e?2=memory?&20C.|
00004f90  31 74 1a 70 63 5f 73 74  6f 72 65 3f 33 3d 6d 65  |1t.pc_store?3=me|
00004fa0  6d 6f 72 79 3f 26 32 30  44 0d 31 7e 09 c9 30 31  |mory?&20D.1~..01|
00004fb0  32 33 0d 31 88 15 61 64  64 72 3d 78 3f 33 2b 28  |23.1..addr=x?3+(|
00004fc0  79 3f 33 3c 3c 38 29 0d  31 92 29 62 75 66 66 3d  |y?3<<8).1.)buff=|
00004fd0  6d 65 6d 6f 72 79 3f 61  64 64 72 2b 28 6d 65 6d  |memory?addr+(mem|
00004fe0  6f 72 79 3f 28 61 64 64  72 2b 31 29 3c 3c 38 29  |ory?(addr+1)<<8)|
00004ff0  0d 31 9c 56 c8 99 22 4f  53 5f 52 65 61 64 4c 69  |.1.V.."OS_ReadLi|
00005000  6e 65 22 2c 62 75 66 66  2b 6d 65 6d 6f 72 79 2c  |ne",buff+memory,|
00005010  6d 65 6d 6f 72 79 3f 28  61 64 64 72 2b 32 29 2c  |memory?(addr+2),|
00005020  6d 65 6d 6f 72 79 3f 28  61 64 64 72 2b 33 29 2c  |memory?(addr+3),|
00005030  6d 65 6d 6f 72 79 3f 28  61 64 64 72 2b 34 29 b8  |memory?(addr+4).|
00005040  2c 59 25 3b 46 25 0d 31  a6 29 e7 28 46 25 80 25  |,Y%;F%.1.).(F%.%|
00005050  31 30 29 3d 30 8c 6d 65  6d 6f 72 79 3f 28 62 75  |10)=0.memory?(bu|
00005060  66 66 2b 59 25 29 3d 31  33 3a 59 25 2b 3d 31 0d  |ff+Y%)=13:Y%+=1.|
00005070  31 b0 0a 79 3f 33 3d 59  25 0d 31 ba 23 3f 66 3d  |1..y?3=Y%.1.#?f=|
00005080  28 3f 66 80 25 31 31 31  31 31 31 31 30 29 84 28  |(?f.%11111110).(|
00005090  28 46 25 80 25 31 30 29  3e 3e 31 29 0d 31 c4 08  |(F%.%10)>>1).1..|
000050a0  f2 72 74 73 0d 31 ce 0a  c9 39 31 2c 39 33 0d 31  |.rts.1...91,93.1|
000050b0  d8 25 c8 99 22 4f 53 5f  57 6f 72 64 22 2c 31 2c  |.%.."OS_Word",1,|
000050c0  78 3f 33 2b 28 79 3f 33  3c 3c 38 29 2b 6d 65 6d  |x?3+(y?3<<8)+mem|
000050d0  6f 72 79 0d 31 e2 08 f2  72 74 73 0d 31 ec 07 c9  |ory.1...rts.1...|
000050e0  39 32 0d 31 f6 25 c8 99  22 4f 53 5f 57 6f 72 64  |92.1.%.."OS_Word|
000050f0  22 2c 32 2c 78 3f 33 2b  28 79 3f 33 3c 3c 38 29  |",2,x?3+(y?3<<8)|
00005100  2b 6d 65 6d 6f 72 79 0d  32 00 08 f2 72 74 73 0d  |+memory.2...rts.|
00005110  32 0a 06 c9 37 0d 32 14  1e 62 75 66 66 65 72 3d  |2...7.2..buffer=|
00005120  6d 65 6d 6f 72 79 2b 78  3f 33 2b 28 79 3f 33 3c  |memory+x?3+(y?3<|
00005130  3c 38 29 0d 32 6e 18 63  68 61 6e 6e 65 6c 25 3d  |<8).2n.channel%=|
00005140  3f 62 75 66 66 65 72 80  25 31 31 0d 32 78 19 66  |?buffer.%11.2x.f|
00005150  6c 75 73 68 25 3d 3f 62  75 66 66 65 72 80 25 31  |lush%=?buffer.%1|
00005160  30 30 30 30 0d 32 82 17  73 79 6e 63 25 3d 62 75  |0000.2..sync%=bu|
00005170  66 66 65 72 3f 31 80 25  31 31 31 0d 32 8c 1c 63  |ffer?1.%111.2..c|
00005180  6f 6e 74 25 3d 62 75 66  66 65 72 3f 31 80 25 31  |ont%=buffer?1.%1|
00005190  31 31 31 30 30 30 30 0d  32 96 41 61 6d 70 6c 25  |1110000.2.Aampl%|
000051a0  3d 62 75 66 66 65 72 3f  32 3a e7 61 6d 70 6c 25  |=buffer?2:.ampl%|
000051b0  3e 26 45 46 8c 61 6d 70  6c 25 2b 3d 26 46 46 30  |>&EF.ampl%+=&FF0|
000051c0  30 8b 61 6d 70 6c 25 2b  3d 33 30 31 3a 63 68 61  |0.ampl%+=301:cha|
000051d0  6e 6e 65 6c 25 2b 3d 34  0d 32 a0 13 70 69 74 63  |nnel%+=4.2..pitc|
000051e0  68 25 3d 62 75 66 66 65  72 3f 34 0d 32 aa 11 64  |h%=buffer?4.2..d|
000051f0  75 72 25 3d 62 75 66 66  65 72 3f 36 0d 32 b4 10  |ur%=buffer?6.2..|
00005200  e7 63 68 61 6e 6e 65 6c  25 3d 30 8c 0d 32 be 12  |.channel%=0..2..|
00005210  c8 8e 70 69 74 63 68 25  80 25 31 31 31 ca 0d 32  |..pitch%.%111..2|
00005220  c8 13 c9 30 2c 34 3a 70  69 74 63 68 25 3d 32 32  |...0,4:pitch%=22|
00005230  30 0d 32 d2 13 c9 31 2c  35 3a 70 69 74 63 68 25  |0.2...1,5:pitch%|
00005240  3d 31 36 30 0d 32 dc 13  c9 32 2c 36 3a 70 69 74  |=160.2...2,6:pit|
00005250  63 68 25 3d 31 30 30 0d  32 e6 1c c9 33 2c 37 3a  |ch%=100.2...3,7:|
00005260  70 69 74 63 68 25 3d 63  68 61 6e 31 5f 70 69 74  |pitch%=chan1_pit|
00005270  63 68 25 0d 32 f0 05 cb  0d 32 fa 05 cd 0d 33 04  |ch%.2....2....3.|
00005280  23 e7 63 68 61 6e 6e 65  6c 25 3d 31 8c 63 68 61  |#.channel%=1.cha|
00005290  6e 31 5f 70 69 74 63 68  25 3d 70 69 74 63 68 25  |n1_pitch%=pitch%|
000052a0  0d 33 18 3b e7 63 6f 6e  74 25 3d 30 8c c8 99 22  |.3.;.cont%=0..."|
000052b0  53 6f 75 6e 64 5f 43 6f  6e 74 72 6f 6c 22 2c 63  |Sound_Control",c|
000052c0  68 61 6e 6e 65 6c 25 2b  31 2c 61 6d 70 6c 25 2c  |hannel%+1,ampl%,|
000052d0  70 69 74 63 68 25 2c 64  75 72 25 0d 33 2c 08 f2  |pitch%,dur%.3,..|
000052e0  72 74 73 0d 33 40 06 c9  38 0d 33 72 3a e7 3f 28  |rts.3@..8.3r:.?(|
000052f0  6d 65 6d 6f 72 79 2b 78  3f 33 2b 28 79 3f 33 3c  |memory+x?3+(y?3<|
00005300  3c 38 29 2b 31 29 3d 30  8c 3f 28 6d 65 6d 6f 72  |<8)+1)=0.?(memor|
00005310  79 2b 78 3f 33 2b 28 79  3f 33 3c 3c 38 29 2b 31  |y+x?3+(y?3<<8)+1|
00005320  29 3d 31 0d 33 7c 2c c8  99 22 53 61 72 61 68 5f  |)=1.3|,.."Sarah_|
00005330  45 6e 76 65 6c 6f 70 65  22 2c 30 2c 6d 65 6d 6f  |Envelope",0,memo|
00005340  72 79 2b 78 3f 33 2b 28  79 3f 33 3c 3c 38 29 0d  |ry+x?3+(y?3<<8).|
00005350  33 90 08 f2 72 74 73 0d  33 a4 08 c9 26 37 46 0d  |3...rts.3...&7F.|
00005360  33 ae 1d 61 64 64 72 25  3d 78 3f 33 2b 28 79 3f  |3..addr%=x?3+(y?|
00005370  33 3c 3c 38 29 2b 6d 65  6d 6f 72 79 0d 33 b8 12  |3<<8)+memory.3..|
00005380  74 72 61 63 6b 25 3d 61  64 64 72 25 3f 37 0d 33  |track%=addr%?7.3|
00005390  c2 13 73 65 63 74 6f 72  25 3d 61 64 64 72 25 3f  |..sector%=addr%?|
000053a0  38 0d 33 cc 29 64 69 73  63 5f 61 64 64 72 65 73  |8.3.)disc_addres|
000053b0  73 25 3d 73 65 63 74 6f  72 25 2a 32 35 36 2b 74  |s%=sector%*256+t|
000053c0  72 61 63 6b 25 2a 32 35  36 30 0d 33 d6 20 6c 65  |rack%*2560.3. le|
000053d0  6e 67 74 68 25 3d 28 6d  65 6d 6f 72 79 3f 39 80  |ngth%=(memory?9.|
000053e0  25 31 31 31 31 29 2a 32  35 36 0d 33 e0 0e 61 64  |%1111)*256.3..ad|
000053f0  64 72 25 3f 31 30 3d 30  0d 33 ea 08 f2 72 74 73  |dr%?10=0.3...rts|
00005400  0d 33 fe 0d 7f e7 61 3f  33 3e 32 30 8c 0d 34 08  |.3....a?3>20..4.|
00005410  1a 70 63 5f 73 74 6f 72  65 3f 32 3d 6d 65 6d 6f  |.pc_store?2=memo|
00005420  72 79 3f 26 32 30 43 0d  34 12 1a 70 63 5f 73 74  |ry?&20C.4..pc_st|
00005430  6f 72 65 3f 33 3d 6d 65  6d 6f 72 79 3f 26 32 30  |ore?3=memory?&20|
00005440  44 0d 34 1c 05 cb 0d 34  26 05 e1 0d 34 3a 0c dd  |D.4....4&...4:..|
00005450  f2 6f 73 67 62 70 62 0d  34 4e 1d 61 64 64 72 25  |.osgbpb.4N.addr%|
00005460  3d 6d 65 6d 6f 72 79 2b  78 3f 33 2b 28 79 3f 33  |=memory+x?3+(y?3|
00005470  3c 3c 38 29 0d 34 58 0d  62 25 3d 3f 61 64 64 72  |<<8).4X.b%=?addr|
00005480  25 0d 34 62 0e 63 25 3d  61 64 64 72 25 21 31 0d  |%.4b.c%=addr%!1.|
00005490  34 6c 0e 64 25 3d 61 64  64 72 25 21 35 0d 34 76  |4l.d%=addr%!5.4v|
000054a0  0e 65 25 3d 61 64 64 72  25 21 39 0d 34 94 0b e7  |.e%=addr%!9.4...|
000054b0  61 3f 33 3d 39 8c 0d 34  a8 57 c8 99 22 58 4f 53  |a?3=9..4.W.."XOS|
000054c0  5f 47 42 50 42 22 2c 61  3f 33 2c 66 73 24 2b 64  |_GBPB",a?3,fs$+d|
000054d0  69 73 63 24 2b 70 61 74  68 24 2b 73 75 62 70 61  |isc$+path$+subpa|
000054e0  74 68 24 2c 6d 65 6d 6f  72 79 2b 28 63 25 80 26  |th$,memory+(c%.&|
000054f0  46 46 46 46 29 2c 62 25  2c 65 25 2c 64 25 2c 30  |FFFF),b%,e%,d%,0|
00005500  b8 41 25 2c 2c 2c 64 25  2c 65 25 3b 46 0d 34 b2  |.A%,,,d%,e%;F.4.|
00005510  0e e7 28 46 80 20 31 29  3d 30 8c 0d 34 bc 0d 3f  |..(F. 1)=0..4..?|
00005520  61 64 64 72 25 3d 64 25  0d 34 c6 0e 61 64 64 72  |addr%=d%.4..addr|
00005530  25 21 39 3d 65 25 0d 34  d0 28 e7 28 46 80 25 31  |%!9=e%.4.(.(F.%1|
00005540  30 29 3d 30 8c 3f 66 3d  28 3f 66 80 25 31 31 31  |0)=0.?f=(?f.%111|
00005550  31 31 31 31 30 29 8b 3f  66 3d 3f 66 84 31 0d 34  |11110).?f=?f.1.4|
00005560  da 08 f2 72 74 73 0d 34  e4 05 cc 0d 34 ee 0e f2  |...rts.4....4...|
00005570  73 77 69 5f 65 72 72 6f  72 0d 34 f8 05 cd 0d 35  |swi_error.4....5|
00005580  0c 05 cc 0d 35 20 1b c8  99 22 4f 53 5f 46 53 43  |....5 ..."OS_FSC|
00005590  6f 6e 74 72 6f 6c 22 2c  31 31 2c 66 73 24 0d 35  |ontrol",11,fs$.5|
000055a0  2a 2b c8 99 22 4f 53 5f  46 53 43 6f 6e 74 72 6f  |*+.."OS_FSContro|
000055b0  6c 22 2c 30 2c 64 69 73  63 24 2b 70 61 74 68 24  |l",0,disc$+path$|
000055c0  2b 73 75 62 70 61 74 68  24 0d 35 3e 35 e7 28 61  |+subpath$.5>5.(a|
000055d0  3f 33 3d 33 84 61 3f 33  3d 34 29 80 20 63 25 3c  |?3=3.a?3=4). c%<|
000055e0  26 38 30 30 30 80 20 63  25 2b 65 25 3e 26 38 30  |&8000. c%+e%>&80|
000055f0  30 30 8c 65 25 3d 26 38  30 30 30 2d 63 25 0d 35  |00.e%=&8000-c%.5|
00005600  52 3e c8 99 22 58 4f 53  5f 47 42 50 42 22 2c 61  |R>.."XOS_GBPB",a|
00005610  3f 33 2c 62 25 2c 6d 65  6d 6f 72 79 2b 28 63 25  |?3,b%,memory+(c%|
00005620  80 26 46 46 46 46 29 2c  64 25 2c 65 25 b8 41 25  |.&FFFF),d%,e%.A%|
00005630  2c 2c 63 25 2c 64 25 2c  65 25 3b 46 0d 35 66 17  |,,c%,d%,e%;F.5f.|
00005640  c8 99 22 4f 53 5f 46 53  43 6f 6e 74 72 6f 6c 22  |.."OS_FSControl"|
00005650  2c 31 39 0d 35 7a 0e e7  28 46 80 20 31 29 3d 30  |,19.5z..(F. 1)=0|
00005660  8c 0d 35 84 15 61 64 64  72 25 21 31 3d 63 25 2d  |..5..addr%!1=c%-|
00005670  6d 65 6d 6f 72 79 0d 35  8e 0e 61 64 64 72 25 21  |memory.5..addr%!|
00005680  35 3d 64 25 0d 35 98 0e  61 64 64 72 25 21 39 3d  |5=d%.5..addr%!9=|
00005690  65 25 0d 35 a2 28 e7 28  46 80 25 31 30 29 3d 30  |e%.5.(.(F.%10)=0|
000056a0  8c 3f 66 3d 28 3f 66 80  25 31 31 31 31 31 31 31  |.?f=(?f.%1111111|
000056b0  30 29 8b 3f 66 3d 3f 66  84 31 0d 35 ac 08 f2 72  |0).?f=?f.1.5...r|
000056c0  74 73 0d 35 b6 05 cc 0d  35 c0 0e f2 73 77 69 5f  |ts.5....5...swi_|
000056d0  65 72 72 6f 72 0d 35 ca  05 cd 0d 35 de 05 cd 0d  |error.5....5....|
000056e0  35 e8 05 e1 0d 35 fc 0c  dd f2 6f 73 61 72 67 73  |5....5....osargs|
000056f0  0d 36 06 0a c8 8e 61 3f  33 ca 0d 36 10 06 c9 30  |.6....a?3..6...0|
00005700  0d 36 1a 0c e7 79 3f 33  3c 3e 30 8c 0d 36 24 21  |.6...y?3<>0..6$!|
00005710  c8 99 22 58 4f 53 5f 41  72 67 73 22 2c 61 3f 33  |.."XOS_Args",a?3|
00005720  2c 79 3f 33 b8 41 25 2c  2c 4c 25 3b 46 0d 36 2e  |,y?3.A%,,L%;F.6.|
00005730  2d e7 28 46 80 20 31 29  3d 30 8c 6d 65 6d 6f 72  |-.(F. 1)=0.memor|
00005740  79 21 28 78 3f 33 29 3d  4c 25 3a f2 72 74 73 8b  |y!(x?3)=L%:.rts.|
00005750  f2 73 77 69 5f 65 72 72  6f 72 0d 36 38 05 cc 0d  |.swi_error.68...|
00005760  36 42 0e 61 3f 33 3d 34  3a f2 72 74 73 0d 36 4c  |6B.a?3=4:.rts.6L|
00005770  05 cd 0d 36 56 06 c9 31  0d 36 60 2a c8 99 22 58  |...6V..1.6`*.."X|
00005780  4f 53 5f 41 72 67 73 22  2c 61 3f 33 2c 79 3f 33  |OS_Args",a?3,y?3|
00005790  2c 6d 65 6d 6f 72 79 21  28 78 3f 33 29 b8 41 25  |,memory!(x?3).A%|
000057a0  3b 46 0d 36 6a 1d e7 28  46 80 20 31 29 3d 30 8c  |;F.6j..(F. 1)=0.|
000057b0  f2 72 74 73 8b f2 73 77  69 5f 65 72 72 6f 72 0d  |.rts..swi_error.|
000057c0  36 74 06 c9 32 0d 36 7e  21 c8 99 22 58 4f 53 5f  |6t..2.6~!.."XOS_|
000057d0  41 72 67 73 22 2c 61 3f  33 2c 79 3f 33 b8 41 25  |Args",a?3,y?3.A%|
000057e0  2c 2c 4c 25 3b 46 0d 36  88 2d e7 28 46 80 20 31  |,,L%;F.6.-.(F. 1|
000057f0  29 3d 30 8c 6d 65 6d 6f  72 79 21 28 78 3f 33 29  |)=0.memory!(x?3)|
00005800  3d 4c 25 3a f2 72 74 73  8b f2 73 77 69 5f 65 72  |=L%:.rts..swi_er|
00005810  72 6f 72 0d 36 92 08 c9  32 35 35 0d 36 9c 1d c8  |ror.6...255.6...|
00005820  99 22 58 4f 53 5f 41 72  67 73 22 2c 61 3f 33 2c  |."XOS_Args",a?3,|
00005830  79 3f 33 b8 41 25 3b 46  0d 36 a6 1d e7 28 46 80  |y?3.A%;F.6...(F.|
00005840  20 31 29 3d 30 8c f2 72  74 73 8b f2 73 77 69 5f  | 1)=0..rts..swi_|
00005850  65 72 72 6f 72 0d 36 b0  0a 7f 3a f2 72 74 73 0d  |error.6...:.rts.|
00005860  36 ba 05 cb 0d 36 c4 05  e1 0d 36 d8 0f dd a4 75  |6....6....6....u|
00005870  70 70 65 72 28 41 24 29  0d 36 e2 0a ea 49 25 2c  |pper(A$).6...I%,|
00005880  42 24 0d 36 ec 0d e3 49  25 3d 31 b8 a9 41 24 0d  |B$.6...I%=1..A$.|
00005890  36 f6 49 e7 c1 41 24 2c  49 25 2c 31 29 3e 3d 22  |6.I..A$,I%,1)>="|
000058a0  61 22 80 c1 41 24 2c 49  25 2c 31 29 3c 3d 22 7a  |a"..A$,I%,1)<="z|
000058b0  22 8c 42 24 3d 42 24 2b  bd 28 97 c1 41 24 2c 49  |".B$=B$+.(..A$,I|
000058c0  25 2c 31 29 2d 33 32 29  8b 42 24 3d 42 24 2b c1  |%,1)-32).B$=B$+.|
000058d0  41 24 2c 49 25 2c 31 29  0d 37 00 05 ed 0d 37 0a  |A$,I%,1).7....7.|
000058e0  07 3d 42 24 0d 37 1e 0a  dd f2 71 75 69 74 0d 37  |.=B$.7....quit.7|
000058f0  28 07 ee 85 87 0d 37 32  10 f2 72 65 73 65 74 6d  |(.....72..resetm|
00005900  65 6d 6d 61 70 0d 37 3c  1b c8 99 22 58 36 35 30  |emmap.7<..."X650|
00005910  32 5f 44 65 52 65 67 69  73 74 65 72 22 b8 41 25  |2_DeRegister".A%|
00005920  0d 37 46 28 e7 41 25 3d  30 8c c8 99 22 58 4f 53  |.7F(.A%=0..."XOS|
00005930  5f 4d 6f 64 75 6c 65 22  2c 34 2c 22 36 35 30 32  |_Module",4,"6502|
00005940  53 75 70 70 6f 72 74 22  0d 37 50 16 c8 99 22 57  |Support".7P..."W|
00005950  69 6d 70 5f 43 6c 6f 73  65 44 6f 77 6e 22 0d 37  |imp_CloseDown".7|
00005960  5a 05 e0 0d 37 64 05 e1  0d 38 36 16 dd f2 73 6e  |Z...7d...86...sn|
00005970  61 70 5f 6c 6f 61 64 28  66 69 6c 65 24 29 0d 38  |ap_load(file$).8|
00005980  40 24 ea 66 69 6c 65 25  2c 49 25 2c 6f 6b 25 2c  |@$.file%,I%,ok%,|
00005990  6d 61 63 68 69 6e 65 24  2c 4d 25 2c 70 61 74 63  |machine$,M%,patc|
000059a0  68 24 0d 38 4a 12 66 69  6c 65 25 3d 8e 28 66 69  |h$.8J.file%=.(fi|
000059b0  6c 65 24 29 0d 38 54 11  74 79 70 65 24 3d be 23  |le$).8T.type$=.#|
000059c0  66 69 6c 65 25 0d 38 5e  21 e7 a2 23 66 69 6c 65  |file%.8^!..#file|
000059d0  25 3d 30 8c 74 79 70 65  24 3d 22 42 42 43 20 53  |%=0.type$="BBC S|
000059e0  63 72 69 70 74 22 0d 38  72 0c c8 8e 74 79 70 65  |cript".8r...type|
000059f0  24 ca 0d 38 86 13 c9 22  42 42 43 20 54 61 70 65  |$..8..."BBC Tape|
00005a00  66 69 6c 65 22 0d 38 9a  0b d9 23 66 69 6c 65 25  |file".8...#file%|
00005a10  0d 38 a4 13 74 61 70 65  66 69 6c 65 24 3d 66 69  |.8..tapefile$=fi|
00005a20  6c 65 24 0d 38 b8 11 c9  22 42 42 43 20 53 63 72  |le$.8..."BBC Scr|
00005a30  69 70 74 22 0d 38 cc 06  ea 85 0d 38 e0 5c ee 85  |ipt".8.....8.\..|
00005a40  ea 3a f7 85 3a c8 99 22  58 57 69 6d 70 5f 52 65  |.:..:.."XWimp_Re|
00005a50  70 6f 72 74 45 72 72 6f  72 22 2c 22 20 20 20 20  |portError","    |
00005a60  45 72 72 6f 72 20 69 6e  20 73 63 72 69 70 74 3a  |Error in script:|
00005a70  20 22 2b f6 24 2c 33 2c  22 36 35 30 32 45 6d 22  | "+.$,3,"6502Em"|
00005a80  b8 2c 41 25 3a e7 41 25  3d 32 8c f2 71 75 69 74  |.,A%:.A%=2..quit|
00005a90  8b f2 70 6f 6c 6c 0d 38  f4 12 73 63 72 6f 6c 6c  |..poll.8..scroll|
00005aa0  5f 68 61 63 6b 25 3d a3  0d 39 12 0d e7 c5 23 66  |_hack%=..9....#f|
00005ab0  69 6c 65 25 8c 0d 39 1c  09 41 24 3d 22 22 0d 39  |ile%..9..A$="".9|
00005ac0  26 05 cc 0d 39 30 16 41  24 3d a4 75 70 70 65 72  |&...90.A$=.upper|
00005ad0  28 be 23 66 69 6c 65 25  29 0d 39 3a 05 cd 0d 39  |(.#file%).9:...9|
00005ae0  44 05 f5 0d 39 4e 16 42  24 3d c0 41 24 2c a7 41  |D...9N.B$=.A$,.A|
00005af0  24 2c 22 20 22 29 2d 31  29 0d 39 58 09 6f 6b 25  |$," ")-1).9X.ok%|
00005b00  3d b9 0d 39 62 09 c8 8e  42 24 ca 0d 39 6c 0e c9  |=..9b...B$..9l..|
00005b10  22 50 41 4c 45 54 54 45  22 0d 39 76 24 e7 a7 41  |"PALETTE".9v$..A|
00005b20  24 2c 22 4f 4e 22 29 8c  50 61 6c 65 74 74 65 25  |$,"ON").Palette%|
00005b30  3d b9 8b 50 61 6c 65 74  74 65 25 3d a3 0d 39 80  |=..Palette%=..9.|
00005b40  0d c9 22 43 55 52 53 4f  52 22 0d 39 8a 22 e7 a7  |.."CURSOR".9."..|
00005b50  41 24 2c 22 4f 4e 22 29  8c 43 75 72 73 6f 72 25  |A$,"ON").Cursor%|
00005b60  3d b9 8b 43 75 72 73 6f  72 25 3d a3 0d 39 94 11  |=..Cursor%=..9..|
00005b70  c9 22 45 58 41 43 54 53  50 45 45 44 22 0d 39 9e  |."EXACTSPEED".9.|
00005b80  20 e7 a7 41 24 2c 22 4f  4e 22 29 8c 65 78 61 63  | ..A$,"ON").exac|
00005b90  74 25 3d b9 8b 65 78 61  63 74 25 3d a3 0d 39 a8  |t%=..exact%=..9.|
00005ba0  0c c9 22 53 4f 55 4e 44  22 0d 39 b2 26 e7 a7 41  |.."SOUND".9.&..A|
00005bb0  24 2c 22 4f 4e 22 29 8c  73 6f 75 6e 64 5f 6f 6e  |$,"ON").sound_on|
00005bc0  25 3d b9 8b 73 6f 75 6e  64 5f 6f 6e 25 3d a3 0d  |%=..sound_on%=..|
00005bd0  39 bc 12 c9 22 44 49 53  41 42 4c 45 54 41 50 45  |9..."DISABLETAPE|
00005be0  22 0d 39 c6 0f f2 64 69  73 61 62 6c 65 43 46 53  |".9...disableCFS|
00005bf0  0d 39 d0 11 c9 22 53 43  52 4f 4c 4c 48 41 43 4b  |.9..."SCROLLHACK|
00005c00  22 0d 39 da 12 73 63 72  6f 6c 6c 5f 68 61 63 6b  |".9..scroll_hack|
00005c10  25 3d b9 0d 39 e4 0d c9  22 4b 45 59 4d 41 50 22  |%=..9..."KEYMAP"|
00005c20  0d 39 ee 18 4b 24 3d c2  41 24 2c a9 41 24 2d a7  |.9..K$=.A$,.A$-.|
00005c30  41 24 2c 22 20 22 29 29  0d 39 f8 12 f2 73 65 74  |A$," ")).9...set|
00005c40  6b 65 79 6d 61 70 28 4b  24 29 0d 3a 02 0c c9 22  |keymap(K$).:..."|
00005c50  50 41 54 43 48 22 0d 3a  0c 11 e7 70 61 74 63 68  |PATCH".:...patch|
00005c60  65 73 25 3c 3e 30 8c 0d  3a 16 0c 70 61 74 63 68  |es%<>0..:..patch|
00005c70  25 3d 30 0d 3a 20 12 e3  49 25 3d 31 b8 70 61 74  |%=0.: ..I%=1.pat|
00005c80  63 68 65 73 25 0d 3a 2a  1b 70 61 74 63 68 24 3d  |ches%.:*.patch$=|
00005c90  c2 41 24 2c a9 70 61 74  63 68 24 28 49 25 29 29  |.A$,.patch$(I%))|
00005ca0  0d 3a 34 12 f2 73 74 72  69 70 28 70 61 74 63 68  |.:4..strip(patch|
00005cb0  24 29 0d 3a 3e 1f e7 a4  75 70 70 65 72 28 70 61  |$).:>...upper(pa|
00005cc0  74 63 68 24 28 49 25 29  29 3d 70 61 74 63 68 24  |tch$(I%))=patch$|
00005cd0  8c 0d 3a 48 0d 70 61 74  63 68 25 3d 49 25 0d 3a  |..:H.patch%=I%.:|
00005ce0  52 0e f2 6c 6f 61 64 70  61 74 63 68 0d 3a 5c 05  |R..loadpatch.:\.|
00005cf0  cd 0d 3a 66 05 ed 0d 3a  70 05 cd 0d 3a 7a 10 c9  |..:f...:p...:z..|
00005d00  22 49 4e 44 45 58 46 49  4c 45 22 0d 3a 84 12 54  |"INDEXFILE".:..T|
00005d10  24 3d c2 41 24 2c a9 41  24 2d 31 30 29 0d 3a 8e  |$=.A$,.A$-10).:.|
00005d20  1d 54 25 3d 8e 28 a4 6c  65 61 66 28 66 69 6c 65  |.T%=.(.leaf(file|
00005d30  24 29 2b 22 2e 22 2b 54  24 29 0d 3a 98 58 e7 54  |$)+"."+T$).:.X.T|
00005d40  25 3c 3e 30 8c d9 23 54  25 3a 69 6e 64 65 78 66  |%<>0..#T%:indexf|
00005d50  69 6c 65 24 3d a4 6c 65  61 66 28 66 69 6c 65 24  |ile$=.leaf(file$|
00005d60  29 2b 22 2e 22 2b 54 24  3a 69 6e 64 65 78 25 3d  |)+"."+T$:index%=|
00005d70  30 8b 85 31 2c 22 49 6e  64 65 78 20 46 69 6c 65  |0..1,"Index File|
00005d80  20 22 2b 54 24 2b 22 20  6e 6f 74 20 66 6f 75 6e  | "+T$+" not foun|
00005d90  64 22 0d 3a a2 0f c9 22  54 41 50 45 46 49 4c 45  |d".:..."TAPEFILE|
00005da0  22 0d 3a ac 11 54 24 3d  c2 41 24 2c a9 41 24 2d  |".:..T$=.A$,.A$-|
00005db0  39 29 0d 3a b6 1d 54 25  3d 8e 28 a4 6c 65 61 66  |9).:..T%=.(.leaf|
00005dc0  28 66 69 6c 65 24 29 2b  22 2e 22 2b 54 24 29 0d  |(file$)+"."+T$).|
00005dd0  3a c0 4d e7 54 25 3c 3e  30 8c d9 23 54 25 3a 74  |:.M.T%<>0..#T%:t|
00005de0  61 70 65 66 69 6c 65 24  3d a4 6c 65 61 66 28 66  |apefile$=.leaf(f|
00005df0  69 6c 65 24 29 2b 22 2e  22 2b 54 24 8b 85 31 2c  |ile$)+"."+T$..1,|
00005e00  22 54 61 70 65 20 46 69  6c 65 20 22 2b 54 24 2b  |"Tape File "+T$+|
00005e10  22 20 6e 6f 74 20 66 6f  75 6e 64 22 0d 3a ca 0e  |" not found".:..|
00005e20  c9 22 4c 4f 41 44 52 4f  4d 22 0d 3a d4 11 4c 24  |."LOADROM".:..L$|
00005e30  3d c2 41 24 2c a9 41 24  2d 38 29 0d 3a de 10 e7  |=.A$,.A$-8).:...|
00005e40  a7 4c 24 2c 22 3a 22 29  3d 30 8c 0d 3a e8 23 f2  |.L$,":")=0..:.#.|
00005e50  6c 6f 61 64 52 4f 4d 28  a4 6c 65 61 66 28 66 69  |loadROM(.leaf(fi|
00005e60  6c 65 24 29 2b 22 2e 22  2b 4c 24 2c 31 29 0d 3a  |le$)+"."+L$,1).:|
00005e70  f2 05 cc 0d 3a fc 12 f2  6c 6f 61 64 52 4f 4d 28  |....:...loadROM(|
00005e80  4c 24 2c 31 29 0d 3b 06  05 cd 0d 3b 10 0e c9 22  |L$,1).;....;..."|
00005e90  4c 4f 41 44 52 41 4d 22  0d 3b 1a 11 4c 24 3d c2  |LOADRAM".;..L$=.|
00005ea0  41 24 2c a9 41 24 2d 38  29 0d 3b 24 10 e7 a7 4c  |A$,.A$-8).;$...L|
00005eb0  24 2c 22 3a 22 29 3d 30  8c 0d 3b 2e 23 f2 6c 6f  |$,":")=0..;.#.lo|
00005ec0  61 64 52 4f 4d 28 a4 6c  65 61 66 28 66 69 6c 65  |adROM(.leaf(file|
00005ed0  24 29 2b 22 2e 22 2b 4c  24 2c 30 29 0d 3b 38 05  |$)+"."+L$,0).;8.|
00005ee0  cc 0d 3b 42 12 f2 6c 6f  61 64 52 4f 4d 28 4c 24  |..;B..loadROM(L$|
00005ef0  2c 31 29 0d 3b 4c 05 cd  0d 3b 56 0e c9 22 4b 49  |,1).;L...;V.."KI|
00005f00  4c 4c 52 4f 4d 22 0d 3b  60 11 4c 24 3d c2 41 24  |LLROM".;`.L$=.A$|
00005f10  2c a9 41 24 2d 38 29 0d  3b 6a 0c e3 49 25 3d 30  |,.A$-8).;j..I%=0|
00005f20  b8 31 35 0d 3b 74 2f e7  c0 a4 75 70 70 65 72 28  |.15.;t/...upper(|
00005f30  a4 52 4f 4d 6e 61 6d 65  28 49 25 29 29 2c a9 4c  |.ROMname(I%)),.L|
00005f40  24 29 3d 4c 24 8c f2 6b  69 6c 6c 52 4f 4d 28 49  |$)=L$..killROM(I|
00005f50  25 29 0d 3b 7e 05 ed 0d  3b 88 0e c9 22 4d 41 43  |%).;~...;..."MAC|
00005f60  48 49 4e 45 22 0d 3b 92  17 6d 61 63 68 69 6e 65  |HINE".;..machine|
00005f70  24 3d c2 41 24 2c a9 41  24 2d 38 29 0d 3b 9c 14  |$=.A$,.A$-8).;..|
00005f80  f2 73 74 72 69 70 28 6d  61 63 68 69 6e 65 24 29  |.strip(machine$)|
00005f90  0d 3b a6 0f c8 8e 6d 61  63 68 69 6e 65 24 ca 0d  |.;....machine$..|
00005fa0  3b b0 19 c9 22 42 42 43  22 2c 22 42 42 43 42 22  |;..."BBC","BBCB"|
00005fb0  2c 22 42 42 43 20 42 22  0d 3b ba 08 4d 25 3d 30  |,"BBC B".;..M%=0|
00005fc0  0d 3b c4 26 c9 22 4d 41  53 54 45 52 22 2c 22 4d  |.;.&."MASTER","M|
00005fd0  41 53 54 45 52 31 32 38  22 2c 22 4d 41 53 54 45  |ASTER128","MASTE|
00005fe0  52 20 31 32 38 22 0d 3b  ce 08 4d 25 3d 31 0d 3b  |R 128".;..M%=1.;|
00005ff0  d8 26 c9 22 4f 53 33 2e  35 22 2c 22 4f 53 20 33  |.&."OS3.5","OS 3|
00006000  2e 35 22 2c 22 4f 53 33  2c 35 22 2c 22 4f 53 20  |.5","OS3,5","OS |
00006010  33 2e 35 22 0d 3b e2 08  4d 25 3d 32 0d 3b ec 1f  |3.5".;..M%=2.;..|
00006020  c9 22 43 4f 4d 50 41 43  54 22 2c 22 4d 41 53 54  |."COMPACT","MAST|
00006030  45 52 20 43 4f 4d 50 41  43 54 22 0d 3b f6 08 4d  |ER COMPACT".;..M|
00006040  25 3d 33 0d 3c 00 15 c9  22 45 4c 45 43 54 52 4f  |%=3.<..."ELECTRO|
00006050  4e 22 2c 22 45 4c 4b 22  0d 3c 0a 08 4d 25 3d 34  |N","ELK".<..M%=4|
00006060  0d 3c 14 05 7f 0d 3c 1e  2f d9 23 66 69 6c 65 25  |.<....<./.#file%|
00006070  3a 85 31 2c 22 55 6e 6b  6e 6f 77 6e 20 6d 61 63  |:.1,"Unknown mac|
00006080  68 69 6e 65 20 27 22 2b  6d 61 63 68 69 6e 65 24  |hine '"+machine$|
00006090  2b 22 27 22 0d 3c 28 05  cb 0d 3c 32 29 e7 4d 25  |+"'".<(...<2).M%|
000060a0  3c 3e 6d 61 63 68 69 6e  65 25 8c 6d 61 63 68 69  |<>machine%.machi|
000060b0  6e 65 25 3d 4d 25 3a f2  6e 65 77 6d 61 63 68 69  |ne%=M%:.newmachi|
000060c0  6e 65 0d 3c 3c 05 7f 0d  3c 46 09 6f 6b 25 3d a3  |ne.<<...<F.ok%=.|
000060d0  0d 3c 50 05 cb 0d 3c 5a  09 e7 6f 6b 25 8c 0d 3c  |.<P...<Z..ok%..<|
000060e0  64 0d e7 c5 23 66 69 6c  65 25 8c 0d 3c 6e 09 41  |d...#file%..<n.A|
000060f0  24 3d 22 22 0d 3c 78 05  cc 0d 3c 82 16 41 24 3d  |$="".<x...<..A$=|
00006100  a4 75 70 70 65 72 28 be  23 66 69 6c 65 25 29 0d  |.upper(.#file%).|
00006110  3c 8c 05 cd 0d 3c 96 05  cd 0d 3c a0 cf fd a4 69  |<....<....<....i|
00006120  28 22 50 41 54 43 48 22  29 80 a4 69 28 22 50 41  |("PATCH")..i("PA|
00006130  4c 45 54 54 45 22 29 80  a4 69 28 22 4d 41 43 48  |LETTE")..i("MACH|
00006140  49 4e 45 22 29 80 a4 69  28 22 49 4e 44 45 58 46  |INE")..i("INDEXF|
00006150  49 4c 45 22 29 80 a4 69  28 22 54 41 50 45 46 49  |ILE")..i("TAPEFI|
00006160  4c 45 22 29 80 a4 69 28  22 4b 45 59 4d 41 50 22  |LE")..i("KEYMAP"|
00006170  29 80 a4 69 28 22 43 55  52 53 4f 52 22 29 80 a4  |)..i("CURSOR")..|
00006180  69 28 22 45 58 41 43 54  53 50 45 45 44 22 29 80  |i("EXACTSPEED").|
00006190  a4 69 28 22 44 49 53 41  42 4c 45 54 41 50 45 22  |.i("DISABLETAPE"|
000061a0  29 80 a4 69 28 22 4c 4f  41 44 52 4f 4d 22 29 80  |)..i("LOADROM").|
000061b0  a4 69 28 22 4c 4f 41 44  52 41 4d 22 29 80 a4 69  |.i("LOADRAM")..i|
000061c0  28 22 4b 49 4c 4c 52 4f  4d 22 29 80 a4 69 28 22  |("KILLROM")..i("|
000061d0  53 4f 55 4e 44 22 29 80  a4 69 28 22 53 43 52 4f  |SOUND")..i("SCRO|
000061e0  4c 4c 48 41 43 4b 22 29  0d 3c b4 0b d9 23 66 69  |LLHACK").<...#fi|
000061f0  6c 65 25 0d 3c be 0b e7  41 24 3d 22 22 8c 0d 3c  |le%.<...A$=""..<|
00006200  c8 13 41 24 3d a4 6c 65  61 66 28 66 69 6c 65 24  |..A$=.leaf(file$|
00006210  29 0d 3c d2 2c f2 66 69  6c 65 5f 6c 6f 61 64 28  |).<.,.file_load(|
00006220  41 24 2b 22 2e 22 2b c2  41 24 2c a9 41 24 2d a9  |A$+"."+.A$,.A$-.|
00006230  a4 6c 65 61 66 28 41 24  29 2d 32 29 29 0d 3c dc  |.leaf(A$)-2)).<.|
00006240  05 cc 0d 3c e6 2a e7 c0  41 24 2c 35 29 3d 22 43  |...<.*..A$,5)="C|
00006250  48 41 49 4e 22 84 c0 41  24 2c 31 29 3d 22 2a 22  |HAIN"..A$,1)="*"|
00006260  84 a7 41 24 2c 22 20 22  29 3e 30 8c 0d 3c f0 12  |..A$," ")>0..<..|
00006270  6f 73 72 64 63 68 24 3d  41 24 2b bd 31 33 0d 3c  |osrdch$=A$+.13.<|
00006280  fa 0d f2 72 65 73 65 74  28 31 29 0d 3d 04 13 6f  |...reset(1).=..o|
00006290  73 72 64 63 68 5f 63 6f  75 6e 74 25 3d 30 0d 3d  |srdch_count%=0.=|
000062a0  0e 1d 4f 53 52 44 43 48  5f 6c 6f 63 5f 74 6d 70  |..OSRDCH_loc_tmp|
000062b0  3d 4f 53 52 44 43 48 5f  6c 6f 63 0d 3d 18 10 4f  |=OSRDCH_loc.=..O|
000062c0  53 52 44 43 48 5f 6c 6f  63 3d 33 0d 3d 22 22 f2  |SRDCH_loc=3.="".|
000062d0  6e 65 77 70 61 74 68 28  a4 6c 65 61 66 28 66 69  |newpath(.leaf(fi|
000062e0  6c 65 24 29 2b 22 2e 4a  55 4e 4b 22 29 0d 3d 2c  |le$)+".JUNK").=,|
000062f0  05 cc 0d 3d 36 23 f2 66  69 6c 65 5f 6c 6f 61 64  |...=6#.file_load|
00006300  28 a4 6c 65 61 66 28 66  69 6c 65 24 29 2b 22 2e  |(.leaf(file$)+".|
00006310  22 2b 41 24 29 0d 3d 40  05 cd 0d 3d 4a 05 cd 0d  |"+A$).=@...=J...|
00006320  3d 54 16 c9 22 42 42 43  20 53 6e 61 70 73 68 6f  |=T.."BBC Snapsho|
00006330  74 20 20 20 22 0d 3d 5e  14 e7 a2 23 66 69 6c 65  |t   ".=^...#file|
00006340  25 3d 26 31 30 31 31 30  8c 0d 3d 68 2a c8 99 22  |%=&10110..=h*.."|
00006350  4f 53 5f 47 42 50 42 22  2c 34 2c 66 69 6c 65 25  |OS_GBPB",4,file%|
00006360  2c 6d 65 6d 6f 72 79 2d  26 31 30 30 2c 26 31 30  |,memory-&100,&10|
00006370  31 30 30 0d 3d 72 17 cf  23 66 69 6c 65 25 3d 26  |100.=r..#file%=&|
00006380  31 30 31 31 30 2d 26 32  30 30 0d 3d 7c 23 c8 99  |10110-&200.=|#..|
00006390  22 4f 53 5f 47 42 50 42  22 2c 34 2c 66 69 6c 65  |"OS_GBPB",4,file|
000063a0  25 2c 73 68 65 69 6c 61  2c 26 31 30 30 0d 3d 86  |%,sheila,&100.=.|
000063b0  05 cc 0d 3d 90 30 c8 99  22 4f 53 5f 47 42 50 42  |...=.0.."OS_GBPB|
000063c0  22 2c 34 2c 66 69 6c 65  25 2c 6d 65 6d 6f 72 79  |",4,file%,memory|
000063d0  2d 26 31 30 30 2c a2 23  66 69 6c 65 25 2d 26 31  |-&100,.#file%-&1|
000063e0  31 30 0d 3d 9a 23 c8 99  22 4f 53 5f 47 42 50 42  |10.=.#.."OS_GBPB|
000063f0  22 2c 34 2c 66 69 6c 65  25 2c 73 68 65 69 6c 61  |",4,file%,sheila|
00006400  2c 26 31 30 30 0d 3d a4  05 cd 0d 3d ae 0b d9 23  |,&100.=....=...#|
00006410  66 69 6c 65 25 0d 3d b8  16 c9 22 42 42 43 20 53  |file%.=..."BBC S|
00006420  6e 61 70 73 68 6f 74 31  30 31 22 0d 3d c2 2f c8  |napshot101".=./.|
00006430  99 22 4f 53 5f 47 42 50  42 22 2c 34 2c 66 69 6c  |."OS_GBPB",4,fil|
00006440  65 25 2c 6d 65 6d 6f 72  79 2d 26 32 30 30 2c a2  |e%,memory-&200,.|
00006450  23 66 69 6c 65 25 2d 26  31 30 0d 3d cc 0b d9 23  |#file%-&10.=...#|
00006460  66 69 6c 65 25 0d 3d d6  05 7f 0d 3d e0 0b d9 23  |file%.=....=...#|
00006470  66 69 6c 65 25 0d 3d ea  12 f2 6c 6f 61 64 52 4f  |file%.=...loadRO|
00006480  4d 28 41 24 2c 31 29 0d  3d f4 05 cb 0d 3d fe 05  |M(A$,1).=....=..|
00006490  e1 0d 3e 12 0b dd a4 69  28 42 24 29 0d 3e 1c 14  |..>....i(B$).>..|
000064a0  e7 a7 41 24 2c 42 24 29  3d 30 8c 3d b9 8b 3d a3  |..A$,B$)=0.=..=.|
000064b0  0d 3e 30 13 dd f2 66 69  6c 65 5f 6c 6f 61 64 28  |.>0...file_load(|
000064c0  46 24 29 0d 3e 3a 10 f2  6e 65 77 70 61 74 68 28  |F$).>:..newpath(|
000064d0  46 24 29 0d 3e 4e 0d e3  49 25 3d 31 b8 a9 46 24  |F$).>N..I%=1..F$|
000064e0  0d 3e 58 35 e7 c1 46 24  2c a9 46 24 2d 49 25 2c  |.>X5..F$,.F$-I%,|
000064f0  31 29 3d 22 2e 22 84 c1  46 24 2c a9 46 24 2d 49  |1)="."..F$,.F$-I|
00006500  25 2c 31 29 3d 22 3a 22  8c 4c 25 3d 49 25 3a 49  |%,1)=":".L%=I%:I|
00006510  25 3d a9 46 24 0d 3e 62  05 ed 0d 3e 6c 0e 41 24  |%=.F$.>b...>l.A$|
00006520  3d c2 46 24 2c 4c 25 29  0d 3e 76 2c c8 99 22 4f  |=.F$,L%).>v,.."O|
00006530  53 5f 46 69 6c 65 22 2c  35 2c 46 24 b8 2c 2c 6c  |S_File",5,F$.,,l|
00006540  6f 61 64 32 25 2c 65 78  65 63 32 25 2c 6c 65 6e  |oad2%,exec2%,len|
00006550  67 74 68 25 0d 3e 80 16  6c 6f 61 64 25 3d 6c 6f  |gth%.>..load%=lo|
00006560  61 64 32 25 80 26 46 46  46 46 0d 3e 8a 16 65 78  |ad2%.&FFFF.>..ex|
00006570  65 63 25 3d 65 78 65 63  32 25 80 26 46 46 46 46  |ec%=exec2%.&FFFF|
00006580  0d 3e 94 17 6f 73 72 64  63 68 24 3d 22 2a 2f 22  |.>..osrdch$="*/"|
00006590  2b 41 24 2b bd 31 33 0d  3e 9e 68 e7 65 78 65 63  |+A$+.13.>.h.exec|
000065a0  25 3d 26 38 30 31 46 84  65 78 65 63 25 3d 26 38  |%=&801F.exec%=&8|
000065b0  30 32 33 84 65 78 65 63  25 3d 26 38 30 32 42 84  |023.exec%=&802B.|
000065c0  65 78 65 63 25 3d 26 38  30 45 37 8c 6f 73 72 64  |exec%=&80E7.osrd|
000065d0  63 68 24 3d 22 50 41 47  45 3d 26 22 2b c3 7e 6c  |ch$="PAGE=&"+.~l|
000065e0  6f 61 64 25 2b bd 31 33  2b 22 43 48 41 49 4e 22  |oad%+.13+"CHAIN"|
000065f0  2b bd 33 34 2b 41 24 2b  bd 33 34 2b bd 31 33 0d  |+.34+A$+.34+.13.|
00006600  3e a8 3a e7 28 6c 6f 61  64 32 25 80 26 46 46 46  |>.:.(load2%.&FFF|
00006610  30 30 29 3d 26 46 46 42  30 30 8c 6f 73 72 64 63  |00)=&FFB00.osrdc|
00006620  68 24 3d 22 43 48 41 49  4e 22 2b bd 33 34 2b 41  |h$="CHAIN"+.34+A|
00006630  24 2b bd 33 34 2b bd 31  33 0d 3e b2 7e e7 65 78  |$+.34+.13.>.~.ex|
00006640  65 63 25 3d 26 46 46 46  46 84 28 6c 6f 61 64 32  |ec%=&FFFF.(load2|
00006650  25 80 26 46 46 46 30 30  29 3d 26 46 46 45 30 30  |%.&FFF00)=&FFE00|
00006660  84 28 6c 6f 61 64 32 25  3d 30 80 20 65 78 65 63  |.(load2%=0. exec|
00006670  32 25 3d 30 29 8c 6f 73  72 64 63 68 24 3d 22 2a  |2%=0).osrdch$="*|
00006680  45 58 45 43 20 22 2b 41  24 2b bd 31 33 3a e7 6d  |EXEC "+A$+.13:.m|
00006690  61 63 68 69 6e 65 25 3d  30 8c 6f 73 72 64 63 68  |achine%=0.osrdch|
000066a0  24 3d 22 50 41 47 45 3d  26 31 39 30 30 3a 22 2b  |$="PAGE=&1900:"+|
000066b0  6f 73 72 64 63 68 24 0d  3e bc 0d f2 72 65 73 65  |osrdch$.>...rese|
000066c0  74 28 31 29 0d 3e c6 13  6f 73 72 64 63 68 5f 63  |t(1).>..osrdch_c|
000066d0  6f 75 6e 74 25 3d 30 0d  3e d0 1d 4f 53 52 44 43  |ount%=0.>..OSRDC|
000066e0  48 5f 6c 6f 63 5f 74 6d  70 3d 4f 53 52 44 43 48  |H_loc_tmp=OSRDCH|
000066f0  5f 6c 6f 63 0d 3e da 10  4f 53 52 44 43 48 5f 6c  |_loc.>..OSRDCH_l|
00006700  6f 63 3d 33 0d 3e e4 05  e1 0d 3e f8 0c dd f2 6f  |oc=3.>....>....o|
00006710  73 72 64 63 68 0d 3f 02  14 6f 73 72 64 63 68 5f  |srdch.?..osrdch_|
00006720  63 6f 75 6e 74 25 2b 3d  31 0d 3f 0c 22 61 3f 33  |count%+=1.?."a?3|
00006730  3d 97 c1 6f 73 72 64 63  68 24 2c 6f 73 72 64 63  |=..osrdch$,osrdc|
00006740  68 5f 63 6f 75 6e 74 25  2c 31 29 0d 3f 16 08 f2  |h_count%,1).?...|
00006750  72 74 73 0d 3f 20 4d e7  6f 73 72 64 63 68 5f 63  |rts.? M.osrdch_c|
00006760  6f 75 6e 74 25 3d a9 6f  73 72 64 63 68 24 8c 4f  |ount%=.osrdch$.O|
00006770  53 52 44 43 48 5f 6c 6f  63 3d 4f 53 52 44 43 48  |SRDCH_loc=OSRDCH|
00006780  5f 6c 6f 63 5f 74 6d 70  3a f2 70 6f 6b 65 28 26  |_loc_tmp:.poke(&|
00006790  46 46 45 30 2c 4f 53 52  44 43 48 5f 6c 6f 63 29  |FFE0,OSRDCH_loc)|
000067a0  0d 3f 2a 05 e1 0d 3f 3e  10 dd a4 62 69 6e 61 72  |.?*...?>...binar|
000067b0  79 28 42 25 29 0d 3f 48  0a ea 41 24 2c 49 25 0d  |y(B%).?H..A$,I%.|
000067c0  3f 52 0b e3 49 25 3d 30  b8 37 0d 3f 5c 25 e7 28  |?R..I%=0.7.?\%.(|
000067d0  42 25 80 20 32 5e 49 25  29 3d 30 8c 41 24 3d 22  |B%. 2^I%)=0.A$="|
000067e0  30 22 2b 41 24 8b 41 24  3d 22 31 22 2b 41 24 0d  |0"+A$.A$="1"+A$.|
000067f0  3f 66 05 ed 0d 3f 70 07  3d 41 24 0d 3f 84 11 dd  |?f...?p.=A$.?...|
00006800  f2 6e 65 77 70 61 74 68  28 46 24 29 0d 3f 8e 24  |.newpath(F$).?.$|
00006810  c8 99 22 4f 53 5f 47 53  54 72 61 6e 73 22 2c 46  |.."OS_GSTrans",F|
00006820  24 2c 62 75 66 66 65 72  2c 32 35 35 b8 2c 46 24  |$,buffer,255.,F$|
00006830  0d 3f 98 15 66 73 24 3d  c0 46 24 2c a7 46 24 2c  |.?..fs$=.F$,.F$,|
00006840  22 3a 22 29 29 0d 3f a2  14 46 24 3d c2 46 24 2c  |":")).?..F$=.F$,|
00006850  a9 46 24 2d a9 66 73 24  29 0d 3f b6 10 e7 c0 46  |.F$-.fs$).?....F|
00006860  24 2c 31 29 3d 22 3a 22  8c 0d 3f c0 17 64 69 73  |$,1)=":"..?..dis|
00006870  63 24 3d c0 46 24 2c a7  46 24 2c 22 2e 22 29 29  |c$=.F$,.F$,"."))|
00006880  0d 3f ca 16 46 24 3d c2  46 24 2c a9 46 24 2d a9  |.?..F$=.F$,.F$-.|
00006890  64 69 73 63 24 29 0d 3f  d4 05 cc 0d 3f de 0c 64  |disc$).?....?..d|
000068a0  69 73 63 24 3d 22 22 0d  3f e8 05 cd 0d 3f fc 13  |isc$="".?....?..|
000068b0  70 61 74 68 24 3d a4 6c  65 61 66 28 46 24 29 0d  |path$=.leaf(F$).|
000068c0  40 06 0f 73 75 62 70 61  74 68 24 3d 22 22 0d 40  |@..subpath$="".@|
000068d0  10 45 e7 c1 70 61 74 68  24 2c a9 70 61 74 68 24  |.E..path$,.path$|
000068e0  2d 31 2c 31 29 3d 22 2e  22 8c 73 75 62 70 61 74  |-1,1)=".".subpat|
000068f0  68 24 3d c2 70 61 74 68  24 2c 32 29 3a 70 61 74  |h$=.path$,2):pat|
00006900  68 24 3d c0 70 61 74 68  24 2c a9 70 61 74 68 24  |h$=.path$,.path$|
00006910  2d 32 29 0d 40 1a 05 e1  0d 40 2e 11 dd a4 6e 75  |-2).@....@....nu|
00006920  6d 65 72 69 63 28 41 24  29 0d 40 38 1b e7 41 24  |meric(A$).@8..A$|
00006930  3e 3d 22 30 22 80 20 41  24 3c 3d 22 39 22 8c 3d  |>="0". A$<="9".=|
00006940  b9 8b 3d a3 0d 40 4c 0e  dd a4 61 64 64 5f 28 46  |..=..@L...add_(F|
00006950  24 29 0d 40 56 3d e7 c0  46 24 2c 31 29 3d 22 3a  |$).@V=..F$,1)=":|
00006960  22 80 a4 6e 75 6d 65 72  69 63 28 c1 46 24 2c 32  |"..numeric(.F$,2|
00006970  2c 31 29 29 80 c1 46 24  2c 33 2c 31 29 3d 22 2e  |,1))..F$,3,1)=".|
00006980  22 8c 46 24 3d c2 46 24  2c a9 46 24 2d 33 29 0d  |".F$=.F$,.F$-3).|
00006990  40 60 11 e7 a7 46 24 2c  22 3a 22 29 8c 3d 46 24  |@`...F$,":").=F$|
000069a0  0d 40 6a 2a e7 c0 46 24  2c 31 29 3d bd 33 34 80  |.@j*..F$,1)=.34.|
000069b0  c2 46 24 2c 31 29 3d bd  33 34 8c 46 24 3d c1 46  |.F$,1)=.34.F$=.F|
000069c0  24 2c 32 2c a9 46 24 2d  32 29 0d 40 7e 26 e7 28  |$,2,.F$-2).@~&.(|
000069d0  46 24 3d 22 22 84 a7 46  24 2c 22 7c 22 29 29 80  |F$=""..F$,"|")).|
000069e0  20 69 6e 64 65 78 66 69  6c 65 24 3c 3e 22 22 8c  | indexfile$<>"".|
000069f0  0d 40 88 11 51 3d 8e 69  6e 64 65 78 66 69 6c 65  |.@..Q=.indexfile|
00006a00  24 0d 40 92 0e cf 23 51  3d 69 6e 64 65 78 25 0d  |$.@...#Q=index%.|
00006a10  40 9c 0a 46 24 3d be 23  51 0d 40 a6 11 6e 65 77  |@..F$=.#Q.@..new|
00006a20  69 6e 64 65 78 25 3d 8f  23 51 0d 40 b0 1e e7 6e  |index%=.#Q.@...n|
00006a30  65 77 69 6e 64 65 78 25  3d a2 23 51 8c 6e 65 77  |ewindex%=.#Q.new|
00006a40  69 6e 64 65 78 25 3d 30  0d 40 ba 07 d9 23 51 0d  |index%=0.@...#Q.|
00006a50  40 c4 05 cd 0d 40 d8 12  e7 c1 46 24 2c 32 2c 31  |@....@....F$,2,1|
00006a60  29 3d 22 2e 22 8c 0d 40  e2 1b e7 c0 46 24 2c 31  |)="."..@....F$,1|
00006a70  29 3d 22 24 22 8c 3d c2  46 24 2c a9 46 24 2d 32  |)="$".=.F$,.F$-2|
00006a80  29 0d 40 ec 07 3d 46 24  0d 40 f6 05 cc 0d 41 00  |).@..=F$.@....A.|
00006a90  07 3d 46 24 0d 41 0a 05  cd 0d 41 14 07 3d 22 22  |.=F$.A....A..=""|
00006aa0  0d 41 28 0f dd a4 5f 70  61 74 68 28 46 24 29 0d  |.A(..._path(F$).|
00006ab0  41 32 3d e7 c0 46 24 2c  31 29 3d 22 3a 22 80 a4  |A2=..F$,1)=":"..|
00006ac0  6e 75 6d 65 72 69 63 28  c1 46 24 2c 32 2c 31 29  |numeric(.F$,2,1)|
00006ad0  29 80 c1 46 24 2c 33 2c  31 29 3d 22 2e 22 8c 46  |)..F$,3,1)=".".F|
00006ae0  24 3d c2 46 24 2c a9 46  24 2d 33 29 0d 41 3c 11  |$=.F$,.F$-3).A<.|
00006af0  e7 a7 46 24 2c 22 3a 22  29 8c 3d 22 22 0d 41 46  |..F$,":").="".AF|
00006b00  12 e7 c1 46 24 2c 32 2c  31 29 3d 22 2e 22 8c 0d  |...F$,2,1)="."..|
00006b10  41 50 18 3d 66 73 24 2b  64 69 73 63 24 2b 70 61  |AP.=fs$+disc$+pa|
00006b20  74 68 24 2b 22 2e 22 0d  41 5a 05 cc 0d 41 64 21  |th$+".".AZ...Ad!|
00006b30  3d 66 73 24 2b 64 69 73  63 24 2b 70 61 74 68 24  |=fs$+disc$+path$|
00006b40  2b 73 75 62 70 61 74 68  24 2b 22 2e 22 0d 41 6e  |+subpath$+".".An|
00006b50  05 cd 0d 41 78 07 3d 22  22 0d 41 8c 11 dd a4 61  |...Ax.="".A....a|
00006b60  64 64 70 61 74 68 28 46  24 29 0d 41 96 3d e7 c0  |ddpath(F$).A.=..|
00006b70  46 24 2c 31 29 3d 22 3a  22 80 a4 6e 75 6d 65 72  |F$,1)=":"..numer|
00006b80  69 63 28 c1 46 24 2c 32  2c 31 29 29 80 c1 46 24  |ic(.F$,2,1))..F$|
00006b90  2c 33 2c 31 29 3d 22 2e  22 8c 46 24 3d c2 46 24  |,3,1)=".".F$=.F$|
00006ba0  2c a9 46 24 2d 33 29 0d  41 a0 11 e7 a7 46 24 2c  |,.F$-3).A....F$,|
00006bb0  22 3a 22 29 8c 3d 46 24  0d 41 aa 2a e7 c0 46 24  |":").=F$.A.*..F$|
00006bc0  2c 31 29 3d bd 33 34 80  c2 46 24 2c 31 29 3d bd  |,1)=.34..F$,1)=.|
00006bd0  33 34 8c 46 24 3d c1 46  24 2c 32 2c a9 46 24 2d  |34.F$=.F$,2,.F$-|
00006be0  32 29 0d 41 b4 12 e7 c1  46 24 2c 32 2c 31 29 3d  |2).A....F$,2,1)=|
00006bf0  22 2e 22 8c 0d 41 be 25  e7 c0 46 24 2c 31 29 3d  |"."..A.%..F$,1)=|
00006c00  22 24 22 8c 3d 70 61 74  68 24 2b 22 2e 22 2b c2  |"$".=path$+"."+.|
00006c10  46 24 2c a9 46 24 2d 32  29 0d 41 c8 1b 3d 66 73  |F$,.F$-2).A..=fs|
00006c20  24 2b 64 69 73 63 24 2b  70 61 74 68 24 2b 22 2e  |$+disc$+path$+".|
00006c30  22 2b 46 24 0d 41 d2 05  cc 0d 41 dc 24 3d 66 73  |"+F$.A....A.$=fs|
00006c40  24 2b 64 69 73 63 24 2b  70 61 74 68 24 2b 73 75  |$+disc$+path$+su|
00006c50  62 70 61 74 68 24 2b 22  2e 22 2b 46 24 0d 41 e6  |bpath$+"."+F$.A.|
00006c60  05 cd 0d 41 f0 07 3d 22  22 0d 42 04 0f dd a4 73  |...A..="".B....s|
00006c70  74 72 69 70 28 46 24 29  0d 42 0e 07 ea 49 25 0d  |trip(F$).B...I%.|
00006c80  42 18 29 f5 49 25 2b 3d  31 3a fd c1 46 24 2c 49  |B.).I%+=1:..F$,I|
00006c90  25 2c 31 29 3c 3e 22 2a  22 80 c1 46 24 2c 49 25  |%,1)<>"*"..F$,I%|
00006ca0  2c 31 29 3c 3e 22 20 22  0d 42 22 12 3d c2 46 24  |,1)<>" ".B".=.F$|
00006cb0  2c a9 46 24 2d 49 25 2b  31 29 0d 42 36 10 dd f2  |,.F$-I%+1).B6...|
00006cc0  73 74 72 69 70 28 f8 73  24 29 0d 42 40 10 c8 95  |strip(.s$).B@...|
00006cd0  c0 73 24 2c 31 29 3d 22  20 22 0d 42 4a 0d 73 24  |.s$,1)=" ".BJ.s$|
00006ce0  3d c1 73 24 2c 32 29 0d  42 54 05 ce 0d 42 5e 10  |=.s$,2).BT...B^.|
00006cf0  c8 95 c2 73 24 2c 31 29  3d 22 20 22 0d 42 68 11  |...s$,1)=" ".Bh.|
00006d00  73 24 3d c0 73 24 2c a9  73 24 2d 31 29 0d 42 72  |s$=.s$,.s$-1).Br|
00006d10  05 ce 0d 42 7c 05 e1 0d  42 90 0d dd f2 64 69 72  |...B|...B....dir|
00006d20  28 44 24 29 0d 42 9a 35  46 53 24 3d 66 73 24 3a  |(D$).B.5FS$=fs$:|
00006d30  44 49 53 43 24 3d 64 69  73 63 24 3a 50 41 54 48  |DISC$=disc$:PATH|
00006d40  24 3d 70 61 74 68 24 3a  53 55 42 50 41 54 48 24  |$=path$:SUBPATH$|
00006d50  3d 73 75 62 70 61 74 68  24 0d 42 ae 07 ea 49 25  |=subpath$.B...I%|
00006d60  0d 42 b8 1a f5 49 25 2b  3d 31 3a fd c1 44 24 2c  |.B...I%+=1:..D$,|
00006d70  49 25 2c 31 29 3c 3e 22  20 22 0d 42 c2 14 44 24  |I%,1)<>" ".B..D$|
00006d80  3d c2 44 24 2c a9 44 24  2d 49 25 2b 31 29 0d 42  |=.D$,.D$-I%+1).B|
00006d90  cc 0e e7 a7 44 24 2c 22  20 22 29 8c 0d 42 d6 16  |....D$," ")..B..|
00006da0  44 24 3d c0 44 24 2c a7  44 24 2c 22 20 22 29 2d  |D$=.D$,.D$," ")-|
00006db0  31 29 0d 42 e0 05 cc 0d  42 ea 29 e7 a9 44 24 3d  |1).B....B.)..D$=|
00006dc0  34 80 c0 a4 75 70 70 65  72 28 44 24 29 2c 33 29  |4...upper(D$),3)|
00006dd0  3d 22 44 49 52 22 8c 44  24 3d c2 44 24 2c 31 29  |="DIR".D$=.D$,1)|
00006de0  0d 42 f4 05 cd 0d 43 08  0c e7 44 24 3d 22 5e 22  |.B....C...D$="^"|
00006df0  8c 0d 43 12 24 e7 73 75  62 70 61 74 68 24 3c 3e  |..C.$.subpath$<>|
00006e00  22 22 8c 73 75 62 70 61  74 68 24 3d 22 22 3a f2  |"".subpath$="":.|
00006e10  72 74 73 3a e1 0d 43 1c  23 e7 a7 70 61 74 68 24  |rts:..C.#..path$|
00006e20  2c 22 2e 22 29 3d 30 8c  70 61 74 68 24 3d 22 24  |,".")=0.path$="$|
00006e30  22 3a f2 72 74 73 3a e1  0d 43 26 0d 49 25 3d a9  |":.rts:..C&.I%=.|
00006e40  70 61 74 68 24 0d 43 30  1c f5 49 25 2d 3d 31 3a  |path$.C0..I%-=1:|
00006e50  fd c1 70 61 74 68 24 2c  49 25 2c 31 29 3d 22 2e  |..path$,I%,1)=".|
00006e60  22 0d 43 3a 16 70 61 74  68 24 3d c0 70 61 74 68  |".C:.path$=.path|
00006e70  24 2c 49 25 2d 31 29 0d  43 44 0a f2 72 74 73 3a  |$,I%-1).CD..rts:|
00006e80  e1 0d 43 4e 05 cd 0d 43  62 24 e7 44 24 3d 22 24  |..CN...Cb$.D$="$|
00006e90  22 84 a9 44 24 3d 30 8c  73 75 62 70 61 74 68 24  |"..D$=0.subpath$|
00006ea0  3d 22 22 3a f2 72 74 73  3a e1 0d 43 6c 0b e7 a9  |="":.rts:..Cl...|
00006eb0  44 24 3d 31 8c 0d 43 76  31 c8 99 22 58 4f 53 5f  |D$=1..Cv1.."XOS_|
00006ec0  46 69 6c 65 22 2c 31 33  2c 44 24 2c 2c 2c 66 73  |File",13,D$,,,fs|
00006ed0  24 2b 64 69 73 63 24 2b  70 61 74 68 24 2b 22 2e  |$+disc$+path$+".|
00006ee0  22 b8 41 25 3b 46 0d 43  80 1b e7 28 46 80 20 31  |".A%;F.C...(F. 1|
00006ef0  29 3c 3e 30 8c f2 73 77  69 5f 65 72 72 6f 72 3a  |)<>0..swi_error:|
00006f00  e1 0d 43 8a 27 e7 28 41  25 80 20 32 29 3d 30 80  |..C.'.(A%. 2)=0.|
00006f10  a9 44 24 3d 31 8c 73 75  62 70 61 74 68 24 3d 22  |.D$=1.subpath$="|
00006f20  22 3a f2 72 74 73 3a e1  0d 43 94 4c e7 28 41 25  |":.rts:..C.L.(A%|
00006f30  80 20 32 29 3d 30 8c f2  62 72 6b 28 32 31 34 2c  |. 2)=0..brk(214,|
00006f40  22 44 69 72 65 63 74 6f  72 79 20 27 22 2b 44 24  |"Directory '"+D$|
00006f50  2b 22 27 20 6e 6f 74 20  66 6f 75 6e 64 22 29 8b  |+"' not found").|
00006f60  73 75 62 70 61 74 68 24  3d 22 2e 22 2b 44 24 3a  |subpath$="."+D$:|
00006f70  f2 72 74 73 0d 43 9e 05  e1 0d 43 a8 05 cd 0d 43  |.rts.C....C....C|
00006f80  bc 10 e7 a7 44 24 2c 22  3a 22 29 3e 31 8c 0d 43  |....D$,":")>1..C|
00006f90  c6 40 e7 c2 44 24 2c 31  29 3c 3e 22 3a 22 8c c8  |.@..D$,1)<>":"..|
00006fa0  99 22 58 4f 53 5f 46 69  6c 65 22 2c 31 37 2c 44  |."XOS_File",17,D|
00006fb0  24 b8 41 25 3b 46 3a e7  28 46 80 20 31 29 3c 3e  |$.A%;F:.(F. 1)<>|
00006fc0  30 8c f2 73 77 69 5f 65  72 72 6f 72 3a e1 0d 43  |0..swi_error:..C|
00006fd0  d0 21 c8 99 22 4f 53 5f  46 53 43 6f 6e 74 72 6f  |.!.."OS_FSContro|
00006fe0  6c 22 2c 31 31 2c 44 24  b8 2c 45 24 2c 45 25 0d  |l",11,D$.,E$,E%.|
00006ff0  43 da 5a e7 45 25 3c 3e  2d 31 8c c8 99 22 4f 53  |C.Z.E%<>-1..."OS|
00007000  5f 46 53 43 6f 6e 74 72  6f 6c 22 2c 31 39 3a 66  |_FSControl",19:f|
00007010  73 24 3d c0 44 24 2c a9  44 24 2d a9 45 24 29 3a  |s$=.D$,.D$-.E$):|
00007020  44 24 3d 45 24 8b f2 62  72 6b 28 32 34 38 2c 22  |D$=E$..brk(248,"|
00007030  4e 6f 20 73 75 63 68 20  66 69 6c 69 6e 67 20 73  |No such filing s|
00007040  79 73 74 65 6d 22 29 3a  e1 0d 43 e4 0c 70 61 74  |ystem"):..C..pat|
00007050  68 24 3d 22 22 0d 43 ee  0f 73 75 62 70 61 74 68  |h$="".C..subpath|
00007060  24 3d 22 22 0d 43 f8 0c  64 69 73 63 24 3d 22 22  |$="".C..disc$=""|
00007070  0d 44 02 1a e7 c0 44 24  2c 31 29 3c 3e 22 3a 22  |.D....D$,1)<>":"|
00007080  8c 70 61 74 68 24 3d 22  24 22 0d 44 0c 05 cd 0d  |.path$="$".D....|
00007090  44 20 10 e7 c0 44 24 2c  31 29 3d 22 3a 22 8c 0d  |D ...D$,1)=":"..|
000070a0  44 2a 11 49 25 3d 30 3a  64 69 73 63 24 3d 22 22  |D*.I%=0:disc$=""|
000070b0  0d 44 34 0a f5 49 25 2b  3d 31 0d 44 3e 19 64 69  |.D4..I%+=1.D>.di|
000070c0  73 63 24 3d 64 69 73 63  24 2b c1 44 24 2c 49 25  |sc$=disc$+.D$,I%|
000070d0  2c 31 29 0d 44 48 1b fd  c1 44 24 2c 49 25 2b 31  |,1).DH...D$,I%+1|
000070e0  2c 31 29 3d 22 2e 22 84  49 25 3d a9 44 24 0d 44  |,1)=".".I%=.D$.D|
000070f0  52 26 e7 49 25 3d a9 44  24 8c 44 24 3d 22 22 8b  |R&.I%=.D$.D$="".|
00007100  44 24 3d c2 44 24 2c a9  44 24 2d a9 64 69 73 63  |D$=.D$,.D$-.disc|
00007110  24 2d 31 29 0d 44 5c 18  70 61 74 68 24 3d 22 22  |$-1).D\.path$=""|
00007120  3a 73 75 62 70 61 74 68  24 3d 22 22 0d 44 66 05  |:subpath$="".Df.|
00007130  cd 0d 44 7a 39 e7 c0 44  24 2c 31 29 3d 22 24 22  |..Dz9..D$,1)="$"|
00007140  80 a9 44 24 3e 32 8c 70  61 74 68 24 3d 22 24 22  |..D$>2.path$="$"|
00007150  3a 73 75 62 70 61 74 68  24 3d 22 22 3a 44 24 3d  |:subpath$="":D$=|
00007160  c2 44 24 2c a9 44 24 2d  32 29 0d 44 8e 38 e7 64  |.D$,.D$-2).D.8.d|
00007170  69 73 63 24 3c 3e 22 22  80 c2 64 69 73 63 24 2c  |isc$<>""..disc$,|
00007180  31 29 3c 3e 22 2e 22 80  20 70 61 74 68 24 3c 3e  |1)<>".". path$<>|
00007190  22 22 8c 64 69 73 63 24  3d 64 69 73 63 24 2b 22  |"".disc$=disc$+"|
000071a0  2e 22 0d 44 98 3a c8 99  22 58 4f 53 5f 46 69 6c  |.".D.:.."XOS_Fil|
000071b0  65 22 2c 31 33 2c 44 24  2c 2c 2c 66 73 24 2b 64  |e",13,D$,,,fs$+d|
000071c0  69 73 63 24 2b 70 61 74  68 24 2b 73 75 62 70 61  |isc$+path$+subpa|
000071d0  74 68 24 2b 22 2e 22 b8  41 25 3b 46 0d 44 a2 2d  |th$+".".A%;F.D.-|
000071e0  e7 64 69 73 63 24 3c 3e  22 22 80 c2 64 69 73 63  |.disc$<>""..disc|
000071f0  24 2c 31 29 3c 3e 22 2e  22 8c 64 69 73 63 24 3d  |$,1)<>".".disc$=|
00007200  64 69 73 63 24 2b 22 2e  22 0d 44 ac 27 e7 28 46  |disc$+".".D.'.(F|
00007210  80 20 31 29 3c 3e 30 8c  f2 72 65 73 74 6f 72 65  |. 1)<>0..restore|
00007220  43 53 44 3a f2 73 77 69  5f 65 72 72 6f 72 3a e1  |CSD:.swi_error:.|
00007230  0d 44 b6 0f e7 28 41 25  80 20 32 29 3d 30 8c 0d  |.D...(A%. 2)=0..|
00007240  44 c0 0f f2 72 65 73 74  6f 72 65 43 53 44 0d 44  |D...restoreCSD.D|
00007250  ca 2c f2 62 72 6b 28 32  31 34 2c 22 44 69 72 65  |.,.brk(214,"Dire|
00007260  63 74 6f 72 79 20 27 22  2b 44 24 2b 22 27 20 6e  |ctory '"+D$+"' n|
00007270  6f 74 20 66 6f 75 6e 64  22 29 0d 44 d4 05 cc 0d  |ot found").D....|
00007280  44 de 0c e7 44 24 3c 3e  22 22 8c 0d 44 e8 3f e7  |D...D$<>""..D.?.|
00007290  70 61 74 68 24 3c 3e 22  22 8c 70 61 74 68 24 3d  |path$<>"".path$=|
000072a0  70 61 74 68 24 2b 73 75  62 70 61 74 68 24 2b 22  |path$+subpath$+"|
000072b0  2e 22 2b 44 24 3a 73 75  62 70 61 74 68 24 3d 22  |."+D$:subpath$="|
000072c0  22 8b 70 61 74 68 24 3d  44 24 0d 44 f2 05 cd 0d  |".path$=D$.D....|
000072d0  44 fc 08 f2 72 74 73 0d  45 06 05 cd 0d 45 10 17  |D...rts.E....E..|
000072e0  e7 70 61 74 68 24 3d 22  22 8c 70 61 74 68 24 3d  |.path$="".path$=|
000072f0  22 24 22 0d 45 1a 05 e1  0d 45 2e 0a dd f2 62 61  |"$".E....E....ba|
00007300  63 6b 0d 45 38 0d c8 94  66 73 24 2c 46 53 24 0d  |ck.E8...fs$,FS$.|
00007310  45 42 11 c8 94 64 69 73  63 24 2c 44 49 53 43 24  |EB...disc$,DISC$|
00007320  0d 45 4c 11 c8 94 70 61  74 68 24 2c 50 41 54 48  |.EL...path$,PATH|
00007330  24 0d 45 56 17 c8 94 73  75 62 70 61 74 68 24 2c  |$.EV...subpath$,|
00007340  53 55 42 50 41 54 48 24  0d 45 60 05 e1 0d 45 74  |SUBPATH$.E`...Et|
00007350  10 dd f2 72 65 73 74 6f  72 65 43 53 44 0d 45 7e  |...restoreCSD.E~|
00007360  35 66 73 24 3d 46 53 24  3a 64 69 73 63 24 3d 44  |5fs$=FS$:disc$=D|
00007370  49 53 43 24 3a 70 61 74  68 24 3d 50 41 54 48 24  |ISC$:path$=PATH$|
00007380  3a 73 75 62 70 61 74 68  24 3d 53 55 42 50 41 54  |:subpath$=SUBPAT|
00007390  48 24 0d 45 88 05 e1 0d  45 9c 0b dd f2 6f 73 66  |H$.E....E....osf|
000073a0  73 63 0d 45 b0 0a c8 8e  61 3f 33 ca 0d 45 ba 06  |sc.E....a?3..E..|
000073b0  c9 31 0d 45 c4 20 c8 99  22 58 4f 53 5f 41 72 67  |.1.E. .."XOS_Arg|
000073c0  73 22 2c 35 2c 78 3f 33  b8 41 25 2c 2c 78 3f 33  |s",5,x?3.A%,,x?3|
000073d0  3b 46 0d 45 ce 1d e7 28  46 80 20 31 29 3d 30 8c  |;F.E...(F. 1)=0.|
000073e0  f2 72 74 73 8b f2 73 77  69 5f 65 72 72 6f 72 0d  |.rts..swi_error.|
000073f0  45 d8 13 e7 78 3f 33 3c  3e 30 8c 78 3f 33 3d 26  |E...x?3<>0.x?3=&|
00007400  46 46 0d 45 e2 21 c9 33  3a 61 64 64 72 3d 78 3f  |FF.E.!.3:addr=x?|
00007410  33 2b 28 28 79 3f 33 29  3c 3c 38 29 2b 6d 65 6d  |3+((y?3)<<8)+mem|
00007420  6f 72 79 0d 45 ec 14 62  24 3d a4 73 74 72 69 70  |ory.E..b$=.strip|
00007430  28 24 61 64 64 72 29 0d  45 f6 2d c8 99 22 58 4f  |($addr).E.-.."XO|
00007440  53 5f 46 69 6e 64 22 2c  26 34 44 2c a4 61 64 64  |S_Find",&4D,.add|
00007450  5f 28 62 24 29 2c a4 5f  70 61 74 68 28 62 24 29  |_(b$),._path(b$)|
00007460  b8 51 3b 46 0d 46 00 08  41 25 3d 51 0d 46 14 13  |.Q;F.F..A%=Q.F..|
00007470  e7 51 3d 30 84 28 46 80  20 31 29 3c 3e 30 8c 0d  |.Q=0.(F. 1)<>0..|
00007480  46 1e 38 e7 c0 a4 75 70  70 65 72 28 62 24 29 2c  |F.8...upper(b$),|
00007490  34 29 3d 22 44 49 52 20  22 84 28 c0 a4 75 70 70  |4)="DIR ".(..upp|
000074a0  65 72 28 62 24 29 2c 33  29 3d 22 44 49 52 22 80  |er(b$),3)="DIR".|
000074b0  a9 62 24 3d 34 29 8c 0d  46 28 14 f2 64 69 72 28  |.b$=4)..F(..dir(|
000074c0  c2 62 24 2c a9 62 24 2d  34 29 29 0d 46 32 05 cc  |.b$,.b$-4)).F2..|
000074d0  0d 46 3c 0c e7 4f 73 63  6c 69 25 8c 0d 46 46 17  |.F<..Oscli%..FF.|
000074e0  c8 99 22 58 4f 53 5f 43  4c 49 22 2c 62 24 b8 41  |.."XOS_CLI",b$.A|
000074f0  25 3b 46 0d 46 50 1d e7  28 46 80 20 31 29 3d 30  |%;F.FP..(F. 1)=0|
00007500  8c f2 72 74 73 8b f2 73  77 69 5f 65 72 72 6f 72  |..rts..swi_error|
00007510  0d 46 5a 05 cc 0d 46 64  1b f2 62 72 6b 28 32 35  |.FZ...Fd..brk(25|
00007520  34 2c 22 42 61 64 20 43  6f 6d 6d 61 6e 64 22 29  |4,"Bad Command")|
00007530  0d 46 6e 05 cd 0d 46 78  05 cd 0d 46 82 05 cc 0d  |.Fn...Fx...F....|
00007540  46 8c 07 d9 23 51 0d 46  96 13 62 24 3d a4 61 64  |F...#Q.F..b$=.ad|
00007550  64 70 61 74 68 28 62 24  29 0d 46 a0 31 c8 99 22  |dpath(b$).F.1.."|
00007560  4f 53 5f 46 69 6c 65 22  2c 35 2c 62 24 b8 2c 2c  |OS_File",5,b$.,,|
00007570  63 25 2c 64 25 3a 63 25  3d 28 63 25 80 26 46 46  |c%,d%:c%=(c%.&FF|
00007580  46 46 29 2b 6d 65 6d 6f  72 79 0d 46 aa 1b c8 99  |FF)+memory.F....|
00007590  22 4f 53 5f 46 69 6c 65  22 2c 32 35 35 2c 62 24  |"OS_File",255,b$|
000075a0  2c 63 25 2c 30 0d 46 b4  14 21 70 63 5f 73 74 6f  |,c%,0.F..!pc_sto|
000075b0  72 65 3d 64 25 3c 3c 31  36 0d 46 be 05 cd 0d 46  |re=d%<<16.F....F|
000075c0  c8 23 c9 32 2c 34 3a 61  64 64 72 3d 78 3f 33 2b  |.#.2,4:addr=x?3+|
000075d0  28 28 79 3f 33 29 3c 3c  38 29 2b 6d 65 6d 6f 72  |((y?3)<<8)+memor|
000075e0  79 0d 46 d2 0c 62 24 3d  24 61 64 64 72 0d 46 e6  |y.F..b$=$addr.F.|
000075f0  54 c8 99 22 58 4f 53 5f  46 69 6c 65 22 2c 31 33  |T.."XOS_File",13|
00007600  2c a4 61 64 64 5f 28 62  24 29 2c 2c 2c a4 5f 70  |,.add_(b$),,,._p|
00007610  61 74 68 28 62 24 29 b8  41 25 2c 2c 63 25 2c 64  |ath(b$).A%,,c%,d|
00007620  25 2c 6c 65 6e 67 74 68  25 3b 66 25 3a 63 25 3d  |%,length%;f%:c%=|
00007630  28 63 25 80 26 46 46 46  46 29 2b 6d 65 6d 6f 72  |(c%.&FFFF)+memor|
00007640  79 0d 46 f0 45 e7 63 25  2b 6c 65 6e 67 74 68 25  |y.F.E.c%+length%|
00007650  3e 6d 65 6d 6f 72 79 2b  26 38 30 30 30 80 20 63  |>memory+&8000. c|
00007660  25 3c 6d 65 6d 6f 72 79  2b 26 38 30 30 30 8c 6c  |%<memory+&8000.l|
00007670  65 6e 67 74 68 25 3d 6d  65 6d 6f 72 79 2b 26 38  |ength%=memory+&8|
00007680  30 30 30 2d 63 25 0d 46  fa 2f c8 99 22 58 4f 53  |000-c%.F./.."XOS|
00007690  5f 46 69 6e 64 22 2c 26  34 44 2c a4 61 64 64 5f  |_Find",&4D,.add_|
000076a0  28 62 24 29 2c a4 5f 70  61 74 68 28 62 24 29 b8  |(b$),._path(b$).|
000076b0  41 25 3b 66 25 0d 47 04  3d e7 28 66 25 80 20 31  |A%;f%.G.=.(f%. 1|
000076c0  29 3d 30 8c c8 99 22 58  4f 53 5f 47 42 50 42 22  |)=0..."XOS_GBPB"|
000076d0  2c 34 2c 41 25 2c 63 25  2c 6c 65 6e 67 74 68 25  |,4,A%,c%,length%|
000076e0  3a c8 99 22 58 4f 53 5f  46 69 6e 64 22 2c 30 2c  |:.."XOS_Find",0,|
000076f0  41 25 0d 47 18 2a e7 28  66 25 80 20 31 29 3d 30  |A%.G.*.(f%. 1)=0|
00007700  8c 21 70 63 5f 73 74 6f  72 65 3d 64 25 3c 3c 31  |.!pc_store=d%<<1|
00007710  36 8b f2 73 77 69 5f 65  72 72 6f 72 0d 47 22 0b  |6..swi_error.G".|
00007720  c9 35 3a f2 72 74 73 0d  47 2c 0f c9 30 2c 36 2c  |.5:.rts.G,..0,6,|
00007730  38 3a f2 72 74 73 0d 47  36 11 c9 39 2c 31 30 2c  |8:.rts.G6..9,10,|
00007740  31 31 3a f2 72 74 73 0d  47 40 16 7f f1 22 4f 53  |11:.rts.G@..."OS|
00007750  46 53 43 20 22 3b 61 3f  33 3a 51 3d a5 0d 47 4a  |FSC ";a?3:Q=..GJ|
00007760  05 cb 0d 47 54 05 e1 0d  47 68 0c dd f2 6f 73 66  |...GT...Gh...osf|
00007770  69 6e 64 0d 47 72 1d 61  64 64 72 3d 6d 65 6d 6f  |ind.Gr.addr=memo|
00007780  72 79 2b 78 3f 33 2b 28  79 3f 33 29 2a 32 35 36  |ry+x?3+(y?3)*256|
00007790  0d 47 7c 0b e7 61 3f 33  3d 30 8c 0d 47 86 1b c8  |.G|..a?3=0..G...|
000077a0  99 22 58 4f 53 5f 46 69  6e 64 22 2c 30 2c 79 3f  |."XOS_Find",0,y?|
000077b0  33 b8 41 25 3b 46 0d 47  90 05 cc 0d 47 9a 38 c8  |3.A%;F.G....G.8.|
000077c0  99 22 58 4f 53 5f 46 69  6e 64 22 2c 28 61 3f 33  |."XOS_Find",(a?3|
000077d0  29 84 31 2c a4 61 64 64  5f 28 24 61 64 64 72 29  |).1,.add_($addr)|
000077e0  2c a4 5f 70 61 74 68 28  24 61 64 64 72 29 b8 41  |,._path($addr).A|
000077f0  25 3b 46 0d 47 a4 05 cd  0d 47 ae 24 e7 28 46 80  |%;F.G....G.$.(F.|
00007800  20 31 29 3d 30 8c 61 3f  33 3d 41 25 3a f2 72 74  | 1)=0.a?3=A%:.rt|
00007810  73 8b f2 73 77 69 5f 65  72 72 6f 72 0d 47 b8 05  |s..swi_error.G..|
00007820  e1 0d 47 cc 0c dd f2 6f  73 62 67 65 74 0d 47 d6  |..G....osbget.G.|
00007830  1e c8 99 22 58 4f 53 5f  42 47 65 74 22 2c 61 3f  |..."XOS_BGet",a?|
00007840  33 2c 79 3f 33 b8 41 25  3b 46 25 0d 47 e0 0e e7  |3,y?3.A%;F%.G...|
00007850  28 46 80 20 31 29 3d 30  8c 0d 47 ea 0a 61 3f 33  |(F. 1)=0..G..a?3|
00007860  3d 41 25 0d 47 f4 13 3f  66 3d 3f 66 80 25 31 31  |=A%.G..?f=?f.%11|
00007870  31 31 31 31 31 30 0d 47  fe 15 e7 28 46 25 80 20  |111110.G...(F%. |
00007880  32 29 3c 3e 30 8c 3f 66  2b 3d 31 0d 48 08 08 f2  |2)<>0.?f+=1.H...|
00007890  72 74 73 0d 48 12 05 cc  0d 48 1c 0e f2 73 77 69  |rts.H....H...swi|
000078a0  5f 65 72 72 6f 72 0d 48  26 05 cd 0d 48 30 05 e1  |_error.H&...H0..|
000078b0  0d 48 44 0c dd f2 6f 73  62 70 75 74 0d 48 4e 1d  |.HD...osbput.HN.|
000078c0  c8 99 22 58 4f 53 5f 42  50 75 74 22 2c 61 3f 33  |.."XOS_BPut",a?3|
000078d0  2c 79 3f 33 b8 41 25 3b  46 0d 48 58 1d e7 28 46  |,y?3.A%;F.HX..(F|
000078e0  80 20 31 29 3d 30 8c f2  72 74 73 8b f2 73 77 69  |. 1)=0..rts..swi|
000078f0  5f 65 72 72 6f 72 0d 48  62 05 e1 0d 48 76 15 dd  |_error.Hb...Hv..|
00007900  f2 73 70 72 69 74 65 5f  73 61 76 65 28 46 24 29  |.sprite_save(F$)|
00007910  0d 48 80 7a e7 a7 46 24  2c 22 2e 22 29 3d 30 80  |.H.z..F$,".")=0.|
00007920  a7 46 24 2c 22 3a 22 29  3d 30 80 c0 46 24 2c 36  |.F$,":")=0..F$,6|
00007930  29 3c 3e 22 3c 57 69 6d  70 24 22 8c c8 99 22 57  |)<>"<Wimp$"..."W|
00007940  69 6d 70 5f 52 65 70 6f  72 74 45 72 72 6f 72 22  |imp_ReportError"|
00007950  2c 22 20 20 20 20 54 6f  20 73 61 76 65 2c 20 64  |,"    To save, d|
00007960  72 61 67 20 74 68 65 20  66 69 6c 65 20 69 63 6f  |rag the file ico|
00007970  6e 20 74 6f 20 61 20 64  69 72 65 63 74 6f 72 79  |n to a directory|
00007980  20 76 69 65 77 65 72 22  3a e1 0d 48 8a 24 c8 99  | viewer":..H.$..|
00007990  22 4f 53 5f 53 70 72 69  74 65 4f 70 22 2c 32 35  |"OS_SpriteOp",25|
000079a0  36 2b 31 32 2c 73 70 72  69 74 65 2c 46 24 0d 48  |6+12,sprite,F$.H|
000079b0  94 05 e1 0d 48 a8 10 dd  a4 6b 65 79 6d 61 70 28  |....H....keymap(|
000079c0  41 24 29 0d 48 b2 07 ea  49 25 0d 48 bc 12 e3 49  |A$).H...I%.H...I|
000079d0  25 3d 31 b8 6b 65 79 6d  61 70 73 25 0d 48 c6 27  |%=1.keymaps%.H.'|
000079e0  e7 a4 75 70 70 65 72 28  6b 65 79 6d 61 70 24 28  |..upper(keymap$(|
000079f0  49 25 29 29 3d a4 75 70  70 65 72 28 41 24 29 8c  |I%))=.upper(A$).|
00007a00  3d 49 25 0d 48 d0 05 ed  0d 48 da 06 3d 30 0d 48  |=I%.H....H..=0.H|
00007a10  ee 13 dd f2 73 65 74 6b  65 79 6d 61 70 28 41 24  |....setkeymap(A$|
00007a20  29 0d 48 f8 07 ea 49 25  0d 49 02 15 4b 65 79 4d  |).H...I%.I..KeyM|
00007a30  61 70 24 3d 22 44 65 66  61 75 6c 74 22 0d 49 0c  |ap$="Default".I.|
00007a40  1a e7 a4 75 70 70 65 72  28 41 24 29 3d 22 44 45  |...upper(A$)="DE|
00007a50  46 41 55 4c 54 22 8c 0d  49 16 26 e7 eb 3e 32 35  |FAULT"..I.&..>25|
00007a60  35 8c 41 24 3d 22 52 69  73 63 50 43 22 8b 41 24  |5.A$="RiscPC".A$|
00007a70  3d 22 41 72 63 68 69 6d  65 64 65 73 22 0d 49 20  |="Archimedes".I |
00007a80  05 cd 0d 49 2a 1c ff 22  53 65 74 20 36 35 30 32  |...I*.."Set 6502|
00007a90  45 6d 24 4b 65 79 6d 61  70 20 22 2b 41 24 0d 49  |Em$Keymap "+A$.I|
00007aa0  34 12 e3 49 25 3d 31 b8  6b 65 79 6d 61 70 73 25  |4..I%=1.keymaps%|
00007ab0  0d 49 3e 67 e7 a4 75 70  70 65 72 28 6b 65 79 6d  |.I>g..upper(keym|
00007ac0  61 70 24 28 49 25 29 29  3d a4 75 70 70 65 72 28  |ap$(I%))=.upper(|
00007ad0  41 24 29 8c 4b 65 79 4d  61 70 24 3d 41 24 3a 6b  |A$).KeyMap$=A$:k|
00007ae0  65 79 6d 61 70 25 3d 49  25 3a 49 25 3d 31 30 30  |eymap%=I%:I%=100|
00007af0  30 3a f2 72 65 61 64 6b  65 79 73 28 22 3c 36 35  |0:.readkeys("<65|
00007b00  30 32 45 6d 24 44 69 72  3e 2e 4b 65 79 6d 61 70  |02Em$Dir>.Keymap|
00007b10  73 2e 22 2b 41 24 29 0d  49 48 05 ed 0d 49 52 05  |s."+A$).IH...IR.|
00007b20  e1 0d 49 66 11 dd f2 72  65 61 64 6b 65 79 6d 61  |..If...readkeyma|
00007b30  70 73 0d 49 70 0f ea 6f  66 66 73 65 74 25 2c 4e  |ps.Ip..offset%,N|
00007b40  25 0d 49 7a 0d 6b 65 79  6d 61 70 25 3d 30 0d 49  |%.Iz.keymap%=0.I|
00007b50  84 0e 6b 65 79 6d 61 70  73 25 3d 30 0d 49 8e 05  |..keymaps%=0.I..|
00007b60  f5 0d 49 98 4c c8 99 22  4f 53 5f 47 42 50 42 22  |..I.L.."OS_GBPB"|
00007b70  2c 39 2c 22 3c 36 35 30  32 45 6d 24 44 69 72 3e  |,9,"<6502Em$Dir>|
00007b80  2e 4b 65 79 6d 61 70 73  22 2c 71 25 2c 31 30 30  |.Keymaps",q%,100|
00007b90  2c 6f 66 66 73 65 74 25  2c 26 31 30 30 2c 30 b8  |,offset%,&100,0.|
00007ba0  2c 2c 2c 4e 25 2c 6f 66  66 73 65 74 25 0d 49 a2  |,,,N%,offset%.I.|
00007bb0  10 6b 65 79 6d 61 70 73  25 2b 3d 4e 25 0d 49 ac  |.keymaps%+=N%.I.|
00007bc0  0f fd 6f 66 66 73 65 74  25 3d 2d 31 0d 49 b6 1e  |..offset%=-1.I..|
00007bd0  e7 6b 65 79 6d 61 70 73  25 3d 30 8c 6b 65 79 73  |.keymaps%=0.keys|
00007be0  6d 65 6e 75 25 3d 2d 31  3a e1 0d 49 c0 2e de 6b  |menu%=-1:..I...k|
00007bf0  65 79 6d 61 70 24 28 6b  65 79 6d 61 70 73 25 29  |eymap$(keymaps%)|
00007c00  2c 6b 65 79 73 6d 65 6e  75 25 33 32 2b 32 34 2a  |,keysmenu%32+24*|
00007c10  6b 65 79 6d 61 70 73 25  0d 49 ca 0d 6f 66 66 73  |keymaps%.I..offs|
00007c20  65 74 25 3d 30 0d 49 d4  12 e3 4e 25 3d 31 b8 6b  |et%=0.I...N%=1.k|
00007c30  65 79 6d 61 70 73 25 0d  49 de 48 c8 99 22 4f 53  |eymaps%.I.H.."OS|
00007c40  5f 47 42 50 42 22 2c 39  2c 22 3c 36 35 30 32 45  |_GBPB",9,"<6502E|
00007c50  6d 24 44 69 72 3e 2e 4b  65 79 6d 61 70 73 22 2c  |m$Dir>.Keymaps",|
00007c60  71 25 2c 31 2c 6f 66 66  73 65 74 25 2c 26 31 30  |q%,1,offset%,&10|
00007c70  30 2c 30 b8 2c 2c 2c 2c  6f 66 66 73 65 74 25 0d  |0,0.,,,,offset%.|
00007c80  49 e8 1b 6b 65 79 6d 61  70 24 28 4e 25 29 3d a4  |I..keymap$(N%)=.|
00007c90  73 74 72 69 6e 67 28 71  25 29 0d 49 f2 05 ed 0d  |string(q%).I....|
00007ca0  49 fc 05 e1 0d 4a 10 11  dd f2 72 65 61 64 70 61  |I....J....readpa|
00007cb0  74 63 68 65 73 0d 4a 1a  0f ea 6f 66 66 73 65 74  |tches.J...offset|
00007cc0  25 2c 4e 25 0d 4a 24 0c  70 61 74 63 68 25 3d 30  |%,N%.J$.patch%=0|
00007cd0  0d 4a 2e 0e 70 61 74 63  68 65 73 25 3d 30 0d 4a  |.J..patches%=0.J|
00007ce0  38 05 f5 0d 4a 42 4c c8  99 22 4f 53 5f 47 42 50  |8...JBL.."OS_GBP|
00007cf0  42 22 2c 39 2c 22 3c 36  35 30 32 45 6d 24 44 69  |B",9,"<6502Em$Di|
00007d00  72 3e 2e 50 61 74 63 68  65 73 22 2c 71 25 2c 31  |r>.Patches",q%,1|
00007d10  30 30 2c 6f 66 66 73 65  74 25 2c 26 31 30 30 2c  |00,offset%,&100,|
00007d20  30 b8 2c 2c 2c 4e 25 2c  6f 66 66 73 65 74 25 0d  |0.,,,N%,offset%.|
00007d30  4a 4c 10 70 61 74 63 68  65 73 25 2b 3d 4e 25 0d  |JL.patches%+=N%.|
00007d40  4a 56 0f fd 6f 66 66 73  65 74 25 3d 2d 31 0d 4a  |JV..offset%=-1.J|
00007d50  60 1f e7 70 61 74 63 68  65 73 25 3d 30 8c 70 61  |`..patches%=0.pa|
00007d60  74 63 68 6d 65 6e 75 25  3d 2d 31 3a e1 0d 4a 6a  |tchmenu%=-1:..Jj|
00007d70  2e de 70 61 74 63 68 24  28 70 61 74 63 68 65 73  |..patch$(patches|
00007d80  25 29 2c 70 61 74 63 68  6d 65 6e 75 25 33 32 2b  |%),patchmenu%32+|
00007d90  32 34 2a 70 61 74 63 68  65 73 25 0d 4a 74 0d 6f  |24*patches%.Jt.o|
00007da0  66 66 73 65 74 25 3d 30  0d 4a 7e 12 e3 4e 25 3d  |ffset%=0.J~..N%=|
00007db0  31 b8 70 61 74 63 68 65  73 25 0d 4a 88 48 c8 99  |1.patches%.J.H..|
00007dc0  22 4f 53 5f 47 42 50 42  22 2c 39 2c 22 3c 36 35  |"OS_GBPB",9,"<65|
00007dd0  30 32 45 6d 24 44 69 72  3e 2e 50 61 74 63 68 65  |02Em$Dir>.Patche|
00007de0  73 22 2c 71 25 2c 31 2c  6f 66 66 73 65 74 25 2c  |s",q%,1,offset%,|
00007df0  26 31 30 30 2c 30 b8 2c  2c 2c 2c 6f 66 66 73 65  |&100,0.,,,,offse|
00007e00  74 25 0d 4a 92 1a 70 61  74 63 68 24 28 4e 25 29  |t%.J..patch$(N%)|
00007e10  3d a4 73 74 72 69 6e 67  28 71 25 29 0d 4a 9c 05  |=.string(q%).J..|
00007e20  ed 0d 4a a6 05 e1 0d 4a  ba 10 dd a4 73 74 72 69  |..J....J....stri|
00007e30  6e 67 28 41 25 29 0d 4a  c4 0a ea 41 24 2c 49 25  |ng(A%).J...A$,I%|
00007e40  0d 4a ce 05 f5 0d 4a d8  12 41 24 3d 41 24 2b bd  |.J....J..A$=A$+.|
00007e50  28 41 25 3f 49 25 29 0d  4a e2 09 49 25 2b 3d 31  |(A%?I%).J..I%+=1|
00007e60  0d 4a ec 0c fd 41 25 3f  49 25 3d 30 0d 4a f6 07  |.J...A%?I%=0.J..|
00007e70  3d 41 24 0d 4b 0a 0f dd  f2 6c 6f 61 64 70 61 74  |=A$.K....loadpat|
00007e80  63 68 0d 4b 14 49 ff 22  4c 6f 61 64 20 3c 36 35  |ch.K.I."Load <65|
00007e90  30 32 45 6d 24 44 69 72  3e 2e 50 61 74 63 68 65  |02Em$Dir>.Patche|
00007ea0  73 2e 22 2b 70 61 74 63  68 24 28 70 61 74 63 68  |s."+patch$(patch|
00007eb0  25 29 2b 22 20 22 2b c3  7e 28 63 6f 64 65 2b 21  |%)+" "+.~(code+!|
00007ec0  70 61 74 63 68 5f 61 64  64 72 29 0d 4b 1e 19 3f  |patch_addr).K..?|
00007ed0  70 61 74 63 68 5f 6f 6e  3d 3f 70 61 74 63 68 5f  |patch_on=?patch_|
00007ee0  6f 6e 84 31 0d 4b 28 05  e1 0d 4b 3c 14 dd a4 6f  |on.1.K(...K<...o|
00007ef0  73 77 6f 72 64 31 34 5f  31 28 41 25 29 0d 4b 46  |sword14_1(A%).KF|
00007f00  0d 3f 62 75 66 66 65 72  3d 31 0d 4b 50 19 c8 99  |.?buffer=1.KP...|
00007f10  22 4f 53 5f 57 6f 72 64  22 2c 31 34 2c 62 75 66  |"OS_Word",14,buf|
00007f20  66 65 72 0d 4b 5a 0e 3d  62 75 66 66 65 72 3f 41  |fer.KZ.=buffer?A|
00007f30  25 0d 4b 6e 0e dd f2 72  65 61 64 43 4d 4f 53 0d  |%.Kn...readCMOS.|
00007f40  4b 78 0e c8 8e 78 3f 33  80 20 36 33 ca 0d 4b 82  |Kx...x?3. 63..K.|
00007f50  19 c9 30 3a 79 3f 33 3d  a4 6f 73 77 6f 72 64 31  |..0:y?3=.osword1|
00007f60  34 5f 31 28 36 29 0d 4b  8c 0c c9 31 3a 79 3f 33  |4_1(6).K...1:y?3|
00007f70  3d 31 0d 4b 96 19 c9 32  3a 79 3f 33 3d a4 6f 73  |=1.K...2:y?3=.os|
00007f80  77 6f 72 64 31 34 5f 31  28 35 29 0d 4b a0 0c c9  |word14_1(5).K...|
00007f90  33 3a 79 3f 33 3d 31 0d  4b aa 19 c9 34 3a 79 3f  |3:y?3=1.K...4:y?|
00007fa0  33 3d a4 6f 73 77 6f 72  64 31 34 5f 31 28 34 29  |3=.osword14_1(4)|
00007fb0  0d 4b b4 0c c9 35 3a 79  3f 33 3d 31 0d 4b be 19  |.K...5:y?3=1.K..|
00007fc0  c9 36 3a 79 3f 33 3d a4  6f 73 77 6f 72 64 31 34  |.6:y?3=.osword14|
00007fd0  5f 31 28 33 29 0d 4b c8  19 c9 37 3a 79 3f 33 3d  |_1(3).K...7:y?3=|
00007fe0  a4 6f 73 77 6f 72 64 31  34 5f 31 28 32 29 0d 4b  |.osword14_1(2).K|
00007ff0  d2 19 c9 38 3a 79 3f 33  3d a4 6f 73 77 6f 72 64  |...8:y?3=.osword|
00008000  31 34 5f 31 28 31 29 0d  4b dc 19 c9 39 3a 79 3f  |14_1(1).K...9:y?|
00008010  33 3d a4 6f 73 77 6f 72  64 31 34 5f 31 28 30 29  |3=.osword14_1(0)|
00008020  0d 4b e6 15 c9 31 30 3a  79 3f 33 3d 25 30 30 31  |.K...10:y?3=%001|
00008030  30 30 30 30 30 0d 4b f0  15 c9 31 31 3a 79 3f 33  |00000.K...11:y?3|
00008040  3d 25 30 30 30 30 30 30  31 30 0d 4b fa 0d c9 31  |=%00000010.K...1|
00008050  32 3a 79 3f 33 3d 30 0d  4c 04 0d c9 31 33 3a 79  |2:y?3=0.L...13:y|
00008060  3f 33 3d 30 0d 4c 0e 18  7f 3a 79 3f 33 3d 63 6d  |?3=0.L...:y?3=cm|
00008070  6f 73 25 28 78 3f 33 80  20 36 33 29 0d 4c 22 05  |os%(x?3. 63).L".|
00008080  cb 0d 4c 36 0b 61 3f 33  3d 79 3f 33 0d 4c 54 08  |..L6.a?3=y?3.LT.|
00008090  f2 72 74 73 0d 4c 5e 05  e1 0d 4c 72 10 dd f2 72  |.rts.L^...Lr...r|
000080a0  65 61 64 45 45 50 52 4f  4d 0d 4c 7c 14 79 3f 33  |eadEEPROM.L|.y?3|
000080b0  3d 65 65 70 72 6f 6d 25  28 78 3f 33 29 0d 4c 86  |=eeprom%(x?3).L.|
000080c0  0b 61 3f 33 3d 79 3f 33  0d 4c 90 08 f2 72 74 73  |.a?3=y?3.L...rts|
000080d0  0d 4c 9a 05 e1 0d 4c ae  0f dd f2 77 72 69 74 65  |.L....L....write|
000080e0  43 4d 4f 53 0d 4c b8 16  63 6d 6f 73 25 28 78 3f  |CMOS.L..cmos%(x?|
000080f0  33 80 20 36 33 29 3d 79  3f 33 0d 4c c2 08 f2 72  |3. 63)=y?3.L...r|
00008100  74 73 0d 4c cc 12 e7 28  78 3f 33 80 20 36 33 29  |ts.L...(x?3. 63)|
00008110  3e 31 33 8c 0d 4c d6 1a  51 3d ad 22 3c 36 35 30  |>13..L..Q=."<650|
00008120  32 45 6d 24 52 65 73 3e  2e 43 4d 4f 53 22 0d 4c  |2Em$Res>.CMOS".L|
00008130  e0 0f cf 23 51 3d 78 3f  33 80 20 36 33 0d 4c ea  |...#Q=x?3. 63.L.|
00008140  0b d5 23 51 2c 79 3f 33  0d 4c f4 07 d9 23 51 0d  |..#Q,y?3.L...#Q.|
00008150  4c fe 05 cd 0d 4d 08 05  e1 0d 4d 1c 11 dd f2 77  |L....M....M....w|
00008160  72 69 74 65 45 45 50 52  4f 4d 0d 4d 26 14 65 65  |riteEEPROM.M&.ee|
00008170  70 72 6f 6d 25 28 78 3f  33 29 3d 79 3f 33 0d 4d  |prom%(x?3)=y?3.M|
00008180  30 08 f2 72 74 73 0d 4d  3a 1c 51 3d ad 22 3c 36  |0..rts.M:.Q=."<6|
00008190  35 30 32 45 6d 24 52 65  73 3e 2e 45 45 50 52 4f  |502Em$Res>.EEPRO|
000081a0  4d 22 0d 4d 44 0b cf 23  51 3d 78 3f 33 0d 4d 4e  |M".MD..#Q=x?3.MN|
000081b0  0b d5 23 51 2c 79 3f 33  0d 4d 58 07 d9 23 51 0d  |..#Q,y?3.MX..#Q.|
000081c0  4d 62 05 e1 0d 4d 76 0e  dd f2 6c 6f 61 64 43 4d  |Mb...Mv...loadCM|
000081d0  4f 53 0d 4d 80 09 ea 51  2c 49 25 0d 4d 8a 1a 51  |OS.M...Q,I%.M..Q|
000081e0  3d 8e 22 3c 36 35 30 32  45 6d 24 52 65 73 3e 2e  |=."<6502Em$Res>.|
000081f0  43 4d 4f 53 22 0d 4d 94  0c e3 49 25 3d 30 b8 36  |CMOS".M...I%=0.6|
00008200  33 0d 4d 9e 11 63 6d 6f  73 25 28 49 25 29 3d 9a  |3.M..cmos%(I%)=.|
00008210  23 51 0d 4d a8 05 ed 0d  4d b2 07 d9 23 51 0d 4d  |#Q.M....M...#Q.M|
00008220  bc 05 e1 0d 4d d0 10 dd  f2 6c 6f 61 64 45 45 50  |....M....loadEEP|
00008230  52 4f 4d 0d 4d da 09 ea  51 2c 49 25 0d 4d e4 1c  |ROM.M...Q,I%.M..|
00008240  51 3d 8e 22 3c 36 35 30  32 45 6d 24 52 65 73 3e  |Q=."<6502Em$Res>|
00008250  2e 45 45 50 52 4f 4d 22  0d 4d ee 0d e3 49 25 3d  |.EEPROM".M...I%=|
00008260  30 b8 32 35 35 0d 4d f8  13 65 65 70 72 6f 6d 25  |0.255.M..eeprom%|
00008270  28 49 25 29 3d 9a 23 51  0d 4e 02 05 ed 0d 4e 0c  |(I%)=.#Q.N....N.|
00008280  07 d9 23 51 0d 4e 16 05  e1 0d 4e 2a 12 dd f2 6c  |..#Q.N....N*...l|
00008290  6f 61 64 63 6f 64 65 28  43 24 29 0d 4e 34 27 ff  |oadcode(C$).N4'.|
000082a0  22 4c 4f 41 44 20 3c 36  35 30 32 45 6d 24 44 69  |"LOAD <6502Em$Di|
000082b0  72 3e 2e 22 2b 43 24 2b  22 20 22 2b c3 7e 63 6f  |r>."+C$+" "+.~co|
000082c0  64 65 0d 4e 3e 14 d6 63  6f 64 65 2b 21 69 6e 69  |de.N>..code+!ini|
000082d0  74 5f 61 64 64 72 0d 4e  48 11 f2 73 6f 75 6e 64  |t_addr.NH..sound|
000082e0  5f 72 65 69 6e 69 74 0d  4e 52 19 e7 70 61 74 63  |_reinit.NR..patc|
000082f0  68 25 3c 3e 30 8c f2 6c  6f 61 64 70 61 74 63 68  |h%<>0..loadpatch|
00008300  0d 4e 5c 05 e1 0d 4e 70  0c dd f2 6d 61 73 74 65  |.N\...Np...maste|
00008310  72 0d 4e 7a 16 f2 6c 6f  61 64 63 6f 64 65 28 22  |r.Nz..loadcode("|
00008320  43 6f 64 65 4d 22 29 0d  4e 84 3a ff 22 4c 4f 41  |CodeM").N.:."LOA|
00008330  44 20 3c 36 35 30 32 45  6d 24 44 69 72 3e 2e 52  |D <6502Em$Dir>.R|
00008340  4f 4d 53 2e 4d 31 32 38  2e 4f 53 33 2c 32 20 22  |OMS.M128.OS3,2 "|
00008350  2b c3 7e 28 6d 65 6d 6f  72 79 2b 26 43 30 30 30  |+.~(memory+&C000|
00008360  29 0d 4e 8e 3e ff 22 4c  4f 41 44 20 3c 36 35 30  |).N.>."LOAD <650|
00008370  32 45 6d 24 44 69 72 3e  2e 52 4f 4d 53 2e 4d 31  |2Em$Dir>.ROMS.M1|
00008380  32 38 2e 4f 53 33 2c 32  20 22 2b c3 7e 28 72 6f  |28.OS3,2 "+.~(ro|
00008390  6d 73 2b 72 6f 6d 73 69  7a 65 25 2a 31 36 29 0d  |ms+romsize%*16).|
000083a0  4e 98 29 ff 22 4c 4f 41  44 20 3c 36 35 30 32 45  |N.)."LOAD <6502E|
000083b0  6d 24 52 65 73 3e 2e 53  48 45 49 4c 41 20 22 2b  |m$Res>.SHEILA "+|
000083c0  c3 7e 73 68 65 69 6c 61  0d 4e a2 0e 73 6f 63 6b  |.~sheila.N..sock|
000083d0  65 74 25 3d 31 35 0d 4e  ac 1f f2 6c 6f 61 64 52  |et%=15.N...loadR|
000083e0  4f 4d 28 22 4d 31 32 38  2e 54 65 72 6d 69 6e 61  |OM("M128.Termina|
000083f0  6c 22 2c 31 29 0d 4e b6  1f 3f 28 72 6f 6d 73 2b  |l",1).N..?(roms+|
00008400  72 6f 6d 73 69 7a 65 25  2a 31 35 2b 26 31 38 42  |romsize%*15+&18B|
00008410  37 29 3d 33 0d 4e c0 21  3f 28 72 6f 6d 73 2b 72  |7)=3.N.!?(roms+r|
00008420  6f 6d 73 69 7a 65 25 2a  31 35 2b 26 31 38 42 38  |omsize%*15+&18B8|
00008430  29 3d 26 38 30 0d 4e ca  1f 3f 28 72 6f 6d 73 2b  |)=&80.N..?(roms+|
00008440  72 6f 6d 73 69 7a 65 25  2a 31 35 2b 26 31 38 45  |romsize%*15+&18E|
00008450  34 29 3d 33 0d 4e d4 21  3f 28 72 6f 6d 73 2b 72  |4)=3.N.!?(roms+r|
00008460  6f 6d 73 69 7a 65 25 2a  31 35 2b 26 31 38 45 35  |omsize%*15+&18E5|
00008470  29 3d 26 38 31 0d 4e de  1b f2 6c 6f 61 64 52 4f  |)=&81.N...loadRO|
00008480  4d 28 22 4d 31 32 38 2e  56 69 65 77 22 2c 31 29  |M("M128.View",1)|
00008490  0d 4e e8 16 f2 6c 6f 61  64 52 4f 4d 28 22 56 44  |.N...loadROM("VD|
000084a0  46 53 22 2c 31 29 0d 4e  fc 20 f2 6c 6f 61 64 52  |FS",1).N. .loadR|
000084b0  4f 4d 28 22 4d 31 32 38  2e 42 41 53 49 43 49 56  |OM("M128.BASICIV|
000084c0  38 34 22 2c 31 29 0d 4f  06 1f f2 6c 6f 61 64 52  |84",1).O...loadR|
000084d0  4f 4d 28 22 4d 31 32 38  2e 45 64 69 74 31 2c 30  |OM("M128.Edit1,0|
000084e0  30 22 2c 31 29 0d 4f 10  20 f2 6c 6f 61 64 52 4f  |0",1).O. .loadRO|
000084f0  4d 28 22 4d 31 32 38 2e  56 69 65 77 53 68 65 65  |M("M128.ViewShee|
00008500  74 22 2c 31 29 0d 4f 1a  1e f2 6c 6f 61 64 52 4f  |t",1).O...loadRO|
00008510  4d 28 22 4d 31 32 38 2e  44 46 53 32 2c 32 34 22  |M("M128.DFS2,24"|
00008520  2c 31 29 0d 4f 42 0a f2  53 52 52 41 4d 0d 4f 4c  |,1).OB..SRRAM.OL|
00008530  0a f2 53 52 52 41 4d 0d  4f 56 0a f2 53 52 52 41  |..SRRAM.OV..SRRA|
00008540  4d 0d 4f 60 0a f2 53 52  52 41 4d 0d 4f 6a 0a f2  |M.O`..SRRAM.Oj..|
00008550  53 52 52 41 4d 0d 4f 74  05 e1 0d 4f 88 0e dd f2  |SRRAM.Ot...O....|
00008560  6d 61 73 74 65 72 33 35  0d 4f 92 16 f2 6c 6f 61  |master35.O...loa|
00008570  64 63 6f 64 65 28 22 43  6f 64 65 4d 22 29 0d 4f  |dcode("CodeM").O|
00008580  9c 3a ff 22 4c 4f 41 44  20 3c 36 35 30 32 45 6d  |.:."LOAD <6502Em|
00008590  24 44 69 72 3e 2e 52 4f  4d 53 2e 4d 31 32 38 2e  |$Dir>.ROMS.M128.|
000085a0  4f 53 33 2c 35 20 22 2b  c3 7e 28 6d 65 6d 6f 72  |OS3,5 "+.~(memor|
000085b0  79 2b 26 43 30 30 30 29  0d 4f a6 3e ff 22 4c 4f  |y+&C000).O.>."LO|
000085c0  41 44 20 3c 36 35 30 32  45 6d 24 44 69 72 3e 2e  |AD <6502Em$Dir>.|
000085d0  52 4f 4d 53 2e 4d 31 32  38 2e 4f 53 33 2c 35 20  |ROMS.M128.OS3,5 |
000085e0  22 2b c3 7e 28 72 6f 6d  73 2b 72 6f 6d 73 69 7a  |"+.~(roms+romsiz|
000085f0  65 25 2a 31 36 29 0d 4f  b0 29 ff 22 4c 4f 41 44  |e%*16).O.)."LOAD|
00008600  20 3c 36 35 30 32 45 6d  24 52 65 73 3e 2e 53 48  | <6502Em$Res>.SH|
00008610  45 49 4c 41 20 22 2b c3  7e 73 68 65 69 6c 61 0d  |EILA "+.~sheila.|
00008620  4f ba 0e 73 6f 63 6b 65  74 25 3d 31 35 0d 4f c4  |O..socket%=15.O.|
00008630  21 f2 6c 6f 61 64 52 4f  4d 28 22 4d 31 32 38 2e  |!.loadROM("M128.|
00008640  54 65 72 6d 69 6e 61 6c  33 35 22 2c 31 29 0d 4f  |Terminal35",1).O|
00008650  ce 1f 3f 28 72 6f 6d 73  2b 72 6f 6d 73 69 7a 65  |..?(roms+romsize|
00008660  25 2a 31 35 2b 26 31 36  41 33 29 3d 33 0d 4f d8  |%*15+&16A3)=3.O.|
00008670  21 3f 28 72 6f 6d 73 2b  72 6f 6d 73 69 7a 65 25  |!?(roms+romsize%|
00008680  2a 31 35 2b 26 31 36 41  34 29 3d 26 38 30 0d 4f  |*15+&16A4)=&80.O|
00008690  e2 1f 3f 28 72 6f 6d 73  2b 72 6f 6d 73 69 7a 65  |..?(roms+romsize|
000086a0  25 2a 31 35 2b 26 31 36  44 30 29 3d 33 0d 4f ec  |%*15+&16D0)=3.O.|
000086b0  21 3f 28 72 6f 6d 73 2b  72 6f 6d 73 69 7a 65 25  |!?(roms+romsize%|
000086c0  2a 31 35 2b 26 31 36 44  31 29 3d 26 38 31 0d 4f  |*15+&16D1)=&81.O|
000086d0  f6 1f f2 6c 6f 61 64 52  4f 4d 28 22 4d 31 32 38  |...loadROM("M128|
000086e0  2e 56 69 65 77 42 33 2c  33 22 2c 31 29 0d 50 00  |.ViewB3,3",1).P.|
000086f0  16 f2 6c 6f 61 64 52 4f  4d 28 22 56 44 46 53 22  |..loadROM("VDFS"|
00008700  2c 31 29 0d 50 14 20 f2  6c 6f 61 64 52 4f 4d 28  |,1).P. .loadROM(|
00008710  22 4d 31 32 38 2e 42 41  53 49 43 34 72 33 32 22  |"M128.BASIC4r32"|
00008720  2c 31 29 0d 50 1e 20 f2  6c 6f 61 64 52 4f 4d 28  |,1).P. .loadROM(|
00008730  22 4d 31 32 38 2e 45 64  69 74 31 2c 35 30 72 22  |"M128.Edit1,50r"|
00008740  2c 31 29 0d 50 28 21 f2  6c 6f 61 64 52 4f 4d 28  |,1).P(!.loadROM(|
00008750  22 4d 31 32 38 2e 56 69  65 77 53 68 31 2c 30 31  |"M128.ViewSh1,01|
00008760  22 2c 31 29 0d 50 32 1e  f2 6c 6f 61 64 52 4f 4d  |",1).P2..loadROM|
00008770  28 22 4d 31 32 38 2e 44  46 53 32 2c 34 35 22 2c  |("M128.DFS2,45",|
00008780  31 29 0d 50 5a 0a f2 53  52 52 41 4d 0d 50 64 0a  |1).PZ..SRRAM.Pd.|
00008790  f2 53 52 52 41 4d 0d 50  6e 0a f2 53 52 52 41 4d  |.SRRAM.Pn..SRRAM|
000087a0  0d 50 78 0a f2 53 52 52  41 4d 0d 50 82 0a f2 53  |.Px..SRRAM.P...S|
000087b0  52 52 41 4d 0d 50 8c 05  e1 0d 50 a0 0d dd f2 63  |RRAM.P....P....c|
000087c0  6f 6d 70 61 63 74 0d 50  aa 16 f2 6c 6f 61 64 63  |ompact.P...loadc|
000087d0  6f 64 65 28 22 43 6f 64  65 4d 22 29 0d 50 b4 3d  |ode("CodeM").P.=|
000087e0  ff 22 4c 4f 41 44 20 3c  36 35 30 32 45 6d 24 44  |."LOAD <6502Em$D|
000087f0  69 72 3e 2e 52 4f 4d 53  2e 43 6f 6d 70 61 63 74  |ir>.ROMS.Compact|
00008800  2e 4f 53 35 2c 31 20 22  2b c3 7e 28 6d 65 6d 6f  |.OS5,1 "+.~(memo|
00008810  72 79 2b 26 43 30 30 30  29 0d 50 be 3e ff 22 4c  |ry+&C000).P.>."L|
00008820  4f 41 44 20 3c 36 35 30  32 45 6d 24 44 69 72 3e  |OAD <6502Em$Dir>|
00008830  2e 52 4f 4d 53 2e 43 6f  6d 70 61 63 74 2e 4f 53  |.ROMS.Compact.OS|
00008840  35 2c 31 20 22 2b c3 7e  28 72 6f 6d 73 2b 26 34  |5,1 "+.~(roms+&4|
00008850  30 30 30 2a 31 36 29 0d  50 c8 29 ff 22 4c 4f 41  |000*16).P.)."LOA|
00008860  44 20 3c 36 35 30 32 45  6d 24 52 65 73 3e 2e 53  |D <6502Em$Res>.S|
00008870  48 45 49 4c 41 20 22 2b  c3 7e 73 68 65 69 6c 61  |HEILA "+.~sheila|
00008880  0d 50 d2 0e 73 6f 63 6b  65 74 25 3d 31 35 0d 50  |.P..socket%=15.P|
00008890  dc 1f f2 6c 6f 61 64 52  4f 4d 28 22 43 6f 6d 70  |...loadROM("Comp|
000088a0  61 63 74 2e 55 74 69 6c  73 22 2c 31 29 0d 50 e6  |act.Utils",1).P.|
000088b0  25 3f 28 72 6f 6d 73 2b  72 6f 6d 73 69 7a 65 25  |%?(roms+romsize%|
000088c0  2a 31 35 2b 26 39 45 33  41 2d 26 38 30 30 30 29  |*15+&9E3A-&8000)|
000088d0  3d 33 0d 50 f0 27 3f 28  72 6f 6d 73 2b 72 6f 6d  |=3.P.'?(roms+rom|
000088e0  73 69 7a 65 25 2a 31 35  2b 26 39 45 33 42 2d 26  |size%*15+&9E3B-&|
000088f0  38 30 30 30 29 3d 26 38  32 0d 50 fa 25 3f 28 72  |8000)=&82.P.%?(r|
00008900  6f 6d 73 2b 72 6f 6d 73  69 7a 65 25 2a 31 35 2b  |oms+romsize%*15+|
00008910  26 39 46 33 41 2d 26 38  30 30 30 29 3d 33 0d 51  |&9F3A-&8000)=3.Q|
00008920  04 27 3f 28 72 6f 6d 73  2b 72 6f 6d 73 69 7a 65  |.'?(roms+romsize|
00008930  25 2a 31 35 2b 26 39 46  33 42 2d 26 38 30 30 30  |%*15+&9F3B-&8000|
00008940  29 3d 26 38 33 0d 51 0e  23 f2 6c 6f 61 64 52 4f  |)=&83.Q.#.loadRO|
00008950  4d 28 22 43 6f 6d 70 61  63 74 2e 42 41 53 49 43  |M("Compact.BASIC|
00008960  49 56 38 36 22 2c 31 29  0d 51 22 16 f2 6c 6f 61  |IV86",1).Q"..loa|
00008970  64 52 4f 4d 28 22 56 44  46 53 22 2c 31 29 0d 51  |dROM("VDFS",1).Q|
00008980  2c 0d 73 6f 63 6b 65 74  25 3d 37 0d 51 36 0a f2  |,.socket%=7.Q6..|
00008990  53 52 52 41 4d 0d 51 40  0a f2 53 52 52 41 4d 0d  |SRRAM.Q@..SRRAM.|
000089a0  51 4a 0a f2 53 52 52 41  4d 0d 51 54 0a f2 53 52  |QJ..SRRAM.QT..SR|
000089b0  52 41 4d 0d 51 5e 05 e1  0d 51 72 0e dd f2 65 6c  |RAM.Q^...Qr...el|
000089c0  65 63 74 72 6f 6e 0d 51  7c 16 f2 6c 6f 61 64 63  |ectron.Q|..loadc|
000089d0  6f 64 65 28 22 43 6f 64  65 45 22 29 0d 51 86 38  |ode("CodeE").Q.8|
000089e0  ff 22 4c 4f 41 44 20 3c  36 35 30 32 45 6d 24 44  |."LOAD <6502Em$D|
000089f0  69 72 3e 2e 52 4f 4d 53  2e 45 4c 45 43 54 52 4f  |ir>.ROMS.ELECTRO|
00008a00  4e 20 22 2b c3 7e 28 6d  65 6d 6f 72 79 2b 26 43  |N "+.~(memory+&C|
00008a10  30 30 30 29 0d 51 e0 0e  73 6f 63 6b 65 74 25 3d  |000).Q..socket%=|
00008a20  31 35 0d 51 ea 19 f2 6c  6f 61 64 52 4f 4d 28 22  |15.Q...loadROM("|
00008a30  42 41 53 49 43 49 49 22  2c 31 29 0d 51 f4 16 f2  |BASICII",1).Q...|
00008a40  6c 6f 61 64 52 4f 4d 28  22 56 44 46 53 22 2c 31  |loadROM("VDFS",1|
00008a50  29 0d 51 fe 05 e1 0d 52  12 0a dd f2 42 42 43 42  |).Q....R....BBCB|
00008a60  0d 52 1c 15 f2 6c 6f 61  64 63 6f 64 65 28 22 43  |.R...loadcode("C|
00008a70  6f 64 65 22 29 0d 52 26  0d 3f 41 43 43 43 4f 4e  |ode").R&.?ACCCON|
00008a80  3d 30 0d 52 30 0e e7 75  73 65 4d 45 4d 43 25 8c  |=0.R0..useMEMC%.|
00008a90  0d 52 3a 0c e3 49 25 3d  30 b8 31 35 0d 52 44 3c  |.R:..I%=0.15.RD<|
00008aa0  ff 22 4c 4f 41 44 20 3c  36 35 30 32 45 6d 24 44  |."LOAD <6502Em$D|
00008ab0  69 72 3e 2e 52 4f 4d 53  2e 4f 53 31 2c 32 20 22  |ir>.ROMS.OS1,2 "|
00008ac0  2b c3 7e 28 72 6f 6d 73  2b 26 34 30 30 30 2b 26  |+.~(roms+&4000+&|
00008ad0  38 30 30 30 2a 49 25 29  0d 52 4e 05 ed 0d 52 58  |8000*I%).RN...RX|
00008ae0  05 cc 0d 52 62 35 ff 22  4c 4f 41 44 20 3c 36 35  |...Rb5."LOAD <65|
00008af0  30 32 45 6d 24 44 69 72  3e 2e 52 4f 4d 53 2e 4f  |02Em$Dir>.ROMS.O|
00008b00  53 31 2c 32 20 22 2b c3  7e 28 6d 65 6d 6f 72 79  |S1,2 "+.~(memory|
00008b10  2b 26 43 30 30 30 29 0d  52 76 29 ff 22 4c 4f 41  |+&C000).Rv)."LOA|
00008b20  44 20 3c 36 35 30 32 45  6d 24 52 65 73 3e 2e 53  |D <6502Em$Res>.S|
00008b30  48 45 49 4c 41 20 22 2b  c3 7e 73 68 65 69 6c 61  |HEILA "+.~sheila|
00008b40  0d 52 80 05 cd 0d 52 da  0e 73 6f 63 6b 65 74 25  |.R....R..socket%|
00008b50  3d 31 35 0d 52 e4 19 f2  6c 6f 61 64 52 4f 4d 28  |=15.R...loadROM(|
00008b60  22 42 41 53 49 43 49 49  22 2c 31 29 0d 52 ee 16  |"BASICII",1).R..|
00008b70  f2 6c 6f 61 64 52 4f 4d  28 22 56 44 46 53 22 2c  |.loadROM("VDFS",|
00008b80  31 29 0d 52 f8 0a f2 53  52 52 41 4d 0d 53 02 05  |1).R...SRRAM.S..|
00008b90  e1 0d 53 16 10 dd f2 6e  65 77 6d 61 63 68 69 6e  |..S....newmachin|
00008ba0  65 0d 53 20 2f e7 ac 75  73 65 4d 45 4d 43 25 8c  |e.S /..useMEMC%.|
00008bb0  f2 63 6c 65 61 72 6d 65  6d 28 72 6f 6d 73 2c 72  |.clearmem(roms,r|
00008bc0  6f 6d 73 2b 31 36 2a 72  6f 6d 73 69 7a 65 25 29  |oms+16*romsize%)|
00008bd0  0d 53 2a 0d f2 69 6e 69  74 52 4f 4d 73 0d 53 3e  |.S*..initROMs.S>|
00008be0  1a e7 6d 61 63 68 69 6e  65 25 3e 34 8c 6d 61 63  |..machine%>4.mac|
00008bf0  68 69 6e 65 25 3d 30 0d  53 5c 0f c8 8e 6d 61 63  |hine%=0.S\...mac|
00008c00  68 69 6e 65 25 ca 0d 53  70 06 c9 31 0d 53 7a 2c  |hine%..Sp..1.Sz,|
00008c10  e7 4d 61 63 68 69 6e 65  25 28 31 29 3d 30 8c 6d  |.Machine%(1)=0.m|
00008c20  61 63 68 69 6e 65 25 2b  3d 31 3a f2 6e 65 77 6d  |achine%+=1:.newm|
00008c30  61 63 68 69 6e 65 3a e1  0d 53 84 0b f2 6d 61 73  |achine:..S...mas|
00008c40  74 65 72 0d 53 98 06 c9  32 0d 53 a2 2c e7 4d 61  |ter.S...2.S.,.Ma|
00008c50  63 68 69 6e 65 25 28 32  29 3d 30 8c 6d 61 63 68  |chine%(2)=0.mach|
00008c60  69 6e 65 25 2b 3d 31 3a  f2 6e 65 77 6d 61 63 68  |ine%+=1:.newmach|
00008c70  69 6e 65 3a e1 0d 53 ac  0d f2 6d 61 73 74 65 72  |ine:..S...master|
00008c80  33 35 0d 53 c0 06 c9 33  0d 53 ca 2c e7 4d 61 63  |35.S...3.S.,.Mac|
00008c90  68 69 6e 65 25 28 33 29  3d 30 8c 6d 61 63 68 69  |hine%(3)=0.machi|
00008ca0  6e 65 25 2b 3d 31 3a f2  6e 65 77 6d 61 63 68 69  |ne%+=1:.newmachi|
00008cb0  6e 65 3a e1 0d 53 d4 0c  f2 63 6f 6d 70 61 63 74  |ne:..S...compact|
00008cc0  0d 53 e8 06 c9 34 0d 53  f2 0d f2 65 6c 65 63 74  |.S...4.S...elect|
00008cd0  72 6f 6e 0d 54 06 0b 7f  3a f2 42 42 43 42 0d 54  |ron.T...:.BBCB.T|
00008ce0  10 05 cb 0d 54 1a 0d f2  72 65 73 65 74 28 31 29  |....T...reset(1)|
00008cf0  0d 54 24 1b 4f 53 52 44  43 48 5f 6c 6f 63 3d a4  |.T$.OSRDCH_loc=.|
00008d00  70 65 65 6b 28 26 46 46  45 30 29 0d 54 38 28 f2  |peek(&FFE0).T8(.|
00008d10  72 65 69 6e 73 74 61 6c  6c 28 4d 61 63 68 69 6e  |reinstall(Machin|
00008d20  65 53 70 72 69 74 65 24  28 6d 61 63 68 69 6e 65  |eSprite$(machine|
00008d30  25 29 29 0d 54 56 05 e1  0d 54 6a 15 dd f2 64 65  |%)).TV...Tj...de|
00008d40  66 61 75 6c 74 5f 6f 70  74 69 6f 6e 73 0d 54 74  |fault_options.Tt|
00008d50  26 74 61 70 65 66 69 6c  65 24 3d 22 3c 36 35 30  |&tapefile$="<650|
00008d60  32 45 6d 24 44 69 72 3e  2e 5e 2e 54 61 70 65 2d  |2Em$Dir>.^.Tape-|
00008d70  49 6e 22 0d 54 7e 0e 50  61 6c 65 74 74 65 25 3d  |In".T~.Palette%=|
00008d80  b9 0d 54 88 0d 4f 53 52  44 43 48 25 3d b9 0d 54  |..T..OSRDCH%=..T|
00008d90  92 0d 52 4f 4d 53 45 4c  25 3d b9 0d 54 9c 0d 43  |..ROMSEL%=..T..C|
00008da0  75 72 73 6f 72 25 3d a3  0d 54 a6 0c 4f 73 63 6c  |ursor%=..T..Oscl|
00008db0  69 25 3d a3 0d 54 b0 0c  65 78 61 63 74 25 3d b9  |i%=..T..exact%=.|
00008dc0  0d 54 ba 1d 6d 61 63 68  69 6e 65 25 3d 64 65 66  |.T..machine%=def|
00008dd0  61 75 6c 74 5f 6d 61 63  68 69 6e 65 25 0d 54 c4  |ault_machine%.T.|
00008de0  0f 73 6f 75 6e 64 5f 6f  6e 25 3d b9 0d 54 ce 12  |.sound_on%=..T..|
00008df0  73 63 72 6f 6c 6c 5f 68  61 63 6b 25 3d a3 0d 54  |scroll_hack%=..T|
00008e00  d8 0e 66 69 6c 65 5f 78  78 78 3d a3 0d 54 e2 0f  |..file_xxx=..T..|
00008e10  76 6f 6c 75 6d 65 25 3d  31 32 37 0d 54 ec 19 f2  |volume%=127.T...|
00008e20  73 65 74 6b 65 79 6d 61  70 28 22 44 65 66 61 75  |setkeymap("Defau|
00008e30  6c 74 22 29 0d 54 f6 05  e1 0d 55 0a 12 dd f2 73  |lt").T....U....s|
00008e40  61 76 65 5f 6f 70 74 69  6f 6e 73 0d 55 14 1d 51  |ave_options.U..Q|
00008e50  3d ae 22 3c 36 35 30 32  45 6d 24 52 65 73 3e 2e  |=."<6502Em$Res>.|
00008e60  4f 70 74 69 6f 6e 73 22  0d 55 1e 10 f1 23 51 2c  |Options".U...#Q,|
00008e70  50 61 6c 65 74 74 65 25  0d 55 28 0f f1 23 51 2c  |Palette%.U(..#Q,|
00008e80  4f 53 52 44 43 48 25 0d  55 32 0f f1 23 51 2c 52  |OSRDCH%.U2..#Q,R|
00008e90  4f 4d 53 45 4c 25 0d 55  3c 0f f1 23 51 2c 43 75  |OMSEL%.U<..#Q,Cu|
00008ea0  72 73 6f 72 25 0d 55 46  0e f1 23 51 2c 4f 73 63  |rsor%.UF..#Q,Osc|
00008eb0  6c 69 25 0d 55 50 0e f1  23 51 2c 65 78 61 63 74  |li%.UP..#Q,exact|
00008ec0  25 0d 55 5a 10 f1 23 51  2c 6d 61 63 68 69 6e 65  |%.UZ..#Q,machine|
00008ed0  25 0d 55 64 11 f1 23 51  2c 73 6f 75 6e 64 5f 6f  |%.Ud..#Q,sound_o|
00008ee0  6e 25 0d 55 6e 10 f1 23  51 2c 66 69 6c 65 5f 78  |n%.Un..#Q,file_x|
00008ef0  78 78 0d 55 78 0f f1 23  51 2c 76 6f 6c 75 6d 65  |xx.Ux..#Q,volume|
00008f00  25 0d 55 82 0f f1 23 51  2c 4b 65 79 4d 61 70 24  |%.U...#Q,KeyMap$|
00008f10  0d 55 8c 07 d9 23 51 0d  55 96 05 e1 0d 55 aa 12  |.U...#Q.U....U..|
00008f20  dd f2 6c 6f 61 64 5f 6f  70 74 69 6f 6e 73 0d 55  |..load_options.U|
00008f30  b4 26 74 61 70 65 66 69  6c 65 24 3d 22 3c 36 35  |.&tapefile$="<65|
00008f40  30 32 45 6d 24 44 69 72  3e 2e 5e 2e 54 61 70 65  |02Em$Dir>.^.Tape|
00008f50  2d 49 6e 22 0d 55 be 1d  51 3d 8e 22 3c 36 35 30  |-In".U..Q=."<650|
00008f60  32 45 6d 24 52 65 73 3e  2e 4f 70 74 69 6f 6e 73  |2Em$Res>.Options|
00008f70  22 0d 55 c8 1b e7 51 3d  30 8c f2 64 65 66 61 75  |".U...Q=0..defau|
00008f80  6c 74 5f 6f 70 74 69 6f  6e 73 3a e1 0d 55 d2 10  |lt_options:..U..|
00008f90  e8 23 51 2c 50 61 6c 65  74 74 65 25 0d 55 dc 0f  |.#Q,Palette%.U..|
00008fa0  e8 23 51 2c 4f 53 52 44  43 48 25 0d 55 e6 0f e8  |.#Q,OSRDCH%.U...|
00008fb0  23 51 2c 52 4f 4d 53 45  4c 25 0d 55 f0 0f e8 23  |#Q,ROMSEL%.U...#|
00008fc0  51 2c 43 75 72 73 6f 72  25 0d 55 fa 0e e8 23 51  |Q,Cursor%.U...#Q|
00008fd0  2c 4f 73 63 6c 69 25 0d  56 04 0e e8 23 51 2c 65  |,Oscli%.V...#Q,e|
00008fe0  78 61 63 74 25 0d 56 0e  10 e8 23 51 2c 6d 61 63  |xact%.V...#Q,mac|
00008ff0  68 69 6e 65 25 0d 56 18  11 e8 23 51 2c 73 6f 75  |hine%.V...#Q,sou|
00009000  6e 64 5f 6f 6e 25 0d 56  22 12 73 63 72 6f 6c 6c  |nd_on%.V".scroll|
00009010  5f 68 61 63 6b 25 3d a3  0d 56 2c 10 e8 23 51 2c  |_hack%=..V,..#Q,|
00009020  66 69 6c 65 5f 78 78 78  0d 56 36 0f e8 23 51 2c  |file_xxx.V6..#Q,|
00009030  76 6f 6c 75 6d 65 25 0d  56 40 2f e8 23 51 2c 4b  |volume%.V@/.#Q,K|
00009040  24 3a f2 73 65 74 6b 65  79 6d 61 70 28 22 44 65  |$:.setkeymap("De|
00009050  66 61 75 6c 74 22 29 3a  f2 73 65 74 6b 65 79 6d  |fault"):.setkeym|
00009060  61 70 28 4b 24 29 0d 56  4a 07 d9 23 51 0d 56 54  |ap(K$).VJ..#Q.VT|
00009070  05 e1 0d 56 68 15 dd f2  63 6c 65 61 72 6d 65 6d  |...Vh...clearmem|
00009080  28 53 25 2c 45 25 29 0d  56 72 0d 50 25 3d 62 75  |(S%,E%).Vr.P%=bu|
00009090  66 66 65 72 0d 56 7c 09  5b 4f 50 54 32 0d 56 86  |ffer.V|.[OPT2.V.|
000090a0  12 45 51 55 44 20 53 25  3b 6d 65 6d 6f 72 79 0d  |.EQUD S%;memory.|
000090b0  56 90 18 45 51 55 44 20  45 25 3b 6d 65 6d 6f 72  |V..EQUD E%;memor|
000090c0  79 2b 26 38 30 30 30 0d  56 9a 0a 2e 63 6c 65 61  |y+&8000.V...clea|
000090d0  72 0d 56 a4 0d 4d 4f 56  20 52 30 2c 23 30 0d 56  |r.V..MOV R0,#0.V|
000090e0  ae 11 4c 44 52 20 52 31  2c 62 75 66 66 65 72 0d  |..LDR R1,buffer.|
000090f0  56 b8 13 4c 44 52 20 52  32 2c 62 75 66 66 65 72  |V..LDR R2,buffer|
00009100  2b 34 0d 56 c2 09 2e 6c  6f 6f 70 0d 56 cc 12 53  |+4.V...loop.V..S|
00009110  54 52 20 52 30 2c 5b 52  31 5d 2c 23 34 0d 56 d6  |TR R0,[R1],#4.V.|
00009120  0d 43 4d 50 20 52 31 2c  52 32 0d 56 e0 0c 42 4e  |.CMP R1,R2.V..BN|
00009130  45 20 6c 6f 6f 70 0d 56  ea 0e 4d 4f 56 20 50 43  |E loop.V..MOV PC|
00009140  2c 52 31 34 0d 56 f4 05  5d 0d 56 fe 0a d6 63 6c  |,R14.V..].V...cl|
00009150  65 61 72 0d 57 08 05 e1  0d 57 1c 0d dd f2 6f 73  |ear.W....W....os|
00009160  62 79 74 65 32 0d 57 26  08 f2 72 74 73 0d 57 30  |byte2.W&..rts.W0|
00009170  05 e1 0d 57 44 0d dd f2  6f 73 77 6f 72 64 32 0d  |...WD...osword2.|
00009180  57 4e 34 ea 61 64 64 72  2c 73 65 63 25 2c 6c 65  |WN4.addr,sec%,le|
00009190  6e 25 2c 62 75 66 66 25  2c 74 72 61 63 6b 25 2c  |n%,buff%,track%,|
000091a0  6c 6f 67 5f 73 65 63 5f  73 69 7a 65 2c 64 72 69  |log_sec_size,dri|
000091b0  76 65 25 0d 57 58 13 61  64 64 72 3d 6d 65 6d 6f  |ve%.WX.addr=memo|
000091c0  72 79 3f 26 46 30 0d 57  62 17 61 64 64 72 2b 3d  |ry?&F0.Wb.addr+=|
000091d0  6d 65 6d 6f 72 79 3f 26  46 31 3c 3c 38 0d 57 6c  |memory?&F1<<8.Wl|
000091e0  10 61 64 64 72 2b 3d 6d  65 6d 6f 72 79 0d 57 76  |.addr+=memory.Wv|
000091f0  11 c8 8e 6d 65 6d 6f 72  79 3f 26 45 46 ca 0d 57  |...memory?&EF..W|
00009200  80 08 c9 26 37 46 0d 57  8a 10 e7 64 66 73 73 75  |...&7F.W...dfssu|
00009210  70 70 6f 72 74 8c 0d 57  94 38 c8 99 22 58 49 6d  |pport..W.8.."XIm|
00009220  61 67 65 44 46 53 5f 4f  53 57 4f 52 44 37 46 22  |ageDFS_OSWORD7F"|
00009230  2c 2c 6d 65 6d 6f 72 79  3f 26 46 30 2c 6d 65 6d  |,,memory?&F0,mem|
00009240  6f 72 79 3f 26 46 31 2c  6d 65 6d 6f 72 79 0d 57  |ory?&F1,memory.W|
00009250  9e 09 61 3f 33 3d 30 0d  57 a8 05 cc 0d 57 b2 11  |..a?3=0.W....W..|
00009260  64 72 69 76 65 25 3d 61  64 64 72 3f 30 0d 57 bc  |drive%=addr?0.W.|
00009270  1f 62 75 66 66 25 3d 6d  65 6d 6f 72 79 2b 28 61  |.buff%=memory+(a|
00009280  64 64 72 21 31 80 26 46  46 46 46 29 0d 57 c6 11  |ddr!1.&FFFF).W..|
00009290  74 72 61 63 6b 25 3d 61  64 64 72 3f 37 0d 57 d0  |track%=addr?7.W.|
000092a0  0f 73 65 63 25 3d 61 64  64 72 3f 38 0d 57 da 18  |.sec%=addr?8.W..|
000092b0  6c 65 6e 25 3d 28 61 64  64 72 3f 39 29 80 25 31  |len%=(addr?9).%1|
000092c0  31 31 31 31 0d 57 e4 20  6c 6f 67 5f 73 65 63 5f  |1111.W. log_sec_|
000092d0  73 69 7a 65 3d 28 28 61  64 64 72 3f 39 29 3e 3e  |size=((addr?9)>>|
000092e0  35 29 2b 37 0d 57 ee 19  62 75 66 66 65 72 3f 30  |5)+7.W..buffer?0|
000092f0  3d 6c 6f 67 5f 73 65 63  5f 73 69 7a 65 0d 57 f8  |=log_sec_size.W.|
00009300  0f 62 75 66 66 65 72 3f  31 3d 31 30 0d 58 02 0e  |.buffer?1=10.X..|
00009310  62 75 66 66 65 72 3f 32  3d 31 0d 58 0c 0e 62 75  |buffer?2=1.X..bu|
00009320  66 66 65 72 3f 33 3d 31  0d 58 16 0e 62 75 66 66  |ffer?3=1.X..buff|
00009330  65 72 21 34 3d 30 0d 58  20 0e 62 75 66 66 65 72  |er!4=0.X .buffer|
00009340  21 38 3d 30 0d 58 2a 13  62 75 66 66 65 72 21 31  |!8=0.X*.buffer!1|
00009350  32 3d 31 3c 3c 32 39 0d  58 34 14 62 75 66 66 65  |2=1<<29.X4.buffe|
00009360  72 21 31 36 3d 26 36 34  30 30 30 0d 58 3e 0f 62  |r!16=&64000.X>.b|
00009370  75 66 66 65 72 21 32 30  3d 30 0d 58 48 0f 62 75  |uffer!20=0.XH.bu|
00009380  66 66 65 72 21 32 34 3d  30 0d 58 52 0f 62 75 66  |ffer!24=0.XR.buf|
00009390  66 65 72 21 32 38 3d 30  0d 58 5c 78 c8 99 22 58  |fer!28=0.X\x.."X|
000093a0  41 44 46 53 5f 44 69 73  63 4f 70 22 2c 2c 31 2b  |ADFS_DiscOp",,1+|
000093b0  28 62 75 66 66 65 72 3c  3c 36 29 2c 28 74 72 61  |(buffer<<6),(tra|
000093c0  63 6b 25 2a 31 30 2b 73  65 63 25 29 2a 32 5e 6c  |ck%*10+sec%)*2^l|
000093d0  6f 67 5f 73 65 63 5f 73  69 7a 65 2b 28 6f 73 77  |og_sec_size+(osw|
000093e0  6f 72 64 37 46 5f 64 72  69 76 65 25 3c 3c 32 39  |ord7F_drive%<<29|
000093f0  29 2c 62 75 66 66 25 2c  6c 65 6e 25 2a 32 5e 6c  |),buff%,len%*2^l|
00009400  6f 67 5f 73 65 63 5f 73  69 7a 65 b8 41 25 3b 46  |og_sec_size.A%;F|
00009410  0d 58 66 22 e7 28 46 80  20 31 29 3d 30 8c 61 64  |.Xf".(F. 1)=0.ad|
00009420  64 72 3f 31 30 3d 30 8b  61 64 64 72 3f 31 30 3d  |dr?10=0.addr?10=|
00009430  41 25 0d 58 7a 09 61 3f  33 3d 30 0d 58 8e 05 cd  |A%.Xz.a?3=0.X...|
00009440  0d 58 a2 08 c9 26 37 32  0d 58 b6 0e e7 61 64 64  |.X...&72.X...add|
00009450  72 3f 35 3d 38 8c 0d 58  c0 0f 73 65 63 25 3d 61  |r?5=8..X..sec%=a|
00009460  64 64 72 3f 38 0d 58 ca  13 73 65 63 25 2b 3d 61  |ddr?8.X..sec%+=a|
00009470  64 64 72 3f 37 3c 3c 38  0d 58 d4 1d 73 65 63 25  |ddr?7<<8.X..sec%|
00009480  2b 3d 28 61 64 64 72 3f  36 80 25 31 31 31 31 31  |+=(addr?6.%11111|
00009490  29 3c 3c 31 36 0d 58 de  0f 6c 65 6e 25 3d 61 64  |)<<16.X..len%=ad|
000094a0  64 72 3f 39 0d 58 e8 1f  62 75 66 66 25 3d 6d 65  |dr?9.X..buff%=me|
000094b0  6d 6f 72 79 2b 28 61 64  64 72 21 31 80 26 46 46  |mory+(addr!1.&FF|
000094c0  46 46 29 0d 58 fc 4a c8  99 22 58 41 44 46 53 5f  |FF).X.J.."XADFS_|
000094d0  44 69 73 63 4f 70 22 2c  2c 31 2c 73 65 63 25 2a  |DiscOp",,1,sec%*|
000094e0  32 35 36 2b 28 6f 73 77  6f 72 64 37 32 5f 64 72  |256+(osword72_dr|
000094f0  69 76 65 25 3c 3c 32 39  29 2c 62 75 66 66 25 2c  |ive%<<29),buff%,|
00009500  6c 65 6e 25 2a 32 35 36  b8 41 25 3b 46 0d 59 06  |len%*256.A%;F.Y.|
00009510  1e e7 28 46 80 20 31 29  3d 30 8c 3f 61 64 64 72  |..(F. 1)=0.?addr|
00009520  3d 30 8b 3f 61 64 64 72  3d 41 25 0d 59 2e 09 61  |=0.?addr=A%.Y..a|
00009530  3f 33 3d 30 0d 59 38 05  cd 0d 59 42 05 7f 0d 59  |?3=0.Y8...YB...Y|
00009540  4c 05 cb 0d 59 60 08 f2  72 74 73 0d 59 7e 05 e1  |L...Y`..rts.Y~..|
00009550  0d 59 92 14 dd f2 73 70  6c 69 74 28 f8 41 24 2c  |.Y....split(.A$,|
00009560  f8 42 24 29 0d 59 9c 07  ea 49 25 0d 59 a6 10 c8  |.B$).Y...I%.Y...|
00009570  95 c0 41 24 2c 31 29 3d  22 20 22 0d 59 b0 11 41  |..A$,1)=" ".Y..A|
00009580  24 3d c2 41 24 2c a9 41  24 2d 31 29 0d 59 ba 05  |$=.A$,.A$-1).Y..|
00009590  ce 0d 59 c4 0d e3 49 25  3d 32 b8 a9 41 24 0d 59  |..Y...I%=2..A$.Y|
000095a0  ce 38 e7 c1 41 24 2c 49  25 2c 31 29 3d 22 2b 22  |.8..A$,I%,1)="+"|
000095b0  8c 41 24 3d c0 41 24 2c  49 25 2d 31 29 2b 22 20  |.A$=.A$,I%-1)+" |
000095c0  22 2b c2 41 24 2c 31 2b  a9 41 24 2d 49 25 29 3a  |"+.A$,1+.A$-I%):|
000095d0  49 25 3d 32 35 35 0d 59  d8 05 ed 0d 59 e2 0f 49  |I%=255.Y....Y..I|
000095e0  25 3d a7 41 24 2c 22 20  22 29 0d 59 f6 10 42 24  |%=.A$," ").Y..B$|
000095f0  3d c0 41 24 2c 49 25 2d  31 29 0d 5a 00 12 41 24  |=.A$,I%-1).Z..A$|
00009600  3d c2 41 24 2c a9 41 24  2d 49 25 29 0d 5a 0a 05  |=.A$,.A$-I%).Z..|
00009610  e1 0d 5a 1e 15 dd f2 73  70 6c 69 74 32 28 f8 41  |..Z....split2(.A|
00009620  24 2c f8 42 24 29 0d 5a  28 07 ea 49 25 0d 5a 32  |$,.B$).Z(..I%.Z2|
00009630  10 c8 95 c0 41 24 2c 31  29 3d 22 20 22 0d 5a 3c  |....A$,1)=" ".Z<|
00009640  11 41 24 3d c2 41 24 2c  a9 41 24 2d 31 29 0d 5a  |.A$=.A$,.A$-1).Z|
00009650  46 05 ce 0d 5a 50 0f 49  25 3d a7 41 24 2c 22 20  |F...ZP.I%=.A$," |
00009660  22 29 0d 5a 5a 10 42 24  3d c0 41 24 2c 49 25 2d  |").ZZ.B$=.A$,I%-|
00009670  31 29 0d 5a 64 12 41 24  3d c2 41 24 2c a9 41 24  |1).Zd.A$=.A$,.A$|
00009680  2d 49 25 29 0d 5a 6e 05  e1 0d 5a 82 0d dd f2 73  |-I%).Zn...Z....s|
00009690  72 77 72 69 74 65 0d 5a  96 15 ea 41 24 2c 43 24  |rwrite.Z...A$,C$|
000096a0  2c 61 64 64 72 2c 49 25  2c 4a 25 0d 5a a0 13 61  |,addr,I%,J%.Z..a|
000096b0  64 64 72 3d 6d 65 6d 6f  72 79 3f 26 46 32 0d 5a  |ddr=memory?&F2.Z|
000096c0  aa 19 61 64 64 72 2b 3d  28 6d 65 6d 6f 72 79 3f  |..addr+=(memory?|
000096d0  26 46 33 29 3c 3c 38 0d  5a b4 10 61 64 64 72 2b  |&F3)<<8.Z..addr+|
000096e0  3d 6d 65 6d 6f 72 79 0d  5a be 0d 61 64 64 72 2b  |=memory.Z..addr+|
000096f0  3d 79 3f 33 0d 5a c8 0c  43 24 3d 24 61 64 64 72  |=y?3.Z..C$=$addr|
00009700  0d 5a dc 11 f2 73 70 6c  69 74 28 43 24 2c 41 24  |.Z...split(C$,A$|
00009710  29 0d 5a f0 22 e7 a9 41  24 3e 34 8c f2 62 72 6b  |).Z."..A$>4..brk|
00009720  28 30 2c 22 42 61 64 20  41 64 64 72 65 73 73 22  |(0,"Bad Address"|
00009730  29 3a e1 0d 5a fa 0d e3  49 25 3d 31 b8 a9 41 24  |):..Z...I%=1..A$|
00009740  0d 5b 04 11 4a 25 3d 97  c1 41 24 2c 49 25 2c 31  |.[..J%=..A$,I%,1|
00009750  29 0d 5b 0e 38 e7 28 4a  25 3c 34 38 84 4a 25 3e  |).[.8.(J%<48.J%>|
00009760  35 37 29 80 28 4a 25 3c  36 35 84 4a 25 3e 37 30  |57).(J%<65.J%>70|
00009770  29 8c f2 62 72 6b 28 30  2c 22 42 61 64 20 41 64  |)..brk(0,"Bad Ad|
00009780  64 72 65 73 73 22 29 3a  e1 0d 5b 18 05 ed 0d 5b  |dress"):..[....[|
00009790  2c 14 73 74 61 72 74 25  3d a0 28 22 26 22 2b 41  |,.start%=.("&"+A|
000097a0  24 29 0d 5b 40 29 e7 73  74 61 72 74 25 3e 26 38  |$).[@).start%>&8|
000097b0  30 30 30 8c f2 62 72 6b  28 30 2c 22 42 61 64 20  |000..brk(0,"Bad |
000097c0  41 64 64 72 65 73 73 22  29 3a e1 0d 5b 54 11 f2  |Address"):..[T..|
000097d0  73 70 6c 69 74 28 43 24  2c 41 24 29 0d 5b 68 30  |split(C$,A$).[h0|
000097e0  e7 c0 41 24 2c 31 29 3d  22 2b 22 8c 65 6e 64 25  |..A$,1)="+".end%|
000097f0  3d 73 74 61 72 74 25 3a  41 24 3d c2 41 24 2c a9  |=start%:A$=.A$,.|
00009800  41 24 2d 31 29 8b 65 6e  64 25 3d 30 0d 5b 7c 22  |A$-1).end%=0.[|"|
00009810  e7 a9 41 24 3e 34 8c f2  62 72 6b 28 30 2c 22 42  |..A$>4..brk(0,"B|
00009820  61 64 20 41 64 64 72 65  73 73 22 29 3a e1 0d 5b  |ad Address"):..[|
00009830  86 0d e3 49 25 3d 31 b8  a9 41 24 0d 5b 90 11 4a  |...I%=1..A$.[..J|
00009840  25 3d 97 c1 41 24 2c 49  25 2c 31 29 0d 5b 9a 38  |%=..A$,I%,1).[.8|
00009850  e7 28 4a 25 3c 34 38 84  4a 25 3e 35 37 29 80 28  |.(J%<48.J%>57).(|
00009860  4a 25 3c 36 35 84 4a 25  3e 37 30 29 8c f2 62 72  |J%<65.J%>70)..br|
00009870  6b 28 30 2c 22 42 61 64  20 41 64 64 72 65 73 73  |k(0,"Bad Address|
00009880  22 29 3a e1 0d 5b a4 05  ed 0d 5b b8 13 65 6e 64  |"):..[....[..end|
00009890  25 2b 3d a0 28 22 26 22  2b 41 24 29 0d 5b cc 33  |%+=.("&"+A$).[.3|
000098a0  e7 65 6e 64 25 3c 73 74  61 72 74 25 84 65 6e 64  |.end%<start%.end|
000098b0  25 3e 26 38 30 30 30 8c  f2 62 72 6b 28 30 2c 22  |%>&8000..brk(0,"|
000098c0  42 61 64 20 41 64 64 72  65 73 73 22 29 3a e1 0d  |Bad Address"):..|
000098d0  5b e0 11 f2 73 70 6c 69  74 28 43 24 2c 41 24 29  |[...split(C$,A$)|
000098e0  0d 5b f4 23 e7 a9 41 24  3c 3e 34 8c f2 62 72 6b  |.[.#..A$<>4..brk|
000098f0  28 30 2c 22 42 61 64 20  41 64 64 72 65 73 73 22  |(0,"Bad Address"|
00009900  29 3a e1 0d 5b fe 0d e3  49 25 3d 31 b8 a9 41 24  |):..[...I%=1..A$|
00009910  0d 5c 08 11 4a 25 3d 97  c1 41 24 2c 49 25 2c 31  |.\..J%=..A$,I%,1|
00009920  29 0d 5c 12 38 e7 28 4a  25 3c 34 38 84 4a 25 3e  |).\.8.(J%<48.J%>|
00009930  35 37 29 80 28 4a 25 3c  36 35 84 4a 25 3e 37 30  |57).(J%<65.J%>70|
00009940  29 8c f2 62 72 6b 28 30  2c 22 42 61 64 20 41 64  |)..brk(0,"Bad Ad|
00009950  64 72 65 73 73 22 29 3a  e1 0d 5c 1c 05 ed 0d 5c  |dress"):..\....\|
00009960  30 13 64 65 73 74 25 3d  a0 28 22 26 22 2b 41 24  |0.dest%=.("&"+A$|
00009970  29 0d 5c 44 34 e7 64 65  73 74 25 3c 26 38 30 30  |).\D4.dest%<&800|
00009980  30 84 64 65 73 74 25 3e  26 42 46 46 46 8c f2 62  |0.dest%>&BFFF..b|
00009990  72 6b 28 30 2c 22 42 61  64 20 41 64 64 72 65 73  |rk(0,"Bad Addres|
000099a0  73 22 29 3a e1 0d 5c 58  11 f2 73 70 6c 69 74 28  |s"):..\X..split(|
000099b0  43 24 2c 41 24 29 0d 5c  62 0a c8 8e a9 41 24 ca  |C$,A$).\b....A$.|
000099c0  0d 5c 6c 06 c9 31 0d 5c  76 0a 41 25 3d 97 41 24  |.\l..1.\v.A%=.A$|
000099d0  0d 5c 80 27 e7 41 25 3e  3d 97 22 57 22 80 20 41  |.\.'.A%>=."W". A|
000099e0  25 3c 3d 97 22 5a 22 8c  41 25 3d 41 25 2d 97 22  |%<=."Z".A%=A%-."|
000099f0  57 22 2b 97 22 34 22 0d  5c 8a 17 e7 41 25 3e 36  |W"+."4".\...A%>6|
00009a00  34 80 20 41 25 3c 37 31  8c 41 25 2d 3d 37 0d 5c  |4. A%<71.A%-=7.\|
00009a10  94 11 73 6f 63 6b 65 74  25 3d 41 25 2d 34 38 0d  |..socket%=A%-48.|
00009a20  5c 9e 30 e7 73 6f 63 6b  65 74 25 3e 31 35 84 73  |\.0.socket%>15.s|
00009a30  6f 63 6b 65 74 25 3c 30  8c f2 62 72 6b 28 30 2c  |ocket%<0..brk(0,|
00009a40  22 42 61 64 20 53 6f 63  6b 65 74 22 29 3a e1 0d  |"Bad Socket"):..|
00009a50  5c a8 06 c9 32 0d 5c b2  47 e7 c0 41 24 2c 31 29  |\...2.\.G..A$,1)|
00009a60  3c 22 30 22 84 c0 41 24  2c 31 29 3e 22 39 22 84  |<"0"..A$,1)>"9".|
00009a70  c2 41 24 2c 31 29 3c 22  30 22 84 c2 41 24 2c 31  |.A$,1)<"0"..A$,1|
00009a80  29 3e 22 39 22 8c f2 62  72 6b 28 30 2c 22 42 61  |)>"9"..brk(0,"Ba|
00009a90  64 20 53 6f 63 6b 65 74  22 29 3a e1 0d 5c bc 0f  |d Socket"):..\..|
00009aa0  73 6f 63 6b 65 74 25 3d  bb 41 24 0d 5c c6 30 e7  |socket%=.A$.\.0.|
00009ab0  73 6f 63 6b 65 74 25 3e  31 35 84 73 6f 63 6b 65  |socket%>15.socke|
00009ac0  74 25 3c 30 8c f2 62 72  6b 28 30 2c 22 42 61 64  |t%<0..brk(0,"Bad|
00009ad0  20 53 6f 63 6b 65 74 22  29 3a e1 0d 5c d0 05 7f  | Socket"):..\...|
00009ae0  0d 5c da 1a f2 62 72 6b  28 30 2c 22 42 61 64 20  |.\...brk(0,"Bad |
00009af0  53 6f 63 6b 65 74 22 29  3a e1 0d 5c e4 05 cb 0d  |Socket"):..\....|
00009b00  5d 0c 29 e3 49 25 3d 30  b8 a4 6d 69 6e 28 65 6e  |].).I%=0..min(en|
00009b10  64 25 2d 73 74 61 72 74  25 2c 26 42 46 46 46 2d  |d%-start%,&BFFF-|
00009b20  64 65 73 74 25 29 88 34  0d 5d 16 3e 21 28 72 6f  |dest%).4.].>!(ro|
00009b30  6d 73 2b 72 6f 6d 73 69  7a 65 25 2a 73 6f 63 6b  |ms+romsize%*sock|
00009b40  65 74 25 2b 49 25 2b 64  65 73 74 25 2d 26 38 30  |et%+I%+dest%-&80|
00009b50  30 30 29 3d 73 74 61 72  74 25 21 28 6d 65 6d 6f  |00)=start%!(memo|
00009b60  72 79 2b 49 25 29 0d 5d  20 05 ed 0d 5d 34 14 52  |ry+I%).] ...]4.R|
00009b70  4f 4d 52 41 4d 3f 73 6f  63 6b 65 74 25 3d 30 0d  |OMRAM?socket%=0.|
00009b80  5d 48 09 61 3f 33 3d 30  0d 5d 52 08 f2 72 74 73  |]H.a?3=0.]R..rts|
00009b90  0d 5d 66 05 e1 0d 5d 7a  0b dd f2 64 72 69 76 65  |.]f...]z...drive|
00009ba0  0d 5d 84 16 ea 41 24 2c  43 24 2c 61 64 64 72 2c  |.]...A$,C$,addr,|
00009bb0  64 72 69 76 65 25 0d 5d  8e 13 61 64 64 72 3d 6d  |drive%.]..addr=m|
00009bc0  65 6d 6f 72 79 3f 26 46  32 0d 5d 98 19 61 64 64  |emory?&F2.]..add|
00009bd0  72 2b 3d 28 6d 65 6d 6f  72 79 3f 26 46 33 29 3c  |r+=(memory?&F3)<|
00009be0  3c 38 0d 5d a2 10 61 64  64 72 2b 3d 6d 65 6d 6f  |<8.]..addr+=memo|
00009bf0  72 79 0d 5d ac 0d 61 64  64 72 2b 3d 79 3f 33 0d  |ry.]..addr+=y?3.|
00009c00  5d b6 0c 43 24 3d 24 61  64 64 72 0d 5d ca 14 f2  |]..C$=$addr.]...|
00009c10  73 70 6c 69 74 28 43 24  2c 66 69 6c 65 24 29 0d  |split(C$,file$).|
00009c20  5d de 11 f2 73 70 6c 69  74 28 43 24 2c 41 24 29  |]...split(C$,A$)|
00009c30  0d 5d f2 09 c8 8e 41 24  ca 0d 5d fc 0c c9 22 30  |.]....A$..]..."0|
00009c40  22 2c 22 31 22 0d 5e 06  10 e7 64 66 73 73 75 70  |","1".^...dfssup|
00009c50  70 6f 72 74 8c 0d 5e 10  2d c8 99 22 58 49 6d 61  |port..^.-.."XIma|
00009c60  67 65 44 46 53 5f 42 42  43 54 6f 52 69 73 63 4f  |geDFS_BBCToRiscO|
00009c70  53 44 72 69 76 65 22 2c  bb 41 24 b8 64 72 69 76  |SDrive",.A$.driv|
00009c80  65 25 0d 5e 24 0f 66 73  24 3d 22 41 44 46 53 3a  |e%.^$.fs$="ADFS:|
00009c90  22 0d 5e 2e 19 64 69 73  63 24 3d 22 3a 22 2b c3  |".^..disc$=":"+.|
00009ca0  64 72 69 76 65 25 2b 22  2e 22 0d 5e 38 0d 70 61  |drive%+".".^8.pa|
00009cb0  74 68 24 3d 22 24 22 0d  5e 42 0f 73 75 62 70 61  |th$="$".^B.subpa|
00009cc0  74 68 24 3d 22 22 0d 5e  4c 05 cd 0d 5e 56 0c c9  |th$="".^L...^V..|
00009cd0  22 32 22 2c 22 33 22 0d  5e 60 10 e7 64 66 73 73  |"2","3".^`..dfss|
00009ce0  75 70 70 6f 72 74 8c 0d  5e 6a 2d c8 99 22 58 49  |upport..^j-.."XI|
00009cf0  6d 61 67 65 44 46 53 5f  42 42 43 54 6f 52 69 73  |mageDFS_BBCToRis|
00009d00  63 4f 53 44 72 69 76 65  22 2c bb 41 24 b8 64 72  |cOSDrive",.A$.dr|
00009d10  69 76 65 25 0d 5e 74 0f  66 73 24 3d 22 41 44 46  |ive%.^t.fs$="ADF|
00009d20  53 3a 22 0d 5e 7e 19 64  69 73 63 24 3d 22 3a 22  |S:".^~.disc$=":"|
00009d30  2b c3 64 72 69 76 65 25  2b 22 2e 22 0d 5e 88 16  |+.drive%+".".^..|
00009d40  70 61 74 68 24 3d 22 24  2e 44 46 53 53 69 64 65  |path$="$.DFSSide|
00009d50  32 22 0d 5e 92 0f 73 75  62 70 61 74 68 24 3d 22  |2".^..subpath$="|
00009d60  22 0d 5e 9c 05 cd 0d 5e  a6 0c c9 22 52 22 2c 22  |".^....^..."R","|
00009d70  72 22 0d 5e b0 0c f2 72  65 61 64 43 53 44 0d 5e  |r".^...readCSD.^|
00009d80  ba 05 7f 0d 5e c4 19 f2  62 72 6b 28 30 2c 22 42  |....^...brk(0,"B|
00009d90  61 64 20 44 72 69 76 65  22 29 3a e1 0d 5e ce 05  |ad Drive"):..^..|
00009da0  cb 0d 5e e2 09 61 3f 33  3d 30 0d 5e ec 08 f2 72  |..^..a?3=0.^...r|
00009db0  74 73 0d 5e f6 05 e1 0d  5f 0a 0c dd f2 73 72 6c  |ts.^...._....srl|
00009dc0  6f 61 64 0d 5f 14 15 ea  41 24 2c 43 24 2c 61 64  |oad._...A$,C$,ad|
00009dd0  64 72 2c 49 25 2c 4a 25  0d 5f 1e 13 61 64 64 72  |dr,I%,J%._..addr|
00009de0  3d 6d 65 6d 6f 72 79 3f  26 46 32 0d 5f 28 19 61  |=memory?&F2._(.a|
00009df0  64 64 72 2b 3d 28 6d 65  6d 6f 72 79 3f 26 46 33  |ddr+=(memory?&F3|
00009e00  29 3c 3c 38 0d 5f 32 10  61 64 64 72 2b 3d 6d 65  |)<<8._2.addr+=me|
00009e10  6d 6f 72 79 0d 5f 3c 0d  61 64 64 72 2b 3d 79 3f  |mory._<.addr+=y?|
00009e20  33 0d 5f 46 0c 43 24 3d  24 61 64 64 72 0d 5f 5a  |3._F.C$=$addr._Z|
00009e30  15 f2 73 70 6c 69 74 32  28 43 24 2c 66 69 6c 65  |..split2(C$,file|
00009e40  24 29 0d 5f 6e 11 f2 73  70 6c 69 74 28 43 24 2c  |$)._n..split(C$,|
00009e50  41 24 29 0d 5f 78 23 e7  a9 41 24 3c 3e 34 8c f2  |A$)._x#..A$<>4..|
00009e60  62 72 6b 28 30 2c 22 42  61 64 20 41 64 64 72 65  |brk(0,"Bad Addre|
00009e70  73 73 22 29 3a e1 0d 5f  82 0d e3 49 25 3d 31 b8  |ss"):.._...I%=1.|
00009e80  a9 41 24 0d 5f 8c 11 4a  25 3d 97 c1 41 24 2c 49  |.A$._..J%=..A$,I|
00009e90  25 2c 31 29 0d 5f 96 38  e7 28 4a 25 3c 34 38 84  |%,1)._.8.(J%<48.|
00009ea0  4a 25 3e 35 37 29 80 28  4a 25 3c 36 35 84 4a 25  |J%>57).(J%<65.J%|
00009eb0  3e 37 30 29 8c f2 62 72  6b 28 30 2c 22 42 61 64  |>70)..brk(0,"Bad|
00009ec0  20 41 64 64 72 65 73 73  22 29 3a e1 0d 5f a0 05  | Address"):.._..|
00009ed0  ed 0d 5f b4 13 6c 6f 61  64 25 3d a0 28 22 26 22  |.._..load%=.("&"|
00009ee0  2b 41 24 29 0d 5f be 34  e7 6c 6f 61 64 25 3c 26  |+A$)._.4.load%<&|
00009ef0  38 30 30 30 84 6c 6f 61  64 25 3e 26 42 46 46 46  |8000.load%>&BFFF|
00009f00  8c f2 62 72 6b 28 30 2c  22 42 61 64 20 41 64 64  |..brk(0,"Bad Add|
00009f10  72 65 73 73 22 29 3a e1  0d 5f c8 11 f2 73 70 6c  |ress"):.._...spl|
00009f20  69 74 28 43 24 2c 41 24  29 0d 5f d2 1d e7 c2 41  |it(C$,A$)._....A|
00009f30  24 2c 31 29 3d 22 51 22  8c 41 24 3d c0 41 24 2c  |$,1)="Q".A$=.A$,|
00009f40  a9 41 24 2d 31 29 0d 5f  dc 0a c8 8e a9 41 24 ca  |.A$-1)._.....A$.|
00009f50  0d 5f e6 06 c9 31 0d 5f  f0 0a 41 25 3d 97 41 24  |._...1._..A%=.A$|
00009f60  0d 5f fa 27 e7 41 25 3e  3d 97 22 57 22 80 20 41  |._.'.A%>=."W". A|
00009f70  25 3c 3d 97 22 5a 22 8c  41 25 3d 41 25 2d 97 22  |%<=."Z".A%=A%-."|
00009f80  57 22 2b 97 22 34 22 0d  60 04 17 e7 41 25 3e 36  |W"+."4".`...A%>6|
00009f90  34 80 20 41 25 3c 37 31  8c 41 25 2d 3d 37 0d 60  |4. A%<71.A%-=7.`|
00009fa0  0e 11 73 6f 63 6b 65 74  25 3d 41 25 2d 34 38 0d  |..socket%=A%-48.|
00009fb0  60 18 30 e7 73 6f 63 6b  65 74 25 3e 31 35 84 73  |`.0.socket%>15.s|
00009fc0  6f 63 6b 65 74 25 3c 30  8c f2 62 72 6b 28 30 2c  |ocket%<0..brk(0,|
00009fd0  22 42 61 64 20 53 6f 63  6b 65 74 22 29 3a e1 0d  |"Bad Socket"):..|
00009fe0  60 22 06 c9 32 0d 60 2c  47 e7 c0 41 24 2c 31 29  |`"..2.`,G..A$,1)|
00009ff0  3c 22 30 22 84 c0 41 24  2c 31 29 3e 22 39 22 84  |<"0"..A$,1)>"9".|
0000a000  c2 41 24 2c 31 29 3c 22  30 22 84 c2 41 24 2c 31  |.A$,1)<"0"..A$,1|
0000a010  29 3e 22 39 22 8c f2 62  72 6b 28 30 2c 22 42 61  |)>"9"..brk(0,"Ba|
0000a020  64 20 53 6f 63 6b 65 74  22 29 3a e1 0d 60 36 0f  |d Socket"):..`6.|
0000a030  73 6f 63 6b 65 74 25 3d  bb 41 24 0d 60 40 30 e7  |socket%=.A$.`@0.|
0000a040  73 6f 63 6b 65 74 25 3e  31 35 84 73 6f 63 6b 65  |socket%>15.socke|
0000a050  74 25 3c 30 8c f2 62 72  6b 28 30 2c 22 42 61 64  |t%<0..brk(0,"Bad|
0000a060  20 53 6f 63 6b 65 74 22  29 3a e1 0d 60 4a 05 7f  | Socket"):..`J..|
0000a070  0d 60 54 1a f2 62 72 6b  28 30 2c 22 42 61 64 20  |.`T..brk(0,"Bad |
0000a080  53 6f 63 6b 65 74 22 29  3a e1 0d 60 5e 05 cb 0d  |Socket"):..`^...|
0000a090  60 72 3a c8 99 22 58 4f  53 5f 46 69 6e 64 22 2c  |`r:.."XOS_Find",|
0000a0a0  26 34 30 2b 25 31 31 30  31 2c a4 61 64 64 5f 28  |&40+%1101,.add_(|
0000a0b0  66 69 6c 65 24 29 2c a4  5f 70 61 74 68 28 66 69  |file$),._path(fi|
0000a0c0  6c 65 24 29 b8 41 25 3b  46 0d 60 7c 1b e7 28 46  |le$).A%;F.`|..(F|
0000a0d0  80 20 31 29 3c 3e 30 8c  f2 73 77 69 5f 65 72 72  |. 1)<>0..swi_err|
0000a0e0  6f 72 3a e1 0d 60 86 09  48 25 3d 41 25 0d 60 90  |or:..`..H%=A%.`.|
0000a0f0  48 c8 99 22 58 4f 53 5f  47 42 50 42 22 2c 34 2c  |H.."XOS_GBPB",4,|
0000a100  41 25 2c 6c 6f 61 64 25  2d 26 38 30 30 30 2b 72  |A%,load%-&8000+r|
0000a110  6f 6d 73 2b 72 6f 6d 73  69 7a 65 25 2a 73 6f 63  |oms+romsize%*soc|
0000a120  6b 65 74 25 2c 26 43 30  30 30 2d 6c 6f 61 64 25  |ket%,&C000-load%|
0000a130  b8 41 25 3b 46 0d 60 9a  1b e7 28 46 80 20 31 29  |.A%;F.`...(F. 1)|
0000a140  3c 3e 30 8c f2 73 77 69  5f 65 72 72 6f 72 3a e1  |<>0..swi_error:.|
0000a150  0d 60 a4 17 3f 28 52 4f  4d 52 41 4d 2b 73 6f 63  |.`..?(ROMRAM+soc|
0000a160  6b 65 74 25 29 3d 30 0d  60 ae 1a c8 99 22 58 4f  |ket%)=0.`...."XO|
0000a170  53 5f 46 69 6e 64 22 2c  30 2c 48 25 b8 41 25 3b  |S_Find",0,H%.A%;|
0000a180  46 0d 60 b8 1b e7 28 46  80 20 31 29 3c 3e 30 8c  |F.`...(F. 1)<>0.|
0000a190  f2 73 77 69 5f 65 72 72  6f 72 3a e1 0d 60 cc 09  |.swi_error:..`..|
0000a1a0  61 3f 33 3d 30 0d 60 d6  08 f2 72 74 73 0d 60 e0  |a?3=0.`...rts.`.|
0000a1b0  05 e1 0d 60 f4 11 dd f2  65 6c 6b 6b 65 79 73 28  |...`....elkkeys(|
0000a1c0  46 24 29 0d 61 08 0f ea  51 2c 53 24 2c 4b 25 2c  |F$).a...Q,S$,K%,|
0000a1d0  41 24 0d 61 1c 22 c8 99  22 36 35 30 32 5f 47 65  |A$.a.".."6502_Ge|
0000a1e0  74 45 6c 65 63 74 72 6f  6e 4d 61 70 22 b8 6b 65  |tElectronMap".ke|
0000a1f0  79 6d 61 70 0d 61 30 10  e3 49 25 3d 30 b8 31 30  |ymap.a0..I%=0.10|
0000a200  32 33 88 34 0d 61 3a 11  6b 65 79 6d 61 70 21 49  |23.4.a:.keymap!I|
0000a210  25 3d 26 46 46 0d 61 44  05 ed 0d 61 58 09 51 3d  |%=&FF.aD...aX.Q=|
0000a220  8e 46 24 0d 61 62 1b e7  51 3d 30 8c 85 30 2c 46  |.F$.ab..Q=0..0,F|
0000a230  24 2b 22 20 6e 6f 74 20  66 6f 75 6e 64 22 0d 61  |$+" not found".a|
0000a240  6c 05 f5 0d 61 76 0f 53  24 3d a4 67 65 74 77 6f  |l...av.S$=.getwo|
0000a250  72 64 0d 61 80 10 e7 c0  53 24 2c 31 29 3d 22 23  |rd.a....S$,1)="#|
0000a260  22 8c 0d 61 8a 0f f2 69  67 6e 6f 72 65 6c 69 6e  |"..a...ignorelin|
0000a270  65 0d 61 94 05 cc 0d 61  9e 0c e7 53 24 3c 3e 22  |e.a....a...S$<>"|
0000a280  22 8c 0d 61 a8 12 53 25  3d a4 67 65 74 65 6c 6b  |"..a..S%=.getelk|
0000a290  28 53 24 29 0d 61 b2 05  f5 0d 61 bc 0f 41 24 3d  |(S$).a....a..A$=|
0000a2a0  a4 67 65 74 77 6f 72 64  0d 61 c6 0c e7 41 24 3c  |.getword.a...A$<|
0000a2b0  3e 22 22 8c 0d 61 d0 12  4b 25 3d a4 67 65 74 61  |>""..a..K%=.geta|
0000a2c0  72 63 28 41 24 29 0d 61  da 14 6b 65 79 6d 61 70  |rc(A$).a..keymap|
0000a2d0  21 28 4b 25 2a 34 29 3d  53 25 0d 61 e4 05 cd 0d  |!(K%*4)=S%.a....|
0000a2e0  61 ee 0a fd 41 24 3d 22  22 0d 61 f8 05 cd 0d 62  |a...A$="".a....b|
0000a2f0  02 05 cd 0d 62 0c 0e fd  53 24 3d 22 22 84 c5 23  |....b...S$=""..#|
0000a300  51 0d 62 20 07 d9 23 51  0d 62 34 05 e1 0d 62 48  |Q.b ..#Q.b4...bH|
0000a310  12 dd f2 72 65 61 64 6b  65 79 73 28 46 24 29 0d  |...readkeys(F$).|
0000a320  62 5c 0f ea 51 2c 53 24  2c 4b 25 2c 41 24 0d 62  |b\..Q,S$,K%,A$.b|
0000a330  70 25 c8 99 22 36 35 30  32 5f 52 65 61 64 4b 65  |p%.."6502_ReadKe|
0000a340  79 4d 61 70 41 64 64 72  65 73 73 22 b8 6b 65 79  |yMapAddress".key|
0000a350  6d 61 70 0d 62 7a 0d e3  49 25 3d 30 b8 32 35 35  |map.bz..I%=0.255|
0000a360  0d 62 84 11 6b 65 79 6d  61 70 3f 49 25 3d 32 35  |.b..keymap?I%=25|
0000a370  35 0d 62 8e 05 ed 0d 62  a2 09 51 3d 8e 46 24 0d  |5.b....b..Q=.F$.|
0000a380  62 ac 1b e7 51 3d 30 8c  85 30 2c 46 24 2b 22 20  |b...Q=0..0,F$+" |
0000a390  6e 6f 74 20 66 6f 75 6e  64 22 0d 62 b6 05 f5 0d  |not found".b....|
0000a3a0  62 c0 0f 53 24 3d a4 67  65 74 77 6f 72 64 0d 62  |b..S$=.getword.b|
0000a3b0  ca 10 e7 c0 53 24 2c 31  29 3d 22 23 22 8c 0d 62  |....S$,1)="#"..b|
0000a3c0  d4 0f f2 69 67 6e 6f 72  65 6c 69 6e 65 0d 62 de  |...ignoreline.b.|
0000a3d0  05 cc 0d 62 e8 0c e7 53  24 3c 3e 22 22 8c 0d 62  |...b...S$<>""..b|
0000a3e0  f2 12 53 25 3d a4 67 65  74 62 62 63 28 53 24 29  |..S%=.getbbc(S$)|
0000a3f0  0d 62 fc 05 f5 0d 63 06  0f 41 24 3d a4 67 65 74  |.b....c..A$=.get|
0000a400  77 6f 72 64 0d 63 10 0c  e7 41 24 3c 3e 22 22 8c  |word.c...A$<>"".|
0000a410  0d 63 1a 12 4b 25 3d a4  67 65 74 61 72 63 28 41  |.c..K%=.getarc(A|
0000a420  24 29 0d 63 24 10 6b 65  79 6d 61 70 3f 4b 25 3d  |$).c$.keymap?K%=|
0000a430  53 25 0d 63 2e 05 cd 0d  63 38 0a fd 41 24 3d 22  |S%.c....c8..A$="|
0000a440  22 0d 63 42 05 cd 0d 63  4c 05 cd 0d 63 56 0e fd  |".cB...cL...cV..|
0000a450  53 24 3d 22 22 84 c5 23  51 0d 63 6a 07 d9 23 51  |S$=""..#Q.cj..#Q|
0000a460  0d 63 7e 05 e1 0d 63 92  0d dd a4 67 65 74 77 6f  |.c~...c....getwo|
0000a470  72 64 0d 63 9c 0a ea 49  25 2c 41 24 0d 63 a6 18  |rd.c...I%,A$.c..|
0000a480  f5 49 25 3d 9a 23 51 3a  fd 49 25 3e 33 32 84 49  |.I%=.#Q:.I%>32.I|
0000a490  25 3d 31 30 0d 63 b0 0e  e7 49 25 3d 31 30 8c 3d  |%=10.c...I%=10.=|
0000a4a0  22 22 0d 63 ba 0a 41 24  3d bd 49 25 0d 63 c4 1c  |"".c..A$=.I%.c..|
0000a4b0  f5 49 25 3d 9a 23 51 3a  41 24 3d 41 24 2b bd 49  |.I%=.#Q:A$=A$+.I|
0000a4c0  25 3a fd 49 25 3c 33 33  0d 63 ce 0d cf 23 51 3d  |%:.I%<33.c...#Q=|
0000a4d0  8f 23 51 2d 31 0d 63 d8  0f 3d c0 41 24 2c a9 41  |.#Q-1.c..=.A$,.A|
0000a4e0  24 2d 31 29 0d 63 ec 10  dd f2 69 67 6e 6f 72 65  |$-1).c....ignore|
0000a4f0  6c 69 6e 65 0d 63 f6 07  ea 49 25 0d 64 00 12 f5  |line.c...I%.d...|
0000a500  49 25 3d 9a 23 51 3a fd  49 25 3d 26 41 0d 64 0a  |I%=.#Q:.I%=&A.d.|
0000a510  05 e1 0d 64 1e 10 dd a4  67 65 74 65 6c 6b 28 41  |...d....getelk(A|
0000a520  24 29 0d 64 28 0d ea 49  25 2c 4a 25 2c 4b 25 0d  |$).d(..I%,J%,K%.|
0000a530  64 32 0b e3 49 25 3d 30  b8 33 0d 64 3c 0c e3 4a  |d2..I%=0.3.d<..J|
0000a540  25 3d 30 b8 31 33 0d 64  46 2d e7 45 6c 65 63 24  |%=0.13.dF-.Elec$|
0000a550  28 49 25 2c 4a 25 29 3d  41 24 8c 4b 25 3d 28 49  |(I%,J%)=A$.K%=(I|
0000a560  25 3c 3c 38 29 2b 4a 25  3a 49 25 3d 34 3a 4a 25  |%<<8)+J%:I%=4:J%|
0000a570  3d 31 34 0d 64 50 05 ed  0d 64 5a 05 ed 0d 64 64  |=14.dP...dZ...dd|
0000a580  07 3d 4b 25 0d 64 78 10  dd a4 67 65 74 62 62 63  |.=K%.dx...getbbc|
0000a590  28 41 24 29 0d 64 82 0a  ea 49 25 2c 4a 25 0d 64  |(A$).d...I%,J%.d|
0000a5a0  8c 0d e3 49 25 3d 30 b8  26 37 43 0d 64 96 1d e7  |...I%=0.&7C.d...|
0000a5b0  42 42 43 24 28 49 25 29  3d 41 24 8c 4a 25 3d 49  |BBC$(I%)=A$.J%=I|
0000a5c0  25 3a 49 25 3d 26 38 30  0d 64 a0 05 ed 0d 64 aa  |%:I%=&80.d....d.|
0000a5d0  07 3d 4a 25 0d 64 be 10  dd a4 67 65 74 61 72 63  |.=J%.d....getarc|
0000a5e0  28 41 24 29 0d 64 c8 0a  ea 49 25 2c 4a 25 0d 64  |(A$).d...I%,J%.d|
0000a5f0  d2 0e e3 49 25 3d 26 30  b8 26 37 38 0d 64 dc 1d  |...I%=&0.&78.d..|
0000a600  e7 41 52 43 24 28 49 25  29 3d 41 24 8c 4a 25 3d  |.ARC$(I%)=A$.J%=|
0000a610  49 25 3a 49 25 3d 26 36  38 0d 64 e6 05 ed 0d 64  |I%:I%=&68.d....d|
0000a620  f0 07 3d 4a 25 0d 65 0e  2d dc 20 45 73 63 61 70  |..=J%.e.-. Escap|
0000a630  65 2c 31 2c 32 2c 33 2c  34 2c 35 2c 36 2c 37 2c  |e,1,2,3,4,5,6,7,|
0000a640  38 2c 39 2c 30 2c 2d 2c  4c 65 66 74 2c 52 69 67  |8,9,0,-,Left,Rig|
0000a650  68 74 0d 65 18 2f dc 20  43 61 70 73 4c 6f 63 6b  |ht.e./. CapsLock|
0000a660  2c 51 2c 57 2c 45 2c 52  2c 54 2c 59 2c 55 2c 49  |,Q,W,E,R,T,Y,U,I|
0000a670  2c 4f 2c 50 2c 55 70 2c  44 6f 77 6e 2c 43 6f 70  |,O,P,Up,Down,Cop|
0000a680  79 0d 65 22 2a dc 20 43  74 72 6c 2c 41 2c 53 2c  |y.e"*. Ctrl,A,S,|
0000a690  44 2c 46 2c 47 2c 48 2c  4a 2c 4b 2c 4c 2c 3b 2c  |D,F,G,H,J,K,L,;,|
0000a6a0  3a 2c 52 65 74 75 72 6e  2c 22 22 0d 65 2c 31 dc  |:,Return,"".e,1.|
0000a6b0  20 53 68 69 66 74 2c 5a  2c 58 2c 43 2c 56 2c 42  | Shift,Z,X,C,V,B|
0000a6c0  2c 4e 2c 4d 2c 22 2c 22  2c 2e 2c 2f 2c 22 22 2c  |,N,M,",",.,/,"",|
0000a6d0  44 65 6c 65 74 65 2c 53  70 61 63 65 0d 65 4a 41  |Delete,Space.eJA|
0000a6e0  dc 20 53 68 69 66 74 2c  43 74 72 6c 2c 62 69 74  |. Shift,Ctrl,bit|
0000a6f0  37 2c 62 69 74 36 2c 62  69 74 35 2c 62 69 74 34  |7,bit6,bit5,bit4|
0000a700  2c 62 69 74 33 2c 62 69  74 32 2c 62 69 74 31 2c  |,bit3,bit2,bit1,|
0000a710  62 69 74 30 2c 22 22 2c  22 22 2c 22 22 0d 65 54  |bit0,"","","".eT|
0000a720  27 dc 20 51 2c 33 2c 34  2c 35 2c 66 34 2c 38 2c  |'. Q,3,4,5,f4,8,|
0000a730  66 37 2c 2d 2c 5e 2c 4c  65 66 74 2c 4b 36 2c 4b  |f7,-,^,Left,K6,K|
0000a740  37 2c 22 22 0d 65 5e 26  dc 20 66 30 2c 57 2c 45  |7,"".e^&. f0,W,E|
0000a750  2c 54 2c 37 2c 49 2c 39  2c 30 2c 5f 2c 44 6f 77  |,T,7,I,9,0,_,Dow|
0000a760  6e 2c 4b 38 2c 4b 39 2c  22 22 0d 65 68 28 dc 20  |n,K8,K9,"".eh(. |
0000a770  31 2c 32 2c 44 2c 52 2c  36 2c 55 2c 4f 2c 50 2c  |1,2,D,R,6,U,O,P,|
0000a780  5b 2c 55 70 2c 4b 2b 2c  4b 2d 2c 4b 52 65 74 75  |[,Up,K+,K-,KRetu|
0000a790  72 6e 0d 65 72 35 dc 20  43 61 70 73 4c 6f 63 6b  |rn.er5. CapsLock|
0000a7a0  2c 41 2c 58 2c 46 2c 59  2c 4a 2c 4b 2c 40 2c 3a  |,A,X,F,Y,J,K,@,:|
0000a7b0  2c 52 65 74 75 72 6e 2c  4b 2f 2c 4b 44 65 6c 65  |,Return,K/,KDele|
0000a7c0  74 65 2c 22 4b 2e 22 0d  65 7c 31 dc 20 53 68 69  |te,"K.".e|1. Shi|
0000a7d0  66 74 4c 6f 63 6b 2c 53  2c 43 2c 47 2c 48 2c 4e  |ftLock,S,C,G,H,N|
0000a7e0  2c 4c 2c 3b 2c 5d 2c 44  65 6c 65 74 65 2c 4b 23  |,L,;,],Delete,K#|
0000a7f0  2c 4b 2a 2c 22 4b 2c 22  0d 65 86 2f dc 20 54 61  |,K*,"K,".e./. Ta|
0000a800  62 2c 5a 2c 53 70 61 63  65 2c 56 2c 42 2c 4d 2c  |b,Z,Space,V,B,M,|
0000a810  22 2c 22 2c 22 2e 22 2c  2f 2c 43 6f 70 79 2c 4b  |",",".",/,Copy,K|
0000a820  30 2c 4b 31 2c 4b 33 0d  65 90 32 dc 20 45 73 63  |0,K1,K3.e.2. Esc|
0000a830  61 70 65 2c 66 31 2c 66  32 2c 66 33 2c 66 35 2c  |ape,f1,f2,f3,f5,|
0000a840  66 36 2c 66 38 2c 66 39  2c 5c 2c 52 69 67 68 74  |f6,f8,f9,\,Right|
0000a850  2c 4b 34 2c 4b 35 2c 4b  32 0d 65 ae 3e dc 20 45  |,K4,K5,K2.e.>. E|
0000a860  73 63 61 70 65 2c 66 31  2c 66 32 2c 66 33 2c 66  |scape,f1,f2,f3,f|
0000a870  34 2c 66 35 2c 66 36 2c  66 37 2c 66 38 2c 66 39  |4,f5,f6,f7,f8,f9|
0000a880  2c 66 31 30 2c 66 31 31  2c 22 22 2c 50 72 69 6e  |,f10,f11,"",Prin|
0000a890  74 2c 22 22 2c 22 22 0d  65 b8 b7 dc 20 60 2c 31  |t,"","".e... `,1|
0000a8a0  2c 32 2c 33 2c 34 2c 35  2c 36 2c 37 2c 38 2c 39  |,2,3,4,5,6,7,8,9|
0000a8b0  2c 30 2c 2d 2c 3d 2c a3  2c 3c 2d 7c 2c 49 6e 73  |,0,-,=,.,<-|,Ins|
0000a8c0  65 72 74 2c 48 6f 6d 65  2c 50 61 67 65 55 70 2c  |ert,Home,PageUp,|
0000a8d0  4e 75 6d 4c 6f 63 6b 2c  4b 2f 2c 4b 2a 2c 4b 23  |NumLock,K/,K*,K#|
0000a8e0  2c 54 61 62 2c 51 2c 57  2c 45 2c 52 2c 54 2c 59  |,Tab,Q,W,E,R,T,Y|
0000a8f0  2c 55 2c 49 2c 4f 2c 50  2c 5b 2c 5d 2c 5c 2c 44  |,U,I,O,P,[,],\,D|
0000a900  65 6c 65 74 65 2c 43 6f  70 79 2c 50 61 67 65 44  |elete,Copy,PageD|
0000a910  6f 77 6e 2c 4b 37 2c 4b  38 2c 4b 39 2c 4b 2d 2c  |own,K7,K8,K9,K-,|
0000a920  4c 43 74 72 6c 2c 41 2c  53 2c 44 2c 46 2c 47 2c  |LCtrl,A,S,D,F,G,|
0000a930  48 2c 4a 2c 4b 2c 4c 2c  3b 2c 27 2c 52 65 74 75  |H,J,K,L,;,',Retu|
0000a940  72 6e 2c 4b 34 2c 4b 35  2c 4b 36 2c 4b 2b 0d 65  |rn,K4,K5,K6,K+.e|
0000a950  c2 71 dc 20 4c 53 68 69  66 74 2c 2c 5a 2c 58 2c  |.q. LShift,,Z,X,|
0000a960  43 2c 56 2c 42 2c 4e 2c  4d 2c 22 2c 22 2c 2e 2c  |C,V,B,N,M,",",.,|
0000a970  2f 2c 52 53 68 69 66 74  2c 55 70 2c 4b 31 2c 4b  |/,RShift,Up,K1,K|
0000a980  32 2c 4b 33 2c 43 61 70  73 4c 6f 63 6b 2c 4c 41  |2,K3,CapsLock,LA|
0000a990  6c 74 2c 53 70 61 63 65  2c 52 41 6c 74 2c 52 43  |lt,Space,RAlt,RC|
0000a9a0  74 72 6c 2c 4c 65 66 74  2c 44 6f 77 6e 2c 52 69  |trl,Left,Down,Ri|
0000a9b0  67 68 74 2c 4b 30 2c 4b  2e 2c 45 6e 74 65 72 0d  |ght,K0,K.,Enter.|
0000a9c0  65 cc 35 dc 20 22 22 2c  22 22 2c 22 22 2c 22 22  |e.5. "","","",""|
0000a9d0  2c 22 22 2c 22 22 2c 22  22 2c 22 22 2c 22 22 2c  |,"","","","","",|
0000a9e0  22 22 2c 22 22 2c 22 22  2c 22 22 2c 22 22 2c 22  |"","","","","","|
0000a9f0  22 2c 22 22 0d 65 d6 1c  dc 20 23 20 3a 20 52 45  |","".e... # : RE|
0000aa00  4d 20 52 69 73 63 20 50  43 20 6b 65 79 20 23 7e  |M Risc PC key #~|
0000aa10  0d 65 ea 10 dd f2 72 65  61 64 6d 65 6d 6d 61 70  |.e....readmemmap|
0000aa20  0d 65 f4 1f e7 ac 75 73  65 4d 45 4d 43 25 8c 72  |.e....useMEMC%.r|
0000aa30  6f 6d 73 69 7a 65 25 3d  26 34 30 30 30 3a e1 0d  |omsize%=&4000:..|
0000aa40  65 fe 12 72 6f 6d 73 69  7a 65 25 3d 26 38 30 30  |e..romsize%=&800|
0000aa50  30 0d 66 08 16 de 4d 45  4d 43 28 31 35 29 2c 62  |0.f...MEMC(15),b|
0000aa60  75 66 66 20 32 35 36 0d  66 12 1f c8 99 22 4f 53  |uff 256.f...."OS|
0000aa70  5f 52 65 61 64 4d 65 6d  4d 61 70 49 6e 66 6f 22  |_ReadMemMapInfo"|
0000aa80  b8 53 25 2c 4e 25 0d 66  1c 12 e7 53 25 3c 3e 33  |.S%,N%.f...S%<>3|
0000aa90  32 2a 31 30 32 34 8c 85  0d 66 26 0c e3 49 25 3d  |2*1024...f&..I%=|
0000aaa0  30 b8 31 35 0d 66 30 0e  e3 4a 25 3d 30 b8 4e 25  |0.15.f0..J%=0.N%|
0000aab0  2d 31 0d 66 3a 0c 21 62  75 66 66 3d 4a 25 0d 66  |-1.f:.!buff=J%.f|
0000aac0  44 0c 62 75 66 66 21 34  3d 30 0d 66 4e 0c 62 75  |D.buff!4=0.fN.bu|
0000aad0  66 66 21 38 3d 30 0d 66  58 0e 62 75 66 66 21 31  |ff!8=0.fX.buff!1|
0000aae0  32 3d 2d 31 0d 66 62 21  c8 99 22 4f 53 5f 52 65  |2=-1.fb!.."OS_Re|
0000aaf0  61 64 4d 65 6d 4d 61 70  45 6e 74 72 69 65 73 22  |adMemMapEntries"|
0000ab00  2c 62 75 66 66 0d 66 6c  43 e7 62 75 66 66 21 34  |,buff.flC.buff!4|
0000ab10  3d 72 6f 6d 73 2b 33 32  2a 31 30 32 34 2a 49 25  |=roms+32*1024*I%|
0000ab20  8c 4d 45 4d 43 28 49 25  29 3d 4a 25 3a 3f 28 6d  |.MEMC(I%)=J%:?(m|
0000ab30  65 6d 6f 72 79 2d 26 38  30 30 30 2b 49 25 29 3d  |emory-&8000+I%)=|
0000ab40  4a 25 3a 4a 25 3d 4e 25  0d 66 76 05 ed 0d 66 80  |J%:J%=N%.fv...f.|
0000ab50  05 ed 0d 66 8a 05 e1 0d  66 9e 11 dd f2 73 65 74  |...f....f....set|
0000ab60  75 70 6d 65 6d 6d 61 70  0d 66 a8 10 e7 ac 75 73  |upmemmap.f....us|
0000ab70  65 4d 45 4d 43 25 8c e1  0d 66 b2 07 ea 49 25 0d  |eMEMC%...f...I%.|
0000ab80  66 bc 0c e3 49 25 3d 30  b8 31 35 0d 66 c6 12 21  |f...I%=0.15.f..!|
0000ab90  62 75 66 66 3d 4d 45 4d  43 28 49 25 29 0d 66 d0  |buff=MEMC(I%).f.|
0000aba0  18 62 75 66 66 21 34 3d  72 6f 6d 73 2b 26 38 30  |.buff!4=roms+&80|
0000abb0  30 30 2a 49 25 0d 66 da  0c 62 75 66 66 21 38 3d  |00*I%.f..buff!8=|
0000abc0  30 0d 66 e4 0e 62 75 66  66 21 31 32 3d 2d 31 0d  |0.f..buff!12=-1.|
0000abd0  66 ee 20 c8 99 22 4f 53  5f 53 65 74 4d 65 6d 4d  |f. .."OS_SetMemM|
0000abe0  61 70 45 6e 74 72 69 65  73 22 2c 62 75 66 66 0d  |apEntries",buff.|
0000abf0  66 f8 05 ed 0d 67 02 18  21 62 75 66 66 3d 4d 45  |f....g..!buff=ME|
0000ac00  4d 43 28 3f 72 6f 6d 80  20 31 35 29 0d 67 0c 17  |MC(?rom. 15).g..|
0000ac10  62 75 66 66 21 34 3d 6d  65 6d 6f 72 79 2b 26 38  |buff!4=memory+&8|
0000ac20  30 30 30 0d 67 16 0c 62  75 66 66 21 38 3d 30 0d  |000.g..buff!8=0.|
0000ac30  67 20 0e 62 75 66 66 21  31 32 3d 2d 31 0d 67 2a  |g .buff!12=-1.g*|
0000ac40  20 c8 99 22 4f 53 5f 53  65 74 4d 65 6d 4d 61 70  | .."OS_SetMemMap|
0000ac50  45 6e 74 72 69 65 73 22  2c 62 75 66 66 0d 67 34  |Entries",buff.g4|
0000ac60  11 21 62 75 66 66 3d 4d  45 4d 43 28 30 29 0d 67  |.!buff=MEMC(0).g|
0000ac70  3e 20 62 75 66 66 21 34  3d 72 6f 6d 73 2b 26 38  |> buff!4=roms+&8|
0000ac80  30 30 30 2a 28 3f 72 6f  6d 80 20 31 35 29 0d 67  |000*(?rom. 15).g|
0000ac90  48 0c 62 75 66 66 21 38  3d 30 0d 67 52 0e 62 75  |H.buff!8=0.gR.bu|
0000aca0  66 66 21 31 32 3d 2d 31  0d 67 5c 20 c8 99 22 4f  |ff!12=-1.g\ .."O|
0000acb0  53 5f 53 65 74 4d 65 6d  4d 61 70 45 6e 74 72 69  |S_SetMemMapEntri|
0000acc0  65 73 22 2c 62 75 66 66  0d 67 66 05 e1 0d 67 7a  |es",buff.gf...gz|
0000acd0  11 dd f2 72 65 73 65 74  6d 65 6d 6d 61 70 0d 67  |...resetmemmap.g|
0000ace0  84 10 e7 ac 75 73 65 4d  45 4d 43 25 8c e1 0d 67  |....useMEMC%...g|
0000acf0  8e 07 ea 49 25 0d 67 98  0c e3 49 25 3d 30 b8 31  |...I%.g...I%=0.1|
0000ad00  35 0d 67 a2 12 21 62 75  66 66 3d 4d 45 4d 43 28  |5.g..!buff=MEMC(|
0000ad10  49 25 29 0d 67 ac 18 62  75 66 66 21 34 3d 72 6f  |I%).g..buff!4=ro|
0000ad20  6d 73 2b 26 38 30 30 30  2a 49 25 0d 67 b6 0c 62  |ms+&8000*I%.g..b|
0000ad30  75 66 66 21 38 3d 30 0d  67 c0 0e 62 75 66 66 21  |uff!8=0.g..buff!|
0000ad40  31 32 3d 2d 31 0d 67 ca  20 c8 99 22 4f 53 5f 53  |12=-1.g. .."OS_S|
0000ad50  65 74 4d 65 6d 4d 61 70  45 6e 74 72 69 65 73 22  |etMemMapEntries"|
0000ad60  2c 62 75 66 66 0d 67 d4  05 ed 0d 67 de 05 e1 0d  |,buff.g....g....|
0000ad70  67 f2 0e dd a4 70 65 65  6b 28 41 25 29 0d 67 fc  |g....peek(A%).g.|
0000ad80  1b e7 ac 75 73 65 4d 45  4d 43 25 8c 3d 6d 65 6d  |...useMEMC%.=mem|
0000ad90  6f 72 79 3f 41 25 3a e1  0d 68 06 0e e7 41 25 3c  |ory?A%:..h...A%<|
0000ada0  26 38 30 30 30 8c 0d 68  10 0e 3d 6d 65 6d 6f 72  |&8000..h..=memor|
0000adb0  79 3f 41 25 0d 68 1a 05  cc 0d 68 24 15 3d 3f 28  |y?A%.h....h$.=?(|
0000adc0  72 6f 6d 73 2d 26 38 30  30 30 2b 41 25 29 0d 68  |roms-&8000+A%).h|
0000add0  2e 05 cd 0d 68 42 11 dd  f2 70 6f 6b 65 28 41 25  |....hB...poke(A%|
0000ade0  2c 56 25 29 0d 68 4c 1d  e7 ac 75 73 65 4d 45 4d  |,V%).hL...useMEM|
0000adf0  43 25 8c 6d 65 6d 6f 72  79 3f 41 25 3d 56 25 3a  |C%.memory?A%=V%:|
0000ae00  e1 0d 68 56 0c e3 49 25  3d 30 b8 31 35 0d 68 60  |..hV..I%=0.15.h`|
0000ae10  1b 6d 65 6d 6f 72 79 3f  28 41 25 2b 26 38 30 30  |.memory?(A%+&800|
0000ae20  30 2a 49 25 29 3d 56 25  0d 68 6a 05 ed 0d 68 74  |0*I%)=V%.hj...ht|
0000ae30  05 e1 0d 68 88 10 dd f2  64 69 73 61 62 6c 65 43  |...h....disableC|
0000ae40  46 53 0d 68 92 1d e7 6d  61 63 68 69 6e 65 25 3e  |FS.h...machine%>|
0000ae50  30 80 20 6d 61 63 68 69  6e 65 25 3c 34 8c e1 0d  |0. machine%<4...|
0000ae60  68 9c 2b 76 65 63 74 6f  72 73 25 3d 6d 65 6d 6f  |h.+vectors%=memo|
0000ae70  72 79 3f 26 46 46 42 37  2b 28 6d 65 6d 6f 72 79  |ry?&FFB7+(memory|
0000ae80  3f 26 46 46 42 38 3c 3c  38 29 0d 68 b0 14 76 65  |?&FFB8<<8).h..ve|
0000ae90  63 74 6f 72 73 25 2b 3d  6d 65 6d 6f 72 79 0d 68  |ctors%+=memory.h|
0000aea0  ba 28 61 64 64 72 25 3d  76 65 63 74 6f 72 73 25  |.(addr%=vectors%|
0000aeb0  3f 26 31 45 2b 28 76 65  63 74 6f 72 73 25 3f 26  |?&1E+(vectors%?&|
0000aec0  31 46 3c 3c 38 29 0d 68  c4 22 6d 65 6d 6f 72 79  |1F<<8).h."memory|
0000aed0  32 3d 72 6f 6d 73 2b 72  6f 6d 73 69 7a 65 25 2a  |2=roms+romsize%*|
0000aee0  31 36 2d 26 43 30 30 30  0d 68 d8 12 6d 65 6d 6f  |16-&C000.h..memo|
0000aef0  72 79 3f 61 64 64 72 25  3d 33 0d 68 e2 13 6d 65  |ry?addr%=3.h..me|
0000af00  6d 6f 72 79 32 3f 61 64  64 72 25 3d 33 0d 68 ec  |mory2?addr%=3.h.|
0000af10  12 6d 65 6d 6f 72 79 3f  26 46 46 43 45 3d 33 0d  |.memory?&FFCE=3.|
0000af20  68 f6 13 6d 65 6d 6f 72  79 32 3f 26 46 46 43 45  |h..memory2?&FFCE|
0000af30  3d 33 0d 69 00 12 6d 65  6d 6f 72 79 3f 26 46 46  |=3.i..memory?&FF|
0000af40  44 31 3d 33 0d 69 0a 13  6d 65 6d 6f 72 79 32 3f  |D1=3.i..memory2?|
0000af50  26 46 46 44 31 3d 33 0d  69 14 12 6d 65 6d 6f 72  |&FFD1=3.i..memor|
0000af60  79 3f 26 46 46 44 34 3d  33 0d 69 1e 13 6d 65 6d  |y?&FFD4=3.i..mem|
0000af70  6f 72 79 32 3f 26 46 46  44 34 3d 33 0d 69 28 12  |ory2?&FFD4=3.i(.|
0000af80  6d 65 6d 6f 72 79 3f 26  46 46 44 37 3d 33 0d 69  |memory?&FFD7=3.i|
0000af90  32 13 6d 65 6d 6f 72 79  32 3f 26 46 46 44 37 3d  |2.memory2?&FFD7=|
0000afa0  33 0d 69 3c 12 6d 65 6d  6f 72 79 3f 26 46 46 44  |3.i<.memory?&FFD|
0000afb0  41 3d 33 0d 69 46 13 6d  65 6d 6f 72 79 32 3f 26  |A=3.iF.memory2?&|
0000afc0  46 46 44 41 3d 33 0d 69  50 12 6d 65 6d 6f 72 79  |FFDA=3.iP.memory|
0000afd0  3f 26 46 46 44 44 3d 33  0d 69 5a 13 6d 65 6d 6f  |?&FFDD=3.iZ.memo|
0000afe0  72 79 32 3f 26 46 46 44  44 3d 33 0d 69 64 05 e1  |ry2?&FFDD=3.id..|
0000aff0  0d 69 78 0a dd f2 62 6f  6f 74 0d 69 c8 08 f2 72  |.ix...boot.i...r|
0000b000  74 73 0d 69 dc 2a 51 3d  8e 28 66 73 24 2b 64 69  |ts.i.*Q=.(fs$+di|
0000b010  73 63 24 2b 70 61 74 68  24 2b 73 75 62 70 61 74  |sc$+path$+subpat|
0000b020  68 24 2b 22 2e 21 42 6f  6f 74 22 29 0d 69 e6 5d  |h$+".!Boot").i.]|
0000b030  e7 51 3c 3e 30 8c d9 23  51 3a 64 69 73 61 62 6c  |.Q<>0..#Q:disabl|
0000b040  65 5f 72 65 73 65 74 3d  b9 3a f2 66 69 6c 65 5f  |e_reset=.:.file_|
0000b050  6c 6f 61 64 28 66 73 24  2b 64 69 73 63 24 2b 70  |load(fs$+disc$+p|
0000b060  61 74 68 24 2b 73 75 62  70 61 74 68 24 2b 22 2e  |ath$+subpath$+".|
0000b070  21 42 6f 6f 74 22 29 3a  64 69 73 61 62 6c 65 5f  |!Boot"):disable_|
0000b080  72 65 73 65 74 3d a3 3a  e1 0d 69 f0 29 51 3d 8e  |reset=.:..i.)Q=.|
0000b090  28 66 73 24 2b 64 69 73  63 24 2b 70 61 74 68 24  |(fs$+disc$+path$|
0000b0a0  2b 73 75 62 70 61 74 68  24 2b 22 2e 21 52 75 6e  |+subpath$+".!Run|
0000b0b0  22 29 0d 69 fa 5c e7 51  3c 3e 30 8c d9 23 51 3a  |").i.\.Q<>0..#Q:|
0000b0c0  64 69 73 61 62 6c 65 5f  72 65 73 65 74 3d b9 3a  |disable_reset=.:|
0000b0d0  f2 73 6e 61 70 5f 6c 6f  61 64 28 66 73 24 2b 64  |.snap_load(fs$+d|
0000b0e0  69 73 63 24 2b 70 61 74  68 24 2b 73 75 62 70 61  |isc$+path$+subpa|
0000b0f0  74 68 24 2b 22 2e 21 52  75 6e 22 29 3a 64 69 73  |th$+".!Run"):dis|
0000b100  61 62 6c 65 5f 72 65 73  65 74 3d a3 3a e1 0d 6a  |able_reset=.:..j|
0000b110  0e 1e f2 62 72 6b 28 32  31 34 2c 22 46 69 6c 65  |...brk(214,"File|
0000b120  20 6e 6f 74 20 66 6f 75  6e 64 22 29 0d 6a 22 05  | not found").j".|
0000b130  e1 0d 6a 36 0e dd f2 64  65 6d 6f 28 41 24 29 0d  |..j6...demo(A$).|
0000b140  6a 40 32 c8 99 22 57 69  6d 70 5f 52 65 70 6f 72  |j@2.."Wimp_Repor|
0000b150  74 45 72 72 6f 72 22 2c  22 20 20 20 20 22 2b 41  |tError","    "+A|
0000b160  24 2c 25 31 31 30 30 31  2c 22 36 35 30 32 45 6d  |$,%11001,"6502Em|
0000b170  22 0d 6a 4a 05 e1 0d ff                           |".jJ....|
0000b178