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

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

        ; buffer = 'camera1'
        ; line_number = 6
        ; library _pic16f88 entered

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

        ; buffer = '_pic16f88'
        ; line_number = 6
        ; processor pic16f88
        ; line_number = 7
        ; configure_address 0x2007
        ; line_number = 8
        ;  configure_fill 0x0000
        ; line_number = 9
        ;  configure_option cp: off = 0x2000
        ; line_number = 10
        ;  configure_option cp: on = 0x0000
        ; line_number = 11
        ;  configure_option ccpmx: ccp1_rb0 = 0x1000
        ; line_number = 12
        ;  configure_option ccpmx: ccp1_rb3 = 0x0000
        ; line_number = 13
        ;  configure_option debug: off = 0x800
        ; line_number = 14
        ;  configure_option debug: on = 0x000
        ; line_number = 15
        ;  configure_option wrt: off = 0x600
        ; line_number = 16
        ;  configure_option wrt: to_ff = 0x400
        ; line_number = 17
        ;  configure_option wrt: to_7ff = 0x200
        ; line_number = 18
        ;  configure_option wrt: on = 0x000
        ; line_number = 19
        ;  configure_option cpd: off = 0x100
        ; line_number = 20
        ;  configure_option cpd: on = 0x000
        ; line_number = 21
        ;  configure_option lvp: on = 0x80
        ; line_number = 22
        ;  configure_option lvp: off = 0x00
        ; line_number = 23
        ;  configure_option boden: on = 0x40
        ; line_number = 24
        ;  configure_option boden: off = 0x00
        ; line_number = 25
        ;  configure_option mclre: on = 0x20
        ; line_number = 26
        ;  configure_option mclre: off = 0x00
        ; line_number = 27
        ;  configure_option pwrte: on = 0
        ; line_number = 28
        ;  configure_option pwrte: off = 8
        ; line_number = 29
        ;  configure_option wdte: on = 4
        ; line_number = 30
        ;  configure_option wdte: off = 0
        ; line_number = 31
        ;  configure_option fosc: extrc_clk = 0x13
        ; line_number = 32
        ;  configure_option fosc: extrc_no_clk = 0x12
        ; line_number = 33
        ;  configure_option fosc: intrc_clk = 0x11
        ; line_number = 34
        ;  configure_option fosc: intrc_no_clk = 0x10
        ; line_number = 35
        ;  configure_option fosc: extclk = 3
        ; line_number = 36
        ;  configure_option fosc: hs = 2
        ; line_number = 37
        ;  configure_option fosc: xt = 1
        ; line_number = 38
        ;  configure_option fosc: lp = 0

        ; line_number = 40
        ;  configure_address 0x2008
        ; line_number = 41
        ;  configure_fill 0x3ffc
        ; line_number = 42
        ;  configure_option ieso: on = 2
        ; line_number = 43
        ;  configure_option ieso: off = 0
        ; line_number = 44
        ;  configure_option fcmen: on = 1
        ; line_number = 45
        ;  configure_option fcmen: off = 0

        ; line_number = 47
        ;  code_bank 0x0 : 0x7ff
        ; line_number = 48
        ;  code_bank 0x800 : 0xfff
        ; line_number = 49
        ;  data_bank 0x0 : 0x7f
        ; line_number = 50
        ;  data_bank 0x80 : 0xff
        ; line_number = 51
        ;  data_bank 0x100 : 0x17f
        ; line_number = 52
        ;  data_bank 0x180 : 0x1ff
        ; line_number = 53
        ;  global_region 0x20 : 0x6f
        ; line_number = 54
        ;  global_region 0xa0 : 0xef
        ; line_number = 55
        ;  global_region 0x110 : 0x16f
        ; line_number = 56
        ;  global_region 0x190 : 0x1ef
        ; line_number = 57
        ;  shared_region 0x70 : 0x7f
        ; line_number = 58
        ;  packages dip=18, soic=18, ssop=20
        ; line_number = 59
        ;  pin ra2_in, ra2_out, ra2_unused, an2, cvref, vref_minus
        ; line_number = 60
        ; pin_bindings dip=1, soic=1, ssop=1
        ; line_number = 61
        ;  bind_to _porta@2
        ; line_number = 62
        ;  or_if ra2_in _trisa 4
        ; line_number = 63
        ;  or_if ra2_in _cmcon 7
        ; line_number = 64
        ;  or_if ra2_in _ansel 0
        ; line_number = 65
        ;  or_if ra2_in _adcon0 0
        ; line_number = 66
        ;  or_if ra2_out _trisa 0
        ; line_number = 67
        ;  or_if ra2_out _cmcon 7
        ; line_number = 68
        ;  or_if ra2_out _ansel 0
        ; line_number = 69
        ;  or_if ra2_out _adcon0 0
        ; line_number = 70
        ;  or_if ra2_unused _trisa 4
        ; line_number = 71
        ;  or_if ra2_unused _ansel 0
        ; line_number = 72
        ;  or_if ra2_unused _adcon0 0
        ; line_number = 73
        ;  or_if an2 _trisa 4
        ; line_number = 74
        ;  or_if an2 _ansel 4
        ; line_number = 75
        ;  or_if an2 _cmcon 7
        ; line_number = 76
        ;  or_if an2 _ancon0 1
        ; line_number = 77
        ; pin ra3_in, ra3_out, ra3_unused, an3, vref_plus, c1out
        ; line_number = 78
        ; pin_bindings dip=2, soic=2, ssop=2
        ; line_number = 79
        ;  bind_to _porta@3
        ; line_number = 80
        ;  or_if ra3_in _trisa 8
        ; line_number = 81
        ;  or_if ra3_in _cmcon 7
        ; line_number = 82
        ;  or_if ra3_in _ansel 0
        ; line_number = 83
        ;  or_if ra3_in _adcon0 0
        ; line_number = 84
        ;  or_if ra3_out _trisa 0
        ; line_number = 85
        ;  or_if ra3_out _cmcon 7
        ; line_number = 86
        ;  or_if ra3_out _ansel 0
        ; line_number = 87
        ;  or_if ra3_out _adcon0 0
        ; line_number = 88
        ;  or_if ra3_unused _trisa 8
        ; line_number = 89
        ;  or_if ra3_unused _ansel 0
        ; line_number = 90
        ;  or_if ra3_unused _adcon0 0
        ; line_number = 91
        ;  or_if an3 _trisa 8
        ; line_number = 92
        ;  or_if an3 _ansel 8
        ; line_number = 93
        ;  or_if an3 _cmcon 7
        ; line_number = 94
        ;  or_if an3 _ancon0 1
        ; line_number = 95
        ; pin ra4_in, ra4_out, ra4_unused, an4, tocki, c2out
        ; line_number = 96
        ; pin_bindings dip=3, soic=3, ssop=3
        ; line_number = 97
        ;  bind_to _porta@4
        ; line_number = 98
        ;  or_if ra4_in _trisa 16
        ; line_number = 99
        ;  or_if ra4_in _ansel 0
        ; line_number = 100
        ;  or_if ra4_in _adcon0 0
        ; line_number = 101
        ;  or_if ra4_out _trisa 0
        ; line_number = 102
        ;  or_if ra4_out _ansel 0
        ; line_number = 103
        ;  or_if ra4_out _adcon0 0
        ; line_number = 104
        ;  or_if ra4_unused _trisa 16
        ; line_number = 105
        ;  or_if ra4_unused _ansel 0
        ; line_number = 106
        ;  or_if ra4_unused _adcon0 0
        ; line_number = 107
        ;  or_if an4 _trisa 16
        ; line_number = 108
        ;  or_if an4 _ansel 16
        ; line_number = 109
        ;  or_if an4 _cmcon 7
        ; line_number = 110
        ;  or_if an4 _ancon0 1
        ; line_number = 111
        ; pin ra5_in, ra5_unused, mclr, vpp
        ; line_number = 112
        ; pin_bindings dip=4, soic=4, ssop=4
        ; line_number = 113
        ;  bind_to _porta@5
        ; line_number = 114
        ;  or_if ra5_in _trisa 32
        ; line_number = 115
        ;  or_if ra5_unused _trisa 32
        ; line_number = 116
        ; pin vss, ground
        ; line_number = 117
        ; pin_bindings dip=5, soic=5, ssop=5
        ; line_number = 118
        ; pin avss, ground2
        ; line_number = 119
        ; pin_bindings ssop=6
        ; line_number = 120
        ; pin rb0_in, rb0_out, rb0_unused, int, ccp1
        ; line_number = 121
        ; pin_bindings dip=6, soic=6, ssop=7
        ; line_number = 122
        ;  bind_to _portb@0
        ; line_number = 123
        ;  or_if rb0_in _trisb 1
        ; line_number = 124
        ;  or_if rb0_out _trisb 0
        ; line_number = 125
        ;  or_if rb0_unused _trisb 1
        ; line_number = 126
        ;  or_if int _trisb 1
        ; line_number = 127
        ; pin rb1_in, rb1_out, rb1_unused, sdi, sda
        ; line_number = 128
        ; pin_bindings dip=7, soic=7, ssop=8
        ; line_number = 129
        ;  bind_to _portb@1
        ; line_number = 130
        ;  or_if rb1_in _trisb 2
        ; line_number = 131
        ;  or_if rb1_out _trisb 0
        ; line_number = 132
        ;  or_if rb1_unused _trisb 2
        ; line_number = 133
        ;  or_if sda _trisb 2
        ; line_number = 134
        ; pin rb2_in, rb2_out, rb2_unused, sdo, rx, dt
        ; line_number = 135
        ; pin_bindings dip=8, soic=8, ssop=9
        ; line_number = 136
        ;  bind_to _portb@2
        ; line_number = 137
        ;  or_if rb2_in _trisb 4
        ; line_number = 138
        ;  or_if rb2_out _trisb 0
        ; line_number = 139
        ;  or_if rb2_unused _trisb 4
        ; line_number = 140
        ;  or_if rx _trisb 4
        ; line_number = 141
        ; pin rb3_in, rb3_out, rb3_unused, pgm, ccp1_other
        ; line_number = 142
        ; pin_bindings dip=9, soic=9, ssop=10
        ; line_number = 143
        ;  bind_to _portb@3
        ; line_number = 144
        ;  or_if rb3_in _trisb 8
        ; line_number = 145
        ;  or_if rb3_out _trisb 0
        ; line_number = 146
        ;  or_if rb3_unused _trisb 8
        ; line_number = 147
        ;  or_if ccp1_other _trisb 8
        ; line_number = 148
        ; pin rb4_in, rb4_out, rb4_unused, sck, scl
        ; line_number = 149
        ; pin_bindings dip=10, soic=10, ssop=11
        ; line_number = 150
        ;  bind_to _portb@4
        ; line_number = 151
        ;  or_if rb4_in _trisb 16
        ; line_number = 152
        ;  or_if rb4_out _trisb 0
        ; line_number = 153
        ;  or_if rb4_unused _trisb 16
        ; line_number = 154
        ;  or_if scl _trisb 16
        ; line_number = 155
        ; pin rb5_in, rb5_out, rb5_unused, ss, tx, ck
        ; line_number = 156
        ; pin_bindings dip=11, soic=11, ssop=12
        ; line_number = 157
        ;  bind_to _portb@5
        ; line_number = 158
        ;  or_if rb5_in _trisb 32
        ; line_number = 159
        ;  or_if rb5_out _trisb 0
        ; line_number = 160
        ;  or_if rb5_unused _trisb 32
        ; line_number = 161
        ;  or_if tx _trisb 32
        ; line_number = 162
        ; pin rb6_in, rb6_out, rb6_unused, an5, pgc, t1oso, t1cki
        ; line_number = 163
        ; pin_bindings dip=12, soic=12, ssop=13
        ; line_number = 164
        ;  bind_to _portb@6
        ; line_number = 165
        ;  or_if rb6_in _trisb 64
        ; line_number = 166
        ;  or_if rb6_in _ansel 0
        ; line_number = 167
        ;  or_if rb6_in _adcon0 0
        ; line_number = 168
        ;  or_if rb6_out _trisb 0
        ; line_number = 169
        ;  or_if rb6_out _ansel 0
        ; line_number = 170
        ;  or_if rb6_out _adcon0 0
        ; line_number = 171
        ;  or_if rb6_unused _trisb 64
        ; line_number = 172
        ;  or_if rb6_unused _ansel 0
        ; line_number = 173
        ;  or_if rb6_unused _adcon0 0
        ; line_number = 174
        ;  or_if t1oso _trisb 0
        ; line_number = 175
        ;  or_if t1cki _trisb 64
        ; line_number = 176
        ;  or_if an5 _trisa 64
        ; line_number = 177
        ;  or_if an5 _ansel 32
        ; line_number = 178
        ;  or_if an5 _cmcon 7
        ; line_number = 179
        ;  or_if an5 _ancon0 1
        ; line_number = 180
        ; pin rb7_in, rb7_out, rb7_unused, an6, pgd, t1osi
        ; line_number = 181
        ; pin_bindings dip=13, soic=13, ssop=14
        ; line_number = 182
        ;  bind_to _portb@6
        ; line_number = 183
        ;  or_if rb7_in _trisb 128
        ; line_number = 184
        ;  or_if rb7_in _ansel 0
        ; line_number = 185
        ;  or_if rb7_in _adcon0 0
        ; line_number = 186
        ;  or_if rb7_out _trisb 0
        ; line_number = 187
        ;  or_if rb7_out _ansel 0
        ; line_number = 188
        ;  or_if rb7_out _adcon0 0
        ; line_number = 189
        ;  or_if rb7_unused _trisb 128
        ; line_number = 190
        ;  or_if rb7_unused _ansel 0
        ; line_number = 191
        ;  or_if rb7_unused _adcon0 0
        ; line_number = 192
        ;  or_if t1osi _trisb 128
        ; line_number = 193
        ;  or_if an6 _trisa 128
        ; line_number = 194
        ;  or_if an6 _ansel 64
        ; line_number = 195
        ;  or_if an6 _cmcon 7
        ; line_number = 196
        ;  or_if an6 _ancon0 1
        ; line_number = 197
        ; pin avdd, power_supply2
        ; line_number = 198
        ; pin_bindings ssop=15
        ; line_number = 199
        ; pin vdd, power_supply
        ; line_number = 200
        ; pin_bindings dip=14, soic=14, ssop=16
        ; line_number = 201
        ; pin ra6_in, ra6_out, ra6_unused, osc2, clko
        ; line_number = 202
        ; pin_bindings dip=15, soic=15, ssop=17
        ; line_number = 203
        ;  bind_to _porta@6
        ; line_number = 204
        ;  or_if ra6_in _trisa 64
        ; line_number = 205
        ;  or_if ra6_out _trisa 0
        ; line_number = 206
        ;  or_if ra6_unused _trisa 64
        ; line_number = 207
        ;  or_if clko _trisa 0
        ; line_number = 208
        ;  or_if osc2 _trisa 64
        ; line_number = 209
        ; pin ra7_in, ra7_out, ra7_unused, osc1, clki
        ; line_number = 210
        ; pin_bindings dip=16, soic=16, ssop=18
        ; line_number = 211
        ;  bind_to _porta@7
        ; line_number = 212
        ;  or_if ra7_in _trisa 128
        ; line_number = 213
        ;  or_if ra7_out _trisa 0
        ; line_number = 214
        ;  or_if ra7_unused _trisa 64
        ; line_number = 215
        ;  or_if osc1 _trisa 128
        ; line_number = 216
        ;  or_if clki _trisa 128
        ; line_number = 217
        ; pin ra0_in, ra0_out, ra0_unused, an0
        ; line_number = 218
        ; pin_bindings dip=17, soic=17, ssop=19
        ; line_number = 219
        ;  bind_to _porta@0
        ; line_number = 220
        ;  or_if ra0_in _trisa 1
        ; line_number = 221
        ;  or_if ra0_in _cmcon 7
        ; line_number = 222
        ;  or_if ra0_in _ansel 0
        ; line_number = 223
        ;  or_if ra0_in _adcon0 0
        ; line_number = 224
        ;  or_if ra0_out _trisa 0
        ; line_number = 225
        ;  or_if ra0_out _cmcon 7
        ; line_number = 226
        ;  or_if ra0_out _ansel 0
        ; line_number = 227
        ;  or_if ra0_out _adcon0 0
        ; line_number = 228
        ;  or_if ra0_unused _trisa 1
        ; line_number = 229
        ;  or_if ra0_unused _ansel 0
        ; line_number = 230
        ;  or_if ra0_unused _adcon0 0
        ; line_number = 231
        ;  or_if an0 _trisa 1
        ; line_number = 232
        ;  or_if an0 _ansel 1
        ; line_number = 233
        ;  or_if an0 _cmcon 7
        ; line_number = 234
        ;  or_if an0 _ancon0 1
        ; line_number = 235
        ; pin ra1_in, ra1_out, ra1_unused, an1
        ; line_number = 236
        ; pin_bindings dip=18, soic=18, ssop=20
        ; line_number = 237
        ;  bind_to _porta@1
        ; line_number = 238
        ;  or_if ra1_in _trisa 2
        ; line_number = 239
        ;  or_if ra1_in _cmcon 7
        ; line_number = 240
        ;  or_if ra1_in _ansel 0
        ; line_number = 241
        ;  or_if ra1_in _adcon0 0
        ; line_number = 242
        ;  or_if ra1_out _trisa 0
        ; line_number = 243
        ;  or_if ra1_out _cmcon 7
        ; line_number = 244
        ;  or_if ra1_out_ansel 0
        ; line_number = 245
        ;  or_if ra1_out _adcon0 0
        ; line_number = 246
        ;  or_if ra1_unused _trisa 2
        ; line_number = 247
        ;  or_if ra1_unused _ansel 0
        ; line_number = 248
        ;  or_if ra1_unused _adcon0 0
        ; line_number = 249
        ;  or_if an1 _trisa 2
        ; line_number = 250
        ;  or_if an1 _ansel 2
        ; line_number = 251
        ;  or_if an1 _cmcon 7
        ; line_number = 252
        ;  or_if an1 _ancon0 1


        ; line_number = 256
        ; 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 = '_pic16f88'
        ; line_number = 256
        ; library _standard exited

        ; # Data bank 0:

        ; line_number = 260
        ; register _indf = 
