I was looking into the available docs and firmware for this system (http://bitsavers.org/pdf/ibm/system23/), to try and figure out how this thing handles text display. Naturally I don’t have one of these – I’m just a certified nutter for bitmap font stuff, but the System/23 is particularly interesting, as an immediate relative of the 5150 in some respects.
The easy part:
The display is 80 columns by 24 rows; each character occupies 10x14 dots (the ROM format is 8x16, but the bottom two lines are unused, and the two extra columns contain either spacing or bit duplication, much like the 5150 MDA’s 9th dot column). The attribute generator provides blinking, inverse-video, underlined and highlighted (intense) text.
The native encoding is a form of EBCDIC, but the system provides several country-specific character sets (see Operator Reference, p304). You can input characters outside the selected set (with some restrictions) by holding down ALT and typing the character code on the keypad - another small thing which was carried over to the IBM PC.
The CRT section of the service manual helpfully provides an image for each charset:
The actual character ROM is found in firmware/System23.zip (CHR_73783bc7_8519412.bin). You might expect the contents to match the machine's EBCDIC-based encoding, but no - interestingly the ROM simply reproduces the country-specific sets one after the other.
The first group of 64 characters is common to all sets, followed by the second 64 chars for each set in order... with all the wasteful duplication that this entails:
The weird part:
So how does this all map onto the System/23's EBCDIC-based encoding?
This encoding is described in various places - most completely in the BASIC Language Reference, p. 53 (user_manuals/binder_07).
Problem is, it contains quite a few characters which don't appear anywhere in the country-specific sets, or in the character ROM - the missing ones are in yellow here:
Yes, the ROM does not contain the digit "1"(!).... as you might have noticed from the image of its contents. So how is it rendered on screen?
Looking at existing images and videos, it seems that the bitmap for lower-case L
But what about those other missing characters?
I could see how the underscore (6Dh) could be generated by simply enabling the underline attribute, for example.... and the tilde ~ (A1h) by displaying only a couple of scanlines from 'Ã', or something. But that doesn't explain the "¼", or the line-drawing characters, or most of the rest really.
It'd sure be interesting to know what's going on there. Even just conjecture: why would the use such a seemingly over-complicated and wasteful setup?
Who knows, maybe some day the information may help towards emulating this system (which hasn't been done yet AFAIK).
The easy part:
The display is 80 columns by 24 rows; each character occupies 10x14 dots (the ROM format is 8x16, but the bottom two lines are unused, and the two extra columns contain either spacing or bit duplication, much like the 5150 MDA’s 9th dot column). The attribute generator provides blinking, inverse-video, underlined and highlighted (intense) text.
The native encoding is a form of EBCDIC, but the system provides several country-specific character sets (see Operator Reference, p304). You can input characters outside the selected set (with some restrictions) by holding down ALT and typing the character code on the keypad - another small thing which was carried over to the IBM PC.
The CRT section of the service manual helpfully provides an image for each charset:
The actual character ROM is found in firmware/System23.zip (CHR_73783bc7_8519412.bin). You might expect the contents to match the machine's EBCDIC-based encoding, but no - interestingly the ROM simply reproduces the country-specific sets one after the other.
The first group of 64 characters is common to all sets, followed by the second 64 chars for each set in order... with all the wasteful duplication that this entails:
The weird part:
So how does this all map onto the System/23's EBCDIC-based encoding?
This encoding is described in various places - most completely in the BASIC Language Reference, p. 53 (user_manuals/binder_07).
Problem is, it contains quite a few characters which don't appear anywhere in the country-specific sets, or in the character ROM - the missing ones are in yellow here:
Yes, the ROM does not contain the digit "1"(!).... as you might have noticed from the image of its contents. So how is it rendered on screen?
Looking at existing images and videos, it seems that the bitmap for lower-case L
l
is simply reused for the numeral 1
:But what about those other missing characters?
I could see how the underscore (6Dh) could be generated by simply enabling the underline attribute, for example.... and the tilde ~ (A1h) by displaying only a couple of scanlines from 'Ã', or something. But that doesn't explain the "¼", or the line-drawing characters, or most of the rest really.
It'd sure be interesting to know what's going on there. Even just conjecture: why would the use such a seemingly over-complicated and wasteful setup?
Who knows, maybe some day the information may help towards emulating this system (which hasn't been done yet AFAIK).
Last edited: