        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) 2006-2007 by Wayne C. Gramlich.
        ; # All rights reserved.

        ; # This is a boot loader that resides in high memory for
        ; # loading programs into low memory.

        ; # This module is using a PIC16F876:
        ; buffer = 'imu1'
        ; line_number = 10
        ; library _pic16f876a entered

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

        ; buffer = '_pic16f876a'
        ; line_number = 6
        ; processor pic16f876a
        ; line_number = 7
        ; configure_address 0x2007
        ; line_number = 8
        ;  configure_fill 0x01030
        ; line_number = 9
        ;  configure_option cp: off = 0x2000
        ; line_number = 10
        ;  configure_option cp: on = 0x0000
        ; line_number = 11
        ;  configure_option debug: on = 0x000
        ; line_number = 12
        ;  configure_option debug: off = 0x800
        ; line_number = 13
        ;  configure_option wrt: on = 0x000
        ; line_number = 14
        ;  configure_option wrt: off = 0x300
        ; line_number = 15
        ;  configure_option cpd: on = 0x000
        ; line_number = 16
        ;  configure_option cpd: off = 0x100
        ; line_number = 17
        ;  configure_option lvp: on = 0x80
        ; line_number = 18
        ;  configure_option lvp: off = 0x00
        ; line_number = 19
        ;  configure_option boren: on = 0x40
        ; line_number = 20
        ;  configure_option boren: off = 0x00
        ; line_number = 21
        ;  configure_option pwrte: on = 0
        ; line_number = 22
        ;  configure_option pwrte: off = 8
        ; line_number = 23
        ;  configure_option wdte: on = 4
        ; line_number = 24
        ;  configure_option wdte: off = 0
        ; line_number = 25
        ;  configure_option fosc: rc = 3
        ; line_number = 26
        ;  configure_option fosc: hs = 2
        ; line_number = 27
        ;  configure_option fosc: xt = 1
        ; line_number = 28
        ;  configure_option fosc: lp = 0
        ; line_number = 29
        ;  code_bank 0x0 : 0x7ff
        ; line_number = 30
        ;  code_bank 0x800 : 0xfff
        ; line_number = 31
        ;  code_bank 0x1000 : 0x17ff
        ; line_number = 32
        ;  code_bank 0x1800 : 0x1fff
        ; line_number = 33
        ;  data_bank 0x0 : 0x7f
        ; line_number = 34
        ;  data_bank 0x80 : 0xff
        ; line_number = 35
        ;  data_bank 0x100 : 0x17f
        ; line_number = 36
        ;  data_bank 0x180 : 0x1ff
        ; line_number = 37
        ;  global_region 0x20 : 0x6f
        ; line_number = 38
        ;  global_region 0xa0 : 0xef
        ; line_number = 39
        ;  global_region 0x110 : 0x16f
        ; line_number = 40
        ;  global_region 0x190 : 0x1ff
        ; line_number = 41
        ;  shared_region 0x70 : 0x7f
        ; line_number = 42
        ;  interrupts_possible
        ; line_number = 43
        ;  packages pdip = 28
        ; line_number = 44
        ;  pin mclr, vpp, thv, mclr_unused
        ; line_number = 45
        ; pin_bindings pdip = 1
        ; line_number = 46
        ; pin ra0_in, ra0_out, an0, ra0_unused
        ; line_number = 47
        ; pin_bindings pdip = 2
        ; line_number = 48
        ;  bind_to _porta@0
        ; line_number = 49
        ;  or_if ra0_in _trisa 1
        ; line_number = 50
        ;  or_if ra0_in _adcon1 7
        ; line_number = 51
        ;  or_if ra0_in _adcon0 0
        ; line_number = 52
        ;  or_if ra0_in _cmcon 7
        ; line_number = 53
        ;  or_if ra0_out _trisa 0
        ; line_number = 54
        ;  or_if ra0_out _adcon1 7
        ; line_number = 55
        ;  or_if ra0_out _adcon0 0
        ; line_number = 56
        ;  or_if ra0_out _cmcon 7
        ; line_number = 57
        ;  or_if ra0_unused _trisa 1
        ; line_number = 58
        ;  or_if ra0_unused _adcon1 7
        ; line_number = 59
        ;  or_if ra0_unused _adcon0 0
        ; line_number = 60
        ;  or_if ra0_unused _cmcon 7
        ; line_number = 61
        ; pin ra1_in, ra1_out, an1, ra1_unused
        ; line_number = 62
        ; pin_bindings pdip = 3
        ; line_number = 63
        ;  bind_to _porta@1
        ; line_number = 64
        ;  or_if ra1_in _trisa 2
        ; line_number = 65
        ;  or_if ra1_in _adcon1 7
        ; line_number = 66
        ;  or_if ra1_in _adcon0 0
        ; line_number = 67
        ;  or_if ra1_in _cmcon 7
        ; line_number = 68
        ;  or_if ra1_out _trisa 0
        ; line_number = 69
        ;  or_if ra1_out _adcon1 7
        ; line_number = 70
        ;  or_if ra1_out _adcon0 0
        ; line_number = 71
        ;  or_if ra1_out _cmcon 7
        ; line_number = 72
        ;  or_if ra1_unused _trisa 2
        ; line_number = 73
        ;  or_if ra1_unused _adcon1 7
        ; line_number = 74
        ;  or_if ra1_unused _adcon0 0
        ; line_number = 75
        ;  or_if ra1_unused _cmcon 7
        ; line_number = 76
        ; pin ra2_in, ra2_out, an2, vref_minus, ra2_unused
        ; line_number = 77
        ; pin_bindings pdip = 4
        ; line_number = 78
        ;  bind_to _porta@2
        ; line_number = 79
        ;  or_if ra2_in _trisa 4
        ; line_number = 80
        ;  or_if ra2_in _adcon1 7
        ; line_number = 81
        ;  or_if ra2_in _adcon0 0
        ; line_number = 82
        ;  or_if ra2_in _cmcon 7
        ; line_number = 83
        ;  or_if ra2_out _trisa 0
        ; line_number = 84
        ;  or_if ra2_out _adcon1 7
        ; line_number = 85
        ;  or_if ra2_out _adcon0 0
        ; line_number = 86
        ;  or_if ra2_out _cmcon 7
        ; line_number = 87
        ;  or_if ra2_unused _trisa 4
        ; line_number = 88
        ;  or_if ra2_unused _adcon1 7
        ; line_number = 89
        ;  or_if ra2_unused _adcon0 0
        ; line_number = 90
        ;  or_if ra2_unused _cmcon 7
        ; line_number = 91
        ; pin ra3_in, ra3_out, an3, vrev_plus, ra3_unused
        ; line_number = 92
        ; pin_bindings pdip = 5
        ; line_number = 93
        ;  bind_to _porta@3
        ; line_number = 94
        ;  or_if ra3_in _trisa 8
        ; line_number = 95
        ;  or_if ra3_in _adcon1 7
        ; line_number = 96
        ;  or_if ra3_in _adcon0 0
        ; line_number = 97
        ;  or_if ra3_in _cmcon 7
        ; line_number = 98
        ;  or_if ra3_out _trisa 0
        ; line_number = 99
        ;  or_if ra3_out _adcon1 7
        ; line_number = 100
        ;  or_if ra3_out _adcon0 0
        ; line_number = 101
        ;  or_if ra3_out _cmcon 7
        ; line_number = 102
        ;  or_if ra3_unused _trisa 8
        ; line_number = 103
        ;  or_if ra3_unused _adcon1 7
        ; line_number = 104
        ;  or_if ra3_unused _adcon0 0
        ; line_number = 105
        ;  or_if ra3_unused _cmcon 7
        ; line_number = 106
        ; pin ra4_in, ra4_out, t0cki, ra4_unused
        ; line_number = 107
        ; pin_bindings pdip = 6
        ; line_number = 108
        ;  bind_to _porta@4
        ; line_number = 109
        ;  or_if ra4_in _trisa 16
        ; line_number = 110
        ;  or_if ra4_in _adcon1 7
        ; line_number = 111
        ;  or_if ra4_in _adcon0 0
        ; line_number = 112
        ;  or_if ra4_out _trisa 0
        ; line_number = 113
        ;  or_if ra4_out _adcon1 7
        ; line_number = 114
        ;  or_if ra4_out _adcon0 0
        ; line_number = 115
        ;  or_if ra4_unused _trisa 16
        ; line_number = 116
        ;  or_if ra4_unused _adcon1 7
        ; line_number = 117
        ;  or_if ra4_unused _adcon0 0
        ; line_number = 118
        ; pin ra5_in, ra5_out, an4, ra5_unused
        ; line_number = 119
        ; pin_bindings pdip = 7
        ; line_number = 120
        ;  bind_to _porta@5
        ; line_number = 121
        ;  or_if ra5_in _trisa 32
        ; line_number = 122
        ;  or_if ra5_in _adcon1 7
        ; line_number = 123
        ;  or_if ra5_in _adcon1 0
        ; line_number = 124
        ;  or_if ra5_out _trisa 0
        ; line_number = 125
        ;  or_if ra5_out _adcon1 7
        ; line_number = 126
        ;  or_if ra5_out _adcon0 0
        ; line_number = 127
        ;  or_if ra5_unused _trisa 32
        ; line_number = 128
        ;  or_if ra5_unused _adcon1 7
        ; line_number = 129
        ;  or_if ra5_unused _adcon1 0
        ; line_number = 130
        ; pin vss, ground
        ; line_number = 131
        ; pin_bindings pdip = 8
        ; line_number = 132
        ; pin osc1, clkin
        ; line_number = 133
        ; pin_bindings pdip = 9
        ; line_number = 134
        ; pin osc2, clkout
        ; line_number = 135
        ; pin_bindings pdip = 10
        ; line_number = 136
        ; pin rc0_in, rc0_out, t1oso, t1cki, rc0_unused
        ; line_number = 137
        ; pin_bindings pdip = 11
        ; line_number = 138
        ;  bind_to _portc@0
        ; line_number = 139
        ;  or_if rc0_in _trisc 1
        ; line_number = 140
        ;  or_if rc0_in _adcon1 7
        ; line_number = 141
        ;  or_if rc0_in _adcon0 0
        ; line_number = 142
        ;  or_if rc0_out _trisc 0
        ; line_number = 143
        ;  or_if rc0_out _adcon1 7
        ; line_number = 144
        ;  or_if rc0_out _adcon0 0
        ; line_number = 145
        ;  or_if rc0_unused _trisc 1
        ; line_number = 146
        ;  or_if rc0_unused _adcon1 7
        ; line_number = 147
        ;  or_if rc0_unused _adcon0 0
        ; line_number = 148
        ; pin rc1_in, rc1_out, t1osi, ccp2, rc1_unused
        ; line_number = 149
        ; pin_bindings pdip = 12
        ; line_number = 150
        ;  bind_to _portc@1
        ; line_number = 151
        ;  or_if rc1_in _trisc 2
        ; line_number = 152
        ;  or_if rc1_in _adcon1 7
        ; line_number = 153
        ;  or_if rc1_in _adcon0 0
        ; line_number = 154
        ;  or_if rc1_out _trisc 0
        ; line_number = 155
        ;  or_if rc1_out _adcon1 7
        ; line_number = 156
        ;  or_if rc1_out _adcon0 0
        ; line_number = 157
        ;  or_if rc1_unused _trisc 2
        ; line_number = 158
        ;  or_if rc1_unused _adcon1 7
        ; line_number = 159
        ;  or_if rc1_unused _adcon0 0
        ; line_number = 160
        ; pin rc2_in, rc2_out, ccp1, rc2_unused
        ; line_number = 161
        ; pin_bindings pdip = 13
        ; line_number = 162
        ;  bind_to _portc@2
        ; line_number = 163
        ;  or_if rc2_in _trisc 4
        ; line_number = 164
        ;  or_if rc2_in _adcon1 7
        ; line_number = 165
        ;  or_if rc2_in _adcon0 0
        ; line_number = 166
        ;  or_if rc2_out _trisc 0
        ; line_number = 167
        ;  or_if rc2_out _adcon1 7
        ; line_number = 168
        ;  or_if rc2_out _adcon0 0
        ; line_number = 169
        ;  or_if rc2_unused _trisc 4
        ; line_number = 170
        ;  or_if rc2_unused _adcon1 7
        ; line_number = 171
        ;  or_if rc2_unused _adcon0 0
        ; line_number = 172
        ; pin rc3_in, rc3_out, sck_master, sck_slave, scl, rc3_unused
        ; line_number = 173
        ; pin_bindings pdip = 14
        ; line_number = 174
        ;  bind_to _portc@3
        ; line_number = 175
        ;  or_if rc3_in _trisc 8
        ; line_number = 176
        ;  or_if rc3_in _adcon1 7
        ; line_number = 177
        ;  or_if rc3_in _adcon0 0
        ; line_number = 178
        ;  or_if rc3_out _trisc 0
        ; line_number = 179
        ;  or_if rc3_out _adcon1 7
        ; line_number = 180
        ;  or_if rc3_out _adcon0 0
        ; line_number = 181
        ;  or_if sck_slave _trisc 8
        ; line_number = 182
        ;  or_if sck_slave _adcon1 7
        ; line_number = 183
        ;  or_if sck_slave _adcon0 0
        ; line_number = 184
        ;  or_if sck_master _trisc 0
        ; line_number = 185
        ;  or_if sck_master _adcon1 7
        ; line_number = 186
        ;  or_if sck_master _adcon0 0
        ; line_number = 187
        ;  or_if rc3_unused _trisc 8
        ; line_number = 188
        ;  or_if rc3_unused _adcon1 7
        ; line_number = 189
        ;  or_if rc3_unused _adcon0 0
        ; line_number = 190
        ; pin rc4_in, rc4_out, sdi, sda, rc4_unused
        ; line_number = 191
        ; pin_bindings pdip = 15
        ; line_number = 192
        ;  bind_to _portc@4
        ; line_number = 193
        ;  or_if rc4_in _trisc 16
        ; line_number = 194
        ;  or_if rc4_in _adcon1 7
        ; line_number = 195
        ;  or_if rc4_in _adcon0 0
        ; line_number = 196
        ;  or_if rc4_out _trisc 0
        ; line_number = 197
        ;  or_if rc4_out _adcon1 7
        ; line_number = 198
        ;  or_if rc4_out _adcon0 0
        ; line_number = 199
        ;  or_if sdi _trisc 16
        ; line_number = 200
        ;  or_if sdi _adcon1 7
        ; line_number = 201
        ;  or_if sdi _adcon0 0
        ; line_number = 202
        ;  or_if rc4_unused _trisc 16
        ; line_number = 203
        ;  or_if rc4_unused _adcon1 7
        ; line_number = 204
        ;  or_if rc4_unused _adcon0 0
        ; line_number = 205
        ; pin rc5_in, rc5_out, sdo, rc5_unused
        ; line_number = 206
        ; pin_bindings pdip = 16
        ; line_number = 207
        ;  bind_to _portc@5
        ; line_number = 208
        ;  or_if rc5_in _trisc 32
        ; line_number = 209
        ;  or_if rc5_in _adcon1 7
        ; line_number = 210
        ;  or_if rc5_in _adcon0 0
        ; line_number = 211
        ;  or_if rc5_out _trisc 0
        ; line_number = 212
        ;  or_if rc5_out _adcon1 7
        ; line_number = 213
        ;  or_if rc5_out _adcon0 0
        ; line_number = 214
        ;  or_if sdo _trisc 0
        ; line_number = 215
        ;  or_if sdo _adcon1 7
        ; line_number = 216
        ;  or_if sdo _adcon0 0
        ; line_number = 217
        ;  or_if rc5_unused _trisc 32
        ; line_number = 218
        ;  or_if rc5_unused _adcon1 7
        ; line_number = 219
        ;  or_if rc5_unused _adcon0 0
        ; line_number = 220
        ; pin rc6_in, rc6_out, tx, ck, rc6_unused
        ; line_number = 221
        ; pin_bindings pdip = 17
        ; line_number = 222
        ;  bind_to _portc@6
        ; line_number = 223
        ;  or_if rc6_in _trisc 64
        ; line_number = 224
        ;  or_if rc6_in _adcon1 7
        ; line_number = 225
        ;  or_if rc6_in _adcon0 0
        ; line_number = 226
        ;  or_if rc6_out _trisc 0
        ; line_number = 227
        ;  or_if rc6_out _adcon1 7
        ; line_number = 228
        ;  or_if rc6_out _adcon0 0
        ; line_number = 229
        ;  or_if tx _trisc 0
        ; line_number = 230
        ;  or_if tx _adcon1 7
        ; line_number = 231
        ;  or_if tx _adcon0 0
        ; line_number = 232
        ;  or_if rc6_unused _trisc 64
        ; line_number = 233
        ;  or_if rc6_unused _adcon1 7
        ; line_number = 234
        ;  or_if rc6_unused _adcon0 0
        ; line_number = 235
        ; pin rc7_in, rc7_out, rx, dt, rc7_unused
        ; line_number = 236
        ; pin_bindings pdip = 18
        ; line_number = 237
        ;  bind_to _portc@7
        ; line_number = 238
        ;  or_if rc7_in _trisc 128
        ; line_number = 239
        ;  or_if rc7_in _adcon1 7
        ; line_number = 240
        ;  or_if rc7_in _adcon0 0
        ; line_number = 241
        ;  or_if rx _trisc 128
        ; line_number = 242
        ;  or_if rx _adcon1 7
        ; line_number = 243
        ;  or_if rx _adcon0 0
        ; line_number = 244
        ;  or_if rc7_out _trisc 0
        ; line_number = 245
        ;  or_if rc7_out _adcon1 7
        ; line_number = 246
        ;  or_if rc7_out _adcon0 0
        ; line_number = 247
        ;  or_if rc7_unused _trisc 128
        ; line_number = 248
        ;  or_if rc7_unused _adcon1 7
        ; line_number = 249
        ;  or_if rc7_unused _adcon0 0
        ; line_number = 250
        ; pin vss2, ground2
        ; line_number = 251
        ; pin_bindings pdip = 19
        ; line_number = 252
        ; pin vdd, power_supply
        ; line_number = 253
        ; pin_bindings pdip = 20
        ; line_number = 254
        ; pin rb0_in, rb0_out, int, rb0_unused
        ; line_number = 255
        ; pin_bindings pdip = 21
        ; line_number = 256
        ;  bind_to _portb@0
        ; line_number = 257
        ;  or_if rb0_in _trisb 1
        ; line_number = 258
        ;  or_if rb0_in _adcon1 7
        ; line_number = 259
        ;  or_if rb0_in _adcon0 0
        ; line_number = 260
        ;  or_if rb0_out _trisb 0
        ; line_number = 261
        ;  or_if rb0_out _adcon1 7
        ; line_number = 262
        ;  or_if rb0_out _adcon0 0
        ; line_number = 263
        ;  or_if rb0_unused _trisb 1
        ; line_number = 264
        ;  or_if rb0_unused _adcon1 7
        ; line_number = 265
        ;  or_if rb0_unused _adcon0 0
        ; line_number = 266
        ; pin rb1_in, rb1_out, rb1_unused
        ; line_number = 267
        ; pin_bindings pdip = 22
        ; line_number = 268
        ;  bind_to _portb@1
        ; line_number = 269
        ;  or_if rb1_in _trisb 2
        ; line_number = 270
        ;  or_if rb1_in _adcon1 7
        ; line_number = 271
        ;  or_if rb1_in _adcon0 0
        ; line_number = 272
        ;  or_if rb1_out _trisb 0
        ; line_number = 273
        ;  or_if rb1_out _adcon1 7
        ; line_number = 274
        ;  or_if rb1_out _adcon0 0
        ; line_number = 275
        ;  or_if rb1_unused _trisb 2
        ; line_number = 276
        ;  or_if rb1_unused _adcon1 7
        ; line_number = 277
        ;  or_if rb1_unused _adcon0 0
        ; line_number = 278
        ; pin rb2_in, rb2_out, rb2_unused
        ; line_number = 279
        ; pin_bindings pdip = 23
        ; line_number = 280
        ;  bind_to _portb@2
        ; line_number = 281
        ;  or_if rb2_in _trisb 4
        ; line_number = 282
        ;  or_if rb2_in _adcon1 7
        ; line_number = 283
        ;  or_if rb2_in _adcon0 0
        ; line_number = 284
        ;  or_if rb2_out _trisb 0
        ; line_number = 285
        ;  or_if rb2_out _adcon1 7
        ; line_number = 286
        ;  or_if rb2_out _adcon0 0
        ; line_number = 287
        ;  or_if rb2_unused _trisb 4
        ; line_number = 288
        ;  or_if rb2_unused _adcon1 7
        ; line_number = 289
        ;  or_if rb2_unused _adcon0 0
        ; line_number = 290
        ; pin rb3_in, rb3_out, pgm, rb3_unused
        ; line_number = 291
        ; pin_bindings pdip = 24
        ; line_number = 292
        ;  bind_to _portb@3
        ; line_number = 293
        ;  or_if rb3_in _trisb 8
        ; line_number = 294
        ;  or_if rb3_in _adcon1 7
        ; line_number = 295
        ;  or_if rb3_in _adcon0 0
        ; line_number = 296
        ;  or_if rb3_out _trisb 0
        ; line_number = 297
        ;  or_if rb3_out _adcon1 7
        ; line_number = 298
        ;  or_if rb3_out _adcon0 0
        ; line_number = 299
        ;  or_if rb3_unused _trisb 8
        ; line_number = 300
        ;  or_if rb3_unused _adcon1 7
        ; line_number = 301
        ;  or_if rb3_unused _adcon0 0
        ; line_number = 302
        ; pin rb4_in, rb4_out, rb4_unused
        ; line_number = 303
        ; pin_bindings pdip = 25
        ; line_number = 304
        ;  bind_to _portb@4
        ; line_number = 305
        ;  or_if rb4_in _trisb 16
        ; line_number = 306
        ;  or_if rb4_in _adcon1 7
        ; line_number = 307
        ;  or_if rb4_in _adcon0 0
        ; line_number = 308
        ;  or_if rb4_out _trisb 0
        ; line_number = 309
        ;  or_if rb4_out _adcon1 7
        ; line_number = 310
        ;  or_if rb4_out _adcon0 0
        ; line_number = 311
        ;  or_if rb4_unused _trisb 16
        ; line_number = 312
        ;  or_if rb4_unused _adcon1 7
        ; line_number = 313
        ;  or_if rb4_unused _adcon0 0
        ; line_number = 314
        ; pin rb5_in, rb5_out, rb5_unused
        ; line_number = 315
        ; pin_bindings pdip = 26
        ; line_number = 316
        ;  bind_to _portb@5
        ; line_number = 317
        ;  or_if rb5_in _trisb 32
        ; line_number = 318
        ;  or_if rb5_in _adcon1 7
        ; line_number = 319
        ;  or_if rb5_in _adcon0 0
        ; line_number = 320
        ;  or_if rb5_out _trisb 0
        ; line_number = 321
        ;  or_if rb5_out _adcon1 7
        ; line_number = 322
        ;  or_if rb5_out _adcon0 0
        ; line_number = 323
        ;  or_if rb5_unused _trisb 32
        ; line_number = 324
        ;  or_if rb5_unused _adcon1 7
        ; line_number = 325
        ;  or_if rb5_unused _adcon0 0
        ; line_number = 326
        ; pin rb6_in, rb6_out, pgc, rb6_unused
        ; line_number = 327
        ; pin_bindings pdip = 27
        ; line_number = 328
        ;  bind_to _portb@6
        ; line_number = 329
        ;  or_if rb6_in _trisb 64
        ; line_number = 330
        ;  or_if rb6_in _adcon1 7
        ; line_number = 331
        ;  or_if rb6_in _adcon0 0
        ; line_number = 332
        ;  or_if rb6_out _trisb 0
        ; line_number = 333
        ;  or_if rb6_out _adcon1 7
        ; line_number = 334
        ;  or_if rb6_out _adcon0 0
        ; line_number = 335
        ;  or_if rb6_unused _trisb 64
        ; line_number = 336
        ;  or_if rb6_unused _adcon1 7
        ; line_number = 337
        ;  or_if rb6_unused _adcon0 0
        ; line_number = 338
        ; pin rb7_in, rb7_out, pgd, rb7_unused
        ; line_number = 339
        ; pin_bindings pdip = 28
        ; line_number = 340
        ;  bind_to _portb@7
        ; line_number = 341
        ;  or_if rb7_in _trisb 128
        ; line_number = 342
        ;  or_if rb7_in _adcon1 7
        ; line_number = 343
        ;  or_if rb7_in _adcon0 0
        ; line_number = 344
        ;  or_if rb7_out _trisb 0
        ; line_number = 345
        ;  or_if rb7_out _adcon1 7
        ; line_number = 346
        ;  or_if rb7_out _adcon0 0
        ; line_number = 347
        ;  or_if rb7_unused _trisb 128
        ; line_number = 348
        ;  or_if rb7_unused _adcon1 7
        ; line_number = 349
        ;  or_if rb7_unused _adcon0 0


        ; # Register and pin definitions:

        ; line_number = 356
        ; library _pic16f87x entered

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

        ; # Common declarations for PIC16F87x series microcontrollers:

        ; buffer = '_pic16f87x'
        ; line_number = 8
        ; 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 = '_pic16f87x'
        ; line_number = 8
        ; library _standard exited

        ; # Register and pin definitions:

        ; # Bank 0:

        ; line_number = 14
        ; register _indf = 
