This Web page last updated Oct 12 2016. copyright Herb Johnson (C) 2016. . In Summer 2016, I'm repairing some Heath Zenith H89 computers. One H89 was rebuilt and is in use as my development system. Now I have to move some files to the hard-sectored H89 diskettes - that has to be done by a serial transfer from another computer. But I didn't have H89 serial transfer programs around, either for H89 CP/M or for HDOS. So these are notes about how I'm going about this. Thanks to Lee Hart, for his work, disks, notes and commentary, which I've added to this or other H89 Web pages. Lee suggested using PIP for simple file transfers. Also Dwight Elvey's instructions for H89LDR suggested methods which led me to the process I describe in this Web page. Thanks to both Dwight and Lee. - Herb Johnson
H89's have a boot-strap problem when using their original hard-sectored diskette controllers. Namely, they are unique to H89's and H8's. So if you don't have an inventory of H89 hard-sectored disks with programs, how do you get those programs for use? The 21st century online archives for H89 (and H8) programs, are kept online as "H8D" disk images - not as collections of sets of individual files. These images are either imaged HDOS disks, or imaged CP/M disks. And, over time, various "utility" programs evolved to manage those images.
The original programs used to image these disks, on the native H8 or H89 systems, sent the image to a serial-linked MS-DOS computer which created the H8D-format file. The format is "essentially" the sequence of sectors, track by track. I don't pretend to know the details of the format. The corresponding recieve and image-to-disk programs were written by Dwight Elvey, decades ago. They are an ASM program which resides on the H8 or H89, and a compiled FORTH program which runs under MS-DOS. The MS-DOS program as "server" sends the image file, and the "client" ASM program on the H89 recieves and recreates the disk previously imaged. There's even a procedure, to octal-enter a "stub" program on the H89, which can barely recieve the HDOS binary program which, when saved and run, acts as the "receiver" or client. So even without HDOS, you can create an HDOS disk!
Others have written more elaborate programs to manage these H8D images. The utilities section of the SEBHC H8D archive offers several. Super Duper Disk Duplicator apparently offers both transfer and disk duplication under HDOS. There's a Windows "server" to manage H8D images, which also emulates the H89 on the Windows system. (Source is included but it's written under some development enviroment of long ago.). There's a Linux server, which I believe is written in Python (available in most Linuxes). Recently I stumbled onto Dan Emrick's H89 project pages which have some hard-sectored disk imaging and H89 emulation software (C++ and Qt4) he's written in 2009.
And there's likely others. It's a dizzying array of resources - each with their own elaborate sets of features, supported under one or another server operating systems, written in various programming languages. And they have adjunct H89 utilities which run under HDOS or CP/M. Since I'm new to these, since I find them all confusing, and most of them require some amount of prior set-up to make them work - I refuse to comment on their merits or liabilities beyond this paragraph.
I chose to look at the simplest and more general resources, to transfer files and disks, for which one can look at sources which can be modified today with simple 8-bit or 16-bit tools. The first choice, is simple file transfer.
CP/M supports the 3-port serial serial on the H89, as various "devices" which are standard to CP/M, and then supported by BIOSes such as the H89's BIOS.SYS. The H89 serial I/O port at 330Q is supported for reading as "RDR:" and for writing as "PUN:". The default baud rate is 300 baud, 8 bit. The 330Q port corresponds to the "DTE" connector on the 3-port serial card, which is connected to P605 on that card. CP/M supports those devices through PIP, the CP/M file transfer program.
So, under PIP, a transfer such as "filename.ext=RDR:" will simply open a file of that name and fill it with whatever comes down the DTE serial port; until a CTRL-Z end-of-file character is recieved. Don't send a big file, because when you run out of PIP memory, it will write to the disk and stop recieving!
The simple method, is to send a SMALL file, in ASCII - namely an Intel Hex record file, as an assembled program. The HEX records already have checksums and memory locations. And CP/M knows what to do with assembled hex files - the LOAD command will convert a .HEX file to a .COM file. Or, you could load the .HEX file into DDT, and perhaps patch it, before SAVEing it as a .COM file. Read CP/M documentation for more details. Note this method works for most any CP/M program that has BIOS support for serial I/O.
So - what H89 (or H8) programs are available via the Web - that is, not by begging for a hard-sectored disk of programs from another H89 owner? And ones I can transfer as .HEX files, small enough not to choke PIP?
The most obvious resource, is CP/M programs from CP/M archives that support the H89. And the best-known source of those, is images of the "Walnut Creek CP/M CD-ROM" of decade ago. Blah blah blah.... a Heath directory from one W/C CP/M archive. It's not a bad collection from the 1980's of CP/M programs for H-89's and Z-100's. For some reason they weren't described well. Here's my description of that part of the archive.
One of the programs is described as "MBOOTH89.ASM 4751 08-05-84". It's 8080 source which by inspection, is some kind of serial file transfer program. No documentation, the ASM is minimized. My guess, so you can file-transfer the source for assembly under CP/M. But, I can assemble the source myself, on a Windows or MS-DOS machine, thanks to a MS-DOS C-sourced 8080 assembler I have. Of course there are many other cross-assemblers, or you can run ASM under an emulated CP/M, etc.
A Sunday's afternoon's effort later, and I assembled the MBOOTH89 program. Some minor edits were needed to accomodate an unfamilar assembler. And, it took some careful reading, to understand the sparsely-commented ASM listing. I took some notes. Here's the MBOOTH89 program, assembled, with my notes, also my A85 MS-DOS cross assembler.
With a XMODEM client on the H89 under CP/M, then any terminal emulator as a "server" should be able to send a file - hex, binary, text, whatever. I chose an old-school "QMODEM version 2.3" on an MS-DOS '486 box I use for such purposes. And...it worked! The simplest Xmodem protocol it supported, was acceptable to MBOOT.
Run a terminal emulator on a server - Windows, MS-DOS - for testing.
Figure out what my client H89 CP/M does with its serial ports, by reading manuals and tests.
Establish which CP/M devices will work with PIP. that was the "RDR:" for H89 input/recieve.
Run PIP to create a file from the "reader", "MBOOT.HEX=RDR:"
...and send the hex records from my MS-DOS box via QMODEM as a text "upload".
In QMODEM terminal mode, send a CTRL-Z to end the PIP transfer and save the file...
...and CTRL-C out of PIP >to see the HEX file result
Run the MBOOT.HEX through LOAD as "LOAD MBOOT.HEX" to create MBOOT.COM
Run MBOOT.COM to accept a file from the QMODEM MS-DOS XModem server - the MBOOT.ASM file
"PIP MB.ASM=MBOOT.ASM" to make a safe copy of the ASM source.
use ASM and LOAD to re-create MB.HEX and MB.COM
Run MB.COM and confirm it works - confirming the XMODEM file transfer was good - to transfer MBOOT.TXT.
And...it all worked out. I won't go into some of the uglier details. For instance on my '486 MS-DOS box, it took a day to get the serial ports and cables straight, with a serial tester. On the Packard-Bell 486, I pulled out the old modem card and jumper-disabled the modem port. Futzing around to figure out my H89's serial ports versus what CP/M was CONFIGURed to do, took some time. (I did not have a full CONFIGURE program for my particular version of CP/M. So I used the default, 300 baud rate; very slow). But now, I can move over more complicated programs under CP/M, and get something done on either machine.
What I had not yet done in July 2016, was to get the HDOS equivalent client program on the H-89. HDOS is new to me (as of a few decades at least), and HDOS resources are more scarce on the Web as it's largely "out of favor". Or, of course....it's all in H8D images I couldn't unlock in July 2016.
In Sept 2016, I came across a sample C program by Glen Roberts, a contributor to SEBHC, which read HDOS 100K disk images. With his concent I rewrote the program to work with a common C compiler under 32-bit MS-DOS (command line in modern Windows). Then I modified a version of the program to support 100K CP/M disk images. These are the hard-sectored disk distributions used by Zenith to distribute their H-8 and H-89 software; those are imaged on SEBHC's archive Web site. This linked Web page shows the resulting programs and provides details.
CP/M supports the 3-port serial serial on the H89, as various "devices" which are standard to CP/M, and then supported by BIOSes such as the H89's BIOS.SYS. The H89 serial I/O port at 330Q is supported for reading as "RDR:" and for writing as "PUN:". The default baud rate is 300 baud, 8 bit. The 330Q port corresponds to the "DTE" connector on the 3-port serial card, which is connected to P605 on that card.
I have some CP/M support for the "line printer" LST: port at 340Q, on the serial port P603 connector, which I have on the "DCE" connector
(not standard). The H89 CP/M "Configure" program can change these but my version is not readily available or incomplete. My remaining port 320Q,
on connector P604, should use the "DCE" connector but for now it's empty. - Herb
Descriptions updated Herb Johnson 7/2016 CONSOL.H 641 09-09-83 for teledt.c DIAL.ASM 6988 11-12-85 Z100 dialer program DIAL.INS 663 11-12-85 howto assemble DIAL DIRF38HZ.LBR 17920 09-26-87 HZ19/89 DIR list with descriptions H19CODES.DOC 2927 09-09-83 H19 escape sequences H19H89.CNV 8262 09-09-83 Upgrade Z-19 to a H-89 H19SUP.ROM 23424 07-13-94 Super 19 ROM for H19/H89 H19SUP.RQM 16256 02-09-85 Squeezed version? H89-FIX.MSG 2058 03-24-84 PALs for H89 & CP/M H89CPU.LST 1716 09-09-83 H89 parts list H89MODOC 8696 09-09-83 mod H89 for 4MHz H8UPGRAD 1345 09-09-83 S-100 Jade DD controller on H8 HEATHH29.DOC 5150 09-09-83 H/Z-29 brief specifications HEATHOPT.OP 2312 09-09-83 patching Microsoft F80, M80 HMODEM20.LBR 54272 05-16-88 X/Y/ZMODEM for Heath/Zenith 89 HMSRC20.LBR 77952 05-16-88 X/Y/ZMODEM for HZ89 source code HZ-VENIX.MSG 759 04-21-85 No description available HZ100IBM.KIT 1683 12-26-84 No description available JMODZ100.LBR 7424 05-20-85 No description available MBOOTH89.ASM 4751 08-05-84 8080 XModem reciever for H89 MONEY.LBR 30848 03-22-87 Financial Utilities for H/Z-89 REPEAT89.DOC 6016 07-13-94 hardware fix for autorepeat on H89 REPEAT89.DQC 3712 04-14-85 squeezed version? SZOFRM.C 170 09-09-83 part of Teledt TELEDT.ABS 12288 02-09-85 HDOS exe, maybe incomplete? TELEDT.C 18100 09-09-83 HDOS & BDS C for Xmodem program TELEDT.DOC 5067 09-09-83 document for TELEDT Z100WRAP.DOC 1218 04-19-85 Z100 and ESC sequences Z19CN.MDC 1346 09-09-83 No description available ZB4MHZ.ASM 6979 09-09-83 4MHz fixes for BIOS ZB4MHZ.DOC 5346 09-09-83 4MHz fixes for BIOS ZDS.BB 304651 01-24-85 Dump of Zenith BBS info