• Please review our updated Terms and Rules here

HX-20 Trap error

Stef

Member
Joined
May 16, 2018
Messages
10
Hi,

i´m Stef from Germany, recently bought a HX-20, unfortunaly apparently with a huge fault.

Well, the machine powers on, shows both the Initialisation hint and both Menu entries [1] and [2], The monitor [1] itself works, the
Initialisation Hint does -not- and running into Basic leads into a trap error every time at the same adress. The Keyboard itself
fully works, even with CTRL held down.

I´ve only measued so far for connectivity if the Data bus and Adress bus between CPU1 and all ROMs, RAMs, HC138s CS-Selector, but not the signals themselfes
via a logic Analyzer.

I nailed the TRAP on Opcode $00 down here:


DFCD : 06 " " tap
DFCE : DD BD " " std X00BD
;
DFD0 : 12 " " db $12
;
DFD1 : DC FD " " ldd X00FD
DFD3 : 0B " " sev
DFD4 : DC B8 " " ldd X00B8
DFD6 : 0C " " clc
DFD7 : DC C1 " " ldd X00C1
DFD9 : 1A " " slp
DFDA : DC C9 " " ldd X00C9
DFDC : 05 " " asld
DFDD : DC E3 " " ldd X00E3
DFDF : 08 " " inx
DFE0 : DD 36 " 6" std X0036
DFE2 : 0D " " sec
DFE3 : DD 93 " " std X0093
DFE5 : 0A " " clv
DFE6 : DD A9 " " std X00A9
;
DFE8 : 00 " " db $00 <========================
;
DFE9 : DD 60 " `" std X0060
DFEB : 60 FF "` " neg $FF,x
DFED : FF 7E DE " ~ " stx X7EDE

Where the Monitor shows:
A=FF B=00 C=C9 X=DFD2 S=04AD, P=DFE8

As i´m unable to find in the remaining ROMs some sort of "direct jump" into one of these adresses above,
i suppose the CPU is jumping into this location somehow via an indexed Jump. Unfortunaly, as being "only" for >25 Years an
AVR/8051 programmer, still some commands are new to me, especially "ldd" which i only know
as a "load with displacement", but the HC6301 says something about "Load double accumulator" or somewhat in that
direction.

I don´t understand if the X-Pointer is a read pointer and that thing tries to read Adress $dfd1 and $dfd2, ends up with an $ff in
the Accumulator, traps because of an illegal accumulator content; or the trap is done by intention (in order to jump somewhere else),
or if X shows an entry point of the subroutine.

So my question is: Does anybody of you dear fellows know whats the above Code Segment all about, what possibly
causes the HX to jump there? Possibly a ROM failure in one cell?

Kind regards
Stef
 
Hello Stef,

I've just fired up my HX, and had a quick look in the manual.

I note that memory addresses D000-DFFF are in ROM2, and this ROM stores the routines for Menu, Monitor and Virtual Screen routines.

When I use the monitor, to dump the same addresses as you list, then all those bytes show as &FF, NOT as the data you list. I do have actual code running from DFEE, which shows 7E,DE,A4,7E,D7,EF etc. Again, this is ROM, so this is all fixed/permanent?

How come the monitor on your device shows something different for these addresses? Are you thinking that the monitor may be saying it's looking at these addresses, but the data is coming from somewhere else?

I may be able to find a more detailed breakdown of the routines in the ROM2 space. I've certainly seen routines directly using these routines somewhere.

Geoff
 
After a further look, I note that the data you show for DFEC -> seems to agree with my machine. DFEF is in fact a Jump Table at the end of the D000-DFFF area, giving access points to various routines within that ROM block. However, the addresses just prior to DFEC should all the FF. Not checked just how far back. I guess there's some unused space in the ROM between the end of the actual code and the Jump Table. Well, there is in MY machine. Maybe you've got a different ROM?

What is the history of your HX-20?

Check out the Technical Manuals (software) via
http://www.retrocomputing.net/parts/epson/HX20/docs/files.htm

A while later...

