Limitations, Shortcuts and Bugs
This page was last updated on 05/14/2003
Known Bugs in the Phase Two Code
Virtual H8 Version 1.33 of 04/12/2003, issued 04/12/2003
There is a problem with the front panel buttons occasionally vanishing when you press them.
I have a fix which I will include in the next build. Meanwhile, if you click a button and
it disappears, drag the window so the control panel keypad is off-screen and then drag the
window back -- this should redraw the button.
Virtual H8 Version 1.32 of 08/18/2001, issued 08/18/2001
I was able to locate the H-19 documentation and the H-19 which I had lent someone a decade ago was
returned to me. So I had the PROM contents and a physical unit to look at again. I discovered that
the emulator's H19 logo was not photorealistic, so I redrew it. I also found that the character
generator for the H19 font had many defects. The character generator now produces pixel patterns
identical to the H19 PROM listings' patterns.
Virtual H8 Version 1.31 of 07/20/2001, issued 07/21/2001
The PROM loader code which reads PAM37.ROM as the application starts will only
accept OCT and DEC radix image files. (The parser does the wrong thing on "DATA"
and "END" keywords because the first letter of the keyword is interpreted as a hex
digit.) This has been corrected in the 1.32 release. [Reported by Neal Granroth.]
The PAM-37 keyboard buttons act strange if you click on a button and drag the mouse
off the button before releasing. What was happening was the button got the
WM_LBUTTONDOWN message but when the mouse was moved off the button it never got the
WM_LBUTTONUP message. I fixed this in 1.32 by having the button capture the mouse
until the WM_LBUTTONUP message was received. Now these buttons behave properly.
[Reported by Neal Granroth.]
Enhancement: I found out how to do the 1000 Hz tone as a resource [thanks, Neal];
the wave file is no longer needed in the H8 directory (though it is now needed in
the code's RES directory so you can compile the program).
Enhancement: The Configure menu now lets you select TAU without having to
recompile the code. However, the selection won't take effect until you close the
program because by the time you make the new selection, the timer process that
uses it is already running.
H-19 (Demo) Version 1.05 of 06/14/2001, issued 06/16/2001
The H-19 will not function under Windows 95 or Windows 98. I suspect it will also
not function under Windows ME, but I've not heard about that. (It will function under
Windows NT 4.0 and Windows 2000.)
Not a bug, but rather an enhancement: When the program starts with a desktop area of
975x585 pixels or greater, you get a semi-photorealistic display including the nameplate and
an Online/Offline button. You can click a button on the nameplate and display a chart
of PC-to-H19 keyboard mapping. On the other hand, if the display is 800x600 (or you
have a bunch of menu bars on the screen so the available area is less than that (but still
at least 700x585), the program will re-configure itself to show only the "CRT" and move
the OnLine function to a check item and the keyboard help to a command triggering a pop-up
dialog in the system menu.
H-19 (Demo) Version 1.0 of 05/31/2001, issued 06/02/2001
The H-19 Demo is known not to work under Windows 98. I believe the problem has to
do with GDI object or resource management. I don't have a fix, since I don't have Win98.
The problem does not seem to be happening under Windows NT or Windows 2000 Professional.
The resources directory ("res") was missing from the source code set in the initial download,
so the project would not compile. This has been corrected in the current download.
See "release_notes.txt" in the download for details of what's
not yet working in this initial release.
Known Bugs in the Phase One Code
Version 1.13 of 05/09/2001, issued 05/12/2001
The Virtual H8 cannot open its named pipes under Windows 98. This means the program is
limited to what you can do with the front panel only -- no tape. I may or may not be
able to fix this, but without the H19, it will be kind of pointless.
The Virtual H8's 2 millisecond interrupt is running at half speed under Windows NT 4.0 Server
(in what will become the next version of the code -- it's okay in the one currently available
for download). This is apparently an issue with the resolution of the multimedia API's
high-precision timer. In Workstation (and Windows 2000 Professional) when you ask for an
interrupt once per millisecond that's what you get. In Server, on the other hand, you get an
interrupt every two milliseconds. For future versions of the Virtual H8, I must have the
ability to divide time into one-millisecond increments (to simulate the diskette, for example).
It may be okay to have time running at one-half the wall-clock rate, but I suspect
that the diskette I/O code will break badly if the CPU-based timing loops in the
HDOS driver code think the disk is spinning at 150 RPM instead of 300.
The memory map manager has a bug that makes the system think
it only has 32K of RAM instead of 64K. I'm going to wait to release the fix for
this until I have the UART emulation for the console port built. If you insist on
a fix, email me and I'll tell you what to change in the source code -- it's a
See "release_notes.txt" in the download for details of what's
been added and what was fixed between the 04/25/2001 release and the 05/12/2001
Version 1.0 of 04/14/2001, re-issued 04/25/2001
The memory dump programs "dumh17.c" and "dumpam.c" included in the first issue of
the ZIP file were incorrect and will not compile with Toolworks C/80 version 3.
I've revised the code and updated the ZIP file -- if you took a copy of the 04/14/2001
version and need the correct dump programs, please download again. These were the
only two files in the distribution that have changed.
Interrupt request is interacting with IN and OUT operations such that an IREQ during
an IN instruction causes zero to be read and an IREQ during a write operation causes
the OUT to write the same data to the port twice. This is not harmful with respect
to PAM-37 code, but will upset emulation of other programs that do I/O.
The real-time tick is not at 2 milliseconds.
The sound sample is poor.
You must put the program executable and the 1000_hz.WAV file on
C:\h8 and put the ROM content in C:\h8\firmware.
ROM content is in two files: PAM37.ROM and H17.ROM. PAM37.ROM must ORG at 0000.0000
and be not more than 020.000 bytes long;
H17.ROM must ORG at 030.000 and be not more than 010.000 bytes long.
The emulator has some trouble with the ION indicator -- it flickers. I've
attempted to modify the UI to eliminmate the flicker, but the modification
led to the state being shown incorrectly for some programs. I decided to
let the blinkin' light blink.
Not all Z-80 instructions have been implemented. (I'll get 'em next time.)
Until/Unless I get permission to distribute the PAM37 and H17 ROM contents,
the emulator is incomplete. (See Legal Issues.)
The supplied PAM37.ROM and H17.ROM files are not what a real H-8 would have in its
ROMs and the emulator therefore does not act like a real H-8.
You are on your own to create actual ROM image files.
Limitations in Phase One
The power switch is on the front panel. (It's probably silly to even have one,
but I wasn't originally going to have a title bar on the window and you need to
have some way to close the application.)
The RTM and RESET functions (normally requiring pressing two keys at once) have
been assigned to two spurious extra buttons. (This will stay this way -- I know
of a way to improve the UI so you could successively click on the two PAM
buttons to make the combination, but it's not worth the hassle.)
The Z-80 emulation makes no attempt to have instructions execute in the correct
number of clock cycles -- execution times for various opcodes are what the code
required, not what the Z-80 would have done, not even proportionately. Though I
will continue to try to make the processor emulation run faster, I have no intent
to make the instructions execute "to scale". Forget about CPU-based timing loops
such as the music applications.
Only the CPU and PAM hardware is being simulated. I/O to other ports will trap.
The logic analyzer is only partially implemented. (Only the controls on the first
page and not even all of them.)
H8 Top Page