On Tue, 29 Dec 2009, Phill Harvey-Smith wrote:
Date: Tue, 29 Dec 2009 21:24:25 +0000
From: Phill Harvey-Smith <afra at aurigae.demon.co.uk>
Reply-To: "General Discussion: On-Topic and Off-Topic Posts"
<cctalk at classiccmp.org>
To: General Discussion: On-Topic and Off-Topic Posts <cctalk at classiccmp.org>
;
Subject: Re: the venerable 80186 (and 80188)
While we're on the subject of 80186s I discovered some odd (well
undocumented) behavior whilst experementing on my RM Nimbus (as I'm writing a
MESS driver).
If I load a value into AX, and then do an out instruction with AL, the whole
of AX seems to still appear on the data bus, something like:
MOV AX,055AAh
OUT 022,AL
It looks like to me that the whole of AX is actually getting put out, and
that the /BHE ine is set to signify only the bottom 8 bits are valid. The
Nimbus video controller seems to ignore /BHE and treat the data bus as always
16 bits wide.
Is this known undocumented behavior ? I seem to remember that the Z80 has a
similar undocumented behavior with the addressing of it's in and out
instructions also.
Seems like the simplest thing to do (what _should_ the upper data bits be
on a byte write?) Anything else (all zeros, ones, duplicated low half,
floated, etc) probably requires more hardware.
There must be 100s of such examples of the hardware showing through when you
look at things that are "dont-care" in the processor specification like the
high order data bus on a byte write.
Cheers.
Phill.
--
Phill Harvey-Smith, Programmer, Hardware hacker, and general eccentric !
"You can twist perceptions, but reality won't budge" -- Rush.
Peter Wallace
Mesa Electronics