robhagemans / hoard-of-bitfonts

turns out I like bitmap fonts
Other
1.34k stars 51 forks source link

The TRS-80 Model 100 font appears to be missing #6

Closed hackerb9 closed 2 years ago

hackerb9 commented 2 years ago

Am I correct that the TRS-80 Model 100 font is missing? Or is it filed under the name of one of the similar, but less popular, systems? ("Kyocera Kyotronic 85", "NEC 8201", "Olivetti M10", and possibly others.)

If it is missing, are you accepting submissions? And would you want the different variants that existed?

There were at least three variants for the US Model 100:

  1. original 5x7 (in 6x8 bounding box),
  2. new 5x7, and
  3. a 7x9 (in 8x10 box) font that was used only with the 80-column monitor adapter called, confusingly, the "VT-100").

Possibly other related machines would be filed together:

  1. I believe the Tandy 102 and 200 had the same font as the Model 100, but I do not know for certain.
  2. Other machines with essentially the same internals but different branding had similar fonts, but perhaps should be filed under their own names. For example, the Kyocera Kyotronic 85 had Japanese in the "high ASCII" region (high bit set).

Here is an image of the font from a Model 100 emulated in a web browser at http://bitchin100.com/CloudT/

Output from `fori=32to255:?chr$(i);:next`

I do not know if that image is pixel accurate, but it should be. The machines did not have a character generator, so the pixels had to be drawn by the ROM.

robhagemans commented 2 years ago

Hi, thanks for reaching out! It's quite likely that there are still TRS-80 fonts missing, it does seem that there were a lot of different models and clones, each with slightly different fonts. All TRS-80 fonts in the repo are under https://github.com/robhagemans/hoard-of-bitfonts/tree/master/trs-80 , this includes some clones but clearly not all.

Contributions are very welcome and the image you attached can quite easily be converted - ROM images would be even better in case there are multiple versions, or any graphical characters stored in positions for control characters below chr$(32). So if you know where to find any I can have a look as well.

(In the source of the emulator you linked, there appears to be one font strike in https://bitchin100.com/CloudT/Emulation/mainRom.js - from a quick look it doesn't have more than the font in the image above, but it's hard to see exactly without doing a bit more work to extract it)

Would you have links to images or information about the other Model 100 fonts you mention?

robhagemans commented 2 years ago

Some further notes:

hackerb9 commented 2 years ago

The Virtual T emulator includes ROM images for the TRS-80 Model 100, Tandy 102, and Tandy 200. It also includes ROMs for the Kyocera Kyotronic 85, Olivetti M10, and NEC PC-8201A and PC-8300. roms.zip

[I see you have found them even as I type... ]

I wrote a little program to extract some of the fonts out of the ROMs and will post it next.

robhagemans commented 2 years ago

Ah, KC85 is Kyotronic 85, not Robotron Kleincomputer KC-85. That makes more sense :)

hackerb9 commented 2 years ago

The Virtual T includes .fcr files in the ROMs directory which are font files. I wrote an extraction program for them, but they do not look quite right. I believe they may have been "improved" to a higher resolution, but in so doing introduced an error or two.

The Tandy 200 font, I extracted from the ROM using this:

rom2txt.c ```C /* Simple hack to read fonts from .ROM files */ #include #include int main(int argc, char *argv[]) { int fw=8; /* Font width. */ FILE *fp; if (argc>1) { fp = fopen(argv[1], "r"); if (fp == NULL) { perror(argv[1]); exit(1); } } else { fp = stdin; } int c, count=0, charnum=0; char m[16][16]; while ((c=fgetc(fp)) != EOF) { for (int i=7; i>=0; i--) { m[count][i] = (c & 1<

The character definitions start at byte number 36963 of T200rom.bin, for ASCII character 32. The output looks like this (after I trimmed off the garbage output for undefined characters 0 to 31):

Output from rom2txt.c when reading T200rom.bin ```bash $ make rom2txt && dd if=T200rom.bin skip=$((36963-32*8)) bs=1 | ./rom2txt | tee T200rom.txt Character number 32 Character number 33 @ @ @ @ @ Character number 34 @ @ @ @ @ @ Character number 35 @ @ @ @ @@@@@ @ @ @@@@@ @ @ @ @ Character number 36 @ @@@@ @ @ @@@ @ @ @@@@ @ Character number 37 @@ @@ @ @ @ @ @ @@ @@ Character number 38 @ @ @ @ @ @ @ @ @ @ @@ @@ Character number 39 @ @ @ Character number 40 @ @ @ @ @ @ @ Character number 41 @ @ @ @ @ @ @ Character number 42 @ @ @ @ @@@ @ @@@ @ @ @ @ Character number 43 @ @ @@@@@ @ @ Character number 44 @ @ @ Character number 45 @@@@@ Character number 46 @@ @@ Character number 47 @ @ @ @ @ Character number 48 @@@ @ @ @ @@ @ @ @ @@ @ @ @ @@@ Character number 49 @ @@ @ @ @ @ @ @@@@@ Character number 50 @@@ @ @ @ @ @@ @ @@@@@ Character number 51 @@@ @ @ @ @@ @ @ @ @@@ Character number 52 @ @@ @ @ @ @ @@@@@ @ @ Character number 53 @@@@@ @ @@@ @ @ @ @@@ Character number 54 @@ @ @ @@@@ @ @ @ @ @@@ Character number 55 @@@@@ @ @ @ @ @ @ @ Character number 56 @@@ @ @ @ @ @@@ @ @ @ @ @@@ Character number 57 @@@ @ @ @ @ @@@@ @ @ @@ Character number 58 @ @ Character number 59 @ @ @ @ Character number 60 @@ @@ @@ @@ @@ @@ @@ Character number 61 @@@@@ @@@@@ Character number 62 @@ @@ @@ @@ @@ @@ @@ Character number 63 @@@ @ @ @ @ @ @ Character number 64 @@@ @ @ @ @@ @ @ @ @ @ @ @ @@@ Character number 65 @ @ @ @ @ @ @ @@@@@ @ @ @ @ Character number 66 @@@@ @ @ @ @ @@@@ @ @ @ @ @@@@ Character number 67 @@@ @ @ @ @ @ @ @ @@@ Character number 68 @@@@ @ @ @ @ @ @ @ @ @ @ @@@@ Character number 69 @@@@@ @ @ @@@@ @ @ @@@@@ Character number 70 @@@@@ @ @ @@@@ @ @ @ Character number 71 @@@ @ @ @ @ @@@ @ @ @ @ @@@ Character number 72 @ @ @ @ @ @ @@@@@ @ @ @ @ @ @ Character number 73 @@@ @ @ @ @ @ @@@ Character number 74 @@@ @ @ @ @ @ @ @ @@ Character number 75 @ @ @ @ @ @ @@ @ @ @ @ @ @ Character number 76 @ @ @ @ @ @ @@@@@ Character number 77 @ @ @@ @@ @ @ @ @ @ @ @ @ @ @ @ @ Character number 78 @ @ @@ @ @@ @ @ @ @ @ @@ @ @@ @ @ Character number 79 @@@ @ @ @ @ @ @ @ @ @ @ @@@ Character number 80 @@@@ @ @ @ @ @@@@ @ @ @ Character number 81 @@@ @ @ @ @ @ @ @ @ @ @ @ @@ @ Character number 82 @@@@ @ @ @ @ @@@@ @ @ @ @ @ @ Character number 83 @@@ @ @ @ @@@ @ @ @ @@@ Character number 84 @@@@@ @ @ @ @ @ @ Character number 85 @ @ @ @ @ @ @ @ @ @ @ @ @@@ Character number 86 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 87 @ @ @ @ @ @ @ @ @ @ @ @ @@ @@ @ @ Character number 88 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 89 @ @ @ @ @ @ @@@ @ @ @ Character number 90 @@@@@ @ @ @ @ @ @@@@@ Character number 91 @@@ @ @ @ @ @ @@@ Character number 92 @ @ @ @ @ Character number 93 @@@ @ @ @ @ @ @@@ Character number 94 @ @ @ @ @ Character number 95 @@@@@ Character number 96 @ @ @ Character number 97 @@@ @ @@@@ @ @ @@@@ Character number 98 @ @ @ @@ @@ @ @ @ @@ @ @ @@ Character number 99 @@@ @ @ @ @ @ @@@ Character number 100 @ @ @@ @ @ @@ @ @ @ @@ @@ @ Character number 101 @@@ @ @ @@@@@ @ @@@ Character number 102 @ @ @ @ @@@@@ @ @ @ Character number 103 @@ @ @ @@ @ @@ @@ @ @ @@@ Character number 104 @ @ @@@@ @ @ @ @ @ @ @ @ Character number 105 @ @@ @ @ @ @@@ Character number 106 @ @@ @ @ @ @ @ @@ Character number 107 @ @ @ @ @ @ @@ @ @ @ @ Character number 108 @@ @ @ @ @ @ @@@ Character number 109 @@ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 110 @ @@ @@ @ @ @ @ @ @ @ Character number 111 @@@ @ @ @ @ @ @ @@@ Character number 112 @ @@ @@ @ @ @ @@ @ @ @@ @ Character number 113 @@ @ @ @@ @ @ @ @@ @@ @ @ Character number 114 @ @@ @@ @ @ @ @ Character number 115 @@@@ @ @@@ @ @@@@ Character number 116 @ @ @@@@ @ @ @ @ @@ Character number 117 @ @ @ @ @ @ @ @@ @@ @ Character number 118 @ @ @ @ @ @ @ @ @ Character number 119 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 120 @ @ @ @ @ @ @ @ @ Character number 121 @ @ @ @ @ @@ @@ @ @ @@@ Character number 122 @@@@@ @ @ @ @@@@@ Character number 123 @@ @ @ @ @ @ @@ Character number 124 @ @ @ @ @ @ Character number 125 @@ @ @ @ @ @ @@ Character number 126 @ @ @ @ @ Character number 127 Character number 128 @@@@ @@ @@ @@ @@ @@ @ @ @@ @@ @@@@@@ Character number 129 @ @@@ @@@@@ @ @@ @ @ @ @ @@ @ @@@ @@@@@ Character number 130 @@ @@ @ @ @ @ @ @ @ @ @@ @@ Character number 131 @@@@ @ @ @ @@ @@ @@@ @@@@ Character number 132 @@ @ @@ @ @@@@@@ @ @@ @ @@ @ @@ @ @@@@@@ @ @@ @ Character number 133 @ @ @@@@@ @@@@@ @ @ @@@ Character number 134 @ @@@ @@@@@ @ @ @ @@@@@ @ @ @ @@@@@ Character number 135 @@@@@ @@@@ @@@@@ @ @ @@ @@ @@ @@ @@@@@ Character number 136 @@@@@ @ @ @ @ @ @ @ @ @ @ Character number 137 @@@ @ @ @ @ @ Character number 138 @ @ @@@@@ @ @@@@@ @ @ Character number 139 @@@@@ @ @ @ @ @ @ @ @@@@@ Character number 140 @@ @ @ @ @@ @ @ @ Character number 141 @ @ @@@@@ @ @ @@@@@ Character number 142 @ @ @ @ @ @ @ Character number 143 @ @@ @@@ @@ @ Character number 144 @@ @ @ @ @ @@@@@@ @ @ @ @ @@ @@ Character number 145 @@ @ @ @ @ @@@@@@ @ @ @ @ @@ @@ Character number 146 @ @@@ @ @ @ @ @ @ @ @@@ @ Character number 147 @ @ @ @@@ @ @@@ @ @ @ @ @ @ @ Character number 148 @ @ @ @ @ @@@@@ @ @ @ @ @ Character number 149 @@@@ @@ @ @ @@@ @ @ @ @@@ Character number 150 @ @ @ @@@ @ @@@ @ Character number 151 @@ @ @ @@ @ @ @ @ @ @ @ @ @ Character number 152 @ @@@ @ @ @ @ @ @ Character number 153 @ @ @ @ @ @ @@@ @ Character number 154 @ @ @@@@@ @ @ Character number 155 @ @ @@@@@ @ @ Character number 156 @@@ @ @ @@ @@ @ @ @@ @@ @ @@@ Character number 157 @ @ @ @ @ @ @ @ Character number 158 @@ @@ @ @ @ @ @ @ @ @ @ @ Character number 159 @ @ @ @ @ @ @ @@@@@ @ @ Character number 160 @ @ Character number 161 @ @ @@@ @ @@@@ @ @ @@@@ Character number 162 @@@ @ @ @ @ @ @@@ @ Character number 163 @@@ @ @@@@ @ @ @@ @ @@@@ Character number 164 @ @ Character number 165 @ @ @ @ @ @ @ @ @@@ @ @ Character number 166 @ @ @ @ Character number 167 @@@@@ @@@ @ Character number 168 @ @ @@@ @ @ @ @ Character number 169 @@@ @ @@@ @ @ @ @ @@@ @ @@@ Character number 170 @@@@@ @ @ @ @ @ @ @ @ @@ @ @ @ @@@@@ Character number 171 @@@@@ @ @ @ @ @ @ @@@ @ @ @ @ @ @@@@@ Character number 172 @ @ @ @ @ @ @ @ @ @ @ @ @@@ @ Character number 173 @@ @ @ @@ @ @ @ @@@ @ @ @ @@@ @ Character number 174 @ @ @ @ @ @ @ @ @@ @ @ @ @ @@ Character number 175 @@@@ @ @ @ @ @ @ @@ @ @ @ @ @ @ @ Character number 176 @ @ @ @ @ @@@@@ @ @@@@@ @ Character number 177 @ @ @ @ @ @ @ @@@@@ @ @ @ @ Character number 178 @ @ @@@ @ @ @ @ @ @ @ @ @@@ Character number 179 @ @ @ @ @ @ @ @ @ @ @ @ @@@ Character number 180 @ @@@ @ @ @ @ @ @ @ @ @@@ @ Character number 181 @@ @ @ @ Character number 182 @ @ @@@ @ @@@@ @ @ @@@@ Character number 183 @ @ @@@ @ @ @ @ @ @ @@@ Character number 184 @ @ @ @ @ @ @ @ @ @@ @@ @ Character number 185 @@ @ @ @@@ @ @ @ @ @@@ @ Character number 186 @@@@@ @ @ @@ @@ @ @ @ @ @ @ Character number 187 @ @ @@@ @ @ @@@@@ @ @@@ Character number 188 @ @ @ @ @ @ @ @ @ @@ @@ @ Character number 189 @ @ @@@ @ @ @@@@@ @ @@@ Character number 190 @ @ Character number 191 @@ @ @ @ @@@@ @ @ @ @ Character number 192 @ @ @ @@@ @ @@@@ @ @ @@@@ Character number 193 @ @ @ @@@ @ @ @@@@@ @ @@@ Character number 194 @ @ @ @@ @ @ @@@ Character number 195 @ @ @ @@@ @ @ @ @ @ @ @@@ Character number 196 @ @ @ @ @ @ @ @ @@ @@ @ Character number 197 @ @ @ Character number 198 @ @ @@@ @ @ @@@@@ @ @@@ Character number 199 @ @ @@ @ @ @ @@@ Character number 200 @ @ @@@ @ @@@@ @ @ @@@@ Character number 201 @ @ @@ @ @ @@@ Character number 202 @ @ @@@ @ @ @ @ @@@ Character number 203 @ @ @ @ @ @ @ @ @ @@ @@ @ Character number 204 @ @ @ @ @ @ Character number 205 @@ @ @ @ @ @@ @@ @ @ @ @ @ Character number 206 @@ @ @ @ @@@ @ @@@@ @ @ @@@@ Character number 207 @@ @ @ @ @@@ @ @ @ @ @ @ @@@ Character number 208 @@@ @ @ @ @ @ @@ @@@@ @ @ @ @@ Character number 209 @@ @ @ @ @@@@ @ @ @@@@ Character number 210 @ @ @ @ @ @ @@@@@ @ @ @ @ Character number 211 @ @@@ @ @@@@ @ @ @@@@ Character number 212 @@@ @ @ @ @@ @ @ @ @@ @ @ @ @@@ Character number 213 @@@ @ @@ @ @ @ @@ @ @@@ Character number 214 @@ @ @ @ @ @ @@ @ @ @ @ @ @@ @ @ Character number 215 @ @ @@@@@ @ @@@@ @ @@@@@ Character number 216 @ @ @ @ @ @ @ @@@@@ @ @ Character number 217 @ @ @@@ @ @ @ @@@ Character number 218 @ @ @@@ @ @ @ @ @ @ @@@ Character number 219 @ @ @ @ @ @ @ @ @ @ @@@ Character number 220 @ @ @ @ @ @ @@@ Character number 221 @ @ @ @ @ @ @ @ @ @ @@@ Character number 222 @ @ @@@@@ @ @@@@ @ @@@@@ Character number 223 @ @ @ @ @ @ @ @@@@@ @ @ Character number 224 Character number 225 @@@ @@@ @@@ @@@ Character number 226 @@@ @@@ @@@ @@@ Character number 227 @@@ @@@ @@@ @@@ Character number 228 @@@ @@@ @@@ @@@ Character number 229 @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ Character number 230 @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ Character number 231 @@@@@@ @@@@@@ @@@@@@ @@@@@@ Character number 232 @@@@@@ @@@@@@ @@@@@@ @@@@@@ Character number 233 @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ Character number 234 @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ Character number 235 @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@ @@@ @@@ @@@ Character number 236 @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@ @@@ @@@ @@@ Character number 237 @@@ @@@ @@@ @@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ Character number 238 @@@ @@@ @@@ @@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ Character number 239 @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ Character number 240 @@@@ @ @ @ @ Character number 241 @@@@@@ Character number 242 @@@ @ @ @ @ Character number 243 @@@@@@ @ @ @ @ Character number 244 @ @ @ @@@@ @ @ @ @ Character number 245 @ @ @ @ @ @ @ @ Character number 246 @ @ @ @@@@ Character number 247 @ @ @ @@@ Character number 248 @ @ @ @@@@@@ Character number 249 @ @ @ @@@ @ @ @ @ Character number 250 @ @ @ @@@@@@ @ @ @ @ Character number 251 @@@@@@ @@@@@ @@@@ @@@ @@ @ Character number 252 @ @@ @@@ @@@@ @@@@@ @@@@@@ Character number 253 @@@@@@ @@@@@ @@@@ @@@ @@ @ Character number 254 @ @@ @@@ @@@@ @@@@@ @@@@@@ Character number 255 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ```

The Kyocera Kyotronic 85 ROM has a different layout which saves bytes by not encoding the white space around the letters. I will include that one next.

hackerb9 commented 2 years ago

The K-85 (not KC85) has a different font format. I could swear I saw pictures of Japanese text on the Kyocera Kyotronic 85, but I didn't see them in the ROM included with Virtual T. However, I don't know Japanese and perhaps I wouldn't recognize katakana if I saw it.

Here is the slightly modified rom2txt program I used to extract the font:

k85rom2txt.c ```C /* Simple hack to read fonts from .ROM files */ #include #include int main(int argc, char *argv[]) { int fw=5; /* Font width. Increases by one for second 128 chars. */ FILE *fp; if (argc>1) { fp = fopen(argv[1], "r"); if (fp == NULL) { perror(argv[1]); exit(1); } } else { fp = stdin; } int c, count=0, charnum=0; char m[16][16]; while ((c=fgetc(fp)) != EOF) { for (int i=7; i>=0; i--) { m[i][count] = (c & 1<127) fw=6; if (charnum>255) break; } } return 0; } ```

The character definitions for the K-85 ROM begin at byte 29631 with character number 32. The character width increases from 5 to 6 at character number 128. Again, the data before ASCII 32 appears to be garbage, but I have left them in this time as they may be something I simply don't recognize.

