Heath8080A — Product Support

Page last updated

home   release   support   design   resources   legal   site map



On this page....

contacting me
host requirements
release notes

Other links of interest...

current release
product design

Contacting the Author

Please Click Here to send me an e-mail message.

In violation of all web etiquette, you won't find my e-mail address in clear-text anywhere on this site. I believe that someone's web crawler found my e-mail address at an old web site location, and I was thereafter inundated with garbage e-mail in denial-of-service quantities. I tired of fighting it and moved the site.

I apologize for any inconvenience this may cause you.

go to top

Macintosh Host System Requirements

There are two major requirements the host Macintosh system needs to meet in order to successfully run the emulator:

  1. The emulator requires System 8.1 or better. It was developed to the published 8.1 specifications.

  2. The host Macintosh must be fast enough to host the emulator. Recent experience shows that if the host is too slow, HDOS will not boot correctly. Experience suggests that the minimum host system, to run the emulator at full speed when set to 2 mhz, is on the order of a 7100/66, with an 80 mhz machine recommended.

Additional specifications:

  • the initial installation of the emulator will require about 2 megabytes of free disk space;
  • each additional HDOS diskette you build will require approximately 100-400 K/bytes of free disk space, depending on the diskette format;
  • the emulator requires 5 megabytes of memory at run time.

go to top

Emulator Limitations

You would think that emulating an ancient, limited microcomputer on a modern Macintosh would be a walk in the park. Well, stop thinking that! It ain't true! As it happens, there are a number of very simple things done by the H8 that are a real pain to get right in these modern, enlightened times. Here's the short list.


I have made no attempt whatsoever to execute an 8080A instruction in the same amount of time that a real 8080A would execute the same instruction. I would expect a wide variation in instruction execution times based on the speed of the host machine, the compiler used, the compiler optimization options selected, and a host of other smaller factors.

The emulator now paces in machine cycles instead of instruction counts, so the speed of the emulator, when set to 2 mhz, is the same as a real H8, when measured over a fairly long period of time (several milliseconds). Short sequences of instructions will still run in whatever time is required, as noted in the first paragraph of this section. (ref: Performance)

What does this mean to user code? Anyone who has implemented real-time processes that count on "delay loops" to give them a very small, specific bit of delay, are not going to be happy with the results on this emulator. The only stable source of delay information will be to interrogate the system tick counter.

Also, when you drag a window or browse a menu bar in a Mac application, the application will get no processor time at all. The only way to maintain a proper emulation environment is to define this time out of the H8 universe. When the user is browsing the menu system, time stops as far as the H8 is concerned. You can read more about this in the time design note.

Finally, you should be aware that the clock on a real H8 ticks 512 times per second, while the emulator ticks at a rate of 500 times per second. While it's possible to match the H8 exactly in this regard, it was deemed to be a more straight-forward approach to use one basic time source, and I needed a 1ms interval practically everywhere. With all the other time-oriented compromises and inaccuracies, this one seemed minor.

8250 UART Emulation

8250 UART emulation supports transmitter-empty interrupts, but they should not be used with the emulator. Output characters are driven to the output device immediately upon receipt, clearing the transmitter. If transmitter-empty interrupts were used to send messages out a port, the emulator would not exit interrupt service until the entire message were transmitted. This defeats the performance improvements that you should get from the use of transmitter-empty interrupts.


The emulator provides complete functional emulation of the H-19 terminal using Heathkit-mode escape sequences. There are a few differences from a real H-19:

  • ANSI-mode escape sequences are not supported;
  • keyboard keys are, by necessity, laid out for the Macintosh keyboard, not the H-19 keyboard;
  • the terminal modes "key click on" and "key click off" are not supported; the escape sequences can be used but will have no effect;
  • the terminal mode "keyboard disabled" is not supported; the escape sequence can be used but will have no effect;
  • baud rates are not supported, nor are they needed in the emulator; the escape sequence can be used but will have no effect;
  • control-function key will not cause the function key to be acted upon locally, as it is in a real H-19;
  • a scroll-back buffer and copy/paste support have been added as user convenience items;
  • in keeping with modern sensibilities, the terminal uses black text on a white screen; reverse video is white on black.


The H8's sound mechanism is crude at best. A bit in a PAM8 control register output is ANDed with a 1000Hz square-wave (produced by dividing the 2.048 MHz bus clock signal by 2048) and the result is sent to the speaker. This is effectively a timed burst of a 1000Hz tone. The key click is a four-cycle burst of tone, which your ear will perceive as a click. (Hardware information provided by Dave Wallace.)

On a modern Macintosh, we can't even come close to that level of crudity.

The limitations on any existing H8 software are that the attempts we all made to generate "music" using the internal speaker on the H8 by changing the frequency of the clicks, will absolutely not work here. If you've come to this emulator in the desperate hope of once again hearing an H8 squeak out "Mary Had a Little Lamb," I'm sorry to disappoint.


Eight of the front-panel keys return their value in the high-order four bits of the input port, and the other eight use the low-order four bits. This makes various two-key combinations possible. PAM8 uses two such combinations for its RTM/0 and RST/0 functions. Others were available to applications that chose to use them.

Since we have only one mouse, we can't support any two-key combinations at all. RTM/0 and RST/0 can be invoked by holding down the option key while clicking the # and / keys, respectively.

Any existing program that uses two-key combinations will either have to be modified, or the emulator modified to support other two-key combinations using modifier keys.

go to top

Release Notes

Release 5.3.3a

To quote an old friend, coworker and Unix/Xenix programmer, Pin Lim, under similar circumstances: "Sometimes life is hard."

Mac OS has some interesting rules in how it selects an ICON for plotting in a window. The programmer can select the resource number but cannot select the color; you throw a whole suite of ICON resources at the system and let it take whichever one it likes.

In release 5.3.2, I changed to color icons for the hold mode, holding, and insert H-19 indicators, and they worked fine, but I violated a rule. In release 5.3.3, I changed something totally unrelated to those icons and now they don't show up at all. Sheesh.

Release 5.3.3a fixes this etiquette violation by adding black and white versions of the icons to the resource fork, and now we have color icons back on screen. Go figure.

Note: This release is coded internally as release 5.3.3. It's only called 5.3.3a in this archive.

Release 5.3.3

Added a configuration option to load either the original PAM/8 ROM or the PAM/GO ROM when the system is started or reset. Both ROMs are included with the package. See the emulator preferences section of the help system for details.

Release 5.3.2

Added file creator and printer margin preferences, and made most preferences (all but system speed) take effect immediately. Also cleaned up the H-17 mount preferences dialog somewhat.

Added select / copy / paste to the H-19. You can select text in various ways to copy to the clipboard, and paste text from the clipboard into the H8 as if that text were being typed at the keyboard.

Scrolling using the scroll-bar slider is now live; the screen content moves as you move the slider.

A small number of other minor user interface tweeks are included, such as color icons for the on-screen indicators.

Details can be found in the help system.

Release 5.3.1

Corrected a problem with H-19 buffer save — the file would be empty if the first line of the buffer was non-blank.

Added three usability features to the scroll-back buffer:

  • if line 25 is enabled when the buffer is saved, line 25 is saved;
  • the command-home key sequence will move to the first non-blank line in the scroll-back buffer;
  • the command-option-clear key sequence will, upon user confirmation, clear the scroll-back buffer as well as the H-19 screen (the command-clear key sequence is unmodified).

Internally, the screen-scrolling code was cleaned up considerably in preparation to adding text selection to support copy/paste. In particular, the control plane is now combined with the screen text.

go to top

Release 5.3

Added a 476-line scroll-back buffer to the H-19, with the ability to save both the buffer and the active screen (500 lines, total) to a Macintosh text file.

Added an optional comment, ";check: nnn", to the portable disk format. The emulator adds this comment when creating a portable disk, and if it is present when a disk is loaded, compares nnn with the calculated sector body check byte. If the values don't match, the disk is not mounted.

The Disk Dumper program was also modified to add this comment to the disk image, ensuring the user that the dumped image is sound.

Thanks to Stanley Webb for suggesting the checksum feature. It's a real improvement to the reliability of the disk image transfer process.

