--- DOCUMENTATION FOR the CHKSUM , SPLIT and ADDROMS program USAGE--- Anyone intersted in the source codes for these programs, send $5 to the address below to cover disk & mailing costs. **** BOTH PROGRAMS REQUIRE DOS 3.0 AND UP *****NO CHECK IS MADE -----------------------------------------------| WRITTEN by: Pete Korner | 10509 Hunt Ave. | South Gate, Ca. | 213-533-8568 | -----------------------------------------------| CHKSUM provides the true checksum of any file, any size, but primarily written to use on PC/AT roms. The roms may be edited but their cheksum must be adjusted to end with 00 in order for them to boot up. The first two bytes (I.E. XX00) can end up to be any hex charaters. ------------------------------------------------------------------------ SPLIT separates a file into even and odd byte files for eprom use in the AT or AT clone type computers. ------------------------------------------------------------------------- ADDROMS reverses the action of SPLIT , combines even and odd roms files into one file which allows for easier editing. -------------------------------------------------------------------------- PC/XT roms are 8 bit and DO NOT require splitting into evn/odd files. Note: PC/XT clones have no basic roms, only the BIOS. The rom is at fe00:0 to fe00:ffff for 2000h bytes. Change the move address in AT's debug routine to fe00:0 2000 cs:100 and set CX to 2000h instead of 8000h and only one file needs to be named/written. IBM PC/XT basic rom adresses are at f600:0 , f800:0 , fa00:0 and fc00:0 for the four basic roms. The PC/XT BIOS rom is at fe00:0 . --------------------------------------------------------------------------- If you are interested in editing your roms, READ the rest of this file. I'll go through a relatively simple example of editing the disk para- meter table and 'fixing' up the checksum afterwords. ---------------------------------------------------------------------------- The following debug routine may be used to read the AT or AT clone roms. debug 'CR' ;start debug - ;debug's cursor rcx ;set CX register 8000 ;for 8000h bytes n 1st.hlf ;name for the 1st half of rom m f000:0 8000 cs:100 ;move 1st half of rom into debug's segment w ;write the file to disk n 2nd.hlf ;name fo 2nd half of rom m f800:0 8000 cs:100 ;move 2nd half of rom into debug's segment w ;write the file to disk q ;quit debug At this point we have two files, 1st.hlf and 2nd.hlf 32768 decimal bytes each. Most AT clones have 128k roms, in which case the 1st.hlf is all 'ff's and we do not need it. In this case the 2nd.hlf file is the complete bios rom. IBM's AT roms are 256k each so we need to combine the two files. Use the folowing commands from dos. copy /b 1st.hlf+2nd.hlf atrom ;creates new file ATROM del 1st.hlf ;we do not need del 2nd.hlf ;these any more Now we have the complete ROM in one file. Running the chksum program should yield a hex number which ends with '00'. All roms must have a 'XX00' cheksum, otherwise they won't boot. In the AT roms the hard disk parameter table starts at 'offset 6401' , 6501 if using debug. Each group of 16h bytes corresponds to a 'type' , of hard disk starting with type 1 at offset 6501. This table may be modified if you are installing a hard disk whose parameters do not match any of the standard values in the rom. [i.e. # of cylinders, heads etc.] We can maximize hard disk capacities by matching these parameters. I modified my AT clone's rom for RLL use with the WD 1003 - RA2 controller by replacing the 11h [# of setors/track] byte in the table with 1Ah [26 sectors]. This provided 50% more capacity on my hard disk. After modification the checksum must be made to end with 00's again. Here is how we can do it... After modifing the rom file to your liking write it back out to disk with debug's 'W'command. Run the chksum program on the file. Write down the new checksum. Let's say the new checksum is 2233h. Load the modified rom file again with debug. [i.e debug atrom] Type the following at debug's prompt: H ffff 2233 Debug comes back with the sum and diff: 2232 DDCC What we need is the last two bytes of the diffrence. The 'CC'. We need to change an unused 'FF' in the rom to 'CC'. The starting precomp cylinder bytes for some AT hard disks is ff ff in the table. At 6556 and 6557 we find a couple of 'ff's corresponding to the precom cyl. bytes for type 6 hard disk. This disk is 615 cyl 4 heads [20meg] with the precom cyls. 'ff ff' As long as the precomp cyls # is greater then the # of cylinders [6702h reversed = 0267h = 615dec ] the controller will not format any cylinders with precomp. So we can freely change the first byte to anything so our checksum will come out to "xx00". In our case we change it to 'CC' [-E 6556 FF.CC ] and write it back out with a "W'. Now if we rerun the chksum on the file it will have an 'XX00' checksum. AT roms are split evn/odd [low/high] because of the 16 bit address bus. We need to split our file in this fashion to make it usable as a ROM in an AT or AT clone. [Remember the checsum MUST end with 'xx00' for the combined file not neccesarily for the split ones individualy.] When we run the SPLIT program on our new file ATROM, we get ATROM.EVN and ATROM.ODD suitable as input files for eprom burners. I hope you'll find these ROMTOOLS useful... Pete Korner  Downloaded From P-80 International Information Systems 304-744-2253