NAME=c166: checking bitness writing (asm.bits) and instruction length
FILE=malloc://32
CMDS=<<EOF
e asm.arch=c166
e asm.bits
wx 0012 @ 0
wx 3B @ 2
wx 6034 @ 3
ao 3~size
wx 0012 @ 0
wx 3B00 @ 2
wx 6034 @ 4
ao 3~size
wx 6035 @ 0
wx 0012 @ 2
wx 0012 @ 4
ao 3~size
wx 2056 @ 0
wx 0012 @ 2
wx 3B @ 4
ao 3~size
wx 0156 @ 0
wx 0012 @ 2
wx 0012 @ 4
ao 3~size
wx 645d203d @ 0
pD 4
e asm.bytes=true
wx 0012603488560D080B7820560F2440122DFA081208340856 @ 0
pdq 12
ao 12~size
EOF
EXPECT=<<EOF
16
size: 2
size: 2
size: 4
size: 2
size: 2
size: 2
size: 2
size: 2
size: 2
size: 2
size: 2
size: 2
size: 2
size: 2
size: 2
            0x00000000      and   0xfe00:0x3d20, 0xfeba
0x00000000                 0012  add r1, r2
0x00000002                 6034  and r3, r4
0x00000004                 8856  mov [-r6], r5
0x00000006                 0d08  jmpr cc_UC, 0x000018
0x00000008                 0b78  mul r7, r8
0x0000000a                 2056  sub r5, r6
0x0000000c                 0f24  bset 0xfd48.0
0x0000000e                 4012  cmp r1, r2
0x00000010                 2dfa  jmpr cc_Z/EQ, 0x000006
0x00000012                 0812  add r1, #2
0x00000014                 0834  add r3, #4
0x00000016                 0856  add r5, #6
size: 2
size: 2
size: 2
size: 2
size: 2
size: 2
size: 2
size: 2
size: 2
size: 2
size: 2
size: 2
EOF
RUN

NAME=c166: checking analysis information for coverage
FILE=malloc://32
CMDS=<<EOF
e asm.arch=c166
wx E04AAB0AFB88 @ 0
s 0x000000
ao ~mnemonic,opcode,type,fail,size,reg,description
echo
s 0x000002
ao ~mnemonic,opcode,type,fail,size,reg,description
echo
s 0x000004
ao ~mnemonic,opcode,type,fail,size,reg,description
echo
s 0x000000
wx EB20 0000 0000 @ 0
ao ~mnemonic,opcode,type,fail,size,description,stackop,stackptr,refptr
echo
wx 5911 @ 0
ao ~mnemonic,opcode,type,fail,size,description,stackop,stackptr,refptr
echo
wx 0C01 @ 0
ao ~mnemonic,opcode,type,fail,size,description,stackop,stackptr,refptr
echo
wx 2C01 @ 0
ao ~mnemonic,opcode,type,fail,size,description,stackop,stackptr,refptr
echo
wx A402102c @ 0
ao ~mnemonic,opcode,type,fail,size,description,stackop,stackptr,refptr
echo
wx 8402102c @ 0
ao ~mnemonic,opcode,type,fail,size,description,stackop,stackptr,refptr
echo
wx A202102c @ 0
ao ~mnemonic,opcode,type,fail,size,description,stackop,stackptr,refptr
echo
wx B202102c @ 0
ao ~mnemonic,opcode,type,fail,size,description,stackop,stackptr,refptr
echo
wx 8202102c @ 0
ao ~mnemonic,opcode,type,fail,size,description,stackop,stackptr,refptr
echo
wx 9202102c @ 0
ao ~mnemonic,opcode,type,fail,size,description,stackop,stackptr,refptr
echo
wx 9B02102c @ 0
ao ~mnemonic,opcode,type,fail,size,description,stackop,stackptr,refptr
echo
wx E202102c @ 0
ao ~mnemonic,opcode,type,fail,size,description,stackop,stackptr,refptr
echo
EOF
EXPECT=<<EOF
opcode: mov r10, #0x04
mnemonic: mov
size: 2
type: mov

opcode: calli cc_UC, [r10]
mnemonic: calli
description: Call indirect subroutine if condition is met
size: 2
type: ircall
reg: r10
fail: 0x00000004

opcode: reti
mnemonic: reti
description: Return from interrupt service subroutine
size: 2
type: ret

opcode: retp 0xfe40
mnemonic: retp
description: Return from intra-segment subroutine and pop direct word register from system stack
refptr: 0
size: 2
type: ret
stackop: inc
stackptr: 4

opcode: xorb rh0, #0x0001
mnemonic: xorb
refptr: 0
size: 2
type: xor

opcode: rol r0, r1
mnemonic: rol
refptr: 0
size: 2
type: rol

opcode: ror r0, r1
mnemonic: ror
refptr: 0
size: 2
type: ror

opcode: movb [r2], 0xfe00:0x2c10
mnemonic: movb
refptr: 0
size: 4
type: mov

opcode: mov [r2], 0xfe00:0x2c10
mnemonic: mov
refptr: 0
size: 4
type: mov

opcode: cmpd1 r2, 0xfe00:0x2c10
mnemonic: cmpd1
refptr: 0
size: 4
type: cmp

opcode: cmpd2 r2, 0xfe00:0x2c10
mnemonic: cmpd2
refptr: 0
size: 4
type: cmp

opcode: cmpi1 r2, 0xfe00:0x2c10
mnemonic: cmpi1
refptr: 0
size: 4
type: cmp

opcode: cmpi2 r2, 0xfe00:0x2c10
mnemonic: cmpi2
refptr: 0
size: 4
type: cmp

opcode: trap #0x0008
mnemonic: trap
description: Call interrupt service routine via immediate trap number
refptr: 0
size: 2
type: trap
fail: 0x00000002
stackop: unk
stackptr: 6

opcode: pcall 0xfe04, 0x2c10
mnemonic: pcall
description: Push direct word register onto system stack and call absolute subroutine
refptr: 0
size: 4
type: ucall
fail: 0x00000004
stackop: unk
stackptr: 4

EOF
RUN

NAME=C166 check error coverage
FILE=bins/omf/omf166/measure
CMDS=<<EOF
e asm.arch=c166
e asm.bytes=true
e cfg.bigendian=true
wx E202102c @ 0
EOF
EXPECT=
REGEXP_FILTER_ERR=<<EOF
ERROR:.+
EOF
EXPECT_ERR=<<EOF
ERROR: core: cannot change to big endian (arch 'c166' supports only little endian)
ERROR: Could not write hexpair 'E202102c' at 0
EOF
RUN

NAME=C166 measure binary file iA
FILE=bins/omf/omf166/measure
CMDS=<<EOF
e asm.arch=c166
e asm.bytes=true
iA
echo
iS
echo
aaa
pd 350
echo
pd 21 @ 0x00c001e6
echo
pd @ 0x00c018da
echo
pdf @ 0x00c013b0
echo
pdf @ 0x00c0168a
EOF
EXPECT=<<EOF
    offset   size arch bits machine                                      big_endian 
------------------------------------------------------------------------------------
0x00000000 123551 c166   16 Siemens/Infineon C166 family microcontroller false

     paddr   size      vaddr  vsize align perm name                 type flags 
-------------------------------------------------------------------------------
0x00000000  0x250 0x00c0168a  0x250   0x0 -r-x PR_MCOMMAND_FCODE         
0x00000000   0x6f 0x00c01e4c   0x6f   0x0 -r-- HC_MCOMMAND_HCONST        
0x00000000  0x45a 0x00c01230  0x45a   0x0 -r-x PR_MEASURE_FCODE          
0x00000000  0x426 0x00c01a26  0x426   0x0 -r-- HC_MEASURE_HCONST         
0x00000000   0x1b 0x00010240   0x1b   0x0 -rw- ND0_MEASURE_NDATA0        
0x00000000 0x2010 0x0001025c 0x2010   0x0 -rw- HD0_MEASURE_HDATA0        
0x00000000    0x3 0x0000fd00    0x3   0x0 -rw- BI0_MEASURE_BIT0          
0x00000000   0x92 0x00c018da   0x92   0x0 -r-x PR_GETLINE_FCODE          
0x00000000   0x52 0x00c0196c   0x52   0x0 -r-x PR_PUTCHAR_FCODE          
0x00000000    0xc 0x00c0001c    0xc   0x0 -r-x PR_GETKEY_FCODE           
0x00000000    0x8 0x00c00074    0x8   0x0 -r-x PR_TRAPS_FCODE            
0x00000000  0x200 0x00010000  0x200   0x0 -rw- C_USERSTACK_NDATA         
0x00000000   0x20 0x00010200   0x20   0x0 -rw- C_USERSTACK1_NDATA        
0x00000000   0x20 0x00010220   0x20   0x0 -rw- C_USERSTACK2_NDATA        
0x00000000  0x200 0x0000f600  0x200   0x0 -rw- C_SYSSTACK_IDATA          
0x00000000  0x15e 0x00c00084  0x15e   0x0 -r-x C_STARTUP_CODE_ICODE      
0x00000000  0xb7c 0x00c001e2  0xb7c   0x0 -r-x C_LIB_CODE_FCODE          
0x00000000  0x4d2 0x00c00d5e  0x4d2   0x0 -r-x PR_SCANF_FCODE            
0x00000000   0x5a 0x00c01ebc   0x5a   0x0 -r-- HC__PRNFMT_HCONST         
0x00000000   0x30 0x00c00044   0x30   0x0 -r-- C_LIB_NCONST_NCONST       
0x00000000   0x1a 0x00c019ec   0x1a   0x0 -r-x PR_ISSPACE_FCODE          
0x00000000   0x18 0x00c01a06   0x18   0x0 -r-x PR_TOUPPER_FCODE          
0x00000000   0x2e 0x00c019be   0x2e   0x0 -r-x PR_GETCHAR_FCODE          
0x00000000    0x1 0x0001025b    0x1   0x0 -rw- ND0_GETCHAR_NDATA0        
0x00000000    0x8 0x00c01a1e    0x8   0x0 -r-x PR_UNGET_FCODE            
0x00000000    0x2 0x00c00004    0x2   0x0 -r-- C_INITSEC_UNKNOWN         
0x00000000   0x18 0x00c0002c   0x18   0x0 -r-- C_CLRMEMSEC_UNKNOWN       

            ;-- isr.RESET:
