//////////////////////////////////////////////////////////////////////////////
//                                                                           /
// IAR ARM ANSI C/C++ Compiler V4.11A/W32              20/Jul/2004  18:58:52 /
// Copyright 1999-2004 IAR Systems. All rights reserved.                     /
//                                                                           /
//    Cpu mode        =  arm                                                 /
//    Endian          =  little                                              /
//    Stack alignment =  4                                                   /
//    Source file     =  C:\medusa\i2cport.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\i2cport.c      /
//    List file       =  C:\medusa\Debug\List\i2cport.s79                    /
//                                                                           /
//                                                                           /
//////////////////////////////////////////////////////////////////////////////

        NAME i2cport

        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)

        PUBWEAK `?*?DATA_ID`
??DataTable0 EQU 0
??DataTable1 EQU 0
??DataTable10 EQU 0
??DataTable2 EQU 0
??DataTable3 EQU 0
??DataTable4 EQU 0
??DataTable5 EQU 0
??DataTable6 EQU 0
??DataTable7 EQU 0
??DataTable8 EQU 0
        PUBWEAK ?init?tab?DATA_I
        PUBWEAK ?init?tab?DATA_Z
        MULTWEAK cliRegisterCommand??rA
        MULTWEAK clicharGetOutputBuffer??rA
        MULTWEAK clicharSendOutputBuffer??rA
        MULTWEAK i2cmasterGet??rA
        MULTWEAK i2cmasterProbe??rA
        MULTWEAK i2cmasterReceive??rA
        MULTWEAK i2cmasterSendMult??rA
        MULTWEAK i2cmasterSendOne??rA
        PUBLIC i2cportAssign
        FUNCTION i2cportAssign,0203H
        LOCFRAME CSTACK, 12, STACK
        PUBLIC i2cportClear
        FUNCTION i2cportClear,0203H
        LOCFRAME CSTACK, 16, STACK
        PUBLIC i2cportDirConfig
        FUNCTION i2cportDirConfig,0203H
        LOCFRAME CSTACK, 12, STACK
        PUBLIC i2cportGet
        FUNCTION i2cportGet,0203H
        LOCFRAME CSTACK, 12, STACK
        FUNCTION i2cportHandler,0603H
        LOCFRAME CSTACK, 36, STACK
        PUBLIC i2cportInit
        FUNCTION i2cportInit,0203H
        LOCFRAME CSTACK, 12, STACK
        PUBLIC i2cportSet
        FUNCTION i2cportSet,0203H
        LOCFRAME CSTACK, 16, STACK
        FUNCTION readConfig,0203H
        LOCFRAME CSTACK, 24, STACK
        MULTWEAK sprintf??rA
        MULTWEAK strtol??rA
        FUNCTION writeConfig,0203H
        LOCFRAME CSTACK, 16, STACK
        
        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
        
cliRegisterCommand  SYMBOL "cliRegisterCommand"
clicharGetOutputBuffer SYMBOL "clicharGetOutputBuffer"
clicharSendOutputBuffer SYMBOL "clicharSendOutputBuffer"
i2cmasterGet        SYMBOL "i2cmasterGet"
i2cmasterProbe      SYMBOL "i2cmasterProbe"
i2cmasterReceive    SYMBOL "i2cmasterReceive"
i2cmasterSendMult   SYMBOL "i2cmasterSendMult"
i2cmasterSendOne    SYMBOL "i2cmasterSendOne"
sprintf             SYMBOL "sprintf"
strtol              SYMBOL "strtol"
cliRegisterCommand??rA SYMBOL "??rA", cliRegisterCommand
clicharGetOutputBuffer??rA SYMBOL "??rA", clicharGetOutputBuffer
clicharSendOutputBuffer??rA SYMBOL "??rA", clicharSendOutputBuffer
i2cmasterGet??rA    SYMBOL "??rA", i2cmasterGet
i2cmasterProbe??rA  SYMBOL "??rA", i2cmasterProbe
i2cmasterReceive??rA SYMBOL "??rA", i2cmasterReceive
i2cmasterSendMult??rA SYMBOL "??rA", i2cmasterSendMult
i2cmasterSendOne??rA SYMBOL "??rA", i2cmasterSendOne
sprintf??rA         SYMBOL "??rA", sprintf
strtol??rA          SYMBOL "??rA", strtol

        EXTERN cliRegisterCommand
        FUNCTION cliRegisterCommand,0202H
        EXTERN clicharGetOutputBuffer
        FUNCTION clicharGetOutputBuffer,0202H
        EXTERN clicharSendOutputBuffer
        FUNCTION clicharSendOutputBuffer,0202H
        EXTERN i2cmasterGet
        FUNCTION i2cmasterGet,0202H
        EXTERN i2cmasterProbe
        FUNCTION i2cmasterProbe,0202H
        EXTERN i2cmasterReceive
        FUNCTION i2cmasterReceive,0202H
        EXTERN i2cmasterSendMult
        FUNCTION i2cmasterSendMult,0202H
        EXTERN i2cmasterSendOne
        FUNCTION i2cmasterSendOne,0202H
        EXTERN sprintf
        FUNCTION sprintf,010202H
        EXTERN strtol
        FUNCTION strtol,010202H


        RSEG DATA_I:DATA:SORT:NOROOT(0)
