PAGE 01 DAI FIRMWARE C000-C1FA V1.1 002 ORG :C000 003 * 004 * 005 * 006 * ================= 007 *** MATH. UTILITIES *** 008 * ================= 009 * 010 * 011 *************** 012 * ENTRYPOINTS * 013 *************** 014 * 015 C000 C319C7 BASE JMP :C719 Reset (entry on hardware 016 reset) 017 C003 C335C0 XINIT JMP :C035 Math. package initialisation 018 C006 C3F3C0 XFINM JMP :C0F3 Incr. FPT number in memory 019 C009 C3FBC1 XFDCM JMP :C1FB Decr. FPT number in memory 020 (not used) 021 C00C C379C0 XFCOMP JMP :C079 FPT Compare 022 C00F C3BBC0 XIINM JMP :C0BB Incr. INT number in memory 023 C012 C3D5C0 XIDCM JMP :C0D5 Decr. INT number in memory 024 (not used) 025 C015 C3ACC0 XICOMP JMP :C0AC INT Compare 026 C018 C31EC2 XPUSH JMP :C21E Save MACC on stack 027 C01B C334C2 XPOP JMP :C234 Retrieve MACC from stack 028 C01E C349C2 XFCB JMP :C249 Input FPT number to MACC 029 C021 C361C3 XFBC JMP :C361 Conv. FPT number for output 030 C024 C373C5 XICB JMP :C573 Input INT number to MACC 031 C027 C3B2C5 XIBC JMP :C5B2 Conv. INT number for output 032 C02A C314C6 XHCB JMP :C614 Input Hex number to MACC 033 C02D C353C6 XHBC JMP :C653 Conv. MACC to Hex for output 034 C030 C386C4 XPRTY JMP :C486 Pretties up FPT/INT number 035 C033 E300 DECBUF DBL :00E3 Location output buffer 036 * 037 ******************************** 038 * MATH. PACKAGE INITIALISATION * 039 ******************************** 040 * 041 * Entry: HL: Address input encoding routine (DDE0). 042 * DE: Base address error routines (C7F2). 043 * Exit: AFDEHL corrupted, BC preserved. 044 * 045 C035 22D200 MINIT SHLD :00D2 Init. (00D2/3)=DDE0 046 C038 EB XCHG 047 C039 22D000 SHLD :00D0 Init. (00D0/1)=C7F2 048 C03C 3A02FB LDA :FB02 Get math.chip status 049 C03F B7 ORA A Check if math.chip present 050 C040 3E00 MVI A,:00 Flag = 0 if not 051 C042 FA47C0 JM :C047 052 C045 3E7B MVI A,:7B Flag = #7B if present 053 C047 32D400 LC18 STA :00D4 Set math.chip flag 054 C04A C9 RET 055 * 056 ************************** 057 * OVERFLOW ERROR ROUTINE * 058 ************************** 059 * 060 * (From LC20 common part for various entries). 061 * 062 * Jump to (00D0/1) = Address 'overflow error' 063 * routine (C7F2). PAGE 02 DAI FIRMWARE C000-C1FA V1.1 064 * 065 * Entry: If start at LC20: offset in HL. 066 * Exit: AFBCDEHL preserved. 067 * On stack original returnaddress. 068 * 069 C04B E5 FPEOV PUSH H 070 C04C 210000 LXI H,:0000 Init offset = 0 071 * 072 C04F F5 LC20 PUSH PSW 073 C050 D5 PUSH D 074 C051 EB XCHG Offset in DE 075 C052 2AD000 LHLD :00D0 Get addr pointer 076 C055 19 DAD D Add offset 077 C056 7E MOV A,M 078 C057 23 INX H 079 C058 66 MOV H,M 080 C059 6F MOV L,A Get addr routine in HL 081 C05A D1 POP D 082 C05B F1 POP PSW 083 C05C E3 XTHL New addr on stack 084 C05D C9 RET Continu with new address 085 * 086 ****************** 087 * ARGUMENT ERROR * 088 ****************** 089 * 090 * Jump to (00D0/1)+2 = Address 'number out of range' 091 * routine (C7F4). 092 * 093 * Entry/exit: See FPEOV. 094 * 095 C05E E5 FPEAE PUSH H 096 C05F 210200 LXI H,:0002 Init. offset 097 C062 C34FC0 JMP :C04F Calc. new addr, go to it 098 * 099 ******************* 100 * UNDERFLOW ERROR * 101 ******************* 102 * 103 * Jump to (00D0/1)+4 = Return (C7F6). 104 * Underflow gives 0 as result of operation. 105 * 106 * Entry/exit: See FPEOV. 107 * 108 C065 E5 FPEUN PUSH H 109 C066 215EC4 LXI H,:C45E Addr. FPT(0) 110 C069 C30CD2 JMP :D20C Copy '0' into MACC 111 * 112 ************************ 113 * DIVIDE BY ZERO ERROR * 114 ************************ 115 * 116 * Jump to (00D0/1)+6 = Address 'divide by zero' 117 * routine (C7F8). 118 * 119 * Entry/exit: See FPEOV. 120 * 121 C06C E5 FPED0 PUSH H 122 C06D 210600 LXI H,:0006 Init. offset 123 C070 C34FC0 JMP :C04F Calc. new addr, go to it 124 * 125 * PAGE 03 DAI FIRMWARE C000-C1FA V1.1 126 *************************** 127 * GET CHARACTER FROM LINE * 128 *************************** 129 * 130 * Entry: None. 131 * Exit : All registers preserved. 132 * Address to continue on stack. 133 * 134 C073 E5 LC22 PUSH H 135 C074 2AD200 LHLD :00D2 Get addr 'Get char' routine 136 C077 E3 XTHL on stack; restore HL 137 C078 C9 RET Goto (00D0/1)+2 138 * 139 ************************** 140 * FLOATING POINT COMPARE * 141 ************************** 142 * 143 * Compares normalised FPT numbers in MACC 144 * and in M. 145 * 146 * Exit: ABCDEHL preserved. 147 * Flags: CY=1,S=0,Z=1: both nrs. 0 148 * CY=0,S=0,Z=1: both nrs. identical 149 * CY=0,S=0,Z=0: MACC > M 150 * CY=0,S=1,Z=0: MACC < M 151 * 152 C079 C5 FCOMP PUSH B 153 C07A F5 PUSH PSW 154 C07B D5 PUSH D 155 C07C E5 PUSH H 156 C07D E7 RST 4 Copy MACC to reg A,B,C,D 157 C07E 15 DATA :15 158 C07F 5F MOV E,A Exp.byte in E 159 C080 AE XRA M XOR both exp.bytes 160 C081 FAB7C0 JM :C0B7 Jump if different signs 161 162 * If equal signs: 163 164 C084 C3E8D1 JMP :D1E8 Goto D1E8, return to C087 165 * 166 C087 17 LC23 RAL 167 C088 C2A3C0 JNZ :C0A3 168 C08B 7B LC24 MOV A,E 169 C08C 96 SUB M Comp. exp. bytes 170 C08D C2A2C0 JNZ :C0A2 Jump if not equal 171 C090 23 INX H 172 C091 78 MOV A,B 173 C092 96 SUB M Comp. 1st bytes mantissa's 174 C093 C2A2C0 JNZ :C0A2 Jump if not equal 175 C096 23 INX H 176 C097 79 MOV A,C 177 C098 96 SUB M Comp. 2nd bytes mantissa's 178 C099 C2A2C0 JNZ :C0A2 Jump if not equal 179 C09C 23 INX H 180 C09D 7A MOV A,D 181 C09E 96 SUB M Comp. 3rd bytes mantissa's 182 C09F CAA6C0 LC25 JZ :C0A6 Jump if not equal 183 C0A2 1F LC26 RAR ) Set flags for output 184 C0A3 AB LC27 XRA E ) 185 C0A4 F601 LC28 ORI :01 Clear CY-flag 186 C0A6 E1 LC29 POP H 187 C0A7 D1 POP D PAGE 04 DAI FIRMWARE C000-C1FA V1.1 188 C0A8 C1 POP B 189 C0A9 78 MOV A,B Restore A 190 C0AA C1 POP B 191 C0AB C9 RET 192 * 193 ******************* 194 * INTEGER COMPARE * 195 ******************* 196 * 197 * Compares INT numbers in MACC and M. 198 * REMARK: Routine is incorrect when both 199 * numbers are negative ! Then result 200 * is if MACC > M due to LC26/LC27. 201 * 202 * Exit: ABCDEHL preserved. CY=0 203 * Flags: S=0, Z=1: Both numbers equal 204 * S=0, Z=0: MACC > M 205 * S=1, Z=0: MACC < M 206 * 207 C0AC C5 ICOMP PUSH B 208 C0AD F5 PUSH PSW 209 C0AE D5 PUSH D 210 C0AF E5 PUSH H 211 C0B0 E7 RST 4 Copy MACC to reg. A,B,C,D 212 C0B1 15 DATA :15 213 C0B2 5F MOV E,A Sign byte in E 214 C0B3 AE XRA M XOR both sign bytes 215 * 216 * 217 * 218 * ============================= 219 *** UPDATES in BASIC version V1.1 *** 220 * ============================= 221 * 222 * The differences in BASIC V1.1 from V1.0 are given. 223 * 224 * ] : Indicates a total change of instruction 225 * ! : Indicates only a corrected jumpaddress 226 * due to a move of the original routine. 227 * No mark: Instructions only moved to other 228 * memory addresses (Mostly to obtain 229 * space for new routines). 230 * 231 * 232 ******************* 233 * INTEGER COMPARE * 234 ******************* 235 * 236 * The temporary storage register E (sign byte) is 237 * cleared to avoid problems when using the combined 238 * FPT/INT exit LC27. This is done to remove a bug in 239 * comparing 2 relational numeric operations. The 240 * unitary operator '-' is now recognised correctly. 241 * 242 C0B4 C3C8D1 JMP :D1C8 ] 243 * 244 245 * If different signs: 246 247 C0B7 AE LC241 XRA M Find out which one is neg: 248 S=1: MEM pos; MACC neg 249 S=0: MEM neg; MACC pos PAGE 05 DAI FIRMWARE C000-C1FA V1.1 250 C0B8 C3A4C0 JMP :C0A4 Abort 251 * 252 ************************************** 253 * INCREMENT INTEGER NUMBER IN MEMORY * 254 ************************************** 255 * 256 * Entry: HL points to 1st byte of INT number. 257 * Exit: All registers preserved. 258 * 259 C0BB F5 IINM PUSH PSW 260 C0BC E5 PUSH H 261 C0BD 23 INX H 262 C0BE 23 INX H 263 C0BF 23 INX H HL pnts to last byte 264 C0C0 3E03 MVI A,:03 Nr of bytes for INT nr 265 C0C2 34 LC30 INR M Incr. INT nr. 266 C0C3 C2D2C0 JNZ :C0D2 Ready if no overflow 267 C0C6 2B DCX H Goto next byte 268 C0C7 3D DCR A 1st byte reached? 269 C0C8 C2C2C0 JNZ :C0C2 Incr. next byte 270 C0CB 34 INR M Incr. 1st byte 271 C0CC 7E MOV A,M Get it 272 C0CD FE80 CPI :80 msb=1? 273 C0CF CC4BC0 CZ :C04B Then overflow error 274 C0D2 E1 LC31 POP H Normal return 275 C0D3 F1 POP PSW 276 C0D4 C9 RET 277 * 278 *************************************************** 279 * DECREMENT INTEGER NUMBER IN MEMORY - (not used) * 280 *************************************************** 281 * 282 * Entry: HL points to 1st byte of INT number. 283 * Exit: All registers preserved. 284 * 285 C0D5 F5 IDCM PUSH PSW 286 C0D6 C5 PUSH B 287 C0D7 E5 PUSH H 288 C0D8 23 INX H 289 C0D9 23 INX H 290 C0DA 23 INX H HL pnts to last byte 291 C0DB 0603 MVI B,:03 Nr. of bytes of INT nr. 292 C0DD 35 LC32 DCR M Decr. INT nr 293 C0DE 7E MOV A,M 294 C0DF 3C INR A Check for overflow 295 C0E0 C2EFC0 JNZ :C0EF Ready if no overflow 296 C0E3 2B DCX H Goto next byte 297 C0E4 05 DCR B Decr. byte count 298 C0E5 C2DDC0 JNZ :C0DD Next byte if not ready 299 C0E8 35 DCR M Decr. hibyte 300 C0E9 7E MOV A,M 301 C0EA FE7F CPI :7F Check for overflow 302 C0EC CC4BC0 CZ :C04B Then run overflow error 303 C0EF E1 LC33 POP H Normal return 304 C0F0 C1 POP B 305 C0F1 F1 POP PSW 306 C0F2 C9 RET 307 * 308 ********************************************* 309 * INCREMENT FLOATING POINT NUMBER IN MEMORY * 310 ********************************************* 311 * PAGE 06 DAI FIRMWARE C000-C1FA V1.1 312 * If number = 0, or exponent < 0, a '1' is added 313 * to the lsb of the mantissa. Else, the position 314 * of the least significant '1' is looked up, and 315 * a '1' is added to this position. 316 * If the lsb of the mantissa is already a rounded 317 * value, no increment occurs. 318 * 319 * Entry: HL points to 1st byte of FPT number. 320 * Exit: All registers preserved. 321 * 322 C0F3 F5 FINM PUSH PSW 323 C0F4 C5 PUSH B 324 C0F5 D5 PUSH D 325 C0F6 E5 PUSH H 326 C0F7 1162C4 LXI D,:C462 Addr FPT(1) 327 C0FA 7E MOV A,M Get exp.byte 328 C0FB E67F ANI :7F Mask sign bit 329 C0FD CAACC1 JZ :C1AC If nr=0: add 1, abort 330 C100 FE40 CPI :40 Is exponent negative? 331 C102 D2ACC1 JNC :C1AC Then add 1, abort 332 C105 FE19 CPI :19 Lsb of mantissa is not lsb 333 of number ? 334 C107 D24DC1 JNC :C14D Then Popall, ret 335 C10A BE CMP M Check if nr. is negative 336 C10B 23 INX H 337 C10C C252C1 JNZ :C152 Then jump 338 339 * From LC34 also used by XFDCM. 340 * Find lsb of mantissa if nr is positive: 341 342 C10F D609 LC34 SUI :09 In 1st byte ? 343 C111 DCEEC1 CC :C1EE Then SHL bit into A (A) time 344 C114 DA36C1 JC :C136 and jump 345 C117 23 INX H 346 C118 D608 SUI :08 In 2nd byte ? 347 C11A DCEEC1 CC :C1EE Then SHL bit into A (A) time 348 C11D DA2EC1 JC :C12E and jump 349 C120 23 INX H 350 C121 D608 SUI :08 In 3rd byte ? 351 C123 CDEEC1 CALL :C1EE Then SHL bit into A (A) time 352 C126 86 ADD M 353 C127 77 MOV M,A Add 1 to 3rd byte mantissa 354 C128 D24DC1 JNC :C14D Ready if no overflow 355 C12B 2B DCX H 356 C12C 3E01 MVI A,:01 Overflow: add 1 to 2nd byte 357 C12E 86 LC35 ADD M 358 C12F 77 MOV M,A Add 1 to 2nd byte mantissa 359 C130 D24DC1 JNC :C14D Ready if no overflow 360 C133 2B DCX H 361 C134 3E01 MVI A,:01 Overflow: add 1 to 1st byte 362 C136 86 LC36 ADD M 363 C137 77 MOV M,A Add 1 to 1st byte mantissa 364 C138 D24DC1 JNC :C14D Ready if no overflow 365 366 * If overflow into exponent byte: 367 368 C13B 1F RAR ) 369 C13C 77 MOV M,A ) 370 C13D 23 INX H ) 371 C13E 7E MOV A,M ) Shift all bits in 372 C13F 1F RAR ) mantissa right 373 C140 77 MOV M,A ) one position PAGE 07 DAI FIRMWARE C000-C1FA V1.1 374 C141 23 INX H ) 375 C142 7E MOV A,M ) 376 C143 1F RAR ) 377 C144 77 MOV M,A ) 378 C145 2B DCX H 379 C146 2B DCX H 380 C147 2B DCX H HL pnts to exp.byte 381 C148 3E01 MVI A,:01 382 C14A CDBAC1 LC37 CALL :C1BA Add 1 to exponent 383 * 384 C14D E1 EXIT POP H 385 C14E D1 POP D 386 C14F C1 POP B 387 C150 F1 POP PSW 388 C151 C9 RET 389 390 * Find lsb of mantissa if nr is negative: 391 392 C152 D609 LC39 SUI :09 In 1st byte ? 393 C154 DCEEC1 CC :C1EE Then SHL bit into A (A) time 394 C157 DA7DC1 JC :C17D and jump 395 C15A 23 INX H 396 C15B D608 SUI :08 In 2nd byte ? 397 C15D DCEEC1 CC :C1EE Then SHL bit into A (A) time 398 C160 DA73C1 JC :C173 and jump 399 C163 23 INX H 400 C164 D608 SUI :08 In 3rd byte ? 401 C166 DCEEC1 CC :C1EE Then SHL bit into A (A) time 402 C169 47 MOV B,A 403 C16A 7E MOV A,M 404 C16B 90 SUB B Subtract 1 from 3rd byte 405 C16C 77 MOV M,A 406 C16D D24DC1 JNC :C14D Ready if no borrow 407 C170 2B DCX H 408 C171 3E01 MVI A,:01 Subtract 1 from 2nd byte if 409 borrow 410 C173 47 LC40 MOV B,A 411 C174 7E MOV A,M 412 C175 90 SUB B Subtract 1 from 2nd byte 413 C176 77 MOV M,A 414 C177 D24DC1 JNC :C14D Ready if no borrow 415 C17A 2B DCX H 416 C17B 3E01 MVI A,:01 Subtract 1 from 1st byte if 417 borrow 418 C17D 47 LC41 MOV B,A 419 C17E 7E MOV A,M 420 C17F 90 SUB B Subtract 1 from 1st byte 421 C180 77 MOV M,A 422 C181 FA4DC1 JM :C14D Ready if normalised 423 424 * If not normalised: 425 426 C184 0618 MVI B,:18 Nr of mantissa bits 427 C186 23 LC42 INX H ) 428 C187 23 INX H ) 429 C188 B7 ORA A ) 430 C189 7E MOV A,M ) 431 C18A 17 RAL ) 432 C18B 77 MOV M,A ) Shift all bits 433 C18C 2B DCX H ) of mantissa 434 C18D 7E MOV A,M ) left one position 435 C18E 17 RAL ) PAGE 08 DAI FIRMWARE C000-C1FA V1.1 436 C18F 77 MOV M,A ) 437 C190 2B DCX H ) 438 C191 7E MOV A,M ) 439 C192 17 RAL ) 440 C193 77 MOV M,A ) 441 C194 B7 ORA A 442 C195 FA9FC1 JM :C19F If normalized 443 C198 05 DCR B Update exp. count 444 C199 CAA6C1 JZ :C1A6 If exp. now zero 445 C19C C386C1 JMP :C186 Cont. normalisation 446 447 * Normalisation done: 448 449 C19F 2B LC43 DCX H Pnts to exp.byte 450 C1A0 78 MOV A,B Get exp. count 451 C1A1 D619 SUI :19 Minus nr of bytes in 452 mantissa 453 C1A3 C34AC1 JMP :C14A Update exponent, quit 454 455 * If exponent is zero: 456 457 C1A6 2B LC44 DCX H 458 C1A7 3600 MVI M,:00 Exp.byte is 0 459 C1A9 C34DC1 JMP :C14D Popall, ret 460 461 * Simply add 1 (FINM) or add -1 (FDCM): 462 463 C1AC E7 LC45 RST 4 Copy number into MACC 464 C1AD 0C DATA :0C 465 C1AE EB XCHG 466 C1AF E7 RST 4 Add 1 or -1 (FPT) 467 C1B0 00 DATA :00 468 C1B1 EB XCHG 469 C1B2 E7 RST 4 Copy MACC into memory 470 C1B3 0F DATA :0F 471 C1B4 C34DC1 JMP :C14D Popall, ret 472 * 473 ***************** 474 * ADD EXPONENTS * 475 ***************** 476 * 477 * LC225 for operand in MACC. 478 * LC46 for operand in M. 479 * 480 * Entry: Byte to be added to exponent in A. 481 * Exit: BCDEHL preserved. 482 * CY=0: O.K. 483 * CY=1: Overflow. 484 * 485 C1B7 21D500 LC225 LXI H,:00D5 Addr. MACC 486 * 487 C1BA E5 LC46 PUSH H 488 C1BB D5 PUSH D 489 C1BC C5 PUSH B 490 C1BD 4F MOV C,A Byte to be added in C 491 C1BE 7E MOV A,M Get exp.byte operand 492 C1BF E680 ANI :80 Sign bit mantissa only 493 C1C1 47 MOV B,A in B 494 C1C2 7E MOV A,M Get exp.byte 495 C1C3 CDE9C1 CALL :C1E9 Sign extend 496 C1C6 F5 PUSH PSW Save sign extended exp.byte 497 C1C7 A9 XRA C XOR with byte to be added PAGE 09 DAI FIRMWARE C000-C1FA V1.1 498 C1C8 2F CMA 499 C1C9 57 MOV D,A 500 C1CA F1 POP PSW Get sign extended exp.byte 501 C1CB 81 ADD C Add byte to exponent 502 C1CC 4F MOV C,A Store result 503 C1CD 1F RAR 504 C1CE A9 XRA C 505 C1CF A2 ANA D 506 C1D0 FAE2C1 JM :C1E2 If overflow into sign bit 507 C1D3 79 MOV A,C Get new exp.byte 508 C1D4 17 RAL 509 C1D5 A9 XRA C 510 C1D6 FAE2C1 JM :C1E2 If overflow into sign bit 511 C1D9 79 MOV A,C Get new exp.byte 512 C1DA E67F ANI :7F Exponent only 513 C1DC B0 ORA B Add sign bit mantissa 514 C1DD 77 MOV M,A Store it 515 C1DE C1 LC47 POP B 516 C1DF D1 POP D 517 C1E0 E1 POP H 518 C1E1 C9 RET CY=0 519 520 * If overflow into sign bit: 521 522 C1E2 79 LC48 MOV A,C Get new exp.byte 523 C1E3 17 RAL 524 C1E4 B7 ORA A 525 C1E5 37 STC 526 C1E6 C3DEC1 JMP :C1DE Abort with CY=1 527 * 528 *************** 529 * SIGN EXTEND * 530 *************** 531 * 532 * Exponent byte is normalized. 533 * 534 * Entry: Exp.byte in A. 535 * Exit: BCDEHL preserved. 536 * Normalized exp.byte in A: Exp.value in 537 * bits 7-2, sign mantissa in bit 1, sign 538 * exponent in bit 0. 539 * 540 C1E9 07 SEXT RLC 541 C1EA 07 RLC 542 C1EB 0F RRC 543 C1EC 1F RAR 544 C1ED C9 RET 545 * 546 ************************************ 547 * MOVE A BIT INTO A LEFT (A) TIMES * 548 ************************************ 549 * 550 * Used to place a '1' in the correct position in 551 * a byte for adding/subtracting '1' to/from the 552 * least significant '1' of a FPT mantissa. 553 * 554 * Entry: A contains a neg. number indicating 555 * how often RAL has to be performed. 556 * Exit: Result in A,B. 557 * FCDEHL preserved. 558 * 559 C1EE F5 LC50 PUSH PSW PAGE 10 DAI FIRMWARE C000-C1FA V1.1 560 C1EF 47 MOV B,A Save nr of shifts 561 C1F0 AF XRA A Clear A 562 C1F1 37 STC Set CY 563 C1F2 17 LC51 RAL SHL 564 C1F3 04 INR B Update count 565 C1F4 C2F2C1 JNZ :C1F2 Continu if not ready 566 C1F7 47 MOV B,A Save result 567 C1F8 F1 POP PSW 568 C1F9 78 MOV A,B Result in A 569 C1FA C9 RET 570 * 571 * 572 * 573 C1FB END *************************** * S Y M B O L T A B L E * *************************** BASE C000 DECBUF C033 EXIT C14D FCOMP C079 FINM C0F3 FPEAE C05E FPED0 C06C FPEOV C04B FPEUN C065 ICOMP C0AC IDCM C0D5 IINM C0BB LC18 C047 LC20 C04F LC22 C073 LC225 C1B7 LC23 C087 LC24 C08B LC241 C0B7 LC25 C09F LC26 C0A2 LC27 C0A3 LC28 C0A4 LC29 C0A6 LC30 C0C2 LC31 C0D2 LC32 C0DD LC33 C0EF LC34 C10F LC35 C12E LC36 C136 LC37 C14A LC39 C152 LC40 C173 LC41 C17D LC42 C186 LC43 C19F LC44 C1A6 LC45 C1AC LC46 C1BA LC47 C1DE LC48 C1E2 LC50 C1EE LC51 C1F2 MINIT C035 SEXT C1E9 XFBC C021 XFCB C01E XFCOMP C00C XFDCM C009 XFINM C006 XHBC C02D XHCB C02A XIBC C027 XICB C024 XICOMP C015 XIDCM C012 XIINM C00F XINIT C003 XPOP C01B XPRTY C030 XPUSH C018