_indf equ 0

        ; line_number = 16
        ; register _tmr0 = 
_tmr0 equ 1

        ; line_number = 18
        ; register _pcl = 
_pcl equ 2

        ; line_number = 20
        ; register _status = 
_status equ 3
        ; line_number = 21
        ; bind _irp = _status@7
_irp___byte equ _status
_irp___bit equ 7
        ; line_number = 22
        ; bind _rp1 = _status@6
_rp1___byte equ _status
_rp1___bit equ 6
        ; line_number = 23
        ; bind _rp0 = _status@5
_rp0___byte equ _status
_rp0___bit equ 5
        ; line_number = 24
        ; bind _to = _status@4
_to___byte equ _status
_to___bit equ 4
        ; line_number = 25
        ; bind _pd = _status@3
_pd___byte equ _status
_pd___bit equ 3
        ; line_number = 26
        ; bind _z = _status@2
_z___byte equ _status
_z___bit equ 2
        ; line_number = 27
        ; bind _dc = _status@1
_dc___byte equ _status
_dc___bit equ 1
        ; line_number = 28
        ; bind _c = _status@0
_c___byte equ _status
_c___bit equ 0

        ; line_number = 30
        ; register _fsr = 
_fsr equ 4

        ; line_number = 32
        ; register _porta = 
