        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 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 PIC16F676
        ; buffer = 'controller24'
        ; line_number = 10
        ; library _pic16f767 entered

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

        ; buffer = '_pic16f767'
        ; line_number = 6
        ; processor pic16f767
        ; line_number = 7
        ; configure_address 0x2007
        ; line_number = 8
        ;  configure_fill 0x0600
        ; line_number = 9
        ;  configure_option cp: off = 0x2000
        ; line_number = 10
        ;  configure_option cp: on = 0x0000
        ; line_number = 11
        ;  configure_option cpmx: rc1 = 0x1000
        ; line_number = 12
        ;  configure_option cpmx: rb3 = 0x0000
        ; line_number = 13
        ;  configure_option debug: off = 0x0800
        ; line_number = 14
        ;  configure_option debug: on = 0x0000
        ; line_number = 15
        ;  configure_option borv: borv11 = 0x0180
        ; line_number = 16
        ;  configure_option borv: borv10 = 0x0100
        ; line_number = 17
        ;  configure_option borv: borv01 = 0x0080
        ; line_number = 18
        ;  configure_option borv: borv00 = 0x0000
        ; line_number = 19
        ;  configure_option boren: on = 0x40
        ; line_number = 20
        ;  configure_option boren: off = 0x00
        ; line_number = 21
        ;  configure_option mclre: on = 0x20
        ; line_number = 22
        ;  configure_option mclre: off = 0x00
        ; line_number = 23
        ;  configure_option pwrten: off = 8
        ; line_number = 24
        ;  configure_option pwrten: on = 0
        ; line_number = 25
        ;  configure_option wdten: on = 4
        ; line_number = 26
        ;  configure_option wdten: off = 0
        ; line_number = 27
        ;  configure_option fosc: rc_clk = 0x13
        ; line_number = 28
        ;  configure_option fosc: rc_no_clk = 0x12
        ; line_number = 29
        ;  configure_option fosc: int_clk = 0x11
        ; line_number = 30
        ;  configure_option fosc: int_no_clk = 0x10
        ; line_number = 31
        ;  configure_option fosc: extclk = 3
        ; line_number = 32
        ;  configure_option fosc: hs = 2
        ; line_number = 33
        ;  configure_option fosc: xt = 1
        ; line_number = 34
        ;  configure_option fosc: lp = 0

        ; line_number = 36
        ;  configure_address 0x2008
        ; line_number = 37
        ;  configure_fill 0x3fbc
        ; line_number = 38
        ;  configure_option borsen: on = 0x0040
        ; line_number = 39
        ;  configure_option borsen: off = 0x0000
        ; line_number = 40
        ;  configure_option ieso: on = 0x0002
        ; line_number = 41
        ;  configure_option ieso: off = 0x0000
        ; line_number = 42
        ;  configure_option fcmen: on = 0x0001
        ; line_number = 43
        ;  configure_option fcmen: off = 0x0000

        ; line_number = 45
        ;  code_bank 0x0 : 0x7ff
        ; line_number = 46
        ;  code_bank 0x800 : 0xfff
        ; line_number = 47
        ;  code_bank 0x1000 : 0x17ff
        ; line_number = 48
        ;  code_bank 0x1800 : 0x1fff
        ; line_number = 49
        ;  data_bank 0x0 : 0x7f
        ; line_number = 50
        ;  data_bank 0x80 : 0xff
        ; line_number = 51
        ;  data_bank 0x100 : 0x17f
        ; line_number = 52
        ;  data_bank 0x180 : 0x1ff
        ; line_number = 53
        ;  global_region 0x20 : 0x6f
        ; line_number = 54
        ;  global_region 0xa0 : 0xef
        ; line_number = 55
        ;  global_region 0x110 : 0x16f
        ; line_number = 56
        ;  global_region 0x190 : 0x1ff
        ; line_number = 57
        ;  shared_region 0x70 : 0x7f

        ; line_number = 59
        ;  interrupts_possible
        ; line_number = 60
        ;  packages pdip = 28
        ; line_number = 61
        ;  pin mclr, vpp, thv, mclr_unused
        ; line_number = 62
        ; pin_bindings pdip = 1
        ; line_number = 63
        ; pin ra0_in, ra0_out, an0, ra0_unused
        ; line_number = 64
        ; pin_bindings pdip = 2
        ; line_number = 65
        ;  bind_to _porta@0
        ; line_number = 66
        ;  or_if ra0_in _trisa 1
        ; line_number = 67
        ;  or_if ra0_in _adcon1 15
        ; line_number = 68
        ;  or_if ra0_in _adcon0 0
        ; line_number = 69
        ;  or_if ra0_out _trisa 0
        ; line_number = 70
        ;  or_if ra0_out _adcon1 15
        ; line_number = 71
        ;  or_if ra0_out _adcon0 0
        ; line_number = 72
        ; pin ra1_in, ra1_out, an1, ra1_unused
        ; line_number = 73
        ; pin_bindings pdip = 3
        ; line_number = 74
        ;  bind_to _porta@1
        ; line_number = 75
        ;  or_if ra1_in _trisa 2
        ; line_number = 76
        ;  or_if ra1_in _adcon1 15
        ; line_number = 77
        ;  or_if ra1_in _adcon0 0
        ; line_number = 78
        ;  or_if ra1_out _trisa 0
        ; line_number = 79
        ;  or_if ra1_out _adcon1 15
        ; line_number = 80
        ;  or_if ra1_out _adcon0 0
        ; line_number = 81
        ; pin ra2_in, ra2_out, an2, vref_minus, ra2_unused
        ; line_number = 82
        ; pin_bindings pdip = 4
        ; line_number = 83
        ;  bind_to _porta@2
        ; line_number = 84
        ;  or_if ra2_in _trisa 4
        ; line_number = 85
        ;  or_if ra2_in _adcon1 15
        ; line_number = 86
        ;  or_if ra2_in _adcon0 0
        ; line_number = 87
        ;  or_if ra2_out _trisa 0
        ; line_number = 88
        ;  or_if ra2_out _adcon1 15
        ; line_number = 89
        ;  or_if ra2_out _adcon0 0
        ; line_number = 90
        ; pin ra3_in, ra3_out, an3, vrev_plus, ra3_unused
        ; line_number = 91
        ; pin_bindings pdip = 5
        ; line_number = 92
        ;  bind_to _porta@3
        ; line_number = 93
        ;  or_if ra3_in _trisa 8
        ; line_number = 94
        ;  or_if ra3_in _adcon1 15
        ; line_number = 95
        ;  or_if ra3_in _adcon0 0
        ; line_number = 96
        ;  or_if ra3_out _trisa 0
        ; line_number = 97
        ;  or_if ra3_out _adcon1 15
        ; line_number = 98
        ;  or_if ra3_out _adcon0 0
        ; line_number = 99
        ; pin ra4_in, ra4_out, t0cki, ra4_unused
        ; line_number = 100
        ; pin_bindings pdip = 6
        ; line_number = 101
        ;  bind_to _porta@4
        ; line_number = 102
        ;  or_if ra4_in _trisa 16
        ; line_number = 103
        ;  or_if ra4_in _adcon1 15
        ; line_number = 104
        ;  or_if ra4_in _adcon0 0
        ; line_number = 105
        ;  or_if ra4_out _trisa 0
        ; line_number = 106
        ;  or_if ra4_out _adcon1 15
        ; line_number = 107
        ;  or_if ra4_out _adcon0 0
        ; line_number = 108
        ; pin ra5_in, ra5_out, an4, ra5_unused
        ; line_number = 109
        ; pin_bindings pdip = 7
        ; line_number = 110
        ;  bind_to _porta@5
        ; line_number = 111
        ;  or_if ra5_in _trisa 32
        ; line_number = 112
        ;  or_if ra5_in _adcon1 15
        ; line_number = 113
        ;  or_if ra5_in _adcon1 0
        ; line_number = 114
        ;  or_if ra5_out _trisa 0
        ; line_number = 115
        ;  or_if ra5_out _adcon1 15
        ; line_number = 116
        ;  or_if ra5_out _adcon0 0
        ; line_number = 117
        ; pin vss, ground
        ; line_number = 118
        ; pin_bindings pdip = 8
        ; line_number = 119
        ; pin osc1, clkin
        ; line_number = 120
        ; pin_bindings pdip = 9
        ; line_number = 121
        ; pin osc2, clkout
        ; line_number = 122
        ; pin_bindings pdip = 10
        ; line_number = 123
        ; pin rc0_in, rc0_out, t1oso, t1cki, rc0_unused
        ; line_number = 124
        ; pin_bindings pdip = 11
        ; line_number = 125
        ;  bind_to _portc@0
        ; line_number = 126
        ;  or_if rc0_in _trisc 1
        ; line_number = 127
        ;  or_if rc0_in _adcon1 15
        ; line_number = 128
        ;  or_if rc0_in _adcon0 0
        ; line_number = 129
        ;  or_if rc0_out _trisc 0
        ; line_number = 130
        ;  or_if rc0_out _adcon1 15
        ; line_number = 131
        ;  or_if rc0_out _adcon0 0
        ; line_number = 132
        ;  or_if rc0_unused _trisc 1
        ; line_number = 133
        ;  or_if rc0_unused _adcon1 15
        ; line_number = 134
        ;  or_if rc0_unused _adcon0 0
        ; line_number = 135
        ; pin rc1_in, rc1_out, t1osi, ccp2, rc1_unused
        ; line_number = 136
        ; pin_bindings pdip = 12
        ; line_number = 137
        ;  bind_to _portc@1
        ; line_number = 138
        ;  or_if rc1_in _trisc 2
        ; line_number = 139
        ;  or_if rc1_in _adcon1 15
        ; line_number = 140
        ;  or_if rc1_in _adcon0 0
        ; line_number = 141
        ;  or_if rc1_out _trisc 0
        ; line_number = 142
        ;  or_if rc1_out _adcon1 15
        ; line_number = 143
        ;  or_if rc1_out _adcon0 0
        ; line_number = 144
        ;  or_if rc1_unused _trisc 2
        ; line_number = 145
        ;  or_if rc1_unused _adcon1 15
        ; line_number = 146
        ;  or_if rc1_unused _adcon0 0
        ; line_number = 147
        ; pin rc2_in, rc2_out, ccp1, rc2_unused
        ; line_number = 148
        ; pin_bindings pdip = 13
        ; line_number = 149
        ;  bind_to _portc@2
        ; line_number = 150
        ;  or_if rc2_in _trisc 4
        ; line_number = 151
        ;  or_if rc2_in _adcon1 15
        ; line_number = 152
        ;  or_if rc2_in _adcon0 0
        ; line_number = 153
        ;  or_if rc2_out _trisc 0
        ; line_number = 154
        ;  or_if rc2_out _adcon1 15
        ; line_number = 155
        ;  or_if rc2_out _adcon0 0
        ; line_number = 156
        ;  or_if rc2_unused _trisc 4
        ; line_number = 157
        ;  or_if rc2_unused _adcon1 15
        ; line_number = 158
        ;  or_if rc2_unused _adcon0 0
        ; line_number = 159
        ; pin rc3_in, rc3_out, sck_master, sck_slave, scl, rc3_unused
        ; line_number = 160
        ; pin_bindings pdip = 14
        ; line_number = 161
        ;  bind_to _portc@3
        ; line_number = 162
        ;  or_if rc3_in _trisc 8
        ; line_number = 163
        ;  or_if rc3_in _adcon1 15
        ; line_number = 164
        ;  or_if rc3_in _adcon0 0
        ; line_number = 165
        ;  or_if rc3_out _trisc 0
        ; line_number = 166
        ;  or_if rc3_out _adcon1 15
        ; line_number = 167
        ;  or_if rc3_out _adcon0 0
        ; line_number = 168
        ;  or_if sck_master _trisc 0
        ; line_number = 169
        ;  or_if sck_master _adcon1 15
        ; line_number = 170
        ;  or_if sck_master _adcon0 0
        ; line_number = 171
        ;  or_if sck_slave _trisc 8
        ; line_number = 172
        ;  or_if sck_slave _adcon1 15
        ; line_number = 173
        ;  or_if sck_slave _adcon0 0
        ; line_number = 174
        ;  or_if rc3_unused _trisc 8
        ; line_number = 175
        ;  or_if rc3_unused _adcon1 15
        ; line_number = 176
        ;  or_if rc3_unused _adcon0 0
        ; line_number = 177
        ; pin rc4_in, rc4_out, sdi, sda, rc4_unused
        ; line_number = 178
        ; pin_bindings pdip = 15
        ; line_number = 179
        ;  bind_to _portc@4
        ; line_number = 180
        ;  or_if rc4_in _trisc 16
        ; line_number = 181
        ;  or_if rc4_in _adcon1 15
        ; line_number = 182
        ;  or_if rc4_in _adcon0 0
        ; line_number = 183
        ;  or_if rc4_out _trisc 0
        ; line_number = 184
        ;  or_if rc4_out _adcon1 15
        ; line_number = 185
        ;  or_if rc4_out _adcon0 0
        ; line_number = 186
        ;  or_if sdi _trisc 16
        ; line_number = 187
        ;  or_if sdi _adcon1 15
        ; line_number = 188
        ;  or_if sdi _adcon0 0
        ; line_number = 189
        ;  or_if rc4_unused _trisc 16
        ; line_number = 190
        ;  or_if rc4_unused _adcon1 15
        ; line_number = 191
        ;  or_if rc4_unused _adcon0 0
        ; line_number = 192
        ; pin rc5_in, rc5_out, sdo, rc5_unused
        ; line_number = 193
        ; pin_bindings pdip = 16
        ; line_number = 194
        ;  bind_to _portc@5
        ; line_number = 195
        ;  or_if rc5_in _trisc 32
        ; line_number = 196
        ;  or_if rc5_in _adcon1 15
        ; line_number = 197
        ;  or_if rc5_in _adcon0 0
        ; line_number = 198
        ;  or_if rc5_out _trisc 0
        ; line_number = 199
        ;  or_if rc5_out _adcon1 15
        ; line_number = 200
        ;  or_if rc5_out _adcon0 0
        ; line_number = 201
        ;  or_if sdo _trisc 0
        ; line_number = 202
        ;  or_if sdo _adcon1 15
        ; line_number = 203
        ;  or_if sdo _adcon0 0
        ; line_number = 204
        ;  or_if rc5_unused _trisc 32
        ; line_number = 205
        ;  or_if rc5_unused _adcon1 15
        ; line_number = 206
        ;  or_if rc5_unused _adcon0 0
        ; line_number = 207
        ; pin rc6_in, rc6_out, tx, ck, rc6_unused
        ; line_number = 208
        ; pin_bindings pdip = 17
        ; line_number = 209
        ;  bind_to _portc@6
        ; line_number = 210
        ;  or_if rc6_in _trisc 64
        ; line_number = 211
        ;  or_if rc6_in _adcon1 15
        ; line_number = 212
        ;  or_if rc6_in _adcon0 0
        ; line_number = 213
        ;  or_if rc6_out _trisc 0
        ; line_number = 214
        ;  or_if rc6_out _adcon1 15
        ; line_number = 215
        ;  or_if rc6_out _adcon0 0
        ; # Note: for TX, configure {_trisc} as input (as per spec. sheet):
        ; line_number = 217
        ;  or_if tx _trisc 0
        ; line_number = 218
        ;  or_if tx _adcon1 15
        ; line_number = 219
        ;  or_if tx _adcon0 0
        ; line_number = 220
        ;  or_if rc6_unused _trisc 64
        ; line_number = 221
        ;  or_if rc6_unused _adcon1 15
        ; line_number = 222
        ;  or_if rc6_unused _adcon0 0
        ; line_number = 223
        ; pin rc7_in, rc7_out, rx, dt, rc7_unused
        ; line_number = 224
        ; pin_bindings pdip = 18
        ; line_number = 225
        ;  bind_to _portc@7
        ; line_number = 226
        ;  or_if rc7_in _trisc 128
        ; line_number = 227
        ;  or_if rc7_in _adcon1 15
        ; line_number = 228
        ;  or_if rc7_in _adcon0 0
        ; line_number = 229
        ;  or_if rx _trisc 128
        ; line_number = 230
        ;  or_if rx _adcon1 15
        ; line_number = 231
        ;  or_if rx _adcon0 0
        ; line_number = 232
        ;  or_if rc7_out _trisc 0
        ; line_number = 233
        ;  or_if rc7_out _adcon1 15
        ; line_number = 234
        ;  or_if rc7_out _adcon0 0
        ; line_number = 235
        ;  or_if rc7_unused _trisc 128
        ; line_number = 236
        ;  or_if rc7_unused _adcon1 15
        ; line_number = 237
        ;  or_if rc7_unused _adcon0 0
        ; line_number = 238
        ; pin vss2, ground2
        ; line_number = 239
        ; pin_bindings pdip = 19
        ; line_number = 240
        ; pin vdd, power_supply
        ; line_number = 241
        ; pin_bindings pdip = 20
        ; line_number = 242
        ; pin rb0_in, rb0_out, int, rb0_unused
        ; line_number = 243
        ; pin_bindings pdip = 21
        ; line_number = 244
        ;  bind_to _portb@0
        ; line_number = 245
        ;  or_if rb0_in _trisb 1
        ; line_number = 246
        ;  or_if rb0_in _adcon1 15
        ; line_number = 247
        ;  or_if rb0_in _adcon0 0
        ; line_number = 248
        ;  or_if rb0_out _trisb 0
        ; line_number = 249
        ;  or_if rb0_out _adcon1 15
        ; line_number = 250
        ;  or_if rb0_out _adcon0 0
        ; line_number = 251
        ;  or_if rb0_unused _trisb 1
        ; line_number = 252
        ;  or_if rb0_unused _adcon1 15
        ; line_number = 253
        ;  or_if rb0_unused _adcon0 0
        ; line_number = 254
        ; pin rb1_in, rb1_out, rb1_unused
        ; line_number = 255
        ; pin_bindings pdip = 22
        ; line_number = 256
        ;  bind_to _portb@1
        ; line_number = 257
        ;  or_if rb1_in _trisb 2
        ; line_number = 258
        ;  or_if rb1_in _adcon1 15
        ; line_number = 259
        ;  or_if rb1_in _adcon0 0
        ; line_number = 260
        ;  or_if rb1_out _trisb 0
        ; line_number = 261
        ;  or_if rb1_out _adcon1 15
        ; line_number = 262
        ;  or_if rb1_out _adcon0 0
        ; line_number = 263
        ;  or_if rb1_unused _trisb 2
        ; line_number = 264
        ;  or_if rb1_unused _adcon1 15
        ; line_number = 265
        ;  or_if rb1_unused _adcon0 0
        ; line_number = 266
        ; pin rb2_in, rb2_out, rb2_unused
        ; line_number = 267
        ; pin_bindings pdip = 23
        ; line_number = 268
        ;  bind_to _portb@2
        ; line_number = 269
        ;  or_if rb2_in _trisb 4
        ; line_number = 270
        ;  or_if rb2_in _adcon1 15
        ; line_number = 271
        ;  or_if rb2_in _adcon0 0
        ; line_number = 272
        ;  or_if rb2_out _trisb 0
        ; line_number = 273
        ;  or_if rb2_out _adcon1 15
        ; line_number = 274
        ;  or_if rb2_out _adcon0 0
        ; line_number = 275
        ;  or_if rb2_unused _trisb 4
        ; line_number = 276
        ;  or_if rb2_unused _adcon1 15
        ; line_number = 277
        ;  or_if rb2_unused _adcon0 0
        ; line_number = 278
        ; pin rb3_in, rb3_out, pgm, rb3_unused
        ; line_number = 279
        ; pin_bindings pdip = 24
        ; line_number = 280
        ;  bind_to _portb@3
        ; line_number = 281
        ;  or_if rb3_in _trisb 8
        ; line_number = 282
        ;  or_if rb3_in _adcon1 15
        ; line_number = 283
        ;  or_if rb3_in _adcon0 0
        ; line_number = 284
        ;  or_if rb3_out _trisb 0
        ; line_number = 285
        ;  or_if rb3_out _adcon1 15
        ; line_number = 286
        ;  or_if rb3_out _adcon0 0
        ; line_number = 287
        ;  or_if rb3_unused _trisb 8
        ; line_number = 288
        ;  or_if rb3_unused _adcon1 15
        ; line_number = 289
        ;  or_if rb3_unused _adcon0 0
        ; line_number = 290
        ; pin rb4_in, rb4_out, rb4_unused
        ; line_number = 291
        ; pin_bindings pdip = 25
        ; line_number = 292
        ;  bind_to _portb@4
        ; line_number = 293
        ;  or_if rb4_in _trisb 16
        ; line_number = 294
        ;  or_if rb4_in _adcon1 15
        ; line_number = 295
        ;  or_if rb4_in _adcon0 0
        ; line_number = 296
        ;  or_if rb4_out _trisb 0
        ; line_number = 297
        ;  or_if rb4_out _adcon1 15
        ; line_number = 298
        ;  or_if rb4_out _adcon0 0
        ; line_number = 299
        ;  or_if rb4_unused _trisb 16
        ; line_number = 300
        ;  or_if rb4_unused _adcon1 15
        ; line_number = 301
        ;  or_if rb4_unused _adcon0 0
        ; line_number = 302
        ; pin rb5_in, rb5_out, rb5_unused
        ; line_number = 303
        ; pin_bindings pdip = 26
        ; line_number = 304
        ;  bind_to _portb@5
        ; line_number = 305
        ;  or_if rb5_in _trisb 32
        ; line_number = 306
        ;  or_if rb5_in _adcon1 15
        ; line_number = 307
        ;  or_if rb5_in _adcon0 0
        ; line_number = 308
        ;  or_if rb5_out _trisb 0
        ; line_number = 309
        ;  or_if rb5_out _adcon1 15
        ; line_number = 310
        ;  or_if rb5_out _adcon0 0
        ; line_number = 311
        ;  or_if rb5_unused _trisb 32
        ; line_number = 312
        ;  or_if rb5_unused _adcon1 15
        ; line_number = 313
        ;  or_if rb5_unused _adcon0 0
        ; line_number = 314
        ; pin rb6_in, rb6_out, pgc, rb6_unused
        ; line_number = 315
        ; pin_bindings pdip = 27
        ; line_number = 316
        ;  bind_to _portb@6
        ; line_number = 317
        ;  or_if rb6_in _trisb 64
        ; line_number = 318
        ;  or_if rb6_in _adcon1 15
        ; line_number = 319
        ;  or_if rb6_in _adcon0 0
        ; line_number = 320
        ;  or_if rb6_out _trisb 0
        ; line_number = 321
        ;  or_if rb6_out _adcon1 15
        ; line_number = 322
        ;  or_if rb6_out _adcon0 0
        ; line_number = 323
        ;  or_if rb6_unused _trisb 64
        ; line_number = 324
        ;  or_if rb6_unused _adcon1 15
        ; line_number = 325
        ;  or_if rb6_unused _adcon0 0
        ; line_number = 326
        ; pin rb7_in, rb7_out, pgd, rb7_unused
        ; line_number = 327
        ; pin_bindings pdip = 28
        ; line_number = 328
        ;  bind_to _portb@7
        ; line_number = 329
        ;  or_if rb7_in _trisb 128
        ; line_number = 330
        ;  or_if rb7_in _adcon1 15
        ; line_number = 331
        ;  or_if rb7_in _adcon0 0
        ; line_number = 332
        ;  or_if rb7_out _trisb 0
        ; line_number = 333
        ;  or_if rb7_out _adcon1 15
        ; line_number = 334
        ;  or_if rb7_out _adcon0 0
        ; line_number = 335
        ;  or_if rb7_unused _trisb 128
        ; line_number = 336
        ;  or_if rb7_unused _adcon1 15
        ; line_number = 337
        ;  or_if rb7_unused _adcon0 0

        ; # Register and pin definitions:

        ; line_number = 341
        ; library _pic16f7x7 entered

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

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

        ; # Common declarations for PIC16F7x7 series microcontrollers:

        ; # 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 _tmr0ie = _intcon@5
_tmr0ie___byte equ _intcon
_tmr0ie___bit equ 5
        ; line_number = 44
        ; bind _int0ie = _intcon@4
_int0ie___byte equ _intcon
_int0ie___bit equ 4
        ; line_number = 45
        ; bind _rbie = _intcon@3
_rbie___byte equ _intcon
_rbie___bit equ 3
        ; line_number = 46
        ; bind _tmr0if = _intcon@2
_tmr0if___byte equ _intcon
_tmr0if___bit equ 2
        ; line_number = 47
        ; bind _int0if = _intcon@1
_int0if___byte equ _intcon
_int0if___bit equ 1
        ; line_number = 48
        ; bind _rbif = _intcon@0
_rbif___byte equ _intcon
_rbif___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 _ccp1if = _pir1@2
_ccp1if___byte equ _pir1
_ccp1if___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 _osif = _pir2@7
_osif___byte equ _pir2
_osif___bit equ 7
        ; line_number = 62
        ; bind _cmif = _pir2@6
_cmif___byte equ _pir2
_cmif___bit equ 6
        ; line_number = 63
        ; bind _lvif = _pir2@5
_lvif___byte equ _pir2
_lvif___bit equ 5
        ; line_number = 64
        ; bind _bclif = _pir2@3
_bclif___byte equ _pir2
_bclif___bit equ 3
        ; line_number = 65
        ; bind _ccp3if = _pir2@1
