//////////////////////////////////////////////////////////////////////////////
//                                                                           /
// IAR ARM ANSI C/C++ Compiler V4.11A/W32              20/Jul/2004  18:58:48 /
// Copyright 1999-2004 IAR Systems. All rights reserved.                     /
//                                                                           /
//    Cpu mode        =  arm                                                 /
//    Endian          =  little                                              /
//    Stack alignment =  4                                                   /
//    Source file     =  C:\medusa\sfp.c                                     /
//    Command line    =  -I "C:\Program Files\IAR Systems\Embedded           /
//                       Workbench 4.0\ARM\INC\" -lc C:\medusa\Debug\List\   /
//                       -la C:\medusa\Debug\List\ -o C:\medusa\Debug\Obj\   /
//                       -s2 --no_cse --no_unroll --no_inline                /
//                       --no_code_motion --no_tbaa --no_clustering          /
//                       --no_scheduling --debug --cpu_mode arm --endian     /
//                       little --cpu ARM7TDMI-S --stack_align 4 -e --fpu    /
//                       None "-D_DLIB_CONFIG_FILE=C:\Program Files\IAR      /
//                       Systems\Embedded Workbench                          /
//                       4.0\ARM\LIB\dl4tpannl8n.h" C:\medusa\sfp.c          /
//    List file       =  C:\medusa\Debug\List\sfp.s79                        /
//                                                                           /
//                                                                           /
//////////////////////////////////////////////////////////////////////////////

        NAME sfp

        RTMODEL "ARMv4M", "USED"
        RTMODEL "StackAlign4", "USED"
        RTMODEL "__cpu_mode", "__pcs__arm"
        RTMODEL "__data_model", "absolute"
        RTMODEL "__dlib_file_descriptor", "0"
        RTMODEL "__endian", "little"
        RTMODEL "__rt_version", "6"

        RSEG CSTACK:DATA:NOROOT(2)

??DataTable0 EQU 0
        PUBWEAK ?init?tab?DATA_Z
        MULTWEAK _Stoul??rA
        PUBWEAK atoi
        FUNCTION atoi,010203H
        LOCFRAME CSTACK, 8, STACK
        MULTWEAK atoi??rA
        MULTWEAK cliRegisterCommand??rA
        MULTWEAK clicharGetOutputBuffer??rA
        MULTWEAK clicharSendOutputBuffer??rA
        MULTWEAK i2cmasterProbe??rA
        MULTWEAK i2cportClear??rA
        MULTWEAK i2cportSet??rA
        MULTWEAK i2cswitchDisable??rA
        MULTWEAK i2cswitchSetBus??rA
        PUBLIC modulePresent
        PUBLIC sfpEnable
        FUNCTION sfpEnable,0203H
        LOCFRAME CSTACK, 20, STACK
        FUNCTION sfpHandler,0603H
        LOCFRAME CSTACK, 44, STACK
        PUBLIC sfpInit
        FUNCTION sfpInit,0203H
        LOCFRAME CSTACK, 12, STACK
        PUBLIC sfpModulePresent
        FUNCTION sfpModulePresent,0203H
        PUBLIC sfpProbe
        FUNCTION sfpProbe,0203H
        LOCFRAME CSTACK, 12, STACK
        PUBLIC sfpTransmitDisable
        FUNCTION sfpTransmitDisable,0203H
        LOCFRAME CSTACK, 20, STACK
        MULTWEAK sprintf??rA
        
        CFI Names cfiNames0
        CFI StackFrame CFA R13 HUGEDATA
        CFI Resource R0:32, R1:32, R2:32, R3:32, R4:32, R5:32, R6:32, R7:32
        CFI Resource R8:32, R9:32, R10:32, R11:32, R12:32, CPSR:32, R13:32
        CFI Resource R14:32, SPSR:32
        CFI VirtualResource ?RET:32
        CFI EndNames cfiNames0
        
        CFI Common cfiCommon0 Using cfiNames0
        CFI CodeAlign 4
        CFI DataAlign 4
        CFI ReturnAddress ?RET CODE
        CFI CFA R13+0
        CFI R0 Undefined
        CFI R1 Undefined
        CFI R2 Undefined
        CFI R3 Undefined
        CFI R4 SameValue
        CFI R5 SameValue
        CFI R6 SameValue
        CFI R7 SameValue
        CFI R8 SameValue
        CFI R9 SameValue
        CFI R10 SameValue
        CFI R11 SameValue
        CFI R12 Undefined
        CFI CPSR SameValue
        CFI R14 Undefined
        CFI SPSR SameValue
        CFI ?RET R14
        CFI EndCommon cfiCommon0
        
