home *** CD-ROM | disk | FTP | other *** search
- 100 REM ROMGET (v2.0)
- 110 REM 3.9.1994
- 120 REM
- 130 MODE 1: CLEAR: DEFINT a-z
- 140 PRINT"ROMGET v2.0":PRINT"Run on a CPC to save the ROMs as files.": PRINT
- 150 PRINT"Insert disk with >= 50K free space": PRINT"and press a key ..."
- 160 CALL &BB18
- 170 adr=&A000: sh=adr+2: dh=adr+5: k=adr+15
- 180 h!=HIMEM: MEMORY &1FFF
- 190 FOR i=adr TO adr+&12: READ a$: POKE i,VAL("&"+a$): NEXT
- 200 POKE sh,0: POKE dh,&20: POKE k,&FC: CALL adr
- 210 POKE sh,&C0: POKE dh,&60: CALL adr
- 220 PRINT"Saving lower&upper-ROM (CPCXXXX.ROM) ..."
- 230 SAVE"!CPCXXXX.ROM",b,&2000,&8000
- 240 POKE k,7: CALL adr
- 250 IF PEEK(&6000)<>1 THEN PRINT"No AMSDOS-ROM found.": GOTO 280
- 260 PRINT"Saving AMSDOS-ROM (CPCADOS.ROM) ..."
- 270 SAVE"!CPCADOS.ROM",b,&6000,&4000
- 280 PRINT"Trying to find some other ROMs ..."
- 290 FOR i=1 TO 251:PRINT HEX$(i);
- 300 IF i=7 THEN 360
- 310 POKE k,i:CALL adr
- 320 IF PEEK(&6000)=&80 THEN 360
- 330 PRINT" ROM found -- ";
- 340 PRINT"Saving MYROM";HEX$(i,2);".ROM ..."
- 350 SAVE"!MYROM"+HEX$(i,2)+".ROM",b,&6000,&4000:PRINT
- 360 PRINT CHR$(13);:NEXT
- 370 PRINT:PRINT"bye."
- 380 MEMORY h!: END
- 390 DATA 21,00,C0,11,00,20,01,00,40,DF,0D,A0,C9,10,A0,00,ED,B0,C9
- 400 '
- 410 '**** end of program ***
- 420 '
- 430 'ROMGET - written to save the CPC-ROM in a file, which can be used
- 440 'by CPCEMU (transfer Z80CPC.ROM, Z80DISK.ROM to a PC).
- 450 '
- 460 'If you input this program, you can leave all REM- and PRINT - lines.
- 470 'Some annotations:
- 480 ' line 200 : copy low-rom &0000-&3fff to ram &2000-&5fff
- 490 ' line 210 : copy high-rom &c000-&ffff to ram &6000-&9fff
- 500 ' line 240 : copy amsdos-rom &c000-&ffff to ram &6000-&9fff
- 510 '
- 520 'The assembler-module in data-line 300 :
- 530 '
- 540 ';ROMGET2 (v1.2)
- 550 ';17.1.1993 (26.,27.6.1989)
- 560 ';
- 570 ';Program to copy the CPC-ROMs to RAM, so you can save them in a file.
- 580 ';Run this on a CPC
- 590 ';
- 600 ';usage:
- 610 '; adr = &a000
- 620 '; poke adr+&02 , source-address (hi-byte)
- 630 '; poke adr+&05 , destionation-address (hi-byte)
- 640 '; poke adr+&0F , rom/ram-configuration
- 650 '; call adr 'to copy &4000-byte-bank
- 660 ';
- 670 '; (rom/ram-config - 0..251 = ROM-number, 252=lower,upper rom enabled, ...)
- 680 'ORG #A000
- 690 'LD HL,#C000 ;source-address (ROM or RAM)
- 700 'LD DE,#2000 ;destination-address (RAM)
- 710 'LD BC,#4000 ;length of bank
- 720 'RST #18
- 730 'DEFW RSTTAB
- 740 'RET
- 750 '
- 760 'RSTTAB DEFW BLOCK ;jump to prg
- 770 'DEFB 0 ;rom/ram-configuration
- 780 '
- 790 'BLOCK LDIR ;copy the bank
- 800 'RET
- 810 '
- 820 'END
- 830 ';
-