_porta equ 5

        ; line_number = 34
        ; register _portb = 
_portb equ 6

        ; line_number = 36
        ; register _portc = 
_portc equ 7

        ; line_number = 38
        ; register _pclath = 
_pclath equ 10

        ; line_number = 40
        ; register _intcon = 
_intcon equ 11
        ; line_number = 41
        ; bind _gie = _intcon@7
_gie___byte equ _intcon
_gie___bit equ 7
        ; line_number = 42
        ; bind _peie = _intcon@6
_peie___byte equ _intcon
_peie___bit equ 6
        ; line_number = 43
        ; bind _t0ie = _intcon@5
_t0ie___byte equ _intcon
_t0ie___bit equ 5
        ; line_number = 44
        ; bind _inte = _intcon@4
_inte___byte equ _intcon
_inte___bit equ 4
        ; line_number = 45
        ; bind _rbie = _intcon@3
_rbie___byte equ _intcon
_rbie___bit equ 3
        ; line_number = 46
        ; bind _t0if = _intcon@2
_t0if___byte equ _intcon
_t0if___bit equ 2
        ; line_number = 47
        ; bind _intf = _intcon@1
_intf___byte equ _intcon
_intf___bit equ 1
        ; line_number = 48
        ; bind _rbf = _intcon@0
_rbf___byte equ _intcon
_rbf___bit equ 0

        ; line_number = 50
        ; register _pir1 = 
_pir1 equ 12
        ; line_number = 51
        ; bind _pspif = _pir1@7
_pspif___byte equ _pir1
_pspif___bit equ 7
        ; line_number = 52
        ; bind _adif = _pir1@6
_adif___byte equ _pir1
_adif___bit equ 6
        ; line_number = 53
        ; bind _rcif = _pir1@5
_rcif___byte equ _pir1
_rcif___bit equ 5
        ; line_number = 54
        ; bind _txif = _pir1@4
_txif___byte equ _pir1
_txif___bit equ 4
        ; line_number = 55
        ; bind _sspif = _pir1@3
_sspif___byte equ _pir1
_sspif___bit equ 3
        ; line_number = 56
        ; bind _ccpif = _pir1@2
_ccpif___byte equ _pir1
_ccpif___bit equ 2
        ; line_number = 57
        ; bind _tmr2if = _pir1@1
_tmr2if___byte equ _pir1
_tmr2if___bit equ 1
        ; line_number = 58
        ; bind _tmr1if = _pir1@0
_tmr1if___byte equ _pir1
_tmr1if___bit equ 0

        ; line_number = 60
        ; register _pir2 = 
_pir2 equ 13
        ; line_number = 61
        ; bind _eeif = _pir2@4
_eeif___byte equ _pir2
_eeif___bit equ 4
        ; line_number = 62
        ; bind _bclif = _pir2@3
_bclif___byte equ _pir2
_bclif___bit equ 3
        ; line_number = 63
        ; bind _ccp2if = _pir2@0
_ccp2if___byte equ _pir2
_ccp2if___bit equ 0

        ; line_number = 65
        ; register _tmr1l = 
_tmr1l equ 14

        ; line_number = 67
        ; register _tmr1h = 
_tmr1h equ 15

        ; line_number = 69
        ; register _t1con = 
_t1con equ 16
        ; line_number = 70
        ; bind _t1ckps1 = _t1con@5
_t1ckps1___byte equ _t1con
_t1ckps1___bit equ 5
        ; line_number = 71
        ; bind _t1ckps0 = _t1con@4
_t1ckps0___byte equ _t1con
_t1ckps0___bit equ 4
        ; line_number = 72
        ; bind _t1oscen = _t1con@3
_t1oscen___byte equ _t1con
_t1oscen___bit equ 3
        ; line_number = 73
        ; bind _t1sync = _t1con@2
_t1sync___byte equ _t1con
_t1sync___bit equ 2
        ; line_number = 74
        ; bind _tmr1cs = _t1con@1
_tmr1cs___byte equ _t1con
_tmr1cs___bit equ 1
        ; line_number = 75
        ; bind _tmr1on = _t1con@0
_tmr1on___byte equ _t1con
_tmr1on___bit equ 0

        ; line_number = 77
        ; register _tmr2 = 
_tmr2 equ 17

        ; line_number = 79
        ; register _t2con = 
_t2con equ 18
        ; line_number = 80
        ; bind _toutps3 = _t2con@6
_toutps3___byte equ _t2con
_toutps3___bit equ 6
        ; line_number = 81
        ; bind _toutps2 = _t2con@5
_toutps2___byte equ _t2con
_toutps2___bit equ 5
        ; line_number = 82
        ; bind _toutps1 = _t2con@4
_toutps1___byte equ _t2con
_toutps1___bit equ 4
        ; line_number = 83
        ; bind _toutps0 = _t2con@3
_toutps0___byte equ _t2con
_toutps0___bit equ 3
        ; line_number = 84
        ; bind _tmr2on = _t2con@2
_tmr2on___byte equ _t2con
_tmr2on___bit equ 2
        ; line_number = 85
        ; bind _t2ckps1 = _t2con@1
_t2ckps1___byte equ _t2con
_t2ckps1___bit equ 1
        ; line_number = 86
        ; bind _t2ckps0 = _t2con@0
_t2ckps0___byte equ _t2con
_t2ckps0___bit equ 0

        ; line_number = 88
        ; register _sspbuf = 
_sspbuf equ 19

        ; line_number = 90
        ; register _sspcon = 
_sspcon equ 20
        ; line_number = 91
        ; bind _wcol = _sspcon@7
_wcol___byte equ _sspcon
_wcol___bit equ 7
        ; line_number = 92
        ; bind _sspov = _sspcon@6
_sspov___byte equ _sspcon
_sspov___bit equ 6
        ; line_number = 93
        ; bind _sspen = _sspcon@5
