Altairz 80
Altairz 80
Altairz 80
24-Aug-2012
COPYRIGHT NOTICE
The following copyright notice applies to the SIMH source, binary, and documentation:
Original code for the AltairZ80 part published in 2002-2011, written by Peter Schorn
Copyright (c) 2002-2011, Peter Schorn
Permission is hereby granted, free of charge, to any person obtaining a copy of this
software and associated documentation files (the "Software"), to deal in the Software
without restriction, including without limitation the rights to use, copy, modify, merge,
publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL PETER SCHORN BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of Peter Schorn shall not be used in
advertising or otherwise to promote the sale, use or other dealings in this Software
without prior written authorization from Peter Schorn.
Based on work by Charles E. Owen (c) 1997. Additional device support by Howard M.
Harte and Ernie Price.
SIMH AltairZ80 1 of 59
1 Simulator Files ..............................................................................................................4
2 Revision History ............................................................................................................5
3 Background ...................................................................................................................6
4 Hardware.......................................................................................................................7
4.1 CPU .......................................................................................................................7
4.2 The Serial I/O Card (2SIO) ..................................................................................10
4.3 The SIMH pseudo device ....................................................................................12
4.4 The 88-DISK controller ........................................................................................12
4.5 The simulated hard disk .......................................................................................13
4.6 The simulated network .........................................................................................14
5 Sample Software .........................................................................................................15
5.1 CP/M Version 2.2 .................................................................................................15
5.2 CP/M Version 3 with banked memory .................................................................18
5.3 MP/M II with banked memory ..............................................................................21
5.4 CP/NET ................................................................................................................23
5.5 CPNOS ................................................................................................................24
5.6 CP/M application software ...................................................................................25
5.7 MITS Disk Extended BASIC Version 4.1 .............................................................27
5.8 Altair DOS Version 1.0 .........................................................................................28
5.9 Altair Basic 3.2 (4k) ..............................................................................................28
5.10 Altair Basic 4.0 (4k) ..............................................................................................29
5.11 Altair 8k Basic ......................................................................................................29
5.12 Altair Basic 4.0 .....................................................................................................30
5.13 Altair Disk Extended Basic Version 300-5-C .......................................................30
5.14 Altair Disk Extended Basic Version 5.0 ...............................................................31
5.15 Altair programming languages VTL-2 and MINOL ...............................................31
5.16 UCSD Pascal II.0 .................................................................................................32
6 Special simulator features ...........................................................................................32
6.1 Memory access breakpoints (8080/Z80 only) ......................................................32
6.2 Instruction breakpoints (8080/Z80/8086) .............................................................33
7 Brief summary of all major changes to the original Altair simulator ............................33
8 Appendix: Python script for converting MBL files to plain binary files .........................34
9 Appendix: How to bring up UCSD Pascal II.0 on SIMH ..............................................35
10 Vector Graphic, Inc. Simulation ..................................................................................43
10.1 Overview ..............................................................................................................43
10.2 48K Vector MZ .....................................................................................................44
10.3 56K Vector MZ .....................................................................................................45
10.4 56K Vector with HD-FD Controller .......................................................................45
10.5 Notes on Simulated Hardware .............................................................................46
10.6 Notes on the Vector Graphic Disk Image (VGI) File Format ................................46
11 IMSAI 8080 Simulation ...............................................................................................47
11.1 Overview ..............................................................................................................47
11.2 IMSAI 8080 with FIF Disk Controller ....................................................................47
12 North Star Horizon Simulation ....................................................................................48
12.1 Overview ..............................................................................................................48
SIMH AltairZ80 2 of 59
12.2 North Star Horizon with MDS-AD Disk Controller ................................................48
13 Compupro 8-16 Simulation .........................................................................................49
13.1 Overview ..............................................................................................................49
13.2 DISK1A High Performance Floppy Disk Controller ..............................................49
13.2.1 DISK1A Controller Parameters ................................................................................ 49
13.2.2 DISK1A Controller Limitations ............................................................................... 50
13.3 DISK2 Compupro Hard Disk Controller ...............................................................50
13.3.1 DISK2 Controller Parameters ................................................................................... 50
13.3.2 DISK2 Controller Configuration Registers .............................................................. 51
13.4 SELCHAN Compupro Selector Channel Controller .............................................51
13.4.1 DISK2 Controller Parameters ................................................................................... 51
13.5 DISK3 Viasyn ST-506 Hard Disk Controller ........................................................51
13.5.1 DISK3 Controller Parameters ................................................................................... 51
13.5.2 DISK3 Controller Configuration Registers .............................................................. 52
13.5.3 DISK3 Controller Limitations .................................................................................. 52
14 Cromemco 4/16/64FDC and CCS-2422 FDC Simulation ...........................................53
14.1 Overview ..............................................................................................................53
14.1.1 CROMFDC Controller Parameters ........................................................................... 53
14.1.2 CROMFDC Controller Configuration Registers ...................................................... 53
14.1.3 CROMFDC Controller Limitations .......................................................................... 54
15 Advanced Digital Corporation Super-Six Simulation ...................................................55
15.1 Overview ..............................................................................................................55
15.1.1 ADCS6 SBC Parameters........................................................................................... 55
15.1.2 ADCS6 SBC Configuration Registers ...................................................................... 55
15.1.3 ADCS6 SBC Limitations .......................................................................................... 56
16 N8VEM Single Board Computer Simulation ...............................................................57
16.1 Overview ..............................................................................................................57
16.1.1 N8VEM SBC Parameters ......................................................................................... 57
16.1.2 N8VEM SBC Configuration Registers ..................................................................... 57
16.1.3 N8VEM SBC Limitations ......................................................................................... 58
17 ImageDisk (IMD) Disk Image Support in SIMH ...........................................................59
17.1 Overview ..............................................................................................................59
17.2 References...........................................................................................................59
SIMH AltairZ80 3 of 59
This memorandum documents the Altair 8800 Simulator.
1 Simulator Files
scp.h
sim_console.h
sim_defs.h
sim_fio.h
sim_rev.h
sim_sock.h
sim_timer.h
sim_tmxr.h
scp.c
sim_console.c
sim_fio.c
sim_sock.c
sim_timer.c
sim_tmxr.c
AltairZ80/altairz80_defs.h
altairz80_cpu_nommu.c
altairz80_cpu.c
altairz80_dsk.c
altairz80_hdsk.c
altairz80_net.c
altairz80_sio.c
altairz80_sys.c
flashwriter2.c (Vector Graphic, Inc. FlashWriter II support by Howard M. Harte)
i8272.c (Generic Intel 8272 Disk Controller by Howard M. Harte)
i8272.h (Generic Intel 8272 Disk Controller by Howard M. Harte)
mfdc.c (Micropolis FDC support by Howard M. Harte)
mfdc.h (Micropolis FDC support by Howard M. Harte)
n8vem.c (N8VEM Single-Board Computer I/O module by Howard M. Harte)
s100_f64fdc.c (Cromemco 4FDC/16FDC/64FDC Floppy Controller by Howard M. Harte)
s100_adcs6.c (Advanced Digital Corporation (ADC) Super-Six CPU Board by Howard M. Harte)
s100_disk1a.c (CompuPro DISK1A Floppy Controller by Howard M. Harte)
s100_disk2.c (CompuPro DISK2 Hard Disk Controller by Howard M. Harte)
s100_disk3.c (CompuPro DISK3 Hard Disk Controller by Howard M. Harte)
SIMH AltairZ80 4 of 59
s100_fif.c (IMSAI FIF Disk Controller by Ernie Price)
s100_hdc1001.c (Advanced Digital Corporation (ADC) HDC-1001 Hard Disk Controller by Howard
M. Harte)
s100_mdriveh.c (CompuPro M-DRIVE/H Controller by Howard M. Harte)
s100_mdsad.c (North Star MDS-AD disk controller by Howard M. Harte)
s100_scp300f.c (Seattle Computer Products SCP300F Support Board module by Howard M.
Harte)
s100_selchan.c (CompuPro Selector Channel module by Howard M. Harte)
s100_ss1.c (CompuPro System Support 1 module by Howard M. Harte)
sim_imd.c (ImageDisk Disk Image File access module by Howard M. Harte)
sim_imd.h (ImageDisk Disk Image File access module by Howard M. Harte)
vfdhd.c (Micropolis FDC support by Howard M. Harte)
vfdhd.h (Micropolis FDC support by Howard M. Harte)
wd179x.h (WD179X support by Howard M. Harte)
wd179x.c (WD179X support by Howard M. Harte)
insns.h (8086 Disassembler by Simon Tatham and Julian Hall)
nasm.h (8086 Disassembler by Simon Tatham and Julian Hall)
disasm.c (8086 Disassembler by Simon Tatham and Julian Hall)
insnsd.c (8086 Disassembler by Simon Tatham and Julian Hall)
i86.h (8086 CPU by Jim Hudgens)
i86_decode.c (8086 CPU by Jim Hudgens)
i86_ops.c (8086 CPU by Jim Hudgens)
i86_prim_ops.c (8086 CPU by Jim Hudgens)
2 Revision History
24-Aug-2012, Peter Schorn (added capability to HDSK device for .IMD disk processing)
01-Aug-2011, Peter Schorn (added some explanation to Altair Basic)
29-Sep-2009, Peter Schorn (added debug flags to SIO, PTR and PTP)
18-Apr-2009, Peter Schorn (fixed some errata in the manual found by Kim Sparre and
added additional disk layouts to HDSK)
17-Aug-2008, Peter Schorn (moved VERBOSE/QUIET for DSK and HDSK to debug flags)
03-Jul-2008, Howard M. Harte (added support for hardware modules from Cromemco,
Advanced Digital Corporation, Seattle Computer Products and N8VEM)
29-Feb-2008, Howard M. Harte / Peter Schorn (added support for additional S100 and
CompuPro hardware modules, added 8086 CPU)
29-Dec-2007, Howard M. Harte / Peter Schorn (added support for Vector Graphic
Flashwriter II, Micropolis FDC, ImageDisk disk image File, IMSAI FIF disk controller, North
Star MDS-AD disk controller)
21-Apr-2007, Peter Schorn (added documentation for UCSD Pascal II.0)
SIMH AltairZ80 5 of 59
14-Apr-2007, Peter Schorn (added documentation for Howard M. Hartes hard disk
extensions)
05-Jan-2007, Peter Schorn (added networking capability, included CP/NET and CPNOS)
26-Nov-2006, Peter Schorn (SIO can now be attached to a file, SIO rewritten for better
efficiency)
15-Oct-2006, Peter Schorn (updated CP/M 2 operating system and application software
description)
17-Sep-2006, Peter Schorn (added Altair Basic 5.0 to the sample software, corrected
TTY/ANSI description)
21-Aug-2006, Peter Schorn (added MINOL and VTL-2 software, retyping courtesy of
Emmanuel ROCHE, fixed a bug in memory breakpoints and added a create (C) switch to
the attach command)
24-Jan-2006, Peter Schorn (transcribed documentation to Word / PDF format)
05-Apr-2005, Peter Schorn (removed bogus t-state stepping support)
24-Jul-2004, Peter Schorn (updated CP/M 2 and SPL packages)
12-Apr-2004, Peter Schorn (added MAP/NOMAP capability to switch off key mapping)
26-Jan-2004, Peter Schorn (added support for t-state stepping)
25-Feb-2003, Peter Schorn (added support for real time simulation)
9-Oct-2002, Peter Schorn (added support for simulated hard disk)
28-Sep-2002, Peter Schorn (number of tracks per disk can be configured)
19-Sep-2002, Peter Schorn (added WARNROM feature)
31-Aug-2002, Peter Schorn (added extended ROM features suggested by Scott
LaBombard)
4-May-2002, Peter Schorn (added description of MP/M II sample software)
28-Apr-2002, Peter Schorn (added periodic timer interrupts and three additional consoles)
15-Apr-2002, Peter Schorn (added memory breakpoint)
7-Apr-2002, Peter Schorn (added ALTAIRROM / NOALTAIRROM switch)
The first version of this document was written by Charles E. Owen
3 Background
The MITS (Micro Instrumentation and Telemetry Systems) Altair 8800 was announced on the January 1975
cover of Popular Electronics, which boasted you could buy and build this powerful computer kit for only
$397. The kit consisted at that time of only the parts to build a case, power supply, card cage (18 slots),
CPU card, and memory card with 256 *bytes* of memory. Still, thousands were ordered within the first few
months after the announcement, starting the personal computer revolution as we know it today.
Many laugh at the small size of that first kit, noting there were no peripherals and the 256 byte memory size.
But the computer was an open system, and by 1977 MITS and many other small startups had added many
expansion cards to make the Altair quite a respectable little computer. The "Altair Bus" that made this
possible was soon called the S-100 Bus, later adopted as an industry standard, and eventually became the
IEE-696 Bus.
SIMH AltairZ80 6 of 59
4 Hardware
We are simulating a fairly "loaded" Altair 8800 from about 1977, with the following configuration:
CPU Altair 8800 with Intel 8080 CPU board 62KB of RAM, 2K of EPROM with start boot ROM.
SIO MITS 88-2SIO Dual Serial Interface Board. Port 1 is assumed to be connected to a serial "glass
TTY" that is your terminal running the Simulator.
PTR Paper Tape Reader attached to port 2 of the 2SIO board.
PTP Paper Tape Punch attached to port 2 of the 2SIO board. This also doubles as a printer port.
DSK MITS 88-DISK Floppy Disk controller with up to eight drives.
4.1 CPU
We have 2 CPU options that were not present on the original machine but are useful in the simulator. We
also allow you to select memory sizes, but be aware that some sample software requires the full 64K (i.e.
CP/M) and the MITS Disk Basic and Altair DOS require about a minimum of 24K.
SET CPU ITRAP Causes the simulator to halt if an invalid opcode is detected (depending
on the chosen CPU).
SET CPU NOITRAP Does not stop on an invalid opcode. This is how the real 8080 works.
Note that some software such as 4K Basic apparently tries to execute
nonexistent 8080 instructions. Therefore it is advisable in this case to
SET CPU NOITRAP.
SET CPU 4K
SET CPU 8K
SET CPU 12K
SET CPU 16K
(in 4K steps)
SET CPU 64K All these set various CPU memory configurations.
SET CPU BANKED Enables the banked memory support. The simulated memory has eight
banks with address range 0..COMMON (see registers below) and a
common area from COMMON to 0FFFF which is common to all banks.
The currently active bank is determined by register 'BANK' (see below).
You can only switch to banked memory if the memory is set to 64K. The
banked memory is used by CP/M 3.
SIMH AltairZ80 7 of 59
SET CPU CLEARMEMORY Resets all internal memory to 0 and also resets the Memory
Management Unit (MMU) such that all memory pages are RAM. Note
that resetting the CPU does only clear the CPU registers but not the
memory nor the MMU.
SET CPU ALTAIRROM Enables the slightly modified but downwards compatible Altair boot
ROM at addresses 0FF00 to 0FFFF. This is the default.
SET CPU MMU Enables the Memory Management Unit (MMU) and clock frequency
support.
SET CPU NOMMU Disables the Memory Management Unit (MMU) and clock frequency
support. The simulator will run with maximum speed which can be more
than twice the speed as with MMU enabled. This feature is only
available for the Z80 and 8080 CPU using 64 KB.
SET CPU VERBOSE Enables warning messages to be printed when the CPU attempts to
write into ROM or into non-existing memory. Also prints a warning
message if the CPU attempts to read from non-existing memory. Also
shows the status of the MMU.
SET CPU STOPONHALT Z80 or 8080 CPU stops when HALT instruction is encountered.
SET CPU LOOPONHALT Z80 or 8080 CPU does not stop when a HALT instruction is
encountered but waits for an interrupt to occur.
The BOOT EPROM card starts at address 0FF00 if it has been enabled by 'SET CPU ALTAIRROM'.
Jumping to this address will boot drive 0 of the floppy controller (CPU must be set to ROM or equivalent
code must be present). If no valid bootable software is present there the machine crashes. This is
historically accurate behavior.
CPU registers include the following for the Z80 / 8080:
SIMH AltairZ80 8 of 59
HL 16 The HL register pair.
Register H is the high 8 bits, L is the lower 8 bits.
WRU 8 The interrupt character. This starts as 5 (Control-E) but some Altair software uses
this keystroke so best to change this to something exotic such as 1D (which is
Control-]). But make sure you can actually create this character via the keyboard.
BANK 3 The currently active memory bank (if banked memory is activated - see memory
options above)
COMMON 16 The starting address of common memory. Originally set to 0C000 (note this
setting must agree with the value supplied to GENCPM for CP/M 3 system
generation)
CLOCK 32 The clock speed of the simulated CPU in kHz or 0 to run at maximum speed. To
set the clock speed for a typical 4 MHz Z80 CPU, use D CLOCK 4000. The
CP/M utility SPEED measures the clock speed of the simulated CPU.
CPU registers include the following for the 8086:
SIMH AltairZ80 9 of 59
DS 16 Data Segment
ES 16 Extra Segment
SS 16 Stack Segment
PCX 20 virtual 20-bit program counter
SPX 16 Stack Pointer
IP 16 Instruction Pointer, read-only, to set use PCX which allows 20 bit addresses
FLAGS 16 Flags
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
1 1 1 1 OF DF IF TF SF ZF Res. AF Res. PF 1 CF
OF = Overflow Flag
DF = Direction Flag
IF = Interrupt Flag
TF = Trace Flag
SF = Sign Flag
ZF = Zero Flag
AF = Auxiliary Carry Flag
PF = Parity Flag
CF = Carry Flag
The CPU device supports the following debug flags (set with SET CPU DEBUG=f1{;f} or SET CPU
DEBUG to enable all of them)
LOG_IN Log all IN operations to the file specified with SET DEBUG <file>
LOG_OUT Log all OUT operations to the file specified with SET DEBUG <file>.
Use SET NODEBUG to close the file. Also note that there is no
logging if no file has been specified.
SIMH AltairZ80 10 of 59
SET SIO DEL Map the backspace character to delete SET SIO MAP must also have
been executed for this option to take effect - otherwise no mapping
occurs.
SET SIO QUIET Do not print warning messages
SET SIO VERBOSE Print warning messages (useful for debugging) The register SIOWL
determines how often the same warning is displayed. The default is 3.
SET SIO MAP Enable mapping of characters (see also SET SIO ALL/UPPER/BS/DEL)
SET SIO NOMAP Disable mapping of characters (see also SET SIO
ALL/UPPER/BS/DEL)
SET SIO BELL Displaying ^G (Control-G) sounds the bell
SET SIO NOBELL Do not display ^G (Control-G, bell character. This feature is useful
when a simulated program makes excessive use of the bell character.
Furthermore, the SHOW command prints more information.
SET SIO INTERRUPT Status port 0 creates an interrupt when a character becomes available.
The handler is at SIO register KEYBDH.
SET SIO NOINTERRUPT Status port 0 does not create interrupts.
SET SIO SLEEP Sleeps for SLEEP microseconds after a keyboard status check where
no character was available. This is useful in many operating systems to
avoid high real CPU usage in busy wait loops.
SET SIO NOSLEEP Do not sleep after unsuccessful keyboard status checks.
SET SIO PORT=Port/Terminal/Read/NotRead/Write/Reset/Reset/Data
Port: two digit hex address of the new port
Terminal: one digit decimal number of terminal line
Read: two digit hex mask indicating the bit(s) set when a character is
available
NotRead: two digit hex mask indicating the bit(s) to set in case no
character is available
Write: two digit hex mask indicating the bits set when a character can
be written
Reset: T (port has reset command) or F (port has no reset command)
Reset: two digit hex value of the reset command
Data: T (port accepts OUT, i.e. is a data port) or F (port only has IN, i.e.
is a status port).
The SIO device supports the following debug flags (set with SET SIO DEBUG=f1{;f} or SET SIO DEBUG
to enable all of them)
IN All IN operations on the SIO ports (status and data)
OUT All OUT operations on the SIO ports (status and data)
CMD All OUT operations which are interpreted as commands
VERBOSE All warning messages (currently: none)
SIMH AltairZ80 11 of 59
The PTP device supports the following debug flags (set with SET PTP DEBUG=f1{;f} or SET PTP
DEBUG to enable all of them)
IN All IN operations on the PTP ports (status and data)
OUT All OUT operations on the PTP ports (status and data)
CMD All OUT operations which are interpreted as commands
VERBOSE All warning messages (currently: use of unattached PTP)
The PTR device supports the following debug flags (set with SET PTR DEBUG=f1{;f} or SET PTR
DEBUG to enable all of them)
IN All IN operations on the PTR ports (status and data)
OUT All OUT operations on the PTR ports (status and data)
CMD All OUT operations which are interpreted as commands
VERBOSE All warning messages (currently: use of unattached PTR, attempt to
read past end of attached file)
The SIMH device supports the following debug flags (set with SET SIMH DEBUG=f1{;f} or SET SIMH
DEBUG to enable all of them)
IN All IN operations on the SIMH port
OUT All OUT operations on the SIMH port
CMD All illegal commands
VERBOSE All other warning or error messages
SIMH AltairZ80 12 of 59
The DSK device can be configured with
SET DSK<n> WRTLCK Disk <n> is locked, i.e. no write operations will be allowed.
The DSK device supports the following debug flags (set with SET DSK DEBUG=f1{;f} or SET DSK
DEBUG to enable all of them)
IN All IN operations on the controller port
OUT All OUT operations on the controller port
READ All read operations of the disk
WRITE All write operations on the disk
SECTOR_STUCK Warn when the controller appears to be stuck searching for a sector
TRACK_STUCK Warn when the controller appears to be stuck searching for a track
VERBOSE All other warning and error messages (e.g. disk is write locked, disk is
not attached)
SET HDSK<n> WRTENB Allow write operations for hard disk <n>.
SET HDSK<n> WRTLCK Hard disk <n> is locked, i.e. no write operations will be allowed.
SET HDSK<n> FORMAT=<value> Set the hard disk to <value>. Possible values are
HDSK (standard simulated AltairZ80 hard disk with 8192 kB capacity)
EZ80FL (128 kB flash)
P112 (1440 kB P112)
SU720 (720 kB Super I/O)
OSB1 (100 kB Osborne 1 5.25 Single Side Single Density)
OSB2 (200 kB Osborne 1 5.25 Single Side Dual Density)
NSSS1 (175 kB Northstar Single Side Dual Density Format 1)
NSSS2 (175 kB Northstar Single Side Dual Density Format 2)
NSDS2 (350 kB Northstar Dual Side Dual Density Format 2)
VGSS (308 kB Vector Single Side Single Density)
VGDS (616 kB Vector Dual Side Single Density)
DISK1A (616 kB CompuPro Disk1A Single Side Single Density)
SSSD8 (standard 8" Single Side Single Density floppy disk with 77 tracks of 26 sectors with
128 bytes, i.e. 256 kB capacity, no skew)
SSSD8S (standard 8" Single Side Single Density floppy disk with 77 tracks of 26 sectors
with 128 bytes, i.e. 256 kB capacity, standard skew factor 6)
SIMH AltairZ80 13 of 59
SSDD8 (standard 8" Single Side Double Density floppy disk with 77 tracks of 26 sectors
with 256 bytes, i.e. 512 kB capacity, no skew)
SSDD8S (standard 8" Single Side Double Density floppy disk with 77 tracks of 26 sectors
with 256 bytes, i.e. 512 kB capacity, standard skew factor 6)
DSDD8 (standard 8" Double Side Double Density floppy disk with 77 tracks of 26 sectors
with 512 bytes, i.e. 1025 kB capacity, no skew)
DSDD8S (standard 8" Double Side Double Density floppy disk with 77 tracks of 26 sectors
with 512 bytes, i.e. 1025 kB capacity, standard skew factor 6)
512SSDD8 (standard 8" Single Side Double Density floppy disk with 77 tracks of 15 sectors
with 512 bytes, i.e. 591 kB capacity, no skew)
512DSDD8 (standard 8" Double Side Double Density floppy disk with 77 tracks of 15
sectors with 512 bytes, i.e. 1183 kB capacity, no skew)
APPLE-DO (140 kB, Apple II, DOS 3.3)
APPLE-PO (140 kB, Apple II, PRODOS)
APPLE-D2 (140 kB, Apple II, DOS 3.3, 128 byte sectors for CP/M 2)
APPLE-P2 (140 kB, Apple II, PRODOS, 128 byte sectors for CP/M 2)
MITS (308 kB Altair standard disk with skew)
MITS2 (1016 kB Altair extended disk with skew)
V1050 (410 kB, Visual Technology Visual 1050, 512 byte sectors for CP/M 3)
Note1: The CP/M 3 implementation that comes with AltairZ80 automatically adapts to the
attached hard disk. It supports sector sizes of 128 bytes, 256 bytes and 512 bytes.
Note2: The CP/M 2 implementation that comes with AltairZ80 can also adapt to all hard disk
formats with 128 byte sectors. You need to set the correct format with this command after
attaching a file.
Note3: When attaching a file to a hard disk, the format is guessed based on the size of the
file. In case there is more than one possibility you may need to change the format after
attaching.
SET HDSK<n> GEOM=<t>/<s>/<l> Set the hard disk geometry to <t> tracks with <s> sectors with sector
length <l>. Alternatively you can also use GEOM=T:<t>/N:<s>/S:<s>.
Note that the Attach command will choose the correct format based on the size of the attached file. In case
the file does not yet exist it is created and the HDSK format will be used with the currently set capacity.
The HDSK device supports the following debug flags (set with SET HDSK DEBUG=f1{;f} or SET HDSK
DEBUG to enable all of them)
READ All read operations of the disk
WRITE All write operations on the disk
VERBOSE All other warning and error messages (e.g. disk is write locked, disk is
not attached)
SIMH AltairZ80 14 of 59
SET NET CLIENT Puts this machine into client mode.
ATTACH NET <IP-addr>:<port> Attaches the machine to the given IP address and listening on the
specified port. The IP address is given in a.b.c.d format (0 a, b, c, d
255). A typical example is ATTACH NET 127.0.0.1:4000 which
attaches to the local host at port 4000. Note that certain small port
numbers might require special permissions.
The NET device supports the following debug flags (set with SET NET DEBUG=f1{;f} or SET NET
DEBUG to enable all of them)
ACCEPT Show a message when a connection is accepted
DROP Show a message when a connection is dropped
IN Show all data received from the network
OUT Show all data transmitted to the network
5 Sample Software
Running an Altair in 1977 you would be running either MITS Disk Extended BASIC, or the brand new and
sexy CP/M Operating System from Digital Research. Or possibly, you ordered Altair DOS back when it was
promised in 1975, and are still waiting for it to be delivered in early 1977.
We have samples of all three for you to check out. We can't go into the details of how they work, but we'll
give you a few hints.
SIMH AltairZ80 15 of 59
If you need more storage space you can use a simulated hard disk on drives I: and J:. To use do "attach
HDSK0 hdi.dsk" and issue the "XFORMAT I:" resp. "XFORMAT J:" command from CP/M do initialize the
disk to an empty state.
SIMH AltairZ80 16 of 59
Name Ext Size Comment
GO .COM 0K start the currently loaded program at 100H
HALT .COM 2K execute the HALT operation for returning to the sim> command prompt
useful as the last command in a script
HDSKBOOT .MAC 6K boot code for hard disk
L80 .COM 12K Microsoft linker
LADDER .COM 40K game
LADDER .DAT 2K high score file for LADDER.COM
LIB80 .COM 6K library utility
LOAD .COM 2K load hex files
LS .COM 4K directory utility
LU .COM 20K library utility
M80 .COM 20K Microsoft macro assembler
MBASIC .COM 24K Microsoft Basic interpreter
MC .SUB 2K assemble and link an assembler program
MCC .SUB 2K read, assemble and link an assembler program
MCCL .SUB 2K assemble, link and produce listing
MOVER .MAC 2K moves operating system in place
OTHELLO .COM 12K Othello (Reversi) game
PIP .COM 8K Peripheral Interchange Program
PRELIM .COM 2K preliminary CPU tests
PRELIM .MAC 6K source code for PRELIM.COM
R .COM 4K read files from SIMH environment. Supports wild card expansion on
UNIX and Windows for reading multiple files.
RSETSIMH .COM 2K reset SIMH interface
RSETSIMH .MAC 2K assembler source for RSETSIMH.COM
SHOWSEC .COM 2K show sectors on a disk
SID .COM 8K debugger for 8080
SPEED .COM 2K utility to measure the clock speed of the simulated CPU
STAT .COM 6K provide information about currently logged disks
SUBMIT .COM 2K batch processing
SURVEY .COM 2K system survey
SURVEY .MAC 16K assembler source for SURVEY.COM
SYSCOPY .COM 2K copy system tracks between disks
SYSCPM2 .SUB 2K create CP/M 2 on drive A:, Digital Research CCP and BDOS
SYSCPM2Z .SUB 2K Create CP/M 2 on drive A:, CCPZ and Digital Research BDOS
SIMH AltairZ80 17 of 59
Name Ext Size Comment
TIMER .COM 2K perform various timer operations
TIMER .MAC 2K source code for TIMER.COM
UNCR .COM 8K un-crunch utility
UNERA .COM 2K un-erase a file
UNERA .MAC 16K source for UNERA.COM
USQ .COM 2K un-squeeze utility
W .COM 2K write files to SIMH environment. Supports CP/M wild card expansion for
writing multiple files.
WM .COM 12K word master screen editor
WM .HLP 4K help file for WM.COM
WORM .COM 4K worm game for VT100 terminal
XFORMAT .COM 2K initialize a drive (floppy or hard disk)
XSUB .COM 2K support for DO.COM
ZAP .COM 10K SuperZap 5.2 disk editor configured for VT100
ZSID .COM 10K debugger for Z80
ZTRAN4 .COM 4K translate 8080 mnemonics into Z80 equivalents
SIMH AltairZ80 18 of 59
Name Ext Size Comment
BIOS3 .SPR 4K
BNKBDOS3 .SPR 14K
BNKBIOS3 .SPR 4K
BOOT .COM 2K transfer control to boot ROM
BOOTGEN .COM 2K put a program on the boot sectors
CCP .COM 4K
COPYSYS .COM 2K
CPM3 .SYS 18K
CPMLDR .MAC 38K CP/M 3 loader assembler source
DATE .COM 4K date utility
DDT .COM 6K 8080 debugger
DDTZ .COM 10K Z80 debugger
DEFS .LIB 2K include file for BIOS3.MAC to create banked CP/M 3
DEVICE .COM 8K
DIF .COM 4K determine differences between two files
DIR .COM 16K directory utility
DO .COM 6K batch processing (SUBMIT.COM)
DUMP .COM 2K
ED .COM 10K
ERASE .COM 4K
GENCOM .COM 16K
GENCPM .COM 22K
GENCPM .DAT 4K CP/M generation information for banked version
GENCPMNB .DAT 4K CP/M generation information for non-banked version
GET .COM 8K
HELP .COM 8K help utility
HELP .HLP 62K help files
HEXCOM .CPM 2K
HIST .UTL 2K
INITDIR .COM 32K
L80 .COM 12K Microsoft linker
LDR .COM 4K CP/M loader with optimized loader BIOS
LDRBIOS3 .MAC 14K optimized (for space) loader BIOS
LIB .COM 8K Digital Research librarian
SIMH AltairZ80 19 of 59
Name Ext Size Comment
LINK .COM 16K Digital Research linker
LOAD .COM 2K
M80 .COM 20K Microsoft macro assembler
MC .SUB 2K assemble and link an assembler program
MCC .SUB 2K read, assemble and link an assembler program
PATCH .COM 4K
PIP .COM 10K Peripheral Interchange Program
PROFILE .SUB 2K commands to be executed at start up
PUT .COM 8K
R .COM 4K read files from SIMH environment
RENAME .COM 4K
RESBDOS3 .SPR 2K
RMAC .COM 14K Digital Research macro assembler
RSETSIMH .COM 2K reset SIMH interface
SAVE .COM 2K
SCB .MAC 2K
SET .COM 12K
SETDEF .COM 6K
SHOW .COM 10K
SHOWSEC .COM 4K show sectors on a disk
SID .COM 8K 8080 debugger
SUBMIT COM 6K batch processing
SYSCOPY .COM 2K copy system tracks between disks
SYSCPM3 .SUB 2K create banked CP/M 3 system
TRACE .UTL 2K
TSHOW .COM 2K show split time
TSTART .COM 2K create timer and start it
TSTOP .COM 2K show final time and stop timer
TYPE .COM 4K
UNERA .COM 2K un-erase a file
W .COM 4K write files to SIMH environment
XREF .COM 16K cross reference utility
ZSID .COM 10K Z80 debugger
SIMH AltairZ80 20 of 59
5.3 MP/M II with banked memory
MP/M II is an acronym for MultiProgramming Monitor Control Program for Microprocessors. It is a multi-user
operating system for an eight bit microcomputer. MP/M II supports multiprogramming at each terminal. This
version supports four terminals available via Telnet. To boot:
sim> attach dsk mpm.dsk
sim> set cpu itrap
sim> set cpu z80
sim> set cpu altairrom
sim> set cpu banked
sim> attach sio 23
sim> d common b000
sim> boot dsk
Now connect a Telnet session to the simulator and type "MPM" at the "A>" prompt. Now you can connect up
to three additional terminals via Telnet to the Altair running MP/M II. To re-generate the system perform "DO
SYSMPM" in the CP/M environment (not possible under MP/M since XSUB is needed).
SIMH AltairZ80 21 of 59
Name Ext Size Comment
ERA .PRL 2K erase command
ERAQ .PRL 4K erase command (verbose)
GENHEX .COM 2K
GENMOD .COM 2K
GENSYS .COM 10K
L80 .COM 12K Microsoft linker
LDRBIOS .MAC 14K loader BIOS
LIB .COM 8K library utility
LINK .COM 16K linker
LOAD .COM 2K loader
M80 .COM 20K Microsoft macro assembler
MC .SUB 2K assemble and link an assembler program
MCC .SUB 2K read, assemble and link an assembler program
MPM .COM 8K start MP/M II
MPM .SYS 26K MP/M system file
MPMD .LIB 2K define a banked system
MPMLDR .COM 6K MP/M loader without LDRBIOS
MPMSTAT .BRS 6K status of MP/M system
MPMSTAT .PRL 6K
MPMSTAT .RSP 2K
MPMXIOS .MAC 26K XIOS for MP/M
PIP .PRL 10K MP/M peripheral interchange program
PIP2 .COM 8K CP/M peripheral interchange program
PRINTER .PRL 2K
PRLCOM .PRL 4K
R .COM 4K read a file from the SIMH environment
RDT .PRL 8K debugger for page relocatable programs
REN .PRL 4K rename a file
RESBDOS .SPR 4K non-banked BDOS
RMAC .COM 14K Digital Research macro assembler
RSETSIMH .COM 2K reset SIMH interface
SCHED .BRS 2K schedule a job
SCHED .PRL 4K
SCHED .RSP 2K
SIMH AltairZ80 22 of 59
Name Ext Size Comment
SDIR .PRL 18K fancy directory command
SET .PRL 8K set parameters
SHOW .PRL 8K show status of disks
SPOOL .BRS 4K spool utility
SPOOL .PRL 4K
SPOOL .RSP 2K
STAT .COM 6K CP/M stat command
STAT .PRL 10K MP/M stat command
STOPSPLR .PRL 2K stop spooler
SUBMIT .PRL 6K MP/M submit
SYSCOPY .COM 2K copy system tracks
SYSMPM .SUB 2K do a system generation
SYSTEM .DAT 2K default values for system generation
TMP .SPR 2K
TOD .PRL 4K time of day
TSHOW .COM 2K show split time
TSTART .COM 2K create timer and start it
TSTOP .COM 2K show final time and stop timer
TYPE .PRL 2K type a file on the screen
USER .PRL 2K set user area
W .COM 4K write a file to SIMH environment
XDOS .SPR 10K XDOS
XREF .COM 16K cross reference utility
XSUB .COM 2K for CP/M DO
5.4 CP/NET
This software is included as part of the archive cpnet.zip. To bring up the server component:
sim> attach dsk cpnetserver.dsk
sim> d common ab00
sim> set cpu 64k
sim> set cpu itrap
sim> set cpu z80
sim> set cpu altairrom
sim> set cpu banked
sim> set simh timeroff
SIMH AltairZ80 23 of 59
sim> attach sio 23
sim> set net server
sim> at net 127.0.0.1:4000
sim> boot dsk
You can also execute AltairZ80 cpnetserver for the same effect or type do cpnetserver<return> at the
sim> command prompt. Then connect via Telnet to the simulator and type mpm <return> at the 0A>
command prompt to start the MP/M CP/NET server.
To bring up a client, start another instance of AltairZ80 and type the following at the command prompt:
sim> attach dsk cpnetclient.dsk
sim> set cpu 64k
sim> set cpu noitrap
sim> set cpu z80
sim> set cpu altairrom
sim> set cpu nonbanked
sim> reset cpu
sim> set sio ansi
sim> set net client
sim> at net 127.0.0.1:4000
sim> boot dsk
You can also execute AltairZ80 cpnetclient for the same effect or type do cpnetclient<return> at the
sim> command prompt. Then
A>cpnetldr<return> ; loads CP/NET client
A>login<return> ; to login
A>network b:=a: ; to map server drive A: to client drive B:
A>dir b: ; shows the contents of the server drive A:
The MP/M server is configured to accept one or two network clients. So you can repeat the previous
procedure for a second client if you wish.
Note that all system specific sources (SNIOS.MAC, NETWRKIF.MAC, MPMXIOS.MAC) are included on
cpnetclient.dsk respectively cpnetserver.dsk. When executing GENSYS for re-creating MP/M, keep in mind
to include SERVER.RSP and NETWRKIF.RSP as this is not automatically suggested by GENSYS.
5.5 CPNOS
CPNOS is a thin client front-end for the CP/NET server. This software is also included as part of the archive
cpnet.zip. In order to execute, first bring up a CP/NET server as described in section 5.4. Then for the
client, start another instance of AltairZ80:
sim> set cpu 64k
sim> set cpu noitrap
sim> set cpu z80
sim> set cpu noaltairrom
sim> set cpu nonbanked
SIMH AltairZ80 24 of 59
sim> reset cpu
sim> set sio ansi
sim> set net client
sim> at net 127.0.0.1:4000
sim> load cpnos.com f000
sim> g f000
For the same effect you can also execute AltairZ80 cpnos or type do cpnos<return> at the sim>
command prompt. At the LOGIN= prompt, just type return and you will see the familiar A> prompt but the
drive is the A: drive of the MP/M CP/NET server (you can also attach other disks to the server and they will
become available to the CPNOS client). You can also connect a second CPNOS client to the same CP/NET
server further connection attempts will block after logging in until another CPNOS client is disconnected
(e.g. by typing ^E to stop the simulator and then typing bye<return> at the simh command prompt). It is
also possible to have both a CP/NET client and a CPNOS thin client connect to the same CP/NET server.
Note that all system specific sources (CPBIOS.MAC and CPNIOS.MAC) are included on cpnetclient.dsk.
SIMH AltairZ80 25 of 59
Name Ext Size Comment
FORMEL .SPL 6K calculator, SPL source
INTEGER .PRO 2K Prolog demo program: Integer arithmetic
KNAKE .PRO 2K Prolog demo program: Logic puzzle
LINKMT .COM 12K Pascal MT+ 5.5 linker
MTERRS .TXT 6K Pascal MT+ error messages
MTPLUS .000 14K Pascal MT+ 5.5 compiler file
MTPLUS .001 12K Pascal MT+ 5.5 compiler file
MTPLUS .002 8K Pascal MT+ 5.5 compiler file
MTPLUS .003 8K Pascal MT+ 5.5 compiler file
MTPLUS .004 18K Pascal MT+ 5.5 compiler file
MTPLUS .005 8K Pascal MT+ 5.5 compiler file
MTPLUS .006 6K Pascal MT+ 5.5 compiler file
MTPLUS .COM 36K Pascal MT+ 5.5 compiler
PASCFORM .COM 36K Pascal formatter
PASCFORM .PAS 54K Pascal formatter source code
PASCFORM .SUB 2K create Pascal formatter
PASLIB .ERL 24K Pascal MT+ 5.5 run time library
PINST .COM 4K terminal installation program for PROLOGZ
PINST .SPL 16K terminal installation program for PROLOGZ, SPL source
PRIM .COM 2K compute prime numbers
PRIM .SPL 2K compute prime numbers, SPL source
PROLOGZ .COM 16K PROLOGZ interpreter and screen editor
PROLOGZ .SPL 54K SPL source for PROLOGZ
PROLOGZ .TXT 40K PROLOGZ documentation in German
PROLOGZU .MAC 2K helper functions for PROLOGZ in assembler
QUEEN .PRO 2K Prolog demo program: N-queens problem
READ .COM 4K transfer a file from the file system to the CP/M disk, see also
WRITE.COM. Often the name of this program is abbreviated to R.COM.
READ .SPL 10K SPL source for READ.COM
RELDUMP .COM 4K dump a .REL file to the console
RELDUMP .SPL 10K dump a .REL file to the console, SPL source
SHOWSEC .COM 2K show a disk sector
SHOWSEC .SPL 6K SPL source for SHOWSEC.COM
SIEVE .COM 2K compute prime numbers with a sieve
SIEVE .SPL 6K compute prime numbers with a sieve, SPL source
SIMH AltairZ80 26 of 59
Name Ext Size Comment
SPEED .COM 2K utility to measure the clock speed of the simulated CPU
SPEED .SPL 4K SPL source for SPEED.COM
SPL .COM 28K the SPL compiler itself
SPL .TXT 50K SPL language and compiler documentation
SPLERROR .DAT 8K error messages of the compiler
SPLRTLB .REL 2K SPL runtime library
SYSCOPY .COM 2K copy the system tracks between disks
SYSCOPY .SPL 6K SPL source for SYSCOPY.COM
WC .COM 6K word count and query facility
WC .SPL 14K word count and query facility, SPL source
WRITE .COM 2K write a CP/M file to the file system, see also READ.COM. Often the
name of this program is abbreviated to W.COM.
WRITE .SPL 8K SPL source for WRITE.COM
XFORMAT .COM 2K format a regular disk or a hard disk
XFORMAT .SPL 6K SPL source for XFORMAT.COM
SIMH AltairZ80 27 of 59
[FILES]
.[DIR 0]
SIMH AltairZ80 28 of 59
61911 BYTES FREE
OK
SIMH AltairZ80 29 of 59
TERMINAL WIDTH? [return]
WANT SIN-COS-TAN-ATN? [Y]
SIMH AltairZ80 30 of 59
HOW MANY RANDOM FILES? [3]
OK
SIMH AltairZ80 31 of 59
5.16 UCSD Pascal II.0
The software is part of the ucsd.zip archive. To run it, type altairz80 ucsd at your command prompt or
alternatively invoke altairz80 and type "do ucsd" at the "sim>" command prompt.
Useful hints:
? shows additional commands.
V shows online volumes in the Filer.
: denotes the prefixed volume.
Compiling the compiler and similar tools: Attach the correct disk and set the prefix to the
name of the mounted volume. Then the include files will be found.
To invoke the Basic compiler rename SYSTEM.COMPILER to PASCAL.COMPILER and
then rename BASIC.COMPILER to SYSTEM.COMPILER.
If you get "Please re-boot" after crunching a disk: type ^E, "g 0" and "pascal" to restart the
system.
DSK0 contains a fairly complete development system with Pascal, Assembler and Basic.
Filer: G(et, S(ave, W(hat, N(ew, L(dir, R(em, C(hng, T(rans, D(ate, Q(uit [B]
DSK0:
SYSTEM.MICRO 19 9-Feb-79 10 512 Datafile
SYSTEM.FILER 28 10-Apr-79 29 512 Codefile
SYSTEM.EDITOR 45 10-Feb-79 57 512 Codefile
SYSTEM.LINKER 22 10-Feb-79 102 512 Codefile
SYSTEM.COMPILER 68 8-Feb-79 124 512 Codefile
SYSTEM.SYNTAX 14 2-May-79 192 512 Textfile
SETUP.CODE 25 14-May-79 206 512 Codefile
BINDER.CODE 6 3-May-79 231 512 Codefile
SYSTEM.MISCINFO 1 10-Feb-79 237 192 Datafile
VT100GOTO.TEXT 4 10-Apr- 7 238 512 Textfile
VT100GOTO.CODE 2 10-Apr- 7 242 512 Codefile
SYSTEM.PASCAL 33 10-Apr- 7 244 512 Datafile
SYSTEM.LIBRARY 17 10-Apr- 7 277 512 Datafile
BASIC.COMPILER 30 11-Apr-79 294 512 Codefile
LOOP.TEXT 4 10-Apr- 7 324 512 Textfile
LOOP.CODE 4 10-Apr- 7 328 512 Codefile
Z80.ERRORS 8 28-Mar-79 332 70 Datafile
Z80.OPCODES 3 20-Dec-78 340 68 Datafile
SYSTEM.ASSMBLER 53 13-Apr-79 343 512 Codefile
< UNUSED > 98 396
19/19 files<listed/in-dir>, 396 blocks used, 98 unused, 98 in largest
SIMH AltairZ80 32 of 59
Execution will stop whenever an operation accesses <location>. Note that a memory access breakpoint is
not triggered by fetching code from memory (this is the job of regular breakpoints). This feature has been
implemented by using the typing facility of the SIMH breakpoints.
SIMH AltairZ80 33 of 59
Added additional consoles (useful for MP/M)
Added MP/M II banked version as sample software
Added networking support for CP/NET and CPNOS
import sys
if len(sys.argv) <> 3:
print 'Usage %s inputmbl.bin output.bin\n' % sys.argv[0]
sys.exit(1)
f = file(sys.argv[1], 'rb')
b = f.read()
f.close()
i = b.index(chr(0) * CHR0 + chr(0) + chr(0x3c)) + CHR0 + 2
result = [chr(0)] * len(b)
k = 0
count = ord(b[i])
while count and (ord(b[i - 1]) == 0x3c):
l = ord(b[i + 1]) + (ord(b[i + 2]) << 8)
checkSum = 0
for j in range(count):
result[l + j] = b[i + 3 + j]
checkSum += ord(b[i + 3 + j])
expectedCheckSum = ord(b[i-2])
SIMH AltairZ80 34 of 59
receivedCheckSum = expectedCheckSum
if k == 1:
receivedCheckSum = previousCheckSum & 255
elif k > 1:
receivedCheckSum = (previousCheckSum - 1) & 255
if receivedCheckSum <> expectedCheckSum:
print 'Checksum error in record %i. Got %02X and expected %02X ' % (
k, receivedCheckSum, expectedCheckSum)
i += count + 5
count = ord(b[i])
k += 1
previousCheckSum = checkSum
i = len(result)
while result[i - 1] == chr(0):
i -= 1
f = file(sys.argv[2], 'wb+')
for c in result[:i]:
f.write(c)
f.close()
print '%i load records processed and %i bytes written to %s' % (k, i,
sys.argv[2])
to
000060 C2 96 1A 21 FF FF C3 AC 1A C3 00 00 D1 2A 1A 03 |B..!C,.Ci.....|
SIMH AltairZ80 35 of 59
Current Track Current Sector Current Block Current Drive
0005 000C 000B A:
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F -----ASCII------
000000 09 29 29 EB 01 36 00 2A 94 02 19 09 C9 E1 22 90 |.))k.6.*....Ia".|
000010 02 E1 22 92 02 D1 EB 22 94 02 EB 2A 90 02 06 08 |.a"..Qk"..k*....|
000020 1A BE C2 BA 1A 23 13 10 F7 21 00 00 E5 2A 94 02 |.>B:.#..w!..e*..|
000030 EB 2A 92 02 73 23 72 C3 A4 03 D2 D3 1A 2A 94 02 |k*..s#rC$.RS.*..|
000040 11 08 00 19 5E 23 56 7B 3D B2 C2 96 1A 21 01 00 |....^#V{=2B..!..|
000050 C3 AC 1A 2A 94 02 11 0A 00 19 5E 23 56 7B 3D B2 |C,.*......^#V{=2|
000060 C2 96 1A 21 FF FF C3 AC 1A C3 E9 1A D1 2A 1A 03 |B..!C,.Ci.Q*..|
000070 EB 73 23 72 D1 2A 1C 03 EB 73 23 72 C3 B0 03 07 |ks#rQ*..ks#rC0..|
after
Current Track Current Sector Current Block Current Drive
0005 000C 000B A:
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F -----ASCII------
000000 09 29 29 EB 01 36 00 2A 94 02 19 09 C9 E1 22 90 |.))k.6.*....Ia".|
000010 02 E1 22 92 02 D1 EB 22 94 02 EB 2A 90 02 06 08 |.a"..Qk"..k*....|
000020 1A BE C2 BA 1A 23 13 10 F7 21 00 00 E5 2A 94 02 |.>B:.#..w!..e*..|
000030 EB 2A 92 02 73 23 72 C3 A4 03 D2 D3 1A 2A 94 02 |k*..s#rC$.RS.*..|
000040 11 08 00 19 5E 23 56 7B 3D B2 C2 96 1A 21 01 00 |....^#V{=2B..!..|
000050 C3 AC 1A 2A 94 02 11 0A 00 19 5E 23 56 7B 3D B2 |C,.*......^#V{=2|
000060 C2 96 1A 21 FF FF C3 AC 1A C3 00 00 D1 2A 1A 03 |B..!C,.Ci.....|
000070 EB 73 23 72 D1 2A 1C 03 EB 73 23 72 C3 B0 03 07 |ks#rQ*..ks#rC0..|
Step 3: Proceed to UCSD Pascal by typing "pascal" <return> at the "E>" command prompt. Type <return>
until you see the menu bar:
Command: E(dit, R(un, F(ile, C(omp, L(ink, X(ecute, A(ssem, D(ebug,? [II.0]
X(ecute setup and choose Prompted mode to update parameters as follows:
Command: E(dit, R(un, F(ile, C(omp, L(ink, X(ecute, A(ssem, D(ebug,? [II.0]x
Execute what file? setup
INITIALIZING............................
...........................
SETUP: C(HANGE T(EACH H(ELP Q(UIT [D1]
C
CHANGE: S(INGLE) P(ROMPTED) R(ADIX)
H(ELP) Q(UIT)
P
FIELD NAME = BACKSPACE
OCTAL DECIMAL HEXADECIMAL ASCII CONTROL
10 8 8 BS ^H
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = EDITOR ACCEPT KEY
OCTAL DECIMAL HEXADECIMAL ASCII CONTROL
0 0 0 NUL ^@
Y WANT TO CHANGE THIS VALUE? (Y,N,!)
26 NEW VALUE: 26
OCTAL DECIMAL HEXADECIMAL ASCII CONTROL
32 26 1A SUB ^Z
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = EDITOR ESCAPE KEY
OCTAL DECIMAL HEXADECIMAL ASCII CONTROL
33 27 1B ESC ^[
N WANT TO CHANGE THIS VALUE? (Y,N,!)
SIMH AltairZ80 36 of 59
FIELD NAME = ERASE LINE
OCTAL DECIMAL HEXADECIMAL ASCII CONTROL
0 0 0 NUL ^@
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = ERASE SCREEN
OCTAL DECIMAL HEXADECIMAL ASCII CONTROL
0 0 0 NUL ^@
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = ERASE TO END OF LINE
OCTAL DECIMAL HEXADECIMAL ASCII CONTROL
0 0 0 NUL ^@
Y WANT TO CHANGE THIS VALUE? (Y,N,!)
75 NEW VALUE: 75
OCTAL DECIMAL HEXADECIMAL ASCII
113 75 4B K
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = ERASE TO END OF SCREEN
OCTAL DECIMAL HEXADECIMAL ASCII CONTROL
0 0 0 NUL ^@
Y WANT TO CHANGE THIS VALUE? (Y,N,!)
74 NEW VALUE: 74
OCTAL DECIMAL HEXADECIMAL ASCII
112 74 4A J
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = HAS 8510A
CURRENT VALUE IS FALSE
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = HAS BYTE FLIPPED MACHINE
CURRENT VALUE IS FALSE
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = HAS CLOCK
CURRENT VALUE IS FALSE
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = HAS LOWER CASE
CURRENT VALUE IS FALSE
Y WANT TO CHANGE THIS VALUE? (Y,N,!)
T NEW VALUE: T
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = HAS RANDOM CURSOR ADDRESSING
CURRENT VALUE IS FALSE
Y WANT TO CHANGE THIS VALUE? (Y,N,!)
T NEW VALUE: T
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = HAS SLOW TERMINAL
CURRENT VALUE IS FALSE
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = HAS WORD ORIENTED MACHINE
CURRENT VALUE IS FALSE
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = KEY FOR BREAK
OCTAL DECIMAL HEXADECIMAL ASCII CONTROL
0 0 0 NUL ^@
Y WANT TO CHANGE THIS VALUE? (Y,N,!)
SIMH AltairZ80 37 of 59
3 NEW VALUE: 3
OCTAL DECIMAL HEXADECIMAL ASCII CONTROL
3 3 3 ETX ^C
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = KEY FOR FLUSH
OCTAL DECIMAL HEXADECIMAL ASCII CONTROL
6 6 6 ACK ^F
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = KEY FOR STOP
OCTAL DECIMAL HEXADECIMAL ASCII CONTROL
23 19 13 DC3 ^S
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = KEY TO DELETE CHARACTER
OCTAL DECIMAL HEXADECIMAL ASCII CONTROL
10 8 8 BS ^H
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = KEY TO DELETE LINE
OCTAL DECIMAL HEXADECIMAL ASCII
177 127 7F DEL
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = KEY TO END FILE
OCTAL DECIMAL HEXADECIMAL ASCII CONTROL
3 3 3 ETX ^C
Y WANT TO CHANGE THIS VALUE? (Y,N,!)
26 NEW VALUE: 26
OCTAL DECIMAL HEXADECIMAL ASCII CONTROL
32 26 1A SUB ^Z
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = KEY TO MOVE CURSOR DOWN
OCTAL DECIMAL HEXADECIMAL ASCII CONTROL
12 10 A LF ^J
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = KEY TO MOVE CURSOR LEFT
OCTAL DECIMAL HEXADECIMAL ASCII CONTROL
10 8 8 BS ^H
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = KEY TO MOVE CURSOR RIGHT
OCTAL DECIMAL HEXADECIMAL ASCII CONTROL
34 28 1C FS ^\
Y WANT TO CHANGE THIS VALUE? (Y,N,!)
12 NEW VALUE: 12
OCTAL DECIMAL HEXADECIMAL ASCII CONTROL
14 12 C FF ^L
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = KEY TO MOVE CURSOR UP
OCTAL DECIMAL HEXADECIMAL ASCII CONTROL
37 31 1F US ^_
Y WANT TO CHANGE THIS VALUE? (Y,N,!)
11 NEW VALUE: 11
OCTAL DECIMAL HEXADECIMAL ASCII CONTROL
13 11 B VT ^K
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = LEAD IN FROM KEYBOARD
SIMH AltairZ80 38 of 59
OCTAL DECIMAL HEXADECIMAL ASCII CONTROL
0 0 0 NUL ^@
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = LEAD IN TO SCREEN
OCTAL DECIMAL HEXADECIMAL ASCII CONTROL
0 0 0 NUL ^@
Y WANT TO CHANGE THIS VALUE? (Y,N,!)
27 NEW VALUE: 27
OCTAL DECIMAL HEXADECIMAL ASCII CONTROL
33 27 1B ESC ^[
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = MOVE CURSOR HOME
OCTAL DECIMAL HEXADECIMAL ASCII CONTROL
15 13 D CR ^M
Y WANT TO CHANGE THIS VALUE? (Y,N,!)
72 NEW VALUE: 72
OCTAL DECIMAL HEXADECIMAL ASCII
110 72 48 H
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = MOVE CURSOR RIGHT
OCTAL DECIMAL HEXADECIMAL ASCII
41 33 21 !
Y WANT TO CHANGE THIS VALUE? (Y,N,!)
68 NEW VALUE: 68
OCTAL DECIMAL HEXADECIMAL ASCII
104 68 44 D
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = MOVE CURSOR UP
OCTAL DECIMAL HEXADECIMAL ASCII CONTROL
0 0 0 NUL ^@
Y WANT TO CHANGE THIS VALUE? (Y,N,!)
65 NEW VALUE: 65
OCTAL DECIMAL HEXADECIMAL ASCII
101 65 41 A
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = NON PRINTING CHARACTER
OCTAL DECIMAL HEXADECIMAL ASCII
77 63 3F ?
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = PREFIXED[DELETE CHARACTER]
CURRENT VALUE IS FALSE
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = PREFIXED[EDITOR ACCEPT KEY]
CURRENT VALUE IS FALSE
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = PREFIXED[EDITOR ESCAPE KEY]
CURRENT VALUE IS FALSE
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = PREFIXED[ERASE LINE]
CURRENT VALUE IS FALSE
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = PREFIXED[ERASE SCREEN]
CURRENT VALUE IS FALSE
SIMH AltairZ80 39 of 59
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = PREFIXED[ERASE TO END OF LINE]
CURRENT VALUE IS FALSE
Y WANT TO CHANGE THIS VALUE? (Y,N,!)
T NEW VALUE: T
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = PREFIXED[ERASE TO END OF SCREEN]
CURRENT VALUE IS FALSE
Y WANT TO CHANGE THIS VALUE? (Y,N,!)
T NEW VALUE: T
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = PREFIXED[KEY FOR BREAK]
CURRENT VALUE IS FALSE
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = PREFIXED[KEY FOR FLUSH]
CURRENT VALUE IS FALSE
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = PREFIXED[KEY FOR STOP]
CURRENT VALUE IS FALSE
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = PREFIXED[KEY TO DELETE CHARACTER]
CURRENT VALUE IS FALSE
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = PREFIXED[KEY TO DELETE LINE]
CURRENT VALUE IS FALSE
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = PREFIXED[KEY TO END FILE]
CURRENT VALUE IS FALSE
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = PREFIXED[KEY TO MOVE CURSOR DOWN]
CURRENT VALUE IS FALSE
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = PREFIXED[KEY TO MOVE CURSOR LEFT]
CURRENT VALUE IS FALSE
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = PREFIXED[KEY TO MOVE CURSOR RIGHT]
CURRENT VALUE IS FALSE
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = PREFIXED[KEY TO MOVE CURSOR UP]
CURRENT VALUE IS FALSE
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = PREFIXED[MOVE CURSOR HOME]
CURRENT VALUE IS FALSE
Y WANT TO CHANGE THIS VALUE? (Y,N,!)
T NEW VALUE: T
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = PREFIXED[MOVE CURSOR RIGHT]
CURRENT VALUE IS FALSE
Y WANT TO CHANGE THIS VALUE? (Y,N,!)
T NEW VALUE: T
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = PREFIXED[MOVE CURSOR UP]
CURRENT VALUE IS FALSE
SIMH AltairZ80 40 of 59
Y WANT TO CHANGE THIS VALUE? (Y,N,!)
T NEW VALUE: T
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = PREFIXED[NON PRINTING CHARACTER]
CURRENT VALUE IS FALSE
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = SCREEN HEIGHT
OCTAL DECIMAL HEXADECIMAL
30 24 18
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = SCREEN WIDTH
OCTAL DECIMAL HEXADECIMAL
120 80 50
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = STUDENT
CURRENT VALUE IS FALSE
N WANT TO CHANGE THIS VALUE? (Y,N,!)
FIELD NAME = VERTICAL MOVE DELAY
OCTAL DECIMAL HEXADECIMAL
5 5 5
Y WANT TO CHANGE THIS VALUE? (Y,N,!)
0 NEW VALUE: 0
OCTAL DECIMAL HEXADECIMAL
0 0 0
N WANT TO CHANGE THIS VALUE? (Y,N,!)
CHANGE: S(INGLE) P(ROMPTED) R(ADIX)
Q H(ELP) Q(UIT)
Q SETUP: C(HANGE T(EACH H(ELP Q(UIT [D1]
D QUIT: D(ISK) OR M(EMORY) UPDATE,
R(ETURN) H(ELP) E(XIT)
M QUIT: D(ISK) OR M(EMORY) UPDATE,
R(ETURN) H(ELP) E(XIT)
E QUIT: D(ISK) OR M(EMORY) UPDATE,
R(ETURN) H(ELP) E(XIT)
SIMH AltairZ80 41 of 59
SETUP.CODE 25 14-May-79
READ.ME.TEXT 4 17-Apr-79
BINDER.CODE 6 3-May-79
NEW.MISCINFO 1 10-Feb-79
15/15 files<listed/in-dir>, 308 blocks used, 186 unused, 186 in largest
Filer: G(et, S(ave, W(hat, N(ew, L(dir, R(em, C(hng, T(rans, D(ate, Q(uit [B]
C
Change what file ? NEW.MISCINFO
Change to what ? SYSTEM.MISCINFO
SIMH AltairZ80 42 of 59
10 Vector Graphic, Inc. Simulation
Howard M. Harte, hharte@hartetec.com
10.1 Overview
Vector Graphic is a early microcomputer from the mid 1970's, based on the S-100 bus using the Z80
microprocessor. There were several Vector Graphic models produced. Although primarily used with the
CP/M operating system, it ran several others including OASIS, Micropolis Disk Operating System (MDOS),
and Micropolis Z80 Operating System (MZOS).
Early Vector Graphic models used the Micropolis floppy disk controller and Micropolis floppy disk drives.
Later models were designed with the integrated Floppy Drive/Hard Drive controller and used Tandon floppy
drives. Almost all used unusual 100 track per inch 5.25" floppy drives and 16 sector 5.25" hard sector media.
Some models included 8" floppy drives and hard disk drives.
Vector Graphic computers had many innovations such as the Flashwriter integrated video and keyboard
controller. Vector Graphic is commonly known for their MEMORITE word processing application. When
combined with the Flashwriter, the Vector Graphic MEMORITE software gave low cost word processing
capability which had previously only been available with dedicated word processors.
Vector Graphic has a small but active user community. The following are links to resources and information
about the Vector Graphic computer systems:
The Vector Graphic simulation was realized by making several architectural modifications to support
additional disk controllers and the Flashwriter2 video card. The architectural modifications include the ability
to install and uninstall devices in the simulators memory and I/O map at runtime, and pave the way for
further extension of SIMH/AltairZ80 to support other hardware with a minimum of integration effort.
These additional devices specific to the Vector Graphic systems include:
MDSK Micropolis FD Controller Board, memory mapped to 0xF800-0xFBFF
VFDHD Vector HD-FD Controller Board, I/O Mapped to 0xC0-0xC3
SIMH AltairZ80 43 of 59
FWII Flashwriter 2 Video Card, memory mapped to 0xF000-0xF800
These devices can be enabled/disabled (installed/uninstalled) from the memory map with:
sim> set <device> ena to enable the device.
sim> set <device> dis to disable the device.
If there is an I/O or memory map conflict when enabling a device, the conflicting device must first be
disabled.
In addition to the new devices added to SIMH/AltairZ80, additional ROM images are provided for the Vector
4.0C Monitor and the Vector 4.3 Monitor. The 4.0C Monitor uses the simulated serial port for I/O, and the
4.3 Monitor uses the Flashwriter2 video card for output and a simulated parallel keyboard for input. One of
these monitors should be loaded at address 0xE000, depending on the simulated system configuration.
Generally, when using the HD-FD disk controller, you will need to use Monitor 4.3, since it supports booting
from this controller. When using the Micropolis FD Controller board, you should use the 4.0C Monitor.
The simulator can be configured for a 48K Vector MZ or a 56K Vector MZ. Some boot disk images require a
48K configuration, and some require a 56K configuration. In the 48K configuration on a real Vector MZ
system, an older version of the monitor ROM was at address 0xC000. Since the image for this ROM has
not been obtained, a small helper ROM is loaded at address 0xC000, in addition to the 4.0C Monitor at
0xE000. The helper ROM redirects calls to perform terminal I/O to the corresponding entry points in the
4.0C monitor.
There are several configuration files that configure SIMH to simulate various Vector Graphic systems.
These configuration files are the definitive reference for proper simulator configuration, and should be
preferred over the following descriptions if there is any discrepancy. These configuration files are:
vgmz48k Vector 48K MZ with Micropolis FD Controller
vgmz56k Vector 56K MZ with Micropolis FD Controller
vgfdhd Vector 56K System with HD-FD Disk Controller
Here are some sample configurations for 48K, 56K, and HD-FD Systems:
SIMH AltairZ80 44 of 59
10.3 56K Vector MZ
sim> load MON40C.BIN e000 - load Vector 4.0C Monitor
sim> set mdsk enabled - enable Micropolis disk controller
sim> attach mfdc0 VG00.VGI - attach disk to MDSK0 drive
When booting the 56K configuration, type:
sim> g e000
and at the Mon> prompt, you can boot from the disk controller by using the B (boot) command.
SIMH AltairZ80 45 of 59
10.5 Notes on Simulated Hardware
The Vector HD-FD Controller supports four drives, one of which may be a Winchester (hard disk) drive. For
the included VGBOOT.VGI disk image, CP/M is configured such that the VFDHD0 is drive B and VFDHD1
is drive A. VFDHD2 is drive C and VFDHD3 is drive D. The simulation assumes that whatever image is
attached to VFDHD0 is a Hard disk image, so drive B using the VGBOOT.VGI disk image is not
supported.
10.6 Notes on the Vector Graphic Disk Image (VGI) File Format
The Vector Graphic Disk Image (VGI) File Format uses a 275-byte sector format. This sector includes 256
bytes of User Data, and various other fields (metadata) used by controller hardware and the operating
system running on the simulator.
The 275-byte sector format is as follows:
SYNC TRACK SECTOR UNUSED USER CHKSUM ECC ECC_VALID
DATA
1 1 1 10 256 1 4 1
SIMH AltairZ80 46 of 59
11 IMSAI 8080 Simulation
IMSAI FIF Disk Controller support was added by Ernie Price.
11.1 Overview
The IMSAI FIF Disk Controller consists of an IFM (Interface Master Board) and a FIB (Floppy Disk Interface
board) which interface the disk to the computer. The combination of FIB and IFM boards create an
intelligent controller including DMA transfer, which permits the computer to perform other tasks during disk
operations.
The FIF simulation can control up to eight disk drives. Commands include Read Clock and Data Bits, Write
Sector, Read Sector, Verify Sector, Format Track, Write Deleted Data Sector Mark, Write Protect, Write
Enable and Restore Drive. Logical and physical track addresses may be different. Cyclic redundancy
checks are performed automatically. When an error is detected in reading or writing, the logic automatically
retries up to 10 times.
Using the IMSAI FIF Controller, it is possible to run IMDOS 2.05 on the simulator.
Since the IMSAI FIF and AltairZ80 HDSK devices both use I/O port 0xFD, the HDSK must be disabled
before enabling the FIF:
sim> set hdsk dis disable the AltairZ80 HDSK device.
sim> set fif ena enable the IMSAI FIF device.
There is a configuration file that configures SIMH to simulate an IMSAI 8080 with FIF Disk Controller. This
configuration file is the definitive reference for proper simulator configuration, and should be preferred over
the following description if there is any discrepancy. This configuration file is:
imdos IMSAI 8080 with FIF Disk Controller
SIMH AltairZ80 47 of 59
12 North Star Horizon Simulation
North Star Horizon MDS-AD Disk Controller support was added by Howard M. Harte, hharte@hartetec.com.
12.1 Overview
The North Star MDS-AD disk controller is a double-sided, double-density disk controller supporting 48-TPI
5.25 Media, with 35 tracks, and 10 hard-sectors per track.
Using the North Star MDS-AD disk controller, it is possible to run CP/M 2.2 and North Star DOS on the
simulator.
* * * NOTE: The MDS-AD Controller only supports Double-Density disks at this time * * *
There is a configuration file that configures SIMH to simulate a North Star Horizon System with an MDS-AD
Disk Controller. This configuration file is the definitive reference for proper simulator configuration, and
should be preferred over the following description if there is any discrepancy. This configuration file is:
nshrz North Star Horizon with MDS-AD Disk Controller
SIMH AltairZ80 48 of 59
13 Compupro 8-16 Simulation
Compupro Controller support was added by Howard M. Harte, hharte@hartetec.com. The 8086 simulation
was added by Peter Schorn.
13.1 Overview
The Compupro 8-16 was a fairly advanced IEEE-696 bus based system that included a dual CPU card
containing Intel 8085 and 8088 processors. This processor card was capable of switching between CPUs at
runtime, and this allowed the user to run CP/M-80 as well as CP/M-86. In the latest version of CP/M-80
released by Viasyn (who had acquired Compupro by that time) uses the 8085 CPU for running CP/M, but
offloads some of the memory operations to the 8088 CPU because of its ability to operate faster, and more
easily address memory above 64K.
There are configuration files that configure SIMH to simulate a Compupro 8-16, with various attached
controllers to run CP/M-80 and CP/M-86. These configuration files are:
ccpm22 Compupro 8-16 CP/M-80 2.2
ccpm86 Compupro 8-16 CP/M-86
ccpm22q Compupro 8-16 CP/M-80 2.2Q (latest Viasyn version)
SIMH AltairZ80 49 of 59
NOROM Disable bootstrap ROM.
DEBUG enable debug tracing, useful for debugging software. One or more debug levels may be selected
at any given time. Several debug tracing levels are provided:
ERROR Error messages, these are bugs in the simulation or in the way a program running on the
simulator accesses the controller. This message level is on by default.
SEEK Seek messages, related to head positioning.
CMD Disk controller commands.
RDDATA Read Data messaging
WRDATA Write Data messaging
STATUS Status register reading
VERBOSE Extra verbosity for debugging.
NODEBUG turn off one or more debug message levels.
The DISK1A supports four drives, labeled DISK1A0 through DISK1A3. If a drive is attached to a non-
existent image file, the image file will be created, and the user will be asked for a comment description of the
disk. SIMH adds its own IMD header to the comment field, along with information about the version of the
controller core (in this case i8272) as well as the SIM_IMD module, to help facilitate debugging. The
SIM_IMD module will automatically format the new disk image in IBM 3740 Single-Sided, Single-Density
format. If the user wishes to use the disk in another format, then it should be reformatted using the
CompuPro format program on either CP/M-80 or CP/M-86.
SIMH AltairZ80 50 of 59
WRDATA Write Data messaging
STATUS Status register reading
VERBOSE Extra verbosity for debugging.
NODEBUG turn off one or more debug message levels.
The DISK2 supports four drives, labeled DISK20 through DISK23. If a drive is attached to a non-existent
image file, the image file will be created. A newly created disk image should be formatted with the
CompuPro DISK2.COM command.
SIMH AltairZ80 51 of 59
SEEK Seek messages, related to head positioning.
CMD Disk controller commands.
RDDATA Read Data messaging
WRDATA Write Data messaging
STATUS Status register reading
VERBOSE Extra verbosity for debugging.
NODEBUG turn off one or more debug message levels.
The DISK3 supports four drives, labeled DISK30 through DISK33. If a drive is attached to a non-existent
image file, the image file will be created. A newly created disk image should be formatted with the
CompuPro DISK3.COM command.
SIMH AltairZ80 52 of 59
14 Cromemco 4/16/64FDC and CCS-2422 FDC Simulation
Cromemco 4/16/64FDC (CROMFDC) Floppy Controller support was added by Howard M. Harte,
hharte@hartetec.com.
14.1 Overview
The Cromemco 4/16/64FDC disk controllers are a family of floppy disk controllers for Cromemco systems.
The controller is based on the Western Digital WD179x series of floppy controller chips. The implementation
of the DISK1A uses a generic WD179x controller core with a Cromemco-specific wrapper to implement the
Cromemco-specific features.
The WD179x controller core simulation utilizes the ImageDisk (IMD) file format for accessing simulated
floppy disks.
The Cromemco simulation also includes the Cromemco RDOS 2.52 and RDOS 3.12 boot ROMs.
Additional devices include:
CROMFDC Cromemco 4/16/64FDC Floppy Disk Controller.
SIMH AltairZ80 53 of 59
BOOTSTRAP 0 for RDOS 2.52, 1 for RDOS 3.12.
FDCTYPE CROMFDC Type: Set to 4, 16, 64 for Cromemco FDC, or 50 for CCS-2422 FDC.
BOOT BOOT jumper setting, default is 1 (auto-boot.)
INHINIT Inhibit Init (Format) switch, default is 0 (not inhibited.)
The CROMFDC supports four drives, labeled CROMFDC0 through CROMFDC3. If a drive is attached to a
non-existent image file, the image file will be created, and the user will be asked for a comment description
of the disk. SIMH adds its own IMD header to the comment field, along with information about the version of
the controller core (in this case WD179x) as well as the SIM_IMD module, to help facilitate debugging. The
SIM_IMD module will automatically format the new disk image in IBM 3740 Single-Sided, Single-Density
format. If the user wishes to use the disk in another format, then it should be reformatted using the
Cromemco INIT.COM program under Cromemco DOS (CDOS), or using the INITLARG.COM program
under 86-DOS.
SIMH AltairZ80 54 of 59
15 Advanced Digital Corporation Super-Six Simulation
ADC Super-Six Single-Board Computer support was added by Howard M. Harte, hharte@hartetec.com.
15.1 Overview
The Advanced Digital Corporation Super-Six SBC is a Z80-based single board computer on an S-100 bus
card. It has 128K of RAM, and a WD179x-based floppy disk controller.
Additional devices include:
ADCS6 ADC Super-Six SBC.
The ADCS6 supports four drives, labeled ADCS60 through ADCS63. If a drive is attached to a non-existent
image file, the image file will be created, and the user will be asked for a comment description of the disk.
SIMH adds its own IMD header to the comment field, along with information about the version of the
controller core (in this case WD179x) as well as the SIM_IMD module, to help facilitate debugging. The
SIM_IMD module will automatically format the new disk image in IBM 3740 Single-Sided, Single-Density
SIMH AltairZ80 55 of 59
format. If the user wishes to use the disk in another format, then it should be reformatted using the
FMT8.COM program under CP/M 2.2.
SIMH AltairZ80 56 of 59
16 N8VEM Single Board Computer Simulation
N8VEM Single Board Computer support was added by Howard M. Harte, hharte@hartetec.com.
16.1 Overview
The N8VEM Single Board Computer is a homebrew Z80 system designed by Andrew Lynch. This SBC can
has 1MB of EPROM, 512KB of RAM, and can run CP/M 2.2. More details about the N8VEM are on the
following newsgroup:
http://groups.google.com/group/n8vem
SIMH AltairZ80 57 of 59
N8VEM1 saves data from the RAM to a raw binary file when SAVERAM is set to 1, and the unit is detached.
Since the N8VEM has 512KB of RAM, the file created will be 524288 bytes in length. This file is useful as a
core dump to examine the state of a running system. It can also serve to model persistent storage for the
N8VEM RAM drive, in case an 512KB NVRAM is used in place of the 512KB SRAM on the N8VEM.
SIMH AltairZ80 58 of 59
17 ImageDisk (IMD) Disk Image Support in SIMH
ImageDisk (IMD) disk image file support for SIMH was added by Howard M. Harte, hharte@hartetec.com.
17.1 Overview
The ImageDisk (IMD) file format is a portable format which includes all metadata required to accurately
describe a soft-sectored floppy disk. The IMD file format was developed by Dave Dunfield, along with a set
of ImageDisk utilities for creating ImageDisk disks from raw binary files and from real floppy disks. In
addition, IMD disk images can be written back to real floppies for use on actual hardware. SIMH support for
ImageDisk is provided by the SIM_IMD module written by Howard M. Harte. The SIM_IMD module provides
functions for creating, opening, reading, writing, formatting, and closing IMD files. The i8272 and WD179x
floppy controller core simulations leverage the SIM_IMD module for low-level disk access.
17.2 References
More information and support for ImageDisk, including a detailed description of the IMD file format, and
utilities for creating and manipulating IMD files can be found on Dave Dunfields website:
SIMH AltairZ80 59 of 59