The set-iomap BASIC program allows translatable input and output for each port on the system.
set-iomap port.number{,item-ID} ([i|o|ri|ro]
port.number | Specifies the number of the port for which the iomap is being set. |
item-ID | Item-ID of the user-defined keyboard item. It must be numeric, and is not required when used with any of these options: ir, ri, or, or ro. |
i | Installs input keyboard. Character translation occurs before reaching input handling code, such as BASIC in. |
o | Installs output keyboard. Character translation occurs before reaching output handling code, such as BASIC print. |
ir or ri | Removes an installed input keyboard. |
or or ro | Removes an installed output keyboard. |
There is a file in the dm account called iomap-file. This file contains keyboard items that are defined by users. The item-ID should be numeric and should be in the range of 0 <= item-ID <= 2147483647. The keyboard item has 34 attributes and has this format:
attr 0 | Item-ID |
attr 1 | User comments |
attr 2 to 33 | ASCII code of characters from 0 to 127 in ASCII hexadecimal format. For example: character a has its ASCII code as x'41' and should be entered in the item as '41'. Each attribute from 2 to 33 has exactly eight entries each. Each entry must be two characters and there should be no quotes or spaces surrounding any number. In other words, each entry should look like a 16 digit hexadecimal number. User can put their comments after the eighth entry on that attribute. |
The example below shows how to translate the character A to B:
ASCII code of A is x'41' = d'65'
ASCII code of B is x'42' = d'66'
65 mod 8 = 8 with remainder 1
Translated character, which is B, should be entered at attribute 8+2= 10 and at column 1*2+1=3 as 42. The reason that 2 is added to 8 is because counting begins at 0 and attribute 1 is used for comments.
open "iomap-file" then a = "Sample IOMap" for b = 0 to 127 a < 0 + int( b / 8 ) > := dtx( b ) "r%2" next b write a on "12345" close end