• Please review our updated Terms and Rules here

Zenith Z-100 can read early 8" 86-DOS disks

retrogear

Veteran Member
Joined
Jan 29, 2014
Messages
1,125
Location
Minnesota
I was able to assemble Zenith's MS-DOS 1.25 source code to produce a functioning IO.SYS and by changing two variables in the disk tables, when it senses an 8" SSSD it reads
the directory on track 2 and lowers the number of directory entries. It can now read the files on an 8" 86-DOS V1.1 disk. This is such a versatile machine.
86DOS11T.JPG
 
I was able to assemble Zenith's MS-DOS 1.25 source code to produce a functioning IO.SYS and by changing two variables in the disk tables, when it senses an 8" SSSD it reads
the directory on track 2 and lowers the number of directory entries. It can now read the files on an 8" 86-DOS V1.1 disk. This is such a versatile machine.
This is something I'd like to try on my Z100... would you be able to post your modified IO.SYS here?
 
Sure. I put these on a 160k 5.25 to boot up. It took almost an hour to assemble IO.SYS on the Z100. It supports the hard disk too.
Just to clarify, this is still booting and running MS-DOS 1.25.

Larry G
 

Attachments

  • Z-DOS.zip
    12 KB · Views: 3
Last edited:
@PorkyPiggy @RichCini or anyone else

Here is the changes I made in the Z-DOS 1.25 IO.SYS source code when it encounters an 8" SSSD. Reserved sectors increased from 4 to 52 so it starts directory on track 2
and number of directory entries lowered from 104 to 64. Changes have comments marked with ##. This works good for 86-DOS V1.00 and V1.1
I'm trying to find a formula to read the earlier version disks such as .34. Is that possible ? What was the change ?

; disk table for 8" SSSD

DR8S1 LABEL BYTE ; single density, 8 inch
ERRNZ DR8S1,DPT_SECSIZ
DW 128 ; Sector size
ERRNZ DR8S1,DPT_CLUSIZ
DB 4 ; Cluster factor
ERRNZ DR8S1,DPT_RESSEC
; DW 4 ; Reserved sectors
DW 52 ; ## good for 86-DOS 1.x
ERRNZ DR8S1,DPT_FATCNT
DB 2 ; Number of FAT's
ERRNZ DR8S1,DPT_MAXENT
; DW 104 ; Number of directory entries
DW 64 ; ## good for 86-DOS 1.x
ERRNZ DR8S1,DPT_DSKSIZ
DW 77*26 ; Number of physical sectors
ERRNZ DR8S1,DPT_SIZE
 
I found an article An Inside Look at MS-DOS by Tim Paterson where he goes into detail about the DOS layout on an 8" SSSD including the 32 bit directory entries which are used in 86-DOS 1.x. Since the directory
takes up 17 sectors 17x128 = 2,176 then divide by 32 gives max of 68 entries so maybe my MAXENT should be 68 instead of 64. I see from the work done by you guys recently including the layout of a 16 bit directory entry
that versions prior to .42 would be a major rewrite of the Z-DOS.SYS module as well.
sector map.JPG
 
Scratch that. I raised MAXENT to 68 and DIR had gibberish at the end. Back to 64 it is. So much for math ...

Larry G
 
It is not possible to read 86-DOS 0.x disks from MS-DOS, the directory format changed in 86-DOS 1.00 and MS-DOS dropped support for the old directory format.

I can try make you an 86-DOS 0.x boot disk that boots to 86-DOS instead of MS-DOS though - give me some time.

Sincerely,
Pig
 
The BIOS for 86-DOS 0.x is not ready yet, but I think I've hacked the Z-100 MS-DOS 1.25 BIOS enough to be compatible with 86-DOS 1.14. It uses the following disk config:
Code:
Drive A - Z-DOS 5.25" 160K
Drive B - Z-DOS 5.25" 160K
Drive C - Z-DOS 8" 250.25K
Drive D - Z-DOS 8" 250.25K
Drive E - 2754K 5.25" Winchester partition 1
Drive F - 2754K 5.25" Winchester partition 2

You might want to modify the 8" configs to match whatever you used to read that 8" 86-DOS 1.14 disk. I don't know how to make Z-100 compatible 160K MS-DOS disks, so I've attached a .ZIP archive of the files instead.

Lastly, just to be crystal clear - I have not tested this BIOS and there is absolute no guarantee that it is going to work. In fact, I'm expecting it to fail in one way or another. You might want to watch out for stack overflows, because 86-DOS's I/O stack is tiny compared to MS-DOS 1.25. With that said, even if it doesn't work on first try, it shouldn't be too hard to debug and fix. If it takes you about an hour to build the BIOS, maybe you should try building it under virtualized (not emulated) MS-DOS or 32-bit Windows.

