Rom capture utilities for PC and AT This is a set of utilities that allows the user to capture the contents of the rom sets in either the PC or the AT. It allows the content of the rom to be written to a file called xtrom for the XT or atrom for the AT. A utility called romsplit is provided for the AT that allows the atrom file to be split into two files that represent the even and odd bytes and which are called tempeven and tempodd, respectively. Note that this is not necessary for the XT. Another utility called lsplit is provided to allow the large files produced by romsav to be split into files that will fit into the desired destination eproms. For prom burners that accept data format in the Motorola S record format, a utility called binex is provided that converts a binary file into standard S record format. A typical session is described below for an AT. Original Author UNKNOWN, more routines added by Allan Teo. 1. Run the command "romsavat". This will produce a file called "atrom". 1.1 FOR THE TOSHIBA t1100+ DELETE THE FIRST 2000h(8192d) BYTES SINCE IT OCCIPIES A 27256 EPROM (32K) 2. Run the command "romsplit" (copy "atrom" to a new file temp). This will produce two files called "tempeven" and "tempodd". 3. If the destination eproms are 27256 then it is not necessary to split the files into smaller ones, otherwise run the command "lsplit tempeven", where is the decimal size of the destination file in bytes (e.g. "lsplit 16384 tempeven" to make tempeven into two files called "F0" and "F1" that will fit into 27128 eproms. Rename the files to some new name so that they will not be overwritten at the next step. Now run the command "lsplit tempodd" to produce files for the odd byte eproms. 3.0.1 You can run APPEND to get LSPLITed ROMS back to the original config. EG: Append F0 F1 tempevn to get back tempevn RUN UNSPLIT to get back ATROM after recovering tempevn + tempodd 3.1 If you are using roms that come only in 2 27128 eproms (EG: AT PHEONIX), and you had run ROMSAVAT you will still get a 65536 byte file. then run UNSPLIT after running lsplit 16384 tempevn etc producing the F0 and F1 files for both even and odd eproms. F0 should all be FFs or some garbage and F1 is CODE. Copy the EVEN F1 to tempevn and the ODD F1 to tempodd. run unsplit. It will produce a file call ROM. You can then debug and change it. No point wasting it in 2 27256 eproms. 3.2 Chksum should then be run to recalculate the chksum and produce a new file you specify, say TEMP. Then you can split it again. 3.3 if the rom file is 65536 bytes, then in DEBUG, the rest of the code should continue at CS+1000:0 to the end where you can see the date. 4. If you are producing S records run "binex " on each file that you wish to convert to S record format. 5. Feed them to a prom burner and keep track of which eproms were even and odd and the order in which they were burned to allow you to install them properly in the target system. EPROMS: in bytes ; if you are new WATCH OUT FOR PROGRAMMING VOLTAGE! 27512 = 65536 27256 = 32768 27128 = 16384 2764 = 8192 romsavxt will save = 40960 bytes romsavat will save = 65536 " chksum.exe works on AT and XT roms that add up all bytes in the rom ignoring the carry, after which the result in the 1 byte register (EG:AL or a BL) must equal 0. :: Example Saving Phoenix Roms or similar clone roms. Steps: ROMSAVAT copy atrom temp romsplit lsplit 16384 tempevn copy f1 tempevn lsplit 16384 tempodd copy f1 tempodd unsplit ;; produce a 32768 file debug ROM ;; make changes if wanted chksum rom temp romsplit BURN tempevn and tempodd in 27128 chips OR append f0 tempevn newtempe copy newtempe tempevn append f0 tempodd newtempo copy newtempo tempodd to BURN TEMPEVN and TEMPODD in 27256 eproms :: Example Saving the Real Thing and put it into a Taiwanese CLONE. steps: ROMSAVAT debug atrom ;; make changes if needed chksum atrom temp romsplit You can now BURN tempevn and tempodd in 27256 chips OR lsplit 16384 tempevn - produce f0 and f1 burn f0,f1 into 27128 eproms, f0 eprom goes into first socket, f1 into SECOND. lsplit 16384 tempodd - produce f0 and f1 burn f0,f1 into 27128 eproms, f0 eprom goes into THIRD socket, f1 goes into FOURTH ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: The Next step describes how to CHANGE THE FIXED DRIVE TABLES in an AT. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: YOU MUST HAVE SYMDEB from the MASM4.0 package to use this If you have BASICA or GWBASIC execute the command A>basica hdat FOLLOW the instructions in UPPERCASE ----------------------------------------------------------------------- THE ABOVE PROGRAMS WERE COMPILED WITH MICROSOFT C Remember to use a FAR pointer if you don't have large mem model (Large mem model used only in romsavat and romsavxt, all others can be compiled using the small model) ** ORIGINAL AUTHOR UNKNOWN ** hdat.bas, all batch files Chksum.c, unsplit.c and append.c added by Allan Teo, 76566,2357