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.