home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 4 / DATAFILE_PDCD4.iso / utilities / utilsm / nuroms / CollierROM / ReadMeee < prev   
Encoding:
Text File  |  1994-02-28  |  21.2 KB  |  443 lines

  1.  
  2. Here is what I have done to the original ZX-Spectrum ROM.  Features
  3. include:
  4.  
  5.  - Bug fixes as mentioned in "The complete Spectrum Rom Disassembly" by
  6.    Dr Ian Logan and Dr Frank O'Hara (I think I have all of them).
  7.  
  8.  - An "extra cursor" which acts like the BBC Micro's and provides an
  9.    extra editing facility in program-entry and INPUT modes.  Press
  10.    and hold both shift keys, then press the keys 5, 6, 7 and 8 (or
  11.    the arrow keys) to move the cursor around the screen, or 0 to copy
  12.    the character under the cursor.  The machine beeps if the cursor is
  13.    not on a recognisable character.  Note that copying a long line in
  14.    this way is faster than pressing EDIT and cursoring to the end of it.
  15.    It's OK for the screen to scroll while you copy, but make sure that
  16.    the line you are copying doesn't go off the top of the screen!
  17.  
  18.    Note: The extra cursor requires 8 system variables, which I have
  19.    placed at FFF8 (which is usually occupied by the user-defined graphic
  20.    "U").  This means that graphic "U" is usually corrupt and should not
  21.    be used (however, it should be OK to use within a program as long
  22.    as it never uses INPUT or causes an error report).  Poking other
  23.    values there will have no lasting effect, except perhaps to prevent
  24.    the extra cursor from working correctly.  To reset the extra cursor,
  25.    just poke zero into each location from FFF8 to FFFF.
  26.  
  27.  - A tokenizer (which is needed by the above to recombine letters from
  28.    the screen into keywords).  When you press enter after typing in a
  29.    line, all keywords which are written in capital letters will be
  30.    assembled into tokens.  Keywords do not need spaces before or after,
  31.    except IN and AT, which need a space after (but not before).  If you
  32.    can't remember which token is on which key, then type a quote as the
  33.    very first character of each line, which will be turned into a space
  34.    (it doesn't do anything, but it makes the computer think everything
  35.    is in quotes so it uses an L-cursor instead of a K-cursor), then
  36.    spell out all the words in capital letters.
  37.  
  38.  - A non-maskable interrupt routine.  When it is activated (by a
  39.    debounced NMI button) you have a choice of the following:
  40.     * press N, which causes a NEW with RAMTOP set at 24199.  This gives
  41.       you the opportunity to inspect any memory above that address, even
  42.       though BASIC might have been corrupted.[$]
  43.     * press space, which breaks in with the error message "NMI break",
  44.       unless the routine decides that BASIC is corrupt, in which case
  45.       it will behave as if you had pressed N.
  46.     * press V followed by four hex digits.  The routine whose address
  47.       that is will be called.  When the routine executes RET, the
  48.       processor will return immediately to the interrupted program
  49.       (which means that the program has to save registers itself if
  50.       it intends to return).
  51.  
  52.    [$]This has, of course, been extremely useful to get into game
  53.    loaders without all the hassle of stepping through 147 different
  54.    decrypt algorithms.  :-)
  55.  
  56.  - A save-all-RAM routine for use by the NMI routine (press V04B5 and
  57.    make sure the tape is recording when you press the last digit).
  58.  
  59.  - New LIST and CONTINUE commands.
  60.    * LIST only lists the line you name rather than the whole program
  61.      starting at that line.  Type "LIST *" instead of LIST for the old
  62.      behaviour.  The full syntax of LIST is
  63.         LIST [x][,[y]]
  64.      where x is the starting line number (default 0) and y is the ending
  65.      line number (default 9999).
  66.    * CONTINUE may be used to continue from NMI breaks[%], provided that
  67.      the machine stack is still intact (no CLEAR and no BASIC errors).
  68.      If there is no NMI break to continue from then it continues from
  69.      the last BASIC error as usual.
  70.  
  71.      [%]Note that it doesn't always work because some memory has
  72.      changed since the NMI break (for instance, the command-line
  73.      now reads CONTINUE).
  74.  
  75.  - new start-up parameters (black screen, faster key-repeat, longer
  76.    key-click).
  77.  
  78.  - An error routine that doesn't crash when interrupts are disabled.
  79.  
  80.  - GOTO and GOSUB keywords without spaces. :-)
  81.  
  82.  - a new character set.
  83.  
  84. Here is a more detailed description of the changes.  In most cases, two
  85. listings are provided; the left-hand one lists the original ROM and the
  86. right-hand one is my changed version.  Page numbers (and labels where
  87. they occur) refer to the book "The Complete Spectrum Rom Disassembly" by
  88. Dr Ian Logan & Dr Frank O'Hara, published by Melbourne House Publishers,
  89. ISBN 0 86161 116 0.
  90. ------------------------------------------------------------------------
  91. 004B  CALL 02BF     CALL 3B5E     Call the new interrupt routine
  92.                                   (for the extra cursor)
  93. ------------------------------------------------------------------------
  94.       The new non-maskable interrupt routine
  95.  
  96. 0066  PUSH AF       PUSH HL       Save some registers.
  97.       PUSH HL       PUSH AF
  98.       LD HL,(5CB0)  PUSH BC
  99.       LD A,H        PUSH DE
  100.       OR L          CALL 3CD9     Get a key-press
  101.       JR NZ,0070    CP +20        Is it a space?
  102.       JP (HL)       JP 04AA       Jump to continue the routine
  103. 0070  POP HL        DEFB +38,+45  (spare bytes)
  104.       POP AF
  105.       RETN
  106. ------------------------------------------------------------------------
  107. 01AE  20 54 CF 47   54 CF 47 4F   A new token table with the
  108. 01B2  4F 20 53 55   53 55 C2 49   spaces removed from GOTO and
  109. 01B6  C2 49 4E 50   4E 50 55 D4   GOSUB (only the last portion
  110. 01BA  55 D4 4C 4F   4C 4F 41 C4   differs).
  111. 01BE  41 C4 4C 49   4C 49 53 D4
  112. 01C2  53 D4 4C 45   4C 45 D4 50
  113. 01C6  D4 50 41 55   41 55 53 C5
  114. 01CA  53 C5 4E 45   4E 45 58 D4
  115. 01CE  58 D4 50 4F   50 4F 4B C5
  116. 01D2  4B C5 50 52   50 52 49 4E
  117. 01D6  49 4E D4 50   D4 50 4C 4F
  118. 01DA  4C 4F D4 52   D4 52 55 CE
  119. 01DE  55 CE 53 41   53 41 56 C5
  120. 01E2  56 C5 52 41   52 41 4E 44
  121. 01E6  4E 44 4F 4D   4F 4D 49 5A
  122. 01EA  49 5A C5 49   C5 49 C6 43
  123. 01EE  C6 43 4C D3   4C D3 44 52
  124. 01F2  44 52 41 D7   41 D7 43 4C
  125. 01F6  43 4C 45 41   45 41 D2 52
  126. 01FA  D2 52 45 54   45 54 55 52
  127. 01FE  55 52 CE 43   CE 43 4F 50
  128. 0202  4F            D9
  129. ------------------------------------------------------------------------
  130.       A continuation of the non-maskable interrupt routine.  It is
  131.       stored where useless ZX81 code was left, called "THE 'PROGRAM
  132.       NAME' SUBROUTINE (ZX81)".
  133.  
  134. 04AA  CD FB 24 3A   JP Z,38A0     Jump forward if the key was a space
  135.       3B 5C 87 FA   CP 'N'
  136.       8A 1C E1 D0   JP Z,3929     Jump if it was 'N'
  137.       E5 CD F1 2B   JP 386E       Jump forward to continue
  138.       62 6B 0D F8
  139.       09 CB FE C9
  140.                04B5 LD IX,+4000   This short routine is a complete RAM
  141.                     LD DE,+C000   save, just in case it's useful to jump
  142.                     LD A,+FF      to on NMI (it continues straight into
  143.                     LD (4000),SP  SA-BYTES).
  144. ------------------------------------------------------------------------
  145.       Fix bug on page 33.
  146.  
  147. 0A32  LD A,+18      LD A,+19      Test against top line
  148. ------------------------------------------------------------------------
  149.       Fix bug on page 34.
  150.  
  151. 0A48  CALL 0B65     CALL 0AD9     In this case, 0AD9 (PO-ABLE) is
  152.                                   equivalent to calling 0B65 (PO-CHAR)
  153.                                   followed by 0ADC (PO-STORE).
  154. ------------------------------------------------------------------------
  155.       Insert a hook for tokenization (which is done if the key code
  156.       is 13 (carriage return).
  157.  
  158. 10E6  CP +0E        JP 3B51
  159.       RET C
  160. ------------------------------------------------------------------------
  161.       Changes to the initialisation.
  162.  
  163. 11CC  LD A,+07      LD A,+00      Make the border black (was white)
  164. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  165. 1212  LD BC,+0040   LD BC,+1414   RASP=20, PIP=20 (was 64, 0).
  166. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  167. 1265  LD A,+38      LD A,+07      Initialise the colours to: FLASH 0,
  168.       LD (5C8D),A   LD (5C8D),A   BRIGHT 0, PAPER 0 and INK 7.
  169.       LD (5C8F),A   CALL 3966     Initialise the extra cursor.
  170. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  171. 1270  LD HL,+0523   LD HL,+0123   REPDEL=35, REPPER=1 (was 35, 5).
  172. ------------------------------------------------------------------------
  173.       Stop the machine from crashing if interrupts are disabled at the
  174.       time when 1303 (MAIN-4, the error reporting routine) is called.
  175.  
  176. 1303  HALT          NOP           Don't crash if interrupts disabled.
  177. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  178. 1320  LD HL,+0001   INC L         HL was zero anyway so this makes it 1
  179.                     EI            Now enable interrupts and do the
  180.                     HALT          HALT from earlier in case it matters.
  181. ------------------------------------------------------------------------
  182.        New initialisation message
  183.  
  184. 1539  7F 20 31 39   20 41 6C 74   |c 19|  | Alt|
  185. 153D  38 32 20 53   65 72 65 64   |82 S|  |ered|
  186. 1541  69 6E 63 6C   20 62 79 20   |incl|  | by |
  187. 1545  61 69 72 20   49 61 6E 20   |air |  |Ian |
  188. 1549  52 65 73 65   43 6F 6C 6C   |Rese|  |Coll|
  189. 154D  61 72 63 68   69 65 72 20   |arch|  |ier |
  190. 1551  20 4C 74 E4   31 39 38 B5   | Ltd|  |1985|
  191. ------------------------------------------------------------------------
  192.       Changes to the syntax tables
  193.  
  194. 1A49  CB            CA            CAT moves back one byte in the table.
  195. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  196. 1AAF  F9 17         3B 3C         The new address of LIST is 3C3B.
  197. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  198. 1AB9  5F 1E         3C 39         The new address of CONTINUE is 393C.
  199. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  200. 1ADD  F5 17         D4 3C         The new address of LLIST is 3CD4.
  201. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  202. 1B10  0A 00 93 17   00 93 17 06   For an unknown reason (probably to do
  203.                                   with the Interface-1) I have altered
  204.                                   the syntax of CAT so that it expects
  205.                                   a numeric expression.  For space
  206.                                   considerations, I also removed the
  207.                                   string expression from after ERASE.
  208. ------------------------------------------------------------------------
  209.       For some reason lost in the mist of time I altered the TEST-ROOM
  210.       routine so that it uses RST 8 to generate an out-of-memory report
  211.       rather than a jump to 0055 (ERROR-3).
  212.  
  213. 1F15  LD L,+03      RST 0008
  214.                     DEFB +03
  215. ------------------------------------------------------------------------
  216.       Fix bug on page 129.
  217.  
  218. 257D  JP 2AB2       RET           Return; do not store the string again.
  219.                     DEFW +2AB2    Spare locations.
  220. ------------------------------------------------------------------------
  221.       Fix bug on page 169.
  222.  
  223.       CALL 2D7F     CALL 2D7F     Note: the last instruction in this
  224.                                   routine (INT-FETCH) is "LD D,A".
  225.       LD B,+10      LD B,+10
  226. 2E14  LD A,D        AND A         Delete the unnecessary instruction
  227.                                   "LD A,D" to make room for the fix.
  228.       AND A         JR NZ,2E1D(*)
  229.       JR NZ,2E1E    OR E
  230.       OR E          JR Z,2E23(#)
  231.       JR Z,2E24     LD D,E
  232.       LD D,E        LD B,+08
  233.       LD B,+08   (*)PUSH DE
  234. 2E1E  PUSH DE       EXX
  235.       EXX           POP DE
  236.       POP DE        EXX
  237.       EXX           JR 2E7B
  238.       JR 2E7B    (#)RST 0028
  239. 2E24  RST 0028      DEFB +02,delete Delete the extra item on the stack.
  240. ------------------------------------------------------------------------
  241.       First half of fix for -65536 bug
  242.  
  243. 3032  LD (HL),A     CALL 3225     The fixed code is placed at 3225
  244.       INC HL        POP  DE       Restore STKEND to DE.
  245.       LD (HL),E     RET           Finished.
  246.       INC HL
  247.       LD (HL),D
  248.       DEC  HL       DEC  HL       }
  249.       DEC  HL       DEC  HL       }
  250.       DEC  HL       DEC  HL       } These locations are spare.
  251.       POP  DE       POP  DE       }
  252.       RET           RET           }
  253. ------------------------------------------------------------------------
  254.       Fix bug on page 185
  255.  
  256. 31FF  JR Z,31E2     JR Z,31DB,DIV-34TH
  257. ------------------------------------------------------------------------
  258.      Second half of the -65536 fix.  This is based on page 230 but is
  259.      subtly different since that code contains an error!
  260.  
  261. The old ROM has:
  262. =================
  263. 3223  20 1A 23 23
  264. 3227  23 3E 80 A6
  265. 322B  2B B6 2B 20
  266. 322F  03 3E 80 AE
  267. 3233  2B 20 36 77
  268. 3237  23 36 FF 2B
  269. 323B  3E 18
  270. =================
  271.  
  272. The new ROM is as follows (I typed it in earlier, which explains the
  273. different format...)
  274.  
  275. 3221 T-GR-ZERO CP   +91               Compare e to 91 hex, 145 decimal.
  276. 3223           JR   323F,T-SMALL      Always omit the following code.
  277.                                       This code has been changed to
  278.                                       incorporate the fix from 3032.
  279.  
  280. 3225           PUSH AF                Save the sign byte in A.
  281. 3226           INC  A                 Make any FF in A into 00.
  282. 3227           OR   E                 Test all 3 bytes now for zero.
  283. 3228           OR   D
  284. 3229           JR   NZ,3233,ADD-STORE Jump if not -65536.
  285. 322B           POP  AF                Clear the stack.
  286. 322C           LD   A,+80             Prepare to enter 80 hex into second byte.
  287. 322E           DEC  HL                Point to the first byte
  288. 322F           LD   (HL),+91          Enter 91 hex into first byte.
  289. 3231           PUSH AF                Put the 80 on the stack.  Note: DE
  290.                                       still holds zero so the third and fourth
  291.                                       bytes will be cleared.
  292. 3232           INC  HL                Restore HL pointer.
  293. 3233 ADD-STORE POP  AF                Restore the sign byte in A.
  294. 3234           LD   (HL),A            Store it on the stack.
  295. 3235           INC  HL                Point to the next location.
  296. 3236           LD   (HL),E            Store the low byte of the result.
  297. 3237           INC  HL                Point to the next location.
  298. 3238           LD   (HL),D            Store the high byte of the result.
  299. 3239           DEC  HL                Move the pointer back to
  300. 323A           DEC  HL                address the first byte of the
  301. 323B           DEC  HL                result.
  302. 323C           RET                    Return to complete the routine.
  303.  
  304. 323D           JR   3272,NIL-BYTES    These locations are spare.
  305. ------------------------------------------------------------------------
  306. Miscellaneous routines are stored in the area 386E-3CFF where the
  307. original ROM has FF-bytes.  They are:
  308.  
  309.  - the rest of the NMI routine
  310.  - the new LIST and CONTINUE commands
  311.  - the new interrupt routine for the extra cursor
  312.  - the tokenization routine.
  313.  
  314. (sorry, no disassembly (yet))
  315.  
  316. 386E  FE 56 C2 6A 00 21 00 00 06 04 E5 C5 3E FF 0E 64
  317. 387E  2F D3 FE 06 64 10 FE 0D 20 F6 CD EE 3C C1 E1 0E
  318. 388E  04 CB 25 CB 14 0D 20 F9 B5 6F 10 DE D1 C1 F1 E3
  319. 389E  ED 45 21 A6 38 E5 ED 45 ED 57 D1 C1 F5 E1 22 E9
  320. 38AE  5B F3 F1 E1 ED 73 FE 5B 31 FE 5B FD E5 DD E5 D9
  321. 38BE  C5 D5 E5 D9 08 F5 08 C5 D5 E5 F5 ED 7B FE 5B FD
  322. 38CE  21 3A 5C 2A 4B 5C ED 5B 53 5C A7 ED 52 38 4C 2A
  323. 38DE  4F 5C 01 14 00 09 EB A7 ED 52 38 3F 21 B5 5C ED
  324. 38EE  52 30 38 21 A8 61 ED 52 38 31 FD CB 36 FE ED 56
  325. 38FE  FB FD 36 31 02 CD 6E 0D FD CB 02 EE 11 1F 39 AF
  326. 390E  CD 0A 0C FD 36 00 FF CD 97 10 FD CB 01 9E C3 AC
  327. 391E  12 80 4E 4D 49 20 62 72 65 61 EB F3 3E FF 01 FF
  328. 392E  FF 11 14 0A 21 58 FF D9 11 87 5E C3 CB 11 FD CB
  329. 393E  36 7E CA 5F 1E FD CB 36 BE F3 31 EA 5B F1 E1 D1
  330. 394E  C1 D9 08 F1 E1 D1 C1 D9 08 DD E1 FD E1 ED 7B FE
  331. 395E  5B FD CB AF 56 C0 FB C9 21 72 39 11 F8 FF 01 08
  332. 396E  00 ED B0 C9 00 00 00 00 00 00 40 00 2A FD FF 7C
  333. 397E  1F 1F 1F E6 03 F6 58 67 CB 7E C8 7E 2F 77 C9 0F
  334. 398E  00 F0 00 FF 00 00 0F 0F 0F F0 0F FF 0F 00 F0 0F
  335. 399E  F0 F0 F0 FF F0 00 FF 0F FF F0 FF FF FF CD 7A 39
  336. 39AE  3A F8 FF 87 C6 C5 6F 26 39 5E 23 56 EB CD 2C 16
  337. 39BE  CD 7A 39 7E 2F 77 C9 93 3A E4 39 F9 39 04 3A CF
  338. 39CE  39 2A FD FF 2C 20 0B 7C C6 08 67 2F E6 18 20 02
  339. 39DE  26 40 22 FD FF C9 2A FD FF 2D 7D 3C 20 F4 7C D6
  340. 39EE  08 67 2F E6 18 20 EB 26 50 18 E7 2A FD FF 7D C6
  341. 39FE  20 6F 30 DE 18 D1 2A FD FF 7D D6 20 6F 30 D3 18
  342. 3A0E  DD 21 8D 39 11 90 81 01 04 02 37 CD 39 3A 2A 36
  343. 3A1E  5C 24 11 80 20 01 01 08 B7 CD 39 3A 2A 7B 5C 11
  344. 3A2E  A5 90 01 01 08 B7 CD 39 3A AF C9 08 D5 DD 2A FD
  345. 3A3E  FF E5 C5 DD 7E 00 AE 28 08 3C 20 3C 08 38 38 08
  346. 3A4E  3D 5F 51 15 20 03 51 05 23 DD 24 DD 7E 00 AE AB
  347. 3A5E  20 26 15 20 F4 51 23 10 F0 3A FF FF AB 7B 32 FF
  348. 3A6E  FF 28 0D 3E 14 CD 85 0F 3A FF FF E6 01 CD 85 0F
  349. 3A7E  C1 E1 D1 7A A7 E1 C9 08 C1 E1 58 16 00 19 D1 14
  350. 3A8E  7A BB 20 A8 C9 DD E5 08 F5 CD 0F 3A 08 F1 08 28
  351. 3A9E  08 CD 81 0F DD E1 C3 CF 39 21 5E 01 11 5E 01 CD
  352. 3AAE  B5 03 DD E1 C9 2A 59 5C 7E FE 22 20 02 36 20 2B
  353. 3ABE  23 7E FE 0D C8 FE 22 28 6C FE 0E 28 73 FE 3C 38
  354. 3ACE  EF FE 5B 30 EB 22 B0 5C 16 A3 01 94 00 2A B0 5C
  355. 3ADE  03 0A FE 36 CA 45 3B CB 7F 28 03 14 18 F2 BE 20
  356. 3AEE  EF 0B 0A 03 17 30 E9 1E 01 03 23 1C 0A BE 28 F9
  357. 3AFE  CB 7F 20 03 0B 18 D6 14 E6 7F BE 20 D0 23 7E FE
  358. 3B0E  20 28 0B 7A FE BF 28 C5 FE AC 28 C1 1D 2B 1C 06
  359. 3B1E  00 4B A7 ED 42 7E FE 20 28 02 23 0D 72 E5 23 CD
  360. 3B2E  E8 19 E1 18 8B 23 7E FE 22 28 F8 FE 80 C8 18 F5
  361. 3B3E  23 23 23 23 23 18 EC E5 ED 5B 61 5C A7 ED 52 E1
  362. 3B4E  D0 18 E0 FE 0D D8 C2 E9 10 CD B3 3A 3E 0D 37 C9
  363. 3B5E  CD BF 02 2A 3D 5C 5E 23 56 21 7F 10 A7 ED 52 28
  364. 3B6E  06 21 68 11 ED 52 C0 3A FA FF 5F 3A 89 5C 32 FA
  365. 3B7E  FF 3A F9 FF 47 3A 6B 5C 32 F9 FF B8 28 2D 38 2B
  366. 3B8E  47 BB 30 1B 2A FD FF 7D CB 2C CB 2C CB 2C CB 2C
  367. 3B9E  1F CB 2C 1F 1F 1F 1F 2F E6 1F D6 07 B8 30 0C CD
  368. 3BAE  04 3A 3A FB FF 3C 32 FB FF 18 4C 3A FB FF A7 28
  369. 3BBE  0F 3D 32 FB FF CD 06 3C 38 3D AF 32 FB FF 18 37
  370. 3BCE  CD 06 3C 21 FC FF 7E 36 00 30 2C A7 20 0A 3A 09
  371. 3BDE  5C 32 FB FF 36 01 18 08 3A 0A 5C 32 FB FF 36 02
  372. 3BEE  CD AB 39 FD CB 01 AE FD 36 C8 FF FD 36 CC FF FD
  373. 3BFE  36 07 00 FD CB 02 DE C9 3E 7F DB FE 1F 1F 3F D0
  374. 3C0E  3E FE DB FE 1F 3F D0 21 F8 FF 3E F7 DB FE 36 01
  375. 3C1E  CB 67 37 C8 3E EF DB FE 36 00 1F 3F D8 1F 1F 36
  376. 3C2E  04 3F D8 36 03 1F 3F D8 36 02 1F 3F C9 3E 02 F5
  377. 3C3E  DF FE 2A 20 05 E7 F1 C3 FB 17 F1 FD 36 02 00 CD
  378. 3C4E  30 25 C4 01 16 DF CD 70 20 38 06 DF FE 3B 20 63
  379. 3C5E  E7 DF FE 3A 28 5D FE 0D 28 59 FE 2C 28 05 CD 82
  380. 3C6E  1C 18 04 CD E6 1C DF FE 2C 20 1E E7 CD DE 1C CD
  381. 3C7E  EE 1B CD 99 1E 78 B1 20 03 01 00 40 ED 43 74 5C
  382. 3C8E  CD 99 1E ED 43 72 5C 18 0E CD EE 1B CD 99 1E ED
  383. 3C9E  43 72 5C ED 43 74 5C 2A 72 5C 22 49 5C CD 6E 19
  384. 3CAE  11 00 00 CD 65 18 D7 ED 4B 74 5C CD 80 19 38 F0
  385. 3CBE  28 EE C9 CD EE 1B 01 0F 27 ED 43 74 5C 01 00 00
  386. 3CCE  ED 43 72 5C 18 D1 3E 03 C3 3D 3C CD 8E 02 20 FB
  387. 3CDE  CD 1E 03 30 F6 F5 CD 8E 02 7A A3 3C 20 F8 F1 C9
  388. 3CEE  CD D9 3C D6 30 38 F9 FE 0A D8 D6 07 FE 10 D8 18
  389. 3CFE  EF 00
  390. ------------------------------------------------------------------------
  391. A new character set is stored in place of the old one at 3D00-3FFF.
  392.  
  393. 3D00  00 00 00 00 00 00 00 00 00 18 18 18 18 00 18 00
  394. 3D10  00 24 24 00 00 00 00 00 00 14 16 1C 36 1C 34 14
  395. 3D20  00 10 3C 50 38 14 78 10 00 62 64 08 10 26 46 00
  396. 3D30  00 10 28 10 2A 44 3A 00 00 08 10 00 00 00 00 00
  397. 3D40  00 18 30 30 30 30 18 00 00 30 18 18 18 18 30 00
  398. 3D50  00 00 6C 38 FE 38 6C 00 00 00 18 18 7E 18 18 00
  399. 3D60  00 00 00 00 00 10 10 20 00 00 00 00 3E 00 00 00
  400. 3D70  00 00 00 00 00 18 18 00 00 00 06 0C 18 30 60 00
  401. 3D80  00 38 6C 6C 6C 6C 38 00 00 18 38 18 18 18 3C 00
  402. 3D90  00 3C 66 06 3C 60 7E 00 00 3C 66 0C 06 66 3C 00
  403. 3DA0  00 0C 1C 2C 4C 7E 0C 00 00 7E 60 7C 06 66 3C 00
  404. 3DB0  00 3C 60 7C 66 66 3C 00 00 7E 06 0C 18 30 30 00
  405. 3DC0  00 3C 66 3C 66 66 3C 00 00 3C 66 66 3E 06 3C 00
  406. 3DD0  00 00 00 10 00 00 10 00 00 00 10 00 00 10 10 20
  407. 3DE0  00 00 0C 18 30 18 0C 00 00 00 00 3E 00 3E 00 00
  408. 3DF0  00 00 30 18 0C 18 30 00 00 3C 66 0C 18 00 18 00
  409. 3E00  3C 42 9A AA 9E 40 3C 00 00 3C 66 66 7E 66 66 00
  410. 3E10  00 7C 66 7C 66 66 7C 00 00 3C 66 60 60 66 3C 00
  411. 3E20  00 78 6C 66 66 6C 78 00 00 7E 60 7C 60 60 7E 00
  412. 3E30  00 7E 60 7C 60 60 60 00 00 3C 66 60 6E 66 3C 00
  413. 3E40  00 66 66 7E 66 66 66 00 00 7E 18 18 18 18 7E 00
  414. 3E50  00 06 06 06 66 66 3C 00 00 66 6C 78 78 6C 66 00
  415. 3E60  00 60 60 60 60 60 7E 00 00 C6 EE FE D6 C6 C6 00
  416. 3E70  00 C6 E6 F6 DE CE C6 00 00 3C 66 66 66 66 3C 00
  417. 3E80  00 7C 66 66 7C 60 60 00 00 7C C6 C6 D6 CE 7C 02
  418. 3E90  00 7C 66 66 7C 6C 66 00 00 3C 60 3C 06 66 3C 00
  419. 3EA0  00 7E 18 18 18 18 18 00 00 66 66 66 66 66 3C 00
  420. 3EB0  00 66 66 66 66 3C 18 00 00 C6 C6 C6 D6 FE 6C 00
  421. 3EC0  00 C6 6C 38 38 6C C6 00 00 C6 6C 38 10 10 10 00
  422. 3ED0  00 7C 0C 18 30 60 7C 00 00 1E 18 18 18 18 1E 00
  423. 3EE0  00 00 60 30 18 0C 06 00 00 78 18 18 18 18 78 00
  424. 3EF0  00 18 3C 5A 18 18 18 00 00 00 00 00 00 00 00 FF
  425. 3F00  00 3C 66 60 F8 60 FE 00 00 00 3C 06 3E 66 3E 00
  426. 3F10  00 60 60 7C 66 66 7C 00 00 00 3C 60 60 60 3C 00
  427. 3F20  00 06 06 3E 66 66 3E 00 00 00 3C 66 7C 60 3E 00
  428. 3F30  00 1C 30 38 30 30 30 00 00 00 7C CC CC 7C 0C 78
  429. 3F40  00 60 60 7C 66 66 66 00 00 18 00 38 18 18 3C 00
  430. 3F50  00 0C 00 0C 0C 0C 6C 38 00 60 6C 78 70 78 6C 00
  431. 3F60  00 70 30 30 30 30 78 00 00 00 6C FE D6 C6 C6 00
  432. 3F70  00 00 7C 66 66 66 66 00 00 00 3C 66 66 66 3C 00
  433. 3F80  00 00 7C 66 66 7C 60 60 00 00 7C CC CC 7C 0C 0E
  434. 3F90  00 00 5C 76 60 60 60 00 00 00 38 60 38 0C 78 00
  435. 3FA0  00 30 78 30 30 30 1C 00 00 00 CC CC CC CC 76 00
  436. 3FB0  00 00 66 66 66 3C 18 00 00 00 C6 C6 D6 FE 6C 00
  437. 3FC0  00 00 66 3C 18 3C 66 00 00 00 CC CC CC 7C 0C 78
  438. 3FD0  00 00 7E 0C 18 30 7E 00 1C 30 30 60 30 30 1C 00
  439. 3FE0  18 18 18 18 18 18 18 00 38 0C 0C 06 0C 0C 38 00
  440. 3FF0  00 00 32 4C 00 00 00 00 3C 42 99 A1 A1 99 42 3C
  441. ------------------------------------------------------------------------
  442.  
  443.