/ entry0();
\       ,=< 0x00c00000      fac08400       jmps  ?C_RESET              ; sym.a166_FAR._C_STARTUP
\       |                                                              ; 0xc00084
        |   ;-- section.C_INITSEC_UNKNOWN:
        |   0x00c00004      .word 0x0000                               ; [25] -r-- section size 2 named C_INITSEC_UNKNOWN
        |   0x00c00006      ffff           bset  r15.15
/ sym.isr.NMI_trap();
\       |   0x00c00008      fac07400       jmps  NMI_trap              ; 0xc00074 ; "\r\xff\r\xff\r\xff\r\xff\xff\xff\xff\xff\xfa\xc0\x80\U00000012\xa5Z\xa5\xa5р\xe6\xea"
        |   0x00c0000c      ffff           bset  r15.15
        |   0x00c0000e      ffff           bset  r15.15
/ sym.isr.STKOF_trap();
\       |   0x00c00010      fac07600       jmps  STKOF_trap            ; 0xc00076 ; "\r\xff\r\xff\r\xff\xff\xff\xff\xff\xfa\xc0\x80\U00000012\xa5Z\xa5\xa5р\xe6\xea"
        |   0x00c00014      ffff           bset  r15.15
        |   0x00c00016      ffff           bset  r15.15
/ sym.isr.STKUF_trap();
\       |   0x00c00018      fac07800       jmps  STKUF_trap            ; 0xc00078 ; "\r\xff\r\xff\xff\xff\xff\xff\xfa\xc0\x80\U00000012\xa5Z\xa5\xa5р\xe6\xea"
        |   ; CALL XREFS from main @ 0xc01550, 0xc01614
        |   ; CALL XREF from getline @ 0xc018ea
        |   ; CALL XREF from sym.getchar @ 0xc019d2
        |   ;-- getkey:
        |   ;-- section.PR_GETKEY_FCODE:
        |   ;-- _getkey:
/ _getkey();
|       |   0x00c0001c      9ab7fe70       jnb   S0RIC.7, _getkey      ; Getkey.c:22 ; 0xc0001c ; [09] -r-x section size 12 named PR_GETKEY_FCODE
|       |   0x00c00020      f2f4b2fe       mov   r4, DPP3:0x3eb2       ; Getkey.c:26
|       |   0x00c00024      7eb7           bclr  S0RIC.7               ; Getkey.c:27
\       |   0x00c00026      db00           rets                        ; Getkey.c:28
/ sym.isr.Class_B_trap();
\      ,==< 0x00c00028      fac07a00       jmps  Class_B_trap          ; 0xc0007a ; "\r\xff\xff\xff\xff\xff\xfa\xc0\x80\U00000012\xa5Z\xa5\xa5р\xe6\xea"
       ||   ;-- section.C_CLRMEMSEC_UNKNOWN:
       ||   0x00c0002c hex length=24 delta=0
