[sebhc] Emulator progress & Hardware Q's

Dave Dunfield dave04a at dunfield.com
Mon May 10 07:30:56 CDT 2004

Hi Guys,

I've been poking away at my H8 simulator - busy with other tasks so it
has gone slowly, however I'm going to try and allocate more time to it
over the next couple of weeks and try to get a first edition out.

Progress so far:
 - I have the 8080 emulation engine working and debugged (from my Altair

 - I have the basic framework for the simulator in place, which allows me
   to switch between full terminal display, split panel/terminal display,
   and full-screen debug modes. Most of this is also derived from my Altair

 - I have the H8 front panel display implemented, with all LED segments,
   status lights, and Key hiliting.

 - I have 8251 UART emulation code working (also from my Altair) including
   redirect to emulated terminal (video/keyboard), or to PC serial port.

 - All that really remains to get the basic H8 simulator running is to
   "hook up" the front panel, and fixup the terminal emulator to correctly
   implement H19 codes - after that, I want to add the disk controller,
   and it should be able to boot!

I have a few questions regarding the H8 hardware, that I did not find
readily answered in the documentation. Perhaps someone can help clairify
these points, or at least provide pointers to reference material which
can help:

#1 - Can anyone provide clairification as to the purposes of bits 4-5
     in the front panel control register (Address F0h - 360o):

     From H8 operations manual, Page 38:
     "When the interrupt enable, IC108A and B will count two M  cycles
      before the -Q output (pin 11) goes low. If during the update
      process, D5 set the latch (IC106), the Q output (pin 2) will be
      high, enabling IC112C. When the -Q output (pin 11) of IC108
      goes low, pin 6 of IC112C will go low. Pin 6 of IC112C going low
      is decoded as a level 20 interrupt. Execution of additional
      instructions is halted unless the single instruction key is
      pressed. The CPU will not execute addtional instructions, but
      will continue to update the front panel and strobe the keys for
      additional instructions."

    Looking at the PAM-8 documents, we can see that level 2 interrupt
    (020) is a single-step interrupt. The above text would suggest that
    data bit 5 ("D5 set the latch" ?) controls single-stepping, however
    on the schematic, D5 is connected to pin 13 of IC106, and the
    corresponding outputs are not connected. On the schematic, D4 is
    connected to IC106 pin4, and the output (pin 2) operates as

    Does anyone know which is correct (D4 or D5)?
    Am I correct in assuming that the other one is unused?

#2 - Can someone send me or point me to a reference for detailed info
     on the H19 terminal so that I can correctly implement the various
     control codes? (I don't have an H19)

#3 - Can someone send me or point me to a reference for detailed info
     on the disk controller. (I don't have a disk controller).

#4 - Can someone send me a binary image of the PAM-8 ROM - save me
     having to set up the H8 and figure out how to download it ?

#5 - Here are some notes I've made on the H8 hardware, if anyone out
     there is intimately familier with this material could give it a
     review and let me know of any errors, or additional information
     that I have missed, that would be greatly appreciated.

Memory Map:
0000-03FF = System ROM
0400-1FFF = Reserved for future expansion
2000-203F = Monitor RAM
2040-FFFF = User RAM

I/O ports:
C0 = Reserved

F0 = Front panel Commands, Digit Select, Keypad
     Write: 7 - 1 = Enable Buzzer
            6 - Clock interrupt enable (010 interrupt)
            5 - Unused ??
            4 - Single-Step ?? (020 interrupt)
            3 - \         0000=Blank  0100=Addr3    1000=Status2
            2 -  Digit    0001=Addr6  0101=Addr2    1001=Status1
            1 -  Select   0010=Addr5  0110=Addr1    1010=Blank
            0 - /         0011=Addr4  0111=Status3  1011=Blank  11xx=Blank
     Read:  7 - \                000=.  011=*  110=9
            6 -  High key code:  001=#  100=-  111=8
            5 - /                010=/  101=+
            4 - High key pressed (0=Pressed)
            3 - \                000=7  011=4  110=1
            2 -  Low key code :  001=6  100=3  111=0
            1 - /                010=5  101=2
            0 - Low key pressed  (0=Pressed)

F1 = Front panel segment select
     Write:         1
                  6   2
                  5   3
                    4   8

F8 = Load/Dump data    port (8251)

F9 = Load/Dump control port (8251)

FA = Console   data    port (8251)

FB = Console   control port (8251)

FF = Reserved

Clock interrupt:
Every 2ms (500khz)

Dave Dunfield

dave04a (at)    Dave Dunfield
dunfield (dot)  Firmware development services & tools: www.dunfield.com
com             Vintage computing equipment collector.

Delivered by the SEBHC Mailing List

More information about the Sebhc mailing list