10MODE135 20HIMEM=&4000 30REM Now we have a 16K buffer from &4000-&8000 40DIM code% 512 50DIM gbpb 13 60gbpb!9=0 70FOR p%=0 TO 3 STEP 3 80P%=code% 90[OPT p% 100LDA &FE34 110STA &80 120AND #&F7:ORA #&40 130PHP:SEI:STA &FE34 140JSR copy 150LDA &80:STA &FE34:PLP 160RTS 170.grabrom LDA &F4:STA &80:PHP:SEI:LDA &82:STA &F4:STA &FE30 180JSR copy 190LDA &80:STA &F4:STA &FE30:PLP 200RTS 210.copy LDY #0 220.inloop LDA (&70),Y:STA (&72),Y:INY:BNE inloop 230INC &71:INC &73:BPL copy 240RTS 250.filename EQUS "MOSROM"+CHR$13 260.open 270LDX #filename MOD 256:LDY #filename DIV 256 280LDA #&80:JSR &FFCE:STA &81:RTS 290.close LDA #0:LDY &81:JSR &FFCE:RTS 300.save LDA &81:STA gbpb:STZ gbpb+1:LDA #&40:STA gbpb+2:STA gbpb+6 310STZ gbpb+3:STZ gbpb+4:STZ gbpb+5:STZ gbpb+7:STZ gbpb+8 320LDA #&2:LDX #gbpb MOD 256:LDY #gbpb DIV 256:JSR &FFD1:BCC save_ok 330BRK:EQUB 99:EQUS "OSGBPB error":EQUB 0 340.save_ok RTS 350] 360NEXT p% 370CALL open 380IF ?&81=0 THEN ERROR "Can't open file" 390!&70=&C000 400!&72=&4000 410PRINT"Downloading MOS" 420CALL code% 430CALL save 440FOR rom%=9 TO 15 450?&82=rom% 460!&70=&8000 470!&72=&4000 480PRINT"Downloading ROM ";rom% 490CALL grabrom 500CALL save 510NEXT rom% 520CALL close