Heath8080A — Product Support |
Page last updated |
26-February-2003 |
|
On this page....
• contacting me Other links of interest... |
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. Macintosh Host System Requirements There are two major requirements the host Macintosh system needs to meet in order to successfully run the emulator:
Additional specifications:
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. Time 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. Terminal 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:
Sound 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. Keypad 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. 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:
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. 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. 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. Release 5.2 Added features to the printer:
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. 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. Release 5.1 This is a Power PC-only release. The 68K version is frozen at 4.1.
There were some internal changes as well, not really visible to the user. Refer to the Design section of this web site for details. 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. 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. 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. Release 4.2.3 and 4.1.3 This release fixes the bug described in the June 12 bug notice below. Implementation note: If:
...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. 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. Release 4.2.2 and 4.1.2
Release 4.2.1
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. Release 4.1
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. Release 4.0
Release 3.1
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! Release 3.0
Release 2.3
Release 2.2
Release 2.1
|