_ccp3if___byte equ _pir2
_ccp3if___bit equ 1
        ; line_number = 66
        ; bind _ccp2if = _pir2@0
_ccp2if___byte equ _pir2
_ccp2if___bit equ 0

        ; line_number = 68
        ; register _tmr1l = 
_tmr1l equ 14

        ; line_number = 70
        ; register _tmr1h = 
_tmr1h equ 15

        ; line_number = 72
        ; register _t1con = 
_t1con equ 16
        ; line_number = 73
        ; bind _t1run = _t1con@6
_t1run___byte equ _t1con
_t1run___bit equ 6
        ; line_number = 74
        ; bind _t1ckps1 = _t1con@5
_t1ckps1___byte equ _t1con
_t1ckps1___bit equ 5
        ; line_number = 75
        ; bind _t1ckps0 = _t1con@4
_t1ckps0___byte equ _t1con
_t1ckps0___bit equ 4
        ; line_number = 76
        ; bind _t1oscen = _t1con@3
_t1oscen___byte equ _t1con
_t1oscen___bit equ 3
        ; line_number = 77
        ; bind _t1sync = _t1con@2
_t1sync___byte equ _t1con
_t1sync___bit equ 2
        ; line_number = 78
        ; bind _tmr1cs = _t1con@1
_tmr1cs___byte equ _t1con
_tmr1cs___bit equ 1
        ; line_number = 79
        ; bind _tmr1on = _t1con@0
_tmr1on___byte equ _t1con
_tmr1on___bit equ 0

        ; line_number = 81
        ; register _tmr2 = 
_tmr2 equ 17

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

        ; line_number = 92
        ; register _sspbuf = 
_sspbuf equ 19

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

        ; line_number = 104
        ; register _ccpr1l = 
_ccpr1l equ 21

        ; line_number = 106
        ; register _ccpr1h = 
_ccpr1h equ 22

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

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

        ; line_number = 126
        ; register _txreg = 
_txreg equ 25

        ; line_number = 128
        ; register _rcreg = 
_rcreg equ 26

        ; line_number = 130
        ; register _ccpr2l = 
_ccpr2l equ 27

        ; line_number = 132
        ; register _ccpr2h = 
_ccpr2h equ 28

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

        ; line_number = 142
        ; register _adresh = 
_adresh equ 30

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

        ; # Bank 1:

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

        ; line_number = 165
        ; register _trisa = 
_trisa equ 133
        ; line_number = 166
        ; bind _trisa7 = _trisa@7
_trisa7___byte equ _trisa
_trisa7___bit equ 7
        ; line_number = 167
        ; bind _trisa6 = _trisa@6
_trisa6___byte equ _trisa
_trisa6___bit equ 6
        ; line_number = 168
        ; bind _trisa5 = _trisa@5
_trisa5___byte equ _trisa
_trisa5___bit equ 5
        ; line_number = 169
        ; bind _trisa4 = _trisa@4
_trisa4___byte equ _trisa
_trisa4___bit equ 4
        ; line_number = 170
        ; bind _trisa3 = _trisa@3
_trisa3___byte equ _trisa
_trisa3___bit equ 3
        ; line_number = 171
        ; bind _trisa2 = _trisa@2
_trisa2___byte equ _trisa
_trisa2___bit equ 2
        ; line_number = 172
        ; bind _trisa1 = _trisa@1
_trisa1___byte equ _trisa
_trisa1___bit equ 1
        ; line_number = 173
        ; bind _trisa0 = _trisa@0
_trisa0___byte equ _trisa
_trisa0___bit equ 0

        ; line_number = 175
        ; register _trisb = 
_trisb equ 134

        ; line_number = 177
        ; register _trisc = 
_trisc equ 135
        ; line_number = 178
        ; bind _trisc7 = _trisc@7