_Stoul              SYMBOL "_Stoul"
cliRegisterCommand  SYMBOL "cliRegisterCommand"
clicharGetOutputBuffer SYMBOL "clicharGetOutputBuffer"
clicharSendOutputBuffer SYMBOL "clicharSendOutputBuffer"
i2cmasterProbe      SYMBOL "i2cmasterProbe"
i2cportClear        SYMBOL "i2cportClear"
i2cportSet          SYMBOL "i2cportSet"
i2cswitchDisable    SYMBOL "i2cswitchDisable"
i2cswitchSetBus     SYMBOL "i2cswitchSetBus"
sprintf             SYMBOL "sprintf"
_Stoul??rA          SYMBOL "??rA", _Stoul
atoi                SYMBOL "atoi"
atoi??rA            SYMBOL "??rA", atoi
cliRegisterCommand??rA SYMBOL "??rA", cliRegisterCommand
clicharGetOutputBuffer??rA SYMBOL "??rA", clicharGetOutputBuffer
clicharSendOutputBuffer??rA SYMBOL "??rA", clicharSendOutputBuffer
i2cmasterProbe??rA  SYMBOL "??rA", i2cmasterProbe
i2cportClear??rA    SYMBOL "??rA", i2cportClear
i2cportSet??rA      SYMBOL "??rA", i2cportSet
i2cswitchDisable??rA SYMBOL "??rA", i2cswitchDisable
i2cswitchSetBus??rA SYMBOL "??rA", i2cswitchSetBus
sprintf??rA         SYMBOL "??rA", sprintf

        EXTERN _Stoul
        FUNCTION _Stoul,010202H
        EXTERN cliRegisterCommand
        FUNCTION cliRegisterCommand,0202H
        EXTERN clicharGetOutputBuffer
        FUNCTION clicharGetOutputBuffer,0202H
        EXTERN clicharSendOutputBuffer
        FUNCTION clicharSendOutputBuffer,0202H
        EXTERN i2cmasterProbe
        FUNCTION i2cmasterProbe,0202H
        EXTERN i2cportClear
        FUNCTION i2cportClear,0202H
        EXTERN i2cportSet
        FUNCTION i2cportSet,0202H
        EXTERN i2cswitchDisable
        FUNCTION i2cswitchDisable,0202H
        EXTERN i2cswitchSetBus
        FUNCTION i2cswitchSetBus,0202H
        EXTERN sprintf
        FUNCTION sprintf,010202H


        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock0 Using cfiCommon0
        CFI Function atoi
   CODE32      
// __??Code32?? __intrinsic __code __arm __atpcs int atoi(char const *)
atoi:
   STMDB       SP!,{R4,LR}        ;; Push
        CFI ?RET Frame(CFA, -4)
        CFI R4 Frame(CFA, -8)
        CFI CFA R13+8
   MOV         R4,R0
   MOV         R2,#+0xA
   MOV         R1,#+0x0
   MOV         R0,R4
   _BLF        _Stoul,_Stoul??rA
   LDMIA       SP!,{R4,PC}        ;; return
        CFI EndBlock cfiBlock0

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
modulePresent:
        DS8 16

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock1 Using cfiCommon0
        CFI Function sfpInit
   CODE32      