_indf equ 0

        ; line_number = 262
        ; register _tmr0 = 
_tmr0 equ 1

        ; line_number = 264
        ; register _pcl = 
_pcl equ 2

        ; line_number = 266
        ; register _status = 
_status equ 3
        ; line_number = 267
        ; bind _irp = _status@7
_irp___byte equ _status
_irp___bit equ 7
        ; line_number = 268
        ; bind _rp1 = _status@6
_rp1___byte equ _status
_rp1___bit equ 6
        ; line_number = 269
        ; bind _rp0 = _status@5
_rp0___byte equ _status
_rp0___bit equ 5
        ; line_number = 270
        ; bind _to = _status@4
_to___byte equ _status
_to___bit equ 4
        ; line_number = 271
        ; bind _pd = _status@3
_pd___byte equ _status
_pd___bit equ 3
        ; line_number = 272
        ; bind _z = _status@2
_z___byte equ _status
_z___bit equ 2
        ; line_number = 273
        ; bind _dc = _status@1
_dc___byte equ _status
_dc___bit equ 1
        ; line_number = 274
        ; bind _c = _status@0
_c___byte equ _status
_c___bit equ 0

        ; line_number = 276
        ; register _fsr = 
_fsr equ 4

        ; line_number = 278
        ; register _porta = 
_porta equ 5
        ; line_number = 279
        ; bind _ra7 = _porta@7
_ra7___byte equ _porta
_ra7___bit equ 7
        ; line_number = 280
        ; bind _ra6 = _porta@6
_ra6___byte equ _porta
_ra6___bit equ 6
        ; line_number = 281
        ; bind _ra5 = _porta@5
_ra5___byte equ _porta
_ra5___bit equ 5
        ; line_number = 282
        ; bind _ra4 = _porta@4
_ra4___byte equ _porta
_ra4___bit equ 4
        ; line_number = 283
        ; bind _ra3 = _porta@3
_ra3___byte equ _porta
_ra3___bit equ 3
        ; line_number = 284
        ; bind _ra2 = _porta@2
_ra2___byte equ _porta
_ra2___bit equ 2
        ; line_number = 285
        ; bind _ra1 = _porta@1
_ra1___byte equ _porta
_ra1___bit equ 1
        ; line_number = 286
        ; bind _ra0 = _porta@0
_ra0___byte equ _porta
_ra0___bit equ 0

        ; line_number = 288
        ; register _portb = 
_portb equ 6
        ; line_number = 289
        ; bind _rb7 = _portb@7
_rb7___byte equ _portb
_rb7___bit equ 7
        ; line_number = 290
        ; bind _rb6 = _portb@6
_rb6___byte equ _portb
_rb6___bit equ 6
        ; line_number = 291
        ; bind _rb5 = _portb@5
_rb5___byte equ _portb
_rb5___bit equ 5
        ; line_number = 292
        ; bind _rb4 = _portb@4
_rb4___byte equ _portb
_rb4___bit equ 4
        ; line_number = 293
        ; bind _rb3 = _portb@3
_rb3___byte equ _portb
_rb3___bit equ 3
        ; line_number = 294
        ; bind _rb2 = _portb@2
_rb2___byte equ _portb
_rb2___bit equ 2
        ; line_number = 295
        ; bind _rb1 = _portb@1
_rb1___byte equ _portb
_rb1___bit equ 1
        ; line_number = 296
        ; bind _rb0 = _portb@0
_rb0___byte equ _portb
_rb0___bit equ 0

        ; line_number = 298
        ; register _pclath = 
_pclath equ 10

        ; line_number = 300
        ; register _intcon = 
_intcon equ 11
        ; line_number = 301
        ; bind _gie = _intcon@7
_gie___byte equ _intcon
_gie___bit equ 7
        ; line_number = 302
        ; bind _peie = _intcon@6
_peie___byte equ _intcon
_peie___bit equ 6
        ; line_number = 303
        ; bind _tmr0ie = _intcon@5
_tmr0ie___byte equ _intcon
_tmr0ie___bit equ 5
        ; line_number = 304
        ; bind _int0ie = _intcon@4
_int0ie___byte equ _intcon
_int0ie___bit equ 4
        ; line_number = 305
        ; bind _rbie = _intcon@3
_rbie___byte equ _intcon
_rbie___bit equ 3
        ; line_number = 306
        ; bind _tmr0if = _intcon@2
_tmr0if___byte equ _intcon
_tmr0if___bit equ 2
        ; line_number = 307
        ; bind _int0if = _intcon@1
_int0if___byte equ _intcon
_int0if___bit equ 1
        ; line_number = 308
        ; bind _rbif = _intcon@0
_rbif___byte equ _intcon
_rbif___bit equ 0

        ; line_number = 310
        ; register _pir1 = 
_pir1 equ 12
        ; line_number = 311
        ; bind _adif = _pir1@6
_adif___byte equ _pir1
_adif___bit equ 6
        ; line_number = 312
        ; bind _rcif = _pir1@5
_rcif___byte equ _pir1
_rcif___bit equ 5
        ; line_number = 313
        ; bind _txif = _pir1@4
_txif___byte equ _pir1
_txif___bit equ 4
        ; line_number = 314
        ; bind _sspif = _pir1@3
_sspif___byte equ _pir1
_sspif___bit equ 3
        ; line_number = 315
        ; bind _ccp1if = _pir1@2
_ccp1if___byte equ _pir1
_ccp1if___bit equ 2
        ; line_number = 316
        ; bind _tmr2if = _pir1@1
_tmr2if___byte equ _pir1
_tmr2if___bit equ 1
        ; line_number = 317
        ; bind _tmr1if = _pir1@0
_tmr1if___byte equ _pir1
_tmr1if___bit equ 0

        ; line_number = 319
        ; register _pir2 = 
_pir2 equ 13
        ; line_number = 320
        ; bind _osfif = _pir1@7
_osfif___byte equ _pir1
_osfif___bit equ 7
        ; line_number = 321
        ; bind _cmif = _pir1@6
_cmif___byte equ _pir1
_cmif___bit equ 6
        ; line_number = 322
        ; bind _eeif = _pir1@4
_eeif___byte equ _pir1
_eeif___bit equ 4

        ; line_number = 324
        ; register _tmr1l = 
_tmr1l equ 14

        ; line_number = 326
        ; register _tmr1h = 
_tmr1h equ 15

        ; line_number = 328
        ; register _t1con = 
_t1con equ 16
        ; line_number = 329
        ; bind _t1run = _t1con@6
_t1run___byte equ _t1con
_t1run___bit equ 6
        ; line_number = 330
        ; bind _t1ckps1 = _t1con@5
_t1ckps1___byte equ _t1con
_t1ckps1___bit equ 5
        ; line_number = 331
        ; bind _t1ckps0 = _t1con@4
_t1ckps0___byte equ _t1con
_t1ckps0___bit equ 4
        ; line_number = 332
        ; bind _t1oscen = _t1con@3
_t1oscen___byte equ _t1con
_t1oscen___bit equ 3
        ; line_number = 333
        ; bind _t1sync = _t1con@2
_t1sync___byte equ _t1con
_t1sync___bit equ 2
        ; line_number = 334
        ; bind _tmr1cs = _t1con@1
_tmr1cs___byte equ _t1con
_tmr1cs___bit equ 1
        ; line_number = 335
        ; bind _tmr1on = _t1con@0
_tmr1on___byte equ _t1con
_tmr1on___bit equ 0

        ; line_number = 337
        ; register _tmr2 = 
_tmr2 equ 17

        ; line_number = 339
        ; register _t2con = 
_t2con equ 18
        ; line_number = 340
        ; bind _toutps3 = _t2con@6
_toutps3___byte equ _t2con
_toutps3___bit equ 6
        ; line_number = 341
        ; bind _toutps2 = _t2con@5
_toutps2___byte equ _t2con
_toutps2___bit equ 5
        ; line_number = 342
        ; bind _toutps1 = _t2con@4
_toutps1___byte equ _t2con
_toutps1___bit equ 4
        ; line_number = 343
        ; bind _toutps0 = _t2con@3
_toutps0___byte equ _t2con
_toutps0___bit equ 3
        ; line_number = 344
        ; bind _trm2on = _t2con@2
_trm2on___byte equ _t2con
_trm2on___bit equ 2
        ; line_number = 345
        ; bind _t2ckps1 = _t2con@1
_t2ckps1___byte equ _t2con
_t2ckps1___bit equ 1
        ; line_number = 346
        ; bind _t2ckps0 = _t2con@0
_t2ckps0___byte equ _t2con
_t2ckps0___bit equ 0

        ; line_number = 348
        ; register _sspbuf = 
_sspbuf equ 19

        ; line_number = 350
        ; register _sspcon = 
_sspcon equ 20
        ; line_number = 351
        ; bind _wcol = _sspcon@7
_wcol___byte equ _sspcon
_wcol___bit equ 7
        ; line_number = 352
        ; bind _sspov = _sspcon@6
_sspov___byte equ _sspcon
_sspov___bit equ 6
        ; line_number = 353
        ; bind _sspen = _sspcon@5
_sspen___byte equ _sspcon
_sspen___bit equ 5
        ; line_number = 354
        ; bind _ckp = _sspcon@4
_ckp___byte equ _sspcon
_ckp___bit equ 4
        ; line_number = 355
        ; bind _sspm3 = _sspcon@3
_sspm3___byte equ _sspcon
_sspm3___bit equ 3
        ; line_number = 356
        ; bind _sspm2 = _sspcon@2
_sspm2___byte equ _sspcon
_sspm2___bit equ 2
        ; line_number = 357
        ; bind _sspm1 = _sspcon@1
_sspm1___byte equ _sspcon
_sspm1___bit equ 1
        ; line_number = 358
        ; bind _sspm0 = _sspcon@0
_sspm0___byte equ _sspcon
_sspm0___bit equ 0

        ; line_number = 360
        ; register _ccpr1l = 
_ccpr1l equ 21

        ; line_number = 362
        ; register _ccpr1h = 
_ccpr1h equ 22

        ; line_number = 364
        ; register _ccp1con = 
_ccp1con equ 23
        ; line_number = 365
        ; bind _ccp1x = _ccp1con@5
_ccp1x___byte equ _ccp1con
_ccp1x___bit equ 5
        ; line_number = 366
        ; bind _ccp1y = _ccp1con@4
_ccp1y___byte equ _ccp1con
_ccp1y___bit equ 4
        ; line_number = 367
        ; bind _ccp1m3 = _ccp1con@3
_ccp1m3___byte equ _ccp1con
_ccp1m3___bit equ 3
        ; line_number = 368
        ; bind _ccp1m2 = _ccp1con@2
_ccp1m2___byte equ _ccp1con
_ccp1m2___bit equ 2
        ; line_number = 369
        ; bind _ccp1m1 = _ccp1con@1
_ccp1m1___byte equ _ccp1con
_ccp1m1___bit equ 1
        ; line_number = 370
        ; bind _ccp1m0 = _ccp1con@0
_ccp1m0___byte equ _ccp1con
_ccp1m0___bit equ 0

        ; line_number = 372
        ; register _rcsta = 
_rcsta equ 24
        ; line_number = 373
        ; bind _spen = _rcsta@7
_spen___byte equ _rcsta
_spen___bit equ 7
        ; line_number = 374
        ; bind _rx9 = _rcsta@6
_rx9___byte equ _rcsta
_rx9___bit equ 6
        ; line_number = 375
        ; bind _sren = _rcsta@5
_sren___byte equ _rcsta
_sren___bit equ 5
        ; line_number = 376
        ; bind _cren = _rcsta@4
_cren___byte equ _rcsta
_cren___bit equ 4
        ; line_number = 377
        ; bind _adden = _rcsta@3
_adden___byte equ _rcsta
_adden___bit equ 3
        ; # Some other modules use _aden instead of _adden:
        ; line_number = 379
        ; bind _aden = _rcsta@3
_aden___byte equ _rcsta
_aden___bit equ 3
        ; line_number = 380
        ; bind _ferr = _rcsta@2
_ferr___byte equ _rcsta
_ferr___bit equ 2
        ; line_number = 381
        ; bind _oerr = _rcsta@1
_oerr___byte equ _rcsta
_oerr___bit equ 1
        ; line_number = 382
        ; bind _rx9d = _rcsta@0
_rx9d___byte equ _rcsta
_rx9d___bit equ 0

        ; line_number = 384
        ; register _txreg = 
_txreg equ 25

        ; line_number = 386
        ; register _rcreg = 
_rcreg equ 26

        ; line_number = 388
        ; register _adresh = 
_adresh equ 30

        ; line_number = 390
        ; register _adcon0 = 
_adcon0 equ 31
        ; line_number = 391
        ; bind _adcs1 = _adcon0@7
_adcs1___byte equ _adcon0
_adcs1___bit equ 7
        ; line_number = 392
        ; bind _adcs0 = _adcon0@6
_adcs0___byte equ _adcon0
_adcs0___bit equ 6
        ; line_number = 393
        ; bind _chs2 = _adcon0@5
_chs2___byte equ _adcon0
_chs2___bit equ 5
        ; line_number = 394
        ; bind _chs1 = _adcon0@4
_chs1___byte equ _adcon0
_chs1___bit equ 4
        ; line_number = 395
        ; bind _chs0 = _adcon0@3
_chs0___byte equ _adcon0
_chs0___bit equ 3
        ; line_number = 396
        ; bind _go = _adcon0@2
_go___byte equ _adcon0
_go___bit equ 2
        ; line_number = 397
        ; bind _adon = _adcon0@0
_adon___byte equ _adcon0
_adon___bit equ 0

        ; # Data bank 1:

        ; line_number = 401
        ; register _option = 
_option equ 129
        ; line_number = 402
        ; bind _rbpu = _option@7
_rbpu___byte equ _option
_rbpu___bit equ 7
        ; line_number = 403
        ; bind _intedg = _option@6
_intedg___byte equ _option
_intedg___bit equ 6
        ; line_number = 404
        ; bind _t0cs = _option@5
_t0cs___byte equ _option
_t0cs___bit equ 5
        ; line_number = 405
        ; bind _t0se = _option@4
_t0se___byte equ _option
_t0se___bit equ 4
        ; line_number = 406
        ; bind _psa = _option@3