Output from k85rom2txt.c run on KC85rom.bin ```bash $ make k85rom2txt && dd if=KC85rom.bin skip=$((29631-5*32)) bs=1 | ./k85rom2txt | tee k85rom.txt Character number 0 @@@ @@@ @ @ @@ @ @ @@ @@@@ @@ Character number 1 @ @ @@@ @ @ @@@ @@ @ @@@ @ @ @ @@@ @ Character number 2 @ @ @ @ @ @@ @@@@@ @ @@@ @ @@@ @ @ @@ @@ Character number 3 @@ @ @ @ @@ @@ @@ @ @@ @ @@@ @ @ @ @@ Character number 4 @ @ @@@@@ @@ @ @ @ @ @ @ @ @@@ @ Character number 5 @@ @ @@ @ @ @ @ @@@ @@@ @ @ @ Character number 6 @ @ @@@ @ @@@ @@ @ @@@ @ @@@ @ @ @@ @ Character number 7 @@@@ @@@ @ @ @ @@ @ @@@@@ Character number 8 @@@ @ @ @ @@ @ @ @ @ @ @ @ @@@ Character number 9 @@ @ @ @ @@ @@ @@ @@ @ @@@ Character number 10 @ @ @ @@@ @ @ @ @ @ @ @ @ @ @ @ Character number 11 @@@@ @@@ @@@@ @@@@@ @@ @@@ @ @ @@@@@ Character number 12 @@@@@ @ @@ @ @ @@ @ @ @ @@ @@ @ @@ Character number 13 @ @@ @@@ @ @@ @ @@ @ @ @ @ @ @ @ Character number 14 @ @@@ @@@@ @ @@ @@@ @@@@ @ @@ Character number 15 @@ @ @@ @ @@@ @ @ @@ @ @@ @ @ @ @ Character number 16 @ @@@ @@ @@ @ @@ @ @@ @ @ @@ Character number 17 @@@ @@@ @ @ @ @@ @ @@ @ @@@@ @ @@ Character number 18 @@@ @ @@@ @@ @@@ @@@ @ @ @ @ @ Character number 19 @@@ @ @ @@ @ @ @@ @@ @ @@@ Character number 20 @@@ @@ @ @ @ @ @@ @ @ @@ Character number 21 @@ @ @@ @ @ @ @ @@ @@ @@ @ @@ Character number 22 @ @ @@@@ @@@ @@@@ @ @ @ @@@@ @ @@ Character number 23 @@ @ @@@@@ @ @ @@ @ @ @@ @ @@ @ Character number 24 @@ @@ @@@@ @ @ @ @@@ @@@@ @@@@ @ @ @ @@ Character number 25 @@@@ @ @ @ @@ @ @ @@ @@@@@ Character number 26 @@@@@ @ @ @ @@ @@ @@@@@ @@@@ Character number 27 @@@@ @@ @ @ @@ @@@ @@ @@ @ @@@ @@ Character number 28 @ @@@ @@@@@ @ @@ @ @ @@ @ @@ @@ @@ @@ @ Character number 29 @ @@ @ @ @@ @@ @ @ @ @@ @@ Character number 30 @@ @ @@ @ @ @ @@ @ @@ @ @@@ Character number 31 @ @ Character number 32 Character number 33 @ @ @ @ @ Character number 34 @ @ @ @ @ @ Character number 35 @ @ @ @ @@@@@ @ @ @@@@@ @ @ @ @ Character number 36 @ @@@@ @ @ @@@ @ @ @@@@ @ Character number 37 @@ @@ @ @ @ @ @ @@ @@ Character number 38 @ @ @ @ @ @ @ @ @ @ @@ @@ Character number 39 @ @ @ Character number 40 @ @ @ @ @ @ @ Character number 41 @ @ @ @ @ @ @ Character number 42 @ @ @ @ @@@ @ @@@ @ @ @ @ Character number 43 @ @ @@@@@ @ @ Character number 44 @ @ @ Character number 45 @@@@@ Character number 46 @@ @@ Character number 47 @ @ @ @ @ Character number 48 @@@ @ @ @ @@ @ @ @ @@ @ @ @ @@@ Character number 49 @ @@ @ @ @ @ @ @@@@@ Character number 50 @@@ @ @ @ @ @@ @ @@@@@ Character number 51 @@@ @ @ @ @@ @ @ @ @@@ Character number 52 @ @@ @ @ @ @ @@@@@ @ @ Character number 53 @@@@@ @ @@@ @ @ @ @@@ Character number 54 @@ @ @ @@@@ @ @ @ @ @@@ Character number 55 @@@@@ @ @ @ @ @ @ @ Character number 56 @@@ @ @ @ @ @@@ @ @ @ @ @@@ Character number 57 @@@ @ @ @ @ @@@@ @ @ @@ Character number 58 @ @ Character number 59 @ @ @ @ Character number 60 @@ @@ @@ @@ @@ @@ @@ Character number 61 @@@@@ @@@@@ Character number 62 @@ @@ @@ @@ @@ @@ @@ Character number 63 @@@ @ @ @ @ @ @ Character number 64 @@@ @ @ @ @@ @ @ @ @ @ @ @ @@@ Character number 65 @ @ @ @ @ @ @ @@@@@ @ @ @ @ Character number 66 @@@@ @ @ @ @ @@@ @ @ @ @ @@@@ Character number 67 @@ @ @ @ @ @ @ @ @@ Character number 68 @@@ @ @ @ @ @ @ @ @ @ @ @@@ Character number 69 @@@@@ @ @ @@@@ @ @ @@@@@ Character number 70 @@@@@ @ @ @@@@ @ @ @ Character number 71 @@@ @ @ @ @ @@@ @ @ @ @ @@@ Character number 72 @ @ @ @ @ @ @@@@@ @ @ @ @ @ @ Character number 73 @@@ @ @ @ @ @ @@@ Character number 74 @@@ @ @ @ @ @ @ @ @@ Character number 75 @ @ @ @ @ @ @@ @ @ @ @ @ @ Character number 76 @ @ @ @ @ @ @@@@@ Character number 77 @ @ @@ @@ @ @ @ @ @ @ @ @ @ @ @ @ Character number 78 @ @ @@ @ @@ @ @ @ @ @ @@ @ @@ @ @ Character number 79 @@@ @ @ @ @ @ @ @ @ @ @ @@@ Character number 80 @@@@ @ @ @ @ @@@@ @ @ @ Character number 81 @@@ @ @ @ @ @ @ @ @ @ @ @ @@ @ Character number 82 @@@@ @ @ @ @ @@@@ @ @ @ @ @ @ Character number 83 @@@ @ @ @ @@@ @ @ @ @@@ Character number 84 @@@@@ @ @ @ @ @ @ Character number 85 @ @ @ @ @ @ @ @ @ @ @ @ @@@ Character number 86 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 87 @ @ @ @ @ @ @ @ @ @ @ @ @@ @@ @ @ Character number 88 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 89 @ @ @ @ @ @ @@@ @ @ @ Character number 90 @@@@@ @ @ @ @ @ @@@@@ Character number 91 @@@ @ @ @ @ @ @@@ Character number 92 @ @ @ @ @ Character number 93 @@@ @ @ @ @ @ @@@ Character number 94 @ @ @ @ @ Character number 95 @@@@@ Character number 96 @ @ @ Character number 97 @@@ @ @@@@ @ @ @@@@ Character number 98 @ @ @ @@ @@ @ @ @ @@ @ @ @@ Character number 99 @@@ @ @ @ @ @ @@@ Character number 100 @ @ @@ @ @ @@ @ @ @ @@ @@ @ Character number 101 @@@ @ @ @@@@@ @ @@@ Character number 102 @ @ @ @ @@@@@ @ @ @ Character number 103 @@ @ @ @@ @ @@ @@ @ @ @@@ Character number 104 @ @ @@@@ @ @ @ @ @ @ @ @ Character number 105 @ @@ @ @ @ @@@ Character number 106 @ @@ @ @ @ @ @ @@ Character number 107 @ @ @ @ @ @ @@ @ @ @ @ Character number 108 @@ @ @ @ @ @ @@@ Character number 109 @@ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 110 @ @@ @@ @ @ @ @ @ @ @ Character number 111 @@@ @ @ @ @ @ @ @@@ Character number 112 @ @@ @@ @ @@ @ @ @@ @ @ Character number 113 @@ @ @ @@ @ @@ @@ @ @ @ Character number 114 @ @@ @@ @ @ @ @ Character number 115 @@@@ @ @@@@ @ @@@@ Character number 116 @ @ @@@@ @ @ @ @ @@ Character number 117 @ @ @ @ @ @ @ @ @@ @ Character number 118 @ @ @ @ @ @ @ @ @ Character number 119 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 120 @ @ @ @ @ @ @ @ @ Character number 121 @ @ @ @ @ @@ @@ @ @ @@@ Character number 122 @@@@@ @ @ @ @@@@@ Character number 123 @@ @ @ @ @ @ @@ Character number 124 @ @ @ @ @ @ Character number 125 @@ @ @ @ @ @ @@ Character number 126 @ @ @ @ @ Character number 127 Character number 128 @@@@ @@ @@ @@ @@ @@ @ @ @@ @@ @@@@@@ Character number 129 @ @@@ @@@@@ @ @@ @ @ @ @ @@ @ @@@ @@@@@ Character number 130 @@ @@ @ @ @ @ @ @ @ @ @@ @@ Character number 131 @@@@ @ @ @ @@ @@ @@@ @@@@ Character number 132 @@ @ @@ @ @@@@@@ @ @@ @ @@ @ @@ @ @@@@@@ @ @@ @ Character number 133 @ @ @@@@@ @@@@@ @ @ @@@ Character number 134 @ @@@ @@@@@ @ @ @ @@@@@ @ @ @ @@@@@ Character number 135 @@@@@ @@@@ @@@@@ @ @ @@ @@ @@ @@ @@@@@ Character number 136 @ @ @ @ @ @ Character number 137 @@@ @ @ @ @ @ Character number 138 @ @ @@@@@ @ @@@@@ @ @ Character number 139 @@@@@ @ @ @ @ @ @ @ @@@@@ Character number 140 @@ @ @ @ @@ @ @ @ Character number 141 @ @ @@@@@ @ @ @@@@@ Character number 142 @ @ @ @ @ @ @ Character number 143 @ @@ @@@ @@ @ Character number 144 @@ @ @ @ @ @@@@@@ @ @ @ @ @@ @@ Character number 145 @@ @ @ @ @ @@@@@@ @ @ @ @ @@ @@ Character number 146 @ @@@ @ @ @ @ @ @ @ @@@ @ Character number 147 @ @ @ @@@ @ @@@ @ @ @ @ @ @ @ Character number 148 @ @ @ @ @ @@@@@ @ @ @ @ @ Character number 149 @@@@ @@ @ @ @@@ @ @ @ @@@ Character number 150 @ @ @ @@@ @ @@@ @ Character number 151 @@ @ @ @@ @ @ @ @ @ @ @ @ @ Character number 152 @ @@@ @ @ @ @ @ @ Character number 153 @ @ @ @ @ @ @@@ @ Character number 154 @ @ @@@@@ @ @ Character number 155 @ @ @@@@@ @ @ Character number 156 @@@ @ @ @@ @@ @ @ @@ @@ @ @@@ Character number 157 @ @ @ @ @ @ @ @ Character number 158 @@ @@ @ @ @ @ @ @ @ @ @ @ Character number 159 @ @ @ @ @ @ @ @@@@@ @ @ Character number 160 @ @ @ Character number 161 @ @ @@@ @ @@@@ @ @ @@@@ Character number 162 @@@ @ @ @ @ @ @@@ @ @ Character number 163 @@@ @ @@@@ @ @ @@ @ @@@@ Character number 164 @ @ @ Character number 165 @ @ @ @ @ @ @ @ @@@ @ @ @ Character number 166 @ @ @ @ Character number 167 @@@@@ @@@ @ Character number 168 @ @ @@@ @ @ @ @ Character number 169 @@@ @ @@@ @ @ @ @ @@@ @ @@@ Character number 170 @@@@@ @ @ @ @ @ @ @ @ @@ @ @ @ @@@@@ Character number 171 @@@@@ @ @ @ @ @ @ @@@ @ @ @ @ @ @@@@@ Character number 172 @ @ @ @ @ @ @ @ @ @ @@@ @ Character number 173 @@ @ @ @@ @ @ @ @@@ @ @ @ @ @@@ @ Character number 174 @ @ @ @ @ @ @ @@ @ @ @ @@ Character number 175 @@@@@ @ @ @ @ @ @ @@ @ @ @ @ @ @ @ Character number 176 @ @ @ @ @ @@@@@ @ @@@@@ @ Character number 177 @ @ @ @ @ @ @ @@@@@ @ @ Character number 178 @ @ @@@ @ @ @ @ @ @ @@@ Character number 179 @ @ @ @ @ @ @ @ @ @ @@@ Character number 180 @ @@@ @ @ @ @ @ @ @ @ @@@ @ Character number 181 @@ @ @ @ Character number 182 @ @ @@@ @ @@@@ @ @ @@@@ Character number 183 @ @ @@@ @ @ @ @ @@@ Character number 184 @ @ @ @ @ @ @ @ @ @@ @@ @ Character number 185 @@@ @ @ @ @ @@@@ @ @ @ @ @@@@ Character number 186 @@@@@ @ @ @@ @@ @ @ @ @ @ @ Character number 187 @ @ @@@ @ @ @@@@@ @ @@@ Character number 188 @ @ @ @ @ @ @ @ @ @@ @@ @ Character number 189 @ @ @@@ @ @ @@@@@ @ @@@ Character number 190 @ @ Character number 191 @@ @ @ @ @@@ @ @ @@@ Character number 192 @ @ @ @@@ @ @@@@ @ @ @@@@ Character number 193 @ @ @ @@@ @ @ @@@@@ @ @@@ Character number 194 @ @ @ @ @ @ @ Character number 195 @ @ @ @@@ @ @ @ @ @@@ Character number 196 @ @ @ @ @ @ @ @ @@ @@ @ Character number 197 @ @ @ @ @ Character number 198 @ @ @@@ @ @ @@@@@ @ @@@ Character number 199 @ @ @ @ @ Character number 200 @ @ @@@@ @ @@@@ @ @ @@@@ Character number 201 @ @ @ @ @ Character number 202 @ @ @@@ @ @ @ @ @@@ Character number 203 @ @ @ @ @ @ @ @ @ @@ @@ @ Character number 204 @ @ @ @ @ @ @@@@ @ @@@ Character number 205 @@ @ @ @ @ @@ @@ @ @ @ @ @ Character number 206 @@ @ @ @ @@@ @ @@@@ @ @ @@@@ Character number 207 @@ @ @ @ @@@ @ @ @ @ @@@ Character number 208 @ @ @ @ @ @ @ @ @@@@@ @ @ Character number 209 @ @ @ @@@@@ @ @@@@ @ @@@@@ Character number 210 @ @ @ @@@ @ @ @ @@@ Character number 211 @ @ @ @@@ @ @ @ @ @ @ @@@ Character number 212 @ @ @ @ @ @ @ @ @ @ @ @@@ Character number 213 @ @ @@@ @ @ @ @@@ Character number 214 @ @ @@@@@ @ @@@@ @ @@@@@ Character number 215 @ @ @@@@@ @ @@@@ @ @@@@@ Character number 216 @ @ @ @ @ @ @ @@@@@ @ @ Character number 217 @ @ @@@ @ @ @ @@@ Character number 218 @ @ @@@ @ @ @ @ @ @ @@@ Character number 219 @ @ @ @ @ @ @ @ @ @ @@@ Character number 220 @ @ @ @ @ @ @ @ @ @ Character number 221 @ @ @ @ @ @ @ @ @ @ @@@ Character number 222 @ @ @@@@@ @ @@@@ @ @@@@@ Character number 223 @ @ @ @ @ @ @ @@@@@ @ @ Character number 224 Character number 225 @@@ @@@ @@@ @@@ Character number 226 @@@ @@@ @@@ @@@ Character number 227 @@@ @@@ @@@ @@@ Character number 228 @@@ @@@ @@@ @@@ Character number 229 @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ Character number 230 @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ Character number 231 @@@@@@ @@@@@@ @@@@@@ @@@@@@ Character number 232 @@@@@@ @@@@@@ @@@@@@ @@@@@@ Character number 233 @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ Character number 234 @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ Character number 235 @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@ @@@ @@@ @@@ Character number 236 @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@ @@@ @@@ @@@ Character number 237 @@@ @@@ @@@ @@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ Character number 238 @@@ @@@ @@@ @@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ Character number 239 @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ Character number 240 @@@@ @ @ @ @ Character number 241 @@@@@@ Character number 242 @@@ @ @ @ @ Character number 243 @@@@@@ @ @ @ @ Character number 244 @ @ @ @@@@ @ @ @ @ Character number 245 @ @ @ @ @ @ @ @ Character number 246 @ @ @ @@@@ Character number 247 @ @ @ @@@ Character number 248 @ @ @ @@@@@@ Character number 249 @ @ @ @@@ @ @ @ @ Character number 250 @ @ @ @@@@@@ @ @ @ @ Character number 251 @@@@@@ @@@@@ @@@@ @@@ @@ @ Character number 252 @ @@ @@@ @@@@ @@@@@ @@@@@@ Character number 253 @@@@@@ @@@@@ @@@@ @@@ @@ @ Character number 254 @ @@ @@@ @@@@ @@@@@ @@@@@@ Character number 255 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ```
hackerb9 commented 2 years ago

I have not yet figured out the format for the NEC-PC8201A ROM. It starts out similar to the K-85 format with a width of 5 but things go higgledy-piggledy when the width increases around character number 128. Perhaps the width is changing multiple times? The character data starts at byte 30903, with ASCII 32.

Here is the output from running the same k85rom2txt.c program as above. As you can see, the last half of the data is corrupted.

Output from running k85rom2txt.c on PC8201rom.bin ```bash $ make k85rom2txt && dd if=PC8201rom.bin skip=$((30903-32*5)) bs=1 | ./k85rom2txt Character number 0 @@@ @ @ @ @ @ @ @@ @@@ @@ @ @@@ @@ @@ Character number 1 @ @ @@ @ @@ @@@ @ @@@ @ @@ @@ @@@ @@ Character number 2 @@ @@ @@ @@@@@ @@ @@@ @ @@ @ @ Character number 3 @@@@ @ @@ @@ @ @@@@@ @@@@@ Character number 4 @@ @ @ @@ @ @@@ @@ @ @ @@@@@ @ @@ Character number 5 @ @@ @ @@ @@ @ @@@ @@@ @@@@ @ @@ @ Character number 6 @ @ @@@@ @@ @@@ @ @@ @ @ @ @@ Character number 7 @@ @ @@ @ @ @ @@@ @ @ @ @ @@ @@ @ @ Character number 8 @@ @@ @ @ @ @ @@ @ @@ @ @@ @@@@ @ @@ Character number 9 @@ @ @ @ @@ @ @@@@ @@ @@@ @@ @@ @@ Character number 10 @ @@ @ @ @@ @ @@@@@ @@ @@@ @ @@@ @ @ Character number 11 @ @ @ @@ @@@ @ @ @ @ @ @@ @ @ Character number 12 @@ @ @@ @@ @@@ @@ @@ @ @@ @@ @ Character number 13 @ @ @ @ @ @ @ @@ @@ @@@ @ @ @@ @ @ Character number 14 @ @ @ @ @ @ @@@ @ @@@ @ @ @ @@ @ @ Character number 15 @@ @ @ @ @ @@@ @@@ @ @ @ @@@ @@ @@ Character number 16 @@ @ @ @ @ @@@ @@@ @ @ @@@ @@ @@ Character number 17 @ @ @ @ @@ @@@ @ @@@ @ @@@@ @ @ Character number 18 @@ @ @ @ @ @@@ @@@@ @ @ @ @@ @@ @ Character number 19 @ @ @ @@@@@ @ @ @ @@ @@ @ @@ @@ @ @@@ @ @@@ Character number 20 @@@ @ @ @@@ @ @@ @@ Character number 21 @ @@@ @ @ @@ @@@ @ @@@@@ @ @ Character number 22 @ @@@ @ @@ @ @ @ @@@ @ @ @@ @@@ @ Character number 23 @ @ @@@@ @ @ @@ @ @@ @ @ @ @ @@@ Character number 24 @@@@@ @@ @ @ @ @ @ @@@@@ @@@@ Character number 25 @@@ @ @ @ @ @ @ @ @@ @@@@@ @@@ Character number 26 @@@@@ @ @ @ @ @ @@ @@ @@@@@ @ @ Character number 27 @@ @ @ @ @ @ @ @ @ @ @@@@ @@ @@ @@ @@ Character number 28 @ @@ @ @ @@ @ @ @ @ Character number 29 @@ @@ @ @ @@ @@ @@ @ @@ @ @ @@@ @ @@@ Character number 30 @@ @ @@ @ @ @@@ @ @ @@ @ @ @ @ @@ Character number 31 @@@@ @ @ @ @ @@ @ @@@@ @@@@ Character number 32 Character number 33 @ @ @ @ @ Character number 34 @ @ @ @ @ @ Character number 35 @ @ @ @ @@@@@ @ @ @@@@@ @ @ @ @ Character number 36 @ @@@@ @ @ @@@ @ @ @@@@ @ Character number 37 @@ @@ @ @ @ @ @ @@ @@ Character number 38 @ @ @ @ @ @ @ @ @ @ @@ @@ Character number 39 @ @ @ Character number 40 @ @ @ @ @ @ @ Character number 41 @ @ @ @ @ @ @ Character number 42 @ @ @ @ @@@ @ @@@ @ @ @ @ Character number 43 @ @ @@@@@ @ @ Character number 44 @ @ @ Character number 45 @@@@@ Character number 46 @@ @@ Character number 47 @ @ @ @ @ Character number 48 @@@ @ @ @ @@ @ @ @ @@ @ @ @ @@@ Character number 49 @ @@ @ @ @ @ @ @@@@@ Character number 50 @@@ @ @ @ @ @@ @ @@@@@ Character number 51 @@@ @ @ @ @@ @ @ @ @@@ Character number 52 @ @@ @ @ @ @ @@@@@ @ @ Character number 53 @@@@@ @ @@@ @ @ @ @@@ Character number 54 @@ @ @ @@@@ @ @ @ @ @@@ Character number 55 @@@@@ @ @ @ @ @ @ @ Character number 56 @@@ @ @ @ @ @@@ @ @ @ @ @@@ Character number 57 @@@ @ @ @ @ @@@@ @ @ @@ Character number 58 @ @ Character number 59 @ @ @ @ Character number 60 @@ @@ @@ @@ @@ @@ @@ Character number 61 @@@@@ @@@@@ Character number 62 @@ @@ @@ @@ @@ @@ @@ Character number 63 @@@ @ @ @ @ @ @ Character number 64 @@@ @ @ @ @@ @ @ @ @ @ @ @ @@@ Character number 65 @ @ @ @ @ @ @ @@@@@ @ @ @ @ Character number 66 @@@@ @ @ @ @ @@@ @ @ @ @ @@@@ Character number 67 @@ @ @ @ @ @ @ @ @@ Character number 68 @@@ @ @ @ @ @ @ @ @ @ @ @@@ Character number 69 @@@@@ @ @ @@@@ @ @ @@@@@ Character number 70 @@@@@ @ @ @@@@ @ @ @ Character number 71 @@@ @ @ @ @ @@@ @ @ @ @ @@@ Character number 72 @ @ @ @ @ @ @@@@@ @ @ @ @ @ @ Character number 73 @@@ @ @ @ @ @ @@@ Character number 74 @@@ @ @ @ @ @ @ @ @@ Character number 75 @ @ @ @ @ @ @@ @ @ @ @ @ @ Character number 76 @ @ @ @ @ @ @@@@@ Character number 77 @ @ @@ @@ @ @ @ @ @ @ @ @ @ @ @ @ Character number 78 @ @ @@ @ @@ @ @ @ @ @ @@ @ @@ @ @ Character number 79 @@@ @ @ @ @ @ @ @ @ @ @ @@@ Character number 80 @@@@ @ @ @ @ @@@@ @ @ @ Character number 81 @@@ @ @ @ @ @ @ @ @ @ @ @ @@ @ Character number 82 @@@@ @ @ @ @ @@@@ @ @ @ @ @ @ Character number 83 @@@ @ @ @ @@@ @ @ @ @@@ Character number 84 @@@@@ @ @ @ @ @ @ Character number 85 @ @ @ @ @ @ @ @ @ @ @ @ @@@ Character number 86 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 87 @ @ @ @ @ @ @ @ @ @ @ @ @@ @@ @ @ Character number 88 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 89 @ @ @ @ @ @ @@@ @ @ @ Character number 90 @@@@@ @ @ @ @ @ @@@@@ Character number 91 @@@ @ @ @ @ @ @@@ Character number 92 @ @ @ @ @ Character number 93 @@@ @ @ @ @ @ @@@ Character number 94 @ @ @ @ @ Character number 95 @@@@@ Character number 96 @ @ @ Character number 97 @@@ @ @@@@ @ @ @@@@ Character number 98 @ @ @ @@ @@ @ @ @ @@ @ @ @@ Character number 99 @@@ @ @ @ @ @@@ Character number 100 @ @ @@ @ @ @@ @ @ @ @@ @@ @ Character number 101 @@@ @ @ @@@@@ @ @@@ Character number 102 @ @ @ @ @@@@@ @ @ @ Character number 103 @@ @ @ @@ @ @@ @@ @ @ @@@ Character number 104 @ @ @@@@ @ @ @ @ @ @ @ @ Character number 105 @ @@ @ @ @ @@@ Character number 106 @ @@ @ @ @ @ @ @@ Character number 107 @ @ @ @ @ @ @@ @ @ @ @ Character number 108 @@ @ @ @ @ @ @@@ Character number 109 @@ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 110 @ @@ @@ @ @ @ @ @ @ @ Character number 111 @@@ @ @ @ @ @ @ @@@ Character number 112 @ @@ @@ @ @@ @ @ @@ @ @ Character number 113 @@ @ @ @@ @ @@ @@ @ @ @ Character number 114 @ @@ @@ @ @ @ @ Character number 115 @@@@ @ @@@@ @ @@@@ Character number 116 @ @ @@@@ @ @ @ @ @@ Character number 117 @ @ @ @ @ @ @ @ @@ @ Character number 118 @ @ @ @ @ @ @ @ @ Character number 119 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 120 @ @ @ @ @ @ @ @ @ Character number 121 @ @ @ @ @ @@ @@ @ @ @@@ Character number 122 @@@@ @ @ @ @@@@ Character number 123 @@ @ @ @ @ @ @@ Character number 124 @ @ @ @ @ @ @ Character number 125 @@ @ @ @ @ @ @@ Character number 126 @ @ @ @ @ Character number 127 Character number 128 @ @@ @@@ @@@@ @@@ @@ @ Character number 129 @ @ @ @ @@ @ @@@@@ @@ @ Character number 130 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 131 @@@ @ @@@@ @ @ @ @@@@ Character number 132 @@@ @ @@@ @ @ @ @ @ @@@ @ @@@ Character number 133 @ @@ @ @ @ @ @ @@ @ @@ @@@@@@ @ @ Character number 134 @@ @@@ @@ @@ @@ @@ @@@ @ Character number 135 @ @ @ @@ @ @ @@ @@ @@ @@ Character number 136 @ @ @ @ @@@ @@ @@@ @@ @@ @@@ Character number 137 @ @ @ @ @@ @ @@ @ @@ @ @@@@ Character number 138 @@@ @ @ @ @@@@ @ @ @@ @ @@ @@@@ @ Character number 139 @ @@@@ @ @ @@@ @ @@@ @ @ @ @@ @@@ @ @@ Character number 140 @ @ @@ @ @ @ @@ @ @ @ @@ @@ @ @@@@ @ @@ @ Character number 141 @@@ @ @ @ @@@@ @ @ @ @ @ @@@@@ Character number 142 @ @ @@@@@ @@ @ @@ @ @@@ @@ @@ @@ @@@ @ @@ Character number 143 @@ @@ @@ @ @ @ @ @ @ Character number 144 @ @@ @@ @@@ @@ @@@@ @@ @@ @@ @@ @@ @ @ @ @ Character number 145 @ @ @ @ @@ @ @@ @@ @@ @ @@@ @ @ Character number 146 @@ @ @ @ @ @@@@ @@@@@ @@@@@ @ @ @@@@@ Character number 147 @ @@ @ @ @@ @ @@@@@ @@@@@ @@@@ @@ Character number 148 @ @@ @ @@ @@ @@ @@@ @@ @@ @@@ @@ @@@ Character number 149 @ @ @ @@ @ @@ @@@@@@ @@@@@ @@@@@@ Character number 150 @ @ @ @ @ @ @ @ @@ @ @ @@ @ @@ @@@ @@@ @@ @ @ @ Character number 151 @ @@ @ @ @ @ @ @ @@ @ @ @ @ @@ @@@@ @ @ @ Character number 152 @ @@ @@ @@ @ @@ @@ @@ @@@ @ @@ @ @@@@@@ @ @@ @ Character number 153 @@ @@ @@ @@ @@ @@ @@ @@@ @ @@ @ @@@@@@ @ @@ @ Character number 154 @@@ @ @ @@@ @@ @ @ @ @@ @ Character number 155 @@ @@ @ @@ @@ @ @ @ @ @ @ @ @ @@ @@ @@ Character number 156 @@@@@@ @ @@@@ @ @ @ @@@ @@ @@ @@ Character number 157 @ @ @ @ @@ @@ @@ @ @ @@ @ @ @@@@@ @@ Character number 158 @ @ @@@@@@ @ @@@@ @ @@@@@ @ @ @ @ @ Character number 159 @ @@ @@ @ @ @@ @ @ @ @@@@@ @ @ @ @ @ Character number 160 @ @@@@@@ @ @ @@ @ @ @ @@@@@ @ @ @ @ @ Character number 161 @ @ @@ @ @ @@ @ @ @ @@@@@@ @ @@@ @ @ Character number 162 @@@ @ @ @ @ @@@ @@@ @@ @@ @@ @ @@ @@ @@ Character number 163 @ @@@@@ @@ @@ @ @@ @@@ @@ @ @ @ @@ Character number 164 @ @@@ @@ @ @ @@ @ @@ @@@ @@ @ @ @ @@ Character number 165 @ @@@@@ @ @ @ @@@ @ @ @@@ @@ @ @ @ @@ Character number 166 @@ @@ @@ @ @@ @@ @ @@@@@ @@@@@ @@ @ Character number 167 @@@@ @ @ @@ @ @ @@ @@ @@@@ @ @ @ @ Character number 168 @@ @@@ @ @@@ @ @ @@ @@ @@ @ @ @ @ @@@ @ @@@@ Character number 169 @@@@ @@ @ @ @ @ @@ @@ @ @@ @@ @@@ @ @@@ Character number 170 @@ @ @ @ @ @ @ @@@ @ @ @@ Character number 171 @ @ @@ @@@ @ @@@ @@ @ @@@@ @ @ @ @@ @@ Character number 172 @ @@@ @@@@ @ @ @ @ @@ @@@ @ @@@@ @ @ @@@ Character number 173 @@ @ @@ @@ @@@ @ @ @ @@ @ @ @@@ @ @@@@ @ Character number 174 @ @ @ @ @ @ @@ @ @@ @ @ @@ @ @ @ @ @ Character number 175 @ @ @ @ @@ @@ @@ @@ @@ @ @ Character number 176 @ @ @ @ @ @ @ @ @ @ @@ @ @ @ @@ Character number 177 @@@@@ @ @ @@ @ @@ @ @ @ @@@@@ Character number 178 @@@@@ @ @@ @ @ @ @ @ @ @ Character number 179 @ @ @ @ @ @ @@ Character number 180 @ @@ @@ @@ Character number 181 @ @ @@ @@@ @@ @ Character number 182 @ @ @ @ @ @ @@ @ @@@@ @ @@ @ Character number 183 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 184 @ @ @@ @@ @ @ @@@ @ @@ @ @@@@@ @ @@@@ @ Character number 185 @ @@ @@ @ @@@ @@@ @ @@@@@@ @@@@@@ Character number 186 @ @ @@ @@ @@@ @@@ @@@@@@ @@@@@@ Character number 187 @@@ @ @ @ @@ @ @ @@ @@@ @@@@@@ @@@@@@ Character number 188 @@@ @ @ @ @ @@ @ @ @ @ @@@@ @@@@@@ Character number 189 @@@ @@ @ @@@@ @@@@ @@@ @@@ @@ @ Character number 190 @ @ @ @ @@ @@@@ @ @@@@@@ @@@@@@ Character number 191 @ @ @@ @@ @ @ @ @@@@ @@@@ @ @@@@@ @ Character number 192 @@ @ @@ @@@@@@ @@@@@@ @@@@@@ @@@@@ @@ @ Character number 193 @ @ @ @@ @ @@@ @@@@@@ Character number 194 @ @@@ @ @@@ @ @ @@@@@ @ @@@ @@ @ Character number 195 @@ @ @ @ @ @ @@ @@ @@ @ @ @@@ @ Character number 196 @@ @@@ @ @ @@@ @ @@@@@@ @@@ @ Character number 197 @ @ @@ @ @@@@@ @@@@@ @@@@@ @@@@@ Character number 198 @ @ @ @@ @@ @@ @@@ @@@ @@ @ Character number 199 @ @@@ @ @ @ @ @ @@@ @ Character number 200 @ @ @ @@ @@@ @@ @@@@@ @@@@@ @@@@@ @@@@@ Character number 201 @@ @ @ @@ @ @@ @@ @ @@@@ @@@@ Character number 202 @ @@ @@ @ @@@ @@@ @ @@@@@@ @@@@@@ Character number 203 @ @ @@ @@ @@@ @@@ @@@@@@ @@@@@@ Character number 204 @@@ @ @ @ @@ @ @ @@ @@@ @@@@@@ @@@@@@ Character number 205 @@@ @@ @ @ @ @ @ @@ @ @ @@ @@@@@@ @@@@@ Character number 206 @@@ @ @ @ @@@ @@@@ @@ @@@@@@ Character number 207 @ @ @ @ @@ @@@@ @ @@@@@@ @@@@@@ Character number 208 @ @ @@ @ @@ @ @@@@ @@@@@@ @@@@@@ @@@ Character number 209 @ @ @ @@@@@ @@ @ @@@@ @ @@@@ @@@@ @@ Character number 210 @ @ @ @ @@@ @@ @@@ @ Character number 211 @ @@ @ @ @ @ @@ @@@@@@ @@@ @@@@ @@ Character number 212 @ @ @@ @ @@ @@ @@ @ @@ @ @ @ Character number 213 @ @@ @ @ @ @ @ @ @@ @ @@@@ @@ @ @@ Character number 214 @ @ @ @ @@ @@ @ @@ @@ @@ @@ @@@ @ @ @ @ @@@ Character number 215 @ @ @ @ @@@ @ @ @@ @@ @@ @@@ @@ @ @@ @ @ @@@@@ Character number 216 @@ @@@ @ @ @@ @ @@@ @ @@@ @ @@@ @@ @ @@ @ Character number 217 @ @@@ @@@@@ @@ @@@ @ @@@@@@ @@@ @ @ @@ @@ @@@ Character number 218 @ @ @ @ @@@ @ @@ @@ @@ @ @ @@ @@ @@@ @ @@@ @ Character number 219 @ @@ @@@@ @ @ @@ @@ @@ @ @ @@ @ @ @ @@@@ Character number 220 @@@ @ @ @@ @ @ @@@ @@ @ @ @ @ @ @@ @@ Character number 221 @@@ @@ @ @ @ @ @@ @@ @ @@ @ @@ @ @@ @@@ Character number 222 @ @ @ @@ @ @@ @ @@@ @@@ @@@ @@@ @ @@ @ Character number 223 @@ @ @ @@@ @ @@ @ @ @ @@ @@ @@ @ @@@ @@@@ Character number 224 @@ @@@@ @@ @@ @@ @@@ @@ @ @ @ @@@@@@ @ @@ @ Character number 225 @ @@@ @@ @ @@@ @@ @ @ @ @@@ @@ @@ @ @ @@@ Character number 226 @@ @@@ @@@ @ @ @ @ @ @@@@@@ @@@@ @@ @@ @@ @@ Character number 227 @@ @ @@@@ @ @ @ @@ @@ @@ @ @ @ @@ @@@ Character number 228 @@@@ @@ @@@ @ @@ @ @ @@@ @ @@ @@ @ @@@ Character number 229 @ @@@ @ @ @@ @ @@@ @ @@@ @ @@@@@ @@@ @@ @ Character number 230 @ @@ @@@@ @ @ @ @ @@ @@ @ @@ @@ @ @ @ @@@@ Character number 231 @@@ @@@ @ @ @@@ @@ @@@ Character number 232 @@@ @@@ @ @ @@ @ @ @ @@ @ @@ @ Character number 233 @ @@ @@ @@ @ @ @ @ @@@@ @ @ @@@ @@@@ @@ @ Character number 234 @@@ @@ @@ @@ @ @@@ @ @@ @ @@ @ @@@ @@ @@@@@@ Character number 235 @@ @ @ @ @ @ @@ @@@ @@@@@ @ @@ @@@@@@ @@ @@ @@@ Character number 236 @@@ @@ @@ @@ @@@@ @ @@@ @@@@@ @@ @ @@ @@ Character number 237 @ @ @@ @@@@ @ @@@ @@ @@ @ @@@@ @@ @@ @@ Character number 238 @@@ @ @@@@ @ @@@ @ @@@ @ @ @ @@ @@@ @ @@ @@@@ Character number 239 @ @ @@ @ @ @@ @ @@@ @ @@@ @ @@@ @@@@ @ @ @ Character number 240 @@ @@ @@@ @ @@ @@ @ @ @@ @@ @ @@@@ @@@ @ Character number 241 @ @ @ @@ @@ @@ @ @ @ @@@ @@@ @ @ @ @@ Character number 242 @@@@@ @ @ @ @@@ @ @@@ @@ @ @@ @ @@ @ @@@ Character number 243 @@@ @ @@@ @ @ @ @@ @@ @@@ @ @@@@ @@ @@ @@@@ Character number 244 @@@@@@ @ @ @@@@@@ @@@@@@ @ @ @ @@ @@@@@ @ @@ Character number 245 @@ @ @ @@@ @@@@ @ @@ @ @ @ @@ @@ @@ @@ Character number 246 @ @@ @ @ @ @ @@@ @@@@ @@@ @@ @ @ @@ Character number 247 @ @@ @ @@ @ @@ @ @@ @@@ @ @@ @ @@@@ @ @@@@@ Character number 248 @ @@@ @ @ @@@ @@ @ @ @ @ @@@ @@@ @@ @@ Character number 249 @ @@ @ @@ @@@@@@ @@ @ @ @@@ @ @@ @@@ @@@@ Character number 250 @ @ @ @@ @@ @ @ @ @ @ @@ @@ @@ @ @ @ @ Character number 251 @ @ @@@ @ @@ @ @@ @@ @@ @ @@ @ @@ @ Character number 252 @ @ @@ @ @ @@ @ @@ @ @@@ @ @@ @@@ @ @@ Character number 253 @@@ @ @ @@ @ @@ @ @ @ @ @ @ @ @@ @ @ @@@ @ Character number 254 @ @@@ @ @ @ @ @ @ @@@ @ @@ Character number 255 @@ @ @@ @@ @@@ @@@@ @ @ @ @@ @@ @@ @@@ @@ @ ```
hackerb9 commented 2 years ago

