[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Changing the ASCII characters



Rubywand <rubywand@swbell.net> wrote:

>      One question: The standard (non-international) IIe/Enhanced IIe
> diagram shows pin 21 (A11) going to a "GR" signal. Does this mean half
> the PROM is just filled with 1's to output when Graphics are ON or does
> it select mouse text characters (or what)?

This is all covered in Understanding the Apple IIe (GET THIS BOOK - IT
IS BRILLIANT!)

However, I can answer the question.  :-)

Yes, half the IIe video ROM is occupied by graphics mode images.  I'd
have to look in my copy of the aforementioned book for details, but I
can remember that there are both Hi-res and Lo-res images in the ROM,
and presumably both are in the "GR" half.  Another bit is probably used
to select between Hi-res and Lo-res.

There are four zones in the ROM (US/NTSC IIe).  I'm not sure of the
order, but they are:

- Text mode, inverse and mousetext characters
- Text mode, normal characters
- Lores graphics
- Hires graphics

The Internation/PAL version of the IIe has double this, with the local
text mode character sets replacing the US ones, and an identical
graphics region.

Selecting the alternate character set provides direct access to all 256
text characters.  The primary character set is a little messy.  INVERSE
($00-$3F) and NORMAL ($80-$FF) are identical, but FLASH ($40-$7F) is
implemented by toggling the high order bit of the character code while
holding the next bit at zero.  The actual characters are taken from
positions $00-$3F and $80-$BF.

The full set of characters in the alternate character set is:

$00-$1F   Inverse upper case (control characters)
$20-$3F   Inverse symbols
$40-$5F   MouseText (enhanced IIe) or inverse upper case (original IIe)
$60-$7F   Inverse lower case
$80-$9F   Normal upper case (control characters)
$A0-$BF   Normal symbols
$C0-$DF   Normal upper case
$E0-$FF   Normal lower case

Note that characters $40-$7F can never be displayed while the primary
character set is selected, because the FLASH mode overrides this area,
mapping it to $00-$3F or $80-$BF.

INVERSE mode is handled in software by AND-masking each character with
$3F before it is written to screen memory.  The 80-column firmware is
smarter, allowing for inverse lower case in alternate display mode by
masking lower case characters with $7F and everything else with $3F.

FLASH mode is handled by AND-masking each character with $7F and
OR-masking it with $40.  It is not possible to get flashing lower case.
FLASH doesn't work while the alternate character set is active.

(Interestingly, the IIgs Console driver completely avoids using the
$C0-$DF upper case group and instead uses $80-$9F, so its INVERSE and
NORMAL sets are orthogonal.)

-- 
David Empson
dempson@actrix.gen.nz
Snail mail: P.O. Box 27-103, Wellington, New Zealand