_trisc7___byte equ _trisc
_trisc7___bit equ 7
        ; line_number = 179
        ; bind _trisc6 = _trisc@6
_trisc6___byte equ _trisc
_trisc6___bit equ 6
        ; line_number = 180
        ; bind _trisc5 = _trisc@5
_trisc5___byte equ _trisc
_trisc5___bit equ 5
        ; line_number = 181
        ; bind _trisc4 = _trisc@4
_trisc4___byte equ _trisc
_trisc4___bit equ 4
        ; line_number = 182
        ; bind _trisc3 = _trisc@3
_trisc3___byte equ _trisc
_trisc3___bit equ 3
        ; line_number = 183
        ; bind _trisc2 = _trisc@2
_trisc2___byte equ _trisc
_trisc2___bit equ 2
        ; line_number = 184
        ; bind _trisc1 = _trisc@1
_trisc1___byte equ _trisc
_trisc1___bit equ 1
        ; line_number = 185
        ; bind _trisc0 = _trisc@0
_trisc0___byte equ _trisc
_trisc0___bit equ 0

        ; line_number = 187
        ; register _pie1 = 
_pie1 equ 140
        ; line_number = 188
        ; bind _pspie = _pie1@7
_pspie___byte equ _pie1
_pspie___bit equ 7
        ; line_number = 189
        ; bind _adie = _pie1@6
_adie___byte equ _pie1
_adie___bit equ 6
        ; line_number = 190
        ; bind _rcie = _pie1@5
_rcie___byte equ _pie1
_rcie___bit equ 5
        ; line_number = 191
        ; bind _txie = _pie1@4
_txie___byte equ _pie1
_txie___bit equ 4
        ; line_number = 192
        ; bind _sspie = _pie1@3
_sspie___byte equ _pie1
_sspie___bit equ 3
        ; line_number = 193
        ; bind _ccp1ie = _pie1@2
_ccp1ie___byte equ _pie1
_ccp1ie___bit equ 2
        ; line_number = 194
        ; bind _tmr2ie = _pie1@1
_tmr2ie___byte equ _pie1
_tmr2ie___bit equ 1
        ; line_number = 195
        ; bind _tmr1ie = _pie1@0
_tmr1ie___byte equ _pie1
_tmr1ie___bit equ 0

        ; line_number = 197
        ; register _pie2 = 
_pie2 equ 141
        ; line_number = 198
        ; bind _osfie = _pie2@7
_osfie___byte equ _pie2
_osfie___bit equ 7
        ; line_number = 199
        ; bind _cmie = _pie2@6
_cmie___byte equ _pie2
_cmie___bit equ 6
        ; line_number = 200
        ; bind _lvdie = _pie2@5
_lvdie___byte equ _pie2
_lvdie___bit equ 5
        ; line_number = 201
        ; bind _bclie = _pie2@3
_bclie___byte equ _pie2
_bclie___bit equ 3
        ; line_number = 202
        ; bind _ccp3ie = _pie2@1
_ccp3ie___byte equ _pie2
_ccp3ie___bit equ 1
        ; line_number = 203
        ; bind _ccp2ie = _pie2@0
_ccp2ie___byte equ _pie2
_ccp2ie___bit equ 0

        ; line_number = 205
        ; register _pcon = 
_pcon equ 142
        ; line_number = 206
        ; bind _sboren = _pcon@2
_sboren___byte equ _pcon
_sboren___bit equ 2
        ; line_number = 207
        ; bind _por = _pcon@1
_por___byte equ _pcon
_por___bit equ 1
        ; line_number = 208
        ; bind _bor = _pcon@0
_bor___byte equ _pcon
_bor___bit equ 0

        ; line_number = 210
        ; register _osccon = 
_osccon equ 143
        ; line_number = 211
        ; bind _ircf2 = _osccon@6
_ircf2___byte equ _osccon
_ircf2___bit equ 6
        ; line_number = 212
        ; bind _ircf1 = _osccon@5
_ircf1___byte equ _osccon
_ircf1___bit equ 5
        ; line_number = 213
        ; bind _ircf0 = _osccon@4
_ircf0___byte equ _osccon
_ircf0___bit equ 4
        ; line_number = 214
        ; bind _osts = _osccon@3
_osts___byte equ _osccon
_osts___bit equ 3
        ; line_number = 215
        ; bind _iofs = _osccon@2
_iofs___byte equ _osccon
_iofs___bit equ 2
        ; line_number = 216
        ; bind _scs1 = _osccon@1
_scs1___byte equ _osccon
_scs1___bit equ 1
        ; line_number = 217
        ; bind _scs0 = _osccon@0
_scs0___byte equ _osccon
_scs0___bit equ 0

        ; line_number = 219
        ; register _osctune = 
_osctune equ 144
        ; line_number = 220
        ; bind _tun5 = _osctune@5
_tun5___byte equ _osctune
_tun5___bit equ 5
        ; line_number = 221
        ; bind _tun4 = _osctune@4
_tun4___byte equ _osctune
_tun4___bit equ 4
        ; line_number = 222
        ; bind _tun3 = _osctune@3
_tun3___byte equ _osctune
_tun3___bit equ 3
        ; line_number = 223
        ; bind _tun2 = _osctune@2
_tun2___byte equ _osctune
_tun2___bit equ 2
        ; line_number = 224
        ; bind _tun1 = _osctune@1
_tun1___byte equ _osctune
_tun1___bit equ 1
        ; line_number = 225
        ; bind _tun0 = _osctune@0
_tun0___byte equ _osctune
_tun0___bit equ 0

        ; line_number = 227
        ; register _sspcon2 = 
_sspcon2 equ 145
        ; line_number = 228
        ; bind _gcen = _sspcon2@7
_gcen___byte equ _sspcon2
_gcen___bit equ 7
        ; line_number = 229
        ; bind _ackstat = _sspcon2@6
_ackstat___byte equ _sspcon2
_ackstat___bit equ 6
        ; line_number = 230
        ; bind _ackdt = _sspcon2@5
_ackdt___byte equ _sspcon2
_ackdt___bit equ 5
        ; line_number = 231
        ; bind _acken = _sspcon2@4
_acken___byte equ _sspcon2
_acken___bit equ 4
        ; line_number = 232
        ; bind _rcen = _sspcon2@3
_rcen___byte equ _sspcon2
_rcen___bit equ 3
        ; line_number = 233
        ; bind _pen = _sspcon2@2
_pen___byte equ _sspcon2
_pen___bit equ 2
        ; line_number = 234
        ; bind _rsen = _sspcon2@1
_rsen___byte equ _sspcon2
_rsen___bit equ 1
        ; line_number = 235
        ; bind _sen = _sspcon2@0
_sen___byte equ _sspcon2
_sen___bit equ 0

        ; line_number = 237
        ; register _pr2 = 
_pr2 equ 146

        ; line_number = 239
        ; register _sspadd = 
_sspadd equ 147

        ; line_number = 241
        ; register _sspstat = 
_sspstat equ 148
        ; line_number = 242
        ; bind _smp = _sspstat@7
_smp___byte equ _sspstat
_smp___bit equ 7
        ; line_number = 243
        ; bind _cke = _sspstat@6
_cke___byte equ _sspstat
_cke___bit equ 6
        ; line_number = 244
        ; bind _da = _sspstat@5
_da___byte equ _sspstat
_da___bit equ 5
        ; line_number = 245
        ; bind _p = _sspstat@4
_p___byte equ _sspstat
_p___bit equ 4
        ; line_number = 246
        ; bind _s = _sspstat@3
_s___byte equ _sspstat
_s___bit equ 3
        ; line_number = 247
        ; bind _rw = _sspstat@2
_rw___byte equ _sspstat
_rw___bit equ 2
        ; line_number = 248
        ; bind _ua = _sspstat@1
_ua___byte equ _sspstat
_ua___bit equ 1
        ; line_number = 249
        ; bind _bf = _sspstat@0
_bf___byte equ _sspstat
_bf___bit equ 0

        ; line_number = 251
        ; register _ccpr3l = 
_ccpr3l equ 149

        ; line_number = 253
        ; register _ccpr3h = 
_ccpr3h equ 150

        ; line_number = 255
        ; register _ccp3con = 
_ccp3con equ 150
        ; line_number = 256
        ; bind _ccp3x = _ccp3con@5
_ccp3x___byte equ _ccp3con
_ccp3x___bit equ 5
        ; line_number = 257
        ; bind _ccp3y = _ccp3con@4
_ccp3y___byte equ _ccp3con
_ccp3y___bit equ 4
        ; line_number = 258
        ; bind _ccp3m3 = _ccp3con@3
_ccp3m3___byte equ _ccp3con
_ccp3m3___bit equ 3
        ; line_number = 259
        ; bind _ccp3m2 = _ccp3con@2
_ccp3m2___byte equ _ccp3con
_ccp3m2___bit equ 2
        ; line_number = 260
        ; bind _ccp3m1 = _ccp3con@1
_ccp3m1___byte equ _ccp3con
_ccp3m1___bit equ 1
        ; line_number = 261
        ; bind _ccp3m0 = _ccp3con@0
_ccp3m0___byte equ _ccp3con
_ccp3m0___bit equ 0

        ; line_number = 263
        ; register _txsta = 
_txsta equ 152
        ; line_number = 264
        ; bind _csrc = _txsta@7
_csrc___byte equ _txsta
_csrc___bit equ 7
        ; line_number = 265
        ; bind _tx9 = _txsta@6
_tx9___byte equ _txsta
_tx9___bit equ 6
        ; line_number = 266
        ; bind _txen = _txsta@5
_txen___byte equ _txsta
_txen___bit equ 5
        ; line_number = 267
        ; bind _sync = _txsta@4
_sync___byte equ _txsta
_sync___bit equ 4
        ; line_number = 268
        ; bind _brgh = _txsta@2