_psa___byte equ _option
_psa___bit equ 3
        ; line_number = 407
        ; bind _ps2 = _option@2
_ps2___byte equ _option
_ps2___bit equ 2
        ; line_number = 408
        ; bind _ps1 = _option@1
_ps1___byte equ _option
_ps1___bit equ 1
        ; line_number = 409
        ; bind _ps0 = _option@0
_ps0___byte equ _option
_ps0___bit equ 0

        ; line_number = 411
        ; register _trisa = 
_trisa equ 133
        ; line_number = 412
        ; bind _trisa7 = _trisa@7
_trisa7___byte equ _trisa
_trisa7___bit equ 7
        ; line_number = 413
        ; bind _trisa6 = _trisa@6
_trisa6___byte equ _trisa
_trisa6___bit equ 6
        ; # No _trisa5:
        ; line_number = 415
        ; bind _trisa4 = _trisa@4
_trisa4___byte equ _trisa
_trisa4___bit equ 4
        ; line_number = 416
        ; bind _trisa3 = _trisa@3
_trisa3___byte equ _trisa
_trisa3___bit equ 3
        ; line_number = 417
        ; bind _trisa2 = _trisa@2
_trisa2___byte equ _trisa
_trisa2___bit equ 2
        ; line_number = 418
        ; bind _trisa1 = _trisa@1
_trisa1___byte equ _trisa
_trisa1___bit equ 1
        ; line_number = 419
        ; bind _trisa0 = _trisa@0
_trisa0___byte equ _trisa
_trisa0___bit equ 0

        ; line_number = 421
        ; register _trisb = 
_trisb equ 134
        ; line_number = 422
        ; bind _trisb7 = _trisb@7
_trisb7___byte equ _trisb
_trisb7___bit equ 7
        ; line_number = 423
        ; bind _trisb6 = _trisb@6
_trisb6___byte equ _trisb
_trisb6___bit equ 6
        ; line_number = 424
        ; bind _trisb5 = _trisb@5
_trisb5___byte equ _trisb
_trisb5___bit equ 5
        ; line_number = 425
        ; bind _trisb4 = _trisb@4
_trisb4___byte equ _trisb
_trisb4___bit equ 4
        ; line_number = 426
        ; bind _trisb3 = _trisb@3
_trisb3___byte equ _trisb
_trisb3___bit equ 3
        ; line_number = 427
        ; bind _trisb2 = _trisb@2
_trisb2___byte equ _trisb
_trisb2___bit equ 2
        ; line_number = 428
        ; bind _trisb1 = _trisb@1
_trisb1___byte equ _trisb
_trisb1___bit equ 1
        ; line_number = 429
        ; bind _trisb0 = _trisb@0
_trisb0___byte equ _trisb
_trisb0___bit equ 0

        ; line_number = 431
        ; register _pie1 = 
_pie1 equ 140
        ; line_number = 432
        ; bind _adie = _pie1@6
_adie___byte equ _pie1
_adie___bit equ 6
        ; line_number = 433
        ; bind _rcie = _pie1@5
_rcie___byte equ _pie1
_rcie___bit equ 5
        ; line_number = 434
        ; bind _txie = _pie1@4
_txie___byte equ _pie1
_txie___bit equ 4
        ; line_number = 435
        ; bind _sspie = _pie1@3
_sspie___byte equ _pie1
_sspie___bit equ 3
        ; line_number = 436
        ; bind _ccp1ie = _pie1@2
_ccp1ie___byte equ _pie1
_ccp1ie___bit equ 2
        ; line_number = 437
        ; bind _tmr2ie = _pie1@1
_tmr2ie___byte equ _pie1
_tmr2ie___bit equ 1
        ; line_number = 438
        ; bind _tmr1ie = _pie1@0
_tmr1ie___byte equ _pie1
_tmr1ie___bit equ 0

        ; line_number = 440
        ; register _pie2 = 
_pie2 equ 141
        ; line_number = 441
        ; bind _osfie = _pie2@7
_osfie___byte equ _pie2
_osfie___bit equ 7
        ; line_number = 442
        ; bind _cmie = _pie2@6
_cmie___byte equ _pie2
_cmie___bit equ 6
        ; line_number = 443
        ; bind _eeie = _pie2@4
_eeie___byte equ _pie2
_eeie___bit equ 4

        ; line_number = 445
        ; register _pcon = 
_pcon equ 142
        ; line_number = 446
        ; bind _por = _pcon@1
_por___byte equ _pcon
_por___bit equ 1
        ; line_number = 447
        ; bind _bod = _pcon@0
_bod___byte equ _pcon
_bod___bit equ 0

        ; line_number = 449
        ; register _osccon = 
_osccon equ 143
        ; line_number = 450
        ; bind _ircf2 = _osccon@6
_ircf2___byte equ _osccon
_ircf2___bit equ 6
        ; line_number = 451
        ; bind _ircf1 = _osccon@5
_ircf1___byte equ _osccon
_ircf1___bit equ 5
        ; line_number = 452
        ; bind _ircf0 = _osccon@4
_ircf0___byte equ _osccon
_ircf0___bit equ 4
        ; line_number = 453
        ; bind _osts = _osccon@3
_osts___byte equ _osccon
_osts___bit equ 3
        ; line_number = 454
        ; bind _iofs = _osccon@2
_iofs___byte equ _osccon
_iofs___bit equ 2
        ; line_number = 455
        ; bind _scs1 = _osccon@1
_scs1___byte equ _osccon
_scs1___bit equ 1
        ; line_number = 456
        ; bind _scs0 = _osccon@0
_scs0___byte equ _osccon
_scs0___bit equ 0

        ; line_number = 458
        ; register _osctune = 
_osctune equ 144
        ; line_number = 459
        ; bind _tun5 = _osctune@5
_tun5___byte equ _osctune
_tun5___bit equ 5
        ; line_number = 460
        ; bind _tun4 = _osctune@4
_tun4___byte equ _osctune
_tun4___bit equ 4
        ; line_number = 461
        ; bind _tun3 = _osctune@3
_tun3___byte equ _osctune
_tun3___bit equ 3
        ; line_number = 462
        ; bind _tun2 = _osctune@2
_tun2___byte equ _osctune
_tun2___bit equ 2
        ; line_number = 463
        ; bind _tun1 = _osctune@1
_tun1___byte equ _osctune
_tun1___bit equ 1
        ; line_number = 464
        ; bind _tun0 = _osctune@0
_tun0___byte equ _osctune
_tun0___bit equ 0

        ; line_number = 466
        ; register _pr2 = 
_pr2 equ 146

        ; line_number = 468
        ; register _sspadd = 
_sspadd equ 147

        ; line_number = 470
        ; register _sspstat = 
_sspstat equ 148
        ; line_number = 471
        ; bind _smp = _sspstat@7
_smp___byte equ _sspstat
_smp___bit equ 7
        ; line_number = 472
        ; bind _cke = _sspstat@6
_cke___byte equ _sspstat
_cke___bit equ 6
        ; line_number = 473
        ; bind _da = _sspstat@5
_da___byte equ _sspstat
_da___bit equ 5
        ; line_number = 474
        ; bind _p = _sspstat@4
_p___byte equ _sspstat
_p___bit equ 4
        ; line_number = 475
        ; bind _s = _sspstat@3
_s___byte equ _sspstat
_s___bit equ 3
        ; line_number = 476
        ; bind _rw = _sspstat@2
_rw___byte equ _sspstat
_rw___bit equ 2
        ; line_number = 477
        ; bind _ua = _sspstat@1
_ua___byte equ _sspstat
_ua___bit equ 1
        ; line_number = 478
        ; bind _bf = _sspstat@0
_bf___byte equ _sspstat
_bf___bit equ 0

        ; line_number = 480
        ; register _txsta = 
_txsta equ 152
        ; line_number = 481
        ; bind _csrc = _txsta@7
_csrc___byte equ _txsta
_csrc___bit equ 7
        ; line_number = 482
        ; bind _tx9 = _txsta@6
_tx9___byte equ _txsta
_tx9___bit equ 6
        ; line_number = 483
        ; bind _txen = _txsta@5
_txen___byte equ _txsta
_txen___bit equ 5
        ; line_number = 484
        ; bind _sync = _txsta@4
_sync___byte equ _txsta
_sync___bit equ 4
        ; line_number = 485
        ; bind _brgh = _txsta@2
_brgh___byte equ _txsta
_brgh___bit equ 2
        ; line_number = 486
        ; bind _trmt = _txsta@1
_trmt___byte equ _txsta
_trmt___bit equ 1
        ; line_number = 487
        ; bind _tx9d = _txsta@0
_tx9d___byte equ _txsta
_tx9d___bit equ 0

        ; line_number = 489
        ; register _spbrg = 
_spbrg equ 153

        ; line_number = 491
        ; register _ansel = 
_ansel equ 155
        ; line_number = 492
        ; bind _ans6 = _ansel@6
_ans6___byte equ _ansel
_ans6___bit equ 6
        ; line_number = 493
        ; bind _ans5 = _ansel@5
_ans5___byte equ _ansel
_ans5___bit equ 5
        ; line_number = 494
        ; bind _ans4 = _ansel@4
_ans4___byte equ _ansel
_ans4___bit equ 4
        ; line_number = 495
        ; bind _ans3 = _ansel@3
_ans3___byte equ _ansel
_ans3___bit equ 3
        ; line_number = 496
        ; bind _ans2 = _ansel@2
_ans2___byte equ _ansel
_ans2___bit equ 2
        ; line_number = 497
        ; bind _ans1 = _ansel@1
_ans1___byte equ _ansel
_ans1___bit equ 1
        ; line_number = 498
        ; bind _ans0 = _ansel@0
_ans0___byte equ _ansel
_ans0___bit equ 0

        ; line_number = 500
        ; register _cmcon = 
_cmcon equ 156
        ; line_number = 501
        ; bind _c2out = _cmcon@7
_c2out___byte equ _cmcon
_c2out___bit equ 7
        ; line_number = 502
        ; bind _c1out = _cmcon@6
_c1out___byte equ _cmcon
_c1out___bit equ 6
        ; line_number = 503
        ; bind _c2inv = _cmcon@5
_c2inv___byte equ _cmcon
_c2inv___bit equ 5
        ; line_number = 504
        ; bind _c1inv = _cmcon@4
_c1inv___byte equ _cmcon
_c1inv___bit equ 4
        ; line_number = 505
        ; bind _cis = _cmcon@3
_cis___byte equ _cmcon
_cis___bit equ 3
        ; line_number = 506
        ; bind _cm2 = _cmcon@2
_cm2___byte equ _cmcon
_cm2___bit equ 2
        ; line_number = 507
        ; bind _cm1 = _cmcon@1
_cm1___byte equ _cmcon
_cm1___bit equ 1
        ; line_number = 508
        ; bind _cm0 = _cmcon@0
_cm0___byte equ _cmcon
_cm0___bit equ 0

        ; line_number = 510
        ; register _cvrcon = 
_cvrcon equ 157
        ; line_number = 511
        ; bind _cvren = _cvrcon@7
_cvren___byte equ _cvrcon
_cvren___bit equ 7
        ; line_number = 512
        ; bind _cvroe = _cvrcon@6
_cvroe___byte equ _cvrcon
_cvroe___bit equ 6
        ; line_number = 513
        ; bind _cvrr = _cvrcon@5
_cvrr___byte equ _cvrcon
_cvrr___bit equ 5
        ; line_number = 514
        ; bind _cvr3 = _cvrcon@3
_cvr3___byte equ _cvrcon
_cvr3___bit equ 3
        ; line_number = 515
        ; bind _cvr2 = _cvrcon@2
_cvr2___byte equ _cvrcon
_cvr2___bit equ 2
        ; line_number = 516
        ; bind _cvr1 = _cvrcon@1
_cvr1___byte equ _cvrcon
_cvr1___bit equ 1
        ; line_number = 517
        ; bind _cvr0 = _cvrcon@0
_cvr0___byte equ _cvrcon
_cvr0___bit equ 0

        ; line_number = 519
        ; register _adresl = 
_adresl equ 158

        ; line_number = 521
        ; register _adcon1 = 
_adcon1 equ 159
        ; line_number = 522
        ; bind _adfm = _adcon1@7
_adfm___byte equ _adcon1
_adfm___bit equ 7
        ; line_number = 523
        ; bind _adcs2 = _adcon1@6
_adcs2___byte equ _adcon1
_adcs2___bit equ 6
        ; line_number = 524
        ; bind _vcfg1 = _adcon1@5
_vcfg1___byte equ _adcon1
_vcfg1___bit equ 5
        ; line_number = 525
        ; bind _vcfg0 = _adcon1@4
_vcfg0___byte equ _adcon1
_vcfg0___bit equ 4

        ; line_number = 527
        ; register _wdtcon = 
_wdtcon equ 261
        ; line_number = 528
        ; bind _wdtps3 = _wdtcon@4
_wdtps3___byte equ _wdtcon
_wdtps3___bit equ 4
        ; line_number = 529
        ; bind _wdtps2 = _wdtcon@3
_wdtps2___byte equ _wdtcon
_wdtps2___bit equ 3
        ; line_number = 530
        ; bind _wdtps1 = _wdtcon@2
_wdtps1___byte equ _wdtcon
_wdtps1___bit equ 2
        ; line_number = 531
        ; bind _wdtps0 = _wdtcon@1
_wdtps0___byte equ _wdtcon
_wdtps0___bit equ 1
        ; line_number = 532
        ; bind _swdten = _wdtcon@0
_swdten___byte equ _wdtcon
_swdten___bit equ 0

        ; line_number = 534
        ; register _eedata = 
_eedata equ 268

        ; line_number = 536
        ; register _eeadr = 
_eeadr equ 269

        ; line_number = 538
        ; register _eedath = 
_eedath equ 270

        ; line_number = 540
        ; register _eedatl = 
_eedatl equ 271

        ; line_number = 542
        ; register _eecon1 = 
_eecon1 equ 396
        ; line_number = 543
        ; bind _eepgd = _eecon1@7
_eepgd___byte equ _eecon1
_eepgd___bit equ 7
        ; line_number = 544
        ; bind _free = _eecon1@4
_free___byte equ _eecon1
_free___bit equ 4
        ; line_number = 545
        ; bind _wrerr = _eecon1@3
_wrerr___byte equ _eecon1
_wrerr___bit equ 3
        ; line_number = 546
        ; bind _wren = _eecon1@2
_wren___byte equ _eecon1
_wren___bit equ 2
        ; line_number = 547
        ; bind _wr = _eecon1@1
_wr___byte equ _eecon1
_wr___bit equ 1
        ; line_number = 548
        ; bind _rd = _eecon1@0
_rd___byte equ _eecon1
_rd___bit equ 0

        ; line_number = 550
        ; register _eecon2 = 
_eecon2 equ 157

        ; buffer = 'camera1'
        ; line_number = 6
        ; library _pic16f88 exited
        ; line_number = 7
        ; library rb2 entered

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

        ; buffer = 'rb2'
        ; line_number = 6
        ; 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 = 'rb2'
        ; line_number = 6
        ; library rb2_constants exited

        ; line_number = 8
        ; global rb2_error bit		# A global error bit.
rb2_error___byte equ globals___0+79
rb2_error___bit equ 0

        ; Delaying code generation for procedure  rb2_address_put
        ; Delaying code generation for procedure  rb2_byte_put_get
        ; Delaying code generation for procedure  rb2_byte_put
        ; Delaying code generation for procedure  rb2_byte_get

        ; buffer = 'camera1'
        ; line_number = 7
        ; library rb2 exited

        ; # The resonator is running at 16MHz:
        ; line_number = 10
        ; library clock16mhz entered
        ; # Copyright (c) 2006 by Wayne C. Gramlich
        ; # All rights reserved.

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

        ; # Define processor constants:
        ; buffer = 'clock16mhz'
        ; line_number = 9
        ; constant clock_rate = 16000000
clock_rate equ 16000000
        ; 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 4000000


        ; buffer = 'camera1'
        ; line_number = 10
        ; library clock16mhz exited
        ; line_number = 11
        ; constant microsecond = 4