_sspen___byte equ _sspcon
_sspen___bit equ 5
        ; line_number = 94
        ; bind _ckp = _sspcon@4
_ckp___byte equ _sspcon
_ckp___bit equ 4
        ; line_number = 95
        ; bind _sspm3 = _sspcon@3
_sspm3___byte equ _sspcon
_sspm3___bit equ 3
        ; line_number = 96
        ; bind _sspm2 = _sspcon@2
_sspm2___byte equ _sspcon
_sspm2___bit equ 2
        ; line_number = 97
        ; bind _sspm1 = _sspcon@1
_sspm1___byte equ _sspcon
_sspm1___bit equ 1
        ; line_number = 98
        ; bind _sspm0 = _sspcon@0
_sspm0___byte equ _sspcon
_sspm0___bit equ 0

        ; line_number = 100
        ; register _ccpr1l = 
_ccpr1l equ 21

        ; line_number = 102
        ; register _ccpr1h = 
_ccpr1h equ 22

        ; line_number = 104
        ; register _ccp1con = 
_ccp1con equ 23
        ; line_number = 105
        ; bind _ccp1x = _ccp1con@5
_ccp1x___byte equ _ccp1con
_ccp1x___bit equ 5
        ; line_number = 106
        ; bind _ccp1y = _ccp1con@4
_ccp1y___byte equ _ccp1con
_ccp1y___bit equ 4
        ; line_number = 107
        ; bind _ccp1m3 = _ccp1con@3
_ccp1m3___byte equ _ccp1con
_ccp1m3___bit equ 3
        ; line_number = 108
        ; bind _ccp1m2 = _ccp1con@2
_ccp1m2___byte equ _ccp1con
_ccp1m2___bit equ 2
        ; line_number = 109
        ; bind _ccp1m1 = _ccp1con@1
_ccp1m1___byte equ _ccp1con
_ccp1m1___bit equ 1
        ; line_number = 110
        ; bind _ccp1m0 = _ccp1con@0
_ccp1m0___byte equ _ccp1con
_ccp1m0___bit equ 0

        ; line_number = 112
        ; register _rcsta = 
_rcsta equ 24
        ; line_number = 113
        ; bind _spen = _rcsta@7
_spen___byte equ _rcsta
_spen___bit equ 7
        ; line_number = 114
        ; bind _rx9 = _rcsta@6
_rx9___byte equ _rcsta
_rx9___bit equ 6
        ; line_number = 115
        ; bind _sren = _rcsta@5
_sren___byte equ _rcsta
_sren___bit equ 5
        ; line_number = 116
        ; bind _cren = _rcsta@4
_cren___byte equ _rcsta
_cren___bit equ 4
        ; line_number = 117
        ; bind _adden = _rcsta@3
_adden___byte equ _rcsta
_adden___bit equ 3
        ; line_number = 118
        ; bind _ferr = _rcsta@2
_ferr___byte equ _rcsta
_ferr___bit equ 2
        ; line_number = 119
        ; bind _oerr = _rcsta@1
_oerr___byte equ _rcsta
_oerr___bit equ 1
        ; line_number = 120
        ; bind _rx9d = _rcsta@0
_rx9d___byte equ _rcsta
_rx9d___bit equ 0

        ; line_number = 122
        ; register _txreg = 
_txreg equ 25

        ; line_number = 124
        ; register _rcreg = 
_rcreg equ 26

        ; line_number = 126
        ; register _ccpr2l = 
_ccpr2l equ 27

        ; line_number = 128
        ; register _ccpr2h = 
_ccpr2h equ 28

        ; line_number = 130
        ; register _ccp2con = 
_ccp2con equ 29
        ; line_number = 131
        ; bind _ccp2x = _ccp2con@5
_ccp2x___byte equ _ccp2con
_ccp2x___bit equ 5
        ; line_number = 132
        ; bind _ccp2y = _ccp2con@4
_ccp2y___byte equ _ccp2con
_ccp2y___bit equ 4
        ; line_number = 133
        ; bind _ccp2m3 = _ccp2con@3
_ccp2m3___byte equ _ccp2con
_ccp2m3___bit equ 3
        ; line_number = 134
        ; bind _ccp2m2 = _ccp2con@2
_ccp2m2___byte equ _ccp2con
_ccp2m2___bit equ 2
        ; line_number = 135
        ; bind _ccp2m1 = _ccp2con@1
_ccp2m1___byte equ _ccp2con
_ccp2m1___bit equ 1
        ; line_number = 136
        ; bind _ccp2m0 = _ccp2con@0
_ccp2m0___byte equ _ccp2con
_ccp2m0___bit equ 0

        ; line_number = 138
        ; register _adresh = 
_adresh equ 30

        ; line_number = 140
        ; register _adcon0 = 
_adcon0 equ 31
        ; line_number = 141
        ; bind _adcs1 = _adcon0@7
_adcs1___byte equ _adcon0
_adcs1___bit equ 7
        ; line_number = 142
        ; bind _adcs0 = _adcon0@6
_adcs0___byte equ _adcon0
_adcs0___bit equ 6
        ; line_number = 143
        ; bind _chs2 = _adcon0@5
_chs2___byte equ _adcon0
_chs2___bit equ 5
        ; line_number = 144
        ; bind _chs1 = _adcon0@4
_chs1___byte equ _adcon0
_chs1___bit equ 4
        ; line_number = 145
        ; bind _chs0 = _adcon0@3
_chs0___byte equ _adcon0
_chs0___bit equ 3
        ; line_number = 146
        ; bind _go_done = _adcon0@2
_go_done___byte equ _adcon0
_go_done___bit equ 2
        ; line_number = 147
        ; bind _adon = _adcon0@0
_adon___byte equ _adcon0
_adon___bit equ 0

        ; # Bank 1:

        ; line_number = 151
        ; register _option_reg = 
_option_reg equ 129
        ; line_number = 152
        ; bind _rbpu = _option_reg@7
_rbpu___byte equ _option_reg
_rbpu___bit equ 7
        ; line_number = 153
        ; bind _intedg = _option_reg@6
_intedg___byte equ _option_reg
_intedg___bit equ 6
        ; line_number = 154
        ; bind _t0cs = _option_reg@5
_t0cs___byte equ _option_reg
_t0cs___bit equ 5
        ; line_number = 155
        ; bind _t0se = _option_reg@4
_t0se___byte equ _option_reg
_t0se___bit equ 4
        ; line_number = 156
        ; bind _psa = _option_reg@3
_psa___byte equ _option_reg
_psa___bit equ 3
        ; line_number = 157
        ; bind _ps2 = _option_reg@2
_ps2___byte equ _option_reg
_ps2___bit equ 2
        ; line_number = 158
        ; bind _ps1 = _option_reg@1
_ps1___byte equ _option_reg
_ps1___bit equ 1
        ; line_number = 159
        ; bind _ps0 = _option_reg@0
_ps0___byte equ _option_reg
_ps0___bit equ 0

        ; line_number = 161
        ; register _trisa = 
_trisa equ 133

        ; line_number = 163
        ; register _trisb = 
_trisb equ 134

        ; line_number = 165
        ; register _trisc = 
_trisc equ 135

        ; line_number = 167
        ; register _pie1 = 
_pie1 equ 140
        ; line_number = 168
        ; bind _pspie = _pie1@7
_pspie___byte equ _pie1
_pspie___bit equ 7
        ; line_number = 169
        ; bind _adie = _pie1@6
_adie___byte equ _pie1
_adie___bit equ 6
        ; line_number = 170
        ; bind _rcie = _pie1@5
_rcie___byte equ _pie1
_rcie___bit equ 5
        ; line_number = 171
        ; bind _txie = _pie1@4
_txie___byte equ _pie1
_txie___bit equ 4
        ; line_number = 172
        ; bind _sspie = _pie1@3
_sspie___byte equ _pie1
_sspie___bit equ 3
        ; line_number = 173
        ; bind _ccp1ie = _pie1@2
_ccp1ie___byte equ _pie1
_ccp1ie___bit equ 2
        ; line_number = 174
        ; bind _tmr2ie = _pie1@1
_tmr2ie___byte equ _pie1
_tmr2ie___bit equ 1
        ; line_number = 175
        ; bind _tmr1ie = _pie1@0
_tmr1ie___byte equ _pie1
_tmr1ie___bit equ 0

        ; line_number = 177
        ; register _pie2 = 
_pie2 equ 141
        ; line_number = 178
        ; bind _eeie = _pie2@4
_eeie___byte equ _pie2
_eeie___bit equ 4
        ; line_number = 179
        ; bind _bcie = _pie2@3
_bcie___byte equ _pie2
_bcie___bit equ 3
        ; line_number = 180
        ; bind _ccp2ie = _pie2@0
_ccp2ie___byte equ _pie2
_ccp2ie___bit equ 0

        ; line_number = 182
        ; register _pcon = 
_pcon equ 142
        ; line_number = 183
        ; bind _por = _pcon@1
_por___byte equ _pcon
_por___bit equ 1
        ; line_number = 184
        ; bind _bor = _pcon@0
_bor___byte equ _pcon
_bor___bit equ 0

        ; line_number = 186
        ; register _sspcon2 = 
_sspcon2 equ 145
        ; line_number = 187
        ; bind _gcen = _sspcon2@7
_gcen___byte equ _sspcon2
_gcen___bit equ 7
        ; line_number = 188
        ; bind _ackstat = _sspcon2@6
_ackstat___byte equ _sspcon2
_ackstat___bit equ 6
        ; line_number = 189
        ; bind _ackdt = _sspcon2@5
_ackdt___byte equ _sspcon2
_ackdt___bit equ 5
        ; line_number = 190
        ; bind _acken = _sspcon2@4
_acken___byte equ _sspcon2
_acken___bit equ 4
        ; line_number = 191
        ; bind _rcen = _sspcon2@3
_rcen___byte equ _sspcon2
_rcen___bit equ 3
        ; line_number = 192
        ; bind _pen = _sspcon2@2
_pen___byte equ _sspcon2
_pen___bit equ 2
        ; line_number = 193
        ; bind _rsen = _sspcon2@1
_rsen___byte equ _sspcon2
_rsen___bit equ 1
        ; line_number = 194
        ; bind _sen = _sspcon2@0
_sen___byte equ _sspcon2
_sen___bit equ 0

        ; line_number = 196
        ; register _pr2 = 
_pr2 equ 146

        ; line_number = 198
        ; register _sspadd = 
_sspadd equ 147

        ; line_number = 200
        ; register _sspstat = 
_sspstat equ 148
        ; line_number = 201
        ; bind _smp = _sspstat@7
_smp___byte equ _sspstat
_smp___bit equ 7
        ; line_number = 202
        ; bind _cke = _sspstat@6
_cke___byte equ _sspstat
_cke___bit equ 6
        ; line_number = 203
        ; bind _da = _sspstat@5
_da___byte equ _sspstat
_da___bit equ 5
        ; line_number = 204
        ; bind _p = _sspstat@4