_brgh___byte equ _txsta
_brgh___bit equ 2
        ; line_number = 269
        ; bind _trmt = _txsta@1
_trmt___byte equ _txsta
_trmt___bit equ 1
        ; line_number = 270
        ; bind _tx9d = _txsta@0
_tx9d___byte equ _txsta
_tx9d___bit equ 0

        ; line_number = 272
        ; register _spbrg = 
_spbrg equ 153

        ; line_number = 274
        ; register _adcon2 = 
_adcon2 equ 155
        ; line_number = 275
        ; bind _acqt2 = _adcon2@5
_acqt2___byte equ _adcon2
_acqt2___bit equ 5
        ; line_number = 276
        ; bind _acqt1 = _adcon2@4
_acqt1___byte equ _adcon2
_acqt1___bit equ 4
        ; line_number = 277
        ; bind _acqt0 = _adcon2@3
_acqt0___byte equ _adcon2
_acqt0___bit equ 3

        ; line_number = 279
        ; register _cmcon = 
_cmcon equ 156
        ; line_number = 280
        ; bind _c2out = _cmcon@7
_c2out___byte equ _cmcon
_c2out___bit equ 7
        ; line_number = 281
        ; bind _c1out = _cmcon@6
_c1out___byte equ _cmcon
_c1out___bit equ 6
        ; line_number = 282
        ; bind _c2inv = _cmcon@5
_c2inv___byte equ _cmcon
_c2inv___bit equ 5
        ; line_number = 283
        ; bind _c1inv = _cmcon@4
_c1inv___byte equ _cmcon
_c1inv___bit equ 4
        ; line_number = 284
        ; bind _cis = _cmcon@3
_cis___byte equ _cmcon
_cis___bit equ 3
        ; line_number = 285
        ; bind _cm2 = _cmcon@2
_cm2___byte equ _cmcon
_cm2___bit equ 2
        ; line_number = 286
        ; bind _cm1 = _cmcon@1
_cm1___byte equ _cmcon
_cm1___bit equ 1
        ; line_number = 287
        ; bind _cm0 = _cmcon@0
_cm0___byte equ _cmcon
_cm0___bit equ 0

        ; line_number = 289
        ; register _cvrcon = 
_cvrcon equ 157
        ; line_number = 290
        ; bind _cvren = _cvrcon@7
_cvren___byte equ _cvrcon
_cvren___bit equ 7
        ; line_number = 291
        ; bind _cvroe = _cvrcon@6
_cvroe___byte equ _cvrcon
_cvroe___bit equ 6
        ; line_number = 292
        ; bind _cvrr = _cvrcon@5
_cvrr___byte equ _cvrcon
_cvrr___bit equ 5
        ; line_number = 293
        ; bind _cvr3 = _cvrcon@3
_cvr3___byte equ _cvrcon
_cvr3___bit equ 3
        ; line_number = 294
        ; bind _cvr2 = _cvrcon@2
_cvr2___byte equ _cvrcon
_cvr2___bit equ 2
        ; line_number = 295
        ; bind _cvr1 = _cvrcon@1
_cvr1___byte equ _cvrcon
_cvr1___bit equ 1
        ; line_number = 296
        ; bind _cvr0 = _cvrcon@0
_cvr0___byte equ _cvrcon
_cvr0___bit equ 0

        ; line_number = 298
        ; register _adresl = 
_adresl equ 158

        ; line_number = 300
        ; register _adcon1 = 
_adcon1 equ 159
        ; line_number = 301
        ; bind _adfm = _adcon1@7
_adfm___byte equ _adcon1
_adfm___bit equ 7
        ; line_number = 302
        ; bind _adcs2 = _adcon1@6
_adcs2___byte equ _adcon1
_adcs2___bit equ 6
        ; line_number = 303
        ; bind _vfg1 = _adcon1@5
_vfg1___byte equ _adcon1
_vfg1___bit equ 5
        ; line_number = 304
        ; bind _vfg0 = _adcon1@4
_vfg0___byte equ _adcon1
_vfg0___bit equ 4
        ; line_number = 305
        ; bind _pcfg3 = _adcon1@3
_pcfg3___byte equ _adcon1
_pcfg3___bit equ 3
        ; line_number = 306
        ; bind _pcfg2 = _adcon1@2
_pcfg2___byte equ _adcon1
_pcfg2___bit equ 2
        ; line_number = 307
        ; bind _pcfg1 = _adcon1@1
_pcfg1___byte equ _adcon1
_pcfg1___bit equ 1
        ; line_number = 308
        ; bind _pcfg0 = _adcon1@0
_pcfg0___byte equ _adcon1
_pcfg0___bit equ 0

        ; # Bank 2:

        ; line_number = 312
        ; register _wdtcon = 
_wdtcon equ 261
        ; line_number = 313
        ; bind _wdtps3 = _wdtcon@4
_wdtps3___byte equ _wdtcon
_wdtps3___bit equ 4
        ; line_number = 314
        ; bind _wdtps2 = _wdtcon@3
_wdtps2___byte equ _wdtcon
_wdtps2___bit equ 3
        ; line_number = 315
        ; bind _wdtps1 = _wdtcon@2
_wdtps1___byte equ _wdtcon
_wdtps1___bit equ 2
        ; line_number = 316
        ; bind _wdtps0 = _wdtcon@1
_wdtps0___byte equ _wdtcon
_wdtps0___bit equ 1
        ; line_number = 317
        ; bind _swdten = _wdtcon@0
_swdten___byte equ _wdtcon
_swdten___bit equ 0

        ; line_number = 319
        ; register _lvdcon = 
_lvdcon equ 265
        ; line_number = 320
        ; bind _irvst = _lvdcon@5
_irvst___byte equ _lvdcon
_irvst___bit equ 5
        ; line_number = 321
        ; bind _lvden = _lvdcon@4
_lvden___byte equ _lvdcon
_lvden___bit equ 4
        ; line_number = 322
        ; bind _lvdl3 = _lvdcon@3
_lvdl3___byte equ _lvdcon
_lvdl3___bit equ 3
        ; line_number = 323
        ; bind _lvdl2 = _lvdcon@2
_lvdl2___byte equ _lvdcon
_lvdl2___bit equ 2
        ; line_number = 324
        ; bind _lvdl1 = _lvdcon@1
_lvdl1___byte equ _lvdcon
_lvdl1___bit equ 1
        ; line_number = 325
        ; bind _lvdl0 = _lvdcon@0
_lvdl0___byte equ _lvdcon
_lvdl0___bit equ 0

        ; line_number = 327
        ; register _pmdata = 
_pmdata equ 268

        ; line_number = 329
        ; register _pmadr = 
_pmadr equ 269

        ; line_number = 331
        ; register _pmdath = 
_pmdath equ 270

        ; line_number = 333
        ; register _pmadrh = 
_pmadrh equ 271

        ; # Bank 3:

        ; line_number = 337
        ; register _pmcon1 = 
_pmcon1 equ 396
        ; line_number = 338
        ; bind _rd = _pmcon1@0
_rd___byte equ _pmcon1
_rd___bit equ 0



        ; buffer = '_pic16f767'
        ; line_number = 341
        ; library _pic16f7x7 exited


        ; buffer = 'controller24'
        ; line_number = 10
        ; library _pic16f767 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 = 'controller24'
        ; line_number = 13
        ; library clock16mhz exited
        ; line_number = 14
        ; constant microsecond = 4
microsecond equ 4

        ; # The library of bus access intialization routines for use by the PIC16F767:
        ; line_number = 17
        ; library rb2bus_pic16f767 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 PIC16F767.
        ; #
        ; # It defines the following procedure:
        ; #
        ; # {rb2bus_initialize}({address}) The procedure that initializes the UART
        ; #                                for bus access.

        ; # Make sure we pick up the globals we need:
        ; buffer = 'rb2bus_pic16f767'
        ; 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_pic16f767'
        ; line_number = 15
        ; library rb2bus_globals exited

        ; # For the 'F767:
        ; #
        ; #    Baud_rate = Fosc/(16*(SPBRG + 1)) when BRGH=1.
        ; #
        ; # This means:
        ; #
        ; #    SPBRG + 1 = Fosc/(16*Baud_rate)           (1)
        ; #
        ; #    SPGRG = Fosc/(16*Baud_rate) - 1           (2)

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

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

        ; buffer = 'controller24'
        ; line_number = 17
        ; library rb2bus_pic16f767 exited

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

        ; line_number = 56
        ; origin 0
        org     0

        ; line_number = 58
        ;info   58, 0
        ; procedure main
main:
        ; Initialize some registers
        clrf    _adcon0
        movlw   15
        bsf     __rp0___byte, __rp0___bit
        movwf   _adcon1
        movlw   255
        movwf   _trisb
        movlw   191
        movwf   _trisc
        ; arguments_none
        ; line_number = 60
        ;  returns_nothing

        ; line_number = 62
        ;  local command byte
main__command equ globals___0+10
        ; line_number = 63
        ;  local id_index byte
main__id_index equ globals___0+11

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

        ; line_number = 67
        ;  id_index := 0
        ;info   67, 11
        clrf    main__id_index

        ; line_number = 69
        ;  loop_forever start
main__1:
        ; # Make sure that we have been selected:
        ; line_number = 71
        ;  rb2bus_error := _true
        ;info   71, 12
        bsf     rb2bus_error___byte, rb2bus_error___bit
        ; line_number = 72
        ;  while rb2bus_error start
main__2:
        ;info   72, 13
        ; =>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 = 73
        ; call rb2bus_select_wait()
        ;info   73, 15
        call    rb2bus_select_wait
        ; line_number = 74
        ;  command := rb2bus_byte_get()
        ;info   74, 16
        call    rb2bus_byte_get
        movwf   main__command

        goto    main__2
        ; Recombine size1 = 0 || size2 = 0
