        radix   dec
        ; Code bank 0; Start address: 0; End address: 1023
        org     0

        ; Define start addresses for data regions
shared___globals equ 32
__indf equ 0
__pcl equ 2
__status equ 3
__fsr equ 4
__c___byte equ 3
__c___bit equ 0
__z___byte equ 3
__z___bit equ 2
__rp0___byte equ 3
__rp0___bit equ 5
__rp1___byte equ 3
__rp1___bit equ 6
__irp___byte equ 3
__irp___bit equ 7
__pclath equ 10
__cb0___byte equ 10
__cb0___bit equ 3
__cb1___byte equ 10
__cb1___bit equ 4

        ; # Copyright (c) 2004 by Wayne C. Gramlich
        ; # All rights reserved.

        ; buffer = 'servo4'
        ; line_number = 6
        ; library _pic16f676 entered
        ; # Copyright (c) 2004 by Wayne C. Gramlich
        ; # All rights reserved.

        ; buffer = '_pic16f676'
        ; line_number = 5
        ; processor pic16f676
        ; line_number = 6
        ; configure_address 0x2007
        ; line_number = 7
        ;  configure_fill 0x0000
        ; line_number = 8
        ;  configure_option bg: bg11 = 0x3000
        ; line_number = 9
        ;  configure_option bg: bg10 = 0x2000
        ; line_number = 10
        ;  configure_option bg: bg01 = 0x1000
        ; line_number = 11
        ;  configure_option bg: bg00 = 0x0000
        ; line_number = 12
        ;  configure_option cpd: on = 0x000
        ; line_number = 13
        ;  configure_option cpd: off = 0x100
        ; line_number = 14
        ;  configure_option cp: on = 0x00
        ; line_number = 15
        ;  configure_option cp: off = 0x80
        ; line_number = 16
        ;  configure_option boden: on = 0x40
        ; line_number = 17
        ;  configure_option boden: off = 0x00
        ; line_number = 18
        ;  configure_option mclre: on = 0x20
        ; line_number = 19
        ;  configure_option mclre: off = 0x00
        ; line_number = 20
        ;  configure_option pwrte: on = 0x00
        ; line_number = 21
        ;  configure_option pwrte: off = 0x10
        ; line_number = 22
        ;  configure_option wdte: on = 8
        ; line_number = 23
        ;  configure_option wdte: off = 0
        ; line_number = 24
        ;  configure_option fosc: rc_clk = 7
        ; line_number = 25
        ;  configure_option fosc: rc_no_clk = 6
        ; line_number = 26
        ;  configure_option fosc: int_clk = 5
        ; line_number = 27
        ;  configure_option fosc: int_no_clk = 4
        ; line_number = 28
        ;  configure_option fosc: ec = 3
        ; line_number = 29
        ;  configure_option fosc: hs = 2
        ; line_number = 30
        ;  configure_option fosc: xt = 1
        ; line_number = 31
        ;  configure_option fosc: lp = 0
        ; line_number = 32
        ;  code_bank 0x0 : 0x3ff
        ; line_number = 33
        ;  data_bank 0x0 : 0x7f
        ; line_number = 34
        ;  data_bank 0x80 : 0xff
        ; line_number = 35
        ;  shared_region 0x20 : 0x5f
        ; line_number = 36
        ;  interrupts_possible
        ; line_number = 37
        ;  osccal_register_symbol _osccal
        ; line_number = 38
        ;  osccal_at_address 0x3ff
        ; line_number = 39
        ;  packages pdip=14, soic=14, tssop=14
        ; line_number = 40
        ;  pin vdd, power_supply
        ; line_number = 41
        ; pin_bindings pdip=1, soic=1, tssop=1
        ; line_number = 42
        ; pin ra5_in, ra5_out, t1cki, osc1, clkin
        ; line_number = 43
        ; pin_bindings pdip=2, soic=2, tssop=2
        ; line_number = 44
        ;  bind_to _porta@5
        ; line_number = 45
        ;  or_if ra5_in _trisa 16
        ; line_number = 46
        ;  or_if ra5_out _trisa 0
        ; line_number = 47
        ; pin ra4_in, ra4_out, t1g, osc2, an3, clkout
        ; line_number = 48
        ; pin_bindings pdip=3, soic=3, tssop=3
        ; line_number = 49
        ;  bind_to _porta@4
        ; line_number = 50
        ;  or_if ra4_in _trisa 8
        ; line_number = 51
        ;  or_if ra4_out _trisa 0
        ; line_number = 52
        ;  or_if an3 _trisa 8
        ; line_number = 53
        ;  or_if an3 _ansel 8
        ; line_number = 54
        ;  or_if an3 _adcon0 1
        ; line_number = 55
        ; pin ra3_in, mclr, vpp
        ; line_number = 56
        ; pin_bindings pdip=4, soic=4, tssop=4
        ; line_number = 57
        ;  bind_to _porta@4
        ; line_number = 58
        ;  or_if ra3_in _trisa 4
        ; line_number = 59
        ; pin rc5_in, rc5_out
        ; line_number = 60
        ; pin_bindings pdip=5, soic=5, tssop=5
        ; line_number = 61
        ;  bind_to _portc@5
        ; line_number = 62
        ;  or_if rc5_in _trisc 32
        ; line_number = 63
        ;  or_if rc5_out _trisc 0
        ; line_number = 64
        ; pin rc4_in, rc4_out
        ; line_number = 65
        ; pin_bindings pdip=6, soic=6, tssop=6
        ; line_number = 66
        ;  bind_to _portc@4
        ; line_number = 67
        ;  or_if rc4_in _trisc 16
        ; line_number = 68
        ;  or_if rc4_out _trisc 0
        ; line_number = 69
        ; pin rc3_in, rc3_out, an7
        ; line_number = 70
        ; pin_bindings pdip=7, soic=7, tssop=7
        ; line_number = 71
        ;  bind_to _portc@3
        ; line_number = 72
        ;  or_if rc3_in _trisc 8
        ; line_number = 73
        ;  or_if rc3_out _trisc 0
        ; line_number = 74
        ;  or_if an7 _trisc 8
        ; line_number = 75
        ;  or_if an7 _ansel 128
        ; line_number = 76
        ;  or_if an7 _adcon0 1
        ; line_number = 77
        ; pin rc2_in, rc2_out, an6
        ; line_number = 78
        ; pin_bindings pdip=8, soic=8, tssop=8
        ; line_number = 79
        ;  bind_to _portc@2
        ; line_number = 80
        ;  or_if rc2_in _trisc 4
        ; line_number = 81
        ;  or_if rc2_out _trisc 0
        ; line_number = 82
        ;  or_if an6 _trisc 4
        ; line_number = 83
        ;  or_if an6 _ansel 64
        ; line_number = 84
        ;  or_if an6 _adcon0 1
        ; line_number = 85
        ; pin rc1_in, rc1_out, an5
        ; line_number = 86
        ; pin_bindings pdip=9, soic=9, tssop=9
        ; line_number = 87
        ;  bind_to _portc@1
        ; line_number = 88
        ;  or_if rc1_in _trisc 2
        ; line_number = 89
        ;  or_if rc1_out _trisc 0
        ; line_number = 90
        ;  or_if an5 _trisc 2
        ; line_number = 91
        ;  or_if an5 _ansel 32
        ; line_number = 92
        ;  or_if an5 _adcon0 1
        ; line_number = 93
        ; pin rc0_in, rc0_out, an4
        ; line_number = 94
        ; pin_bindings pdip=10, soic=10, tssop=10
        ; line_number = 95
        ;  bind_to _portc@0
        ; line_number = 96
        ;  or_if rc0_in _trisc 1
        ; line_number = 97
        ;  or_if rc0_out _trisc 0
        ; line_number = 98
        ;  or_if an4 _trisc 1
        ; line_number = 99
        ;  or_if an4 _ansel 16
        ; line_number = 100
        ;  or_if an4 _adcon0 1
        ; line_number = 101
        ; pin ra2_in, ra2_out, an2, cout, t0cki, int
        ; line_number = 102
        ; pin_bindings pdip=11, soic=11, tssop=11
        ; line_number = 103
        ;  bind_to _porta@2
        ; line_number = 104
        ;  or_if ra2_in _trisa 4
        ; line_number = 105
        ;  or_if ra2_out _trisa 0
        ; line_number = 106
        ;  or_if an2 _trisa 4
        ; line_number = 107
        ;  or_if an2 _ansel 4
        ; line_number = 108
        ;  or_if an2 _adcon0 1
        ; line_number = 109
        ; pin ra1_in, ra1_out, an1, cin_minus, vref, icspclk
        ; line_number = 110
        ; pin_bindings pdip=12, soic=12, tssop=12
        ; line_number = 111
        ;  bind_to _porta@1
        ; line_number = 112
        ;  or_if ra1_in _trisa 2
        ; line_number = 113
        ;  or_if ra1_out _trisa 0
        ; line_number = 114
        ;  or_if an1 _trisa 2
        ; line_number = 115
        ;  or_if an1 _ansel 2
        ; line_number = 116
        ;  or_if an1 _adcon0 1
        ; line_number = 117
        ; pin ra0_in, ra0_out, an0, cin_plus, icspdat
        ; line_number = 118
        ; pin_bindings pdip=13, soic=13, tssop=13
        ; line_number = 119
        ;  bind_to _porta@0
        ; line_number = 120
        ;  or_if ra0_in _trisa 1
        ; line_number = 121
        ;  or_if ra0_out _trisa 0
        ; line_number = 122
        ;  or_if an0 _trisa 1
        ; line_number = 123
        ;  or_if an0 _ansel 1
        ; line_number = 124
        ;  or_if an0 _adcon0 1
        ; line_number = 125
        ; pin vss, ground
        ; line_number = 126
        ; pin_bindings pdip=14, soic=14, tssop=14


        ; line_number = 131
        ; library _pic16f630_676 entered
        ; # Copyright (c) 2004 by Wayne C. Gramlich
        ; # All rights reserved.

        ; # Shared register definitions for the PIC16F630 and PIC16F676.

        ; buffer = '_pic16f630_676'
        ; line_number = 7
        ; register _indf = 
_indf equ 0

        ; line_number = 9
        ; register _tmr0 = 
_tmr0 equ 1

        ; line_number = 11
        ; register _pcl = 
_pcl equ 2

        ; line_number = 13
        ; register _status = 
_status equ 3
        ; line_number = 14
        ; bind _rp0 = _status@5
_rp0___byte equ _status
_rp0___bit equ 5
        ; line_number = 15
        ; bind _to = _status@4
_to___byte equ _status
_to___bit equ 4
        ; line_number = 16
        ; bind _pd = _status@3
_pd___byte equ _status
_pd___bit equ 3
        ; line_number = 17
        ; bind _z = _status@2
_z___byte equ _status
_z___bit equ 2
        ; line_number = 18
        ; bind _dc = _status@1
_dc___byte equ _status
_dc___bit equ 1
        ; line_number = 19
        ; bind _c = _status@0
_c___byte equ _status
_c___bit equ 0

        ; line_number = 21
        ; register _fsr = 
_fsr equ 4

        ; line_number = 23
        ; register _porta = 
_porta equ 5
        ; line_number = 24
        ; register _ra = 
_ra equ 5
        ; line_number = 25
        ; bind _ra5 = _porta@5
_ra5___byte equ _porta
_ra5___bit equ 5
        ; line_number = 26
        ; bind _ra4 = _porta@4
_ra4___byte equ _porta
_ra4___bit equ 4
        ; line_number = 27
        ; bind _ra3 = _porta@3
_ra3___byte equ _porta
_ra3___bit equ 3
        ; line_number = 28
        ; bind _ra2 = _porta@2
_ra2___byte equ _porta
_ra2___bit equ 2
        ; line_number = 29
        ; bind _ra1 = _porta@1
_ra1___byte equ _porta
_ra1___bit equ 1
        ; line_number = 30
        ; bind _ra0 = _porta@0
_ra0___byte equ _porta
_ra0___bit equ 0

        ; line_number = 32
        ; register _portc = 
_portc equ 7
        ; line_number = 33
        ; register _rc = 
_rc equ 7
        ; line_number = 34
        ; bind _rc5 = _portc@5
_rc5___byte equ _portc
_rc5___bit equ 5
        ; line_number = 35
        ; bind _rc4 = _portc@4
_rc4___byte equ _portc
_rc4___bit equ 4
        ; line_number = 36
        ; bind _rc3 = _portc@3
_rc3___byte equ _portc
_rc3___bit equ 3
        ; line_number = 37
        ; bind _rc2 = _portc@2
_rc2___byte equ _portc
_rc2___bit equ 2
        ; line_number = 38
        ; bind _rc1 = _portc@1
_rc1___byte equ _portc
_rc1___bit equ 1
        ; line_number = 39
        ; bind _rc0 = _portc@0
_rc0___byte equ _portc
_rc0___bit equ 0

        ; line_number = 41
        ; register _pclath = 
_pclath equ 10

        ; line_number = 43
        ; register _intcon = 
_intcon equ 11
        ; line_number = 44
        ; bind _gie = _intcon@7
_gie___byte equ _intcon
_gie___bit equ 7
        ; line_number = 45
        ; bind _peie = _intcon@6
_peie___byte equ _intcon
_peie___bit equ 6
        ; line_number = 46
        ; bind _t0ie = _intcon@5
_t0ie___byte equ _intcon
_t0ie___bit equ 5
        ; line_number = 47
        ; bind _inte = _intcon@4
_inte___byte equ _intcon
_inte___bit equ 4
        ; line_number = 48
        ; bind _raie = _intcon@3
_raie___byte equ _intcon
_raie___bit equ 3
        ; line_number = 49
        ; bind _t0if = _intcon@2
_t0if___byte equ _intcon
_t0if___bit equ 2
        ; line_number = 50
        ; bind _intf = _intcon@1
_intf___byte equ _intcon
_intf___bit equ 1
        ; line_number = 51
        ; bind _raif = _intcon@0
_raif___byte equ _intcon
_raif___bit equ 0

        ; line_number = 53
        ; register _pir1 = 
_pir1 equ 12
        ; line_number = 54
        ; bind _eeif = _pir1@7
_eeif___byte equ _pir1
_eeif___bit equ 7
        ; line_number = 55
        ; bind _cmif = _pir1@3
_cmif___byte equ _pir1
_cmif___bit equ 3
        ; line_number = 56
        ; bind _tmr1if = _pir1@0
_tmr1if___byte equ _pir1
_tmr1if___bit equ 0

        ; line_number = 58
        ; register _tmr1l = 
_tmr1l equ 14

        ; line_number = 60
        ; register _tmr1h = 
_tmr1h equ 15

        ; line_number = 62
        ; register _t1con = 
_t1con equ 16
        ; line_number = 63
        ; bind _t1ge = _t1con@6
_t1ge___byte equ _t1con
_t1ge___bit equ 6
        ; line_number = 64
        ; bind _t1ckps1 = _t1con@5
_t1ckps1___byte equ _t1con
_t1ckps1___bit equ 5
        ; line_number = 65
        ; bind _t1ckps0 = _t1con@4
_t1ckps0___byte equ _t1con
_t1ckps0___bit equ 4
        ; line_number = 66
        ; bind _t1oscen = _t1con@3
_t1oscen___byte equ _t1con
_t1oscen___bit equ 3
        ; line_number = 67
        ; bind _t1sync = _t1con@2
_t1sync___byte equ _t1con
_t1sync___bit equ 2
        ; line_number = 68
        ; bind _tmr1cs = _t1con@1
_tmr1cs___byte equ _t1con
_tmr1cs___bit equ 1
        ; line_number = 69
        ; bind _tmr1on = _t1con@0
_tmr1on___byte equ _t1con
_tmr1on___bit equ 0

        ; line_number = 71
        ; register _cmcon = 
_cmcon equ 25
        ; line_number = 72
        ; bind _cout = _cmcon@6
_cout___byte equ _cmcon
_cout___bit equ 6
        ; line_number = 73
        ; bind _cinv = _cmcon@4
_cinv___byte equ _cmcon
_cinv___bit equ 4
        ; line_number = 74
        ; bind _cis = _cmcon@3
_cis___byte equ _cmcon
_cis___bit equ 3
        ; line_number = 75
        ; bind _cm2 = _cmcon@2
_cm2___byte equ _cmcon
_cm2___bit equ 2
        ; line_number = 76
        ; bind _cm1 = _cmcon@1
_cm1___byte equ _cmcon
_cm1___bit equ 1
        ; line_number = 77
        ; bind _cm0 = _cmcon@0
_cm0___byte equ _cmcon
_cm0___bit equ 0

        ; # Data bank 1 (0x80-0xff):

        ; line_number = 81
        ; register _option_reg = 
_option_reg equ 128
        ; line_number = 82
        ; bind _rapu = _option_reg@7
_rapu___byte equ _option_reg
_rapu___bit equ 7
        ; line_number = 83
        ; bind _intedg = _option_reg@6
_intedg___byte equ _option_reg
_intedg___bit equ 6
        ; line_number = 84
        ; bind _t0cs = _option_reg@5
_t0cs___byte equ _option_reg
_t0cs___bit equ 5
        ; line_number = 85
        ; bind _t0se = _option_reg@4
_t0se___byte equ _option_reg
_t0se___bit equ 4
        ; line_number = 86
        ; bind _psa = _option_reg@3
_psa___byte equ _option_reg
_psa___bit equ 3
        ; line_number = 87
        ; bind _ps2 = _option_reg@2
_ps2___byte equ _option_reg
_ps2___bit equ 2
        ; line_number = 88
        ; bind _ps1 = _option_reg@1
_ps1___byte equ _option_reg
_ps1___bit equ 1
        ; line_number = 89
        ; bind _ps0 = _option_reg@0
_ps0___byte equ _option_reg
_ps0___bit equ 0

        ; line_number = 91
        ; register _trisa = 
_trisa equ 133
        ; line_number = 92
        ; bind _trisa5 = _trisa@5
_trisa5___byte equ _trisa
_trisa5___bit equ 5
        ; line_number = 93
        ; bind _trisa4 = _trisa@4
_trisa4___byte equ _trisa
_trisa4___bit equ 4
        ; line_number = 94
        ; bind _trisa3 = _trisa@3
_trisa3___byte equ _trisa
_trisa3___bit equ 3
        ; line_number = 95
        ; bind _trisa2 = _trisa@2
_trisa2___byte equ _trisa
_trisa2___bit equ 2
        ; line_number = 96
        ; bind _trisa1 = _trisa@1
_trisa1___byte equ _trisa
_trisa1___bit equ 1
        ; line_number = 97
        ; bind _trisa0 = _trisa@0
_trisa0___byte equ _trisa
_trisa0___bit equ 0

        ; line_number = 99
        ; register _trisc = 
_trisc equ 135
        ; line_number = 100
        ; bind _trisc5 = _trisc@5
_trisc5___byte equ _trisc
_trisc5___bit equ 5
        ; line_number = 101
        ; bind _trisc4 = _trisc@4
_trisc4___byte equ _trisc
_trisc4___bit equ 4
        ; line_number = 102
        ; bind _trisc3 = _trisc@3
_trisc3___byte equ _trisc
_trisc3___bit equ 3
        ; line_number = 103
        ; bind _trisc2 = _trisc@2
_trisc2___byte equ _trisc
_trisc2___bit equ 2
        ; line_number = 104
        ; bind _trisc1 = _trisc@1
_trisc1___byte equ _trisc
_trisc1___bit equ 1
        ; line_number = 105
        ; bind _trisc0 = _trisc@0
_trisc0___byte equ _trisc
_trisc0___bit equ 0

        ; line_number = 107
        ; register _pie1 = 
_pie1 equ 140
        ; line_number = 108
        ; bind _eeie = _pie1@7
_eeie___byte equ _pie1
_eeie___bit equ 7
        ; line_number = 109
        ; bind _adie = _pie1@6
_adie___byte equ _pie1
_adie___bit equ 6
        ; line_number = 110
        ; bind _cmie = _pie1@3
_cmie___byte equ _pie1
_cmie___bit equ 3
        ; line_number = 111
        ; bind _tmr1ie = _pie1@0
_tmr1ie___byte equ _pie1
_tmr1ie___bit equ 0

        ; line_number = 113
        ; register _pcon = 
_pcon equ 142
        ; line_number = 114
        ; bind _por = _pcon@1
_por___byte equ _pcon
_por___bit equ 1
        ; line_number = 115
        ; bind _bor = _pcon@0
_bor___byte equ _pcon
_bor___bit equ 0

        ; line_number = 117
        ; register _osccal = 
_osccal equ 144
        ; line_number = 118
        ; bind _cal5 = _osccal@7
_cal5___byte equ _osccal
_cal5___bit equ 7
        ; line_number = 119
        ; bind _cal4 = _osccal@6
_cal4___byte equ _osccal
_cal4___bit equ 6
        ; line_number = 120
        ; bind _cal3 = _osccal@5
_cal3___byte equ _osccal
_cal3___bit equ 5
        ; line_number = 121
        ; bind _cal2 = _osccal@4
_cal2___byte equ _osccal
_cal2___bit equ 4
        ; line_number = 122
        ; bind _cal1 = _osccal@3
_cal1___byte equ _osccal
_cal1___bit equ 3
        ; line_number = 123
        ; bind _cal0 = _osccal@2
_cal0___byte equ _osccal
_cal0___bit equ 2
        ; line_number = 124
        ; constant _osccal_lsb = 4
_osccal_lsb equ 4

        ; line_number = 126
        ; register _wpua = 
_wpua equ 149
        ; line_number = 127
        ; bind _wpua5 = _wpua@5
_wpua5___byte equ _wpua
_wpua5___bit equ 5
        ; line_number = 128
        ; bind _wpua4 = _wpua@4
_wpua4___byte equ _wpua
_wpua4___bit equ 4
        ; line_number = 129
        ; bind _wpua2 = _wpua@2
_wpua2___byte equ _wpua
_wpua2___bit equ 2
        ; line_number = 130
        ; bind _wpua1 = _wpua@1
_wpua1___byte equ _wpua
_wpua1___bit equ 1
        ; line_number = 131
        ; bind _wpua0 = _wpua@0
_wpua0___byte equ _wpua
_wpua0___bit equ 0

        ; line_number = 133
        ; register _ioca = 
_ioca equ 150
        ; line_number = 134
        ; bind _ioca5 = _ioca@5
_ioca5___byte equ _ioca
_ioca5___bit equ 5
        ; line_number = 135
        ; bind _ioca4 = _ioca@4
_ioca4___byte equ _ioca
_ioca4___bit equ 4
        ; line_number = 136
        ; bind _ioca3 = _ioca@3
_ioca3___byte equ _ioca
_ioca3___bit equ 3
        ; line_number = 137
        ; bind _ioca2 = _ioca@2
_ioca2___byte equ _ioca
_ioca2___bit equ 2
        ; line_number = 138
        ; bind _ioca1 = _ioca@1
_ioca1___byte equ _ioca
_ioca1___bit equ 1
        ; line_number = 139
        ; bind _ioca0 = _ioca@0
_ioca0___byte equ _ioca
_ioca0___bit equ 0

        ; line_number = 141
        ; register _vrcon = 
_vrcon equ 153
        ; line_number = 142
        ; bind _vren = _vrcon@7
_vren___byte equ _vrcon
_vren___bit equ 7
        ; line_number = 143
        ; bind _vrr = _vrcon@5
_vrr___byte equ _vrcon
_vrr___bit equ 5
        ; line_number = 144
        ; bind _vr3 = _vrcon@3
_vr3___byte equ _vrcon
_vr3___bit equ 3
        ; line_number = 145
        ; bind _vr2 = _vrcon@2
_vr2___byte equ _vrcon
_vr2___bit equ 2
        ; line_number = 146
        ; bind _vr1 = _vrcon@1
_vr1___byte equ _vrcon
_vr1___bit equ 1
        ; line_number = 147
        ; bind _vr0 = _vrcon@0
_vr0___byte equ _vrcon
_vr0___bit equ 0

        ; line_number = 149
        ; register _eedata = 
_eedata equ 154

        ; line_number = 151
        ; register _eeadr = 
_eeadr equ 155

        ; line_number = 153
        ; register _eecon1 = 
_eecon1 equ 156
        ; line_number = 154
        ; bind _wrerr = _eecon1@3
_wrerr___byte equ _eecon1
_wrerr___bit equ 3
        ; line_number = 155
        ; bind _wren = _eecon1@2
_wren___byte equ _eecon1
_wren___bit equ 2
        ; line_number = 156
        ; bind _wr = _eecon1@1
_wr___byte equ _eecon1
_wr___bit equ 1
        ; line_number = 157
        ; bind _rd = _eecon1@0
_rd___byte equ _eecon1
_rd___bit equ 0

        ; line_number = 159
        ; register _eecon2 = 
_eecon2 equ 157


        ; buffer = '_pic16f676'
        ; line_number = 131
        ; library _pic16f630_676 exited

        ; # The only difference between the PIC16F676 and the PIC16F630 is that
        ; # the 'F676 has 8 channels of A/D and the 'F630 does not.

        ; line_number = 136
        ; register _adresh = 
_adresh equ 30

        ; # The {_adif} flag is only avaiable for the PIC16F676:
        ; line_number = 139
        ; bind _adif = _pir1@6
_adif___byte equ _pir1
_adif___bit equ 6

        ; line_number = 141
        ; register _adcon0 = 
_adcon0 equ 31
        ; line_number = 142
        ; bind _adfm = _adcon0@7
_adfm___byte equ _adcon0
_adfm___bit equ 7
        ; line_number = 143
        ; bind _vcfg = _adcon0@5
_vcfg___byte equ _adcon0
_vcfg___bit equ 5
        ; line_number = 144
        ; bind _chs2 = _adcon0@4
_chs2___byte equ _adcon0
_chs2___bit equ 4
        ; line_number = 145
        ; bind _chs1 = _adcon0@3
_chs1___byte equ _adcon0
_chs1___bit equ 3
        ; line_number = 146
        ; bind _chs0 = _adcon0@2
_chs0___byte equ _adcon0
_chs0___bit equ 2
        ; line_number = 147
        ; bind _go = _adcon0@1
_go___byte equ _adcon0
_go___bit equ 1
        ; line_number = 148
        ; bind _adon = _adcon0@0
_adon___byte equ _adcon0
_adon___bit equ 0

        ; line_number = 150
        ; register _adsel = 