The TRS-80 Model 100 uses exactly the same format as the K-85. Character data starts at byte 30481, beginning with ASCII 32. Here is the output (after removing characters 0–31 which are garbage):

Output from k85rom2txt.c run on M100rom.bin ```bash $ make k85rom2txt && dd if=M100rom.bin skip=$((30481-32*5)) bs=1 | ./k85rom2txt | tee M100rom.txt Character number 32 Character number 33 @ @ @ @ @ Character number 34 @ @ @ @ @ @ Character number 35 @ @ @ @ @@@@@ @ @ @@@@@ @ @ @ @ Character number 36 @ @@@@ @ @ @@@ @ @ @@@@ @ Character number 37 @@ @@ @ @ @ @ @ @@ @@ Character number 38 @ @ @ @ @ @ @ @ @ @ @@ @@ Character number 39 @ @ @ Character number 40 @ @ @ @ @ @ @ Character number 41 @ @ @ @ @ @ @ Character number 42 @ @ @ @ @@@ @ @@@ @ @ @ @ Character number 43 @ @ @@@@@ @ @ Character number 44 @ @ @ Character number 45 @@@@@ Character number 46 @@ @@ Character number 47 @ @ @ @ @ Character number 48 @@@ @ @ @ @@ @ @ @ @@ @ @ @ @@@ Character number 49 @ @@ @ @ @ @ @ @@@@@ Character number 50 @@@ @ @ @ @ @@ @ @@@@@ Character number 51 @@@ @ @ @ @@ @ @ @ @@@ Character number 52 @ @@ @ @ @ @ @@@@@ @ @ Character number 53 @@@@@ @ @@@ @ @ @ @@@ Character number 54 @@ @ @ @@@@ @ @ @ @ @@@ Character number 55 @@@@@ @ @ @ @ @ @ @ Character number 56 @@@ @ @ @ @ @@@ @ @ @ @ @@@ Character number 57 @@@ @ @ @ @ @@@@ @ @ @@ Character number 58 @ @ Character number 59 @ @ @ @ Character number 60 @@ @@ @@ @@ @@ @@ @@ Character number 61 @@@@@ @@@@@ Character number 62 @@ @@ @@ @@ @@ @@ @@ Character number 63 @@@ @ @ @ @ @ @ Character number 64 @@@ @ @ @ @@ @ @ @ @ @ @ @ @@@ Character number 65 @ @ @ @ @ @ @ @@@@@ @ @ @ @ Character number 66 @@@@ @ @ @ @ @@@ @ @ @ @ @@@@ Character number 67 @@ @ @ @ @ @ @ @ @@ Character number 68 @@@ @ @ @ @ @ @ @ @ @ @ @@@ Character number 69 @@@@@ @ @ @@@@ @ @ @@@@@ Character number 70 @@@@@ @ @ @@@@ @ @ @ Character number 71 @@@ @ @ @ @ @@@ @ @ @ @ @@@ Character number 72 @ @ @ @ @ @ @@@@@ @ @ @ @ @ @ Character number 73 @@@ @ @ @ @ @ @@@ Character number 74 @@@ @ @ @ @ @ @ @ @@ Character number 75 @ @ @ @ @ @ @@ @ @ @ @ @ @ Character number 76 @ @ @ @ @ @ @@@@@ Character number 77 @ @ @@ @@ @ @ @ @ @ @ @ @ @ @ @ @ Character number 78 @ @ @@ @ @@ @ @ @ @ @ @@ @ @@ @ @ Character number 79 @@@ @ @ @ @ @ @ @ @ @ @ @@@ Character number 80 @@@@ @ @ @ @ @@@@ @ @ @ Character number 81 @@@ @ @ @ @ @ @ @ @ @ @ @ @@ @ Character number 82 @@@@ @ @ @ @ @@@@ @ @ @ @ @ @ Character number 83 @@@ @ @ @ @@@ @ @ @ @@@ Character number 84 @@@@@ @ @ @ @ @ @ Character number 85 @ @ @ @ @ @ @ @ @ @ @ @ @@@ Character number 86 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 87 @ @ @ @ @ @ @ @ @ @ @ @ @@ @@ @ @ Character number 88 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 89 @ @ @ @ @ @ @@@ @ @ @ Character number 90 @@@@@ @ @ @ @ @ @@@@@ Character number 91 @@@ @ @ @ @ @ @@@ Character number 92 @ @ @ @ @ Character number 93 @@@ @ @ @ @ @ @@@ Character number 94 @ @ @ @ @ Character number 95 @@@@@ Character number 96 @ @ @ Character number 97 @@@ @ @@@@ @ @ @@@@ Character number 98 @ @ @ @@ @@ @ @ @ @@ @ @ @@ Character number 99 @@@ @ @ @ @ @ @@@ Character number 100 @ @ @@ @ @ @@ @ @ @ @@ @@ @ Character number 101 @@@ @ @ @@@@@ @ @@@ Character number 102 @ @ @ @ @@@@@ @ @ @ Character number 103 @@ @ @ @@ @ @@ @@ @ @ @@@ Character number 104 @ @ @@@@ @ @ @ @ @ @ @ @ Character number 105 @ @@ @ @ @ @@@ Character number 106 @ @@ @ @ @ @ @ @@ Character number 107 @ @ @ @ @ @ @@ @ @ @ @ Character number 108 @@ @ @ @ @ @ @@@ Character number 109 @@ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 110 @ @@ @@ @ @ @ @ @ @ @ Character number 111 @@@ @ @ @ @ @ @ @@@ Character number 112 @ @@ @@ @ @@ @ @ @@ @ @ Character number 113 @@ @ @ @@ @ @@ @@ @ @ @ Character number 114 @ @@ @@ @ @ @ @ Character number 115 @@@@ @ @@@@ @ @@@@ Character number 116 @ @ @@@@ @ @ @ @ @@ Character number 117 @ @ @ @ @ @ @ @ @@ @ Character number 118 @ @ @ @ @ @ @ @ @ Character number 119 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 120 @ @ @ @ @ @ @ @ @ Character number 121 @ @ @ @ @ @@ @@ @ @ @@@ Character number 122 @@@@@ @ @ @ @@@@@ Character number 123 @@ @ @ @ @ @ @@ Character number 124 @ @ @ @ @ @ Character number 125 @@ @ @ @ @ @ @@ Character number 126 @ @ @ @ @ Character number 127 Character number 128 @@@@ @@ @@ @@ @@ @@ @ @ @@ @@ @@@@@@ Character number 129 @ @@@ @@@@@ @ @@ @ @ @ @ @@ @ @@@ @@@@@ Character number 130 @@ @@ @ @ @ @ @ @ @ @ @@ @@ Character number 131 @@@@ @ @ @ @@ @@ @@@ @@@@ Character number 132 @@ @ @@ @ @@@@@@ @ @@ @ @@ @ @@ @ @@@@@@ @ @@ @ Character number 133 @ @ @@@@@ @@@@@ @ @ @@@ Character number 134 @ @@@ @@@@@ @ @ @ @@@@@ @ @ @ @@@@@ Character number 135 @@@@@ @@@@ @@@@@ @ @ @@ @@ @@ @@ @@@@@ Character number 136 @ @ @ @ @ @ Character number 137 @@@ @ @ @ @ @ Character number 138 @ @ @@@@@ @ @@@@@ @ @ Character number 139 @@@@@ @ @ @ @ @ @ @ @@@@@ Character number 140 @@ @ @ @ @@ @ @ @ Character number 141 @ @ @@@@@ @ @ @@@@@ Character number 142 @ @ @ @ @ @ @ Character number 143 @ @@ @@@ @@ @ Character number 144 @@ @ @ @ @ @@@@@@ @ @ @ @ @@ @@ Character number 145 @@ @ @ @ @ @@@@@@ @ @ @ @ @@ @@ Character number 146 @ @@@ @ @ @ @ @ @ @ @@@ @ Character number 147 @ @ @ @@@ @ @@@ @ @ @ @ @ @ @ Character number 148 @ @ @ @ @ @@@@@ @ @ @ @ @ Character number 149 @@@@ @@ @ @ @@@ @ @ @ @@@ Character number 150 @ @ @ @@@ @ @@@ @ Character number 151 @@ @ @ @@ @ @ @ @ @ @ @ @ @ Character number 152 @ @@@ @ @ @ @ @ @ Character number 153 @ @ @ @ @ @ @@@ @ Character number 154 @ @ @@@@@ @ @ Character number 155 @ @ @@@@@ @ @ Character number 156 @@@ @ @ @@ @@ @ @ @@ @@ @ @@@ Character number 157 @ @ @ @ @ @ @ @ Character number 158 @@ @@ @ @ @ @ @ @ @ @ @ @ Character number 159 @ @ @ @ @ @ @ @@@@@ @ @ Character number 160 @ @ @ Character number 161 @ @ @@@ @ @@@@ @ @ @@@@ Character number 162 @@@ @ @ @ @ @ @@@ @ @ Character number 163 @@@ @ @@@@ @ @ @@ @ @@@@ Character number 164 @ @ @ Character number 165 @ @ @ @ @ @ @ @ @@@ @ @ @ Character number 166 @ @ @ @ Character number 167 @@@@@ @@@ @ Character number 168 @ @ @@@ @ @ @ @ Character number 169 @@@ @ @@@ @ @ @ @ @@@ @ @@@ Character number 170 @@@@@ @ @ @ @ @ @ @ @ @@ @ @ @ @@@@@ Character number 171 @@@@@ @ @ @ @ @ @ @@@ @ @ @ @ @ @@@@@ Character number 172 @ @ @ @ @ @ @ @ @ @ @@@ @ Character number 173 @@ @ @ @@ @ @ @ @@@ @ @ @ @ @@@ @ Character number 174 @ @ @ @ @ @ @ @@ @ @ @ @@ Character number 175 @@@@@ @ @ @ @ @ @ @@ @ @ @ @ @ @ @ Character number 176 @ @ @ @ @ @@@@@ @ @@@@@ @ Character number 177 @ @ @ @ @ @ @ @@@@@ @ @ Character number 178 @ @ @@@ @ @ @ @ @ @ @@@ Character number 179 @ @ @ @ @ @ @ @ @ @ @@@ Character number 180 @ @@@ @ @ @ @ @ @ @ @ @@@ @ Character number 181 @@ @ @ @ Character number 182 @ @ @@@ @ @@@@ @ @ @@@@ Character number 183 @ @ @@@ @ @ @ @ @@@ Character number 184 @ @ @ @ @ @ @ @ @ @@ @@ @ Character number 185 @@@ @ @ @ @ @@@@ @ @ @ @ @@@@ Character number 186 @@@@@ @ @ @@ @@ @ @ @ @ @ @ Character number 187 @ @ @@@ @ @ @@@@@ @ @@@ Character number 188 @ @ @ @ @ @ @ @ @ @@ @@ @ Character number 189 @ @ @@@ @ @ @@@@@ @ @@@ Character number 190 @ @ Character number 191 @@ @ @ @ @@@ @ @ @@@ Character number 192 @ @ @ @@@ @ @@@@ @ @ @@@@ Character number 193 @ @ @ @@@ @ @ @@@@@ @ @@@ Character number 194 @ @ @ @ @ @ @ Character number 195 @ @ @ @@@ @ @ @ @ @@@ Character number 196 @ @ @ @ @ @ @ @ @@ @@ @ Character number 197 @ @ @ @ @ Character number 198 @ @ @@@ @ @ @@@@@ @ @@@ Character number 199 @ @ @ @ @ Character number 200 @ @ @@@@ @ @@@@ @ @ @@@@ Character number 201 @ @ @ @ @ Character number 202 @ @ @@@ @ @ @ @ @@@ Character number 203 @ @ @ @ @ @ @ @ @ @@ @@ @ Character number 204 @ @ @ @ @ @ @@@@ @ @@@ Character number 205 @@ @ @ @ @ @@ @@ @ @ @ @ @ Character number 206 @@ @ @ @ @@@ @ @@@@ @ @ @@@@ Character number 207 @@ @ @ @ @@@ @ @ @ @ @@@ Character number 208 @ @ @ @ @ @ @ @ @@@@@ @ @ Character number 209 @ @ @ @@@@@ @ @@@@ @ @@@@@ Character number 210 @ @ @ @@@ @ @ @ @@@ Character number 211 @ @ @ @@@ @ @ @ @ @ @ @@@ Character number 212 @ @ @ @ @ @ @ @ @ @ @ @@@ Character number 213 @ @ @@@ @ @ @ @@@ Character number 214 @ @ @@@@@ @ @@@@ @ @@@@@ Character number 215 @ @ @@@@@ @ @@@@ @ @@@@@ Character number 216 @ @ @ @ @ @ @ @@@@@ @ @ Character number 217 @ @ @@@ @ @ @ @@@ Character number 218 @ @ @@@ @ @ @ @ @ @ @@@ Character number 219 @ @ @ @ @ @ @ @ @ @ @@@ Character number 220 @ @ @ @ @ @ @ @ @ @ Character number 221 @ @ @ @ @ @ @ @ @ @ @@@ Character number 222 @ @ @@@@@ @ @@@@ @ @@@@@ Character number 223 @ @ @ @ @ @ @ @@@@@ @ @ Character number 224 Character number 225 @@@ @@@ @@@ @@@ Character number 226 @@@ @@@ @@@ @@@ Character number 227 @@@ @@@ @@@ @@@ Character number 228 @@@ @@@ @@@ @@@ Character number 229 @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ Character number 230 @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ Character number 231 @@@@@@ @@@@@@ @@@@@@ @@@@@@ Character number 232 @@@@@@ @@@@@@ @@@@@@ @@@@@@ Character number 233 @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ Character number 234 @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ Character number 235 @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@ @@@ @@@ @@@ Character number 236 @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@ @@@ @@@ @@@ Character number 237 @@@ @@@ @@@ @@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ Character number 238 @@@ @@@ @@@ @@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ Character number 239 @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ Character number 240 @@@@ @ @ @ @ Character number 241 @@@@@@ Character number 242 @@@ @ @ @ @ Character number 243 @@@@@@ @ @ @ @ Character number 244 @ @ @ @@@@ @ @ @ @ Character number 245 @ @ @ @ @ @ @ @ Character number 246 @ @ @ @@@@ Character number 247 @ @ @ @@@ Character number 248 @ @ @ @@@@@@ Character number 249 @ @ @ @@@ @ @ @ @ Character number 250 @ @ @ @@@@@@ @ @ @ @ Character number 251 @@@@@@ @@@@@ @@@@ @@@ @@ @ Character number 252 @ @@ @@@ @@@@ @@@@@ @@@@@@ Character number 253 @@@@@@ @@@@@ @@@@ @@@ @@ @ Character number 254 @ @@ @@@ @@@@ @@@@@ @@@@@@ Character number 255 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ```
hackerb9 commented 2 years ago

It is very late where I am right now, so I am stopping. Here are some other possible font variations which might be extractable from "Model T" ROMs:


I also have a vague memory that the Model 100 had a slightly different font depending upon which version of the ROM was received. However, now I question that memory. I suspect that the Tandy 102 (which was so similar to the Model 100 that people usually refer to them in a single breath) may have used the Tandy 200 font which had made a few minor aesthetic fixes and changed the meaning of a couple characters (numbers 136 and 213).

robhagemans commented 2 years ago

Thanks! There's a lot of information in there, so I'll need to have a look, but clearly we have a few fonts here than can be converted and included.

Also I need to see what's up with the NEC ROM. It might be a bitmap strike with variable character widths and a width table somewhere, rather than a one-byte-per-row bitmap. By the way, I have some tools to explore and extract bitmaps and strikes at https://github.com/robhagemans/monobit , but admittedly it's still in alpha and poorly documented.

hackerb9 commented 2 years ago

monobit is pretty nifty! I haven't figured out how to extract a font from the ROM yet, but I was able to see right away that the Tandy 102 has the same font format as the Model 100, but it has the newer characters like the Tandy 200.

$ explore.py TANDY_Model_102.us.orig.bin ``` ./explore.py roms/TANDY_Model_102.us.orig.bin | sed '1,/7715/ d; /7bf1/,$ d' 7716: -------- 7717: -------- 7718: -#--#### 7719: -------- 771a: -------- 771b: -------- 771c: -----### 771d: -------- 771e: -----### 771f: -------- 7720: ---#-#-- 7721: -####### 7722: ---#-#-- 7723: -####### 7724: ---#-#-- 7725: --#--#-- 7726: --#-#-#- 7727: -####### 7728: --#-#-#- 7729: ---#--#- 772a: --#---## 772b: ---#--## 772c: ----#--- 772d: -##--#-- 772e: -##---#- 772f: --###-#- 7730: -#---#-# 7731: -#--#-#- 7732: --##---- 7733: --#-#--- 7734: -------- 7735: -----#-- 7736: ------#- 7737: -------# 7738: -------- 7739: -------- 773a: ---###-- 773b: --#---#- 773c: -#-----# 773d: -------- 773e: -------- 773f: -#-----# 7740: --#---#- 7741: ---###-- 7742: -------- 7743: --#---#- 7744: ---#-#-- 7745: -####### 7746: ---#-#-- 7747: --#---#- 7748: ----#--- 7749: ----#--- 774a: --#####- 774b: ----#--- 774c: ----#--- 774d: -------- 774e: #------- 774f: -##----- 7750: -------- 7751: -------- 7752: ----#--- 7753: ----#--- 7754: ----#--- 7755: ----#--- 7756: ----#--- 7757: -------- 7758: -##----- 7759: -##----- 775a: -------- 775b: -------- 775c: -#------ 775d: --#----- 775e: ---#---- 775f: ----#--- 7760: -----#-- 7761: --#####- 7762: -#-#---# 7763: -#--#--# 7764: -#---#-# 7765: --#####- 7766: -#---#-- 7767: -#----#- 7768: -####### 7769: -#------ 776a: -#------ 776b: -##---#- 776c: -#-#---# 776d: -#-#---# 776e: -#--#--# 776f: -#---##- 7770: --#---#- 7771: -#-----# 7772: -#--#--# 7773: -#--#--# 7774: --##-##- 7775: ---##--- 7776: ---#-#-- 7777: ---#--#- 7778: -####### 7779: ---#---- 777a: -#---### 777b: -#---#-# 777c: -#---#-# 777d: --#-#--# 777e: ---#---# 777f: --####-- 7780: -#--#-#- 7781: -#--#--# 7782: -#--#--# 7783: --##---- 7784: ------## 7785: -------# 7786: -####--# 7787: -----#-# 7788: ------## 7789: --##-##- 778a: -#--#--# 778b: -#--#--# 778c: -#--#--# 778d: --##-##- 778e: -----##- 778f: -#--#--# 7790: -#--#--# 7791: --#-#--# 7792: ---####- 7793: -------- 7794: -------- 7795: --#--#-- 7796: -------- 7797: -------- 7798: -------- 7799: #------- 779a: -##--#-- 779b: -------- 779c: -------- 779d: ----#--- 779e: ---###-- 779f: --##-##- 77a0: -##---## 77a1: -#-----# 77a2: ---#-#-- 77a3: ---#-#-- 77a4: ---#-#-- 77a5: ---#-#-- 77a6: ---#-#-- 77a7: -#-----# 77a8: -##---## 77a9: --##-##- 77aa: ---###-- 77ab: ----#--- 77ac: ------#- 77ad: -------# 77ae: -#-#---# 77af: ----#--# 77b0: -----##- 77b1: --##--#- 77b2: -#--#--# 77b3: -####--# 77b4: -#-----# 77b5: --#####- 77b6: -#####-- 77b7: ---#--#- 77b8: ---#---# 77b9: ---#--#- 77ba: -#####-- 77bb: -####### 77bc: -#--#--# 77bd: -#--#--# 77be: -#--#--# 77bf: --##-##- 77c0: --#####- 77c1: -#-----# 77c2: -#-----# 77c3: -#-----# 77c4: --#---#- 77c5: -####### 77c6: -#-----# 77c7: -#-----# 77c8: -#-----# 77c9: --#####- 77ca: -####### 77cb: -#--#--# 77cc: -#--#--# 77cd: -#--#--# 77ce: -#-----# 77cf: -####### 77d0: ----#--# 77d1: ----#--# 77d2: ----#--# 77d3: -------# 77d4: --#####- 77d5: -#-----# 77d6: -#--#--# 77d7: -#--#--# 77d8: --###-#- 77d9: -####### 77da: ----#--- 77db: ----#--- 77dc: ----#--- 77dd: -####### 77de: -------- 77df: -#-----# 77e0: -####### 77e1: -#-----# 77e2: -------- 77e3: --##---- 77e4: -#------ 77e5: -#-----# 77e6: --###### 77e7: -------# 77e8: -####### 77e9: ----#--- 77ea: ---#-#-- 77eb: --#---#- 77ec: -#-----# 77ed: -####### 77ee: -#------ 77ef: -#------ 77f0: -#------ 77f1: -#------ 77f2: -####### 77f3: ------#- 77f4: ----##-- 77f5: ------#- 77f6: -####### 77f7: -####### 77f8: -----##- 77f9: ----#--- 77fa: --##---- 77fb: -####### 77fc: --#####- 77fd: -#-----# 77fe: -#-----# 77ff: -#-----# 7800: --#####- 7801: -####### 7802: ----#--# 7803: ----#--# 7804: ----#--# 7805: -----##- 7806: --#####- 7807: -#-----# 7808: -#-#---# 7809: --#----# 780a: -#-####- 780b: -####### 780c: ----#--# 780d: ---##--# 780e: --#-#--# 780f: -#---##- 7810: --#--##- 7811: -#--#--# 7812: -#--#--# 7813: -#--#--# 7814: --##--#- 7815: -------# 7816: -------# 7817: -####### 7818: -------# 7819: -------# 781a: --###### 781b: -#------ 781c: -#------ 781d: -#------ 781e: --###### 781f: ----#### 7820: --##---- 7821: -#------ 7822: --##---- 7823: ----#### 7824: -####### 7825: --#----- 7826: ---##--- 7827: --#----- 7828: -####### 7829: -##---## 782a: ---#-#-- 782b: ----#--- 782c: ---#-#-- 782d: -##---## 782e: -----### 782f: ----#--- 7830: -####--- 7831: ----#--- 7832: -----### 7833: -##----# 7834: -#-#---# 7835: -#--#--# 7836: -#---#-# 7837: -#----## 7838: -------- 7839: -####### 783a: -#-----# 783b: -#-----# 783c: -------- 783d: -----#-- 783e: ----#--- 783f: ---#---- 7840: --#----- 7841: -#------ 7842: -------- 7843: -#-----# 7844: -#-----# 7845: -####### 7846: -------- 7847: -----#-- 7848: ------#- 7849: -------# 784a: ------#- 784b: -----#-- 784c: -#------ 784d: -#------ 784e: -#------ 784f: -#------ 7850: -#------ 7851: -------- 7852: -------# 7853: ------#- 7854: -----#-- 7855: -------- 7856: --#----- 7857: -#-#-#-- 7858: -#-#-#-- 7859: -#-#-#-- 785a: -####--- 785b: -####### 785c: --#-#--- 785d: -#---#-- 785e: -#---#-- 785f: --###--- 7860: --###--- 7861: -#---#-- 7862: -#---#-- 7863: -#---#-- 7864: --#-#--- 7865: --###--- 7866: -#---#-- 7867: -#---#-- 7868: --#-#--- 7869: -####### 786a: --###--- 786b: -#-#-#-- 786c: -#-#-#-- 786d: -#-#-#-- 786e: ---##--- 786f: ----#--- 7870: ----#--- 7871: -######- 7872: ----#--# 7873: ----#-#- 7874: ---##--- 7875: #-#--#-- 7876: #-#--#-- 7877: #--##--- 7878: -#####-- 7879: -####### 787a: -----#-- 787b: -----#-- 787c: -----#-- 787d: -####--- 787e: -------- 787f: -#---#-- 7880: -#####-# 7881: -#------ 7882: -------- 7883: -#------ 7884: #------- 7885: #----#-- 7886: -#####-# 7887: -------- 7888: -------- 7889: -####### 788a: ---#---- 788b: --#-#--- 788c: -#---#-- 788d: -------- 788e: -#-----# 788f: -####### 7890: -#------ 7891: -------- 7892: -#####-- 7893: -----#-- 7894: -####--- 7895: -----#-- 7896: -####--- 7897: -#####-- 7898: ----#--- 7899: -----#-- 789a: -----#-- 789b: -####--- 789c: --###--- 789d: -#---#-- 789e: -#---#-- 789f: -#---#-- 78a0: --###--- 78a1: ######-- 78a2: --#-#--- 78a3: -#---#-- 78a4: -#---#-- 78a5: --###--- 78a6: --###--- 78a7: -#---#-- 78a8: -#---#-- 78a9: --#-#--- 78aa: ######-- 78ab: -#####-- 78ac: ----#--- 78ad: -----#-- 78ae: -----#-- 78af: ----#--- 78b0: -#--#--- 78b1: -#-#-#-- 78b2: -#-#-#-- 78b3: -#-#-#-- 78b4: --#--#-- 78b5: -----#-- 78b6: --###### 78b7: -#---#-- 78b8: -#---#-- 78b9: --#----- 78ba: --####-- 78bb: -#------ 78bc: -#------ 78bd: --#----- 78be: -#####-- 78bf: ---###-- 78c0: --#----- 78c1: -#------ 78c2: --#----- 78c3: ---###-- 78c4: --####-- 78c5: -#------ 78c6: --###--- 78c7: -#------ 78c8: --####-- 78c9: -#---#-- 78ca: --#-#--- 78cb: ---#---- 78cc: --#-#--- 78cd: -#---#-- 78ce: ---###-- 78cf: #-#----- 78d0: #-#----- 78d1: #--#---- 78d2: -#####-- 78d3: -#---#-- 78d4: -##--#-- 78d5: -#-#-#-- 78d6: -#--##-- 78d7: -#---#-- 78d8: -------- 78d9: ----#--- 78da: --##-##- 78db: -#-----# 78dc: -#-----# 78dd: -------- 78de: -------- 78df: -###-### 78e0: -------- 78e1: -------- 78e2: -#-----# 78e3: -#-----# 78e4: --##-##- 78e5: ----#--- 78e6: -------- 78e7: ------#- 78e8: -------# 78e9: ------#- 78ea: -----#-- 78eb: ------#- 78ec: -------- 78ed: -------- 78ee: -------- 78ef: -------- 78f0: -------- 78f1: -##--##- 78f2: -###-### 78f3: -#--#--# 78f4: -#--#--# 78f5: -###-### 78f6: -##--##- 78f7: ######-- 78f8: #----##- 78f9: ##-#-### 78fa: ###-###- 78fb: ######-- 78fc: -------- 78fd: -####### 78fe: -##---## 78ff: ---#-#-- 7900: ----#--- 7901: ---#-#-- 7902: -------- 7903: -####--- 7904: -###-##- 7905: -##---#- 7906: -#--#-#- 7907: ----###- 7908: -------- 7909: ###-###- 790a: -#---#-- 790b: ######## 790c: ######## 790d: -#---#-- 790e: ###-###- 790f: ----##-- 7910: -#--##-- 7911: -####### 7912: -#--##-- 7913: ----##-- 7914: -------- 7915: -#####-- 7916: -#-#-##- 7917: -####### 7918: -#-#-##- 7919: -#####-- 791a: -------- 791b: -#####-# 791c: -###-### 791d: -#---### 791e: -###-### 791f: -####### 7920: -------- 7921: ------#- 7922: -######- 7923: ------#- 7924: --#####- 7925: -#----#- 7926: -------- 7927: ---#---- 7928: --#----- 7929: ---###-- 792a: ------#- 792b: ------#- 792c: ------#- 792d: -#-#-#-- 792e: --##-#-- 792f: ---###-- 7930: ---#-##- 7931: ---#-#-# 7932: -------- 7933: -#-----# 7934: -##---## 7935: -#-#-#-# 7936: -#--#--# 7937: -##---## 7938: -------- 7939: --#--#-- 793a: ---#--#- 793b: ---#--#- 793c: --#--#-- 793d: ---#--#- 793e: -------- 793f: -#---#-- 7940: -#---#-- 7941: -#-##### 7942: -#---#-- 7943: -#---#-- 7944: -------- 7945: -------- 7946: -#------ 7947: --#####- 7948: -------# 7949: -------- 794a: -------- 794b: -------- 794c: ----#--- 794d: ---###-- 794e: --#####- 794f: -------- 7950: -------- 7951: #--##--- 7952: ####-#-- 7953: ---#--#- 7954: ---#--#- 7955: ####-#-- 7956: #--##--- 7957: #####--- 7958: #--#-#-- 7959: ---#--#- 795a: ---#--#- 795b: #--#-#-- 795c: #####--- 795d: ---#-#-- 795e: --#---#- 795f: -####### 7960: --#---#- 7961: ---#-#-- 7962: -------- 7963: #-#----- 7964: -#-#-##- 7965: --####-# 7966: -#-#-##- 7967: #-#----- 7968: -------- 7969: -#--##-- 796a: --#-#-#- 796b: ---###-# 796c: --#-#-#- 796d: -#--#--- 796e: -------- 796f: --###--- 7970: --#-#--- 7971: --###--# 7972: -----#-# 7973: ------## 7974: ----#### 7975: -------- 7976: ---#-##- 7977: --####-# 7978: ---#-##- 7979: -------- 797a: -------- 797b: -#----#- 797c: --#--#-# 797d: ---#-#-# 797e: --#-#--- 797f: -#-#-#-- 7980: --#---#- 7981: -----#-- 7982: ------#- 7983: --###### 7984: ------#- 7985: -----#-- 7986: -------- 7987: ---#---- 7988: --#----- 7989: -######- 798a: --#----- 798b: ---#---- 798c: -------- 798d: ----#--- 798e: ----#--- 798f: --#-#-#- 7990: ---###-- 7991: ----#--- 7992: -------- 7993: ----#--- 7994: ---###-- 7995: --#-#-#- 7996: ----#--- 7997: ----#--- 7998: -------- 7999: ---###-- 799a: -#-#-### 799b: -##----# 799c: -#-#-### 799d: ---###-- 799e: -------- 799f: ----#--- 79a0: ---#-#-- 79a1: --#---#- 79a2: ---#-#-- 79a3: ----#--- 79a4: -------- 79a5: ---####- 79a6: --#---#- 79a7: -#---#-- 79a8: --#---#- 79a9: ---####- 79aa: -------- 79ab: ---###-- 79ac: ---#--#- 79ad: -###---# 79ae: ---#--#- 79af: ---###-- 79b0: -------- 79b1: -------- 79b2: -------- 79b3: ------#- 79b4: -------# 79b5: -------- 79b6: -------- 79b7: --#----- 79b8: -#-#-#-# 79b9: -#-#-##- 79ba: -#-#-#-- 79bb: -####--- 79bc: -------- 79bd: --###--- 79be: -#---#-- 79bf: ##---#-- 79c0: -#---#-- 79c1: --#-#--- 79c2: -------- 79c3: -##--#-- 79c4: -####### 79c5: -#---#-# 79c6: -#---#-# 79c7: --#----- 79c8: -------- 79c9: -------- 79ca: -------- 79cb: -------# 79cc: ------#- 79cd: -------- 79ce: -------- 79cf: ######-- 79d0: -#------ 79d1: -#------ 79d2: --####-- 79d3: -#------ 79d4: -------- 79d5: -------- 79d6: ------#- 79d7: -----#-# 79d8: ------#- 79d9: -------- 79da: -------- 79db: -----#-- 79dc: ----##-- 79dd: ---###-- 79de: ----##-- 79df: -----#-- 79e0: -------- 79e1: -------- 79e2: -----#-- 79e3: -####### 79e4: -----#-- 79e5: -------- 79e6: -------- 79e7: ---##-#- 79e8: #-#--#-# 79e9: #-#--#-# 79ea: #-#--#-# 79eb: -#-##--- 79ec: -------- 79ed: -####### 79ee: -#-----# 79ef: -##--#-# 79f0: -#-#---# 79f1: -####### 79f2: -------- 79f3: -####### 79f4: -#-----# 79f5: -#-###-# 79f6: -#--#--# 79f7: -####### 79f8: -------- 79f9: -#------ 79fa: --#-#### 79fb: ---#---- 79fc: -##-#--- 79fd: -#---#-- 79fe: ###---#- 79ff: ---#-#-# 7a00: --###### 7a01: ---#---- 7a02: -##-#--- 7a03: -#---#-- 7a04: ###---#- 7a05: -#------ 7a06: --#-#### 7a07: ---#---- 7a08: ----#--- 7a09: ##-#-#-- 7a0a: #-##--#- 7a0b: -----##- 7a0c: ----#--# 7a0d: -####### 7a0e: -------# 7a0f: -####### 7a10: -------- 7a11: --#-#--# 7a12: --#-#-#- 7a13: -#####-- 7a14: --#-#-#- 7a15: --#-#--# 7a16: -------- 7a17: -####--- 7a18: ---#-#-# 7a19: ---#--#- 7a1a: ---#-#-# 7a1b: -####--- 7a1c: -------- 7a1d: --####-- 7a1e: -#----## 7a1f: -#----#- 7a20: -#----## 7a21: --####-- 7a22: -------- 7a23: --#####- 7a24: -#-----# 7a25: -#------ 7a26: -#-----# 7a27: --#####- 7a28: -------- 7a29: ---###-- 7a2a: --#---#- 7a2b: -####### 7a2c: --#---#- 7a2d: ---#-#-- 7a2e: -------- 7a2f: ------#- 7a30: -------# 7a31: -------# 7a32: ------#- 7a33: -------# 7a34: -------- 7a35: --#----- 7a36: -#-#-#-# 7a37: -#-#-#-- 7a38: -#-#-#-# 7a39: -####--- 7a3a: -------- 7a3b: --###--- 7a3c: -#---#-# 7a3d: -#---#-- 7a3e: -#---#-# 7a3f: --###--- 7a40: -------- 7a41: --####-- 7a42: -#-----# 7a43: -#------ 7a44: --#----# 7a45: -#####-- 7a46: -------- 7a47: #------- 7a48: -#####-- 7a49: -#--#-#- 7a4a: -#--#-#- 7a4b: --##-#-- 7a4c: -------- 7a4d: -###---# 7a4e: ---#---# 7a4f: -##--### 7a50: ---#---# 7a51: -###---# 7a52: -------- 7a53: --###--- 7a54: -#-#-#-- 7a55: -#-#-##- 7a56: -#-#-#-# 7a57: ---##--- 7a58: -------- 7a59: --####-- 7a5a: -#-----# 7a5b: -#----#- 7a5c: --#----- 7a5d: -#####-- 7a5e: -------- 7a5f: --###--- 7a60: -#-#-#-# 7a61: -#-#-##- 7a62: -#-#-#-- 7a63: ---##--- 7a64: -------- 7a65: -------- 7a66: -------# 7a67: -------- 7a68: -------# 7a69: -------- 7a6a: -------- 7a6b: #---#--- 7a6c: -######- 7a6d: ----#--# 7a6e: ----#--# 7a6f: ------#- 7a70: -------- 7a71: --#----- 7a72: -#-#-##- 7a73: -#-#-#-# 7a74: -#-#-##- 7a75: -####--- 7a76: -------- 7a77: --###--- 7a78: -#-#-##- 7a79: -#-#-#-# 7a7a: -#-#-##- 7a7b: ---##--- 7a7c: -------- 7a7d: -------- 7a7e: -#--#-#- 7a7f: -####--# 7a80: -#----#- 7a81: -------- 7a82: -------- 7a83: --###--- 7a84: -#---##- 7a85: -#---#-# 7a86: -#---##- 7a87: --###--- 7a88: -------- 7a89: --###--- 7a8a: -#----#- 7a8b: -#-----# 7a8c: --#---#- 7a8d: -####--- 7a8e: -------- 7a8f: -------- 7a90: ------#- 7a91: -------# 7a92: ------#- 7a93: -------- 7a94: -------- 7a95: --###--- 7a96: -#-#-#-# 7a97: -#-#-#-- 7a98: -#-#-#-# 7a99: ---##--- 7a9a: -------- 7a9b: -------- 7a9c: -#---#-# 7a9d: -#####-- 7a9e: -#-----# 7a9f: -------- 7aa0: -------- 7aa1: --#----- 7aa2: -#-#-#-- 7aa3: -#-#-##- 7aa4: -#-#-#-# 7aa5: -####--- 7aa6: -------- 7aa7: -------- 7aa8: -#--#--- 7aa9: -####-#- 7aaa: -#-----# 7aab: -------- 7aac: -------- 7aad: --##---- 7aae: -#--#--- 7aaf: -#--#-#- 7ab0: -#--#--# 7ab1: --##---- 7ab2: -------- 7ab3: --####-- 7ab4: -#------ 7ab5: -#----#- 7ab6: --#----# 7ab7: -#####-- 7ab8: -------- 7ab9: -------- 7aba: -------- 7abb: -#####-# 7abc: -------- 7abd: -------- 7abe: -------- 7abf: -####-#- 7ac0: ---#---# 7ac1: ----#--# 7ac2: ----#-#- 7ac3: -###---# 7ac4: -------- 7ac5: --#---#- 7ac6: -#-#-#-# 7ac7: -#-#-#-# 7ac8: -#-#-##- 7ac9: -####--# 7aca: -------- 7acb: --###-#- 7acc: -#---#-# 7acd: -#---#-# 7ace: -#---##- 7acf: --###--# 7ad0: -------- 7ad1: -#####-- 7ad2: ---#--#- 7ad3: ---#---# 7ad4: -####### 7ad5: -#--#--# 7ad6: -------- 7ad7: --#--#-- 7ad8: -#-#-#-- 7ad9: -####--- 7ada: -#-#-#-- 7adb: -#-##--- 7adc: -------- 7add: -####--- 7ade: ---#-#-- 7adf: ---#--## 7ae0: ---#-#-- 7ae1: -####--- 7ae2: -------- 7ae3: --#----- 7ae4: -#-#-#-- 7ae5: -#-#-#-# 7ae6: -#-#-#-- 7ae7: -####--- 7ae8: -------- 7ae9: --#####- 7aea: -#-#---# 7aeb: -#--#--# 7aec: -#---#-# 7aed: --#####- 7aee: -------- 7aef: --###--- 7af0: -##--#-- 7af1: -#-#-#-- 7af2: -#--##-- 7af3: --###--- 7af4: -------- 7af5: -######- 7af6: ----#--# 7af7: ---#---# 7af8: --#---#- 7af9: -#####-# 7afa: -------- 7afb: -#####-- 7afc: -#-#-#-- 7afd: -#-#-##- 7afe: -#-#-#-# 7aff: -#---#-- 7b00: -------- 7b01: -###---- 7b02: --#-#--- 7b03: --#--##- 7b04: --#-#--# 7b05: -###---- 7b06: -------- 7b07: -------- 7b08: -#---#-- 7b09: -######- 7b0a: -#---#-# 7b0b: -------- 7b0c: -------- 7b0d: --###--- 7b0e: -#---#-- 7b0f: -#---##- 7b10: -#---#-# 7b11: --###--- 7b12: -------- 7b13: --####-- 7b14: -#------ 7b15: -#----#- 7b16: -#-----# 7b17: --####-- 7b18: -------- 7b19: --##---- 7b1a: -#--#--- 7b1b: -#---#-# 7b1c: -#------ 7b1d: --#----- 7b1e: -------- 7b1f: --####-- 7b20: -#-----# 7b21: -#----#- 7b22: -#------ 7b23: --####-- 7b24: -------- 7b25: -#####-- 7b26: -#-#-#-# 7b27: -#-#-##- 7b28: -#-#-#-- 7b29: -#---#-- 7b2a: -------- 7b2b: -###---- 7b2c: --#-#--# 7b2d: --#--##- 7b2e: --#-#--- 7b2f: -###---- 7b30: -------- 7b31: -------- 7b32: -------- 7b33: -------- 7b34: -------- 7b35: -------- 7b36: -------- 7b37: ----#### 7b38: ----#### 7b39: ----#### 7b3a: -------- 7b3b: -------- 7b3c: -------- 7b3d: -------- 7b3e: -------- 7b3f: -------- 7b40: ----#### 7b41: ----#### 7b42: ----#### 7b43: ####---- 7b44: ####---- 7b45: ####---- 7b46: -------- 7b47: -------- 7b48: -------- 7b49: -------- 7b4a: -------- 7b4b: -------- 7b4c: ####---- 7b4d: ####---- 7b4e: ####---- 7b4f: ----#### 7b50: ----#### 7b51: ----#### 7b52: ####---- 7b53: ####---- 7b54: ####---- 7b55: ####---- 7b56: ####---- 7b57: ####---- 7b58: ----#### 7b59: ----#### 7b5a: ----#### 7b5b: ----#### 7b5c: ----#### 7b5d: ----#### 7b5e: ----#### 7b5f: ----#### 7b60: ----#### 7b61: ####---- 7b62: ####---- 7b63: ####---- 7b64: ####---- 7b65: ####---- 7b66: ####---- 7b67: ######## 7b68: ######## 7b69: ######## 7b6a: -------- 7b6b: -------- 7b6c: -------- 7b6d: -------- 7b6e: -------- 7b6f: -------- 7b70: ######## 7b71: ######## 7b72: ######## 7b73: ######## 7b74: ######## 7b75: ######## 7b76: ----#### 7b77: ----#### 7b78: ----#### 7b79: ----#### 7b7a: ----#### 7b7b: ----#### 7b7c: ######## 7b7d: ######## 7b7e: ######## 7b7f: ######## 7b80: ######## 7b81: ######## 7b82: ####---- 7b83: ####---- 7b84: ####---- 7b85: ####---- 7b86: ####---- 7b87: ####---- 7b88: ######## 7b89: ######## 7b8a: ######## 7b8b: ######## 7b8c: ######## 7b8d: ######## 7b8e: ######## 7b8f: ######## 7b90: ######## 7b91: -------- 7b92: -------- 7b93: #####--- 7b94: ----#--- 7b95: ----#--- 7b96: ----#--- 7b97: ----#--- 7b98: ----#--- 7b99: ----#--- 7b9a: ----#--- 7b9b: ----#--- 7b9c: ----#--- 7b9d: ----#--- 7b9e: ----#--- 7b9f: #####--- 7ba0: -------- 7ba1: -------- 7ba2: -------- 7ba3: ----#--- 7ba4: ----#--- 7ba5: #####--- 7ba6: ----#--- 7ba7: ----#--- 7ba8: ----#--- 7ba9: -------- 7baa: -------- 7bab: ######## 7bac: ----#--- 7bad: ----#--- 7bae: ----#--- 7baf: -------- 7bb0: -------- 7bb1: ######## 7bb2: -------- 7bb3: -------- 7bb4: -------- 7bb5: -------- 7bb6: -------- 7bb7: ----#### 7bb8: ----#--- 7bb9: ----#--- 7bba: ----#--- 7bbb: ----#--- 7bbc: ----#--- 7bbd: ----#### 7bbe: -------- 7bbf: -------- 7bc0: -------- 7bc1: ----#--- 7bc2: ----#--- 7bc3: ----#### 7bc4: ----#--- 7bc5: ----#--- 7bc6: ----#--- 7bc7: ----#--- 7bc8: ----#--- 7bc9: ######## 7bca: -------- 7bcb: -------- 7bcc: -------- 7bcd: ----#--- 7bce: ----#--- 7bcf: ######## 7bd0: ----#--- 7bd1: ----#--- 7bd2: ----#--- 7bd3: --###### 7bd4: ---##### 7bd5: ----#### 7bd6: -----### 7bd7: ------## 7bd8: -------# 7bd9: #------- 7bda: ##------ 7bdb: ###----- 7bdc: ####---- 7bdd: #####--- 7bde: ######-- 7bdf: -------# 7be0: ------## 7be1: -----### 7be2: ----#### 7be3: ---##### 7be4: --###### 7be5: ######-- 7be6: #####--- 7be7: ####---- 7be8: ###----- 7be9: ##------ 7bea: #------- 7beb: -#-#-#-# 7bec: #-#-#-#- 7bed: -#-#-#-# 7bee: #-#-#-#- 7bef: -#-#-#-# 7bf0: #-#-#-#- ```
hackerb9 commented 2 years ago

The US Tandy 102 font begins at byte number 30481, with ASCII 32, and is in the same format as the K-85. (5 bytes wide at first, 6 bytes wide starting with character 128).

Here is what it looks like when extracted with my tool:

