28 Oct 2001 M. K. Brewer Ideas on LD/Linux Drivers Problems ---------------------------------- The fact that the OS always loads correctly from the DOS boot floppy, plus the fact that it always loaded correctly using the previous version of Rad Hat Linux, makes me suspicious that there may be something going on with the current version of dosemu and Red Hat 7.1. The loader program uses a delay routine to wait for the OS to load before checking if it is running. There is the possibility that dosemu with Red Hat 7.1 isn't doing the delay correctly and the resulting delays are too short. Unfortunately, I can't find out anything about how the delay function operates. The program is written in Borland C, which I don't have, and delay() seems to be a Borland library function. If you have Borland C, then you might try writing a test program that reads the clock, calls delay(5000) for a 5 second delay, then reads the clock again and prints out the time difference. If the resulting delay is less than 5 seconds, you could try increasing the delays in AT6400.C (the one written by compumotor, not Petar's driver of the same name). I suppose you could also go back to the previous version of Linux (I beleive it was Red Hat 6.0) and see if that solves the problem. --- >From the source code: ER_ROMNORUN, "time-out waiting for processor startup", /* card did not respond as expected - the card controller was programmed (indicated by the "[1]" printed to the screen by the downloader) and the processor does not appear to have started running, the green led on the back of the card should have turn on and stay on after the card controller is programmed, check if downloading to correct card address, check if their is another card in the PC that uses the same address that the card is set to (network card, etc.), try a fresh copy of the operating system from the diskette that was shipped with the card, if the green led on the back of the card flashes briefly (200ms) during an operating system download attempt (and none of the above suggestions work) the card may need repair, also if the green led on the back of the card turns on and stays on and this error message still occurrs, the card may need repair */ . . . lca_program(); /* Download AT6400 OS */ delay(2000); /* delay increased from 600 msec for compatibility with Pentiums */ checkrunning(); . . . void checkrunning(){ if((inportb(basep+cstat) & 0x80) != 0) error(ER_ROMNORUN); } The change history is also pretty suspicious: ***************************************************************************** Revision History: Rev 1.0: June 1990 Tom Hergenrother created. Rev 1.1: 06/16/92 T.H. disabled interrupts around writing to XILINX part. Rev 1.2: 01/27/93 T.H. upgraded for aux2, error codes described, added feature list retrievable from bootroms. Rev 1.3: 11/09/93 M.S.M. fixed quiet mode. 01/20/93 M.S.M. increased time delay in checkrunning() from 600 msec to 1000 msec for Pentiums. Rev 1.4: 09/15/94 M.S.M. increased time delay in checkrunning() from 1000 msec to 2000 msec for 90MHz Pentiums. 09/15/94 M.S.M. added 500 msec delay before exiting loader to allow AT6400 OS to initialize itself. Rev 1.5: 12/06/96 M.S.M. added 250 millisecond delay after reseting the Xilinx part in lca_mode_program(). This fix was need on Pentiums >= 133MHz. ****************************************************************************/ The fact that they keep increasing the delay means to me that it is not a true delay using a BOIS call to the real time clock. Most likely it is some kind of delay loop that is processor speed dependent. This may be handled differently by dosemu than by DOS.