Sincerely,
Pig
 

Attachments

  • z-100_86-dos-1.1-files.zip
    31.1 KB · Views: 1
  • z-100_bios_86-dos_1.1_v1.zip
    76.5 KB · Views: 1
copying your io.sys z-dos.sys and command.com it boots until error loading command.com. This is with placing those as the 1st 3 files on a 160K 5.25 z-dos boot disk

86dosz error.JPG
 
Last edited:
That's also the error that happens if there is no command.com so I'm speculating when 86-DOS launches, it can't read the directory.
Also I haven't found a suitable environment to actually build this from Windows emulation yet.

Larry G
 
That's also the error that happens if there is no command.com so I'm speculating when 86-DOS launches, it can't read the directory.
Also I haven't found a suitable environment to actually build this from Windows emulation yet.

Larry G
It might just be a stack overflow... or it could be something else. You'll have to debug it, unfortunately. Because I don't have a Z-100 machine, I can't really help you much with the debugging. I have, however, made another version of the BIOS with a 256-byte stack. Don't expect it to work but you can give it a try.

Sincerely,
Pig
 

Attachments

  • z-100_86-dos_1.1_iosys_v2.zip
    6.9 KB · Views: 1
  • z-100_bios_86-dos_1.1_v2.zip
    77.1 KB · Views: 1
You're welcome, hope you'll be able to get it working. Meanwhile, I found Joseph Matta's Master's thesis (https://vc.bridgew.edu/cgi/viewcontent.cgi?article=1080&context=theses) on a Z-100 emulator, and improved it enough to boot MS-DOS 1.25.

1709193777183.png

Joseph's 8088 emulation was off, so I had to fix it to get MS-DOS 1.25 booting. I've also added a proper debugger to the emulator, which should be able to help me to figure out why my 86-DOS 1.14 port refuses to load COMMAND.COM (I suspect stack overflow, as usual).

Sincerely,
Pig
 
Alright, I couldn't get the 160K version to work (under the emulator), so I made this 320K version. It boots, that's about all I can say. @retrogear, if you have double-sided double-density (320 KiB) 5.25" disks and drives, give this one a try (make sure you image the disk, because the format is not 100% compatible with Z-DOS/MS-DOS 1.25).

1709210935507.png

I have also reverted back to v1 of the BIOS, because (unlike the IBM PC ports) there is no need for a custom stack. I have attached 2 ZIPs, one contains the source code of the BIOS and the other contains the disk images (160K and 320K, try 320K first).

The emulator is missing a lot of stuff - interrupt handling is still not perfect, timers aren't working properly, keyboard inputs are redirected to /dev/null and disk I/O is rather fragile. I am giving up on improving it, because I know nothing about the Z-100. The biggest issue preventing Joseph from booting Z-DOS/MS-DOS 1.25 was the fact that CLI disabled all interrupts, including NMIs and software interrupts. This basically disabled INT 21H entirely for the BIOS, and it's not hard to imagine that you can't access COMMAND.COM without being able to talk to the OS kernel. For people who are interested, Joseph's emulator is here: https://github.com/jmatta697/Custom_Z100_Emulator_Mod.

Sincerely,
Pig
 

Attachments

  • z-100_86-dos-1.1-v1.zip
    60.6 KB · Views: 1
  • z-100_bios_86-dos_1.1_320k_v1.zip
    806 KB · Views: 1
Woo hoo !!! That worked. Now I'll have to put in my 8" tweaks. Thanks a lot. I didn't know about the Z-100 emulator either. I'll have to study that.
Funny since it's leap day and this appears to be not y2k compatible I had to pick an early year that has a leap day. 2-29-84 works.
Had me wondering what was wrong with DATE.COM for a moment ...

86-DOS.JPG
 
Hmmm how do I get files in and out of this so I can stuff in my tweaked IO.SYS ? I think I got the vDos emulator to assemble your source.

Larry G
 
Hmmm how do I get files in and out of this so I can stuff in my tweaked IO.SYS ? I think I got the vDos emulator to assemble your source.

Larry G
Put them on a 320K Z-DOS 1.25 disk and change the first byte of both FATs (logical sectors 1 and 2) from 0xFF to 0xFE.

Sincerely,
Pig
 
That did it !! My hack of your bios can read an 8" SSSD 86-DOS 1.1 disk. This is reading a doc from the 86-DOS v1.1 SN1052 on bitsavers which is on my 8" floppy in C:
Oh and assembling the bios with vDos emulator took a few seconds ...


86dos 8in.JPG
 
Back
Top