8-Bit Software Online Conversion

ROM Dump - Listing

10MODE7 11VDU23,1,0;0;0;0; 20REM" From K1H not written by me" 30REM" Author unknown" 40PRINT'''" Readrom " 50PRINT'" This program will allow you to" 60PRINT'" read the contents of any ro m." 70PRINT'" use shift keys to scroll." 80PRINT''" Option to save rom if requ ired" 90PRINT'''" Press any key to run it" 100A=GET 110REM: READROM 120MODE7 130HIMEM=&3C00 140DIM mcode &100 150select=&FE30 160osrdrm=&FFB9 170osasci=&FFE3 180osbyte=&FFF4 190oscli=&FFF7 200copy=&70 210temp=&71 220read=&72 230write=&74 240romnumber=&F4 250rompoint=&F6 260ON ERROR PRINT:END 270FOR pass=0 TO 2 STEP 2 280P%=mcode 290[OPT pass 300.number 310LDA #&AA 320LDX #0 330LDY #&FF 340JSR osbyte ½ Find rom table 350STX read 360STY read+1 370LDY copy 380LDA (read),Y 390BEQ finish 400LDA #8 410STA rompoint 420LDA #&80 430STA rompoint+1 440.readname 450INC rompoint 460LDY copy 470JSR osrdrm 480CMP #ASC(" ") 490BCC finish 500JSR osasci 510JMP readname 520.finish 530RTS 540.move 550LDA romnumber 560STA temp 570LDA copy 580STA romnumber 590STA select 600LDA #&80 610STA read+1 620LDA #&3C 630STA write+1 640LDY #0 650STY read 660STY write 670.relocate 680LDA (read),Y 690STA (write),Y 700INY 710BNE relocate 720INC read+1 730INC write+1 740LDA read+1 750CMP #&C0 760BNE relocate 770LDA temp 780STA romnumber 790STA select 800RTS 810] 820NEXT 830FOR socket=0 TO 15 840?copy=socket 850IF socket<10 PRINT;" "; 860PRINT;socket;" "; 870CALL number 880PRINT 890NEXT 900VDU14 910REPEAT 920INPUT'"Which ROM (0-15) "socket 930UNTIL socket >= 0 AND socket < 16 940?copy=socket 950CALL move 960PRINT'"<SHIFT> to scroll, <ESCAPE> to exit" 970ON ERROR PROCsave 980FOR block=&3C00 TO &7BFF STEP 8 990PRINT';÷block+&4400;" "; 1000FOR memory=0 TO 7 1010byte=block?memory 1020IF byte<16 VDU48 1030PRINT;÷byte;" "; 1040NEXT 1050FOR memory=0 TO 7 1060byte=memory?block 1070IF byte>31 AND byte<127 VDUbyte ELS E VDU46 1080NEXT 1090NEXT 1100PROCsave 1110END 1120DEFPROCsave 1130ON ERROR PRINT:END 1140VDU15 1150INPUT''"Save ROM? (Y/N) "yes$ 1160REPEAT 1170IF yes$="Y" INPUT"Filename = "filen ame$ ELSE INPUT"Another? (Y/N) "yes$:IF yes$<>"Y" END ELSE RUN 1180size=FALSE 1190FOR block=&3C00 TO &3D00 1200IF ?block <> ?(block+&2000) size= T RUE 1210NEXT 1220IF size=TRUE size=&4000 ELSE size=& 2000 1230$mcode="SAVE "+filename$+" 3C00+"+S TR$÷(size)+" FFFF8000 FFFF8000" 1240X%=mcode MOD 256 1250Y%=mcode DIV 256 1260CALL oscli 1270yes$="" 1280UNTIL FALSE 1290ENDPROC