IBM 5100 (Character Sets)

BACK TO IBM 5100

IBM 5100 Display Character Set

The IBM 5100 has a single built-in character set, which is indexed 0-255 and looks like the following:

Notes on how this character set was generated are at the end of this section.

Notice that the indexes 128-255 (the lower half) are simply underscore versions of the 0-127 entries. This agrees with the IBM 5100 MIM document:


IBM 5110 Display Character Sets

For the IBM 5110 system, the display card has several character sets built in. These are primarily to be able to present the currency symbol used around the world, along with a few special accented characters. This presence of this capability is part of the transition of the IBM 5110 being a more (international) “business oriented” system, whereas the IBM 5100 was more of an “engineering focused” system.

The display card has various jumpers that are used to indicate which symbol set will be used as the default during power up, but another set can be selected during operation of the system. Below is a preview of the “standard” set of symbols supported by the display (indexes 0 to 255):

In comparison to the IBM 5100, only the uppercase letters A-Z retain the underscore option.

In the BASIC Manual for the IBM 5110, it notes the following instruction for switching between these character sets during runtime of the system:

How to Display the Character Set

For a reference video of how the full character set displayed is here.

To get the display to output the character set, use the following PALM machine code:

ADDR   CODE       PALM ASSEMBLY     COMMENTS
----   ----       -------------     ----------

2000   D501 0200  LWI R5, #$0200  ; Begin of display buffer
2004   8606       LBI R6, #$06    ; High byte of end address
2006   8740       LBI R7, #' '    ; Blank (Hex $40) [use "00" for IBM 5100,
                                  ; i.e. "8700" instead of "8740" ]
2008   7750       MOVB (R5)+, R7
200A   C567       SBSH R5, R6
200C   F005       BRA $2008

200E   D501 0200  LWI R5, #$0200  ; REG[R5] = Begin of display buffer 0x0200
2012   8604       LBI R6, #$04    ; High byte of end address  (256 only)
2014   8700       LBI R7, 00      ; start R7 at 0x00
2016   7750       MOVB (R5)+, R7  ; RWS[R5] = value in R7 (and increment R5)
2018   0772       INC R7,R7       ; increment R7
201A   0552       INC R5,R5       ; increment R5 (to skip a column)
201C   C567       SBSH R5, R6     ; SKIP if all bits in R6 also set in HI(R5)
201E   F009       BRA $2016       ; 8 bytes (4 instructions) plus one byte
2020   0000       HALT


NOTE: I based this on Christian Corti initial assembly example that prints a character string.

IBM 5110: You can enter this program manually by doing CMD-ATTN near startup, then type “A 2000” (Alter address 0x2000), type in the code sequence only (press RETURN at end of the code sequence), press ATTN to return to the prompt, then “BR 2000” to run it).

IBM 5100: Like the IBM 5110, you can also use CMD-ATTN near startup (after BUP step G). Alternatively, at the APL/BASIC prompt, press HOLD and then press CMD-MINUS. Type “A 2000” to alter the RWS memory, use SPACE when finished typing the code. Then press CMD-ASTERICK (“*” on Number Pad) to enter “DIAG DCP” mode and “BR 2000” to run the code.

Leave a Reply

%d bloggers like this: