Virtual H89 Computer MMS 77320 SASI Controller

The MMS 77320 is a SASI drive interface. In original hardware, this interface connected to up to eight SASI controllers (each usually mounted on a hard drive) each allowing access to at least one hard drive (optionally two). This level of connectivity is not fully supported by the virtual device, nor was it fully supported by MMS CP/M software (at least CP/M 2.24).

This device includes the 3 standard serial ports.

The following properties are recognized:

NOTE! Property prefix is shown here as "mms77320_", however prefix must match (lower case) name used in "slot_*" property.

slot_p504, slot_p505, slot_p506
Any of these slots may be used to specify the SASI interface using the value "MMS77320". The values "H67" or "Z67" may be used to configure the Heath/Zenith controller (without serial ports).
mms77320_port
I/O port address selection for this card. Values are "jp1a" for 0x78 and "jp1b" for 0x7c. The setting of this jumper must correspond to the setting of the H89 dipswitch sw501.
mms77320_intr
Interrupt level to use for this card. Interrupts are not normally used by the software. Values are "jp2a" for INT3, "jp2b" for INT4, and "jp2c" for INT5.
mms77320_dipsw
Setting of the 8-position dipswitch for extended boot information. See MMS-84B monitor ROM documentation.
mms77320_dir
The directory which will contain hard disk images.
mms77320_drive#
Configuration data for SASI controller (and hard disk) "#" (0-7). Media image file format is described below. If the image file does not exist, an (unpartitioned) image will be created based on the drive type specified. SASI controller/drive values are:

stringcapacity
XEBEC_ST5065,326,848
XEBEC_ST41210,653,696
XEBEC_CM52064,456,448
XEBEC_CM54108,912,896
XEBEC_CM561613,369,344
XEBEC_RO2015,587,968
XEBEC_RO20211,175,936
XEBEC_RO20316,763,904
XEBEC_RO20422,351,872
Z67IDE_xGDual xGB CF Cards

Unless otherwise specified, all controllers are XEBEC S1410 and default to 512 byte sector size (as if the "SS" jumper were installed). Capacities are shown for 512 byte sectors. A pre-existing disk image will override sector size.

"Z67IDE_xG" selects Norberto's Z67-IDE+ controller with two xGB CF cards installed (1, 2, 4, 8, or 16) and 256-byte sectors, accessible as 128M (max) manually-selectable logical drives.

A short string may follow the controller/drive, which will be used as the drive name in menus and on the front panel LEDs.

mms77320_disk#.#
specify the disk image file to use, in place of the default. The first "#" is the controller number, the second is the logical unit number (LUN). If LUN is missing, "0" is assumed. If no disk images are specified, then a single default image for LUN 0 is used, named "MMS77320-#" where "#" is the controller number. All disks on a controller must be the same make and model.

In addition, when using the Z67IDE_xG controller option, the property "z67ide_jukebox" may be set to "true" to enable the reserving of the top 512M of each CF card for use by special software. Using the value 018H in the control byte of the SASI DCB (command) enables access to this area for that command. Clicking on the H89 front panel LED for this device will also pop up the Z67-IDE control panel, which allows write protection as well as selecting the current pair of logical drives. It also includes a menu for utility functions, similar to what is available using the serial port on the Z67-IDE. See Z67-IDE+ utility documentation for standard functions. "Cross-Copy" is a single logical drive copy utility for any combination of LUNs and logical drive numbers.

The activity LED will light solid if the selector switches represent an invalid logical drive for the CF card capacity (taking into account the jukebox option as well).

File Format

The GenericSASIDrive format is as follows:

Image files may be created with the "fmtsasi.jar" utility. Invoke as:

Invoke with no parameters to get help message:

The <image> file must not exist, unless using the "force" option or an operation that reads existing images.

The "list" option lists the recognized controller-drive names with their capacities.

The "dump" option reads the partitioning information from an existing image and dumps the data.

The "files=" option allows you to add local files to a fresh formatted image partition. Specify the directory containing the files. All files in that directory will be added. The files should conform to CP/M 8+3 (case insensitive) filename standards. Note that line endings are not modified, but files who's size is not a multiple of 128 bytes will be padded with ^Z (assumed to be text files). No file attributes are transferred, no CP/M-Plus features used, and no checking is made for duplicate file names. A file that begins with "#:", where "#" is a number 0-31, will be created under the specified CP/M user number. Files with no prefix are put in user 0.

The program attempts to build reasonable CP/M DPBs based on the partition size. At present, only a few options are provided to guide DPB creation.

The "bsh=" parameter specifies the minimum BSH (Block Shift) to be used. Default is 3 (the CP/M minimum). See CP/M documentation, but basically the default value yields very small allocation blocks and is generally undesirable for large disks. However, large disks often cannot be represented using the smallest block size and so a larger block is forced.

The option "drm=" specifies a factor of enlargement for the directory. The default value of "1.0" will create a directory large enough to create full directory entries for every block. However, most files do not fill their directory entry and thus more directory entries may be required.