Output from k85rom2txt run on TANDY_Model_102.us.orig.bin ```bash $ dd if=roms/TANDY_Model_102.us.orig.bin skip=$((30481-5*32)) bs=1 | ./k85rom2txt | sed '1,288d' | tee m102.us.txt Character number 32 Character number 33 @ @ @ @ @ Character number 34 @ @ @ @ @ @ Character number 35 @ @ @ @ @@@@@ @ @ @@@@@ @ @ @ @ Character number 36 @ @@@@ @ @ @@@ @ @ @@@@ @ Character number 37 @@ @@ @ @ @ @ @ @@ @@ Character number 38 @ @ @ @ @ @ @ @ @ @ @@ @@ Character number 39 @ @ @ Character number 40 @ @ @ @ @ @ @ Character number 41 @ @ @ @ @ @ @ Character number 42 @ @ @ @ @@@ @ @@@ @ @ @ @ Character number 43 @ @ @@@@@ @ @ Character number 44 @ @ @ Character number 45 @@@@@ Character number 46 @@ @@ Character number 47 @ @ @ @ @ Character number 48 @@@ @ @ @ @@ @ @ @ @@ @ @ @ @@@ Character number 49 @ @@ @ @ @ @ @ @@@@@ Character number 50 @@@ @ @ @ @ @@ @ @@@@@ Character number 51 @@@ @ @ @ @@ @ @ @ @@@ Character number 52 @ @@ @ @ @ @ @@@@@ @ @ Character number 53 @@@@@ @ @@@ @ @ @ @@@ Character number 54 @@ @ @ @@@@ @ @ @ @ @@@ Character number 55 @@@@@ @ @ @ @ @ @ @ Character number 56 @@@ @ @ @ @ @@@ @ @ @ @ @@@ Character number 57 @@@ @ @ @ @ @@@@ @ @ @@ Character number 58 @ @ Character number 59 @ @ @ @ Character number 60 @@ @@ @@ @@ @@ @@ @@ Character number 61 @@@@@ @@@@@ Character number 62 @@ @@ @@ @@ @@ @@ @@ Character number 63 @@@ @ @ @ @ @ @ Character number 64 @@@ @ @ @ @@ @ @ @ @ @ @ @ @@@ Character number 65 @ @ @ @ @ @ @ @@@@@ @ @ @ @ Character number 66 @@@@ @ @ @ @ @@@@ @ @ @ @ @@@@ Character number 67 @@@ @ @ @ @ @ @ @ @@@ Character number 68 @@@@ @ @ @ @ @ @ @ @ @ @ @@@@ Character number 69 @@@@@ @ @ @@@@ @ @ @@@@@ Character number 70 @@@@@ @ @ @@@@ @ @ @ Character number 71 @@@ @ @ @ @ @@@ @ @ @ @ @@@ Character number 72 @ @ @ @ @ @ @@@@@ @ @ @ @ @ @ Character number 73 @@@ @ @ @ @ @ @@@ Character number 74 @@@ @ @ @ @ @ @ @ @@ Character number 75 @ @ @ @ @ @ @@ @ @ @ @ @ @ Character number 76 @ @ @ @ @ @ @@@@@ Character number 77 @ @ @@ @@ @ @ @ @ @ @ @ @ @ @ @ @ Character number 78 @ @ @@ @ @@ @ @ @ @ @ @@ @ @@ @ @ Character number 79 @@@ @ @ @ @ @ @ @ @ @ @ @@@ Character number 80 @@@@ @ @ @ @ @@@@ @ @ @ Character number 81 @@@ @ @ @ @ @ @ @ @ @ @ @ @@ @ Character number 82 @@@@ @ @ @ @ @@@@ @ @ @ @ @ @ Character number 83 @@@ @ @ @ @@@ @ @ @ @@@ Character number 84 @@@@@ @ @ @ @ @ @ Character number 85 @ @ @ @ @ @ @ @ @ @ @ @ @@@ Character number 86 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 87 @ @ @ @ @ @ @ @ @ @ @ @ @@ @@ @ @ Character number 88 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 89 @ @ @ @ @ @ @@@ @ @ @ Character number 90 @@@@@ @ @ @ @ @ @@@@@ Character number 91 @@@ @ @ @ @ @ @@@ Character number 92 @ @ @ @ @ Character number 93 @@@ @ @ @ @ @ @@@ Character number 94 @ @ @ @ @ Character number 95 @@@@@ Character number 96 @ @ @ Character number 97 @@@ @ @@@@ @ @ @@@@ Character number 98 @ @ @ @@ @@ @ @ @ @@ @ @ @@ Character number 99 @@@ @ @ @ @ @ @@@ Character number 100 @ @ @@ @ @ @@ @ @ @ @@ @@ @ Character number 101 @@@ @ @ @@@@@ @ @@@ Character number 102 @ @ @ @ @@@@@ @ @ @ Character number 103 @@ @ @ @@ @ @@ @@ @ @ @@@ Character number 104 @ @ @@@@ @ @ @ @ @ @ @ @ Character number 105 @ @@ @ @ @ @@@ Character number 106 @ @@ @ @ @ @ @ @@ Character number 107 @ @ @ @ @ @ @@ @ @ @ @ Character number 108 @@ @ @ @ @ @ @@@ Character number 109 @@ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 110 @ @@ @@ @ @ @ @ @ @ @ Character number 111 @@@ @ @ @ @ @ @ @@@ Character number 112 @ @@ @@ @ @ @ @@ @ @ @@ @ Character number 113 @@ @ @ @@ @ @ @ @@ @@ @ @ Character number 114 @ @@ @@ @ @ @ @ Character number 115 @@@@ @ @@@ @ @@@@ Character number 116 @ @ @@@@ @ @ @ @ @@ Character number 117 @ @ @ @ @ @ @ @@ @@ @ Character number 118 @ @ @ @ @ @ @ @ @ Character number 119 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 120 @ @ @ @ @ @ @ @ @ Character number 121 @ @ @ @ @ @@ @@ @ @ @@@ Character number 122 @@@@@ @ @ @ @@@@@ Character number 123 @@ @ @ @ @ @ @@ Character number 124 @ @ @ @ @ @ Character number 125 @@ @ @ @ @ @ @@ Character number 126 @ @ @ @ @ Character number 127 Character number 128 @@@@ @@ @@ @@ @@ @@ @ @ @@ @@ @@@@@@ Character number 129 @ @@@ @@@@@ @ @@ @ @ @ @ @@ @ @@@ @@@@@ Character number 130 @@ @@ @ @ @ @ @ @ @ @ @@ @@ Character number 131 @@@@ @ @ @ @@ @@ @@@ @@@@ Character number 132 @@ @ @@ @ @@@@@@ @ @@ @ @@ @ @@ @ @@@@@@ @ @@ @ Character number 133 @ @ @@@@@ @@@@@ @ @ @@@ Character number 134 @ @@@ @@@@@ @ @ @ @@@@@ @ @ @ @@@@@ Character number 135 @@@@@ @@@@ @@@@@ @ @ @@ @@ @@ @@ @@@@@ Character number 136 @@@@@ @ @ @ @ @ @ @ @ @ @ Character number 137 @@@ @ @ @ @ @ Character number 138 @ @ @@@@@ @ @@@@@ @ @ Character number 139 @@@@@ @ @ @ @ @ @ @ @@@@@ Character number 140 @@ @ @ @ @@ @ @ @ Character number 141 @ @ @@@@@ @ @ @@@@@ Character number 142 @ @ @ @ @ @ @ Character number 143 @ @@ @@@ @@ @ Character number 144 @@ @ @ @ @ @@@@@@ @ @ @ @ @@ @@ Character number 145 @@ @ @ @ @ @@@@@@ @ @ @ @ @@ @@ Character number 146 @ @@@ @ @ @ @ @ @ @ @@@ @ Character number 147 @ @ @ @@@ @ @@@ @ @ @ @ @ @ @ Character number 148 @ @ @ @ @ @@@@@ @ @ @ @ @ Character number 149 @@@@ @@ @ @ @@@ @ @ @ @@@ Character number 150 @ @ @ @@@ @ @@@ @ Character number 151 @@ @ @ @@ @ @ @ @ @ @ @ @ @ Character number 152 @ @@@ @ @ @ @ @ @ Character number 153 @ @ @ @ @ @ @@@ @ Character number 154 @ @ @@@@@ @ @ Character number 155 @ @ @@@@@ @ @ Character number 156 @@@ @ @ @@ @@ @ @ @@ @@ @ @@@ Character number 157 @ @ @ @ @ @ @ @ Character number 158 @@ @@ @ @ @ @ @ @ @ @ @ @ Character number 159 @ @ @ @ @ @ @ @@@@@ @ @ Character number 160 @ @ Character number 161 @ @ @@@ @ @@@@ @ @ @@@@ Character number 162 @@@ @ @ @ @ @ @@@ @ Character number 163 @@@ @ @@@@ @ @ @@ @ @@@@ Character number 164 @ @ Character number 165 @ @ @ @ @ @ @ @ @@@ @ @ Character number 166 @ @ @ @ Character number 167 @@@@@ @@@ @ Character number 168 @ @ @@@ @ @ @ @ Character number 169 @@@ @ @@@ @ @ @ @ @@@ @ @@@ Character number 170 @@@@@ @ @ @ @ @ @ @ @ @@ @ @ @ @@@@@ Character number 171 @@@@@ @ @ @ @ @ @ @@@ @ @ @ @ @ @@@@@ Character number 172 @ @ @ @ @ @ @ @ @ @ @ @ @@@ @ Character number 173 @@ @ @ @@ @ @ @ @@@ @ @ @ @@@ @ Character number 174 @ @ @ @ @ @ @ @ @@ @ @ @ @ @@ Character number 175 @@@@ @ @ @ @ @ @ @@ @ @ @ @ @ @ @ Character number 176 @ @ @ @ @ @@@@@ @ @@@@@ @ Character number 177 @ @ @ @ @ @ @ @@@@@ @ @ @ @ Character number 178 @ @ @@@ @ @ @ @ @ @ @ @ @@@ Character number 179 @ @ @ @ @ @ @ @ @ @ @ @ @@@ Character number 180 @ @@@ @ @ @ @ @ @ @ @ @@@ @ Character number 181 @@ @ @ @ Character number 182 @ @ @@@ @ @@@@ @ @ @@@@ Character number 183 @ @ @@@ @ @ @ @ @ @ @@@ Character number 184 @ @ @ @ @ @ @ @ @ @@ @@ @ Character number 185 @@ @ @ @@@ @ @ @ @ @@@ @ Character number 186 @@@@@ @ @ @@ @@ @ @ @ @ @ @ Character number 187 @ @ @@@ @ @ @@@@@ @ @@@ Character number 188 @ @ @ @ @ @ @ @ @ @@ @@ @ Character number 189 @ @ @@@ @ @ @@@@@ @ @@@ Character number 190 @ @ Character number 191 @@ @ @ @ @@@@ @ @ @ @ Character number 192 @ @ @ @@@ @ @@@@ @ @ @@@@ Character number 193 @ @ @ @@@ @ @ @@@@@ @ @@@ Character number 194 @ @ @ @@ @ @ @@@ Character number 195 @ @ @ @@@ @ @ @ @ @ @ @@@ Character number 196 @ @ @ @ @ @ @ @ @@ @@ @ Character number 197 @ @ @ Character number 198 @ @ @@@ @ @ @@@@@ @ @@@ Character number 199 @ @ @@ @ @ @ @@@ Character number 200 @ @ @@@ @ @@@@ @ @ @@@@ Character number 201 @ @ @@ @ @ @@@ Character number 202 @ @ @@@ @ @ @ @ @@@ Character number 203 @ @ @ @ @ @ @ @ @ @@ @@ @ Character number 204 @ @ @ @ @ @ Character number 205 @@ @ @ @ @ @@ @@ @ @ @ @ @ Character number 206 @@ @ @ @ @@@ @ @@@@ @ @ @@@@ Character number 207 @@ @ @ @ @@@ @ @ @ @ @ @ @@@ Character number 208 @@@ @ @ @ @ @ @@ @@@@ @ @ @ @@ Character number 209 @@ @ @ @ @@@@ @ @ @@@@ Character number 210 @ @ @ @ @ @ @@@@@ @ @ @ @ Character number 211 @ @@@ @ @@@@ @ @ @@@@ Character number 212 @@@ @ @ @ @@ @ @ @ @@ @ @ @ @@@ Character number 213 @@@ @ @@ @ @ @ @@ @ @@@ Character number 214 @@ @ @ @ @ @ @@ @ @ @ @ @ @@ @ @ Character number 215 @ @ @@@@@ @ @@@@ @ @@@@@ Character number 216 @ @ @ @ @ @ @ @@@@@ @ @ Character number 217 @ @ @@@ @ @ @ @@@ Character number 218 @ @ @@@ @ @ @ @ @ @ @@@ Character number 219 @ @ @ @ @ @ @ @ @ @ @@@ Character number 220 @ @ @ @ @ @ @@@ Character number 221 @ @ @ @ @ @ @ @ @ @ @@@ Character number 222 @ @ @@@@@ @ @@@@ @ @@@@@ Character number 223 @ @ @ @ @ @ @ @@@@@ @ @ Character number 224 Character number 225 @@@ @@@ @@@ @@@ Character number 226 @@@ @@@ @@@ @@@ Character number 227 @@@ @@@ @@@ @@@ Character number 228 @@@ @@@ @@@ @@@ Character number 229 @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ Character number 230 @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ Character number 231 @@@@@@ @@@@@@ @@@@@@ @@@@@@ Character number 232 @@@@@@ @@@@@@ @@@@@@ @@@@@@ Character number 233 @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ Character number 234 @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ Character number 235 @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@ @@@ @@@ @@@ Character number 236 @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@ @@@ @@@ @@@ Character number 237 @@@ @@@ @@@ @@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ Character number 238 @@@ @@@ @@@ @@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ Character number 239 @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ Character number 240 @@@@ @ @ @ @ Character number 241 @@@@@@ Character number 242 @@@ @ @ @ @ Character number 243 @@@@@@ @ @ @ @ Character number 244 @ @ @ @@@@ @ @ @ @ Character number 245 @ @ @ @ @ @ @ @ Character number 246 @ @ @ @@@@ Character number 247 @ @ @ @@@ Character number 248 @ @ @ @@@@@@ Character number 249 @ @ @ @@@ @ @ @ @ Character number 250 @ @ @ @@@@@@ @ @ @ @ Character number 251 @@@@@@ @@@@@ @@@@ @@@ @@ @ Character number 252 @ @@ @@@ @@@@ @@@@@ @@@@@@ Character number 253 @@@@@@ @@@@@ @@@@ @@@ @@ @ Character number 254 @ @@ @@@ @@@@ @@@@@ @@@@@@ Character number 255 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ```

As mentioned earlier it clearly has some of the changes that were made to the Tandy 200 font, such as the pi character. They may be identical. [Update: I have checked and the Tandy 200 and Tandy 102 have the same font.]

hackerb9 commented 2 years ago

I have checked the UK version of the Tandy 102 ROM and the font is exactly identical to the US version. It even starts at the same location (30481).

hackerb9 commented 2 years ago