_p___byte equ _sspstat
_p___bit equ 4
        ; line_number = 205
        ; bind _s = _sspstat@3
_s___byte equ _sspstat
_s___bit equ 3
        ; line_number = 206
        ; bind _rw = _sspstat@2
_rw___byte equ _sspstat
_rw___bit equ 2
        ; line_number = 207
        ; bind _ua = _sspstat@1
_ua___byte equ _sspstat
_ua___bit equ 1
        ; line_number = 208
        ; bind _bf = _sspstat@0
_bf___byte equ _sspstat
_bf___bit equ 0

        ; line_number = 210
        ; register _txsta = 
_txsta equ 152
        ; line_number = 211
        ; bind _csrc = _txsta@7
_csrc___byte equ _txsta
_csrc___bit equ 7
        ; line_number = 212
        ; bind _tx9 = _txsta@6
_tx9___byte equ _txsta
_tx9___bit equ 6
        ; line_number = 213
        ; bind _txen = _txsta@5
_txen___byte equ _txsta
_txen___bit equ 5
        ; line_number = 214
        ; bind _sync = _txsta@4
_sync___byte equ _txsta
_sync___bit equ 4
        ; line_number = 215
        ; bind _brgh = _txsta@2
_brgh___byte equ _txsta
_brgh___bit equ 2
        ; line_number = 216
        ; bind _trmt = _txsta@1
_trmt___byte equ _txsta
_trmt___bit equ 1
        ; line_number = 217
        ; bind _tx9d = _txsta@0
_tx9d___byte equ _txsta
_tx9d___bit equ 0

        ; line_number = 219
        ; register _spbrg = 
_spbrg equ 153

        ; line_number = 221
        ; register _cmcon = 
_cmcon equ 156
        ; line_number = 222
        ; bind _c2out = _cmcon@7
_c2out___byte equ _cmcon
_c2out___bit equ 7
        ; line_number = 223
        ; bind _c1out = _cmcon@6
_c1out___byte equ _cmcon
_c1out___bit equ 6
        ; line_number = 224
        ; bind _c2inv = _cmcon@5
_c2inv___byte equ _cmcon
_c2inv___bit equ 5
        ; line_number = 225
        ; bind _c1inv = _cmcon@4
_c1inv___byte equ _cmcon
_c1inv___bit equ 4
        ; line_number = 226
        ; bind _cis = _cmcon@3
_cis___byte equ _cmcon
_cis___bit equ 3
        ; line_number = 227
        ; bind _cm2 = _cmcon@2
_cm2___byte equ _cmcon
_cm2___bit equ 2
        ; line_number = 228
        ; bind _cm1 = _cmcon@1
_cm1___byte equ _cmcon
_cm1___bit equ 1
        ; line_number = 229
        ; bind _cm0 = _cmcon@0
_cm0___byte equ _cmcon
_cm0___bit equ 0

        ; line_number = 231
        ; register _cvrcon = 
_cvrcon equ 157
        ; line_number = 232
        ; bind _cvren = _cvrcon@7
_cvren___byte equ _cvrcon
_cvren___bit equ 7
        ; line_number = 233
        ; bind _cvroe = _cvrcon@6
_cvroe___byte equ _cvrcon
_cvroe___bit equ 6
        ; line_number = 234
        ; bind _cvrr = _cvrcon@5
_cvrr___byte equ _cvrcon
_cvrr___bit equ 5
        ; line_number = 235
        ; bind _cvr3 = _cvrcon@3
_cvr3___byte equ _cvrcon
_cvr3___bit equ 3
        ; line_number = 236
        ; bind _cvr2 = _cvrcon@2
_cvr2___byte equ _cvrcon
_cvr2___bit equ 2
        ; line_number = 237
        ; bind _cvr1 = _cvrcon@1
_cvr1___byte equ _cvrcon
_cvr1___bit equ 1
        ; line_number = 238
        ; bind _cvr0 = _cvrcon@0
_cvr0___byte equ _cvrcon
_cvr0___bit equ 0

        ; line_number = 240
        ; register _adresl = 
_adresl equ 158

        ; line_number = 242
        ; register _adcon1 = 
_adcon1 equ 159
        ; line_number = 243
        ; bind _adfm = _adcon1@7
_adfm___byte equ _adcon1
_adfm___bit equ 7
        ; line_number = 244
        ; bind _pcfg3 = _adcon1@3
_pcfg3___byte equ _adcon1
_pcfg3___bit equ 3
        ; line_number = 245
        ; bind _pcfg2 = _adcon1@2
_pcfg2___byte equ _adcon1
_pcfg2___bit equ 2
        ; line_number = 246
        ; bind _pcfg1 = _adcon1@1
_pcfg1___byte equ _adcon1
_pcfg1___bit equ 1
        ; line_number = 247
        ; bind _pcfg0 = _adcon1@0
_pcfg0___byte equ _adcon1
_pcfg0___bit equ 0

        ; # Bank 2:

        ; line_number = 251
        ; register _eedata = 
_eedata equ 268

        ; line_number = 253
        ; register _eeadr = 
_eeadr equ 269

        ; line_number = 255
        ; register _eedath = 
_eedath equ 270

        ; line_number = 257
        ; register _eeadrh = 
_eeadrh equ 271

        ; # Bank 3:

        ; line_number = 261
        ; register _eecon1 = 
_eecon1 equ 396
        ; line_number = 262
        ; bind _eepgd = _eecon1@7
_eepgd___byte equ _eecon1
_eepgd___bit equ 7
        ; line_number = 263
        ; bind _wrerr = _eecon1@3
_wrerr___byte equ _eecon1
_wrerr___bit equ 3
        ; line_number = 264
        ; bind _wren = _eecon1@2
_wren___byte equ _eecon1
_wren___bit equ 2
        ; line_number = 265
        ; bind _wr = _eecon1@1
_wr___byte equ _eecon1
_wr___bit equ 1
        ; line_number = 266
        ; bind _rd = _eecon1@0
_rd___byte equ _eecon1
_rd___bit equ 0

        ; line_number = 268
        ; register _eecon2 = 
_eecon2 equ 397


        ; buffer = '_pic16f876a'
        ; line_number = 356
        ; library _pic16f87x exited


        ; buffer = 'imu1'
        ; line_number = 10
        ; library _pic16f876a exited

        ; # The resonator is running at 16MHz:
        ; line_number = 13
        ; 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 = 'imu1'
        ; line_number = 13
        ; library clock16mhz exited
        ; line_number = 14
        ; constant microsecond = 4
microsecond equ 4

        ; line_number = 16
        ; library_bank 3

        ; # The library of bus access initialization routines for use by the PIC16F767:
        ; line_number = 19
        ; library rb2bus_pic16f876 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.

        ; # Global variables used by {rb2bus} library and {rb2bus_picXXXX} libraries:
        ; buffer = 'rb2bus_pic16f876'
        ; line_number = 15
        ; library rb2bus_globals entered

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

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

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


        ; buffer = 'rb2bus_pic16f876'
        ; line_number = 15
        ; library rb2bus_globals exited

        ; # All other bus access procedures are defined in the {rb2bus} library
        ; # which is accessed below:

        ; # 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 = 25
        ; constant baud_rate_500k = 500000
baud_rate_500k equ 500000
        ; line_number = 26
        ; constant spbrg_500k = clock_rate / (16 * baud_rate_500k) - 1
spbrg_500k equ 1

        ; Delaying code generation for procedure  rb2bus_initialize
        ; line_number = 64
        ; 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 = 'imu1'
        ; line_number = 19
        ; library rb2bus_pic16f876 exited

        ; # The library of bus access routines:
        ; line_number = 22
        ; library rb2bus entered

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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


        ; buffer = 'rb2bus'
        ; line_number = 54
        ; library rb2_constants exited
        ; line_number = 55
        ; library rb2bus_globals Skipped (duplicate)

        ; 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 = 'imu1'
        ; line_number = 22
        ; library rb2bus 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 = 28
        ; package pdip
        ; line_number = 29
        ; pin 1 = mclr
        ; line_number = 30
        ;  pin 2 = ra0_unused
        ; line_number = 31
        ;  pin 3 = ra1_unused
        ; line_number = 32
        ;  pin 4 = ra2_unused
        ; line_number = 33
        ;  pin 5 = ra3_unused
        ; line_number = 34
        ;  pin 6 = ra4_unused
        ; line_number = 35
        ;  pin 7 = ra5_unused
        ; line_number = 36
        ;  pin 8 = ground
        ; line_number = 37
        ;  pin 9 = osc1
        ; line_number = 38
        ;  pin 10 = osc2
        ; line_number = 39
        ;  pin 11 = rc0_unused
        ; line_number = 40
        ;  pin 12 = rc1_unused
        ; line_number = 41
        ;  pin 13 = rc2_unused
        ; line_number = 42
        ;  pin 14 = rc3_unused
        ; line_number = 43
        ;  pin 15 = rc4_unused
        ; line_number = 44
        ;  pin 16 = rc5_unused
        ; line_number = 45
        ;  pin 17 = tx
        ; line_number = 46
        ;  pin 18 = rx
        ; line_number = 47
        ;  pin 19 = ground2
        ; line_number = 48
        ;  pin 20 = power_supply
        ; line_number = 49
        ;  pin 21 = rb0_unused
        ; line_number = 50
        ;  pin 22 = rb1_unused
        ; line_number = 51
        ;  pin 23 = rb2_unused
        ; line_number = 52
        ;  pin 24 = rb3_unused
        ; line_number = 53
        ;  pin 25 = rb4_unused
        ; line_number = 54
        ;  pin 26 = rb5_unused
        ; line_number = 55
        ;  pin 27 = rb6_unused
        ; line_number = 56
        ;  pin 28 = rb7_unused

        ; line_number = 58
        ; origin 0
        org     0

        ; line_number = 60
        ;info   60, 0
        ; procedure start
start:
        ; arguments_none
        ; line_number = 62
        ;  returns_nothing
        ; line_number = 63
        ;  return_suppress

        ; # We will call main, but never return; this causes the
        ; # compiler to set the code banks properly.
        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
        ; line_number = 67
        ;  call main()
        ;info   67, 0
        bsf     __cb0___byte, __cb0___bit
        bsf     __cb1___byte, __cb1___bit
        call    main


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




        ; #origin 4

        ; #procedure interrupt
        ; #    arguments_none
        ; #    returns_nothing#
        ; #
        ; #    do_nothing

        ; #origin 0x800
        ; line_number = 79
        ; origin 0x1e00
        ; Code bank 1; Start address: 2048; End address: 4095
        org     2048
        ; Code bank 2; Start address: 4096; End address: 6143
        org     4096
        ; Code bank 3; Start address: 6144; End address: 8191
        org     6144
        org     7680

        ; line_number = 81
        ;info   81, 7680
        ; procedure main
