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

        ; Define start addresses for data regions
shared___globals equ 112
globals___0 equ 32
globals___1 equ 160
globals___2 equ 288
__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) 2005-2007 by Wayne C. Gramlich
        ; # All rights reserved.

        ; # This module uses a PIC16F688:
        ; buffer = 'irdistance2'
        ; line_number = 7
        ; library _pic16f688 entered

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

        ; buffer = '_pic16f688'
        ; line_number = 6
        ; processor pic16f688
        ; line_number = 7
        ; configure_address 0x2007
        ; line_number = 8
        ;  configure_fill 0x3000
        ; line_number = 9
        ;  configure_option fcmen: on = 0x800
        ; line_number = 10
        ;  configure_option fcmen: off = 0x000
        ; line_number = 11
        ;  configure_option ieso: on = 0x400
        ; line_number = 12
        ;  configure_option ieso: off = 0x000
        ; line_number = 13
        ;  configure_option boden: on = 0x300
        ; line_number = 14
        ;  configure_option boden: partial = 0x200
        ; line_number = 15
        ;  configure_option boden: sboden = 0x100
        ; line_number = 16
        ;  configure_option boden: off = 0x000
        ; line_number = 17
        ;  configure_option cpd: on = 0x00
        ; line_number = 18
        ;  configure_option cpd: off = 0x80
        ; line_number = 19
        ;  configure_option cp: on = 0x00
        ; line_number = 20
        ;  configure_option cp: off = 0x40
        ; line_number = 21
        ;  configure_option mclre: on = 0x20
        ; line_number = 22
        ;  configure_option mclre: off = 0x00
        ; line_number = 23
        ;  configure_option pwrte: on = 0x00
        ; line_number = 24
        ;  configure_option pwrte: off = 0x10
        ; line_number = 25
        ;  configure_option wdte: on = 8
        ; line_number = 26
        ;  configure_option wdte: off = 0
        ; line_number = 27
        ;  configure_option fosc: rc_clk = 7
        ; line_number = 28
        ;  configure_option fosc: rc_no_clk = 6
        ; line_number = 29
        ;  configure_option fosc: int_clk = 5
        ; line_number = 30
        ;  configure_option fosc: int_no_clk = 4
        ; line_number = 31
        ;  configure_option fosc: ec = 3
        ; line_number = 32
        ;  configure_option fosc: hs = 2
        ; line_number = 33
        ;  configure_option fosc: xt = 1
        ; line_number = 34
        ;  configure_option fosc: lp = 0

        ; line_number = 36
        ;  code_bank 0x0 : 0xfff
        ; line_number = 37
        ;  data_bank 0x0 : 0x7f
        ; line_number = 38
        ;  data_bank 0x80 : 0xff
        ; line_number = 39
        ;  data_bank 0x100 : 0x17f
        ; line_number = 40
        ;  data_bank 0x180 : 0x1ff

        ; line_number = 42
        ;  global_region 0x20 : 0x6f
        ; line_number = 43
        ;  icd2_global_region 0x20 : 0x6f

        ; line_number = 45
        ;  global_region 0xa0 : 0xef
        ; line_number = 46
        ;  icd2_global_region 0xa0 : 0xef

        ; line_number = 48
        ;  global_region 0x120 : 0x16f
        ; line_number = 49
        ;  icd2_global_region 0x120 : 0x164

        ; line_number = 51
        ;  shared_region 0x70 : 0x7f
        ; line_number = 52
        ;  icd2_shared_region 0x71 : 0x7f

        ; line_number = 54
        ;  interrupts_possible
        ; line_number = 55
        ;  packages pdip=14, soic=14, tssop=14
        ; line_number = 56
        ;  pin vdd, power_supply
        ; line_number = 57
        ; pin_bindings pdip=1, soic=1, tssop=1
        ; line_number = 58
        ; pin ra5_in, ra5_nc, ra5_out, t1cki, osc1, clkin
        ; line_number = 59
        ; pin_bindings pdip=2, soic=2, tssop=2
        ; line_number = 60
        ;  bind_to _porta@5
        ; line_number = 61
        ;  or_if ra5_in _trisa 32
        ; line_number = 62
        ;  or_if ra5_nc _trisa 32
        ; line_number = 63
        ;  or_if ra5_out _trisa 0
        ; line_number = 64
        ;  or_if osc1 _trisa 32
        ; line_number = 65
        ; pin ra4_in, ra4_nc, ra4_out, t1g, osc2, an3, clkout
        ; line_number = 66
        ; pin_bindings pdip=3, soic=3, tssop=3
        ; line_number = 67
        ;  bind_to _porta@4
        ; line_number = 68
        ;  or_if ra4_in _trisa 16
        ; line_number = 69
        ;  or_if ra4_nc _trisa 16
        ; line_number = 70
        ;  or_if ra4_out _trisa 0
        ; line_number = 71
        ;  or_if an3 _trisa 16
        ; line_number = 72
        ;  or_if osc2 _trisa 16
        ; line_number = 73
        ;  or_if ra4_in _ansel 0
        ; line_number = 74
        ;  or_if ra4_out _ansel 0
        ; line_number = 75
        ;  or_if an3 _ansel 8
        ; line_number = 76
        ;  or_if ra4_in _adcon0 0
        ; line_number = 77
        ;  or_if ra4_out _adcon0 0
        ; line_number = 78
        ;  or_if an3 _adcon0 1
        ; line_number = 79
        ; pin ra3_in, ra3_nc, mclr, vpp
        ; line_number = 80
        ; pin_bindings pdip=4, soic=4, tssop=4
        ; line_number = 81
        ;  bind_to _porta@3
        ; line_number = 82
        ;  or_if ra3_in _trisa 8
        ; line_number = 83
        ;  or_if ra3_nc _trisa 8
        ; line_number = 84
        ; pin rc5_in, rc5_nc, rc5_out, rx, dt
        ; line_number = 85
        ; pin_bindings pdip=5, soic=5, tssop=5
        ; line_number = 86
        ;  bind_to _portc@5
        ; line_number = 87
        ;  or_if rc5_in _trisc 32
        ; line_number = 88
        ;  or_if rc5_nc _trisc 32
        ; line_number = 89
        ;  or_if rc5_out _trisc 0
        ; line_number = 90
        ;  or_if rx _trisc 32
        ; line_number = 91
        ; pin rc4_in, rc4_nc, rc4_out, c2out, tx, ck
        ; line_number = 92
        ; pin_bindings pdip=6, soic=6, tssop=6
        ; line_number = 93
        ;  bind_to _portc@4
        ; line_number = 94
        ;  or_if rc4_in _trisc 16
        ; line_number = 95
        ;  or_if rc4_nc _trisc 16
        ; line_number = 96
        ;  or_if rc4_out _trisc 0
        ; # The UART documentation says TX must be marked as in input:
        ; line_number = 98
        ;  or_if tx _trisc 16
        ; line_number = 99
        ; pin rc3_in, rc3_nc, rc3_out, an7
        ; line_number = 100
        ; pin_bindings pdip=7, soic=7, tssop=7
        ; line_number = 101
        ;  bind_to _portc@3
        ; line_number = 102
        ;  or_if rc3_in _trisc 8
        ; line_number = 103
        ;  or_if rc3_nc _trisc 8
        ; line_number = 104
        ;  or_if rc3_out _trisc 0
        ; line_number = 105
        ;  or_if an7 _trisc 8
        ; line_number = 106
        ;  or_if rc3_in _ansel 0
        ; line_number = 107
        ;  or_if rc3_out _ansel 0
        ; line_number = 108
        ;  or_if an7 _ansel 128
        ; line_number = 109
        ;  or_if rc3_in _adcon0 0
        ; line_number = 110
        ;  or_if rc3_out _adcon0 0
        ; line_number = 111
        ;  or_if an7 _adcon0 1
        ; line_number = 112
        ; pin rc2_in, rc2_nc, rc2_out, an6
        ; line_number = 113
        ; pin_bindings pdip=8, soic=8, tssop=8
        ; line_number = 114
        ;  bind_to _portc@2
        ; line_number = 115
        ;  or_if rc2_in _trisc 4
        ; line_number = 116
        ;  or_if rc2_nc _trisc 4
        ; line_number = 117
        ;  or_if rc2_out _trisc 0
        ; line_number = 118
        ;  or_if an6 _trisc 4
        ; line_number = 119
        ;  or_if rc2_in _ansel 0
        ; line_number = 120
        ;  or_if rc2_out _ansel 0
        ; line_number = 121
        ;  or_if an6 _ansel 64
        ; line_number = 122
        ;  or_if rc2_in _adcon0 0
        ; line_number = 123
        ;  or_if rc2_out _adcon0 0
        ; line_number = 124
        ;  or_if an6 _adcon0 1
        ; line_number = 125
        ; pin rc1_in, rc1_nc, rc1_out, an5, c2in_minus
        ; line_number = 126
        ; pin_bindings pdip=9, soic=9, tssop=9
        ; line_number = 127
        ;  bind_to _portc@1
        ; line_number = 128
        ;  or_if rc1_in _trisc 2
        ; line_number = 129
        ;  or_if rc1_nc _trisc 2
        ; line_number = 130
        ;  or_if rc1_out _trisc 0
        ; line_number = 131
        ;  or_if rc1_in _cmcon0 7
        ; line_number = 132
        ;  or_if rc1_out _cmcon0 7
        ; line_number = 133
        ;  or_if an5 _trisc 2
        ; line_number = 134
        ;  or_if rc1_in _ansel 0
        ; line_number = 135
        ;  or_if rc1_out _ansel 0
        ; line_number = 136
        ;  or_if an5 _ansel 32
        ; line_number = 137
        ;  or_if rc1_in _adcon0 0
        ; line_number = 138
        ;  or_if rc1_out _adcon0 0
        ; line_number = 139
        ;  or_if an5 _adcon0 1
        ; line_number = 140
        ; pin rc0_in, rc0_nc, rc0_out, an4, c2in_plus
        ; line_number = 141
        ; pin_bindings pdip=10, soic=10, tssop=10
        ; line_number = 142
        ;  bind_to _portc@0
        ; line_number = 143
        ;  or_if rc0_in _trisc 1
        ; line_number = 144
        ;  or_if rc0_nc _trisc 1
        ; line_number = 145
        ;  or_if rc0_out _trisc 0
        ; line_number = 146
        ;  or_if rc0_in _cmcon0 7
        ; line_number = 147
        ;  or_if rc0_out _cmcon0 7
        ; line_number = 148
        ;  or_if an4 _trisc 1
        ; line_number = 149
        ;  or_if rc0_in _ansel 0
        ; line_number = 150
        ;  or_if rc0_out _ansel 0
        ; line_number = 151
        ;  or_if an4 _ansel 16
        ; line_number = 152
        ;  or_if rc0_in _adcon0 0
        ; line_number = 153
        ;  or_if rc0_out _adcon0 0
        ; line_number = 154
        ;  or_if an4 _adcon0 1
        ; line_number = 155
        ; pin ra2_in, ra2_nc, ra2_out, an2, c1out, t0cki, int
        ; line_number = 156
        ; pin_bindings pdip=11, soic=11, tssop=11
        ; line_number = 157
        ;  bind_to _porta@2
        ; line_number = 158
        ;  or_if ra2_in _trisa 4
        ; line_number = 159
        ;  or_if ra2_nc _trisa 4
        ; line_number = 160
        ;  or_if ra2_out _trisa 0
        ; line_number = 161
        ;  or_if an2 _trisa 4
        ; line_number = 162
        ;  or_if ra2_in _ansel 0
        ; line_number = 163
        ;  or_if ra2_out _ansel 0
        ; line_number = 164
        ;  or_if an2 _ansel 4
        ; line_number = 165
        ;  or_if ra2_in _adcon0 0
        ; line_number = 166
        ;  or_if ra2_out _adcon0 0
        ; line_number = 167
        ;  or_if an2 _adcon0 1
        ; line_number = 168
        ; pin ra1_in, ra1_nc, ra1_out, an1, c1in_minus, vref, icspclk
        ; line_number = 169
        ; pin_bindings pdip=12, soic=12, tssop=12
        ; line_number = 170
        ;  bind_to _porta@1
        ; line_number = 171
        ;  or_if ra1_in _trisa 2
        ; line_number = 172
        ;  or_if ra1_nc _trisa 2
        ; line_number = 173
        ;  or_if ra1_out _trisa 0
        ; line_number = 174
        ;  or_if ra1_in _cmcon0 7
        ; line_number = 175
        ;  or_if ra1_out _cmcon0 7
        ; line_number = 176
        ;  or_if an1 _trisa 2
        ; line_number = 177
        ;  or_if vref _trisa 2
        ; line_number = 178
        ;  or_if ra1_in _ansel 0
        ; line_number = 179
        ;  or_if ra1_out _ansel 0
        ; line_number = 180
        ;  or_if an1 _ansel 2
        ; line_number = 181
        ;  or_if vref _ansel 2
        ; line_number = 182
        ;  or_if ra1_in _adcon0 0
        ; line_number = 183
        ;  or_if ra1_out _adcon0 0
        ; line_number = 184
        ;  or_if an1 _adcon0 1		# Turn on _addon
        ; line_number = 185
        ;  or_if vref _adcon0 1		# Turn on _addon
        ; line_number = 186
        ;  or_if vref _adcon0 64		# Turn of _vcfg
        ; line_number = 187
        ; pin ra0_in, ra0_nc, ra0_out, an0, c1in_plus, icspdat, ulpwu
        ; line_number = 188
        ; pin_bindings pdip=13, soic=13, tssop=13
        ; line_number = 189
        ;  bind_to _porta@0
        ; line_number = 190
        ;  or_if ra0_in _trisa 1
        ; line_number = 191
        ;  or_if ra0_nc _trisa 1
        ; line_number = 192
        ;  or_if ra0_out _trisa 0
        ; line_number = 193
        ;  or_if ra0_in _cmcon0 7
        ; line_number = 194
        ;  or_if ra0_out _cmcon0 7
        ; line_number = 195
        ;  or_if an0 _trisa 1
        ; line_number = 196
        ;  or_if ra0_in _ansel 0
        ; line_number = 197
        ;  or_if ra0_out _ansel 0
        ; line_number = 198
        ;  or_if an0 _ansel 1
        ; line_number = 199
        ;  or_if ra0_in _adcon0 0
        ; line_number = 200
        ;  or_if ra0_out _adcon0 0
        ; line_number = 201
        ;  or_if an0 _adcon0 1
        ; line_number = 202
        ; pin vss, ground
        ; line_number = 203
        ; pin_bindings pdip=14, soic=14, tssop=14

        ; line_number = 205
        ; library _standard entered

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

        ; # Standard definition for uCL:

        ; buffer = '_standard'
        ; line_number = 8
        ; constant _true = (1 = 1)
_true equ 1
        ; line_number = 9
        ; constant _false = (0 != 0)
_false equ 0


        ; buffer = '_pic16f688'
        ; line_number = 205
        ; library _standard exited


        ; # Register/bit bindings:

        ; # Databank 0 (0x0 - 0x7f):

        ; line_number = 216
        ; register _indf = 
_indf equ 0

        ; line_number = 218
        ; register _tmr0 = 
_tmr0 equ 1

        ; line_number = 220
        ; register _pcl = 
_pcl equ 2

        ; line_number = 222
        ; register _status = 
_status equ 3
        ; line_number = 223
        ; bind _irp = _status@7
_irp___byte equ _status
_irp___bit equ 7
        ; line_number = 224
        ; bind _rp1 = _status@5
_rp1___byte equ _status
_rp1___bit equ 5
        ; line_number = 225
        ; bind _rp0 = _status@5
_rp0___byte equ _status
_rp0___bit equ 5
        ; line_number = 226
        ; bind _to = _status@4
_to___byte equ _status
_to___bit equ 4
        ; line_number = 227
        ; bind _pd = _status@3
_pd___byte equ _status
_pd___bit equ 3
        ; line_number = 228
        ; bind _z = _status@2
_z___byte equ _status
_z___bit equ 2
        ; line_number = 229
        ; bind _dc = _status@1
_dc___byte equ _status
_dc___bit equ 1
        ; line_number = 230
        ; bind _c = _status@0
_c___byte equ _status
_c___bit equ 0

        ; line_number = 232
        ; register _fsr = 
_fsr equ 4

        ; line_number = 234
        ; register _porta = 
_porta equ 5
        ; line_number = 235
        ; register _ra = 
_ra equ 5
        ; line_number = 236
        ; bind _ra5 = _porta@5
_ra5___byte equ _porta
_ra5___bit equ 5
        ; line_number = 237
        ; bind _ra4 = _porta@4
_ra4___byte equ _porta
_ra4___bit equ 4
        ; line_number = 238
        ; bind _ra3 = _porta@3
_ra3___byte equ _porta
_ra3___bit equ 3
        ; line_number = 239
        ; bind _ra2 = _porta@2
_ra2___byte equ _porta
_ra2___bit equ 2
        ; line_number = 240
        ; bind _ra1 = _porta@1
_ra1___byte equ _porta
_ra1___bit equ 1
        ; line_number = 241
        ; bind _ra0 = _porta@0
_ra0___byte equ _porta
_ra0___bit equ 0

        ; line_number = 243
        ; register _portc = 
_portc equ 7
        ; line_number = 244
        ; register _rc = 
_rc equ 7
        ; line_number = 245
        ; bind _rc5 = _portc@5
_rc5___byte equ _portc
_rc5___bit equ 5
        ; line_number = 246
        ; bind _rc4 = _portc@4
_rc4___byte equ _portc
_rc4___bit equ 4
        ; line_number = 247
        ; bind _rc3 = _portc@3
_rc3___byte equ _portc
_rc3___bit equ 3
        ; line_number = 248
        ; bind _rc2 = _portc@2
_rc2___byte equ _portc
_rc2___bit equ 2
        ; line_number = 249
        ; bind _rc1 = _portc@1
_rc1___byte equ _portc
_rc1___bit equ 1
        ; line_number = 250
        ; bind _rc0 = _portc@0
_rc0___byte equ _portc
_rc0___bit equ 0

        ; line_number = 252
        ; register _pclath = 
_pclath equ 10

        ; line_number = 254
        ; register _intcon = 
_intcon equ 11
        ; line_number = 255
        ; bind _gie = _intcon@7
_gie___byte equ _intcon
_gie___bit equ 7
        ; line_number = 256
        ; bind _peie = _intcon@6
_peie___byte equ _intcon
_peie___bit equ 6
        ; line_number = 257
        ; bind _t0ie = _intcon@5
_t0ie___byte equ _intcon
_t0ie___bit equ 5
        ; line_number = 258
        ; bind _inte = _intcon@4
_inte___byte equ _intcon
_inte___bit equ 4
        ; line_number = 259
        ; bind _raie = _intcon@3
_raie___byte equ _intcon
_raie___bit equ 3
        ; line_number = 260
        ; bind _t0if = _intcon@2
_t0if___byte equ _intcon
_t0if___bit equ 2
        ; line_number = 261
        ; bind _intf = _intcon@1
_intf___byte equ _intcon
_intf___bit equ 1
        ; line_number = 262
        ; bind _raif = _intcon@0
_raif___byte equ _intcon
_raif___bit equ 0

        ; line_number = 264
        ; register _pir1 = 
_pir1 equ 12
        ; line_number = 265
        ; bind _eeif = _pir1@7
_eeif___byte equ _pir1
_eeif___bit equ 7
        ; line_number = 266
        ; bind _adif = _pir1@6
_adif___byte equ _pir1
_adif___bit equ 6
        ; line_number = 267
        ; bind _rcif = _pir1@5
_rcif___byte equ _pir1
_rcif___bit equ 5
        ; line_number = 268
        ; bind _c2if = _pir1@4
_c2if___byte equ _pir1
_c2if___bit equ 4
        ; line_number = 269
        ; bind _c1if = _pir1@3
_c1if___byte equ _pir1
_c1if___bit equ 3
        ; line_number = 270
        ; bind _osfif = _pir1@2
_osfif___byte equ _pir1
_osfif___bit equ 2
        ; line_number = 271
        ; bind _txif = _pir1@1
_txif___byte equ _pir1
_txif___bit equ 1
        ; line_number = 272
        ; bind _tmr1if = _pir1@0
_tmr1if___byte equ _pir1
_tmr1if___bit equ 0

        ; line_number = 274
        ; register _tmr1l = 
_tmr1l equ 14

        ; line_number = 276
        ; register _tmr1h = 
_tmr1h equ 15

        ; line_number = 278
        ; register _t1con = 
_t1con equ 16
        ; line_number = 279
        ; bind t1ginv = _t1con@7
t1ginv___byte equ _t1con
t1ginv___bit equ 7
        ; line_number = 280
        ; bind _tmr1ge = _t1con@6
_tmr1ge___byte equ _t1con
_tmr1ge___bit equ 6
        ; line_number = 281
        ; bind _t1ckps1 = _t1con@5
_t1ckps1___byte equ _t1con
_t1ckps1___bit equ 5
        ; line_number = 282
        ; bind _t1ckps0 = _t1con@4
_t1ckps0___byte equ _t1con
_t1ckps0___bit equ 4
        ; line_number = 283
        ; bind _t1oscen = _t1con@3
_t1oscen___byte equ _t1con
_t1oscen___bit equ 3
        ; line_number = 284
        ; bind _t1sync = _t1con@2
_t1sync___byte equ _t1con
_t1sync___bit equ 2
        ; line_number = 285
        ; bind _tmr1cs = _t1con@1
_tmr1cs___byte equ _t1con
_tmr1cs___bit equ 1
        ; line_number = 286
        ; bind _tmr1on = _t1con@0
_tmr1on___byte equ _t1con
_tmr1on___bit equ 0

        ; line_number = 288
        ; register _baudctl = 
_baudctl equ 17
        ; line_number = 289
        ; bind _abdovf = _baudctl@7
_abdovf___byte equ _baudctl
_abdovf___bit equ 7
        ; line_number = 290
        ; bind _rcidl = _baudctl@6
_rcidl___byte equ _baudctl
_rcidl___bit equ 6
        ; line_number = 291
        ; bind _sckp = _baudctl@4
_sckp___byte equ _baudctl
_sckp___bit equ 4
        ; line_number = 292
        ; bind _brg16 = _baudctl@3
_brg16___byte equ _baudctl
_brg16___bit equ 3
        ; line_number = 293
        ; bind _wue = _baudctl@1
_wue___byte equ _baudctl
_wue___bit equ 1
        ; line_number = 294
        ; bind _abden = _baudctl@0
_abden___byte equ _baudctl
_abden___bit equ 0

        ; line_number = 296
        ; register _spbrgh = 
_spbrgh equ 18

        ; line_number = 298
        ; register _spbrg = 
_spbrg equ 19

        ; line_number = 300
        ; register _rcreg = 
_rcreg equ 20

        ; line_number = 302
        ; register _txreg = 
_txreg equ 21

        ; line_number = 304
        ; register _txsta = 
_txsta equ 22
        ; line_number = 305
        ; bind _csrc = _txsta@7
_csrc___byte equ _txsta
_csrc___bit equ 7
        ; line_number = 306
        ; bind _tx9 = _txsta@6
_tx9___byte equ _txsta
_tx9___bit equ 6
        ; line_number = 307
        ; bind _txen = _txsta@5
_txen___byte equ _txsta
_txen___bit equ 5
        ; line_number = 308
        ; bind _sync = _txsta@4
_sync___byte equ _txsta
_sync___bit equ 4
        ; line_number = 309
        ; bind _sendb = _txsta@3
_sendb___byte equ _txsta
_sendb___bit equ 3
        ; line_number = 310
        ; bind _brgh = _txsta@2
_brgh___byte equ _txsta
_brgh___bit equ 2
        ; line_number = 311
        ; bind _trmt = _txsta@1
_trmt___byte equ _txsta
_trmt___bit equ 1
        ; line_number = 312
        ; bind _tx9d = _txsta@0
_tx9d___byte equ _txsta
_tx9d___bit equ 0

        ; line_number = 314
        ; register _rcsta = 
_rcsta equ 23
        ; line_number = 315
        ; bind _spen = _rcsta@7
_spen___byte equ _rcsta
_spen___bit equ 7
        ; line_number = 316
        ; bind _rx9 = _rcsta@6
_rx9___byte equ _rcsta
_rx9___bit equ 6
        ; line_number = 317
        ; bind _sren = _rcsta@5
_sren___byte equ _rcsta
_sren___bit equ 5
        ; line_number = 318
        ; bind _cren = _rcsta@4
_cren___byte equ _rcsta
_cren___bit equ 4
        ; line_number = 319
        ; bind _adden = _rcsta@3
_adden___byte equ _rcsta
_adden___bit equ 3
        ; line_number = 320
        ; bind _ferr = _rcsta@2
_ferr___byte equ _rcsta
_ferr___bit equ 2
        ; line_number = 321
        ; bind _oerr = _rcsta@1
_oerr___byte equ _rcsta
_oerr___bit equ 1
        ; line_number = 322
        ; bind _rx9d = _rcsta@0
_rx9d___byte equ _rcsta
_rx9d___bit equ 0

        ; line_number = 324
        ; register _wdtcon = 
_wdtcon equ 24
        ; line_number = 325
        ; bind _wdtps3 = _wdtcon@4
_wdtps3___byte equ _wdtcon
_wdtps3___bit equ 4
        ; line_number = 326
        ; bind _wdtps2 = _wdtcon@3
_wdtps2___byte equ _wdtcon
_wdtps2___bit equ 3
        ; line_number = 327
        ; bind _wdtps1 = _wdtcon@2
_wdtps1___byte equ _wdtcon
_wdtps1___bit equ 2
        ; line_number = 328
        ; bind _wdtps0 = _wdtcon@1
_wdtps0___byte equ _wdtcon
_wdtps0___bit equ 1
        ; line_number = 329
        ; bind _swdten = _wdtcon@0
_swdten___byte equ _wdtcon
_swdten___bit equ 0

        ; line_number = 331
        ; register _cmcon0 = 
_cmcon0 equ 25
        ; line_number = 332
        ; bind _c1out = _cmcon0@7
_c1out___byte equ _cmcon0
_c1out___bit equ 7
        ; line_number = 333
        ; bind _c2out = _cmcon0@6
_c2out___byte equ _cmcon0
_c2out___bit equ 6
        ; line_number = 334
        ; bind _c1inv = _cmcon0@5
_c1inv___byte equ _cmcon0
_c1inv___bit equ 5
        ; line_number = 335
        ; bind _c2inv = _cmcon0@4
_c2inv___byte equ _cmcon0
_c2inv___bit equ 4
        ; line_number = 336
        ; bind _cis = _cmcon0@3
_cis___byte equ _cmcon0
_cis___bit equ 3
        ; line_number = 337
        ; bind _cm2 = _cmcon0@2
_cm2___byte equ _cmcon0
_cm2___bit equ 2
        ; line_number = 338
        ; bind _cm1 = _cmcon0@1
_cm1___byte equ _cmcon0
_cm1___bit equ 1
        ; line_number = 339
        ; bind _cm0 = _cmcon0@0
_cm0___byte equ _cmcon0
_cm0___bit equ 0

        ; line_number = 341
        ; register _cmcon1 = 
_cmcon1 equ 26
        ; line_number = 342
        ; bind _t1gss = _cmcon1@0
_t1gss___byte equ _cmcon1
_t1gss___bit equ 0
        ; line_number = 343
        ; bind _c2sync = _cmcon1@1
_c2sync___byte equ _cmcon1
_c2sync___bit equ 1

        ; line_number = 345
        ; register _adresh = 
_adresh equ 30

        ; line_number = 347
        ; register _adcon0 = 
_adcon0 equ 31
        ; line_number = 348
        ; bind _adfm = _adcon0@7
_adfm___byte equ _adcon0
_adfm___bit equ 7
        ; line_number = 349
        ; bind _vcfg = _adcon0@6
_vcfg___byte equ _adcon0
_vcfg___bit equ 6
        ; line_number = 350
        ; bind _chs2 = _adcon0@4
_chs2___byte equ _adcon0
_chs2___bit equ 4
        ; line_number = 351
        ; bind _chs1 = _adcon0@3
_chs1___byte equ _adcon0
_chs1___bit equ 3
        ; line_number = 352
        ; bind _chs0 = _adcon0@2
_chs0___byte equ _adcon0
_chs0___bit equ 2
        ; line_number = 353
        ; bind _go = _adcon0@1
_go___byte equ _adcon0
_go___bit equ 1
        ; line_number = 354
        ; bind _adon = _adcon0@0
_adon___byte equ _adcon0
_adon___bit equ 0

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

        ; line_number = 358
        ; register _option_reg = 
_option_reg equ 129
        ; line_number = 359
        ; bind _rapu = _option_reg@7
_rapu___byte equ _option_reg
_rapu___bit equ 7
        ; line_number = 360
        ; bind _intedg = _option_reg@6
_intedg___byte equ _option_reg
_intedg___bit equ 6
        ; line_number = 361
        ; bind _t0cs = _option_reg@5
_t0cs___byte equ _option_reg
_t0cs___bit equ 5
        ; line_number = 362
        ; bind _t0se = _option_reg@4
_t0se___byte equ _option_reg
_t0se___bit equ 4
        ; line_number = 363
        ; bind _psa = _option_reg@3
_psa___byte equ _option_reg
_psa___bit equ 3
        ; line_number = 364
        ; bind _ps2 = _option_reg@2
_ps2___byte equ _option_reg
_ps2___bit equ 2
        ; line_number = 365
        ; bind _ps1 = _option_reg@1
_ps1___byte equ _option_reg
_ps1___bit equ 1
        ; line_number = 366
        ; bind _ps0 = _option_reg@0
_ps0___byte equ _option_reg
_ps0___bit equ 0

        ; line_number = 368
        ; register _trisa = 
_trisa equ 133
        ; line_number = 369
        ; bind _trisa5 = _trisa@5
_trisa5___byte equ _trisa
_trisa5___bit equ 5
        ; line_number = 370
        ; bind _trisa4 = _trisa@4
_trisa4___byte equ _trisa
_trisa4___bit equ 4
        ; line_number = 371
        ; bind _trisa3 = _trisa@3
_trisa3___byte equ _trisa
_trisa3___bit equ 3
        ; line_number = 372
        ; bind _trisa2 = _trisa@2
_trisa2___byte equ _trisa
_trisa2___bit equ 2
        ; line_number = 373
        ; bind _trisa1 = _trisa@1
_trisa1___byte equ _trisa
_trisa1___bit equ 1
        ; line_number = 374
        ; bind _trisa0 = _trisa@0
_trisa0___byte equ _trisa
_trisa0___bit equ 0

        ; line_number = 376
        ; register _trisc = 
_trisc equ 135
        ; line_number = 377
        ; bind _trisc5 = _trisc@5
_trisc5___byte equ _trisc
_trisc5___bit equ 5
        ; line_number = 378
        ; bind _trisc4 = _trisc@4
_trisc4___byte equ _trisc
_trisc4___bit equ 4
        ; line_number = 379
        ; bind _trisc3 = _trisc@3
_trisc3___byte equ _trisc
_trisc3___bit equ 3
        ; line_number = 380
        ; bind _trisc2 = _trisc@2
_trisc2___byte equ _trisc
_trisc2___bit equ 2
        ; line_number = 381
        ; bind _trisc1 = _trisc@1
_trisc1___byte equ _trisc
_trisc1___bit equ 1
        ; line_number = 382
        ; bind _trisc0 = _trisc@0
_trisc0___byte equ _trisc
_trisc0___bit equ 0

        ; line_number = 384
        ; register _pie1 = 
_pie1 equ 140
        ; line_number = 385
        ; bind _eeie = _pie1@7
_eeie___byte equ _pie1
_eeie___bit equ 7
        ; line_number = 386
        ; bind _adie = _pie1@6
_adie___byte equ _pie1
_adie___bit equ 6
        ; line_number = 387
        ; bind _rcie = _pie1@5
_rcie___byte equ _pie1
_rcie___bit equ 5
        ; line_number = 388
        ; bind _c2ie = _pie1@4
_c2ie___byte equ _pie1
_c2ie___bit equ 4
        ; line_number = 389
        ; bind _c1ie = _pie1@3
_c1ie___byte equ _pie1
_c1ie___bit equ 3
        ; line_number = 390
        ; bind _osfie = _pie1@2
_osfie___byte equ _pie1
_osfie___bit equ 2
        ; line_number = 391
        ; bind _txie = _pie1@1
_txie___byte equ _pie1
_txie___bit equ 1
        ; line_number = 392
        ; bind _tmr1ie = _pie1@0
_tmr1ie___byte equ _pie1
_tmr1ie___bit equ 0

        ; line_number = 394
        ; register _pcon = 
_pcon equ 142
        ; line_number = 395
        ; bind _ulpwue = _pcon@5
_ulpwue___byte equ _pcon
_ulpwue___bit equ 5
        ; line_number = 396
        ; bind _sboden = _pcon@4
_sboden___byte equ _pcon
_sboden___bit equ 4
        ; line_number = 397
        ; bind _por = _pcon@1
_por___byte equ _pcon
_por___bit equ 1
        ; line_number = 398
        ; bind _bod = _pcon@0
_bod___byte equ _pcon
_bod___bit equ 0

        ; line_number = 400
        ; register _osccon = 
_osccon equ 143
        ; line_number = 401
        ; bind _ircf2 = _osccon@6
_ircf2___byte equ _osccon
_ircf2___bit equ 6
        ; line_number = 402
        ; bind _ircf1 = _osccon@5
_ircf1___byte equ _osccon
_ircf1___bit equ 5
        ; line_number = 403
        ; bind _ircf0 = _osccon@4
_ircf0___byte equ _osccon
_ircf0___bit equ 4
        ; line_number = 404
        ; bind _osts = _osccon@3
_osts___byte equ _osccon
_osts___bit equ 3
        ; line_number = 405
        ; bind _hts = _osccon@2
_hts___byte equ _osccon
_hts___bit equ 2
        ; line_number = 406
        ; bind _lts = _osccon@3
_lts___byte equ _osccon
_lts___bit equ 3
        ; line_number = 407
        ; bind _scs = _osccon@2
_scs___byte equ _osccon
_scs___bit equ 2

        ; line_number = 409
        ; register _osctune = 
_osctune equ 144
        ; line_number = 410
        ; bind _tun4 = _osctune@4
_tun4___byte equ _osctune
_tun4___bit equ 4
        ; line_number = 411
        ; bind _tun3 = _osctune@3
_tun3___byte equ _osctune
_tun3___bit equ 3
        ; line_number = 412
        ; bind _tun2 = _osctune@2
_tun2___byte equ _osctune
_tun2___bit equ 2
        ; line_number = 413
        ; bind _tun1 = _osctune@1
_tun1___byte equ _osctune
_tun1___bit equ 1
        ; line_number = 414
        ; bind _tun0 = _osctune@0
_tun0___byte equ _osctune
_tun0___bit equ 0
        ; line_number = 415
        ; constant _osccal_lsb = 1
_osccal_lsb equ 1

        ; line_number = 417
        ; register _ansel = 
_ansel equ 145
        ; line_number = 418
        ; bind _ans7 = _ansel@7
_ans7___byte equ _ansel
_ans7___bit equ 7
        ; line_number = 419
        ; bind _ans6 = _ansel@6
_ans6___byte equ _ansel
_ans6___bit equ 6
        ; line_number = 420
        ; bind _ans5 = _ansel@5
_ans5___byte equ _ansel
_ans5___bit equ 5
        ; line_number = 421
        ; bind _ans4 = _ansel@4
_ans4___byte equ _ansel
_ans4___bit equ 4
        ; line_number = 422
        ; bind _ans3 = _ansel@3
_ans3___byte equ _ansel
_ans3___bit equ 3
        ; line_number = 423
        ; bind _ans2 = _ansel@2
_ans2___byte equ _ansel
_ans2___bit equ 2
        ; line_number = 424
        ; bind _ans1 = _ansel@1
_ans1___byte equ _ansel
_ans1___bit equ 1
        ; line_number = 425
        ; bind _ans0 = _ansel@0
_ans0___byte equ _ansel
_ans0___bit equ 0

        ; line_number = 427
        ; register _wpua = 
_wpua equ 149
        ; line_number = 428
        ; bind _wpua5 = _wpua@5
_wpua5___byte equ _wpua
_wpua5___bit equ 5
        ; line_number = 429
        ; bind _wpua4 = _wpua@4
_wpua4___byte equ _wpua
_wpua4___bit equ 4
        ; line_number = 430
        ; bind _wpua2 = _wpua@2
_wpua2___byte equ _wpua
_wpua2___bit equ 2
        ; line_number = 431
        ; bind _wpua1 = _wpua@1
_wpua1___byte equ _wpua
_wpua1___bit equ 1
        ; line_number = 432
        ; bind _wpua0 = _wpua@0
_wpua0___byte equ _wpua
_wpua0___bit equ 0

        ; line_number = 434
        ; register _ioca = 
_ioca equ 150
        ; line_number = 435
        ; bind _ioca5 = _ioca@5
_ioca5___byte equ _ioca
_ioca5___bit equ 5
        ; line_number = 436
        ; bind _ioca4 = _ioca@4
_ioca4___byte equ _ioca
_ioca4___bit equ 4
        ; line_number = 437
        ; bind _ioca3 = _ioca@3
_ioca3___byte equ _ioca
_ioca3___bit equ 3
        ; line_number = 438
        ; bind _ioca2 = _ioca@2
_ioca2___byte equ _ioca
_ioca2___bit equ 2
        ; line_number = 439
        ; bind _ioca1 = _ioca@1
_ioca1___byte equ _ioca
_ioca1___bit equ 1
        ; line_number = 440
        ; bind _ioca0 = _ioca@0
_ioca0___byte equ _ioca
_ioca0___bit equ 0

        ; line_number = 442
        ; register _eedath = 
_eedath equ 151

        ; line_number = 444
        ; register _eeadrh = 
_eeadrh equ 152

        ; line_number = 446
        ; register _vrcon = 
_vrcon equ 153
        ; line_number = 447
        ; bind _vren = _vrcon@7
_vren___byte equ _vrcon
_vren___bit equ 7
        ; line_number = 448
        ; bind _vrr = _vrcon@5
_vrr___byte equ _vrcon
_vrr___bit equ 5
        ; line_number = 449
        ; bind _vr3 = _vrcon@3
_vr3___byte equ _vrcon
_vr3___bit equ 3
        ; line_number = 450
        ; bind _vr2 = _vrcon@2
_vr2___byte equ _vrcon
_vr2___bit equ 2
        ; line_number = 451
        ; bind _vr1 = _vrcon@1
_vr1___byte equ _vrcon
_vr1___bit equ 1
        ; line_number = 452
        ; bind _vr0 = _vrcon@0
_vr0___byte equ _vrcon
_vr0___bit equ 0

        ; line_number = 454
        ; register _eedat = 
_eedat equ 154
        ; line_number = 455
        ; bind _eedat7 = _eedat@7
_eedat7___byte equ _eedat
_eedat7___bit equ 7
        ; line_number = 456
        ; bind _eedat6 = _eedat@6
_eedat6___byte equ _eedat
_eedat6___bit equ 6
        ; line_number = 457
        ; bind _eedat5 = _eedat@5
_eedat5___byte equ _eedat
_eedat5___bit equ 5
        ; line_number = 458
        ; bind _eedat4 = _eedat@4
_eedat4___byte equ _eedat
_eedat4___bit equ 4
        ; line_number = 459
        ; bind _eedat3 = _eedat@3
_eedat3___byte equ _eedat
_eedat3___bit equ 3
        ; line_number = 460
        ; bind _eedat2 = _eedat@2
_eedat2___byte equ _eedat
_eedat2___bit equ 2
        ; line_number = 461
        ; bind _eedat1 = _eedat@1
_eedat1___byte equ _eedat
_eedat1___bit equ 1
        ; line_number = 462
        ; bind _eedat0 = _eedat@0
_eedat0___byte equ _eedat
_eedat0___bit equ 0

        ; line_number = 464
        ; register _eeadr = 
_eeadr equ 155
        ; line_number = 465
        ; bind _eeadr7 = _eeadr@7
_eeadr7___byte equ _eeadr
_eeadr7___bit equ 7
        ; line_number = 466
        ; bind _eeadr6 = _eeadr@6
_eeadr6___byte equ _eeadr
_eeadr6___bit equ 6
        ; line_number = 467
        ; bind _eeadr5 = _eeadr@5
_eeadr5___byte equ _eeadr
_eeadr5___bit equ 5
        ; line_number = 468
        ; bind _eeadr4 = _eeadr@4
_eeadr4___byte equ _eeadr
_eeadr4___bit equ 4
        ; line_number = 469
        ; bind _eeadr3 = _eeadr@3
_eeadr3___byte equ _eeadr
_eeadr3___bit equ 3
        ; line_number = 470
        ; bind _eeadr2 = _eeadr@2
_eeadr2___byte equ _eeadr
_eeadr2___bit equ 2
        ; line_number = 471
        ; bind _eeadr1 = _eeadr@1
_eeadr1___byte equ _eeadr
_eeadr1___bit equ 1
        ; line_number = 472
        ; bind _eeadr0 = _eeadr@0
_eeadr0___byte equ _eeadr
_eeadr0___bit equ 0

        ; line_number = 474
        ; register _eecon1 = 
_eecon1 equ 156
        ; line_number = 475
        ; bind _eepgd = _eecon1@7
_eepgd___byte equ _eecon1
_eepgd___bit equ 7
        ; line_number = 476
        ; bind _wrerr = _eecon1@3
_wrerr___byte equ _eecon1
_wrerr___bit equ 3
        ; line_number = 477
        ; bind _wren = _eecon1@2
_wren___byte equ _eecon1
_wren___bit equ 2
        ; line_number = 478
        ; bind _wr = _eecon1@1
_wr___byte equ _eecon1
_wr___bit equ 1
        ; line_number = 479
        ; bind _rd = _eecon1@0
_rd___byte equ _eecon1
_rd___bit equ 0

        ; line_number = 481
        ; register _eecon2 = 
_eecon2 equ 157

        ; line_number = 483
        ; register _adresl = 
_adresl equ 158

        ; line_number = 485
        ; register _adcon1 = 
_adcon1 equ 159
        ; line_number = 486
        ; bind _adcs2 = _adcon1@6
_adcs2___byte equ _adcon1
_adcs2___bit equ 6
        ; line_number = 487
        ; bind _adcs1 = _adcon1@5
_adcs1___byte equ _adcon1
_adcs1___bit equ 5
        ; line_number = 488
        ; bind _adcs0 = _adcon1@4
_adcs0___byte equ _adcon1
_adcs0___bit equ 4

        ; # Data Bank 2 (0x100 - 0x17f):

        ; buffer = 'irdistance2'
        ; line_number = 7
        ; library _pic16f688 exited

        ; # The system is running at 20MHz:
        ; line_number = 10
        ; library clock20mhz 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 = 'clock20mhz'
        ; line_number = 9
        ; constant clock_rate = 20000000
clock_rate equ 20000000
        ; 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 5000000


        ; buffer = 'irdistance2'
        ; line_number = 10
        ; library clock20mhz exited
        ; # A microsecond takes 4 cycles at 20MHz:
        ; line_number = 12
        ; constant microsecond = 5
microsecond equ 5

        ; # The {_eusart} library defines some baud rate generator constants:
        ; line_number = 15
        ; constant _eusart_clock = clock_rate
_eusart_clock equ 20000000
        ; line_number = 16
        ; constant _eusart_factor = 4
_eusart_factor equ 4
        ; line_number = 17
        ; library _eusart entered

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

        ; # This library contains a bunch of definitions for the Enhanced Universal
        ; # Asynchronous Serial Receiver/Transmitter (EUSART) that is available
        ; # on many of the PIC microcontrollers.

        ; # In order to use this module you have to get two constants defined
        ; # BEFORE including this library -- {_eusart_factor} and {_eusart_clock}.
        ; # {_eusart_clock} should be set to the frequency oscillator for the chip.
        ; # {_eusart_factor} should be set to 4, 16, or 64 depending upon whether
        ; # the {_brg16} and {_brgh} bits are set.  Use the table below to select:
        ; #
        ; #        _{brg16}	{_brgh}		_{eusart_factor}
        ; #	    0		   0		      64
        ; #	    0		   1		      16
        ; #	    1		   0		      16
        ; #	    1		   1		       4

        ; # 2400 baud:
        ; buffer = '_eusart'
        ; line_number = 23
        ; constant _eusart_2400 = (_eusart_clock / (2400 * _eusart_factor)) - 1
_eusart_2400 equ 2082
        ; line_number = 24
        ; constant _eusart_2400_low = _eusart_2400 & 0xff
_eusart_2400_low equ 34
        ; line_number = 25
        ; constant _eusart_2400_high = _eusart_2400 >> 8
_eusart_2400_high equ 8
        ; line_number = 26
        ; constant _eusart_2400_index = 0
_eusart_2400_index equ 0
        ; # 4800 baud:
        ; line_number = 28
        ; constant _eusart_4800 = (_eusart_clock / (4800 * _eusart_factor)) - 1
_eusart_4800 equ 1040
        ; line_number = 29
        ; constant _eusart_4800_low = _eusart_4800 & 0xff
_eusart_4800_low equ 16
        ; line_number = 30
        ; constant _eusart_4800_high = _eusart_4800 >> 8
_eusart_4800_high equ 4
        ; line_number = 31
        ; constant _eusart_4800_index = 1
_eusart_4800_index equ 1
        ; # 9600 baud:
        ; line_number = 33
        ; constant _eusart_9600 = (_eusart_clock / (9600 * _eusart_factor)) - 1
_eusart_9600 equ 519
        ; line_number = 34
        ; constant _eusart_9600_low = _eusart_9600 & 0xff
_eusart_9600_low equ 7
        ; line_number = 35
        ; constant _eusart_9600_high = _eusart_9600 >> 8
_eusart_9600_high equ 2
        ; line_number = 36
        ; constant _eusart_9600_index = 2
_eusart_9600_index equ 2
        ; # 19200 baud:
        ; line_number = 38
        ; constant _eusart_19200 = (_eusart_clock / (19200 * _eusart_factor)) - 1
_eusart_19200 equ 259
        ; line_number = 39
        ; constant _eusart_19200_low = _eusart_19200 & 0xff
_eusart_19200_low equ 3
        ; line_number = 40
        ; constant _eusart_19200_high = _eusart_19200 >> 8
_eusart_19200_high equ 1
        ; line_number = 41
        ; constant _eusart_19200_index = 3
_eusart_19200_index equ 3
        ; # 38400 baud:
        ; line_number = 43
        ; constant _eusart_38400 = (_eusart_clock / (38400 * _eusart_factor)) - 1
_eusart_38400 equ 129
        ; line_number = 44
        ; constant _eusart_38400_low = _eusart_38400 & 0xff
_eusart_38400_low equ 129
        ; line_number = 45
        ; constant _eusart_38400_high = _eusart_38400 >> 8
_eusart_38400_high equ 0
        ; line_number = 46
        ; constant _eusart_38400_index = 4
_eusart_38400_index equ 4
        ; # 57600 baud:
        ; line_number = 48
        ; constant _eusart_57600 = (_eusart_clock / (57600 * _eusart_factor)) - 1
_eusart_57600 equ 85
        ; line_number = 49
        ; constant _eusart_57600_low = _eusart_57600 & 0xff
_eusart_57600_low equ 85
        ; line_number = 50
        ; constant _eusart_57600_high = _eusart_57600 >> 8
_eusart_57600_high equ 0
        ; line_number = 51
        ; constant _eusart_57600_index = 5
_eusart_57600_index equ 5
        ; # 115200 baud:
        ; line_number = 53
        ; constant _eusart_115200 = (_eusart_clock / (115200 * _eusart_factor)) - 1
_eusart_115200 equ 42
        ; line_number = 54
        ; constant _eusart_115200_low = _eusart_115200 & 0xff
_eusart_115200_low equ 42
        ; line_number = 55
        ; constant _eusart_115200_high = _eusart_115200 >> 8
_eusart_115200_high equ 0
        ; line_number = 56
        ; constant _eusart_115200_index = 6
_eusart_115200_index equ 6
        ; # 203400 baud:
        ; line_number = 58
        ; constant _eusart_230400 = (_eusart_clock / (230400 * _eusart_factor)) - 1
_eusart_230400 equ 20
        ; line_number = 59
        ; constant _eusart_230400_low = _eusart_230400 & 0xff
_eusart_230400_low equ 20
        ; line_number = 60
        ; constant _eusart_230400_high = _eusart_230400 >> 8
_eusart_230400_high equ 0
        ; line_number = 61
        ; constant _eusart_230400_index = 7
_eusart_230400_index equ 7
        ; # 406800 baud:
        ; line_number = 63
        ; constant _eusart_406800 = (_eusart_clock / (406800 * _eusart_factor)) - 1
_eusart_406800 equ 11
        ; line_number = 64
        ; constant _eusart_406800_low = _eusart_406800 & 0xff
_eusart_406800_low equ 11
        ; line_number = 65
        ; constant _eusart_406800_high = _eusart_406800 >> 8
_eusart_406800_high equ 0
        ; line_number = 66
        ; constant _eusart_406800_index = 8
_eusart_406800_index equ 8
        ; # 500000 baud:
        ; line_number = 68
        ; constant _eusart_500000 = (_eusart_clock / (500000 * _eusart_factor)) - 1
_eusart_500000 equ 9
        ; line_number = 69
        ; constant _eusart_500000_low = _eusart_500000 & 0xff
_eusart_500000_low equ 9
        ; line_number = 70
        ; constant _eusart_500000_high = _eusart_500000 >> 8
_eusart_500000_high equ 0
        ; line_number = 71
        ; constant _eusart_500000_index = 8
_eusart_500000_index equ 8
        ; # 62500 baud:
        ; line_number = 73
        ; constant _eusart_625000 = (_eusart_clock / (625000 * _eusart_factor)) - 1
_eusart_625000 equ 7
        ; line_number = 74
        ; constant _eusart_625000_low = _eusart_625000 & 0xff
_eusart_625000_low equ 7
        ; line_number = 75
        ; constant _eusart_625000_high = _eusart_625000 >> 8
_eusart_625000_high equ 0
        ; line_number = 76
        ; constant _eusart_625000_index = 9
_eusart_625000_index equ 9
        ; # 833333 baud:
        ; line_number = 78
        ; constant _eusart_833333 = (_eusart_clock / (833333 * _eusart_factor)) - 1
_eusart_833333 equ 5
        ; line_number = 79
        ; constant _eusart_833333_low = _eusart_833333 & 0xff
_eusart_833333_low equ 5
        ; line_number = 80
        ; constant _eusart_833333_high = _eusart_833333 >> 8
_eusart_833333_high equ 0
        ; line_number = 81
        ; constant _eusart_833333_index = 10
_eusart_833333_index equ 10
        ; # 1000000 baud (1MHz):
        ; line_number = 83
        ; constant _eusart_1000000 = (_eusart_clock / (1000000 * _eusart_factor)) - 1
_eusart_1000000 equ 4
        ; line_number = 84
        ; constant _eusart_1000000_low = _eusart_1000000 & 0xff
_eusart_1000000_low equ 4
        ; line_number = 85
        ; constant _eusart_1000000_high = _eusart_1000000 >> 8
_eusart_1000000_high equ 0
        ; line_number = 86
        ; constant _eusart_1000000_index = 11
_eusart_1000000_index equ 11

        ; buffer = 'irdistance2'
        ; line_number = 17
        ; library _eusart exited

        ; # The library of bus access routines for use by a PIC16F688.
        ; line_number = 20
        ; library rb2bus_pic16f688 entered

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

        ; # This module provides some procedures for accessing a RoboBricks2
        ; # bus via a UART.  It is speicialized for the PIC16F688.
        ; #
        ; # It defines the following procedure:
        ; #
        ; # {rb2bus_initialize}({address}) The procedure that initializes the UART
        ; #                                for bus access.

        ; # All other bus access procedures are defined in the {rb2bus} library
        ; # which is accessed below:
        ; buffer = 'rb2bus_pic16f688'
        ; line_number = 16
        ; library rb2bus entered

        ; # Copyright (c) 2006-2007 by Wayne C. Gramlich
        ; # All rights reserved.

        ; # This module provides some procedures for accessing a RoboBricks2
        ; # bus via a UART.
        ; #
        ; # This procedure defines the following procedures:
        ; #
        ; # {rb2bus_select_wait}  This procedure waits for the module to become selected
        ; # {rb2bus_deselect}     This procedure causes this module to be deselected.
        ; # {rb2bus_byte_get}     This procedure will get a byte form the bus.
        ; # {rb2bus_byte_put}     This procedure will send a byte to the bus.
        ; #
        ; # The global variable {rb2bus_error} is set to 1 whenever the procedures
        ; # feel like there is a command decoding error.
        ; #
        ; # The way to use these procedures is quite as follows:
        ; #
        ; #    # Comamnd byte variable:
        ; #    local command byte
        ; #
        ; #    # Other initialize code goes here:
        ; #
        ; #    # Process commands from bus master:
        ; #    loop_forever
        ; #        rb2bus_error := _true
        ; #	 while rb2bus_error
        ; #	     call rb2bus_select_wait()
        ; #	     command := rb2bus_byte_get()
        ; #
        ; #        # Decode command:
        ; #	 switch command >> 6
        ; #	   ...
        ; #             case 5:
        ; #	        # 0000 0101 (Foo command):
        ; #	          if !rb2bus_error
        ; #		      # Do foo command:
        ; #
        ; # The key concept behind these procedures is to make command
        ; # decoding for the slave module easy.  If the slave module
        ; # is in the middle of command decoding and the master suddenly
        ; # sends out a module select command, we need to gracefully recover
        ; # from the problem.  A command should only be executed if
        ; # {rb2bus_error} is not set.  If {rb2bus_error} is set, we want
        ; # to gracefully get back to the beginning of the loop without
        ; # doing any damage.  Once {rb2bus_error} is set, all calls to
        ; # {rb2bus_byte_get} return 0 and all calls to {rb2bus_byte_put}
        ; # do nothing.  At the beginning of the loop, {rb2bus_error} is
        ; # cleared by the {rb2bus_select_wait}() procedure and we have
        ; # recovered from the situation.

        ; buffer = 'rb2bus'
        ; line_number = 54
        ; library rb2_constants entered

        ; # Copyright (c) 2006-2007 by Wayne C. Gramlich.
        ; # All rights reserved.

        ; buffer = 'rb2_constants'
        ; line_number = 6
        ; constant rb2_ok = 0xa5
rb2_ok equ 165

        ; line_number = 8
        ; constant rb2_common_address_set = 0xfc
rb2_common_address_set equ 252
        ; line_number = 9
        ; constant rb2_common_id_next = 0xfd
rb2_common_id_next equ 253
        ; line_number = 10
        ; constant rb2_common_id_start = 0xfe
rb2_common_id_start equ 254
        ; line_number = 11
        ; constant rb2_common_deselect = 0xff
rb2_common_deselect equ 255

        ; line_number = 13
        ; constant rb2_laser1_address = 1
rb2_laser1_address equ 1

        ; line_number = 15
        ; constant rb2_minimotor2_address = 2
rb2_minimotor2_address equ 2
        ; line_number = 16
        ; constant rb2_midimotor2_address = 3
rb2_midimotor2_address equ 3
        ; line_number = 17
        ; constant rb2_motor0_speed_get = 0
rb2_motor0_speed_get equ 0
        ; line_number = 18
        ; constant rb2_motor0_speed_set = 1
rb2_motor0_speed_set equ 1
        ; line_number = 19
        ; constant rb2_motor1_speed_get = 2
rb2_motor1_speed_get equ 2
        ; line_number = 20
        ; constant rb2_motor1_speed_set = 3
rb2_motor1_speed_set equ 3
        ; line_number = 21
        ; constant rb2_duty_cycle_get = 4
rb2_duty_cycle_get equ 4
        ; line_number = 22
        ; constant rb2_duty_cycle_set = 8
rb2_duty_cycle_set equ 8

        ; line_number = 24
        ; constant rb2_irdistance2_address = 4
rb2_irdistance2_address equ 4
        ; line_number = 25
        ; constant rb2_irdistance2_raw0_get = 0
rb2_irdistance2_raw0_get equ 0
        ; line_number = 26
        ; constant rb2_irdistance2_raw1_get = 1
rb2_irdistance2_raw1_get equ 1
        ; line_number = 27
        ; constant rb2_irdistance2_smooth0_get = 2
rb2_irdistance2_smooth0_get equ 2
        ; line_number = 28
        ; constant rb2_irdistance2_smooth1_get = 3
rb2_irdistance2_smooth1_get equ 3
        ; line_number = 29
        ; constant rb2_irdistance2_linear0_get = 4
rb2_irdistance2_linear0_get equ 4
        ; line_number = 30
        ; constant rb2_irdistance2_linear1_get = 6
rb2_irdistance2_linear1_get equ 6

        ; line_number = 32
        ; constant rb2_shaft2_address = 5
rb2_shaft2_address equ 5
        ; line_number = 33
        ; constant rb2_shaft2_count_latch = 0
rb2_shaft2_count_latch equ 0
        ; line_number = 34
        ; constant rb2_shaft2_count_clear = 1
rb2_shaft2_count_clear equ 1
        ; line_number = 35
        ; constant rb2_shaft2_shaft0_high_get = 2
rb2_shaft2_shaft0_high_get equ 2
        ; line_number = 36
        ; constant rb2_shaft2_shaft1_high_get = 3
rb2_shaft2_shaft1_high_get equ 3
        ; line_number = 37
        ; constant rb2_shaft2_continue_get = 4
rb2_shaft2_continue_get equ 4
        ; line_number = 38
        ; constant rb2_shaft2_shaft0_low_get = rb2_shaft2_continue_get
rb2_shaft2_shaft0_low_get equ 4
        ; line_number = 39
        ; constant rb2_shaft2_shaft1_low_get = rb2_shaft2_continue_get
rb2_shaft2_shaft1_low_get equ 4
        ; line_number = 40
        ; constant rb2_shaft2_x_get = 0x10
rb2_shaft2_x_get equ 16
        ; line_number = 41
        ; constant rb2_shaft2_y_get = 0x11
rb2_shaft2_y_get equ 17
        ; line_number = 42
        ; constant rb2_shaft2_bearing16_get = 0x12
rb2_shaft2_bearing16_get equ 18
        ; line_number = 43
        ; constant rb2_shaft2_bearing8_get = 0x13
rb2_shaft2_bearing8_get equ 19
        ; line_number = 44
        ; constant rb2_shaft2_target_x_get = 0x14
rb2_shaft2_target_x_get equ 20
        ; line_number = 45
        ; constant rb2_shaft2_target_y_get = 0x15
rb2_shaft2_target_y_get equ 21
        ; line_number = 46
        ; constant rb2_shaft2_target_bearing16_get = 0x16
rb2_shaft2_target_bearing16_get equ 22
        ; line_number = 47
        ; constant rb2_shaft2_target_bearing8_get = 0x17
rb2_shaft2_target_bearing8_get equ 23
        ; line_number = 48
        ; constant rb2_shaft2_target_distance_get = 0x18
rb2_shaft2_target_distance_get equ 24
        ; line_number = 49
        ; constant rb2_shaft2_wheel_spacing_get = 0x19
rb2_shaft2_wheel_spacing_get equ 25
        ; line_number = 50
        ; constant rb2_shaft2_wheel_ticks_get = 0x1a
rb2_shaft2_wheel_ticks_get equ 26
        ; line_number = 51
        ; constant rb2_shaft2_wheel_diameter_get = 0x1b
rb2_shaft2_wheel_diameter_get equ 27
        ; line_number = 52
        ; constant rb2_shaft2_x_set = 0x20
rb2_shaft2_x_set equ 32
        ; line_number = 53
        ; constant rb2_shaft2_y_set = 0x21
rb2_shaft2_y_set equ 33
        ; line_number = 54
        ; constant rb2_shaft2_bearing16_set = 0x22
rb2_shaft2_bearing16_set equ 34
        ; line_number = 55
        ; constant rb2_shaft2_navigation_latch = 0x23
rb2_shaft2_navigation_latch equ 35
        ; line_number = 56
        ; constant rb2_shaft2_target_x_set = 0x24
rb2_shaft2_target_x_set equ 36
        ; line_number = 57
        ; constant rb2_shaft2_target_y_set = 0x25
rb2_shaft2_target_y_set equ 37
        ; line_number = 58
        ; constant rb2_shaft2_wheel_spacing_set = 0x29
rb2_shaft2_wheel_spacing_set equ 41
        ; line_number = 59
        ; constant rb2_shaft2_wheel_ticks_set = 0x2a
rb2_shaft2_wheel_ticks_set equ 42
        ; line_number = 60
        ; constant rb2_shaft2_wheel_diameter_set = 0x2b
rb2_shaft2_wheel_diameter_set equ 43


        ; line_number = 63
        ; constant rb2_orient5_address = 6
rb2_orient5_address equ 6

        ; line_number = 65
        ; constant rb2_compass8_address = 7
rb2_compass8_address equ 7

        ; line_number = 67
        ; constant rb2_io8_address = 8
rb2_io8_address equ 8
        ; line_number = 68
        ; constant rb2_io8_digital8_get = 0
rb2_io8_digital8_get equ 0
        ; line_number = 69
        ; constant rb2_io8_digital8_set = 1
rb2_io8_digital8_set equ 1
        ; line_number = 70
        ; constant rb2_io8_direction_get = 2
rb2_io8_direction_get equ 2
        ; line_number = 71
        ; constant rb2_io8_direction_set = 3
rb2_io8_direction_set equ 3
        ; line_number = 72
        ; constant rb2_io8_analog_mask_get = 4
rb2_io8_analog_mask_get equ 4
        ; line_number = 73
        ; constant rb2_io8_analog_mask_set = 5
rb2_io8_analog_mask_set equ 5
        ; line_number = 74
        ; constant rb2_io8_analog8_get = 0x10
rb2_io8_analog8_get equ 16
        ; line_number = 75
        ; constant rb2_io8_analog10_get = 0x18
rb2_io8_analog10_get equ 24
        ; line_number = 76
        ; constant rb2_low_set = 0x20
rb2_low_set equ 32
        ; line_number = 77
        ; constant rb2_high_set = 0x30
rb2_high_set equ 48

        ; line_number = 79
        ; constant rb2_sonar2_address = 9
rb2_sonar2_address equ 9

        ; line_number = 81
        ; constant rb2_voice1_address = 10
rb2_voice1_address equ 10

        ; line_number = 83
        ; constant rb2_servo4_address = 11
rb2_servo4_address equ 11
        ; line_number = 84
        ; constant rb2_servo4_servo0 = 0
rb2_servo4_servo0 equ 0
        ; line_number = 85
        ; constant rb2_servo4_servo1 = 1
rb2_servo4_servo1 equ 1
        ; line_number = 86
        ; constant rb2_servo4_servo2 = 2
rb2_servo4_servo2 equ 2
        ; line_number = 87
        ; constant rb2_servo4_servo3 = 3
rb2_servo4_servo3 equ 3
        ; line_number = 88
        ; constant rb2_servo4_quick_set = 0
rb2_servo4_quick_set equ 0
        ; line_number = 89
        ; constant rb2_servo4_quick_low = 0
rb2_servo4_quick_low equ 0
        ; line_number = 90
        ; constant rb2_servo4_quick_center = 40
rb2_servo4_quick_center equ 40
        ; line_number = 91
        ; constant rb2_servo4_quick_high = 0x7c
rb2_servo4_quick_high equ 124
        ; line_number = 92
        ; constant rb2_servo4_high_low_set = 0x80
rb2_servo4_high_low_set equ 128
        ; line_number = 93
        ; constant rb2_servo4_short_high_low_set = 0x84
rb2_servo4_short_high_low_set equ 132
        ; line_number = 94
        ; constant rb2_servo4_high_set = 0x88
rb2_servo4_high_set equ 136
        ; line_number = 95
        ; constant rb2_servo4_low_set = 0x8c
rb2_servo4_low_set equ 140
        ; line_number = 96
        ; constant rb2_servo4_enables_set = 0x90
rb2_servo4_enables_set equ 144
        ; line_number = 97
        ; constant rb2_servo4_enable0 = 1
rb2_servo4_enable0 equ 1
        ; line_number = 98
        ; constant rb2_servo4_enable1 = 2
rb2_servo4_enable1 equ 2
        ; line_number = 99
        ; constant rb2_servo4_enable2 = 4
rb2_servo4_enable2 equ 4
        ; line_number = 100
        ; constant rb2_servo4_enable3 = 8
rb2_servo4_enable3 equ 8
        ; line_number = 101
        ; constant rb2_servo4_enable_all = 0xf
rb2_servo4_enable_all equ 15
        ; line_number = 102
        ; constant rb2_servo4_enable_none = 0
rb2_servo4_enable_none equ 0
        ; line_number = 103
        ; constant rb2_servo4_high_get = 0xa0
rb2_servo4_high_get equ 160
        ; line_number = 104
        ; constant rb2_servo4_low_get = 0xa4
rb2_servo4_low_get equ 164
        ; line_number = 105
        ; constant rb2_servo4_enables_get = 0xa8
rb2_servo4_enables_get equ 168

        ; line_number = 107
        ; constant rb2_controller28_address = 28
rb2_controller28_address equ 28

        ; line_number = 109
        ; constant rb2_lcd32_address = 32
rb2_lcd32_address equ 32
        ; line_number = 110
        ; constant rb2_lcd32_new_line = 0xa
rb2_lcd32_new_line equ 10
        ; line_number = 111
        ; constant rb2_lcd32_form_feed = 0xc
rb2_lcd32_form_feed equ 12
        ; line_number = 112
        ; constant rb2_lcd32_carriage_return = 0xd
rb2_lcd32_carriage_return equ 13
        ; line_number = 113
        ; constant rb2_lcd32_column_set = 0x20
rb2_lcd32_column_set equ 32


        ; buffer = 'rb2bus'
        ; line_number = 54
        ; library rb2_constants exited
        ; line_number = 55
        ; library rb2bus_globals entered

        ; # Copyright (c) 2006-2007 by Wayne C. Gramlich
        ; # All rights reserved.

        ; # These are the global variables used by both the {rb2bus} and
        ; # the various {rb2bus_picXXXX} libraries.  Poll based firmware
        ; # uses both libraries, whereas interrupt driven software only
        ; # uses the {rb2bus_picXXX} libraries.

        ; buffer = 'rb2bus_globals'
        ; line_number = 11
        ; global rb2bus_selected bit	# 
rb2bus_selected___byte equ globals___0+79
rb2bus_selected___bit equ 0
        ; line_number = 12
        ; global rb2bus_error bit		# Global error bit
rb2bus_error___byte equ globals___0+79
rb2bus_error___bit equ 1
        ; line_number = 13
        ; global rb2bus_address byte	# Bus address to respond to
rb2bus_address equ globals___0
        ; line_number = 14
        ; global rb2bus_index byte	# Index into id information
rb2bus_index equ globals___0+1


        ; buffer = 'rb2bus'
        ; line_number = 55
        ; library rb2bus_globals exited

        ; Delaying code generation for procedure  rb2bus_select_wait
        ; Delaying code generation for procedure  rb2bus_deselect
        ; Delaying code generation for procedure  rb2bus_byte_get
        ; Delaying code generation for procedure  rb2bus_byte_put
        ; Delaying code generation for procedure  rb2bus_command

        ; buffer = 'rb2bus_pic16f688'
        ; line_number = 16
        ; library rb2bus exited

        ; Delaying code generation for procedure  rb2bus_initialize
        ; line_number = 62
        ; constant rb2bus_eedata_address = 0xfe
rb2bus_eedata_address equ 254

        ; Delaying code generation for procedure  rb2bus_eedata_read
        ; Delaying code generation for procedure  rb2bus_eedata_write

        ; buffer = 'irdistance2'
        ; line_number = 20
        ; library rb2bus_pic16f688 exited

        ; line_number = 23
        ; library _signed16 entered

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

        ; # This library implements the following procedures for general use
        ; # by users:
        ; #
        ; #    _signed16_from_byte(x)		return signed16(x) where x is a byte
        ; #    _signed16_from_byte2(x,y)		return signed16((x<<8)|y)
        ; #					where x,y are bytes
        ; #    _signed16_to_byte(x)		return x as an 8-bit byte
        ; #    _signed16_byte_high(x)		return bigh byte of x
        ; #    _signed16_byte_low(x))		return low byte of x
        ; #
        ; # The following additional procedures are implemented for use by the
        ; # compiler.
        ; #
        ; #    _signed16_pointer_load()		A := M[W]
        ; #    _signed16_pointer_add()		A := M[W]
        ; #    _signed16_pointer_divide()		A := A / M[W]
        ; #    _signed16_pointer_multiply()	A := A * M[W]
        ; #    _signed16_pointer_subtract()	A := A - M[W]
        ; #    _signed16_pointer_store()		M[W] := A
        ; #    _signed16_pointer_negate()		A := -A
        ; #    _signed16_pointer_swap()		A <=> M[W]
        ; #    _signed16_equals()			_z := A = 0.0
        ; #    _signed16_not_equal()		_z := A != 0.0
        ; #    _signed16_less_than()		_z := if A < 0.0
        ; #    _signed16_less_than_or_equal()	_z := A <= 0.0
        ; #    _signed16_greater_than()		_z := A > 0.0
        ; #    _signed16_greater_than_or_equal()	_z := A >= 0.0
        ; #
        ; # All of the procedures constants and labels in this library are
        ; # prefixed by "_signed16_".
        ; #
        ; # For the uCL compiler, signed16's are required to be aligned on even
        ; # memory addresses.  Since the PIC16F* processor can not access more
        ; # 512 bytes of RAM, this means that a pointer to signed16 can be represented
        ; # in 8-bits as (address>>1).  (Pretty, slick!)

        ; # FIXME: Make sure that none of the procedures allocate any argument storage!!!

        ; buffer = '_signed16'
        ; line_number = 44
        ; global _signed16_a0 byte	# A Register MSB
_signed16_a0 equ globals___1
        ; line_number = 45
        ; global _signed16_a1 byte	# A Register LSB
_signed16_a1 equ globals___1+1
        ; line_number = 46
        ; global _signed16_b0 byte	# B Register MSB
_signed16_b0 equ globals___1+2
        ; line_number = 47
        ; global _signed16_b1 byte	# B Register LSB
_signed16_b1 equ globals___1+3
        ; line_number = 48
        ; global _signed16_result3 byte	# Mulitply result MSB
_signed16_result3 equ globals___1+4
        ; line_number = 49
        ; global _signed16_result2 byte
_signed16_result2 equ globals___1+5
        ; line_number = 50
        ; global _signed16_result1 byte
_signed16_result1 equ globals___1+6
        ; line_number = 51
        ; global _signed16_result0 byte	# Mulitply resultLSB
_signed16_result0 equ globals___1+7
        ; line_number = 52
        ; global _signed16_neg_flag byte	# Negative flag
_signed16_neg_flag equ globals___1+8
        ; line_number = 53
        ; global _signed16_count byte	# Loop counter for divide
_signed16_count equ globals___1+9

        ; # Bindings for 
        ; line_number = 56
        ; bind _signed16_rem0 = _signed16_result2
_signed16_rem0 equ globals___1+5
        ; line_number = 57
        ; bind _signed16_rem1 = _signed16_result3
_signed16_rem1 equ globals___1+4
        ; line_number = 58
        ; bind _signed16_temp0 = _signed16_result0
_signed16_temp0 equ globals___1+7
        ; line_number = 59
        ; bind _signed16_temp1 = _signed16_result1
_signed16_temp1 equ globals___1+6
        ; line_number = 60
        ; bind _signed16_sign = _signed16_neg_flag
_signed16_sign equ globals___1+8

        ; Delaying code generation for procedure  _signed16_pointer_load
        ; Delaying code generation for procedure  _signed16_pointer_add
        ; Delaying code generation for procedure  _signed16_pointer_divide
        ; Delaying code generation for procedure  _signed16_pointer_multiply
        ; Delaying code generation for procedure  _signed16_pointer_subtract
        ; Delaying code generation for procedure  _signed16_pointer_store
        ; Delaying code generation for procedure  _signed16_negate
        ; Delaying code generation for procedure  _signed16_pointer_swap
        ; Delaying code generation for procedure  _signed16_from_byte
        ; Delaying code generation for procedure  _signed16_from_byte2
        ; Delaying code generation for procedure  _signed16_to_byte
        ; Delaying code generation for procedure  _signed16_byte_high
        ; Delaying code generation for procedure  _signed16_byte_low
        ; Delaying code generation for procedure  _signed16_equals
        ; Delaying code generation for procedure  _signed16_not_equal
        ; Delaying code generation for procedure  _signed16_less_than
        ; Delaying code generation for procedure  _signed16_less_than_or_equal
        ; Delaying code generation for procedure  _signed16_greater_than
        ; Delaying code generation for procedure  _signed16_greater_than_or_equal
        ; #*******************************************************************
        ; #                       Double Precision Division
        ; #
        ; #               ( Optimized for Code Size : Looped Code )
        ; #
        ; #*******************************************************************#
        ; #   Division:
        ; #	Input:
        ; #	    Numeratator=_signed16_a<0:1>
        ; #	    Denominator = _signed16_b<0:1>
        ; #	Outputs:
        ; #	    Quotiant = _signed16_a<0:1>
        ; #	    Remainder in _signed16_rem<0:1>
        ; #
        ; #   Sequence:
        ; #	(a) Load the Numerator in location _signed16_a<0:1> ( 16 bits )
        ; #	(b) Load the Denominator in location _signed16_b<0:1> ( 16 bits )
        ; #	(c) call _signed16_divide_raw
        ; #	(d) The 16 bit quotiant is in location _signed16_a<0:1>
        ; #	(e) The 16 bit remainder is in locations _signed16_rem<0:1>

        ; Delaying code generation for procedure  _signed16_divide_raw

        ; buffer = 'irdistance2'
        ; line_number = 23
        ; library _signed16 exited

        ; # This module uses 20Hz crystal resonator; hence mode HS ocs. config.:

        ; # Kludge to deal with the fact that RA4 is used as OSC2:
        ; line_number = 29
        ; constant io1_bit = 4
io1_bit equ 4

        ; # All pins on this package are used except RA3.
        ; line_number = 32
        ; package pdip
        ; line_number = 33
        ; pin 1 = power_supply
        ; line_number = 34
        ;  pin 2 = osc1
        ; line_number = 35
        ;  pin 3 = osc2
        ; line_number = 36
        ;  pin 4 = ra3_nc, name=nc1
nc1___byte equ _porta
nc1___bit equ 3
        ; line_number = 37
        ;  pin 5 = rx, name=rx, bit=rx_bit
rx___byte equ _portc
rx___bit equ 5
rx_bit equ 5
        ; line_number = 38
        ;  pin 6 = tx, name=tx, bit=tx_bit
tx___byte equ _portc
tx___bit equ 4
tx_bit equ 4
        ; line_number = 39
        ;  pin 7 = rc3_nc
        ; line_number = 40
        ;  pin 8 = an6, name=in1
in1___byte equ _portc
in1___bit equ 2
        ; line_number = 41
        ;  pin 9 = an5, name=in0
in0___byte equ _portc
in0___bit equ 1
        ; line_number = 42
        ;  pin 10 = rc0_nc
        ; line_number = 43
        ;  pin 11 = ra2_nc
        ; line_number = 44
        ;  pin 12 = vref
        ; line_number = 45
        ;  pin 13 = ra0_nc
        ; line_number = 46
        ;  pin 14 = ground

        ; line_number = 48
        ; origin 0
        org     0

        ; line_number = 51
        ; constant xxx = 30
xxx equ 30
        ; line_number = 52
        ; constant buffer_size = 8			# Rolling buffer size
buffer_size equ 8
        ; line_number = 53
        ; constant buffer_mask = buffer_size - 1		# Mask for buffer
buffer_mask equ 7
        ; line_number = 54
        ; global sensor0_high[buffer_size] array[byte]	# Sensor 0 MSB bytes
sensor0_high equ globals___0+12
        ; line_number = 55
        ; global sensor0_low[buffer_size] array[byte]	# Sensor 0 MSB bytes
sensor0_low equ globals___0+20
        ; line_number = 56
        ; global sensor1_high[buffer_size] array[byte]	# Sensor 0 MSB bytes
sensor1_high equ globals___0+28
        ; line_number = 57
        ; global sensor1_low[buffer_size] array[byte]	# Sensor 0 MSB bytes
sensor1_low equ globals___0+36
        ; line_number = 58
        ; global rolling_index byte			# Rolling index
rolling_index equ globals___0+44
        ; line_number = 59
        ; global state byte				# State index
state equ globals___0+45
        ; line_number = 60
        ; global adcon0_save byte				# Global value of _{adcon0}
adcon0_save equ globals___0+46

        ; line_number = 62
        ; global adc_lsbs[2] array[byte]
adc_lsbs equ globals___0+47
        ; line_number = 63
        ; global adc_msbs[2] array[byte]
adc_msbs equ globals___0+49


        ; line_number = 67
        ; global sensor0_map[8] array[byte]
sensor0_map equ globals___1+30
        ; line_number = 68
        ; global sensor1_map[8] array[byte]
sensor1_map equ globals___1+38


        ; line_number = 72
        ;info   72, 0
        ; procedure main
main:
        ; Initialize some registers
        movlw   65
        movwf   _adcon0
        movlw   98
        bsf     __rp0___byte, __rp0___bit
        movwf   _ansel
        movlw   63
        movwf   _trisa
        movlw   63
        movwf   _trisc
        ; arguments_none
        ; line_number = 74
        ;  returns_nothing

        ; # This procedure initializes everything and does command decoding.

        ; line_number = 78
        ;  local command byte
main__command equ globals___0+51
        ; line_number = 79
        ;  local channel byte
main__channel equ globals___0+52
        ; line_number = 80
        ;  local offset byte
main__offset equ globals___0+53
        ; line_number = 81
        ;  local result byte
main__result equ globals___0+54
        ; line_number = 82
        ;  local temp byte
main__temp equ globals___0+55
        ; line_number = 83
        ;  local maximum byte
main__maximum equ globals___0+56
        ; line_number = 84
        ;  local index byte
main__index equ globals___0+57
        ; line_number = 85
        ;  local xxx16 signed16
main__xxx16 equ globals___0+58
        ; line_number = 86
        ;  local numerator signed16
main__numerator equ globals___0+60
        ; line_number = 87
        ;  local denominator signed16
main__denominator equ globals___0+62
        ; line_number = 88
        ;  local high byte
main__high equ globals___0+64
        ; line_number = 89
        ;  local low byte
main__low equ globals___0+65
        ; line_number = 90
        ;  local value byte
main__value equ globals___0+66
        ; line_number = 91
        ;  local got_it bit
main__got_it___byte equ globals___0+79
main__got_it___bit equ 4

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>01 code:XX=cc=>XX)
        ; line_number = 93
        ;  call rb2bus_initialize(4)
        ;info   93, 9
        movlw   4
        bcf     __rp0___byte, __rp0___bit
        call    rb2bus_initialize

        ; # We are running at 16MHz.  We want Tad to be as close to 1.6uS
        ; # as possible.  1/(16MHz/32) = 2uS which is about as close as
        ; # we are going to get.  Thus, ADCS<2:0> = 010.
        ; line_number = 98
        ;  _adcon1 := 0x20
        ;info   98, 12
        movlw   32
        bsf     __rp0___byte, __rp0___bit
        movwf   _adcon1

        ; # A/D result is left justified (10-bits) in ADRESH::ADRESL
        ; #_adcon0 := 0
        ; #_adfm := _false
        ; # Use 3 volt voltage reference:
        ; #_vcfg := _true
        ; # Turn on the A/D:
        ; #_adon := _true
        ; line_number = 107
        ;  adcon0_save := _adcon0 & 0xe3
        ;info   107, 15
        movlw   227
        bcf     __rp0___byte, __rp0___bit
        andwf   _adcon0,w
        movwf   adcon0_save

        ; # A little more initialization:
        ; line_number = 110
        ;  state := 0
        ;info   110, 19
        clrf    state
        ; line_number = 111
        ;  rolling_index := 0
        ;info   111, 20
        clrf    rolling_index
        ; # Set the PS<2:0>=6 (i.e 1:128 prescale) and PSA=0:
        ; line_number = 113
        ;  _option_reg := 6
        ;info   113, 21
        movlw   6
        bsf     __rp0___byte, __rp0___bit
        movwf   _option_reg
        ; line_number = 114
        ;  _gie := _false
        ;info   114, 24
        bcf     _gie___byte, _gie___bit
        ; line_number = 115
        ;  _tmr0 := 0
        ;info   115, 25
        bcf     __rp0___byte, __rp0___bit
        clrf    _tmr0
        ; line_number = 116
        ;  _t0if := _false
        ;info   116, 27
        bcf     _t0if___byte, _t0if___bit

        ; line_number = 118
        ;  xxx16 := _signed16_from_byte(xxx)
        ;info   118, 28
        movlw   30
        bsf     __rp0___byte, __rp0___bit
        call    _signed16_from_byte
        movlw   _signed16_from_byte__0return>>1
        call    _signed16_pointer_load
        movlw   main__xxx16>>1
        call    _signed16_pointer_store
        ; line_number = 119
        ;  sensor0_map[0] := 0xd8
        ;info   119, 35
        movlw   216
        movwf   sensor0_map
        ; line_number = 120
        ;  sensor0_map[1] := 0x80
        ;info   120, 37
        movlw   128
        movwf   sensor0_map+1
        ; line_number = 121
        ;  sensor0_map[2] := 0x5b
        ;info   121, 39
        movlw   91
        movwf   sensor0_map+2
        ; line_number = 122
        ;  sensor0_map[3] := 0x47
        ;info   122, 41
        movlw   71
        movwf   sensor0_map+3
        ; line_number = 123
        ;  sensor0_map[4] := 0x3c
        ;info   123, 43
        movlw   60
        movwf   sensor0_map+4
        ; line_number = 124
        ;  sensor0_map[5] := 0x32
        ;info   124, 45
        movlw   50
        movwf   sensor0_map+5
        ; line_number = 125
        ;  sensor0_map[6] := 0x2a
        ;info   125, 47
        movlw   42
        movwf   sensor0_map+6
        ; line_number = 126
        ;  sensor0_map[7] := 0x22
        ;info   126, 49
        movlw   34
        movwf   sensor0_map+7
        ; line_number = 127
        ;  sensor1_map[0] := 0xd8
        ;info   127, 51
        movlw   216
        movwf   sensor1_map
        ; line_number = 128
        ;  sensor1_map[1] := 0x80
        ;info   128, 53
        movlw   128
        movwf   sensor1_map+1
        ; line_number = 129
        ;  sensor1_map[2] := 0x5b
        ;info   129, 55
        movlw   91
        movwf   sensor1_map+2
        ; line_number = 130
        ;  sensor1_map[3] := 0x47
        ;info   130, 57
        movlw   71
        movwf   sensor1_map+3
        ; line_number = 131
        ;  sensor1_map[4] := 0x3c
        ;info   131, 59
        movlw   60
        movwf   sensor1_map+4
        ; line_number = 132
        ;  sensor1_map[5] := 0x32
        ;info   132, 61
        movlw   50
        movwf   sensor1_map+5
        ; line_number = 133
        ;  sensor1_map[6] := 0x2a
        ;info   133, 63
        movlw   42
        movwf   sensor1_map+6
        ; line_number = 134
        ;  sensor1_map[7] := 0x22
        ;info   134, 65
        movlw   34
        movwf   sensor1_map+7

        ; line_number = 136
        ;  loop_forever start
main__1:
        bcf     __rp0___byte, __rp0___bit
        ; # Make sure that we have been selected:
        ; line_number = 138
        ;  rb2bus_error := _true
        ;info   138, 68
        bsf     rb2bus_error___byte, rb2bus_error___bit
        ; line_number = 139
        ;  while rb2bus_error start
main__2:
        ;info   139, 69
        ; =>bit_code_emit@symbol(): sym=rb2bus_error
        ; No 1TEST: true.size=4 false.size=0
        ; No 2TEST: true.size=4 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   rb2bus_error___byte, rb2bus_error___bit
        goto    main__3
        ; line_number = 140
        ; call rb2bus_select_wait()
        ;info   140, 71
        call    rb2bus_select_wait
        ; line_number = 141
        ;  command := rb2bus_byte_get()
        ;info   141, 72
        call    rb2bus_byte_get
        movwf   main__command

        goto    main__2
        ; Recombine size1 = 0 || size2 = 0
main__3:
        ; line_number = 139
        ;  while rb2bus_error done
        ; line_number = 143
        ; switch command >> 6 start
        ;info   143, 75
        ; switch_before:(data:00=uu=>00 code:XX=cc=>XX) size=7
        movlw   main__32>>8
        movwf   __pclath
main__33 equ globals___0+73
        swapf   main__command,w
        movwf   main__33
        rrf     main__33,f
        rrf     main__33,w
        andlw   3
        ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
        addlw   main__32
        movwf   __pcl
        ; page_group 4
main__32:
        goto    main__30
        goto    main__34
        goto    main__34
        goto    main__31
        ; line_number = 144
        ; case 0
main__30:
        ; line_number = 145
        ; switch (command >> 3) & 7 start
        ;info   145, 88
        ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
        movlw   main__23>>8
        movwf   __pclath
main__24 equ globals___0+73
        rrf     main__command,w
        movwf   main__24
        rrf     main__24,f
        rrf     main__24,w
        andlw   7
        ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
        addlw   main__23
        movwf   __pcl
        ; page_group 1
main__23:
        goto    main__22
        ; line_number = 146
        ; case 0
main__22:
        ; # 0000 0xxx:
        ; line_number = 148
        ;  switch command & 7 start
        ;info   148, 98
        ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
        ; line_number = 149
        ; case_maximum 7
        movlw   main__20>>8
        movwf   __pclath
        movlw   7
        andwf   main__command,w
        ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
        addlw   main__20
        movwf   __pcl
        ; page_group 8
main__20:
        goto    main__14
        goto    main__15
        goto    main__16
        goto    main__17
        goto    main__18
        goto    main__19
        goto    main__21
        goto    main__21
        ; line_number = 150
        ; case 0
main__14:
        ; # 0000 0000 (Sensor0 Raw Get):
        ; line_number = 152
        ;  call rb2bus_byte_put(sensor0_high[rolling_index])
        ;info   152, 112
        movf    rolling_index,w
        addlw   sensor0_high
        movwf   __fsr
        movf    __indf,w
        call    rb2bus_byte_put
        goto    main__21
        ; line_number = 153
        ; case 1
main__15:
        ; # 0000 0000 (Sensor1 Raw Get):
        ; line_number = 155
        ;  call rb2bus_byte_put(sensor1_high[rolling_index])
        ;info   155, 118
        movf    rolling_index,w
        addlw   sensor1_high
        movwf   __fsr
        movf    __indf,w
        call    rb2bus_byte_put
        goto    main__21
        ; line_number = 156
        ; case 2
main__16:
        ; # 0000 0010 (Sensor0 Smoothed Get):
        ; line_number = 158
        ;  call rb2bus_byte_put(sensor0_value())
        ;info   158, 124
        call    sensor0_value
        call    rb2bus_byte_put
        goto    main__21
        ; line_number = 159
        ; case 3
main__17:
        ; # 0000 0011 (Sensor1 Smoothed Get):
        ; line_number = 161
        ;  call rb2bus_byte_put(sensor1_value())
        ;info   161, 127
        call    sensor1_value
        call    rb2bus_byte_put
        goto    main__21
        ; line_number = 162
        ; case 4
main__18:
        ; # 0000 0100 (Sensor0 Linear Get):
        ; line_number = 164
        ;  value := sensor0_value()
        ;info   164, 130
        call    sensor0_value
        movwf   main__value
        ; line_number = 165
        ;  temp := 0
        ;info   165, 132
        clrf    main__temp
        ; line_number = 166
        ;  result := 0xff
        ;info   166, 133
        movlw   255
        movwf   main__result
        ; line_number = 167
        ;  high := 0xff
        ;info   167, 135
        movlw   255
        movwf   main__high
        ; line_number = 168
        ;  index := 0
        ;info   168, 137
        clrf    main__index
        ; line_number = 169
        ;  got_it := _false
        ;info   169, 138
        bcf     main__got_it___byte, main__got_it___bit
        ; line_number = 170
        ;  while index < 8 && !got_it start
main__4:
        ;info   170, 139
        movlw   8
        subwf   main__index,w
        ; =>bit_code_emit@symbol(): sym=__c
        ; No 1TEST: true.size=1 false.size=49
        ; No 2TEST: true.size=1 false.size=49
        ; 2GOTO: Single test with two GOTO's
        btfsc   __c___byte, __c___bit
        goto    main__6
        ; Recombine code1_bit_states != code2_bit_states
        ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
        ; =>bit_code_emit@symbol(): sym=main__got_it
        ; No 1TEST: true.size=0 false.size=47
        ; No 2TEST: true.size=0 false.size=47
        ; 1GOTO: Single test with GOTO
        btfsc   main__got_it___byte, main__got_it___bit
        goto    main__7
        ; line_number = 171
        ; low := sensor0_map[index]
        ;info   171, 145
        movf    main__index,w
        addlw   sensor0_map
        movwf   __fsr
        movf    __indf,w
        movwf   main__low
        ; line_number = 172
        ;  if low <= value start
        ;info   172, 150
        movf    main__value,w
        subwf   main__low,w
        btfsc   __z___byte, __z___bit
        bcf     __c___byte, __c___bit
        ; =>bit_code_emit@symbol(): sym=__c
        ; No 1TEST: true.size=0 false.size=30
        ; No 2TEST: true.size=0 false.size=30
        ; 1GOTO: Single test with GOTO
        btfsc   __c___byte, __c___bit
        goto    main__5
        ; # We have the answer:
        ; line_number = 174
        ;  numerator := _signed16_from_byte(high - value)
        ;info   174, 156
        movf    main__value,w
        subwf   main__high,w
        bsf     __rp0___byte, __rp0___bit
        call    _signed16_from_byte
        movlw   _signed16_from_byte__0return>>1
        call    _signed16_pointer_load
        movlw   main__numerator>>1
        call    _signed16_pointer_store
        ; line_number = 175
        ;  denominator := _signed16_from_byte(high - low)
        ;info   175, 164
        bcf     __rp0___byte, __rp0___bit
        movf    main__low,w
        subwf   main__high,w
        bsf     __rp0___byte, __rp0___bit
        call    _signed16_from_byte
        movlw   _signed16_from_byte__0return>>1
        call    _signed16_pointer_load
        movlw   main__denominator>>1
        call    _signed16_pointer_store
        ; line_number = 176
        ;  result := temp + _signed16_to_byte( xxx16 * numerator / denominator)
        ;info   176, 173
        movlw   main__xxx16>>1
        call    _signed16_pointer_load
        movlw   main__numerator>>1
        call    _signed16_pointer_multiply
        movlw   main__denominator>>1
        call    _signed16_pointer_divide
        movlw   _signed16_to_byte__number>>1
        call    _signed16_pointer_store
        call    _signed16_to_byte
        bcf     __rp0___byte, __rp0___bit
        addwf   main__temp,w
        movwf   main__result

        ; line_number = 178
        ; got_it := _true
        ;info   178, 185
        bsf     main__got_it___byte, main__got_it___bit
main__5:
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 172
        ;  if low <= value done
        ; line_number = 179
        ; temp := temp + xxx
        ;info   179, 186
        movlw   30
        addwf   main__temp,f
        ; line_number = 180
        ;  high := low
        ;info   180, 188
        movf    main__low,w
        movwf   main__high
        ; line_number = 181
        ;  index := index + 1
        ;info   181, 190
        incf    main__index,f
        goto    main__4
main__7:
main__6:
        ; Recombine code1_bit_states != code2_bit_states
        ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
        ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295
        ; 2GOTO: No goto needed; true=main__6 false= true_size=1 false_size=49
        ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; 2GOTO: code2 final bitstates:(data:XX=cc=>XX code:XX=cc=>XX)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; line_number = 170
        ;  while index < 8 && !got_it done
        ; line_number = 182
        ; if !got_it start
        ;info   182, 192
        ; =>bit_code_emit@symbol(): sym=main__got_it
        ; No 1TEST: true.size=0 false.size=2
        ; No 2TEST: true.size=0 false.size=2
        ; 1GOTO: Single test with GOTO
        btfsc   main__got_it___byte, main__got_it___bit
        goto    main__8
        ; line_number = 183
        ; result := 0xfe
        ;info   183, 194
        movlw   254
        movwf   main__result
main__8:
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 182
        ; if !got_it done
        ; line_number = 184
        ; call rb2bus_byte_put(result)
        ;info   184, 196
        movf    main__result,w
        call    rb2bus_byte_put
        goto    main__21
        ; line_number = 185
        ; case 5
main__19:
        ; # 0000 0101 (Sensor1 Linear Get):
        ; line_number = 187
        ;  value := sensor1_value()
        ;info   187, 199
        call    sensor1_value
        movwf   main__value
        ; line_number = 188
        ;  temp := 0
        ;info   188, 201
        clrf    main__temp
        ; line_number = 189
        ;  result := 0xff
        ;info   189, 202
        movlw   255
        movwf   main__result
        ; line_number = 190
        ;  high := 0xff
        ;info   190, 204
        movlw   255
        movwf   main__high
        ; line_number = 191
        ;  index := 0
        ;info   191, 206
        clrf    main__index
        ; line_number = 192
        ;  got_it := _false
        ;info   192, 207
        bcf     main__got_it___byte, main__got_it___bit
        ; line_number = 193
        ;  while index < 8 && !got_it start
main__9:
        ;info   193, 208
        movlw   8
        subwf   main__index,w
        ; =>bit_code_emit@symbol(): sym=__c
        ; No 1TEST: true.size=1 false.size=49
        ; No 2TEST: true.size=1 false.size=49
        ; 2GOTO: Single test with two GOTO's
        btfsc   __c___byte, __c___bit
        goto    main__11
        ; Recombine code1_bit_states != code2_bit_states
        ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
        ; =>bit_code_emit@symbol(): sym=main__got_it
        ; No 1TEST: true.size=0 false.size=47
        ; No 2TEST: true.size=0 false.size=47
        ; 1GOTO: Single test with GOTO
        btfsc   main__got_it___byte, main__got_it___bit
        goto    main__12
        ; line_number = 194
        ; low := sensor1_map[index]
        ;info   194, 214
        movf    main__index,w
        addlw   sensor1_map
        movwf   __fsr
        movf    __indf,w
        movwf   main__low
        ; line_number = 195
        ;  if low <= value start
        ;info   195, 219
        movf    main__value,w
        subwf   main__low,w
        btfsc   __z___byte, __z___bit
        bcf     __c___byte, __c___bit
        ; =>bit_code_emit@symbol(): sym=__c
        ; No 1TEST: true.size=0 false.size=30
        ; No 2TEST: true.size=0 false.size=30
        ; 1GOTO: Single test with GOTO
        btfsc   __c___byte, __c___bit
        goto    main__10
        ; # We have the answer:
        ; line_number = 197
        ;  numerator := _signed16_from_byte(high - value)
        ;info   197, 225
        movf    main__value,w
        subwf   main__high,w
        bsf     __rp0___byte, __rp0___bit
        call    _signed16_from_byte
        movlw   _signed16_from_byte__0return>>1
        call    _signed16_pointer_load
        movlw   main__numerator>>1
        call    _signed16_pointer_store
        ; line_number = 198
        ;  denominator := _signed16_from_byte(high - low)
        ;info   198, 233
        bcf     __rp0___byte, __rp0___bit
        movf    main__low,w
        subwf   main__high,w
        bsf     __rp0___byte, __rp0___bit
        call    _signed16_from_byte
        movlw   _signed16_from_byte__0return>>1
        call    _signed16_pointer_load
        movlw   main__denominator>>1
        call    _signed16_pointer_store
        ; line_number = 199
        ;  result := temp + _signed16_to_byte( xxx16 * numerator / denominator)
        ;info   199, 242
        movlw   main__xxx16>>1
        call    _signed16_pointer_load
        movlw   main__numerator>>1
        call    _signed16_pointer_multiply
        movlw   main__denominator>>1
        call    _signed16_pointer_divide
        movlw   _signed16_to_byte__number>>1
        call    _signed16_pointer_store
        call    _signed16_to_byte
        bcf     __rp0___byte, __rp0___bit
        addwf   main__temp,w
        movwf   main__result

        ; line_number = 201
        ; got_it := _true
        ;info   201, 254
        bsf     main__got_it___byte, main__got_it___bit
main__10:
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 195
        ;  if low <= value done
        ; line_number = 202
        ; temp := temp + xxx
        ;info   202, 255
        movlw   30
        addwf   main__temp,f
        ; line_number = 203
        ;  high := low
        ;info   203, 257
        movf    main__low,w
        movwf   main__high
        ; line_number = 204
        ;  index := index + 1
        ;info   204, 259
        incf    main__index,f
        goto    main__9
main__12:
main__11:
        ; Recombine code1_bit_states != code2_bit_states
        ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
        ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295
        ; 2GOTO: No goto needed; true=main__11 false= true_size=1 false_size=49
        ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; 2GOTO: code2 final bitstates:(data:XX=cc=>XX code:XX=cc=>XX)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; line_number = 193
        ;  while index < 8 && !got_it done
        ; line_number = 205
        ; if !got_it start
        ;info   205, 261
        ; =>bit_code_emit@symbol(): sym=main__got_it
        ; No 1TEST: true.size=0 false.size=2
        ; No 2TEST: true.size=0 false.size=2
        ; 1GOTO: Single test with GOTO
        btfsc   main__got_it___byte, main__got_it___bit
        goto    main__13
        ; line_number = 206
        ; result := 0xfe
        ;info   206, 263
        movlw   254
        movwf   main__result
main__13:
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 205
        ; if !got_it done
        ; line_number = 207
        ; call rb2bus_byte_put(result)
        ;info   207, 265
        movf    main__result,w
        call    rb2bus_byte_put
main__21:
        ; line_number = 148
        ;  switch command & 7 done
main__25:
        ; line_number = 145
        ; switch (command >> 3) & 7 done
        goto    main__34
        ; line_number = 208
        ; case 3
main__31:
        ; # 11xx xxxx:
        ; line_number = 210
        ;  switch (command >> 3) & 7 start
        ;info   210, 268
        ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
        movlw   main__27>>8
        movwf   __pclath
main__28 equ globals___0+73
        rrf     main__command,w
        movwf   main__28
        rrf     main__28,f
        rrf     main__28,w
        andlw   7
        ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
        addlw   main__27
        movwf   __pcl
        ; page_group 8
main__27:
        goto    main__29
        goto    main__29
        goto    main__29
        goto    main__29
        goto    main__29
        goto    main__29
        goto    main__29
        goto    main__26
        ; line_number = 211
        ; case 7
main__26:
        ; # 1111 1xxx:
        ; line_number = 213
        ;  call rb2bus_command(command)
        ;info   213, 285
        movf    main__command,w
        call    rb2bus_command


main__29:
        ; line_number = 210
        ;  switch (command >> 3) & 7 done
main__34:
        ; line_number = 143
        ; switch command >> 6 done
        ; line_number = 136
        ;  loop_forever wrap-up
        goto    main__1
        ; line_number = 136
        ;  loop_forever done
        ; delay after procedure statements=non-uniform




        ; line_number = 216
        ;info   216, 288
        ; procedure sensor0_value
sensor0_value:
        ; arguments_none
        ; line_number = 218
        ;  returns byte

        ; #: This procedure will compute and return the best value for sensor0.

        ; line_number = 222
        ;  local index byte
sensor0_value__index equ globals___0+67
        ; line_number = 223
        ;  local maximum byte
sensor0_value__maximum equ globals___0+68
        ; line_number = 224
        ;  local temp byte
sensor0_value__temp equ globals___0+69

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
        ; line_number = 226
        ;  maximum := sensor0_high[0]
        ;info   226, 288
        movf    sensor0_high,w
        movwf   sensor0_value__maximum
        ; line_number = 227
        ;  index := 1
        ;info   227, 290
        movlw   1
        movwf   sensor0_value__index
        ; line_number = 228
        ;  loop_exactly 7 start
        ;info   228, 292
sensor0_value__1 equ globals___0+74
        movlw   7
        movwf   sensor0_value__1
sensor0_value__2:
        ; line_number = 229
        ; temp := sensor0_high[index]
        ;info   229, 294
        movf    sensor0_value__index,w
        addlw   sensor0_high
        movwf   __fsr
        movf    __indf,w
        movwf   sensor0_value__temp
        ; line_number = 230
        ;  if temp > maximum start
        ;info   230, 299
        movf    sensor0_value__maximum,w
        subwf   sensor0_value__temp,w
        btfsc   __z___byte, __z___bit
        bcf     __c___byte, __c___bit
        ; =>bit_code_emit@symbol(): sym=__c
        ; No 1TEST: true.size=2 false.size=0
        ; No 2TEST: true.size=2 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   __c___byte, __c___bit
        goto    sensor0_value__3
        ; line_number = 231
        ; maximum := temp
        ;info   231, 305
        movf    sensor0_value__temp,w
        movwf   sensor0_value__maximum
        ; Recombine size1 = 0 || size2 = 0
sensor0_value__3:
        ; line_number = 230
        ;  if temp > maximum done
        ; line_number = 232
        ; index := index + 1
        ;info   232, 307
        incf    sensor0_value__index,f
        ; line_number = 228
        ;  loop_exactly 7 wrap-up
        decfsz  sensor0_value__1,f
        goto    sensor0_value__2
        ; line_number = 228
        ;  loop_exactly 7 done
        ; line_number = 233
        ; return maximum     start
        ; line_number = 233
        ;info   233, 310
        movf    sensor0_value__maximum,w
        return  
        ; line_number = 233
        ; return maximum     done


        ; delay after procedure statements=non-uniform




        ; line_number = 236
        ;info   236, 312
        ; procedure sensor1_value
sensor1_value:
        ; arguments_none
        ; line_number = 238
        ;  returns byte

        ; #: This procedure will compute and return the best value for sensor1.

        ; line_number = 242
        ;  local index byte
sensor1_value__index equ globals___0+70
        ; line_number = 243
        ;  local maximum byte
sensor1_value__maximum equ globals___0+71
        ; line_number = 244
        ;  local temp byte
sensor1_value__temp equ globals___0+72

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
        ; line_number = 246
        ;  maximum := sensor1_high[0]
        ;info   246, 312
        movf    sensor1_high,w
        movwf   sensor1_value__maximum
        ; line_number = 247
        ;  index := 1
        ;info   247, 314
        movlw   1
        movwf   sensor1_value__index
        ; line_number = 248
        ;  loop_exactly 7 start
        ;info   248, 316
sensor1_value__1 equ globals___0+75
        movlw   7
        movwf   sensor1_value__1
sensor1_value__2:
        ; line_number = 249
        ; temp := sensor1_high[index]
        ;info   249, 318
        movf    sensor1_value__index,w
        addlw   sensor1_high
        movwf   __fsr
        movf    __indf,w
        movwf   sensor1_value__temp
        ; line_number = 250
        ;  if temp > maximum start
        ;info   250, 323
        movf    sensor1_value__maximum,w
        subwf   sensor1_value__temp,w
        btfsc   __z___byte, __z___bit
        bcf     __c___byte, __c___bit
        ; =>bit_code_emit@symbol(): sym=__c
        ; No 1TEST: true.size=2 false.size=0
        ; No 2TEST: true.size=2 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   __c___byte, __c___bit
        goto    sensor1_value__3
        ; line_number = 251
        ; maximum := temp
        ;info   251, 329
        movf    sensor1_value__temp,w
        movwf   sensor1_value__maximum
        ; Recombine size1 = 0 || size2 = 0
sensor1_value__3:
        ; line_number = 250
        ;  if temp > maximum done
        ; line_number = 252
        ; index := index + 1
        ;info   252, 331
        incf    sensor1_value__index,f
        ; line_number = 248
        ;  loop_exactly 7 wrap-up
        decfsz  sensor1_value__1,f
        goto    sensor1_value__2
        ; line_number = 248
        ;  loop_exactly 7 done
        ; line_number = 253
        ; return maximum     start
        ; line_number = 253
        ;info   253, 334
        movf    sensor1_value__maximum,w
        return  
        ; line_number = 253
        ; return maximum     done


        ; delay after procedure statements=non-uniform




        ; line_number = 256
        ;info   256, 336
        ; procedure wait
wait:
        ; arguments_none
        ; line_number = 258
        ;  returns_nothing

        ; # This procedure is repeatably called whenever the software
        ; # is waiting for a byte to arrive from the bus.

        ; # The bus is running at 500kbps or 2uSec/bit.  Since each
        ; # byte consists of 1 start bit, 9 data bits, and 1 stop bit,
        ; # a byte takes 11bit/byte * 2uSec/bit = 22uSec/byte.  Since
        ; # the system is running off of a 20MHz resonator that is
        ; # divided by 4 to get the basic clock rate of 5MHz, that
        ; # works out to .2uSec/cycle (=5cycle/uSec), we get a total
        ; # of 5cycle/uSec * 22uSec/Byte = 110cycle/byte.  Now we
        ; # want to leave some time for the calling routine to get
        ; # its job done, so shooting for ~50 cycles per call to this
        ; # routine is just about right.

        ; # The GP2D12's take a sample every 38.3mSec +/- 9.6mSec.
        ; # That yields a range of 28.7mSec - 47.9mSec.  If we take
        ; # a sample from each channel every 50mSec, we'll never get
        ; # a duplicate.

        ; # TMR0 is an 8-bit timer that will set {_t0if} after every
        ; # 256 ticks.  The presclaler can be set to 1:128.  Thus, the
        ; # TMR0 turns over 128 * 256 * .2uSec = 6553.6uSec = 6.5536mSec.
        ; # If we give the A/D 4 slices of 6.5536mSec or 26.2mSec.

        ; # Wait for timer:
        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
        ; line_number = 285
        ;  if _t0if start
        ;info   285, 336
        ; =>bit_code_emit@symbol(): sym=_t0if
        ; No 1TEST: true.size=58 false.size=0
        ; No 2TEST: true.size=58 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   _t0if___byte, _t0if___bit
        goto    wait__11
        ; line_number = 286
        ; _t0if := _false
        ;info   286, 338
        bcf     _t0if___byte, _t0if___bit
        ; line_number = 287
        ;  switch state & 7 start
        ;info   287, 339
        ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=1
        movlw   wait__9>>8
        movwf   __pclath
        movlw   7
        andwf   state,w
        ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
        addlw   wait__9
        movwf   __pcl
        ; page_group 8
wait__9:
        goto    wait__1
        goto    wait__2
        goto    wait__3
        goto    wait__4
        goto    wait__5
        goto    wait__6
        goto    wait__7
        goto    wait__8
        ; line_number = 288
        ; case 0
wait__1:
        ; # Select channel sensor 0 (A/D channel 5):
        ; line_number = 290
        ;  _adcon0 := (5 << 2) | adcon0_save
        ;info   290, 353
        movlw   20
        iorwf   adcon0_save,w
        movwf   _adcon0
        ; # Let the Sample and Hold settle:
        goto    wait__10
        ; line_number = 292
        ; case 1
wait__2:
        ; # Start the A/D:
        ; line_number = 294
        ;  _go := _true
        ;info   294, 357
        bsf     _go___byte, _go___bit
        ; # Let the A/D do its thing:
        goto    wait__10
        ; line_number = 296
        ; case 2
wait__3:
        ; # Read out the A/D result for sensor 0:
        ; line_number = 298
        ;  sensor0_high[rolling_index] := _adresh
        ;info   298, 359
        ; index_fsr_first
        movf    rolling_index,w
        addlw   sensor0_high
        movwf   __fsr
        movf    _adresh,w
        movwf   __indf
        ; line_number = 299
        ;  sensor0_low[rolling_index] := _adresl
        ;info   299, 364
        ; index_fsr_first
        movf    rolling_index,w
        addlw   sensor0_low
        movwf   __fsr
        bsf     __rp0___byte, __rp0___bit
        movf    _adresl,w
        movwf   __indf
        goto    wait__10
        ; line_number = 300
        ; case 3
wait__4:
        ; line_number = 301
        ; do_nothing
        ;info   301, 371
        goto    wait__10
        ; line_number = 302
        ; case 4
wait__5:
        ; # Select channel sensor 0 (A/D channel 6):
        ; line_number = 304
        ;  _adcon0 := (6 << 2) | adcon0_save
        ;info   304, 372
        movlw   24
        iorwf   adcon0_save,w
        movwf   _adcon0
        ; # Let the Sample and Hold settle:
        goto    wait__10
        ; line_number = 306
        ; case 5
wait__6:
        ; # Start the A/D:
        ; line_number = 308
        ;  _go := _true
        ;info   308, 376
        bsf     _go___byte, _go___bit
        ; # Let the A/D do its thing:
        goto    wait__10
        ; line_number = 310
        ; case 6
wait__7:
        ; # Read out the A/D result for sensor 1:
        ; line_number = 312
        ;  sensor1_high[rolling_index] := _adresh
        ;info   312, 378
        ; index_fsr_first
        movf    rolling_index,w
        addlw   sensor1_high
        movwf   __fsr
        movf    _adresh,w
        movwf   __indf
        ; line_number = 313
        ;  sensor1_low[rolling_index] := _adresl
        ;info   313, 383
        ; index_fsr_first
        movf    rolling_index,w
        addlw   sensor1_low
        movwf   __fsr
        bsf     __rp0___byte, __rp0___bit
        movf    _adresl,w
        movwf   __indf
        ; line_number = 314
        ;  rolling_index := (rolling_index + 1) & 7
        ;info   314, 389
        bcf     __rp0___byte, __rp0___bit
        incf    rolling_index,w
        andlw   7
        movwf   rolling_index
        goto    wait__10
        ; line_number = 315
        ; case 7
wait__8:
        ; line_number = 316
        ; do_nothing
        ;info   316, 394
wait__10:
        ; line_number = 287
        ;  switch state & 7 done
        ; line_number = 317
        ; state := state + 1
        ;info   317, 394
        bcf     __rp0___byte, __rp0___bit
        incf    state,f


        ; Recombine size1 = 0 || size2 = 0
wait__11:
        ; line_number = 285
        ;  if _t0if done
        ; delay after procedure statements=non-uniform
        ; Implied return
        retlw   0




        ; line_number = 320
        ; string id = "\16,0,4,3,3,13\IRDistance2-C\7\Gramson" start
        ; id = '\16,0,4,3,3,13\IRDistance2-C\7\Gramson'
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 27
id___base:
        retlw   16
        retlw   0
        retlw   4
        retlw   3
        retlw   3
        retlw   13
        retlw   73
        retlw   82
        retlw   68
        retlw   105
        retlw   115
        retlw   116
        retlw   97
        retlw   110
        retlw   99
        retlw   101
        retlw   50
        retlw   45
        retlw   67
        retlw   7
        retlw   71
        retlw   114
        retlw   97
        retlw   109
        retlw   115
        retlw   111
        retlw   110
        ; line_number = 320
        ; string id = "\16,0,4,3,3,13\IRDistance2-C\7\Gramson" start


        ; Appending 28 delayed procedures to code bank 0
        ; buffer = 'rb2bus'
        ; line_number = 57
        ;info   57, 430
        ; procedure rb2bus_select_wait
rb2bus_select_wait:
        ; arguments_none
        ; line_number = 59
        ;  returns_nothing

        ; # This procedure will in an infinite loop until the select
        ; # address matches {rb2bus_address}.  {rb2bus_address} is
        ; # typically set in the {rb2bus_initialize} procedure.
        ; #
        ; # This module will repeatably call the {wait} procedure until
        ; # it is properly selected.

        ; line_number = 68
        ;  local value byte
rb2bus_select_wait__value equ globals___0+2
        ; line_number = 69
        ;  local address_bit bit
rb2bus_select_wait__address_bit___byte equ globals___0+79
rb2bus_select_wait__address_bit___bit equ 2

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
        ; line_number = 71
        ;  rb2bus_error := _false
        ;info   71, 430
        bcf     rb2bus_error___byte, rb2bus_error___bit
        ; line_number = 72
        ;  while !rb2bus_selected start
rb2bus_select_wait__1:
        ;info   72, 431
        ; =>bit_code_emit@symbol(): sym=rb2bus_selected
        ; No 1TEST: true.size=0 false.size=25
        ; No 2TEST: true.size=0 false.size=25
        ; 1GOTO: Single test with GOTO
        btfsc   rb2bus_selected___byte, rb2bus_selected___bit
        goto    rb2bus_select_wait__6
        ; line_number = 73
        ; _adden := _true
        ;info   73, 433
        bsf     _adden___byte, _adden___bit
        ; # Wait for a byte to arrive.
        ; line_number = 75
        ;  while !_rcif start
rb2bus_select_wait__2:
        ;info   75, 434
        ; =>bit_code_emit@symbol(): sym=_rcif
        ; No 1TEST: true.size=0 false.size=2
        ; No 2TEST: true.size=0 false.size=2
        ; 1GOTO: Single test with GOTO
        btfsc   _rcif___byte, _rcif___bit
        goto    rb2bus_select_wait__3
        ; line_number = 76
        ; call wait()
        ;info   76, 436
        call    wait

        goto    rb2bus_select_wait__2
rb2bus_select_wait__3:
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 75
        ;  while !_rcif done
        ; # Capture the received value:
        ; line_number = 79
        ;  address_bit := _false
        ;info   79, 438
        bcf     rb2bus_select_wait__address_bit___byte, rb2bus_select_wait__address_bit___bit
        ; line_number = 80
        ;  if _rx9d start
        ;info   80, 439
        ; =>bit_code_emit@symbol(): sym=_rx9d
        ; 1TEST: Single test with code in skip slot
        btfsc   _rx9d___byte, _rx9d___bit
        ; line_number = 81
        ; address_bit := _true
        ;info   81, 440
        bsf     rb2bus_select_wait__address_bit___byte, rb2bus_select_wait__address_bit___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 80
        ;  if _rx9d done
        ; line_number = 82
        ; value := _rcreg
        ;info   82, 441
        movf    _rcreg,w
        movwf   rb2bus_select_wait__value

        ; # Clear any UART errors by toggling {_cren}:
        ; line_number = 85
        ;  if _oerr start
        ;info   85, 443
        ; =>bit_code_emit@symbol(): sym=_oerr
        ; 1TEST: Single test with code in skip slot
        btfsc   _oerr___byte, _oerr___bit
        ; line_number = 86
        ; _cren := _false
        ;info   86, 444
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 85
        ;  if _oerr done
        ; line_number = 87
        ; if _ferr start
        ;info   87, 445
        ; =>bit_code_emit@symbol(): sym=_ferr
        ; 1TEST: Single test with code in skip slot
        btfsc   _ferr___byte, _ferr___bit
        ; line_number = 88
        ; _cren := _false
        ;info   88, 446
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 87
        ; if _ferr done
        ; line_number = 89
        ; _cren := _true
        ;info   89, 447
        bsf     _cren___byte, _cren___bit

        ; line_number = 91
        ;  if address_bit start
        ;info   91, 448
        ; =>bit_code_emit@symbol(): sym=rb2bus_select_wait__address_bit
        ; No 1TEST: true.size=7 false.size=0
        ; No 2TEST: true.size=7 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   rb2bus_select_wait__address_bit___byte, rb2bus_select_wait__address_bit___bit
        goto    rb2bus_select_wait__5
        ; line_number = 92
        ; if value = rb2bus_address start
        ;info   92, 450
        ; Left minus Right
        movf    rb2bus_address,w
        subwf   rb2bus_select_wait__value,w
        ; =>bit_code_emit@symbol(): sym=__z
        ; No 1TEST: true.size=3 false.size=0
        ; No 2TEST: true.size=3 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   __z___byte, __z___bit
        goto    rb2bus_select_wait__4
        ; line_number = 93
        ; rb2bus_selected := _true
        ;info   93, 454
        bsf     rb2bus_selected___byte, rb2bus_selected___bit
        ; line_number = 94
        ;  call rb2bus_byte_put(rb2_ok)
        ;info   94, 455
        movlw   165
        call    rb2bus_byte_put


        ; Recombine size1 = 0 || size2 = 0
rb2bus_select_wait__4:
        ; line_number = 92
        ; if value = rb2bus_address done
        ; Recombine size1 = 0 || size2 = 0
rb2bus_select_wait__5:
        ; line_number = 91
        ;  if address_bit done
        goto    rb2bus_select_wait__1
rb2bus_select_wait__6:
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 72
        ;  while !rb2bus_selected done
        ; delay after procedure statements=non-uniform
        ; Implied return
        retlw   0




        ; line_number = 97
        ;info   97, 459
        ; procedure rb2bus_deselect
rb2bus_deselect:
        ; arguments_none
        ; line_number = 99
        ;  returns_nothing

        ; # This procedure forces this module into the deselected state until
        ; # it is reselected by some master module on the bus.

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
        ; line_number = 104
        ;  rb2bus_selected := _false
        ;info   104, 459
        bcf     rb2bus_selected___byte, rb2bus_selected___bit


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




        ; line_number = 107
        ;info   107, 461
        ; procedure rb2bus_byte_get
rb2bus_byte_get:
        ; arguments_none
        ; line_number = 109
        ;  returns byte

        ; # This procedure will return the next byte received from the bus.
        ; # The address (9th) bit is stored in the global {is_address}.
        ; #
        ; # If {rb2bus_error} is set, 0 is returned.  Otherwise, the {wait}
        ; # procedure is repeatably called until a command byte is successfully
        ; # received.  If an module select byte comes in, we enter a bus
        ; # error condition by setting {rb2bus_error} and returning 0.

        ; line_number = 119
        ;  local value byte
rb2bus_byte_get__value equ globals___0+3
        ; line_number = 120
        ;  local address_bit bit
rb2bus_byte_get__address_bit___byte equ globals___0+79
rb2bus_byte_get__address_bit___bit equ 3

        ; # Return 0 in a bus flush condition to get us back to {rb2bus_select_wait}:
        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
        ; line_number = 123
        ;  if rb2bus_error start
        ;info   123, 461
        ; =>bit_code_emit@symbol(): sym=rb2bus_error
        ; 1TEST: Single test with code in skip slot
        btfsc   rb2bus_error___byte, rb2bus_error___bit
        ; line_number = 124
        ; return 0 start
        ; line_number = 124
        ;info   124, 462
        retlw   0
        ; line_number = 124
        ; return 0 done

        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 123
        ;  if rb2bus_error done
        ; # Wait for a byte to arrive.
        ; line_number = 127
        ;  _adden := _false
        ;info   127, 463
        bcf     _adden___byte, _adden___bit
        ; line_number = 128
        ;  while !_rcif start
rb2bus_byte_get__1:
        ;info   128, 464
        ; =>bit_code_emit@symbol(): sym=_rcif
        ; No 1TEST: true.size=0 false.size=2
        ; No 2TEST: true.size=0 false.size=2
        ; 1GOTO: Single test with GOTO
        btfsc   _rcif___byte, _rcif___bit
        goto    rb2bus_byte_get__2
        ; line_number = 129
        ; call wait()
        ;info   129, 466
        call    wait

        goto    rb2bus_byte_get__1
rb2bus_byte_get__2:
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 128
        ;  while !_rcif done
        ; # Record the 9th bit in {address_bit}:
        ; line_number = 132
        ;  address_bit := _false
        ;info   132, 468
        bcf     rb2bus_byte_get__address_bit___byte, rb2bus_byte_get__address_bit___bit
        ; line_number = 133
        ;  if _rx9d start
        ;info   133, 469
        ; =>bit_code_emit@symbol(): sym=_rx9d
        ; 1TEST: Single test with code in skip slot
        btfsc   _rx9d___byte, _rx9d___bit
        ; line_number = 134
        ; address_bit := _true
        ;info   134, 470
        bsf     rb2bus_byte_get__address_bit___byte, rb2bus_byte_get__address_bit___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 133
        ;  if _rx9d done
        ; line_number = 135
        ; value := _rcreg
        ;info   135, 471
        movf    _rcreg,w
        movwf   rb2bus_byte_get__value

        ; # Clear any errors by toggling _{cren}:
        ; # FIXME: All of this should be done *before* reading {_rcreg}!!!
        ; line_number = 139
        ;  if _oerr start
        ;info   139, 473
        ; =>bit_code_emit@symbol(): sym=_oerr
        ; 1TEST: Single test with code in skip slot
        btfsc   _oerr___byte, _oerr___bit
        ; line_number = 140
        ; _cren := _false
        ;info   140, 474
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 139
        ;  if _oerr done
        ; line_number = 141
        ; if _ferr start
        ;info   141, 475
        ; =>bit_code_emit@symbol(): sym=_ferr
        ; 1TEST: Single test with code in skip slot
        btfsc   _ferr___byte, _ferr___bit
        ; line_number = 142
        ; _cren := _false
        ;info   142, 476
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 141
        ; if _ferr done
        ; line_number = 143
        ; _cren := _true
        ;info   143, 477
        bsf     _cren___byte, _cren___bit

        ; line_number = 145
        ;  if address_bit start
        ;info   145, 478
        ; =>bit_code_emit@symbol(): sym=rb2bus_byte_get__address_bit
        ; No 1TEST: true.size=13 false.size=0
        ; No 2TEST: true.size=13 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   rb2bus_byte_get__address_bit___byte, rb2bus_byte_get__address_bit___bit
        goto    rb2bus_byte_get__5
        ; # We have an unexpected address select coming in:
        ; line_number = 147
        ;  if value = rb2bus_address start
        ;info   147, 480
        ; Left minus Right
        movf    rb2bus_address,w
        subwf   rb2bus_byte_get__value,w
        ; =>bit_code_emit@symbol(): sym=__z
        ; No 1TEST: true.size=4 false.size=2
        ; No 2TEST: true.size=4 false.size=2
        ; 2GOTO: Single test with two GOTO's
        btfss   __z___byte, __z___bit
        goto    rb2bus_byte_get__3
        ; # We are being selected again:
        ; line_number = 149
        ;  rb2bus_selected := _true
        ;info   149, 484
        bsf     rb2bus_selected___byte, rb2bus_selected___bit
        ; line_number = 150
        ;  _adden := _false
        ;info   150, 485
        bcf     _adden___byte, _adden___bit

        ; line_number = 152
        ;  call rb2bus_byte_put(rb2_ok)
        ;info   152, 486
        movlw   165
        call    rb2bus_byte_put
        goto    rb2bus_byte_get__4
        ; 2GOTO: Starting code 2
rb2bus_byte_get__3:
        ; # Somebody else is being selected; we deselect:
        ; line_number = 155
        ;  rb2bus_selected := _false
        ;info   155, 489
        bcf     rb2bus_selected___byte, rb2bus_selected___bit
        ; line_number = 156
        ;  _adden := _true
        ;info   156, 490
        bsf     _adden___byte, _adden___bit

rb2bus_byte_get__4:
        ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; line_number = 147
        ;  if value = rb2bus_address done
        ; # We want to get back to the beginning of decode:
        ; line_number = 159
        ;  rb2bus_error := _true
        ;info   159, 491
        bsf     rb2bus_error___byte, rb2bus_error___bit
        ; line_number = 160
        ;  value := 0
        ;info   160, 492
        clrf    rb2bus_byte_get__value

        ; Recombine size1 = 0 || size2 = 0
rb2bus_byte_get__5:
        ; line_number = 145
        ;  if address_bit done
        ; # Regular data byte:
        ; line_number = 163
        ;  return value start
        ; line_number = 163
        ;info   163, 493
        movf    rb2bus_byte_get__value,w
        return  
        ; line_number = 163
        ;  return value done


        ; delay after procedure statements=non-uniform




        ; line_number = 166
        ;info   166, 495
        ; procedure rb2bus_byte_put
rb2bus_byte_put:
        ; Last argument is sitting in W; save into argument variable
        movwf   rb2bus_byte_put__value
        ; delay=4294967295
        ; line_number = 167
        ; argument value byte
rb2bus_byte_put__value equ globals___0+4
        ; line_number = 168
        ;  returns_nothing

        ; # This procedure will send {value} to the bus.  It automatically
        ; # consumes the echo that is on the bus.  If {rb2bus_error} is
        ; # set, this procedure does nothing.

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
        ; line_number = 174
        ;  if !rb2bus_error start
        ;info   174, 496
        ; =>bit_code_emit@symbol(): sym=rb2bus_error
        ; No 1TEST: true.size=0 false.size=16
        ; No 2TEST: true.size=0 false.size=16
        ; 1GOTO: Single test with GOTO
        btfsc   rb2bus_error___byte, rb2bus_error___bit
        goto    rb2bus_byte_put__4
        ; # Wait until {_txreg} is ready for a value:
        ; line_number = 176
        ;  while !_txif start
rb2bus_byte_put__1:
        ;info   176, 498
        ; =>bit_code_emit@symbol(): sym=_txif
        ; No 1TEST: true.size=0 false.size=2
        ; No 2TEST: true.size=0 false.size=2
        ; 1GOTO: Single test with GOTO
        btfsc   _txif___byte, _txif___bit
        goto    rb2bus_byte_put__2
        ; line_number = 177
        ; call wait()
        ;info   177, 500
        call    wait

        goto    rb2bus_byte_put__1
rb2bus_byte_put__2:
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 176
        ;  while !_txif done
        ; # Ship {value} out to the bus with 9th bit turned off:
        ; line_number = 180
        ;  _adden := _false
        ;info   180, 502
        bcf     _adden___byte, _adden___bit
        ; line_number = 181
        ;  _tx9d := _false
        ;info   181, 503
        bcf     _tx9d___byte, _tx9d___bit
        ; line_number = 182
        ;  _txreg := value
        ;info   182, 504
        movf    rb2bus_byte_put__value,w
        movwf   _txreg

        ; # Wait for the echo to show up:
        ; line_number = 185
        ;  while !_rcif start
rb2bus_byte_put__3:
        ;info   185, 506
        ; =>bit_code_emit@symbol(): sym=_rcif
        ; 1TEST: Single test with code in skip slot
        btfss   _rcif___byte, _rcif___bit
        ; # Still waiting:
        goto    rb2bus_byte_put__3
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 185
        ;  while !_rcif done
        ; # Throw the received byte away (store into {_w}).
        ; line_number = 188
        ;  assemble
        ;info   188, 508
        ; line_number = 189
        ;info   189, 508
        movf    _rcreg,w

        ; # Recover from any receive errors by toggling {_cren}:
        ; line_number = 192
        ;  if _oerr start
        ;info   192, 509
        ; =>bit_code_emit@symbol(): sym=_oerr
        ; 1TEST: Single test with code in skip slot
        btfsc   _oerr___byte, _oerr___bit
        ; line_number = 193
        ; _cren := _false
        ;info   193, 510
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 192
        ;  if _oerr done
        ; line_number = 194
        ; if _ferr start
        ;info   194, 511
        ; =>bit_code_emit@symbol(): sym=_ferr
        ; 1TEST: Single test with code in skip slot
        btfsc   _ferr___byte, _ferr___bit
        ; line_number = 195
        ; _cren := _false
        ;info   195, 512
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 194
        ; if _ferr done
        ; line_number = 196
        ; _cren := _true
        ;info   196, 513
        bsf     _cren___byte, _cren___bit


rb2bus_byte_put__4:
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 174
        ;  if !rb2bus_error done
        ; delay after procedure statements=non-uniform
        ; Implied return
        retlw   0




        ; line_number = 199
        ;info   199, 515
        ; procedure rb2bus_command
rb2bus_command:
        ; Last argument is sitting in W; save into argument variable
        movwf   rb2bus_command__command
        ; delay=4294967295
        ; line_number = 200
        ; argument command byte
rb2bus_command__command equ globals___0+7
        ; line_number = 201
        ;  returns_nothing

        ; # This procedure will process an shared {command}.  This procedure
        ; # accesses the global string {id}.

        ; line_number = 206
        ;  local new_address byte
rb2bus_command__new_address equ globals___0+5
        ; line_number = 207
        ;  local temp byte
rb2bus_command__temp equ globals___0+6

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
        ; line_number = 209
        ;  switch command & 7 start
        ;info   209, 516
        ; switch_before:(data:00=uu=>00 code:XX=cc=>XX) size=1
        movlw   rb2bus_command__13>>8
        movwf   __pclath
        movlw   7
        andwf   rb2bus_command__command,w
        ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
        addlw   rb2bus_command__13
        movwf   __pcl
        ; page_group 8
rb2bus_command__13:
        goto    rb2bus_command__14
        goto    rb2bus_command__14
        goto    rb2bus_command__14
        goto    rb2bus_command__14
        goto    rb2bus_command__9
        goto    rb2bus_command__10
        goto    rb2bus_command__11
        goto    rb2bus_command__12
        ; line_number = 210
        ; case 4
rb2bus_command__9:
        ; # 1111 1100 (Address_Set):
        ; # Return old address:
        ; line_number = 213
        ;  call rb2bus_byte_put(rb2bus_address)
        ;info   213, 530
        movf    rb2bus_address,w
        call    rb2bus_byte_put

        ; # Fetch new address:
        ; line_number = 216
        ;  new_address := rb2bus_byte_get()
        ;info   216, 532
        call    rb2bus_byte_get
        movwf   rb2bus_command__new_address
        ; line_number = 217
        ;  if new_address = 0 || new_address = rb2bus_address start
        ;info   217, 534
        ; Left minus Right
        movf    rb2bus_command__new_address,w
        ; =>bit_code_emit@symbol(): sym=__z
        ; No 1TEST: true.size=1 false.size=36
        ; No 2TEST: true.size=1 false.size=36
        ; 2GOTO: Single test with two GOTO's
        btfsc   __z___byte, __z___bit
        goto    rb2bus_command__5
        ; Recombine code1_bit_states != code2_bit_states
        ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
        ; Left minus Right
        movf    rb2bus_address,w
        subwf   rb2bus_command__new_address,w
        ; =>bit_code_emit@symbol(): sym=__z
        ; No 1TEST: true.size=4 false.size=27
        ; No 2TEST: true.size=4 false.size=27
        ; 2GOTO: Single test with two GOTO's
        btfss   __z___byte, __z___bit
        goto    rb2bus_command__6
rb2bus_command__5:
        ; line_number = 218
        ; call rb2bus_byte_put(0)
        ;info   218, 541
        movlw   0
        call    rb2bus_byte_put
        ; line_number = 219
        ;  rb2bus_error := _true
        ;info   219, 543
        bsf     rb2bus_error___byte, rb2bus_error___bit
        ; line_number = 220
        ;  rb2bus_selected := _false
        ;info   220, 544
        bcf     rb2bus_selected___byte, rb2bus_selected___bit
        goto    rb2bus_command__7
        ; 2GOTO: Starting code 2
rb2bus_command__6:
        ; # Return new address:
        ; line_number = 223
        ;  call rb2bus_byte_put(new_address)
        ;info   223, 546
        movf    rb2bus_command__new_address,w
        call    rb2bus_byte_put

        ; # Fetch new address again as a check:
        ; line_number = 226
        ;  temp := rb2bus_byte_get()
        ;info   226, 548
        call    rb2bus_byte_get
        movwf   rb2bus_command__temp
        ; line_number = 227
        ;  if temp != new_address start
        ;info   227, 550
        ; Left minus Right
        movf    rb2bus_command__new_address,w
        subwf   rb2bus_command__temp,w
        ; =>bit_code_emit@symbol(): sym=__z
        ; No 1TEST: true.size=14 false.size=4
        ; No 2TEST: true.size=14 false.size=4
        ; 2GOTO: Single test with two GOTO's
        btfss   __z___byte, __z___bit
        goto    rb2bus_command__3
        ; line_number = 232
        ; call rb2bus_eedata_write(new_address)
        ;info   232, 554
        movf    rb2bus_command__new_address,w
        call    rb2bus_eedata_write
        ; line_number = 233
        ;  temp := rb2bus_eedata_read()
        ;info   233, 556
        call    rb2bus_eedata_read
        movwf   rb2bus_command__temp
        ; line_number = 234
        ;  if temp = new_address start
        ;info   234, 558
        ; Left minus Right
        movf    rb2bus_command__new_address,w
        subwf   rb2bus_command__temp,w
        ; =>bit_code_emit@symbol(): sym=__z
        ; No 1TEST: true.size=3 false.size=1
        ; No 2TEST: true.size=3 false.size=1
        ; 2GOTO: Single test with two GOTO's
        btfss   __z___byte, __z___bit
        goto    rb2bus_command__1
        ; line_number = 235
        ; rb2bus_address := new_address
        ;info   235, 562
        movf    rb2bus_command__new_address,w
        movwf   rb2bus_address
        ; line_number = 236
        ;  call rb2bus_byte_put(rb2_ok)
        ;info   236, 564
        movlw   165
        goto    rb2bus_command__2
        ; 2GOTO: Starting code 2
rb2bus_command__1:
        ; line_number = 238
        ; call rb2bus_byte_put(0)
        ;info   238, 566
        movlw   0
rb2bus_command__2:
        ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        call    rb2bus_byte_put
        ; line_number = 234
        ;  if temp = new_address done
        goto    rb2bus_command__4
        ; 2GOTO: Starting code 2
rb2bus_command__3:
        ; line_number = 228
        ; call rb2bus_byte_put(0)
        ;info   228, 569
        movlw   0
        call    rb2bus_byte_put
        ; line_number = 229
        ;  rb2bus_error := _true
        ;info   229, 571
        bsf     rb2bus_error___byte, rb2bus_error___bit
        ; line_number = 230
        ;  rb2bus_selected := _false
        ;info   230, 572
        bcf     rb2bus_selected___byte, rb2bus_selected___bit
rb2bus_command__4:
        ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; line_number = 227
        ;  if temp != new_address done
rb2bus_command__7:
        ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
        ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295
        ; 2GOTO: No goto needed; true=rb2bus_command__5 false= true_size=1 false_size=36
        ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; 2GOTO: code2 final bitstates:(data:XX=cc=>XX code:XX=cc=>XX)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; line_number = 217
        ;  if new_address = 0 || new_address = rb2bus_address done
        goto    rb2bus_command__14
        ; line_number = 239
        ; case 5
rb2bus_command__10:
        ; # 1111 1101 (Id_next):
        ; line_number = 241
        ;  if rb2bus_index < id.size start
        ;info   241, 574
        movlw   27
        subwf   rb2bus_index,w
        ; =>bit_code_emit@symbol(): sym=__c
        ; No 1TEST: true.size=0 false.size=4
        ; No 2TEST: true.size=0 false.size=4
        ; 1GOTO: Single test with GOTO
        btfsc   __c___byte, __c___bit
        goto    rb2bus_command__8
        ; line_number = 242
        ; call rb2bus_byte_put(id[rb2bus_index])
        ;info   242, 578
        movf    rb2bus_index,w
        call    id
        call    rb2bus_byte_put
        ; line_number = 243
        ;  rb2bus_index := rb2bus_index + 1
        ;info   243, 581
        incf    rb2bus_index,f
        ; #if rb2bus_index >= id.size
        ; #	rb2bus_index := rb2bus_index - 1
rb2bus_command__8:
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 241
        ;  if rb2bus_index < id.size done
        goto    rb2bus_command__14
        ; line_number = 246
        ; case 6
rb2bus_command__11:
        ; # 1111 1110 (Id_start):
        ; line_number = 248
        ;  rb2bus_index := 0
        ;info   248, 583
        clrf    rb2bus_index
        goto    rb2bus_command__14
        ; line_number = 249
        ; case 7
rb2bus_command__12:
        ; # 1111 1111 (Deselect):
        ; line_number = 251
        ;  call rb2bus_deselect()
        ;info   251, 585
        call    rb2bus_deselect


rb2bus_command__14:
        ; line_number = 209
        ;  switch command & 7 done
        ; delay after procedure statements=non-uniform
        ; Implied return
        retlw   0




        ; buffer = 'rb2bus_pic16f688'
        ; line_number = 18
        ;info   18, 587
        ; procedure rb2bus_initialize
rb2bus_initialize:
        ; Last argument is sitting in W; save into argument variable
        movwf   rb2bus_initialize__address
        ; delay=4294967295
        ; line_number = 19
        ; argument address byte
rb2bus_initialize__address equ globals___0+8
        ; line_number = 20
        ;  returns_nothing

        ; # This procedure is responsibile for initializing the UART
        ; # connected to the bus.  {address} is the address of this
        ; # slave module.  This code is specific to the PIC16F688.

        ; # Warm up the UART:
        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
        ; line_number = 27
        ;  _trisc@5 := _true
        ;info   27, 588
rb2bus_initialize__select__1___byte equ _trisc
rb2bus_initialize__select__1___bit equ 5
        bsf     __rp0___byte, __rp0___bit
        bsf     rb2bus_initialize__select__1___byte, rb2bus_initialize__select__1___bit
        ; line_number = 28
        ;  _trisc@4 := _true
        ;info   28, 590
rb2bus_initialize__select__2___byte equ _trisc
rb2bus_initialize__select__2___bit equ 4
        bsf     rb2bus_initialize__select__2___byte, rb2bus_initialize__select__2___bit

        ; # Initialize the {_txsta} register:
        ; line_number = 31
        ;  _txsta := 0
        ;info   31, 591
        bcf     __rp0___byte, __rp0___bit
        clrf    _txsta
        ; line_number = 32
        ;  _tx9 := _true
        ;info   32, 593
        bsf     _tx9___byte, _tx9___bit
        ; #_tx9 := _false
        ; line_number = 34
        ;  _txen := _true
        ;info   34, 594
        bsf     _txen___byte, _txen___bit
        ; line_number = 35
        ;  _brgh := _true
        ;info   35, 595
        bsf     _brgh___byte, _brgh___bit

        ; # Initialize the {_rcsta} register:
        ; line_number = 38
        ;  _rcsta := 0
        ;info   38, 596
        clrf    _rcsta
        ; line_number = 39
        ;  _spen := _true
        ;info   39, 597
        bsf     _spen___byte, _spen___bit
        ; line_number = 40
        ;  _rx9 := _true
        ;info   40, 598
        bsf     _rx9___byte, _rx9___bit
        ; line_number = 41
        ;  _cren := _true
        ;info   41, 599
        bsf     _cren___byte, _cren___bit
        ; #_adden := _true
        ; line_number = 43
        ;  _adden := _false
        ;info   43, 600
        bcf     _adden___byte, _adden___bit

        ; # Set up the baud rate generator:
        ; line_number = 46
        ;  _baudctl := 0
        ;info   46, 601
        clrf    _baudctl
        ; line_number = 47
        ;  _brg16 := _true
        ;info   47, 602
        bsf     _brg16___byte, _brg16___bit
        ; line_number = 48
        ;  _spbrg := _eusart_500000_low
        ;info   48, 603
        movlw   9
        movwf   _spbrg
        ; line_number = 49
        ;  _spbrgh := _eusart_500000_high
        ;info   49, 605
        clrf    _spbrgh

        ; line_number = 51
        ;  rb2bus_selected := _false
        ;info   51, 606
        bcf     rb2bus_selected___byte, rb2bus_selected___bit
        ; line_number = 52
        ;  rb2bus_error := _false
        ;info   52, 607
        bcf     rb2bus_error___byte, rb2bus_error___bit
        ; line_number = 53
        ;  rb2bus_index := 0
        ;info   53, 608
        clrf    rb2bus_index

        ; # Deal with setting {rb2bus_address} from EEData memory:
        ; line_number = 56
        ;  rb2bus_address := rb2bus_eedata_read()
        ;info   56, 609
        call    rb2bus_eedata_read
        movwf   rb2bus_address
        ; line_number = 57
        ;  if rb2bus_address = 0 start
        ;info   57, 611
        ; Left minus Right
        movf    rb2bus_address,w
        ; =>bit_code_emit@symbol(): sym=__z
        ; No 1TEST: true.size=2 false.size=0
        ; No 2TEST: true.size=2 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   __z___byte, __z___bit
        goto    rb2bus_initialize__3
        ; # EE data not set, so use {address} passed in as a argument:
        ; line_number = 59
        ;  rb2bus_address := address
        ;info   59, 614
        movf    rb2bus_initialize__address,w
        movwf   rb2bus_address


        ; Recombine size1 = 0 || size2 = 0
rb2bus_initialize__3:
        ; line_number = 57
        ;  if rb2bus_address = 0 done
        ; delay after procedure statements=non-uniform
        ; Implied return
        retlw   0




        ; line_number = 64
        ;info   64, 617
        ; procedure rb2bus_eedata_read
rb2bus_eedata_read:
        ; arguments_none
        ; line_number = 66
        ;  returns byte

        ; # This procedure will return the address stored in EEData.  If
        ; # there is no data, 0 is returned.

        ; line_number = 71
        ;  local temp1 byte
rb2bus_eedata_read__temp1 equ globals___0+9
        ; line_number = 72
        ;  local temp2 byte
rb2bus_eedata_read__temp2 equ globals___0+10

        ; # Read the first byte (the address):
        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
        ; line_number = 75
        ;  _eecon1 := 0
        ;info   75, 617
        bsf     __rp0___byte, __rp0___bit
        clrf    _eecon1
        ; line_number = 76
        ;  _eeadr := rb2bus_eedata_address
        ;info   76, 619
        movlw   254
        movwf   _eeadr
        ; line_number = 77
        ;  _rd := _true
        ;info   77, 621
        bsf     _rd___byte, _rd___bit
        ; line_number = 78
        ;  temp1 := _eedat
        ;info   78, 622
        movf    _eedat,w
        bcf     __rp0___byte, __rp0___bit
        movwf   rb2bus_eedata_read__temp1

        ; # Read the second byte (the 1'z complement)
        ; line_number = 81
        ;  _eeadr := _eeadr + 1
        ;info   81, 625
        bsf     __rp0___byte, __rp0___bit
        incf    _eeadr,f
        ; line_number = 82
        ;  _rd := _true
        ;info   82, 627
        bsf     _rd___byte, _rd___bit
        ; line_number = 83
        ;  temp2 := _eedat
        ;info   83, 628
        movf    _eedat,w
        bcf     __rp0___byte, __rp0___bit
        movwf   rb2bus_eedata_read__temp2

        ; # If they are 1's complement of one another, they are valid:
        ; line_number = 86
        ;  if temp1 = (0xff ^ temp2) start
        ;info   86, 631
        ; Left minus Right
        comf    rb2bus_eedata_read__temp2,w
        subwf   rb2bus_eedata_read__temp1,w
        ; =>bit_code_emit@symbol(): sym=__z
        ; No 1TEST: true.size=2 false.size=0
        ; No 2TEST: true.size=2 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   __z___byte, __z___bit
        goto    rb2bus_eedata_read__1
        ; # Return the valid address:
        ; line_number = 88
        ;  return temp1 start
        ; line_number = 88
        ;info   88, 635
        movf    rb2bus_eedata_read__temp1,w
        return  
        ; line_number = 88
        ;  return temp1 done

        ; Recombine size1 = 0 || size2 = 0
rb2bus_eedata_read__1:
        ; line_number = 86
        ;  if temp1 = (0xff ^ temp2) done
        ; # They are not 1's complement, so return 0 as an error:
        ; line_number = 91
        ;  return 0 start
        ; line_number = 91
        ;info   91, 637
        retlw   0
        ; line_number = 91
        ;  return 0 done


        ; delay after procedure statements=non-uniform




        ; line_number = 94
        ;info   94, 638
        ; procedure rb2bus_eedata_write
rb2bus_eedata_write:
        ; Last argument is sitting in W; save into argument variable
        movwf   rb2bus_eedata_write__address
        ; delay=4294967295
        ; line_number = 95
        ; argument address byte
rb2bus_eedata_write__address equ globals___0+11
        ; line_number = 96
        ;  returns_nothing

        ; # This procedure will write {address} into the EEData.  The
        ; # microcontroll pauses while the EEData is written.

        ; # Clear out the {_eecon1} register
        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
        ; line_number = 102
        ;  _eecon1 := 0
        ;info   102, 639
        bsf     __rp0___byte, __rp0___bit
        clrf    _eecon1
        ; line_number = 103
        ;  _eeadr := rb2bus_eedata_address
        ;info   103, 641
        movlw   254
        movwf   _eeadr
        ; line_number = 104
        ;  _eedat := address
        ;info   104, 643
        bcf     __rp0___byte, __rp0___bit
        movf    rb2bus_eedata_write__address,w
        bsf     __rp0___byte, __rp0___bit
        movwf   _eedat

        ; # Write 2 bytes ({address} followed by {address}^0xff):
        ; line_number = 107
        ;  loop_exactly 2 start
        ;info   107, 647
rb2bus_eedata_write__1 equ globals___0+76
        movlw   2
        bcf     __rp0___byte, __rp0___bit
        movwf   rb2bus_eedata_write__1
rb2bus_eedata_write__2:
        ; # Set the data to write:

        ; # Set up the for the write:
        ; line_number = 111
        ;  _wren := _true
        ;info   111, 650
        bsf     __rp0___byte, __rp0___bit
        bsf     _wren___byte, _wren___bit
        ; line_number = 112
        ;  _gie := _false
        ;info   112, 652
        bcf     _gie___byte, _gie___bit
        ; line_number = 113
        ;  _eecon2 := 0x55
        ;info   113, 653
        movlw   85
        movwf   _eecon2
        ; line_number = 114
        ;  _eecon2 := 0xaa
        ;info   114, 655
        movlw   170
        movwf   _eecon2
        ; # Start the write:
        ; line_number = 116
        ;  _wr := _true
        ;info   116, 657
        bsf     _wr___byte, _wr___bit

        ; # Wait for write to complete:
        ; line_number = 119
        ;  while _wr start
rb2bus_eedata_write__3:
        ;info   119, 658
        ; =>bit_code_emit@symbol(): sym=_wr
        ; 1TEST: Single test with code in skip slot
        btfsc   _wr___byte, _wr___bit
        ; line_number = 120
        ; do_nothing
        ;info   120, 659

        goto    rb2bus_eedata_write__3
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 119
        ;  while _wr done
        ; # Disable writing:
        ; line_number = 123
        ;  _wren := _false
        ;info   123, 660
        bcf     _wren___byte, _wren___bit

        ; # Prepare the second byte of data:
        ; line_number = 126
        ;  _eeadr := _eeadr + 1
        ;info   126, 661
        incf    _eeadr,f
        ; line_number = 127
        ;  _eedat := address ^ 0xff
        ;info   127, 662
        bcf     __rp0___byte, __rp0___bit
        comf    rb2bus_eedata_write__address,w
        bsf     __rp0___byte, __rp0___bit
        movwf   _eedat

        bcf     __rp0___byte, __rp0___bit
        ; line_number = 107
        ;  loop_exactly 2 wrap-up
        decfsz  rb2bus_eedata_write__1,f
        goto    rb2bus_eedata_write__2
        ; line_number = 107
        ;  loop_exactly 2 done
        ; delay after procedure statements=non-uniform
        ; Implied return
        retlw   0




        ; buffer = '_signed16'
        ; line_number = 62
        ;info   62, 670
        ; procedure _signed16_pointer_load
_signed16_pointer_load:
        ; Last argument is sitting in W; save into argument variable
        movwf   _signed16_pointer_load__pointer
        ; delay=4294967295
        ; line_number = 63
        ; argument pointer byte
_signed16_pointer_load__pointer equ globals___1+10
        ; line_number = 64
        ;  returns_nothing
        ; line_number = 65
        ;  return_suppress

        ; # This procedure will load the signed16 "A" register with {pointer}.

        ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
        ; line_number = 69
        ;  assemble
        ;info   69, 671
        ; # Pointer is in W; move it to {_fsr}:
        ; line_number = 71
        ;info   71, 671
        movwf   _fsr
        ; # Set up {_irp} and _{fsr}:
        ; line_number = 73
        ;info   73, 672
        bcf     _irp___byte, _irp___bit
        ; line_number = 74
        ;info   74, 673
        rlf     _fsr,f
        ; line_number = 75
        ;info   75, 674
        btfsc   _c___byte, _c___bit
        ; line_number = 76
        ;info   76, 675
        bsf     _irp___byte, _irp___bit
        ; line_number = 77
        ;info   77, 676
        bcf     _fsr, 0
        ; # Grab the value and store into {_signed16_a0}:{_signed16_a1}
        ; line_number = 79
        ;info   79, 677
        movf    _indf,w
        ; line_number = 80
        ;info   80, 678
        movwf   _signed16_a0
        ; line_number = 81
        ;info   81, 679
        incf    _fsr,f
        ; line_number = 82
        ;info   82, 680
        movf    _indf,w
        ; line_number = 83
        ;info   83, 681
        movwf   _signed16_a1
        ; line_number = 84
        ;info   84, 682
        return  


        ; delay after procedure statements=non-uniform
        ; Return instruction suppressed by 'return_suppress'




        ; line_number = 87
        ;info   87, 683
        ; procedure _signed16_pointer_add
_signed16_pointer_add:
        ; Last argument is sitting in W; save into argument variable
        movwf   _signed16_pointer_add__pointer
        ; delay=4294967295
        ; line_number = 88
        ; argument pointer byte
_signed16_pointer_add__pointer equ globals___1+11
        ; line_number = 89
        ;  returns_nothing
        ; line_number = 90
        ;  return_suppress

        ; # This procedure will add the signed16 "A" register with {pointer}
        ; # and store the result back into the "A" register.

        ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
        ; line_number = 95
        ;  assemble
        ;info   95, 684
        ; # Pointer is in W; move it to {_fsr}:
        ; line_number = 97
        ;info   97, 684
        movwf   _fsr
        ; # Set up {_irp} and _{fsr}:
        ; line_number = 99
        ;info   99, 685
        bcf     _irp___byte, _irp___bit
        ; line_number = 100
        ;info   100, 686
        rlf     _fsr,f
        ; line_number = 101
        ;info   101, 687
        btfsc   _c___byte, _c___bit
        ; line_number = 102
        ;info   102, 688
        bsf     _irp___byte, _irp___bit
        ; line_number = 103
        ;info   103, 689
        bcf     _fsr, 0
        ; # Grab MSB and add it into {_signed16_a0} (MSB):
        ; line_number = 105
        ;info   105, 690
        movf    _indf,w
        ; line_number = 106
        ;info   106, 691
        addwf   _signed16_a0,f
        ; line_number = 107
        ;info   107, 692
        incf    _fsr,f

        ; # Grab LSB and add it into {_signed16_a1} (LSB):
        ; line_number = 110
        ;info   110, 693
        movf    _indf,w
        ; line_number = 111
        ;info   111, 694
        addwf   _signed16_a1,f

        ; # If C is 1, increment {_signed16_a0} (MSB):
        ; line_number = 114
        ;info   114, 695
        btfsc   _c___byte, _c___bit
        ; line_number = 115
        ;info   115, 696
        incf    _signed16_a0,f
        ; line_number = 116
        ;info   116, 697
        return  


        ; delay after procedure statements=non-uniform
        ; Return instruction suppressed by 'return_suppress'




        ; line_number = 119
        ;info   119, 698
        ; procedure _signed16_pointer_divide
_signed16_pointer_divide:
        ; Last argument is sitting in W; save into argument variable
        movwf   _signed16_pointer_divide__pointer
        ; delay=4294967295
        ; line_number = 120
        ; argument pointer byte
_signed16_pointer_divide__pointer equ globals___1+12
        ; line_number = 121
        ;  returns_nothing
        ; line_number = 122
        ;  return_suppress

        ; # This procedure will divide the signed16 A register by {pointer} and
        ; # store the result back into the A "register".

        ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
        ; line_number = 127
        ;  assemble
        ;info   127, 699
        ; # Pointer is in W; move it to {_fsr}:
        ; line_number = 129
        ;info   129, 699
        movwf   _fsr
        ; # Set up {_irp} and _{fsr}:
        ; line_number = 131
        ;info   131, 700
        bcf     _irp___byte, _irp___bit
        ; line_number = 132
        ;info   132, 701
        rlf     _fsr,f
        ; line_number = 133
        ;info   133, 702
        btfsc   _c___byte, _c___bit
        ; line_number = 134
        ;info   134, 703
        bsf     _irp___byte, _irp___bit
        ; line_number = 135
        ;info   135, 704
        bcf     _fsr, 0
        ; # Grab the value and store into {_signed16_b0}:{_signed16_b1}:
        ; line_number = 137
        ;info   137, 705
        movf    _indf,w
        ; line_number = 138
        ;info   138, 706
        movwf   _signed16_b0
        ; line_number = 139
        ;info   139, 707
        incf    _fsr,f
        ; line_number = 140
        ;info   140, 708
        movf    _indf,w
        ; line_number = 141
        ;info   141, 709
        movwf   _signed16_b1

        ; # Perform the divide:
        ; line_number = 144
        ;info   144, 710
        call    _signed16_divide_raw

        ; line_number = 146
        ;info   146, 711
        return  


        ; delay after procedure statements=non-uniform
        ; Return instruction suppressed by 'return_suppress'




        ; line_number = 149
        ;info   149, 712
        ; procedure _signed16_pointer_multiply
_signed16_pointer_multiply:
        ; Last argument is sitting in W; save into argument variable
        movwf   _signed16_pointer_multiply__pointer
        ; delay=4294967295
        ; line_number = 150
        ; argument pointer byte
_signed16_pointer_multiply__pointer equ globals___1+13
        ; line_number = 151
        ;  returns_nothing
        ; line_number = 152
        ;  return_suppress

        ; # This procedure will multiply {pointer} with the signed16 A "register"
        ; # and store the result back into the A "register".

        ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
        ; line_number = 157
        ;  assemble
        ;info   157, 713
        ; # Pointer is in W; move it to {_fsr}:
        ; line_number = 159
        ;info   159, 713
        movwf   _fsr
        ; # Set up {_irp} and _{fsr}:
        ; line_number = 161
        ;info   161, 714
        bcf     _irp___byte, _irp___bit
        ; line_number = 162
        ;info   162, 715
        rlf     _fsr,f
        ; line_number = 163
        ;info   163, 716
        btfsc   _c___byte, _c___bit
        ; line_number = 164
        ;info   164, 717
        bsf     _irp___byte, _irp___bit
        ; line_number = 165
        ;info   165, 718
        bcf     _fsr, 0
        ; # Grab the value and store into {_signed16_b0}:{_signed16_b1}:
        ; line_number = 167
        ;info   167, 719
        movf    _indf,w
        ; line_number = 168
        ;info   168, 720
        movwf   _signed16_b0
        ; line_number = 169
        ;info   169, 721
        incf    _fsr,f
        ; line_number = 170
        ;info   170, 722
        movf    _indf,w
        ; line_number = 171
        ;info   171, 723
        movwf   _signed16_b1

        ; # The code below came from <http://www.piclist.com/>.
        ; # It is not totally clear who wrote the code.  The names
        ; # Bob Fehrenbac & Scott Dattalo are present, but there is
        ; # no explicit authorship.  The Multiple byte addition routine
        ; # is from Microchip AN617.  As is typical, nobody bothered
        ; # to comment the code.
        ; #
        ; # This multiplies <_signed16_a0:_signed16_a1> by
        ; # <_signed16_b0:_signed16_b1> and store the signed result into
        ; # <_signed16_result0:_signed16_result1:_signed16_result2:_signed16_result3>
        ; # Then we trim the result down and store it back into
        ; # <_signed16_a0:_signed16_a1>.
        ; #
        ; # This multiply routine takes between 134 to 248 cycles.
        ; #
        ; # This program looks at the lsb of _signed16_a1 to decide whether
        ; # to add _signed16_b1 to _signed16_result2.
        ; # and b2 to _signed16_result1, with appropriate carrys
        ; # It then looks at the lsb of _signed16_a0 to decide whether
        ; # to add _signed16_b1 to _signed16_result1 and 
        ; # signed16_b0 to _signed16_result0, again with appropriate carrys.
        ; # The rotates then only have to be done 8 times
        ; #
        ; # This is uses slightly more program but takes a little less time than 
        ; # a routine that performs one 16 bit addition per rotate and 16 rotates

        ; line_number = 199
        ;  assemble
        ;info   199, 724
        ; line_number = 200
        ;info   200, 724
        clrf    _signed16_result0
        ; line_number = 201
        ;info   201, 725
        clrf    _signed16_result1
        ; line_number = 202
        ;info   202, 726
        clrf    _signed16_result2
        ; line_number = 203
        ;info   203, 727
        movlw   128
        ; line_number = 204
        ;info   204, 728
        movwf   _signed16_result3

        ; line_number = 206
        ;info   206, 729
        clrf    _signed16_neg_flag

        ; line_number = 208
        ;info   208, 730
        btfss   _signed16_a0, 7
        ; line_number = 209
        ;info   209, 731
        goto    _signed16_multiply_a_pos
        ; line_number = 210
        ;info   210, 732
        comf    _signed16_a0,f
        ; line_number = 211
        ;info   211, 733
        comf    _signed16_a1,f
        ; line_number = 212
        ;info   212, 734
        incf    _signed16_a1,f
        ; line_number = 213
        ;info   213, 735
        btfsc   _z___byte, _z___bit
        ; line_number = 214
        ;info   214, 736
        incf    _signed16_a0,f
        ; line_number = 215
        ;info   215, 737
        incf    _signed16_neg_flag,f

        ; line_number = 217
_signed16_multiply_a_pos:
        ; line_number = 218
        ;info   218, 738
        btfss   _signed16_b0, 7
        ; line_number = 219
        ;info   219, 739
        goto    _signed16_multiply_nextbit
        ; line_number = 220
        ;info   220, 740
        comf    _signed16_b0,f
        ; line_number = 221
        ;info   221, 741
        comf    _signed16_b1,f
        ; line_number = 222
        ;info   222, 742
        incf    _signed16_b1,f
        ; line_number = 223
        ;info   223, 743
        btfsc   _z___byte, _z___bit
        ; line_number = 224
        ;info   224, 744
        incf    _signed16_b0,f
        ; line_number = 225
        ;info   225, 745
        incf    _signed16_neg_flag,f

        ; line_number = 227
_signed16_multiply_nextbit:
        ; line_number = 228
        ;info   228, 746
        rrf     _signed16_a0,f
        ; line_number = 229
        ;info   229, 747
        rrf     _signed16_a1,f

        ; line_number = 231
        ;info   231, 748
        btfss   _c___byte, _c___bit
        ; line_number = 232
        ;info   232, 749
        goto    _signed16_multiply_nobit_l
        ; line_number = 233
        ;info   233, 750
        movf    _signed16_b1,w
        ; line_number = 234
        ;info   234, 751
        addwf   _signed16_result2,f

        ; line_number = 236
        ;info   236, 752
        movf    _signed16_b0,w
        ; line_number = 237
        ;info   237, 753
        btfsc   _c___byte, _c___bit
        ; line_number = 238
        ;info   238, 754
        incfsz  _signed16_b0,w
        ; line_number = 239
        ;info   239, 755
        addwf   _signed16_result1,f
        ; line_number = 240
        ;info   240, 756
        btfsc   _c___byte, _c___bit
        ; line_number = 241
        ;info   241, 757
        incf    _signed16_result0,f
        ; line_number = 242
        ;info   242, 758
        bcf     _c___byte, _c___bit

        ; line_number = 244
_signed16_multiply_nobit_l:
        ; line_number = 245
        ;info   245, 759
        btfss   _signed16_a1, 7
        ; line_number = 246
        ;info   246, 760
        goto    _signed16_multiply_nobit_h
        ; line_number = 247
        ;info   247, 761
        movf    _signed16_b1,w
        ; line_number = 248
        ;info   248, 762
        addwf   _signed16_result1,f
        ; line_number = 249
        ;info   249, 763
        btfsc   _c___byte, _c___bit
        ; line_number = 250
        ;info   250, 764
        incf    _signed16_result0,f
        ; line_number = 251
        ;info   251, 765
        movf    _signed16_b0,w
        ; line_number = 252
        ;info   252, 766
        addwf   _signed16_result0,f

        ; line_number = 254
_signed16_multiply_nobit_h:
        ; line_number = 255
        ;info   255, 767
        rrf     _signed16_result0,f
        ; line_number = 256
        ;info   256, 768
        rrf     _signed16_result1,f
        ; line_number = 257
        ;info   257, 769
        rrf     _signed16_result2,f
        ; line_number = 258
        ;info   258, 770
        rrf     _signed16_result3,f

        ; line_number = 260
        ;info   260, 771
        btfss   _c___byte, _c___bit
        ; line_number = 261
        ;info   261, 772
        goto    _signed16_multiply_nextbit
        ; line_number = 262
        ;info   262, 773
        btfss   _signed16_neg_flag, 0
        ; line_number = 263
        ;info   263, 774
        goto    _signed16_mulitply_no_invert

        ; line_number = 265
        ;info   265, 775
        comf    _signed16_result0,f
        ; line_number = 266
        ;info   266, 776
        comf    _signed16_result1,f
        ; line_number = 267
        ;info   267, 777
        comf    _signed16_result2,f
        ; line_number = 268
        ;info   268, 778
        comf    _signed16_result3,f

        ; line_number = 270
        ;info   270, 779
        incf    _signed16_result3,f
        ; line_number = 271
        ;info   271, 780
        btfsc   _z___byte, _z___bit
        ; line_number = 272
        ;info   272, 781
        incf    _signed16_result2,f
        ; line_number = 273
        ;info   273, 782
        btfsc   _z___byte, _z___bit
        ; line_number = 274
        ;info   274, 783
        incf    _signed16_result1,f
        ; line_number = 275
        ;info   275, 784
        btfsc   _z___byte, _z___bit
        ; line_number = 276
        ;info   276, 785
        incf    _signed16_result0,f
        ; line_number = 277
_signed16_mulitply_no_invert:

        ; # Store the final result into _signed16_a<0:1>:
        ; line_number = 280
        ;info   280, 786
        movf    _signed16_result2,w
        ; line_number = 281
        ;info   281, 787
        movwf   _signed16_a0
        ; line_number = 282
        ;info   282, 788
        movf    _signed16_result3,w
        ; line_number = 283
        ;info   283, 789
        movwf   _signed16_a1
        ; line_number = 284
        ;info   284, 790
        return  


        ; delay after procedure statements=non-uniform
        ; Return instruction suppressed by 'return_suppress'




        ; line_number = 287
        ;info   287, 791
        ; procedure _signed16_pointer_subtract
_signed16_pointer_subtract:
        ; Last argument is sitting in W; save into argument variable
        movwf   _signed16_pointer_subtract__pointer
        ; delay=4294967295
        ; line_number = 288
        ; argument pointer byte
_signed16_pointer_subtract__pointer equ globals___1+14
        ; line_number = 289
        ;  returns_nothing
        ; line_number = 290
        ;  return_suppress

        ; # This procedure will subtract {pointer} from the signed16 A "register"
        ; # and store the result back into the A "register".

        ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
        ; line_number = 295
        ;  assemble
        ;info   295, 792
        ; # Pointer is in W; move it to {_fsr}:
        ; line_number = 297
        ;info   297, 792
        movwf   _fsr
        ; # Set up {_irp} and _{fsr}:
        ; line_number = 299
        ;info   299, 793
        bcf     _irp___byte, _irp___bit
        ; line_number = 300
        ;info   300, 794
        rlf     _fsr,f
        ; line_number = 301
        ;info   301, 795
        btfsc   _c___byte, _c___bit
        ; line_number = 302
        ;info   302, 796
        bsf     _irp___byte, _irp___bit
        ; line_number = 303
        ;info   303, 797
        bcf     _fsr, 0

        ; # Subtract MSB from {_signed16_a0} (MSB):
        ; line_number = 306
        ;info   306, 798
        comf    _indf,w
        ; line_number = 307
        ;info   307, 799
        addwf   _signed16_a0,f
        ; line_number = 308
        ;info   308, 800
        incf    _fsr,f

        ; # Subtract LSB from {_signed16_a1} (LSB):
        ; line_number = 311
        ;info   311, 801
        comf    _indf,w
        ; line_number = 312
        ;info   312, 802
        addlw   1

        ; # If the C bit is set, increment {_signed16_a0} (MSB):
        ; line_number = 315
        ;info   315, 803
        btfsc   _c___byte, _c___bit
        ; line_number = 316
        ;info   316, 804
        incf    _signed16_a0,f

        ; # Finish the subtraction:
        ; line_number = 319
        ;info   319, 805
        addwf   _signed16_a1,f

        ; # If the C bit is set, increment {_signed16_a0} (MSB):
        ; line_number = 322
        ;info   322, 806
        btfsc   _c___byte, _c___bit
        ; line_number = 323
        ;info   323, 807
        incf    _signed16_a0,f
        ; line_number = 324
        ;info   324, 808
        return  


        ; delay after procedure statements=non-uniform
        ; Return instruction suppressed by 'return_suppress'




        ; line_number = 327
        ;info   327, 809
        ; procedure _signed16_pointer_store
_signed16_pointer_store:
        ; Last argument is sitting in W; save into argument variable
        movwf   _signed16_pointer_store__pointer
        ; delay=4294967295
        ; line_number = 328
        ; argument pointer byte
_signed16_pointer_store__pointer equ globals___1+15
        ; line_number = 329
        ;  returns_nothing
        ; line_number = 330
        ;  return_suppress

        ; # This procedure will store the signed16 A "register" into {pointer}.

        ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
        ; line_number = 334
        ;  assemble
        ;info   334, 810
        ; # Pointer is in W; move it to {_fsr}:
        ; line_number = 336
        ;info   336, 810
        movwf   _fsr
        ; # Set up {_irp} and _{fsr}:
        ; line_number = 338
        ;info   338, 811
        bcf     _irp___byte, _irp___bit
        ; line_number = 339
        ;info   339, 812
        rlf     _fsr,f
        ; line_number = 340
        ;info   340, 813
        btfsc   _c___byte, _c___bit
        ; line_number = 341
        ;info   341, 814
        bsf     _irp___byte, _irp___bit
        ; line_number = 342
        ;info   342, 815
        bcf     _fsr, 0
        ; # Grab the value and store into {_signed16_a0}:{_signed16_a1}:
        ; line_number = 344
        ;info   344, 816
        movf    _signed16_a0,w
        ; line_number = 345
        ;info   345, 817
        movwf   _indf
        ; line_number = 346
        ;info   346, 818
        incf    _fsr,f
        ; line_number = 347
        ;info   347, 819
        movf    _signed16_a1,w
        ; line_number = 348
        ;info   348, 820
        movwf   _indf
        ; line_number = 349
        ;info   349, 821
        return  


        ; delay after procedure statements=non-uniform
        ; Return instruction suppressed by 'return_suppress'




        ; line_number = 352
        ;info   352, 822
        ; procedure _signed16_negate
_signed16_negate:
        ; arguments_none
        ; line_number = 354
        ;  returns_nothing

        ; # This procedure will negate the signed16 A registers.

        ; # Flip the sign bit:
        ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
        ; line_number = 359
        ;  _signed16_a0 := 0xff ^ _signed16_a0
        ;info   359, 822
        comf    _signed16_a0,f
        ; line_number = 360
        ;  _signed16_a1 := 0 - _signed16_a1
        ;info   360, 823
        movf    _signed16_a1,w
        sublw   0
        movwf   _signed16_a1
        ; line_number = 361
        ;  if _c start
        ;info   361, 826
        ; =>bit_code_emit@symbol(): sym=_c
        ; 1TEST: Single test with code in skip slot
        btfsc   _c___byte, _c___bit
        ; line_number = 362
        ; _signed16_a0 := _signed16_a0 + 1    
        ;info   362, 827
        incf    _signed16_a0,f


        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 361
        ;  if _c done
        ; delay after procedure statements=non-uniform
        ; Implied return
        retlw   0




        ; line_number = 365
        ;info   365, 829
        ; procedure _signed16_pointer_swap
_signed16_pointer_swap:
        ; Last argument is sitting in W; save into argument variable
        movwf   _signed16_pointer_swap__pointer
        ; delay=4294967295
        ; line_number = 366
        ; argument pointer byte
_signed16_pointer_swap__pointer equ globals___1+16
        ; line_number = 367
        ;  returns_nothing
        ; line_number = 368
        ;  return_suppress

        ; # This procedure will swap the signed16 A "register" with {pointer}:

        ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
        ; line_number = 372
        ;  assemble
        ;info   372, 830
        ; # Pointer is in W; move it to {_fsr}:
        ; line_number = 374
        ;info   374, 830
        movwf   _fsr
        ; # Set up {_irp} and _{fsr}:
        ; line_number = 376
        ;info   376, 831
        bcf     _irp___byte, _irp___bit
        ; line_number = 377
        ;info   377, 832
        rlf     _fsr,f
        ; line_number = 378
        ;info   378, 833
        btfsc   _c___byte, _c___bit
        ; line_number = 379
        ;info   379, 834
        bsf     _irp___byte, _irp___bit
        ; line_number = 380
        ;info   380, 835
        bcf     _fsr, 0

        ; # Swap {pointer} with {_signed16_a0}:
        ; line_number = 383
        ;info   383, 836
        movf    _indf,w
        ; line_number = 384
        ;info   384, 837
        xorwf   _signed16_a0,f
        ; line_number = 385
        ;info   385, 838
        xorwf   _signed16_a0,w
        ; line_number = 386
        ;info   386, 839
        xorwf   _signed16_a0,f
        ; line_number = 387
        ;info   387, 840
        movwf   _indf

        ; # Swap {pointer}+1 with {_signed16_a1}:
        ; line_number = 390
        ;info   390, 841
        incf    _fsr,f
        ; line_number = 391
        ;info   391, 842
        movf    _indf,w
        ; line_number = 392
        ;info   392, 843
        xorwf   _signed16_a1,f
        ; line_number = 393
        ;info   393, 844
        xorwf   _signed16_a1,w
        ; line_number = 394
        ;info   394, 845
        xorwf   _signed16_a1,f
        ; line_number = 395
        ;info   395, 846
        movwf   _indf
        ; line_number = 396
        ;info   396, 847
        return  


        ; delay after procedure statements=non-uniform
        ; Return instruction suppressed by 'return_suppress'




_signed16_from_byte__0return equ globals___1+18
        ; line_number = 399
        ;info   399, 848
        ; procedure _signed16_from_byte
_signed16_from_byte:
        ; Last argument is sitting in W; save into argument variable
        movwf   _signed16_from_byte__number
        ; delay=4294967295
        ; line_number = 400
        ; argument number byte
_signed16_from_byte__number equ globals___1+17
        ; line_number = 401
        ;  returns signed16

        ; # This procedure will convert {number} into a signed16 and return it.

        ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
        ; line_number = 405
        ;  _signed16_a0 := 0
        ;info   405, 849
        clrf    _signed16_a0
        ; line_number = 406
        ;  _signed16_a1 := number
        ;info   406, 850
        movf    _signed16_from_byte__number,w
        movwf   _signed16_a1
        ; line_number = 407
        ;  assemble
        ;info   407, 852
        ; line_number = 408
        ;info   408, 852
        movlw   _signed16_from_byte__0return>>1
        ; line_number = 409
        ;info   409, 853
        call    _signed16_pointer_store
        ; line_number = 410
        ;info   410, 854
        retlw   _signed16_from_byte__0return>>1


        ; delay after procedure statements=non-uniform
        ; Exiting procedure with no return(s); infinite loop fail
_signed16_from_byte__1:
        goto    _signed16_from_byte__1




_signed16_from_byte2__0return equ globals___1+22
        ; line_number = 413
        ;info   413, 856
        ; procedure _signed16_from_byte2
_signed16_from_byte2:
        ; Last argument is sitting in W; save into argument variable
        movwf   _signed16_from_byte2__byte2
        ; delay=4294967295
        ; line_number = 414
        ; argument byte1 byte
_signed16_from_byte2__byte1 equ globals___1+20
        ; line_number = 415
        ; argument byte2 byte
_signed16_from_byte2__byte2 equ globals___1+21
        ; line_number = 416
        ;  returns signed16

        ; # This procedure will convert {byte1} and {byte2} into a signed16
        ; # and return it.

        ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
        ; line_number = 421
        ;  _signed16_a0 := byte1
        ;info   421, 857
        movf    _signed16_from_byte2__byte1,w
        movwf   _signed16_a0
        ; line_number = 422
        ;  _signed16_a1 := byte2
        ;info   422, 859
        movf    _signed16_from_byte2__byte2,w
        movwf   _signed16_a1
        ; line_number = 423
        ;  assemble
        ;info   423, 861
        ; line_number = 424
        ;info   424, 861
        movlw   _signed16_from_byte2__0return>>1
        ; line_number = 425
        ;info   425, 862
        call    _signed16_pointer_store
        ; line_number = 426
        ;info   426, 863
        retlw   _signed16_from_byte2__0return>>1


        ; delay after procedure statements=non-uniform
        ; Exiting procedure with no return(s); infinite loop fail
_signed16_from_byte2__1:
        goto    _signed16_from_byte2__1




        ; line_number = 429
        ;info   429, 865
        ; procedure _signed16_to_byte
_signed16_to_byte:
        ; line_number = 430
        ; argument number signed16
_signed16_to_byte__number equ globals___1+24
        ; line_number = 431
        ;  returns byte

        ; # This procedure will convert {number} into a 8-bit integer and return it.

        ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
        ; line_number = 435
        ;  assemble
        ;info   435, 865
        ; # Get the argument stored into the signed16 "A" register:
        ; line_number = 437
        ;info   437, 865
        movlw   _signed16_to_byte__number>>1
        ; line_number = 438
        ;info   438, 866
        call    _signed16_pointer_load
        ; line_number = 439
        ; return _signed16_a1 start
        ; line_number = 439
        ;info   439, 867
        movf    _signed16_a1,w
        return  
        ; line_number = 439
        ; return _signed16_a1 done


        ; delay after procedure statements=non-uniform




        ; line_number = 442
        ;info   442, 869
        ; procedure _signed16_byte_high
_signed16_byte_high:
        ; line_number = 443
        ; argument number signed16
_signed16_byte_high__number equ globals___1+26
        ; line_number = 444
        ;  returns byte

        ; # This procedure will return the high 8 bits of {number}.

        ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
        ; line_number = 448
        ;  assemble
        ;info   448, 869
        ; # Get the argument stored into the signed16 "A" register:
        ; line_number = 450
        ;info   450, 869
        movlw   _signed16_byte_high__number>>1
        ; line_number = 451
        ;info   451, 870
        call    _signed16_pointer_load
        ; line_number = 452
        ; return _signed16_a0 start
        ; line_number = 452
        ;info   452, 871
        movf    _signed16_a0,w
        return  
        ; line_number = 452
        ; return _signed16_a0 done


        ; delay after procedure statements=non-uniform




        ; line_number = 455
        ;info   455, 873
        ; procedure _signed16_byte_low
_signed16_byte_low:
        ; line_number = 456
        ; argument number signed16
_signed16_byte_low__number equ globals___1+28
        ; line_number = 457
        ;  returns byte

        ; # This procedure will return the low 8 bits of {number}.

        ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
        ; line_number = 461
        ;  assemble
        ;info   461, 873
        ; # Get the argument stored into the signed16 "A" register:
        ; line_number = 463
        ;info   463, 873
        movlw   _signed16_byte_low__number>>1
        ; line_number = 464
        ;info   464, 874
        call    _signed16_pointer_load
        ; line_number = 465
        ; return _signed16_a1 start
        ; line_number = 465
        ;info   465, 875
        movf    _signed16_a1,w
        return  
        ; line_number = 465
        ; return _signed16_a1 done


        ; delay after procedure statements=non-uniform




        ; line_number = 468
        ;info   468, 877
        ; procedure _signed16_equals
_signed16_equals:
        ; arguments_none
        ; line_number = 470
        ;  returns_nothing

        ; # This procedure will set the Z bit if register "A" is zero.

        ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
        ; line_number = 474
        ;  assemble
        ;info   474, 877
        ; line_number = 475
        ;info   475, 877
        movf    _signed16_a0,w
        ; line_number = 476
        ;info   476, 878
        iorwf   _signed16_a1,w
        ; # Return is implicit


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




        ; line_number = 480
        ;info   480, 880
        ; procedure _signed16_not_equal
_signed16_not_equal:
        ; arguments_none
        ; line_number = 482
        ;  returns_nothing

        ; # This procedure will set the Z bit if register "A" is non-zero.

        ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
        ; line_number = 486
        ;  assemble
        ;info   486, 880
        ; line_number = 487
        ;info   487, 880
        movf    _signed16_a0,w
        ; line_number = 488
        ;info   488, 881
        iorwf   _signed16_a1,w
        ; line_number = 489
        ; if _z start
        ;info   489, 882
        ; =>bit_code_emit@symbol(): sym=_z
        ; No 1TEST: true.size=2 false.size=0
        ; No 2TEST: true.size=2 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   _z___byte, _z___bit
        goto    _signed16_not_equal__1
        ; line_number = 490
        ; _z := _false
        ;info   490, 884
        bcf     _z___byte, _z___bit
        ; line_number = 491
        ;  return start
        ; line_number = 491
        ;info   491, 885
        retlw   0
        ; line_number = 491
        ;  return done
        ; Recombine size1 = 0 || size2 = 0
_signed16_not_equal__1:
        ; line_number = 489
        ; if _z done
        ; line_number = 492
        ; _z := _true
        ;info   492, 886
        bsf     _z___byte, _z___bit
        ; # Return is implicit


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




        ; line_number = 496
        ;info   496, 888
        ; procedure _signed16_less_than
_signed16_less_than:
        ; arguments_none
        ; line_number = 498
        ;  returns_nothing

        ; # This procedure will set the Z bit if register "A" is non-zero and
        ; # positive.

        ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
        ; line_number = 503
        ;  _z := _false
        ;info   503, 888
        bcf     _z___byte, _z___bit
        ; line_number = 504
        ;  if _signed16_a0@7 start
        ;info   504, 889
_signed16_less_than__select__1___byte equ _signed16_a0
_signed16_less_than__select__1___bit equ 7
        ; =>bit_code_emit@symbol(): sym=_signed16_less_than__select__1
        ; 1TEST: Single test with code in skip slot
        btfsc   _signed16_less_than__select__1___byte, _signed16_less_than__select__1___bit
        ; line_number = 505
        ; _z := _true
        ;info   505, 890
        bsf     _z___byte, _z___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 504
        ;  if _signed16_a0@7 done
        ; # Return is implicit


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




        ; line_number = 509
        ;info   509, 892
        ; procedure _signed16_less_than_or_equal
_signed16_less_than_or_equal:
        ; arguments_none
        ; line_number = 511
        ;  returns_nothing

        ; # This procedure will set the Z bit if register "A" is zero or positive.

        ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
        ; line_number = 515
        ;  assemble
        ;info   515, 892
        ; line_number = 516
        ;info   516, 892
        movf    _signed16_a1,w
        ; line_number = 517
        ;info   517, 893
        iorwf   _signed16_a0,w
        ; line_number = 518
        ; if _z start
        ;info   518, 894
        ; =>bit_code_emit@symbol(): sym=_z
        ; 1TEST: Single test with code in skip slot
        btfsc   _z___byte, _z___bit
        ; line_number = 519
        ; return start
        ; line_number = 519
        ;info   519, 895
        retlw   0
        ; line_number = 519
        ; return done
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 518
        ; if _z done
        ; # _z == _false
        ; line_number = 521
        ;  if _signed16_a0@7 start
        ;info   521, 896
_signed16_less_than_or_equal__select__1___byte equ _signed16_a0
_signed16_less_than_or_equal__select__1___bit equ 7
        ; =>bit_code_emit@symbol(): sym=_signed16_less_than_or_equal__select__1
        ; 1TEST: Single test with code in skip slot
        btfsc   _signed16_less_than_or_equal__select__1___byte, _signed16_less_than_or_equal__select__1___bit
        ; line_number = 522
        ; _z := _true
        ;info   522, 897
        bsf     _z___byte, _z___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 521
        ;  if _signed16_a0@7 done
        ; # Return is implicit


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




        ; line_number = 526
        ;info   526, 899
        ; procedure _signed16_greater_than
_signed16_greater_than:
        ; arguments_none
        ; line_number = 528
        ;  returns_nothing

        ; # This procedure will set the Z bit if register "A" is non-zero and
        ; # positive.

        ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
        ; line_number = 533
        ;  assemble
        ;info   533, 899
        ; line_number = 534
        ;info   534, 899
        movf    _signed16_a0,w
        ; line_number = 535
        ;info   535, 900
        iorwf   _signed16_a1,w
        ; line_number = 536
        ; if _z start
        ;info   536, 901
        ; =>bit_code_emit@symbol(): sym=_z
        ; No 1TEST: true.size=2 false.size=0
        ; No 2TEST: true.size=2 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   _z___byte, _z___bit
        goto    _signed16_greater_than__1
        ; line_number = 537
        ; _z := _false
        ;info   537, 903
        bcf     _z___byte, _z___bit
        ; line_number = 538
        ;  return     start
        ; line_number = 538
        ;info   538, 904
        retlw   0
        ; line_number = 538
        ;  return     done
        ; Recombine size1 = 0 || size2 = 0
_signed16_greater_than__1:
        ; line_number = 536
        ; if _z done
        ; # _z == _false
        ; line_number = 540
        ;  if !(_signed16_a0@7) start
        ;info   540, 905
_signed16_greater_than__select__2___byte equ _signed16_a0
_signed16_greater_than__select__2___bit equ 7
        ; =>bit_code_emit@symbol(): sym=_signed16_greater_than__select__2
        ; 1TEST: Single test with code in skip slot
        btfss   _signed16_greater_than__select__2___byte, _signed16_greater_than__select__2___bit
        ; line_number = 541
        ; _z := _true
        ;info   541, 906
        bsf     _z___byte, _z___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 540
        ;  if !(_signed16_a0@7) done
        ; # Return is implicit:


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




        ; line_number = 545
        ;info   545, 908
        ; procedure _signed16_greater_than_or_equal
_signed16_greater_than_or_equal:
        ; arguments_none
        ; line_number = 547
        ;  returns_nothing

        ; # This procedure will set the Z bit if register "A" is zero or positive.

        ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
        ; line_number = 551
        ;  _z := _true
        ;info   551, 908
        bsf     _z___byte, _z___bit
        ; line_number = 552
        ;  if _signed16_a0@7 start
        ;info   552, 909
_signed16_greater_than_or_equal__select__1___byte equ _signed16_a0
_signed16_greater_than_or_equal__select__1___bit equ 7
        ; =>bit_code_emit@symbol(): sym=_signed16_greater_than_or_equal__select__1
        ; 1TEST: Single test with code in skip slot
        btfsc   _signed16_greater_than_or_equal__select__1___byte, _signed16_greater_than_or_equal__select__1___bit
        ; line_number = 553
        ; _z := _false
        ;info   553, 910
        bcf     _z___byte, _z___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 552
        ;  if _signed16_a0@7 done
        ; # Return is implicit:


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




        ; line_number = 578
        ;info   578, 912
        ; procedure _signed16_divide_raw
_signed16_divide_raw:
        ; arguments_none
        ; line_number = 580
        ;  returns_nothing
        ; line_number = 581
        ;  return_suppress

        ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:XX=cc=>XX)
        ; line_number = 583
        ;  assemble
        ;info   583, 912
        ; line_number = 584
        ;info   584, 912
        call    _signed16_divide_s_sign

        ; #Initialize:
        ; line_number = 587
        ;info   587, 913
        movlw   16
        ; line_number = 588
        ;info   588, 914
        movwf   _signed16_count
        ; line_number = 589
        ;info   589, 915
        movf    _signed16_a0,w
        ; line_number = 590
        ;info   590, 916
        movwf   _signed16_temp0
        ; line_number = 591
        ;info   591, 917
        movf    _signed16_a1,w
        ; line_number = 592
        ;info   592, 918
        movwf   _signed16_temp1
        ; line_number = 593
        ;info   593, 919
        clrf    _signed16_a0
        ; line_number = 594
        ;info   594, 920
        clrf    _signed16_a1
        ; line_number = 595
        ;info   595, 921
        clrf    _signed16_rem0
        ; line_number = 596
        ;info   596, 922
        clrf    _signed16_rem1
        ; # Loop 16 times usinge {_signed16_count}:
        ; line_number = 598
_signed16_divide_dloop:
        ; line_number = 599
        ;info   599, 923
        bcf     _c___byte, _c___bit
        ; line_number = 600
        ;info   600, 924
        rlf     _signed16_temp1,f
        ; line_number = 601
        ;info   601, 925
        rlf     _signed16_temp0,f
        ; line_number = 602
        ;info   602, 926
        rlf     _signed16_rem1,f
        ; line_number = 603
        ;info   603, 927
        rlf     _signed16_rem0,f
        ; line_number = 604
        ;info   604, 928
        movf    _signed16_b0,w
        ; line_number = 605
        ;info   605, 929
        subwf   _signed16_rem0,w
        ; line_number = 606
        ;info   606, 930
        btfss   _z___byte, _z___bit
        ; line_number = 607
        ;info   607, 931
        goto    _signed16_divide_no_check
        ; line_number = 608
        ;info   608, 932
        movf    _signed16_b1,w
        ; line_number = 609
        ;info   609, 933
        subwf   _signed16_rem1,w
        ; line_number = 610
_signed16_divide_no_check:
        ; line_number = 611
        ;info   611, 934
        btfss   _c___byte, _c___bit
        ; line_number = 612
        ;info   612, 935
        goto    _signed16_divide_no_go
        ; line_number = 613
        ;info   613, 936
        movf    _signed16_b1,w
        ; line_number = 614
        ;info   614, 937
        subwf   _signed16_rem1,f
        ; line_number = 615
        ;info   615, 938
        btfss   _c___byte, _c___bit
        ; line_number = 616
        ;info   616, 939
        decf    _signed16_rem0,f
        ; line_number = 617
        ;info   617, 940
        movf    _signed16_b0,w
        ; line_number = 618
        ;info   618, 941
        subwf   _signed16_rem0,f
        ; line_number = 619
        ;info   619, 942
        bsf     _c___byte, _c___bit
        ; line_number = 620
_signed16_divide_no_go:
        ; line_number = 621
        ;info   621, 943
        rlf     _signed16_a1,f
        ; line_number = 622
        ;info   622, 944
        rlf     _signed16_a0,f
        ; line_number = 623
        ;info   623, 945
        decfsz  _signed16_count,f
        ; line_number = 624
        ;info   624, 946
        goto    _signed16_divide_dloop

        ; line_number = 626
        ;info   626, 947
        btfss   _signed16_sign, 7
        ; line_number = 627
        ;info   627, 948
        retlw   0
        ; line_number = 628
        ;info   628, 949
        goto    _signed16_divide_neg_b

        ; line_number = 630
_signed16_divide_neg_b:
        ; line_number = 631
        ;info   631, 950
        comf    _signed16_b1,f
        ; line_number = 632
        ;info   632, 951
        incf    _signed16_b1,f
        ; line_number = 633
        ;info   633, 952
        btfsc   _z___byte, _z___bit
        ; line_number = 634
        ;info   634, 953
        decf    _signed16_b0,f
        ; line_number = 635
        ;info   635, 954
        comf    _signed16_b0,f
        ; line_number = 636
        ;info   636, 955
        retlw   0

        ; line_number = 638
_signed16_divide_s_sign:
        ; line_number = 639
        ;info   639, 956
        movf    _signed16_b0,w
        ; line_number = 640
        ;info   640, 957
        xorwf   _signed16_a0,w
        ; line_number = 641
        ;info   641, 958
        movwf   _signed16_sign
        ; line_number = 642
        ;info   642, 959
        btfss   _signed16_a0, 7
        ; line_number = 643
        ;info   643, 960
        goto    _signed16_divide_check_a

        ; line_number = 645
        ;info   645, 961
        comf    _signed16_a1,f
        ; line_number = 646
        ;info   646, 962
        incf    _signed16_a1,f
        ; line_number = 647
        ;info   647, 963
        btfsc   _z___byte, _z___bit
        ; line_number = 648
        ;info   648, 964
        decf    _signed16_a0,f
        ; line_number = 649
        ;info   649, 965
        comf    _signed16_a0,f

        ; line_number = 651
_signed16_divide_check_a:
        ; line_number = 652
        ;info   652, 966
        btfss   _signed16_b0, 7
        ; line_number = 653
        ;info   653, 967
        retlw   0
        ; line_number = 654
        ;info   654, 968
        goto    _signed16_divide_neg_b

        ; delay after procedure statements=non-uniform
        ; Return instruction suppressed by 'return_suppress'




        ; Configuration bits
        ; address = 0x2007, fill = 0x3000
        ; fcmen = off (0x0)
        ; ieso = off (0x0)
        ; boden = off (0x0)
        ; cpd = off (0x80)
        ; cp = off (0x40)
        ; mclre = off (0x0)
        ; pwrte = off (0x10)
        ; wdte = off (0x0)
        ; fosc = hs (0x2)
        ; 12498 = 0x30d2
        __config 12498
        ; Define start addresses for data regions
        ; Region="shared___globals" Address=112" Size=16 Bytes=0 Bits=0 Available=16
        ; Region="globals___0" Address=32" Size=80 Bytes=77 Bits=5 Available=2
        ; Region="globals___1" Address=160" Size=80 Bytes=46 Bits=0 Available=34
        ; Region="globals___2" Address=288" Size=80 Bytes=0 Bits=0 Available=80
        ; Region="shared___globals" Address=112" Size=16 Bytes=0 Bits=0 Available=16
        end