main__3:
        ; line_number = 72
        ;  while rb2bus_error done
        ; line_number = 76
        ; switch command >> 6 start
        ;info   76, 19
        ; switch_before:(data:00=uu=>00 code:00=uu=>00) size=7
        movlw   main__23>>8
        movwf   __pclath
main__24 equ globals___0+20
        swapf   main__command,w
        movwf   main__24
        rrf     main__24,f
        rrf     main__24,w
        andlw   3
        ; switch after expression:(data:00=uu=>00 code:00=uu=>00)
        addlw   main__23
        movwf   __pcl
        ; page_group 4
main__23:
        goto    main__25
        goto    main__25
        goto    main__21
        goto    main__22
        ; line_number = 77
        ; case 2
main__21:
        ; # 10xx xxxx:
        ; line_number = 79
        ;  switch (command >> 3) & 7 start
        ;info   79, 32
        ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
        ; line_number = 87
        ; case_maximum 7
        movlw   main__8>>8
        movwf   __pclath
main__9 equ globals___0+20
        rrf     main__command,w
        movwf   main__9
        rrf     main__9,f
        rrf     main__9,w
        andlw   7
        ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
        addlw   main__8
        movwf   __pcl
        ; page_group 8
main__8:
        goto    main__7
        goto    main__10
        goto    main__10
        goto    main__10
        goto    main__10
        goto    main__10
        goto    main__10
        goto    main__10
        ; line_number = 80
        ; case 0
main__7:
        ; # 1000 0xxx:
        ; line_number = 82
        ;  switch command & 7 start
        ;info   82, 49
        ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
        ; line_number = 86
        ; case_maximum 7
        movlw   main__5>>8
        movwf   __pclath
        movlw   7
        andwf   main__command,w
        ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
        addlw   main__5
        movwf   __pcl
        ; page_group 8
main__5:
        goto    main__4
        goto    main__6
        goto    main__6
        goto    main__6
        goto    main__6
        goto    main__6
        goto    main__6
        goto    main__6
        ; line_number = 83
        ; case 0
main__4:
        ; # 1000 0000 (Run Program)
        ; line_number = 85
        ;  call program()
        ;info   85, 63
        call    program
main__6:
        ; line_number = 82
        ;  switch command & 7 done
main__10:
        ; line_number = 79
        ;  switch (command >> 3) & 7 done
        goto    main__25
        ; line_number = 88
        ; case 3
main__22:
        ; # 11xx xxxx:
        ; line_number = 90
        ;  switch (command >> 3) & 7 start
        ;info   90, 65
        ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
        movlw   main__18>>8
        movwf   __pclath
main__19 equ globals___0+20
        rrf     main__command,w
        movwf   main__19
        rrf     main__19,f
        rrf     main__19,w
        andlw   7
        ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
        addlw   main__18
        movwf   __pcl
        ; page_group 8
main__18:
        goto    main__20
        goto    main__20
        goto    main__20
        goto    main__20
        goto    main__20
        goto    main__20
        goto    main__20
        goto    main__17
        ; line_number = 91
        ; case 7
main__17:
        ; # 1111 1xxx:
        ; line_number = 93
        ;  switch command & 7 start
        ;info   93, 82
        ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
        movlw   main__15>>8
        movwf   __pclath
        movlw   7
        andwf   main__command,w
        ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
        addlw   main__15
        movwf   __pcl
        ; page_group 8
main__15:
        goto    main__16
        goto    main__16
        goto    main__16
        goto    main__16
        goto    main__16
        goto    main__12
        goto    main__13
        goto    main__14
        ; line_number = 94
        ; case 5
main__12:
        ; # 1111 1101 (Id_next):
        ; line_number = 96
        ;  if id_index < id.size start
        ;info   96, 96
        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__11
        ; line_number = 97
        ; call rb2bus_byte_put(id[id_index])
        ;info   97, 100
        movf    main__id_index,w
        call    id
        call    rb2bus_byte_put
        ; line_number = 98
        ;  id_index := id_index + 1
        ;info   98, 103
        incf    main__id_index,f
main__11:
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 96
        ;  if id_index < id.size done
        goto    main__16
        ; line_number = 99
        ; case 6
main__13:
        ; # 1111 1110 (Id_start):
        ; line_number = 101
        ;  id_index := 0
        ;info   101, 105
        clrf    main__id_index
        goto    main__16
        ; line_number = 102
        ; case 7
main__14:
        ; # 1111 1111 (Deselect):
        ; line_number = 104
        ;  call rb2bus_deselect()
        ;info   104, 107
        call    rb2bus_deselect

main__16:
        ; line_number = 93
        ;  switch command & 7 done
main__20:
        ; line_number = 90
        ;  switch (command >> 3) & 7 done
main__25:
        ; line_number = 76
        ; switch command >> 6 done
        ; line_number = 69
        ;  loop_forever wrap-up
        goto    main__1
        ; line_number = 69
        ;  loop_forever done
        ; delay after procedure statements=non-uniform




        ; line_number = 106
        ;info   106, 109
        ; procedure wait
wait:
        ; arguments_none
        ; line_number = 108
        ;  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:00=uu=>00)
        ; line_number = 113
        ;  do_nothing
        ;info   113, 109

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




        ; line_number = 115
        ; constant stopped = 0
stopped equ 0
        ; line_number = 116
        ; constant forward_fast = 0x4f
forward_fast equ 79
        ; line_number = 117
        ; constant forward_slow = 0x17
forward_slow equ 23
        ; line_number = 118
        ; constant reverse_slow = 0-0x2f
reverse_slow equ 4294967249

        ; line_number = 120
        ;info   120, 110
        ; procedure program
program:
        ; arguments_none
        ; line_number = 122
        ;  returns_nothing

        ; # This is a quick little program to copy the contents of
        ; # A/D channel 0 on the IO8 to the motor 0 speed on the
        ; # MiniMotor2.

        ; line_number = 128
        ;  local sensor_front byte
program__sensor_front equ globals___0+12
        ; line_number = 129
        ;  local sensor_left byte
program__sensor_left equ globals___0+13
        ; line_number = 130
        ;  local sensor_right byte
program__sensor_right equ globals___0+14
        ; line_number = 131
        ;  local speed_left byte
program__speed_left equ globals___0+15
        ; line_number = 132
        ;  local speed_right byte
program__speed_right equ globals___0+16

        ; # Initialize the IO8:
        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
        ; line_number = 135
        ;  call rb2bus_address_put(8)
        ;info   135, 110
        movlw   8
        call    rb2bus_address_put

        ; # Select make all pins into outputs:
        ; line_number = 138
        ;  call rb2bus_byte_put(3)
        ;info   138, 112
        movlw   3
        call    rb2bus_byte_put
        ; line_number = 139
        ;  call rb2bus_byte_put(0xff)
        ;info   139, 114
        movlw   255
        call    rb2bus_byte_put
        ; line_number = 140
        ;  call rb2bus_byte_get()
        ;info   140, 116
        call    rb2bus_byte_get

        ; # Make all pins A/D:
        ; line_number = 143
        ;  call rb2bus_byte_put(5)
        ;info   143, 117
        movlw   5
        call    rb2bus_byte_put
        ; line_number = 144
        ;  call rb2bus_byte_put(0xff)
        ;info   144, 119
        movlw   255
        call    rb2bus_byte_put
        ; line_number = 145
        ;  call rb2bus_byte_get()
        ;info   145, 121
        call    rb2bus_byte_get

        ; line_number = 147
        ;  loop_forever start
program__1:
        ; # Read the speed from the IO8:
        ; line_number = 149
        ;  call rb2bus_address_put(8)
        ;info   149, 122
        movlw   8
        call    rb2bus_address_put
        ; line_number = 150
        ;  call rb2bus_byte_put(0x12)
        ;info   150, 124
        movlw   18
        call    rb2bus_byte_put
        ; line_number = 151
        ;  sensor_left := rb2bus_byte_get()
        ;info   151, 126
        call    rb2bus_byte_get
        movwf   program__sensor_left
        ; line_number = 152
        ;  call rb2bus_byte_put(0x14)
        ;info   152, 128
        movlw   20
        call    rb2bus_byte_put
        ; line_number = 153
        ;  sensor_front := rb2bus_byte_get()
        ;info   153, 130
        call    rb2bus_byte_get
        movwf   program__sensor_front
        ; line_number = 154
        ;  call rb2bus_byte_put(0x16)
        ;info   154, 132
        movlw   22
        call    rb2bus_byte_put
        ; line_number = 155
        ;  sensor_right := rb2bus_byte_get()
        ;info   155, 134
        call    rb2bus_byte_get
        movwf   program__sensor_right

        ; line_number = 157
        ;  if sensor_front@7 start
        ;info   157, 136
program__select__5___byte equ program__sensor_front
program__select__5___bit equ 7
        ; =>bit_code_emit@symbol(): sym=program__select__5
        ; No 1TEST: true.size=4 false.size=10
        ; No 2TEST: true.size=4 false.size=10
        ; 2GOTO: Single test with two GOTO's
        btfss   program__select__5___byte, program__select__5___bit
        goto    program__6
        ; # Front sensor is over the edge:
        ; line_number = 159
        ;  speed_left := reverse_slow
        ;info   159, 138
        movlw   4294967249
        movwf   program__speed_left
        ; line_number = 160
        ;  speed_right := forward_slow
        ;info   160, 140
        movlw   23
        movwf   program__speed_right
        ; Recombine code1_bit_states != code2_bit_states
        goto    program__7
        ; 2GOTO: Starting code 2
program__6:
        ; # Front sensor is over the table:
        ; line_number = 163
        ;  if sensor_right@7 start
        ;info   163, 143
