On Thu, 23 Apr 2015, Jules Richardson wrote:
Date: Thu, 23 Apr 2015 14:55:56
From: Jules Richardson <jules.richardson99 at gmail.com>
Reply-To: "General Discussion: On-Topic and Off-Topic Posts"
<cctalk at classiccmp.org>
To: General at
classiccmp.org,
"Discussion at classiccmp.org": On-Topic and Off-Topic Posts
<cctalk at classiccmp.org> ;
Subject: Re: IBM 5160 oddball fault
On 04/23/2015 11:20 AM, tony duell wrote:
Does anyone have any ideas what might be going on? It doesn't quite seem
like a memory fault - possibly some sort of address decoding error? It's
almost like the video board is pulling display data from the wrong part of
memory, but I'm not sure that makes sense given that the board has its own
local RAM rather than relying on RAM on the system board.
To me this sounds like an address line fault on the expansion bus. The CPU
thinks
it's writing to a particular location in the CGA card's memory, but due to
the fault it
actually accesses another location.
Yes, could be. CGA base address is B8000h, I think, and I'm seeing display
text offset by 800h (2KB - 1024 characters plus 1024 attribute bytes).
Assuming that the BIOS is responsible for clearing video memory (rather than
it being a function of the CGA card itself), then my on-screen garbage could
be down to whatever happens to be in the first 2KB of the CGA card's memory at
power-on, and address bit A11 is jammed high on the expansion bus.
What's puzzling if that's the case is why the ROM BASIC 'function key'
strip
appears normally at the bottom of the screen - I'd expect it to be stuck in a
'non visible' portion of the CGA card's memory.
Have you tried the CGA card in different slots?
Just in case it's a bad
contact
on the edge connector.
Yes - the same thought had occurred to me.
I'll take a look at the address lines (albeit just with a DMM, but that will
hopefully be enough if it's a stuck bit)
cheers
Jules
Since it comes up in BASIC, have you tried BASIC's POKE command to
stuff some values into the first 1,024 characters (2048 bytes)?
I dug up the old IBM PC BASIC manuals and refreshed my memory, and
took a few minutes to write a BASIC program that will POKE values
into the first 1,024 characters. You can use it to test if the
CGA memory is OK when accessed directly. If the memory access is
OK it should place 1,024 capital "A" letters that fill in the
first 12 lines and 64 characters of the 13th line.
100 ' A test of the first 1,024 characters of CGA character memeory.
110
120 ' Set to 80x25 text mode, with color, page 0 active, page 0 viewed.
130
140 SCREEN 0, 1, 0, 0
150 WIDTH 80
160
170 ' Set segment to CGA memory.
180
190 DEF SEG = &HB800
200
210 ' Poke bright white on black into CGA page 0.
220
230 FOR I = 1 TO 2047 STEP 2
240 POKE I, 15 ' Poke 7 instead of 15 for normal white.
250 NEXT I
260
270 ' Poke capital A into CGA page 0.
280
290 FOR I = 0 TO 2046 STEP 2
300 POKE I, 65
310 NEXT I
320
330 ' Reset segment to BASIC's data segment.
340
350 DEF SEG
/s/ Ernest