microsecond equ 4

        ; # The libary of bus access routines for use by the PIC16F88:
        ; line_number = 14
        ; library rb2bus_pic16f88 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.  It is speicialized for the PIC16F876:
        ; #
        ; # 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_pic16f88'
        ; 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 Skipped (duplicate)
        ; 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 1
        ; line_number = 12
        ; global rb2bus_error bit		# Global error bit
rb2bus_error___byte equ globals___0+79
rb2bus_error___bit equ 2
        ; line_number = 13
        ; global rb2bus_address byte	# Bus address to respond to
rb2bus_address equ globals___0+4
        ; line_number = 14
        ; global rb2bus_index byte	# Index into id information
rb2bus_index equ globals___0+5


        ; 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_pic16f88'
        ; line_number = 16
        ; library rb2bus exited

        ; # Baud_Rate = Fosc / (16(X+1))
        ; # 16 * (X+1) = Fosc/Baud_Rate
        ; # X+1 = Fosc/(16*Baud_Rate)
        ; # X = Fosc/(16*Baud_rate) - 1

        ; line_number = 23
        ; constant baud_rate_500k = 500000
baud_rate_500k equ 500000
        ; line_number = 24
        ; constant spbrg_500k = clock_rate / (16 * baud_rate_500k) - 1
spbrg_500k equ 1

        ; 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 = 'camera1'
        ; line_number = 14
        ; library rb2bus_pic16f88 exited

        ; # This module uses a 16Mhz resonator; hence mode HS=High Speed:

        ; # Only the RX and TX pins on this package are used:
        ; line_number = 20
        ; package dip
        ; line_number = 21
        ; pin 1 = ra2_in, name=bump
bump___byte equ _porta
bump___bit equ 2
        ; line_number = 22
        ;  pin 2 = ra3_in, name=decr
decr___byte equ _porta
decr___bit equ 3
        ; line_number = 23
        ;  pin 3 = ra4_in, name=view
view___byte equ _porta
view___bit equ 4
        ; line_number = 24
        ;  pin 4 = ra5_in, name=slave
slave___byte equ _porta
slave___bit equ 5
        ; line_number = 25
        ;  pin 5 = ground
        ; line_number = 26
        ;  pin 6 = rb0_in, name=reset
reset___byte equ _portb
reset___bit equ 0
        ; line_number = 27
        ;  pin 7 = rb1_in, name=sda_in
sda_in___byte equ _portb
sda_in___bit equ 1
        ; line_number = 28
        ;  pin 8 = rx
        ; line_number = 29
        ;  pin 9 = rb3_in, name=action
action___byte equ _portb
action___bit equ 3
        ; line_number = 30
        ;  pin 10 = rb4_in, name=scl_in
scl_in___byte equ _portb
scl_in___bit equ 4
        ; line_number = 31
        ;  pin 11 = tx
        ; line_number = 32
        ;  pin 12 = rb6_unused
        ; line_number = 33
        ;  pin 13 = rb7_unused
        ; line_number = 34
        ;  pin 14 = power_supply
        ; line_number = 35
        ;  pin 15 = osc2
        ; line_number = 36
        ;  pin 16 = osc1
        ; line_number = 37
        ;  pin 17 = ra0_unused
        ; line_number = 38
        ;  pin 18 = ra1_unused

        ; line_number = 40
        ; origin 0
        org     0

        ; line_number = 42
        ;info   42, 0
        ; procedure main
main:
        ; Initialize some registers
        clrf    _adcon0
        bsf     __rp0___byte, __rp0___bit
        clrf    _ansel
        movlw   7
        movwf   _cmcon
        movlw   255
        movwf   _trisa
        movlw   255
        movwf   _trisb
        ; arguments_none
        ; line_number = 44
        ;  returns_nothing

        ; line_number = 46
        ;  local command byte
main__command equ globals___0+16
        ; line_number = 47
        ;  local id_index byte
main__id_index equ globals___0+17
        ; line_number = 48
        ;  local result byte
main__result equ globals___0+18
        ; line_number = 49
        ;  local lcd_initialized bit
main__lcd_initialized___byte equ globals___0+79
main__lcd_initialized___bit equ 5
        ; line_number = 50
        ;  local match byte
main__match equ globals___0+19
        ; line_number = 51
        ;  local bump_count byte
main__bump_count equ globals___0+20
        ; line_number = 52
        ;  local action_count byte
main__action_count equ globals___0+21

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>01 code:X0=cu=>X0)
        ; line_number = 54
        ;  call rb2bus_initialize(12)
        ;info   54, 9
        movlw   12
        bcf     __rp0___byte, __rp0___bit
        call    rb2bus_initialize
        ; line_number = 55
        ;  id_index := 0
        ;info   55, 12
        clrf    main__id_index
        ; line_number = 56
        ;  lcd_initialized := _false
        ;info   56, 13
        bcf     main__lcd_initialized___byte, main__lcd_initialized___bit
        ; line_number = 57
        ;  match := 0
        ;info   57, 14
        clrf    main__match
        ; line_number = 58
        ;  bump_count := 0
        ;info   58, 15
        clrf    main__bump_count
        ; line_number = 59
        ;  action_count := 0
        ;info   59, 16
        clrf    main__action_count

        ; line_number = 61
        ;  scl_in := _false
        ;info   61, 17
        bcf     scl_in___byte, scl_in___bit
        ; line_number = 62
        ;  sda_in := _false
        ;info   62, 18
        bcf     sda_in___byte, sda_in___bit

        ; line_number = 64
        ;  loop_forever start
main__1:
        ; line_number = 65
        ; if slave start
        ;info   65, 19
        ; =>bit_code_emit@symbol(): sym=slave
        ; No 1TEST: true.size=131 false.size=81
        ; No 2TEST: true.size=131 false.size=81
        ; 2GOTO: Single test with two GOTO's
        btfss   slave___byte, slave___bit
        goto    main__59
        ; # In slave mode commands come in via the bus:
        ; # Make sure that we have been selected:
        ; line_number = 68
        ;  rb2bus_error := _true
        ;info   68, 21
        bsf     rb2bus_error___byte, rb2bus_error___bit
        ; line_number = 69
        ;  while rb2bus_error start
main__24:
        ;info   69, 22
        ; =>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__25
        ; line_number = 70
        ; call rb2bus_select_wait()
        ;info   70, 24
        call    rb2bus_select_wait
        ; line_number = 71
        ;  command := rb2bus_byte_get()
        ;info   71, 25
        call    rb2bus_byte_get
        movwf   main__command

        goto    main__24
        ; Recombine size1 = 0 || size2 = 0
main__25:
        ; line_number = 69
        ;  while rb2bus_error done
        ; line_number = 73
        ; switch command >> 6 start
        ;info   73, 28
        ; switch_before:(data:00=uu=>00 code:X0=cu=>X0) size=7
        movlw   main__56>>8
        movwf   __pclath
main__57 equ globals___0+30
        swapf   main__command,w
        movwf   main__57
        rrf     main__57,f
        rrf     main__57,w
        andlw   3
        ; switch after expression:(data:00=uu=>00 code:X0=cu=>X0)
        addlw   main__56
        movwf   __pcl
        ; page_group 4
main__56:
        goto    main__54
        goto    main__58
        goto    main__58
        goto    main__55
        ; line_number = 74
        ; case 0
main__54:
        ; # 00xx xxxx:
        ; line_number = 76
        ;  switch (command >> 3) & 7 start
        ;info   76, 41
        ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
        ; line_number = 77
        ; case_maximum 7
        movlw   main__41>>8
        movwf   __pclath
main__42 equ globals___0+30
        rrf     main__command,w
        movwf   main__42
        rrf     main__42,f
        rrf     main__42,w
        andlw   7
        ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
        addlw   main__41
        movwf   __pcl
        ; page_group 8
main__41:
        goto    main__40
        goto    main__43
        goto    main__43
        goto    main__43
        goto    main__43
        goto    main__43
        goto    main__43
        goto    main__43
        ; line_number = 78
        ; case 0
main__40:
        ; #: 0000 0xxx:
        ; line_number = 80
        ;  result := 0
        ;info   80, 58
        clrf    main__result
        ; line_number = 81
        ;  switch command & 7 start
        ;info   81, 59
        ; switch_before:(data:00=uu=>00 code:XX=cc=>XX) size=1
        ; line_number = 82
        ; case_maximum 7
        movlw   main__38>>8
        movwf   __pclath
        movlw   7
        andwf   main__command,w
        ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
        addlw   main__38
        movwf   __pcl
        ; page_group 8
main__38:
        goto    main__32
        goto    main__39
        goto    main__39
        goto    main__33
        goto    main__34
        goto    main__35
        goto    main__36
        goto    main__37
        ; line_number = 83
        ; case 0
main__32:
        ; #: 0000 0000:
        ; line_number = 85
        ;  if bump start
        ;info   85, 73
        ; =>bit_code_emit@symbol(): sym=bump
        ; 1TEST: Single test with code in skip slot
        btfsc   bump___byte, bump___bit
        ; line_number = 86
        ; result@0 := _true
        ;info   86, 74
main__select__26___byte equ main__result
main__select__26___bit equ 0
        bsf     main__select__26___byte, main__select__26___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 85
        ;  if bump done
        ; line_number = 87
        ; if reset start
        ;info   87, 75
        ; =>bit_code_emit@symbol(): sym=reset
        ; 1TEST: Single test with code in skip slot
        btfsc   reset___byte, reset___bit
        ; line_number = 88
        ; result@1 := _true
        ;info   88, 76
main__select__27___byte equ main__result
main__select__27___bit equ 1
        bsf     main__select__27___byte, main__select__27___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 87
        ; if reset done
        ; line_number = 89
        ; if slave start
        ;info   89, 77
        ; =>bit_code_emit@symbol(): sym=slave
        ; 1TEST: Single test with code in skip slot
        btfsc   slave___byte, slave___bit
        ; line_number = 90
        ; result@2 := _true
        ;info   90, 78
main__select__28___byte equ main__result
main__select__28___bit equ 2
        bsf     main__select__28___byte, main__select__28___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 89
        ; if slave done
        ; line_number = 91
        ; if view start
        ;info   91, 79
        ; =>bit_code_emit@symbol(): sym=view
        ; 1TEST: Single test with code in skip slot
        btfsc   view___byte, view___bit
        ; line_number = 92
        ; result@3 := _true
        ;info   92, 80
main__select__29___byte equ main__result
main__select__29___bit equ 3
        bsf     main__select__29___byte, main__select__29___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 91
        ; if view done
        ; line_number = 93
        ; if decr start
        ;info   93, 81
        ; =>bit_code_emit@symbol(): sym=decr
        ; 1TEST: Single test with code in skip slot
        btfsc   decr___byte, decr___bit
        ; line_number = 94
        ; result@4 := _true
        ;info   94, 82
main__select__30___byte equ main__result
main__select__30___bit equ 4
        bsf     main__select__30___byte, main__select__30___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 93
        ; if decr done
        ; line_number = 95
        ; if action start
        ;info   95, 83
        ; =>bit_code_emit@symbol(): sym=action
        ; 1TEST: Single test with code in skip slot
        btfsc   action___byte, action___bit
        ; line_number = 96
        ; result@5 := _true
        ;info   96, 84
main__select__31___byte equ main__result
main__select__31___bit equ 5
        bsf     main__select__31___byte, main__select__31___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 95
        ; if action done
        goto    main__39
        ; line_number = 97
        ; case 3
main__33:
        ; This case body wants this bit set
        bsf     __rp0___byte, __rp0___bit
        ; line_number = 98
        ; result := _cmcon
        ;info   98, 87
        movf    _cmcon,w
        bcf     __rp0___byte, __rp0___bit
        movwf   main__result
        goto    main__39
        ; line_number = 99
        ; case 4
main__34:
        ; line_number = 100
        ; result := _porta
        ;info   100, 91
        movf    _porta,w
        movwf   main__result
        goto    main__39
        ; line_number = 101
        ; case 5
main__35:
        ; line_number = 102
        ; result := _portb
        ;info   102, 94
        movf    _portb,w
        movwf   main__result
        goto    main__39
        ; line_number = 103
        ; case 6
main__36:
        ; This case body wants this bit set
        bsf     __rp0___byte, __rp0___bit
        ; line_number = 104
        ; result := _trisa
        ;info   104, 98
        movf    _trisa,w
        bcf     __rp0___byte, __rp0___bit
        movwf   main__result
        goto    main__39
        ; line_number = 105
        ; case 7
main__37:
        ; This case body wants this bit set
        bsf     __rp0___byte, __rp0___bit
        ; line_number = 106
        ; result := _trisb
        ;info   106, 103
        movf    _trisb,w
        bcf     __rp0___byte, __rp0___bit
        movwf   main__result
main__39:
        ; line_number = 81
        ;  switch command & 7 done
        ; line_number = 107
        ; call rb2bus_byte_put(result)
        ;info   107, 106
        movf    main__result,w
        call    rb2bus_byte_put
main__43:
        ; line_number = 76
        ;  switch (command >> 3) & 7 done
        goto    main__58
        ; line_number = 108
        ; case 3
main__55:
        ; # 11xx xxxx:
        ; line_number = 110
        ;  switch (command >> 3) & 7 start
        ;info   110, 109
        ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
        movlw   main__51>>8
        movwf   __pclath
main__52 equ globals___0+30
        rrf     main__command,w
        movwf   main__52
        rrf     main__52,f
        rrf     main__52,w
        andlw   7
        ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
        addlw   main__51
        movwf   __pcl
        ; page_group 8
main__51:
        goto    main__53
        goto    main__53
        goto    main__53
        goto    main__53
        goto    main__53
        goto    main__53
        goto    main__53
        goto    main__50
        ; line_number = 111
        ; case 7
main__50:
        ; # 1111 1xxx:
        ; line_number = 113
        ;  switch command & 7 start
        ;info   113, 126
        ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
        movlw   main__48>>8
        movwf   __pclath
        movlw   7
        andwf   main__command,w
        ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
        addlw   main__48
        movwf   __pcl
        ; page_group 8
main__48:
        goto    main__49
        goto    main__49
        goto    main__49
        goto    main__49
        goto    main__49
        goto    main__45
        goto    main__46
        goto    main__47
        ; line_number = 114
        ; case 5
main__45:
        ; # 1111 1101 (Id_next):
        ; line_number = 116
        ;  if id_index < id.size start
        ;info   116, 140
        movlw   23
        subwf   main__id_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    main__44
        ; line_number = 117
        ; call rb2bus_byte_put(id[id_index])
        ;info   117, 144
        movf    main__id_index,w
        call    id
        call    rb2bus_byte_put
        ; line_number = 118
        ;  id_index := id_index + 1
        ;info   118, 147
        incf    main__id_index,f
main__44:
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 116
        ;  if id_index < id.size done
        goto    main__49
        ; line_number = 119
        ; case 6
main__46:
        ; # 1111 1110 (Id_start):
        ; line_number = 121
        ;  id_index := 0
        ;info   121, 149
        clrf    main__id_index
        goto    main__49
        ; line_number = 122
        ; case 7
main__47:
        ; # 1111 1111 (Deselect):
        ; line_number = 124
        ;  call rb2bus_deselect()
        ;info   124, 151
        call    rb2bus_deselect
main__49:
        ; line_number = 113
        ;  switch command & 7 done
main__53:
        ; line_number = 110
        ;  switch (command >> 3) & 7 done
main__58:
        ; line_number = 73
        ; switch command >> 6 done
        goto    main__60
        ; 2GOTO: Starting code 2
main__59:
        ; # We are in master mode sending data to the LCD32 on the bus:
        ; line_number = 127
        ;  call rb2bus_select(rb2_lcd32_address)
        ;info   127, 153
        movlw   32
        call    rb2bus_select

        ; # Debounce bump button:
        ; line_number = 130
        ;  if bump start
        ;info   130, 155
        ; =>bit_code_emit@symbol(): sym=bump
        ; No 1TEST: true.size=1 false.size=11
        ; No 2TEST: true.size=1 false.size=11
        ; 2GOTO: Single test with two GOTO's
        btfss   bump___byte, bump___bit
        goto    main__8
        ; line_number = 131
        ; bump_count := 0
        ;info   131, 157
        clrf    main__bump_count
        ; Recombine code1_bit_states != code2_bit_states
        goto    main__9
        ; 2GOTO: Starting code 2
main__8:
        ; # Bump button is pushed; increment {bump_count}:
        ; line_number = 134
        ;  if bump_count@1 start
        ;info   134, 159