program__select__2___byte equ program__sensor_right
program__select__2___bit equ 7
        ; =>bit_code_emit@symbol(): sym=program__select__2
        ; No 1TEST: true.size=3 false.size=3
        ; No 2TEST: true.size=3 false.size=3
        ; 2GOTO: Single test with two GOTO's
        btfss   program__select__2___byte, program__select__2___bit
        goto    program__3
        ; # Right sensor is over the edge:
        ; line_number = 165
        ;  speed_left := forward_slow
        ;info   165, 145
        movlw   23
        movwf   program__speed_left
        ; line_number = 166
        ;  speed_right := forward_fast
        ;info   166, 147
        movlw   79
        goto    program__4
        ; 2GOTO: Starting code 2
program__3:
        ; # Right sensor is over the table:
        ; line_number = 169
        ;  speed_left := forward_fast
        ;info   169, 149
        movlw   79
        movwf   program__speed_left
        ; line_number = 170
        ;  speed_right := forward_slow
        ;info   170, 151
        movlw   23
program__4:
        ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:00=uu=>00)
        movwf   program__speed_right

        ; line_number = 163
        ;  if sensor_right@7 done
program__7:
        ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:00=uu=>00)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:00=uu=>00)
        ; line_number = 157
        ;  if sensor_front@7 done
        ; # Write the speed to the MiniMotor2:
        ; line_number = 173
        ;  call rb2bus_address_put(3)
        ;info   173, 153
        movlw   3
        call    rb2bus_address_put
        ; line_number = 174
        ;  call rb2bus_byte_put(1)
        ;info   174, 155
        movlw   1
        call    rb2bus_byte_put
        ; line_number = 175
        ;  call rb2bus_byte_put(speed_left)
        ;info   175, 157
        movf    program__speed_left,w
        call    rb2bus_byte_put
        ; line_number = 176
        ;  call rb2bus_byte_put(3)
        ;info   176, 159
        movlw   3
        call    rb2bus_byte_put
        ; line_number = 177
        ;  call rb2bus_byte_put(speed_right)
        ;info   177, 161
        movf    program__speed_right,w
        call    rb2bus_byte_put

        ; line_number = 179
        ;  call delay_ms(10)
        ;info   179, 163
        movlw   10
        call    delay_ms


        ; line_number = 147
        ;  loop_forever wrap-up
        goto    program__1
        ; line_number = 147
        ;  loop_forever done
        ; delay after procedure statements=non-uniform




        ; line_number = 182
        ;info   182, 166
        ; procedure rb2bus_address_put
rb2bus_address_put:
        ; Last argument is sitting in W; save into argument variable
        movwf   rb2bus_address_put__address
        ; delay=4294967295
        ; line_number = 183
        ; argument address byte
rb2bus_address_put__address equ globals___0+18
        ; line_number = 184
        ;  returns_nothing

        ; # This procedure will select the module that matches {address}.

        ; line_number = 188
        ;  local result byte
rb2bus_address_put__result equ globals___0+17

        ; # Wait until {_txreg} is ready for a value:
        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
        ; line_number = 191
        ;  while !_txif start
rb2bus_address_put__1:
        ;info   191, 167
        ; =>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_address_put__2
        ; line_number = 192
        ; call wait()
        ;info   192, 169
        call    wait

        goto    rb2bus_address_put__1
rb2bus_address_put__2:
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 191
        ;  while !_txif done
        ; # Ship the address select byte:
        ; line_number = 195
        ;  _adden := _false
        ;info   195, 171
        bcf     _adden___byte, _adden___bit
        ; line_number = 196
        ;  _tx9d := _true
        ;info   196, 172
        bsf     __rp0___byte, __rp0___bit
        bsf     _tx9d___byte, _tx9d___bit
        ; line_number = 197
        ;  _txreg := address
        ;info   197, 174
        bcf     __rp0___byte, __rp0___bit
        movf    rb2bus_address_put__address,w
        movwf   _txreg

        ; line_number = 199
        ;  loop_exactly 2 start
        ;info   199, 177
rb2bus_address_put__3 equ globals___0+21
        movlw   2
        movwf   rb2bus_address_put__3
rb2bus_address_put__4:
        ; line_number = 200
        ; while !_rcif start
rb2bus_address_put__5:
        ;info   200, 179
        ; =>bit_code_emit@symbol(): sym=_rcif
        ; 1TEST: Single test with code in skip slot
        btfss   _rcif___byte, _rcif___bit
        ; line_number = 201
        ; do_nothing
        ;info   201, 180
        goto    rb2bus_address_put__5
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 200
        ; while !_rcif done
        ; line_number = 202
        ; result := _rcreg
        ;info   202, 181
        movf    _rcreg,w
        movwf   rb2bus_address_put__result
        ; line_number = 203
        ;  if _oerr start
        ;info   203, 183
        ; =>bit_code_emit@symbol(): sym=_oerr
        ; 1TEST: Single test with code in skip slot
        btfsc   _oerr___byte, _oerr___bit
        ; line_number = 204
        ; _cren := _false
        ;info   204, 184
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 203
        ;  if _oerr done
        ; line_number = 205
        ; if _ferr start
        ;info   205, 185
        ; =>bit_code_emit@symbol(): sym=_ferr
        ; 1TEST: Single test with code in skip slot
        btfsc   _ferr___byte, _ferr___bit
        ; line_number = 206
        ; _cren := _false
        ;info   206, 186
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 205
        ; if _ferr done
        ; line_number = 207
        ; _cren := _true
        ;info   207, 187
        bsf     _cren___byte, _cren___bit

        ; line_number = 199
        ;  loop_exactly 2 wrap-up
        decfsz  rb2bus_address_put__3,f
        goto    rb2bus_address_put__4
        ; line_number = 199
        ;  loop_exactly 2 done
        ; delay after procedure statements=non-uniform
        ; Implied return
        retlw   0




        ; line_number = 209
        ;info   209, 191
        ; procedure delay_ms
delay_ms:
        ; Last argument is sitting in W; save into argument variable
        movwf   delay_ms__ms
        ; delay=4294967295
        ; line_number = 210
        ; argument ms byte
delay_ms__ms equ globals___0+19
        ; line_number = 211
        ;  returns_nothing

        ; # This procedure will delay {ms} milliseconds.

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
        ; line_number = 215
        ;  loop_exactly ms start
        ;info   215, 192
delay_ms__1 equ globals___0+22
        movf    delay_ms__ms,w
        movwf   delay_ms__1
delay_ms__2:
        ; line_number = 216
        ; loop_exactly 100 start
        ;info   216, 194
delay_ms__3 equ globals___0+23
        movlw   100
        movwf   delay_ms__3
delay_ms__4:
        ; line_number = 217
        ; delay 10*microsecond start
        ;info   217, 196
        ; Delay expression evaluates to 40
        ; line_number = 218
        ; do_nothing
        ;info   218, 196


        ; Delay 40 cycles
        ; Delay loop takes 10 * 4 = 40 cycles
        movlw   10
delay_ms__5:
        addlw   255
        btfss   __z___byte, __z___bit
        goto    delay_ms__5
        ; line_number = 217
        ; delay 10*microsecond done
        ; line_number = 216
        ; loop_exactly 100 wrap-up
        decfsz  delay_ms__3,f
        goto    delay_ms__4
        ; line_number = 216
        ; loop_exactly 100 done
        ; line_number = 215
        ;  loop_exactly ms wrap-up
        decfsz  delay_ms__1,f
        goto    delay_ms__2
        ; line_number = 215
        ;  loop_exactly ms done
        ; delay after procedure statements=non-uniform
        ; Implied return
        retlw   0




        ; line_number = 221
        ; string id = "\16,0,24,1,3,14\Controller24-A\7\Gramson" start
        ; id = '\16,0,24,1,3,14\Controller24-A\7\Gramson'
id:
        ; Temporarily save index into FSR
        movwf   __fsr
        ; Initialize PCLATH to point to this code page
        movlw   id___base>>8
        movwf   __pclath
        ; Restore index from FSR
        movf    __fsr,w
        addlw   id___base
        ; Index to the correct return value
        movwf   __pcl
        ; page_group 28
id___base:
        retlw   16
        retlw   0
        retlw   24
        retlw   1
        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   52
        retlw   45
        retlw   65
        retlw   7
        retlw   71
        retlw   114
        retlw   97
        retlw   109
        retlw   115
        retlw   111
        retlw   110
        ; line_number = 221
        ; string id = "\16,0,24,1,3,14\Controller24-A\7\Gramson" start





        ; Appending 8 delayed procedures to code bank 0
        ; buffer = 'rb2bus_pic16f767'
        ; line_number = 30
        ;info   30, 239
        ; procedure rb2bus_initialize
rb2bus_initialize:
        ; Last argument is sitting in W; save into argument variable
        movwf   rb2bus_initialize__address
        ; delay=4294967295
        ; line_number = 31
        ; argument address byte
