********************************************************************** * Janus Handler (ROM Extension) Initialization Trigger * * * * Fully Public Domain by Jeff Rush - September 7th, 1989 * * * * BIX: jrush BBS: (214) 231-1372 Rising Star Opus * ********************************************************************** This program is used to initialize the Janus Handler when it is placed at segment A000 using the PCPREFS program. Electrically speaking, the handler can be mapped to A000, D000 or E000 (XT) or only A000 or D000 on an AT Bridgecard. A limitation is that the range of addresses a PC BIOS scans for ROM extension signatures is C000 up to F600 (top end varies among clone makers). This means that the handler will not be initialized (and thereby linked into the system) when placed at A000. However, it would sure be nice to be able to use A000 since there is fierce competition for address space in the PC's upper address area among plug-in boards. This method will *** NOT *** work if you are trying to boot the PC from the Amiga, using the new features of Janus 2.x. The reason is basicly that of the chicken or the egg. The USE_A000.COM program must be executed during the startup of the PC in order to establish communications with the Amiga side, but the PC cannot autoboot if it cannot talk with the Amiga side first. Be warned, however, that an EGA video card uses the A000-BFFF range of memory and will conflict with such a choice. I do not know about VGA cards. Symptoms of Using A000 w/o USE_A000 Utility Note: The symptoms of placing the handler at A000 in a system -not- using this utility are: 1) The Janus handler and library version numbers are not visible on the screen. They are printed by the initialization code and therefore never performed. 2) Any attempt to use Janus 2.x services such as ATIME results in a system hang for the PC side. 3) Any attempt to use a JDisk (DJMOUNT command) will return signifying there is no such drive as JH0: Sequence of Changing the Janus Handler Location It is important to change the address of your handler in the proper sequence. It obviously is fatal to change the address while you are executing out of it in another window or using it for a JDisk. 0) Bring up your PC side as you do now, before you change anything, and copy the USE_A000.COM program to your PC boot disk. Go into your AUTOEXEC.BAT file and put in a line to execute it (with no parameters) as early as possible. You -must- execute it before you invoke ATIME or any other Janus service. 1) Boot from a copy of the PCINSTALL diskette that Janus comes on. This insures that you are -not- using the Bridgecard. 2) Click on the PC drawer to open it and click on the PCPREFS utility to run it. Select an address of A000 and save it back. [Note - This setting is saved in SYS:PC/SYSTEM/2500prefs. If you, like myself, boot from a floppy but then switch to a harddisk, be sure to place a copy of the 2500prefs file on both your boot disk and your harddisk for consistency.] 3) Back in the PC drawer, click on the PCHARD icon to perform a hardware reset on the PC. This is because the PC BIOS has already made a determination of where the handler memory is located, even though you have not run any PC-interaction software on the Amiga side. You should see the floppy light flash a little here as the PC resets itself. Your Janus card is now addressed for A000 and ready to roll. Limitations of This Approach 1) Cannot use it when autobooting the PC from the Amiga side. 2) Cannot use it if you are using any PC device drivers that will be invoking Janus services, as they are too early. I do not know of any such at this time, but since I am developing some, I will be converting this into a device driver that must be placed before any Janus-using drivers. To avoid consuming PC memory for a one-time operation, such a device driver will signal failure for its initialization, after it has invoked the ROM extension, which will cause it to be removed from the PC's memory. The Correct Solution The correct way to implement this is for Commodore to enhance their Janus software. While the handler memory moves around, the 16 Kb or parameter memory is fixed at F000 (XT) or D000 (AT). These addresses are in the range scanned by the BIOS for ROM extensions (the D000 certainly is, the F000 I think is) and could be used to gain control during the bootup process. It would be possible for PCWINDOWS to realize that the PC preference setting is for A000, and to stuff a dummy ROM extension in an initially-unused portion of parameter memory that consists solely of a proper signature and a far jump to the real ROM extension at A000. The dummy ROM extension would then be overwritten as the parameter memory is used.