main:
        ; Initialize some registers
        clrf    _adcon0
        movlw   7
        bsf     __rp0___byte, __rp0___bit
        movwf   _adcon1
        movlw   7
        movwf   _cmcon
        movlw   63
        movwf   _trisa
        movlw   255
        movwf   _trisb
        movlw   191
        movwf   _trisc
        ; arguments_none
        ; line_number = 83
        ;  returns_nothing

        ; line_number = 85
        ;  local address_high byte
main__address_high equ globals___0+12
        ; line_number = 86
        ;  local address_low byte
main__address_low equ globals___0+13
        ; line_number = 87
        ;  local command byte
main__command equ globals___0+14
        ; line_number = 88
        ;  local count byte
main__count equ globals___0+15
        ; line_number = 89
        ;  local id_index byte
main__id_index equ globals___0+16

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>01 code:11=uu=>11)
        ; line_number = 91
        ;  call rb2bus_initialize(28)
        ;info   91, 7692
        movlw   28
        bcf     __rp0___byte, __rp0___bit
        call    rb2bus_initialize

        ; line_number = 93
        ;  id_index := 0
        ;info   93, 7695
        clrf    main__id_index

        ; line_number = 95
        ;  loop_forever start
main__1:
        ; # Make sure that we have been selected:
        ; line_number = 97
        ;  rb2bus_error := _true
        ;info   97, 7696
        bsf     rb2bus_error___byte, rb2bus_error___bit
        ; line_number = 98
        ;  while rb2bus_error start
main__2:
        ;info   98, 7697
        ; =>bit_code_emit@symbol(): sym=rb2bus_error
        ; No 1TEST: true.size=4 false.size=0
        ; No 2TEST: true.size=4 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   rb2bus_error___byte, rb2bus_error___bit
        goto    main__3
        ; line_number = 99
        ; call rb2bus_select_wait()
        ;info   99, 7699
        call    rb2bus_select_wait
        ; line_number = 100
        ;  command := rb2bus_byte_get()
        ;info   100, 7700
        call    rb2bus_byte_get
        movwf   main__command

        goto    main__2
        ; Recombine size1 = 0 || size2 = 0
main__3:
        ; line_number = 98
        ;  while rb2bus_error done
        ; line_number = 102
        ; switch command >> 6 start
        ;info   102, 7703
        ; switch_before:(data:00=uu=>00 code:11=uu=>11) size=7
        movlw   main__30>>8
        movwf   __pclath
main__31 equ globals___0+17
        swapf   main__command,w
        movwf   main__31
        rrf     main__31,f
        rrf     main__31,w
        andlw   3
        ; switch after expression:(data:00=uu=>00 code:11=uu=>11)
        addlw   main__30
        movwf   __pcl
        ; page_group 4
main__30:
        goto    main__28
        goto    main__32
        goto    main__32
        goto    main__29
        ; line_number = 103
        ; case 0
main__28:
        ; # 00xx xxxx:
        ; line_number = 105
        ;  switch (command >> 3) & 7 start
        ;info   105, 7716
        ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
        ; line_number = 106
        ; case_maximum 7
        movlw   main__15>>8
        movwf   __pclath
main__16 equ globals___0+17
        rrf     main__command,w
        movwf   main__16
        rrf     main__16,f
        rrf     main__16,w
        andlw   7
        ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
        addlw   main__15
        movwf   __pcl
        ; page_group 8
main__15:
        goto    main__14
        goto    main__17
        goto    main__17
        goto    main__17
        goto    main__17
        goto    main__17
        goto    main__17
        goto    main__17
        ; line_number = 107
        ; case 0
main__14:
        ; #: 0000 0xxx:
        ; line_number = 109
        ;  switch command & 7 start
        ;info   109, 7733
        ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
        ; line_number = 110
        ; case_maximum 7
        movlw   main__12>>8
        movwf   __pclath
        movlw   7
        andwf   main__command,w
        ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
        addlw   main__12
        movwf   __pcl
        ; page_group 8
main__12:
        goto    main__6
        goto    main__7
        goto    main__8
        goto    main__9
        goto    main__10
        goto    main__11
        goto    main__13
        goto    main__13
        ; line_number = 111
        ; case 0
main__6:
        ; #: 0000 0000 (Set Memory Address):
        ; line_number = 113
        ;  address_high := rb2bus_byte_get()
        ;info   113, 7747
        call    rb2bus_byte_get
        movwf   main__address_high
        ; line_number = 114
        ;  address_low := rb2bus_byte_get()
        ;info   114, 7749
        call    rb2bus_byte_get
        movwf   main__address_low
        goto    main__13
        ; line_number = 115
        ; case 1
main__7:
        ; #: 0000 0001 (Read Program Memory):
        ; line_number = 117
        ;  count := rb2bus_byte_get()
        ;info   117, 7752
        call    rb2bus_byte_get
        movwf   main__count

        ; line_number = 119
        ;  loop_exactly count start
        ;info   119, 7754
main__4 equ globals___0+17
        movf    main__count,w
        movwf   main__4
main__5:
        ; line_number = 120
        ; _eeadrh := address_high
        ;info   120, 7756
        movf    main__address_high,w
        bsf     __rp1___byte, __rp1___bit
        movwf   _eeadrh
        ; line_number = 121
        ;  _eeadr := address_low
        ;info   121, 7759
        bcf     __rp1___byte, __rp1___bit
        movf    main__address_low,w
        bsf     __rp1___byte, __rp1___bit
        movwf   _eeadr

        ; # Read the word:
        ; line_number = 124
        ;  _eepgd := _true
        ;info   124, 7763
        bsf     __rp0___byte, __rp0___bit
        bsf     _eepgd___byte, _eepgd___bit
        ; line_number = 125
        ;  _rd := _true
        ;info   125, 7765
        bsf     _rd___byte, _rd___bit

        ; # The next two instructions are *ignored*:
        ; line_number = 128
        ;  assemble
        ;info   128, 7766
        ; line_number = 129
        ;info   129, 7766
        nop     
        ; Statement 0 of 3 delay = 9
        ; line_number = 130
        ;info   130, 7767
        nop     
        ; Statement 1 of 3 delay = 10

        ; Statement 2 of 3 delay = 10
        ; # Ship the results back:
        ; line_number = 133
        ;  call rb2bus_byte_put(_eedath)
        ;info   133, 7768
        bcf     __rp0___byte, __rp0___bit
        movf    _eedath,w
        bcf     __rp1___byte, __rp1___bit
        call    rb2bus_byte_put
        ; line_number = 134
        ;  call rb2bus_byte_put(_eedata)
        ;info   134, 7772
        bsf     __rp1___byte, __rp1___bit
        movf    _eedata,w
        bcf     __rp1___byte, __rp1___bit
        call    rb2bus_byte_put

        ; # Increment the address
        ; line_number = 137
        ;  address_low := address_low + 1
        ;info   137, 7776
        incf    main__address_low,f
        ; line_number = 138
        ;  if _z start
        ;info   138, 7777
        ; =>bit_code_emit@symbol(): sym=_z
        ; 1TEST: Single test with code in skip slot
        btfsc   _z___byte, _z___bit
        ; line_number = 139
        ; address_high := address_high + 1
        ;info   139, 7778
        incf    main__address_high,f
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 138
        ;  if _z done
        ; line_number = 119
        ;  loop_exactly count wrap-up
        decfsz  main__4,f
        goto    main__5
        ; line_number = 119
        ;  loop_exactly count done
        ; # Let them know we are done:
        ; line_number = 141
        ;  call rb2bus_byte_put(0x5c)
        ;info   141, 7781
        movlw   92
        call    rb2bus_byte_put
        goto    main__13
        ; line_number = 142
        ; case 2
main__8:
        ; # 0000 0010 (Set Program Memory):
        ; line_number = 144
        ;  _eeadrh := address_high
        ;info   144, 7784
        movf    main__address_high,w
        bsf     __rp1___byte, __rp1___bit
        movwf   _eeadrh
        ; line_number = 145
        ;  _eeadr := address_low
        ;info   145, 7787
        bcf     __rp1___byte, __rp1___bit
        movf    main__address_low,w
        bsf     __rp1___byte, __rp1___bit
        movwf   _eeadr
        ; line_number = 146
        ;  _eedath := rb2bus_byte_get()
        ;info   146, 7791
        bcf     __rp1___byte, __rp1___bit
        call    rb2bus_byte_get
        bsf     __rp1___byte, __rp1___bit
        movwf   _eedath
        ; line_number = 147
        ;  _eedata := rb2bus_byte_get()
        ;info   147, 7795
        bcf     __rp1___byte, __rp1___bit
        call    rb2bus_byte_get
        bsf     __rp1___byte, __rp1___bit
        movwf   _eedata

        ; #_eeadrh := 0
        ; #_eeadr := 0x80
        ; #_eedath := 0x12
        ; #_eedata := 0x34

        ; line_number = 154
        ;  _eecon1 := 0
        ;info   154, 7799
        bsf     __rp0___byte, __rp0___bit
        clrf    _eecon1
        ; line_number = 155
        ;  _eepgd := _true
        ;info   155, 7801
        bsf     _eepgd___byte, _eepgd___bit
        ; line_number = 156
        ;  _wren := _true
        ;info   156, 7802
        bsf     _wren___byte, _wren___bit

        ; # Make sure that WRT is on in configuration word:

        ; # This code must not be interrupted:
        ; line_number = 161
        ;  _gie := _false
        ;info   161, 7803
        bcf     _gie___byte, _gie___bit
        ; line_number = 162
        ;  _eecon2 := 0x55
        ;info   162, 7804
        movlw   85
        movwf   _eecon2
        ; line_number = 163
        ;  _eecon2 := 0xaa
        ;info   163, 7806
        movlw   170
        movwf   _eecon2
        ; line_number = 164
        ;  _wr := _true
        ;info   164, 7808
        bsf     _wr___byte, _wr___bit
        ; line_number = 165
        ;  assemble
        ;info   165, 7809
        ; line_number = 166
        ;info   166, 7809
        nop     
        ; line_number = 167
        ;info   167, 7810
        nop     
        ; line_number = 168
        ; _wren := _false
        ;info   168, 7811
        bcf     _wren___byte, _wren___bit

        ; # Increment the address
        ; line_number = 171
        ;  address_low := address_low + 1
        ;info   171, 7812
        bcf     __rp0___byte, __rp0___bit
        bcf     __rp1___byte, __rp1___bit
        incf    main__address_low,f
        ; line_number = 172
        ;  if _z start
        ;info   172, 7815
        ; =>bit_code_emit@symbol(): sym=_z
        ; 1TEST: Single test with code in skip slot
        btfsc   _z___byte, _z___bit
        ; line_number = 173
        ; address_high := address_high + 1
        ;info   173, 7816
        incf    main__address_high,f
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 172
        ;  if _z done
        ; line_number = 174
        ; if _wrerr start
        ;info   174, 7817
        ; =>bit_code_emit@symbol(): sym=_wrerr
        ; No 1TEST: true.size=1 false.size=1
        ; 2TEST: two tests with code in both delay slots
        bsf     __rp0___byte, __rp0___bit
        bsf     __rp1___byte, __rp1___bit
        btfsc   _wrerr___byte, _wrerr___bit
        ; line_number = 175
        ; call rb2bus_byte_put(0x5b)
        ;info   175, 7820
        movlw   91
        btfss   _wrerr___byte, _wrerr___bit
        ; line_number = 177
        ; call rb2bus_byte_put(0x5a)
        ;info   177, 7822
        movlw   90
        bcf     __rp0___byte, __rp0___bit
        bcf     __rp1___byte, __rp1___bit
        call    rb2bus_byte_put
        ; line_number = 174
        ; if _wrerr done
        goto    main__13
        ; line_number = 178
        ; case 3
