There was one of these in the Computer Science lab where I hung out playing with the DG.
Basic machine specs are a 6 MHz 68000 and 256 kB RAM.
Disks are 80 tracks of five 1024-byte sectors each side. I wrote some code which operates on a binary image and reads the basic file system.
I kind-of cheated by looking through the disk images and finding some source code on the DEVTOOLS disk, file ino.h.
struct INODE { UINT16 mode; UINT16 links; UINT16 uid; UINT16 gid; UINT32 size; UINT8 addr[40]; /* In threes */ UINT32 time1, time2, time3; } *inode; struct DIR { UINT8 foo; UINT8 inode; char filename[14]; } *dir;Block addresses start at cylinder 1 (cylinder 0 is reserved, looks like).
in mode size block1 filename 02 41FF 00000060 000011 . 02 41FF 00000060 000011 .. 66 81B4 0000009D 000012 __vol1__ 65 41FF 00000030 000013 m 63 816D 00000F16 000015 ds.maint 62 41FF 00000050 000019 usrReading the usr directory using
dir = &disk.byte[BLOCK_TO_ADDRESS(0x19)]; in mode size block1 filename 62 41FF 00000050 000019 . 02 41FF 00000060 000011 .. 61 41FF 000000D0 00001A bin 5D 41FF 00000130 00005A lib 44 41FF 00000270 000262 includeSeems to work.
From a reverse-engineering point-of-view, the Diagnostics disk is probably the most interesting. It contains a stand-alone boot environment as well as a file system, although the inodes start on cylinder 7 -- the first six cylinders are reserved on a bootable disk, maybe?
(Later. I compared the first sector of LDEVTOOL.BIN to that of DIAGS.BIN. LDEVTOOL byte 0x5d = 0x0A = 10 and DIAGS.BIN byte 0x5d = 0x3c = 60. Coincidence? I think not. Software updated.)
root directory at inode 0x02, block address = 00000010, byte address = 00013000 in mode size block1 filename address in image 02 41FF 00000130 000010 . 00013000 02 41FF 00000130 000010 .. 00013000 66 81B6 00000187 000011 README 00013400 65 8124 00008AAC 000012 coma 00013800 64 8124 0000524D 000036 coma.doc 0001C800 63 81F8 00016E20 00004C comb 00022000 62 81ED 0000277C 0000A9 crt 00039400 61 81B6 000128DB 0000B3 doc.comb 0003BC00 60 81B6 000158F6 0000FF doc.pio 0004EC00 5F 8124 00005724 000157 fdtest 00064C00 5E 8124 000098B8 00016E hdtest 0006A800 5D 81B6 0000609B 000196 hdtest.doc 00074800 5C 81ED 00006434 0001B0 kbd 0007B000 5B 8124 00007270 0001CB kbtest 00081C00 5A 8124 00002E54 0001E9 mem 00089400 59 81F8 00003AE0 0001F6 memlow 0008C800 58 8124 000027B0 000206 mmu 00090800 57 81F8 0000BD4C 000210 pio 00093000 56 81ED 00000B88 000241 prt 0009F400
So here's the README file:
Files in this directory: Stand alone objects: coma 1.6 3/5/83 fdtest 2.7.1.1 3/4/83 hdtest 2.15 3/4/83 kbtest 2.2 3/4/83 mem 1.4 3/4/83 mmu 2.2 3/4/83 Objects that run under UNIX: crt 1.5 3/4/83 prt 1.2 3/4/83 kbd 1.2 3/4/83 Documentation files: README this file coma.doc 1.3 1/17/82 hdtest.doc 1.1 11/14/83 doc.comb 1.1 11/14/83 doc.pio 1.1 11/14/83
I ran the UNIX strings on the diagnostic disk and found interesting things.
coma mentions a DART, which is the Z-80 name for a dual UART.
comb tests a completely different kettle of fish, and it looks as if it passes Intel hex records to the embedded Z-80.
1 - Test 1.1 - Self-Test Execution 2 - Test 1.2 - Interface Registers 3 - Test 1.3 - Dual-Port Ram Test w/o Refresh 4 - Test 1.4 - Dual-Port Ram Parity Logic 5 - Test 1.5 - Z-80 Instruction Execution 6 - Test 1.6 - Dual-Port Ram Test with Refresh 7 - Test 1.7 - Z-80 NMI Logic 8 - Test 1.8 - Dual-Port Ram Memory Fading 9 - Test 2.1 - Z-80 I/O Address Bus a - Test 2.2 - Z-80 Memory Address Bus b - Test 2.3 - Dual-Port Ram Test with CLB Accesses c - Test 2.4 - Interrupt Handshake Logic d - Test 2.5 - CTC and SIO Logic
fdtest gives away very little (looks like four floppies are supported) and so does hdtest (the documentation mentions Western Digital and Xebec).
(Later: Oooh look. It's a WD1001-CLB.)
Drive Type options list: A10 - Seagate 10 Megabyte (ST412) B05 - Miniscribe 5 Megabyte B10 - Miniscribe 10 Megabyte C20 - Ampex 20 Megabyte G25 - Atasi 25 Megabyte H25 - Evotec 25 Megabyte I20 - Disctron 20 Megabyte J20 - CDC 20 Megabyte J30 - CDC 30 Megabyte K40 - Maxtor 40 Megabyte K50 - Maxtor 50 Megabyte Z05 - Seagate 5 Megabyte (ST506) OTHER - (Use the 'init' command to select device)
Update 2020-01-01: I found Fritz Hohl's 2016 blog post which gives a lot more information on the Fortune 32:16. Even better are John Bass' recent comments on that blog post, giving a lot of insight into the company as well as the hardware.
|
Back to Wouter's Page | (This page last modified 2020-06-14) |