go to top

Release 5.2.1

Minor tweaking.

Added error dialogs for three malformed disk header problems that were previously "silent" disk insertion failures.

Added interesting operations statistics to the About window (see sample), at the cost of a slight reduction in Turbo-mode performance.

In the H-17 Management dialog, moved the volume number to the same line as the disk label.

Added help sections on Boot.abs, low-level H-17 driver calls, and 8050 UART programming and cleaned up various errors in other sections in my ongoing efforts to get it right.

go to top

Release 5.2

Added features to the printer:

  • support for bold, italic, and underlined text;
  • ability to change the font face and size;
  • ability to change the font color using the red/green/blue color specification system;
  • support for Heath H-19 graphics.

The LP: driver was updated to support these features — it needed to pass the ESC character to the emulator. Make sure to install the new LP: driver found on each of the disks included in the distribution package.

Fixed a minor bug in H-19 that caused the occasional character written to the right-most couple of columns to be written on the H8 front panel instead of the H-19 window. Yeesh.

Known Problems in v5.2

An old "bug" has returned: on occasion the Apple menu won't show cascading menus immediately after the emulator is started, but will after the About window, the H-17 window, or either of the settings dialogs are opened. This seems to be due to an undocumented timing issue in the initialization of the appearance manager.

Work around: open/close the About window and cascading menus should appear.

go to top

Release 5.1.1

Added disk volume numbers and labels to the H-17 Manage window and corrected a small problem with control initiation when inserting a disk with the finder while the H-17 Manage window is open.

Thanks to Stanley Webb for the suggestion and for providing background on label content and the pitfalls of formatting them.

Known Problems in v5.1.1

An old "bug" has returned: on occasion the Apple menu won't show cascading menus immediately after the emulator is started, but will after the About window, the H-17 window, or either of the settings dialogs are opened. This seems to be due to an undocumented timing issue in the initialization of the appearance manager.

Work around: open/close the About window and cascading menus should appear.

go to top

Release 5.1

This is a Power PC-only release. The 68K version is frozen at 4.1.

  • Changed the pacing mechanism to work in machine cycles instead of instruction counts so that the emulator will better emulate the actual speed of an H8 when the system speed is set to 2 mhz. Refer to limitations for a caution on this feature.

  • Added 4 and 8 mhz speeds so that users of faster Mac's can speed things up a bit without totally ruining the emulation experience. Turbo mode, which runs unpaced, is still supported.

  • Added system speed and H-19 cursor preferences which can be set from a new preferences dialog found on the Edit menu.

  • Added a "remember window position" preference which can be set from a new item on the Window menu.

  • Changed the H-17 Management window from a dialog box to a normal application window. The emulator will continue to run with this window open, whether it's the front window or a back window. The emulator will also continue to run under the About window.

  • Added and rearranged a number of elements of the user interface — close boxes on the windows, a new Hide Window item on the file menu, a new Speed menu, etc. Refer to Menu help when you launch the emulator.

  • Added a Hold Screen Mode indicator different from the "holding" on-screen indicator, to let you know that you are in hold-screen mode when you are not actually holding for the scroll key. (Thanks to Stanley Webb for that suggestion.)

There were some internal changes as well, not really visible to the user. Refer to the Design section of this web site for details.

go to top

Release 4.2.6 and 4.1.6

This release fixes the bug documented in the 3-August bug report below.

Release 4.1 is frozen as of this release. I will fix any ugly bugs that might be uncovered, but this is it for the 68K release.

3-August-2002 bug report

Thanks again to Stanley Webb for pointing this out to me. If you create a text file on the Macintosh that does not have a carriage return as the last character in the file, and transfer that file to the H8 via the AT: driver, the last line of the file will be improperly terminated with a carriage return character instead of a new line character.

This is the result of an incomplete fix way back in release 2.3, where native Mac printing was first introduced. I changed the AT: driver, moved CR-to-NL translation to the Mac side of the interface, and missed one crumby character in serialio.c. Rats.

This will be fixed in the 4.x.6 release. In the mean time, make sure that all Mac-originated text files have a CR at the end of the last line — e.g., press return after the last line of text — before transferring the file to the H8.