main__9:
        ; #: 0000 0011 (Execute):
        ; line_number = 180
        ;  _pclath := address_high
        ;info   180, 7827
        movf    main__address_high,w
        movwf   _pclath
        ; line_number = 181
        ;  _pcl := address_low
        ;info   181, 7829
        movf    main__address_low,w
        movwf   _pcl
        goto    main__13
        ; line_number = 182
        ; case 4
main__10:
        ; #: 0000 0100 (Address Low Read):
        ; line_number = 184
        ;  call rb2bus_byte_put(address_low)
        ;info   184, 7832
        movf    main__address_low,w
        call    rb2bus_byte_put
        goto    main__13
        ; line_number = 185
        ; case 5
main__11:
        ; #: 0000 0101 (Address High Read):
        ; line_number = 187
        ;  call rb2bus_byte_put(address_high)
        ;info   187, 7835
        movf    main__address_high,w
        call    rb2bus_byte_put
main__13:
        ; line_number = 109
        ;  switch command & 7 done
main__17:
        ; line_number = 105
        ;  switch (command >> 3) & 7 done
        goto    main__32
        ; line_number = 188
        ; case 3
main__29:
        ; # 11xx xxxx:
        ; line_number = 190
        ;  switch (command >> 3) & 7 start
        ;info   190, 7838
        ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
        movlw   main__25>>8
        movwf   __pclath
main__26 equ globals___0+17
        rrf     main__command,w
        movwf   main__26
        rrf     main__26,f
        rrf     main__26,w
        andlw   7
        ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
        addlw   main__25
        movwf   __pcl
        ; page_group 8
main__25:
        goto    main__27
        goto    main__27
        goto    main__27
        goto    main__27
        goto    main__27
        goto    main__27
        goto    main__27
        goto    main__24
        ; line_number = 191
        ; case 7
main__24:
        ; # 1111 1xxx:
        ; line_number = 193
        ;  switch command & 7 start
        ;info   193, 7855
        ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
        movlw   main__22>>8
        movwf   __pclath
        movlw   7
        andwf   main__command,w
        ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
        addlw   main__22
        movwf   __pcl
        ; page_group 8
main__22:
        goto    main__23
        goto    main__23
        goto    main__23
        goto    main__23
        goto    main__23
        goto    main__19
        goto    main__20
        goto    main__21
        ; line_number = 194
        ; case 5
main__19:
        ; # 1111 1101 (Id_next):
        ; line_number = 196
        ;  if id_index < id.size start
        ;info   196, 7869
        movlw   28
        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__18
        ; line_number = 197
        ; call rb2bus_byte_put(id[id_index])
        ;info   197, 7873
        movf    main__id_index,w
        call    id
        call    rb2bus_byte_put
        ; line_number = 198
        ;  id_index := id_index + 1
        ;info   198, 7876
        incf    main__id_index,f
main__18:
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 196
        ;  if id_index < id.size done
        goto    main__23
        ; line_number = 199
        ; case 6
main__20:
        ; # 1111 1110 (Id_start):
        ; line_number = 201
        ;  id_index := 0
        ;info   201, 7878
        clrf    main__id_index
        goto    main__23
        ; line_number = 202
        ; case 7
main__21:
        ; # 1111 1111 (Deselect):
        ; line_number = 204
        ;  call rb2bus_deselect()
        ;info   204, 7880
        call    rb2bus_deselect

main__23:
        ; line_number = 193
        ;  switch command & 7 done
main__27:
        ; line_number = 190
        ;  switch (command >> 3) & 7 done
main__32:
        ; line_number = 102
        ; switch command >> 6 done
        ; line_number = 95
        ;  loop_forever wrap-up
        goto    main__1
        ; line_number = 95
        ;  loop_forever done
        ; delay after procedure statements=non-uniform




        ; line_number = 206
        ;info   206, 7882
        ; procedure wait
wait:
        ; arguments_none
        ; line_number = 208
        ;  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:11=uu=>11)
        ; line_number = 213
        ;  do_nothing
        ;info   213, 7882

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




        ; line_number = 215
        ; string id = "\16,0,28,3,3,14\Controller28-C\7\Gramson" start
        ; id = '\16,0,28,3,3,14\Controller28-C\7\Gramson'
id:
        ; Temporarily save index into FSR
        movwf   __fsr
        ; Initialize PCLATH to point to this code page
        movlw   id___base>>8
        movwf   __pclath
        ; Restore index from FSR
        movf    __fsr,w
        addlw   id___base
        ; Index to the correct return value
        movwf   __pcl
        ; page_group 28
id___base:
        retlw   16
        retlw   0
        retlw   28
        retlw   3
        retlw   3
        retlw   14
        retlw   67
        retlw   111
        retlw   110
        retlw   116
        retlw   114
        retlw   111
        retlw   108
        retlw   108
        retlw   101
        retlw   114
        retlw   50
        retlw   56
        retlw   45
        retlw   67
        retlw   7
        retlw   71
        retlw   114
        retlw   97
        retlw   109
        retlw   115
        retlw   111
        retlw   110
        ; line_number = 215
        ; string id = "\16,0,28,3,3,14\Controller28-C\7\Gramson" start





        ; Appending 8 delayed procedures to code bank 3
        ; buffer = 'rb2bus_pic16f876'
        ; line_number = 28
        ;info   28, 7917
        ; procedure rb2bus_initialize
rb2bus_initialize:
        ; Last argument is sitting in W; save into argument variable
        movwf   rb2bus_initialize__address
        ; delay=4294967295
        ; line_number = 29
        ; argument address byte
rb2bus_initialize__address equ globals___0+2
        ; line_number = 30
        ;  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:11=uu=>11)
        ; line_number = 36
        ;  rb2bus_address := address
        ;info   36, 7918
        movf    rb2bus_initialize__address,w
        movwf   rb2bus_address

        ; # Warm up the UART:
        ; line_number = 39
        ;  _trisc@7 := _true
        ;info   39, 7920
rb2bus_initialize__select__1___byte equ _trisc
rb2bus_initialize__select__1___bit equ 7
        bsf     __rp0___byte, __rp0___bit
        bsf     rb2bus_initialize__select__1___byte, rb2bus_initialize__select__1___bit
        ; line_number = 40
        ;  _trisc@6 := _true
        ;info   40, 7922
rb2bus_initialize__select__2___byte equ _trisc
rb2bus_initialize__select__2___bit equ 6
        bsf     rb2bus_initialize__select__2___byte, rb2bus_initialize__select__2___bit

        ; # Initialize the {_txsta} register:
        ; line_number = 43
        ;  _txsta := 0
        ;info   43, 7923
        clrf    _txsta
        ; line_number = 44
        ;  _tx9 := _true
        ;info   44, 7924
        bsf     _tx9___byte, _tx9___bit
        ; line_number = 45
        ;  _txen := _true
        ;info   45, 7925
        bsf     _txen___byte, _txen___bit
        ; line_number = 46
        ;  _brgh := _true
        ;info   46, 7926
        bsf     _brgh___byte, _brgh___bit

        ; # Initialize the {_rcsta} register:
        ; line_number = 49
        ;  _rcsta := 0
        ;info   49, 7927
        bcf     __rp0___byte, __rp0___bit
        clrf    _rcsta
        ; line_number = 50
        ;  _spen := _true
        ;info   50, 7929
        bsf     _spen___byte, _spen___bit
        ; line_number = 51
        ;  _rx9 := _true
        ;info   51, 7930
        bsf     _rx9___byte, _rx9___bit
        ; line_number = 52
        ;  _cren := _true
        ;info   52, 7931
        bsf     _cren___byte, _cren___bit
        ; #_adden := _true
        ; line_number = 54
        ;  _adden := _false
        ;info   54, 7932
        bcf     _adden___byte, _adden___bit

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

        ; line_number = 59
        ;  rb2bus_selected := _false
        ;info   59, 7936
        bcf     __rp0___byte, __rp0___bit
        bcf     rb2bus_selected___byte, rb2bus_selected___bit
        ; line_number = 60
        ;  rb2bus_error := _true
        ;info   60, 7938
        bsf     rb2bus_error___byte, rb2bus_error___bit
        ; line_number = 61
        ;  rb2bus_index := 0
        ;info   61, 7939
        clrf    rb2bus_index


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




        ; line_number = 66
        ;info   66, 7941
        ; procedure rb2bus_eedata_read
rb2bus_eedata_read:
        ; arguments_none
        ; line_number = 68
        ;  returns byte

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

        ; line_number = 73
        ;  local temp1 byte
rb2bus_eedata_read__temp1 equ globals___0+3
        ; line_number = 74
        ;  local temp2 byte
rb2bus_eedata_read__temp2 equ globals___0+4

        ; # Read the first byte (the address):
        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:11=uu=>11)
        ; line_number = 77
        ;  _eecon1 := 0
        ;info   77, 7941
        bsf     __rp0___byte, __rp0___bit
        bsf     __rp1___byte, __rp1___bit
        clrf    _eecon1
        ; line_number = 78
        ;  _eeadr := rb2bus_eedata_address
        ;info   78, 7944
        movlw   254
        bcf     __rp0___byte, __rp0___bit
        movwf   _eeadr
        ; line_number = 79
        ;  _rd := _true
        ;info   79, 7947
        bsf     __rp0___byte, __rp0___bit
        bsf     _rd___byte, _rd___bit
        ; line_number = 80
        ;  temp1 := _eedata
        ;info   80, 7949
        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 = 83
        ;  _eeadr := _eeadr + 1
        ;info   83, 7953
        bsf     __rp1___byte, __rp1___bit
        incf    _eeadr,f
        ; line_number = 84
        ;  _rd := _true
        ;info   84, 7955
        bsf     __rp0___byte, __rp0___bit
        bsf     _rd___byte, _rd___bit
        ; line_number = 85
        ;  temp2 := _eedata
        ;info   85, 7957
        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 = 88
        ;  if temp1 = (0xff ^ temp2) start
        ;info   88, 7961
        ; 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 = 90
        ;  return temp1 start
        ; line_number = 90
        ;info   90, 7965
        movf    rb2bus_eedata_read__temp1,w
        return  
        ; line_number = 90
        ;  return temp1 done

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


        ; delay after procedure statements=non-uniform




        ; line_number = 96
        ;info   96, 7968
        ; 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 = 97
        ; argument address byte
