home *** CD-ROM | disk | FTP | other *** search
/ ftp.whtech.com / ftp.whtech.com.tar / ftp.whtech.com / ti-990 / TI990_12.txt < prev    next >
Text File  |  2006-10-19  |  115KB  |  4,511 lines

  1. ; TI990/12 LOAD ROMs disassembly
  2. ;
  3. ;General background :
  4. ; These ROMs contain the handler for the LOAD/RESTART interrupt.  This interrupt is called at
  5. ; start-up (instead of RESET, which is used for "warm reset", I think), so that the boot loader in
  6. ; ROMs can be executed.
  7. ;
  8. ; This interrupt can also be triggered by the programmer panel, and there is code to handle the
  9. ; panel functions.
  10. ;
  11. ;Description :
  12. ; We have one single 8kb ROM set (2 4k*8 ROMs).
  13. ;
  14. ; First 4kb contain TI990/12 machine code.  They are paged in four 1kb pages.
  15. ; All these pages are always located at >FC00.
  16. ;
  17. ; Last 4kb make no sense.
  18. ;
  19. ; Page 0 includes programmer panel handling and boot strap code, and a small bit of auto-test code.
  20. ; Pages 1-3 include remaining auto-test code.
  21. ;
  22. ; These ROMs are a source of information on the boot process and TI990/12 hardware.
  23. ;
  24. ; If you want a starting point, you can have a look at the LOAD vector located at >FFFC (page 0).
  25. ; The LOAD routine starts at >FC44 (page 0).
  26. ;
  27. ; The ROMs are obviously an instance of the "universal ROM loader" as described in the
  28. ; Model 990 Universal ROM Loader User's Guide.
  29. ; You should read the Universal ROM Loader User's Guide before reading the disassembly.
  30. ;
  31. ; The ROM basically do the following :
  32. ; * handle programmer panel functions if applicable
  33. ; * perform extensive self-test
  34. ; * look for a MDU, and boot from it if present
  35. ; * if programmer panel disabled, boot from the first tape/disk unit it finds (using a MT3200/WD900
  36. ;  controller or equivalent)
  37. ; * if programmer panel enabled, boot from the unit designated in RO/R1/R2 (either ASR tape,
  38. ;  FD800 single-sided disk, or tape/disk based on a MT3200/WD900 controller or equivalent)
  39. ;
  40. ;Conventions used :
  41. ; TMS9900 assembly conventions should have been respected.  Particularily :
  42. ; * bit are numbered from MSB to LSB (unlike almost every other CPU)
  43. ; * format for TI990/12-specific instructions was mostly guessed, therefore it is unlikely to be
  44. ; very accurate.  Specifically, operand order is probably wrong.
  45. ;
  46. ; Raphael Nabet, 2000/04/24
  47. ;
  48. ; revision history :
  49. ; 2000/04/24 : explicited MT3200 tape unit support
  50. ; 2000/02/23 : fixed a few comments, clarified a few things with MDU support, found out what LCS does
  51. ; 2000/02/20 : initial release
  52.  
  53.  
  54.  
  55.  
  56. ; Notes on TI990/12 CPU
  57. ;
  58. ; TI990/12 should be backward compatible with TI990/10 & TMS9900.  It includes the memory mapping
  59. ; feature, which is optionnal on TI990/10.  Additionnally, it has many extra features and opcodes.
  60. ; Some of them are implemented in the tms99000 family.  Many are not.
  61. ;
  62. ;Overview :
  63. ;
  64. ; * Multiple-byte / Extended (i.e. 32-bit) integers support
  65. ; * Multiple-byte ("string") move and compare operations
  66. ; * Floating-point real support (single-precision & double-precision)
  67. ; * Decimal ascii to/from binary conversion
  68. ; * "Writable Control Storage (WCS) - In the model 990/12 Computer, an area set aside that contains
  69. ;   microcode that is executable by the user tasks via a an XOP instruction within the user program."
  70. ;   (Source : Model 990 Computer DX10 Operating System Concept and Facilities Manual Volume 1 A-12,
  71. ;   page 77)
  72. ; * Stack operations (I have no idea how they work - no SP register AFAIK)
  73. ; * Possibility to declare some memory areas as read-only, data or program, etc.
  74. ; * ...
  75. ;
  76. ; This makes more than 140 instruction types (vs. 69 on TMS9900, and 84 on TMS99105).
  77. ; Wow, THIS is a CISC processor :-) .
  78. ;
  79. ;
  80. ;Data types :
  81. ;
  82. ; Single-precision & double-precision real.
  83. ;
  84. ; Guessed format :
  85. ; 1 bit : sign S
  86. ; 7 bits : exponent E (binary, bias >40, power of 16)
  87. ; 7/3 bytes : fractional part of mantissa M (binary) (integer part = 0)
  88. ; so the number is S * 16^(E - >40) * 0.M
  89. ;
  90. ; The only difference between single-precision and double-precision appears to be the size of
  91. ; mantissa (24 bits vs. 56 bits).
  92. ;
  93. ; Of course, IEEE double lacks 2 bits to be able to represent TI990/12 double.  Quite unpractical
  94. ; for those who want to emulate TI990/12 :-( .
  95. ;
  96. ;Instruction formats :
  97. ;
  98. ; "String" and "multiple arithmetic" instructions include a 4-bit immediate.
  99. ; It appears to be a byte count.
  100. ; They use a register, too.  I don't know what it is used for, exactly.  It is always set to >FFFF
  101. ; as input.  It is used once as output, and tells how many bytes CS found to be similar.  I guess
  102. ; it is incremented each time a byte is handled.  Since it is always set to >FFFF before each
  103. ; string instruction, maybe it changes the operation mode, or provides a byte count.
  104. ;
  105. ; There are only few instances of field instructions and stack instructions, so I cannot say anything
  106. ; for sure.  You can search for MVSK, IOF, XV if you like.
  107. ;
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115. ; ROM page 0.
  116. ; LOAD vector, programmer panel handling.
  117.  
  118. ; error handler when the switch from ROM page 0 to page 1 fails (code at >FC40->FC42)
  119. FC00: 02E0 0080           LWPI >0080
  120. FC04: 0206 0200           LI   R6,>0200
  121.  
  122. ; return point when the self test was unsuccessful
  123. FC08: 020C 1FE0           LI   R12,>1FE0
  124. FC0C: 1F0E                TB   >000E
  125. FC0E: 1601                JNE  >FC12
  126. FC10: 1D0A                SBO  >000A
  127. FC12: 1D0B                SBO  >000B
  128. FC14: 3206                LDCR R6,8             ; display progress code
  129. FC16: 3220 008D           LDCR @>008D,8
  130. FC1A: 10FF                JMP  >FC1A            ; stop
  131.  
  132. ; return point when the self test was successful
  133. FC1C: 1068                JMP  >FCEE
  134.  
  135.  
  136. ; entry point for self-test
  137. FC1E: 0360                RSET                  ; reset peripherals
  138. FC20: 020C 1FE0           LI   R12,>1FE0
  139. FC24: 1D0B                SBO  >000B
  140. FC26: 04C6                CLR  R6
  141. FC28: 3206                LDCR R6,8             ; clear panel
  142. FC2A: 3220 008D           LDCR @>008D,8
  143. FC2E: 02E0 0080           LWPI >0080
  144. FC32: 002D                EMD                   ; Execute Micro-Diagnostics : microcode test
  145. FC34: 020C 1FB4           LI   R12,>1FB4        ; Page switch
  146. FC38: 0204 0100           LI   R4,>0100
  147. FC3C: 0205 FC00           LI   R5,>FC00
  148. FC40: 30C4                LDCR R4,3             ; switch to page #1
  149. FC42: 0455                B    *R5              ; jump to self test code at >FC00
  150.  
  151.  
  152. ; LOAD vector entry point
  153. FC44: 020C 1FE0           LI   R12,>1FE0        ; programmer panel CRU base
  154. FC48: 0221 6700           AI   R1,>6700         ; look for magical value (>9900)
  155. FC4C: 1602                JNE  >FC52            ; continue with normal vector if not found
  156. FC4E: 1D0A                SBO  >000A            ; switch "Run" light on
  157. FC50: 0450                B    *R0              ; branch to routine if found
  158.  
  159. FC52: 0209 00A0           LI   R9,>00A0         ; R9 points to free area in RAM ?
  160. FC56: 0700                SETO R0               ; R0 < 0 : use TILINE unit (tape, FD1000, hard disk) by default
  161. FC58: 0201 F800           LI   R1,>F800         ; TILINE address for default disk unit
  162. FC5C: 0202 0800           LI   R2,>0800         ; if programmer panel enabled, boot from drive unit 0 by default
  163. FC60: 1F0B                TB   >000B
  164. FC62: 13DD                JEQ  >FC1E            ; if programmer panel disabled, jump to self-test
  165.  
  166. FC64: C10E                MOV  R14,R4           ; load old PC to display it
  167.  
  168. ; programmer panel scan : we have 4 rows of 8 switches
  169. ; 16 switches allow to toggle the display in R4.
  170. ; the 16 other switches allow to access programmer panel functions.
  171. ;
  172. ; register conventions here :
  173. ; R4 = data register
  174. ; R7 = memory address register
  175. ; R13 = WP
  176. ; R14 = PC
  177. ; R15 = ST
  178.  
  179. ; keyscan loop start
  180. FC66: 3204                LDCR R4,8             ; display data register MSB
  181. FC68: 3220 0089           LDCR @>0089,8         ; display data register LSB
  182.  
  183. FC6C: 0205 FCD0           LI   R5,>FCD0
  184. FC70: 0695                BL   *R5              ; read current 8 switches from programmer panel to R3 MSB
  185. FC72: 16FE                JNE  >FC70            ; wait for all switches to be released
  186. FC74: 0695                BL   *R5
  187. FC76: 16FC                JNE  >FC70            ; test again to fix switch bounce problems
  188. FC78: 0695                BL   *R5
  189. FC7A: 16FA                JNE  >FC70            ; again
  190. FC7C: 04C3                CLR  R3
  191. FC7E: 1D08                SBO  >0008            ; "Increment scan" bit -> select another row of switches
  192. FC80: 0695                BL   *R5
  193. FC82: 13FD                JEQ  >FC7E            ; if no switch pressed, scan next row
  194. FC84: 0695                BL   *R5
  195. FC86: 13FB                JEQ  >FC7E            ; fixes switch bounce problems
  196. FC88: 0695                BL   *R5
  197. FC8A: 13F9                JEQ  >FC7E            ; again
  198.  
  199. FC8C: 1F09                TB   >0009            ; scan count bit 0 -> is current switch row number odd or even ?
  200. FC8E: 1601                JNE  >FC92
  201. FC90: 06C3                SWPB R3               ; if odd, we read last 8 switches in 16 switches, so we rotate 8 bits
  202. FC92: 1F08                TB   >0008            ; scan count bit 1 -> is this command switches or data switches ?
  203. FC94: 1302                JEQ  >FC9A            ; command switches -> jump to interpret command
  204. FC96: 2903                XOR  R3,R4            ; data switches -> toggle the data on display as requested
  205. FC98: 10E6                JMP  >FC66            ; update display and go back to scan routine
  206.  
  207. FC9A: 04C5                CLR  R5
  208. FC9C: 05C5                INCT R5
  209. FC9E: 0A13                SLA  R3,1
  210. FCA0: 17FD                JNC  >FC9C            ; count first bit set to 1 in R3, i.e. first switch pressed
  211. FCA2: 04A5 FCA6           X    @>FCA6(R5)       ; execute command as needed
  212. FCA6: 10DF                JMP  >FC66            ; jump to display value if the X instruction did not jump
  213.  
  214. ; Programmer panel instruction table.
  215. ; All jump offsets must be relative to FCA6 since this is the value of PC when the instruction
  216. ; is executed.
  217. FCA8: 1013                JMP  *+>FCCC->FCA6    ; "Halt/SIE" switch
  218. FCAA: 1011                JMP  *+>FCC8->FCA6    ; "Run" switch
  219. FCAC: 0360                RSET                  ; "Reset" switch
  220. FCAE: 10BC                JMP  *+>FC1E->FCA6    ; "Load" switch
  221. FCB0: C10D                MOV  R13,R4           ; "Display WP" switch
  222. FCB2: C10E                MOV  R14,R4           ; "Display PC" switch
  223. FCB4: C10F                MOV  R15,R4           ; "Display ST" switch
  224. FCB6: C107                MOV  R7,R4            ; "Display MA" switch
  225. FCB8: C344                MOV  R4,R13           ; "Enter WP" switch
  226. FCBA: C384                MOV  R4,R14           ; "Enter PC" switch
  227. FCBC: C3C4                MOV  R4,R15           ; "Enter ST" switch
  228. FCBE: C1C4                MOV  R4,R7            ; "Enter MA" switch
  229. FCC0: C117                MOV  *R7,R4           ; "MDD" switch ("Memory Data Display")
  230. FCC2: 05C7                INCT R7               ; "MAI" switch ("Memory Address Increment")
  231. FCC4: C5C4                MOV  R4,*R7           ; "MDE" switch ("Memory Data Enter")
  232. FCC6: 04C4                CLR  R4               ; "CLR" switch
  233.  
  234. ; Code for run switch
  235. FCC8: 1D0A                SBO  >000A            ; switch "Run" light on
  236. FCCA: 0380                RTWP
  237.  
  238. ; code for "Halt/SIE" switch
  239. FCCC: 1D0E                SBO  >000E            ; set "Single Instruction Execute"
  240. FCCE: 0380                RTWP                  ; Restart trap will occur after 2 instructions
  241. ; The second instruction executed will be an instruction from the program we interrupted.
  242. ; Pressing the HALT/SIE switch repetitively, you will trace the current program.
  243.  
  244.  
  245. ; this routine read a row of 8 switches from the programmer panel
  246. FCD0: 1D0D                SBO  >000D            ; start panel timer
  247. FCD2: 1F0A                TB   >000A            ; wait for timer active bit to be set
  248. FCD4: 16FE                JNE  >FCD2
  249. FCD6: 3603                STCR R3,8             ; retrieve value
  250. FCD8: 045B                B    *R11
  251.  
  252.  
  253. ; Real boot routine, called after the CPU self-test
  254. ;
  255. ; We can load from several devices : MDU (Maintenance Diagnostics Unit, with a tape reader),
  256. ; ASR (a data terminal with optionnal tape reader), a single-sided disk (dumb controller on CRU bus),
  257. ; a tape unit with MT3200 controller, a double-sided floppy disk or a hard disk with WD900 controller
  258. ; (intelligent controllers on TI-LINE memory bus).
  259. ;
  260. ; tape units (MDU, ASR and MT3200) use some object code encoded with alphanumeric and hexadecimal
  261. ; characters.
  262. ; Single-sided floppy uses a simple boot routine to fetch a binary start-up program.
  263. ; The routine for double-sided floppies and hard-disk is somewhat more complex.
  264.  
  265.  
  266. ; offset table for jumps in object code interpreter, used on >FD6C (offsets relative to >FD6C)
  267. FCDA: 302C 2A04           BYTE >FD9C->FD6C, >FD98->FD6C, >FD96->FD6C, >FD70->FD6C
  268. FCDE: 0404 041A           BYTE >FD70->FD6C, >FD70->FD6C, >FD70->FD6C, >FD86->FD6C
  269. FCE2: E60C 0A12           BYTE >FD52->FD6C, >FD78->FD6C, >FD76->FD6C, >FD7E->FD6C
  270. FCE2: 1022 1E00           BYTE >FD7C->FD6C, >FD8E->FD6C, >FD8A->FD6C, >00
  271. FCEA: 0404 30E6           BYTE >FD70->FD6C, >FD70->FD6C, >FD9C->FD6C, >FD52->FD6C
  272.  
  273.  
  274. ; actual boot routine
  275. FCEE: 0360                RSET                  ; RESET external peripherals
  276. FCF0: 0203 FEBE           LI   R3,>FEBE         ; address of the start-up routine we jump to - defaults to error routine
  277. FCF4: 0205 F7FE           LI   R5,>F7FE         ; last word before system memory space
  278. FCF8: C381                MOV  R1,R14           ; if programmer panel enabled, TILINE peripheral to boot from
  279. FCFA: C3C2                MOV  R2,R15           ; if programmer panel enabled, unit to load from
  280.  
  281. ; simple memory test >F7FE -> >0000
  282. FCFC: C555                MOV  *R5,*R5          ; try to read and write current word
  283. FCFE: 0645                DECT R5
  284. FD00: 18FD                JOC  >FCFC            ; loop until we wrap around to >FFFE
  285.  
  286. ; now real boot
  287. FD02: 020C 1FE0           LI   R12,>1FE0
  288. FD06: 1D0A                SBO  >000A            ; switch "Run" light on
  289. FD08: 1F0E                TB   >000E            ; this bit must tell a MDU is present
  290. FD0A: 1302                JEQ  >FD10            ; jump if not present
  291. FD0C: 04C0                CLR  R0
  292. FD0E: 101D                JMP  >FD4A            ; boot from the MDU ?
  293.  
  294. FD10: C000                MOV  R0,R0            ; read boot device type (defaults to -1)
  295. FD12: 114E                JLT  >FDB0            ; boot from TILINE tape or disk device (FD1000, hard disk...)
  296. FD14: 154C                JGT  >FDAE            ; boot from FD800 single-sided floppy disk
  297. ; if (R0 == 0), boot from ASR terminal
  298. FD16: 04CC                CLR  R12              ; device address >000 : 733 ASR
  299. FD18: 1D09                SBO  >0009            ; set-up device
  300. FD1A: 1D0A                SBO  >000A
  301. FD1C: 3220 FEB4           LDCR @>FEB4,8         ; effectively writes >11
  302.  
  303. ; entry point to boot from TILINE tape unit (MT3200 controller or equivalent)
  304. FD20: 04CD                CLR  R13
  305. FD22: C000                MOV  R0,R0
  306. FD24: 1312                JEQ  >FD4A            ; skip if booting from ASR
  307. FD26: C183                MOV  R3,R6            ; save R3, R5
  308. FD28: C285                MOV  R5,R10
  309. FD2A: 04C0                CLR  R0               ; meaningless
  310. FD2C: 04C1                CLR  R1               ; meaningless
  311. FD2E: 04C2                CLR  R2               ; read offset = 0 (read record from the beginning)
  312. FD30: 0203 0050           LI   R3,>0050         ; char count = >0050 (max record lenght = 80 chars)
  313.                                                 ; It seems we cannot have more than 80 bytes of code !
  314. FD34: 04C4                CLR  R4               ; load at address 0
  315. FD36: 0205 0400           LI   R5,>0400         ; >4 : read binary forward command
  316. FD3A: E14F                SOC  R15,R5           ; set unit ID
  317. FD3C: 06A0 FF7E           BL   @>FF7E           ; execute command on tape unit
  318. FD40: D920 FE99 0050      MOVB @>FE99,@>0050(R4)    ; append carriage return after the data we read (@>FE99 = >0D)
  319. FD46: C0C6                MOV  R6,R3            ; restore R3, R5
  320. FD48: C14A                MOV  R10,R5
  321.  
  322. ; entry point to boot from MDU
  323. FD4A: 020B FEBC           LI   R11,>FEBC        ; pointer to read routine
  324. FD4E: 04C7                CLR  R7               ; clear checksum
  325. FD50: 058D                INC  R13
  326.  
  327. ; object code interpreter
  328. ;
  329. ; ASR, MDU and MT3200 tapes use object code, as described in the Model 990 Computer Programming Card.
  330. ;
  331. ; We receive characters from the boot device.  These are interpreted as commands or as hexadecimal
  332. ; immediate operands.  Note that we actually only use hexadecimal characters, and 'G','H',':'.
  333. ;
  334. ; Commands with 16-bit immediate (encoded in hexadecimal) :
  335. ; * '1' : Absolute Entry Address : boot routine address = IMM
  336. ; * '2' : Relocatable Entry Address : boot routine address = offset + IMM
  337. ; * '7' : Checksum : stops the machine if (sum of all data received since start of record) + IMM != 0
  338. ; * '9' : Absolute Load Address : memory address pointer = IMM
  339. ; * 'A' : Relocatable Load Address : memory address pointer = offset + IMM
  340. ; * 'B' : Absolute Data : * (memory address pointer ++) = IMM
  341. ; * 'C' : Relocatable Data : * (memory address pointer ++) = offset + IMM
  342. ; * 'D' : Load Bias Or Offset : offset = IMM
  343. ; * 'E' : (no reference) : stop the machine
  344. ;
  345. ; Control commands (parameter-less) :
  346. ; * ':' : (no reference) : branch to boot routine address
  347. ; * 'F' : End Of Record : wait for next card to be inserted (does not really work)
  348. ;
  349. ; Unsupported commands with 16-bit immediate (encoded in hexadecimal) :
  350. ; * '8' : Ignore Checksum Value : does nothing
  351. ; * 'J' : (no reference)
  352. ; Unsupported commands with 16-bit immediate (encoded in hexadecimal) and 6-char symbol name :
  353. ; * '3', '4', '5', '6', 'G', 'H' (symbol-related commands)
  354. ; Unsupported commands with 16-bit immediate (encoded in hexadecimal) and 8-char program name :
  355. ; * '0' : Program Start
  356. ; * 'I' : (no reference)
  357. ;
  358. FD52: 069B                BL   *R11             ; read command number in R10 from tape (range 0-19)
  359. FD54: D0AA FCDA           MOVB @>FCDA(R10),R2   ; read offset to routine in table
  360. FD58: 1327                JEQ  >FDA8            ; handle 'F' command separately because it is parameter-less
  361. FD5A: 0882                SRA  R2,8             ; convert to signed 16-bit offset
  362. FD5C: C207                MOV  R7,R8            ; save checksum
  363. FD5E: 0201 0004           LI   R1,>0004         ; 4*4 = 16 bits to read
  364. FD62: 069B                BL   *R11             ; read hex digit (4 bits)
  365. FD64: 0A46                SLA  R6,4             ; shift digits we have already read
  366. FD66: A18A                A    R10,R6           ; and insert new digit in R6
  367. FD68: 0601                DEC  R1
  368. FD6A: 16FB                JNE  >FD62            ; loop until we have read a 16-bit hex value
  369. FD6C: 0462 FD6C           B    @>FD6C(R2)       ; jump to routine
  370.  
  371. ; entry point for '3', '4', '5', '6','G','H'
  372. ; read 6 additional characters and ignore them
  373. FD70: 0201 0006           LI   R1,>0006         ; read 6 chars
  374. FD74: 1015                JMP  >FDA0
  375.  
  376. ; entry point for 'A'
  377. ; add offset to R6, set address pointer
  378. FD76: A189                A    R9,R6            ; add offset to R6 (R9 set by 'D' command, defaults to >00A0)
  379. ; entry point for '9'
  380. ; set address pointer
  381. FD78: C146                MOV  R6,R5
  382. FD7A: 10EB                JMP  >FD52            ; next command
  383.  
  384. ; entry point for 'C'
  385. ; add offset to R6, write two bytes
  386. FD7C: A189                A    R9,R6
  387. ; entry point for 'B'
  388. ; write two bytes
  389. FD7E: DD46                MOVB R6,*R5+
  390. FD80: 06C6                SWPB R6
  391. FD82: DD46                MOVB R6,*R5+
  392. FD84: 10E6                JMP  >FD52
  393.  
  394. ; entry point for '7'
  395. ; check checksum
  396. FD86: A206                A    R6,R8
  397. FD88: 13E4                JEQ  >FD52            ; continue on if value matches checksum
  398. ; entry point for 'E'
  399. ; boot failure
  400. FD8A: 046B 0002           B    @>0002(R11)      ; jump to >FEBE (stop machine and blink fail LED)
  401.  
  402. ; entry point for 'D'
  403. ; set bias/offset
  404. FD8E: C246                MOV  R6,R9            ; set bias/offset value
  405. FD90: 0249 FFFE           ANDI R9,>FFFE         ; convert to word address
  406. FD94: 10DE                JMP  >FD52
  407.  
  408. ; entry point for '2'
  409. ; add offset to R6, set boot routine address
  410. FD96: A189                A    R9,R6
  411. ; entry point for '1'
  412. ; set boot routine address
  413. FD98: C0C6                MOV  R6,R3            ; set boot routine address
  414. FD9A: 10DB                JMP  >FD52
  415.  
  416. ; entry point for '0','I'
  417. ; read 8 additionnal characters and ignore them
  418. FD9C: 0201 0008           LI   R1,>0008         ; read 8 chars
  419. FDA0: 069B                BL   *R11
  420. FDA2: 0601                DEC  R1
  421. FDA4: 16FD                JNE  >FDA0
  422. FDA6: 10D5                JMP  >FD52
  423.  
  424. ; entry point for 'F' command (parameter-less)
  425. ; wait for next record
  426. FDA8: 069B                BL   *R11
  427. FDAA: 16FE                JNE  >FDA8            ; wait for next record
  428. FDAC: 10BA                JMP  >FD22
  429.  
  430.  
  431. ; branch point to routine at >FE18
  432. FDAE: 1034                JMP  >FE18
  433.  
  434.  
  435. ; Boot from a tape/disk unit using MD900/MT3200 controller or equivalent on the TILINE bus
  436. ;
  437. ; When programmer panel is available, the routine expect the unit mask to be in R15.
  438. ;
  439. ; When programmer panel is unavailable, the routine scans tape units 0-3, then disk units 0-3.
  440. ; It generally boots on the first unit which is ready ; however, when possible, it does not boot from
  441. ; a writable disk.  The resulting priority order is : tape #0, ..., tape #3,
  442. ; disk #0 (write-protected), ..., disk #3 (write-protected),
  443. ; disk #0 (writable), ..., disk #3 (writable).  When no unit is ready, it keeps scanning
  444. ; all units continuously, so that the user can insert a boot disk/tape after start-up.
  445. ;
  446. ; R1 = >F800 (?)
  447. ; R2 = >0800 (?)
  448.  
  449. FDB0: 04CD                CLR  R13
  450. FDB2: 1F0B                TB   >000B            ; programmer panel...
  451. FDB4: 1306                JEQ  >FDC2            ; if disabled, try each unit until we find a bootable one
  452.  
  453. FDB6: C10F                MOV  R15,R4           ; current unit mask : 1 (and only 1) bit must be set
  454. FDB8: 0A44                SLA  R4,4
  455. FDBA: 13B2                JEQ  >FD20            ; routine for tape unit
  456. FDBC: 102C                JMP  >FE16            ; routine for disk unit
  457.  
  458.  
  459. ; we end here when no tape or writable disk could be found.
  460. ; R13 may contain the ID of some write-protected disk.
  461. FDBE: C3CD                MOV  R13,R15          ; restore unit ID from R13
  462. FDC0: 162A                JNE  >FE16            ; jump to boot routine if non-zero
  463.                                                 ; else, we start over, until someone insert a disk/tape
  464.  
  465. ; Find a bootable tape/disk on the TILINE bus
  466. FDC2: 020C 1FC0           LI   R12,>1FC0        ; Error interrupt register CRU base
  467. FDC6: 020F 0001           LI   R15,>0001
  468. FDCA: 020E F880           LI   R14,>F880        ; TILINE base address for MT3200 tape controller
  469.  
  470. FDCE: 1E0F                SBZ  >000F            ; clear TIMEOUT (i.e. unimplemented memory)
  471. FDD0: 0B1F                SRC  R15,1            ; try next unit (try >8000 first, then >4000, etc)
  472. FDD2: 808F                C    R15,R2           ; compare with >0800 (support for up to 4 tape units)
  473. FDD4: 1B03                JH   >FDDC            ; jump if greater than >0800
  474.  
  475. FDD6: C381                MOV  R1,R14           ; else use WD900 disk unit at base address >F800
  476. FDD8: D3CF                MOVB R15,R15          ; if R15 MSByte is NULL, we are done
  477. FDDA: 13F1                JEQ  >FDBE            ; jump to boot from writable disk, or retry
  478.  
  479. FDDC: C21E                MOV  *R14,R8          ; load disc status
  480. FDDE: 1F0F                TB   >000F            ; test RAM TIMEOUT
  481. FDE0: 13F6                JEQ  >FDCE            ; try next unit if no controller found on bus
  482.  
  483. FDE2: C22E 000E           MOV  @>000E(R14),R8   ; load controller status
  484. FDE6: 1101                JLT  >FDEA            ; wait for IDLE status bit to be cleared
  485. FDE8: 10FC                JMP  >FDE2
  486.  
  487. FDEA: 04DE                CLR  *R14             ; clear disc status
  488. FDEC: CB8F 000C           MOV  R15,@>000C(R14)  ; select unit
  489. FDF0: 808F                C    R15,R2
  490. FDF2: 1204                JLE  >FDFC            ; skip 2 instructions if using disk unit
  491. FDF4: EB82 000C           SOC  R2,@>000C(R14)   ; bits 4-7 = >8 : read transport status command
  492. FDF8: 04EE 000E           CLR  @>000E(R14)      ; clear controller status
  493.  
  494. FDFC: 0206 5E00           LI   R6,>5E00
  495. FE00: 0606                DEC  R6
  496. FE02: 16FE                JNE  >FE00            ; wait for about 10 or 20ms
  497.  
  498. FE04: C21E                MOV  *R14,R8          ; read disk or tape transport status
  499. FE06: 11E3                JLT  >FDCE            ; try next unit if off-line status bit set (no unit or no tape/disk)
  500. FE08: 808F                C    R15,R2
  501. FE0A: 1B8A                JH   >FD20            ; if this is a tape unit, jump to object code interpreter
  502. FE0C: C34D                MOV  R13,R13
  503. FE0E: 1601                JNE  >FE12
  504. FE10: C34F                MOV  R15,R13          ; save R15 in R13 if it is the first bootable unit found
  505. FE12: 0A38                SLA  R8,3
  506. FE14: 17DC                JNC  >FDCE            ; try next unit if the disk is not write-protected (?)
  507. FE16: 1061                JMP  >FEDA            ; jump to disk boot routine if the disk is write-protected (?)
  508.  
  509.  
  510. ; Complete boot routine to boot from a single-sided diskette
  511. ; Boots from FD800 unit at CRU address >80->A0 (i.e. >40->50)
  512. FE18: 020C 00A0           LI   R12,>00A0        ; CRU base address for command register ?
  513. FE1C: 0702                SETO R2               ; R2 = >FFFF
  514. FE1E: 04C3                CLR  R3
  515. FE20: 3408                STCR R8,16            ; read 16 bits
  516. FE22: 1502                JGT  >FE28
  517. FE24: 0A68                SLA  R8,6             ; if negative, test CRU bit >A5
  518. FE26: 1814                JOC  >FE50            ; if bit set, start over
  519.  
  520. FE28: 1F0A                TB   >000A
  521. FE2A: 13FE                JEQ  >FE28            ; wait for something
  522. FE2C: 3002                LDCR R2,16            ; write all 1s
  523. FE2E: 0208 E000           LI   R8,>E000
  524. FE32: E203                SOC  R3,R8
  525. FE34: 1F0A                TB   >000A
  526. FE36: 13FE                JEQ  >FE34            ; wait again
  527. FE38: 3008                LDCR R8,16            ; write track number ???
  528. FE3A: 1F0F                TB   >000F
  529. FE3C: 16FE                JNE  >FE3A
  530. FE3E: 3408                STCR R8,16            ; read 16 bits
  531. FE40: 0248 1BFC           ANDI R8,>1BFC
  532. FE44: 1306                JEQ  >FE52            ; start boot
  533. FE46: 0223 0400           AI   R3,>0400
  534. FE4A: 0283 1000           CI   R3,>1000
  535. FE4E: 1AEE                JL   >FE2C
  536. FE50: 10E3                JMP  >FE18            ; start over
  537.  
  538.  
  539. FE52: 020C 0080           LI   R12,>0080        ; CRU base address for data register ?
  540. FE56: C289                MOV  R9,R10           ; R9 points to free area in RAM ?
  541.  
  542. FE58: 0201 0080           LI   R1,>0080         ; 256 bytes (= 128 words) in a data cluster ?
  543.  
  544. FE5C: 1F11                TB   >0011            ; data present bit (?)
  545. FE5E: 1306                JEQ  >FE6C
  546. FE60: 1F1A                TB   >001A            ; device error bit (?)
  547. FE62: 13FC                JEQ  >FE5C
  548. FE64: 020C 00A0           LI   R12,>00A0
  549. FE68: 3403                STCR R3,16
  550. FE6A: 102A                JMP  >FEC0            ; stop the machine in error
  551.  
  552. FE6C: 343A                STCR *R10+,16         ; read 16 bits
  553. FE6E: 1E0F                SBZ  >000F
  554. FE70: 0641                DECT R1
  555. FE72: 15F4                JGT  >FE5C            ; loop until read 256 bytes
  556.  
  557. FE74: 064A                DECT R10              ; point to last word
  558. FE76: 809A                C    *R10,R2          ; compare last word with >FFFF mark
  559. FE78: 16EF                JNE  >FE58            ; if different, keep 254 previous bytes and append another sector (?)
  560.  
  561. FE7A: 0360                RSET                  ; else, jump to boot routine
  562. FE7C: 0200 FEC8           LI   R0,>FEC8
  563. FE80: CE43                MOV  R3,*R9+          ; write device number
  564. FE82: 0459                B    *R9              ; execute boot routine at offset 2
  565.  
  566.  
  567. ; read routine
  568. ; Read ASCII character from 733 ASR located at >000, a MDU unit located at >FF0, or a MT3200 tape unit
  569. ; on TILINE bus, and translate it to one hexadecimal number.
  570. FE84: C000                MOV  R0,R0            ; test device type flag
  571. FE86: 1105                JLT  >FE92            ; jump if MT3200
  572.  
  573. FE88: 1F0C                TB   >000C
  574. FE8A: 16FE                JNE  >FE88            ; wait...
  575.  
  576. FE8C: 1E0C                SBZ  >000C
  577. FE8E: 35CA                STCR R10,7            ; read 7 bits
  578. FE90: 1001                JMP  >FE94
  579.  
  580.  
  581. FE92: D2B4                MOVB *R4+,R10         ; read byte from memory (MT3200 is DMA driven)
  582.  
  583. FE94: 098A                SRL  R10,8            ; move MSB to LSB
  584. FE96: 028A 000D           CI   R10,>000D        ; carriage return ? (appended at end of MT3200 record)
  585. FE9A: 130F                JEQ  >FEBA            ; if so return
  586. FE9C: 028A 005A           CI   R10,>005A        ; greater than 'Z' ?
  587. FEA0: 15F1                JGT  >FE84            ; if so, ignore current char and read next char
  588. FEA2: 028A 0020           CI   R10,>0020        ; control character (lower than ' ') ?
  589. FEA6: 11EE                JLT  >FE84            ; if so, ignore current char and read next char
  590. FEA8: A1CA                A    R10,R7           ; update checksum
  591. FEAA: 022A FFD0           AI   R10,>FFD0        ; substract >30 (numeric character -> numeric value)
  592. FEAE: 028A 000A           CI   R10,>000A
  593. FEB2: 1307                JEQ  >FEC2            ; jump to handler if it is ':'
  594. FEB4: 1102                JLT  >FEBA            ; if greater, it must be 'A'-'F'
  595. FEB6: 022A FFF9           AI   R10,>FFF9        ; convert to hex value
  596. FEBA: 069B                BL   *R11             ; trick : return to the caller AND restore R11 to be >FEBC
  597.  
  598. ; read routine entry point
  599. FEBC: 10E3                JMP  >FE84
  600.  
  601. ; entry point for bad ':' (called when no '1' command has been executed before ':')
  602. FEBE: C0CD                MOV  R13,R3
  603. FEC0: 1057                JMP  >FF70
  604.  
  605. ; handler for ':' command
  606. FEC2: C000                MOV  R0,R0            ; test boot device type flag
  607. FEC4: 1608                JNE  >FED6
  608.  
  609. FEC6: 1E0B                SBZ  >000B            ; clean-up ?
  610. FEC8: 1E0C                SBZ  >000C
  611. FECA: 0581                INC  R1
  612. FECC: 16FE                JNE  >FECA
  613. FECE: 1F0C                TB   >000C
  614. FED0: 13F8                JEQ  >FEC2
  615. FED2: 1E09                SBZ  >0009
  616. FED4: 1E0D                SBZ  >000D
  617.  
  618. FED6: 0360                RSET                  ; reset all peripherals
  619. FED8: 0453                B    *R3              ; jump to boot routine
  620.  
  621.  
  622. ; boot from a disk unit attached to a WD900 disk controller (or equivalent) whose address is in R14
  623. FEDA: C14F                MOV  R15,R5           ; unit ID
  624. FEDC: 020C FF7E           LI   R12,>FF7E
  625. FEE0: 020D 0005           LI   R13,>0005        ; retry count ?
  626.  
  627. FEE4: 0200 0700           LI   R0,>0700         ; restore command
  628. FEE8: 04C1                CLR  R1
  629. FEEA: 069C                BL   *R12
  630.  
  631. FEEC: 04C0                CLR  R0               ; store register command
  632. FEEE: 0203 0006           LI   R3,>0006         ; command returns 6 bytes
  633. FEF2: 0204 0200           LI   R4,>0200         ; free area in RAM
  634. FEF6: 069C                BL   *R12
  635. FEF8: C2A4 0004           MOV  @>0004(R4),R10
  636. FEFC: 09BA                SRL  R10,11           ; keep number of track per cylinder (i.e. number of heads)
  637.  
  638. FEFE: 0200 0400           LI   R0,>0400         ; read unformatted
  639. FF02: 04C2                CLR  R2               ; cylinder 0
  640. FF04: 069C                BL   *R12             ; read track/cylinder address, # of sectors per record, and sector lenght
  641.  
  642. FF06: C004                MOV  R4,R0            ; >0200 : read data (?)
  643. FF08: D064 0002           MOVB @>0002(R4),R1    ; set the "sectors per records" field
  644. FF0C: C0E4 0004           MOV  @>0004(R4),R3    ; count = sector lenght
  645. FF10: 0A13                SLA  R3,1             ; word count -> byte count
  646. FF12: 069C                BL   *R12             ; read record #0
  647. FF14: C3E4 000E           MOV  @>000E(R4),R15   ; alternate boot program track address
  648. FF18: 890F 0024           C    R15,@>0024(R4)   ; compare with normal program track address
  649. FF1C: 130C                JEQ  >FF36
  650.  
  651. FF1E: C924 0024 000E      MOV  @>0024(R4),@>000E(R4)    ; replace alternate boot program, with normal one
  652.                                                 ; so alternate program will be loaded only once
  653. FF24: 0200 0300           LI   R0,>0300         ; write data
  654. FF28: 069C                BL   *R12             ; write record #0
  655. FF2A: C924 001C 0018      MOV  @>001C(R4),@>0018(R4)    ; use alternate load point
  656. FF30: C924 001E 001A      MOV  @>001E(R4),@>001A(R4)    ; and alternate length
  657.  
  658. FF36: 0200 0400           LI   R0,>0400         ; read unformatted
  659. FF3A: 0203 0006           LI   R3,>0006         ; command returns 6 bytes
  660. FF3E: 06A0 FF72           BL   @>FF72           ; compute cylinder/head address from track address in R15
  661. FF42: 069C                BL   *R12
  662.  
  663. FF44: C064 0002           MOV  @>0002(R4),R1    ; set format & sector according to value read from controller
  664. FF48: C004                MOV  R4,R0            ; >0200 : read data
  665. FF4A: 06A0 FF72           BL   @>FF72
  666. FF4E: C3E4 0018           MOV  @>0018(R4),R15   ; program load point
  667. FF52: C0E4 001A           MOV  @>001A(R4),R3    ; program length
  668. FF56: 130A                JEQ  >FF6C            ; fail if null
  669. FF58: 0204 00A0           LI   R4,>00A0         ; free area in RAM ?
  670. FF5C: 069C                BL   *R12             ; read boot program
  671.  
  672. FF5E: 0200 ABC0           LI   R0,>ABC0         ; magical value ?
  673. FF62: C04E                MOV  R14,R1           ; boot device address
  674. FF64: 04C2                CLR  R2
  675. FF66: D085                MOVB R5,R2            ; unit ID
  676. FF68: 0360                RSET                  ; Reset for things to be cleaner
  677. FF6A: 045F                B    *R15             ; jump to boot program
  678.  
  679. ; exit point when boot program lenght is NULL
  680. FF6C: 0203 D001           LI   R3,>D001         ; load error code
  681.  
  682. FF70: 102E                JMP  >FFCE            ; stop machine and blink the Fail LED
  683.  
  684. ; compute cylinder & head address from "flat" track address
  685. ; input :
  686. ; R10 = number of heads
  687. ; R15 = track address
  688. ; returns :
  689. ; R2 = cylinder address
  690. ; R0 |= head address
  691. FF72: C24F                MOV  R15,R9
  692. FF74: 04C8                CLR  R8
  693. FF76: 3E0A                DIV  R10,R8           ; compute R15/R10
  694. FF78: C088                MOV  R8,R2            ; R2 = quotient : cylinder address
  695. FF7A: E009                SOC  R9,R0            ; R0 MSB = remainder : head address
  696. FF7C: 045B                B    *R11
  697.  
  698.  
  699. ; execute some command on a WD900/WT3200 controller
  700. ; R0 -> W1 : command and surface register (WD900)
  701. ; R1 -> W2 : format and sector (MSByte : sectors per record ; LSByte : sector number) (WD900)
  702. ; R2 -> W3 : cylinder address (cylinder number) (WD900) / read offset (WT3200)
  703. ; R3 -> W4 : count (length to read/write)
  704. ; R4 -> W5 : address (destination/source address to read/write from, 16 LSBits)
  705. ; R5 -> W6 : WD900 : select and address (unit selection, 1 bit per unit, in LOW nibble of MSByte, and
  706. ;           4 MSBits of address in low nibble of LSByte) 
  707. ;            WT3200 : command and transport select (unit selection, 1 bit per unit, in HIGH nibble
  708. ;           of MSByte, command in high nibble of LSByte, and 4 MSBits of address in low nibble of
  709. ;           LSByte)
  710. ;
  711. ; R14 = controller address
  712. ;
  713. ; cf 990 Handbook, 5-23, page 188, and WD900/MT3200 general description, chapter 3
  714. ;
  715. FF7E: C1CE                MOV  R14,R7           ; TILINE device address
  716. FF80: C227 000E           MOV  @>000E(R7),R8
  717. FF84: 1101                JLT  >FF88
  718. FF86: 10FB                JMP  >FF7E            ; wait for IDLE status bit to be cleared
  719.  
  720. ; write device registers
  721. FF88: 04F7                CLR  *R7+             ; disc status
  722. FF8A: CDC0                MOV  R0,*R7+
  723. FF8C: CDC1                MOV  R1,*R7+
  724. FF8E: CDC2                MOV  R2,*R7+
  725. FF90: CDC3                MOV  R3,*R7+
  726. FF92: CDC4                MOV  R4,*R7+
  727. FF94: CDC5                MOV  R5,*R7+
  728. FF96: 04D7                CLR  *R7              ; controller status
  729.  
  730. FF98: C217                MOV  *R7,R8
  731. FF9A: 1101                JLT  >FF9E
  732. FF9C: 10FD                JMP  >FF98            ; wait for IDLE controller status bit to be cleared
  733.  
  734. FF9E: C1C5                MOV  R5,R7
  735. FFA0: 09C7                SRL  R7,12            ; 4 MSBits select unit on WT3200, and are unused on WD900
  736. FFA2: 1603                JNE  >FFAA            ; skip if we are using a tape unit
  737.  
  738. FFA4: C1DE                MOV  *R14,R7          ; disk status
  739. FFA6: 0A27                SLA  R7,2
  740. FFA8: 18FD                JOC  >FFA4            ; wait for NR (Not Ready) status bit to be cleared
  741.  
  742. FFAA: 0248 01FF           ANDI R8,>01FF         ; test all individual error bits
  743. FFAE: 1602                JNE  >FFB4            ; jump on error
  744.  
  745. FFB0: 0700                SETO R0
  746. FFB2: 045B                B    *R11             ; normal return
  747.  
  748. ; error handler :
  749. FFB4: C1DE                MOV  *R14,R7          ; read disk status
  750. FFB6: 11E3                JLT  >FF7E            ; wait for OL (off-line) status bit to be set
  751. FFB8: C1C5                MOV  R5,R7
  752. FFBA: 09C7                SRL  R7,12
  753. FFBC: 1602                JNE  >FFC2            ; skip if we are using a tape unit
  754.  
  755. FFBE: 060D                DEC  R13
  756. FFC0: 1691                JNE  >FEE4            ; do a few retries before fail ?
  757.  
  758. FFC2: 0288 0001           CI   R8,>0001         ; check unit error / tape error in controller status
  759. FFC6: 1602                JNE  >FFCC            ; means an error condition is set in disk status / tape transport status
  760. FFC8: 04C8                CLR  R8
  761. FFCA: D21E                MOVB *R14,R8          ; read error code in disk status / tape transport status register
  762.  
  763. FFCC: C0C8                MOV  R8,R3
  764.  
  765.  
  766. ; error stop
  767. ; we jump to this routine when boot fails
  768. ; display R3 for diagnostics purpose, and blink the fail LED.
  769. FFCE: 020C 1FE0           LI   R12,>1FE0
  770. FFD2: 3203                LDCR R3,8
  771. FFD4: 3220 0087           LDCR @>0087,8
  772. FFD8: 1D0B                SBO  >000B
  773. FFDA: 05C1                INCT R1
  774. FFDC: 15FD                JGT  >FFD8
  775. FFDE: 1E0B                SBZ  >000B
  776. FFE0: 10FC                JMP  >FFDA
  777.  
  778.  
  779. ; spare room
  780. FFE2: 0000                DATA >0000
  781. FFE4: 0000                DATA >0000
  782. FFE6: 0000                DATA >0000
  783. FFE8: 0000                DATA >0000
  784. FFEA: 0000                DATA >0000
  785. FFEC: 0000                DATA >0000
  786. FFEE: 0000                DATA >0000
  787. FFF0: 0000                DATA >0000
  788. FFF2: 0000                DATA >0000
  789. FFF4: 0000                DATA >0000
  790.  
  791.  
  792. ; pointers to routines
  793. FFF6: FCF4                DATA >FCF4            ; boot loader
  794. FFF8: FCEE                DATA >FCEE            ; ditto
  795. FFFA: FD4A                DATA >FD4A            ; boot loader for MDU (?)
  796.  
  797. ; LOAD vector
  798. FFFC: 0080 FC44           DATA >0080,>FC44
  799.  
  800.  
  801.  
  802.  
  803.  
  804.  
  805.  
  806.  
  807.  
  808.  
  809. ; ROM page 1.
  810.  
  811. FC00: 020C FE68           LI   R12,>FE68
  812. FC04: 00AC                LCS  R12              ; Load writable Control Store
  813.                                                 ; loads microcode to define some XOPs.
  814. FC06: 020C 1FE0           LI   R12,>1FE0
  815. FC0A: 0206 0100           LI   R6,>0100         ; display progress code on programmer panel
  816. FC0E: 3206                LDCR R6,8
  817. FC10: 3220 008D           LDCR @>008D,8
  818.  
  819. FC14: 0206 0400           LI   R6,>0400
  820. FC18: 0286 0400           CI   R6,>0400
  821. FC1C: 1638                JNE  >FC8E            ; exit on error
  822. FC1E: 0546                INV  R6
  823. FC20: 0286 0400           CI   R6,>0400
  824. FC24: 1334                JEQ  >FC8E            ; exit on error
  825. FC26: 0546                INV  R6
  826. FC28: 02E0 0100           LWPI >0100
  827. FC2C: 02C3                STST R3
  828. FC2E: 0420 FC36           BLWP @>FC36           ; jump
  829.  
  830. FC32: 0460 FFE0           B    @>FFE0           ; error exit : we should not reach this line
  831.  
  832. ; BLWP vector
  833. FC36: 0120 FC3A           DATA >0120,FC3A
  834.  
  835. ; BLWP routine entry point
  836. FC3A: 02C5                STST R5               ; copy current ST
  837. FC3C: 83C5                C    R5,R15           ; saved ST
  838. FC3E: 1627                JNE  >FC8E            ; should equate
  839. FC40: 028D 0100           CI   R13,>0100        ; old WP
  840. FC44: 1624                JNE  >FC8E
  841. FC46: 028E FC32           CI   R14,>FC32        ; old PC
  842. FC4A: 1621                JNE  >FC8E
  843. FC4C: 020E FC56           LI   R14,>FC56        ; set return PC to >FC56
  844. FC50: 0380                RTWP                  ; return
  845.  
  846. FC52: 0460 FFE0           B    @>FFE0           ; error exit : we should not reach this line
  847.  
  848. FC56: 02C4                STST R4               ; restored ST
  849. FC58: 8804 0106           C    R4,@>0106        ; should equate ST before call
  850. FC5C: 1618                JNE  >FC8E
  851.  
  852. FC5E: 0208 4BF2           LI   R8,>4BF2
  853. FC62: 3A20 FEBA           MPY  @>FEBA,R8        ; times >E819
  854. FC66: 0288 44DA           CI   R8,>44DA         ; test MSWord
  855. FC6A: 1611                JNE  >FC8E
  856. FC6C: 0289 BAA2           CI   R9,>BAA2         ; test LSWord
  857. FC70: 160E                JNE  >FC8E
  858.  
  859. FC72: 0202 0064           LI   R2,>0064
  860. FC76: 0206 05F5           LI   R6,>05F5
  861. FC7A: 0207 E0FF           LI   R7,>E0FF
  862. FC7E: 3DA2 FE58           DIV  @>FE58(R2),R6    ; divide R6:R7 by @>FEBC = >15CB
  863. FC82: 0286 4604           CI   R6,>4604         ; test quotient
  864. FC86: 1603                JNE  >FC8E
  865. FC88: 0287 07D3           CI   R7,>07D3         ; test remainder
  866. FC8C: 1302                JEQ  >FC92            ; jump if OK
  867.  
  868. ; error exit point
  869. FC8E: 0460 FFE0           B    @>FFE0
  870.  
  871. FC92: 020A FCDC           LI   R10,>FCDC
  872. FC96: C1A0 FEBE           MOV  @>FEBE,R6        ; -> R6 = >FFFF
  873. FC9A: 04C7                CLR  R7
  874. FC9C: 049A                X    *R10             ; executes a MOVB R6,R7
  875. FC9E: 0287 FF00           CI   R7,>FF00
  876. FCA2: 166A                JNE  >FD78
  877. FCA4: C2A0 FCD6           MOV  @>FCD6,R10       ; >0A59 : SLA R9,5
  878. FCA8: C260 FEBA           MOV  @>FEBA,R9        ; -> R9 = >E819
  879. FCAC: 048A                X    R10              ; executes a SLA R9,5
  880. FCAE: 0289 0320           CI   R9,>0320
  881. FCB2: 1662                JNE  >FD78
  882. FCB4: C220 FEBA           MOV  @>FEBA,R8        ; -> R8 = >E819
  883. FCB8: 04A0 FCD8           X    @>FCD8           ; executes a SRC R8,3
  884. FCBC: 0288 3D03           CI   R8,>3D03
  885. FCC0: 165B                JNE  >FD78
  886. FCC2: 0205 0032           LI   R5,>0032
  887. FCC6: C120 FEBA           MOV  @>FEBA,R4        ; -> R4 = >E819
  888. FCCA: 04A5 FCA8           X    @>FCA8(R5)       ; executes "INV  R4" at @>FCDA
  889. FCCE: 0284 17E6           CI   R4,>17E6
  890. FCD2: 1652                JNE  >FD78
  891. FCD4: 1004                JMP  >FCDE
  892.  
  893. ; instruction table
  894. FCD6: 0A59                SLA  R9,5
  895. FCD8: 0B38                SRC  R8,3
  896. FCDA: 0544                INV  R4
  897. FCDC: D1C6                MOVB R6,R7
  898.  
  899. ; test, next part
  900. FCDE: 0205 0135           LI   R5,>0135
  901. FCE2: C560 FEB8           MOV  @>FEB8,*R5       ; moves >1234 at address @>0134 (address LSBit ignored)
  902. FCE6: 0206 0015           LI   R6,>0015
  903. FCEA: 0203 FEAA           LI   R3,>FEAA         ; empty (i.e. all-0s) map file
  904. FCEE: 0323                LMF  R3,0             ; load as memory map
  905. FCF0: 020C 1FA0           LI   R12,>1FA0
  906. FCF4: 1D03                SBO  >0003            ; change RAM set-up ?
  907. FCF6: 07A0 FEA6           LDS  @>FEA6           ; this temporary memory map -> >120 offset on next source address
  908. FCFA: C816 017E           MOV  *R6,@>017E       ; i.e. we actually read @>0009A * 2 = @>000134
  909. FCFE: 8820 017E FEB8      C    @>017E,@>FEB8
  910. FD04: 16C4                JNE  >FC8E
  911. FD06: 07E0 FEA6           LDD  @>FEA6           ; same story with destination
  912. FD0A: C5A0 FEBA           MOV  @>FEBA,*R6
  913. FD0E: 8560 FEBA           C    @>FEBA,*R5
  914. FD12: 16BD                JNE  >FC8E
  915. FD14: C820 FEBE 017A      MOV  @>FEBE,@>017A    ; @>017A = >FFFF
  916. FD1A: 0706                SETO R6
  917. FD1C: 0066 5820 FEB8 0176 MOVS R6,@>FEB8,@>0176,5   ; move 5 bytes
  918. FD24: 0706                SETO R6
  919. FD26: 0046 5820 FEB8 0176 CS   R6,@>FEB8,@>0176,5
  920. FD2E: 1624                JNE  >FD78
  921. FD30: 9820 017B FEBE      CB   @>017B,@>FEBE    ; check we did not write an extra byte
  922. FD36: 1620                JNE  >FD78
  923.  
  924. FD38: 04C0                CLR  R0
  925. FD3A: C820 FEB8 0176      MOV  @>FEB8,@>0176
  926. FD40: 0E00 0020 0176      IOF  R0,@>0176 (?)    ; Invert Order of Field
  927. FD46: 8820 0176 FEB6      C    @>0176,@>FEB6
  928. FD4C: 1615                JNE  >FD78
  929. FD4E: 8820 FEB8 FEB8      C    @>FEB8,@>FEB8    ; should set Equal bit
  930. FD54: 02C3                STST R3
  931. FD56: 0202 2000           LI   R2,>2000
  932. FD5A: 20C2                COC  R2,R3            ; (R2 & R3) == R2 ?
  933. FD5C: 160D                JNE  >FD78
  934. FD5E: 0202 C000           LI   R2,>C000
  935. FD62: 24C2                CZC  R2,R3            ; (R2 & ~R3) == R2 ?
  936. FD64: 1609                JNE  >FD78
  937. FD66: 8820 FEBE FEAA      C    @>FEBE,@>FEAA
  938. FD6C: 02C7                STST R7
  939. FD6E: 0247 E000           ANDI R7,>E000
  940. FD72: 0287 8000           CI   R7,>8000         ; H == 1, G & E == 0
  941. FD76: 1302                JEQ  >FD7C            ; jump if OK
  942.  
  943. ; error exit point
  944. FD78: 0460 FFE0           B    @>FFE0
  945.  
  946. FD7C: 0023 2820 FE92 0176 BDC  @>FE92,@>0176,2  ; Binary to Decimal ascii conversion
  947. FD84: 8820 0176 FE94      C    @>0176,@>FE94    ; test first 2 chars
  948. FD8A: 16F6                JNE  >FD78
  949. FD8C: 8820 0178 FE96      C    @>0178,@>FE96    ; test last 2 chars
  950. FD92: 16F2                JNE  >FD78
  951. FD94: 0706                SETO R6
  952. FD96: 0046 4820 0176 FE94 CS   R6,@>0176,@>FE94,4   ; compare string
  953. FD9E: 16EC                JNE  >FD78
  954. FDA0: 05A0 0178           INC  @>0178           ; alter last char
  955. FDA4: 0706                SETO R6
  956. FDA6: 0046 4820 0176 FE94 CS   R6,@>0176,@>FE94,4   ; compare string
  957. FDAE: 13E4                JEQ  >FD78            ; should be different
  958. FDB0: 0286 0003           CI   R6,>0003         ; first different char is third char (?)
  959. FDB4: 16E1                JNE  >FD78
  960. FDB6: 0024 2820 FE94 0176 DBC  @>FE94,@>0176,2  ; Decimal ascii to Binary conversion
  961. FDBE: 8820 FE92 0176      C    @>FE92,@>0176
  962. FDC4: 16D9                JNE  >FD78
  963. FDC6: 0CA0 FE98           CIR  @>FE98           ; Convert Integer to Real
  964. FDCA: 0706                SETO R6
  965. FDCC: 0046 4800 FE9E      CS   R6,R0,@>FE9E,4
  966. FDD2: 16D2                JNE  >FD78
  967. FDD4: 0CE0 FE9A           SR   @>FE9A
  968. FDD8: 0C00                CRI
  969. FDDA: 0280 0BB8           CI   R0,>0BB8
  970. FDDE: 16CC                JNE  >FD78
  971. FDE0: 0C2A 30A0 FEBA      XV   10,@>FEBA,R2,3   ; extract 10 bits from bit 3 in @>FEBA, store result in R2 (?)
  972. FDE6: 0282 0103           CI   R2,>0103
  973. FDEA: 16C6                JNE  >FD78
  974. FDEC: C820 FEBA 0176      MOV  @>FEBA,@>0176
  975. FDF2: C820 FEBC 0178      MOV  @>FEBC,@>0178    ; load >E81915CB
  976. FDF8: 001C 3160 0176      SRAM @>0176,5,3       ; shift 3 bytes at @>0176 with 5 bits
  977. FDFE: 17BC                JNC  >FD78
  978. FE00: 0706                SETO R6
  979. FE02: 0046 4820 FEA2 0176 CS   R6,@>FEA2,@>0176,4   ; >FF40C8CB
  980. FE0A: 16B6                JNE  >FD78
  981. FE0C: 0205 C7CB           LI   R5,>C7CB
  982. FE10: 9805 FEA4           CB   R5,@>FEA4
  983. FE14: 13B1                JEQ  >FD78
  984. FE16: 0207 C8AB           LI   R7,>C8AB
  985. FE1A: 9807 FEA4           CB   R7,@>FEA4
  986. FE1E: 16AC                JNE  >FD78
  987. FE20: 02A5                STWP R5
  988. FE22: 0285 0100           CI   R5,>0100
  989. FE26: 16A8                JNE  >FD78
  990. FE28: C0E0 FEBC           MOV  @>FEBC,R3        ; >15CB
  991. FE2C: 0200 AC0F           LI   R0,>AC0F         ; - >53F1
  992. FE30: 01C3                MPYS R3
  993. FE32: 0706                SETO R6
  994. FE34: 0046 4800 FE6E      CS   R6,R0,@>FE6E,4   ; >F8DAAAE5 = - >0725551B
  995. FE3A: 169E                JNE  >FD78
  996. FE3C: 0709                SETO R9
  997. FE3E: 0069 8020 FE72      MOVS R9,@>FE72,R0,8   ; >4226000000000000
  998. FE44: 0F60 FE82           DD   @>FE82           ; Divide Double-precision >C234000000000000
  999. FE48: 0706                SETO R6
  1000. FE4A: 0046 8800 FE7A      CS   R6,R0,@>FE7A,8   ; >C0BB13B13B13B13B
  1001. FE50: 1693                JNE  >FD78
  1002. FE52: 0706                SETO R6
  1003. FE54: 0066 8020 FE8E      MOVS R6,@>FE8E,R0,8
  1004. FE5A: 0C05                CDE                   ; convert double to extended (i.e. 32-bit) int
  1005. FE5C: 070A                SETO R10
  1006. FE5E: 004A 4800 FE8A      CS   R10,R0,@>FE8A,4  ; >FFA63E0D
  1007. FE64: 1689                JNE  >FD78
  1008. FE66: 102C                JMP  >FEC0
  1009.  
  1010. ; various tables
  1011. ; table used by LCS.  Too short to be complete microcoded instructions I guess, so these must be
  1012. ; pointers.
  1013. FE68: 0020                DATA >0020
  1014. FE6A: 0BE0                DATA >0BE0
  1015. FE6C: 0100                DATA >0100
  1016.  
  1017. FE6E: F8DA AAE5           DATA >F8DA,>AAE5      ; signed 4-byte int
  1018. ; 64-bit floats
  1019. FE72: 4226 0000 0000 0000 DATA >4226,>0000,>0000,>0000
  1020. FE7A: C0BB 13B1 3B13 B13B DATA >C0BB,>13B1,>3B13,>B13B
  1021. FE82: C234 0000 0000 0000 DATA >C234,>0000,>0000,>0000
  1022. FE8A: FFA6 3E0D           DATA >FFA6,>3E0D
  1023. FE8E: C659                DATA >C659
  1024. FE90: C1F3                DATA >C1F3
  1025. FE92: 03CF                DATA >03CF            ; 975
  1026. FE94: 3937 352B           BYTE '9','7','5','+'
  1027. FE98: 2710                DATA >2710
  1028. FE9A: 441B                DATA >441B
  1029. FE9C: 5800                DATA >5800
  1030. FE9E: 4427 1000           DATA >4427,>1000      ; single-precision real
  1031. FEA2: FF40 C8CB           DATA >FF40,>C8CB
  1032.  
  1033. ; simple memory map : adds a 9*32 = >120 offset to every address
  1034. FEA6: 0000                DATA >0000
  1035. FEA8: 0009                DATA >0009
  1036.  
  1037. ; empty memory map
  1038. FEAA: 0000                DATA >0000
  1039. FEAC: 0000                DATA >0000
  1040. FEAE: 0000                DATA >0000
  1041. FEB0: 0000                DATA >0000
  1042. FEB2: 0000                DATA >0000
  1043. FEB4: 0000                DATA >0000
  1044.  
  1045. FEB6: 2C48                DATA >2C48            ; >1234 reversed
  1046.  
  1047. FEB8: 1234                DATA >1234
  1048. FEBA: E819                DATA >E819
  1049. FEBC: 15CB                DATA >15CB
  1050. FEBE: FFFF                DATA >FFFF
  1051.  
  1052. FEC0: 001D 2060 008C      SLAM @>008C,1,2       ; update progress code in R6, Workspace >0080
  1053.  
  1054. FEC6: 0700                SETO R0
  1055. FEC8: 0202 FEFF           LI   R2,>FEFF
  1056. FECC: 0204 EFFF           LI   R4,>EFFF
  1057. FED0: 04C6                CLR  R6
  1058. FED2: 04C7                CLR  R7
  1059. FED4: 04C8                CLR  R8
  1060. FED6: 04C9                CLR  R9
  1061. FED8: 04CA                CLR  R10
  1062. FEDA: 02CC                STST R12
  1063. FEDC: 026C 0010           ORI  R12,>0010        ; enable writable control store to use custom XOP
  1064. FEE0: 008C                LST  R12
  1065. FEE2: 020C 1FA0           LI   R12,>1FA0
  1066. FEE6: 1E03                SBZ  >0003
  1067.  
  1068. ; map test loop start
  1069. FEE8: C067 FFA8           MOV  @>FFA8(R7),R1    ; first table
  1070. FEEC: C0E7 FFB0           MOV  @>FFB0(R7),R3    ; second table
  1071. FEF0: C167 FFB8           MOV  @>FFB8(R7),R5    ; third table
  1072. FEF4: 02E0 0120           LWPI >0120
  1073. FEF8: 020B 0100           LI   R11,>0100
  1074. FEFC: 032B                LMF  R11,0            ; previous R0-R5 -> map file
  1075. FEFE: 02E0 0100           LWPI >0100
  1076.  
  1077. FF02: C226 FFC0           MOV  @>FFC0(R6),R8    ; load address we want to test from table
  1078. FF06: C249                MOV  R9,R9
  1079. FF08: C28A                MOV  R10,R10
  1080. FF0A: 2C40                XOP  R0,1             ; this instruction must be defined by LCS.
  1081. ; result : 16 LSBs of address in R9, 4 MSBs of address in 4 MSBs of R10 (all reversed and inverted)
  1082. ; 4 next bits of R10 seem to be an index in the map table (????)
  1083. FF0C: 100A                JMP  >FF22
  1084.  
  1085.  
  1086. ; loop test (we increment, and either loop or exit)
  1087. FF0E: 05C7                INCT R7               ; try another map file
  1088. FF10: 0287 0008           CI   R7,>0008
  1089. FF14: 11E9                JLT  >FEE8
  1090.  
  1091. FF16: 05C6                INCT R6               ; try another address to test mapping
  1092. FF18: 04C7                CLR  R7
  1093. FF1A: 0286 001E           CI   R6,>001E
  1094. FF1E: 11E4                JLT  >FEE8
  1095.  
  1096. FF20: 1062                JMP  >FFE6            ; exit OK to next test on next ROM page
  1097.  
  1098.  
  1099. ; map test loop (continued)
  1100. FF22: C30A                MOV  R10,R12
  1101. FF24: 04C0                CLR  R0
  1102. FF26: 0E00 000C           IOF  R0,R12
  1103. FF2A: 054C                INV  R12
  1104. FF2C: 024C 000F           ANDI R12,>000F        ; R12 = address 4 MSB
  1105. FF30: 0E00 0009           IOF  R0,R9
  1106. FF34: 0549                INV  R9               ; R9 = address 16 LSB
  1107. FF36: 0540                INV  R0
  1108. FF38: 098A                SRL  R10,8
  1109. FF3A: 024A 000F           ANDI R10,>000F
  1110.  
  1111. FF3E: 0288 0100           CI   R8,>0100         ; does B2 apply ?
  1112. FF42: 150F                JGT  >FF62
  1113. ; case R8 < >0100
  1114. FF44: 028A 0006           CI   R10,>0006        ; -> a >9 reversed and inverted ???
  1115. FF48: 162D                JNE  >FFA4            ; error...
  1116. FF4A: C2C1                MOV  R1,R11
  1117. FF4C: 09CB                SRL  R11,12
  1118. FF4E: 830B                C    R11,R12          ; compare 4 MSBs of address
  1119. FF50: 1629                JNE  >FFA4
  1120. FF52: C2C1                MOV  R1,R11
  1121. FF54: 0A4B                SLA  R11,4
  1122. FF56: C308                MOV  R8,R12
  1123. FF58: 091C                SRL  R12,1
  1124. FF5A: A2CC                A    R12,R11
  1125. FF5C: 824B                C    R11,R9           ; compare 16 LSBs of address
  1126. FF5E: 1622                JNE  >FFA4
  1127. FF60: 10D6                JMP  >FF0E            ; loop
  1128.  
  1129. FF62: 0288 1000           CI   R8,>1000         ; does B3 apply ?
  1130. FF66: 150F                JGT  >FF86
  1131.  
  1132. FF68: 028A 000A           CI   R10,>000A        ; -> a >A reversed and inverted ???
  1133. FF6C: 161B                JNE  >FFA4
  1134. FF6E: C2C3                MOV  R3,R11
  1135. FF70: 09CB                SRL  R11,12
  1136. FF72: 830B                C    R11,R12
  1137. FF74: 1617                JNE  >FFA4
  1138. FF76: C2C3                MOV  R3,R11
  1139. FF78: 0A4B                SLA  R11,4
  1140. FF7A: C308                MOV  R8,R12
  1141. FF7C: 091C                SRL  R12,1
  1142. FF7E: A2CC                A    R12,R11
  1143. FF80: 824B                C    R11,R9
  1144. FF82: 1610                JNE  >FFA4
  1145. FF84: 10C4                JMP  >FF0E            ; loop
  1146.  
  1147. ; no Bn bias register apply
  1148. FF86: 028A 000C           CI   R10,>000C        ; -> a >C reversed and inverted ???
  1149. FF8A: 160C                JNE  >FFA4
  1150. FF8C: C2C5                MOV  R5,R11
  1151. FF8E: 09CB                SRL  R11,12
  1152. FF90: 830B                C    R11,R12
  1153. FF92: 1608                JNE  >FFA4
  1154. FF94: C2C5                MOV  R5,R11
  1155. FF96: 0A4B                SLA  R11,4
  1156. FF98: C308                MOV  R8,R12
  1157. FF9A: 091C                SRL  R12,1
  1158. FF9C: A2CC                A    R12,R11
  1159. FF9E: 824B                C    R11,R9
  1160. FFA0: 1601                JNE  >FFA4
  1161. FFA2: 10B5                JMP  >FF0E
  1162.  
  1163. ; error exit  point
  1164. FFA4: 0460 FFE0           B    @>FFE0
  1165.  
  1166. ; map file table start
  1167. ; L1, L2 & L3 are a fixed >FFFF, FEFF, EFFF (-> addresses >0000, >0100, >1000)
  1168. ; B1
  1169. FFA8: 1111                DATA >1111
  1170. FFAA: 2222                DATA >2222
  1171. FFAC: 4444                DATA >4444
  1172. FFAE: 8888                DATA >8888
  1173. ; B2
  1174. FFB0: 1109                DATA >1109
  1175. FFB2: 221A                DATA >221A
  1176. FFB4: 443C                DATA >443C
  1177. FFB6: 8880                DATA >8880
  1178. ; B3
  1179. FFB8: 1091                DATA >1091
  1180. FFBA: 21A2                DATA >21A2
  1181. FFBC: 43C4                DATA >43C4
  1182. FFBE: 8808                DATA >8808
  1183.  
  1184. ; table with addresses we want to test
  1185. FFC0: 000E                DATA >000E
  1186. FFC2: 0016                DATA >0016
  1187. FFC4: 001A                DATA >001A
  1188. FFC6: 001C                DATA >001C
  1189. FFC8: 001E                DATA >001E
  1190. FFCA: 010E                DATA >010E
  1191. FFCC: 0116                DATA >0116
  1192. FFCE: 011A                DATA >011A
  1193. FFD0: 011C                DATA >011C
  1194. FFD2: 011E                DATA >011E
  1195. FFD4: 100E                DATA >100E
  1196. FFD6: 1016                DATA >1016
  1197. FFD8: 101A                DATA >101A
  1198. FFDA: 101C                DATA >101C
  1199. FFDC: 101E                DATA >101E
  1200.  
  1201. FFDE: 0300                DATA >0300
  1202.  
  1203. ; error exit (cross-page jump)
  1204. FFE0: 0205 FFE6           LI   R5,>FFE6
  1205. FFE4: 1002                JMP  >FFEA
  1206.  
  1207. ; normal exit (cross-page jump)
  1208. FFE6: 0205 FC00           LI   R5,>FC00
  1209.  
  1210. FFEA: 0204 0200           LI   R4,>0200
  1211. FFEE: 020C 1FB4           LI   R12,>1FB4
  1212. FFF2: 30C4                LDCR R4,3             ; switch to page 2 ?
  1213. FFF4: 0455                B    *R5
  1214.  
  1215. FFF6: FFFF                DATA >FFFF
  1216. FFF8: FFFF                DATA >FFFF
  1217. FFFA: FFFF                DATA >FFFF
  1218. FFFC: FFFF                DATA >FFFF
  1219. FFFE: FFFF                DATA >FFFF
  1220.  
  1221.  
  1222.  
  1223.  
  1224.  
  1225.  
  1226.  
  1227.  
  1228.  
  1229.  
  1230. ; ROM page 2.
  1231.  
  1232. FC00: 0206 0400           LI   R6,>0400
  1233. FC04: C806 008C           MOV  R6,@>008C
  1234. FC08: 0201 1234           LI   R1,>1234
  1235. FC0C: C801 0176           MOV  R1,@>0176
  1236. FC10: 0201 E819           LI   R1,>E819
  1237. FC14: C801 0178           MOV  R1,@>0178
  1238. FC18: 002A 4820 FC56 0176 SM   @>FC56,@>0176,4
  1239. FC20: 0706                SETO R6
  1240. FC22: 0046 4820 FC5A 0176 CS   R6,@>FC5A,@>0176,4
  1241. FC2A: 1613                JNE  >FC52
  1242. FC2C: 0208 ABCD           LI   R8,>ABCD
  1243. FC30: 0209 EF59           LI   R9,>EF59
  1244. FC34: 0028 3220 FC56      ANDM @>FC56,R8,3
  1245. FC3A: 0027 3220 FC5A      ORM  @>FC5A,R8,3
  1246. FC40: 0026 3220 FC5E      XORM @>FC5E,R8,3
  1247. FC46: 0288 1215           CI   R8,>1215
  1248. FC4A: 1603                JNE  >FC52
  1249. FC4C: 0289 0359           CI   R9,>0359
  1250. FC50: 130A                JEQ  >FC66
  1251. FC52: 0460 FFE6           B    @>FFE6
  1252.  
  1253. FC56: 4816 5800           DATA >4816,>5800
  1254. FC5A: 5A4B 4019           DATA >5A4B,>4019
  1255. FC5E: 485A 4B40           DATA >485A,>4B40
  1256. FC62: 1900                DATA >1900
  1257. FC64: 0000                DATA >0000
  1258.  
  1259. ; memory test
  1260. FC66: 001D 20A0 008C      SLAM @>008C,2,2       ; update progress code
  1261.  
  1262. FC6C: 04C5                CLR  R5
  1263. FC6E: 04C6                CLR  R6
  1264. FC70: 02A4                STWP R4
  1265. FC72: C044                MOV  R4,R1
  1266. FC74: 0221 000A           AI   R1,>000A         ; R1 points to R5
  1267. FC78: 0202 FCEE           LI   R2,>FCEE
  1268. FC7C: 020C 1FA0           LI   R12,>1FA0
  1269. FC80: 04C3                CLR  R3
  1270. FC82: 0322                LMF  R2,0             ; map file loaded is empty, I think
  1271. FC84: 1D03                SBO  >0003
  1272.  
  1273. ; test loop
  1274. FC86: 0286 0000           CI   R6,>0000
  1275. FC8A: 161E                JNE  >FCC8
  1276. FC8C: 0283 F800           CI   R3,>F800
  1277. FC90: 141F                JHE  >FCD0            ; cannot test >F800->FFFF (always maps to TILINE and ROM)
  1278. FC92: 8103                C    R3,R4
  1279. FC94: 1602                JNE  >FC9A
  1280. FC96: 0223 0020           AI   R3,>0020         ; do not overwrite our workspace...
  1281.  
  1282. FC9A: 0791                LDS  *R1
  1283. FC9C: C013                MOV  *R3,R0           ; save * (R6:R3)
  1284. FC9E: 07D1                LDD  *R1
  1285. FCA0: C4E0 FCF2           MOV  @>FCF2,*R3       ; write >AAAA to * (R6:R3)
  1286. FCA4: 0791                LDS  *R1
  1287. FCA6: 8813 FCF2           C    *R3,@>FCF2
  1288. FCAA: 1616                JNE  >FCD8            ; exit in error if different
  1289. FCAC: 0791                LDS  *R1
  1290. FCAE: 0553                INV  *R3
  1291. FCB0: 0791                LDS  *R1
  1292. FCB2: 8813 FCF4           C    *R3,@>FCF4       ; compare with >5555 = ~ >AAAA
  1293. FCB6: 1610                JNE  >FCD8
  1294. FCB8: 07D1                LDD  *R1
  1295. FCBA: CCC0                MOV  R0,*R3+          ; restore * (R6:R3), and increment R3
  1296. FCBC: 0283 0000           CI   R3,>0000
  1297. FCC0: 16E2                JNE  >FC86            ; loop if R3 has not wrapped around to 0
  1298. FCC2: 0226 0800           AI   R6,>0800         ; else fix bias (B1) for LDS/LDD to point to next 64kb
  1299. FCC6: 10DF                JMP  >FC86            ; and loop
  1300.  
  1301. FCC8: 0286 1000           CI   R6,>1000         ; jump here if R6 != 0
  1302. FCCC: 11E6                JLT  >FC9A            ; continue if not testing address over >020000 (>10000)
  1303. FCCE: 1013                JMP  >FCF6            ; else exit
  1304.  
  1305. FCD0: 0226 0800           AI   R6,>0800         ; skip system area (TPCS and ROM)
  1306. FCD4: 04C3                CLR  R3               ; and jump to >010000 (>08000)
  1307. FCD6: 10E1                JMP  >FC9A
  1308.  
  1309. ; error exit :
  1310. FCD8: 07D1                LDD  *R1
  1311. FCDA: C4C0                MOV  R0,*R3           ; try to restore memory data
  1312. FCDC: C803 0094           MOV  R3,@>0094        ; save current address
  1313. FCE0: 09B6                SRL  R6,11
  1314. FCE2: C806 0090           MOV  R6,@>0090        ; save address MSBits.
  1315. FCE6: 0A33                SLA  R3,3
  1316. FCE8: 1306                JEQ  >FCF6            ; if we are on a 8 kbyte boundary, we must have only
  1317.                                                 ; reached end of memory, so we jump to normal exit
  1318. FCEA: 0460 FFE6           B    @>FFE6           ; exit in error to next page
  1319.  
  1320. ; empty map file
  1321. FCEE: 0000 0000           DATA >0000,>0000      ; L1 = ~ >FFFF, B1 = >0000
  1322. FCF2: AAAA 5555           DATA >AAAA,>5555      ; L2 = ~ >5555, B2 = >5555
  1323.  
  1324. ; Memory test exit point
  1325. ; Error interrupt test
  1326. ; The CPU triggers a level-2 interrupt on some error conditions : unimplemented memory,
  1327. ; illegal instructions, overflow...
  1328. FCF6: 001D 2060 008C      SLAM 2,@>008C,1       ; update progress code
  1329.  
  1330. FCFC: 020C 1FC0           LI   R12,>1FC0
  1331. FD00: 04C1                CLR  R1
  1332. FD02: 3001                LDCR R1,16
  1333.  
  1334. ; save current interrupt vectors to >0180
  1335. FD04: 0202 0180           LI   R2,>0180
  1336. FD08: CCB1                MOV  *R1+,*R2+
  1337. FD0A: 0281 0040           CI   R1,>0040
  1338. FD0E: 11FC                JLT  >FD08
  1339.  
  1340. ; set all int vectors to default spurious int handler
  1341. FD10: 04C1                CLR  R1
  1342. FD12: 0202 0100           LI   R2,>0100
  1343. FD16: 0203 FFE2           LI   R3,>FFE2
  1344. FD1A: CC42                MOV  R2,*R1+
  1345. FD1C: CC43                MOV  R3,*R1+
  1346. FD1E: 0281 0040           CI   R1,>0040
  1347. FD22: 11FB                JLT  >FD1A
  1348.  
  1349. ; test timeout error
  1350. FD24: 0201 FD38           LI   R1,>FD38
  1351. FD28: C801 000A           MOV  R1,@>000A        ; set int 2 routine
  1352. FD2C: 0300 0002           LIMI >0002            ; allow int 2 (machine error)
  1353. FD30: C060 FBFE           MOV  @>FBFE,R1        ; no memory there -> timeout error
  1354. FD34: 0460 FFE2           B    @>FFE2           ; error exit
  1355.  
  1356. ; int 2 routine
  1357. FD38: 0200 8000           LI   R0,>8000         ; bit 0 = timeout bit
  1358. FD3C: 06A0 FFC8           BL   @>FFC8           ; clear
  1359. ; test priviledge violation error
  1360. FD40: 0201 FD5C           LI   R1,>FD5C
  1361. FD44: C801 000A           MOV  R1,@>000A
  1362. FD48: 0300 0002           LIMI >0002            ; allow int 2
  1363. FD4C: 02C1                STST R1
  1364. FD4E: 0261 0100           ORI  R1,>0100         ; set ST_PR bit
  1365. FD52: 0081                LST  R1               ; -> switch to user mode
  1366. FD54: 0300 0002           LIMI >0002            ; should trigger a priviledge violation error
  1367. FD58: 0460 FFE2           B    @>FFE2
  1368.  
  1369. ; int 2 routine
  1370. FD5C: 0200 4000           LI   R0,>4000         ; bit 1 = priviledge violation
  1371. FD60: 06A0 FFC8           BL   @>FFC8
  1372. ; test illegal opcode error
  1373. FD64: 0201 FD76           LI   R1,>FD76
  1374. FD68: C801 000A           MOV  R1,@>000A
  1375. FD6C: 0300 0002           LIMI >0002            ; allow int 2
  1376. FD70: 0000                DATA >0000            ; illegal instruction
  1377. FD72: 0460 FFE2           B    @>FFE2           ; exit in error
  1378.  
  1379. ; int 2 routine
  1380. FD76: 0200 2000           LI   R0,>2000         ; bit 2 = illegal instruction
  1381. FD7A: 06A0 FFC8           BL   @>FFC8
  1382. ; test memory parity error
  1383. FD7E: 0201 FD9A           LI   R1,>FD9A
  1384. FD82: C801 000A           MOV  R1,@>000A
  1385. FD86: 020C 1FA0           LI   R12,>1FA0
  1386. FD8A: 1D09                SBO  >0009            ; enable parity checking ?
  1387. FD8C: 0300 0002           LIMI >0002
  1388. FD90: C060 FC00           MOV  @>FC00,R1        ; obviously triggers a parity error - why ?
  1389. FD94: 1E09                SBZ  >0009
  1390. FD96: 0460 FFE2           B    @>FFE2
  1391.  
  1392. FD9A: 1E09                SBZ  >0009
  1393. FD9C: 0200 1000           LI   R0,>1000         ; bit 3 = Memory parity error
  1394. FDA0: 06A0 FFC8           BL   @>FFC8
  1395. ; test address beyond map error
  1396. FDA4: 0201 FDE4           LI   R1,>FDE4
  1397. FDA8: C801 000A           MOV  R1,@>000A
  1398. FDAC: 0202 0000           LI   R2,>0000
  1399. FDB0: 0542                INV  R2               ; L1 = ~ >0000
  1400. FDB2: 04C3                CLR  R3               ; B1 = 0
  1401. FDB4: 0204 EFFE           LI   R4,>EFFE
  1402. FDB8: 0544                INV  R4               ; L2 = ~ >EFFE
  1403. FDBA: 04C5                CLR  R5               ; B2 = 0
  1404. FDBC: 0206 0000           LI   R6,>0000
  1405. FDC0: 0546                INV  R6               ; L3 = ~ >0000 (-> will be ignored)
  1406. FDC2: 04C7                CLR  R7               ; B3 = 0
  1407. FDC4: 02A1                STWP R1
  1408. FDC6: 0221 0004           AI   R1,>0004         ; points to R2
  1409. FDCA: 0321                LMF  R1,0             ; load map file
  1410. FDCC: 020C 1FA0           LI   R12,>1FA0
  1411. FDD0: 1D03                SBO  >0003
  1412. FDD2: 0300 0000           LIMI >0000
  1413. FDD6: C060 F020           MOV  @>F020,R1        ; address not defined in memory map
  1414. FDDA: 1E03                SBZ  >0003
  1415. FDDC: 0300 0002           LIMI >0002
  1416. FDE0: 0460 FFE2           B    @>FFE2
  1417.  
  1418. FDE4: 1E03                SBZ  >0003
  1419. FDE6: 0200 8800           LI   R0,>8800         ; bits 0 and 4 = timeout & Address beyond map bits
  1420. FDEA: 06A0 FFC8           BL   @>FFC8
  1421. ; test memory protection
  1422. FDEE: 0201 FE30           LI   R1,>FE30
  1423. FDF2: C801 000A           MOV  R1,@>000A
  1424. FDF6: 0702                SETO R2               ; L1 = ~ >0000
  1425. FDF8: 04C3                CLR  R3               ; B1 = 0
  1426. FDFA: 0204 FEE2           LI   R4,>FEE2         ; L2 = ~ (>0100 | >1D) (5 LSBits ignored for address
  1427.                                                 ; - must tell the memory is execution protected)
  1428.                                                 ; B2 in R5 should still be 0, but maybe we don't care
  1429. FDFE: 04C6                CLR  R6               ; L3 = ~ >FFFF
  1430. FE00: 04C7                CLR  R7               ; B3 = 0
  1431. FE02: 02A1                STWP R1
  1432. FE04: 0221 0004           AI   R1,>0004
  1433. FE08: 0321                LMF  R1,0             ; load map file
  1434. FE0A: 020C 1FA0           LI   R12,>1FA0
  1435. FE0E: 1D03                SBO  >0003
  1436. FE10: 0200 1000           LI   R0,>1000         ; NOP instruction
  1437. FE14: 02C1                STST R1
  1438. FE16: 0261 0040           ORI  R1,>0040         ; memory management bit
  1439. FE1A: 0081                LST  R1
  1440. FE1C: 0300 0002           LIMI >0002
  1441. FE20: 04A0 0100           X    @>0100           ; actually executes NOP in R0, I think
  1442. FE24: 1E03                SBZ  >0003
  1443. FE26: 0241 FFB1           ANDI R1,>FFB1         ; clear memory management bit
  1444. FE2A: 0081                LST  R1
  1445. FE2C: 0460 FFE2           B    @>FFE2
  1446.  
  1447. FE30: 1E03                SBZ  >0003
  1448. FE32: 0241 FFB1           ANDI R1,>FFB1
  1449. FE36: 0081                LST  R1
  1450. FE38: 0200 0200           LI   R0,>0200         ; bit 6 : execution in execute-protected memory
  1451. FE3C: 06A0 FFC8           BL   @>FFC8
  1452. FE40: 0201 FE82           LI   R1,>FE82
  1453. FE44: C801 000A           MOV  R1,@>000A
  1454. FE48: 0702                SETO R2               ; L1 = ~ >0000
  1455. FE4A: 04C3                CLR  R3
  1456. FE4C: 0204 FEE1           LI   R4,>FEE1         ; L2 = ~ (>0100 | >1E) (must tell memory is write-protected)
  1457. FE50: 04C5                CLR  R5
  1458. FE52: 04C6                CLR  R6
  1459. FE54: 04C7                CLR  R7
  1460. FE56: 02A1                STWP R1
  1461. FE58: 0221 0004           AI   R1,>0004
  1462. FE5C: 0321                LMF  R1,0
  1463. FE5E: 020C 1FA0           LI   R12,>1FA0
  1464. FE62: 1D03                SBO  >0003
  1465. FE64: 02C1                STST R1
  1466. FE66: 0261 0040           ORI  R1,>0040         ; memory management bit
  1467. FE6A: 0081                LST  R1
  1468. FE6C: 0300 0002           LIMI >0002
  1469. FE70: C820 00E0 0100      MOV  @>00E0,@>0100
  1470. FE76: 1E03                SBZ  >0003
  1471. FE78: 0241 FFB1           ANDI R1,>FFB1
  1472. FE7C: 0081                LST  R1
  1473. FE7E: 0460 FFE2           B    @>FFE2
  1474.  
  1475. FE82: 1E03                SBZ  >0003
  1476. FE84: 0241 FFB1           ANDI R1,>FFB1
  1477. FE88: 0081                LST  R1
  1478. FE8A: 0200 0100           LI   R0,>0100         ; bit 7 : write in write-protected memory
  1479. FE8E: 06A0 FFC8           BL   @>FFC8
  1480. FE92: 0201 FEB2           LI   R1,>FEB2
  1481. FE96: C801 000A           MOV  R1,@>000A
  1482. FE9A: 0703                SETO R3
  1483. FE9C: 0300 0002           LIMI >0002
  1484. FEA0: 00D3 6820 FEAC 0100 MVSK R3,@>FEAC,@>0100,6   ; move string from stack - whatever it does
  1485.                                                     ; distinct from POPS - POP String from stack
  1486. FEA8: 0460 FFE2           B    @>FFE2
  1487.  
  1488. ; MAYBE the data that follow is a stack descriptor.
  1489. ; Anyway, we need something like this, since I can't see any place where we set up a SP and
  1490. ; stack bounds.  Maybe these are hard-coded, but why should MVSK take 2 operands, then ?
  1491. FEAC: 0102                DATA >0102                ; current stack pointer ?
  1492. FEAE: 0100                DATA >0100                ; stack bottom ? (or stack growth limit ?)
  1493. FEB0: 0104                DATA >0104                ; stack growth limit ? (or stack bottom ?)
  1494.  
  1495.  
  1496. FEB2: 0200 0080           LI   R0,>0080         ; bit 8 : stack overflow
  1497. FEB6: 06A0 FFC8           BL   @>FFC8
  1498. FEBA: 0201 FF2A           LI   R1,>FF2A
  1499. FEBE: C801 000A           MOV  R1,@>000A
  1500. FEC2: 04C1                CLR  R1
  1501. FEC4: 0202 FCEE           LI   R2,>FCEE         ; points on empty map file
  1502. FEC8: 0322                LMF  R2,0             ; load both map files
  1503. FECA: 0332                LMF  R2,1
  1504.  
  1505. ; test loop entry point
  1506. FECC: 0281 000E           CI   R1,>000E         ; index from >0*2 to >7*2
  1507. FED0: 1542                JGT  >FF56            ; exit loop if greater
  1508. FED2: C0E1 FF36           MOV  @>FF36(R1),R3    ; read breakpoint generator operation mode ?
  1509. FED6: 020C 1FAA           LI   R12,>1FAA
  1510. FEDA: 30C3                LDCR R3,3
  1511. FEDC: 0203 0101           LI   R3,>0101         ; breakpoint address, I guess - LSBit meaning unknown
  1512. FEE0: 020C 1F80           LI   R12,>1F80
  1513. FEE4: 3003                LDCR R3,16
  1514. FEE6: 02C2                STST R2
  1515. FEE8: 0281 0008           CI   R1,>0008
  1516. FEEC: 1103                JLT  >FEF4
  1517.  
  1518. FEEE: 0262 0080           ORI  R2,>0080         ; -> use map file 1
  1519. FEF2: 1002                JMP  >FEF8
  1520.  
  1521. FEF4: 0242 FF7F           ANDI R2,>FF7F         ; -> use map file 0
  1522.  
  1523. FEF8: 0082                LST  R2               ; write in ST
  1524. FEFA: 0300 0002           LIMI >0002
  1525. FEFE: C0A1 FF46           MOV  @>FF46(R1),R2    ; load test routine address
  1526. FF02: 020C 1FA0           LI   R12,>1FA0
  1527. FF06: 1D03                SBO  >0003
  1528. FF08: 0452                B    *R2              ; jump
  1529.  
  1530. FF0A: C820 0100 0104      MOV  @>0100,@>0104    ; read from >0100
  1531. FF10: 0460 FFE2           B    @>FFE2
  1532.  
  1533. FF14: 0200 1000           LI   R0,>1000         ; NOP
  1534. FF18: 04A0 0100           X    @>0100           ; execute at >0100
  1535. FF1C: 0460 FFE2           B    @>FFE2
  1536.  
  1537. FF20: C820 0104 0100      MOV  @>0104,@>0100    ; write to >0100
  1538. FF26: 0460 FFE2           B    @>FFE2
  1539.  
  1540.  
  1541. FF2A: 0200 0040           LI   R0,>0040         ; breakpoint address encountered ?
  1542. FF2E: 06A0 FFC8           BL   @>FFC8
  1543. FF32: 05C1                INCT R1
  1544. FF34: 10CB                JMP  >FECC
  1545.  
  1546. ; table 1 for test loop : breakpoint mode ?
  1547. FF36: 0000                DATA >0000            ; break on read, map file 0 ?
  1548. FF38: 0400                DATA >0400            ; break on execute ?
  1549. FF3A: 0200                DATA >0200            ; break on write ?
  1550. FF3C: 0600                DATA >0600            ; ???
  1551. FF3E: 0100                DATA >0100            ; same as above with map file 1 ?
  1552. FF40: 0500                DATA >0500
  1553. FF42: 0300                DATA >0300
  1554. FF42: 0700                DATA >0700
  1555. ; table 2 for test loop : test code
  1556. FF46: FF0A                DATA >FF0A            ; read
  1557. FF48: FF14                DATA >FF14            ; execute
  1558. FF4A: FF20                DATA >FF20            ; write
  1559. FF4C: FF0A                DATA >FF0A            ; read
  1560. FF4E: FF0A                DATA >FF0A
  1561. FF50: FF14                DATA >FF14
  1562. FF52: FF20                DATA >FF20
  1563. FF54: FF0A                DATA >FF0A
  1564.  
  1565.  
  1566. FF56: 020C 1FA0           LI   R12,>1FA0
  1567. FF5A: 1E03                SBZ  >0003
  1568. ; clock test
  1569. FF5C: 0201 FF7E           LI   R1,>FF7E
  1570. FF60: C801 000A           MOV  R1,@>000A
  1571. FF64: 020C 1FA0           LI   R12,>1FA0
  1572. FF68: 0300 0002           LIMI >0002
  1573. FF6C: 0202 1C00           LI   R2,>1C00
  1574. FF70: 1D01                SBO  >0001            ; enable clock ?
  1575. FF72: 0602                DEC  R2               ; wait for clock to trigger
  1576. FF74: C082                MOV  R2,R2            ; this loop should execute in about 12ms
  1577. FF76: 15FD                JGT  >FF72            ; more than 1500000  instructions per second - not so bad
  1578. FF78: 1E01                SBZ  >0001
  1579. FF7A: 0460 FFE2           B    @>FFE2
  1580.  
  1581.  
  1582. FF7E: 1E01                SBZ  >0001
  1583. FF80: 0200 0020           LI   R0,>0020         ; 12ms test clock
  1584. FF84: 06A0 FFC8           BL   @>FFC8
  1585. ; arithmetic overflow interrupt test
  1586. FF88: 0201 FFA8           LI   R1,>FFA8
  1587. FF8C: C801 000A           MOV  R1,@>000A
  1588. FF90: 0201 7FFF           LI   R1,>7FFF
  1589. FF94: C081                MOV  R1,R2
  1590. FF96: 0300 0002           LIMI >0002
  1591. FF9A: 02C3                STST R3
  1592. FF9C: 0263 0020           ORI  R3,>0020         ; arithmetic overflow enable
  1593. FFA0: 0083                LST  R3
  1594. FFA2: A081                A    R1,R2            ; >7FFF + >7FFF = >FFFE, and overflow bit is set
  1595. FFA4: 0460 FFE2           B    @>FFE2
  1596.  
  1597.  
  1598. FFA8: 0243 F7D1           ANDI R3,>F7D1
  1599. FFAC: 0083                LST  R3
  1600. FFAE: 0200 0010           LI   R0,>0010         ; arithmetic overflow bit
  1601. FFB2: 06A0 FFC8           BL   @>FFC8
  1602. FFB6: 101A                JMP  >FFEC            ; exit OK to next page
  1603.  
  1604. FFB8: 04C1                CLR  R1
  1605. FFBA: 0202 0180           LI   R2,>0180
  1606. FFBE: CC72                MOV  *R2+,*R1+
  1607. FFC0: 0281 0040           CI   R1,>0040
  1608. FFC4: 11FC                JLT  >FFBE
  1609. FFC6: 045B                B    *R11
  1610.  
  1611. ; This routine checks that R0 matches the error interrupt register.
  1612. FFC8: 020C 1FC0           LI   R12,>1FC0
  1613. FFCC: 3401                STCR R1,16            ; read error interrupt register
  1614. FFCE: 0241 FFFE           ANDI R1,>FFFE         ; clear system type indicator ?
  1615. FFD2: 04C3                CLR  R3
  1616. FFD4: 3003                LDCR R3,16            ; clear error interrupt register
  1617. FFD6: C0C0                MOV  R0,R3
  1618. FFD8: 0027 20C1           ORM  R1,R3,2
  1619. FFDC: 80C0                C    R0,R3            ; are there extra error bits ?
  1620. FFDE: 1601                JNE  >FFE2            ; if so, exit in error
  1621. FFE0: 045B                B    *R11
  1622.  
  1623. ; spurious interrupt handler, and error exit handler for the error interrupt test
  1624. ; restore vectors, then jump to next page in error
  1625. FFE2: 06A0 FFB8           BL   @>FFB8
  1626.  
  1627. ; jump to next page in error
  1628. FFE6: 0205 FE20           LI   R5,>FE20
  1629. FFEA: 1002                JMP  >FFF0
  1630. ; jump to next page OK
  1631. FFEC: 0205 FC00           LI   R5,>FC00
  1632.  
  1633. FFF0: 0204 0300           LI   R4,>0300
  1634. FFF4: 020C 1FB4           LI   R12,>1FB4
  1635. FFF8: 30C4                LDCR R4,3             ; jump to page 3 ?
  1636. FFFA: 0455                B    *R5
  1637.  
  1638. FFFC: FFFF                DATA >FFFF
  1639. FFFE: FFFF                DATA >FFFF
  1640.  
  1641.  
  1642.  
  1643.  
  1644.  
  1645.  
  1646.  
  1647.  
  1648.  
  1649.  
  1650. ; ROM page 3.
  1651. ; Self-test routine (end)
  1652.  
  1653. ; First an interrupt test
  1654. FC00: 001D 2060 008C      SLAM @>008C,1,2       ; update progress code in R6, Workspace >0080
  1655. FC06: 0300 0000           LIMI >0000            ; disable all interrupts
  1656.  
  1657. FC0A: 0201 0104           LI   R1,>0104         ; clear RAM from >0104 to >0180
  1658. FC0E: 04F1                CLR  *R1+
  1659. FC10: 0281 017F           CI   R1,>017F
  1660. FC14: 1AFC                JL   >FC0E
  1661.  
  1662. FC16: 0200 0154           LI   R0,>0154
  1663. FC1A: C800 0152           MOV  R0,@>0152        ; set-up pointer used by our test interrupt vector
  1664.  
  1665. FC1E: 04C2                CLR  R2               ; set up vectors for all masked interrupt
  1666. FC20: C4A2 FD82           MOV  @>FD82(R2),*R2   ; with contents of a table at offset >FD82
  1667. FC24: 05C2                INCT R2               ; why on earth don't they use MOV  @>FD82(R2),*R2+ ???
  1668. FC26: 0282 0040           CI   R2,>0040
  1669. FC2A: 1AFA                JL   >FC20
  1670.  
  1671. FC2C: 020C 1FA0           LI   R12,>1FA0
  1672. FC30: 1D08                SBO  >0008
  1673.  
  1674. FC32: 020C 1F80           LI   R12,>1F80
  1675. FC36: 1D0F                SBO  >000F            ; so level-15 interrupt is pending
  1676. FC38: 1D08                SBO  >0008            ; and level-8
  1677. FC3A: 1D03                SBO  >0003            ; and level-3
  1678.  
  1679. FC3C: C020 0154           MOV  @>0154,R0        ; should still be 0, since interrupts are disabled
  1680. FC40: 1637                JNE  >FCB0
  1681.  
  1682. FC42: 0300 000F           LIMI >000F            ; enable all interrupts
  1683. ; At this point, the 3 pending interrupts should execute in the order of their priority, and
  1684. ; append their ID at the location pointed by @>0152 - initially >0154, so we should have :
  1685. ;0154: 0003 0008 000F
  1686.  
  1687. FC46: C020 0154           MOV  @>0154,R0        ; test 1st word
  1688. FC4A: 0280 0003           CI   R0,>0003
  1689. FC4E: 1630                JNE  >FCB0            ; jump on error
  1690. FC50: C020 0156           MOV  @>0156,R0        ; test 2nd word
  1691. FC54: 0280 0008           CI   R0,>0008
  1692. FC58: 162B                JNE  >FCB0
  1693. FC5A: C020 0158           MOV  @>0158,R0        ; test 3rd word
  1694. FC5E: 0280 000F           CI   R0,>000F
  1695. FC62: 1626                JNE  >FCB0
  1696.  
  1697. FC64: 020C 1F80           LI   R12,>1F80
  1698. FC68: 05A0 0150           INC  @>0150           ; set flag to ask level-3 routine to trigger level 3 and >F
  1699.  
  1700. FC6C: 1D08                SBO  >0008            ; trigger level 8 again
  1701. FC6E: C020 015A           MOV  @>015A,R0        ; test word
  1702. FC72: 0280 0008           CI   R0,>0008
  1703. FC76: 161C                JNE  >FCB0
  1704.  
  1705. FC78: C020 015C           MOV  @>015C,R0        ; level 3 should follow
  1706. FC7C: 0280 0003           CI   R0,>0003
  1707. FC80: 1617                JNE  >FCB0
  1708. FC82: C020 015E           MOV  @>015E,R0        ; then level >F
  1709. FC86: 0280 000F           CI   R0,>000F
  1710. FC8A: 1612                JNE  >FCB0
  1711.  
  1712. FC8C: 04C1                CLR  R1
  1713.  
  1714. FC8E: 05C1                INCT R1
  1715. FC90: 0281 0014           CI   R1,>0014         ; 10 iterations
  1716. FC94: 1B08                JH   >FCA6
  1717. FC96: 04C2                CLR  R2
  1718. FC98: 020C 1F80           LI   R12,>1F80
  1719. FC9C: 04A1 FDC0           X    @>FDC0(R1)       ; trigger interrupt
  1720. FCA0: 8042                C    R2,R1            ; the interrupt routine should set R2 to the same value as R1
  1721. FCA2: 1606                JNE  >FCB0
  1722. FCA4: 10F4                JMP  >FC8E            ; loop
  1723.  
  1724. FCA6: C020 0160           MOV  @>0160,R0        ; check we did not have spurious level 3,8 or >F interrupt
  1725. FCAA: 1602                JNE  >FCB0
  1726. FCAC: 0460 FDF2           B    @>FDF2           ; everything is fine
  1727.  
  1728. FCB0: 0460 FDEA           B    @>FDEA
  1729.  
  1730. ; level-4 interrupt routine
  1731. FCB4: 0202 0002           LI   R2,>0002         ; set flag
  1732. FCB8: 101A                JMP  >FCEE
  1733. ; level-5 interrupt routine
  1734. FCBA: 0202 0004           LI   R2,>0004
  1735. FCBE: 1017                JMP  >FCEE
  1736. ; level-6 interrupt routine
  1737. FCC0: 0202 0014           LI   R2,>0014
  1738. FCC4: 1014                JMP  >FCEE
  1739. ; level-7 interrupt routine
  1740. FCC6: 0202 0010           LI   R2,>0010
  1741. FCCA: 1011                JMP  >FCEE
  1742. ; level-9 interrupt routine
  1743. FCCC: 0202 0006           LI   R2,>0006
  1744. FCD0: 100E                JMP  >FCEE
  1745. ; level-10 interrupt routine
  1746. FCD2: 0202 000A           LI   R2,>000A
  1747. FCD6: 100B                JMP  >FCEE
  1748. ; level-11 interrupt routine
  1749. FCD8: 0202 000C           LI   R2,>000C
  1750. FCDC: 1008                JMP  >FCEE
  1751. ; level-12 interrupt routine
  1752. FCDE: 0202 0012           LI   R2,>0012
  1753. FCE2: 1005                JMP  >FCEE
  1754. ; level-13 interrupt routine
  1755. FCE4: 0202 0008           LI   R2,>0008
  1756. FCE8: 1002                JMP  >FCEE
  1757. ; level-14 interrupt routine
  1758. FCEA: 0202 000E           LI   R2,>000E
  1759. FCEE: 04A1 FDD4           X    @>FDD4(R1)       ; disable interrupt
  1760. FCF2: 0380                RTWP
  1761.  
  1762. ; level-3 interrupt routine
  1763. FCF4: 02C0                STST R0
  1764. FCF6: 0240 000F           ANDI R0,>000F
  1765. FCFA: 0280 0002           CI   R0,>0002         ; value expected on a TMS9900
  1766. FCFE: 1675                JNE  >FDEA
  1767. FD00: C0E0 0152           MOV  @>0152,R3        ; load pointer
  1768. FD04: 0200 0003           LI   R0,>0003
  1769. FD08: C4C0                MOV  R0,*R3           ; append identifier
  1770. FD0A: 05E0 0152           INCT @>0152           ; increment pointer
  1771. FD0E: 020C 1F80           LI   R12,>1F80
  1772. FD12: 1E03                SBZ  >0003            ; clear interrupt
  1773. FD14: 0380                RTWP
  1774.  
  1775. ; level-8 interrupt routine - cf level 3
  1776. FD16: 02C0                STST R0
  1777. FD18: 0240 000F           ANDI R0,>000F
  1778. FD1C: 0280 0007           CI   R0,>0007
  1779. FD20: 1664                JNE  >FDEA
  1780. FD22: C0E0 0152           MOV  @>0152,R3
  1781. FD26: 0200 0008           LI   R0,>0008
  1782. FD2A: C4C0                MOV  R0,*R3
  1783. FD2C: 05E0 0152           INCT @>0152
  1784. FD30: 020C 1F80           LI   R12,>1F80
  1785. FD34: C060 0150           MOV  @>0150,R1
  1786. FD38: 1302                JEQ  >FD3E
  1787. FD3A: 1D0F                SBO  >000F
  1788. FD3C: 1D03                SBO  >0003
  1789. FD3E: 1E08                SBZ  >0008
  1790. FD40: 0380                RTWP
  1791.  
  1792. ; level-15 interrupt routine - cf level 3
  1793. FD42: 02C0                STST R0
  1794. FD44: 0240 000F           ANDI R0,>000F
  1795. FD48: 0280 000E           CI   R0,>000E
  1796. FD4C: 164E                JNE  >FDEA
  1797. FD4E: C0E0 0152           MOV  @>0152,R3
  1798. FD52: 0200 000F           LI   R0,>000F
  1799. FD56: C4C0                MOV  R0,*R3
  1800. FD58: 05E0 0152           INCT @>0152
  1801. FD5C: 020C 1F80           LI   R12,>1F80
  1802. FD60: 1E0F                SBZ  >000F
  1803. FD62: 0380                RTWP
  1804.  
  1805. ; level 0,1,2 interrupt routine
  1806. FD64: 0460 FDEA           B    @>FDEA
  1807.  
  1808. ; restore interrupt vector table with the table saved at >0180
  1809. FD68: 04C1                CLR  R1
  1810. FD6A: 0202 0180           LI   R2,>0180
  1811. FD6E: CC72                MOV  *R2+,*R1+
  1812. FD70: 0281 0040           CI   R1,>0040
  1813. FD74: 11FC                JLT  >FD6E
  1814.  
  1815. FD76: 02E0 0100           LWPI >0100
  1816. FD7A: 020C 18A0           LI   R12,>18A0
  1817. FD7E: 1E08                SBZ  >0008
  1818. FD80: 045B                B    *R11
  1819.  
  1820. ; table with the interrupt vectors used by the test
  1821. FD82: 0100 FD64           DATA >0100,>FD64      ; level-0 masked interrupt
  1822. FD86: 0100 FD64           DATA >0100,>FD64
  1823. FD8A: 0100 FD64           DATA >0100,>FD64
  1824. FD8E: 0120 FCF4           DATA >0120,>FCF4
  1825. FD92: 0100 FCB4           DATA >0100,>FCB4
  1826. FD96: 0100 FCBA           DATA >0100,>FCBA
  1827. FD9A: 0100 FCC0           DATA >0100,>FCC0
  1828. FD9E: 0100 FCC6           DATA >0100,>FCC6
  1829. FDA2: 0128 FD16           DATA >0128,>FD16
  1830. FDA6: 0100 FCCC           DATA >0100,>FCCC
  1831. FDAA: 0100 FCD2           DATA >0100,>FCD2
  1832. FDAE: 0100 FCD8           DATA >0100,>FCD8
  1833. FDB2: 0100 FCDE           DATA >0100,>FCDE
  1834. FDB6: 0100 FCE4           DATA >0100,>FCE4
  1835. FDBA: 0100 FCEA           DATA >0100,>FCEA
  1836. FDBE: 0130 FD42           DATA >0130,>FD42      ; level-15 masked interrupt
  1837.  
  1838. ; instruction table to enable interrupts
  1839. FDC2: 1D04                SBO  >0004
  1840. FDC4: 1D05                SBO  >0005
  1841. FDC6: 1D09                SBO  >0009
  1842. FDC8: 1D0D                SBO  >000D
  1843. FDCA: 1D0A                SBO  >000A
  1844. FDCC: 1D0B                SBO  >000B
  1845. FDCE: 1D0E                SBO  >000E
  1846. FDD0: 1D07                SBO  >0007
  1847. FDD2: 1D0C                SBO  >000C
  1848. FDD4: 1D06                SBO  >0006
  1849. ; instruction table to disable interrupts
  1850. FDD6: 1E04                SBZ  >0004
  1851. FDD8: 1E05                SBZ  >0005
  1852. FDDA: 1E09                SBZ  >0009
  1853. FDDC: 1E0D                SBZ  >000D
  1854. FDDE: 1E0A                SBZ  >000A
  1855. FDE0: 1E0B                SBZ  >000B
  1856. FDE2: 1E0E                SBZ  >000E
  1857. FDE4: 1E07                SBZ  >0007
  1858. FDE6: 1E0C                SBZ  >000C
  1859. FDE8: 1E06                SBZ  >0006
  1860.  
  1861. ; routine used by start-up code, and level 0,1,2 interrupt vectors
  1862. FDEA: 06A0 FD68           BL   @>FD68
  1863. FDEE: 0460 FE20           B    @>FE20
  1864.  
  1865.  
  1866. FDF2: 06A0 FD68           BL   @>FD68
  1867. FDF6: 0206 0400           LI   R6,>0400
  1868. FDFA: C806 008C           MOV  R6,@>008C
  1869. FDFE: 0706                SETO R6
  1870. FE00: 0066 4020 FE14      MOVS R6,@>FE14,R0,4
  1871. FE06: 0C07                CED                   ; Convert Extended integer to Double precision real
  1872. FE08: 0706                SETO R6
  1873. FE0A: 0046 8800 FE18      CS   R6,R0,@>FE18,8   ; test result
  1874. FE10: 1607                JNE  >FE20
  1875. FE12: 1009                JMP  >FE26
  1876.  
  1877. ; 32 bit integer
  1878. FE14: 5A4B 4019           DATA >5A4B,>4019
  1879. ; double precision real :
  1880. FE18: 485A 4B40 1900 0000 DATA >485A,>4B40,>1900,>0000
  1881.  
  1882. ; error exit routine : handles a cross-page jump, yes sir
  1883. FE20: 0205 FC08           LI   R5,>FC08         ; error return address
  1884. FE24: 1002                JMP  >FE2A
  1885.  
  1886. ; normal exit : same idea
  1887. FE26: 0205 FC1C           LI   R5,>FC1C         ; successful return address
  1888.  
  1889. FE2A: 0204 0000           LI   R4,>0000
  1890. FE2E: C804 0088           MOV  R4,@>0088        ; move current R4 to future R4
  1891. FE32: C805 008A           MOV  R5,@>008A        ; same story
  1892. FE36: 02CC                STST R12
  1893. FE38: 026C 0010           ORI  R12,>0010        ; set "writable control store" bit in ST to use custom XOP
  1894. FE3C: 008C                LST  R12
  1895. FE3E: 2D40                XOP  R0,5             ; this instruction must be defined by LCS
  1896. FE40: 02E0 0080           LWPI >0080            ; change WP
  1897. FE44: 04CC                CLR  R12
  1898. FE46: 008C                LST  R12              ; clear ST
  1899. FE48: 020C 1FB4           LI   R12,>1FB4
  1900. FE4C: 30C4                LDCR R4,3             ; switch to page #0 ?
  1901. FE4E: 0455                B    *R5
  1902.  
  1903.  
  1904. ; The ROM is padded with 1s
  1905. ; We have a lot of free space.  Quite a change from TI990/4 ROMs.
  1906. FE50: FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   DATA >FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF
  1907. FE60: FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   DATA >FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF
  1908. FE70: FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   DATA >FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF
  1909. FE80: FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   DATA >FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF
  1910. FE90: FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   DATA >FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF
  1911. FEA0: FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   DATA >FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF
  1912. FEB0: FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   DATA >FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF
  1913. FEC0: FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   DATA >FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF
  1914. FED0: FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   DATA >FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF
  1915. FEE0: FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   DATA >FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF
  1916. FEF0: FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   DATA >FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF
  1917. FF00: FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   DATA >FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF
  1918. FF10: FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   DATA >FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF
  1919. FF20: FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   DATA >FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF
  1920. FF30: FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   DATA >FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF
  1921. FF40: FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   DATA >FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF
  1922. FF50: FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   DATA >FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF
  1923. FF60: FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   DATA >FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF
  1924. FF70: FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   DATA >FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF
  1925. FF80: FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   DATA >FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF
  1926. FF90: FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   DATA >FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF
  1927. FFA0: FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   DATA >FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF
  1928. FFB0: FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   DATA >FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF
  1929. FFC0: FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   DATA >FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF
  1930. FFD0: FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   DATA >FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF
  1931. FFE0: FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   DATA >FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF
  1932. FFF0: FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF   DATA >FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF,>FFFF
  1933.  
  1934.  
  1935.  
  1936.  
  1937.  
  1938.  
  1939.  
  1940.  
  1941.  
  1942. ; The second half of this ROM makes strictly no sense as 990/12 machine code.
  1943. ; Weird, weird...  Maybe it is a microcode ROM, or a data ROM of some sort ?
  1944. ;
  1945. ; The data should obviously be grouped by 4 words.  Consecutive sequences are often really close,
  1946. ; too.
  1947. ;
  1948.  
  1949. 0000: 10F8
  1950. 0002: 2F1D
  1951. 0004: 0701
  1952. 0006: 282E
  1953.  
  1954. 0008: 1CF8
  1955. 000A: 2F1D
  1956. 000C: 0701
  1957. 000E: 2809
  1958.  
  1959. 0010: 10F8
  1960. 0012: 2F1D
  1961. 0014: 970F
  1962. 0016: 2806
  1963.  
  1964. 0018: 10F8
  1965. 001A: 2F1D
  1966. 001C: 970F
  1967. 001E: 2807
  1968.  
  1969. 0020: 10F8
  1970. 0022: 2F1D
  1971. 0024: 970F
  1972. 0026: 2808
  1973.  
  1974. 0028: 1CF8
  1975. 002A: 2F1D
  1976. 002C: 0701
  1977. 002E: 281F
  1978.  
  1979. 0030: 1CF8
  1980. 0032: 2F1D
  1981. 0034: 0701
  1982. 0036: 282C
  1983.  
  1984. 0038: 1CF8
  1985. 003A: 2F1D
  1986. 003C: 0701
  1987. 003E: 282C
  1988.  
  1989. 0040: 1CF8
  1990. 0042: 2F1D
  1991. 0044: 0701
  1992. 0046: 282C
  1993.  
  1994. 0048: 1029
  1995. 004A: AC1E
  1996. 004C: 970E
  1997. 004E: 841F
  1998.  
  1999. 0050: 1C29
  2000. 0052: AF1D
  2001. 0054: 0700
  2002. 0056: 840F
  2003.  
  2004. 0058: FC80
  2005. 005A: 2F11
  2006. 005C: 0500
  2007. 005E: 84A6
  2008.  
  2009. 0060: 1CF8
  2010. 0062: 2E1D
  2011. 0064: 2F00
  2012. 0066: 840F
  2013.  
  2014. 0068: 1C69
  2015. 006A: EC1D
  2016. 006C: 07B0
  2017. 006E: 841F
  2018.  
  2019. 0070: 48F8
  2020. 0072: 2A1D
  2021. 0074: 0400
  2022. 0076: 840F
  2023.  
  2024. 0078: 178F
  2025. 007A: B71D
  2026. 007C: 0710
  2027. 007E: 840F
  2028.  
  2029. 0080: 1CEF
  2030. 0082: 0E1D
  2031. 0084: 080E
  2032. 0086: A910
  2033.  
  2034. 0088: 1CF8
  2035. 008A: 2C1D
  2036. 008C: 07A0
  2037. 008E: 840B
  2038.  
  2039. 0090: 1CF8
  2040. 0092: 2C1D
  2041. 0094: 07F0
  2042. 0096: 8400
  2043.  
  2044. 0098: 1CF8
  2045. 009A: 2C1D
  2046. 009C: 0770
  2047. 009E: 8401
  2048.  
  2049. 00A0: 1CF8
  2050. 00A2: 2F1C
  2051. 00A4: 4700
  2052. 00A6: 840F
  2053.  
  2054. 00A8: 1CF8
  2055. 00AA: 2F1D
  2056. 00AC: 0701
  2057. 00AE: 160F
  2058.  
  2059. 00B0: 1CF8
  2060. 00B2: 2C1E
  2061. 00B4: 0700
  2062. 00B6: 841F
  2063.  
  2064. 00B8: FC40
  2065. 00BA: 2F11
  2066. 00BC: 0700
  2067. 00BE: 84C8
  2068.  
  2069. 00C0: 1C8F
  2070. 00C2: AF9D
  2071. 00C4: 0500
  2072. 00C6: 840F
  2073.  
  2074. 00C8: 0CF8
  2075. 00CA: 2A9D
  2076. 00CC: 2A00
  2077. 00CE: A819
  2078.  
  2079. 00D0: FC80
  2080. 00D2: 2F11
  2081. 00D4: 0500
  2082. 00D6: 84A6
  2083.  
  2084. 00D8: 0CF8
  2085. 00DA: 2A1D
  2086. 00DC: 2F00
  2087. 00DE: 840F
  2088.  
  2089. 00E0: 1748
  2090. 00E2: AF1D
  2091. 00E4: 0700
  2092. 00E6: 840F
  2093.  
  2094. 00E8: 4AF8
  2095. 00E8: 2E1D
  2096. 00EC: 0740
  2097. 00EE: 840F
  2098.  
  2099. 00F0: 49F8
  2100. 00F2: 2D1D
  2101. 00F4: 0741
  2102. 00F6: 282C
  2103.  
  2104. 00F8: FC01
  2105. 00FA: 6F1D
  2106. 00FC: 0700
  2107. 00FE: 8480
  2108.  
  2109. 0100: 107B
  2110. 0102: 2F1D
  2111. 0104: 0400
  2112. 0106: 840F
  2113.  
  2114. 0108: 1CF8
  2115. 010A: 2C1E
  2116. 010C: 0700
  2117. 010E: 840B
  2118.  
  2119. 0110: F380
  2120. 0112: 2F11
  2121. 0114: 6710
  2122. 0116: 84E0
  2123.  
  2124. 0118: 1CF8
  2125. 011A: 2C1D
  2126. 011C: 07B0
  2127. 011E: 84F1
  2128.  
  2129. 0120: 1388
  2130. 0122: AF1D
  2131. 0124: 0770
  2132. 0126: 840F
  2133.  
  2134. 0128: 1388
  2135. 012A: 8F0D
  2136. 012C: 17AE
  2137. 012E: 09C0
  2138.  
  2139. 0130: 10F8
  2140. 0132: 2F1D
  2141. 0134: 0700
  2142. 0136: 840F
  2143.  
  2144. 0138: 1588
  2145. 013A: AF0D
  2146. 013C: 17AE
  2147. 013E: 840F
  2148.  
  2149. 0140: 1E88
  2150. 0142: AF9D
  2151. 0144: 0070
  2152. 0146: 840F
  2153.  
  2154. 0148: 1688
  2155. 014A: BF9D
  2156. 014C: 9071
  2157. 014E: E82A
  2158.  
  2159. 0150: 1388
  2160. 0152: 9F1D
  2161. 0154: 8F10
  2162. 0156: A924
  2163.  
  2164. 0158: 1CF8
  2165. 015A: 2F1D
  2166. 015C: 6F01
  2167. 015E: AC23
  2168.  
  2169. 0160: 1C97
  2170. 0162: 8F0D
  2171. 0164: 0400
  2172. 0166: 840F
  2173.  
  2174. 0168: 1CF8
  2175. 016A: 379C
  2176. 016C: 0201
  2177. 016E: 2001
  2178.  
  2179. 0170: 1E8F
  2180. 0172: AF1E
  2181. 0174: 4711
  2182. 0176: 082F
  2183.  
  2184. 0178: 1D88
  2185. 017A: AF19
  2186. 017C: 0710
  2187. 017E: 0843
  2188.  
  2189. 0180: 1CF8
  2190. 0182: 2F1D
  2191. 0184: B70E
  2192. 0186: 0856
  2193.  
  2194. 0188: 1CF8
  2195. 018A: 2F1D
  2196. 018C: BF0F
  2197. 018E: 2984
  2198.  
  2199. 0190: 1CF8
  2200. 0192: 2F1D
  2201. 0194: B70E
  2202. 0196: 0864
  2203.  
  2204. 0198: 1CF8
  2205. 019A: 2F1D
  2206. 019C: BF0E
  2207. 019E: 0873
  2208.  
  2209. 01A0: 10F8
  2210. 01A2: 2F1D
  2211. 01A4: B70E
  2212. 01A6: 0900
  2213.  
  2214. 01A8: 10F8
  2215. 01AA: 2F1D
  2216. 01AC: BF0E
  2217. 01AE: 09C1
  2218.  
  2219. 01B0: 10F8
  2220. 01B2: 2F1D
  2221. 01B4: BF0E
  2222. 01B6: 09EB
  2223.  
  2224. 01B8: 1CF8
  2225. 01BA: 2F1D
  2226. 01BC: BF0E
  2227. 01BE: 08C0
  2228.  
  2229. 01C0: 1CF8
  2230. 01C2: 2F1D
  2231. 01C4: BF0E
  2232. 01C6: 087C
  2233.  
  2234. 01C8: 10F8
  2235. 01CA: 2F1D
  2236. 01CC: BF0E
  2237. 01CE: 088C
  2238.  
  2239. 01D0: 1009
  2240. 01D2: EF05
  2241. 01D4: BF0E
  2242. 01D6: 9F02
  2243.  
  2244. 01D8: 1E48
  2245. 01DA: AF1D
  2246. 01DC: 0700
  2247. 01DE: 094A
  2248.  
  2249. 01E0: 1F88
  2250. 01E2: CF0D
  2251. 01E4: 4F9E
  2252. 01E6: 0976
  2253.  
  2254. 01E8: 1D88
  2255. 01EA: AF1F
  2256. 01EC: 170E
  2257. 01EE: 0974
  2258.  
  2259. 01F0: 0629
  2260. 01F2: E91D
  2261. 01F4: 570F
  2262. 01F6: E93F
  2263.  
  2264. 01F8: FC61
  2265. 01FA: EA1D
  2266. 01FC: 07A0
  2267. 01FE: 844F
  2268.  
  2269. 0200: 1CF8
  2270. 0202: 2C9D
  2271. 0204: 00A0
  2272. 0206: 8405
  2273.  
  2274. 0208: 20EE
  2275. 020A: AA9D
  2276. 020C: 2801
  2277. 020E: E842
  2278.  
  2279. 0210: 1CF8
  2280. 0212: 2F9C
  2281. 0214: 4200
  2282. 0216: 640F
  2283.  
  2284. 0218: 1C09
  2285. 021A: CF1D
  2286. 021C: C700
  2287. 021E: 0974
  2288.  
  2289. 0220: FC81
  2290. 0222: EF1D
  2291. 0224: 0500
  2292. 0226: 8429
  2293.  
  2294. 0228: 1CDC
  2295. 022A: AF0D
  2296. 022C: 2FA0
  2297. 022E: 094A
  2298.  
  2299. 0230: 2CD6
  2300. 0232: AF1D
  2301. 0234: 0790
  2302. 0236: 0947
  2303.  
  2304. 0238: 2CD2
  2305. 023A: AF1D
  2306. 023C: 4D0E
  2307. 023E: 0976
  2308.  
  2309. 0240: 1009
  2310. 0242: EC1D
  2311. 0244: 179E
  2312. 0246: 84F0
  2313.  
  2314. 0248: 0EF8
  2315. 024A: 2D1D
  2316. 024C: 8F41
  2317. 024E: C94D
  2318.  
  2319. 0250: 1CED
  2320. 0252: 2D1D
  2321. 0254: 0780
  2322. 0256: 084F
  2323.  
  2324. 0258: 1CF8
  2325. 025A: 2D1D
  2326. 025C: 0780
  2327. 025E: 084D
  2328.  
  2329. 0260: 1C09
  2330. 0262: EF1D
  2331. 0264: 0781
  2332. 0266: 284F
  2333.  
  2334. 0268: 4C29
  2335. 026A: EF1D
  2336. 026C: 0700
  2337. 026E: 0852
  2338.  
  2339. 0270: 1EF8
  2340. 0272: 2F1D
  2341. 0274: 0700
  2342. 0276: 6A4D
  2343.  
  2344. 0278: 0CF8
  2345. 027A: 291D
  2346. 027C: 507E
  2347. 027E: 840F
  2348.  
  2349. 0280: 1C29
  2350. 0282: FF1D
  2351. 0284: 570E
  2352. 0286: 0852
  2353.  
  2354. 0288: 16F8
  2355. 028A: 2F1D
  2356. 028C: 0700
  2357. 028E: 6A4F
  2358.  
  2359. 0290: FC81
  2360. 0292: EF1D
  2361. 0294: 05F0
  2362. 0296: 8429
  2363.  
  2364. 0298: 0CEE
  2365. 029A: 2A1D
  2366. 029C: 2500
  2367. 029E: 840F
  2368.  
  2369. 02A0: 1CE5
  2370. 02A2: AE1D
  2371. 02A4: 2F00
  2372. 02A6: 840F
  2373.  
  2374. 02A8: 1CF8
  2375. 02AA: 2F1D
  2376. 02AC: 0700
  2377. 02AE: 62FF
  2378.  
  2379. 02B0: 1009
  2380. 02B2: AF1D
  2381. 02B4: 07A0
  2382. 02B6: 0974
  2383.  
  2384. 02B8: 1B08
  2385. 02BA: AF0D
  2386. 02BC: CF10
  2387. 02BE: 094A
  2388.  
  2389. 02C0: 11F8
  2390. 02C2: 2D1D
  2391. 02C4: 4D1E
  2392. 02C6: 0976
  2393.  
  2394. 02C8: 1CF8
  2395. 02CA: 2F1D
  2396. 02CC: 0700
  2397. 02CE: 0947
  2398.  
  2399. 02D0: 1CF8
  2400. 02D2: 2F1D
  2401. 02D4: 0700
  2402. 02D6: 094F
  2403.  
  2404. 02D8: 0029
  2405. 02DA: A91D
  2406. 02DC: 570E
  2407. 02DE: 0947
  2408.  
  2409. 02E0: 40EE
  2410. 02E2: 2C1D
  2411. 02E4: 0FBE
  2412. 02E6: 8412
  2413.  
  2414. 02E8: 10EE
  2415. 02EA: 2E1D
  2416. 02EC: 0F0E
  2417. 02EE: A85D
  2418.  
  2419. 02F0: 10EE
  2420. 02F2: 2E1D
  2421. 02F4: 0FDE
  2422. 02F6: 840F
  2423.  
  2424. 02F8: 10EE
  2425. 02FA: 2E1D
  2426. 02FC: 0F0E
  2427. 02FE: A95F
  2428.  
  2429. 0300: 1798
  2430. 0302: 0E1D
  2431. 0304: 0700
  2432. 0306: 840F
  2433.  
  2434. 0308: 2680
  2435. 030A: 0F1D
  2436. 030C: 0700
  2437. 030E: A2FF
  2438.  
  2439. 0310: 1B10
  2440. 0312: 2F1D
  2441. 0314: 0710
  2442. 0316: A2FF
  2443.  
  2444. 0318: 1C89
  2445. 031A: EF1C
  2446. 031C: 0700
  2447. 031E: 6758
  2448.  
  2449. 0320: 1009
  2450. 0322: AF1D
  2451. 0324: CF00
  2452. 0326: 0974
  2453.  
  2454. 0328: 1108
  2455. 032A: AC0D
  2456. 032C: 17AE
  2457. 032E: 840F
  2458.  
  2459. 0330: FC21
  2460. 0332: CD1D
  2461. 0334: 4D0E
  2462. 0336: 8420
  2463.  
  2464. 0338: 8C85
  2465. 033A: 2F1D
  2466. 033C: E7FE
  2467. 033E: 086B
  2468.  
  2469. 0340: 2E27
  2470. 0342: 2F1D
  2471. 0344: 9700
  2472. 0346: A867
  2473.  
  2474. 0348: 1E1B
  2475. 034A: 2F1D
  2476. 034C: 0700
  2477. 034E: 840F
  2478.  
  2479. 0350: 14F8
  2480. 0352: 2F1D
  2481. 0354: 0700
  2482. 0356: 6766
  2483.  
  2484. 0358: FC41
  2485. 035A: EF1D
  2486. 035C: 0700
  2487. 035E: 841F
  2488.  
  2489. 0360: 0C83
  2490. 0362: 2F1D
  2491. 0364: 0400
  2492. 0366: 9F0E
  2493.  
  2494. 0368: 0CA7
  2495. 036A: EC1E
  2496. 036C: 0700
  2497. 036E: 8410
  2498.  
  2499. 0370: 1C48
  2500. 0372: AF05
  2501. 0374: 0700
  2502. 0376: A271
  2503.  
  2504. 0378: 1C8E
  2505. 037A: AF11
  2506. 037C: 0700
  2507. 037E: 840F
  2508.  
  2509. 0380: 1CF8
  2510. 0382: 2F1D
  2511. 0384: 0700
  2512. 0386: 62FF
  2513.  
  2514. 0388: 1C8E
  2515. 038A: AF11
  2516. 038C: 0700
  2517. 038E: 840F
  2518.  
  2519. 0390: 1C50
  2520. 0392: 2F0D
  2521. 0394: 0701
  2522. 0396: 62FF
  2523.  
  2524. 0398: 1009
  2525. 039A: EF1D
  2526. 039C: 4D0E
  2527. 039E: 0974
  2528.  
  2529. 03A0: FC61
  2530. 03A2: EF1D
  2531. 03A4: C400
  2532. 03A6: 8480
  2533.  
  2534. 03A8: 1CF8
  2535. 03AA: 301D
  2536. 03AC: 07F0
  2537. 03AE: 840F
  2538.  
  2539. 03B0: 1CF8
  2540. 03B2: 2C1D
  2541. 03B4: 4D0E
  2542. 03B6: 8480
  2543.  
  2544. 03B8: 0001
  2545. 03BA: EF1D
  2546. 03BC: 0040
  2547. 03BE: 840F
  2548.  
  2549. 03C0: 0CCD
  2550. 03C2: 6A1D
  2551. 03C4: E77E
  2552. 03C6: 840F
  2553.  
  2554. 03C8: 1CF8
  2555. 03CA: 3F1D
  2556. 03CC: 0701
  2557. 03CE: A2FF
  2558.  
  2559. 03D0: 4083
  2560. 03D2: 0F1D
  2561. 03D4: 0700
  2562. 03D6: 840F
  2563.  
  2564. 03D8: 1CF8
  2565. 03DA: 2F1D
  2566. 03DC: 0700
  2567. 03DE: 62FF
  2568.  
  2569. 03E0: FC81
  2570. 03E2: EF1D
  2571. 03E4: CD00
  2572. 03E6: 843F
  2573.  
  2574. 03E8: FC01
  2575. 03EA: EA1D
  2576. 03EC: 2F00
  2577. 03EE: 840F
  2578.  
  2579. 03F0: 1C29
  2580. 03F2: EF1D
  2581. 03F4: 0700
  2582. 03F6: 0889
  2583.  
  2584. 03F8: 1CE5
  2585. 03FA: AE1D
  2586. 03FC: 0700
  2587. 03FE: 0888
  2588.  
  2589. 0400: F081
  2590. 0402: EF1D
  2591. 0404: 0710
  2592. 0406: 8437
  2593.  
  2594. 0408: F1F8
  2595. 040A: 2A1D
  2596. 040C: 0710
  2597. 040E: 840C
  2598.  
  2599. 0410: 10ED
  2600. 0412: 4D1D
  2601. 0414: 0700
  2602. 0416: 08F0
  2603.  
  2604. 0418: 1C29
  2605. 041A: EF1D
  2606. 041C: 0700
  2607. 041E: 0889
  2608.  
  2609. 0420: 1CE5
  2610. 0422: AE1D
  2611. 0424: 0700
  2612. 0426: 0888
  2613.  
  2614. 0428: F080
  2615. 042A: 2F1D
  2616. 042C: 0710
  2617. 042E: 8402
  2618.  
  2619. 0430: 1188
  2620. 0432: 2F1D
  2621. 0434: 0710
  2622. 0436: 840F
  2623.  
  2624. 0438: 1CF8
  2625. 043A: 2F1D
  2626. 043C: 0700
  2627. 043E: 6282
  2628.  
  2629. 0440: 1CF8
  2630. 0442: 2D1D
  2631. 0444: 0700
  2632. 0446: 62FF
  2633.  
  2634. 0448: FC41
  2635. 044A: EF1D
  2636. 044C: 07A0
  2637. 044E: 8437
  2638.  
  2639. 0450: 1CF8
  2640. 0452: 2C9D
  2641. 0454: 02A0
  2642. 0456: 840B
  2643.  
  2644. 0458: 1CEE
  2645. 045A: 2E9D
  2646. 045C: 2200
  2647. 045E: 688B
  2648.  
  2649. 0460: 1089
  2650. 0462: EF1D
  2651. 0464: CF10
  2652. 0466: 840F
  2653.  
  2654. 0468: 1C88
  2655. 046A: AF0D
  2656. 046C: 07A0
  2657. 046E: 9F02
  2658.  
  2659. 0470: 1288
  2660. 0472: 8F0D
  2661. 0474: 17AE
  2662. 0476: 840F
  2663.  
  2664. 0478: 1609
  2665. 047A: AF1D
  2666. 047C: 9710
  2667. 047E: A88F
  2668.  
  2669. 0480: 17DF
  2670. 0482: 0F0D
  2671. 0484: 0710
  2672. 0486: 0974
  2673.  
  2674. 0488: F681
  2675. 048A: 6F1D
  2676. 048C: 0710
  2677. 048E: 84AA
  2678.  
  2679. 0490: 1189
  2680. 0492: EF1D
  2681. 0494: 0710
  2682. 0496: 0976
  2683.  
  2684. 0498: 10F8
  2685. 049A: 2F1D
  2686. 049C: 0700
  2687. 049E: 08BC
  2688.  
  2689. 04A0: 10F8
  2690. 04A2: 2F1D
  2691. 04A4: 0700
  2692. 04A6: 08BC
  2693.  
  2694. 04A8: F681
  2695. 04AA: 6F1D
  2696. 04AC: 0710
  2697. 04AE: 84AA
  2698.  
  2699. 04B0: F181
  2700. 04B2: 6F1D
  2701. 04B4: 0710
  2702. 04B6: 8455
  2703.  
  2704. 04B8: F180
  2705. 04BA: 2F15
  2706. 04BC: 0710
  2707. 04BE: 8450
  2708.  
  2709. 04C0: 1CF8
  2710. 04C2: 2F1D
  2711. 04C4: 0700
  2712. 04C6: 0976
  2713.  
  2714. 04C8: 1089
  2715. 04CA: CF1E
  2716. 04CC: 0700
  2717. 04CE: 08BC
  2718.  
  2719. 04D0: F680
  2720. 04D2: 2F11
  2721. 04D4: 0710
  2722. 04D6: 8455
  2723.  
  2724. 04D8: F181
  2725. 04DA: 6F1D
  2726. 04DC: 0710
  2727. 04DE: 84AA
  2728.  
  2729. 04E0: F180
  2730. 04E2: 2F15
  2731. 04E4: 0710
  2732. 04E6: 84A0
  2733.  
  2734. 04E8: 1CF8
  2735. 04EA: 2F1D
  2736. 04EC: 0700
  2737. 04EE: 0976
  2738.  
  2739. 04F0: 10F8
  2740. 04F2: 2F1D
  2741. 04F4: 0700
  2742. 04F6: 08BC
  2743.  
  2744. 04F8: F7E0
  2745. 04FA: 2F1D
  2746. 04FC: 0700
  2747. 04FE: 8401
  2748.  
  2749. 0500: 1788
  2750. 0502: 2F1D
  2751. 0504: 0710
  2752. 0506: A295
  2753.  
  2754. 0508: 17DB
  2755. 050A: 8F0D
  2756. 050C: 0710
  2757. 050E: 08BE
  2758.  
  2759. 0510: 1108
  2760. 0512: AF36
  2761. 0514: 0700
  2762. 0516: 08B8
  2763.  
  2764. 0518: 1CE5
  2765. 051A: AE1D
  2766. 051C: 0700
  2767. 051E: 08B7
  2768.  
  2769. 0520: 1CF8
  2770. 0522: 2F1D
  2771. 0524: 0700
  2772. 0526: 08B8
  2773.  
  2774. 0528: 1CF8
  2775. 052A: 2F1D
  2776. 052C: 0700
  2777. 052E: 08B5
  2778.  
  2779. 0530: FC01
  2780. 0532: 6E1D
  2781. 0534: 0700
  2782. 0536: 840A
  2783.  
  2784. 0538: 1CE5
  2785. 053A: AD1D
  2786. 053C: 0700
  2787. 053E: 08B7
  2788.  
  2789. 0540: 1C08
  2790. 0542: EF19
  2791. 0544: 0700
  2792. 0546: 08B8
  2793.  
  2794. 0548: 1CE5
  2795. 054A: AE1D
  2796. 054C: 0700
  2797. 054E: 08B7
  2798.  
  2799. 0550: 1CF8
  2800. 0552: 2F1D
  2801. 0554: 0700
  2802. 0556: 08B8
  2803.  
  2804. 0558: 1CF8
  2805. 055A: 2F1D
  2806. 055C: 0700
  2807. 055E: 08B5
  2808.  
  2809. 0560: FC01
  2810. 0562: 6E1D
  2811. 0564: 0700
  2812. 0566: 8405
  2813.  
  2814. 0568: 1CE5
  2815. 056A: AD1D
  2816. 056C: 0700
  2817. 056E: 08B7
  2818.  
  2819. 0570: F7E0
  2820. 0572: 2F1D
  2821. 0574: 0700
  2822. 0576: 8400
  2823.  
  2824. 0578: 1788
  2825. 057A: 2F1D
  2826. 057C: 6710
  2827. 057E: A2A2
  2828.  
  2829. 0580: 1CF8
  2830. 0582: 2F1D
  2831. 0584: 0700
  2832. 0586: 08B8
  2833.  
  2834. 0588: FCE5
  2835. 058A: 2E1D
  2836. 058C: 0700
  2837. 058E: 8455
  2838.  
  2839. 0590: 1CF8
  2840. 0592: 2F1D
  2841. 0594: 0700
  2842. 0596: A2FF
  2843.  
  2844. 0598: 1CF8
  2845. 059A: 2F1D
  2846. 059C: 0700
  2847. 059E: 08BE
  2848.  
  2849. 05A0: 1CF8
  2850. 05A2: 2F1D
  2851. 05A4: 6F01
  2852. 05A6: 6CB0
  2853.  
  2854. 05A8: FC01
  2855. 05AA: EF1D
  2856. 05AC: 0700
  2857. 05AE: 840F
  2858.  
  2859. 05B0: 1CAA
  2860. 05B2: 6F1D
  2861. 05B4: 0700
  2862. 05B6: 640F
  2863.  
  2864. 05B8: 1CF8
  2865. 05BA: 2D1D
  2866. 05BC: 0700
  2867. 05BE: 62FF
  2868.  
  2869. 05C0: 1CF8
  2870. 05C2: 2F1D
  2871. 05C4: 0700
  2872. 05C6: 08BE
  2873.  
  2874. 05C8: FC41
  2875. 05CA: EA1D
  2876. 05CC: 07A0
  2877. 05CE: 845F
  2878.  
  2879. 05D0: 1C8F
  2880. 05D2: AF9D
  2881. 05D4: 0500
  2882. 05D6: 840F
  2883.  
  2884. 05D8: 1CEE
  2885. 05DA: 2E9D
  2886. 05DC: 2200
  2887. 05DE: 68BB
  2888.  
  2889. 05E0: 16F8
  2890. 05E2: 2F1D
  2891. 05E4: 0600
  2892. 05E6: 840F
  2893.  
  2894. 05E8: 1CF8
  2895. 05EA: 2F1D
  2896. 05EC: 2F0E
  2897. 05EE: 640F
  2898.  
  2899. 05F0: FC81
  2900. 05F2: EF1D
  2901. 05F4: 0500
  2902. 05F6: 845F
  2903.  
  2904. 05F8: 1CF8
  2905. 05FA: 2F1D
  2906. 05FC: 2F00
  2907. 05FE: 640F
  2908.  
  2909. 0600: F181
  2910. 0602: EF1D
  2911. 0604: CF10
  2912. 0606: 847F
  2913.  
  2914. 0608: F281
  2915. 060A: EF1D
  2916. 060C: 0710
  2917. 060E: 8459
  2918.  
  2919. 0610: F381
  2920. 0612: EF1D
  2921. 0614: 0710
  2922. 0616: 8455
  2923.  
  2924. 0618: F481
  2925. 061A: EF1D
  2926. 061C: 0710
  2927. 061E: 8453
  2928.  
  2929. 0620: F581
  2930. 0622: EF1D
  2931. 0624: 0710
  2932. 0626: 8451
  2933.  
  2934. 0628: F681
  2935. 062A: EF1D
  2936. 062C: 0710
  2937. 062E: 844D
  2938.  
  2939. 0630: F781
  2940. 0632: EF1D
  2941. 0634: 0710
  2942. 0636: 8433
  2943.  
  2944. 0638: FC81
  2945. 063A: 6F1E
  2946. 063C: 6F00
  2947. 063E: 8440
  2948.  
  2949. 0640: 1CF8
  2950. 0642: 2F19
  2951. 0644: 0700
  2952. 0646: 9F02
  2953.  
  2954. 0648: 12F8
  2955. 064A: 2F1D
  2956. 064C: 0700
  2957. 064E: 08F1
  2958.  
  2959. 0650: 13F8
  2960. 0652: 2F1D
  2961. 0654: 0700
  2962. 0656: 08F0
  2963.  
  2964. 0658: 1388
  2965. 065A: AF1E
  2966. 065C: 0700
  2967. 065E: 840F
  2968.  
  2969. 0660: F000
  2970. 0662: 6F11
  2971. 0664: 0710
  2972. 0666: 8455
  2973.  
  2974. 0668: 14F8
  2975. 066A: 2F1D
  2976. 066C: 0700
  2977. 066E: 08F0
  2978.  
  2979. 0670: 15F8
  2980. 0672: 2F1D
  2981. 0674: 0700
  2982. 0676: 08F0
  2983.  
  2984. 0678: 16F8
  2985. 067A: 2F1D
  2986. 067C: 0700
  2987. 067E: 08F1
  2988.  
  2989. 0680: 1C89
  2990. 0682: AF1D
  2991. 0684: 0400
  2992. 0686: 840F
  2993.  
  2994. 0688: 1CF8
  2995. 068A: 371D
  2996. 068C: 0700
  2997. 068E: 08E7
  2998.  
  2999. 0690: 10F8
  3000. 0692: 2F1D
  3001. 0694: 0600
  3002. 0696: 840F
  3003.  
  3004. 0698: 1CF8
  3005. 069A: 371D
  3006. 069C: 0700
  3007. 069E: 08E5
  3008.  
  3009. 06A0: 15F8
  3010. 06A2: 2F1D
  3011. 06A4: 0700
  3012. 06A6: 08F1
  3013.  
  3014. 06A8: 10F8
  3015. 06AA: 2F1D
  3016. 06AC: 0600
  3017. 06AE: 840F
  3018.  
  3019. 06B0: 1C89
  3020. 06B2: F71F
  3021. 06B4: 0700
  3022. 06B6: 08E5
  3023.  
  3024. 06B8: 14F8
  3025. 06BA: 2F1D
  3026. 06BC: 0700
  3027. 06BE: 08F1
  3028.  
  3029. 06C0: 10F8
  3030. 06C2: 2F1D
  3031. 06C4: 0600
  3032. 06C6: 840F
  3033.  
  3034. 06C8: 1CF8
  3035. 06CA: 371D
  3036. 06CC: 0700
  3037. 06CE: 08E5
  3038.  
  3039. 06D0: 15F8
  3040. 06D2: 2F1D
  3041. 06D4: 0700
  3042. 06D6: 08F0
  3043.  
  3044. 06D8: 10F8
  3045. 06DA: 2F1D
  3046. 06DC: 0600
  3047. 06DE: 840F
  3048.  
  3049. 06E0: 1CF8
  3050. 06E2: 3F1D
  3051. 06E4: 0700
  3052. 06E6: 08E5
  3053.  
  3054. 06E8: 1C9D
  3055. 06EA: 4F1D
  3056. 06EC: 0700
  3057. 06EE: 840F
  3058.  
  3059. 06F0: 1CF8
  3060. 06F2: 2F1D
  3061. 06F4: 0700
  3062. 06F6: A2E0
  3063.  
  3064. 06F8: 1088
  3065. 06FA: CF1D
  3066. 06FC: 0711
  3067. 06FE: 28CD
  3068.  
  3069. 0700: 1CF8
  3070. 0702: 2F1D
  3071. 0704: 0700
  3072. 0706: 6CE1
  3073.  
  3074. 0708: FC81
  3075. 070A: 6F1E
  3076. 070C: 6700
  3077. 070E: 84C0
  3078.  
  3079. 0710: 1CF8
  3080. 0712: 2F19
  3081. 0714: 0700
  3082. 0716: 9F02
  3083.  
  3084. 0718: 13F8
  3085. 071A: 2F1D
  3086. 071C: 0700
  3087. 071E: 08F1
  3088.  
  3089. 0720: 1CF8
  3090. 0722: 2F1D
  3091. 0724: 0701
  3092. 0726: 28CB
  3093.  
  3094. 0728: 1C29
  3095. 072A: AF1D
  3096. 072C: 0700
  3097. 072E: 08EE
  3098.  
  3099. 0730: 1C2D
  3100. 0732: 4F1D
  3101. 0734: 0700
  3102. 0736: 08B7
  3103.  
  3104. 0738: 17F8
  3105. 073A: 2F1D
  3106. 073C: 0600
  3107. 073E: 08F0
  3108.  
  3109. 0740: 1C29
  3110. 0742: EF1D
  3111. 0744: 0700
  3112. 0746: 08EE
  3113.  
  3114. 0748: 1C2D
  3115. 074A: CF1D
  3116. 074C: 0700
  3117. 074E: 08B7
  3118.  
  3119. 0750: 1028
  3120. 0752: AC1D
  3121. 0754: 07A0
  3122. 0756: 840F
  3123.  
  3124. 0758: FC41
  3125. 075A: EF1D
  3126. 075C: 0700
  3127. 075E: 847F
  3128.  
  3129. 0760: 1C8F
  3130. 0762: AF9D
  3131. 0764: 0500
  3132. 0766: 840F
  3133.  
  3134. 0768: 1CEE
  3135. 076A: AE9D
  3136. 076C: 2A00
  3137. 076E: 68ED
  3138.  
  3139. 0770: 17F8
  3140. 0772: 2F1D
  3141. 0774: 0700
  3142. 0776: 840F
  3143.  
  3144. 0778: 1CEE
  3145. 077A: 2F1D
  3146. 077C: 2700
  3147. 077E: 640F
  3148.  
  3149. 0780: 1C89
  3150. 0782: EF1D
  3151. 0784: 2F00
  3152. 0786: 640F
  3153.  
  3154. 0788: 1C89
  3155. 078A: AF1D
  3156. 078C: 2F00
  3157. 078E: 640F
  3158.  
  3159. 0790: 1C89
  3160. 0792: AF1D
  3161. 0794: 07A0
  3162. 0796: 840F
  3163.  
  3164. 0798: FC41
  3165. 079A: EF1D
  3166. 079C: 0500
  3167. 079E: 843F
  3168.  
  3169. 07A0: 1C57
  3170. 07A2: 2F0D
  3171. 07A4: 2D00
  3172. 07A6: 68F4
  3173.  
  3174. 07A8: 1CF8
  3175. 07AA: 2F1D
  3176. 07AC: 0701
  3177. 07AE: 28FF
  3178.  
  3179. 07B0: 1CF8
  3180. 07B2: 2F1D
  3181. 07B4: 0701
  3182. 07B6: 28FF
  3183.  
  3184. 07B8: 1CF8
  3185. 07BA: 2F1D
  3186. 07BC: 0701
  3187. 07BE: 28FF
  3188.  
  3189. 07C0: 1CF8
  3190. 07C2: 2F1D
  3191. 07C4: 0701
  3192. 07C6: 28FF
  3193.  
  3194. 07C8: 1CF8
  3195. 07CA: 2F1D
  3196. 07CC: 0701
  3197. 07CE: 28FF
  3198.  
  3199. 07D0: 1CF8
  3200. 07D2: 2F1D
  3201. 07D4: 0701
  3202. 07D6: 28FF
  3203.  
  3204. 07D8: 1CF8
  3205. 07DA: 2F1D
  3206. 07DC: 0701
  3207. 07DE: 28FF
  3208.  
  3209. 07E0: 1CF8
  3210. 07E2: 2F1D
  3211. 07E4: 0701
  3212. 07E6: 28FF
  3213.  
  3214. 07E8: 1CF8
  3215. 07EA: 2F1D
  3216. 07EC: 0701
  3217. 07EE: 28FF
  3218.  
  3219. 07F0: 1CF8
  3220. 07F2: 2F1D
  3221. 07F4: 0701
  3222. 07F6: 28FF
  3223.  
  3224. 07F8: 1CF8
  3225. 07FA: 2F1D
  3226. 07FC: 0700
  3227. 07FE: E4FF
  3228.  
  3229. 0800: 1B08
  3230. 0802: 8F0D
  3231. 0804: CF10
  3232. 0806: 0974
  3233.  
  3234. 0808: 1B88
  3235. 080A: AF15
  3236. 080C: 0710
  3237. 080E: 08F2
  3238.  
  3239. 0810: 1B88
  3240. 0812: AC1D
  3241. 0814: 07F0
  3242. 0816: 8408
  3243.  
  3244. 0818: 0BB4
  3245. 081A: 2F1D
  3246. 081C: 0711
  3247. 081E: 7804
  3248.  
  3249. 0820: 1C89
  3250. 0822: AF1D
  3251. 0824: 07A0
  3252. 0826: 094A
  3253.  
  3254. 0828: 1CF8
  3255. 082A: 2F1D
  3256. 082C: 0700
  3257. 082E: 0947
  3258.  
  3259. 0830: 10F8
  3260. 0832: 2F1D
  3261. 0834: 0700
  3262. 0836: 0976
  3263.  
  3264. 0838: 10F8
  3265. 083A: 2F1D
  3266. 083C: 0700
  3267. 083E: 097A
  3268.  
  3269. 0840: 10F8
  3270. 0842: 2F1D
  3271. 0844: 0700
  3272. 0846: 097E
  3273.  
  3274. 08A8: 10F8
  3275. 084A: 2F1D
  3276. 084C: 0700
  3277. 084E: 0981
  3278.  
  3279. 0850: 1CF8
  3280. 0852: 2F1D
  3281. 0854: 0700
  3282. 0856: 0947
  3283.  
  3284. 0858: FBA4
  3285. 085A: EF1D
  3286. 085C: 0700
  3287. 085E: 84FF
  3288.  
  3289. 0860: 1B91
  3290. 0862: 2F1D
  3291. 0864: 0711
  3292. 0866: A21C
  3293.  
  3294. 0868: 1C90
  3295. 086A: 2F0D
  3296. 086C: 0710
  3297. 086E: 093E
  3298.  
  3299. 0870: 1C88
  3300. 0872: AC1D
  3301. 0874: 07F0
  3302. 0876: 8450
  3303.  
  3304. 0878: 0CF8
  3305. 087A: 2A1D
  3306. 087C: 0791
  3307. 087E: A21A
  3308.  
  3309. 0880: 1C91
  3310. 0882: 2F1D
  3311. 0884: 0710
  3312. 0886: 091D
  3313.  
  3314. 0888: 1A89
  3315. 088A: EF1D
  3316. 088C: 0710
  3317. 088E: 840F
  3318.  
  3319. 0890: 1A08
  3320. 0892: AF1D
  3321. 0894: 0700
  3322. 0896: 094F
  3323.  
  3324. 0898: 1A08
  3325. 089A: AF1D
  3326. 089C: 0700
  3327. 089E: 092A
  3328.  
  3329. 08A0: 1CF8
  3330. 08A2: 2F1D
  3331. 08A4: 0700
  3332. 08A6: 095F
  3333.  
  3334. 08A8: 10F8
  3335. 08AA: 2F1D
  3336. 08AC: 0700
  3337. 08AE: 096B
  3338.  
  3339. 08B0: 1CF8
  3340. 08B2: 2F1D
  3341. 08B4: 0700
  3342. 08B6: 094C
  3343.  
  3344. 08B8: 1CF8
  3345. 08BA: 2F1D
  3346. 08BC: 8F00
  3347. 08BE: A912
  3348.  
  3349. 08C0: 1CF8
  3350. 08C2: 2F1D
  3351. 08C4: 0700
  3352. 08C6: 0942
  3353.  
  3354. 08C8: 10F8
  3355. 08CA: 2F1D
  3356. 08CC: 0701
  3357. 08CE: 290E
  3358.  
  3359. 08D0: 1CF8
  3360. 08D2: 2F1D
  3361. 08D4: 0700
  3362. 08D6: 0934
  3363.  
  3364. 08D8: 10F8
  3365. 08DA: 2F1D
  3366. 08DC: 0701
  3367. 08DE: 290B
  3368.  
  3369. 08E0: 1B89
  3370. 08E2: EF1D
  3371. 08E4: 0721
  3372. 08E6: 2902
  3373.  
  3374. 08E8: 10F8
  3375. 08EA: 2F1D
  3376. 08EC: 0700
  3377. 08EE: 0947
  3378.  
  3379. 08F0: 1B28
  3380. 08F2: AF25
  3381. 08F4: 0700
  3382. 08F6: 840F
  3383.  
  3384. 08F8: 1B91
  3385. 08FA: 2F25
  3386. 08FC: 0700
  3387. 08FE: A222
  3388.  
  3389. 0900: 10F8
  3390. 0902: 2F1D
  3391. 0904: 0700
  3392. 0906: 0976
  3393.  
  3394. 0908: 1CF8
  3395. 090A: 2F1D
  3396. 090C: 0701
  3397. 090E: 2947
  3398.  
  3399. 0910: 1C95
  3400. 0912: 4F0D
  3401. 0914: 0700
  3402. 0916: A225
  3403.  
  3404. 0918: 10F8
  3405. 091A: 2F1D
  3406. 091C: 0700
  3407. 091E: 097A
  3408.  
  3409. 0920: 1CF8
  3410. 0922: 2F1D
  3411. 0924: 0701
  3412. 0926: 2947
  3413.  
  3414. 0928: 1C95
  3415. 092A: 6F0D
  3416. 092C: 0700
  3417. 092E: A228
  3418.  
  3419. 0930: 10F8
  3420. 0932: 2F1D
  3421. 0934: 0700
  3422. 0936: 097E
  3423.  
  3424. 0938: 1CF8
  3425. 093A: 2F1D
  3426. 093C: 0701
  3427. 093E: 2947
  3428.  
  3429. 0940: 10F8
  3430. 0942: 2F1D
  3431. 0944: 0700
  3432. 0946: 0981
  3433.  
  3434. 0948: 1CF8
  3435. 094A: 2F1D
  3436. 094C: 0701
  3437. 094E: 2947
  3438.  
  3439. 0950: 1B28
  3440. 0952: AC25
  3441. 0954: DFF0
  3442. 0956: 8480
  3443.  
  3444. 0958: 1C8D
  3445. 095A: 2F1D
  3446. 095C: 0700
  3447. 095E: A22F
  3448.  
  3449. 0960: 1C89
  3450. 0962: EF05
  3451. 0964: 0700
  3452. 0966: 9F02
  3453.  
  3454. 0968: 1CF8
  3455. 096A: 2D1D
  3456. 096C: 0400
  3457. 096E: 840F
  3458.  
  3459. 0970: 1CF8
  3460. 0972: 2F1D
  3461. 0974: 2F0E
  3462. 0976: 640F
  3463.  
  3464. 0978: 1C95
  3465. 097A: 4F0D
  3466. 097C: 0700
  3467. 097E: A232
  3468.  
  3469. 0980: 0C81
  3470. 0982: 6F05
  3471. 0984: 0700
  3472. 0986: 9F02
  3473.  
  3474. 0988: 1CF8
  3475. 098A: 2D1D
  3476. 098C: 0401
  3477. 098E: 292E
  3478.  
  3479. 0990: 1CF8
  3480. 0992: 2D1D
  3481. 0994: 4C01
  3482. 0996: A22E
  3483.  
  3484. 0998: 1CF8
  3485. 099A: 2F1D
  3486. 099C: DF0F
  3487. 099E: 2931
  3488.  
  3489. 09A0: 10F8
  3490. 09A2: 2F1D
  3491. 09A4: 0700
  3492. 09A6: 840F
  3493.  
  3494. 09A8: 1228
  3495. 09AA: AF1D
  3496. 09AC: 0700
  3497. 09AE: 840F
  3498.  
  3499. 09B0: 10F8
  3500. 09B2: 2E1D
  3501. 09B4: 0710
  3502. 09B6: 840F
  3503.  
  3504. 09B8: 1428
  3505. 09BA: AF1D
  3506. 09BC: 0700
  3507. 09BE: 840F
  3508.  
  3509. 09C0: 12F8
  3510. 09C2: 2E1D
  3511. 09C4: 0710
  3512. 09C6: 840F
  3513.  
  3514. 09C8: 1491
  3515. 09CA: 6C1E
  3516. 09CC: 0700
  3517. 09CE: 8411
  3518.  
  3519. 09D0: 1491
  3520. 09D2: 6F1D
  3521. 09D4: 0701
  3522. 09D6: A23D
  3523.  
  3524. 09D8: 1490
  3525. 09DA: 2F1D
  3526. 09DC: 0710
  3527. 09DE: 613C
  3528.  
  3529. 09E0: 1489
  3530. 09E2: AF1D
  3531. 09E4: 0710
  3532. 09E6: 640F
  3533.  
  3534. 09E8: 1488
  3535. 09EA: AF39
  3536. 09EC: 0710
  3537. 09EE: 640F
  3538.  
  3539. 09F0: 11F8
  3540. 09F2: 2C1E
  3541. 09F4: 17AE
  3542. 09F6: 8411
  3543.  
  3544. 09F8: 1E28
  3545. 09FA: AF39
  3546. 09FC: 0710
  3547. 09FE: 840F
  3548.  
  3549. 0A00: 1EF8
  3550. 0A02: 2F1D
  3551. 0A04: 0700
  3552. 0A06: 840F
  3553.  
  3554. 0A08: 2625
  3555. 0A0A: 2F1D
  3556. 0A0C: 9710
  3557. 0A0E: 6840
  3558.  
  3559. 0A10: 1188
  3560. 0A12: AF0D
  3561. 0A14: 17AE
  3562. 0A16: 840F
  3563.  
  3564. 0A18: 1C28
  3565. 0A1A: AF1D
  3566. 0A1C: 0700
  3567. 0A1E: 840F
  3568.  
  3569. 0A20: 1CEE
  3570. 0A22: 8F1D
  3571. 0A24: 0700
  3572. 0A26: 840F
  3573.  
  3574. 0A28: 1EF8
  3575. 0A2A: 2E1D
  3576. 0A2C: 0710
  3577. 0A2E: 840F
  3578.  
  3579. 0A30: 1EF8
  3580. 0A32: 2F1D
  3581. 0A34: 9700
  3582. 0A36: 6843
  3583.  
  3584. 0A38: 1088
  3585. 0A3A: AF0D
  3586. 0A3C: 17AE
  3587. 0A3E: 840F
  3588.  
  3589. 0A40: 1E88
  3590. 0A42: EF1D
  3591. 0A44: 0710
  3592. 0A46: 840F
  3593.  
  3594. 0A48: 16F8
  3595. 0A4A: 2F1D
  3596. 0A4C: 9700
  3597. 0A4E: 6848
  3598.  
  3599. 0A50: 10F8
  3600. 0A52: 2C1D
  3601. 0A54: 17AE
  3602. 0A56: 8405
  3603.  
  3604. 0A58: 1689
  3605. 0A5A: EF1D
  3606. 0A5C: 9710
  3607. 0A5E: 684B
  3608.  
  3609. 0A60: 1A91
  3610. 0A62: 6C1E
  3611. 0A64: 0700
  3612. 0A66: 840A
  3613.  
  3614. 0A68: 1A90
  3615. 0A6A: 2F1D
  3616. 0A6C: 0711
  3617. 0A6E: 624E
  3618.  
  3619. 0A70: FA80
  3620. 0A72: 2F11
  3621. 0A74: 0710
  3622. 0A76: 64A1
  3623.  
  3624. 0A78: 1C2B
  3625. 0A7A: AC1E
  3626. 0A7C: 0780
  3627. 0A7E: 84E0
  3628.  
  3629. 0A80: 1C48
  3630. 0A82: AC29
  3631. 0A84: 07A0
  3632. 0A86: 8404
  3633.  
  3634. 0A88: 1CAB
  3635. 0A8A: CF1D
  3636. 0A8C: 0700
  3637. 0A8E: 840F
  3638.  
  3639. 0A90: 1EE6
  3640. 0A92: AF1D
  3641. 0A94: 0700
  3642. 0A96: 840F
  3643.  
  3644. 0A98: 1EF8
  3645. 0A9A: 2F1D
  3646. 0A9C: 0700
  3647. 0A9E: A059
  3648.  
  3649. 0AA0: 1EE6
  3650. 0AA2: AF1D
  3651. 0AA4: 0700
  3652. 0AA6: 840F
  3653.  
  3654. 0AA8: 1EF8
  3655. 0AAA: 2F1D
  3656. 0AAC: 0700
  3657. 0AAE: A059
  3658.  
  3659. 0AB0: 1EE6
  3660. 0AB2: AF1D
  3661. 0AB4: 0700
  3662. 0AB6: 840F
  3663.  
  3664. 0AB8: 1EF8
  3665. 0ABA: 2F1D
  3666. 0ABC: 0700
  3667. 0ABE: A059
  3668.  
  3669. 0AC0: 10F8
  3670. 0AC2: 2F1D
  3671. 0AC4: 6700
  3672. 0AC6: 640F
  3673.  
  3674. 0AC8: 1F29
  3675. 0ACA: EE1D
  3676. 0ACC: 6FD0
  3677. 0ACE: 840F
  3678.  
  3679. 0AD0: FCA1
  3680. 0AD4: 4F1D
  3681. 0AD4: 0700
  3682. 0AD6: 8401
  3683.  
  3684. 0AD8: 1CEF
  3685. 0ADA: AF1D
  3686. 0ADC: 9701
  3687. 0ADE: E85C
  3688.  
  3689. 0AE0: 1018
  3690. 0AE2: 2F1D
  3691. 0AE4: 0700
  3692. 0AE6: 840F
  3693.  
  3694. 0AE8: 16F8
  3695. 0AEA: 2D1D
  3696. 0AEC: 0710
  3697. 0AEE: 840F
  3698.  
  3699. 0AF0: 17F8
  3700. 0AF2: 2E1D
  3701. 0AF4: 0710
  3702. 0AF6: 640F
  3703.  
  3704. 0AF8: FC61
  3705. 0AFA: CF1D
  3706. 0AFC: 0500
  3707. 0AFE: 8460
  3708.  
  3709. 0B00: 1C89
  3710. 0B02: EF1D
  3711. 0B04: 28A0
  3712. 0B06: 840F
  3713.  
  3714. 0B08: 1CF8
  3715. 0B0A: 2F9D
  3716. 0B0C: 2800
  3717. 0B0E: 840F
  3718.  
  3719. 0B10: 1CEE
  3720. 0B12: 2E9D
  3721. 0B14: 2001
  3722. 0B16: E863
  3723.  
  3724. 0B18: FC61
  3725. 0B1A: CE1D
  3726. 0B1C: 07D0
  3727. 0B1E: 8460
  3728.  
  3729. 0B20: 1C89
  3730. 0B22: EF1D
  3731. 0B24: 00A0
  3732. 0B26: 840F
  3733.  
  3734. 0B28: 1CF8
  3735. 0B2A: 2F9D
  3736. 0B2C: 2800
  3737. 0B2E: 840F
  3738.  
  3739. 0B30: 1CEE
  3740. 0B32: 2E9D
  3741. 0B34: 2001
  3742. 0B36: E867
  3743.  
  3744. 0B38: 1091
  3745. 0B3A: 4F0D
  3746. 0B3C: 07A0
  3747. 0B3E: 840F
  3748.  
  3749. 0B40: 1CEF
  3750. 0B42: AF1D
  3751. 0B44: 9701
  3752. 0B46: E869
  3753.  
  3754. 0B48: 18F8
  3755. 0B4A: 2D1D
  3756. 0B4C: 0710
  3757. 0B4E: 840F
  3758.  
  3759. 0B50: 19F8
  3760. 0B52: 2E1D
  3761. 0B54: 0710
  3762. 0B56: 640F
  3763.  
  3764. 0B58: 1928
  3765. 0B5A: AC1D
  3766. 0B5C: 07D0
  3767. 0B5E: 8480
  3768.  
  3769. 0B60: 1CAE
  3770. 0B62: EE1D
  3771. 0B64: 07D1
  3772. 0B66: AC73
  3773.  
  3774. 0B68: 1728
  3775. 0B6A: AF1D
  3776. 0B6C: 0700
  3777. 0B6E: A2FE
  3778.  
  3779. 0B70: 1CCA
  3780. 0B72: 2C1E
  3781. 0B74: 0700
  3782. 0B76: 84F0
  3783.  
  3784. 0B78: 2CA4
  3785. 0B7A: EF11
  3786. 0B7C: 0700
  3787. 0B7E: 840F
  3788.  
  3789. 0B80: 1628
  3790. 0B82: AF1D
  3791. 0B84: 0700
  3792. 0B86: A2FE
  3793.  
  3794. 0B88: 28E0
  3795. 0B8A: 2F1D
  3796. 0B8C: 0700
  3797. 0B8E: 840F
  3798.  
  3799. 0B90: 1CF8
  3800. 0B92: 2F1D
  3801. 0B94: 0700
  3802. 0B96: 62FE
  3803.  
  3804. 0B98: 1728
  3805. 0B9A: AF1D
  3806. 0B9C: 0701
  3807. 0B9E: 62FE
  3808.  
  3809. 0BA0: FC81
  3810. 0BA2: EF1D
  3811. 0BA4: 0500
  3812. 0BA6: 8459
  3813.  
  3814. 0BA8: 1CF8
  3815. 0BAA: 2D1D
  3816. 0BAC: 2F00
  3817. 0BAE: 640F
  3818.  
  3819. 0BB0: 1C89
  3820. 0BB2: EF1C
  3821. 0BB4: E70E
  3822. 0BB6: 840F
  3823.  
  3824. 0BB8: 1FF8
  3825. 0BBA: 2C1F
  3826. 0BBC: 17AE
  3827. 0BBE: 8406
  3828.  
  3829. 0BC0: 1EF8
  3830. 0BC2: 2F1D
  3831. 0BC4: EF0E
  3832. 0BC6: 840F
  3833.  
  3834. 0BC8: 14F8
  3835. 0BCA: 2F1D
  3836. 0BCC: 0600
  3837. 0BCE: 6878
  3838.  
  3839. 0BD0: 1CF8
  3840. 0BD2: 2C1C
  3841. 0BD4: 0700
  3842. 0BD6: 8410
  3843.  
  3844. 0BD8: 1FF8
  3845. 0BDA: 2C1F
  3846. 0BDC: 17AE
  3847. 0BDE: 8406
  3848.  
  3849. 0BE0: 1EF8
  3850. 0BE2: 2F1D
  3851. 0BE4: EF0E
  3852. 0BE6: 840F
  3853.  
  3854. 0BE8: 14F8
  3855. 0BEA: 2F1D
  3856. 0BEC: 0600
  3857. 0BEE: 687C
  3858.  
  3859. 0BF0: 1FF8
  3860. 0BF2: 2C1F
  3861. 0BF4: 17AE
  3862. 0BF6: 8406
  3863.  
  3864. 0BF8: 1EF8
  3865. 0BFA: 2F1D
  3866. 0BFC: F70E
  3867. 0BFE: 840F
  3868.  
  3869. 0C00: 14F8
  3870. 0C02: 2F1D
  3871. 0C04: 0600
  3872. 0C06: 687F
  3873.  
  3874. 0C08: 1FF8
  3875. 0C0A: 2C1F
  3876. 0C0C: 17AE
  3877. 0C0E: 8406
  3878.  
  3879. 0C10: 1EF8
  3880. 0C12: 2F1D
  3881. 0C14: FF0E
  3882. 0C16: 840F
  3883.  
  3884. 0C18: 14F8
  3885. 0C1A: 2F1D
  3886. 0C1C: 0600
  3887. 0C1E: 6882
  3888.  
  3889. 0C20: 1C89
  3890. 0C22: EF1D
  3891. 0C24: C780
  3892. 0C26: 840F
  3893.  
  3894. 0C28: 46F8
  3895. 0C2A: 2F1D
  3896. 0C2C: 0700
  3897. 0C2E: AA85
  3898.  
  3899. 0C30: 10F8
  3900. 0C32: 2C1E
  3901. 0C34: 0710
  3902. 0C36: 8408
  3903.  
  3904. 0C38: FC80
  3905. 0C3A: 2F11
  3906. 0C3C: 97FE
  3907. 0C3E: 8411
  3908.  
  3909. 0C40: F1EC
  3910. 0C42: 4F1D
  3911. 0C44: 0710
  3912. 0C46: 8480
  3913.  
  3914. 0C48: 1CF8
  3915. 0C4A: 2C1E
  3916. 0C4C: 0700
  3917. 0C4E: 8420
  3918.  
  3919. 0C50: 0008
  3920. 0C52: AF11
  3921. 0C54: 0740
  3922. 0C56: 840F
  3923.  
  3924. 0C58: 0109
  3925. 0C5A: ED1D
  3926. 0C5C: 0740
  3927. 0C5E: 840F
  3928.  
  3929. 0C60: 0F89
  3930. 0C62: AF1D
  3931. 0C64: 0740
  3932. 0C66: 840F
  3933.  
  3934. 0C68: 0989
  3935. 0C6A: AF1D
  3936. 0C6C: 0740
  3937. 0C6E: 840F
  3938.  
  3939. 0C70: 10F8
  3940. 0C72: 291F
  3941. 0C74: 7F00
  3942. 0C76: 29BD
  3943.  
  3944. 0C78: 10F8
  3945. 0C7A: 291D
  3946. 0C7C: 0700
  3947. 0C7E: 840F
  3948.  
  3949. 0C80: 10F8
  3950. 0C82: 291D
  3951. 0C84: 0700
  3952. 0C86: 29BD
  3953.  
  3954. 0C88: 1089
  3955. 0C8A: AF1D
  3956. 0C8C: 07A0
  3957. 0C8E: 29BB
  3958.  
  3959. 0C90: 13F8
  3960. 0C92: 2D1D
  3961. 0C94: 170E
  3962. 0C96: 29BF
  3963.  
  3964. 0C98: 1C88
  3965. 0C9A: 8F0D
  3966. 0C9C: 0780
  3967. 0C9E: 29BF
  3968.  
  3969. 0CA0: 1089
  3970. 0CA2: AF1D
  3971. 0CA4: 07A0
  3972. 0CA6: 29BB
  3973.  
  3974. 0CA8: 13F8
  3975. 0CAA: 2D1D
  3976. 0CAC: 170E
  3977. 0CAE: 29BF
  3978.  
  3979. 0CB0: 1089
  3980. 0CB2: AF1D
  3981. 0CB4: 07A0
  3982. 0CB6: 29BB
  3983.  
  3984. 0CB8: 13F8
  3985. 0CBA: 2D1D
  3986. 0CBC: 170E
  3987. 0CBE: 29BF
  3988.  
  3989. 0CC0: 10F8
  3990. 0CC2: 2F1D
  3991. 0CC4: 0700
  3992. 0CC6: 840F
  3993.  
  3994. 0CC8: 4981
  3995. 0CCA: 6F1D
  3996. 0CCC: 0700
  3997. 0CCE: 840F
  3998.  
  3999. 0CD0: 4F81
  4000. 0CD2: 6F1D
  4001. 0CD4: 0701
  4002. 0CD6: A2B1
  4003.  
  4004. 0CD8: 10F8
  4005. 0CDA: 291D
  4006. 0CDC: 0701
  4007. 0CDE: A2A8
  4008.  
  4009. 0CE0: 4080
  4010. 0CE2: 2F1F
  4011. 0CE4: 0740
  4012. 0CE6: BA90
  4013.  
  4014. 0CE8: 1CF8
  4015. 0CEA: 2F1D
  4016. 0CEC: 7700
  4017. 0CEE: AD90
  4018.  
  4019. 0CF0: 4120
  4020. 0CF2: 2F1D
  4021. 0CF4: 0740
  4022. 0CF6: 840F
  4023.  
  4024. 0CF8: 00F8
  4025. 0CFA: 2E1D
  4026. 0CFC: 0740
  4027. 0CFE: A78E
  4028.  
  4029. 0D00: 1CF8
  4030. 0D02: 2C1E
  4031. 0D04: 0700
  4032. 0D06: 8410
  4033.  
  4034. 0D08: 0088
  4035. 0D0A: AF11
  4036. 0D0C: 0740
  4037. 0D0E: 840F
  4038.  
  4039. 0D10: F0EC
  4040. 0D12: 4F1D
  4041. 0D14: 0710
  4042. 0D16: 8480
  4043.  
  4044. 0D18: 1CF8
  4045. 0D1A: 2C1E
  4046. 0D1C: 0700
  4047. 0D1E: 8404
  4048.  
  4049. 0D20: 0188
  4050. 0D22: AF11
  4051. 0D24: 0740
  4052. 0D26: 840F
  4053.  
  4054. 0D28: 02F8
  4055. 0D2A: 2C1D
  4056. 0D2C: 0740
  4057. 0D2E: 8410
  4058.  
  4059. 0D30: 1CF8
  4060. 0D32: 2F0D
  4061. 0D34: 0700
  4062. 0D36: 9F02
  4063.  
  4064. 0D38: 0FF8
  4065. 0D3A: 2F1D
  4066. 0D3C: 0741
  4067. 0D3E: 298E
  4068.  
  4069. 0D40: 4180
  4070. 0D42: 2F05
  4071. 0D44: 0700
  4072. 0D46: 9F02
  4073.  
  4074. 0D48: 40F8
  4075. 0D4A: 2A1D
  4076. 0D4C: 0700
  4077. 0D4E: A790
  4078.  
  4079. 0D50: 4080
  4080. 0D52: 2F1D
  4081. 0D54: 0740
  4082. 0D56: 840F
  4083.  
  4084. 0D58: 4281
  4085. 0D5A: 2F1D
  4086. 0D5C: 0740
  4087. 0D5E: 840F
  4088.  
  4089. 0D60: 1CF8
  4090. 0D62: 2F1D
  4091. 0D64: 0700
  4092. 0D66: A2A6
  4093.  
  4094. 0D68: 09F8
  4095. 0D6A: 2F1D
  4096. 0D6C: 0740
  4097. 0D6E: 840F
  4098.  
  4099. 0D70: 10F8
  4100. 0D72: 2C1D
  4101. 0D74: 0710
  4102. 0D76: 8408
  4103.  
  4104. 0D78: 1CF8
  4105. 0D7A: 2C1E
  4106. 0D7C: 0700
  4107. 0D7E: 8402
  4108.  
  4109. 0D80: 0088
  4110. 0D82: AF11
  4111. 0D84: 0741
  4112. 0D86: 298E
  4113.  
  4114. 0D88: 4080
  4115. 0D8A: 2F1E
  4116. 0D8C: 0740
  4117. 0D8E: 840F
  4118.  
  4119. 0D90: FCE0
  4120. 0D92: 2F11
  4121. 0D94: 0700
  4122. 0D96: 840C
  4123.  
  4124. 0D98: 1CF8
  4125. 0D9A: 2F1D
  4126. 0D9C: 0700
  4127. 0D9E: A28E
  4128.  
  4129. 0DA0: 10F8
  4130. 0DA2: 2C1E
  4131. 0DA4: 0700
  4132. 0DA6: 8408
  4133.  
  4134. 0DA8: 1388
  4135. 0DAA: 2F11
  4136. 0DAC: 177E
  4137. 0DAE: 29C0
  4138.  
  4139. 0DB0: 10F8
  4140. 0DB2: 2F1D
  4141. 0DB4: 0701
  4142. 0DB6: 09B7
  4143.  
  4144. 0DB8: 1CF8
  4145. 0DBA: 2F1D
  4146. 0DBC: 0701
  4147. 0DBE: 09B8
  4148.  
  4149. 0DC0: 17E0
  4150. 0DC2: AD1D
  4151. 0DC4: 0701
  4152. 0DC6: 09B9
  4153.  
  4154. 0DC8: 1CF8
  4155. 0DCA: 2F1D
  4156. 0DCC: 0700
  4157. 0DCE: A2FE
  4158.  
  4159. 0DD0: 1C88
  4160. 0DD2: 2F1D
  4161. 0DD4: 0701
  4162. 0DD6: 2832
  4163.  
  4164. 0DD8: 1328
  4165. 0DDA: AC1D
  4166. 0DDC: 07A0
  4167. 0DDE: 840A
  4168.  
  4169. 0DE0: 0CF0
  4170. 0DE2: 6D1D
  4171. 0DE4: 9700
  4172. 0DE6: 68BC
  4173.  
  4174. 0DE8: 1CF8
  4175. 0DEA: 2F1C
  4176. 0DEC: 4700
  4177. 0DEE: 840F
  4178.  
  4179. 0DF0: 13F8
  4180. 0DF2: 2F1D
  4181. 0DF4: 170E
  4182. 0DF6: 840F
  4183.  
  4184. 0DF8: 1EF8
  4185. 0DFA: 2C1D
  4186. 0DFC: EF11
  4187. 0DFE: 120F
  4188.  
  4189. 0E00: 0EF8
  4190. 0E02: 2C1D
  4191. 0E04: EF11
  4192. 0E06: 140F
  4193.  
  4194. 0E08: 1549
  4195. 0E0A: EC1D
  4196. 0E0C: CF10
  4197. 0E0E: 8403
  4198.  
  4199. 0E10: 1389
  4200. 0E12: 6F1D
  4201. 0E14: 0710
  4202. 0E16: 840F
  4203.  
  4204. 0E18: 1CF8
  4205. 0E1A: 2C1E
  4206. 0E1C: 0700
  4207. 0E1E: 84FE
  4208.  
  4209. 0E20: F280
  4210. 0E22: 2F11
  4211. 0E24: 0710
  4212. 0E26: 84FF
  4213.  
  4214. 0E28: 1C68
  4215. 0E2A: AC0D
  4216. 0E2C: 07B0
  4217. 0E2E: 8420
  4218.  
  4219. 0E30: 1C8F
  4220. 0E32: AF1D
  4221. 0E34: 0500
  4222. 0E36: 840F
  4223.  
  4224. 0E38: 1CF8
  4225. 0E3A: 2F1D
  4226. 0E3C: 2700
  4227. 0E3E: 840F
  4228.  
  4229. 0E40: 1CEF
  4230. 0E42: 0F1D
  4231. 0E44: 080E
  4232. 0E46: A9C8
  4233.  
  4234. 0E48: 17F8
  4235. 0E4A: 2E1D
  4236. 0E4C: 0710
  4237. 0E4E: 840F
  4238.  
  4239. 0E50: 13E0
  4240. 0E52: AD1D
  4241. 0E54: 0700
  4242. 0E56: 840F
  4243.  
  4244. 0E58: 1708
  4245. 0E5A: AF1D
  4246. 0E5C: 0700
  4247. 0E5E: A2FE
  4248.  
  4249. 0E60: 12E0
  4250. 0E62: AD1D
  4251. 0E64: 0700
  4252. 0E66: 840F
  4253.  
  4254. 0E68: 1308
  4255. 0E6A: AF1D
  4256. 0E6C: 0700
  4257. 0E6E: A2FE
  4258.  
  4259. 0E70: 1228
  4260. 0E72: AF1D
  4261. 0E74: 0700
  4262. 0E76: 840F
  4263.  
  4264. 0E78: 1CEF
  4265. 0E7A: 8F1D
  4266. 0E7C: 0700
  4267. 0E7E: 840F
  4268.  
  4269. 0E80: 13F8
  4270. 0E82: 2D1D
  4271. 0E84: 0710
  4272. 0E86: 840F
  4273.  
  4274. 0E88: 12F8
  4275. 0E8A: 2E1D
  4276. 0E8C: 0710
  4277. 0E8E: 840F
  4278.  
  4279. 0E90: FC47
  4280. 0E92: 2F1D
  4281. 0E94: 0700
  4282. 0E96: 8420
  4283.  
  4284. 0E98: 1597
  4285. 0E9A: 4F15
  4286. 0E9C: 0700
  4287. 0E9E: 840F
  4288.  
  4289. 0EA0: 1CF8
  4290. 0EA2: 2F1D
  4291. 0EA4: 0700
  4292. 0EA6: A2C5
  4293.  
  4294. 0EA8: F781
  4295. 0EAA: 6F1D
  4296. 0EAC: 0710
  4297. 0EAE: 8420
  4298.  
  4299. 0EB0: 1C49
  4300. 0EB2: CC1E
  4301. 0EB4: 0700
  4302. 0EB6: 84A0
  4303.  
  4304. 0EB8: FC61
  4305. 0EBA: 6F1D
  4306. 0EBC: 0700
  4307. 0EBE: 8406
  4308.  
  4309. 0EC0: 1C29
  4310. 0EC2: 6C1D
  4311. 0EC4: 07A0
  4312. 0EC6: 8400
  4313.  
  4314. 0EC8: 1C8F
  4315. 0ECA: AF1D
  4316. 0ECC: 0500
  4317. 0ECE: 840F
  4318.  
  4319. 0ED0: 1CF8
  4320. 0ED2: 2E1D
  4321. 0ED4: 2700
  4322. 0ED6: 840F
  4323.  
  4324. 0ED8: 1CEE
  4325. 0EDA: 2E1D
  4326. 0EDC: 080E
  4327. 0EDE: A8DB
  4328.  
  4329. 0EE0: 1C17
  4330. 0EE2: 2F11
  4331. 0EE4: 0700
  4332. 0EE6: 840F
  4333.  
  4334. 0EE8: 1CED
  4335. 0EEA: 6F1D
  4336. 0EEC: 0700
  4337. 0EEE: 840F
  4338.  
  4339. 0EF0: 1CE5
  4340. 0EF2: AE1D
  4341. 0EF4: 0700
  4342. 0EF6: 840F
  4343.  
  4344. 0EF8: 1C0F
  4345. 0EFA: AF1D
  4346. 0EFC: 0700
  4347. 0EFE: A2FE
  4348.  
  4349. 0F00: 1CED
  4350. 0F02: 8F1D
  4351. 0F04: 0700
  4352. 0F06: 840F
  4353.  
  4354. 0F08: 17E0
  4355. 0F0A: AD15
  4356. 0F0C: 0700
  4357. 0F0E: 840F
  4358.  
  4359. 0F10: 1C59
  4360. 0F12: 6F1D
  4361. 0F14: 0700
  4362. 0F16: A2D7
  4363.  
  4364. 0F18: 1629
  4365. 0F1A: EC1D
  4366. 0F1C: 0710
  4367. 0F1E: 8480
  4368.  
  4369. 0F20: 1608
  4370. 0F22: EC15
  4371. 0F24: 07A0
  4372. 0F26: 8400
  4373.  
  4374. 0F28: FC61
  4375. 0F2A: 6F1D
  4376. 0F2C: 0700
  4377. 0F2E: 8406
  4378.  
  4379. 0F30: FC41
  4380. 0F32: EF1D
  4381. 0F34: 0500
  4382. 0F36: 8401
  4383.  
  4384. 0F38: 1CF8
  4385. 0F3A: 2F1D
  4386. 0F3C: 2F00
  4387. 0F3E: 840F
  4388.  
  4389. 0F40: 1CEE
  4390. 0F42: 2E1D
  4391. 0F44: 080E
  4392. 0F46: A8E8
  4393.  
  4394. 0F48: 1CE5
  4395. 0F4A: AE1D
  4396. 0F4C: 0700
  4397. 0F4E: AEFE
  4398.  
  4399. 0F50: 1CF8
  4400. 0F52: 2F1D
  4401. 0F54: 0700
  4402. 0F56: 62FE
  4403.  
  4404. 0F58: F001
  4405. 0F5A: EF1D
  4406. 0F5C: CF00
  4407. 0F5E: 845F
  4408.  
  4409. 0F60: FC41
  4410. 0F62: EA1D
  4411. 0F64: 0710
  4412. 0F66: 841F
  4413.  
  4414. 0F68: 1BF8
  4415. 0F6A: 2C1D
  4416. 0F6C: 0710
  4417. 0F6E: 8404
  4418.  
  4419. 0F70: FA81
  4420. 0F72: EF1D
  4421. 0F74: 0710
  4422. 0F76: 8456
  4423.  
  4424. 0F78: 1C29
  4425. 0F7A: 6C1D
  4426. 0F7C: 07A0
  4427. 0F7E: 8400
  4428.  
  4429. 0F80: 1C8F
  4430. 0F82: AF1D
  4431. 0F84: 0500
  4432. 0F86: 840F
  4433.  
  4434. 0F88: 1BF8
  4435. 0F8A: 2E1D
  4436. 0F8C: 2F00
  4437. 0F8E: 840F
  4438.  
  4439. 0F90: 1BEE
  4440. 0F92: 2E1D
  4441. 0F94: 0E0E
  4442. 0F96: A8F2
  4443.  
  4444. 0F98: 1CE5
  4445. 0F9A: AE1D
  4446. 0F9C: 0700
  4447. 0F9E: 840F
  4448.  
  4449. 0FA0: 1AE0
  4450. 0FA2: AD1D
  4451. 0FA4: 0700
  4452. 0FA6: A2FE
  4453.  
  4454. 0FA8: 1C0B
  4455. 0FAA: 8F9D
  4456. 0FAC: 0700
  4457. 0FAE: A2EF
  4458.  
  4459. 0FB0: 1C29
  4460. 0FB2: EF1D
  4461. 0FB4: 07A0
  4462. 0FB6: 840F
  4463.  
  4464. 0FB8: 1BF8
  4465. 0FBA: 2E1D
  4466. 0FBC: 2600
  4467. 0FBE: 840F
  4468.  
  4469. 0FC0: 1BEE
  4470. 0FC2: 2E1D
  4471. 0FC4: 0E0F
  4472. 0FC6: E8F9
  4473.  
  4474. 0FC8: FC01
  4475. 0FCA: EF1D
  4476. 0FCC: 0700
  4477. 0FCE: 84B0
  4478.  
  4479. 0FD0: 1CE5
  4480. 0FD2: AE1D
  4481. 0FD4: 0700
  4482. 0FD6: 840F
  4483.  
  4484. 0FD8: 1CF8
  4485. 0FDA: 2F1D
  4486. 0FDC: 0700
  4487. 0FDE: 62FE
  4488.  
  4489. 0FE0: 1CF8
  4490. 0FE2: 2F1D
  4491. 0FE4: 0701
  4492. 0FE6: 29FE
  4493.  
  4494. 0FE8: 1CF8
  4495. 0FEA: 2F1D
  4496. 0FEC: 0701
  4497. 0FEE: 29FE
  4498.  
  4499. 0FF0: 1CF8
  4500. 0FF2: 2F1D
  4501. 0FF4: 0700
  4502. 0FF6: E4FE
  4503.  
  4504. 0FF8: AAAA
  4505. 0FFA: 5555
  4506. 0FFC: 00AA
  4507. 0FFE: E3C8
  4508. 
  4509.  
  4510.  
  4511.