10
20
30
40
50
60
70
80
90
100
110
120 DIM mem% &FFF,ctrl% 19,name% 19
130 OSCLI"Load Client120 "+STR$~mem%
140 IF mem%!&2A6<>&30322E31:PRINT"Not v1.20 Client ROM":END
150 PROCasm
160 OSCLI"Save ClientZ80 "+STR$~mem%+"+1000 0 FFFBBC00"
170 OSCLI"Stamp ClientZ80"
180 END
190 :
200 DEFPROCasm
210 REBOOT=&FCAF:PROG=&FCA8
220 FOR P=0 TO 1
230 P%=mem%-&F000+&F7FC
240 [OPT P*3
250 \ &F7FC: LD A,(HL):LD DE,copystr-mem%+&F000:LD B,4
260 \ &F802: .loop
270 \ &F802: LD A,(DE):CP (HL):JR NZ,LF826
280 \ &F806: INC HL:INC DE:DJNZ loop
290 \ &F80A: POP HL:DEC HL
300 \ &F80C: LD A,(REBOOT)
310 \ &F80F: OR A:JR NZ,LF829
320 \ &F812: LD A,(HL):AND &4F
330 \ &F815: CP &40:JR C,boot
340 \ &F819: CP &48:JR NZ,boot
350 \ &F81D: .code_enter
360 \ &F81D: CP A:LD HL,(PROG):JP (HL)
370 \ &F822:
380 \ &F822: .boot
390 \ &F822: CP A:JP &F4A9
400 \ &F823: \JP RunExec2 :\ BBC BASIC patch
410 \ &F826: \JP RunExec1 :\ BBC BASIC patch
420 \ &F826: .LF826
430 \ &F826: POP HL:JR code_enter
440 \ &F829:
450 \ &F829: .LF829
460 \ &F829: XOR A:LD (REBOOT),A
470 \ &F82D: LD A,(HL):AND &4F
480 \ &F830: CP &40:JR C,LF83D
490 \ &F834: CP &48:JR NZ,LF83D+25
500 \ &F838: LD A,&01:JR code_enter
510 \ &F83C: NOP
520 \ &F83D: .LF83D
530 ]
540 P%=mem%-&F000+&FF22
550 [OPT P*3
560 \ &FF22: .copystr
570 \ &FF22: DEFB 0:DEFM "(C)"
580 \ &FF26:
590 ]
600 P%=mem%-&F000+&F300:[OPT P*3:DEFB 17:]
610 P%=mem%-&F000+&F50A:[OPT P*3:DEFB 200:]
620 P%=mem%-&F000+&F629:[OPT P*3:NOP:NOP:NOP:]
630 P%=mem%-&F000+&F83E:[OPT P*3:DEFB 249:]
640 P%=mem%-&F000+&F857:[OPT P*3:DEFB 249:]
650 P%=mem%-&F000+&FA35:[OPT P*3:AND &FF:]
660 P%=mem%-&F000+&FC74+5 :[OPT P*3:DEFB 4:]
670 P%=mem%-&F000+&FC74+14:[OPT P*3:DEFB 32:]
680 P%=mem%-&F000+&FC74+15:[OPT P*3:DEFB 32:]
690 P%=mem%-&F000+&FC88+14:[OPT P*3:DEFB 32:]
700 P%=mem%-&F000+&F2A6:[OPT P*3:DEFM "1.21":]
710 P%=mem%-&F000+&F730:[OPT P*3:DEFM "1.21":]
720 NEXT
730 X%=ctrl%:Y%=X%DIV256:$name%="OswFFv3"
740 !X%=name%:A%=5:IF ((USR&FFDD)AND&FF)<>1:ENDPROC
750 oswlen%=X%!6-X%!2:osw%=&FDDA-oswlen%
760 in%=OPENIN("OswFFv3"):IF in%=0:ENDPROC
770 FOR A%=0 TO oswlen%-1:mem%?(osw%-&F000+A%)=BGET#in%:NEXT A%
780 CLOSE#in%
790 P%=mem%-&F000+&F5B2
800 [OPT 3:LD DE,osw%:LD B,oswlen%:]
810 ENDPROC