[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
simulator).
- 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
simulator.
- 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
described.
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
0
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)
Regards,
Dave Dunfield
--
dave04a (at) Dave Dunfield
dunfield (dot) Firmware development services & tools: www.dunfield.com
com Vintage computing equipment collector.
http://www.parse.com/~ddunfield/museum/index.html
--
Delivered by the SEBHC Mailing List
More information about the Sebhc
mailing list