go to top

Release 4.2.5 and 4.1.5

This release fixes a coding error that caused a type 1 or type 3 program crash under OS 8.1. This error was introduced way back in release 2.2.

Thanks to Stanley Webb for pointing out this error and for his help in tracking down the cause.

go to top

go to top

Release 4.2.4 and 4.1.4

This release fixes a design error that had the H-19 terminal responding to flow control (Xon/Xoff) characters transmitted by the H8. A real H-19 does not respond to flow control received on the serial interface.

Thanks again to Neal Granroth for pointing out this error.

go to top

Release 4.2.3 and 4.1.3

This release fixes the bug described in the June 12 bug notice below.

Implementation note:


  1. the H8 emulator is the front application; and

  2. the H-19 window is the front window;

...then the H-19 window will scroll quickly without creating update regions and updating the whole window after each scroll.

If either of these conditions is not true, then an update region is created for every type of scroll (scroll up on line feed, scroll down on RVI, insert/delete line, insert/delete character) and the window is updated after each instance of a scroll. This correctly displays the window when there is an overlapping window, though there is a performance penalty.

go to top

Bug Notice — 12-June-2002

Thanks to Neal Granroth for pointing this out to me.

If you allow another window to overlay the H-19 window while an H8 application is writing to the H-19, the H-19 will not scroll properly. The area immediately above the overlaid window will contain apparent garbage.

This is the unintended consequence of a performance improvement I made to window scrolling back in the 3.1 release, as I recall. The H-19 is simply scrolled without creating and invalidating an update region, avoiding the inevitable total-window redraw on every scroll.

I'm not sure yet exactly how I'm going to fix it, but I will fix it. Stay tuned.

In the mean time, either (a) don't let another window overlap the H-19 window while it's active, or (b) simply hide/show the H-19 window to clean up the display.

go to top

Release 4.2.2 and 4.1.2

  • Fixed a bug in the H19 emulator. With the cursor on line 25, sending a home sequence (Esc HCUH) would move the cursor to line 25 column 1. Turns out a real H19 would move it to line 1 column 1. Thanks to Neal Granroth for pointing that out to me.

go to top

Release 4.2.1

  • Fixed a bug that caused the enter key on the H-19 numeric keypad to transmit the wrong value when in normal or shifted mode.

  • Added a new Programming Information section to the Help system. New pages there include a Memory Map, full Basic documentation, Assembly Language documentation and HDOS System Calls. (The Help package was also updated in the 4.1 release package.)

  • I updated the standard .ACM files on the Extras disk to include all the information in the Memory Map help page and the HDOS System Calls page. (The Extras disk was also updated in the 4.1 release package.)

go to top

Release 4.2

There are none! All I did was port the source code to Apple's MPW development environment — a non-trivial change — so I could compile and link as a native PPC application.

While I was in there, I changed a few error messages slightly, and cleaned up the fonts in the About box.

Notice — 9-Feb-2002

The Enter key on the numeric keypad doesn't work correctly in the 4.2 release. This problem is not present in 4.1. It only affects normal and shifted mode; alternate mode Enter works fine.

I ported the source to MPW to produce release 4.2. MPW's MrC compiler "flips" the meaning of \n and \r. I have some \r's in the H-19 emulator keyboard translation tables, and they're translating as line feeds instead of carriage returns. HDOS weeds out line feeds, so it appears that the key does nothing.

I'll have a fix in 4.2.1 in a week or so, just as soon as I finish a help system update. In the mean time, use the Return key on the main keyboard instead of the Enter key on the keypad.

go to top

Release 4.1

  • A number of performance improvements were made to allow the emulator to run on slower machines. We got something of a 30% or better increase in raw CPU throughput on the author's machine under Turbo mode.

  • The performance improvements actually made the emulator so fast as to be nearly unusable on the author's machine when run under Turbo mode, so I added H-19 terminal output pacing. The terminal will now display a maximum of 2,000 characters per second, no matter how fast the host system runs. Turbo mode now only speeds the processor, as it was supposed to do in the first place.

  • Fixed a bug in I/O Processing that was preventing a received break from causing an interrupt when line status interrupts were enabled.

  • Fixed a coding problem in the system scheduling loop; we were repeatedly inserting the same time record in the system time queue over and over. It is now inserted once, removed once, and primed very, very often.