rb2bus_eedata_write__address equ globals___0+5
        ; line_number = 98
        ;  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:11=uu=>11)
        ; line_number = 104
        ;  _eecon1 := 0
        ;info   104, 7969
        bsf     __rp0___byte, __rp0___bit
        bsf     __rp1___byte, __rp1___bit
        clrf    _eecon1
        ; line_number = 105
        ;  _eeadr := rb2bus_eedata_address
        ;info   105, 7972
        movlw   254
        bcf     __rp0___byte, __rp0___bit
        movwf   _eeadr
        ; line_number = 106
        ;  _eedata := address
        ;info   106, 7975
        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 = 109
        ;  loop_exactly 2 start
        ;info   109, 7979
rb2bus_eedata_write__1 equ globals___0+18
        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 = 113
        ;  _wren := _true
        ;info   113, 7982
        bsf     __rp0___byte, __rp0___bit
        bsf     __rp1___byte, __rp1___bit
        bsf     _wren___byte, _wren___bit
        ; line_number = 114
        ;  _gie := _false
        ;info   114, 7985
        bcf     _gie___byte, _gie___bit
        ; line_number = 115
        ;  _eecon2 := 0x55
        ;info   115, 7986
        movlw   85
        movwf   _eecon2
        ; line_number = 116
        ;  _eecon2 := 0xaa
        ;info   116, 7988
        movlw   170
        movwf   _eecon2
        ; # Start the write:
        ; line_number = 118
        ;  _wr := _true
        ;info   118, 7990
        bsf     _wr___byte, _wr___bit

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

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

        ; # Prepare the second byte of data:
        ; line_number = 128
        ;  _eeadr := _eeadr + 1
        ;info   128, 7994
        bcf     __rp0___byte, __rp0___bit
        incf    _eeadr,f
        ; line_number = 129
        ;  _eedata := address ^ 0xff
        ;info   129, 7996
        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 = 109
        ;  loop_exactly 2 wrap-up
        decfsz  rb2bus_eedata_write__1,f
        goto    rb2bus_eedata_write__2
        ; line_number = 109
        ;  loop_exactly 2 done
        ; # Disable everything:
        ; line_number = 133
        ;  _eecon1 := 0
        ;info   133, 8003
        bsf     __rp0___byte, __rp0___bit
        bsf     __rp1___byte, __rp1___bit
        clrf    _eecon1

        ; delay after procedure statements=non-uniform
        bcf     __rp0___byte, __rp0___bit
        bcf     __rp1___byte, __rp1___bit
        ; Implied return
        retlw   0




        ; buffer = 'rb2bus'
        ; line_number = 57
        ;info   57, 8009
        ; 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 2

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:11=uu=>11)
        ; line_number = 71
        ;  rb2bus_error := _false
        ;info   71, 8009
        bcf     rb2bus_error___byte, rb2bus_error___bit
        ; line_number = 72
        ;  while !rb2bus_selected start
rb2bus_select_wait__1:
        ;info   72, 8010
        ; =>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, 8012
        bsf     _adden___byte, _adden___bit
        ; # Wait for a byte to arrive.
        ; line_number = 75
        ;  while !_rcif start
rb2bus_select_wait__2:
        ;info   75, 8013
        ; =>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, 8015
        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, 8017
        bcf     rb2bus_select_wait__address_bit___byte, rb2bus_select_wait__address_bit___bit
        ; line_number = 80
        ;  if _rx9d start
        ;info   80, 8018
        ; =>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, 8019
        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, 8020
        movf    _rcreg,w
        movwf   rb2bus_select_wait__value

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

        ; line_number = 91
        ;  if address_bit start
        ;info   91, 8027
        ; =>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, 8029
        ; 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, 8033
        bsf     rb2bus_selected___byte, rb2bus_selected___bit
        ; line_number = 94
        ;  call rb2bus_byte_put(rb2_ok)
        ;info   94, 8034
        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, 8038
        ; 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:11=uu=>11)
        ; line_number = 104
        ;  rb2bus_selected := _false
        ;info   104, 8038
        bcf     rb2bus_selected___byte, rb2bus_selected___bit


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




        ; line_number = 107
        ;info   107, 8040
        ; 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 3

        ; # Return 0 in a bus flush condition to get us back to {rb2bus_select_wait}:
        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:11=uu=>11)
        ; line_number = 123
        ;  if rb2bus_error start
        ;info   123, 8040
        ; =>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, 8041
        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, 8042
        bcf     _adden___byte, _adden___bit
        ; line_number = 128
        ;  while !_rcif start
rb2bus_byte_get__1:
        ;info   128, 8043
        ; =>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, 8045
        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, 8047
        bcf     rb2bus_byte_get__address_bit___byte, rb2bus_byte_get__address_bit___bit
        ; line_number = 133
        ;  if _rx9d start
        ;info   133, 8048
        ; =>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, 8049
        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, 8050
        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, 8052
        ; =>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, 8053
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 139
        ;  if _oerr done
        ; line_number = 141
        ; if _ferr start
        ;info   141, 8054
        ; =>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, 8055
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 141
        ; if _ferr done
        ; line_number = 143
        ; _cren := _true
        ;info   143, 8056
        bsf     _cren___byte, _cren___bit

        ; line_number = 145
        ;  if address_bit start
        ;info   145, 8057
        ; =>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, 8059
        ; 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, 8063
        bsf     rb2bus_selected___byte, rb2bus_selected___bit
        ; line_number = 150
        ;  _adden := _false
        ;info   150, 8064
        bcf     _adden___byte, _adden___bit

        ; line_number = 152
        ;  call rb2bus_byte_put(rb2_ok)
        ;info   152, 8065
        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, 8068
        bcf     rb2bus_selected___byte, rb2bus_selected___bit
        ; line_number = 156
        ;  _adden := _true
        ;info   156, 8069
        bsf     _adden___byte, _adden___bit

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


        ; delay after procedure statements=non-uniform




        ; line_number = 166
        ;info   166, 8074
        ; 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:11=uu=>11)
        ; line_number = 174
        ;  if !rb2bus_error start
        ;info   174, 8075
        ; =>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, 8077
        ; =>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, 8079
        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, 8081
        bcf     _adden___byte, _adden___bit
        ; line_number = 181
        ;  _tx9d := _false
        ;info   181, 8082
        bsf     __rp0___byte, __rp0___bit
        bcf     _tx9d___byte, _tx9d___bit
        ; line_number = 182
        ;  _txreg := value
        ;info   182, 8084
        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, 8087
        ; =>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, 8089
        ; line_number = 189
        ;info   189, 8089
        movf    _rcreg,w

        ; # Recover from any receive errors by toggling {_cren}:
        ; line_number = 192
        ;  if _oerr start
        ;info   192, 8090
        ; =>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, 8091
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 192
        ;  if _oerr done
        ; line_number = 194
        ; if _ferr start
        ;info   194, 8092
        ; =>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, 8093
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 194
        ; if _ferr done
        ; line_number = 196
        ; _cren := _true
        ;info   196, 8094
        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, 8096
        ; 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:11=uu=>11)
        ; line_number = 209
        ;  switch command & 7 start
        ;info   209, 8097
        ; switch_before:(data:00=uu=>00 code:11=uu=>11) size=1
        movlw   rb2bus_command__13>>8
        movwf   __pclath
        movlw   7
        andwf   rb2bus_command__command,w
        ; switch after expression:(data:00=uu=>00 code:11=uu=>11)
        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, 8111
        movf    rb2bus_address,w
        call    rb2bus_byte_put

        ; # Fetch new address:
        ; line_number = 216
        ;  new_address := rb2bus_byte_get()
        ;info   216, 8113
        call    rb2bus_byte_get
        movwf   rb2bus_command__new_address
        ; line_number = 217
        ;  if new_address = 0 || new_address = rb2bus_address start
        ;info   217, 8115
        ; 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, 8122
        movlw   0
        call    rb2bus_byte_put
        ; line_number = 219
        ;  rb2bus_error := _true
        ;info   219, 8124
        bsf     rb2bus_error___byte, rb2bus_error___bit
        ; line_number = 220
        ;  rb2bus_selected := _false
        ;info   220, 8125
        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, 8127
        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, 8129
        call    rb2bus_byte_get
        movwf   rb2bus_command__temp
        ; line_number = 227
        ;  if temp != new_address start
        ;info   227, 8131
        ; 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, 8135
        movf    rb2bus_command__new_address,w
        call    rb2bus_eedata_write
        ; line_number = 233
        ;  temp := rb2bus_eedata_read()
        ;info   233, 8137
        call    rb2bus_eedata_read
        movwf   rb2bus_command__temp
        ; line_number = 234
        ;  if temp = new_address start
        ;info   234, 8139
        ; 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, 8143
        movf    rb2bus_command__new_address,w
        movwf   rb2bus_address
        ; line_number = 236
        ;  call rb2bus_byte_put(rb2_ok)
        ;info   236, 8145
        movlw   165
        goto    rb2bus_command__2
        ; 2GOTO: Starting code 2
rb2bus_command__1:
        ; line_number = 238
        ; call rb2bus_byte_put(0)
        ;info   238, 8147
        movlw   0
rb2bus_command__2:
        ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:11=uu=>11)
        ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:11=uu=>11)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:11=uu=>11)
        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, 8150
        movlw   0
        call    rb2bus_byte_put
        ; line_number = 229
        ;  rb2bus_error := _true
        ;info   229, 8152
        bsf     rb2bus_error___byte, rb2bus_error___bit
        ; line_number = 230
        ;  rb2bus_selected := _false
        ;info   230, 8153
        bcf     rb2bus_selected___byte, rb2bus_selected___bit
rb2bus_command__4:
        ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:11=uu=>11)
        ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:11=uu=>11)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:11=uu=>11)
        ; line_number = 227
        ;  if temp != new_address done
rb2bus_command__7:
        ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:11=uu=>11)
        ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:11=uu=>11)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:11=uu=>11)
        ; &&||: 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:11=uu=>11)
        ; 2GOTO: code2 final bitstates:(data:XX=cc=>XX code:11=uu=>11)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:11=uu=>11)
        ; 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, 8155
        movlw   28
        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, 8159
        movf    rb2bus_index,w
        call    id
        call    rb2bus_byte_put
        ; line_number = 243
        ;  rb2bus_index := rb2bus_index + 1
        ;info   243, 8162
        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, 8164
        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, 8166
        call    rb2bus_deselect


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




        ; Configuration bits
        ; address = 0x2007, fill = 0x1030
        ; cp = off (0x2000)
        ; debug = off (0x800)
        ; wrt = on (0x0)
        ; cpd = off (0x100)
        ; lvp = off (0x0)
        ; boren = off (0x0)
        ; pwrte = off (0x8)
        ; wdte = off (0x0)
        ; fosc = hs (0x2)
        ; 14650 = 0x393a
        __config 14650
        ; 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=19 Bits=4 Available=60
        ; 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=112 Bytes=0 Bits=0 Available=112
        end