_adsel equ 145
        ; line_number = 151
        ; bind _ans7 = _adsel@7
_ans7___byte equ _adsel
_ans7___bit equ 7
        ; line_number = 152
        ; bind _ans6 = _adsel@6
_ans6___byte equ _adsel
_ans6___bit equ 6
        ; line_number = 153
        ; bind _ans5 = _adsel@5
_ans5___byte equ _adsel
_ans5___bit equ 5
        ; line_number = 154
        ; bind _ans4 = _adsel@4
_ans4___byte equ _adsel
_ans4___bit equ 4
        ; line_number = 155
        ; bind _ans3 = _adsel@3
_ans3___byte equ _adsel
_ans3___bit equ 3
        ; line_number = 156
        ; bind _ans2 = _adsel@2
_ans2___byte equ _adsel
_ans2___bit equ 2
        ; line_number = 157
        ; bind _ans1 = _adsel@1
_ans1___byte equ _adsel
_ans1___bit equ 1
        ; line_number = 158
        ; bind _ans0 = _adsel@0
_ans0___byte equ _adsel
_ans0___bit equ 0

        ; line_number = 160
        ; register _adresl = 
_adresl equ 158

        ; line_number = 162
        ; register _adcon1 = 
_adcon1 equ 159
        ; line_number = 163
        ; bind _adcs2 = _adcon1@6
_adcs2___byte equ _adcon1
_adcs2___bit equ 6
        ; line_number = 164
        ; bind _adcs1 = _adcon1@5
_adcs1___byte equ _adcon1
_adcs1___bit equ 5
        ; line_number = 165
        ; bind _adcs0 = _adcon1@4
_adcs0___byte equ _adcon1
_adcs0___bit equ 4


        ; buffer = 'servo4'
        ; line_number = 6
        ; library _pic16f676 exited
        ; line_number = 7
        ; library clock4mhz entered
        ; # Copyright (c) 2004 by Wayne C. Gramlich
        ; # All rights reserved.

        ; # This library defines the contstants {clock_rate}, {instruction_rate},
        ; # and {clocks_per_instruction}.

        ; # Define processor constants:
        ; buffer = 'clock4mhz'
        ; line_number = 9
        ; constant clock_rate = 4000000
clock_rate equ 4000000
        ; line_number = 10
        ; constant clocks_per_instruction = 4
clocks_per_instruction equ 4
        ; line_number = 11
        ; constant instruction_rate = clock_rate / clocks_per_instruction
instruction_rate equ 1000000


        ; buffer = 'servo4'
        ; line_number = 7
        ; library clock4mhz exited
        ; line_number = 8
        ; library bit_bang entered
        ; # Copyright (c) 2004 by Wayne C. Gramlich
        ; # All rights reserved.

        ; # This library provides bit bang routines for sending and receiving
        ; # serial data at 2400 baud in 8N1 format (1 start bit, 8 data bits,
        ; # No parity bit, 1 stop stop bit.)
        ; #
        ; # This library requires that the pins {serial_in} and {serial_out}
        ; # be defined.  In addition, the variable {instruction_rate} needs
        ; # to be defined.  Lastly, there needs to be a {delay} procedure
        ; # with an "exact_delay delay_instructions" clause in it.  The {delay}
        ; # routine should invoke "watch_dog_reset" so that the watch dog time
        ; # can be set.

        ; # Define some constants that we will be needing:
        ; buffer = 'bit_bang'
        ; line_number = 17
        ; constant baud_rate = 2400
baud_rate equ 2400
        ; line_number = 18
        ; constant instructions_per_bit = instruction_rate / baud_rate
instructions_per_bit equ 416
        ; line_number = 19
        ; constant delays_per_bit = 3
delays_per_bit equ 3
        ; line_number = 20
        ; constant instructions_per_delay = instructions_per_bit / delays_per_bit
instructions_per_delay equ 138
        ; line_number = 21
        ; constant extra_instructions = 5
extra_instructions equ 5
        ; line_number = 22
        ; constant delay_instructions = instructions_per_delay - extra_instructions
delay_instructions equ 133

        ; # The {receiving} bit is sent when data is being received.
        ; # It gets cleared whenever data gets sent.  It is used to
        ; # determine whether additional delay is needed to turn a
        ; # line around for slow interpretted chips like the Basic
        ; # Stamp 2 and the OOPIC.

        ; line_number = 30
        ; global receiving bit
receiving___byte equ shared___globals+63
receiving___bit equ 0
        ; line_number = 31
        ; global waiting bit
waiting___byte equ shared___globals+63
waiting___bit equ 1

        ; Delaying code generation for procedure  byte_get
        ; Delaying code generation for procedure  byte_put

        ; buffer = 'servo4'
        ; line_number = 8
        ; library bit_bang exited

        ; line_number = 10
        ; package pdip
        ; line_number = 11
        ; pin 1 = power_supply
        ; line_number = 12
        ;  pin 2 = ra5_out, name = debug_out
debug_out___byte equ _porta
debug_out___bit equ 5
        ; line_number = 13
        ;  pin 3 = ra4_out, name = serial_out
serial_out___byte equ _porta
serial_out___bit equ 4
        ; line_number = 14
        ;  pin 4 = ra3_in, name = serial_in
serial_in___byte equ _porta
serial_in___bit equ 4
        ; line_number = 15
        ;  pin 5 = rc5_out, name = servo3
servo3___byte equ _portc
servo3___bit equ 5
        ; line_number = 16
        ;  pin 6 = rc4_in, name = calibrate
calibrate___byte equ _portc
calibrate___bit equ 4
        ; line_number = 17
        ;  pin 7 = an7, name = sense2
sense2___byte equ _portc
sense2___bit equ 3
        ; line_number = 18
        ;  pin 8 = an6, name = sense3
sense3___byte equ _portc
sense3___bit equ 2
        ; line_number = 19
        ;  pin 9 = an5, name = sense1
sense1___byte equ _portc
sense1___bit equ 1
        ; line_number = 20
        ;  pin 10 = an4, name = sense0
sense0___byte equ _portc
sense0___bit equ 0
        ; line_number = 21
        ;  pin 11 = ra2_out, name = servo2
servo2___byte equ _porta
servo2___bit equ 2
        ; line_number = 22
        ;  pin 12 = ra1_out, name = servo1
servo1___byte equ _porta
servo1___bit equ 1
        ; line_number = 23
        ;  pin 13 = ra0_out, name = servo0
servo0___byte equ _porta
servo0___bit equ 0
        ; line_number = 24
        ;  pin 14 = ground


        ; # Define the pin bindings:
        ; line_number = 29
        ; constant initial_minimum = 1000
initial_minimum equ 1000
        ; line_number = 30
        ; constant initial_maximum = 2000
initial_maximum equ 2000
        ; line_number = 31
        ; constant initial_scale = (initial_maximum - initial_minimum) >> 4
initial_scale equ 62
        ; line_number = 32
        ; constant initial_high = initial_minimum >> 8
initial_high equ 3
        ; line_number = 33
        ; constant initial_low = initial_minimum & 0xff
initial_low equ 232

        ; line_number = 35
        ; global analogs[4] array[byte]
analogs equ shared___globals+4

        ; # The next {eedata_size} bytes are saved and restored from EEData:
        ; line_number = 38
        ; constant eedata_size = 13
eedata_size equ 13
        ; line_number = 39
        ; global base_lows[4] array[byte]
base_lows equ shared___globals+8
        ; line_number = 40
        ; global base_highs[4] array[byte]
base_highs equ shared___globals+12
        ; line_number = 41
        ; global scales[4] array[byte]
scales equ shared___globals+16
        ; line_number = 42
        ; global address byte
address equ shared___globals+20

        ; line_number = 44
        ; global fines[4] array[byte]
fines equ shared___globals+21
        ; line_number = 45
        ; global positions[4] array[byte]
positions equ shared___globals+25
        ; line_number = 46
        ; global interrupts byte
interrupts equ shared___globals+29
        ; line_number = 47
        ; global enables byte
enables equ shared___globals+30

        ; line_number = 49
        ; global command_previous byte
command_previous equ shared___globals+31
        ; line_number = 50
        ; global command_last byte
command_last equ shared___globals+32
        ; line_number = 51
        ; global sent_previous byte
sent_previous equ shared___globals+33
        ; line_number = 52
        ; global sent_last byte
sent_last equ shared___globals+34

        ; #origin 0x3ff
        ; #
        ; #procedure osc_cal
        ; #    arguments_none
        ; #    returns byte
        ; #
        ; #    return 0x9c

        ; line_number = 62
        ; origin 0
        org     0

        ; line_number = 64
        ; procedure xmain
xmain:
        ; arguments_none
        ; line_number = 66
        ;  returns_nothing

        ; before procedure statements delay=non-uniform, bit states=(data:X0=>X0 code:XX=>XX)
        ; line_number = 68
        ;  call main()
        call    main

        ; delay after procedure statements=non-uniform
        ; Implied return
        retlw   0




        ; line_number = 70
        ; origin 4
        org     4

        ; line_number = 72
        ; procedure xinterrupt
xinterrupt:
        ; arguments_none
        ; line_number = 74
        ;  returns_nothing

        ; before procedure statements delay=non-uniform, bit states=(data:X0=>X0 code:XX=>XX)
        ; line_number = 76
        ;  servo0 := 0
        bcf     servo0___byte, servo0___bit
        ; line_number = 77
        ;  servo1 := 0
        bcf     servo1___byte, servo1___bit
        ; line_number = 78
        ;  servo2 := 0
        bcf     servo2___byte, servo2___bit
        ; line_number = 79
        ;  servo3 := 0
        bcf     servo3___byte, servo3___bit
        ; line_number = 80
        ;  _tmr1if := 0
        bcf     _tmr1if___byte, _tmr1if___bit

        ; line_number = 82
        ;  assemble
        ; line_number = 83
        retfie  


        ; delay after procedure statements=non-uniform
        ; Implied return
        retlw   0




        ; line_number = 86
        ; procedure main
main:
        ; Need to calibrate the oscillator
        call    1023
        bsf     __rp0___byte, __rp0___bit
        movwf   _osccal
        ; Initialize some registers
        movlw   1
        bcf     __rp0___byte, __rp0___bit
        movwf   _adcon0
        movlw   4
        bsf     __rp0___byte, __rp0___bit
        movwf   _trisa
        movlw   31
        movwf   _trisc
        ; arguments_none
        ; line_number = 88
        ;  returns_nothing

        ; line_number = 90
        ;  local command byte
main__command equ shared___globals+35
        ; line_number = 91
        ;  local glitch byte
main__glitch equ shared___globals+36
        ; line_number = 92
        ;  local id_index byte
main__id_index equ shared___globals+37
        ; line_number = 93
        ;  local temporary byte
main__temporary equ shared___globals+38
        ; line_number = 94
        ;  local servo byte
main__servo equ shared___globals+39
        ; line_number = 95
        ;  local position byte
main__position equ shared___globals+40

        ; # These registers are in data bank 1:
        ; before procedure statements delay=non-uniform, bit states=(data:X0=>X1 code:XX=>XX)
        ; line_number = 98
        ;  _adcon1 := 0
        movlw   0
        movwf   _adcon1
        ; line_number = 99
        ;  _adsel := 0
        movlw   0
        movwf   _adsel
        ; line_number = 100
        ;  _psa := 0
        bcf     _psa___byte, _psa___bit

        ; # These registers are in data bank 0:
        ; line_number = 103
        ;  _cmcon := 7
        movlw   7
        bcf     __rp0___byte, __rp0___bit
        movwf   _cmcon
        ; line_number = 104
        ;  _adcon0 := 0
        movlw   0
        movwf   _adcon0
        ; line_number = 105
        ;  _t1con := 0x00
        movlw   0
        movwf   _t1con
        ; line_number = 106
        ;  interrupts := 0
        movlw   0
        movwf   interrupts

        ; line_number = 108
        ;  _eeadr := 0
        movlw   0
        bsf     __rp0___byte, __rp0___bit
        movwf   _eeadr
        ; line_number = 109
        ;  loop_exactly 13 start
main__1 equ shared___globals+50
        movlw   13
        bcf     __rp0___byte, __rp0___bit
        movwf   main__1
main__2:
        ; line_number = 110
        ; _rd := 1
        bsf     __rp0___byte, __rp0___bit
        bsf     _rd___byte, _rd___bit
        ; line_number = 111
        ;  base_lows[_eeadr] := _eedata
        ; index_fsr_first
        movf    _eeadr,w
        addlw   base_lows
        bcf     __rp0___byte, __rp0___bit
        movwf   __fsr
        bsf     __rp0___byte, __rp0___bit
        movf    _eedata,w
        bcf     __rp0___byte, __rp0___bit
        movwf   __indf
        ; line_number = 112
        ;  _eeadr := _eeadr + 1
        bsf     __rp0___byte, __rp0___bit
        incf    _eeadr,f

        bcf     __rp0___byte, __rp0___bit
        ; line_number = 109
        ;  loop_exactly 13 wrap-up
        decfsz  main__1,f
        goto    main__2
        ; line_number = 109
        ;  loop_exactly 13 done
        ; line_number = 114
        ; if base_lows[0] = 0xff start
        ; Left minus Right
        movf    base_lows,w
        addlw   1
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code.size = 0 && false_code.size > 1
        ; bit_code_emit_helper1: body_code.size=22 true_test=true body_code.delay=0 (non-uniform delay)
        btfss   __z___byte, __z___bit
        goto    main__5
        ; line_number = 115
        ; servo := 0
        movlw   0
        movwf   main__servo
        ; line_number = 116
        ;  loop_exactly 4 start
main__3 equ shared___globals+50
        movlw   4
        movwf   main__3
main__4:
        ; line_number = 117
        ; base_lows[servo] := initial_low
        ; index_fsr_first
        movf    main__servo,w
        addlw   base_lows
        movwf   __fsr
        movlw   232
        movwf   __indf
        ; line_number = 118
        ;  base_highs[servo] := initial_high
        ; index_fsr_first
        movf    main__servo,w
        addlw   base_highs
        movwf   __fsr
        movlw   3
        movwf   __indf
        ; line_number = 119
        ;  scales[servo] := initial_scale
        ; index_fsr_first
        movf    main__servo,w
        addlw   scales
        movwf   __fsr
        movlw   62
        movwf   __indf
        ; line_number = 120
        ;  servo := servo + 1
        incf    main__servo,f
        ; line_number = 116
        ;  loop_exactly 4 wrap-up
        decfsz  main__3,f
        goto    main__4
        ; line_number = 116
        ;  loop_exactly 4 done
        ; line_number = 121
        ; address := 0xff
        movlw   255
        movwf   address
        ; Recombine size1 = 0 || size2 = 0
main__5:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
        ; line_number = 114
        ; if base_lows[0] = 0xff done
        ; line_number = 122
        ; servo := 0
        movlw   0
        movwf   main__servo
        ; line_number = 123
        ;  loop_exactly 4 start
main__6 equ shared___globals+50
        movlw   4
        movwf   main__6
main__7:
        ; line_number = 124
        ; positions[servo] := 0
        ; index_fsr_first
        movf    main__servo,w
        addlw   positions
        movwf   __fsr
        movlw   0
        movwf   __indf
        ; line_number = 125
        ;  fines[servo] := 0
        ; index_fsr_first
        movf    main__servo,w
        addlw   fines
        movwf   __fsr
        movlw   0
        movwf   __indf
        ; line_number = 126
        ;  servo := servo + 1
        incf    main__servo,f

        ; line_number = 123
        ;  loop_exactly 4 wrap-up
        decfsz  main__6,f
        goto    main__7
        ; line_number = 123
        ;  loop_exactly 4 done
        ; # For now:
        ; #enables := 0xf
        ; line_number = 130
        ;  enables := 0
        movlw   0
        movwf   enables

        ; # According to the specification sheet, TMR1L, TRM1H, and
        ; # TMR1IF must be clear before enabling TMR1IE.  Since they
        ; # do not say why, it is unclear what problem that this addresses.
        ; line_number = 135
        ;  _tmr1l := 0
        movlw   0
        movwf   _tmr1l
        ; line_number = 136
        ;  _tmr1h := 0
        movlw   0
        movwf   _tmr1h
        ; line_number = 137
        ;  _tmr1if := 0
        bcf     _tmr1if___byte, _tmr1if___bit
        ; line_number = 138
        ;  _tmr1ie := 1
        bsf     __rp0___byte, __rp0___bit
        bsf     _tmr1ie___byte, _tmr1ie___bit
        ; line_number = 139
        ;  _peie := 1
        bcf     __rp0___byte, __rp0___bit
        bsf     _peie___byte, _peie___bit
        ; line_number = 140
        ;  _gie := 1
        bsf     _gie___byte, _gie___bit
        ; line_number = 141
        ;  _tmr1on := 1
        bsf     _tmr1on___byte, _tmr1on___bit
        ; #_tmr1ie := 0
        ; #_peie := 0
        ; #_gie := 0
        ; #_tmr1on := 1

        ; # Let's initialize the servo's to off:
        ; line_number = 148
        ;  servo0 := 0
        bcf     servo0___byte, servo0___bit
        ; line_number = 149
        ;  servo1 := 0
        bcf     servo1___byte, servo1___bit
        ; line_number = 150
        ;  servo2 := 0
        bcf     servo2___byte, servo2___bit
        ; line_number = 151
        ;  servo3 := 0
        bcf     servo3___byte, servo3___bit

        ; line_number = 153
        ;  glitch := 0
        movlw   0
        movwf   main__glitch
        ; line_number = 154
        ;  id_index := 0
        movlw   0
        movwf   main__id_index

        ; # Make sure we idle the serial output lines to "mark" (= 1):
        ; line_number = 157
        ;  debug_out := 1
        bsf     debug_out___byte, debug_out___bit
        ; line_number = 158
        ;  serial_out := 1
        bsf     serial_out___byte, serial_out___bit

        ; line_number = 160
        ;  loop_forever start
main__8:
        ; line_number = 161
        ; command := byte_get()
        call    byte_get
        movwf   main__command
        ; line_number = 162
        ;  servo := command & 3
        movlw   3
        andwf   main__command,w
        movwf   main__servo
        ; line_number = 163
        ;  switch command >> 6 start
        movlw   main__85>>8
        movwf   __pclath
main__86 equ shared___globals+50
        swapf   main__command,w
        movwf   main__86
        rrf     main__86,f
        rrf     main__86,w
        andlw   3
        addlw   main__85
        movwf   __pcl
        ; page_group 4
main__85:
        goto    main__81
        goto    main__82
        goto    main__83
        goto    main__84
        ; line_number = 164
        ; case 0
main__81:
        ; # 00xx xxxx
        ; line_number = 166
        ;  switch (command >> 3) & 7 start
        movlw   main__18>>8
        movwf   __pclath
main__19 equ shared___globals+50
        rrf     main__command,w
        movwf   main__19
        rrf     main__19,f
        rrf     main__19,w
        andlw   7
        addlw   main__18
        movwf   __pcl
        ; page_group 8
main__18:
        goto    main__13
        goto    main__14
        goto    main__15
        goto    main__16
        goto    main__17
        goto    main__17
        goto    main__17
        goto    main__17
        ; line_number = 167
        ; case 0
main__13:
        ; # 0000 0xxx:
        ; line_number = 169
        ;  temporary := byte_get()
        call    byte_get
        movwf   main__temporary
        ; line_number = 170
        ;  if command@2 start
main__select__9___byte equ main__command
main__select__9___bit equ 2
        ; # 0000 01ss (Write Base High):
        ; line_number = 172
        ;  base_highs[servo] := temporary
        ; index_fsr_first
        movf    main__servo,w
        ; # 0000 00ss (Write Base Low):
        ; line_number = 175
        ;  base_lows[servo] := temporary
        ; index_fsr_first
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_size=1 && false_size=1
        ; SUBCASE: Double test; true, then false
        btfsc   main__select__9___byte, main__select__9___bit
        addlw   base_highs
        btfss   main__select__9___byte, main__select__9___bit
        addlw   base_lows
        ; code.delay=4294967295 back_code.delay=4294967295
        movwf   __fsr
        movf    main__temporary,w
        movwf   __indf
        ; <=bit_code_emit@symbol; sym=main__select__9 (data:X0=>X0 code:XX=>XX)
        ; line_number = 170
        ;  if command@2 done
        goto    main__20
        ; line_number = 176
        ; case 1
main__14:
        ; # 0000 1xxx:
        ; line_number = 178
        ;  temporary := byte_get()
        call    byte_get
        movwf   main__temporary
        ; line_number = 179
        ;  if command@2 start
main__select__10___byte equ main__command
main__select__10___bit equ 2
        ; # 0000 11ss (Write Scale):
        ; line_number = 181
        ;  scales[servo] := temporary
        ; index_fsr_first
        movf    main__servo,w
        ; # 0000 10ss (Write Position)
        ; line_number = 184
        ;  positions[servo] := temporary
        ; index_fsr_first
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_size=1 && false_size=1
        ; SUBCASE: Double test; true, then false
        btfsc   main__select__10___byte, main__select__10___bit
        addlw   scales
        btfss   main__select__10___byte, main__select__10___bit
        addlw   positions
        ; code.delay=4294967295 back_code.delay=4294967295
        movwf   __fsr
        movf    main__temporary,w
        movwf   __indf
        ; <=bit_code_emit@symbol; sym=main__select__10 (data:X0=>X0 code:XX=>XX)
        ; line_number = 179
        ;  if command@2 done
        goto    main__20
        ; line_number = 185
        ; case 2
main__15:
        ; # 0001 0xxx:
        ; line_number = 187
        ;  if command@2 start
main__select__11___byte equ main__command
main__select__11___bit equ 2
        ; # 0001 01ss (Read Base High):
        ; line_number = 189
        ;  temporary := base_highs[servo]
        movf    main__servo,w
        ; # 0001 00ss (Read Base Low):
        ; line_number = 192
        ;  temporary := base_lows[servo]
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_size=1 && false_size=1
        ; SUBCASE: Double test; true, then false
        btfsc   main__select__11___byte, main__select__11___bit
        addlw   base_highs
        btfss   main__select__11___byte, main__select__11___bit
        addlw   base_lows
        ; code.delay=4294967295 back_code.delay=4294967295
        movwf   __fsr
        movf    __indf,w
        movwf   main__temporary
        ; <=bit_code_emit@symbol; sym=main__select__11 (data:XX=>X0 code:XX=>XX)
        ; line_number = 187
        ;  if command@2 done
        ; line_number = 193
        ; call byte_put(temporary)
        movf    main__temporary,w
        call    byte_put
        goto    main__20
        ; line_number = 194
        ; case 3
main__16:
        ; # 0001 1xxx:
        ; line_number = 196
        ;  if command@2 start
main__select__12___byte equ main__command
main__select__12___bit equ 2
        ; # 0001 11ss (Read Scale):
        ; line_number = 198
        ;  temporary := scales[servo]
        movf    main__servo,w
        ; # 0001 10ss (Read Position):
        ; line_number = 201
        ;  temporary := positions[servo]
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_size=1 && false_size=1
        ; SUBCASE: Double test; true, then false
        btfsc   main__select__12___byte, main__select__12___bit
        addlw   scales
        btfss   main__select__12___byte, main__select__12___bit
        addlw   positions
        ; code.delay=4294967295 back_code.delay=4294967295
        movwf   __fsr
        movf    __indf,w
        movwf   main__temporary
        ; <=bit_code_emit@symbol; sym=main__select__12 (data:XX=>X0 code:XX=>XX)
        ; line_number = 196
        ;  if command@2 done
        ; line_number = 202
        ; call byte_put(temporary)
        movf    main__temporary,w
        call    byte_put
        goto    main__20
        ; line_number = 203
        ; case 4, 5, 6, 7
main__17:
        ; # 001x xxxx:
        ; line_number = 205
        ;  do_nothing
main__20:
        ; switch end:(data:X0=>X? code:XX=>XX)
        ; line_number = 166
        ;  switch (command >> 3) & 7 done
        goto    main__87
        ; line_number = 206
        ; case 1
main__82:
        ; # 01hh hhhh (Set High):
        ; line_number = 208
        ;  position := positions[servo]
        movf    main__servo,w
        addlw   positions
        movwf   __fsr
        movf    __indf,w
        movwf   main__position
        ; line_number = 209
        ;  position := position & 0xf | (command << 2) & 0xf0
main__21 equ shared___globals+50
        movlw   15
        andwf   main__position,w
        movwf   main__21
main__22 equ shared___globals+51
        rlf     main__command,w
        movwf   main__22
        rlf     main__22,w
        andlw   240
        iorwf   main__21,w
        movwf   main__position
        ; line_number = 210
        ;  positions[servo] := position
        ; index_fsr_first
        movf    main__servo,w
        addlw   positions
        movwf   __fsr
        movf    main__position,w
        movwf   __indf
        goto    main__87
        ; line_number = 211
        ; case 2
main__83:
        ; # 10ll llll (Set Low):
        ; line_number = 213
        ;  position := positions[servo]
        movf    main__servo,w
        addlw   positions
        movwf   __fsr
        movf    __indf,w
        movwf   main__position
        ; line_number = 214
        ;  position := position & 0xf0 | (command >> 2) & 0xf
main__23 equ shared___globals+50
        movlw   240
        andwf   main__position,w
        movwf   main__23
main__24 equ shared___globals+51
        rrf     main__command,w
        movwf   main__24
        rrf     main__24,w
        andlw   15
        iorwf   main__23,w
        movwf   main__position
        ; line_number = 215
        ;  positions[servo] := position
        ; index_fsr_first
        movf    main__servo,w
        addlw   positions
        movwf   __fsr
        movf    main__position,w
        movwf   __indf
        goto    main__87
        ; line_number = 216
        ; case 3
main__84:
        ; # 11xx xxxx:
        ; line_number = 218
        ;  switch (command >> 3) & 7 start
        movlw   main__78>>8
        movwf   __pclath
main__79 equ shared___globals+50
        rrf     main__command,w
        movwf   main__79
        rrf     main__79,f
        rrf     main__79,w
        andlw   7
        addlw   main__78
        movwf   __pcl
        ; page_group 8
        ; Add 2 NOP's until start of new page 
        nop     
        nop     
main__78:
        goto    main__72
        goto    main__73
        goto    main__74
        goto    main__75
        goto    main__76
        goto    main__76
        goto    main__76
        goto    main__77
        ; line_number = 219
        ; case 0
main__72:
        ; # 1100 0ess (Set Enable and Position):
        ; line_number = 221
        ;  positions[servo] := byte_get()
        ; index_temporary_first
main__25 equ shared___globals+50
main__26 equ shared___globals+51
        movf    main__servo,w
        movwf   main__25
        call    byte_get
        movwf   main__26
        movf    main__25,w
        addlw   positions
        movwf   __fsr
        movf    main__26,w
        movwf   __indf
        ; line_number = 222
        ;  temporary := mask_get(servo)
        movf    main__servo,w
        call    mask_get
        movwf   main__temporary
        ; line_number = 223
        ;  if command@2 start
main__select__27___byte equ main__command
main__select__27___bit equ 2
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=2 false_code_size=3
        btfss   main__select__27___byte, main__select__27___bit
        goto    main__28
        ; line_number = 224
        ; enables := enables | temporary
        movf    main__temporary,w
        iorwf   enables,f
        goto    main__29
main__28:
        ; line_number = 226
        ; enables := enables & (temporary ^ 0xf)
        movlw   15
        xorwf   main__temporary,w
        andwf   enables,f
main__29:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=main__select__27 (data:X0=>X0 code:XX=>XX)
        ; line_number = 223
        ;  if command@2 done
        goto    main__80
        ; line_number = 227
        ; case 1
main__73:
        ; # 1100 1ess (Set Enable Flag Only):
        ; line_number = 229
        ;  temporary := mask_get(servo)
        movf    main__servo,w
        call    mask_get
        movwf   main__temporary
        ; line_number = 230
        ;  if command@2 start
main__select__30___byte equ main__command
main__select__30___bit equ 2
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=2 false_code_size=3
        btfss   main__select__30___byte, main__select__30___bit
        goto    main__31
        ; line_number = 231
        ; enables := enables | temporary
        movf    main__temporary,w
        iorwf   enables,f
        goto    main__32
main__31:
        ; line_number = 233
        ; enables := enables & (temporary ^ 0xf)
        movlw   15
        xorwf   main__temporary,w
        andwf   enables,f
main__32:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=main__select__30 (data:X0=>X0 code:XX=>XX)
        ; line_number = 230
        ;  if command@2 done
        goto    main__80
        ; line_number = 234
        ; case 2
main__74:
        ; # 1101 0xxx:
        ; line_number = 236
        ;  if command@2 start
main__select__35___byte equ main__command
main__select__35___bit equ 2
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=10 false_code_size=4
        btfss   main__select__35___byte, main__select__35___bit
        goto    main__36
        ; # 1101 01ss (Read Enable):
        ; line_number = 238
        ;  temporary := 0
        movlw   0
        movwf   main__temporary
        ; line_number = 239
        ;  if enables & mask_get(servo) != 0 start
        ; Left minus Right
main__34 equ shared___globals+50
        movf    enables,w
        movwf   main__34
        movf    main__servo,w
        call    mask_get
        andwf   main__34,w
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code.size=0 && false_code.size=1
        btfss   __z___byte, __z___bit
        ; line_number = 240
        ; temporary@0 := 1
main__select__33___byte equ main__temporary
main__select__33___bit equ 0
        bsf     main__select__33___byte, main__select__33___bit
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
        ; line_number = 239
        ;  if enables & mask_get(servo) != 0 done
        ; line_number = 241
        ; call byte_put(temporary)
        movf    main__temporary,w
        goto    main__37
main__36:
        ; # 1101 00ss (Read position):
        ; line_number = 244
        ;  call byte_put(positions[servo])
        movf    main__servo,w
        addlw   positions
        movwf   __fsr
        movf    __indf,w
main__37:
        ; code.delay=4294967295 back_code.delay=4294967295
        call    byte_put
        ; <=bit_code_emit@symbol; sym=main__select__35 (data:X0=>X0 code:XX=>XX)
        ; line_number = 236
        ;  if command@2 done
        goto    main__80
        ; line_number = 245
        ; case 3
main__75:
        ; # 1101 1xxx:
        ; line_number = 247
        ;  if command@2 start
main__select__52___byte equ main__command
main__select__52___bit equ 2
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=5 false_code_size=55
        btfss   main__select__52___byte, main__select__52___bit
        goto    main__53
        ; # 1101 11ss (Read Current Draw):
        ; line_number = 249
        ;  call byte_put(analogs[servo])
        movf    main__servo,w
        addlw   analogs
        movwf   __fsr
        movf    __indf,w
        call    byte_put
        goto    main__54
main__53:
        ; # 1101 10xx:
        ; line_number = 252
        ;  if command@1 start
main__select__49___byte equ main__command
main__select__49___bit equ 1
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=44 false_code_size=8
        btfss   main__select__49___byte, main__select__49___bit
        goto    main__50
        ; # 1101 101x:
        ; line_number = 254
        ;  if command@0 start
main__select__46___byte equ main__command
main__select__46___bit equ 0
        ; # 1101 1011 (Set Address):
        ; line_number = 256
        ;  address := byte_get()
        call    byte_get
        ; # 1101 1010 (Save settings):
        ; # Need magic OK byte first:
        ; line_number = 260
        ;  if byte_get() = 0xa5 start
        ; Left minus Right
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true.size=1 false.size>1; no GOTO
        btfss   main__select__46___byte, main__select__46___bit
        goto    main__47
        movwf   address
        goto    main__48
main__47:
        addlw   91
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true.size>1 false.size=1; no GOTO's
        btfss   __z___byte, __z___bit
        goto    main__44
        ; #FIXME: Compiler problem kludge!!!
        ; line_number = 262
        ;  temporary := 0
        movlw   0
        movwf   main__temporary
        ; line_number = 263
        ;  _eeadr := 0
        movlw   0
        bsf     __rp0___byte, __rp0___bit
        movwf   _eeadr
        ; line_number = 264
        ;  _gie := 0
        bcf     __rp0___byte, __rp0___bit
        bcf     _gie___byte, _gie___bit
        ; line_number = 265
        ;  loop_exactly 13 start
main__41 equ shared___globals+50
        movlw   13
        movwf   main__41
        bsf     __rp0___byte, __rp0___bit
main__42:
        ; line_number = 266
        ; _eedata := base_lows[_eeadr]
        bsf     __rp0___byte, __rp0___bit
        movf    _eeadr,w
        addlw   base_lows
        bcf     __rp0___byte, __rp0___bit
        movwf   __fsr
        movf    __indf,w
        bsf     __rp0___byte, __rp0___bit
        movwf   _eedata
        ; line_number = 267
        ;  _wren := 1
        bsf     _wren___byte, _wren___bit
        ; line_number = 268
        ;  _eecon2 := 0x55
        movlw   85
        movwf   _eecon2
        ; line_number = 269
        ;  _eecon2 := 0xaa
        movlw   170
        movwf   _eecon2
        ; line_number = 270
        ;  _wr := 1
        bsf     _wr___byte, _wr___bit
        ; line_number = 271
        ;  while _wr start
main__43:
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: True.size=1 False.size=0
        btfsc   _wr___byte, _wr___bit
        ; true=GOTO
        goto    main__43
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=_wr (data:XX=>XX code:XX=>XX)
        ; line_number = 271
        ;  while _wr done
        ; line_number = 273
        ; _eeadr := _eeadr + 1
        incf    _eeadr,f
        bcf     __rp0___byte, __rp0___bit
        ; line_number = 265
        ;  loop_exactly 13 wrap-up
        decfsz  main__41,f
        goto    main__42
        ; line_number = 265
        ;  loop_exactly 13 done
        ; line_number = 274
        ; _gie := 1
        bsf     _gie___byte, _gie___bit
        ; line_number = 275
        ;  _wren := 0
        bsf     __rp0___byte, __rp0___bit
        bcf     _wren___byte, _wren___bit
        ; line_number = 276
        ;  call byte_put(0xa5)
        movlw   165
        bcf     __rp0___byte, __rp0___bit
        goto    main__45
main__44:
        ; line_number = 278
        ; call byte_put(0x11)
        movlw   17
main__45:
        ; code.delay=4294967295 back_code.delay=4294967295
        call    byte_put
        ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
        ; line_number = 260
        ;  if byte_get() = 0xa5 done
main__48:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=main__select__46 (data:XX=>X0 code:XX=>XX)
        ; line_number = 254
        ;  if command@0 done
        goto    main__51
main__50:
        ; # 1101 100x:
        ; line_number = 281
        ;  if command@0 start
main__select__38___byte equ main__command
main__select__38___bit equ 0
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=3 false_code_size=2
        btfss   main__select__38___byte, main__select__38___bit
        goto    main__39
        ; # 1101 1001 (Set Enables):
        ; line_number = 283
        ;  enables := byte_get() & 0xf
        call    byte_get
        andlw   15
        movwf   enables
        goto    main__40
main__39:
        ; # 1101 1001 (Read Enables):
        ; line_number = 286
        ;  call byte_put(enables)
        movf    enables,w
        call    byte_put
main__40:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=main__select__38 (data:X0=>X0 code:XX=>XX)
        ; line_number = 281
        ;  if command@0 done
main__51:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=main__select__49 (data:XX=>XX code:XX=>XX)
        ; line_number = 252
        ;  if command@1 done
main__54:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=main__select__52 (data:X0=>X0 code:XX=>XX)
        ; line_number = 247
        ;  if command@2 done
        goto    main__80
        ; line_number = 287
        ; case 4, 5, 6
main__76:
        ; # 1110 0xxx, 1110 1xxx, 1111 0xxx:
        ; line_number = 289
        ;  do_nothing
        goto    main__80
        ; line_number = 290
        ; case 7
main__77:
        ; # 1111 1xxx
        ; line_number = 292
        ;  switch command & 7 start
        movlw   main__70>>8
        movwf   __pclath
        movlw   7
        andwf   main__command,w
        addlw   main__70
        movwf   __pcl
        ; page_group 8
main__70:
        goto    main__62
        goto    main__63
        goto    main__64
        goto    main__65
        goto    main__66
        goto    main__67
        goto    main__68
        goto    main__69
        ; line_number = 293
        ; case 0
main__62:
        ; This case body wants this bit set
        bsf     __rp0___byte, __rp0___bit
        ; line_number = 294
        ; _osccal := _osccal - 4
        movlw   252
        addwf   _osccal,f
        goto    main__71
        ; line_number = 295
        ; case 1
main__63:
        ; This case body wants this bit set
        bsf     __rp0___byte, __rp0___bit
        ; line_number = 296
        ; _osccal := _osccal + 4
        movlw   4
        addwf   _osccal,f
        goto    main__71
        ; line_number = 297
        ; case 2
main__64:
        ; This case body wants this bit set
        bsf     __rp0___byte, __rp0___bit
        ; line_number = 298
        ; call byte_put(_osccal)
        movf    _osccal,w
        bcf     __rp0___byte, __rp0___bit
        call    byte_put
        goto    main__71
        ; line_number = 299
        ; case 3
main__65:
        ; line_number = 300
        ; call byte_put(0)
        movlw   0
        call    byte_put
        goto    main__71
        ; line_number = 301
        ; case 4
main__66:
        ; line_number = 302
        ; temporary := 0
        movlw   0
        movwf   main__temporary
        ; line_number = 303
        ;  if id_index < id.size start
        movlw   46
        subwf   main__id_index,w
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true.size=0 && false.size>1
        ; bit_code_emit_helper1: body_code.size=4 true_test=false body_code.delay=0 (non-uniform delay)
        btfsc   __c___byte, __c___bit
        goto    main__55
        ; line_number = 304
        ; temporary := id[id_index]
        movf    main__id_index,w
        call    id
        movwf   main__temporary
        ; line_number = 305
        ;  id_index := id_index + 1
        incf    main__id_index,f
main__55:
        ; Recombine size1 = 0 || size2 = 0
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__c (data:X0=>X0 code:XX=>XX)
        ; line_number = 303
        ;  if id_index < id.size done
        ; line_number = 306
        ; call byte_put(temporary)
        movf    main__temporary,w
        call    byte_put
        goto    main__71
        ; line_number = 307
        ; case 5
main__67:
        ; line_number = 308
        ; id_index := 0
        movlw   0
        movwf   main__id_index
        goto    main__71
        ; line_number = 309
        ; case 6
main__68:
        ; line_number = 310
        ; call byte_put(glitch)
        movf    main__glitch,w
        call    byte_put
        ; line_number = 311
        ;  glitch := 0
        movlw   0
        movwf   main__glitch
        goto    main__71
        ; line_number = 312
        ; case 7
main__69:
        ; line_number = 313
        ; glitch := glitch + 1
        incf    main__glitch,f
        ; #enables := 0xf
        ; line_number = 315
        ;  command := byte_get()
        call    byte_get
        movwf   main__command
        ; line_number = 316
        ;  servo := command & 3
        movlw   3
        andwf   main__command,w
        movwf   main__servo
        ; line_number = 317
        ;  position := byte_get()
        call    byte_get
        movwf   main__position
        ; line_number = 318
        ;  temporary := address
        movf    address,w
        movwf   main__temporary
        ; line_number = 319
        ;  if address = 0xff start
        ; Left minus Right
        incf    address,w
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code.size = 0 && false_code.size > 1
        ; bit_code_emit_helper1: body_code.size=12 true_test=true body_code.delay=0 (non-uniform delay)
        btfss   __z___byte, __z___bit
        goto    main__59
        ; line_number = 320
        ; temporary := (analogs[3] >> 2) & 0x30 | (analogs[2] >> 4) & 0xc
main__56 equ shared___globals+50
main__57 equ shared___globals+51
        movf    analogs+3,w
        movwf   main__57
        rrf     main__57,f
        rrf     main__57,w
        andlw   48
        movwf   main__56
main__58 equ shared___globals+51
        movf    analogs+2,w
        movwf   main__58
        swapf   main__58,f
        andlw   12
        iorwf   main__56,w
        movwf   main__temporary

        ; Recombine size1 = 0 || size2 = 0
main__59:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
        ; line_number = 319
        ;  if address = 0xff done
        ; line_number = 322
        ; if (command ^ temporary) & 0xfc = 0 start
        ; Left minus Right
        movf    main__command,w
        xorwf   main__temporary,w
        andlw   252
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code.size = 0 && false_code.size > 1
        ; bit_code_emit_helper1: body_code.size=11 true_test=true body_code.delay=0 (non-uniform delay)
        btfss   __z___byte, __z___bit
        goto    main__61
        ; line_number = 323
        ; positions[servo] := position
        ; index_fsr_first
        movf    main__servo,w
        addlw   positions
        movwf   __fsr
        movf    main__position,w
        movwf   __indf
        ; line_number = 324
        ;  enables := enables | mask_get(servo)
main__60 equ shared___globals+50
        movf    enables,w
        movwf   main__60
        movf    main__servo,w
        call    mask_get
        iorwf   main__60,w
        movwf   enables


        ; Recombine size1 = 0 || size2 = 0
main__61:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=__z (data:X0=>X0 code:XX=>XX)
        ; line_number = 322
        ; if (command ^ temporary) & 0xfc = 0 done
main__71:
        ; switch end:(data:X0=>X? code:XX=>XX)
        ; line_number = 292
        ;  switch command & 7 done
main__80:
        ; switch end:(data:X0=>X? code:XX=>XX)
        ; line_number = 218
        ;  switch (command >> 3) & 7 done
main__87:
        ; switch end:(data:X0=>X? code:XX=>XX)
        ; line_number = 163
        ;  switch command >> 6 done
        ; line_number = 160
        ;  loop_forever wrap-up
        ; Need to adjust code banks to match front of loop
        bcf     __rp0___byte, __rp0___bit
        goto    main__8
        ; line_number = 160
        ;  loop_forever done
        ; delay after procedure statements=non-uniform




        ; line_number = 327
        ; procedure delay
delay:
        ; arguments_none
        ; line_number = 329
        ;  returns_nothing
        ; line_number = 330
        ;  exact_delay delay_instructions

        ; # This procedure delays 1/3 of a bit.

        ; line_number = 334
        ;  local counter byte
delay__counter equ shared___globals+41
        ; line_number = 335
        ;  local servo byte
delay__servo equ shared___globals+42
        ; line_number = 336
        ;  local position_low byte
delay__position_low equ shared___globals+43
        ; line_number = 337
        ;  local position_high byte
delay__position_high equ shared___globals+44
        ; line_number = 338
        ;  local servo_low byte
delay__servo_low equ shared___globals+45
        ; line_number = 339
        ;  local servo_high byte
delay__servo_high equ shared___globals+46
        ; line_number = 340
        ;  local scale byte
delay__scale equ shared___globals+47
        ; line_number = 341
        ;  local temporary byte
delay__temporary equ shared___globals+48

        ; before procedure statements delay=0, bit states=(data:X0=>X0 code:XX=>XX)
        ; line_number = 343
        ;  watch_dog_reset done
        ; Delay at watch_dog_reset is 0
        clrwdt  
        ; #debug_out := 1
        ; line_number = 345
        ;  counter := (counter + 1) & 0x7f
        ; Delay at assignment is 1
        incf    delay__counter,w
        andlw   127
        movwf   delay__counter
        ; line_number = 346
        ;  servo := (counter >> 5) & 3
        ; Delay at assignment is 4
delay__1 equ shared___globals+52
        swapf   delay__counter,w
        movwf   delay__1
        rrf     delay__1,w
        andlw   3
        movwf   delay__servo
        ; line_number = 347
        ;  switch counter & 0x1f start
        movlw   delay__43>>8
        movwf   __pclath
        movlw   31
        andwf   delay__counter,w
        addlw   delay__43
        movwf   __pcl
        ; page_group 32
        ; Add 20 NOP's until start of new page 
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
delay__43:
        goto    delay__36
        goto    delay__37
        goto    delay__37
        goto    delay__37
        goto    delay__37
        goto    delay__37
        goto    delay__37
        goto    delay__37
        goto    delay__37
        goto    delay__38
        goto    delay__39
        goto    delay__40
        goto    delay__41
        goto    delay__42
        goto    delay__42
        goto    delay__42
        goto    delay__42
        goto    delay__42
        goto    delay__42
        goto    delay__42
        goto    delay__42
        goto    delay__42
        goto    delay__42
        goto    delay__42
        goto    delay__42
        goto    delay__42
        goto    delay__42
        goto    delay__42
        goto    delay__42
        goto    delay__42
        goto    delay__42
        goto    delay__42
        ; case_data[0] delay=27{0 }
        ; case_data[1] delay=17{1 2 3 4 5 6 7 8 }
        ; case_data[2] delay=25{9 }
        ; case_data[3] delay=11{10 }
        ; case_data[4] delay=1{11 }
        ; case_data[5] delay=16{12 }
        ; case_data[6] delay=0{13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 }
        ; Maximum Case Delay = 27
        ; line_number = 348
        ; case 0
delay__36:
        ; # Set up for multiply:
        ; line_number = 350
        ;  position_low := positions[servo]
        ; Delay at assignment is 0
        movf    delay__servo,w
        addlw   positions
        movwf   __fsr
        movf    __indf,w
        movwf   delay__position_low
        ; line_number = 351
        ;  servo_low := base_lows[servo]
        ; Delay at assignment is 5
        movf    delay__servo,w
        addlw   base_lows
        movwf   __fsr
        movf    __indf,w
        movwf   delay__servo_low
        ; line_number = 352
        ;  servo_high := base_highs[servo]
        ; Delay at assignment is 10
        movf    delay__servo,w
        addlw   base_highs
        movwf   __fsr
        movf    __indf,w
        movwf   delay__servo_high
        ; line_number = 353
        ;  scale := scales[servo]
        ; Delay at assignment is 15
        movf    delay__servo,w
        addlw   scales
        movwf   __fsr
        movf    __indf,w
        movwf   delay__scale
        ; line_number = 354
        ;  position_high := position_low >> 4
        ; Delay at assignment is 20
        swapf   delay__position_low,w
        movwf   delay__position_high
        movlw   15
        andwf   delay__position_high,f
        ; line_number = 355
        ;  position_low := position_low << 4
        ; Delay at assignment is 24
        ; Assignment of variable to self (no code needed)
        swapf   delay__position_low,f
        movlw   240
        andwf   delay__position_low,f
        goto    delay__44
        ; line_number = 356
        ; case 1, 2, 3, 4, 5, 6, 7, 8
delay__37:
        ; # Do one multiply cycle:
        ; line_number = 358
        ;  position_low := position_low >> 1
        ; Delay at assignment is 0
        ; Assignment of variable to self (no code needed)
        rrf     delay__position_low,f
        bcf     delay__position_low, 7
        ; line_number = 359
        ;  if position_high@0 start
        ; Delay at if is 2
delay__select__3___byte equ delay__position_high
delay__select__3___bit equ 0
        ; (after recombine) true_delay=1, false_delay=0 uniform_delay=true
        ; CASE: True.size=1 False.size=0
        btfsc   delay__select__3___byte, delay__select__3___bit
        ; line_number = 360
        ; position_low@7 := 1
        ; Delay at assignment is 0
delay__select__2___byte equ delay__position_low
delay__select__2___bit equ 7
        bsf     delay__select__2___byte, delay__select__2___bit
        ; code.delay=4 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=delay__select__3 (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=4
        ; line_number = 359
        ;  if position_high@0 done
        ; line_number = 361
        ; position_high := position_high >> 1
        ; Delay at assignment is 4
        ; Assignment of variable to self (no code needed)
        rrf     delay__position_high,f
        bcf     delay__position_high, 7
        ; line_number = 362
        ;  if scale@7 start
        ; Delay at if is 6
delay__select__4___byte equ delay__scale
delay__select__4___bit equ 7
        ; (after recombine) true_delay=6, false_delay=0 uniform_delay=true
        ; CASE: true_code.size = 0 && false_code.size > 1
        ; bit_code_emit_helper1: body_code.size=6 true_test=true body_code.delay=6 (uniform delay)
        btfsc   delay__select__4___byte, delay__select__4___bit
        goto    delay__5
        ; Delay 5 cycles
        goto    delay__7
delay__7:
        goto    delay__8
delay__8:
        nop     
        goto    delay__6
delay__5:
        ; line_number = 363
        ; servo_high := servo_high + position_high
        ; Delay at assignment is 0
        movf    delay__position_high,w
        addwf   delay__servo_high,f
        ; line_number = 364
        ;  servo_low := servo_low + position_low
        ; Delay at assignment is 2
        movf    delay__position_low,w
        addwf   delay__servo_low,f
        ; line_number = 365
        ;  if _c start
        ; Delay at if is 4
        ; (after recombine) true_delay=1, false_delay=0 uniform_delay=true
        ; CASE: True.size=1 False.size=0
        btfsc   _c___byte, _c___bit
        ; line_number = 366
        ; servo_high := servo_high + 1
        ; Delay at assignment is 0
        incf    delay__servo_high,f
        ; code.delay=6 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=_c (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=6
        ; line_number = 365
        ;  if _c done
delay__6:
        ; code.delay=15 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=delay__select__4 (data:X0=>X0 code:XX=>XX)
        ; if final true delay=6 false delay=0 code delay=15
        ; line_number = 362
        ;  if scale@7 done
        ; line_number = 367
        ; scale := scale << 1
        ; Delay at assignment is 15
        ; Assignment of variable to self (no code needed)
        rlf     delay__scale,f
        bcf     delay__scale, 0
        ; Delay 10 cycles
        ; Delay loop takes 2 * 4 = 8 cycles
        movlw   2
delay__45:
        addlw   255
        btfss   __z___byte, __z___bit
        goto    delay__45
        goto    delay__46
delay__46:
        goto    delay__44
        ; line_number = 368
        ; case 9
delay__38:
        ; # Do final wrap-up on multiply:
        ; line_number = 370
        ;  servo_low := servo_low + fines[servo]
        ; Delay at assignment is 0
        movf    delay__servo,w
        addlw   fines
        movwf   __fsr
        movf    __indf,w
        addwf   delay__servo_low,f
        ; line_number = 371
        ;  if _c start
        ; Delay at if is 5
        ; (after recombine) true_delay=1, false_delay=0 uniform_delay=true
        ; CASE: True.size=1 False.size=0
        btfsc   _c___byte, _c___bit
        ; line_number = 372
        ; servo_high := servo_high + 1
        ; Delay at assignment is 0
        incf    delay__servo_high,f
        ; code.delay=7 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=_c (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=7
        ; line_number = 371
        ;  if _c done
        ; #servo_high := 6
        ; #servo_low := 0
        ; line_number = 375
        ;  _tmr1l := 0
        ; Delay at assignment is 7
        movlw   0
        movwf   _tmr1l
        ; line_number = 376
        ;  _tmr1h := servo_high ^ 0xff
        ; Delay at assignment is 9
        movlw   255
        xorwf   delay__servo_high,w
        movwf   _tmr1h
        ; line_number = 377
        ;  _tmr1l := servo_low ^ 0xff
        ; Delay at assignment is 12
        movlw   255
        xorwf   delay__servo_low,w
        movwf   _tmr1l
        ; line_number = 378
        ;  if servo@1 start
        ; Delay at if is 15
delay__select__19___byte equ delay__servo
delay__select__19___bit equ 1
        ; (after recombine) true_delay=6, false_delay=6 uniform_delay=true
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=8 false_code_size=8
        btfss   delay__select__19___byte, delay__select__19___bit
        goto    delay__20
        ; line_number = 379
        ; if servo@0 start
        ; Delay at if is 0
delay__select__16___byte equ delay__servo
delay__select__16___bit equ 0
        ; (after recombine) true_delay=2, false_delay=2 uniform_delay=true
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=2 false_code_size=2
        btfss   delay__select__16___byte, delay__select__16___bit
        goto    delay__17
        ; line_number = 380
        ; if enables@3 start
        ; Delay at if is 0
delay__select__15___byte equ enables
delay__select__15___bit equ 3
        ; (after recombine) true_delay=1, false_delay=0 uniform_delay=true
        ; CASE: True.size=1 False.size=0
        btfsc   delay__select__15___byte, delay__select__15___bit
        ; line_number = 381
        ; servo3 := 1
        ; Delay at assignment is 0
        bsf     servo3___byte, servo3___bit
        ; code.delay=2 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=delay__select__15 (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=2
        ; line_number = 380
        ; if enables@3 done
        goto    delay__18
delay__17:
        ; line_number = 383
        ; if enables@2 start
        ; Delay at if is 0
delay__select__14___byte equ enables
delay__select__14___bit equ 2
        ; (after recombine) true_delay=1, false_delay=0 uniform_delay=true
        ; CASE: True.size=1 False.size=0
        btfsc   delay__select__14___byte, delay__select__14___bit
        ; line_number = 384
        ; servo2 := 1
        ; Delay at assignment is 0
        bsf     servo2___byte, servo2___bit
        ; code.delay=2 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=delay__select__14 (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=2
        ; line_number = 383
        ; if enables@2 done
        nop     
delay__18:
        ; code.delay=6 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=delay__select__16 (data:X0=>X0 code:XX=>XX)
        ; if final true delay=2 false delay=2 code delay=6
        ; line_number = 379
        ; if servo@0 done
        goto    delay__21
delay__20:
        ; line_number = 386
        ; if servo@0 start
        ; Delay at if is 0
delay__select__11___byte equ delay__servo
delay__select__11___bit equ 0
        ; (after recombine) true_delay=2, false_delay=2 uniform_delay=true
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=2 false_code_size=2
        btfss   delay__select__11___byte, delay__select__11___bit
        goto    delay__12
        ; line_number = 387
        ; if enables@1 start
        ; Delay at if is 0
delay__select__10___byte equ enables
delay__select__10___bit equ 1
        ; (after recombine) true_delay=1, false_delay=0 uniform_delay=true
        ; CASE: True.size=1 False.size=0
        btfsc   delay__select__10___byte, delay__select__10___bit
        ; line_number = 388
        ; servo1 := 1
        ; Delay at assignment is 0
        bsf     servo1___byte, servo1___bit
        ; code.delay=2 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=delay__select__10 (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=2
        ; line_number = 387
        ; if enables@1 done
        goto    delay__13
delay__12:
        ; line_number = 390
        ; if enables@0 start
        ; Delay at if is 0
delay__select__9___byte equ enables
delay__select__9___bit equ 0
        ; (after recombine) true_delay=1, false_delay=0 uniform_delay=true
        ; CASE: True.size=1 False.size=0
        btfsc   delay__select__9___byte, delay__select__9___bit
        ; line_number = 391
        ; servo0 := 1
        ; Delay at assignment is 0
        bsf     servo0___byte, servo0___bit
        ; code.delay=2 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=delay__select__9 (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=2
        ; line_number = 390
        ; if enables@0 done
        nop     
delay__13:
        ; code.delay=6 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=delay__select__11 (data:X0=>X0 code:XX=>XX)
        ; if final true delay=2 false delay=2 code delay=6
        ; line_number = 386
        ; if servo@0 done
        nop     
delay__21:
        ; code.delay=25 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=delay__select__19 (data:X0=>X0 code:XX=>XX)
        ; if final true delay=6 false delay=6 code delay=25
        ; line_number = 378
        ;  if servo@1 done
        ; Delay 2 cycles
        goto    delay__47
delay__47:
        goto    delay__44
        ; line_number = 392
        ; case 10
delay__39:
        ; line_number = 393
        ; if servo@1 start
        ; Delay at if is 0
delay__select__28___byte equ delay__servo
delay__select__28___bit equ 1
        ; (after recombine) true_delay=6, false_delay=6 uniform_delay=true
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=8 false_code_size=8
        btfss   delay__select__28___byte, delay__select__28___bit
        goto    delay__29
        ; line_number = 394
        ; if servo@0 start
        ; Delay at if is 0
delay__select__25___byte equ delay__servo
delay__select__25___bit equ 0
        ; (after recombine) true_delay=2, false_delay=2 uniform_delay=true
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=2 false_code_size=2
        btfss   delay__select__25___byte, delay__select__25___bit
        goto    delay__26
        ; line_number = 395
        ; _adcon0 := 0x1c
        ; Delay at assignment is 0
        movlw   28
        movwf   _adcon0
        goto    delay__27
delay__26:
        ; line_number = 397
        ; _adcon0 := 0x18
        ; Delay at assignment is 0
        movlw   24
        movwf   _adcon0
        nop     
delay__27:
        ; code.delay=6 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=delay__select__25 (data:X0=>X0 code:XX=>XX)
        ; if final true delay=2 false delay=2 code delay=6
        ; line_number = 394
        ; if servo@0 done
        goto    delay__30
delay__29:
        ; line_number = 399
        ; if servo@0 start
        ; Delay at if is 0
delay__select__22___byte equ delay__servo
delay__select__22___bit equ 0
        ; (after recombine) true_delay=2, false_delay=2 uniform_delay=true
        ; CASE: true_code_size > 1 && false_code_size > 1
        ; true_code_size=2 false_code_size=2
        btfss   delay__select__22___byte, delay__select__22___bit
        goto    delay__23
        ; line_number = 400
        ; _adcon0 := 0x4
        ; Delay at assignment is 0
        movlw   4
        movwf   _adcon0
        goto    delay__24
delay__23:
        ; line_number = 402
        ; _adcon0 := 0x10
        ; Delay at assignment is 0
        movlw   16
        movwf   _adcon0
        nop     
delay__24:
        ; code.delay=6 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=delay__select__22 (data:X0=>X0 code:XX=>XX)
        ; if final true delay=2 false delay=2 code delay=6
        ; line_number = 399
        ; if servo@0 done
        nop     
delay__30:
        ; code.delay=10 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=delay__select__28 (data:X0=>X0 code:XX=>XX)
        ; if final true delay=6 false delay=6 code delay=10
        ; line_number = 393
        ; if servo@1 done
        ; line_number = 403
        ; _adon := 1
        ; Delay at assignment is 10
        bsf     _adon___byte, _adon___bit
        ; Delay 16 cycles
        ; Delay loop takes 4 * 4 = 16 cycles
        movlw   4
delay__48:
        addlw   255
        btfss   __z___byte, __z___bit
        goto    delay__48
        goto    delay__44
        ; line_number = 404
        ; case 11
delay__40:
        ; line_number = 405
        ; _go := 1
        ; Delay at assignment is 0
        bsf     _go___byte, _go___bit
        ; Delay 26 cycles
        ; Delay loop takes 6 * 4 = 24 cycles
        movlw   6
delay__49:
        addlw   255
        btfss   __z___byte, __z___bit
        goto    delay__49
        goto    delay__50
delay__50:
        goto    delay__44
        ; line_number = 406
        ; case 12
delay__41:
        ; line_number = 407
        ; analogs[servo] := _adresh
        ; Delay at assignment is 0
        ; index_fsr_first
        movf    delay__servo,w
        addlw   analogs
        movwf   __fsr
        movf    _adresh,w
        movwf   __indf
        ; line_number = 408
        ;  if !calibrate start
        ; Delay at if is 5
        ; (after recombine) true_delay=0, false_delay=8 uniform_delay=true
        ; CASE: true.size=0 && false.size>1
        ; bit_code_emit_helper1: body_code.size=8 true_test=false body_code.delay=8 (uniform delay)
        btfss   calibrate___byte, calibrate___bit
        goto    delay__31
        ; Delay 7 cycles
        goto    delay__33
delay__33:
        goto    delay__34
delay__34:
        goto    delay__35
delay__35:
        nop     
        goto    delay__32
delay__31:
        ; line_number = 409
        ; enables := 3
        ; Delay at assignment is 0
        movlw   3
        movwf   enables
        ; line_number = 410
        ;  temporary := analogs[2]
        ; Delay at assignment is 2
        movf    analogs+2,w
        movwf   delay__temporary
        ; line_number = 411
        ;  positions[0] := temporary
        ; Delay at assignment is 4
        movf    delay__temporary,w
        movwf   positions
        ; line_number = 412
        ;  positions[1] := analogs[3]
        ; Delay at assignment is 6
        movf    analogs+3,w
        movwf   positions+1
delay__32:
        ; code.delay=16 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=calibrate (data:X0=>X0 code:XX=>XX)
        ; if final true delay=8 false delay=0 code delay=16
        ; line_number = 408
        ;  if !calibrate done
        ; Delay 11 cycles
        ; Delay loop takes 2 * 4 = 8 cycles
        movlw   2
delay__51:
        addlw   255
        btfss   __z___byte, __z___bit
        goto    delay__51
        goto    delay__52
delay__52:
        nop     
        goto    delay__44
        ; line_number = 413
        ; case 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31
delay__42:
        ; line_number = 415
        ; do_nothing
        ; Delay 27 cycles
        ; Delay loop takes 6 * 4 = 24 cycles
        movlw   6
delay__53:
        addlw   255
        btfss   __z___byte, __z___bit
        goto    delay__53
        goto    delay__54
delay__54:
        nop     
        goto    delay__44
delay__44:
        ; switch end:(data:X0=>X? code:XX=>XX)
        ; line_number = 347
        ;  switch counter & 0x1f done
        ; #debug_out := 0


        ; delay after procedure statements=47
        bcf     __rp0___byte, __rp0___bit
        ; Delay 83 cycles
        ; Delay loop takes 20 * 4 = 80 cycles
        movlw   20
delay__55:
        addlw   255
        btfss   __z___byte, __z___bit
        goto    delay__55
        goto    delay__56
delay__56:
        nop     
        ; Implied return
        retlw   0
        ; Final delay = 133




        ; line_number = 419
        ; procedure mask_get
mask_get:
        ; Last argument is sitting in W; save into argument variable
        movwf   mask_get__bit_number
        ; delay=4294967295
        ; line_number = 420
        ; argument bit_number byte
mask_get__bit_number equ shared___globals+49
        ; line_number = 421
        ;  returns byte

        ; # This procedure will return the mask for {bit_number}.

        ; before procedure statements delay=non-uniform, bit states=(data:X0=>X0 code:XX=>XX)
        ; line_number = 425
        ;  switch bit_number start
        movlw   mask_get__5>>8
        movwf   __pclath
        movf    mask_get__bit_number,w
        addlw   mask_get__5
        movwf   __pcl
        ; page_group 4
mask_get__5:
        ; line_number = 427
        ; return 1 start
        ; line_number = 427
        retlw   1
        ; line_number = 427
        ; return 1 done
        ; line_number = 429
        ; return 2 start
        ; line_number = 429
        retlw   2
        ; line_number = 429
        ; return 2 done
        ; line_number = 431
        ; return 4 start
        ; line_number = 431
        retlw   4
        ; line_number = 431
        ; return 4 done
        ; line_number = 433
        ; return 8 start
        ; line_number = 433
        retlw   8
        ; line_number = 433
        ; return 8 done


mask_get__6:
        ; switch end:(data:X0=>X0 code:XX=>XX)
        ; line_number = 425
        ;  switch bit_number done
        ; delay after procedure statements=non-uniform
        ; Exiting procedure with no return(s); fail with infinite loop
mask_get__7:
        goto    mask_get__7




        ; line_number = 436
        ; constant zero8 = "\0,0,0,0,0,0,0,0\"
        ; zero8 = '\0,0,0,0,0,0,0,0\'
        ; line_number = 437
        ; constant module_name = "\7\Servo4H"
        ; module_name = '\7\Servo4H'
        ; line_number = 438
        ; constant vendor_name = "\13\Mondo-tronics"
        ; vendor_name = '\13\Mondo-tronics'

        ; line_number = 440
        ; string id = "\1,0,15,7,1,0,0,0\" ~ zero8 ~ zero8 ~ module_name ~ vendor_name start
        ; id = '\1,0,15,7,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7\Servo4H\13\Mondo-tronics'
id:
        ; Temporarily save index into FSR
        movwf   __fsr
        ; Initialize PCLATH to point to this code page
        movlw   id___base>>8
        movwf   __pclath
        ; Restore index from FSR
        movf    __fsr,w
        addlw   id___base
        ; Index to the correct return value
        movwf   __pcl
        ; page_group 46
        ; Add 41 NOP's until start of new page 
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
id___base:
        retlw   1
        retlw   0
        retlw   15
        retlw   7
        retlw   1
        retlw   0
        retlw   0
        retlw   0
        retlw   0
        retlw   0
        retlw   0
        retlw   0
        retlw   0
        retlw   0
        retlw   0
        retlw   0
        retlw   0
        retlw   0
        retlw   0
        retlw   0
        retlw   0
        retlw   0
        retlw   0
        retlw   0
        retlw   7
        retlw   83
        retlw   101
        retlw   114
        retlw   118
        retlw   111
        retlw   52
        retlw   72
        retlw   13
        retlw   77
        retlw   111
        retlw   110
        retlw   100
        retlw   111
        retlw   45
        retlw   116
        retlw   114
        retlw   111
        retlw   110
        retlw   105
        retlw   99
        retlw   115
        ; line_number = 440
        ; string id = "\1,0,15,7,1,0,0,0\" ~ zero8 ~ zero8 ~ module_name ~ vendor_name start

        ; Appending 2 delayed procedures to code bank 0
        ; buffer = 'bit_bang'
        ; line_number = 33
        ; procedure byte_get
byte_get:
        ; arguments_none
        ; line_number = 35
        ;  returns byte

        ; # This procedure will wait for a byte to be received from
        ; # serial_in_bit.  It calls the delay procedure for all delays.
        ; # This procedure will keep calling the {delay} routine until
        ; # data is received.

        ; line_number = 42
        ;  local count byte
byte_get__count equ shared___globals
        ; line_number = 43
        ;  local byte byte
byte_get__byte equ shared___globals+1

        ; # Why does the delay procedure wait for a third of bit?  Well, it
        ; # has to do with the loop immediately below.  If we catch the
        ; # start bit at the beginning of a 1/3 bit time, we will be
        ; # sampling data at approximately 1/3 of the way into each bit.
        ; # Conversely, if we catch the start near the end of a 1/3 bit
        ; # bit time, we will be sampling data at approximately 2/3 of the
        ; # way into each bit.  So, what this means is that our bit sample
        ; # times will be somewhere between 1/3 and 2/3 of bit (i.e. in
        ; # the middle of the bit.

        ; # It would be nice to tweak the code to shorter delay times
        ; # (1/4 bit, 1/5 bit, etc.) but then it gets too hard to get
        ; # the bookeeping done in the delay routine.  A PIC running at
        ; # 4MHz (=1MIPS), only has 138 instructions available for the
        ; # delay routine when at 1/3 of bit.

        ; # Wait for a start bit:
        ; before procedure statements delay=non-uniform, bit states=(data:X0=>X0 code:XX=>XX)
        ; line_number = 62
        ;  waiting := 1
        bsf     waiting___byte, waiting___bit
        ; line_number = 63
        ;  receiving := 1
        bsf     receiving___byte, receiving___bit
        ; line_number = 64
        ;  while serial_in start
byte_get__1:
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code.size = 0 && false_code.size > 1
        ; bit_code_emit_helper1: body_code.size=2 true_test=true body_code.delay=0 (non-uniform delay)
        btfss   serial_in___byte, serial_in___bit
        goto    byte_get__2
        ; line_number = 65
        ; delay instructions_per_delay - 3 start
        ; Delay expression evaluates to 135
        ; line_number = 66
        ; call delay()
        ; Delay at call is 0
        call    delay
        ; line_number = 65
        ; delay instructions_per_delay - 3 done
        goto    byte_get__1
        ; Recombine size1 = 0 || size2 = 0
byte_get__2:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=serial_in (data:X0=>X0 code:XX=>XX)
        ; line_number = 64
        ;  while serial_in done
        ; line_number = 67
        ; waiting := 0
        bcf     waiting___byte, waiting___bit

        ; # Clear out any preceeding interrupt condition:
        ; line_number = 70
        ;  serial_out := 1
        bsf     serial_out___byte, serial_out___bit

        ; # Skip over start bit:
        ; line_number = 73
        ;  delay instructions_per_bit - 2 start
        ; Delay expression evaluates to 414
        ; # There are two instructions of set-up for following loop_exactly:
        ; line_number = 75
        ;  call delay()
        ; Delay at call is 0
        call    delay
        ; line_number = 76
        ;  call delay()
        ; Delay at call is 135
        call    delay
        ; line_number = 77
        ;  call delay()
        ; Delay at call is 270
        call    delay
        ; line_number = 78
        ;  byte := 0
        ; Delay at assignment is 405
        movlw   0
        movwf   byte_get__byte

        ; Delay 7 cycles
        goto    byte_get__3
byte_get__3:
        goto    byte_get__4
byte_get__4:
        goto    byte_get__5
byte_get__5:
        nop     
        ; line_number = 73
        ;  delay instructions_per_bit - 2 done
        ; # Read in 8 bits of data:
        ; line_number = 81
        ;  loop_exactly 8 start
byte_get__6 equ shared___globals+53
        movlw   8
        movwf   byte_get__6
byte_get__7:
        ; # There are 3 instrucitons of loop_exactly overhead:
        ; line_number = 83
        ;  delay instructions_per_bit - 3 start
        ; Delay expression evaluates to 413
        ; line_number = 84
        ; call delay()
        ; Delay at call is 0
        call    delay
        ; line_number = 85
        ;  byte := byte >> 1
        ; Delay at assignment is 135
        ; Assignment of variable to self (no code needed)
        rrf     byte_get__byte,f
        bcf     byte_get__byte, 7
        ; line_number = 86
        ;  if serial_in start
        ; Delay at if is 137
        ; (after recombine) true_delay=1, false_delay=0 uniform_delay=true
        ; CASE: True.size=1 False.size=0
        btfsc   serial_in___byte, serial_in___bit
        ; line_number = 87
        ; byte@7 := 1
        ; Delay at assignment is 0
byte_get__select__8___byte equ byte_get__byte
byte_get__select__8___bit equ 7
        bsf     byte_get__select__8___byte, byte_get__select__8___bit
        ; code.delay=139 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=serial_in (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=0 code delay=139
        ; line_number = 86
        ;  if serial_in done
        ; line_number = 88
        ; call delay()
        ; Delay at call is 139
        call    delay
        ; line_number = 89
        ;  call delay()
        ; Delay at call is 274
        call    delay

        ; Delay 4 cycles
        goto    byte_get__9
byte_get__9:
        goto    byte_get__10
byte_get__10:
        ; line_number = 83
        ;  delay instructions_per_bit - 3 done
        ; line_number = 81
        ;  loop_exactly 8 wrap-up
        decfsz  byte_get__6,f
        goto    byte_get__7
        ; line_number = 81
        ;  loop_exactly 8 done
        ; # Skip over 2/3's of stop bit; 3 cycles for return:
        ; line_number = 92
        ;  delay instructions_per_delay*2 - 3 start
        ; Delay expression evaluates to 273
        ; line_number = 93
        ; call delay()
        ; Delay at call is 0
        call    delay
        ; line_number = 94
        ;  call delay()
        ; Delay at call is 135
        call    delay
        ; Delay 3 cycles
        goto    byte_get__11
byte_get__11:
        nop     
        ; line_number = 92
        ;  delay instructions_per_delay*2 - 3 done
        ; line_number = 95
        ; command_previous := command_last
        movf    command_last,w
        movwf   command_previous
        ; line_number = 96
        ;  command_last := byte
        movf    byte_get__byte,w
        movwf   command_last
        ; line_number = 97
        ;  serial_out := 1
        bsf     serial_out___byte, serial_out___bit
        ; line_number = 98
        ;  return byte start
        ; line_number = 98
        movf    byte_get__byte,w
        return  
        ; line_number = 98
        ;  return byte done


        ; delay after procedure statements=non-uniform




        ; line_number = 101
        ; procedure byte_put
byte_put:
        ; Last argument is sitting in W; save into argument variable
        movwf   byte_put__byte
        ; delay=4294967295
        ; line_number = 102
        ; argument byte byte
byte_put__byte equ shared___globals+3
        ; line_number = 103
        ;  returns_nothing

        ; # This procedure will send {byte} to {serial_out} pin.  The {delay}
        ; # procedure is called to provide the appropriate bit timing.

        ; line_number = 108
        ;  local count byte
byte_put__count equ shared___globals+2

        ; # {receiving} will be 1 if the last get/put routine was a get.
        ; # Before we start transmitting a response back, we want to ensure
        ; # that there has been enough time to turn the line around.
        ; # We delay the first 1/3 of a bit to pad out the 9-2/3 bits
        ; # from get_byte to 10 bits.  We delay another 3 bits just to
        ; # ensure that slow interpreters do not get overrun.
        ; before procedure statements delay=non-uniform, bit states=(data:X0=>X0 code:XX=>XX)
        ; line_number = 116
        ;  sent_previous := sent_last
        movf    sent_last,w
        movwf   sent_previous
        ; line_number = 117
        ;  sent_last := byte
        movf    byte_put__byte,w
        movwf   sent_last
        ; line_number = 118
        ;  if receiving start
        ; (after recombine) true_delay=non-uniform, false_delay=non-uniform
        ; CASE: true_code.size = 0 && false_code.size > 1
        ; bit_code_emit_helper1: body_code.size=4 true_test=true body_code.delay=0 (non-uniform delay)
        btfss   receiving___byte, receiving___bit
        goto    byte_put__3
        ; line_number = 119
        ; receiving := 0
        bcf     receiving___byte, receiving___bit
        ; # 10 = 1 + 3*3 = 3-1/3 extra bits of delay:
        ; line_number = 121
        ;  loop_exactly 10 start
byte_put__1 equ shared___globals+54
        movlw   10
        movwf   byte_put__1
byte_put__2:
        ; line_number = 122
        ; call delay()
        call    delay

        ; line_number = 121
        ;  loop_exactly 10 wrap-up
        decfsz  byte_put__1,f
        goto    byte_put__2
        ; line_number = 121
        ;  loop_exactly 10 done
        ; Recombine size1 = 0 || size2 = 0
byte_put__3:
        ; code.delay=4294967295 back_code.delay=4294967295
        ; <=bit_code_emit@symbol; sym=receiving (data:X0=>X0 code:XX=>XX)
        ; line_number = 118
        ;  if receiving done
        ; # Send the start bit:
        ; line_number = 125
        ;  delay instructions_per_bit - 2 start
        ; Delay expression evaluates to 414
        ; # The loop_exactly setup after this is 2 instructions:
        ; line_number = 127
        ;  serial_out := 0
        ; Delay at assignment is 0
        bcf     serial_out___byte, serial_out___bit
        ; line_number = 128
        ;  call delay()
        ; Delay at call is 1
        call    delay
        ; line_number = 129
        ;  call delay()
        ; Delay at call is 136
        call    delay
        ; line_number = 130
        ;  call delay()
        ; Delay at call is 271
        call    delay

        ; Delay 8 cycles
        ; Delay loop takes 2 * 4 = 8 cycles
        movlw   2
byte_put__4:
        addlw   255
        btfss   __z___byte, __z___bit
        goto    byte_put__4
        ; line_number = 125
        ;  delay instructions_per_bit - 2 done
        ; # Send the data:
        ; line_number = 133
        ;  loop_exactly 8 start
byte_put__5 equ shared___globals+54
        movlw   8
        movwf   byte_put__5
byte_put__6:
        ; # Loop_exactly overhead is 3 instructions:
        ; line_number = 135
        ;  delay instructions_per_bit - 3 start
        ; Delay expression evaluates to 413
        ; line_number = 136
        ; if byte@0 start
        ; Delay at if is 0
byte_put__select__7___byte equ byte_put__byte
byte_put__select__7___bit equ 0
        ; (after recombine) true_delay=1, false_delay=1 uniform_delay=true
        ; CASE: true_size=1 && false_size=1
        ; SUBCASE: Double test; true, then false
        btfsc   byte_put__select__7___byte, byte_put__select__7___bit
        ; line_number = 137
        ; serial_out := 1
        ; Delay at assignment is 0
        bsf     serial_out___byte, serial_out___bit
        btfss   byte_put__select__7___byte, byte_put__select__7___bit
        ; line_number = 139
        ; serial_out := 0
        ; Delay at assignment is 0
        bcf     serial_out___byte, serial_out___bit
        ; code.delay=4 back_code.delay=0
        ; <=bit_code_emit@symbol; sym=byte_put__select__7 (data:X0=>X0 code:XX=>XX)
        ; if final true delay=1 false delay=1 code delay=4
        ; line_number = 136
        ; if byte@0 done
        ; line_number = 140
        ; byte := byte >> 1
        ; Delay at assignment is 4
        ; Assignment of variable to self (no code needed)
        rrf     byte_put__byte,f
        bcf     byte_put__byte, 7
        ; line_number = 141
        ;  call delay()
        ; Delay at call is 6
        call    delay
        ; line_number = 142
        ;  call delay()
        ; Delay at call is 141
        call    delay
        ; line_number = 143
        ;  call delay()
        ; Delay at call is 276
        call    delay

        ; Delay 2 cycles
        goto    byte_put__8
byte_put__8:
        ; line_number = 135
        ;  delay instructions_per_bit - 3 done
        ; line_number = 133
        ;  loop_exactly 8 wrap-up
        decfsz  byte_put__5,f
        goto    byte_put__6
        ; line_number = 133
        ;  loop_exactly 8 done
        ; # Send the stop bit:
        ; line_number = 146
        ;  delay instructions_per_bit start
        ; Delay expression evaluates to 416
        ; line_number = 147
        ; serial_out := 1
        ; Delay at assignment is 0
        bsf     serial_out___byte, serial_out___bit
        ; line_number = 148
        ;  call delay()
        ; Delay at call is 1
        call    delay
        ; line_number = 149
        ;  call delay()
        ; Delay at call is 136
        call    delay
        ; line_number = 150
        ;  call delay()
        ; Delay at call is 271
        call    delay


        ; Delay 10 cycles
        ; Delay loop takes 2 * 4 = 8 cycles
        movlw   2
byte_put__9:
        addlw   255
        btfss   __z___byte, __z___bit
        goto    byte_put__9
        goto    byte_put__10
byte_put__10:
        ; line_number = 146
        ;  delay instructions_per_bit done
        ; delay after procedure statements=non-uniform
        ; Implied return
        retlw   0




        ; Configuration bits
        ; fill = 0x0
        ; bg = bg11 (0x3000)
        ; cpd = off (0x100)
        ; cp = on (0x0)
        ; boden = off (0x0)
        ; mclre = off (0x0)
        ; pwrte = off (0x10)
        ; wdte = on (0x8)
        ; fosc = int_no_clk (0x4)
        ; 12572 = 0x311c
        __config 12572
        ; Define start addresses for data regions
        ; Region="shared___globals" Address=32" Size=64 Bytes=55 Bits=2 Available=8
        ; Region="shared___globals" Address=32" Size=64 Bytes=55 Bits=2 Available=8
        ; Region="shared___globals" Address=32" Size=64 Bytes=55 Bits=2 Available=8
        end
