Files
86-DOS-0.11/CPM Tools
Broken Pipe ff2d9aff6a Added CP/M tools
Added CP/M tools to build 86-DOS 0.11 under CP/M or Cromemco CDOS.
2024-03-24 23:34:05 +00:00
..
2024-03-24 23:34:05 +00:00
2024-03-24 23:34:05 +00:00
2024-03-24 23:34:05 +00:00
2024-03-24 23:34:05 +00:00
2024-03-24 23:34:05 +00:00

CP/M Building Tools

This folder contains some of the Z80 tools required for building and deploying 86-DOS 0.11 under CP/M (or Cromemco CDOS, the operating system @TimPaterson used). You will need these if you wish to create a working copy of 86-DOS 0.11 from pure source code.

Warning

These tools have only been tested under Cromemco CDOS 2.x. There is no guarantee that they will work under the official CP/M operating system or other CP/M-like operating systems. The source files are to be assembled using Cromemco's CDOS Z80 assembler, and you must have a Z80 CPU to run the binaries.

ASM86

This is a reconstruction of the SCP Z80/8086 Cross Assembler @TimPaterson used to develop 86-DOS. Original copies of this cross assembler are long gone, and the only thing we have now is a manual for it. Given that the 86-DOS ASM assembler is essentially an 8086 translation of this assembler, I wrote a utility that does the exact opposite of TRANS (named CIS) to translate 86-DOS 0.11's assembler back to Z80. After making some minor tweaks to the output, I was able to make it work, so here it is.

Tip

The Z80 source of the assembler is actually easier to read than the 8086 source because this assembler was originally written in the Z80 assembly language. When it was translated to 8086, a lot of boilerplate code were added, which made the code slightly difficult to follow. Now that it has been translated back to Z80, those boilerplate code have been removed.

ASM86 takes the following parameters: [x:]ASM86 [y:]name[.ijk] [S]

where

x is an optional disk drive specifier indicating the location of the ASM86.COM file. This parameter is required only if the COM file is NOT located on either drive A or the current drive. Legal values are A, B, C, and D.
y is an optional disk drive specifier indicating the location of the source file. This paramter may be omitted if the source file is on the current drive.
name is the name of the 8086 assembly language source file, without the 3-letter extension. The extension A86 is always assumed and may not be overriden.
ijk is an optional 3-letter drive assigment parameter. The first letter is the name of the drive on which the source file will be found. This overrides a disk specifier which precedes the file name. The second letter is the name of the drive to which the hex object file will be written, or Z if no object file is desired. The third letter is the name of the drive to which the listing file will be written, or X to send the listing to the console, or Z if no listing file is desired. Assembling with no listing is much faster since the source file will not be read from disk a second time.
S is an optional switch indicating that a symbol table is to be placed at the end of the listing.

This assembler can only produce Intel HEX files for object code, therefore you must convert them to binary before they can be executed on the 8086. Under CP/M, this can be done using the LOAD command. If you are using CDOS, which does not have LOAD, you will have to use DEBUG to load the .HEX file to memory and SAVE to save the loaded pages as a disk file.

Tip

Don't forget to rename the source files from .ASM to .A86.

DOSGEN

This is a tool I wrote to copy 86-DOS system files to the system area of IBM 8" SSSD floppies. It works in a similar way to CP/M's SYSGEN utility.

DOSGEN takes the following parameters: [x:]DOSGEN y: [T]

where

x is an optional disk drive specifier indicating the location of the DOSGEN.COM file. This parameter is required only if the COM file is NOT located on either drive A or the current drive. Legal values are A, B, C, and D.
y is a disk drive specifier indicating the disk upon which the 86-DOS system is to be written.
T is an optional switch indicating that a temporary copy of the system is to be used. A temporary system includes a temporary BIOS and a temporary command interpreter. Normally, the BIOS uses DOS to load the command interpreter, COMMAND.COM, from the file area. The temporary BIOS loads the command interpreter directly from the system area. This is useful when 86-DOS is being built and deployed for the first time, as the command interpreter cannot be put into the file area without a working copy of DOS, and a working copy of DOS needs the command interpreter. The temporary command interpreter differs from the normal command interpreter in that it includes RDCPM as an internal command. This is needed for copying the actual command interpreter from CP/M disks to DOS disks once the temporary system is booted.

To copy 86-DOS to a new floppy disk, you must have the files BOOT.COM, DOSIO.COM and 86DOS.COM on the current drive. If a temporary system is to be copied, TMPBIO.COM and TMPCMD.COM must also exist.