main__select__5___byte equ main__bump_count
main__select__5___bit equ 1
        ; =>bit_code_emit@symbol(): sym=main__select__5
        ; No 1TEST: true.size=7 false.size=1
        ; No 2TEST: true.size=7 false.size=1
        ; 2GOTO: Single test with two GOTO's
        btfss   main__select__5___byte, main__select__5___bit
        goto    main__6
        ; line_number = 135
        ; if !(bump_count@0) start
        ;info   135, 161
main__select__3___byte equ main__bump_count
main__select__3___bit equ 0
        ; =>bit_code_emit@symbol(): sym=main__select__3
        ; No 1TEST: true.size=0 false.size=5
        ; No 2TEST: true.size=0 false.size=5
        ; 1GOTO: Single test with GOTO
        btfsc   main__select__3___byte, main__select__3___bit
        goto    main__4
        ; line_number = 136
        ; bump_count@0 := _true
        ;info   136, 163
main__select__2___byte equ main__bump_count
main__select__2___bit equ 0
        bsf     main__select__2___byte, main__select__2___bit
        ; # We have been depressed long enough:
        ; line_number = 138
        ;  if decr start
        ;info   138, 164
        ; =>bit_code_emit@symbol(): sym=decr
        ; No 1TEST: true.size=1 false.size=1
        ; 2TEST: two tests with code in both delay slots
        btfsc   decr___byte, decr___bit
        ; line_number = 139
        ; match := match - 1
        ;info   139, 165
        decf    main__match,f
        btfss   decr___byte, decr___bit
        ; line_number = 141
        ; match := match + 1
        ;info   141, 167
        incf    main__match,f
        ; line_number = 138
        ;  if decr done
main__4:
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 135
        ; if !(bump_count@0) done
        ; Recombine code1_bit_states != code2_bit_states
        goto    main__7
        ; 2GOTO: Starting code 2
main__6:
        ; line_number = 143
        ; bump_count := bump_count + 1
        ;info   143, 169
        incf    main__bump_count,f

main__7:
        ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
        ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
        ; line_number = 134
        ;  if bump_count@1 done
main__9:
        ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
        ; line_number = 130
        ;  if bump done
        ; line_number = 145
        ; if action start
        ;info   145, 170
        ; =>bit_code_emit@symbol(): sym=action
        ; No 1TEST: true.size=1 false.size=11
        ; No 2TEST: true.size=1 false.size=11
        ; 2GOTO: Single test with two GOTO's
        btfss   action___byte, action___bit
        goto    main__16
        ; line_number = 146
        ; action_count := 0
        ;info   146, 172
        clrf    main__action_count
        ; Recombine code1_bit_states != code2_bit_states
        goto    main__17
        ; 2GOTO: Starting code 2
main__16:
        ; # Action button is pushed; increment {action_count}:
        ; line_number = 149
        ;  if action_count@1 start
        ;info   149, 174
main__select__13___byte equ main__action_count
main__select__13___bit equ 1
        ; =>bit_code_emit@symbol(): sym=main__select__13
        ; No 1TEST: true.size=7 false.size=1
        ; No 2TEST: true.size=7 false.size=1
        ; 2GOTO: Single test with two GOTO's
        btfss   main__select__13___byte, main__select__13___bit
        goto    main__14
        ; line_number = 150
        ; if !(action_count@0) start
        ;info   150, 176
main__select__11___byte equ main__action_count
main__select__11___bit equ 0
        ; =>bit_code_emit@symbol(): sym=main__select__11
        ; No 1TEST: true.size=0 false.size=5
        ; No 2TEST: true.size=0 false.size=5
        ; 1GOTO: Single test with GOTO
        btfsc   main__select__11___byte, main__select__11___bit
        goto    main__12
        ; line_number = 151
        ; action_count@0 := _true
        ;info   151, 178
main__select__10___byte equ main__action_count
main__select__10___bit equ 0
        bsf     main__select__10___byte, main__select__10___bit
        ; # We have been depressed long enough:
        ; line_number = 153
        ;  if decr start
        ;info   153, 179
        ; =>bit_code_emit@symbol(): sym=decr
        ; No 1TEST: true.size=1 false.size=1
        ; 2TEST: two tests with code in both delay slots
        btfsc   decr___byte, decr___bit
        ; line_number = 154
        ; match := match - 1
        ;info   154, 180
        decf    main__match,f
        btfss   decr___byte, decr___bit
        ; line_number = 156
        ; match := match + 1
        ;info   156, 182
        incf    main__match,f
        ; line_number = 153
        ;  if decr done
main__12:
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 150
        ; if !(action_count@0) done
        ; Recombine code1_bit_states != code2_bit_states
        goto    main__15
        ; 2GOTO: Starting code 2
main__14:
        ; line_number = 158
        ; action_count := action_count + 1
        ;info   158, 184
        incf    main__action_count,f

main__15:
        ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
        ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
        ; line_number = 149
        ;  if action_count@1 done
main__17:
        ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
        ; line_number = 145
        ; if action done
        ; line_number = 160
        ; if rb2bus_byte_timeout_get() = 0xa5 start
        ;info   160, 185
        ; Left minus Right
        call    rb2bus_byte_timeout_get
        addlw   91
        ; =>bit_code_emit@symbol(): sym=__z
        ; No 1TEST: true.size=43 false.size=0
        ; No 2TEST: true.size=43 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   __z___byte, __z___bit
        goto    main__23
        ; # We selected the LCD32:
        ; line_number = 162
        ;  if !lcd_initialized start
        ;info   162, 189
        ; =>bit_code_emit@symbol(): sym=main__lcd_initialized
        ; No 1TEST: true.size=0 false.size=3
        ; No 2TEST: true.size=0 false.size=3
        ; 1GOTO: Single test with GOTO
        btfsc   main__lcd_initialized___byte, main__lcd_initialized___bit
        goto    main__18
        ; # Clear the LCD32:
        ; line_number = 164
        ;  call rb2bus_byte_put(rb2_lcd32_form_feed)
        ;info   164, 191
        movlw   12
        call    rb2bus_byte_put
        ; line_number = 165
        ;  lcd_initialized := _true
        ;info   165, 193
        bsf     main__lcd_initialized___byte, main__lcd_initialized___bit

main__18:
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 162
        ;  if !lcd_initialized done
        ; line_number = 167
        ; call rb2bus_byte_put(rb2_lcd32_carriage_return)
        ;info   167, 194
        movlw   13
        call    rb2bus_byte_put

        ; line_number = 169
        ;  result := '+'
        ;info   169, 196
        movlw   43
        movwf   main__result
        ; line_number = 170
        ;  if decr start
        ;info   170, 198
        ; =>bit_code_emit@symbol(): sym=decr
        ; No 1TEST: true.size=2 false.size=0
        ; No 2TEST: true.size=2 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   decr___byte, decr___bit
        goto    main__19
        ; line_number = 171
        ; result := '-'
        ;info   171, 200
        movlw   45
        movwf   main__result
        ; Recombine size1 = 0 || size2 = 0
main__19:
        ; line_number = 170
        ;  if decr done
        ; line_number = 172
        ; call rb2bus_byte_put(result)
        ;info   172, 202
        movf    main__result,w
        call    rb2bus_byte_put

        ; line_number = 174
        ;  result := 'l'
        ;info   174, 204
        movlw   108
        movwf   main__result
        ; line_number = 175
        ;  if view start
        ;info   175, 206
        ; =>bit_code_emit@symbol(): sym=view
        ; No 1TEST: true.size=2 false.size=0
        ; No 2TEST: true.size=2 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   view___byte, view___bit
        goto    main__20
        ; line_number = 176
        ; result := 'v'
        ;info   176, 208
        movlw   118
        movwf   main__result
        ; Recombine size1 = 0 || size2 = 0
main__20:
        ; line_number = 175
        ;  if view done
        ; line_number = 177
        ; call rb2bus_byte_put(result)
        ;info   177, 210
        movf    main__result,w
        call    rb2bus_byte_put

        ; line_number = 179
        ;  result := 'm'
        ;info   179, 212
        movlw   109
        movwf   main__result
        ; line_number = 180
        ;  if slave start
        ;info   180, 214
        ; =>bit_code_emit@symbol(): sym=slave
        ; No 1TEST: true.size=2 false.size=0
        ; No 2TEST: true.size=2 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   slave___byte, slave___bit
        goto    main__21
        ; line_number = 181
        ; result := 's'
        ;info   181, 216
        movlw   115
        movwf   main__result
        ; Recombine size1 = 0 || size2 = 0
main__21:
        ; line_number = 180
        ;  if slave done
        ; line_number = 182
        ; call rb2bus_byte_put(result)
        ;info   182, 218
        movf    main__result,w
        call    rb2bus_byte_put

        ; line_number = 184
        ;  result := 'a'
        ;info   184, 220
        movlw   97
        movwf   main__result
        ; line_number = 185
        ;  if reset start
        ;info   185, 222
        ; =>bit_code_emit@symbol(): sym=reset
        ; No 1TEST: true.size=2 false.size=0
        ; No 2TEST: true.size=2 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   reset___byte, reset___bit
        goto    main__22
        ; line_number = 186
        ; result := 'r'
        ;info   186, 224
        movlw   114
        movwf   main__result
        ; Recombine size1 = 0 || size2 = 0
main__22:
        ; line_number = 185
        ;  if reset done
        ; line_number = 187
        ; call rb2bus_byte_put(result)
        ;info   187, 226
        movf    main__result,w
        call    rb2bus_byte_put

        ; line_number = 189
        ;  call rb2bus_hex_put(match)
        ;info   189, 228
        movf    main__match,w
        call    rb2bus_hex_put

        ; line_number = 191
        ;  call rb2bus_byte_put(rb2_lcd32_carriage_return)
        ;info   191, 230
        movlw   13
        call    rb2bus_byte_put

        ; Recombine size1 = 0 || size2 = 0
main__23:
        ; line_number = 160
        ; if rb2bus_byte_timeout_get() = 0xa5 done
        ; line_number = 193
        ; call milliseconds_sleep(10)
        ;info   193, 232
        movlw   10
        call    milliseconds_sleep


main__60:
        ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
        ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
        ; line_number = 65
        ; if slave done
        ; line_number = 64
        ;  loop_forever wrap-up
        goto    main__1
        ; line_number = 64
        ;  loop_forever done
        ; delay after procedure statements=non-uniform




        ; line_number = 196
        ;info   196, 235
        ; procedure seconds_sleep
seconds_sleep:
        ; Last argument is sitting in W; save into argument variable
        movwf   seconds_sleep__seconds
        ; delay=4294967295
        ; line_number = 197
        ; argument seconds byte
seconds_sleep__seconds equ globals___0+22
        ; line_number = 198
        ;  returns_nothing

        ; # This procedure will sleep for {seconds} seconds.
        ; # While it is doing so, it will flush any bus traffic.

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
        ; line_number = 203
        ;  loop_exactly seconds start
        ;info   203, 236
seconds_sleep__1 equ globals___0+31
        movf    seconds_sleep__seconds,w
        movwf   seconds_sleep__1
seconds_sleep__2:
        ; line_number = 204
        ; loop_exactly 10 start
        ;info   204, 238
seconds_sleep__3 equ globals___0+32
        movlw   10
        movwf   seconds_sleep__3
seconds_sleep__4:
        ; line_number = 205
        ; call milliseconds_sleep(100)
        ;info   205, 240
        movlw   100
        call    milliseconds_sleep


        ; line_number = 204
        ; loop_exactly 10 wrap-up
        decfsz  seconds_sleep__3,f
        goto    seconds_sleep__4
        ; line_number = 204
        ; loop_exactly 10 done
        ; line_number = 203
        ;  loop_exactly seconds wrap-up
        decfsz  seconds_sleep__1,f
        goto    seconds_sleep__2
        ; line_number = 203
        ;  loop_exactly seconds done
        ; delay after procedure statements=non-uniform
        ; Implied return
        retlw   0




        ; line_number = 208
        ;info   208, 247
        ; procedure milliseconds_sleep
milliseconds_sleep:
        ; Last argument is sitting in W; save into argument variable
        movwf   milliseconds_sleep__milliseconds
        ; delay=4294967295
        ; line_number = 209
        ; argument milliseconds byte
milliseconds_sleep__milliseconds equ globals___0+23
        ; line_number = 210
        ;  returns_nothing

        ; # This procedure will sleep for {milliseconds} milliseconds.
        ; # While it is doing so, it will flush any bus traffic.

        ; # 200 * 50 * 1uSec = 1 mSec.
        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
        ; line_number = 216
        ;  loop_exactly milliseconds start
        ;info   216, 248
milliseconds_sleep__1 equ globals___0+33
        movf    milliseconds_sleep__milliseconds,w
        movwf   milliseconds_sleep__1
milliseconds_sleep__2:
        ; line_number = 217
        ; loop_exactly 200 start
        ;info   217, 250
milliseconds_sleep__3 equ globals___0+34
        movlw   200
        movwf   milliseconds_sleep__3
milliseconds_sleep__4:
        ; line_number = 218
        ; delay 50 * microsecond start
        ;info   218, 252
        ; Delay expression evaluates to 200
        ; line_number = 219
        ; do_nothing
        ;info   219, 252

        ; Delay 200 cycles
        ; Delay loop takes 50 * 4 = 200 cycles
        movlw   50
milliseconds_sleep__5:
        addlw   255
        btfss   __z___byte, __z___bit
        goto    milliseconds_sleep__5
        ; line_number = 218
        ; delay 50 * microsecond done
        ; # Flush any bus traffic:
        ; line_number = 222
        ;  if _rcif start
        ;info   222, 256
        ; =>bit_code_emit@symbol(): sym=_rcif
        ; No 1TEST: true.size=6 false.size=0
        ; No 2TEST: true.size=6 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   _rcif___byte, _rcif___bit
        goto    milliseconds_sleep__6
        ; # Something came -- dump it (store int {_w}):
        ; line_number = 224
        ;  assemble
        ;info   224, 258
        ; line_number = 225
        ;info   225, 258
        movf    _rcreg,w

        ; # Recover receive errors by toggling {_cren}:
        ; line_number = 228
        ;  if _oerr start
        ;info   228, 259
        ; =>bit_code_emit@symbol(): sym=_oerr
        ; 1TEST: Single test with code in skip slot
        btfsc   _oerr___byte, _oerr___bit
        ; line_number = 229
        ; _cren := _false
        ;info   229, 260
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 228
        ;  if _oerr done
        ; line_number = 230
        ; if _ferr start
        ;info   230, 261
        ; =>bit_code_emit@symbol(): sym=_ferr
        ; 1TEST: Single test with code in skip slot
        btfsc   _ferr___byte, _ferr___bit
        ; line_number = 231
        ; _cren := _false
        ;info   231, 262
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 230
        ; if _ferr done
        ; line_number = 232
        ; _cren := _true
        ;info   232, 263
        bsf     _cren___byte, _cren___bit


        ; Recombine size1 = 0 || size2 = 0
milliseconds_sleep__6:
        ; line_number = 222
        ;  if _rcif done
        ; line_number = 217
        ; loop_exactly 200 wrap-up
        decfsz  milliseconds_sleep__3,f
        goto    milliseconds_sleep__4
        ; line_number = 217
        ; loop_exactly 200 done
        ; line_number = 216
        ;  loop_exactly milliseconds wrap-up
        decfsz  milliseconds_sleep__1,f
        goto    milliseconds_sleep__2
        ; line_number = 216
        ;  loop_exactly milliseconds done
        ; delay after procedure statements=non-uniform
        ; Implied return
        retlw   0




        ; line_number = 235
        ;info   235, 269
        ; procedure rb2bus_hex_put
rb2bus_hex_put:
        ; Last argument is sitting in W; save into argument variable
        movwf   rb2bus_hex_put__value
        ; delay=4294967295
        ; line_number = 236
        ; argument value byte
rb2bus_hex_put__value equ globals___0+24
        ; line_number = 237
        ;  returns_nothing

        ; # This procedure will output {value} to bus a 2 digit hexadecimal number.

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
        ; line_number = 241
        ;  call rb2bus_nibble_put(value >> 4)
        ;info   241, 270
rb2bus_hex_put__1 equ globals___0+35
        swapf   rb2bus_hex_put__value,w
        andlw   15
        call    rb2bus_nibble_put
        ; line_number = 242
        ;  call rb2bus_nibble_put(value)
        ;info   242, 273
        movf    rb2bus_hex_put__value,w
        call    rb2bus_nibble_put


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




        ; line_number = 245
        ;info   245, 276
        ; procedure rb2bus_nibble_put
rb2bus_nibble_put:
        ; Last argument is sitting in W; save into argument variable
        movwf   rb2bus_nibble_put__nibble
        ; delay=4294967295
        ; line_number = 246
        ; argument nibble byte
rb2bus_nibble_put__nibble equ globals___0+25
        ; line_number = 247
        ;  returns_nothing

        ; # This procedure will output the low 4 bits of {nibble} to the bus
        ; # as a hexadecimal digit.

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
        ; line_number = 252
        ;  call rb2bus_byte_put(hex[nibble & 0xf])
        ;info   252, 277
        movlw   15
        andwf   rb2bus_nibble_put__nibble,w
        call    hex
        call    rb2bus_byte_put

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




        ; line_number = 254
        ; string hex = "0123456789abcdef" start
        ; hex = '0123456789abcdef'
hex:
        ; Temporarily save index into FSR
        movwf   __fsr
        ; Initialize PCLATH to point to this code page
        movlw   hex___base>>8
        movwf   __pclath
        ; Restore index from FSR
        movf    __fsr,w
        addlw   hex___base
        ; Index to the correct return value
        movwf   __pcl
        ; page_group 16
hex___base:
        retlw   48
        retlw   49
        retlw   50
        retlw   51
        retlw   52
        retlw   53
        retlw   54
        retlw   55
        retlw   56
        retlw   57
        retlw   97
        retlw   98
        retlw   99
        retlw   100
        retlw   101
        retlw   102
        ; line_number = 254
        ; string hex = "0123456789abcdef" start


        ; line_number = 257
        ;info   257, 304
        ; procedure rb2bus_select
rb2bus_select:
        ; Last argument is sitting in W; save into argument variable
        movwf   rb2bus_select__module
        ; delay=4294967295
        ; line_number = 258
        ; argument module byte
rb2bus_select__module equ globals___0+26
        ; line_number = 259
        ;  returns_nothing

        ; # This procedure will 


        ; # Wait for transmit buffer to become ready:
        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
        ; line_number = 265
        ;  while !_txif start
rb2bus_select__1:
        ;info   265, 305
        ; =>bit_code_emit@symbol(): sym=_txif
        ; 1TEST: Single test with code in skip slot
        btfss   _txif___byte, _txif___bit
        ; line_number = 266
        ; do_nothing
        ;info   266, 306

        goto    rb2bus_select__1
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 265
        ;  while !_txif done
        ; # Send the module select:
        ; line_number = 269
        ;  _adden := _false
        ;info   269, 307
        bcf     _adden___byte, _adden___bit
        ; line_number = 270
        ;  _tx9d := _true
        ;info   270, 308
        bsf     __rp0___byte, __rp0___bit
        bsf     _tx9d___byte, _tx9d___bit
        ; line_number = 271
        ;  _txreg := module
        ;info   271, 310
        bcf     __rp0___byte, __rp0___bit
        movf    rb2bus_select__module,w
        movwf   _txreg

        ; line_number = 273
        ;  call rb2bus_byte_timeout_get()
        ;info   273, 313
        call    rb2bus_byte_timeout_get


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




        ; line_number = 276
        ;info   276, 315
        ; procedure rb2bus_byte_timeout_get
rb2bus_byte_timeout_get:
        ; arguments_none
        ; line_number = 278
        ;  returns byte

        ; # This procedure will get the next byte from the bus and return it.
        ; # If there is a timeout, 0xfc is returned.

        ; line_number = 283
        ;  local result byte
rb2bus_byte_timeout_get__result equ globals___0+27

        ; # Wait for echo to show up:
        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
        ; line_number = 286
        ;  loop_exactly 200 start
        ;info   286, 315
rb2bus_byte_timeout_get__1 equ globals___0+36
        movlw   200
        movwf   rb2bus_byte_timeout_get__1
rb2bus_byte_timeout_get__2:
        ; line_number = 287
        ; if _rcif start
        ;info   287, 317
        ; =>bit_code_emit@symbol(): sym=_rcif
        ; No 1TEST: true.size=9 false.size=0
        ; No 2TEST: true.size=9 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   _rcif___byte, _rcif___bit
        goto    rb2bus_byte_timeout_get__3
        ; # Throw the received byte away (store int {_w}):
        ; line_number = 289
        ;  result := _rcreg
        ;info   289, 319
        movf    _rcreg,w
        movwf   rb2bus_byte_timeout_get__result

        ; # Recover from an receive errors by toggling {_cren}:
        ; line_number = 292
        ;  if _oerr start
        ;info   292, 321
        ; =>bit_code_emit@symbol(): sym=_oerr
        ; 1TEST: Single test with code in skip slot
        btfsc   _oerr___byte, _oerr___bit
        ; line_number = 293
        ; _cren := _false
        ;info   293, 322
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 292
        ;  if _oerr done
        ; line_number = 294
        ; if _ferr start
        ;info   294, 323
        ; =>bit_code_emit@symbol(): sym=_ferr
        ; 1TEST: Single test with code in skip slot
        btfsc   _ferr___byte, _ferr___bit
        ; line_number = 295
        ; _cren := _false
        ;info   295, 324
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 294
        ; if _ferr done
        ; line_number = 296
        ; _cren := _true
        ;info   296, 325
        bsf     _cren___byte, _cren___bit
        ; line_number = 297
        ;  return result start
        ; line_number = 297
        ;info   297, 326
        movf    rb2bus_byte_timeout_get__result,w
        return  
        ; line_number = 297
        ;  return result done
        ; Recombine size1 = 0 || size2 = 0
rb2bus_byte_timeout_get__3:
        ; line_number = 287
        ; if _rcif done
        ; line_number = 298
        ; delay 5 * microsecond start
        ;info   298, 328
        ; Delay expression evaluates to 20
        ; line_number = 299
        ; do_nothing
        ;info   299, 328
        ; Delay 20 cycles
        ; Delay loop takes 5 * 4 = 20 cycles
        movlw   5
rb2bus_byte_timeout_get__4:
        addlw   255
        btfss   __z___byte, __z___bit
        goto    rb2bus_byte_timeout_get__4
        ; line_number = 298
        ; delay 5 * microsecond done
        ; line_number = 286
        ;  loop_exactly 200 wrap-up
        decfsz  rb2bus_byte_timeout_get__1,f
        goto    rb2bus_byte_timeout_get__2
        ; line_number = 286
        ;  loop_exactly 200 done
        ; line_number = 300
        ; return 0xfc start
        ; line_number = 300
        ;info   300, 334
        retlw   252
        ; line_number = 300
        ; return 0xfc done


        ; delay after procedure statements=non-uniform




        ; line_number = 303
        ;info   303, 335
        ; procedure wait
wait:
        ; arguments_none
        ; line_number = 305
        ;  returns_nothing

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

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
        ; line_number = 310
        ;  do_nothing
        ;info   310, 335

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




        ; line_number = 312
        ; string id = "\16,0,12,1,3,9\Camera1-A\7\Gramson" start
        ; id = '\16,0,12,1,3,9\Camera1-A\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 23
id___base:
        retlw   16
        retlw   0
        retlw   12
        retlw   1
        retlw   3
        retlw   9
        retlw   67
        retlw   97
        retlw   109
        retlw   101
        retlw   114
        retlw   97
        retlw   49
        retlw   45
        retlw   65
        retlw   7
        retlw   71
        retlw   114
        retlw   97
        retlw   109
        retlw   115
        retlw   111
        retlw   110
        ; line_number = 312
        ; string id = "\16,0,12,1,3,9\Camera1-A\7\Gramson" start

        ; # Frankly this bit bang code for the I2C master came from Gerry Coe's:
        ; #
        ; #   <http://www.robot-electronics.co.uk/htm/using_the_i2c_bus.htm>
        ; #
        ; # The following examples came from the site above:
        ; #
        ; # The 4 primitive functions above can easily be put together to form
        ; # complete I2C transactions. Here's and example to start an SRF08
        ; # ranging in cm:
        ; #
        ; # i2c_start();              // send start sequence
        ; # i2c_tx(0xE0);             // SRF08 I2C address with R/W bit clear
        ; # i2c_tx(0x00);             // SRF08 command register address
        ; # i2c_tx(0x51);             // command to start ranging in cm
        ; # i2c_stop();               // send stop sequence
        ; #
        ; # Now after waiting 65mS for the ranging to complete (I've left that to you)
        ; # the following example shows how to read the light sensor value from
        ; # register 1 and the range result from registers 2 & 3.
        ; #
        ; # i2c_start();              // send start sequence
        ; # i2c_tx(0xE0);             // SRF08 I2C address with R/W bit clear
        ; # i2c_tx(0x01);             // SRF08 light sensor register address
        ; # i2c_start();              // send a restart sequence
        ; # i2c_tx(0xE1);             // SRF08 I2C address with R/W bit set
        ; # lightsensor = i2c_rx(1);  // get light sensor and send acknowledge.
        ; #                           // Internal register address will increment
        ; #                           // automatically.
        ; # rangehigh = i2c_rx(1);    // get the high byte of the range and send
        ; #                           // acknowledge.
        ; # rangelow = i2c_rx(0);     // get low byte of the range - note we don't
        ; #                           // acknowledge the last byte.
        ; # i2c_stop();               // send stop sequence 

        ; line_number = 348
        ; constant i2c_delay = 4
i2c_delay equ 4

        ; line_number = 350
        ; bind sda = _trisb1
sda___byte equ _trisb
sda___bit equ 1
        ; line_number = 351
        ; bind scl = _trisb4
scl___byte equ _trisb
scl___bit equ 4

        ; line_number = 353
        ;info   353, 365
        ; procedure i2c_start
i2c_start:
        ; arguments_none
        ; line_number = 355
        ;  returns_nothing

        ; # This procedure sends an I2C start sequence to the I2C bus.

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
        ; line_number = 359
        ;  sda := _true
        ;info   359, 365
        bsf     __rp0___byte, __rp0___bit
        bsf     sda___byte, sda___bit
        ; line_number = 360
        ;  delay i2c_delay start
        ;info   360, 367
        ; Delay expression evaluates to 4
        ; line_number = 361
        ; do_nothing
        ;info   361, 367
        ; Delay 4 cycles
        goto    i2c_start__1
i2c_start__1:
        goto    i2c_start__2
i2c_start__2:
        ; line_number = 360
        ;  delay i2c_delay done
        ; line_number = 362
        ; scl := _true
        ;info   362, 369
        bsf     scl___byte, scl___bit
        ; line_number = 363
        ;  delay i2c_delay start
        ;info   363, 370
        ; Delay expression evaluates to 4
        ; line_number = 364
        ; do_nothing
        ;info   364, 370
        ; Delay 4 cycles
        goto    i2c_start__3
i2c_start__3:
        goto    i2c_start__4
i2c_start__4:
        ; line_number = 363
        ;  delay i2c_delay done
        ; line_number = 365
        ; sda := _false
        ;info   365, 372
        bcf     sda___byte, sda___bit
        ; line_number = 366
        ;  delay i2c_delay start
        ;info   366, 373
        ; Delay expression evaluates to 4
        ; line_number = 367
        ; do_nothing
        ;info   367, 373
        ; Delay 4 cycles
        goto    i2c_start__5
i2c_start__5:
        goto    i2c_start__6
i2c_start__6:
        ; line_number = 366
        ;  delay i2c_delay done
        ; line_number = 368
        ; scl := _false
        ;info   368, 375
        bcf     scl___byte, scl___bit
        ; line_number = 369
        ;  delay i2c_delay start
        ;info   369, 376
        ; Delay expression evaluates to 4
        ; line_number = 370
        ; do_nothing
        ;info   370, 376


        ; Delay 4 cycles
        goto    i2c_start__7
i2c_start__7:
        goto    i2c_start__8
i2c_start__8:
        ; line_number = 369
        ;  delay i2c_delay done
        ; delay after procedure statements=non-uniform
        bcf     __rp0___byte, __rp0___bit
        ; Implied return
        retlw   0




        ; line_number = 373
        ;info   373, 380
        ; procedure i2c_stop
i2c_stop:
        ; arguments_none
        ; line_number = 375
        ;  returns_nothing

        ; # This procedure sends an I2C stop sequence to the I2C bus.

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
        ; line_number = 379
        ;  sda := _false
        ;info   379, 380
        bsf     __rp0___byte, __rp0___bit
        bcf     sda___byte, sda___bit
        ; line_number = 380
        ;  delay i2c_delay start
        ;info   380, 382
        ; Delay expression evaluates to 4
        ; line_number = 381
        ; do_nothing
        ;info   381, 382
        ; Delay 4 cycles
        goto    i2c_stop__1
i2c_stop__1:
        goto    i2c_stop__2
i2c_stop__2:
        ; line_number = 380
        ;  delay i2c_delay done
        ; line_number = 382
        ; scl := _true
        ;info   382, 384
        bsf     scl___byte, scl___bit
        ; line_number = 383
        ;  delay i2c_delay start
        ;info   383, 385
        ; Delay expression evaluates to 4
        ; line_number = 384
        ; do_nothing
        ;info   384, 385
        ; Delay 4 cycles
        goto    i2c_stop__3
i2c_stop__3:
        goto    i2c_stop__4
i2c_stop__4:
        ; line_number = 383
        ;  delay i2c_delay done
        ; line_number = 385
        ; sda := _true
        ;info   385, 387
        bsf     sda___byte, sda___bit
        ; line_number = 386
        ;  delay i2c_delay start
        ;info   386, 388
        ; Delay expression evaluates to 4
        ; line_number = 387
        ; do_nothing
        ;info   387, 388


        ; Delay 4 cycles
        goto    i2c_stop__5
i2c_stop__5:
        goto    i2c_stop__6
i2c_stop__6:
        ; line_number = 386
        ;  delay i2c_delay done
        ; delay after procedure statements=non-uniform
        bcf     __rp0___byte, __rp0___bit
        ; Implied return
        retlw   0




        ; line_number = 390
        ;info   390, 392
        ; procedure i2c_rx
i2c_rx:
        ; line_number = 391
        ; argument ack bit
i2c_rx__ack___byte equ globals___0+79
i2c_rx__ack___bit equ 6
        ; line_number = 392
        ;  returns byte

        ; # This procedure will get an 8-bit byte from the I2C bus with
        ; # {ack} being the value of the ACK bit.

        ; line_number = 397
        ;  local result byte
i2c_rx__result equ globals___0+28

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
        ; line_number = 399
        ;  result := 0
        ;info   399, 392
        clrf    i2c_rx__result
        ; line_number = 400
        ;  loop_exactly 8 start
        ;info   400, 393
i2c_rx__1 equ globals___0+37
        movlw   8
        movwf   i2c_rx__1
i2c_rx__2:
        ; line_number = 401
        ; result := result << 1
        ;info   401, 395
        ; Assignment of variable to self (no code needed)
        rlf     i2c_rx__result,f
        bcf     i2c_rx__result, 0
        ; line_number = 402
        ;  scl := _true
        ;info   402, 397
        bsf     __rp0___byte, __rp0___bit
        bsf     scl___byte, scl___bit
        ; line_number = 403
        ;  while !scl_in start
i2c_rx__3:
        ;info   403, 399
        ; =>bit_code_emit@symbol(): sym=scl_in
        ; No 1TEST: true.size=0 false.size=2
        ; No 2TEST: true.size=0 false.size=2
        ; 1GOTO: Single test with GOTO
        bcf     __rp0___byte, __rp0___bit
        btfsc   scl_in___byte, scl_in___bit
        goto    i2c_rx__4
        bsf     __rp0___byte, __rp0___bit
        ; # Wait for any SCL clock stretching:
        ; line_number = 405
        ;  scl := _true
        ;info   405, 403
        bsf     scl___byte, scl___bit
        goto    i2c_rx__3
i2c_rx__4:
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 403
        ;  while !scl_in done
        ; line_number = 406
        ; delay i2c_delay start
        ;info   406, 405
        ; Delay expression evaluates to 4
        ; line_number = 407
        ; do_nothing
        ;info   407, 405
        ; Delay 4 cycles
        goto    i2c_rx__5
i2c_rx__5:
        goto    i2c_rx__6
i2c_rx__6:
        ; line_number = 406
        ; delay i2c_delay done
        ; line_number = 408
        ; if sda_in start
        ;info   408, 407
        ; =>bit_code_emit@symbol(): sym=sda_in
        ; 1TEST: Single test with code in skip slot
        bcf     __rp0___byte, __rp0___bit
        btfsc   sda_in___byte, sda_in___bit
        ; line_number = 409
        ; result@0 := _true
        ;info   409, 409
i2c_rx__select__7___byte equ i2c_rx__result
i2c_rx__select__7___bit equ 0
        bsf     i2c_rx__select__7___byte, i2c_rx__select__7___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 408
        ; if sda_in done
        ; line_number = 410
        ; scl := _false
        ;info   410, 410
        bsf     __rp0___byte, __rp0___bit
        bcf     scl___byte, scl___bit

        bcf     __rp0___byte, __rp0___bit
        ; line_number = 400
        ;  loop_exactly 8 wrap-up
        decfsz  i2c_rx__1,f
        goto    i2c_rx__2
        ; line_number = 400
        ;  loop_exactly 8 done
        ; # Deal with ACK bit:
        ; line_number = 413
        ;  if ack start
        ;info   413, 415
        ; =>bit_code_emit@symbol(): sym=i2c_rx__ack
        ; No 1TEST: true.size=1 false.size=1
        ; 2TEST: two tests with code in both delay slots
        btfsc   i2c_rx__ack___byte, i2c_rx__ack___bit
        ; line_number = 414
        ; sda := _false
        ;info   414, 416
        bcf     sda___byte, sda___bit
        btfss   i2c_rx__ack___byte, i2c_rx__ack___bit
        ; line_number = 416
        ; sda := _true
        ;info   416, 418
        bsf     sda___byte, sda___bit
        bsf     __rp0___byte, __rp0___bit
        ; line_number = 413
        ;  if ack done
        ; line_number = 417
        ; scl := _true
        ;info   417, 420
        bsf     scl___byte, scl___bit
        ; line_number = 418
        ;  delay i2c_delay start
        ;info   418, 421
        ; Delay expression evaluates to 4
        ; line_number = 419
        ; do_nothing
        ;info   419, 421
        ; Delay 4 cycles
        goto    i2c_rx__8
i2c_rx__8:
        goto    i2c_rx__9
i2c_rx__9:
        ; line_number = 418
        ;  delay i2c_delay done
        ; line_number = 420
        ; scl := _false
        ;info   420, 423
        bcf     scl___byte, scl___bit
        ; line_number = 421
        ;  sda := _true
        ;info   421, 424
        bsf     sda___byte, sda___bit

        ; line_number = 423
        ;  return result start
        ; line_number = 423
        ;info   423, 425
        bcf     __rp0___byte, __rp0___bit
        movf    i2c_rx__result,w
        return  
        ; line_number = 423
        ;  return result done


        ; delay after procedure statements=non-uniform




i2c_tx__0return___byte equ globals___0+79
i2c_tx__0return___bit equ 7
        ; line_number = 426
        ;info   426, 428
        ; procedure i2c_tx
i2c_tx:
        ; Last argument is sitting in W; save into argument variable
        movwf   i2c_tx__value
        ; delay=4294967295
        ; line_number = 427
        ; argument value byte
i2c_tx__value equ globals___0+29
        ; line_number = 428
        ;  returns bit

        ; # This procedure will transmit {value} to the I2C bus and return
        ; # the corresponding ACK bit.

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
        ; line_number = 433
        ;  loop_exactly 8 start
        ;info   433, 429
i2c_tx__1 equ globals___0+38
        movlw   8
        movwf   i2c_tx__1
i2c_tx__2:
        ; line_number = 434
        ; if value@7 start
        ;info   434, 431
i2c_tx__select__3___byte equ i2c_tx__value
i2c_tx__select__3___bit equ 7
        ; =>bit_code_emit@symbol(): sym=i2c_tx__select__3
        ; No 1TEST: true.size=1 false.size=1
        ; 2TEST: two tests with code in both delay slots
        btfsc   i2c_tx__select__3___byte, i2c_tx__select__3___bit
        ; line_number = 435
        ; sda := _true
        ;info   435, 432
        bsf     sda___byte, sda___bit
        btfss   i2c_tx__select__3___byte, i2c_tx__select__3___bit
        ; line_number = 437
        ; sda := _false
        ;info   437, 434
        bcf     sda___byte, sda___bit
        bsf     __rp0___byte, __rp0___bit
        ; line_number = 434
        ; if value@7 done
        ; line_number = 438
        ; scl := _true
        ;info   438, 436
        bsf     scl___byte, scl___bit
        ; line_number = 439
        ;  value := value << 1
        ;info   439, 437
        ; Assignment of variable to self (no code needed)
        bcf     __rp0___byte, __rp0___bit
        rlf     i2c_tx__value,f
        bcf     i2c_tx__value, 0
        ; line_number = 440
        ;  scl := _false
        ;info   440, 440
        bsf     __rp0___byte, __rp0___bit
        bcf     scl___byte, scl___bit
        bcf     __rp0___byte, __rp0___bit
        ; line_number = 433
        ;  loop_exactly 8 wrap-up
        decfsz  i2c_tx__1,f
        goto    i2c_tx__2
        ; line_number = 433
        ;  loop_exactly 8 done
        ; line_number = 441
        ; sda := _true
        ;info   441, 445
        bsf     __rp0___byte, __rp0___bit
        bsf     sda___byte, sda___bit
        ; line_number = 442
        ;  scl := _true
        ;info   442, 447
        bsf     scl___byte, scl___bit
        ; line_number = 443
        ;  delay i2c_delay start
        ;info   443, 448
        ; Delay expression evaluates to 4
        ; line_number = 444
        ; do_nothing
        ;info   444, 448
        ; Delay 4 cycles
        goto    i2c_tx__4
i2c_tx__4:
        goto    i2c_tx__5
i2c_tx__5:
        ; line_number = 443
        ;  delay i2c_delay done
        ; line_number = 445
        ; if sda_in start
        ;info   445, 450
        ; =>bit_code_emit@symbol(): sym=sda_in
        ; No 1TEST: true.size=4 false.size=0
        ; No 2TEST: true.size=4 false.size=0
        ; 1GOTO: Single test with GOTO
        bcf     __rp0___byte, __rp0___bit
        btfss   sda_in___byte, sda_in___bit
        goto    i2c_tx__6
        bsf     __rp0___byte, __rp0___bit
        ; line_number = 446
        ; scl := _false
        ;info   446, 454
        bcf     scl___byte, scl___bit
        ; line_number = 447
        ;  return _true start
        ; line_number = 447
        ;info   447, 455
        bcf     __rp0___byte, __rp0___bit
        bsf     i2c_tx__0return___byte, i2c_tx__0return___bit
        return  
        ; line_number = 447
        ;  return _true done
        ; Recombine size1 = 0 || size2 = 0
i2c_tx__6:
        ; line_number = 445
        ; if sda_in done
        ; line_number = 448
        ; scl := _false
        ;info   448, 458
        bsf     __rp0___byte, __rp0___bit
        bcf     scl___byte, scl___bit
        ; line_number = 449
        ;  return _false start
        ; line_number = 449
        ;info   449, 460
        bcf     __rp0___byte, __rp0___bit
        bcf     i2c_tx__0return___byte, i2c_tx__0return___bit
        return  
        ; line_number = 449
        ;  return _false done

        ; delay after procedure statements=non-uniform





        ; Appending 12 delayed procedures to code bank 0
        ; buffer = 'rb2'
        ; line_number = 10
        ;info   10, 463
        ; procedure rb2_address_put
rb2_address_put:
        ; Last argument is sitting in W; save into argument variable
        movwf   rb2_address_put__address
        ; delay=4294967295
        ; line_number = 11
        ; argument address byte
rb2_address_put__address equ globals___0
        ; line_number = 12
        ;  returns byte

        ; # This procedure will cause the RoboBrick2 device with a module
        ; # address of {address} to be selected.  This routine will keep
        ; # trying until it get proper response.

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
        ; line_number = 18
        ;  _tx9d := _true
        ;info   18, 464
        bsf     __rp0___byte, __rp0___bit
        bsf     _tx9d___byte, _tx9d___bit
        ; line_number = 19
        ;  call rb2_byte_put(address)
        ;info   19, 466
        bcf     __rp0___byte, __rp0___bit
        movf    rb2_address_put__address,w
        call    rb2_byte_put
        ; line_number = 20
        ;  return rb2_byte_get() start
        ; line_number = 20
        ;info   20, 469
        call    rb2_byte_get
        return  
        ; line_number = 20
        ;  return rb2_byte_get() done


        ; delay after procedure statements=non-uniform




        ; line_number = 23
        ;info   23, 471
        ; procedure rb2_byte_put_get
rb2_byte_put_get:
        ; Last argument is sitting in W; save into argument variable
        movwf   rb2_byte_put_get__datum
        ; delay=4294967295
        ; line_number = 24
        ; argument datum byte
rb2_byte_put_get__datum equ globals___0+1
        ; line_number = 25
        ;  returns byte

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
        ; line_number = 27
        ;  call rb2_byte_put(datum)
        ;info   27, 472
        movf    rb2_byte_put_get__datum,w
        call    rb2_byte_put
        ; line_number = 28
        ;  return rb2_byte_get() start
        ; line_number = 28
        ;info   28, 474
        call    rb2_byte_get
        return  
        ; line_number = 28
        ;  return rb2_byte_get() done


        ; delay after procedure statements=non-uniform




        ; line_number = 31
        ;info   31, 476
        ; procedure rb2_byte_put
rb2_byte_put:
        ; Last argument is sitting in W; save into argument variable
        movwf   rb2_byte_put__datum
        ; delay=4294967295
        ; line_number = 32
        ; argument datum byte
rb2_byte_put__datum equ globals___0+2
        ; line_number = 33
        ;  returns_nothing
        ; line_number = 34
        ;  return_suppress

        ; # This procedure will send {datum} to the currently selected
        ; # RoboBrick2 module.  This procedure assumes that {_tx9d} is
        ; # properly set.  In all cases, {_tx9d} is cleared upon return
        ; # from this routine.  The bus echoed byte is swallowed by this
        ; # procedure.

        ; # Wait until transmit buffer is ready:
        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
        ; line_number = 43
        ;  while !_txif start
rb2_byte_put__1:
        ;info   43, 477
        ; =>bit_code_emit@symbol(): sym=_txif
        ; 1TEST: Single test with code in skip slot
        btfss   _txif___byte, _txif___bit
        ; line_number = 44
        ; do_nothing
        ;info   44, 478

        goto    rb2_byte_put__1
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 43
        ;  while !_txif done
        ; # Ship {datum} out, assume {_tx9d} is properly set:
        ; line_number = 47
        ;  _txreg := datum
        ;info   47, 479
        movf    rb2_byte_put__datum,w
        movwf   _txreg

        ; # Clear _{tx9d} for future:
        ; line_number = 50
        ;  _tx9d := _false
        ;info   50, 481
        bsf     __rp0___byte, __rp0___bit
        bcf     _tx9d___byte, _tx9d___bit

        ; # Run into the next procedure:


        ; delay after procedure statements=non-uniform
        bcf     __rp0___byte, __rp0___bit
        ; Return instruction suppressed by 'return_suppress'




        ; line_number = 55
        ;info   55, 484
        ; procedure rb2_byte_get
rb2_byte_get:
        ; arguments_none
        ; line_number = 57
        ;  returns byte

        ; # This procedure will get the next byte from the bus and return it
        ; # with {rb2_error} set to {_false}; otherwise, a time out occurs and
        ; # 0xfc is returned with {_rb2_error} set to {_true}.

        ; line_number = 63
        ;  local datum byte		# Temporary storage for data:
rb2_byte_get__datum equ globals___0+3

        ; # Check for 250 * 250 = 62500 tries:
        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
        ; line_number = 66
        ;  loop_exactly 250 start
        ;info   66, 484
rb2_byte_get__1 equ globals___0+39
        movlw   250
        movwf   rb2_byte_get__1
rb2_byte_get__2:
        ; line_number = 67
        ; loop_exactly 250 start
        ;info   67, 486
rb2_byte_get__3 equ globals___0+40
        movlw   250
        movwf   rb2_byte_get__3
rb2_byte_get__4:
        ; line_number = 68
        ; if _rcif start
        ;info   68, 488
        ; =>bit_code_emit@symbol(): sym=_rcif
        ; No 1TEST: true.size=10 false.size=0
        ; No 2TEST: true.size=10 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   _rcif___byte, _rcif___bit
        goto    rb2_byte_get__5
        ; # A byte is ready; fetch it:
        ; line_number = 70
        ;  datum := _rcreg
        ;info   70, 490
        movf    _rcreg,w
        movwf   rb2_byte_get__datum

        ; # Recover from any receive errors by toggling {_cren}:
        ; line_number = 73
        ;  if _oerr start
        ;info   73, 492
        ; =>bit_code_emit@symbol(): sym=_oerr
        ; 1TEST: Single test with code in skip slot
        btfsc   _oerr___byte, _oerr___bit
        ; line_number = 74
        ; _cren := _false
        ;info   74, 493
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 73
        ;  if _oerr done
        ; line_number = 75
        ; if _ferr start
        ;info   75, 494
        ; =>bit_code_emit@symbol(): sym=_ferr
        ; 1TEST: Single test with code in skip slot
        btfsc   _ferr___byte, _ferr___bit
        ; line_number = 76
        ; _cren := _false
        ;info   76, 495
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 75
        ; if _ferr done
        ; line_number = 77
        ; _cren := _true
        ;info   77, 496
        bsf     _cren___byte, _cren___bit

        ; # Return the result:
        ; line_number = 80
        ;  rb2_error := _false
        ;info   80, 497
        bcf     rb2_error___byte, rb2_error___bit
        ; line_number = 81
        ;  return datum start
        ; line_number = 81
        ;info   81, 498
        movf    rb2_byte_get__datum,w
        return  
        ; line_number = 81
        ;  return datum done

        ; Recombine size1 = 0 || size2 = 0
rb2_byte_get__5:
        ; line_number = 68
        ; if _rcif done
        ; line_number = 67
        ; loop_exactly 250 wrap-up
        decfsz  rb2_byte_get__3,f
        goto    rb2_byte_get__4
        ; line_number = 67
        ; loop_exactly 250 done
        ; line_number = 66
        ;  loop_exactly 250 wrap-up
        decfsz  rb2_byte_get__1,f
        goto    rb2_byte_get__2
        ; line_number = 66
        ;  loop_exactly 250 done
        ; # We timed out:
        ; line_number = 84
        ;  rb2_error := _true
        ;info   84, 504
        bsf     rb2_error___byte, rb2_error___bit
        ; line_number = 85
        ;  return 0xfc start
        ; line_number = 85
        ;info   85, 505
        retlw   252
        ; line_number = 85
        ;  return 0xfc done


        ; delay after procedure statements=non-uniform




        ; buffer = 'rb2bus'
        ; line_number = 57
        ;info   57, 506
        ; 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+6
        ; line_number = 69
        ;  local address_bit bit
rb2bus_select_wait__address_bit___byte equ globals___0+79
rb2bus_select_wait__address_bit___bit equ 3

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
        ; line_number = 71
        ;  rb2bus_error := _false
        ;info   71, 506
        bcf     rb2bus_error___byte, rb2bus_error___bit
        ; line_number = 72
        ;  while !rb2bus_selected start
rb2bus_select_wait__1:
        ;info   72, 507
        ; =>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, 509
        bsf     _adden___byte, _adden___bit
        ; # Wait for a byte to arrive.
        ; line_number = 75
        ;  while !_rcif start
rb2bus_select_wait__2:
        ;info   75, 510
        ; =>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, 512
        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, 514
        bcf     rb2bus_select_wait__address_bit___byte, rb2bus_select_wait__address_bit___bit
        ; line_number = 80
        ;  if _rx9d start
        ;info   80, 515
        ; =>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, 516
        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, 517
        movf    _rcreg,w
        movwf   rb2bus_select_wait__value

        ; # Clear any UART errors by toggling {_cren}:
        ; line_number = 85
        ;  if _oerr start
        ;info   85, 519
        ; =>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, 520
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 85
        ;  if _oerr done
        ; line_number = 87
        ; if _ferr start
        ;info   87, 521
        ; =>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, 522
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 87
        ; if _ferr done
        ; line_number = 89
        ; _cren := _true
        ;info   89, 523
        bsf     _cren___byte, _cren___bit

        ; line_number = 91
        ;  if address_bit start
        ;info   91, 524
        ; =>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, 526
        ; 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, 530
        bsf     rb2bus_selected___byte, rb2bus_selected___bit
        ; line_number = 94
        ;  call rb2bus_byte_put(rb2_ok)
        ;info   94, 531
        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, 535
        ; 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:X0=cu=>X0)
        ; line_number = 104
        ;  rb2bus_selected := _false
        ;info   104, 535
        bcf     rb2bus_selected___byte, rb2bus_selected___bit


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




        ; line_number = 107
        ;info   107, 537
        ; 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+7
        ; line_number = 120
        ;  local address_bit bit
rb2bus_byte_get__address_bit___byte equ globals___0+79
rb2bus_byte_get__address_bit___bit equ 4

        ; # 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:X0=cu=>X0)
        ; line_number = 123
        ;  if rb2bus_error start
        ;info   123, 537
        ; =>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, 538
        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, 539
        bcf     _adden___byte, _adden___bit
        ; line_number = 128
        ;  while !_rcif start
rb2bus_byte_get__1:
        ;info   128, 540
        ; =>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, 542
        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, 544
        bcf     rb2bus_byte_get__address_bit___byte, rb2bus_byte_get__address_bit___bit
        ; line_number = 133
        ;  if _rx9d start
        ;info   133, 545
        ; =>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, 546
        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, 547
        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, 549
        ; =>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, 550
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 139
        ;  if _oerr done
        ; line_number = 141
        ; if _ferr start
        ;info   141, 551
        ; =>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, 552
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 141
        ; if _ferr done
        ; line_number = 143
        ; _cren := _true
        ;info   143, 553
        bsf     _cren___byte, _cren___bit

        ; line_number = 145
        ;  if address_bit start
        ;info   145, 554
        ; =>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, 556
        ; 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, 560
        bsf     rb2bus_selected___byte, rb2bus_selected___bit
        ; line_number = 150
        ;  _adden := _false
        ;info   150, 561
        bcf     _adden___byte, _adden___bit

        ; line_number = 152
        ;  call rb2bus_byte_put(rb2_ok)
        ;info   152, 562
        movlw   165
        call    rb2bus_byte_put
        ; Recombine code1_bit_states != code2_bit_states
        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, 565
        bcf     rb2bus_selected___byte, rb2bus_selected___bit
        ; line_number = 156
        ;  _adden := _true
        ;info   156, 566
        bsf     _adden___byte, _adden___bit

rb2bus_byte_get__4:
        ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
        ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
        ; 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, 567
        bsf     rb2bus_error___byte, rb2bus_error___bit
        ; line_number = 160
        ;  value := 0
        ;info   160, 568
        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, 569
        movf    rb2bus_byte_get__value,w
        return  
        ; line_number = 163
        ;  return value done


        ; delay after procedure statements=non-uniform




        ; line_number = 166
        ;info   166, 571
        ; 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+8
        ; 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:X0=cu=>X0)
        ; line_number = 174
        ;  if !rb2bus_error start
        ;info   174, 572
        ; =>bit_code_emit@symbol(): sym=rb2bus_error
        ; No 1TEST: true.size=0 false.size=18
        ; No 2TEST: true.size=0 false.size=18
        ; 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, 574
        ; =>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, 576
        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, 578
        bcf     _adden___byte, _adden___bit
        ; line_number = 181
        ;  _tx9d := _false
        ;info   181, 579
        bsf     __rp0___byte, __rp0___bit
        bcf     _tx9d___byte, _tx9d___bit
        ; line_number = 182
        ;  _txreg := value
        ;info   182, 581
        bcf     __rp0___byte, __rp0___bit
        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, 584
        ; =>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, 586
        ; line_number = 189
        ;info   189, 586
        movf    _rcreg,w

        ; # Recover from any receive errors by toggling {_cren}:
        ; line_number = 192
        ;  if _oerr start
        ;info   192, 587
        ; =>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, 588
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 192
        ;  if _oerr done
        ; line_number = 194
        ; if _ferr start
        ;info   194, 589
        ; =>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, 590
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 194
        ; if _ferr done
        ; line_number = 196
        ; _cren := _true
        ;info   196, 591
        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, 593
        ; 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+11
        ; 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+9
        ; line_number = 207
        ;  local temp byte
rb2bus_command__temp equ globals___0+10

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
        ; line_number = 209
        ;  switch command & 7 start
        ;info   209, 594
        ; switch_before:(data:00=uu=>00 code:X0=cu=>X0) size=1
        movlw   rb2bus_command__13>>8
        movwf   __pclath
        movlw   7
        andwf   rb2bus_command__command,w
        ; switch after expression:(data:00=uu=>00 code:X0=cu=>X0)
        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, 608
        movf    rb2bus_address,w
        call    rb2bus_byte_put

        ; # Fetch new address:
        ; line_number = 216
        ;  new_address := rb2bus_byte_get()
        ;info   216, 610
        call    rb2bus_byte_get
        movwf   rb2bus_command__new_address
        ; line_number = 217
        ;  if new_address = 0 || new_address = rb2bus_address start
        ;info   217, 612
        ; 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, 619
        movlw   0
        call    rb2bus_byte_put
        ; line_number = 219
        ;  rb2bus_error := _true
        ;info   219, 621
        bsf     rb2bus_error___byte, rb2bus_error___bit
        ; line_number = 220
        ;  rb2bus_selected := _false
        ;info   220, 622
        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, 624
        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, 626
        call    rb2bus_byte_get
        movwf   rb2bus_command__temp
        ; line_number = 227
        ;  if temp != new_address start
        ;info   227, 628
        ; 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, 632
        movf    rb2bus_command__new_address,w
        call    rb2bus_eedata_write
        ; line_number = 233
        ;  temp := rb2bus_eedata_read()
        ;info   233, 634
        call    rb2bus_eedata_read
        movwf   rb2bus_command__temp
        ; line_number = 234
        ;  if temp = new_address start
        ;info   234, 636
        ; 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, 640
        movf    rb2bus_command__new_address,w
        movwf   rb2bus_address
        ; line_number = 236
        ;  call rb2bus_byte_put(rb2_ok)
        ;info   236, 642
        movlw   165
        goto    rb2bus_command__2
        ; 2GOTO: Starting code 2
rb2bus_command__1:
        ; line_number = 238
        ; call rb2bus_byte_put(0)
        ;info   238, 644
        movlw   0
rb2bus_command__2:
        ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
        ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
        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, 647
        movlw   0
        call    rb2bus_byte_put
        ; line_number = 229
        ;  rb2bus_error := _true
        ;info   229, 649
        bsf     rb2bus_error___byte, rb2bus_error___bit
        ; line_number = 230
        ;  rb2bus_selected := _false
        ;info   230, 650
        bcf     rb2bus_selected___byte, rb2bus_selected___bit
rb2bus_command__4:
        ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
        ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
        ; line_number = 227
        ;  if temp != new_address done
rb2bus_command__7:
        ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
        ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
        ; &&||: 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:X0=cu=>X0)
        ; 2GOTO: code2 final bitstates:(data:XX=cc=>XX code:X0=cu=>X0)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:X0=cu=>X0)
        ; 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, 652
        movlw   23
        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, 656
        movf    rb2bus_index,w
        call    id
        call    rb2bus_byte_put
        ; line_number = 243
        ;  rb2bus_index := rb2bus_index + 1
        ;info   243, 659
        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, 661
        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, 663
        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_pic16f88'
        ; line_number = 26
        ;info   26, 665
        ; procedure rb2bus_initialize
rb2bus_initialize:
        ; Last argument is sitting in W; save into argument variable
        movwf   rb2bus_initialize__address
        ; delay=4294967295
        ; line_number = 27
        ; argument address byte
rb2bus_initialize__address equ globals___0+12
        ; line_number = 28
        ;  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.

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
        ; line_number = 34
        ;  rb2bus_address := address
        ;info   34, 666
        movf    rb2bus_initialize__address,w
        movwf   rb2bus_address

        ; # Warm up the UART:
        ; line_number = 37
        ;  _trisb@2 := _true
        ;info   37, 668
rb2bus_initialize__select__1___byte equ _trisb
rb2bus_initialize__select__1___bit equ 2
        bsf     __rp0___byte, __rp0___bit
        bsf     rb2bus_initialize__select__1___byte, rb2bus_initialize__select__1___bit
        ; line_number = 38
        ;  _trisb@5 := _true
        ;info   38, 670
rb2bus_initialize__select__2___byte equ _trisb
rb2bus_initialize__select__2___bit equ 5
        bsf     rb2bus_initialize__select__2___byte, rb2bus_initialize__select__2___bit

        ; # Initialize the {_txsta} register:
        ; line_number = 41
        ;  _txsta := 0
        ;info   41, 671
        clrf    _txsta
        ; line_number = 42
        ;  _tx9 := _true
        ;info   42, 672
        bsf     _tx9___byte, _tx9___bit
        ; line_number = 43
        ;  _txen := _true
        ;info   43, 673
        bsf     _txen___byte, _txen___bit
        ; line_number = 44
        ;  _brgh := _true
        ;info   44, 674
        bsf     _brgh___byte, _brgh___bit

        ; # Initialize the {_rcsta} register:
        ; line_number = 47
        ;  _rcsta := 0
        ;info   47, 675
        bcf     __rp0___byte, __rp0___bit
        clrf    _rcsta
        ; line_number = 48
        ;  _spen := _true
        ;info   48, 677
        bsf     _spen___byte, _spen___bit
        ; line_number = 49
        ;  _rx9 := _true
        ;info   49, 678
        bsf     _rx9___byte, _rx9___bit
        ; line_number = 50
        ;  _cren := _true
        ;info   50, 679
        bsf     _cren___byte, _cren___bit
        ; #_adden := _true
        ; line_number = 52
        ;  _adden := _false
        ;info   52, 680
        bcf     _adden___byte, _adden___bit

        ; # Set up the baud rate generator:
        ; line_number = 55
        ;  _spbrg := spbrg_500k
        ;info   55, 681
        movlw   1
        bsf     __rp0___byte, __rp0___bit
        movwf   _spbrg

        ; line_number = 57
        ;  rb2bus_selected := _false
        ;info   57, 684
        bcf     __rp0___byte, __rp0___bit
        bcf     rb2bus_selected___byte, rb2bus_selected___bit
        ; line_number = 58
        ;  rb2bus_error := _false
        ;info   58, 686
        bcf     rb2bus_error___byte, rb2bus_error___bit
        ; line_number = 59
        ;  rb2bus_index := 0
        ;info   59, 687
        clrf    rb2bus_index


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




        ; line_number = 64
        ;info   64, 689
        ; 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+13
        ; line_number = 72
        ;  local temp2 byte
rb2bus_eedata_read__temp2 equ globals___0+14

        ; # Read the first byte (the address):
        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:X0=cu=>X0)
        ; line_number = 75
        ;  _eecon1 := 0
        ;info   75, 689
        bsf     __rp0___byte, __rp0___bit
        bsf     __rp1___byte, __rp1___bit
        clrf    _eecon1
        ; line_number = 76
        ;  _eeadr := rb2bus_eedata_address
        ;info   76, 692
        movlw   254
        bcf     __rp0___byte, __rp0___bit
        movwf   _eeadr
        ; line_number = 77
        ;  _rd := _true
        ;info   77, 695
        bsf     __rp0___byte, __rp0___bit
        bsf     _rd___byte, _rd___bit
        ; line_number = 78
        ;  temp1 := _eedata
        ;info   78, 697
        bcf     __rp0___byte, __rp0___bit
        movf    _eedata,w
        bcf     __rp1___byte, __rp1___bit
        movwf   rb2bus_eedata_read__temp1

        ; # Read the second byte (the 1'z complement)
        ; line_number = 81
        ;  _eeadr := _eeadr + 1
        ;info   81, 701
        bsf     __rp1___byte, __rp1___bit
        incf    _eeadr,f
        ; line_number = 82
        ;  _rd := _true
        ;info   82, 703
        bsf     __rp0___byte, __rp0___bit
        bsf     _rd___byte, _rd___bit
        ; line_number = 83
        ;  temp2 := _eedata
        ;info   83, 705
        bcf     __rp0___byte, __rp0___bit
        movf    _eedata,w
        bcf     __rp1___byte, __rp1___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, 709
        ; 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, 713
        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, 715
        retlw   0
        ; line_number = 91
        ;  return 0 done


        ; delay after procedure statements=non-uniform




        ; line_number = 94
        ;info   94, 716
        ; 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+15
        ; 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:X0=cu=>X0)
        ; line_number = 102
        ;  _eecon1 := 0
        ;info   102, 717
        bsf     __rp0___byte, __rp0___bit
        bsf     __rp1___byte, __rp1___bit
        clrf    _eecon1
        ; line_number = 103
        ;  _eeadr := rb2bus_eedata_address
        ;info   103, 720
        movlw   254
        bcf     __rp0___byte, __rp0___bit
        movwf   _eeadr
        ; line_number = 104
        ;  _eedata := address
        ;info   104, 723
        bcf     __rp1___byte, __rp1___bit
        movf    rb2bus_eedata_write__address,w
        bsf     __rp1___byte, __rp1___bit
        movwf   _eedata

        ; # Write 2 bytes ({address} followed by {address}^0xff):
        ; line_number = 107
        ;  loop_exactly 2 start
        ;info   107, 727
rb2bus_eedata_write__1 equ globals___0+41
        movlw   2
        bcf     __rp1___byte, __rp1___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, 730
        bsf     __rp0___byte, __rp0___bit
        bsf     __rp1___byte, __rp1___bit
        bsf     _wren___byte, _wren___bit
        ; line_number = 112
        ;  _gie := _false
        ;info   112, 733
        bcf     _gie___byte, _gie___bit
        ; line_number = 113
        ;  _eecon2 := 0x55
        ;info   113, 734
        movlw   85
        bcf     __rp1___byte, __rp1___bit
        movwf   _eecon2
        ; line_number = 114
        ;  _eecon2 := 0xaa
        ;info   114, 737
        movlw   170
        movwf   _eecon2
        ; # Start the write:
        ; line_number = 116
        ;  _wr := _true
        ;info   116, 739
        bsf     __rp1___byte, __rp1___bit
        bsf     _wr___byte, _wr___bit

        ; # Wait for write to complete:
        ; line_number = 119
        ;  while _wr start
rb2bus_eedata_write__3:
        ;info   119, 741
        ; =>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, 742

        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, 743
        bcf     _wren___byte, _wren___bit

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

        bcf     __rp1___byte, __rp1___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




        ; Code bank 1; Start address: 2048; End address: 4095
        org     2048
        ; Configuration bits
        ; address = 0x2007, fill = 0x0
        ; cp = off (0x2000)
        ; ccpmx = ccp1_rb0 (0x1000)
        ; debug = off (0x800)
        ; wrt = on (0x0)
        ; cpd = off (0x100)
        ; lvp = off (0x0)
        ; boden = off (0x0)
        ; mclre = off (0x0)
        ; pwrte = off (0x8)
        ; wdte = off (0x0)
        ; fosc = hs (0x2)
        ; 14602 = 0x390a
        ; 8199 = 0x2007
        __config 8199, 14602
        ; Configuration bits
        ; address = 0x2008, fill = 0x3ffc
        ; ieso = off (0x0)
        ; fcmen = off (0x0)
        ; 16380 = 0x3ffc
        ; 8200 = 0x2008
        __config 8200, 16380
        ; 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=42 Bits=8 Available=37
        ; Region="globals___1" Address=160" Size=80 Bytes=0 Bits=0 Available=80
        ; Region="globals___2" Address=272" Size=96 Bytes=0 Bits=0 Available=96
        ; Region="globals___3" Address=400" Size=96 Bytes=0 Bits=0 Available=96
        end