slaveAddr:
        DS8 2
	REQUIRE `?<Initializer for slaveAddr>`

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
outputShadow:
        DS8 4

        RSEG DATA_Z:DATA:SORT:NOROOT(2)
busWriteData:
        DS8 4

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock0 Using cfiCommon0
        CFI Function writeConfig
   CODE32      
writeConfig:
   STMDB       SP!,{R4-R6,LR}     ;; Push
        CFI ?RET Frame(CFA, -4)
        CFI R6 Frame(CFA, -8)
        CFI R5 Frame(CFA, -12)
        CFI R4 Frame(CFA, -16)
        CFI CFA R13+16
   MOV         R4,R0
   MOV         R5,R1
   MOV         R6,R2
   LDR         R0,??writeConfig_0  ;; busWriteData
   STRB        R5,[R0, #+0]
   LDR         R1,??writeConfig_0  ;; busWriteData
   MOV         R2,R6
   STRB        R2,[R1, #+1]
   LDR         R3,??writeConfig_0  ;; busWriteData
   MOV         R6,R6, LSL #+16
   MOVS        R6,R6, LSR #+16
   MOV         R12,R6, LSR #+8
   STRB        R12,[R3, #+2]
   MOV         R3,#+0x1
   MOV         R2,#+0x3
   LDR         R1,??writeConfig_0  ;; busWriteData
   LDR         LR,??DataTable11   ;; slaveAddr
   LDRB        R0,[R4, +LR]
   _BLF        i2cmasterSendMult,i2cmasterSendMult??rA
   LDMIA       SP!,{R4-R6,PC}     ;; return
   DATA        
??writeConfig_0:
   DC32        busWriteData
        CFI EndBlock cfiBlock0

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock1 Using cfiCommon0
        CFI Function readConfig
   CODE32      
readConfig:
   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
   SUB         SP,SP,#+0x4
        CFI CFA R13+24
   MOV         R4,R0
   MOV         R5,R1
   MOV         R6,R2
   CMP         R6,#+0x0
   BNE         ??readConfig_0
   MVN         R0,#+0x0
   B           ??readConfig_1
??readConfig_0:
   MOV         R2,#+0x0
   MOV         R1,R5
   ANDS        R1,R1,#+0xFF       ;; Zero extend
   LDR         R0,??DataTable11   ;; slaveAddr
   LDRB        R0,[R4, +R0]
   _BLF        i2cmasterSendOne,i2cmasterSendOne??rA
   MOV         R7,R0
   CMN         R7,#+0x1
   BEQ         ??readConfig_2
   MOV         R2,#+0x1
   MOV         R1,#+0x2
   LDR         R3,??DataTable11   ;; slaveAddr
   LDRB        R0,[R4, +R3]
   _BLF        i2cmasterReceive,i2cmasterReceive??rA
   MOV         R7,R0
??readConfig_2:
   CMN         R7,#+0x1
   BEQ         ??readConfig_3
   MOV         R1,SP
   ADD         R0,SP,#+0x1
   _BLF        i2cmasterGet,i2cmasterGet??rA
   MOV         R7,R0
??readConfig_3:
   LDRB        R2,[SP, #+0]
   ANDS        R2,R2,#+0xFF       ;; Zero extend
   STRH        R2,[R6, #+0]
   CMN         R7,#+0x1
   BEQ         ??readConfig_4
   MOV         R1,SP
   ADD         R0,SP,#+0x1
   _BLF        i2cmasterGet,i2cmasterGet??rA
   MOV         R7,R0
??readConfig_4:
   LDRB        LR,[SP, #+0]
   ANDS        LR,LR,#+0xFF       ;; Zero extend
   LDRH        R0,[R6, #+0]
   ORR         R0,R0,LR, LSL #+8
   STRH        R0,[R6, #+0]
   MOV         R0,R7
??readConfig_1:
   ADD         SP,SP,#+0x4        ;; stack cleaning
        CFI CFA R13+20
   LDMIA       SP!,{R4-R7,PC}     ;; return
        CFI EndBlock cfiBlock1

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock2 Using cfiCommon0
        CFI Function i2cportInit
   CODE32      
i2cportInit:
   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         R0,#+0x0
   MOV         R5,R0
   LDR         R2,??i2cportInit_0  ;; `?<Constant "i2cport [in] [out <16...">`
   LDR         R1,??i2cportInit_0+4  ;; i2cportHandler
   LDR         R0,??i2cportInit_0+8  ;; `?<Constant "i2cport">`
   _BLF        cliRegisterCommand,cliRegisterCommand??rA
   MOV         R1,#+0x0
   MOV         R4,R1
??i2cportInit_1:
   CMP         R4,#+0x2
   BGE         ??i2cportInit_2
   MOV         R2,#+0x2
   LDR         R3,??DataTable9    ;; outputShadow
   MLAS        R12,R2,R4,R3
   MOV         LR,#+0x0
   STRH        LR,[R12, #+0]
   ADDS        R4,R4,#+0x1
   B           ??i2cportInit_1
??i2cportInit_2:
   MOV         R0,#+0x0
   MOV         R4,R0
??i2cportInit_3:
   CMP         R5,#+0x0
   BNE         ??i2cportInit_4
   CMP         R4,#+0x2
   BGE         ??i2cportInit_4
   LDR         R1,??DataTable11   ;; slaveAddr
   LDRB        R0,[R4, +R1]
   _BLF        i2cmasterProbe,i2cmasterProbe??rA
   MOV         R5,R0
   ADDS        R4,R4,#+0x1
   B           ??i2cportInit_3
??i2cportInit_4:
   MOV         R0,R5
   LDMIA       SP!,{R4,R5,PC}     ;; return
   DATA        
??i2cportInit_0:
   DC32        `?<Constant "i2cport [in] [out <16...">`
   DC32        i2cportHandler
   DC32        `?<Constant "i2cport">`
        CFI EndBlock cfiBlock2

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock3 Using cfiCommon0
        CFI Function i2cportDirConfig
   CODE32      
i2cportDirConfig:
   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         R5,R1
   MOV         R2,R5
   MOV         R2,R2, LSL #+16
   MOVS        R2,R2, LSR #+16
   MOV         R1,#+0x6
   MOV         R0,R4
   BL          writeConfig
   LDMIA       SP!,{R4,R5,PC}     ;; return
        CFI EndBlock cfiBlock3

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock4 Using cfiCommon0
        CFI Function i2cportAssign
   CODE32      
i2cportAssign:
   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         R5,R1
   MOV         R0,#+0x2
   LDR         R1,??DataTable9    ;; outputShadow
   MLAS        R2,R0,R4,R1
   STRH        R5,[R2, #+0]
   MOV         R2,R5
   MOV         R2,R2, LSL #+16
   MOVS        R2,R2, LSR #+16
   MOV         R1,#+0x2
   MOV         R0,R4
   BL          writeConfig
   LDMIA       SP!,{R4,R5,PC}     ;; return
        CFI EndBlock cfiBlock4

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock5 Using cfiCommon0
        CFI Function i2cportSet
   CODE32      
i2cportSet:
   STMDB       SP!,{R4-R6,LR}     ;; Push
        CFI ?RET Frame(CFA, -4)
        CFI R6 Frame(CFA, -8)
        CFI R5 Frame(CFA, -12)
        CFI R4 Frame(CFA, -16)
        CFI CFA R13+16
   MOV         R4,R0
   MOV         R5,R1
   MOV         R0,#+0x2
   LDR         R1,??DataTable9    ;; outputShadow
   MLAS        R2,R0,R4,R1
   LDRH        R3,[R2, #+0]
   MOV         R6,R3
   ORRS        R6,R6,R5
   MOV         R12,#+0x2
   LDR         LR,??DataTable9    ;; outputShadow
   MLAS        R0,R12,R4,LR
   STRH        R6,[R0, #+0]
   MOV         R2,R6
   MOV         R2,R2, LSL #+16
   MOVS        R2,R2, LSR #+16
   MOV         R1,#+0x2
   MOV         R0,R4
   BL          writeConfig
   LDMIA       SP!,{R4-R6,PC}     ;; return
        CFI EndBlock cfiBlock5

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock6 Using cfiCommon0
        CFI Function i2cportClear
   CODE32      
i2cportClear:
   STMDB       SP!,{R4-R6,LR}     ;; Push
        CFI ?RET Frame(CFA, -4)
        CFI R6 Frame(CFA, -8)
        CFI R5 Frame(CFA, -12)
        CFI R4 Frame(CFA, -16)
        CFI CFA R13+16
   MOV         R4,R0
   MOV         R5,R1
   MOV         R0,#+0x2
   LDR         R1,??DataTable9    ;; outputShadow
   MLAS        R2,R0,R4,R1
   LDRH        R3,[R2, #+0]
   MOV         R6,R3
   MOV         R12,R5
   MOV         R12,R12, LSL #+16
   MOVS        R12,R12, LSR #+16
   MVN         LR,R12
   ANDS        R6,R6,LR
   MOV         R0,#+0x2
   LDR         R1,??DataTable9    ;; outputShadow
   MLAS        R2,R0,R4,R1
   STRH        R6,[R2, #+0]
   MOV         R2,R6
   MOV         R2,R2, LSL #+16
   MOVS        R2,R2, LSR #+16
   MOV         R1,#+0x2
   MOV         R0,R4
   BL          writeConfig
   LDMIA       SP!,{R4-R6,PC}     ;; return
        CFI EndBlock cfiBlock6

        RSEG CODE:CODE:NOROOT(2)
   DATA        
??DataTable9:
   DC32        outputShadow

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock7 Using cfiCommon0
        CFI Function i2cportGet
   CODE32      
i2cportGet:
   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         R5,R1
   MOV         R2,R5
   MOV         R1,#+0x0
   MOV         R0,R4
   BL          readConfig
   LDMIA       SP!,{R4,R5,PC}     ;; return
        CFI EndBlock cfiBlock7

        RSEG CODE:CODE:NOROOT(2)
        CFI Block cfiBlock8 Using cfiCommon0
        CFI Function i2cportHandler
   CODE32      
i2cportHandler:
   STMDB       SP!,{R4-R8,LR}     ;; Push
        CFI ?RET Frame(CFA, -4)
        CFI R8 Frame(CFA, -8)
        CFI R7 Frame(CFA, -12)
        CFI R6 Frame(CFA, -16)
        CFI R5 Frame(CFA, -20)
        CFI R4 Frame(CFA, -24)
        CFI CFA R13+24
   SUB         SP,SP,#+0xC
        CFI CFA R13+36
   MOV         R5,R0
   MOV         R6,R1
   MOV         R7,R2
   MVN         R0,#+0x0
   MOV         R8,R0
   ADD         R0,SP,#+0x4
   _BLF        clicharGetOutputBuffer,clicharGetOutputBuffer??rA
   MOV         R4,R0
   CMP         R5,#+0x2
   BGE         ??i2cportHandler_0
   MVN         R0,#+0x0
   B           ??i2cportHandler_1
??i2cportHandler_0:
   LDR         R1,[R6, #+4]
   LDRB        R2,[R1, #+0]
   ANDS        R2,R2,#+0xFF       ;; Zero extend
   CMP         R2,#+0x69
   BEQ         ??i2cportHandler_2
   CMP         R2,#+0x6F
   BEQ         ??i2cportHandler_3
   B           ??i2cportHandler_4
??i2cportHandler_2:
   MOV         R1,SP
   MOV         R0,#+0x0
   BL          i2cportGet
   CMP         R0,#+0x0
   BNE         ??i2cportHandler_5
   LDRH        R2,[SP, #+0]
   MOV         R2,R2, LSL #+16
   MOVS        R2,R2, LSR #+16
   LDR         R1,??i2cportHandler_6  ;; `?<Constant "i2cport: port 0 [%04X]\\n">`
   MOV         R0,R4
   _BLF        sprintf,sprintf??rA
   MOV         LR,#+0x0
   MOV         R8,LR
   B           ??i2cportHandler_7
??i2cportHandler_5:
   LDR         R0,??DataTable11   ;; slaveAddr
   LDRB        R2,[R0, #+0]
   ANDS        R2,R2,#+0xFF       ;; Zero extend
   LDR         R1,??i2cportHandler_6+4  ;; `?<Constant "i2cport: error readin...">`
   MOV         R0,R4
   _BLF        sprintf,sprintf??rA
??i2cportHandler_7:
   LDR         R1,[SP, #+4]
   MOV         R0,R4
   _BLF        clicharSendOutputBuffer,clicharSendOutputBuffer??rA
   B           ??i2cportHandler_4
??i2cportHandler_3:
   MOV         R2,#+0x10
   MOV         R1,#+0x0
   LDR         R0,[R6, #+8]
   _BLF        strtol,strtol??rA
   STRH        R0,[SP, #+0]
   LDRH        R1,[SP, #+0]
   MOV         R0,#+0x1
   BL          i2cportAssign
   CMP         R0,#+0x0
   BNE         ??i2cportHandler_8
   LDRH        R2,[SP, #+0]
   MOV         R2,R2, LSL #+16
   MOVS        R2,R2, LSR #+16
   LDR         R1,??i2cportHandler_6+8  ;; `?<Constant "i2cport: port 1 <-- [...">`
   MOV         R0,R4
   _BLF        sprintf,sprintf??rA
   MOV         LR,#+0x0
   MOV         R8,LR
   B           ??i2cportHandler_9
??i2cportHandler_8:
   LDR         R0,??DataTable11   ;; slaveAddr
   LDRB        R2,[R0, #+1]
   ANDS        R2,R2,#+0xFF       ;; Zero extend
   LDR         R1,??i2cportHandler_6+12  ;; `?<Constant "i2cport: error writin...">`
   MOV         R0,R4
   _BLF        sprintf,sprintf??rA
??i2cportHandler_9:
   LDR         R1,[SP, #+4]
   MOV         R0,R4
   _BLF        clicharSendOutputBuffer,clicharSendOutputBuffer??rA
??i2cportHandler_4:
   MOV         R0,R8
??i2cportHandler_1:
   ADD         SP,SP,#+0xC        ;; stack cleaning
        CFI CFA R13+24
   LDMIA       SP!,{R4-R8,PC}     ;; return
   DATA        
??i2cportHandler_6:
   DC32        `?<Constant "i2cport: port 0 [%04X]\\n">`
   DC32        `?<Constant "i2cport: error readin...">`
   DC32        `?<Constant "i2cport: port 1 <-- [...">`
   DC32        `?<Constant "i2cport: error writin...">`
        CFI EndBlock cfiBlock8

        RSEG CODE:CODE:NOROOT(2)
   DATA        
??DataTable11:
   DC32        slaveAddr

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

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

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

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

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

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

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

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

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

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

        RSEG DATA_ID:CONST:SORT:NOROOT(0)
`?<Initializer for slaveAddr>`:
        DC8 64, 72

        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_ID:CONST:SORT:NOROOT(2)
`?*?DATA_ID`:

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

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

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "i2cport [in] [out <16...">`:
        DC8 "i2cport [in] [out <16-bit hex value>]"
        DC8 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "i2cport: port 0 [%04X]\\n">`:
        DC8 "i2cport: port 0 [%04X]\012"

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "i2cport: error readin...">`:
        DC8 "i2cport: error reading port 0 addr[%02X]\012"
        DC8 0, 0

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "i2cport: port 1 <-- [...">`:
        DC8 "i2cport: port 1 <-- [%04X]\012"

        RSEG DATA_C:CONST:SORT:NOROOT(2)
`?<Constant "i2cport: error writin...">`:
        DC8 "i2cport: error writing port 1 addr[%02X]\012"
        DC8 0, 0

        END
// 
// 1 172 bytes in segment CODE
//   188 bytes in segment DATA_C
//     2 bytes in segment DATA_I
//     2 bytes in segment DATA_ID
//     8 bytes in segment DATA_Z
//    24 bytes in segment INITTAB
// 
// 1 052 bytes of CODE  memory (+ 144 bytes shared)
//   190 bytes of CONST memory
//    10 bytes of DATA  memory
//
//Errors: none
//Warnings: 1