rb2bus_initialize__address equ globals___0+2
        ; line_number = 32
        ;  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 PIC16F767.

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

        ; # Warm up the UART:
        ; line_number = 41
        ;  _trisc@7 := _true
        ;info   41, 242
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 = 42
        ;  _trisc@6 := _true
        ;info   42, 244
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 = 45
        ;  _txsta := 0
        ;info   45, 245
        clrf    _txsta
        ; line_number = 46
        ;  _tx9 := _true
        ;info   46, 246
        bsf     _tx9___byte, _tx9___bit
        ; #_tx9 := _false
        ; line_number = 48
        ;  _txen := _true
        ;info   48, 247
        bsf     _txen___byte, _txen___bit
        ; # 500000 kHz:
        ; line_number = 50
        ;  _brgh := _true
        ;info   50, 248
        bsf     _brgh___byte, _brgh___bit

        ; # Initialize the {_rcsta} register:
        ; line_number = 53
        ;  _rcsta := 0
        ;info   53, 249
        bcf     __rp0___byte, __rp0___bit
        clrf    _rcsta
        ; line_number = 54
        ;  _spen := _true
        ;info   54, 251
        bsf     _spen___byte, _spen___bit
        ; line_number = 55
        ;  _rx9 := _true
        ;info   55, 252
        bsf     _rx9___byte, _rx9___bit
        ; line_number = 56
        ;  _cren := _true
        ;info   56, 253
        bsf     _cren___byte, _cren___bit
        ; #_adden := _true
        ; line_number = 58
        ;  _adden := _false
        ;info   58, 254
        bcf     _adden___byte, _adden___bit

        ; # Set up the baud rate generator to 500000kHz:
        ; #_spbrg := 1
        ; line_number = 62
        ;  _spbrg := spbrg_500k
        ;info   62, 255
        movlw   1
        bsf     __rp0___byte, __rp0___bit
        movwf   _spbrg

        ; line_number = 64
        ;  rb2bus_selected := _false
        ;info   64, 258
        bcf     __rp0___byte, __rp0___bit
        bcf     rb2bus_selected___byte, rb2bus_selected___bit
        ; line_number = 65
        ;  rb2bus_error := _true
        ;info   65, 260
        bsf     rb2bus_error___byte, rb2bus_error___bit
        ; line_number = 66
        ;  rb2bus_index := 0
        ;info   66, 261
        clrf    rb2bus_index


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




        ; line_number = 69
        ;info   69, 263
        ; procedure rb2bus_eedata_read
rb2bus_eedata_read:
        ; arguments_none
        ; line_number = 71
        ;  returns byte

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

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
        ; line_number = 76
        ;  return 0 start
        ; line_number = 76
        ;info   76, 263
        retlw   0
        ; line_number = 76
        ;  return 0 done


        ; delay after procedure statements=non-uniform




        ; line_number = 79
        ;info   79, 264
        ; 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 = 80
        ; argument address byte
rb2bus_eedata_write__address equ globals___0+3
        ; line_number = 81
        ;  returns_nothing

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

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
        ; line_number = 86
        ;  do_nothing
        ;info   86, 265

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




        ; buffer = 'rb2bus'
        ; line_number = 57
        ;info   57, 266
        ; 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+4
        ; 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:00=uu=>00)
        ; line_number = 71
        ;  rb2bus_error := _false
        ;info   71, 266
        bcf     rb2bus_error___byte, rb2bus_error___bit
        ; line_number = 72
        ;  while !rb2bus_selected start
rb2bus_select_wait__1:
        ;info   72, 267
        ; =>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, 269
        bsf     _adden___byte, _adden___bit
        ; # Wait for a byte to arrive.
        ; line_number = 75
        ;  while !_rcif start
rb2bus_select_wait__2:
        ;info   75, 270
        ; =>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, 272
        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, 274
        bcf     rb2bus_select_wait__address_bit___byte, rb2bus_select_wait__address_bit___bit
        ; line_number = 80
        ;  if _rx9d start
        ;info   80, 275
        ; =>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, 276
        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, 277
        movf    _rcreg,w
        movwf   rb2bus_select_wait__value

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

        ; line_number = 91
        ;  if address_bit start
        ;info   91, 284
        ; =>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, 286
        ; 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, 290
        bsf     rb2bus_selected___byte, rb2bus_selected___bit
        ; line_number = 94
        ;  call rb2bus_byte_put(rb2_ok)
        ;info   94, 291
        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, 295
        ; 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:00=uu=>00)
        ; line_number = 104
        ;  rb2bus_selected := _false
        ;info   104, 295
        bcf     rb2bus_selected___byte, rb2bus_selected___bit


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




        ; line_number = 107
        ;info   107, 297
        ; 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+5
        ; 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:00=uu=>00)
        ; line_number = 123
        ;  if rb2bus_error start
        ;info   123, 297
        ; =>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, 298
        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, 299
        bcf     _adden___byte, _adden___bit
        ; line_number = 128
        ;  while !_rcif start
rb2bus_byte_get__1:
        ;info   128, 300
        ; =>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, 302
        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, 304
        bcf     rb2bus_byte_get__address_bit___byte, rb2bus_byte_get__address_bit___bit
        ; line_number = 133
        ;  if _rx9d start
        ;info   133, 305
        ; =>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, 306
        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, 307
        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, 309
        ; =>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, 310
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 139
        ;  if _oerr done
        ; line_number = 141
        ; if _ferr start
        ;info   141, 311
        ; =>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, 312
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 141
        ; if _ferr done
        ; line_number = 143
        ; _cren := _true
        ;info   143, 313
        bsf     _cren___byte, _cren___bit

        ; line_number = 145
        ;  if address_bit start
        ;info   145, 314
        ; =>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, 316
        ; 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, 320
        bsf     rb2bus_selected___byte, rb2bus_selected___bit
        ; line_number = 150
        ;  _adden := _false
        ;info   150, 321
        bcf     _adden___byte, _adden___bit

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

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


        ; delay after procedure statements=non-uniform




        ; line_number = 166
        ;info   166, 331
        ; 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+6
        ; 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:00=uu=>00)
        ; line_number = 174
        ;  if !rb2bus_error start
        ;info   174, 332
        ; =>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, 334
        ; =>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, 336
        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, 338
        bcf     _adden___byte, _adden___bit
        ; line_number = 181
        ;  _tx9d := _false
        ;info   181, 339
        bsf     __rp0___byte, __rp0___bit
        bcf     _tx9d___byte, _tx9d___bit
        ; line_number = 182
        ;  _txreg := value
        ;info   182, 341
        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, 344
        ; =>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, 346
        ; line_number = 189
        ;info   189, 346
        movf    _rcreg,w

        ; # Recover from any receive errors by toggling {_cren}:
        ; line_number = 192
        ;  if _oerr start
        ;info   192, 347
        ; =>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, 348
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 192
        ;  if _oerr done
        ; line_number = 194
        ; if _ferr start
        ;info   194, 349
        ; =>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, 350
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 194
        ; if _ferr done
        ; line_number = 196
        ; _cren := _true
        ;info   196, 351
        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, 353
        ; 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+9
        ; 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+7
        ; line_number = 207
        ;  local temp byte
rb2bus_command__temp equ globals___0+8

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

        ; # Fetch new address:
        ; line_number = 216
        ;  new_address := rb2bus_byte_get()
        ;info   216, 370
        call    rb2bus_byte_get
        movwf   rb2bus_command__new_address
        ; line_number = 217
        ;  if new_address = 0 || new_address = rb2bus_address start
        ;info   217, 372
        ; 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, 379
        movlw   0
        call    rb2bus_byte_put
        ; line_number = 219
        ;  rb2bus_error := _true
        ;info   219, 381
        bsf     rb2bus_error___byte, rb2bus_error___bit
        ; line_number = 220
        ;  rb2bus_selected := _false
        ;info   220, 382
        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, 384
        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, 386
        call    rb2bus_byte_get
        movwf   rb2bus_command__temp
        ; line_number = 227
        ;  if temp != new_address start
        ;info   227, 388
        ; 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, 392
        movf    rb2bus_command__new_address,w
        call    rb2bus_eedata_write
        ; line_number = 233
        ;  temp := rb2bus_eedata_read()
        ;info   233, 394
        call    rb2bus_eedata_read
        movwf   rb2bus_command__temp
        ; line_number = 234
        ;  if temp = new_address start
        ;info   234, 396
        ; 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, 400
        movf    rb2bus_command__new_address,w
        movwf   rb2bus_address
        ; line_number = 236
        ;  call rb2bus_byte_put(rb2_ok)
        ;info   236, 402
        movlw   165
        goto    rb2bus_command__2
        ; 2GOTO: Starting code 2
rb2bus_command__1:
        ; line_number = 238
        ; call rb2bus_byte_put(0)
        ;info   238, 404
        movlw   0
rb2bus_command__2:
        ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:00=uu=>00)
        ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:00=uu=>00)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:00=uu=>00)
        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, 407
        movlw   0
        call    rb2bus_byte_put
        ; line_number = 229
        ;  rb2bus_error := _true
        ;info   229, 409
        bsf     rb2bus_error___byte, rb2bus_error___bit
        ; line_number = 230
        ;  rb2bus_selected := _false
        ;info   230, 410
        bcf     rb2bus_selected___byte, rb2bus_selected___bit
rb2bus_command__4:
        ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:00=uu=>00)
        ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:00=uu=>00)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:00=uu=>00)
        ; line_number = 227
        ;  if temp != new_address done
rb2bus_command__7:
        ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:00=uu=>00)
        ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:00=uu=>00)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:00=uu=>00)
        ; &&||: 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:00=uu=>00)
        ; 2GOTO: code2 final bitstates:(data:XX=cc=>XX code:00=uu=>00)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:00=uu=>00)
        ; 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, 412
        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, 416
        movf    rb2bus_index,w
        call    id
        call    rb2bus_byte_put
        ; line_number = 243
        ;  rb2bus_index := rb2bus_index + 1
        ;info   243, 419
        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, 421
        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, 423
        call    rb2bus_deselect


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




        ; 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
        ; Configuration bits
        ; address = 0x2007, fill = 0x600
        ; cp = off (0x2000)
        ; cpmx = rc1 (0x1000)
        ; debug = off (0x800)
        ; borv = borv00 (0x0)
        ; boren = off (0x0)
        ; mclre = off (0x0)
        ; pwrten = off (0x8)
        ; wdten = off (0x0)
        ; fosc = hs (0x2)
        ; 15882 = 0x3e0a
        ; 8199 = 0x2007
        __config 8199, 15882
        ; Configuration bits
        ; address = 0x2008, fill = 0x3fbc
        ; borsen = off (0x0)
        ; ieso = off (0x0)
        ; fcmen = off (0x0)
        ; 16316 = 0x3fbc
        ; 8200 = 0x2008
        __config 8200, 16316
        ; 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=24 Bits=4 Available=55
        ; 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