I've checked my HX again. On my machine, the addresses starting DFD8 thru to DFED are all FF.

Looking at the code on my machine before DFED, I'd say this is NOT prog, but data, comprising a table (?) each line being a single byte, followed by a two byte address. On your machine, there are extra items on the end of the list, with the same format. Need to look more at the code, spot if the addresses on this list are the entry points of sunroutines, or just data?


Geoff
 
Last edited:
i remember having that problem and for me, the command GFF8B fixed it.

Hi,

i´m Stef from Germany, recently bought a HX-20, unfortunaly apparently with a huge fault.

Well, the machine powers on, shows both the Initialisation hint and both Menu entries [1] and [2], The monitor [1] itself works, the
Initialisation Hint does -not- and running into Basic leads into a trap error every time at the same adress. The Keyboard itself
fully works, even with CTRL held down.

I´ve only measued so far for connectivity if the Data bus and Adress bus between CPU1 and all ROMs, RAMs, HC138s CS-Selector, but not the signals themselfes
via a logic Analyzer.

I nailed the TRAP on Opcode $00 down here:


DFCD : 06 " " tap
DFCE : DD BD " " std X00BD
;
DFD0 : 12 " " db $12
;
DFD1 : DC FD " " ldd X00FD
DFD3 : 0B " " sev
DFD4 : DC B8 " " ldd X00B8
DFD6 : 0C " " clc
DFD7 : DC C1 " " ldd X00C1
DFD9 : 1A " " slp
DFDA : DC C9 " " ldd X00C9
DFDC : 05 " " asld
DFDD : DC E3 " " ldd X00E3
DFDF : 08 " " inx
DFE0 : DD 36 " 6" std X0036
DFE2 : 0D " " sec
DFE3 : DD 93 " " std X0093
DFE5 : 0A " " clv
DFE6 : DD A9 " " std X00A9
;
DFE8 : 00 " " db $00 <========================
;
DFE9 : DD 60 " `" std X0060
DFEB : 60 FF "` " neg $FF,x
DFED : FF 7E DE " ~ " stx X7EDE

Where the Monitor shows:
A=FF B=00 C=C9 X=DFD2 S=04AD, P=DFE8

As i´m unable to find in the remaining ROMs some sort of "direct jump" into one of these adresses above,
i suppose the CPU is jumping into this location somehow via an indexed Jump. Unfortunaly, as being "only" for >25 Years an
AVR/8051 programmer, still some commands are new to me, especially "ldd" which i only know
as a "load with displacement", but the HC6301 says something about "Load double accumulator" or somewhat in that
direction.

I don´t understand if the X-Pointer is a read pointer and that thing tries to read Adress $dfd1 and $dfd2, ends up with an $ff in
the Accumulator, traps because of an illegal accumulator content; or the trap is done by intention (in order to jump somewhere else),
or if X shows an entry point of the subroutine.

So my question is: Does anybody of you dear fellows know whats the above Code Segment all about, what possibly
causes the HX to jump there? Possibly a ROM failure in one cell?

Kind regards
Stef
 
Gff8B will 'Go' to FF8B, which is within a Jump Table. Specifically, this will do JMP E34D which is an area of ROM for I/O routines.

Don't know what this specific block does, but it starts with BD E2CE which is a JSR to an earlier nearby block.

As this code is all ROM code, I'd assume that the real problem is that BASIC has jumped hereabouts in the first place. Maybe BASIC is following a vector set for something else in low RAM. If this is one of the Bundeswehr machines that have been on the market recently, the machine may have been set up to work with a specific - and non-standard - configuration, and if something that is supposed to be there, but no longer is there, then this may be source of the problem?

Happy to keep investigating, mind you.

Geoff
 
'aushilfe444'

Can you remember where you found out about this 'fix' for the problem? Was the 'fix' permanent, or did the operation need to be repeated?

What was the source of the HX-20 that you had, and was it a totally standard HX, or was it modified in any way?

Thanks for any clarification that you can offer.

Geoff - HX-20 owner since 1983
 
Back
Top