Netboot Mailing List (by thread)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: 32 kB ROM on 3c509b


> I tried to send this e-mail (which quotes your) to netboot
> mailing list, but seems it was ignored - at least I did not
> receive a copy of the mail from netboot yet.

hmm, wierd - mine took quite some time to get through, too -
but by far less than two days =:-)

> > when trying to use a 32 kB ROM on a 3com 509b I noticed that only 16 kB
> > of the ROM were accessible. A bit of research showed that the ROM on these
> > cards is paged in 16 k chunks.
> I have several 3C509-s, and they behave differently as bootrom
> size is concerned: some of them accept 32kB ROM and show it as
> 32kB, some allow 16kB only (or maybe they just show 16kB, and
> the remaining 16 can be accessed using paging register?).

Any way to tell "from the outside" whether the card is able to
map 32 k into RAM at once?

> But, from other side, I was capable to make dual-boot bootrom
> (netboot + NetWare, with choice during boot) for the 3C509B
> which fits into 16kB, so I did not investigate it further.

As of yet, I'm using some old version of netboot that's smaller
than 16 kB - but I've patched 0.9.8 to disable any possibilities
to cancel the net boot, and so as I'm about to update the
ROMs anyway, I wanted to switch to the newer version. Maybe I
should just do that same patch for some older version? Does the
new version have any major advantages for booting pentium 75/133

> > Do you think that it is (easily) possible to change netboot so that it
> > can be used with such a paged ROM?
> I do not remember details, but seems almost every bootrom does
> the following: 1. on rom-check stage of boot it is detected
> and checksummed by BIOS, then BIOS makes far call to segment:3,
> the procedure there modifies some int vector and returns;
> 2. when the int is invoked (it happens when BIOS attempts to
> boot OS) it makes some checks (e.g. if there is hard disk, or
> there is floppy in a drive, maybe ask user what kind of boot)
> and either allows disk boot, or 3. copies (or uncompresses)
> ROM contents to RAM, and passes control to the code in RAM;
> 4. the code in RAM processes network boot.
> In case of netboot, stage 3 uncompresses.

Yep, that far I understood the source code.

> First two stages need little code which is usually located at
> start of bootrom, so paging does not affect it; stage 3 must

Uh? You mean, one doesn't have to switch pages for completely
executing it? But nevertheless it's "paged away" when switching
pages, so one either would have to duplicate that piece of code
in the ROM at the page bounderies or also copy it to RAM before
starting decompression of the actual ROM.

> access all boot code. This means in case of netboot one need
> either to modify uncompress code to support paging (maybe it
> is easy, seems the code does LODSB followed by decision what
> to do with the byte, and need just replace LODSB with call to
> get_next_byte_from_paged_rom); or move entire ROM (all pages)

There seems to be some such mechanism anyway to allow the
ROM to be fetched from some serially interfaced flash EEPROMs
or such, I didn't completely understand that ...

> to RAM, then process uncompressing as usually; seems the
> second is simpler - note some information like base address
> must be found before and kept during accessing ROM pages.

At least it likely would avoid having to fiddle about
with the inner workings of netboot =:-)

Actually, I expected there to be some netboot developer on this
list who could point out how one most easily could build this
paging thingie into the code, "structurewise", so I wouldn't
have to understand the structure from the source code
alone ... =:-)

BTW, are there any problems with cache that doesn't expect some
ROM location to change by itself? Just came to my mind ...

> Finding and activating 3C509B board seems to be quite
> sophisticated, and it is necessary - note you must access
> the board before you have its driver. 
> Examples available: Crynwr (formerly Clarkson) packet driver
> for 3C509, Linux driver (drivers/net/3c509.c); both use
> id_port in range 0x110-0x1f0 with step 0x10 to find the 3C509.
> The id_port usage is described on pages 66-68 of the manual.

Yep, that's another somewhat difficult problem, at least if one
wants to solve it generally, because that would make netboot
itself NIC dependent, which would not be very nice[tm] =:-)

> Thanks for URL of the manual (
> ~wally/Projects/EtherDAQ/docs/Networking/3c5x9b.pdf)

NP, was happy to find it on the web, too :-)

Cya, Florian
This Mail was sent to netboot mailing list by:
Florian Zumbiehl <>
To get help about this list, send a mail with 'help' as the only string in
it's body to If you have problems with this list,
send a mail to

For requests or suggestions regarding this mailing list archive please write to