12-Jan-2002 — Init.abs will not work at very high processor speeds. It appears to "hang" with interrupts disabled. If this happens to you, switch off Turbo Mode and the initialization will continue and complete successfully.

This is a speed sensitivity in init.abs. The problem cannot be corrected in the emulator.

go to top

Release 4.0

  • H8 software can now access and use the Macintosh modem.

  • The emulator now supports double-sided and 80-track disks when the HUG Enhanced SY: Driver is installed. (The driver is available on the release page.)

  • The emulator now supports a "Turbo Mode" which effectively disables processor pacing and allows the 8080A to run at the fastest speed possible on the host Macintosh system. There are some cautions to the use of Turbo Mode; please make sure you read the documentation in the Help system.

  • A "Reset" button was added to the Manage Diskettes dialog, allowing for the natural use of the "reset" HDOS command and easing the swapping of diskettes on a disk drive.

go to top

Release 3.1

  • Some changes were made to the operation of the "extra" keys on the Mac keyboard — the cursor keys, del, and home — to make them function more logically when the H-19 keypad is in Alternate Keypad mode. This is best described in the Help system, on the H-19 Programming Information page.

  • An 8080A Processor Technical Documentation page was added to the help system. This contains details on the system flags, a version of the octal reference chart, and a terse but complete description of all opcodes.

The keyboard changes appear small, but are significant when you start using an application that uses Alternate Keypad mode, such as the PIE text editor. Believe me!

go to top

Release 3.0

  • H-19 Video Terminal emulation is now supported. Please review the help files for information on using the H-19 window.

  • The sound played after entry of the 3rd PAM/8 digit has been changed to something more appropriate.

go to top

Release 2.3

  • You can now print directly to the Mac printer. A new LP: driver has been released to work with this new emulator feature. See the Print Handler Design and Print Page Layout design notes for some details.

    One key improvement is that print functionality is automatic with this release; you no longer have to open a print file before printing.

  • Text file transfer between the H8 and Mac environments is now automatic; you no longer have to remember to open files in advance. A new AT: driver has been released to work with this new emulator feature.

  • The emulator now requires five (5) megabytes of system memory to run. The extra ram was allocated to make sure that the Macintosh print package had sufficient space to do its thing.

  • I've removed the HTML-based source documentation from the source package as it's hard to maintain and of dubious value, anyway. I'm going to better comment the source for the next release, which should eliminate the need for the separate package.

go to top

Release 2.2

  • Added preferences. You can now choose which disk, if any, is automatically inserted in a drive when the emulator is started. Refer to the Preferences design note for details.

  • You can now open a PAM/8 tape file or insert a diskette by opening the file with the Finder.

go to top

Release 2.1

  • Added background operation. When the H8 is not the front application, it will run for 10ms between calls to WaitNextEvent. It will also update the front panel LEDs every 10ms. When the H8 is the front application, it will make these calls every 30ms, which is an increase from the previous version.

  • Added 'TEXT' and 'hfdr' resources to provide a description to the Apple System Profiler application.

  • Fixed the duration of PAM/8's tones under System 9.1. The "boop" that occurs after the entry of the 3rd digit is still too long, but it's as short as I can get it until I can get a fix from Apple.

  • Increased the H-19's character-gathering time window from 1ms to 5ms to reduce overhead and boost performance. Terminal performance increased by approx. 50% on the author's system.

  • Fixed the mount problem with uninitialized disks. You can now create and dismount a disk without initializing it. The next time you mount it, HDOS will still consider the disk to be uninitialized.

  • Fixed the problem that was causing the last line to apparently be lost when transferring text from the Mac to the H8. If a text file does not end in Carriage Return, one will be appended before we return EOF to the AT: driver.

  • Updated and reformatted the user help system. It's much more attractive now and easier to use. And it includes two new sections: Release Notes and Error Messages.

go to top

home   release   support   design   resources   legal   site map