Hi guys,
I've got my 3B1 emulator "mostly working" in that it runs the Boot PROM,
sees the floppy disc in the drive, and proceeds to boot from it, getting
as far as the Loader.
When it gets to the Loader, I get the following display:
AT&T UNIX(tm) pc
Loader version 3.51
Copyright (c) 1985, 1986
AT&T
All Rights Reserved
Searching floppy disk...
####
Searching hard disk...
... and it stops there. I can tell from the emulator log that it's
trying to get the hard drive controller to read CHS 0:0:0 and DMA the
data into RAM at 0x77830, but because the HDC isn't implemented, it
locks.
What I expected was for the Loader to pick up the boot files on the
Diags disk, boot from that, and ignore the HDD. Does anyone know what
"typical boot behaviour" is for a 3B1, 7300 or UNIX PC, when booted from
the Diagnostics floppy (Foundation Set, disk 1) ?
This is a bit of a head-scratcher -- I'm trying to figure out if there's
a problem with my FDC driver (wouldn't be the first one) or the
DMA/interrupt controller, or if the Loader really needs a hard drive
controller (or a really good fake) to boot the system.
I'd also really like to know why the DMA controller has two separate
direction control bits -- DMAR/W- and IDMAR/W-... this seems downright
silly, though in keeping with the rest of the TechRef. My "annotated
edition" corrects about a dozen minor and major errors in the register
set descriptions, and adds a bunch of informational sticky-notes and
scribbly comments to reinforce certain points. Ewwww...
If anyone's interested in playing with my emulator -- go to
<http://www.philpem.me.uk/code/3b1emu/>. Hit the link under "Mercurial
repository", then ".tar.bz2" to get a Tarball of the sources. Untar it.
Grab the boot PROMs, and put them in a directory called 'roms' as
'14c.rom' and '15c.rom'. Use IMDU (Imagedisk utility) on a DOS PC (or
inside Dosbox) to convert the Foundation Set disks from IMDs to binary
files, then copy the first Foundation disk (Diagnostics) as 'discim'.
Compile (you'll need libsdl, aka the Simple DirectMedia Layer) and run.
I know the code is a mess, patches to rectify this (or any of the other
millions of bugs) would be almost certainly be accepted :)
There's also no keyboard or mouse emulation yet, just the CPU, video,
RAM, ROM and a basic memory mapper and DMA emulation. As for Ethernet
emulation... that's on the "maybe later" list, right after "learn how
to
send and receive Raw Ethernet frames on Linux".
Thanks,
--
Phil.
classiccmp at philpem.me.uk
http://www.philpem.me.uk/