Scor­pio News


July–September 1987 – Volume 1. Issue 3.

Page 31 of 67

If a new BIOS is to be used, the first step should be to load it in. Assuming that it is a file called NEWBIOS.COM assembled to run in memory at 0DE00H, then the command INEWBIOS.COM, R2000 should be given. Debug utilities load binary files with a default offset of 100H, so this should result in the Newbios overlaying from 2100H. This can be checked by a D2100 command. The jump table should be present starting at 2100H. At the end of the ‘R’ command the screen should display the new top of memory of the system image.

If the original BIOS is being retained, then its top should be found if possible, and will usually be just after the signon messages. Once the BIOS top has been found, memory from the top of the BIOS should be filled with 00’s to about 5000H, in order to clear all Z3 areas. The command FXXXX,5000,00 will do this. XXXX will be the BIOS ending address.

If BDOSZ is to be used, it can then be loaded to 1300H.

If it is necessary to read in .HEX files, then DDT or ZSID are needed as they can handle .HEX format files. The read OFFSET, once calculated, will be the same for ALL .HEX overlays in a given system, since the address in the memory image is offset from the running address by the same amount. The offset can be calculated by using the H command, (H low,​high) where low and high are the image and RAM address of any one segment or buffer. The image address of the RCP is 03500H, and the RAM address is 0F200H. The command H,3500,​F200 gives the answer 2700,4300. Now 4300H added to 0F200H gives 013500H. The leading ‘1’ is lost since it cannot be contained in a 16 bit value, leaving 03500H, which is the target address. Thus 04300H is the answer needed. (Since the OFFSET value is added to the address in the .HEX file as it is loaded).

Each .HEX segment may be loaded in turn. (e.g. ISYSRCP.HEX, R4300) or if it is already loaded by MLOAD, (and assuming the file is named as a standard Z3 segment), ISYS.RCP, R3400 (remember the default 100h offset with binary files). Then the ZCPR3 CCP may be read in using one of these two methods, (IZCPR3.HEX, R4300 or IZCPR3.COM, RA00). The D command should be used frequently to check that the results are as required.

A cold boot startup command can now be implemented, by modifying the image memory at 04200H. I prefer to use SPZ.COM for this type of job since it is easier to correct errors and get things exactly right, but this is a matter of preference.

With direct booting of Z3 there is no need to use LDR.COM to load any segments, but a startup command may be required. My startup command is:

CSET;ECHO Type ^C for CP/M, or any other key for HELP;SAK;HELP ME

which loads a preferred character set to the SVC, and then prints the text message via the RCP ECHO command. Z3 then uses the SAK utility to wait for user input. If this is ^C, then CP/M is entered. Any other key proceeds to the next commend in the buffer. This causes Z3 to use its HELP.COM utility, which in turn loads an online help file called ME.BLP that I wrote to summarize the features of Z3.

The process is now complete but for two more small but very important modifications that may have to be be made for the system Boot to work correctly. These concern the Cold Boot loader, and the Winchester system write utility SYSWIN.

The cold boot loader for both Floppy and Winnie systems refers to three vital locations. One is the address to which CP/M will be loaded. One is the Cold Boot Jump address of the BIOS, to which the loader will jump once CP/M is loaded. These two will normally have been adjusted during the MOVCPM or GENSYS operation, but might have to be patched in some circumstances. It is not difficult to find these addresses in the loader, either as conditional or unconditional jumps, e.g. LD HL,xxxx instructions, for a copy operation or for a JP (HL). The third significant item is the number of sectors that the loader will read from the system tracks of the relevant disk. Since the system has

Page 31 of 67