ô > IDECrunch v1.23 ô Crunched IDEPatch program Pç“-’<&4600:ë&87 Z2Þmem%&3FFF:vb%=£:è"ADFS 1.x0 ROM image: "file$ d<ÿ"Load "+file$+" "+Ã~mem%:ver%=mem%!&14:ver$="":rev%=&23 n5çver%=&30332E31:ver$="1.33":ñ"Patching BBC ADFS"; x5çver%=&303531:ver$="153":ñ"Patching Master ADFS"; ‚0çver$="":ñ"Must be ADFS 1.30 or ADFS 1.50":à ŒóL$,A$:õ:çver$="153":A$=L$ –%òlabel(L$,A$):óL$,A$:ýL$="*":òasm  2çÂfile$,1)="0":file$=Àfile$,©file$-2)+Âver$,2) ª8ñ'"Save filename (";file$;:è"): "A$:çA$<>"":file$=A$ ´7ÿ"Save "+file$+" "+Ã~mem%+"+4000 FFFF0000 FFFBBC00" ¾à ÜJÜC200,1000,C300,1100,806F,8056,807E,8065,8099,8080,A19E,A15E,9B50,9B3C æJÜ80C0,80A7,809E,8085,811A,80F6,8137,8114,81AD,818A,8212,81EF,803A,8043 ðJÜ821F,81FC,82AA,8287,831E,82FB,8328,8305,8332,830F,834E,832B,8B7F,8B72 úJÜ9A6C,9A63,9A7F,9A78,9B0B,9AF6,9B7C,9B50,9C2F,9C29,9C41,9C3B,9C7A,9C74 JÜ9C41,9C3B,9AB5,9A98,9DFA,9DAB,9F9B,9F6E,AADD,AACA,AB03,AAF0,AB6A,AB57 JÜAB76,AB63,AB83,AB72,AB89,AB78,ABB4,ABA5,ACC9,ACBA,950E,9507,9522,951B JÜ951E,9517,8CCB,8CC0,8C8A,8C7F,8CB3,8CA8,90DF,90D6,9104,90FB,9088,907F "JÜ8FE8,8FDF,92EF,92E8,931A,9313,995D,9958,999A,9995,99AA,99A5,99CE,99C9 ,JÜ8BAD,8BA2,B8A9,B85F,910A,9101,9255,924C,BF22,BF17,BF75,BF6C,BFB7,BFAE 6Ü*,* J4ݤorg(A%,B%):P%=A%:O%=A%-&8000+mem%:=P*(2-vb%)+4 TÝòasm:ãP=0¸1 ^[OPT¤org(&8008,-1) hEQUB ("&"+Âver$,2)):] r[OPT¤org(&8014,-1) |%EQUS ver$:EQUB 0:EQUS "(C)2005":] †[OPT¤org(L806F,-1) %PHP:LDA &FC47:STA &CC:LDA &FC47:] š[OPT¤org(L807E,L8099) ¤RTS ¸.ReadBreak ÂLDA &028D:€#&01:RTS Ì.WaitForData ÖPHA:.WaitForLp àPLA:LDA &FC47:PHA ê€#8:BEQ WaitForLp ô PLA:RTS þ.MountCheck JSR LA19E:JMP L9B50 ] "[OPT¤org(L80C0,-1):BEQ L809E:] &#[OPT¤org(L811A,-1):LDY #0:NOP:] 0[OPT¤org(L8137,L81AD) :LDY #5:LDA (&B0),Y:CMP #&09 D€#&FD:‚#&08:BEQ CmdOk NLDA #&27:BNE CmdExit X.CmdOk:LDY #9 b.CmdSaveLp l'LDA &7F,Y:PHA:LDA (&B0),Y:STA &7F,Y vDEY:BNE CmdSaveLp €LDA &B0:PHA:LDA &B1:PHA ŠJSR UpdateDrive ”STA &B0:STY &B1 žPHP:JSR SetGeometry:PLP ¨ .CmdLoop ²LDX #2:.Twice ¼BIT &CD:BVC CmdStart ÆPHP:TXA:PHA ÐLDX #&27:LDY #LC200256 ÚJSR TubeAction:PLA:TAX:PLP ä .CmdStart îJSR SetSector ø.TransferLoop 'JSR WaitForData:€#&21:BNE TransDone  $BIT &CD:BVS TransTube:BCC IORead 3.IOWrite:LDA (&80),Y:STA &FC40:BCS TransferByte  2.IORead:LDA &FC40:STA (&80),Y:BCC TransferByte *).TransTube:JSR TubeDelay:BCC TubeRead 43.TubeWrite:LDA &FEE5:STA &FC40:BCS TransferByte >4.TubeRead:LDA &FC40:STA &FEE5:BCC TransferByte:] H[OPT¤org(L81AD,L8212) R .CmdDone \JSR GetResult f .CmdExit pPHA:JSR L803A:PLA zLDX &B0:LDY &B1:€#&7F:RTS Ž.TransferByte ˜INY:BNE TransferLoop ¢DEX:BNE Twice:INC &81 ¬!LDA &FC47:€#&21:BNE TransDone ¶INC LC200+&28:BNE TubeAddr ÀINC LC200+&29:BNE TubeAddr ÊINC LC200+&2A Ô .TubeAddr ÞINC &87:BNE TransCount è"INC &86:BNE TransCount:INC &85 ò.TransCount üDEC &88:BNE CmdLoop .TransDone PLA:STA &B1:PLA:STA &B0:INY .CmdRestore $PLA:STA &7F,Y:INY:CPY #10 .BNE CmdRestore:BEQ CmdDone B.SetGeometry LJSR WaitNotBusySelectBus VLDA #64:STA &FC42:STA &FC43 `(LDY #6:LDA (&B0),Y:LSR A:LSR A:„A #3 j%JSR SetDriveA:LDA #&91:BNE SetCmd tEQUSÄL8212-P%,½0) ~.L8212:SEI:.L8213 ˆ]:TubeDelay=L8213+5 ’[OPT¤org(L821F,L82AA) œ.TubeAction ¦LDA #0:ROL A:‚#1:BCC L8213 º.SetSector ÄPHP:JSR WaitNotBusy ÎLDY #8:LDA #1:STA &FC42 Ø)CLC:LDA (&B0),Y:€#63:ADC #1:STA &FC43 âDEY:LDA (&B0),Y:STA &FC44 ì#DEY:LDA (&B0),Y:JSR SetCylinder ö!INY:INY:‚(&B0),Y:€#2:‚(&B0),Y (JSR SetDrive:DEY:DEY:DEY:LDA (&B0),Y  .SetCommand ASL A:ASL A:ASL A:‚#&60 $LDY #0:PLP:.SetCmd:STA &FC47:RTS ( .SetDrive 2ROL A:ROL A:ROL A <.SetDriveA P€#&13:STA &FC46:RTS Z.SetCylinder dPHA:€#&3F:STA &FC45 n#PLA:ROL A:ROL A:ROL A:ROL A:RTS x.SetRandom ‚JSR SetCylinder Œ#‚LC200+&01,X:€#&02:‚LC200+&01,X –'JSR SetDrive:PLA:PHP:JMP SetCommand ª.GetResult ´ LDA &FC47:€#&21:BEQ GetResOk ¾LDA &FC41:LDX #&FF È .GetResLp Ò,INX:ROR A:BCC GetResLp:LDA ResultCodes,X Ü .GetResOk ðRTS úEQUSÄL82AA-P%,½0) ] [OPT¤org(L831E,L8328) '.TubeStore:JSR TS:STA &FEE5:.TS:RTS "EQUSÄL8328-P%,½0) ,] 6[OPT¤org(L8328,-1) @LDA &CD:€#&FE:STA &CD:RTS JBRK:BRK:BRK T] ^[OPT¤org(L8332,L834E) h.WaitNotBusySelectBus |.WaitNotBusy †PHP:.WaitLp:JSR L806F €#&C0:CMP #&40:BNE WaitLp š PLP:RTS ¤EQUSÄL834E-P%,½0) ®] ¸[OPT¤org(L8B7F,-1) ÂTXA:PHA:JSR SetGeometry ÌJSR SetSector:PLA:TAX ÖNOP:NOP:NOP:] à&[OPT¤org(L8BAD,-1):JSR TubeDelay:] ê&[OPT¤org(LB8A9,-1):JSR TubeStore:] ô[OPT¤org(L9A6C,L9A7F)  LDX &FC47 INX:BEQ DriveNotPresent LDA #0:RTS &.DriveNotPresent 0 DEX:RTS :EQUSÄL9A7F-P%,½0):] D&[OPT¤org(L9B0B,-1):JSR ReadBreak:] N&[OPT¤org(L9B7C,-1):JSR ReadBreak:] X[OPT¤org(L9C2F,L9C41) b$LDA LC300+&1B:CMP #&FF:BNE L9C7A l$LDA &CD:€#32:BEQ L9C7A:BNE L9C41 vEQUSÄL9C41-P%,½0):] €/[OPTFNorg(L9DFA+16,-1):EQUSRIGHT$(ver$,1):] ²[OPT¤org(L9F9B,-1) ¼EQUB (MountCheck-1)256 ÆEQUB (MountCheck-1)€255:] Ð[OPT¤org(LAADD,LAB03) ÚNOP:NOP:NOP ä(JSR WaitNotBusy:LDA #1:STA &FC42:CLC î)LDA LC200+&01,X:€#63:ADC #1:STA &FC43 øLDA LC200+&02,X:STA &FC44 /LDA LC200+&03,X:STA LC300+&33:JMP SetRandom  EQUSÄLAB03-P%,½0):] [OPT¤org(LAB6A,LAB76)  JMP LAB76 *.ResultCodes 40EQUB &12:EQUB &06:EQUB &2F:EQUB &02:EQUB &10 >)EQUB &28:EQUB &11:EQUB &19:EQUB &03:] H[OPT¤org(LAB83,-1) RNOP:NOP:NOP:] \[OPT¤org(LAB89,LABB4) fRTS p.UpdateDrive z LDA &85:„A LC300+&17:STA &85 „STA LC300+&33:LDA #&7F:RTS Ž%.GetChar:LDA (&F2),Y:CMP #&20:RTS ˜EQUSÄLABB4-P%,½0) ¢] ¬[OPT¤org(LACC9,-1) ¶ NOP:NOP:] À[OPT¤org(L92EF,-1):LDX #4:] Ê$[OPT¤org(L931A,-1):LDA #32:RTS:] Ô[OPT¤org(L950E,L9522) ÞJMP L951E:EQUSÄL951E-P%,½0) èLDX #10:LDY #13:] ò&[OPT¤org(L8CCB,-1):STA LC200+&C0:] ü[OPT¤org(L8C8A,L8CB3) "LDY #8:.RdLp:CPY #4:BNE RdNotE 3DEY:DEY:.RdNotE:LDA (&B6),Y:ASL A:ROL LC200+&2B &CPY #4:BEQ RdIsE:CPY #2:BNE RdNext $INY:INY:BNE RdNotE:.RdIsE . DEY:DEY:.RdNext:DEY:BPL RdLp 8*LDA LC200+&2B:LDY #&0E:STA (&B8),Y:RTS B NOP:NOP:] L[OPT¤org(L90DF,L9104) V"LDY #8:.WrLp:CPY #4:BNE WrNotE `%DEY:DEY:.WrNotE:LDA (&B6),Y:ASL A j#ROL LC200+&2B:ROR A:STA (&B6),Y t&CPY #4:BEQ WrIsE:CPY #2:BNE WrNext ~INY:INY:BNE WrNotE:.WrIsE ˆ DEY:DEY:.WrNext:DEY:BPL WrLp ’NOP:NOP:NOP:] œ"[OPT¤org(L995D,-1):JSR L999E:] ¦*[OPT¤org(L999A,L99AA):LDX #4:BNE L99CE °0.L999E:LDA (&B6),Y:€#&7F:STA (&B6),Y:DEY:RTS ºEQUSÄL99AA-P%,½0):] Ä"[OPT¤org(L9088,-1):JSR L8FE8:] Î"[OPT¤org(L910A,-1):JSR L8FE8:] Ø [OPT¤org(L9255,-1):TYA:NOP:] â"[OPT¤org(LBF22,-1):BNE LBF75:] ì9[OPT¤org(LBF75,-1):LDX &B0:LDY &B1:LDA #&76:JSR &FFF1 ö$JMP LBFB7:EQUSÄLBF75+26-P%,½0):] "[OPT¤org(&BFFF,-1):EQUB rev%:] í:á *Ýòlabel(L$,A$):$(¸P-18)=L$:?(¸P-14)=61 (LBFB7= ("&"+A$):á ÿ