sfpInit:
   STMDB       SP!,{R4,R5,LR}     ;; Push
        CFI ?RET Frame(CFA, -4)
        CFI R5 Frame(CFA, -8)
        CFI R4 Frame(CFA, -12)
        CFI CFA R13+12
   MVN         R1,#+0x0
   MOV         R4,R1
   MOV         R2,#+0x0
   MOV         R5,R2
??sfpInit_0:
   CMP         R5,#+0x3
   BGE         ??sfpInit_1
   MOV         R0,R5
   BL          sfpProbe
   CMP         R0,#+0x0
   BNE         ??sfpInit_2
   MOV         R0,#+0x1
   B           ??sfpInit_3
??sfpInit_2:
   MOV         R0,#+0x0
??sfpInit_3:
   MOV         R3,#+0x4
   LDR         R12,??DataTable1   ;; modulePresent
   MLAS        LR,R3,R5,R12
   STR         R0,[LR, #+0]
   ADDS        R5,R5,#+0x1
   B           ??sfpInit_0
??sfpInit_1:
   LDR         R2,??sfpInit_4     ;; `?<Constant "sfp [probe | (-)enabl...">`
   LDR         R1,??sfpInit_4+4   ;; sfpHandler
   LDR         R0,??sfpInit_4+8   ;; `?<Constant "sfp">`
   _BLF        cliRegisterCommand,cliRegisterCommand??rA
   MOV         R4,R0
   MOV         R0,R4
   LDMIA       SP!,{R4,R5,PC}     ;; return
   DATA        
??sfpInit_4:
   DC32        `?<Constant "sfp [probe | (-)enabl...">`
   DC32        sfpHandler
   DC32        `?<Constant "sfp">`
        CFI EndBlock cfiBlock1

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock2 Using cfiCommon0
        CFI Function sfpModulePresent
   CODE32      
sfpModulePresent:
   MOV         R2,R0
   CMP         R2,#+0x0
   BLT         ??sfpModulePresent_0
   CMP         R2,#+0x4
   BLT         ??sfpModulePresent_1
??sfpModulePresent_0:
   MVN         R0,#+0x0
   B           ??sfpModulePresent_2
??sfpModulePresent_1:
   MOV         R0,#+0x4
   LDR         R3,??DataTable1    ;; modulePresent
   MLAS        R12,R0,R2,R3
   LDR         R0,[R12, #+0]
   STR         R0,[R1, #+0]
   MOV         R0,#+0x0
??sfpModulePresent_2:
   MOV         PC,LR              ;; return
        CFI EndBlock cfiBlock2

        RSEG CODE:CODE:NOROOT(2)
   DATA        
??DataTable1:
   DC32        modulePresent

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock3 Using cfiCommon0
        CFI Function sfpProbe
   CODE32      
sfpProbe:
   STMDB       SP!,{R4,R5,LR}     ;; Push
        CFI ?RET Frame(CFA, -4)
        CFI R5 Frame(CFA, -8)
        CFI R4 Frame(CFA, -12)
        CFI CFA R13+12
   MOV         R4,R0
   MOV         R0,R4
   _BLF        i2cswitchSetBus,i2cswitchSetBus??rA
   MOV         R5,R0
   CMN         R5,#+0x1
   BNE         ??sfpProbe_0
   MVN         R0,#+0x0
   B           ??sfpProbe_1
??sfpProbe_0:
   MOV         R0,#+0xA2
   _BLF        i2cmasterProbe,i2cmasterProbe??rA
   MOV         R5,R0
   _BLF        i2cswitchDisable,i2cswitchDisable??rA
   MOV         R0,R5
??sfpProbe_1:
   LDMIA       SP!,{R4,R5,PC}     ;; return
        CFI EndBlock cfiBlock3

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock4 Using cfiCommon0
        CFI Function sfpTransmitDisable
   CODE32      
sfpTransmitDisable:
   STMDB       SP!,{R4-R7,LR}     ;; Push
        CFI ?RET Frame(CFA, -4)
        CFI R7 Frame(CFA, -8)
        CFI R6 Frame(CFA, -12)
        CFI R5 Frame(CFA, -16)
        CFI R4 Frame(CFA, -20)
        CFI CFA R13+20
   MOV         R4,R0
   MOV         R5,R1
   MOV         R0,#+0x1
   MOV         R1,R4
   ADDS        R2,R1,#+0x4
   MOV         R3,R0, LSL R2
   MOV         R6,R3
   CMP         R5,#+0x1
   BNE         ??sfpTransmitDisable_0
   MOV         R1,R6
   MOV         R1,R1, LSL #+16
   MOVS        R1,R1, LSR #+16
   MOV         R0,#+0x1
   _BLF        i2cportSet,i2cportSet??rA
   MOV         R7,R0
   B           ??sfpTransmitDisable_1
??sfpTransmitDisable_0:
   MOV         R1,R6
   MOV         R1,R1, LSL #+16
   MOVS        R1,R1, LSR #+16
   MOV         R0,#+0x1
   _BLF        i2cportClear,i2cportClear??rA
   MOV         R7,R0
??sfpTransmitDisable_1:
   MOV         R0,R7
   LDMIA       SP!,{R4-R7,PC}     ;; return
        CFI EndBlock cfiBlock4

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock5 Using cfiCommon0
        CFI Function sfpEnable
   CODE32      
sfpEnable:
   STMDB       SP!,{R4-R7,LR}     ;; Push
        CFI ?RET Frame(CFA, -4)
        CFI R7 Frame(CFA, -8)
        CFI R6 Frame(CFA, -12)
        CFI R5 Frame(CFA, -16)
        CFI R4 Frame(CFA, -20)
        CFI CFA R13+20
   MOV         R4,R0
   MOV         R5,R1
   MOV         R0,#+0x1
   MOV         R1,R4
   MOV         R2,R0, LSL R1
   MOV         R6,R2
   CMP         R5,#+0x1
   BNE         ??sfpEnable_0
   MOV         R1,R6
   MOV         R1,R1, LSL #+16
   MOVS        R1,R1, LSR #+16
   MOV         R0,#+0x1
   _BLF        i2cportSet,i2cportSet??rA
   MOV         R7,R0
   B           ??sfpEnable_1
??sfpEnable_0:
   MOV         R1,R6
   MOV         R1,R1, LSL #+16
   MOVS        R1,R1, LSR #+16
   MOV         R0,#+0x1
   _BLF        i2cportClear,i2cportClear??rA
   MOV         R7,R0
??sfpEnable_1:
   MOV         R0,R7
   LDMIA       SP!,{R4-R7,PC}     ;; return
        CFI EndBlock cfiBlock5

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock6 Using cfiCommon0
        CFI Function sfpHandler
   CODE32      
sfpHandler:
   STMDB       SP!,{R2,R4-R11,LR}  ;; Push
        CFI ?RET Frame(CFA, -4)
        CFI R11 Frame(CFA, -8)
        CFI R10 Frame(CFA, -12)
        CFI R9 Frame(CFA, -16)
        CFI R8 Frame(CFA, -20)
        CFI R7 Frame(CFA, -24)
        CFI R6 Frame(CFA, -28)
        CFI R5 Frame(CFA, -32)
        CFI R4 Frame(CFA, -36)
        CFI CFA R13+40
   SUB         SP,SP,#+0x4
        CFI CFA R13+44
   MOV         R8,R0
   MOV         R9,R1
   MVN         R0,#+0x0
   MOV         R10,R0
   MOV         R0,SP
   _BLF        clicharGetOutputBuffer,clicharGetOutputBuffer??rA
   MOV         R5,R0
   CMP         R8,#+0x3
   BGE         ??sfpHandler_0
   MVN         R0,#+0x0
   B           ??sfpHandler_1
??sfpHandler_0:
   LDR         R0,[R9, #+8]
   _BLF        atoi,atoi??rA
   MOV         R4,R0
   CMP         R4,#+0x0
   BLT         ??sfpHandler_2
   CMP         R4,#+0x4
   BLT         ??sfpHandler_3
??sfpHandler_2:
   MVN         R0,#+0x0
   B           ??sfpHandler_1
??sfpHandler_3:
   MOV         R1,#+0x1
   MOV         R6,R1
   LDR         R2,[R9, #+4]
   MOV         R11,R2
   LDRB        R3,[R11, #+0]
   CMP         R3,#+0x2D
   BNE         ??sfpHandler_4
   MOV         R12,#+0x0
   MOV         R6,R12
   ADDS        R11,R11,#+0x1
??sfpHandler_4:
   LDRB        LR,[R11, #+0]
   ANDS        LR,LR,#+0xFF       ;; Zero extend
   SUB         LR,LR,#+0x45
   CMP         LR,#+0x2F
   BHI         ??sfpHandler_5
   ADR         R0,`?<Jumptable for sfpHandler>_0`
   LDRB        R0,[R0, LR]
   ADD         PC,PC,R0, LSL #+2
   DATA        
`?<Jumptable for sfpHandler>_0`:
   DC8         +0xB,+0x50,+0x50,+0x50
   DC8         +0x50,+0x50,+0x50,+0x50
   DC8         +0x50,+0x50,+0x50,+0x25
   DC8         +0x50,+0x50,+0x50,+0x37
   DC8         +0x50,+0x50,+0x50,+0x50
   DC8         +0x50,+0x50,+0x50,+0x50
   DC8         +0x50,+0x50,+0x50,+0x50
   DC8         +0x50,+0x50,+0x50,+0x50
   DC8         +0xB,+0x50,+0x50,+0x50
   DC8         +0x50,+0x50,+0x50,+0x50
   DC8         +0x50,+0x50,+0x50,+0x25
   DC8         +0x50,+0x50,+0x50,+0x37
   CODE32      
??sfpHandler_6:
   MOV         R1,R6
   MOV         R0,R4
   BL          sfpEnable
   MOV         R10,R0
   CMP         R0,#+0x0
   BNE         ??sfpHandler_7
   CMP         R6,#+0x1
   BNE         ??sfpHandler_8
   LDR         R1,??sfpHandler_9  ;; `?<Constant "enable: channel [%d] ...">`
   MOV         R7,R1
   B           ??sfpHandler_10
??sfpHandler_8:
   LDR         R2,??sfpHandler_9+4  ;; `?<Constant "enable: channel [%d] ...">_1`
   MOV         R7,R2
??sfpHandler_10:
   MOV         R2,R4
   MOV         R1,R7
   MOV         R0,R5
   _BLF        sprintf,sprintf??rA
   B           ??sfpHandler_11
??sfpHandler_7:
   MOV         R2,R4
   LDR         R1,??sfpHandler_9+8  ;; `?<Constant "enable: channel [%d] ...">_2`
   MOV         R0,R5
   _BLF        sprintf,sprintf??rA
??sfpHandler_11:
   LDR         R1,[SP, #+0]
   MOV         R0,R5
   _BLF        clicharSendOutputBuffer,clicharSendOutputBuffer??rA
   B           ??sfpHandler_5
??sfpHandler_12:
   MOV         R0,R4
   BL          sfpProbe
   MOV         R10,R0
   CMP         R0,#+0x0
   BNE         ??sfpHandler_13
   MOV         R2,R4
   LDR         R1,??sfpHandler_9+12  ;; `?<Constant "probe: found SFP on b...">`
   MOV         R0,R5
   _BLF        sprintf,sprintf??rA
   B           ??sfpHandler_14
??sfpHandler_13:
   MOV         R2,R4
   LDR         R1,??sfpHandler_9+16  ;; `?<Constant "probe: error SFP not ...">`
   MOV         R0,R5
   _BLF        sprintf,sprintf??rA
??sfpHandler_14:
   LDR         R1,[SP, #+0]
   MOV         R0,R5
   _BLF        clicharSendOutputBuffer,clicharSendOutputBuffer??rA
   B           ??sfpHandler_5
??sfpHandler_15:
   MOV         R1,R6
   MOV         R0,R4
   BL          sfpTransmitDisable
   MOV         R10,R0
   CMP         R0,#+0x0
   BNE         ??sfpHandler_16
   CMP         R6,#+0x1
   BNE         ??sfpHandler_17
   LDR         LR,??sfpHandler_9+20  ;; `?<Constant "txdisable: channel [%...">`
   MOV         R7,LR
   B           ??sfpHandler_18
??sfpHandler_17:
   LDR         R0,??sfpHandler_9+24  ;; `?<Constant "txdisable: channel [%...">_1`
   MOV         R7,R0
??sfpHandler_18:
   MOV         R2,R4
   MOV         R1,R7
   MOV         R0,R5
   _BLF        sprintf,sprintf??rA
   B           ??sfpHandler_19
??sfpHandler_16:
   MOV         R2,R4
   LDR         R1,??sfpHandler_9+28  ;; `?<Constant "txenable: channel [%d...">`
   MOV         R0,R5
   _BLF        sprintf,sprintf??rA
??sfpHandler_19:
   LDR         R1,[SP, #+0]
   MOV         R0,R5
   _BLF        clicharSendOutputBuffer,clicharSendOutputBuffer??rA
??sfpHandler_5:
   MOV         R0,R10
??sfpHandler_1:
   ADD         SP,SP,#+0x8        ;; stack cleaning
        CFI CFA R13+36
   LDMIA       SP!,{R4-R11,PC}    ;; return
   DATA        
??sfpHandler_9:
   DC32        `?<Constant "enable: channel [%d] ...">`
   DC32        `?<Constant "enable: channel [%d] ...">_1`
   DC32        `?<Constant "enable: channel [%d] ...">_2`
   DC32        `?<Constant "probe: found SFP on b...">`
   DC32        `?<Constant "probe: error SFP not ...">`
   DC32        `?<Constant "txdisable: channel [%...">`
   DC32        `?<Constant "txdisable: channel [%...">_1`
   DC32        `?<Constant "txenable: channel [%d...">`
        CFI EndBlock cfiBlock6

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock7 Using cfiCommon0
        CFI NoFunction
   CODE32      
_Stoul??rA:
   LDR         R12,??Subroutine0_0  ;; _Stoul
   MOV         PC,R12
   DATA        
??Subroutine0_0:
   DC32        _Stoul
        CFI EndBlock cfiBlock7

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock8 Using cfiCommon0
        CFI NoFunction
   CODE32      
cliRegisterCommand??rA:
   LDR         R12,??Subroutine1_0  ;; cliRegisterCommand
   MOV         PC,R12
   DATA        
??Subroutine1_0:
   DC32        cliRegisterCommand
        CFI EndBlock cfiBlock8

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock9 Using cfiCommon0
        CFI NoFunction
   CODE32      
i2cswitchSetBus??rA:
   LDR         R12,??Subroutine2_0  ;; i2cswitchSetBus
   MOV         PC,R12
   DATA        
??Subroutine2_0:
   DC32        i2cswitchSetBus
        CFI EndBlock cfiBlock9

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock10 Using cfiCommon0
        CFI NoFunction
   CODE32      
i2cmasterProbe??rA:
   LDR         R12,??Subroutine3_0  ;; i2cmasterProbe
   MOV         PC,R12
   DATA        
??Subroutine3_0:
   DC32        i2cmasterProbe
        CFI EndBlock cfiBlock10

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock11 Using cfiCommon0
        CFI NoFunction
   CODE32      
i2cswitchDisable??rA:
   LDR         R12,??Subroutine4_0  ;; i2cswitchDisable
   MOV         PC,R12
   DATA        
??Subroutine4_0:
   DC32        i2cswitchDisable
        CFI EndBlock cfiBlock11

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock12 Using cfiCommon0
        CFI NoFunction
   CODE32      
i2cportSet??rA:
   LDR         R12,??Subroutine5_0  ;; i2cportSet
   MOV         PC,R12
   DATA        
??Subroutine5_0:
   DC32        i2cportSet
        CFI EndBlock cfiBlock12

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock13 Using cfiCommon0
        CFI NoFunction
   CODE32      
i2cportClear??rA:
   LDR         R12,??Subroutine6_0  ;; i2cportClear
   MOV         PC,R12
   DATA        
??Subroutine6_0:
   DC32        i2cportClear
        CFI EndBlock cfiBlock13

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock14 Using cfiCommon0
        CFI NoFunction
   CODE32      
clicharGetOutputBuffer??rA:
   LDR         R12,??Subroutine7_0  ;; clicharGetOutputBuffer
   MOV         PC,R12
   DATA        
??Subroutine7_0:
   DC32        clicharGetOutputBuffer
        CFI EndBlock cfiBlock14

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock15 Using cfiCommon0
        CFI NoFunction
   CODE32      
atoi??rA:
   LDR         R12,??Subroutine8_0  ;; atoi
   MOV         PC,R12
   DATA        
??Subroutine8_0:
   DC32        atoi
        CFI EndBlock cfiBlock15

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock16 Using cfiCommon0
        CFI NoFunction
   CODE32      
sprintf??rA:
   LDR         R12,??Subroutine9_0  ;; sprintf
   MOV         PC,R12
   DATA        
??Subroutine9_0:
   DC32        sprintf
        CFI EndBlock cfiBlock16

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock17 Using cfiCommon0
        CFI NoFunction
   CODE32      
clicharSendOutputBuffer??rA:
   LDR         R12,??Subroutine10_0  ;; clicharSendOutputBuffer
   MOV         PC,R12
   DATA        
??Subroutine10_0:
   DC32        clicharSendOutputBuffer
        CFI EndBlock cfiBlock17

        RSEG INITTAB:CODE:ROOT(2)
   DATA
?init?tab?DATA_Z:
   DCD      sfe(DATA_Z) - sfb(DATA_Z), sfb(DATA_Z), sfb(DATA_Z)

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "sfp">`:
        DC8 "sfp"

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "sfp [probe | (-)enabl...">`:
        DC8 73H, 66H, 70H, 20H, 5BH, 70H, 72H, 6FH
        DC8 62H, 65H, 20H, 7CH, 20H, 28H, 2DH, 29H
        DC8 65H, 6EH, 61H, 62H, 6CH, 65H, 20H, 7CH
        DC8 20H, 28H, 2DH, 29H, 74H, 78H, 65H, 6EH
        DC8 61H, 62H, 6CH, 65H, 5DH, 20H, 5BH, 62H
        DC8 75H, 73H, 20H, 6EH, 75H, 6DH, 62H, 65H
        DC8 72H, 20H, 30H, 2DH, 33H, 5DH, 0
        DC8 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "enable: channel [%d] ...">`:
        DC8 "enable: channel [%d] enabled\012"
        DC8 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "enable: channel [%d] ...">_1`:
        DC8 "enable: channel [%d] disabled\012"
        DC8 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "enable: channel [%d] ...">_2`:
        DC8 "enable: channel [%d] not found\012"

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "probe: found SFP on b...">`:
        DC8 "probe: found SFP on bus [%d]\012"
        DC8 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "probe: error SFP not ...">`:
        DC8 "probe: error SFP not found on bus [%d]\012"

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "txdisable: channel [%...">`:
        DC8 "txdisable: channel [%d] tx disabled\012"
        DC8 0, 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "txdisable: channel [%...">_1`:
        DC8 "txdisable: channel [%d] tx enabled\012"

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "txenable: channel [%d...">`:
        DC8 "txenable: channel [%d] not found\012"
        DC8 0, 0

        END
// 
// 1 124 bytes in segment CODE
//   340 bytes in segment DATA_C
//    16 bytes in segment DATA_Z
//    12 bytes in segment INITTAB
// 
// 964 bytes of CODE  memory (+ 172 bytes shared)
// 340 bytes of CONST memory
//  16 bytes of DATA  memory
//
//Errors: none
//Warnings: none
