My answers to first person who tried to use my bootrom. (I removed all info irrelevent to the meritum of discussion) Date: Thu, 23 Dec 99 15:47:57 PST > Currently we got the ETHERBOOT and NETBOOT project working. But both packages > will not allow to boot an AT with 1MEG RAM because of the BOOTIMAGE copying. Has the AT any extended memory? Although my bootrom does not use it, and DOS kernel is loaded without need for it, there are some tasks later which may need some ramdrive to be created. They are: - COMMAND.COM needs to be available after boot, and its path must be specified during boot; I usually copy it to ramdrive; maybe you can specify path where COMMAND.COM will be, like SHELL=A:\COMMAND.COM S:\DOS622\ /P /E:1024 - configuration files created during boot are put on ramdrive - and ramdrive can be used to put there programs which are in SYS:LOGIN directory and are needed for boot (I have a "device driver" which can copy files from there); note you can access bootimage until network driver is loaded, and you must load some "network shell" then to access files from network - this means the "shell" must be kept on ramdrive before it is loaded; Novell solves the problem making their bootrom capable to use the driver once the bootrom detects it is loaded (in case it is IPX driver). It does not mean much memory is needed: 135kB is enough. > So we would like to try out your boot-rom if you would be so kind > to send us the boot-rom code. I will put on the WWW page (http://www.fuw.edu.pl/~jt/net-boot.html) links to the bootrom and the program it loads. And... I need some help: to tell me what my documentation need to contain to be good. Date: Tue, 4 Jan 00 22:54:45 PST > - mkbj.exe myoutputfile BOOTROMX.BIN NE2000.COM -n 0x65 10 0x300 > (If i got it right from the *.TP file than the last numbers are a vector and INT > and I/O Port..? Yes, but seems you missed boot file name (the file in SYS:LOGIN directory which is to be loaded into memory on start of boot). Unless the file is "-n", but I suppose it is driver option - I guess you want Novell conversion, vector 0x65, IRQ 10, IO 300h. > Results in : ROM overflow. The ROM image has some parameters (they can be defined while compiling it). One of them is ROMPAGES which defaults to 20h, resulting in 16kB ROM. The message says the ROM size is too small for the driver to fit. Try using e.g. /DROMPAGES=40h while compiling BOOTROMX.ASM. Crynwr NE2000 driver needs 9kB ROM - what is size of the driver you use? The BOOTROMX.BIN has same size as final ROM, first three bytes of the ROM are 55h AAh ROMPAGES, last 6 contain three words: end of code, end of "blank" storage, end of ROM - what they are? The MKBJ.EXE can support ROMs up to 32kB. My code uses about 2 kB of the size, all other is left for the packet driver. > If you want me to, i can assist you in setting up the initial docu. Thanks... hope I will have some time in near future to write it. Date: Wed, 5 Jan 00 16:21:46 PST > > > - mkbj.exe myoutputfile BOOTROMX.BIN NE2000.COM -n 0x65 10 0x300 > Do i have to specify the INT and IO address > for the IMAGE file to be created ? MKBJ does not check presence of these parameters, nor this check what they are - it just prepares ROM image to pass them to the driver. Maybe it would be more intuitive if the parameter order was slightly different, like: MKBJ output BOOTROMX.BIN server-file NE2000.COM args and the name should be something like MKROMIMG instead MKBJ. Values of these parameters are critical, and must match the card: if driver gets incorrect ones, it will not work with the card. > Today i will start to test it. > Just another question..... You mentioned that your image could > be booted from disk from testing !? How do you do this ? Get boot-emu.zip - it contains a program to setup this. There are two .BIN files which contain code used by BS-SETUP, and the BS-SETUP. It asks what drive contains boot sector, and what file contains boot ROM image. Then it writes bootsector to the drive, saving original bootsector in a file, which also contains code from ASKBOOT.BIN, and the ROM image. The ASKBOOT asks what boot is needed (disk or rom), and then processes it. Requirements: FAT-12 or FAT-16 disk/partition usable for boot. It can be large (>32MB) partition - BS-SETUP can handle it. It may be used to boot non-DOS OS, but must contain FAT FS. I am usually are careful enough to save original bootsector before using BS-SETUP. However I never noticed any problem. The BS-SETUP can also be used to remove ROM boot emulation. Date: Wed, 5 Jan 00 16:55:17 PST > Following messages are displayed on the client side: > Copyright Crynwr stuff..... > My ethernet address 00:00:34:56:12:45 > 1:ELNUSN Ok, it means the server was found - client side is OK. > It seems that the connection is established but i did probably > something wrong with the NET$DOS.SYS. > I created it with a bootable floppy and the programm DOSGEN.EXE. > Then i copied this onto the server into the SYS:LOGIN folder. And this cannot work - to minimize ROM space requirements I wrote a code which loads part of the file to some address (like 4000:0), and jumps to begin of the file. All other work must be done by the code loaded from server. Get the "my boot program" from section 2.2, and also "cleanup". You can also use LOADEXE found in the "my boot program" to create image which invokes just one .EXE without starting the system - providing the .EXE limits DOS calls it uses to these my bootrom supports - write to console by functions 02, 09, or 40h with handle 0 to 2, open files in SYS:LOGIN and subsirectories by function 3Dh and read them by 3Fh and close by 3Eh, seek by 42h, get/set interrupts by 35h/25h, seems function 3Fh can also be used to read from keyboard (read handle 0); and seems it is all, you cannot use DOS functions like 01,06,07,08 to read KB - use INT 16h... But it is enough to run simple Turbo-C program. Date: Thu, 6 Jan 00 14:35:08 PST > > The ASKBOOT > > asks what boot is needed (disk or rom), and then processes it. > > On my client, ASKBOOT loops back and asks the question again and ... and I understand why: it loads ROM image and attempts boot from it, and the ROM image reads boot sector from disk, founds it is OK, and boots from disk... if you are trying it on machine with floppy only, _remove_ the floppy from drive before hitting the 'R', and it should boot (the ROM image is read into memory before the ASKBOOT asks its question, therefore the floppy can be removed before answering); if you have harddrive, ROM should ask whether you want to boot from network or from disk (seems the question is "Boot from NetWare fileserver?") and you need answer 'network' (Y to the question) to boot from net. In a case I need use it more frequently I was patching the ROM image, removing disk and keyboard reads from it (I wrote some program to make these patches, but forgot where it is...). The patch may be: replace INT 16h by MOV AL,'Y', and MOV AX,201h / INT 13h by MOV AH,80h / STC / NOP / NOP. > What i have done: > mkbj heiko.bin bootromx.bin ne2000.com \\elnusn\mbootimg.exe 0x65 10 0x300 > (Interrupt and IO settings are ok and tested) > bs-setup A heiko.bin ->displays: Ready... > A file named BOOTFILE.BIN is created on Drive A. It is almost OK... seems the filename on server is wrong. Date: Sat, 8 Jan 00 22:20:06 PST > When booting MBOOTIMG.EXE the machine stalls....and nothing happens. some info about files in BOOTPROG.ZIP - it contains: MBOOTIMG.EXE (use ARJ to extract its source from it) LOADEXE.ASM/BIN - used by the MBOOTIMG.EXE The MBOOTIMG does something very simple: copies LOADEXE.BIN + specified file to SYS:LOGIN\NET$BOOT.SYS, and fills it to full 4kB block. Purpose of the LOADEXE.BIN is to allow EXE file to be run at boot time. Next, the EXE you get from: BOOTC-MK.ARJ - it contains all sources to make BOOTCONF.EXE and two batch files (A.BAT, M.BAT) to compile it. I used TC 1.5 and TASM 3.1, hope newer TurboC can be used, too. Then you need yet another file in SYS:LOGIN - NET$BOOT.DAT, on our server it contains lines like: 0x0000C0123456 d_622img.sys+smc8000.cfs japcxx 48.2yy and I don't remember if the japcxx and next parameter are used for anything here... I suppose the only necessary are ethernet address (preceded by 0x), and boot image name (d_622img.sys), optionally followed by CONFIG.SYS name (it is in SYS:LOGIN and there is limitation of its size to size of CONFIG.SYS in the boot image). The boot image can be made using DOSGEN. > (As far as i recognize it one has to write the servername in capital letters > otherwise the server won't be found !!) Strange... I supposed it to be case insensitive, but maybe I remember it incorrectly. I must check it. > What would be the procedure to boot a simple DOS. Described above. > In your docs you have mentioned to setup a ramdisk. > But a ramdisk could only be setup when a "system boot > file" could be read and executed. Yes, yes. I hope you will be able to boot now. Sorry, I did not write any good doc, and the one I wrote is in Polish, and was not included - before you asked the need for it was not sufficient (yes, there is need for end user who asks questions to find what the doc should contain). I will translate some of it: "!_README.!" To make boot-rom image you need: ROM-BOOT.BIN(.ASM), MKBI.EXE(.PAS,TURBO.TP), MKB.BAT, MKI.BAT and driver, for G/Ethernet AT use DRIVER\NE2000XL.COM, for SMC8000 DRIVER\SMC_WD.COM; Note: driver is PKLITE-d. Params for MKBI rom-image-name BOOTROM.BIN drivera-name server-program-name driver-parameters (first -n 0x65, rest depends on NIC). To make program on the server need: MBOOTIMG.EXE(.PAS,TURBO.TP), LOADEXE.BIN(.ASM) and some EXE Program BOOTCONF.EXE, used to boot was built using TC15 w/ BOOTCONF.PRJ (from BOOTCONF.C and TRACE.ASM - initally the first was planned to be configurator, the assembly part was added to trace boot when it fails, therefore such a names; now more sources are - the doc is obsolete). Two more programs are used in booted DOS image: NWBCOPY (PKLITEd to NWBCOPYL) and CLEANUP, first in C, next in ASM. USER\JT\BOOT\U (boot-rom simulation on disk/floppy): BS-SETUP EXE 6304 10-18-96 2:38p - setup BS-SETUP PAS 5067 10-18-96 2:38p - (source) TURBO TP 1226 10-18-96 11:42a - (TP config) (install/deinstall program to be invoked from boot sector, uses BOOTSECT.BIN and ASKBOOT.BIN, asks about disk/rom image) BOOTSECT ORG 512 10-18-96 2:48p - original bootsector from C: MKBS BAT 35 10-16-96 9:47p - makes BOOTSECT.BIN from ASM BOOTSECT BIN 512 10-18-96 2:50p - my boot sector BOOTSECT ASM 7244 10-18-96 12:16p - (source) MKAB BAT 55 10-18-96 11:55a - makes ASKBOOT.BIN from ASM ASKBOOT BIN 192 10-18-96 4:37p ASKBOOT ASM 1456 10-18-96 4:37p (boot image making on SYS:LOGIN): MBOOTIMG EXE 2880 10-24-96 9:39a - makes boot image MBOOTIMG PAS 563 10-24-96 9:39a - (source) TURBO TP 1226 10-23-96 11:18a - TP config LOADEXE BIN 607 10-24-96 11:56a - for begin of boot image (used by MBOOTIMG) LOADEXE ASM 7152 10-24-96 11:56a - (source) HEXVIEW EXE 6344 10-24-96 3:51p - example C program - read a file HEXVIEW C 1398 10-24-96 3:50p TCCONFIG TC 1711 10-22-96 3:34p - TC 1.5 config TC15BOOT NOT 458 10-22-96 10:06p - notes on TC 1.5 Caution: bootrom gives only handle read from KB, be careful in TC, better use BIOS than DOS calls. OBJLIST EXE 4456 10-25-96 3:02p - example TP program - bindery OBJLIST ZIP 3157 10-28-96 11:29a - (source) (seems the last could be used to show bindery without boot) "!PYTANIA" (questions) 1. how to make bootrom image? * build BOOTROM.BIN * use MKBI.EXE with proper parameters 2. how to boot from defined server? * using MKBI specify server with boot-image file (from SYS:LOGIN) name: \\serwer\boot-image-file-name 3. what EMPROM for what card? (for 32-pin socket: 28-pin EPROM can be used, but not any 28-pin: 27512 is OK, 27128 is wrong, I suppose 27256 is OK - seems it is problem of A14 pin; need put the EPROM in socket leaving 4 free pin holes on marked side of the socket (pin holes 1,2,31,32) 4. what are most known problems? - packet driver size - many interrupt vectors used by it - media type and half/full duplex on UTP fast (100M) - PNP/PCI - IRQ must be allowed for NIC 5. what are most important files on server? boot image: net$boot.sys (EXE + prefix), it reads configuration from net$boot.dat Date: Thu, 20 Apr 00 17:47:40 PST Note: programs I am writing about are subset of programs I wrote - one of things I want to find is what of them are really needed - many become useless since new ones were written because these new have all their functions. There was NWBCOPY.EXE, but I wrote NWBCOPY.SYS later.