0x00c0002c  1a80 0400 40c2 0fa0 0400 5cc2 0300 0000  ....@.....\.....
0x00c0003c  0080 0400 5bc2 0000                      ....[...
 ; [26] -r-- section size 24 named C_CLRMEMSEC_UNKNOWN
       ||   ;-- section.C_LIB_NCONST_NCONST:
       ||   0x00c00044 hex length=48 delta=0
0x00c00044  0000 803f 0000 2041 0000 c842 0000 7a44  ...?.. A...B..zD
0x00c00054  0040 1c46 0050 c347 0024 7449 8096 184b  .@.F.P.G.$tI...K
0x00c00064  20bc be4c ca1b 0e5a 1cc2 5367 aec5 9d74   ..L...Z..Sg...t
 ; [19] -r-- section size 48 named C_LIB_NCONST_NCONST
       ||   ; CODE XREF from sym.isr.NMI_trap @ 0xc00008
       ||   ;-- section.PR_TRAPS_FCODE:
/ NMI_trap();
\      ||   0x00c00074      0dff           jmpr  cc_UC, NMI_trap       ; Traps.c:24 ; [10] -r-x section size 8 named PR_TRAPS_FCODE
       ||   ; CODE XREF from sym.isr.STKOF_trap @ 0xc00010
/ STKOF_trap();
\      ||   0x00c00076      0dff           jmpr  cc_UC, STKOF_trap     ; Traps.c:33
      @||   ; CODE XREF from sym.isr.STKUF_trap @ 0xc00018
/ STKUF_trap();
\     @==-> 0x00c00078      0dff           jmpr  cc_UC, STKUF_trap     ; Traps.c:42
      @||   ; CODE XREF from sym.isr.Class_B_trap @ 0xc00028
/ Class_B_trap();
\     @`--> 0x00c0007a      0dff           jmpr  cc_UC, Class_B_trap   ; Traps.c:56
        |   0x00c0007c      ffff           bset  r15.15
        |   0x00c0007e      ffff           bset  r15.15
/ sym.isr.T0INT();
\       |   0x00c00080      fac08012       jmps  timer0                ; 0xc01280
        |   ; CODE XREF from entry0 @ 0xc00000
        |   ;-- C_RESET:
        |   ;-- section.C_STARTUP_CODE_ICODE:
        |   ;-- a166_FAR.?C_STARTUP:
/ ?C_RESET();
|       `-> 0x00c00084      a55aa5a5       diswdt                      ; START_V2.A66:1453 ; [15] -r-x section size 350 named C_STARTUP_CODE_ICODE
|           0x00c00088      d180           extr  #1                    ; START_V2.A66:1492
|           0x00c0008a      e6ea0000       mov   SYSCON3, #0x0000      ; START_V2.A66:1493
|           0x00c0008e      e6f08400       mov   r0, #0x0084           ; START_V2.A66:1500
|           0x00c00092      f6f000ee       mov   DPP3:0x2e00, r0       ; START_V2.A66:1501
|           0x00c00096      e000           mov   r0, #0x00             ; START_V2.A66:1506
|           0x00c00098      f6f002ee       mov   DPP3:0x2e02, r0       ; START_V2.A66:1507
|           0x00c0009c      e6f06450       mov   r0, #0x5064           ; START_V2.A66:1514
|           0x00c000a0      f6f010ee       mov   DPP3:0x2e10, r0       ; START_V2.A66:1515
|           0x00c000a4      e6f02100       mov   r0, #0x0021           ; START_V2.A66:1518
|           0x00c000a8      f6f012ee       mov   DPP3:0x2e12, r0       ; START_V2.A66:1519
|           0x00c000ac      d180           extr  #1                    ; START_V2.A66:1651
|           0x00c000ae      e6e88978       mov   PLLCON, #0x7889       ; START_V2.A66:1652
|           0x00c000b2      e6d50000       mov   FOCON, #0x0000        ; START_V2.A66:1657
|           0x00c000b6      e60b00f8       mov   STKUN, #0xf800        ; START_V2.A66:1660
|           0x00c000ba      e60a0cf6       mov   STKOV, #0xf60c        ; START_V2.A66:1661
|           0x00c000be      e60900f8       mov   SP, #0xf800           ; START_V2.A66:1662
|           0x00c000c2      e6860000       mov   BUSCON0, #0x0000      ; START_V2.A66:1663
|           0x00c000c6      e6000400       mov   DPP0, #0x0004         ; START_V2.A66:1672
|           0x00c000ca      e6010500       mov   DPP1, #0x0005         ; START_V2.A66:1674
|           0x00c000ce      e6020003       mov   DPP2, #0x0300         ; START_V2.A66:1675
|           0x00c000d2      e60820fc       mov   CP, #0xfc20           ; START_V2.A66:1679
|           0x00c000d6      b54ab5b5       einit                       ; START_V2.A66:1686
|           0x00c000da      1a880203       bfldh PSW, #0x03, #0x02     ; START_V2.A66:1690
|           0x00c000de      e6f02002       mov   r0, #0x0220           ; START_V2.A66:1691
|           0x00c000e2      1a880303       bfldh PSW, #0x03, #0x03     ; START_V2.A66:1695
|           0x00c000e6      e6f04002       mov   r0, #0x0240           ; START_V2.A66:1696
|           0x00c000ea      1a880003       bfldh PSW, #0x03, #0x00     ; START_V2.A66:1700
\           0x00c000ee      e6f00002       mov   r0, #0x0200           ; START_V2.A66:1703
/ sym.a166_NEAR.Clr_Memory();
|           0x00c000f2      e6f9c000       mov   r9, #0x00c0           ; START_V2.A66:1755
|           0x00c000f6      e6f82c00       mov   r8, #0x002c           ; START_V2.A66:1756
|           0x00c000fa      f018           mov   r1, r8                ; START_V2.A66:1757
|           0x00c000fc      7019           or    r1, r9                ; START_V2.A66:1758
\       ,=< 0x00c000fe      2d29           jmpr  cc_Z/EQ, sym.a166_NEAR.EndClear ; START_V2.A66:1759
/ sym.a166_NEAR.RepeatClear();
|       |   0x00c00100      e005           mov   r5, #0x00             ; START_V2.A66:1765
|       |   0x00c00102      dc09           exts  r9, #1                ; START_V2.A66:1766
|       |   0x00c00104      9828           mov   r2, [r8+]             ; START_V2.A66:1767
|       |   0x00c00106      2d25           jmpr  cc_Z/EQ, sym.a166_NEAR.EndClear ; START_V2.A66:1768
|       |   0x00c00108      f032           mov   r3, r2                ; START_V2.A66:1769
|       |   0x00c0010a      dc09           exts  r9, #1                ; START_V2.A66:1770
|       |   0x00c0010c      9848           mov   r4, [r8+]             ; START_V2.A66:1771
|       |   0x00c0010e      aaf21be0       jbc   r2.14, sym.a166_NEAR.ClearNear ; START_V2.A66:1772 ; 0xc00148
\       |   0x00c00112      aaf20ef0       jbc   r2.15, sym.a166_NEAR.ClearFar ; START_V2.A66:1773 ; 0xc00132
/ sym.a166_NEAR.ClearBit();
|       |   0x00c00116      f034           mov   r3, r4                ; START_V2.A66:1775
|       |   0x00c00118      7c33           shr   r3, #0x03             ; START_V2.A66:1776
|       |   0x00c0011a      0ef3           bclr  r3.0                  ; START_V2.A66:1777
|       |   0x00c0011c      06f300fd       add   r3, #section.BI0_MEASURE_BIT0 ; START_V2.A66:1778
|       |   0x00c00120      e015           mov   r5, #0x01             ; START_V2.A66:1779
|       |   0x00c00122      4c54           shl   r5, r4                ; START_V2.A66:1780
|       |   0x00c00124      9150           cpl   r5                    ; START_V2.A66:1781
|       |   0x00c00126      685b           and   r5, [r3]              ; START_V2.A66:1782
|       |   0x00c00128      b853           mov   [r3], r5              ; START_V2.A66:1783
|       |   0x00c0012a      0841           add   r4, #1                ; START_V2.A66:1784
|       |   0x00c0012c      2821           sub   r2, #1                ; START_V2.A66:1785
|       |   0x00c0012e      3df3           jmpr  cc_NZ/NE, sym.a166_NEAR.ClearBit ; START_V2.A66:1786
\       |   0x00c00130      0de7           jmpr  cc_UC, sym.a166_NEAR.RepeatClear ; START_V2.A66:1787
        |   ; DATA XREF from sym.a166_NEAR.RepeatClear @ 0xc00112
/ sym.a166_NEAR.ClearFar();
|       |   0x00c00132      dc09           exts  r9, #1                ; START_V2.A66:1789
\       |   0x00c00134      9838           mov   r3, [r8+]             ; START_V2.A66:1790
/ sym.a166_NEAR.RepClearFar();
|       |   0x00c00136      dc44           extp  r4, #1                ; START_V2.A66:1795
|       |   0x00c00138      b9a3           movb  [r3], rl5             ; START_V2.A66:1796
|       |   0x00c0013a      0831           add   r3, #1                ; START_V2.A66:1797
|       |   0x00c0013c      1840           addc  r4, #0                ; START_V2.A66:1798
|       |   0x00c0013e      76f300c0       or    r3, #0xc000           ; START_V2.A66:1799
|       |   0x00c00142      2821           sub   r2, #1                ; START_V2.A66:1800
|       |   0x00c00144      7df8           jmpr  cc_NN, sym.a166_NEAR.RepClearFar ; START_V2.A66:1801
\       |   0x00c00146      0ddc           jmpr  cc_UC, sym.a166_NEAR.RepeatClear ; START_V2.A66:1802
        |   ; DATA XREF from sym.a166_NEAR.RepeatClear @ 0xc0010e
/ sym.a166_NEAR.ClearNear();
|       |   0x00c00148      b9a4           movb  [r4], rl5             ; START_V2.A66:1808
|       |   0x00c0014a      0841           add   r4, #1                ; START_V2.A66:1809
|       |   0x00c0014c      2821           sub   r2, #1                ; START_V2.A66:1810
|       |   0x00c0014e      7dfc           jmpr  cc_NN, sym.a166_NEAR.ClearNear ; START_V2.A66:1811
\       |   0x00c00150      0dd7           jmpr  cc_UC, sym.a166_NEAR.RepeatClear ; START_V2.A66:1812
        |   ;-- a166_NEAR.Init_Vars:
/ sym.a166_NEAR.EndClear();
|       `-> 0x00c00152      e6f9c000       mov   r9, #0x00c0           ; START_V2.A66:1873
\           0x00c00156      e6f80400       mov   r8, #0x0004           ; START_V2.A66:1874
            ; DATA XREF from sym.a166_NEAR.NoDPP3Adj @ 0xc001b6
/ sym.a166_NEAR.RepeatInit();
|           0x00c0015a      e6030300       mov   DPP3, #0x0003         ; START_V2.A66:1880
|           0x00c0015e      dc09           exts  r9, #1                ; START_V2.A66:1881
|           0x00c00160      a828           mov   r2, [r8]              ; START_V2.A66:1882
|           0x00c00162      2d3d           jmpr  cc_Z/EQ, sym.a166_NEAR.EndInit ; START_V2.A66:1883
|           0x00c00164      0882           add   r8, #2                ; START_V2.A66:1884
|           0x00c00166      1890           addc  r9, #0                ; START_V2.A66:1885
|           0x00c00168      aaf22af0       jbc   r2.15, sym.a166_NEAR.InitBit ; START_V2.A66:1886 ; 0xc001c0
|           0x00c0016c      f042           mov   r4, r2                ; START_V2.A66:1887
|           0x00c0016e      66f2ff3f       and   r2, #0x3fff           ; START_V2.A66:1888
|           0x00c00172      3d05           jmpr  cc_NZ/NE, sym.a166_NEAR.LenLoad ; START_V2.A66:1889
|           0x00c00174      e004           mov   r4, #0x00             ; START_V2.A66:1890
|           0x00c00176      dc09           exts  r9, #1                ; START_V2.A66:1891
|           0x00c00178      a828           mov   r2, [r8]              ; START_V2.A66:1892
|           0x00c0017a      0882           add   r8, #2                ; START_V2.A66:1893
\           0x00c0017c      1890           addc  r9, #0                ; START_V2.A66:1894
/ sym.a166_NEAR.LenLoad();
|           0x00c0017e      dc09           exts  r9, #1                ; START_V2.A66:1895
|           0x00c00180      a838           mov   r3, [r8]              ; START_V2.A66:1896
|           0x00c00182      0882           add   r8, #2                ; START_V2.A66:1897
|           0x00c00184      1890           addc  r9, #0                ; START_V2.A66:1898
|           0x00c00186      8af406e0       jb    r4.14, sym.a166_NEAR.CopyInitVal ; START_V2.A66:1899 ; 0xc00196
|           0x00c0018a      f6f306fe       mov   DPP3:0x3e06, r3       ; START_V2.A66:1900
|           0x00c0018e      dc09           exts  r9, #1                ; START_V2.A66:1901
|           0x00c00190      a838           mov   r3, [r8]              ; START_V2.A66:1902
|           0x00c00192      0882           add   r8, #2                ; START_V2.A66:1903
\           0x00c00194      1890           addc  r9, #0                ; START_V2.A66:1904
            ; DATA XREF from sym.a166_NEAR.LenLoad @ 0xc00186
/ sym.a166_NEAR.CopyInitVal();
|           0x00c00196      dc09           exts  r9, #1                ; START_V2.A66:1905
|           0x00c00198      a9a8           movb  rl5, [r8]             ; START_V2.A66:1906
|           0x00c0019a      0881           add   r8, #1                ; START_V2.A66:1907
|           0x00c0019c      1890           addc  r9, #0                ; START_V2.A66:1908
|           0x00c0019e      b9a3           movb  [r3], rl5             ; START_V2.A66:1909
|           0x00c001a0      0831           add   r3, #1                ; START_V2.A66:1910
|           0x00c001a2      8af406e0       jb    r4.14, sym.a166_NEAR.NoDPP3Adj ; START_V2.A66:1911 ; 0xc001b2 ; "(!=\xf0\x9a\xf8\xd0"
|           0x00c001a6      8af304e0       jb    r3.14, sym.a166_NEAR.NoDPP3Adj ; START_V2.A66:1912 ; 0xc001b2 ; "(!=\xf0\x9a\xf8\xd0"
|           0x00c001aa      06030100       add   DPP3, #0x0001         ; START_V2.A66:1913
\           0x00c001ae      76f300c0       or    r3, #0xc000           ; START_V2.A66:1914
            ; DATA XREFS from sym.a166_NEAR.CopyInitVal @ 0xc001a2, 0xc001a6
/ sym.a166_NEAR.NoDPP3Adj();
|           0x00c001b2      2821           sub   r2, #1                ; START_V2.A66:1919
|           0x00c001b4      3df0           jmpr  cc_NZ/NE, sym.a166_NEAR.CopyInitVal ; START_V2.A66:1920
|           0x00c001b6      9af8d000       jnb   r8.0, sym.a166_NEAR.RepeatInit ; START_V2.A66:1921 ; 0xc0015a
|           0x00c001ba      0881           add   r8, #1                ; START_V2.A66:1922
|           0x00c001bc      1890           addc  r9, #0                ; START_V2.A66:1923
\           0x00c001be      0dcd           jmpr  cc_UC, sym.a166_NEAR.RepeatInit ; START_V2.A66:1924
            ; DATA XREF from sym.a166_NEAR.RepeatInit @ 0xc00168
/ sym.a166_NEAR.InitBit();
|           0x00c001c0      c043           movbz r3, rl2               ; START_V2.A66:1926
|           0x00c001c2      5c13           shl   r3, #0x01             ; START_V2.A66:1927
|           0x00c001c4      76f300fd       or    r3, #section.BI0_MEASURE_BIT0 ; START_V2.A66:1928
|           0x00c001c8      e014           mov   r4, #0x01             ; START_V2.A66:1929
|           0x00c001ca      f1a5           movb  rl5, rh2              ; START_V2.A66:1930
|           0x00c001cc      4c45           shl   r4, r5                ; START_V2.A66:1931
|           0x00c001ce      8af20370       jb    r2.7, sym.a166_NEAR.SetBit ; START_V2.A66:1932 ; 0xc001d8 ; "xK\xb8C\r\xbe\xfa\xc0n\U00000014:\xf7\xf7\xff\xca"
|           0x00c001d2      9140           cpl   r4                    ; START_V2.A66:1933
|           0x00c001d4      684b           and   r4, [r3]              ; START_V2.A66:1934
\           0x00c001d6      0d01           jmpr  cc_UC, sym.a166_NEAR.StoreBit ; START_V2.A66:1935
            ; DATA XREF from sym.a166_NEAR.InitBit @ 0xc001ce
/ sym.a166_NEAR.SetBit();
\           0x00c001d8      784b           or    r4, [r3]              ; START_V2.A66:1936
/ sym.a166_NEAR.StoreBit();
|           0x00c001da      b843           mov   [r3], r4              ; START_V2.A66:1937
\           0x00c001dc      0dbe           jmpr  cc_UC, sym.a166_NEAR.RepeatInit ; START_V2.A66:1938
/ sym.a166_NEAR.EndInit();
\           0x00c001de      fac06e14       jmps  main                  ; START_V2.A66:2027 ; 0xc0146e ; "v\xe2"
            ; CALL XREF from set_interval @ 0xc01858
            ;-- C_FPSUB:
            ;-- section.C_LIB_CODE_FCODE:
            ;-- a166_FAR.?C_FPSUB:
/ ?C_FPSUB();
\           0x00c001e2      3af7f7ff       bmovn r7.15, r7.15          ; [16] -r-x section size 2940 named C_LIB_CODE_FCODE
            ; CALL XREF from sym.a166_FAR._C_FPATOF @ 0xc00660
/ sym.a166_FAR._C_FPADD();
|           0x00c001e6      ca008c05       calla+ cc_UC, ?C_FPGETOPN   ; 0x58c ; 1420
|           0x00c001ea      46faff00       cmp   r10, #0x00ff
|           0x00c001ee      3d10           jmpr  cc_NZ/NE, 0xc00210
|           0x00c001f0      46f78000       cmp   r7, #0x0080
|           0x00c001f4      3d13           jmpr  cc_NZ/NE, 0xc0021c
|           0x00c001f6      46f9ff00       cmp   r9, #0x00ff
|           0x00c001fa      3d07           jmpr  cc_NZ/NE, 0xc0020a
|           0x00c001fc      46f58000       cmp   r5, #0x0080
|           0x00c00200      3d0d           jmpr  cc_NZ/NE, 0xc0021c
|           0x00c00202      2af2f280       bcmp  r2.0, r2.8
|           0x00c00206      6d0a           jmpr  cc_N, 0xc0021c
|           0x00c00208      0d0b           jmpr  cc_UC, 0xc00220
|           0x00c0020a      4af2f280       bmov  r2.0, r2.8
|           0x00c0020e      0d08           jmpr  cc_UC, 0xc00220
|           0x00c00210      46f9ff00       cmp   r9, #0x00ff
|           0x00c00214      3d07           jmpr  cc_NZ/NE, sym.a166_FAR._C_FPXSUB
|           0x00c00216      46f58000       cmp   r5, #0x0080
|           0x00c0021a      2d02           jmpr  cc_Z/EQ, 0xc00220
|           0x00c0021c      ea00b205       jmpa+ cc_UC, ?C_FPNANRSL    ; sym.a166_NEAR._C_FPNANRSL
|                                                                      ; 0xc005b2
\           0x00c00220      ea00ba05       jmpa+ cc_UC, ?C_FPINFRSL    ; sym.a166_NEAR._C_FPINFRSL
\                                                                      ; 0xc005ba
            ; CALL XREF from ?C_FPCMP @ 0xc00530
/ sym.a166_FAR._C_FPXSUB();
|           0x00c00224      48a0           cmp   r10, #0
|           0x00c00226      2d06           jmpr  cc_Z/EQ, 0xc00234
|           0x00c00228      4890           cmp   r9, #0
|           0x00c0022a      3d06           jmpr  cc_NZ/NE, 0xc00238
|           0x00c0022c      f057           mov   r5, r7
|           0x00c0022e      f046           mov   r4, r6
|           0x00c00230      f09a           mov   r9, r10
|           0x00c00232      f145           movb  rl2, rh2
|           0x00c00234      ea00dc05       jmpa+ cc_UC, sym.a166_NEAR._C_FPNOERR ; 0xc005dc ; "f\xf5\U0000007f"
|           0x00c00238      409a           cmp   r9, r10
|           0x00c0023a      9d0c           jmpr  cc_NC/UGE, 0xc00254
|           0x00c0023c      f015           mov   r1, r5
|           0x00c0023e      f057           mov   r5, r7
|           0x00c00240      f071           mov   r7, r1
|           0x00c00242      f014           mov   r1, r4
|           0x00c00244      f046           mov   r4, r6
|           0x00c00246      f061           mov   r6, r1
|           0x00c00248      f019           mov   r1, r9
|           0x00c0024a      f09a           mov   r9, r10
|           0x00c0024c      f0a1           mov   r10, r1
|           0x00c0024e      f124           movb  rl1, rl2
|           0x00c00250      f145           movb  rl2, rh2
|           0x00c00252      f152           movb  rh2, rl1
|           0x00c00254      f019           mov   r1, r9
|           0x00c00256      201a           sub   r1, r10
|           0x00c00258      2d0b           jmpr  cc_Z/EQ, 0xc00270
|           0x00c0025a      46f11900       cmp   r1, #0x0019
|           0x00c0025e      9dea           jmpr  cc_NC/UGE, 0xc00234
|           0x00c00260      5af6f80f       bor   r8.15, r6.0
|           0x00c00264      7c16           shr   r6, #0x01
|           0x00c00266      4af7f60f       bmov  r6.15, r7.0
|           0x00c0026a      7c17           shr   r7, #0x01
|           0x00c0026c      2811           sub   r1, #1
|           0x00c0026e      3df8           jmpr  cc_NZ/NE, 0xc00260
|           0x00c00270      2af2f280       bcmp  r2.0, r2.8
|           0x00c00274      6d0e           jmpr  cc_N, 0xc00292
|           0x00c00276      0038           add   r3, r8
|           0x00c00278      1046           addc  r4, r6
|           0x00c0027a      1057           addc  r5, r7
|           0x00c0027c      9af50780       jnb   r5.8, data.00c0028e   ; 0xc0028e
|           0x00c00280      0891           add   r9, #1
|           0x00c00282      5af4f30f       bor   r3.15, r4.0
|           0x00c00286      7c14           shr   r4, #0x01
|           0x00c00288      4af5f40f       bmov  r4.15, r5.0
|           0x00c0028c      7c15           shr   r5, #0x01
|           ; DATA XREFS from sym.a166_FAR._C_FPXSUB @ 0xc0027c, 0xc002ac
|           ;-- data.00c0028e:
|           0x00c0028e      ea00c605       jmpa+ cc_UC, ?C_FPOPRSL     ; sym.a166_NEAR._C_FPOPRSL
|                                                                      ; 0xc005c6
|           0x00c00292      2038           sub   r3, r8
|           0x00c00294      3046           subc  r4, r6
|           0x00c00296      3057           subc  r5, r7
|           0x00c00298      ea20ea05       jmpa+ cc_Z/EQ, ?C_FPZERRSL  ; sym.a166_NEAR._C_FPZERRSL
|                                                                      ; 0xc005ea
|           0x00c0029c      9d07           jmpr  cc_NC/UGE, 0xc002ac
|           0x00c0029e      b140           cplb  rl2
|           0x00c002a0      9130           cpl   r3
|           0x00c002a2      9140           cpl   r4
|           0x00c002a4      9150           cpl   r5
|           0x00c002a6      0831           add   r3, #1
|           0x00c002a8      1840           addc  r4, #0
|           0x00c002aa      1850           addc  r5, #0
|           0x00c002ac      8af5ef70       jb    r5.7, data.00c0028e   ; 0xc0028e
|           0x00c002b0      0033           add   r3, r3
|           0x00c002b2      1044           addc  r4, r4
|           0x00c002b4      1055           addc  r5, r5
|           0x00c002b6      2891           sub   r9, #1
|           0x00c002b8      8af50570       jb    r5.7, data.00c002c6   ; 0xc002c6
|           ; DATA XREF from sym.a166_FAR._C_FPXSUB @ 0xc002c2
|           ;-- data.00c002bc:
|           0x00c002bc      0044           add   r4, r4
|           0x00c002be      1055           addc  r5, r5
|           0x00c002c0      2891           sub   r9, #1
|           0x00c002c2      9af5fb70       jnb   r5.7, data.00c002bc   ; 0xc002bc
|           ; DATA XREF from sym.a166_FAR._C_FPXSUB @ 0xc002b8
|           ;-- data.00c002c6:
\           0x00c002c6      ea00d205       jmpa+ cc_UC, sym.a166_NEAR._C_FPRSLNR ; 0xc005d2 ; "H\x90\xbd\nF\xf9\xff"
            ; XREFS: CALL 0x00c0064c  CALL 0x00c006dc  CALL 0x00c00bf8
            ; XREFS: CALL 0x00c00ccc  CALL 0x00c016d8  CALL 0x00c01862
            ;-- C_FPMUL:
            ;-- a166_FAR.?C_FPMUL:
/ ?C_FPMUL();
|           0x00c002ca      ca008c05       calla+ cc_UC, ?C_FPGETOPN   ; 0x58c ; 1420
|           0x00c002ce      5145           xorb  rl2, rh2
|           0x00c002d0      46faff00       cmp   r10, #0x00ff
|           0x00c002d4      2d06           jmpr  cc_Z/EQ, 0xc002e2
|           0x00c002d6      48a0           cmp   r10, #0
|           0x00c002d8      3d12           jmpr  cc_NZ/NE, 0xc002fe
|           0x00c002da      46f9ff00       cmp   r9, #0x00ff
|           0x00c002de      2d0d           jmpr  cc_Z/EQ, 0xc002fa
|           0x00c002e0      0d13           jmpr  cc_UC, 0xc00308
|           0x00c002e2      46f78000       cmp   r7, #0x0080
|           0x00c002e6      3d09           jmpr  cc_NZ/NE, 0xc002fa
|           0x00c002e8      46f9ff00       cmp   r9, #0x00ff
|           0x00c002ec      2d03           jmpr  cc_Z/EQ, 0xc002f4
|           0x00c002ee      4890           cmp   r9, #0
|           0x00c002f0      2d04           jmpr  cc_Z/EQ, 0xc002fa
|           0x00c002f2      0d0f           jmpr  cc_UC, 0xc00312
|           0x00c002f4      46f58000       cmp   r5, #0x0080
|           0x00c002f8      2d0c           jmpr  cc_Z/EQ, 0xc00312
|           0x00c002fa      ea00b205       jmpa+ cc_UC, ?C_FPNANRSL    ; sym.a166_NEAR._C_FPNANRSL
|                                                                      ; 0xc005b2
|           0x00c002fe      46f9           .word 0x46f9 .word 0x0000
|           0x00c00302      2d04           jmpr  cc_Z/EQ, 0xc0030c
|           0x00c00304      4890           cmp   r9, #0
|           0x00c00306      3d07           jmpr  cc_NZ/NE, 0xc00316
|           0x00c00308      ea00ea05       jmpa+ cc_UC, ?C_FPZERRSL    ; sym.a166_NEAR._C_FPZERRSL
|                                                                      ; 0xc005ea
|           0x00c0030c      46f58000       cmp   r5, #0x0080
|           0x00c00310      3df4           jmpr  cc_NZ/NE, 0xc002fa
|           0x00c00312      ea00ba05       jmpa+ cc_UC, ?C_FPINFRSL    ; sym.a166_NEAR._C_FPINFRSL
|                                                                      ; 0xc005ba
|           0x00c00316      009a           add   r9, r10
|           0x00c00318      26f97e00       sub   r9, #0x007e
|           0x00c0031c      1b57           mulu  r5, r7
|           0x00c0031e      f2f80efe       mov   r8, DPP3:0x3e0e
|           0x00c00322      1b46           mulu  r4, r6
|           0x00c00324      f2f10cfe       mov   r1, DPP3:0x3e0c
|           0x00c00328      f2f30efe       mov   r3, DPP3:0x3e0e
|           0x00c0032c      1b47           mulu  r4, r7
|           0x00c0032e      f2f30cfe       mov   r3, DPP3:0x3e0c
|           0x00c00332      f2f40efe       mov   r4, DPP3:0x3e0e
|           0x00c00336      1b56           mulu  r5, r6
|           0x00c00338      f2f50cfe       mov   r5, DPP3:0x3e0c
|           0x00c0033c      02f40efe       add   r4, DPP3:0x3e0e
|           0x00c00340      1053           addc  r5, r3
|           0x00c00342      0041           add   r4, r1
|           0x00c00344      1058           addc  r5, r8
|           0x00c00346      f178           movb  rh3, rl4
|           0x00c00348      f189           movb  rl4, rh4
|           0x00c0034a      f19a           movb  rh4, rl5
|           0x00c0034c      f1ab           movb  rl5, rh5
|           0x00c0034e      aaf50470       jbc   r5.7, data.00c0035a   ; 0xc0035a
|           0x00c00352      2891           sub   r9, #1
|           0x00c00354      0033           add   r3, r3
|           0x00c00356      1044           addc  r4, r4
|           0x00c00358      1055           addc  r5, r5
|           ; DATA XREF from ?C_FPMUL @ 0xc0034e
|           ;-- data.00c0035a:
\           0x00c0035a      ea00c605       jmpa+ cc_UC, ?C_FPOPRSL     ; sym.a166_NEAR._C_FPOPRSL
\                                                                      ; 0xc005c6
            ; CALL XREF from sym.a166_FAR._C_FPATOF @ 0xc006e2
            ; CALL XREF from ?C_FPCONVERT @ 0xc00be8
            ; CALL XREF from measure_display @ 0xc016e2
            ;-- C_FPDIV:
            ;-- a166_FAR.?C_FPDIV:
/ ?C_FPDIV();
|           0x00c0035e      ca008c05       calla+ cc_UC, ?C_FPGETOPN   ; 0x58c ; 1420
|           0x00c00362      5145           xorb  rl2, rh2
|           0x00c00364      46faff00       cmp   r10, #0x00ff
|           0x00c00368      2d0d           jmpr  cc_Z/EQ, 0xc00384
|           0x00c0036a      48a0           cmp   r10, #0
|           0x00c0036c      3d15           jmpr  cc_NZ/NE, 0xc00398
|           0x00c0036e      46f9ff00       cmp   r9, #0x00ff
|           0x00c00372      3d04           jmpr  cc_NZ/NE, 0xc0037c
|           0x00c00374      46f58000       cmp   r5, #0x0080
|           0x00c00378      3d03           jmpr  cc_NZ/NE, 0xc00380
|           0x00c0037a      0d18           jmpr  cc_UC, 0xc003ac
|           0x00c0037c      4890           cmp   r9, #0
|           0x00c0037e      3d16           jmpr  cc_NZ/NE, 0xc003ac
|           0x00c00380      ea00b205       jmpa+ cc_UC, ?C_FPNANRSL    ; sym.a166_NEAR._C_FPNANRSL
|                                                                      ; 0xc005b2
|           0x00c00384      46f78000       cmp   r7, #0x0080
|           0x00c00388      3dfb           jmpr  cc_NZ/NE, 0xc00380
|           0x00c0038a      46f9ff00       cmp   r9, #0x00ff
|           0x00c0038e      2df8           jmpr  cc_Z/EQ, 0xc00380
|           0x00c00390      4890           cmp   r9, #0
|           0x00c00392      2d07           jmpr  cc_Z/EQ, 0xc003a2
|           0x00c00394      ea00ea05       jmpa+ cc_UC, ?C_FPZERRSL    ; sym.a166_NEAR._C_FPZERRSL
|                                                                      ; 0xc005ea
|           0x00c00398      46f9ff00       cmp   r9, #0x00ff
|           0x00c0039c      2d04           jmpr  cc_Z/EQ, 0xc003a6
|           0x00c0039e      4890           cmp   r9, #0
|           0x00c003a0      3d07           jmpr  cc_NZ/NE, 0xc003b0
|           0x00c003a2      ea00ea05       jmpa+ cc_UC, ?C_FPZERRSL    ; sym.a166_NEAR._C_FPZERRSL
|                                                                      ; 0xc005ea
|           0x00c003a6      46f58000       cmp   r5, #0x0080
|           0x00c003aa      3dea           jmpr  cc_NZ/NE, 0xc00380
|           0x00c003ac      ea00ba05       jmpa+ cc_UC, ?C_FPINFRSL    ; sym.a166_NEAR._C_FPINFRSL
|                                                                      ; 0xc005ba
|           0x00c003b0      209a           sub   r9, r10
|           0x00c003b2      06f97f00       add   r9, #0x007f
|           0x00c003b6      f1ba           movb  rh5, rl5
|           0x00c003b8      f1a9           movb  rl5, rh4
|           0x00c003ba      5c74           shl   r4, #0x07
|           0x00c003bc      4af5f40f       bmov  r4.15, r5.0
|           0x00c003c0      7c15           shr   r5, #0x01
|           0x00c003c2      f13e           movb  rh1, rl7
|           0x00c003c4      f12d           movb  rl1, rh6
|           0x00c003c6      f6f40efe       mov   DPP3:0x3e0e, r4
|           0x00c003ca      f6f50cfe       mov   DPP3:0x3e0c, r5
|           0x00c003ce      7b11           divlu r1
|           0x00c003d0      f2f40cfe       mov   r4, DPP3:0x3e0c
|           0x00c003d4      f2f50efe       mov   r5, DPP3:0x3e0e
|           0x00c003d8      f2071cff       mov   MDL, DPP3:0x3f1c
|           0x00c003dc      f6f40cfe       mov   DPP3:0x3e0c, r4
|           0x00c003e0      7b11           divlu r1
|           0x00c003e2      f2f40efe       mov   r4, DPP3:0x3e0e
|           0x00c003e6      5c86           shl   r6, #0x08
|           0x00c003e8      7c16           shr   r6, #0x01
|           0x00c003ea      f2071cff       mov   MDL, DPP3:0x3f1c
|           0x00c003ee      f6f60cfe       mov   DPP3:0x3e0c, r6
|           0x00c003f2      7b11           divlu r1
|           0x00c003f4      f2f10efe       mov   r1, DPP3:0x3e0e
|           0x00c003f8      1b51           mulu  r5, r1
|           0x00c003fa      f2f60cfe       mov   r6, DPP3:0x3e0c

            ; CALL XREF from sym.a166_FAR._C_FPATOF @ 0xc00660
/ sym.a166_FAR._C_FPADD();
|           0x00c001e6      ca008c05       calla+ cc_UC, ?C_FPGETOPN   ; 0x58c ; 1420
|           0x00c001ea      46faff00       cmp   r10, #0x00ff
|       ,=< 0x00c001ee      3d10           jmpr  cc_NZ/NE, 0xc00210
|       |   0x00c001f0      46f78000       cmp   r7, #0x0080
|      ,==< 0x00c001f4      3d13           jmpr  cc_NZ/NE, 0xc0021c
|      ||   0x00c001f6      46f9ff00       cmp   r9, #0x00ff
|     ,===< 0x00c001fa      3d07           jmpr  cc_NZ/NE, 0xc0020a
|     |||   0x00c001fc      46f58000       cmp   r5, #0x0080
|    ,====< 0x00c00200      3d0d           jmpr  cc_NZ/NE, 0xc0021c
|    ||||   0x00c00202      2af2f280       bcmp  r2.0, r2.8
|   ,=====< 0x00c00206      6d0a           jmpr  cc_N, 0xc0021c
|  ,======< 0x00c00208      0d0b           jmpr  cc_UC, 0xc00220
|  |||`---> 0x00c0020a      4af2f280       bmov  r2.0, r2.8
|  |||,===< 0x00c0020e      0d08           jmpr  cc_UC, 0xc00220
|  |||||`-> 0x00c00210      46f9ff00       cmp   r9, #0x00ff
|  |||||,=< 0x00c00214      3d07           jmpr  cc_NZ/NE, sym.a166_FAR._C_FPXSUB
|  ||||||   0x00c00216      46f58000       cmp   r5, #0x0080
| ,=======< 0x00c0021a      2d02           jmpr  cc_Z/EQ, 0xc00220
| ==``-`--> 0x00c0021c      ea00b205       jmpa+ cc_UC, ?C_FPNANRSL    ; sym.a166_NEAR._C_FPNANRSL
| ||  | |                                                              ; 0xc005b2
\ ``--`,==< 0x00c00220      ea00ba05       jmpa+ cc_UC, ?C_FPINFRSL    ; sym.a166_NEAR._C_FPINFRSL
\      ||                                                              ; 0xc005ba
       ||   ; CALL XREF from ?C_FPCMP @ 0xc00530
/ sym.a166_FAR._C_FPXSUB();
|      |`-> 0x00c00224      48a0           cmp   r10, #0

            ; CALL XREF from main @ 0xc014c4
            ;-- section.PR_GETLINE_FCODE:
/ getline();
|           0x00c018da      ecfd           push  r13                   ; Getline.c:20 ; [07] -r-x section size 146 named PR_GETLINE_FCODE
|           0x00c018dc      ecfe           push  r14
|           0x00c018de      ecff           push  r15
|           0x00c018e0      f0e9           mov   r14, r9
|           0x00c018e2      f0d8           mov   r13, r8
|           0x00c018e4      2802           sub   r0, #2
|           0x00c018e6      e108           movb  rl4, #0x0000          ; Getline.c:21
|           0x00c018e8      b980           movb  [r0], rl4
|           0x00c018ea      dac01c00       calls _getkey               ; Getline.c:24 ; 0xc0001c
|           0x00c018ee      f0f4           mov   r15, r4
|           0x00c018f0      47f80d00       cmpb  rl4, #0x000d
|       ,=< 0x00c018f4      3d01           jmpr  cc_NZ/NE, 0xc018f8
|       |   0x00c018f6      e0af           mov   r15, #0x0a
|       `-> 0x00c018f8      f04f           mov   r4, r15               ; Getline.c:26
|           0x00c018fa      47f80800       cmpb  rl4, #0x0008
|       ,=< 0x00c018fe      2d03           jmpr  cc_Z/EQ, 0xc01906
|       |   0x00c01900      47f87f00       cmpb  rl4, #0x007f
|      ,==< 0x00c01904      3d11           jmpr  cc_NZ/NE, 0xc01928
|      |`-> 0x00c01906      a980           movb  rl4, [r0]             ; Getline.c:27
|      |,=< 0x00c01908      2d1f           jmpr  cc_Z/EQ, 0xc01948
|      ||   0x00c0190a      a980           movb  rl4, [r0]             ; Getline.c:28
|      ||   0x00c0190c      2981           subb  rl4, #0x0001
|      ||   0x00c0190e      b980           movb  [r0], rl4

            ; CALL XREF from main @ 0xc0153e
/ read_index();
|           0x00c013b0      ecfe           push  r14                   ; Measure.c:129
|           0x00c013b2      ecff           push  r15
|           0x00c013b4      f0e8           mov   r14, r8
|           0x00c013b6      f0f9           mov   r15, r9
|           0x00c013b8      2802           sub   r0, #2
|           0x00c013ba      e004           mov   r4, #0x00             ; Measure.c:130
|           0x00c013bc      b840           mov   [r0], r4
|           0x00c013be      f3f84602       movb  rl4, DPP0:0x0246      ; Measure.c:133
|       ,=< 0x00c013c2      3d17           jmpr  cc_NZ/NE, data.00c013f2
|       |   0x00c013c4      f3f84702       movb  rl4, DPP0:0x0247
|      ,==< 0x00c013c8      3d14           jmpr  cc_NZ/NE, data.00c013f2
|      ||   0x00c013ca      f2f44802       mov   r4, DPP0:0x0248
|      ||   0x00c013ce      46f4e703       cmp   r4, #0x03e7
|     ,===< 0x00c013d2      9d0f           jmpr  cc_NC/UGE, data.00c013f2
|    ,====< 0x00c013d4      9a000d20       jnb   section.BI0_MEASURE_BIT0, data.00c013f2 ; 0xc013f2
|    ||||   0x00c013d8      e6fa821a       mov   r10, #0x1a82          ; Measure.c:137
|    ||||   0x00c013dc      e6fbc000       mov   r11, #0x00c0
|    ||||   0x00c013e0      e6f8261a       mov   r8, #0x1a26
|    ||||   0x00c013e4      e6f9c000       mov   r9, #0x00c0
|    ||||   0x00c013e8      dac04a05       calls printf                ; sym.a166_FAR.printf
|    ||||                                                              ; 0xc0054a ; int printf(const char *format)
|    ||||   0x00c013ec      e6f4ffff       mov   r4, #0xffff           ; Measure.c:138
|   ,=====< 0x00c013f0      0d28           jmpr  cc_UC, 0xc01442
|   |||||   ; DATA XREF from read_index @ 0xc013d4
|   |||||   ;-- data.00c013f2:
|   |````-> 0x00c013f2      f040           mov   r4, r0                ; Measure.c:139
|   |       0x00c013f4      e005           mov   r5, #0x00
|   |       0x00c013f6      06f40000       add   r4, #0x0000
|   |       0x00c013fa      16f50100       addc  r5, #0x0001
|   |       0x00c013fe      8850           mov   [-r0], r5
|   |       0x00c01400      f0c4           mov   r12, r4
|   |       0x00c01402      e6fa491e       mov   r10, #0x1e49
|   |       0x00c01406      e6fbc000       mov   r11, #0x00c0
|   |       0x00c0140a      f09f           mov   r9, r15
|   |       0x00c0140c      f08e           mov   r8, r14
|   |       0x00c0140e      dac0fc0d       calls sscanf                ; sym.a166_FAR.sscanf
|   |                                                                  ; 0xc00dfc ; int sscanf(const char *s, const char *format, va_list args)
|   |       0x00c01412      0802           add   r0, #2
|   |       0x00c01414      f054           mov   r5, r4
|   |       0x00c01416      4850           cmp   r5, #0                ; Measure.c:141
|   |   ,=< 0x00c01418      2d05           jmpr  cc_Z/EQ, 0xc01424
|   |   |   0x00c0141a      a840           mov   r4, [r0]
|   |  ,==< 0x00c0141c      2d03           jmpr  cc_Z/EQ, 0xc01424
|   |  ||   0x00c0141e      46f5ffff       cmp   r5, #0xffff
|   | ,===< 0x00c01422      3d03           jmpr  cc_NZ/NE, 0xc0142a
|   | |``-> 0x00c01424      e6f4ff01       mov   r4, #0x01ff
|   | |     0x00c01428      b840           mov   [r0], r4
|   | `---> 0x00c0142a      a850           mov   r5, [r0]              ; Measure.c:142
|   |       0x00c0142c      f2f44a02       mov   r4, DPP0:0x024a
|   |       0x00c01430      2045           sub   r4, r5
|   |       0x00c01432      b840           mov   [r0], r4
|   |       0x00c01434      4840           cmp   r4, #0                ; Measure.c:143
|   |   ,=< 0x00c01436      dd04           jmpr  cc_SGE, 0xc01440
|   |   |   0x00c01438      a840           mov   r4, [r0]
|   |   |   0x00c0143a      06f40002       add   r4, #0x0200
|   |   |   0x00c0143e      b840           mov   [r0], r4
|   |   `-> 0x00c01440      a840           mov   r4, [r0]              ; Measure.c:144
|   `-----> 0x00c01442      0802           add   r0, #2                ; Measure.c:145
|           0x00c01444      fcff           pop   r15
|           0x00c01446      fcfe           pop   r14
\           0x00c01448      db00           rets

            ; CALL XREFS from main @ 0xc01586, 0xc01608
            ;-- section.PR_MCOMMAND_FCODE:
/ measure_display();
|           0x00c0168a      ecfd           push  r13                   ; Mcommand.c:16 ; [00] -r-x section size 592 named PR_MCOMMAND_FCODE
|           0x00c0168c      d4400600       mov   r4, [r0+#0x0006]      ; Mcommand.c:24
|           0x00c01690      8840           mov   [-r0], r4
|           0x00c01692      d4400600       mov   r4, [r0+#0x0006]
|           0x00c01696      8840           mov   [-r0], r4
|           0x00c01698      f4800600       movb  rl4, [r0+#0x0006]
|           0x00c0169c      c08c           movbz r12, rl4
|           0x00c0169e      f4800500       movb  rl4, [r0+#0x0005]
|           0x00c016a2      c08b           movbz r11, rl4
|           0x00c016a4      f4800400       movb  rl4, [r0+#0x0004]
|           0x00c016a8      c08a           movbz r10, rl4
|           0x00c016aa      e6f8981e       mov   r8, #0x1e98
|           0x00c016ae      e6f9c000       mov   r9, #0x00c0
|           0x00c016b2      dac04a05       calls printf                ; sym.a166_FAR.printf
|                                                                      ; 0xc0054a ; int printf(const char *format)
|           0x00c016b6      0804           add   r0, #4
|           0x00c016b8      e00d           mov   r13, #0x00            ; Mcommand.c:26
|       ,=< 0x00c016ba      0d20           jmpr  cc_UC, 0xc016fc
|      .--> 0x00c016bc      f04d           mov   r4, r13               ; Mcommand.c:27
|      :|   0x00c016be      c084           movbz r4, rl4
|      :|   0x00c016c0      5c14           shl   r4, #0x01
|      :|   0x00c016c2      e081           mov   r1, #0x08
|      :|   0x00c016c4      0010           add   r1, r0
|      :|   0x00c016c6      0014           add   r1, r4
|      :|   0x00c016c8      a841           mov   r4, [r1]
|      :|   0x00c016ca      e005           mov   r5, #0x00
|      :|   0x00c016cc      e006           mov   r6, #0x00
|      :|   0x00c016ce      dac08204       calls ?C_FCAST              ; sym.a166_FAR._C_FCAST
|      :|                                                              ; 0xc00482
|      :|   0x00c016d2      e006           mov   r6, #0x00
|      :|   0x00c016d4      e6f7a040       mov   r7, #0x40a0
|      :|   0x00c016d8      dac0ca02       calls ?C_FPMUL              ; sym.a166_FAR._C_FPMUL
|      :|                                                              ; 0xc002ca
|      :|   0x00c016dc      e006           mov   r6, #0x00
|      :|   0x00c016de      e6f78044       mov   r7, #0x4480
|      :|   0x00c016e2      dac05e03       calls ?C_FPDIV              ; sym.a166_FAR._C_FPDIV
|      :|                                                              ; 0xc0035e
|      :|   0x00c016e6      f0b4           mov   r11, r4
|      :|   0x00c016e8      f0c5           mov   r12, r5
|      :|   0x00c016ea      f04d           mov   r4, r13
|      :|   0x00c016ec      c08a           movbz r10, rl4
|      :|   0x00c016ee      e6f88b1e       mov   r8, #0x1e8b
|      :|   0x00c016f2      e6f9c000       mov   r9, #0x00c0
|      :|   0x00c016f6      dac04a05       calls printf                ; sym.a166_FAR.printf
|      :|                                                              ; 0xc0054a ; int printf(const char *format)
|      :|   0x00c016fa      08d1           add   r13, #1               ; Mcommand.c:28
|      :`-> 0x00c016fc      f04d           mov   r4, r13
|      :    0x00c016fe      4984           cmpb  rl4, #0x0004
|      `==< 0x00c01700      3ddd           jmpr  cc_NZ/NE, 0xc016bc
|           0x00c01702      fcfd           pop   r13                   ; Mcommand.c:29
\           0x00c01704      db00           rets
EOF
RUN


NAME=C166 measure raw dump file iA
FILE=bins/c166/measure_raw.bin
CMDS=<<EOF
e asm.arch=c166
e asm.bytes=true
iA
echo
iS
echo
pd 25
echo
EOF
EXPECT=<<EOF
    offset size arch bits machine                                      big_endian 
----------------------------------------------------------------------------------
0x00000000 7958 c166   16 Siemens/Infineon C166 family microcontroller false

     paddr   size      vaddr  vsize align perm name    type flags 
------------------------------------------------------------------
0x00000000 0x1f16 0x00c00000 0x1f16   0x0 -r-x code         
0x00000000    0x0 0x0000f000  0xfff   0x0 -rw- ram_sfr      

            ;-- entry0:
            ;-- section.code:
            ;-- isr.RESET:
        ,=< 0x00c00000      fac08400       jmps  0xc00084              ; [00] -r-x section size 7958 named code
        |   0x00c00004      0000           add   r0, r0
        |   0x00c00006      ffff           bset  r15.15
        |   ;-- isr.NMI_trap:
       ,==< 0x00c00008      fac07400       jmps  0xc00074
       ||   0x00c0000c      ffff           bset  r15.15
       ||   0x00c0000e      ffff           bset  r15.15
       ||   ;-- isr.STKOF_trap:
      ,===< 0x00c00010      fac07600       jmps  0xc00076
      |||   0x00c00014      ffff           bset  r15.15
      |||   0x00c00016      ffff           bset  r15.15
      |||   ;-- isr.STKUF_trap:
     ,====< 0x00c00018      fac07800       jmps  0xc00078
    @====-> 0x00c0001c      9ab7fe70       jnb   S0RIC.7, 0xc0001c
     ||||   0x00c00020      f2f4b2fe       mov   r4, DPP3:0x3eb2
     ||||   0x00c00024      7eb7           bclr  S0RIC.7
     ||||   0x00c00026      db00           rets
    ,=====< 0x00c00028      fac07a00       jmps  0xc0007a
    |||||   0x00c0002c      1a800400       bfldh P0L, #0x00, #0x04
    |||||   0x00c00030      40c2           cmp   r12, r2
    |||||   0x00c00032      0fa0           bset  T2CON.0
    |||||   0x00c00034      04005cc2       add   DPP3:0x025c, DPP0
    |||||   0x00c00038      03000000       addb  DPP0, DPP0:0x0000
    |||||   0x00c0003c      0080           add   r8, r0
    |||||   0x00c0003e      04005bc2       add   DPP3:0x025b, DPP0
    |||||   0x00c00042      0000           add   r0, r0
    |||||   0x00c00044      0000           add   r0, r0
    |||||   0x00c00046      803f           cmpi1 r15, #0x03

EOF
RUN

#NAME=C166 Hello world binary file
#FILE=bins/c166/hello_world_hex167.bin
#CMDS=<<EOF
#e asm.arch=c166
#pD 4
#ia
#flt
#pd 1221 @ 0
#EOF
#EXPECT=<<EOF
#        ,=< 0x00000000      jmps  0x00, 0x0004
#EOF
#RUN


NAME=Try testing real dump 1
FILE=bins/omf/omf166/measure
TIMEOUT=30
CMDS=<<EOF
e asm.cpu=c166-generic
pd 25
EOF
EXPECT=<<EOF
            ;-- entry0:
            ;-- isr.RESET:
        ,=< 0x00c00000      jmps  ?C_RESET                             ; sym.a166_FAR._C_STARTUP
        |                                                              ; 0xc00084
        |   ;-- section.C_INITSEC_UNKNOWN:
        |   0x00c00004      .word 0x0000                               ; [25] -r-- section size 2 named C_INITSEC_UNKNOWN
        |   0x00c00006      bset  r15.15
        |   ;-- isr.NMI_trap:
        |   0x00c00008      jmps  NMI_trap                             ; 0xc00074 ; "\r\xff\r\xff\r\xff\r\xff\xff\xff\xff\xff\xfa\xc0\x80\U00000012\xa5Z\xa5\xa5р\xe6\xea"
        |   0x00c0000c      bset  r15.15
        |   0x00c0000e      bset  r15.15
        |   ;-- isr.STKOF_trap:
        |   0x00c00010      jmps  STKOF_trap                           ; 0xc00076 ; "\r\xff\r\xff\r\xff\xff\xff\xff\xff\xfa\xc0\x80\U00000012\xa5Z\xa5\xa5р\xe6\xea"
        |   0x00c00014      bset  r15.15
        |   0x00c00016      bset  r15.15
        |   ;-- isr.STKUF_trap:
        |   0x00c00018      jmps  STKUF_trap                           ; 0xc00078 ; "\r\xff\r\xff\xff\xff\xff\xff\xfa\xc0\x80\U00000012\xa5Z\xa5\xa5р\xe6\xea"
        |   ;-- getkey:
        |   ;-- section.PR_GETKEY_FCODE:
        |   ;-- _getkey:
/ _getkey();
|       |   0x00c0001c      jnb   S0RIC.7, _getkey                     ; Getkey.c:22 ; 0xc0001c ; [09] -r-x section size 12 named PR_GETKEY_FCODE
|       |   0x00c00020      mov   r4, DPP3:0x3eb2                      ; Getkey.c:26
|       |   0x00c00024      bclr  S0RIC.7                              ; Getkey.c:27
\       |   0x00c00026      rets                                       ; Getkey.c:28
        |   ;-- isr.Class_B_trap:
       ,==< 0x00c00028      jmps  Class_B_trap                         ; 0xc0007a ; "\r\xff\xff\xff\xff\xff\xfa\xc0\x80\U00000012\xa5Z\xa5\xa5р\xe6\xea"
       ||   ;-- section.C_CLRMEMSEC_UNKNOWN:
       ||   0x00c0002c hex length=24 delta=0
0x00c0002c  1a80 0400 40c2 0fa0 0400 5cc2 0300 0000  ....@.....\.....
0x00c0003c  0080 0400 5bc2 0000                      ....[...
 ; [26] -r-- section size 24 named C_CLRMEMSEC_UNKNOWN
       ||   ;-- section.C_LIB_NCONST_NCONST:
       ||   0x00c00044 hex length=48 delta=0
0x00c00044  0000 803f 0000 2041 0000 c842 0000 7a44  ...?.. A...B..zD
0x00c00054  0040 1c46 0050 c347 0024 7449 8096 184b  .@.F.P.G.$tI...K
0x00c00064  20bc be4c ca1b 0e5a 1cc2 5367 aec5 9d74   ..L...Z..Sg...t
 ; [19] -r-- section size 48 named C_LIB_NCONST_NCONST
       ||   ;-- section.PR_TRAPS_FCODE:
/ NMI_trap();
\      ||   0x00c00074      jmpr  cc_UC, NMI_trap                      ; Traps.c:24 ; [10] -r-x section size 8 named PR_TRAPS_FCODE
/ STKOF_trap();
\      ||   0x00c00076      jmpr  cc_UC, STKOF_trap                    ; Traps.c:33
/ STKUF_trap();
\     @==-> 0x00c00078      jmpr  cc_UC, STKUF_trap                    ; Traps.c:42
/ Class_B_trap();
\     @`--> 0x00c0007a      jmpr  cc_UC, Class_B_trap                  ; Traps.c:56
        |   0x00c0007c      bset  r15.15
        |   0x00c0007e      bset  r15.15
        |   ;-- isr.T0INT:
        |   0x00c00080      jmps  timer0                               ; 0xc01280
        |   ;-- C_RESET:
        |   ;-- section.C_STARTUP_CODE_ICODE:
        |   ;-- a166_FAR.?C_STARTUP:
/ ?C_RESET();
|       `-> 0x00c00084      diswdt                                     ; START_V2.A66:1453 ; [15] -r-x section size 350 named C_STARTUP_CODE_ICODE
EOF
RUN

NAME=Try testing real dump 2
FILE=bins/c166/measure_raw.bin
TIMEOUT=30
CMDS=<<EOF
e asm.cpu=c166-generic
pd
EOF
EXPECT=<<EOF
            ;-- entry0:
            ;-- section.code:
            ;-- isr.RESET:
        ,=< 0x00c00000      jmps  0xc00084                             ; [00] -r-x section size 7958 named code
        |   0x00c00004      add   r0, r0
        |   0x00c00006      bset  r15.15
        |   ;-- isr.NMI_trap:
       ,==< 0x00c00008      jmps  0xc00074
       ||   0x00c0000c      bset  r15.15
       ||   0x00c0000e      bset  r15.15
       ||   ;-- isr.STKOF_trap:
      ,===< 0x00c00010      jmps  0xc00076
      |||   0x00c00014      bset  r15.15
      |||   0x00c00016      bset  r15.15
      |||   ;-- isr.STKUF_trap:
     ,====< 0x00c00018      jmps  0xc00078
    @====-> 0x00c0001c      jnb   S0RIC.7, 0xc0001c
     ||||   0x00c00020      mov   r4, DPP3:0x3eb2
     ||||   0x00c00024      bclr  S0RIC.7
     ||||   0x00c00026      rets
    ,=====< 0x00c00028      jmps  0xc0007a
    |||||   0x00c0002c      bfldh P0L, #0x00, #0x04
    |||||   0x00c00030      cmp   r12, r2
    |||||   0x00c00032      bset  T2CON.0
    |||||   0x00c00034      add   DPP3:0x025c, DPP0
    |||||   0x00c00038      addb  DPP0, DPP0:0x0000
    |||||   0x00c0003c      add   r8, r0
    |||||   0x00c0003e      add   DPP3:0x025b, DPP0
    |||||   0x00c00042      add   r0, r0
EOF
RUN

NAME=Try testing real dump 3
FILE=bins/c166/Lifan_X50_CVT_Bosch_M7.8.8_F01R00DP24_BSL_Combiloader.bin
TIMEOUT=30
BROKEN=1
CMDS=<<EOF
e asm.cpu=c166-generic
e io.cache=1
aaa
EOF
EXPECT=<<EOF

EOF
RUN