The Olivetti M10 (European variant) has a very different font, although it is encoded (almost) in the same format as the Kyocera Kyotronic 85. The one difference is that there is a gap in the characters from 128 to 157. The character that would have been at position 128 is instead encoded at 158. (Or at least, that's what I gather from this bitmap).

I modified my extraction code so it works like this:

m10rom2txt.c ```C /* Same as k85rom2txt, except the numbering jumps by 30 at position 128 */ #include #include int main(int argc, char *argv[]) { int fw=5; /* Font width. Increases by one for second 128 chars. */ FILE *fp; if (argc>1) { fp = fopen(argv[1], "r"); if (fp == NULL) { perror(argv[1]); exit(1); } } else { fp = stdin; } int c, count=0, charnum=0; char m[16][16]; while ((c=fgetc(fp)) != EOF) { for (int i=7; i>=0; i--) { m[i][count] = (c & 1<127) fw=6; if (charnum+30>255) break; } } return 0; } ```

Font data starts at byte 29739. Here is the output from that program:

Output from running m10roms2txt.c on M10_System_ROM_EU.orig.bin ```bash $ dd if=roms/M10_System_ROM_EU.orig.bin skip=$((29739-5*32)) bs=1 | ./m10rom2txt | sed '1,288d' Character number 32 Character number 33 @ @ @ @ @ @ Character number 34 @ @ @ @ @ @ Character number 35 @@ @ @ @ @@@@ @ @ @ @@@ Character number 36 @ @@@@ @ @ @@@ @ @ @@@@ @ Character number 37 @@ @@ @ @ @ @ @ @@ @@ Character number 38 @ @ @ @ @ @ @ @ @ @ @ @@ @ Character number 39 @ @ @ Character number 40 @ @ @ @ @ @ @ Character number 41 @ @ @ @ @ @ @ Character number 42 @ @ @ @ @@@@@ @ @ @ @ Character number 43 @ @ @@@@@ @ @ Character number 44 @@ @ @ Character number 45 @@@@@ Character number 46 @@ @@ Character number 47 @ @ @ @ @ Character number 48 @@@ @ @ @ @@ @ @ @ @@ @ @ @ @@@ Character number 49 @ @@@ @ @ @ @ @ Character number 50 @@@ @ @ @ @ @ @ @@@@@ Character number 51 @@@ @ @ @@ @ @ @ @@@ Character number 52 @ @ @ @ @ @ @@@@@ @ Character number 53 @@@@ @ @@@@ @ @ @ @@ Character number 54 @@ @ @ @@@@ @ @ @ @ @@@ Character number 55 @@@@@ @ @ @ @ @ @ Character number 56 @@@ @ @ @ @ @@@ @ @ @ @ @@@ Character number 57 @@@ @ @ @ @ @@@@ @ @ @@ Character number 58 @ @ Character number 59 @ @@ @ @ Character number 60 @@ @@ @@ @@ @@ @@ @@ Character number 61 @@@@@ @@@@@ Character number 62 @@ @@ @@ @@ @@ @@ @@ Character number 63 @@@ @ @ @ @ @ @ Character number 64 @@@ @ @ @ @@ @ @ @ @ @ @ @ @@@ Character number 65 @ @ @ @ @ @ @ @@@@@ @ @ @ @ Character number 66 @@@@ @ @ @ @ @@@@ @ @ @ @ @@@@ Character number 67 @@@ @ @ @ @ @ @ @@@@ Character number 68 @@@ @ @ @ @ @ @ @ @ @ @ @@@ Character number 69 @@@@@ @ @ @@@@ @ @ @@@@@ Character number 70 @@@@@ @ @ @@@@ @ @ @ Character number 71 @@@ @ @ @ @ @@@ @ @ @ @ @@@ Character number 72 @ @ @ @ @ @ @@@@@ @ @ @ @ @ @ Character number 73 @@@ @ @ @ @ @ @@@ Character number 74 @ @ @ @ @ @ @ @ @@@ Character number 75 @ @ @ @ @ @ @@ @ @ @ @ @ @ Character number 76 @ @ @ @ @ @ @@@@@ Character number 77 @ @ @@ @@ @ @ @ @ @ @ @ @ @ @ @ @ Character number 78 @ @ @@ @ @@ @ @ @ @ @ @@ @ @@ @ @ Character number 79 @@@ @ @ @ @ @ @ @ @ @ @ @@@ Character number 80 @@@@ @ @ @ @ @@@@ @ @ @ Character number 81 @@@ @ @ @ @ @ @ @ @ @ @ @ @@ @ Character number 82 @@@@ @ @ @ @ @@@@ @ @ @ @ @ @ Character number 83 @@@ @ @ @ @@@ @ @ @ @@@ Character number 84 @@@@@ @ @ @ @ @ @ Character number 85 @ @ @ @ @ @ @ @ @ @ @ @ @@@ Character number 86 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 87 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 88 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 89 @ @ @ @ @ @ @ @ @ @ @ Character number 90 @@@@@ @ @ @ @ @ @@@@@ Character number 91 @@@ @ @ @ @ @ @ @@@ Character number 92 @ @ @ @ @ Character number 93 @@@ @ @ @ @ @ @ @@@ Character number 94 @ @ @ @ @ Character number 95 @@@@@ Character number 96 @ @ @ Character number 97 @@@ @ @@@@ @ @ @@@@ Character number 98 @ @ @@@@ @ @ @ @ @ @ @@@@ Character number 99 @@@ @ @ @ @ @@@@ Character number 100 @ @ @@@@ @ @ @ @ @ @ @@@@ Character number 101 @@@ @ @ @@@@@ @ @@@ Character number 102 @@ @ @ @@@@@ @ @ @ Character number 103 @@@@ @ @ @ @ @@@@ @ @@@ Character number 104 @ @ @@@@ @ @ @ @ @ @ @ @ Character number 105 @ @@ @ @ @ @ Character number 106 @ @ @ @ @ @ @ @@ Character number 107 @ @ @ @@ @ @ @@ @ @ @ @@ Character number 108 @@ @ @ @ @ @ @ Character number 109 @@@@ @ @ @ @ @ @ @ @ @ @ @ @ Character number 110 @@@@ @ @ @ @ @ @ @ @ Character number 111 @@@ @ @ @ @ @ @ @@@ Character number 112 @@@@ @ @ @ @ @@@@ @ @ Character number 113 @@@@ @ @ @ @ @@@@ @ @ Character number 114 @@@@ @ @ @ @ @ Character number 115 @@@ @ @@@ @ @@@@ Character number 116 @ @ @@@@@ @ @ @ @@@ Character number 117 @ @ @ @ @ @ @ @@ @@ @ Character number 118 @ @ @ @ @ @ @ @ @ Character number 119 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 120 @ @ @ @ @ @ @ @ @ Character number 121 @ @ @ @ @ @ @@@@ @ @@@ Character number 122 @@@@@ @ @ @ @@@@@ Character number 123 @@ @ @ @ @ @ @@ Character number 124 @ @ @ @ @ @ Character number 125 @@ @ @ @ @ @ @@ Character number 126 @ @ @ @ @ Character number 127 Character number 158 @@@ @ @ @ @ @ @ @ @@ @ Character number 159 @ @ Character number 160 @ @@ @@@ @@ @ Character number 161 @ @ @ @ @ @ @ @@@@@ @ @ Character number 162 @ @ @@@ @ @ @ @ @ @ @@@ Character number 163 @ @ @ @ @ @ @ @ @ @ @@@ Character number 164 @ @ @ @ @ @ @@@@@ @ @ Character number 165 @@@@ @ @ @ @ @ @@@ @@@ @ @ @ @@@ Character number 166 @ @@@ @ @ @ @ @ @ @ @ @ @ @@@ @ Character number 167 @ @ @ @@ @@@ @ @ @@@@@ @ @ Character number 168 @ @ @ @@ @@@ @ @ @ @ @@@ Character number 169 @@@ @ @ @ @ @ @ @ @@ @ Character number 170 @ @ @ @@ @@ @ @ @ @ @ @@ @ @ Character number 171 @ @ @@@@@ @ @ Character number 172 @ @ @@@@@ @ @ Character number 173 @ @@@ @ @ @ @ @ @ Character number 174 @ @ @ @ @ @ @@@ @ Character number 175 @ @ @ @ @ @ @ @ @ @@@@@ Character number 176 @ @ @ @ @ @ @@ @ @ @@@ @ Character number 177 @@@@@ @ @ @ @ @ @ @ @ @ @ @ @ Character number 178 @@@@@ @ @ @ @ @ @@@@@ Character number 179 @@@ @ @ @ @ @ @ @ @ @ @ @@ @@ Character number 180 @@@ @ @ @ @ @@ @ Character number 181 @ @ @ @ @@@@@ @@@@@ Character number 182 @ @ @ @ @@@@@ @@@@@ Character number 183 @ @ @ @ @ @ @ @ @ @ Character number 184 @@@ @ @ @ @ @ @ @@@ Character number 185 @@@ @ @ @ @ @ @ @@@ Character number 186 @ @ @ @ @ @ @ @ @ Character number 187 @ @@@@@ @ Character number 188 @@ @ @ @ @@@ Character number 189 @@ @ @@ @ @@ Character number 190 @ @ @ @ @ @ @ @ Character number 191 @ @ @ @ @@@@@ @ @ @ @ @@@@@ @ @ @ @ Character number 192 @ @@@@@ @ @@@@@ @ Character number 193 @@ @ @ @ @@@@@ Character number 194 @ @ @@@@@ @ @ @@@@@ Character number 195 @ @ @ @ @ @ @ @ @@@@ @ Character number 196 @ @ @ @ @@ @ @ @ @@@ Character number 197 @@@@@ @ @ @ @ @ @@@ @@@@@ Character number 198 @ @@@ @ @ @ @@@@@ @ @ @ @@ @@ @@@@@ Character number 199 @@ @ @ @ @ @ @ @ @ @ @ @@ Character number 200 @ @ @@@@@ @@@@@ @ @ @@@ Character number 201 @ @ @ @ @@@@@ @ @ @ @ @ @ @ @@@@@ @ @ @ Character number 202 @@ @ @ @ @@@@ @ @ @ @@@ Character number 203 @ @ @ @ @ @ @@@@@ @ @@@@@ @ Character number 204 @ @@@ @ @ @ @ @ @@@@ @ Character number 205 @ @ @@@ @ @ @ @ @@@ @ @ Character number 206 @@@ @ @ @ @@ @ @ @ @ @ @ @ @@@ Character number 207 @@@ @ @ @ @ @@@ Character number 208 @@@@@@ @ @ @ @ @ @ @ @ @ @ @ @ @@@@@@ Character number 209 @ @ @@@ @ @@@@ @ @ @@@@ Character number 210 @ @ @@@ @ @ @ @ @ @ @@@ Character number 211 @ @ @ @ @ @ @ @ @ @@ @@ @ Character number 212 @ @@@ @ @@@@ @ @ @@@@ Character number 213 @@ @ @ @ @@@@@ @ @ @@ @@ Character number 214 @ @@@ @ @ @ @ @ @ @ @@@ @ Character number 215 @@ @ @ @ @@ @ @@@@ @ @ @@@@ Character number 216 @@ @ @ @ @@@ @ @ @ @ @@@ Character number 217 @@@ @ @ @ @ @ @@ @ Character number 218 @@ @ @ @ @@@@ @ @ @ @ @ @ Character number 219 @ @ @ @ @ @ Character number 220 @ @ @ @ @ @ @@@ Character number 221 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 222 @@ @ @ @ @ @ @@ @ @ @ @ @ @@ Character number 223 @@ @@@ @ @@@@ @ @ @@@@ Character number 224 @ @ @ @@ @ @@@@ @ @ @@@@ Character number 225 @@ @@@ @ @ @@@@@ @ @@@ Character number 226 @@ @@@ @ @ @@@@@ @ @@@ Character number 227 @ @ @ @@@ @ @ @@@@@ @ @@@ Character number 228 @ @ @@@ @ @ @@@@@ @ @@@ Character number 229 @@ @@ @ @ @ @ Character number 230 @ @ @ @@ @ @ @ Character number 231 @ @ @@ @ @ @ @ Character number 232 @@ @ @ @ @ @ @@ Character number 233 @@ @ @ @ @ @ @@ Character number 234 @@ @@@ @ @ @ @ @ @ @@@ Character number 235 @ @ @ @@@ @ @ @ @ @@@ Character number 236 @@ @ @ @ @ @ @ @ @@ @@ @ Character number 237 @ @ @ @ @ @ @ @ @@ @@ @ Character number 238 @@@ @ @@@ @ @ @ @ @@@ @ @@@ Character number 239 @ @ @ @ @ @ @ @ Character number 240 @ @ @ @ @ Character number 241 @@@ @ @ @ @ @ @ @@@ @@@@@ Character number 242 @@@ @ @@@@ @ @ @@@@ @@@@@ Character number 243 @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ Character number 244 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 245 @@@@@@ @ @ @ @ @ @ @ Character number 246 @@@@@@ @ @ @ @ @ @ @ Character number 247 @ @ @ @ @ @ @ @@@@@@ Character number 248 @ @ @ @ @ @ @ @@@@@@ Character number 249 @ @ @ @ @ @ @ @ Character number 250 @@@@@@ Character number 251 @ @ @ @ @ @ @ @ Character number 252 @@@@@@ Character number 253 @@@@@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 254 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @@@@@@ Character number 255 ```

Note that Character 255 is defined as a blank, just like 32.

hackerb9 commented 2 years ago

The North American variant of the Olivetti M10 has a similar, yet different, font. This time there is gap of 32 characters (instead of 30), so the character that would normally have been encoded as position 128 is instead referred to as 160.

Here is the modified extraction code:

m10narom2txt.c ```C /* North American version of M10 ROM font extractor. * Same as k85rom2txt, except the numbering jumps by 32 at position 128 */ #include #include int main(int argc, char *argv[]) { int fw=5; /* Font width. Increases by one for second 128 chars. */ FILE *fp; if (argc>1) { fp = fopen(argv[1], "r"); if (fp == NULL) { perror(argv[1]); exit(1); } } else { fp = stdin; } int c, count=0, charnum=0; char m[16][16]; while ((c=fgetc(fp)) != EOF) { for (int i=7; i>=0; i--) { m[i][count] = (c & 1<127) fw=6; if (charnum+32>255) break; } } return 0; } ```

And here is the output reading the font data starting at address 30548:

Output from running m10narom2txt.c on M10_System_ROM_NorthAmerica.orig.bin ```bash $ dd if=roms/M10_System_ROM_NorthAmerica.orig.bin skip=$((30548-5*32)) bs=1 | ./m10narom2txt | sed '1,288d' Character number 32 Character number 33 @ @ @ @ @ @ Character number 34 @ @ @ @ @ @ Character number 35 @ @ @ @ @@@@@ @ @ @ @ @@@@@ @ @ @ @ Character number 36 @ @@@@ @ @ @@@ @ @ @@@@ @ Character number 37 @@ @@ @ @ @ @ @ @@ @@ Character number 38 @ @ @ @ @ @ @ @ @ @ @ @@ @ Character number 39 @ @ @ Character number 40 @ @ @ @ @ @ @ Character number 41 @ @ @ @ @ @ @ Character number 42 @ @ @ @ @@@@@ @ @ @ @ Character number 43 @ @ @@@@@ @ @ Character number 44 @@ @ @ Character number 45 @@@@@ Character number 46 @@ @@ Character number 47 @ @ @ @ @ Character number 48 @@@ @ @ @ @@ @ @ @ @@ @ @ @ @@@ Character number 49 @ @@@ @ @ @ @ @ Character number 50 @@@ @ @ @ @ @ @ @@@@@ Character number 51 @@@ @ @ @@ @ @ @ @@@ Character number 52 @ @ @ @ @ @ @@@@@ @ Character number 53 @@@@ @ @@@@ @ @ @ @@ Character number 54 @@ @ @ @@@@ @ @ @ @ @@@ Character number 55 @@@@@ @ @ @ @ @ @ Character number 56 @@@ @ @ @ @ @@@ @ @ @ @ @@@ Character number 57 @@@ @ @ @ @ @@@@ @ @ @@ Character number 58 @ @ Character number 59 @ @@ @ @ Character number 60 @@ @@ @@ @@ @@ @@ @@ Character number 61 @@@@@ @@@@@ Character number 62 @@ @@ @@ @@ @@ @@ @@ Character number 63 @@@ @ @ @ @ @ @ Character number 64 @@@ @ @ @ @@ @ @ @ @ @ @ @ @@@ Character number 65 @ @ @ @ @ @ @ @@@@@ @ @ @ @ Character number 66 @@@@ @ @ @ @ @@@@ @ @ @ @ @@@@ Character number 67 @@@ @ @ @ @ @ @ @@@@ Character number 68 @@@ @ @ @ @ @ @ @ @ @ @ @@@ Character number 69 @@@@@ @ @ @@@@ @ @ @@@@@ Character number 70 @@@@@ @ @ @@@@ @ @ @ Character number 71 @@@ @ @ @ @ @@@ @ @ @ @ @@@ Character number 72 @ @ @ @ @ @ @@@@@ @ @ @ @ @ @ Character number 73 @@@ @ @ @ @ @ @@@ Character number 74 @ @ @ @ @ @ @ @ @@@ Character number 75 @ @ @ @ @ @ @@ @ @ @ @ @ @ Character number 76 @ @ @ @ @ @ @@@@@ Character number 77 @ @ @@ @@ @ @ @ @ @ @ @ @ @ @ @ @ Character number 78 @ @ @@ @ @@ @ @ @ @ @ @@ @ @@ @ @ Character number 79 @@@ @ @ @ @ @ @ @ @ @ @ @@@ Character number 80 @@@@ @ @ @ @ @@@@ @ @ @ Character number 81 @@@ @ @ @ @ @ @ @ @ @ @ @ @@ @ Character number 82 @@@@ @ @ @ @ @@@@ @ @ @ @ @ @ Character number 83 @@@ @ @ @ @@@ @ @ @ @@@ Character number 84 @@@@@ @ @ @ @ @ @ Character number 85 @ @ @ @ @ @ @ @ @ @ @ @ @@@ Character number 86 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 87 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 88 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 89 @ @ @ @ @ @ @ @ @ @ @ Character number 90 @@@@@ @ @ @ @ @ @@@@@ Character number 91 @@@ @ @ @ @ @ @ @@@ Character number 92 @ @ @ @ @ Character number 93 @@@ @ @ @ @ @ @ @@@ Character number 94 @ @ @ @ @ Character number 95 @@@@@ Character number 96 @ @ @ Character number 97 @@@ @ @@@@ @ @ @@@@ Character number 98 @ @ @@@@ @ @ @ @ @ @ @@@@ Character number 99 @@@ @ @ @ @ @@@@ Character number 100 @ @ @@@@ @ @ @ @ @ @ @@@@ Character number 101 @@@ @ @ @@@@@ @ @@@ Character number 102 @@ @ @ @@@@@ @ @ @ Character number 103 @@@@ @ @ @ @ @@@@ @ @@@ Character number 104 @ @ @@@@ @ @ @ @ @ @ @ @ Character number 105 @ @@ @ @ @ @ Character number 106 @ @ @ @ @ @ @ @@ Character number 107 @ @ @ @@ @ @ @@ @ @ @ @@ Character number 108 @@ @ @ @ @ @ @ Character number 109 @@@@ @ @ @ @ @ @ @ @ @ @ @ @ Character number 110 @@@@ @ @ @ @ @ @ @ @ Character number 111 @@@ @ @ @ @ @ @ @@@ Character number 112 @@@@ @ @ @ @ @@@@ @ @ Character number 113 @@@@ @ @ @ @ @@@@ @ @ Character number 114 @@@@ @ @ @ @ @ Character number 115 @@@ @ @@@ @ @@@@ Character number 116 @ @ @@@@@ @ @ @ @@@ Character number 117 @ @ @ @ @ @ @ @@ @@ @ Character number 118 @ @ @ @ @ @ @ @ @ Character number 119 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 120 @ @ @ @ @ @ @ @ @ Character number 121 @ @ @ @ @ @ @@@@ @ @@@ Character number 122 @@@@@ @ @ @ @@@@@ Character number 123 @@ @ @ @ @ @ @@ Character number 124 @ @ @ @ @ @ Character number 125 @@ @ @ @ @ @ @@ Character number 126 @ @ @ @ @ Character number 127 Character number 160 @ @@ @@@ @@ @ Character number 161 @ @ @ @ @ @ @ @@@@@ @ @ Character number 162 @ @ @@@ @ @ @ @ @ @ @@@ Character number 163 @ @ @ @ @ @ @ @ @ @ @@@ Character number 164 @ @ @ @ @ @ @@@@@ @ @ Character number 165 @@@@ @ @ @ @ @ @@@ @@@ @ @ @ @@@ Character number 166 @ @@@ @ @ @ @ @ @ @ @ @ @ @@@ @ Character number 167 @ @ @ @@ @@@ @ @ @@@@@ @ @ Character number 168 @ @ @ @@ @@@ @ @ @ @ @@@ Character number 169 @@@ @ @ @ @ @ @ @ @@ @ Character number 170 @ @ @ @@ @@ @ @ @ @ @ @@ @ @ Character number 171 @ @ @@@@@ @ @ Character number 172 @ @ @@@@@ @ @ Character number 173 @ @@@ @ @ @ @ @ @ Character number 174 @ @ @ @ @ @ @@@ @ Character number 175 @ @ @ @ @ @ @ @ @ @@@@@ Character number 176 @ @ @ @ @ @ @@ @ @ @@@ @ Character number 177 @@@@@ @ @ @ @ @ @ @ @ @ @ @ @ Character number 178 @@@@@ @ @ @ @ @ @@@@@ Character number 179 @@@ @ @ @ @ @ @ @ @ @ @ @@ @@ Character number 180 @@@ @ @ @ @ @@ @ Character number 181 @ @ @ @ @@@@@ @@@@@ Character number 182 @ @ @ @ @@@@@ @@@@@ Character number 183 @ @ @ @ @ @ @ @ @ @ Character number 184 @@@ @ @ @ @ @ @ @@@ Character number 185 @@@ @ @ @ @ @ @ @@@ Character number 186 @ @ @ @ @ @ @ @ @ Character number 187 @ @@@@@ @ Character number 188 @@ @ @ @ @@@ Character number 189 @@ @ @@ @ @@ Character number 190 @ @ @ @ @ @ @ @ Character number 191 @ @ @ @ @@@@@ @ @ @ @ @@@@@ @ @ @ @ Character number 192 @ @@@@@ @ @@@@@ @ Character number 193 @@ @ @ @ @@@@@ Character number 194 @ @ @@@@@ @ @ @@@@@ Character number 195 @ @ @ @ @ @ @ @ @@@@ @ Character number 196 @ @ @ @ @@ @ @ @ @@@ Character number 197 @@@@@ @ @ @ @ @ @@@ @@@@@ Character number 198 @ @@@ @ @ @ @@@@@ @ @ @ @@ @@ @@@@@ Character number 199 @@ @ @ @ @ @ @ @ @ @ @ @@ Character number 200 @ @ @@@@@ @@@@@ @ @ @@@ Character number 201 @ @ @ @ @@@@@ @ @ @ @ @ @ @ @@@@@ @ @ @ Character number 202 @@ @ @ @ @@@@ @ @ @ @@@ Character number 203 @ @ @ @ @ @ @@@@@ @ @@@@@ @ Character number 204 @ @@@ @ @ @ @ @ @@@@ @ Character number 205 @ @ @@@ @ @ @ @ @@@ @ @ Character number 206 @@@ @ @ @ @@ @ @ @ @ @ @ @ @@@ Character number 207 @@@ @ @ @ @ @@@ Character number 208 @@@@@@ @ @ @ @ @ @ @ @ @ @ @ @ @@@@@@ Character number 209 @ @ @@@ @ @@@@ @ @ @@@@ Character number 210 @ @ @@@ @ @ @ @ @ @ @@@ Character number 211 @ @ @ @ @ @ @ @ @ @@ @@ @ Character number 212 @ @@@ @ @@@@ @ @ @@@@ Character number 213 @@ @ @ @ @@@@@ @ @ @@ @@ Character number 214 @ @@@ @ @ @ @ @ @ @ @@@ @ Character number 215 @@ @ @ @ @@ @ @@@@ @ @ @@@@ Character number 216 @@ @ @ @ @@@ @ @ @ @ @@@ Character number 217 @@@ @ @ @ @ @ @@ @ Character number 218 @@ @ @ @ @@@@ @ @ @ @ @ @ Character number 219 @ @ @ @ @ @ Character number 220 @ @ @ @ @ @ @@@ Character number 221 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 222 @@ @ @ @ @ @ @@ @ @ @ @ @ @@ Character number 223 @@ @@@ @ @@@@ @ @ @@@@ Character number 224 @ @ @ @@ @ @@@@ @ @ @@@@ Character number 225 @@ @@@ @ @ @@@@@ @ @@@ Character number 226 @@ @@@ @ @ @@@@@ @ @@@ Character number 227 @ @ @ @@@ @ @ @@@@@ @ @@@ Character number 228 @ @ @@@ @ @ @@@@@ @ @@@ Character number 229 @@ @@ @ @ @ @ Character number 230 @ @ @ @@ @ @ @ Character number 231 @ @ @@ @ @ @ @ Character number 232 @@ @ @ @ @ @ @@ Character number 233 @@ @ @ @ @ @ @@ Character number 234 @@ @@@ @ @ @ @ @ @ @@@ Character number 235 @ @ @ @@@ @ @ @ @ @@@ Character number 236 @@ @ @ @ @ @ @ @ @@ @@ @ Character number 237 @ @ @ @ @ @ @ @ @@ @@ @ Character number 238 @@@ @ @@@ @ @ @ @ @@@ @ @@@ Character number 239 @ @ @ @ @ @ @ @ Character number 240 @ @ @ @ @ Character number 241 @@@ @ @ @ @ @ @ @@@ @@@@@ Character number 242 @@@ @ @@@@ @ @ @@@@ @@@@@ Character number 243 @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ @@@@@@ Character number 244 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 245 @@@@@@ @ @ @ @ @ @ @ Character number 246 @@@@@@ @ @ @ @ @ @ @ Character number 247 @ @ @ @ @ @ @ @@@@@@ Character number 248 @ @ @ @ @ @ @ @@@@@@ Character number 249 @ @ @ @ @ @ @ @ Character number 250 @@@@@@ Character number 251 @ @ @ @ @ @ @ @ Character number 252 @@@@@@ Character number 253 @@@@@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 254 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @@@@@@ Character number 255 ```

This font differs from the European variant in only three characters: number 35 (pound symbol) has been changed from a British Pound £ to the American hash mark #. Characters 158 Ç (C with cedilla) and 159 ¨ (diaeresis) are missing from the North American ROM.

hackerb9 commented 2 years ago

To summarize:

FONT:
    BINARY  "FONT_L.BIN"

;$7A96

;00000000
;00001000
;00011100
;00111110
;01111111
  DEFB $00,$08,$1C,$3E,$7F,$00

;00100000
;01110000
;11111000
;00100000
;00111110
  DEFB $20,$70,$F8,$20,$3E,$00

;01010101
;10101010
;01010101
;10101010
;01010101
;10101010
 DEFB $55,$AA,$55,$AA,$55,$AA

robhagemans commented 2 years ago

Thanks for all the research! I've needed to fix some annoying bugs in monobit along the way (it is still very much alpha) but with the parameters above I can extract the K-85, T200 and Olivetti M10 from the Virtual-T set. I'm assuming the localised Olivetti OMS come from http://tandy.wiki/Model_T_System_ROMs as the names match, will have a look at those too.

Notes

hackerb9 commented 2 years ago

You are correct about the ROM source. I had meant to link to tandy.wiki but somehow that got lost in the shuffle.

Would you mind sharing the commands you used with monobit to extract the font files? I couldn't quite figure that part out.


Edit: PC8201A and 8300 have the same font at the same location in ROM.

hackerb9 commented 2 years ago

The expansion device for the Model 100 which lets it plug into a TV for a 40 column x 25 row screen or into a monitor for 80 columns x 25 rows is actually called the "Model 100 Disk Video Interface". (I am not sure where I got the bizarre idea it was called the "VT-100" see below).

The DVI's character generator ROM is available on tandy.wiki. It is almost in the same format as the Tandy 200's font data, but the letters are mirrored left to right. It contains two fonts. (Is the right word "strikes"?)

The first strike data starts at byte 0, with ASCII 0, although the first 32 characters are just blank. It is an 8x8 strike.

The second strike data starts at byte 2048. Again it starts at ASCII 0 and the first 32 characters are blank. It is a 7x8 strike.

Output from dvirom2txt ```bash $ dd if=M17_CG.bin | ./dvirom2txt Character number 0 Character number 1 Character number 2 Character number 3 Character number 4 Character number 5 Character number 6 Character number 7 Character number 8 Character number 9 Character number 10 Character number 11 Character number 12 Character number 13 Character number 14 Character number 15 Character number 16 Character number 17 Character number 18 Character number 19 Character number 20 Character number 21 Character number 22 Character number 23 Character number 24 Character number 25 Character number 26 Character number 27 Character number 28 Character number 29 Character number 30 Character number 31 Character number 32 Character number 33 @ @ @ @ @ @ Character number 34 @ @ @ @ @ @ Character number 35 @ @ @ @ @@@@@@ @ @ @@@@@@ @ @ @ @ Character number 36 @ @@@@@ @ @ @@@@ @ @ @@@@@ @ Character number 37 @@ @ @@ @ @ @ @ @@ @ @@ Character number 38 @@ @ @ @ @ @@ @ @ @ @ @ @@@ @ Character number 39 @ @ @ Character number 40 @ @ @ @ @ @ @ Character number 41 @ @ @ @ @ @ @ Character number 42 @ @ @ @ @@@ @ @@@ @ @ @ @ Character number 43 @ @ @@@@@ @ @ Character number 44 @ @ @ Character number 45 @@@@@@ Character number 46 @ Character number 47 @ @ @ @ @ @ Character number 48 @@@@ @ @ @ @@ @ @@ @ @@ @ @ @ @@@@ Character number 49 @ @@ @ @ @ @ @ @@@@@ Character number 50 @@@@ @ @ @ @@ @@ @ @@@@@@ Character number 51 @@@@ @ @ @ @@@ @ @ @ @@@@ Character number 52 @ @@ @ @ @ @ @@@@@@ @ @ Character number 53 @@@@@@ @ @@@@ @ @ @ @@@@ Character number 54 @@@ @ @ @@@@@ @ @ @ @ @@@@ Character number 55 @@@@@@ @ @ @ @ @ @ @ Character number 56 @@@@ @ @ @ @ @@@@ @ @ @ @ @@@@ Character number 57 @@@@ @ @ @ @ @@@@@ @ @ @@@ Character number 58 @ @ Character number 59 @ @ @ @ Character number 60 @@ @@ @@ @@ @@ @@ @@ Character number 61 @@@@@@ @@@@@@ Character number 62 @@ @@ @@ @@ @@ @@ @@ Character number 63 @@@@ @ @ @ @@ @ @ Character number 64 @@@@ @ @ @ @@@ @ @ @ @ @ @ @ @@@@ Character number 65 @@ @ @ @ @ @@@@@@ @ @ @ @ @ @ Character number 66 @@@@@ @ @ @ @ @@@@ @ @ @ @ @@@@@ Character number 67 @@@ @ @ @ @ @ @ @ @@@ Character number 68 @@@@ @ @ @ @ @ @ @ @ @ @ @@@@ Character number 69 @@@@@@ @ @ @@@@ @ @ @@@@@@ Character number 70 @@@@@@ @ @ @@@@ @ @ @ Character number 71 @@@ @ @ @ @ @@@ @ @ @ @ @@@ Character number 72 @ @ @ @ @ @ @@@@@@ @ @ @ @ @ @ Character number 73 @@@ @ @ @ @ @ @@@ Character number 74 @@@ @ @ @ @ @ @ @@@ Character number 75 @ @ @ @ @ @ @@@ @ @ @ @ @ @ Character number 76 @ @ @ @ @ @ @@@@@@ Character number 77 @ @ @@ @@ @ @@ @ @ @@ @ @ @ @ @ @ @ Character number 78 @ @ @@ @ @ @ @ @ @ @ @ @@ @ @ @ @ Character number 79 @@@@ @ @ @ @ @ @ @ @ @ @ @@@@ Character number 80 @@@@@ @ @ @ @ @@@@@ @ @ @ Character number 81 @@@@ @ @ @ @ @ @ @ @ @ @ @ @@@ @ Character number 82 @@@@@ @ @ @ @ @@@@@ @ @ @ @ @ @ Character number 83 @@@@ @ @ @ @@@@ @ @ @ @@@@ Character number 84 @@@@@ @ @ @ @ @ @ Character number 85 @ @ @ @ @ @ @ @ @ @ @ @ @@@@ Character number 86 @ @ @ @ @ @ @ @ @ @ @@ @@ Character number 87 @ @ @ @ @ @ @ @@ @ @ @@ @ @@ @@ @ @ Character number 88 @ @ @ @ @ @ @@ @ @ @ @ @ @ Character number 89 @ @ @ @ @ @ @@@ @ @ @ Character number 90 @@@@@@ @ @ @@ @ @ @@@@@@ Character number 91 @@@@ @ @ @ @ @ @@@@ Character number 92 @ @ @ @ @ @ Character number 93 @@@@ @ @ @ @ @ @@@@ Character number 94 @ @ @ @ @ Character number 95 @@@@@@@@ Character number 96 @ @ @ Character number 97 @@@ @ @@@@ @ @ @@@ @ Character number 98 @ @ @ @@@ @@ @ @ @ @@ @ @ @@@ Character number 99 @@@@ @ @ @ @ @ @@@@ Character number 100 @ @ @@@ @ @ @@ @ @ @ @@ @@@ @ Character number 101 @@@@ @ @ @@@@@@ @ @@@@ Character number 102 @@ @ @ @ @@@@@ @ @ @ Character number 103 @@@ @ @ @@ @ @@ @@@ @ @ @@@@ Character number 104 @ @ @ @@@ @@ @ @ @ @ @ @ @ Character number 105 @ @@ @ @ @ @@@ Character number 106 @ @@ @ @ @ @ @ @@@ Character number 107 @ @ @ @ @ @ @ @ @@ @ @ @ Character number 108 @@ @ @ @ @ @ @@@ Character number 109 @@@ @@ @ @ @ @ @ @ @ @ @ @ @ @ Character number 110 @ @@@ @@ @ @ @ @ @ @ @ Character number 111 @@@@ @ @ @ @ @ @ @@@@ Character number 112 @ @@@ @@ @ @@ @ @ @@@ @ @ Character number 113 @@@ @ @ @@ @ @@ @@@ @ @ @ Character number 114 @ @@@ @@ @ @ @ @ Character number 115 @@@@@ @ @@@@ @ @@@@@ Character number 116 @ @ @@@@@ @ @ @ @ @@ Character number 117 @ @ @ @ @ @ @ @ @@@ @ Character number 118 @ @ @ @ @ @ @ @ @@ Character number 119 @ @ @ @ @ @ @ @ @ @ @ @@ @@ Character number 120 @ @ @ @ @@ @ @ @ @ Character number 121 @ @ @ @ @ @@ @@@ @ @ @@@@ Character number 122 @@@@@@ @ @@ @ @@@@@@ Character number 123 @@ @ @ @ @ @ @@ Character number 124 @ @ @ @ @ @ Character number 125 @@ @ @ @ @ @ @@ Character number 126 @@ @ @ @ @@ Character number 127 Character number 128 @@@@@ @@ @@ @@ @@ @@@ @ @ @@ @@ @@@@@@@ Character number 129 @@ @@@@ @@@@@@ @ @@ @ @@ @ @ @@ @ @@@@ @@@@@@ Character number 130 @@@ @@@ @ @ @ @ @ @ @ @ @@@ @@@ Character number 131 @@@@@@ @ @ @ @ @@ @@@ @@@ @@@@ @@@@@ @@@@@@ Character number 132 @@ @@ @@ @@ @@@@@@@@ @@ @@ @@ @@ @@ @@ @@ @@@@@@@@ @@ @@ @@ Character number 133 @@ @@ @@@@@@@@ @@@@@@@@ @@ @@ @@@@ Character number 134 @ @@@ @@@@@ @ @ @ @ @@@@@@@ @ @ @ @ @@@@@@@ Character number 135 @@@@@@@ @@@@@@ @@@@@@@ @ @ @@@ @@@ @@@ @@@ @@@@@@@ Character number 136 @ @ @ @ @ @ Character number 137 @@@@ @ @ @ @ @ @ @ Character number 138 @ @ @@@@@@@ @ @@@@@@@ @ @ Character number 139 @@@@@@@ @ @ @ @@ @ @ @ @@@@@@@ Character number 140 @@ @ @ @ @@ @@ @ @ @ @@ Character number 141 @ @ @@@@@ @ @ @@@@@ Character number 142 @ @ @ @ @ @ @ Character number 143 @ @@ @@@ @@@@ @@@ @@ @ Character number 144 @@@@ @ @ @ @ @ @ @@@@@@@@ @ @ @ @ @@@ @@@ Character number 145 @@@@ @ @ @ @ @ @ @@@@@@@@ @ @ @ @ @@ @@ Character number 146 @@@ @ @ @ @ @ @ @ @ @ @@@ Character number 147 @ @ @ @@@ @ @@@ @ @ @ @ @ @ @ Character number 148 @ @ @ @ @ @@@@@ @ @ @ @ @ Character number 149 @@@@@ @@ @ @ @@@@ @ @ @ @ @ @ @@@@ Character number 150 @@@ @ @ @ @ @@@ @ @@@@@ @ Character number 151 @@ @ @ @ @ @ @@ @ @ @@ @ @ @ @ @ @ @ @@ Character number 152 @@@ @ @ @ @ @ @ @ @ Character number 153 @ @ @ @ @ @ @ @ @@@ Character number 154 @ @ @@@@@@@ @ @ Character number 155 @ @ @@@@@@@ @ @ Character number 156 @@@@ @@ @@ @@@ @@@ @ @ @@@ @@@ @@ @@@@@@ Character number 157 @ @ @ @ @ @ @ @ @ @ @ @ Character number 158 @@ @@ @ @@ @ @ @ @ @ @ @ @ @ @@ Character number 159 @@@ @ @ @ @ @ @ @ @ @@ @ @@ @ @ Character number 160 @ @ @ Character number 161 @ @ @@@ @ @@@@ @ @ @@@ @ Character number 162 @@@@ @ @ @ @ @ @@@@ @ @ Character number 163 @ @ @ @ @@@@@ @ @ @ @@@@@ Character number 164 @ @ @ Character number 165 @ @ @ @ @ @ @@@@ @ @ @ @ Character number 166 @ @ @ @ Character number 167 @@@@@@@ @@@@@ @@@ @ Character number 168 @ @ @@@ @ @ @ @ Character number 169 @@@@ @ @@@@ @ @ @@@@ @ @@@@ Character number 170 @@@@@@@ @ @@ @ @@@ @ @ @@ @ @ @@@ @ @@ @ @@@@@@@ Character number 171 @@@@@@@ @@ @@ @ @@@ @ @ @@@@@ @ @@@ @ @@ @@ @@@@@@@ Character number 172 @ @ @ @ @ @ @ @ @ @ @ @ @@@ @ @ Character number 173 @@@ @ @ @@ @ @ @ @@@ @ @ @ @ @ @@@ @ @ Character number 174 @ @ @ @ @ @ @ @ @@@ @ @ @ @@@ @ @ @@@ Character number 175 @@@@@@ @ @ @ @ @ @ @@@ @ @ @ @ @ @ @ Character number 176 @ @ @ @ @ @@@@@ @ @@@@@ @ Character number 177 @ @ @@ @ @ @ @ @@@@@@ @ @ Character number 178 @ @ @@@@ @ @ @ @ @ @ @@@@ Character number 179 @ @ @ @ @ @ @ @ @ @ @@@@ Character number 180 @ @@@ @ @ @ @ @ @ @ @ @@@ @ Character number 181 @@ @ @ @ @@ Character number 182 @ @ @@@ @ @@@@ @ @ @@@ @ Character number 183 @ @ @@@@ @ @ @ @ @@@@ Character number 184 @ @ @ @ @ @ @ @ @@@ @ Character number 185 @@@@ @ @ @ @ @@@@ @ @ @ @ @@@@@@ Character number 186 @@@@@@@ @ @ @@ @@ @ @ @ @ @ @ @ @ @ @ Character number 187 @ @ @@@@ @ @ @@@@@@ @ @@@@ Character number 188 @ @ @ @ @ @ @ @ @@@ @ Character number 189 @ @ @@@@ @ @ @@@@@@ @ @@@@ Character number 190 @ @ Character number 191 @@ @ @ @ @@@ @ @ @@@ Character number 192 @ @ @ @@@ @ @@@@ @ @ @@@ @ Character number 193 @@ @ @ @@@@ @ @ @@@@@@ @ @@@@ Character number 194 @ @ @ @ @ @ Character number 195 @@ @ @ @@@@ @ @ @ @ @@@@ Character number 196 @ @ @ @ @ @ @ @ @ @@@ @ Character number 197 @ @ @ @ @ Character number 198 @ @ @@@@ @ @ @@@@@@ @ @@@@ Character number 199 @ @ @ @ @ Character number 200 @ @ @@@ @ @@@@ @ @ @@@ @ Character number 201 @ @ @ @ @ Character number 202 @ @ @@@@ @ @ @ @ @@@@ Character number 203 @ @ @ @ @ @ @ @ @@@ @ Character number 204 @ @ @ @ @ @ @ @@ @@@ @ @ @@@@ Character number 205 @@ @ @ @@ @ @@@ @@ @ @ @ @ @ Character number 206 @@ @ @ @@ @@@ @ @@@@ @ @ @@@ @ Character number 207 @@ @ @ @@ @@@@ @ @ @ @ @@@@ Character number 208 @@ @ @ @@ @ @ @ @ @@@@@@ @ @ Character number 209 @@ @ @ @@@@@@ @ @@@@ @ @@@@@@ Character number 210 @ @ @ @@@ @ @ @ @@@ Character number 211 @@ @ @ @@@@ @ @ @ @ @ @ @@@@ Character number 212 @@ @ @ @ @ @ @ @ @ @ @ @@@@ Character number 213 @ @ @@@ @ @ @ @@@ Character number 214 @ @ @@@@@@ @ @@@@ @ @@@@@@ Character number 215 @ @ @@@@@@ @ @@@@ @ @@@@@@ Character number 216 @ @ @@ @ @ @ @ @@@@@@ @ @ Character number 217 @ @ @@@ @ @ @ @@@ Character number 218 @ @ @@@@ @ @ @ @ @ @ @@@@ Character number 219 @ @ @ @ @ @ @ @ @ @ @@@@ Character number 220 @ @ @ @ @ @ @@@ @ @ @ Character number 221 @ @ @ @ @ @ @ @ @ @ @@@@ Character number 222 @ @ @@@@@@ @ @@@@ @ @@@@@@ Character number 223 @ @ @@ @ @ @ @ @@@@@@ @ @ Character number 224 Character number 225 @@@@ @@@@ @@@@ @@@@ Character number 226 @@@@ @@@@ @@@@ @@@@ Character number 227 @@@@ @@@@ @@@@ @@@@ Character number 228 @@@@ @@@@ @@@@ @@@@ Character number 229 @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ Character number 230 @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ Character number 231 @@@@@@@@ @@@@@@@@ @@@@@@@@ @@@@@@@@ Character number 232 @@@@@@@@ @@@@@@@@ @@@@@@@@ @@@@@@@@ Character number 233 @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ Character number 234 @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ Character number 235 @@@@@@@@ @@@@@@@@ @@@@@@@@ @@@@@@@@ @@@@ @@@@ @@@@ @@@@ Character number 236 @@@@@@@@ @@@@@@@@ @@@@@@@@ @@@@@@@@ @@@@ @@@@ @@@@ @@@@ Character number 237 @@@@ @@@@ @@@@ @@@@ @@@@@@@@ @@@@@@@@ @@@@@@@@ @@@@@@@@ Character number 238 @@@@ @@@@ @@@@ @@@@ @@@@@@@@ @@@@@@@@ @@@@@@@@ @@@@@@@@ Character number 239 @@@@@@@@ @@@@@@@@ @@@@@@@@ @@@@@@@@ @@@@@@@@ @@@@@@@@ @@@@@@@@ @@@@@@@@ Character number 240 @@@@@ @ @ @ @ Character number 241 @@@@@@@@ Character number 242 @@@@ @ @ @ @ Character number 243 @@@@@@@@ @ @ @ @ Character number 244 @ @ @ @@@@@ @ @ @ @ Character number 245 @ @ @ @ @ @ @ @ Character number 246 @ @ @ @@@@@ Character number 247 @ @ @ @@@@ Character number 248 @ @ @ @@@@@@@@ Character number 249 @ @ @ @@@@ @ @ @ @ Character number 250 @ @ @ @@@@@@@@ @ @ @ @ Character number 251 @@@@@@@@ @@@@@@@ @@@@@@ @@@@@ @@@@ @@@ @@ @ Character number 252 @ @@ @@@ @@@@ @@@@@ @@@@@@ @@@@@@@ @@@@@@@@ Character number 253 @@@@@@@@ @@@@@@@ @@@@@@ @@@@@ @@@@ @@@ @@ @ Character number 254 @ @@ @@@ @@@@ @@@@@ @@@@@@ @@@@@@@ @@@@@@@@ Character number 255 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 256 Character number 257 Character number 258 Character number 259 Character number 260 Character number 261 Character number 262 Character number 263 Character number 264 Character number 265 Character number 266 Character number 267 Character number 268 Character number 269 Character number 270 Character number 271 Character number 272 Character number 273 Character number 274 Character number 275 Character number 276 Character number 277 Character number 278 Character number 279 Character number 280 Character number 281 Character number 282 Character number 283 Character number 284 Character number 285 Character number 286 Character number 287 Character number 288 Character number 289 @ @ @ @ @ Character number 290 @ @ @ @ @ @ Character number 291 @ @ @ @ @@@@@ @ @ @@@@@ @ @ @ @ Character number 292 @ @@@@ @ @ @@@ @ @ @@@@ @ Character number 293 @@ @@ @ @ @ @ @ @@ @@ Character number 294 @ @ @ @ @ @ @ @ @ @ @@ @@ Character number 295 @ @ Character number 296 @ @ @ @ @ @ @ Character number 297 @ @ @ @ @ @ @ Character number 298 @ @ @ @ @@@ @ @@@ @ @ @ @ Character number 299 @ @ @@@@@ @ @ Character number 300 @ @ @ Character number 301 @@@@@ Character number 302 @@ @@ Character number 303 @ @ @ @ @ Character number 304 @@@ @ @ @ @@ @ @ @ @@ @ @ @ @@@ Character number 305 @ @@ @ @ @ @ @ @@@@@ Character number 306 @@@ @ @ @ @ @@ @ @@@@@ Character number 307 @@@ @ @ @ @@ @ @ @ @@@ Character number 308 @ @@ @ @ @ @ @@@@@ @ @ Character number 309 @@@@@ @ @@@ @ @ @ @@@ Character number 310 @@ @ @ @@@@ @ @ @ @ @@@ Character number 311 @@@@@ @ @ @ @ @ @ @ Character number 312 @@@ @ @ @ @ @@@ @ @ @ @ @@@ Character number 313 @@@ @ @ @ @ @@@@ @ @ @@ Character number 314 @ @ Character number 315 @ @ @ @ Character number 316 @@ @@ @@ @@ @@ @@ @@ Character number 317 @@@@@ @@@@@ Character number 318 @@ @@ @@ @@ @@ @@ @@ Character number 319 @@@ @ @ @ @ @ @ Character number 320 @@@ @ @ @ @@ @ @ @ @ @ @ @ @@@ Character number 321 @ @ @ @ @ @ @ @@@@@ @ @ @ @ Character number 322 @@@@ @ @ @ @ @@@@ @ @ @ @ @@@@ Character number 323 @@@ @ @ @ @ @ @ @ @@@ Character number 324 @@@ @ @ @ @ @ @ @ @ @ @ @@@ Character number 325 @@@@@ @ @ @@@@ @ @ @@@@@ Character number 326 @@@@@ @ @ @@@@ @ @ @ Character number 327 @@@ @ @ @ @ @@@ @ @ @ @ @@@ Character number 328 @ @ @ @ @ @ @@@@@ @ @ @ @ @ @ Character number 329 @@@ @ @ @ @ @ @@@ Character number 330 @@@ @ @ @ @ @ @ @ @@ Character number 331 @ @ @ @ @ @ @@ @ @ @ @ @ @ Character number 332 @ @ @ @ @ @ @@@@@ Character number 333 @ @ @@ @@ @ @ @ @ @ @ @ @ @ @ @ @ Character number 334 @ @ @@ @ @@ @ @ @ @ @ @@ @ @@ @ @ Character number 335 @@@ @ @ @ @ @ @ @ @ @ @ @@@ Character number 336 @@@@ @ @ @ @ @@@@ @ @ @ Character number 337 @@@ @ @ @ @ @ @ @ @ @ @ @ @@ @ Character number 338 @@@@ @ @ @ @ @@@@ @ @ @ @ @ @ Character number 339 @@@ @ @ @ @@@ @ @ @ @@@ Character number 340 @@@@@ @ @ @ @ @ @ Character number 341 @ @ @ @ @ @ @ @ @ @ @ @ @@@ Character number 342 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 343 @ @ @ @ @ @ @ @ @ @ @ @ @@ @@ @ @ Character number 344 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 345 @ @ @ @ @ @ @@@ @ @ @ Character number 346 @@@@@ @ @ @ @ @ @@@@@ Character number 347 @@@ @ @ @ @ @ @@@ Character number 348 @ @ @ @ @ Character number 349 @@@ @ @ @ @ @ @@@ Character number 350 @ @ @ Character number 351 @@@@@@ Character number 352 @ @ Character number 353 @@@ @ @@@@ @ @ @@@@ Character number 354 @ @ @ @@ @@ @ @ @ @@ @ @ @@ Character number 355 @@@ @ @ @ @ @ @@@ Character number 356 @ @ @@ @ @ @@ @ @ @ @@ @@ @ Character number 357 @@@ @ @ @@@@@ @ @@@ Character number 358 @ @ @ @ @@@@@ @ @ @ Character number 359 @@ @ @ @@ @ @@ @@ @ @ @@@ Character number 360 @ @ @@@@ @ @ @ @ @ @ @ @ Character number 361 @ @@ @ @ @ @@@ Character number 362 @ @@ @ @ @ @ @ @@ Character number 363 @ @ @ @ @ @ @@ @ @ @ @ Character number 364 @@ @ @ @ @ @ @@@ Character number 365 @@ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 366 @ @@ @@ @ @ @ @ @ @ @ Character number 367 @@@ @ @ @ @ @ @ @@@ Character number 368 @ @@ @@ @ @@ @ @@ @ @ @@ @ Character number 369 @@ @ @ @@ @ @@ @ @@ @@ @ @ Character number 370 @ @@ @@ @ @ @ @ Character number 371 @@@@ @ @@@ @ @@@@ Character number 372 @ @ @@@@ @ @ @ @ @@ Character number 373 @ @ @ @ @ @ @ @@ @@ @ Character number 374 @ @ @ @ @ @ @ @ @ Character number 375 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 376 @ @ @ @ @ @ @ @ @ Character number 377 @ @ @ @ @ @@ @@ @ @ @@@ Character number 378 @@@@@ @ @ @ @@@@@ Character number 379 @@ @ @ @ @ @ @@ Character number 380 @ @ @ @ @ @ Character number 381 @@ @ @ @ @ @ @@ Character number 382 @ @ @ @ @ Character number 383 Character number 384 @@@@ @@ @@ @@ @@ @@ @ @ @@ @@ @@@@@@ Character number 385 @@ @@@@ @@@@@@ @ @@ @ @@ @ @ @@ @ @@@@ @@@@@@ Character number 386 @@@ @@@ @ @ @ @ @ @ @ @ @@@ @@@ Character number 387 @@@@@ @ @ @ @ @@ @@ @@@ @@@@ @@@@@ Character number 388 @@ @ @@ @ @@@@@@ @ @@ @ @@ @ @@ @ @@@@@@ @ @@ @ Character number 389 @ @ @@@@@ @@@@@ @ @ @@@ Character number 390 @ @@@ @@@@@ @ @ @ @@@@@ @ @ @ @@@@@ Character number 391 @@@@@ @@@@ @@@@@ @ @ @@ @@ @@ @@ @@@@@ Character number 392 @ @ @ @ @ @ Character number 393 @@@@ @ @ @ @ @ @ Character number 394 @ @ @@@@@ @ @@@@@ @ @ Character number 395 @@@@@ @ @ @ @ @ @ @ @@@@@ Character number 396 @@ @ @ @ @@ @ @ @ Character number 397 @ @ @@@@@ @ @ @@@@@ Character number 398 @ @ @ @ @ @ @ Character number 399 @ @@ @@@ @@ @ Character number 400 @@ @ @ @ @ @@@@@@ @ @ @ @ @@ @@ Character number 401 @@ @ @ @ @ @@@@@@ @ @ @ @ @@ @@ Character number 402 @@@ @ @ @ @ @ @ @ @ @ @@@ Character number 403 @ @ @ @@@ @ @@@ @ @ @ @ @ @ @ Character number 404 @ @ @ @ @ @@@@@ @ @ @ @ @ Character number 405 @@@@ @@ @ @ @@@ @ @ @ @@@ Character number 406 @@@ @ @ @ @ @@@ @ @@@@@ @ Character number 407 @@ @ @ @@ @ @ @ @ @ @ @ @ @ Character number 408 @@@ @ @ @ @ @ @ @ Character number 409 @ @ @ @ @ @ @ @@@ Character number 410 @ @ @@@@@ @ @ Character number 411 @ @ @@@@@ @ @ Character number 412 @@@ @ @ @@ @@ @ @ @@ @@ @ @@@ Character number 413 @ @ @ @ @ @ @ @ Character number 414 @@ @@ @ @ @ @ @ @ @ @ @ @ Character number 415 @ @ @ @ @ @ @ @@@@@ @ @ Character number 416 @ @ Character number 417 @ @ @@@ @ @@@@ @ @ @@@@ Character number 418 @@@ @ @ @ @ @ @@@ @ Character number 419 @@@ @ @@@@ @ @ @@ @ @@@@ Character number 420 @ @ Character number 421 @ @ @ @ @ @ @ @ @@@@@ @ Character number 422 @ @ @ @ Character number 423 @@@@@ @@@ @ Character number 424 @ @ @@@ @ @ @ @ Character number 425 @@@ @ @@@ @ @ @ @ @@@ @ @@@ Character number 426 @@@@@@ @ @@ @ @@ @ @ @@ @ @ @@ @ @@ @ @@@@@@ Character number 427 @@@@@@ @ @ @ @@ @ @ @@@@ @ @@ @ @ @ @@@@@@ Character number 428 @ @ @ @ @ @ @ @ @ @ @ @@@ @ @ Character number 429 @@ @ @ @@ @ @ @ @@@ @ @ @ @@@ @ @ Character number 430 @ @ @ @ @ @ @ @ @@ @ @ @ @ @@ Character number 431 @@@@ @ @ @ @ @ @ @@@@ @ @ @ @ @ @ Character number 432 @ @ @ @ @ @@@@@ @ @@@@@ @ Character number 433 @ @ @ @ @ @ @ @ @ @@@@@ @ @ Character number 434 @ @ @@@ @ @ @ @ @ @ @ @ @@@ Character number 435 @ @ @ @ @ @ @ @ @ @ @@@ Character number 436 @ @@@ @ @ @ @ @ @ @ @ @@@ @ Character number 437 @@ @ @ @ Character number 438 @ @ @@@ @ @@@@ @ @ @@@@ Character number 439 @ @ @@@ @ @ @ @ @ @ @@@ Character number 440 @ @ @ @ @ @ @ @ @ @@ @@ @ Character number 441 @@ @ @ @@@ @ @ @ @ @@@ @ Character number 442 @@@@@ @ @ @@ @@ @ @ @ @ @ @ Character number 443 @ @ @@@ @ @ @@@@@ @ @@@ Character number 444 @ @ @ @ @ @ @ @ @ @@ @@ @ Character number 445 @ @ @@@ @ @ @@@@@ @ @@@ Character number 446 @ @ Character number 447 @@ @ @ @ @@@@ @ @ @ @ Character number 448 @ @ @ @@@ @ @@@@ @ @ @@@@ Character number 449 @ @ @ @@@ @ @ @@@@@ @ @@@ Character number 450 @ @ @ @@ @ @ @@@ Character number 451 @ @ @ @@@ @ @ @ @ @ @ @@@ Character number 452 @ @ @ @ @ @ @ @ @@ @@ @ Character number 453 @ @ @ Character number 454 @ @ @@@ @ @ @@@@@ @ @@@ Character number 455 @ @ @@ @ @ @ @@@ Character number 456 @ @ @@@ @ @@@@ @ @ @@@@ Character number 457 @ @ @@ @ @ @@@ Character number 458 @ @ @@@ @ @ @ @ @@@ Character number 459 @ @ @ @ @ @ @ @@ @@ @ Character number 460 @ @ @ @ @ @ @@@@ @ @@@ Character number 461 @@ @ @ @ @ @@ @@ @ @ @ @ @ Character number 462 @@ @ @ @ @@@ @ @@@@ @ @ @@@@ Character number 463 @@ @ @ @ @@@ @ @ @ @ @ @ @@@ Character number 464 @ @ @ @ @ @ @ @ @@@@@ @ @ Character number 465 @ @ @ @@@@@ @ @@@@ @ @@@@@ Character number 466 @ @ @ @@@ @ @ @ @@@ Character number 467 @ @ @ @@@ @ @ @ @ @ @ @@@ Character number 468 @ @ @ @ @ @ @ @ @ @@@ Character number 469 @ @ @@@ @ @ @ @@@ Character number 470 @ @ @@@@@ @ @@@@ @ @@@@@ Character number 471 @ @ @@@@@ @ @@@@ @ @@@@@ Character number 472 @ @ @ @ @ @ @ @@@@@ @ @ Character number 473 @ @ @@@ @ @ @ @@@ Character number 474 @ @ @@@ @ @ @ @ @ @ @@@ Character number 475 @ @ @ @ @ @ @ @ @ @ @@@ Character number 476 @ @ @ @ @ @ @ @ @ @ Character number 477 @ @ @ @ @ @ @ @ @ @ @@@ Character number 478 @ @ @@@@@ @ @@@@ @ @@@@@ Character number 479 @ @ @ @ @ @ @ @@@@@ @ @ Character number 480 Character number 481 @@@@ @@@@ @@@@ @@@@ Character number 482 @@@ @@@ @@@ @@@ Character number 483 @@@@ @@@@ @@@@ @@@@ Character number 484 @@@ @@@ @@@ @@@ Character number 485 @@@@ @@@@ @@@@ @@@@ @@@ @@@ @@@ @@@ Character number 486 @@@ @@@ @@@ @@@ @@@@ @@@@ @@@@ @@@@ Character number 487 @@@@@@@ @@@@@@@ @@@@@@@ @@@@@@@ Character number 488 @@@@@@@ @@@@@@@ @@@@@@@ @@@@@@@ Character number 489 @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ @@@@ Character number 490 @@@ @@@ @@@ @@@ @@@ @@@ @@@ @@@ Character number 491 @@@@@@@ @@@@@@@ @@@@@@@ @@@@@@@ @@@@ @@@@ @@@@ @@@@ Character number 492 @@@@@@@ @@@@@@@ @@@@@@@ @@@@@@@ @@@ @@@ @@@ @@@ Character number 493 @@@@ @@@@ @@@@ @@@@ @@@@@@@ @@@@@@@ @@@@@@@ @@@@@@@ Character number 494 @@@ @@@ @@@ @@@ @@@@@@@ @@@@@@@ @@@@@@@ @@@@@@@ Character number 495 @@@@@@@ @@@@@@@ @@@@@@@ @@@@@@@ @@@@@@@ @@@@@@@ @@@@@@@ @@@@@@@ Character number 496 @@@@ @ @ @ @ Character number 497 @@@@@@@ Character number 498 @@@@ @ @ @ @ Character number 499 @@@@@@@ @ @ @ @ Character number 500 @ @ @ @@@@ @ @ @ @ Character number 501 @ @ @ @ @ @ @ @ Character number 502 @ @ @ @@@@ Character number 503 @ @ @ @@@@ Character number 504 @ @ @ @@@@@@@ Character number 505 @ @ @ @@@@ @ @ @ @ Character number 506 @ @ @ @@@@@@@ @ @ @ @ Character number 507 @@@@@@@ @@@@@@ @@@@@ @@@@ @@@ @@ @ Character number 508 @ @@ @@@ @@@@ @@@@@ @@@@@@ @@@@@@@ Character number 509 @@@@@@@ @@@@@@ @@@@@ @@@@ @@@ @@ @ Character number 510 @ @@ @@@ @@@@ @@@@@ @@@@@@ @@@@@@@ Character number 511 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ```

Although more detailed, the characters chosen are the same as the Model 100 (and K-85) character set. For example, character number 136 is i, not π.

Disk_Video_Interface_roms.zip dvirom2txt.c.gz


Update: The reason I thought it was called "VT100" is because that's the name of the Wiki page where I learned of the 80-column font for the Model 100: https://bitchin100.com/wiki/index.php?title=VT100 Apparently, somebody had taken a VT100-compatible doohicky and merged it with the Disk Video Interface for the Model 100. Fortunately the new revision is called "MVT100", so there will be less confusion.

hackerb9 commented 2 years ago

There is one more font I ran across while finding these. I do not know if it is relevant to you as it appears to be from the FX-80 dot matrix printer. It was included in the Virtual T source code under the name "fx80.fcr". Again, I wrote a simple program to extract it. All 256 characters are defined and it has a very different character mapping than any of the Model T computers. Additionally, while the font appears to be 9 bits wide, it never draws two dots horizontally next to each other.

fcr2txt.c ```C /* Simple hack to read .fcr files */ #include #include int main(int argc, char *argv[]) { FILE *fp; if (argc>1) { fp = fopen(argv[1], "r"); if (fp == NULL) { perror(argv[1]); exit(1); } } else { fp = stdin; } int c, count=0, charnum=0; char m[16][16]; while ((c=fgetc(fp)) != EOF) { for (int i=7; i>=0; i--) { m[7-i][count] = (c & 1<

The data starts at byte 0, which ASCII 0. Here is what the font looks like:

Output from fcr2txt ```bash $ ./fcr2txt fx80.fcr Character number 0 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 1 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 2 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 3 @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 4 @ @ @ @ @ @ @ @ @ Character number 5 @ @ @ @ @ @ Character number 6 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 7 @ @ @ @ @ Character number 8 @ @ @ @ @ @ @ @ @ Character number 9 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 10 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 11 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 12 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 13 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 14 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 15 @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 16 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 17 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 18 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 19 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 20 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 21 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 22 @ @ Character number 23 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 24 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 25 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 26 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 27 @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 28 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 29 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 30 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 31 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 32 Character number 33 @ @ @ @ @ @ Character number 34 @ @ @ @ @ @ Character number 35 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 36 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 37 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 38 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 39 @ @ Character number 40 @ @ @ @ @ @ @ Character number 41 @ @ @ @ @ @ @ Character number 42 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 43 @ @ @ @ @ @ @ @ @ Character number 44 @ @ @ @ @ @ Character number 45 @ @ @ @ @ Character number 46 @ @ @ @ Character number 47 @ @ @ @ @ @ @ Character number 48 @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 49 @ @ @ @ @ @ @ @ @ @ Character number 50 @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 51 @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 52 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 53 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 54 @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 55 @ @ @ @ @ @ @ @ @ @ @ Character number 56 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 57 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 58 @ @ @ @ @ @ @ @ Character number 59 @ @ @ @ @ @ @ @ @ @ Character number 60 @ @ @ @ @ @ @ Character number 61 @ @ @ @ @ @ @ @ @ @ Character number 62 @ @ @ @ @ @ @ Character number 63 @ @ @ @ @ @ @ @ @ Character number 64 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 65 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 66 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 67 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 68 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 69 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 70 @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 71 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 72 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 73 @ @ @ @ @ @ @ @ @ @ @ Character number 74 @ @ @ @ @ @ @ @ @ @ @ @ Character number 75 @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 76 @ @ @ @ @ @ @ @ @ @ @ Character number 77 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 78 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 79 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 80 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 81 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 82 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 83 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 84 @ @ @ @ @ @ @ @ @ @ @ Character number 85 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 86 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 87 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 88 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 89 @ @ @ @ @ @ @ @ @ @ @ Character number 90 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 91 @ @ @ @ @ @ @ @ @ @ @ Character number 92 @ @ @ @ @ @ @ Character number 93 @ @ @ @ @ @ @ @ @ @ @ Character number 94 @ @ @ @ @ Character number 95 @ @ @ @ @ Character number 96 @ @ Character number 97 @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 98 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 99 @ @ @ @ @ @ @ @ @ @ @ Character number 100 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 101 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 102 @ @ @ @ @ @ @ @ @ @ @ Character number 103 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 104 @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 105 @ @ @ @ @ @ @ @ @ Character number 106 @ @ @ @ @ @ @ @ @ @ Character number 107 @ @ @ @ @ @ @ @ @ @ @ @ Character number 108 @ @ @ @ @ @ @ @ @ @ Character number 109 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 110 @ @ @ @ @ @ @ @ @ @ @ @ Character number 111 @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 112 @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 113 @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 114 @ @ @ @ @ @ @ @ @ Character number 115 @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 116 @ @ @ @ @ @ @ @ @ @ @ @ Character number 117 @ @ @ @ @ @ @ @ @ @ @ @ Character number 118 @ @ @ @ @ @ @ @ @ Character number 119 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 120 @ @ @ @ @ @ @ @ @ Character number 121 @ @ @ @ @ @ @ @ @ @ @ Character number 122 @ @ @ @ @ @ @ @ @ @ @ Character number 123 @ @ @ @ @ @ @ @ @ Character number 124 @ @ @ @ @ @ Character number 125 @ @ @ @ @ @ @ @ @ Character number 126 @ @ @ @ @ @ @ Character number 127 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 128 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 129 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 130 @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 131 @ @ @ @ @ @ @ @ @ @ @ @ Character number 132 @ @ @ @ @ @ @ @ @ Character number 133 @ @ @ @ @ @ Character number 134 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 135 @ @ @ @ @ @ Character number 136 @ @ @ @ @ @ @ @ @ @ Character number 137 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 138 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 139 @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 140 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 141 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 142 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 143 @ @ @ @ @ @ @ @ @ @ @ @ Character number 144 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 145 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 146 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 147 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 148 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 149 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 150 @ @ Character number 151 @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 152 @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 153 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 154 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 155 @ @ @ @ @ @ @ @ @ @ @ @ Character number 156 @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 157 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 158 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 159 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 160 Character number 161 @ @ @ @ @ @ Character number 162 @ @ @ @ @ @ Character number 163 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 164 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 165 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 166 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 167 @ @ Character number 168 @ @ @ @ @ @ @ Character number 169 @ @ @ @ @ @ @ Character number 170 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 171 @ @ @ @ @ @ @ @ @ Character number 172 @ @ @ @ @ @ Character number 173 @ @ @ @ @ Character number 174 @ @ @ @ Character number 175 @ @ @ @ @ @ @ Character number 176 @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 177 @ @ @ @ @ @ @ @ @ @ Character number 178 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 179 @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 180 @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 181 @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 182 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 183 @ @ @ @ @ @ @ @ @ @ @ Character number 184 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 185 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 186 @ @ @ @ @ @ @ @ Character number 187 @ @ @ @ @ @ @ @ @ @ Character number 188 @ @ @ @ @ @ @ Character number 189 @ @ @ @ @ @ @ @ @ @ Character number 190 @ @ @ @ @ @ @ Character number 191 @ @ @ @ @ @ @ @ @ Character number 192 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 193 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 194 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 195 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 196 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 197 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 198 @ @ @ @ @ @ @ @ @ @ @ @ Character number 199 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 200 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 201 @ @ @ @ @ @ @ @ @ @ @ Character number 202 @ @ @ @ @ @ @ @ @ @ @ @ Character number 203 @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 204 @ @ @ @ @ @ @ @ @ @ Character number 205 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 206 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 207 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 208 @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 209 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 210 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 211 @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 212 @ @ @ @ @ @ @ @ @ @ @ Character number 213 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 214 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 215 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 216 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 217 @ @ @ @ @ @ @ @ @ @ Character number 218 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 219 @ @ @ @ @ @ @ @ @ @ @ Character number 220 @ @ @ @ @ @ @ Character number 221 @ @ @ @ @ @ @ @ @ @ @ Character number 222 @ @ @ @ @ Character number 223 @ @ @ @ @ Character number 224 @ @ Character number 225 @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 226 @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 227 @ @ @ @ @ @ @ @ @ Character number 228 @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 229 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 230 @ @ @ @ @ @ @ @ @ @ @ Character number 231 @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 232 @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 233 @ @ @ @ @ @ @ @ @ Character number 234 @ @ @ @ @ @ @ @ @ Character number 235 @ @ @ @ @ @ @ @ @ @ @ @ Character number 236 @ @ @ @ @ @ @ @ @ @ Character number 237 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 238 @ @ @ @ @ @ @ @ @ @ @ Character number 239 @ @ @ @ @ @ @ @ @ @ Character number 240 @ @ @ @ @ @ @ @ @ @ @ @ Character number 241 @ @ @ @ @ @ @ @ @ @ @ @ Character number 242 @ @ @ @ @ @ @ @ Character number 243 @ @ @ @ @ @ @ @ @ @ Character number 244 @ @ @ @ @ @ @ @ @ @ @ Character number 245 @ @ @ @ @ @ @ @ @ @ @ @ Character number 246 @ @ @ @ @ @ @ @ @ Character number 247 @ @ @ @ @ @ @ @ @ @ @ @ @ @ Character number 248 @ @ @ @ @ @ @ @ @ Character number 249 @ @ @ @ @ @ @ @ @ Character number 250 @ @ @ @ @ @ @ @ @ @ @ Character number 251 @ @ @ @ @ @ @ @ @ @ Character number 252 @ @ @ @ @ @ Character number 253 @ @ @ @ @ @ @ @ @ @ Character number 254 @ @ @ @ @ @ @ Character number 255 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ```

Characters 128 to 255 appear to be italic versions of 0 to 127.

robhagemans commented 2 years ago

Hi, thanks again. Font terminology is a bit fluid, I'm trying to be consistent but don't always manage - and also I'm not a typographer so best to follow more authoritative sources :) In any case, by 'strike' I here, loosely, mean a bitmap that contains a set of glyphs for one size and one font. The more restricted use in monobit is for a bitmap that has the glyphs side-by-side, the way it is often done for proportional fonts. But the distinction is not sharp and I'm not sure if that is standard terminology.

These are my current monobitt commands - using latest master branch -

convert.py ROMs/M10rom.bin --from raw --load-offset 30219 --load-numchars 98 --load-first-codepoint 158 --load-cell 8,6 | modify.py rotate --turns 3 > olivetti-m10-2.yaff

convert.py ROMs/M10rom.bin --from raw --load-offset 29739 --load-numchars 96 --load-first-codepoint 32 --load-cell 8,5| modify.py rotate --turns 3 > olivetti-m10-1.yaff

convert.py ROMs/KC85rom.bin --from raw --load-offset 29631 --load-numchars 96 --load-first-codepoint 32 --load-cell 8,5 | modify.py rotate --turns 3 > K85-1.yaff

convert.py ROMs/KC85rom.bin --from raw --load-offset 30111 --load-numchars 128 --load-first-codepoint 128 --load-cell 8,6  | modify.py rotate --turns 3 > K85-2.yaff

convert.py ROMs.zip/T200rom.bin --from raw --load-offset 36963 --load-numchars 224 --load-first-codepoint 32 | modify.py mirror | modify.py crop --right 2 | modify.py set --name Tandy-200 > T200.yaff

I still need to expand the 5x8 fonts with an empty column to the right, as the display showed them in 6x8 cells (per the emulator screenshot you shared in the top post). And ideally map the glyphs to unicode.

For the FX-80 printer, that's a beautiful font, though I need to think about if/how I want to include it. The printer could make half-pixel offsets which in the file you found seems to be encoded by taking two bits for a single pixel width. This site has a very nice vectorised version of the FX-80 font: http://const-iterator.de/fxmatrix/ alongside sourceforge sfd font files. (It may be that Virtual T's developers took it from there, not sure). I think sfd can encode bitmap strikes, as can ttf and the likes, but monobit doesn't - yet - support these.

robhagemans commented 2 years ago

The model 100 character map looks like a variant of that of the TRS-80 Model 4a: https://www.kreativekorp.com/charset/encoding/TRS80Model4aAlternate

hackerb9 commented 2 years ago

I don't have a Model 100 to Unicode mapping handy, but I do have such a thing for the Tandy 200 (same as Tandy 102). It was originally created by @dawidi for a "European Model 100" (which apparently has the same font as a Tandy 200). I transformed it into the charmap(5) format for use with automatic transliteration (LOCALE, iconv, gconv).

TANDY-200.charmap ```charmap tandy-200 # Tandy Radio-Shack TRS-80 Model 200 "extended ASCII" charmap. # # version: 1.0 # source: Created by Hackerb9 using analysis by Diwadi of the # European TRS-80 Model 100 character set, which appears # to be identical to the US Model 102 and Model 200. # , 2020 # alias TRS80MODEL200 # alias MODEL200 # alias M102 # alias M200 # alias T200 # alias TANDY200 CHARMAP \x00 NULL (NUL) \x01 START OF HEADING (SOH) \x02 START OF TEXT (STX) \x03 END OF TEXT (ETX) \x04 END OF TRANSMISSION (EOT) \x05 ENQUIRY (ENQ) \x06 ACKNOWLEDGE (ACK) \x07 BELL (BEL) \x08 BACKSPACE (BS) \x09 CHARACTER TABULATION (HT) \x0a LINE FEED (LF) \x0b LINE TABULATION (VT) \x0c FORM FEED (FF) \x0d CARRIAGE RETURN (CR) \x0e SHIFT OUT (SO) \x0f SHIFT IN (SI) \x10 DATALINK ESCAPE (DLE) \x11 DEVICE CONTROL ONE (DC1) \x12 DEVICE CONTROL TWO (DC2) \x13 DEVICE CONTROL THREE (DC3) \x14 DEVICE CONTROL FOUR (DC4) \x15 NEGATIVE ACKNOWLEDGE (NAK) \x16 SYNCHRONOUS IDLE (SYN) \x17 END OF TRANSMISSION BLOCK (ETB) \x18 CANCEL (CAN) \x19 END OF MEDIUM (EM) \x1a SUBSTITUTE (SUB) \x1b ESCAPE (ESC) \x1c FILE SEPARATOR (IS4) \x1d GROUP SEPARATOR (IS3) \x1e RECORD SEPARATOR (IS2) \x1f UNIT SEPARATOR (IS1) \x20 SPACE \x21 EXCLAMATION MARK \x22 QUOTATION MARK \x23 NUMBER SIGN \x24 DOLLAR SIGN \x25 PERCENT SIGN \x26 AMPERSAND \x27 APOSTROPHE \x28 LEFT PARENTHESIS \x29 RIGHT PARENTHESIS \x2a ASTERISK \x2b PLUS SIGN \x2c COMMA \x2d HYPHEN-MINUS \x2e FULL STOP \x2f SOLIDUS \x30 DIGIT ZERO \x31 DIGIT ONE \x32 DIGIT TWO \x33 DIGIT THREE \x34 DIGIT FOUR \x35 DIGIT FIVE \x36 DIGIT SIX \x37 DIGIT SEVEN \x38 DIGIT EIGHT \x39 DIGIT NINE \x3a COLON \x3b SEMICOLON \x3c LESS-THAN SIGN \x3d EQUALS SIGN \x3e GREATER-THAN SIGN \x3f QUESTION MARK \x40 COMMERCIAL AT \x41 LATIN CAPITAL LETTER A \x42 LATIN CAPITAL LETTER B \x43 LATIN CAPITAL LETTER C \x44 LATIN CAPITAL LETTER D \x45 LATIN CAPITAL LETTER E \x46 LATIN CAPITAL LETTER F \x47 LATIN CAPITAL LETTER G \x48 LATIN CAPITAL LETTER H \x49 LATIN CAPITAL LETTER I \x4a LATIN CAPITAL LETTER J \x4b LATIN CAPITAL LETTER K \x4c LATIN CAPITAL LETTER L \x4d LATIN CAPITAL LETTER M \x4e LATIN CAPITAL LETTER N \x4f LATIN CAPITAL LETTER O \x50 LATIN CAPITAL LETTER P \x51 LATIN CAPITAL LETTER Q \x52 LATIN CAPITAL LETTER R \x53 LATIN CAPITAL LETTER S \x54 LATIN CAPITAL LETTER T \x55 LATIN CAPITAL LETTER U \x56 LATIN CAPITAL LETTER V \x57 LATIN CAPITAL LETTER W \x58 LATIN CAPITAL LETTER X \x59 LATIN CAPITAL LETTER Y \x5a LATIN CAPITAL LETTER Z \x5b LEFT SQUARE BRACKET \x5c REVERSE SOLIDUS \x5d RIGHT SQUARE BRACKET \x5e CIRCUMFLEX ACCENT \x5f LOW LINE \x60 GRAVE ACCENT \x61 LATIN SMALL LETTER A \x62 LATIN SMALL LETTER B \x63 LATIN SMALL LETTER C \x64 LATIN SMALL LETTER D \x65 LATIN SMALL LETTER E \x66 LATIN SMALL LETTER F \x67 LATIN SMALL LETTER G \x68 LATIN SMALL LETTER H \x69 LATIN SMALL LETTER I \x6a LATIN SMALL LETTER J \x6b LATIN SMALL LETTER K \x6c LATIN SMALL LETTER L \x6d LATIN SMALL LETTER M \x6e LATIN SMALL LETTER N \x6f LATIN SMALL LETTER O \x70 LATIN SMALL LETTER P \x71 LATIN SMALL LETTER Q \x72 LATIN SMALL LETTER R \x73 LATIN SMALL LETTER S \x74 LATIN SMALL LETTER T \x75 LATIN SMALL LETTER U \x76 LATIN SMALL LETTER V \x77 LATIN SMALL LETTER W \x78 LATIN SMALL LETTER X \x79 LATIN SMALL LETTER Y \x7a LATIN SMALL LETTER Z \x7b LEFT CURLY BRACKET \x7c VERTICAL LINE \x7d RIGHT CURLY BRACKET \x7e TILDE \x7f DELETE (DEL) \x80 PHONE \x81 HOUSE \x82 PHONE DISCONNECT \x83 RAMP WITH RECTANGLE, MAYBE "MAIL", USING NOTES FOR NOW \x84 RACECAR, REPLACED BY DOUBLE DAGGER \x85 AIRPLANE \x86 HOUSE WITH CROSS, GIFT PACKAGE, TARDIS? \x87 REVERSE VIDEO T \x88 PI \x89 SQUARE ROOT \x8A NOT EQUAL \x8B SIGMA\SUM \x8C ALMOST EQUAL \x8D PLUSMINUS \x8E INTEGRAL \x8F TRIANGLE POINTING LEFT \x90 ROUNDED SPACE INVADER WITH FEET OUTWARDS, APPARENTLY A BELL SYMBOL \x91 ROUNDED SPACE INVADER WITH FEET INWARDS, APPROXIMATED BY INTERSECTION SYMBOL \x92 ARROW UP AND DOWN \x93 STICK FIGURE, REPLACED WITH WHITE SMILEY FACE \x94 STICK FIGURE GESTURING "STOP", REPLACED WITH BLACK SMILEY FACE \x95 MALE \x96 FEMALE \x97 C/O \x98 ARROW UP \x99 ARROW DOWN \x9A ARROW RIGHT \x9B ARROW LEFT \x9C CLUB SUIT \x9D DIAMOND SUIT \x9E HEART SUIT \x9F SPADE SUIT \xA0 CLOSING SINGLE QUOTATION \xA1 A ACCENT GRAVE \xA2 C WITH CEDILLA \xA3 POUND SIGN \xA4 OPENING SINGLE QUOTATION \xA5 MICRO \xA6 DEGREE \xA7 TRIANGLE POINTING DOWN \xA8 CROSS OR DAGGER \xA9 SECTION (LEGAL) \xAA REGISTERED \xAB COPYRIGHT \xAC ONE QUARTER \xAD THREE QUARTERS \xAE ONE HALF \xAF PILCROW \xB0 YEN \xB1 A UMLAUT \xB2 O UMLAUT \xB3 U UMLAUT \xB4 CENT \xB5 REVERSED TILDE \xB6 A UMLAUT \xB7 O UMLAUT \xB8 U UMLAUT \xB9 SHARP S \xBA TRADEMARK \xBB E ACCENT AIGU \xBC U ACCENT GRAVE \xBD E ACCENT GRAVE \xBE DIAERESIS \xBF MATHEMATICAL CURVED F \xC0 A CIRCUMFLEX \xC1 E CIRCUMFLEX \xC2 I CIRCUMFLEX \xC3 O CIRCUMFLEX \xC4 U CIRCUMFLEX \xC5 SMALL CARET \xC6 E DIAERESIS \xC7 I DIAERESIS \xC8 A ACCENT AIGU \xC9 I ACCENT AIGU \xCA O ACCENT AIGU \xCB U ACCENT AIGU \xCC FLIPPED EXCLAMATION \xCD N TILDE \xCE A TILDE \xCF O TILDE \xD0 AE \xD1 AE \xD2 A CIRC \xD3 A CIRC \xD4 O DIAG \xD5 O DIAG \xD6 N TILDE \xD7 E ACCENT AIGU \xD8 A ACCENT AIGU \xD9 I ACCENT AIGU \xDA O ACCENT AIGU \xDB U ACCENT AIGU \xDC FLIPPED QUESTION \xDD U ACCENT GRAVE \xDE E ACCENT GRAVE \xDF A ACCENT GRAVE \xE0 BLOCK EMPTY, SUBSTITUTED BY NBSP \xE1 BLOCK 10-00 \xE2 BLOCK 01-00 \xE3 BLOCK 00-10 \xE4 BLOCK 00-01 \xE5 BLOCK 10-01 \xE6 BLOCK 01-10 \xE7 BLOCK 11-00 \xE8 BLOCK 00-11 \xE9 BLOCK 10-10 \xEA BLOCK 01-01 \xEB BLOCK 11-10 \xEC BLOCK 11-01 \xED BLOCK 10-11 \xEE BLOCK 01-11 \xEF BLOCK 11-11 FULL \xF0 FRAME TOP LEFT \xF1 FRAME HORIZONTAL \xF2 FRAME TOP RIGHT \xF3 FRAME TOP MIDDLE \xF4 FRAME LEFT MIDDLE \xF5 FRAME VERTICAL \xF6 FRAME BOTTOM LEFT \xF7 FRAME BOTTOM RIGHT \xF8 FRAME BOTTOM MIDDLE \xF9 FRAME RIGHT MIDDLE \xFA FRAME CENTER CROSSING \xFB TRIANGLE NW \xFC TRIANGLE SE \xFD TRIANGLE NE \xFE TRIANGLE SW \xFF DOTTED SHADE END CHARMAP ```

As you can see, several of the characters do not yet have good Unicode mappings and some of the hieroglyphs have unknown meaning. Although, now that we have the higher resolution Disk/Video Interface font, perhaps they can finally be deciphered.

Here are the DVI versions of the questionable characters:

Character number 128 (telephone with handset hungup)
  @@@@@ 
 @@   @@
 @@   @@
   @@@  
  @   @ 
 @@   @@
 @@@@@@@

Character number 129 (inverted P pointing upwards?)
   @@   
  @@@@  
 @@@@@@ 
 @   @@ 
 @ @@ @ 
 @   @@ 
 @ @@@@ 
 @@@@@@ 
Character number 130 (telephone handset with X?)
 @@@    
 @@@    
 @  @ @ 
 @   @  
 @  @ @ 
 @@@    
 @@@    

Character number 131 (A triscuit rolling down a hill?)
  @@@@@@
  @    @
 @     @
 @@  @@@
 @@@    
 @@@@   
 @@@@@  
 @@@@@@ 
Character number 132 (Racecar, overhead view for 2-D game)
   @@   
@@ @@ @@
@@@@@@@@
@@ @@ @@
   @@   
@@ @@ @@
@@@@@@@@
@@ @@ @@
Character number 133 (Airplane, overhead view for 2-D game)
   @@   
   @@   
@@@@@@@@
@@@@@@@@
   @@   
   @@   
  @@@@  

Character number 134 (Upward pointing rocket for 2-D games?)
    @   
   @@@  
  @@@@@ 
 @ @ @ @
 @@@@@@@
 @ @ @ @
 @@@@@@@

Character number 135 (Mystery!)
 @@@@@@@
  @@@@@@
 @@@@@@@
 @     @
 @@@ @@@
 @@@ @@@
 @@@@@@@

Characters number 136 to 142 skipped as they are known

Character number 143 (Filled left pointing triangle, probably U+2BC7 ⯇)
     @  
    @@  
   @@@  
  @@@@  
   @@@  
    @@  
     @  

Character number 144 (Space invader with feet outward?)
  @@@@  
 @    @ 
@      @
@      @
@@@@@@@@
  @  @  
  @  @  
@@@  @@@
Character number 145 (Space invader with feet inward?)
  @@@@  
 @    @ 
@      @
@      @
@@@@@@@@
 @    @ 
 @    @ 
 @@  @@ 

Character number 146 skipped (Up down arrow U+2195 ↕)

Character number 147 Stick figure (U+1FBC5 🯅)
    @   
   @ @  
   @@@  
    @   
   @@@  
  @ @ @ 
   @ @  
  @   @ 

Character number 148 Stick figure holding something in one hand? Or one arm waving hello? 
(Most similar to STICK FIGURE LEANING RIGHT U+1FBC8 🯈 or STICK FIGURE WITH ARMS RAISED U+1FBC6 🯆)
    @   
   @ @  
  @ @   
  @@@@@ 
    @   
   @ @  
  @   @ 

EDIT: I just realized that character 136 in the Model 100 character set is simply the inverted exclamation mark. nothing as esoteric as mathematical i as I had been guessing. For the Tandy 102 and Tandy 200, the inverted exclamation is at codepoint 204 and pi is at 136.

robhagemans commented 2 years ago

I've added the first few in a new directory kyotronic/.

A few more notes:

hackerb9 commented 2 years ago
  • I also found a copy of the Japanese 8201 with a full set of katakana

That's very cool! Would you be willing to add the ROMs you found to this thread for future reference? Thanks!


EDIT: By the way, I notice that the Tandy 200 font is named "trs80-model102". That is a reasonable name for it as the Tandy 102 was much better known than the Tandy 200, However, the Tandy 200 was released over a year before the Tandy 102, if that matters for naming.

Also, it is not yet clear for someone searching for the Tandy 200 font that the Tandy 102 is identical. How do you handle such situations? Does your yaff format support some sort of "identical-to" tag? Could there be a symlink in github pointing from tandy200 to trs80-model102?

Feel free to disregard the following trivia: although people often refer to the "Model 100/102", technically there was no such thing as the "Model 102". Radio-Shack changed their computer brand from "TRS-80 Model x" to "Tandy x", so the successor to the Model 100 was the Tandy 200 (and later the Tandy 102).

robhagemans commented 2 years ago

Thanks for the information! I should probably name it tandy-200.yaff for consistency then. It seems Radio Shack really did go for the prize for most confusing branding scheme, what with at least four entirely different lines of computers all branded TRS-80, and lower model numbers following on higher ones...

In terms of marking the equivalent models, I was in the process of adding a README to mention the other models covered. It would be possible to add a key to the yaff file, really you can add whatever keys you want, but only some have a defined meaning. So it would be possible to add, say, a keywords tag or something, but you'd still need to build a search interface to find the file, not to mention update all the other files. Nice to have, but not something I'm likely implementing soon.

The PC8201 ROM is in the MAME 0.247 set, described here: https://mame.spludlow.co.uk/Machine.aspx?name=pc8201 . It can be downloaded individually without getting the whole multi-gigabyte archive: https://archive.org/download/mame-merged/mame-merged/pc8201.zip/3256a41-3b1%20n%2082%20basic.rom0

hackerb9 commented 2 years ago

For the FX-80 printer, that's a beautiful font, though I need to think about if/how I want to include it. The printer could make half-pixel offsets which in the file you found seems to be encoded by taking two bits for a single pixel width.

Thanks for getting the Kyotronic font wrapped up! Have you had time to consider if the lovely FX-80 font is within the scope of your project?

robhagemans commented 2 years ago

It's in scope, but the font from virtual-t is not authentic: I have an FX-80 manual which has matrices for every character in the roman and italic sets (those days documentation was real documentation!) and while the font from the .fcr looks similar, there are clear differences. So this needs work...

hackerb9 commented 2 years ago

It's in scope, but the font from virtual-t is not authentic: I have an FX-80 manual which has matrices for every character in the roman and italic sets (those days documentation was real documentation!) and while the font from the .fcr looks similar, there are clear differences. So this needs work...

Interesting. Thanks for looking into it!

robhagemans commented 2 years ago

Two fonts added under epson/ . There might be more variants out there but I'll leave the handiwork to others for now.