1. Hardware requirements: 8088-compatible CPU, network adapter, ability to execute this code during boot in a way standard BIOS does it with ROM-s, ROM space enough to put the code (about 2.5kB) and packet driver for network adapter, and enough real mode RAM - the RAM requirements consist of: - 81kB (defineable) area at top of memory below 640kB, which is used for code moved there from ROM, and a program loaded there from server and remaining resident during boot - 32kB (because of standard address of bootsector loading) - 16kB area to read first program - by default at segment 4000h, need move it (e.g. to 800h) if RAM is below 360kB; at initial stage of the boot, and later: - still the 81kB - as much as the system to be booted needs for its purposes - some area for RAM drive (when booting DOS, at least shell should be copied to it, also few config files are useful), fortunately this can be in extended memory if available; the 81kB area is released when boot finishes. These values: 81kB and 4000h are defineable in boot-rom source; the 16kB area for program is from its size. Practically, it is hard to find a PC-compatible with less than 256, or even 512kB RAM, and if the network adapter has a socket for boot-ROM, all requirements are easily met (oh, maybe with a need to redefine the segment 4000h for 256kB). There is a little possibility that the bootrom fits in 8KB (e.g. NE2000 driver has 6kB, +2.5 makes 8.5 - too big, but maybe some drivers are smaller); usually need 16kB EPROM. Even 64kB of extended memory is great plus - it can be used for RAM drive which can hold COMMAND.COM and config files. 2. Software requirements to use the bootrom: - packet driver for the network adapter - it must fit in the ROM, use PKLITE to compress it if need; raw ROM image made by assembler has predefined ROM size, and the packet driver must fit in free area of the image; MUST HAVE IT - a program which builds ROM (adds packet driver and args to the raw ROM image, computes checksum...) - AVAILABLE - a program which is loaded from the server - the bootrom reads the program into memory, and jumps to it, the program must continue boot then - there is AVAILABLE program for DOS boot which reads configuration file, finds entry with matching network adapter address, and uses it to select boot "disk" image and config.sys file for the DOS; if other system is to be booted, either the program must be modified or replaced by another, or a DOS must be booted first; the program must use limited set of DOS calls - it can open and read files on the server, write to screen, but cannot use DOS to read keyboard - use bioskey() if need - a NetWare compatible server - any Novell NetWare server from 3.01 should work, every version of MARS_NWE I tried worked, and also Windows NT NetWare server worked (after a fix in the bootrom code); important factors are: - reply to SAP Query "get nearest server" - "logout" makes SYS:LOGIN directory accessible - the program mentioned above must be there (in SYS:LOGIN) and the file must be readable; should have shared attrib (unnecessary for MARS if NetWare attribs are not enabled) - open/read/close requests are serviced (seems FCB open); MARS_NWE is AVAILABLE free for Linux - DOS 5.0 to 6.x - earlier DOS-es do not support memory adjustment by INT 2Fh function 4A06, newer not tested - a DOS program to free the 81kB area (cleanup) - AVAILABLE. Few other programs are very useful, but not necessary. 3. Software needed to recompile the bootrom and other code: - to assembly any .ASM sources (bootrom is one of them) need Borland TASM (I tried versions 1.01 and 3.0 with success), maybe MS MASM 5.1 or 5.0 will assembly it, too - to compile .C sources: I used Borland TC 1.5 (planned to be available free at http://community/borland.com/ after registration), I suppose TC 2.1 will work, too - to compile .PAS sources: I used Borland TP 5.5 - to produce executables some linker, and a kind of EXE2BIN are necessary - TC has TLINK included, MSDOS has EXE2BIN;