        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 PIC16F767
        ; #library _pic16f767
        ; buffer = 'test'
        ; line_number = 11
        ; library _pic16f876 entered

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

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


        ; # Register and pin definitions:

        ; line_number = 358
        ; library _pic16f87x entered

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

        ; # Common declarations for PIC16F87x series microcontrollers:

        ; buffer = '_pic16f87x'
        ; line_number = 8
        ; library _standard entered

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

        ; # Standard definition for uCL:

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


        ; buffer = '_pic16f87x'
        ; line_number = 8
        ; library _standard exited

        ; # Register and pin definitions:

        ; # Bank 0:

        ; line_number = 14
        ; register _indf = 
_indf equ 0

        ; line_number = 16
        ; register _tmr0 = 
_tmr0 equ 1

        ; line_number = 18
        ; register _pcl = 
_pcl equ 2

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

        ; line_number = 30
        ; register _fsr = 
_fsr equ 4

        ; line_number = 32
        ; register _porta = 
_porta equ 5

        ; line_number = 34
        ; register _portb = 
_portb equ 6

        ; line_number = 36
        ; register _portc = 
_portc equ 7

        ; line_number = 38
        ; register _pclath = 
_pclath equ 10

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

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

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

        ; line_number = 65
        ; register _tmr1l = 
_tmr1l equ 14

        ; line_number = 67
        ; register _tmr1h = 
_tmr1h equ 15

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

        ; line_number = 77
        ; register _tmr2 = 
_tmr2 equ 17

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

        ; line_number = 88
        ; register _sspbuf = 
_sspbuf equ 19

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

        ; line_number = 100
        ; register _ccpr1l = 
_ccpr1l equ 21

        ; line_number = 102
        ; register _ccpr1h = 
_ccpr1h equ 22

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

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

        ; line_number = 122
        ; register _txreg = 
_txreg equ 25

        ; line_number = 124
        ; register _rcreg = 
_rcreg equ 26

        ; line_number = 126
        ; register _ccpr2l = 
_ccpr2l equ 27

        ; line_number = 128
        ; register _ccpr2h = 
_ccpr2h equ 28

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

        ; line_number = 138
        ; register _adresh = 
_adresh equ 30

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

        ; # Bank 1:

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

        ; line_number = 161
        ; register _trisa = 
_trisa equ 133

        ; line_number = 163
        ; register _trisb = 
_trisb equ 134

        ; line_number = 165
        ; register _trisc = 
_trisc equ 135

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

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

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

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

        ; line_number = 196
        ; register _pr2 = 
_pr2 equ 146

        ; line_number = 198
        ; register _sspadd = 
_sspadd equ 147

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

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

        ; line_number = 219
        ; register _spbrg = 
_spbrg equ 153

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

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

        ; line_number = 240
        ; register _adresl = 
_adresl equ 158

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

        ; # Bank 2:

        ; line_number = 251
        ; register _eedata = 
_eedata equ 268

        ; line_number = 253
        ; register _eeadr = 
_eeadr equ 269

        ; line_number = 255
        ; register _eedath = 
_eedath equ 270

        ; line_number = 257
        ; register _eeadrh = 
_eeadrh equ 271

        ; # Bank 3:

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

        ; line_number = 268
        ; register _eecon2 = 
_eecon2 equ 397


        ; buffer = '_pic16f876'
        ; line_number = 358
        ; library _pic16f87x exited


        ; buffer = 'test'
        ; line_number = 11
        ; library _pic16f876 exited

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

        ; # The libary of bus access routines for use by the PIC16F767:
        ; #library rb2bus_pic16f767
        ; line_number = 19
        ; library rb2bus_pic16f876 entered

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

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

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

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

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

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


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

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

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

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

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

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

        ; buffer = 'test'
        ; line_number = 19
        ; library rb2bus_pic16f876 exited

        ; # Make sure we get the bus access routines:
        ; line_number = 22
        ; library rb2bus entered

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

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

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

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

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

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

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

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

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

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


        ; line_number = 64
        ; constant rb2_orient5_address = 6
rb2_orient5_address equ 6

        ; line_number = 66
        ; constant rb2_compass8_address = 7
rb2_compass8_address equ 7

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

        ; line_number = 80
        ; constant rb2_sonar2_address = 9
rb2_sonar2_address equ 9

        ; line_number = 82
        ; constant rb2_voice1_address = 10
rb2_voice1_address equ 10

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

        ; line_number = 108
        ; constant rb2_controller28_address = 28
rb2_controller28_address equ 28

        ; line_number = 110
        ; constant rb2_lcd32_address = 32
rb2_lcd32_address equ 32
        ; line_number = 111
        ; constant rb2_lcd32_row_set = 4
rb2_lcd32_row_set equ 4
        ; line_number = 112
        ; constant rb2_lcd32_row0_set = rb2_lcd32_row_set | 0
rb2_lcd32_row0_set equ 4
        ; line_number = 113
        ; constant rb2_lcd32_row1_set = rb2_lcd32_row_set | 1
rb2_lcd32_row1_set equ 5
        ; line_number = 114
        ; constant rb2_lcd32_row2_set = rb2_lcd32_row_set | 2
rb2_lcd32_row2_set equ 6
        ; line_number = 115
        ; constant rb2_lcd32_row3_set = rb2_lcd32_row_set | 3
rb2_lcd32_row3_set equ 7
        ; line_number = 116
        ; constant rb2_lcd32_new_line = 0xa
rb2_lcd32_new_line equ 10
        ; line_number = 117
        ; constant rb2_lcd32_form_feed = 0xc
rb2_lcd32_form_feed equ 12
        ; line_number = 118
        ; constant rb2_lcd32_carriage_return = 0xd
rb2_lcd32_carriage_return equ 13
        ; line_number = 119
        ; constant rb2_lcd32_column_set = 0x10
rb2_lcd32_column_set equ 16


        ; 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 = 'test'
        ; line_number = 22
        ; library rb2bus exited

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

        ; # Only the RX and TX pins on this package are used:
        ; line_number = 28
        ; package pdip
        ; line_number = 29
        ; pin 1 = mclr
        ; line_number = 30
        ;  pin 2 = ra0_unused
        ; line_number = 31
        ;  pin 3 = ra1_unused
        ; line_number = 32
        ;  pin 4 = ra2_unused
        ; line_number = 33
        ;  pin 5 = ra3_unused
        ; line_number = 34
        ;  pin 6 = ra4_unused
        ; line_number = 35
        ;  pin 7 = ra5_unused
        ; line_number = 36
        ;  pin 8 = ground
        ; line_number = 37
        ;  pin 9 = osc1
        ; line_number = 38
        ;  pin 10 = osc2
        ; line_number = 39
        ;  pin 11 = rc0_unused
        ; line_number = 40
        ;  pin 12 = rc1_unused
        ; line_number = 41
        ;  pin 13 = rc2_unused
        ; line_number = 42
        ;  pin 14 = rc3_unused
        ; line_number = 43
        ;  pin 15 = rc4_unused
        ; line_number = 44
        ;  pin 16 = rc5_unused
        ; line_number = 45
        ;  pin 17 = tx
        ; line_number = 46
        ;  pin 18 = rx
        ; line_number = 47
        ;  pin 19 = ground2
        ; line_number = 48
        ;  pin 20 = power_supply
        ; line_number = 49
        ;  pin 21 = rb0_unused
        ; line_number = 50
        ;  pin 22 = rb1_unused
        ; line_number = 51
        ;  pin 23 = rb2_unused
        ; line_number = 52
        ;  pin 24 = rb3_unused
        ; line_number = 53
        ;  pin 25 = rb4_unused
        ; line_number = 54
        ;  pin 26 = rb5_unused
        ; line_number = 55
        ;  pin 27 = rb6_unused
        ; line_number = 56
        ;  pin 28 = rb7_unused

        ; line_number = 59
        ; library_bank 0
        ; line_number = 60
        ; library _signed16 entered

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

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

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

        ; buffer = '_signed16'
        ; line_number = 44
        ; global _signed16_a0 byte	# A Register MSB
_signed16_a0 equ globals___0+12
        ; line_number = 45
        ; global _signed16_a1 byte	# A Register LSB
_signed16_a1 equ globals___0+13
        ; line_number = 46
        ; global _signed16_b0 byte	# B Register MSB
_signed16_b0 equ globals___0+14
        ; line_number = 47
        ; global _signed16_b1 byte	# B Register LSB
_signed16_b1 equ globals___0+15
        ; line_number = 48
        ; global _signed16_result3 byte	# Mulitply result MSB
_signed16_result3 equ globals___0+16
        ; line_number = 49
        ; global _signed16_result2 byte
_signed16_result2 equ globals___0+17
        ; line_number = 50
        ; global _signed16_result1 byte
_signed16_result1 equ globals___0+18
        ; line_number = 51
        ; global _signed16_result0 byte	# Mulitply resultLSB
_signed16_result0 equ globals___0+19
        ; line_number = 52
        ; global _signed16_neg_flag byte	# Negative flag
_signed16_neg_flag equ globals___0+20
        ; line_number = 53
        ; global _signed16_count byte	# Loop counter for divide
_signed16_count equ globals___0+21

        ; # Bindings for 
        ; line_number = 56
        ; bind _signed16_rem0 = _signed16_result2
_signed16_rem0 equ globals___0+17
        ; line_number = 57
        ; bind _signed16_rem1 = _signed16_result3
_signed16_rem1 equ globals___0+16
        ; line_number = 58
        ; bind _signed16_temp0 = _signed16_result0
_signed16_temp0 equ globals___0+19
        ; line_number = 59
        ; bind _signed16_temp1 = _signed16_result1
_signed16_temp1 equ globals___0+18
        ; line_number = 60
        ; bind _signed16_sign = _signed16_neg_flag
_signed16_sign equ globals___0+20

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

        ; Delaying code generation for procedure  _signed16_divide_raw

        ; buffer = 'test'
        ; line_number = 60
        ; library _signed16 exited


        ; line_number = 64
        ; origin 0
        org     0

        ; line_number = 66
        ;info   66, 0
        ; procedure start
start:
        ; arguments_none
        ; line_number = 68
        ;  returns_nothing
        ; line_number = 69
        ;  return_suppress

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
        ; line_number = 71
        ;  assemble
        ;info   71, 0
        ; line_number = 72
        ;info   72, 0
        ; codebank start, main
        ; line_number = 73
        ;info   73, 0
        goto    main

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




        ; line_number = 75
        ; origin 4
        org     4

        ; line_number = 77
        ;info   77, 4
        ; procedure interrupt
interrupt:
interrupt___w_save equ shared___globals+1
interrupt___status_save equ shared___globals
        ; Carefully save __w and __tatus into RAM
        ; Save W first (easy)
        movwf   interrupt___w_save
        ; Save Status without smashing it (tricky)
        ; Move swapped version of status into W
        swapf   __status,w
        ; Store swapped version of status into RAM
        movwf   interrupt___status_save
        ; arguments_none
        ; line_number = 79
        ;  returns_nothing

        ; # An interrupt soaker.

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


        ; delay after procedure statements=non-uniform
        bcf     __rp0___byte, __rp0___bit
        bcf     __rp1___byte, __rp1___bit
        ; Interrupt return
        ; Carefully restore __w and __tatus from RAM
        ; Restore swapped status into W
        swapf   interrupt___status_save,w
        ; W now contains (unswapped) status
        ; Restore W to __status
        movwf   __status
        ; From here on out, do not modify __status
        ; Swap saved W register in RAM
        swapf   interrupt___w_save,f
        ; Unswap the saved W reg and restore to W
        swapf   interrupt___w_save,w
        ; __w and __status are now restored
        ; Return from interrupt
        retfie  




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

        ; line_number = 90
        ;  local command byte
main__command equ globals___0+42
        ; line_number = 91
        ;  local id_index byte
main__id_index equ globals___0+43

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>01 code:00=uu=>00)
        ; line_number = 93
        ;  _gie := _false
        ;info   93, 26
        bcf     _gie___byte, _gie___bit
        ; line_number = 94
        ;  call rb2bus_initialize(28)
        ;info   94, 27
        movlw   28
        bcf     __rp0___byte, __rp0___bit
        call    rb2bus_initialize

        ; line_number = 96
        ;  id_index := 0
        ;info   96, 30
        clrf    main__id_index

        ; line_number = 98
        ;  loop_forever start
main__1:
        ; # Make sure that we have been selected:
        ; line_number = 100
        ;  rb2bus_error := _true
        ;info   100, 31
        bsf     rb2bus_error___byte, rb2bus_error___bit
        ; line_number = 101
        ;  while rb2bus_error start
main__2:
        ;info   101, 32
        ; =>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 = 102
        ; call rb2bus_select_wait()
        ;info   102, 34
        call    rb2bus_select_wait
        ; line_number = 103
        ;  command := rb2bus_byte_get()
        ;info   103, 35
        call    rb2bus_byte_get
        movwf   main__command

        goto    main__2
        ; Recombine size1 = 0 || size2 = 0
main__3:
        ; line_number = 101
        ;  while rb2bus_error done
        ; line_number = 105
        ; switch command >> 6 start
        ;info   105, 38
        ; switch_before:(data:00=uu=>00 code:00=uu=>00) size=7
        movlw   main__23>>8
        movwf   __pclath
main__24 equ globals___0+55
        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 = 106
        ; case 2
main__21:
        ; # 10xx xxxx:
        ; line_number = 108
        ;  switch (command >> 3) & 7 start
        ;info   108, 51
        ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
        ; line_number = 116
        ; case_maximum 7
        movlw   main__8>>8
        movwf   __pclath
main__9 equ globals___0+55
        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 = 109
        ; case 0
main__7:
        ; # 1000 0xxx:
        ; line_number = 111
        ;  switch command & 7 start
        ;info   111, 68
        ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
        ; line_number = 115
        ; 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)
        ; All case bodies prefer this bit set
        bsf     __rp0___byte, __rp0___bit
        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 = 112
        ; case 0
main__4:
        ; # 1000 0000 (Run Program)
        ; line_number = 114
        ;  call program2()
        ;info   114, 83
        call    program2
main__6:
        ; line_number = 111
        ;  switch command & 7 done
main__10:
        ; line_number = 108
        ;  switch (command >> 3) & 7 done
        goto    main__25
        ; line_number = 117
        ; case 3
main__22:
        ; # 11xx xxxx:
        ; line_number = 119
        ;  switch (command >> 3) & 7 start
        ;info   119, 85
        ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
        movlw   main__18>>8
        movwf   __pclath
main__19 equ globals___0+55
        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 = 120
        ; case 7
main__17:
        ; # 1111 1xxx:
        ; line_number = 122
        ;  switch command & 7 start
        ;info   122, 102
        ; 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 = 123
        ; case 5
main__12:
        ; # 1111 1101 (Id_next):
        ; line_number = 125
        ;  if id_index < id.size start
        ;info   125, 116
        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 = 126
        ; call rb2bus_byte_put(id[id_index])
        ;info   126, 120
        movf    main__id_index,w
        call    id
        call    rb2bus_byte_put
        ; line_number = 127
        ;  id_index := id_index + 1
        ;info   127, 123
        incf    main__id_index,f
main__11:
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 125
        ;  if id_index < id.size done
        goto    main__16
        ; line_number = 128
        ; case 6
main__13:
        ; # 1111 1110 (Id_start):
        ; line_number = 130
        ;  id_index := 0
        ;info   130, 125
        clrf    main__id_index
        goto    main__16
        ; line_number = 131
        ; case 7
main__14:
        ; # 1111 1111 (Deselect):
        ; line_number = 133
        ;  call rb2bus_deselect()
        ;info   133, 127
        call    rb2bus_deselect

main__16:
        ; line_number = 122
        ;  switch command & 7 done
main__20:
        ; line_number = 119
        ;  switch (command >> 3) & 7 done
main__25:
        ; line_number = 105
        ; switch command >> 6 done
        ; line_number = 98
        ;  loop_forever wrap-up
        ; Need to adjust code banks to match front of loop
        bcf     __rp0___byte, __rp0___bit
        goto    main__1
        ; line_number = 98
        ;  loop_forever done
        ; delay after procedure statements=non-uniform




        ; line_number = 135
        ;info   135, 130
        ; procedure wait
wait:
        ; arguments_none
        ; line_number = 137
        ;  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 = 142
        ;  do_nothing
        ;info   142, 130


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




        ; #procedure program
        ; #    arguments_none
        ; #    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.
        ; #
        ; #    # Initialize the LCD32:
        ; #
        ; #    _gie := _false
        ; #
        ; #    call rb2bus_address_put(rb2_lcd32_address)
        ; #    call rb2bus_byte_put(rb2_lcd32_form_feed)
        ; #
        ; #    call rb2bus_address_put(rb2_lcd32_address + 1)
        ; #    call rb2bus_byte_put(rb2_lcd32_form_feed)
        ; #
        ; #    loop_forever
        ; #	call rb2bus_address_put(rb2_shaft2_address)
        ; #	call rb2bus_byte_put(rb2_shaft2_navigation_latch)
        ; #
        ; #	call number_show('X', rb2_shaft2_x_get, 0, 0, 0)
        ; #	call number_show('Y', rb2_shaft2_y_get, 0, 0, 8)
        ; #
        ; #	call number_show('B', rb2_shaft2_bearing16_get, 1, 0, 0)
        ; #
        ; #	call number_show('b', rb2_shaft2_target_bearing16_get, 1, 1, 0)
        ; #	call number_show('d', rb2_shaft2_target_distance_get, 1, 1, 8)
        ; #
        ; #	call delay_ms(200)
        ; #
        ; #	do_nothing


        ; line_number = 180
        ;info   180, 131
        ; procedure number_show
number_show:
        ; Last argument is sitting in W; save into argument variable
        movwf   number_show__column
        ; delay=4294967295
        ; line_number = 181
        ; argument label byte
number_show__label equ globals___0+46
        ; line_number = 182
        ; argument command byte
number_show__command equ globals___0+47
        ; line_number = 183
        ; argument lcd byte
number_show__lcd equ globals___0+48
        ; line_number = 184
        ; argument row byte
number_show__row equ globals___0+49
        ; line_number = 185
        ; argument column byte
number_show__column equ globals___0+50
        ; line_number = 186
        ;  returns_nothing

        ; # This routine will show the number obtained via {command} from
        ; # the Shaft5 module starting a {row} and {column} on the LCD32
        ; # module.  {label} is the label to be displayed.

        ; line_number = 192
        ;  local high byte
number_show__high equ globals___0+44
        ; line_number = 193
        ;  local low byte
number_show__low equ globals___0+45

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
        ; line_number = 195
        ;  call rb2bus_address_put(rb2_shaft2_address)
        ;info   195, 132
        movlw   5
        call    rb2bus_address_put
        ; line_number = 196
        ;  call rb2bus_byte_put(command)
        ;info   196, 134
        movf    number_show__command,w
        call    rb2bus_byte_put
        ; line_number = 197
        ;  high := rb2bus_byte_get()
        ;info   197, 136
        call    rb2bus_byte_get
        movwf   number_show__high
        ; line_number = 198
        ;  low := rb2bus_byte_get()
        ;info   198, 138
        call    rb2bus_byte_get
        movwf   number_show__low

        ; line_number = 200
        ;  call rb2bus_address_put(rb2_lcd32_address + lcd)
        ;info   200, 140
        movlw   32
        addwf   number_show__lcd,w
        call    rb2bus_address_put
        ; line_number = 201
        ;  call rb2bus_byte_put(rb2_lcd32_row_set | row)
        ;info   201, 143
        movlw   4
        iorwf   number_show__row,w
        call    rb2bus_byte_put
        ; line_number = 202
        ;  call rb2bus_byte_put(rb2_lcd32_column_set | column)
        ;info   202, 146
        movlw   16
        iorwf   number_show__column,w
        call    rb2bus_byte_put
        ; line_number = 203
        ;  call rb2bus_byte_put(label)
        ;info   203, 149
        movf    number_show__label,w
        call    rb2bus_byte_put
        ; line_number = 204
        ;  call rb2bus_byte_put(':')
        ;info   204, 151
        movlw   58
        call    rb2bus_byte_put
        ; line_number = 205
        ;  if high@7 start
        ;info   205, 153
number_show__select__1___byte equ number_show__high
number_show__select__1___bit equ 7
        ; =>bit_code_emit@symbol(): sym=number_show__select__1
        ; No 1TEST: true.size=7 false.size=1
        ; No 2TEST: true.size=7 false.size=1
        ; 2GOTO: Single test with two GOTO's
        btfss   number_show__select__1___byte, number_show__select__1___bit
        goto    number_show__2
        ; # Negative number:
        ; line_number = 207
        ;  low := low ^ 0xff
        ;info   207, 155
        comf    number_show__low,f
        ; line_number = 208
        ;  high := high ^ 0xff
        ;info   208, 156
        comf    number_show__high,f
        ; line_number = 209
        ;  low := low + 1
        ;info   209, 157
        incf    number_show__low,f
        ; line_number = 210
        ;  if low = 0 start
        ;info   210, 158
        ; Left minus Right
        movf    number_show__low,w
        ; =>bit_code_emit@symbol(): sym=__z
        ; 1TEST: Single test with code in skip slot
        btfsc   __z___byte, __z___bit
        ; line_number = 211
        ; high := high + 1
        ;info   211, 160
        incf    number_show__high,f
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 210
        ;  if low = 0 done
        ; line_number = 212
        ; call rb2bus_byte_put('-')
        ;info   212, 161
        movlw   45
        goto    number_show__3
        ; 2GOTO: Starting code 2
number_show__2:
        ; # Positive number
        ; line_number = 215
        ;  call rb2bus_byte_put('+')
        ;info   215, 163
        movlw   43
number_show__3:
        ; 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 = 205
        ;  if high@7 done
        ; line_number = 216
        ; call rb2bus_hex_put(high)
        ;info   216, 165
        movf    number_show__high,w
        call    rb2bus_hex_put
        ; line_number = 217
        ;  call rb2bus_hex_put(low)
        ;info   217, 167
        movf    number_show__low,w
        call    rb2bus_hex_put


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




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

        ; line_number = 222
        ;info   222, 192
        ; procedure rb2bus_hex_put
rb2bus_hex_put:
        ; Last argument is sitting in W; save into argument variable
        movwf   rb2bus_hex_put__data
        ; delay=4294967295
        ; line_number = 223
        ; argument data byte
rb2bus_hex_put__data equ globals___0+51
        ; line_number = 224
        ;  returns_nothing

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
        ; line_number = 226
        ;  call rb2bus_byte_put(hex[data >> 4])
        ;info   226, 193
rb2bus_hex_put__1 equ globals___0+56
        swapf   rb2bus_hex_put__data,w
        andlw   15
        call    hex
        call    rb2bus_byte_put
        ; line_number = 227
        ;  call rb2bus_byte_put(hex[data & 0xf])
        ;info   227, 197
        movlw   15
        andwf   rb2bus_hex_put__data,w
        call    hex
        call    rb2bus_byte_put


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




        ; line_number = 230
        ;info   230, 202
        ; 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 = 231
        ; argument address byte
rb2bus_address_put__address equ globals___0+53
        ; line_number = 232
        ;  returns_nothing

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

        ; line_number = 236
        ;  local result byte
rb2bus_address_put__result equ globals___0+52

        ; # 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 = 239
        ;  while !_txif start
rb2bus_address_put__1:
        ;info   239, 203
        ; =>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 = 240
        ; call wait()
        ;info   240, 205
        call    wait

        goto    rb2bus_address_put__1
rb2bus_address_put__2:
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 239
        ;  while !_txif done
        ; # Ship the address select byte:
        ; line_number = 243
        ;  _adden := _false
        ;info   243, 207
        bcf     _adden___byte, _adden___bit
        ; line_number = 244
        ;  _tx9d := _true
        ;info   244, 208
        bsf     __rp0___byte, __rp0___bit
        bsf     _tx9d___byte, _tx9d___bit
        ; line_number = 245
        ;  _txreg := address
        ;info   245, 210
        bcf     __rp0___byte, __rp0___bit
        movf    rb2bus_address_put__address,w
        movwf   _txreg

        ; line_number = 247
        ;  loop_exactly 2 start
        ;info   247, 213
rb2bus_address_put__3 equ globals___0+57
        movlw   2
        movwf   rb2bus_address_put__3
rb2bus_address_put__4:
        ; line_number = 248
        ; while !_rcif start
rb2bus_address_put__5:
        ;info   248, 215
        ; =>bit_code_emit@symbol(): sym=_rcif
        ; 1TEST: Single test with code in skip slot
        btfss   _rcif___byte, _rcif___bit
        ; line_number = 249
        ; do_nothing
        ;info   249, 216
        goto    rb2bus_address_put__5
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 248
        ; while !_rcif done
        ; line_number = 250
        ; result := _rcreg
        ;info   250, 217
        movf    _rcreg,w
        movwf   rb2bus_address_put__result
        ; line_number = 251
        ;  if _oerr start
        ;info   251, 219
        ; =>bit_code_emit@symbol(): sym=_oerr
        ; 1TEST: Single test with code in skip slot
        btfsc   _oerr___byte, _oerr___bit
        ; line_number = 252
        ; _cren := _false
        ;info   252, 220
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 251
        ;  if _oerr done
        ; line_number = 253
        ; if _ferr start
        ;info   253, 221
        ; =>bit_code_emit@symbol(): sym=_ferr
        ; 1TEST: Single test with code in skip slot
        btfsc   _ferr___byte, _ferr___bit
        ; line_number = 254
        ; _cren := _false
        ;info   254, 222
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 253
        ; if _ferr done
        ; line_number = 255
        ; _cren := _true
        ;info   255, 223
        bsf     _cren___byte, _cren___bit


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




        ; line_number = 258
        ;info   258, 227
        ; procedure delay_ms
delay_ms:
        ; Last argument is sitting in W; save into argument variable
        movwf   delay_ms__ms
        ; delay=4294967295
        ; line_number = 259
        ; argument ms byte
delay_ms__ms equ globals___0+54
        ; line_number = 260
        ;  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 = 264
        ;  loop_exactly ms start
        ;info   264, 228
delay_ms__1 equ globals___0+58
        movf    delay_ms__ms,w
        movwf   delay_ms__1
delay_ms__2:
        ; line_number = 265
        ; loop_exactly 100 start
        ;info   265, 230
delay_ms__3 equ globals___0+59
        movlw   100
        movwf   delay_ms__3
delay_ms__4:
        ; line_number = 266
        ; delay 10*microsecond start
        ;info   266, 232
        ; Delay expression evaluates to 40
        ; line_number = 267
        ; do_nothing
        ;info   267, 232


        ; 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 = 266
        ; delay 10*microsecond done
        ; line_number = 265
        ; loop_exactly 100 wrap-up
        decfsz  delay_ms__3,f
        goto    delay_ms__4
        ; line_number = 265
        ; loop_exactly 100 done
        ; line_number = 264
        ;  loop_exactly ms wrap-up
        decfsz  delay_ms__1,f
        goto    delay_ms__2
        ; line_number = 264
        ;  loop_exactly ms done
        ; delay after procedure statements=non-uniform
        ; Implied return
        retlw   0




        ; line_number = 270
        ; string id = "\16,0,28,3,3,14\Controller28-D\7\Gramson" start
        ; id = '\16,0,28,3,3,14\Controller28-D\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
        ; Add 9 NOP's until start of new page 
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
        nop     
id___base:
        retlw   16
        retlw   0
        retlw   28
        retlw   3
        retlw   3
        retlw   14
        retlw   67
        retlw   111
        retlw   110
        retlw   116
        retlw   114
        retlw   111
        retlw   108
        retlw   108
        retlw   101
        retlw   114
        retlw   50
        retlw   56
        retlw   45
        retlw   68
        retlw   7
        retlw   71
        retlw   114
        retlw   97
        retlw   109
        retlw   115
        retlw   111
        retlw   110
        ; line_number = 270
        ; string id = "\16,0,28,3,3,14\Controller28-D\7\Gramson" start


        ; line_number = 274
        ;info   274, 284
        ; procedure program2
program2:
        ; arguments_none
        ; line_number = 276
        ;  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.

        ; # Initialize the LCD32:

        ; #local actual_left signed16
        ; #local actual_right signed16
        ; line_number = 286
        ;  local bearing_absolute signed16
program2__bearing_absolute equ globals___1
        ; line_number = 287
        ;  local bearing_gain signed16
program2__bearing_gain equ globals___1+2
        ; line_number = 288
        ;  local bearing signed16
program2__bearing equ globals___1+4
        ; line_number = 289
        ;  local count_current byte
program2__count_current equ globals___1+6
        ; line_number = 290
        ;  local count_previous byte
program2__count_previous equ globals___1+7
        ; line_number = 291
        ;  local computed_left signed16
program2__computed_left equ globals___1+8
        ; line_number = 292
        ;  local computed_right signed16
program2__computed_right equ globals___1+10
        ; line_number = 293
        ;  local distance signed16
program2__distance equ globals___1+12
        ; line_number = 294
        ;  local distance_gain signed16
program2__distance_gain equ globals___1+14
        ; line_number = 295
        ;  local distance_slow_down signed16
program2__distance_slow_down equ globals___1+16
        ; line_number = 296
        ;  local distance_stop signed16
program2__distance_stop equ globals___1+18
        ; line_number = 297
        ;  local forward signed16
program2__forward equ globals___1+20
        ; line_number = 298
        ;  local forward_fast signed16
program2__forward_fast equ globals___1+22
        ; line_number = 299
        ;  local limit_positive signed16
program2__limit_positive equ globals___1+24
        ; line_number = 300
        ;  local limit_negative signed16
program2__limit_negative equ globals___1+26
        ; line_number = 301
        ;  local motor_left byte
program2__motor_left equ globals___1+28
        ; line_number = 302
        ;  local motor_right byte
program2__motor_right equ globals___1+29
        ; line_number = 303
        ;  local motor_adjust signed16
program2__motor_adjust equ globals___1+30
        ; line_number = 304
        ;  local turn_limit signed16
program2__turn_limit equ globals___1+32
        ; line_number = 305
        ;  local zero signed16 
program2__zero equ globals___1+34
        ; line_number = 306
        ;  local x signed16
program2__x equ globals___1+36
        ; line_number = 307
        ;  local y signed16
program2__y equ globals___1+38
        ; line_number = 308
        ;  local five signed16
program2__five equ globals___1+40
        ; line_number = 309
        ;  local corner byte
program2__corner equ globals___1+42
        ; line_number = 310
        ;  local corner_previous byte
program2__corner_previous equ globals___1+43
        ; line_number = 311
        ;  local x_high byte
program2__x_high equ globals___1+44
        ; line_number = 312
        ;  local y_high byte
program2__y_high equ globals___1+45
        ; line_number = 313
        ;  local degree_360 signed16
program2__degree_360 equ globals___1+46
        ; line_number = 314
        ;  local degree_180 signed16
program2__degree_180 equ globals___1+48
        ; line_number = 315
        ;  local minus_degree_180 signed16
program2__minus_degree_180 equ globals___1+50

        ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:00=uu=>00)
        ; line_number = 317
        ;  _gie := _false
        ;info   317, 284
        bcf     _gie___byte, _gie___bit

        ; line_number = 319
        ;  call rb2bus_address_put(rb2_lcd32_address)
        ;info   319, 285
        movlw   32
        bcf     __rp0___byte, __rp0___bit
        call    rb2bus_address_put
        ; line_number = 320
        ;  call rb2bus_byte_put(rb2_lcd32_form_feed)
        ;info   320, 288
        movlw   12
        call    rb2bus_byte_put

        ; line_number = 322
        ;  limit_positive := _signed16_from_byte(127)
        ;info   322, 290
        movlw   127
        call    _signed16_from_byte
        movlw   _signed16_from_byte__0return>>1
        call    _signed16_pointer_load
        movlw   program2__limit_positive>>1
        call    _signed16_pointer_store
        ; line_number = 323
        ;  limit_negative := -limit_positive
        ;info   323, 296
        movlw   program2__limit_positive>>1
        call    _signed16_pointer_load
        call    _signed16_negate
        movlw   program2__limit_negative>>1
        call    _signed16_pointer_store
        ; line_number = 324
        ;  bearing_gain := _signed16_from_byte(0x10)
        ;info   324, 301
        movlw   16
        call    _signed16_from_byte
        movlw   _signed16_from_byte__0return>>1
        call    _signed16_pointer_load
        movlw   program2__bearing_gain>>1
        call    _signed16_pointer_store
        ; line_number = 325
        ;  zero := _signed16_from_byte(0)
        ;info   325, 307
        movlw   0
        call    _signed16_from_byte
        movlw   _signed16_from_byte__0return>>1
        call    _signed16_pointer_load
        movlw   program2__zero>>1
        call    _signed16_pointer_store
        ; line_number = 326
        ;  turn_limit := _signed16_from_byte(20)
        ;info   326, 313
        movlw   20
        call    _signed16_from_byte
        movlw   _signed16_from_byte__0return>>1
        call    _signed16_pointer_load
        movlw   program2__turn_limit>>1
        call    _signed16_pointer_store
        ; line_number = 327
        ;  motor_adjust := _signed16_from_byte(10)
        ;info   327, 319
        movlw   10
        call    _signed16_from_byte
        movlw   _signed16_from_byte__0return>>1
        call    _signed16_pointer_load
        movlw   program2__motor_adjust>>1
        call    _signed16_pointer_store

        ; #actual_left := zero
        ; #actual_right := zero

        ; line_number = 332
        ;  degree_360 := _signed16_from_byte2(1, 104)	# 360 = 256 + 104
        ;info   332, 325
        movlw   1
        movwf   _signed16_from_byte2__byte1
        movlw   104
        call    _signed16_from_byte2
        movlw   _signed16_from_byte2__0return>>1
        call    _signed16_pointer_load
        movlw   program2__degree_360>>1
        call    _signed16_pointer_store
        ; line_number = 333
        ;  degree_180 := _signed16_from_byte2(0, 180)	# 180
        ;info   333, 333
        clrf    _signed16_from_byte2__byte1
        movlw   180
        call    _signed16_from_byte2
        movlw   _signed16_from_byte2__0return>>1
        call    _signed16_pointer_load
        movlw   program2__degree_180>>1
        call    _signed16_pointer_store
        ; line_number = 334
        ;  minus_degree_180 := -degree_180
        ;info   334, 340
        movlw   program2__degree_180>>1
        call    _signed16_pointer_load
        call    _signed16_negate
        movlw   program2__minus_degree_180>>1
        call    _signed16_pointer_store

        ; line_number = 336
        ;  distance_slow_down := _signed16_from_byte(50)
        ;info   336, 345
        movlw   50
        call    _signed16_from_byte
        movlw   _signed16_from_byte__0return>>1
        call    _signed16_pointer_load
        movlw   program2__distance_slow_down>>1
        call    _signed16_pointer_store
        ; line_number = 337
        ;  five := _signed16_from_byte(2)
        ;info   337, 351
        movlw   2
        call    _signed16_from_byte
        movlw   _signed16_from_byte__0return>>1
        call    _signed16_pointer_load
        movlw   program2__five>>1
        call    _signed16_pointer_store
        ; line_number = 338
        ;  distance_stop := distance_slow_down / five
        ;info   338, 357
        movlw   program2__distance_slow_down>>1
        call    _signed16_pointer_load
        movlw   program2__five>>1
        call    _signed16_pointer_divide
        movlw   program2__distance_stop>>1
        call    _signed16_pointer_store
        ; line_number = 339
        ;  forward_fast := _signed16_from_byte(100)
        ;info   339, 363
        movlw   100
        call    _signed16_from_byte
        movlw   _signed16_from_byte__0return>>1
        call    _signed16_pointer_load
        movlw   program2__forward_fast>>1
        call    _signed16_pointer_store
        ; line_number = 340
        ;  distance_gain := forward_fast / distance_slow_down
        ;info   340, 369
        movlw   program2__forward_fast>>1
        call    _signed16_pointer_load
        movlw   program2__distance_slow_down>>1
        call    _signed16_pointer_divide
        movlw   program2__distance_gain>>1
        call    _signed16_pointer_store

        ; line_number = 342
        ;  corner_previous := 0xff
        ;info   342, 375
        movlw   255
        bsf     __rp0___byte, __rp0___bit
        movwf   program2__corner_previous
        ; line_number = 343
        ;  corner := 0
        ;info   343, 378
        clrf    program2__corner
        ; line_number = 344
        ;  call rb2bus_address_put(rb2_shaft2_address)
        ;info   344, 379
        movlw   5
        bcf     __rp0___byte, __rp0___bit
        call    rb2bus_address_put
        ; line_number = 345
        ;  call rb2bus_byte3_put(rb2_shaft2_target_x_set, 0, 0)
        ;info   345, 382
        movlw   36
        bsf     __rp0___byte, __rp0___bit
        movwf   rb2bus_byte3_put__command
        clrf    rb2bus_byte3_put__high
        movlw   0
        call    rb2bus_byte3_put
        ; line_number = 346
        ;  call rb2bus_byte3_put(rb2_shaft2_target_y_set, 1, 0)
        ;info   346, 388
        movlw   37
        movwf   rb2bus_byte3_put__command
        movlw   1
        movwf   rb2bus_byte3_put__high
        movlw   0
        call    rb2bus_byte3_put

        ; #count_previous := 0
        ; line_number = 349
        ;  loop_forever start
program2__1:
        bcf     __rp0___byte, __rp0___bit
        ; line_number = 350
        ; call rb2bus_address_put(rb2_shaft2_address)
        ;info   350, 395
        movlw   5
        call    rb2bus_address_put

        ; line_number = 352
        ;  if corner_previous != corner start
        ;info   352, 397
        ; Left minus Right
        bsf     __rp0___byte, __rp0___bit
        movf    program2__corner,w
        subwf   program2__corner_previous,w
        ; =>bit_code_emit@symbol(): sym=__z
        ; No 1TEST: true.size=0 false.size=37
        ; No 2TEST: true.size=0 false.size=37
        ; 1GOTO: Single test with GOTO
        btfsc   __z___byte, __z___bit
        goto    program2__8
        ; line_number = 353
        ; switch corner & 3 start
        ;info   353, 402
        ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
        movlw   program2__6>>8
        movwf   __pclath
        movlw   3
        andwf   program2__corner,w
        ; switch after expression:(data:01=uu=>01 code:XX=cc=>XX)
        addlw   program2__6
        movwf   __pcl
        ; page_group 4
program2__6:
        goto    program2__2
        goto    program2__3
        goto    program2__4
        goto    program2__5
        ; line_number = 354
        ; case 0
program2__2:
        ; line_number = 355
        ; x_high := 1
        ;info   355, 412
        movlw   1
        movwf   program2__x_high
        ; line_number = 356
        ;  y_high := 0
        ;info   356, 414
        clrf    program2__y_high
        goto    program2__7
        ; line_number = 357
        ; case 1
program2__3:
        ; line_number = 358
        ; x_high := 1
        ;info   358, 416
        movlw   1
        movwf   program2__x_high
        ; line_number = 359
        ;  y_high := 1
        ;info   359, 418
        movlw   1
        movwf   program2__y_high
        goto    program2__7
        ; line_number = 360
        ; case 2
program2__4:
        ; line_number = 361
        ; x_high := 0
        ;info   361, 421
        clrf    program2__x_high
        ; line_number = 362
        ;  y_high := 1
        ;info   362, 422
        movlw   1
        movwf   program2__y_high
        goto    program2__7
        ; line_number = 363
        ; case 3
program2__5:
        ; line_number = 364
        ; x_high := 0
        ;info   364, 425
        clrf    program2__x_high
        ; line_number = 365
        ;  y_high := 0
        ;info   365, 426
        clrf    program2__y_high
program2__7:
        ; line_number = 353
        ; switch corner & 3 done
        ; line_number = 366
        ; call rb2bus_byte3_put(rb2_shaft2_target_x_set, x_high, 0)
        ;info   366, 427
        movlw   36
        movwf   rb2bus_byte3_put__command
        movf    program2__x_high,w
        movwf   rb2bus_byte3_put__high
        movlw   0
        call    rb2bus_byte3_put
        ; line_number = 367
        ;  call rb2bus_byte3_put(rb2_shaft2_target_y_set, y_high, 0)
        ;info   367, 433
        movlw   37
        movwf   rb2bus_byte3_put__command
        movf    program2__y_high,w
        movwf   rb2bus_byte3_put__high
        movlw   0
        call    rb2bus_byte3_put

program2__8:
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 352
        ;  if corner_previous != corner done
        ; #count_current := count_previous
        ; #while count_current = count_previous
        ; #    call rb2bus_byte_put(rb2_shaft2_navigation_latch)
        ; #    count_current :=
        ; #      rb2bus_byte_put_get(rb2_shaft2_count_iteration_get)
        ; #count_previous := count_current

        ; line_number = 376
        ;  call number_show('X', rb2_shaft2_x_get, 0, 0, 0)
        ;info   376, 439
        movlw   88
        bcf     __rp0___byte, __rp0___bit
        movwf   number_show__label
        movlw   16
        movwf   number_show__command
        clrf    number_show__lcd
        clrf    number_show__row
        movlw   0
        call    number_show
        ; line_number = 377
        ;  call number_show('Y', rb2_shaft2_y_get, 0, 0, 8)
        ;info   377, 448
        movlw   89
        movwf   number_show__label
        movlw   17
        movwf   number_show__command
        clrf    number_show__lcd
        clrf    number_show__row
        movlw   8
        call    number_show
        ; line_number = 378
        ;  call number_show('b', rb2_shaft2_target_bearing16_get, 0, 1, 0)
        ;info   378, 456
        movlw   98
        movwf   number_show__label
        movlw   22
        movwf   number_show__command
        clrf    number_show__lcd
        movlw   1
        movwf   number_show__row
        movlw   0
        call    number_show
        ; line_number = 379
        ;  call number_show('d', rb2_shaft2_target_distance_get, 0, 1, 8)
        ;info   379, 465
        movlw   100
        movwf   number_show__label
        movlw   24
        movwf   number_show__command
        clrf    number_show__lcd
        movlw   1
        movwf   number_show__row
        movlw   8
        call    number_show

        ; line_number = 381
        ;  call rb2bus_address_put(rb2_shaft2_address)
        ;info   381, 474
        movlw   5
        call    rb2bus_address_put
        ; line_number = 382
        ;  x := rb2bus_signed16_put_get(rb2_shaft2_x_get)
        ;info   382, 476
        movlw   16
        bsf     __rp0___byte, __rp0___bit
        call    rb2bus_signed16_put_get
        movlw   rb2bus_signed16_put_get__0return>>1
        bcf     __rp0___byte, __rp0___bit
        call    _signed16_pointer_load
        movlw   program2__x>>1
        call    _signed16_pointer_store
        ; line_number = 383
        ;  y := rb2bus_signed16_put_get(rb2_shaft2_y_get)
        ;info   383, 484
        movlw   17
        bsf     __rp0___byte, __rp0___bit
        call    rb2bus_signed16_put_get
        movlw   rb2bus_signed16_put_get__0return>>1
        bcf     __rp0___byte, __rp0___bit
        call    _signed16_pointer_load
        movlw   program2__y>>1
        call    _signed16_pointer_store
        ; line_number = 384
        ;  bearing := rb2bus_signed16_put_get(rb2_shaft2_target_bearing16_get)
        ;info   384, 492
        movlw   22
        bsf     __rp0___byte, __rp0___bit
        call    rb2bus_signed16_put_get
        movlw   rb2bus_signed16_put_get__0return>>1
        bcf     __rp0___byte, __rp0___bit
        call    _signed16_pointer_load
        movlw   program2__bearing>>1
        call    _signed16_pointer_store
        ; line_number = 385
        ;  distance := rb2bus_signed16_put_get(rb2_shaft2_target_distance_get)
        ;info   385, 500
        movlw   24
        bsf     __rp0___byte, __rp0___bit
        call    rb2bus_signed16_put_get
        movlw   rb2bus_signed16_put_get__0return>>1
        bcf     __rp0___byte, __rp0___bit
        call    _signed16_pointer_load
        movlw   program2__distance>>1
        call    _signed16_pointer_store

        ; #if bearing < minus_degree_180
        ; #    bearing := bearing + degree_360
        ; #else_if bearing > degree_180
        ; #    bearing := bearing - degree_360

        ; line_number = 392
        ;  bearing_absolute := bearing
        ;info   392, 508
        movlw   program2__bearing>>1
        call    _signed16_pointer_load
        movlw   program2__bearing_absolute>>1
        call    _signed16_pointer_store
        ; line_number = 393
        ;  if bearing < zero start
        ;info   393, 512
        movlw   program2__bearing>>1
        call    _signed16_pointer_load
        movlw   program2__zero>>1
        call    _signed16_pointer_subtract
        call    _signed16_less_than
        ; =>bit_code_emit@symbol(): sym=__z
        ; No 1TEST: true.size=5 false.size=0
        ; No 2TEST: true.size=5 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   __z___byte, __z___bit
        goto    program2__9
        ; line_number = 394
        ; bearing_absolute := -bearing
        ;info   394, 519
        movlw   program2__bearing>>1
        call    _signed16_pointer_load
        call    _signed16_negate
        movlw   program2__bearing_absolute>>1
        call    _signed16_pointer_store
        ; Recombine size1 = 0 || size2 = 0
program2__9:
        ; line_number = 393
        ;  if bearing < zero done
        ; line_number = 395
        ; if bearing_absolute < turn_limit start
        ;info   395, 524
        movlw   program2__bearing_absolute>>1
        call    _signed16_pointer_load
        movlw   program2__turn_limit>>1
        call    _signed16_pointer_subtract
        call    _signed16_less_than
        ; =>bit_code_emit@symbol(): sym=__z
        ; No 1TEST: true.size=38 false.size=4
        ; No 2TEST: true.size=38 false.size=4
        ; 2GOTO: Single test with two GOTO's
        btfss   __z___byte, __z___bit
        goto    program2__14
        ; #Let's move forward:
        ; line_number = 397
        ;  if distance < distance_slow_down start
        ;info   397, 531
        movlw   program2__distance>>1
        call    _signed16_pointer_load
        movlw   program2__distance_slow_down>>1
        call    _signed16_pointer_subtract
        call    _signed16_less_than
        ; =>bit_code_emit@symbol(): sym=__z
        ; No 1TEST: true.size=25 false.size=4
        ; No 2TEST: true.size=25 false.size=4
        ; 2GOTO: Single test with two GOTO's
        btfss   __z___byte, __z___bit
        goto    program2__12
        ; line_number = 398
        ; if distance < distance_stop start
        ;info   398, 538
        movlw   program2__distance>>1
        call    _signed16_pointer_load
        movlw   program2__distance_stop>>1
        call    _signed16_pointer_subtract
        call    _signed16_less_than
        ; =>bit_code_emit@symbol(): sym=__z
        ; No 1TEST: true.size=10 false.size=6
        ; No 2TEST: true.size=10 false.size=6
        ; 2GOTO: Single test with two GOTO's
        btfss   __z___byte, __z___bit
        goto    program2__10
        ; line_number = 399
        ; forward := zero
        ;info   399, 545
        movlw   program2__zero>>1
        call    _signed16_pointer_load
        movlw   program2__forward>>1
        call    _signed16_pointer_store
        ; line_number = 400
        ;  bearing := zero
        ;info   400, 549
        movlw   program2__zero>>1
        call    _signed16_pointer_load
        movlw   program2__bearing>>1
        call    _signed16_pointer_store
        ; line_number = 401
        ;  corner := corner + 1
        ;info   401, 553
        bsf     __rp0___byte, __rp0___bit
        incf    program2__corner,f
        goto    program2__11
        ; 2GOTO: Starting code 2
program2__10:
        ; line_number = 403
        ; forward := distance * distance_gain
        ;info   403, 556
        movlw   program2__distance>>1
        call    _signed16_pointer_load
        movlw   program2__distance_gain>>1
        call    _signed16_pointer_multiply
        movlw   program2__forward>>1
        call    _signed16_pointer_store
program2__11:
        ; 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)
        bsf     __rp0___byte, __rp0___bit
        ; line_number = 398
        ; if distance < distance_stop done
        goto    program2__13
        ; 2GOTO: Starting code 2
program2__12:
        ; line_number = 405
        ; forward := forward_fast
        ;info   405, 564
        movlw   program2__forward_fast>>1
        call    _signed16_pointer_load
        movlw   program2__forward>>1
        call    _signed16_pointer_store
program2__13:
        ; 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)
        bsf     __rp0___byte, __rp0___bit
        ; line_number = 397
        ;  if distance < distance_slow_down done
        goto    program2__15
        ; 2GOTO: Starting code 2
program2__14:
        ; line_number = 407
        ; forward := zero
        ;info   407, 570
        movlw   program2__zero>>1
        call    _signed16_pointer_load
        movlw   program2__forward>>1
        call    _signed16_pointer_store
program2__15:
        ; 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)
        bsf     __rp0___byte, __rp0___bit
        ; line_number = 395
        ; if bearing_absolute < turn_limit done
        ; line_number = 408
        ; computed_right := bearing * bearing_gain
        ;info   408, 575
        movlw   program2__bearing>>1
        bcf     __rp0___byte, __rp0___bit
        call    _signed16_pointer_load
        movlw   program2__bearing_gain>>1
        call    _signed16_pointer_multiply
        movlw   program2__computed_right>>1
        call    _signed16_pointer_store
        ; line_number = 409
        ;  computed_left := -computed_right
        ;info   409, 582
        movlw   program2__computed_right>>1
        call    _signed16_pointer_load
        call    _signed16_negate
        movlw   program2__computed_left>>1
        call    _signed16_pointer_store
        ; line_number = 410
        ;  computed_left := computed_left + forward
        ;info   410, 587
        movlw   program2__computed_left>>1
        call    _signed16_pointer_load
        movlw   program2__forward>>1
        call    _signed16_pointer_add
        movlw   program2__computed_left>>1
        call    _signed16_pointer_store
        ; line_number = 411
        ;  computed_right := computed_right + forward
        ;info   411, 593
        movlw   program2__computed_right>>1
        call    _signed16_pointer_load
        movlw   program2__forward>>1
        call    _signed16_pointer_add
        movlw   program2__computed_right>>1
        call    _signed16_pointer_store

        ; #call signed16_show('L', computed_left, 0, 0, 0)
        ; #call signed16_show('R', computed_right, 0, 0, 8)
        ; #call signed16_show('F', forward, 0, 1, 8)

        ; # Limit the number:
        ; line_number = 418
        ;  if computed_left > limit_positive start
        ;info   418, 599
        movlw   program2__computed_left>>1
        call    _signed16_pointer_load
        movlw   program2__limit_positive>>1
        call    _signed16_pointer_subtract
        call    _signed16_greater_than
        ; =>bit_code_emit@symbol(): sym=__z
        ; No 1TEST: true.size=4 false.size=11
        ; No 2TEST: true.size=4 false.size=11
        ; 2GOTO: Single test with two GOTO's
        btfss   __z___byte, __z___bit
        goto    program2__17
        ; line_number = 419
        ; computed_left := limit_positive
        ;info   419, 606
        movlw   program2__limit_positive>>1
        call    _signed16_pointer_load
        movlw   program2__computed_left>>1
        call    _signed16_pointer_store
        goto    program2__18
        ; 2GOTO: Starting code 2
program2__17:
        ; line_number = 420
        ;info   420, 611
        movlw   program2__computed_left>>1
        call    _signed16_pointer_load
        movlw   program2__limit_negative>>1
        call    _signed16_pointer_subtract
        call    _signed16_less_than
        ; =>bit_code_emit@symbol(): sym=__z
        ; No 1TEST: true.size=4 false.size=0
        ; No 2TEST: true.size=4 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   __z___byte, __z___bit
        goto    program2__16
        ; line_number = 421
        ; computed_left := limit_negative
        ;info   421, 618
        movlw   program2__limit_negative>>1
        call    _signed16_pointer_load
        movlw   program2__computed_left>>1
        call    _signed16_pointer_store
        ; Recombine size1 = 0 || size2 = 0
program2__16:
program2__18:
        ; 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 = 418
        ;  if computed_left > limit_positive done
        ; line_number = 422
        ; if computed_right > limit_positive start
        ;info   422, 622
        movlw   program2__computed_right>>1
        call    _signed16_pointer_load
        movlw   program2__limit_positive>>1
        call    _signed16_pointer_subtract
        call    _signed16_greater_than
        ; =>bit_code_emit@symbol(): sym=__z
        ; No 1TEST: true.size=4 false.size=11
        ; No 2TEST: true.size=4 false.size=11
        ; 2GOTO: Single test with two GOTO's
        btfss   __z___byte, __z___bit
        goto    program2__20
        ; line_number = 423
        ; computed_right := limit_positive
        ;info   423, 629
        movlw   program2__limit_positive>>1
        call    _signed16_pointer_load
        movlw   program2__computed_right>>1
        call    _signed16_pointer_store
        goto    program2__21
        ; 2GOTO: Starting code 2
program2__20:
        ; line_number = 424
        ;info   424, 634
        movlw   program2__computed_right>>1
        call    _signed16_pointer_load
        movlw   program2__limit_negative>>1
        call    _signed16_pointer_subtract
        call    _signed16_less_than
        ; =>bit_code_emit@symbol(): sym=__z
        ; No 1TEST: true.size=4 false.size=0
        ; No 2TEST: true.size=4 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   __z___byte, __z___bit
        goto    program2__19
        ; line_number = 425
        ; computed_right := limit_negative
        ;info   425, 641
        movlw   program2__limit_negative>>1
        call    _signed16_pointer_load
        movlw   program2__computed_right>>1
        call    _signed16_pointer_store

        ; Recombine size1 = 0 || size2 = 0
program2__19:
program2__21:
        ; 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 = 422
        ; if computed_right > limit_positive done
        ; #ctual_left := computed_left
        ; #actual_right := computed_right
        ; #if computed_left > actual_left
        ; #    actual_left := actual_left - motor_adjust
        ; #else_if computed_left < actual_left
        ; #    actual_left := actual_left + motor_adjust
        ; #if computed_right > actual_right
        ; #    actual_right := actual_right - motor_adjust
        ; #else_if computed_right < actual_right
        ; #    actual_right := actual_right + motor_adjust

        ; #motor_left := _signed16_to_byte(actual_left)
        ; #motor_right := _signed16_to_byte(actual_right)

        ; line_number = 441
        ;  motor_left := _signed16_to_byte(computed_left)
        ;info   441, 645
        movlw   program2__computed_left>>1
        call    _signed16_pointer_load
        movlw   _signed16_to_byte__number>>1
        call    _signed16_pointer_store
        call    _signed16_to_byte
        bsf     __rp0___byte, __rp0___bit
        movwf   program2__motor_left
        ; line_number = 442
        ;  motor_right := _signed16_to_byte(computed_right)
        ;info   442, 652
        movlw   program2__computed_right>>1
        bcf     __rp0___byte, __rp0___bit
        call    _signed16_pointer_load
        movlw   _signed16_to_byte__number>>1
        call    _signed16_pointer_store
        call    _signed16_to_byte
        bsf     __rp0___byte, __rp0___bit
        movwf   program2__motor_right

        ; #call byte_show('l', motor_left, 0, 1, 0)
        ; #call byte_show('r', motor_right, 0, 1, 8)

        ; line_number = 447
        ;  call rb2bus_address_put(rb2_midimotor2_address)
        ;info   447, 660
        movlw   3
        bcf     __rp0___byte, __rp0___bit
        call    rb2bus_address_put
        ; line_number = 448
        ;  call rb2bus_byte2_put(rb2_motor0_speed_set, motor_left)
        ;info   448, 663
        movlw   1
        bsf     __rp0___byte, __rp0___bit
        movwf   rb2bus_byte2_put__command
        movf    program2__motor_left,w
        call    rb2bus_byte2_put
        ; line_number = 449
        ;  call rb2bus_byte2_put(rb2_motor1_speed_set, motor_right)
        ;info   449, 668
        movlw   3
        movwf   rb2bus_byte2_put__command
        movf    program2__motor_right,w
        call    rb2bus_byte2_put


        ; line_number = 349
        ;  loop_forever wrap-up
        ; Need to adjust code banks to match front of loop
        bcf     __rp0___byte, __rp0___bit
        goto    program2__1
        ; line_number = 349
        ;  loop_forever done
        ; delay after procedure statements=non-uniform
        bsf     __rp0___byte, __rp0___bit




        ; line_number = 452
        ;info   452, 675
        ; procedure rb2bus_byte2_put
rb2bus_byte2_put:
        ; Last argument is sitting in W; save into argument variable
        movwf   rb2bus_byte2_put__data
        ; delay=4294967295
        ; line_number = 453
        ; argument command byte
rb2bus_byte2_put__command equ globals___1+52
        ; line_number = 454
        ; argument data byte
rb2bus_byte2_put__data equ globals___1+53
        ; line_number = 455
        ;  returns_nothing

        ; # This routine will send {command} followed by {data} to the currently
        ; # selected module.

        ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:00=uu=>00)
        ; line_number = 460
        ;  call rb2bus_byte_put(command)
        ;info   460, 676
        movf    rb2bus_byte2_put__command,w
        bcf     __rp0___byte, __rp0___bit
        call    rb2bus_byte_put
        ; line_number = 461
        ;  call rb2bus_byte_put(data)
        ;info   461, 679
        bsf     __rp0___byte, __rp0___bit
        movf    rb2bus_byte2_put__data,w
        bcf     __rp0___byte, __rp0___bit
        call    rb2bus_byte_put


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




        ; line_number = 464
        ;info   464, 685
        ; procedure rb2bus_byte3_put
rb2bus_byte3_put:
        ; Last argument is sitting in W; save into argument variable
        movwf   rb2bus_byte3_put__low
        ; delay=4294967295
        ; line_number = 465
        ; argument command byte
rb2bus_byte3_put__command equ globals___1+54
        ; line_number = 466
        ; argument high byte
rb2bus_byte3_put__high equ globals___1+55
        ; line_number = 467
        ; argument low byte
rb2bus_byte3_put__low equ globals___1+56
        ; line_number = 468
        ;  returns_nothing

        ; # This routine will send {command} followed by {data} to the currently
        ; # selected module.

        ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:00=uu=>00)
        ; line_number = 473
        ;  call rb2bus_byte_put(command)
        ;info   473, 686
        movf    rb2bus_byte3_put__command,w
        bcf     __rp0___byte, __rp0___bit
        call    rb2bus_byte_put
        ; line_number = 474
        ;  call rb2bus_byte_put(high)
        ;info   474, 689
        bsf     __rp0___byte, __rp0___bit
        movf    rb2bus_byte3_put__high,w
        bcf     __rp0___byte, __rp0___bit
        call    rb2bus_byte_put
        ; line_number = 475
        ;  call rb2bus_byte_put(low)
        ;info   475, 693
        bsf     __rp0___byte, __rp0___bit
        movf    rb2bus_byte3_put__low,w
        bcf     __rp0___byte, __rp0___bit
        call    rb2bus_byte_put


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




        ; line_number = 478
        ;info   478, 699
        ; procedure byte_show
byte_show:
        ; Last argument is sitting in W; save into argument variable
        movwf   byte_show__column
        ; delay=4294967295
        ; line_number = 479
        ; argument label byte
byte_show__label equ globals___1+57
        ; line_number = 480
        ; argument value byte
byte_show__value equ globals___1+58
        ; line_number = 481
        ; argument lcd byte
byte_show__lcd equ globals___1+59
        ; line_number = 482
        ; argument row byte
byte_show__row equ globals___1+60
        ; line_number = 483
        ; argument column byte
byte_show__column equ globals___1+61
        ; line_number = 484
        ;  returns_nothing

        ; # This routine will ...

        ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:00=uu=>00)
        ; line_number = 488
        ;  call rb2bus_address_put(rb2_lcd32_address + lcd)
        ;info   488, 700
        movlw   32
        addwf   byte_show__lcd,w
        bcf     __rp0___byte, __rp0___bit
        call    rb2bus_address_put
        ; line_number = 489
        ;  call rb2bus_byte_put(rb2_lcd32_row_set | row)
        ;info   489, 704
        movlw   4
        bsf     __rp0___byte, __rp0___bit
        iorwf   byte_show__row,w
        bcf     __rp0___byte, __rp0___bit
        call    rb2bus_byte_put
        ; line_number = 490
        ;  call rb2bus_byte_put(rb2_lcd32_column_set | column)
        ;info   490, 709
        movlw   16
        bsf     __rp0___byte, __rp0___bit
        iorwf   byte_show__column,w
        bcf     __rp0___byte, __rp0___bit
        call    rb2bus_byte_put
        ; line_number = 491
        ;  call rb2bus_byte_put(label)
        ;info   491, 714
        bsf     __rp0___byte, __rp0___bit
        movf    byte_show__label,w
        bcf     __rp0___byte, __rp0___bit
        call    rb2bus_byte_put
        ; line_number = 492
        ;  call rb2bus_byte_put(':')
        ;info   492, 718
        movlw   58
        call    rb2bus_byte_put
        ; line_number = 493
        ;  if value@7 start
        ;info   493, 720
byte_show__select__1___byte equ byte_show__value
byte_show__select__1___bit equ 7
        ; =>bit_code_emit@symbol(): sym=byte_show__select__1
        ; No 1TEST: true.size=6 false.size=2
        ; No 2TEST: true.size=6 false.size=2
        ; 2GOTO: Single test with two GOTO's
        bsf     __rp0___byte, __rp0___bit
        btfss   byte_show__select__1___byte, byte_show__select__1___bit
        goto    byte_show__2
        bcf     __rp0___byte, __rp0___bit
        ; line_number = 494
        ; call rb2bus_byte_put('-')
        ;info   494, 724
        movlw   45
        call    rb2bus_byte_put
        ; line_number = 495
        ;  value := 0 - value
        ;info   495, 726
        bsf     __rp0___byte, __rp0___bit
        movf    byte_show__value,w
        sublw   0
        movwf   byte_show__value
        goto    byte_show__3
        ; 2GOTO: Starting code 2
byte_show__2:
        bcf     __rp0___byte, __rp0___bit
        ; line_number = 497
        ; call rb2bus_byte_put('+')
        ;info   497, 732
        movlw   43
        call    rb2bus_byte_put
byte_show__3:
        ; 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:01=uu=>00 code:00=uu=>00)
        bsf     __rp0___byte, __rp0___bit
        ; line_number = 493
        ;  if value@7 done
        ; line_number = 498
        ; call rb2bus_hex_put(value)
        ;info   498, 735
        movf    byte_show__value,w
        bcf     __rp0___byte, __rp0___bit
        call    rb2bus_hex_put


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




        ; line_number = 501
        ;info   501, 740
        ; procedure signed16_show
signed16_show:
        ; Last argument is sitting in W; save into argument variable
        movwf   signed16_show__column
        ; delay=4294967295
        ; line_number = 502
        ; argument label byte
signed16_show__label equ globals___1+64
        ; line_number = 503
        ; argument value signed16
signed16_show__value equ globals___1+66
        ; line_number = 504
        ; argument lcd byte
signed16_show__lcd equ globals___1+68
        ; line_number = 505
        ; argument row byte
signed16_show__row equ globals___1+69
        ; line_number = 506
        ; argument column byte
signed16_show__column equ globals___1+70
        ; line_number = 507
        ;  returns_nothing

        ; # This routine will ...

        ; line_number = 511
        ;  local zero signed16
signed16_show__zero equ globals___1+62

        ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:00=uu=>00)
        ; line_number = 513
        ;  call rb2bus_address_put(rb2_lcd32_address + lcd)
        ;info   513, 741
        movlw   32
        addwf   signed16_show__lcd,w
        bcf     __rp0___byte, __rp0___bit
        call    rb2bus_address_put
        ; line_number = 514
        ;  call rb2bus_byte_put(rb2_lcd32_row_set | row)
        ;info   514, 745
        movlw   4
        bsf     __rp0___byte, __rp0___bit
        iorwf   signed16_show__row,w
        bcf     __rp0___byte, __rp0___bit
        call    rb2bus_byte_put
        ; line_number = 515
        ;  call rb2bus_byte_put(rb2_lcd32_column_set | column)
        ;info   515, 750
        movlw   16
        bsf     __rp0___byte, __rp0___bit
        iorwf   signed16_show__column,w
        bcf     __rp0___byte, __rp0___bit
        call    rb2bus_byte_put
        ; line_number = 516
        ;  call rb2bus_byte_put(label)
        ;info   516, 755
        bsf     __rp0___byte, __rp0___bit
        movf    signed16_show__label,w
        bcf     __rp0___byte, __rp0___bit
        call    rb2bus_byte_put
        ; line_number = 517
        ;  call rb2bus_byte_put(':')
        ;info   517, 759
        movlw   58
        call    rb2bus_byte_put

        ; line_number = 519
        ;  zero := _signed16_from_byte(0)
        ;info   519, 761
        movlw   0
        call    _signed16_from_byte
        movlw   _signed16_from_byte__0return>>1
        call    _signed16_pointer_load
        movlw   signed16_show__zero>>1
        call    _signed16_pointer_store
        ; line_number = 520
        ;  if value < zero start
        ;info   520, 767
        movlw   signed16_show__value>>1
        call    _signed16_pointer_load
        movlw   signed16_show__zero>>1
        call    _signed16_pointer_subtract
        call    _signed16_less_than
        ; =>bit_code_emit@symbol(): sym=__z
        ; No 1TEST: true.size=7 false.size=1
        ; No 2TEST: true.size=7 false.size=1
        ; 2GOTO: Single test with two GOTO's
        btfss   __z___byte, __z___bit
        goto    signed16_show__1
        ; line_number = 521
        ; value := zero - value
        ;info   521, 774
        movlw   signed16_show__zero>>1
        call    _signed16_pointer_load
        movlw   signed16_show__value>>1
        call    _signed16_pointer_subtract
        movlw   signed16_show__value>>1
        call    _signed16_pointer_store
        ; line_number = 522
        ;  call rb2bus_byte_put('-')
        ;info   522, 780
        movlw   45
        goto    signed16_show__2
        ; 2GOTO: Starting code 2
signed16_show__1:
        ; line_number = 524
        ; call rb2bus_byte_put('+')
        ;info   524, 782
        movlw   43
signed16_show__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:01=uu=>00 code:00=uu=>00)
        call    rb2bus_byte_put
        ; line_number = 520
        ;  if value < zero done
        ; line_number = 525
        ; call rb2bus_hex_put(_signed16_byte_high(value))
        ;info   525, 784
        movlw   signed16_show__value>>1
        call    _signed16_pointer_load
        movlw   _signed16_byte_high__number>>1
        call    _signed16_pointer_store
        call    _signed16_byte_high
        call    rb2bus_hex_put
        ; line_number = 526
        ;  call rb2bus_hex_put(_signed16_byte_low(value))
        ;info   526, 790
        movlw   signed16_show__value>>1
        call    _signed16_pointer_load
        movlw   _signed16_byte_low__number>>1
        call    _signed16_pointer_store
        call    _signed16_byte_low
        call    rb2bus_hex_put


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




        ; line_number = 529
        ;info   529, 798
        ; procedure rb2bus_byte_put_get
rb2bus_byte_put_get:
        ; Last argument is sitting in W; save into argument variable
        movwf   rb2bus_byte_put_get__command
        ; delay=4294967295
        ; line_number = 530
        ; argument command byte
rb2bus_byte_put_get__command equ globals___1+71
        ; line_number = 531
        ;  returns byte

        ; # This routine will send {command} to the currently selected module
        ; # and return the one byte response.

        ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:00=uu=>00)
        ; line_number = 536
        ;  call rb2bus_byte_put(command)
        ;info   536, 799
        movf    rb2bus_byte_put_get__command,w
        bcf     __rp0___byte, __rp0___bit
        call    rb2bus_byte_put
        ; line_number = 537
        ;  return rb2bus_byte_get() start
        ; line_number = 537
        ;info   537, 802
        call    rb2bus_byte_get
        bsf     __rp0___byte, __rp0___bit
        return  
        ; line_number = 537
        ;  return rb2bus_byte_get() done


        ; delay after procedure statements=non-uniform




rb2bus_signed16_put_get__0return equ globals___1+76
        ; line_number = 540
        ;info   540, 805
        ; procedure rb2bus_signed16_put_get
rb2bus_signed16_put_get:
        ; Last argument is sitting in W; save into argument variable
        movwf   rb2bus_signed16_put_get__command
        ; delay=4294967295
        ; line_number = 541
        ; argument command byte
rb2bus_signed16_put_get__command equ globals___1+74
        ; line_number = 542
        ;  returns signed16

        ; # This routine will send {command} to the currently selected module.
        ; # and retreive a two byte result as a signed 16 number and return it.

        ; line_number = 547
        ;  local high byte
rb2bus_signed16_put_get__high equ globals___1+72
        ; line_number = 548
        ;  local low byte
rb2bus_signed16_put_get__low equ globals___1+73

        ; before procedure statements delay=non-uniform, bit states=(data:01=uu=>01 code:00=uu=>00)
        ; line_number = 550
        ;  call rb2bus_byte_put(command)
        ;info   550, 806
        movf    rb2bus_signed16_put_get__command,w
        bcf     __rp0___byte, __rp0___bit
        call    rb2bus_byte_put
        ; line_number = 551
        ;  high := rb2bus_byte_get()
        ;info   551, 809
        call    rb2bus_byte_get
        bsf     __rp0___byte, __rp0___bit
        movwf   rb2bus_signed16_put_get__high
        ; line_number = 552
        ;  low := rb2bus_byte_get()
        ;info   552, 812
        bcf     __rp0___byte, __rp0___bit
        call    rb2bus_byte_get
        bsf     __rp0___byte, __rp0___bit
        movwf   rb2bus_signed16_put_get__low
        ; line_number = 553
        ;  return _signed16_from_byte2(high, low) start
        ; line_number = 553
        ;info   553, 816
        movf    rb2bus_signed16_put_get__high,w
        bcf     __rp0___byte, __rp0___bit
        movwf   _signed16_from_byte2__byte1
        bsf     __rp0___byte, __rp0___bit
        movf    rb2bus_signed16_put_get__low,w
        bcf     __rp0___byte, __rp0___bit
        call    _signed16_from_byte2
        movlw   _signed16_from_byte2__0return>>1
        call    _signed16_pointer_load
        movlw   rb2bus_signed16_put_get__0return>>1
        call    _signed16_pointer_store
        bsf     __rp0___byte, __rp0___bit
        return  
        ; line_number = 553
        ;  return _signed16_from_byte2(high, low) done



        ; delay after procedure statements=non-uniform





        ; Appending 28 delayed procedures to code bank 0
        ; buffer = 'rb2bus_pic16f876'
        ; line_number = 28
        ;info   28, 829
        ; procedure rb2bus_initialize
rb2bus_initialize:
        ; Last argument is sitting in W; save into argument variable
        movwf   rb2bus_initialize__address
        ; delay=4294967295
        ; line_number = 29
        ; argument address byte
rb2bus_initialize__address equ globals___0+2
        ; line_number = 30
        ;  returns_nothing

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

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

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

        ; # Initialize the {_txsta} register:
        ; line_number = 43
        ;  _txsta := 0
        ;info   43, 835
        clrf    _txsta
        ; line_number = 44
        ;  _tx9 := _true
        ;info   44, 836
        bsf     _tx9___byte, _tx9___bit
        ; line_number = 45
        ;  _txen := _true
        ;info   45, 837
        bsf     _txen___byte, _txen___bit
        ; line_number = 46
        ;  _brgh := _true
        ;info   46, 838
        bsf     _brgh___byte, _brgh___bit

        ; # Initialize the {_rcsta} register:
        ; line_number = 49
        ;  _rcsta := 0
        ;info   49, 839
        bcf     __rp0___byte, __rp0___bit
        clrf    _rcsta
        ; line_number = 50
        ;  _spen := _true
        ;info   50, 841
        bsf     _spen___byte, _spen___bit
        ; line_number = 51
        ;  _rx9 := _true
        ;info   51, 842
        bsf     _rx9___byte, _rx9___bit
        ; line_number = 52
        ;  _cren := _true
        ;info   52, 843
        bsf     _cren___byte, _cren___bit
        ; #_adden := _true
        ; line_number = 54
        ;  _adden := _false
        ;info   54, 844
        bcf     _adden___byte, _adden___bit

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

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


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




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

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

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

        ; # Read the first byte (the address):
        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
        ; line_number = 77
        ;  _eecon1 := 0
        ;info   77, 853
        bsf     __rp0___byte, __rp0___bit
        bsf     __rp1___byte, __rp1___bit
        clrf    _eecon1
        ; line_number = 78
        ;  _eeadr := rb2bus_eedata_address
        ;info   78, 856
        movlw   254
        bcf     __rp0___byte, __rp0___bit
        movwf   _eeadr
        ; line_number = 79
        ;  _rd := _true
        ;info   79, 859
        bsf     __rp0___byte, __rp0___bit
        bsf     _rd___byte, _rd___bit
        ; line_number = 80
        ;  temp1 := _eedata
        ;info   80, 861
        bcf     __rp0___byte, __rp0___bit
        movf    _eedata,w
        bcf     __rp1___byte, __rp1___bit
        movwf   rb2bus_eedata_read__temp1

        ; # Read the second byte (the 1'z complement)
        ; line_number = 83
        ;  _eeadr := _eeadr + 1
        ;info   83, 865
        bsf     __rp1___byte, __rp1___bit
        incf    _eeadr,f
        ; line_number = 84
        ;  _rd := _true
        ;info   84, 867
        bsf     __rp0___byte, __rp0___bit
        bsf     _rd___byte, _rd___bit
        ; line_number = 85
        ;  temp2 := _eedata
        ;info   85, 869
        bcf     __rp0___byte, __rp0___bit
        movf    _eedata,w
        bcf     __rp1___byte, __rp1___bit
        movwf   rb2bus_eedata_read__temp2

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

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


        ; delay after procedure statements=non-uniform




        ; line_number = 96
        ;info   96, 880
        ; procedure rb2bus_eedata_write
rb2bus_eedata_write:
        ; Last argument is sitting in W; save into argument variable
        movwf   rb2bus_eedata_write__address
        ; delay=4294967295
        ; line_number = 97
        ; argument address byte
rb2bus_eedata_write__address equ globals___0+5
        ; line_number = 98
        ;  returns_nothing

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

        ; # Clear out the {_eecon1} register
        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
        ; line_number = 104
        ;  _eecon1 := 0
        ;info   104, 881
        bsf     __rp0___byte, __rp0___bit
        bsf     __rp1___byte, __rp1___bit
        clrf    _eecon1
        ; line_number = 105
        ;  _eeadr := rb2bus_eedata_address
        ;info   105, 884
        movlw   254
        bcf     __rp0___byte, __rp0___bit
        movwf   _eeadr
        ; line_number = 106
        ;  _eedata := address
        ;info   106, 887
        bcf     __rp1___byte, __rp1___bit
        movf    rb2bus_eedata_write__address,w
        bsf     __rp1___byte, __rp1___bit
        movwf   _eedata

        ; # Write 2 bytes ({address} followed by {address}^0xff):
        ; line_number = 109
        ;  loop_exactly 2 start
        ;info   109, 891
rb2bus_eedata_write__1 equ globals___0+60
        movlw   2
        bcf     __rp1___byte, __rp1___bit
        movwf   rb2bus_eedata_write__1
rb2bus_eedata_write__2:
        ; # Set the data to write:

        ; # Set up the for the write:
        ; line_number = 113
        ;  _wren := _true
        ;info   113, 894
        bsf     __rp0___byte, __rp0___bit
        bsf     __rp1___byte, __rp1___bit
        bsf     _wren___byte, _wren___bit
        ; line_number = 114
        ;  _gie := _false
        ;info   114, 897
        bcf     _gie___byte, _gie___bit
        ; line_number = 115
        ;  _eecon2 := 0x55
        ;info   115, 898
        movlw   85
        movwf   _eecon2
        ; line_number = 116
        ;  _eecon2 := 0xaa
        ;info   116, 900
        movlw   170
        movwf   _eecon2
        ; # Start the write:
        ; line_number = 118
        ;  _wr := _true
        ;info   118, 902
        bsf     _wr___byte, _wr___bit

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

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

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


        bcf     __rp1___byte, __rp1___bit
        ; line_number = 109
        ;  loop_exactly 2 wrap-up
        decfsz  rb2bus_eedata_write__1,f
        goto    rb2bus_eedata_write__2
        ; line_number = 109
        ;  loop_exactly 2 done
        ; # Disable everything:
        ; line_number = 133
        ;  _eecon1 := 0
        ;info   133, 915
        bsf     __rp0___byte, __rp0___bit
        bsf     __rp1___byte, __rp1___bit
        clrf    _eecon1

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




        ; buffer = 'rb2bus'
        ; line_number = 57
        ;info   57, 921
        ; procedure rb2bus_select_wait
rb2bus_select_wait:
        ; arguments_none
        ; line_number = 59
        ;  returns_nothing

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

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

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
        ; line_number = 71
        ;  rb2bus_error := _false
        ;info   71, 921
        bcf     rb2bus_error___byte, rb2bus_error___bit
        ; line_number = 72
        ;  while !rb2bus_selected start
rb2bus_select_wait__1:
        ;info   72, 922
        ; =>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, 924
        bsf     _adden___byte, _adden___bit
        ; # Wait for a byte to arrive.
        ; line_number = 75
        ;  while !_rcif start
rb2bus_select_wait__2:
        ;info   75, 925
        ; =>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, 927
        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, 929
        bcf     rb2bus_select_wait__address_bit___byte, rb2bus_select_wait__address_bit___bit
        ; line_number = 80
        ;  if _rx9d start
        ;info   80, 930
        ; =>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, 931
        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, 932
        movf    _rcreg,w
        movwf   rb2bus_select_wait__value

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

        ; line_number = 91
        ;  if address_bit start
        ;info   91, 939
        ; =>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, 941
        ; 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, 945
        bsf     rb2bus_selected___byte, rb2bus_selected___bit
        ; line_number = 94
        ;  call rb2bus_byte_put(rb2_ok)
        ;info   94, 946
        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, 950
        ; 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, 950
        bcf     rb2bus_selected___byte, rb2bus_selected___bit


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




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

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

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

        ; # Return 0 in a bus flush condition to get us back to {rb2bus_select_wait}:
        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
        ; line_number = 123
        ;  if rb2bus_error start
        ;info   123, 952
        ; =>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, 953
        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, 954
        bcf     _adden___byte, _adden___bit
        ; line_number = 128
        ;  while !_rcif start
rb2bus_byte_get__1:
        ;info   128, 955
        ; =>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, 957
        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, 959
        bcf     rb2bus_byte_get__address_bit___byte, rb2bus_byte_get__address_bit___bit
        ; line_number = 133
        ;  if _rx9d start
        ;info   133, 960
        ; =>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, 961
        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, 962
        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, 964
        ; =>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, 965
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 139
        ;  if _oerr done
        ; line_number = 141
        ; if _ferr start
        ;info   141, 966
        ; =>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, 967
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 141
        ; if _ferr done
        ; line_number = 143
        ; _cren := _true
        ;info   143, 968
        bsf     _cren___byte, _cren___bit

        ; line_number = 145
        ;  if address_bit start
        ;info   145, 969
        ; =>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, 971
        ; 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, 975
        bsf     rb2bus_selected___byte, rb2bus_selected___bit
        ; line_number = 150
        ;  _adden := _false
        ;info   150, 976
        bcf     _adden___byte, _adden___bit

        ; line_number = 152
        ;  call rb2bus_byte_put(rb2_ok)
        ;info   152, 977
        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, 980
        bcf     rb2bus_selected___byte, rb2bus_selected___bit
        ; line_number = 156
        ;  _adden := _true
        ;info   156, 981
        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, 982
        bsf     rb2bus_error___byte, rb2bus_error___bit
        ; line_number = 160
        ;  value := 0
        ;info   160, 983
        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, 984
        movf    rb2bus_byte_get__value,w
        return  
        ; line_number = 163
        ;  return value done


        ; delay after procedure statements=non-uniform




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

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

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
        ; line_number = 174
        ;  if !rb2bus_error start
        ;info   174, 987
        ; =>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, 989
        ; =>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, 991
        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, 993
        bcf     _adden___byte, _adden___bit
        ; line_number = 181
        ;  _tx9d := _false
        ;info   181, 994
        bsf     __rp0___byte, __rp0___bit
        bcf     _tx9d___byte, _tx9d___bit
        ; line_number = 182
        ;  _txreg := value
        ;info   182, 996
        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, 999
        ; =>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, 1001
        ; line_number = 189
        ;info   189, 1001
        movf    _rcreg,w

        ; # Recover from any receive errors by toggling {_cren}:
        ; line_number = 192
        ;  if _oerr start
        ;info   192, 1002
        ; =>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, 1003
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 192
        ;  if _oerr done
        ; line_number = 194
        ; if _ferr start
        ;info   194, 1004
        ; =>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, 1005
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 194
        ; if _ferr done
        ; line_number = 196
        ; _cren := _true
        ;info   196, 1006
        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, 1008
        ; procedure rb2bus_command
rb2bus_command:
        ; Last argument is sitting in W; save into argument variable
        movwf   rb2bus_command__command
        ; delay=4294967295
        ; line_number = 200
        ; argument command byte
rb2bus_command__command equ globals___0+11
        ; line_number = 201
        ;  returns_nothing

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

        ; line_number = 206
        ;  local new_address byte
rb2bus_command__new_address equ globals___0+9
        ; line_number = 207
        ;  local temp byte
rb2bus_command__temp equ globals___0+10

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
        ; line_number = 209
        ;  switch command & 7 start
        ;info   209, 1009
        ; 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, 1023
        movf    rb2bus_address,w
        call    rb2bus_byte_put

        ; # Fetch new address:
        ; line_number = 216
        ;  new_address := rb2bus_byte_get()
        ;info   216, 1025
        call    rb2bus_byte_get
        movwf   rb2bus_command__new_address
        ; line_number = 217
        ;  if new_address = 0 || new_address = rb2bus_address start
        ;info   217, 1027
        ; 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, 1034
        movlw   0
        call    rb2bus_byte_put
        ; line_number = 219
        ;  rb2bus_error := _true
        ;info   219, 1036
        bsf     rb2bus_error___byte, rb2bus_error___bit
        ; line_number = 220
        ;  rb2bus_selected := _false
        ;info   220, 1037
        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, 1039
        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, 1041
        call    rb2bus_byte_get
        movwf   rb2bus_command__temp
        ; line_number = 227
        ;  if temp != new_address start
        ;info   227, 1043
        ; 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, 1047
        movf    rb2bus_command__new_address,w
        call    rb2bus_eedata_write
        ; line_number = 233
        ;  temp := rb2bus_eedata_read()
        ;info   233, 1049
        call    rb2bus_eedata_read
        movwf   rb2bus_command__temp
        ; line_number = 234
        ;  if temp = new_address start
        ;info   234, 1051
        ; 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, 1055
        movf    rb2bus_command__new_address,w
        movwf   rb2bus_address
        ; line_number = 236
        ;  call rb2bus_byte_put(rb2_ok)
        ;info   236, 1057
        movlw   165
        goto    rb2bus_command__2
        ; 2GOTO: Starting code 2
rb2bus_command__1:
        ; line_number = 238
        ; call rb2bus_byte_put(0)
        ;info   238, 1059
        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, 1062
        movlw   0
        call    rb2bus_byte_put
        ; line_number = 229
        ;  rb2bus_error := _true
        ;info   229, 1064
        bsf     rb2bus_error___byte, rb2bus_error___bit
        ; line_number = 230
        ;  rb2bus_selected := _false
        ;info   230, 1065
        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, 1067
        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, 1071
        movf    rb2bus_index,w
        call    id
        call    rb2bus_byte_put
        ; line_number = 243
        ;  rb2bus_index := rb2bus_index + 1
        ;info   243, 1074
        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, 1076
        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, 1078
        call    rb2bus_deselect


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




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

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

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
        ; line_number = 69
        ;  assemble
        ;info   69, 1081
        ; # Pointer is in W; move it to {_fsr}:
        ; line_number = 71
        ;info   71, 1081
        movwf   _fsr
        ; # Set up {_irp} and _{fsr}:
        ; line_number = 73
        ;info   73, 1082
        bcf     _irp___byte, _irp___bit
        ; line_number = 74
        ;info   74, 1083
        rlf     _fsr,f
        ; line_number = 75
        ;info   75, 1084
        btfsc   _c___byte, _c___bit
        ; line_number = 76
        ;info   76, 1085
        bsf     _irp___byte, _irp___bit
        ; line_number = 77
        ;info   77, 1086
        bcf     _fsr, 0
        ; # Grab the value and store into {_signed16_a0}:{_signed16_a1}
        ; line_number = 79
        ;info   79, 1087
        movf    _indf,w
        ; line_number = 80
        ;info   80, 1088
        movwf   _signed16_a0
        ; line_number = 81
        ;info   81, 1089
        incf    _fsr,f
        ; line_number = 82
        ;info   82, 1090
        movf    _indf,w
        ; line_number = 83
        ;info   83, 1091
        movwf   _signed16_a1
        ; line_number = 84
        ;info   84, 1092
        return  


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




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

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

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
        ; line_number = 95
        ;  assemble
        ;info   95, 1094
        ; # Pointer is in W; move it to {_fsr}:
        ; line_number = 97
        ;info   97, 1094
        movwf   _fsr
        ; # Set up {_irp} and _{fsr}:
        ; line_number = 99
        ;info   99, 1095
        bcf     _irp___byte, _irp___bit
        ; line_number = 100
        ;info   100, 1096
        rlf     _fsr,f
        ; line_number = 101
        ;info   101, 1097
        btfsc   _c___byte, _c___bit
        ; line_number = 102
        ;info   102, 1098
        bsf     _irp___byte, _irp___bit
        ; line_number = 103
        ;info   103, 1099
        bcf     _fsr, 0
        ; # Grab MSB and add it into {_signed16_a0} (MSB):
        ; line_number = 105
        ;info   105, 1100
        movf    _indf,w
        ; line_number = 106
        ;info   106, 1101
        addwf   _signed16_a0,f
        ; line_number = 107
        ;info   107, 1102
        incf    _fsr,f

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

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


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




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

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

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
        ; line_number = 127
        ;  assemble
        ;info   127, 1109
        ; # Pointer is in W; move it to {_fsr}:
        ; line_number = 129
        ;info   129, 1109
        movwf   _fsr
        ; # Set up {_irp} and _{fsr}:
        ; line_number = 131
        ;info   131, 1110
        bcf     _irp___byte, _irp___bit
        ; line_number = 132
        ;info   132, 1111
        rlf     _fsr,f
        ; line_number = 133
        ;info   133, 1112
        btfsc   _c___byte, _c___bit
        ; line_number = 134
        ;info   134, 1113
        bsf     _irp___byte, _irp___bit
        ; line_number = 135
        ;info   135, 1114
        bcf     _fsr, 0
        ; # Grab the value and store into {_signed16_b0}:{_signed16_b1}:
        ; line_number = 137
        ;info   137, 1115
        movf    _indf,w
        ; line_number = 138
        ;info   138, 1116
        movwf   _signed16_b0
        ; line_number = 139
        ;info   139, 1117
        incf    _fsr,f
        ; line_number = 140
        ;info   140, 1118
        movf    _indf,w
        ; line_number = 141
        ;info   141, 1119
        movwf   _signed16_b1

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

        ; line_number = 146
        ;info   146, 1121
        return  


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




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

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

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
        ; line_number = 157
        ;  assemble
        ;info   157, 1123
        ; # Pointer is in W; move it to {_fsr}:
        ; line_number = 159
        ;info   159, 1123
        movwf   _fsr
        ; # Set up {_irp} and _{fsr}:
        ; line_number = 161
        ;info   161, 1124
        bcf     _irp___byte, _irp___bit
        ; line_number = 162
        ;info   162, 1125
        rlf     _fsr,f
        ; line_number = 163
        ;info   163, 1126
        btfsc   _c___byte, _c___bit
        ; line_number = 164
        ;info   164, 1127
        bsf     _irp___byte, _irp___bit
        ; line_number = 165
        ;info   165, 1128
        bcf     _fsr, 0
        ; # Grab the value and store into {_signed16_b0}:{_signed16_b1}:
        ; line_number = 167
        ;info   167, 1129
        movf    _indf,w
        ; line_number = 168
        ;info   168, 1130
        movwf   _signed16_b0
        ; line_number = 169
        ;info   169, 1131
        incf    _fsr,f
        ; line_number = 170
        ;info   170, 1132
        movf    _indf,w
        ; line_number = 171
        ;info   171, 1133
        movwf   _signed16_b1

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

        ; line_number = 199
        ;  assemble
        ;info   199, 1134
        ; line_number = 200
        ;info   200, 1134
        clrf    _signed16_result0
        ; line_number = 201
        ;info   201, 1135
        clrf    _signed16_result1
        ; line_number = 202
        ;info   202, 1136
        clrf    _signed16_result2
        ; line_number = 203
        ;info   203, 1137
        movlw   128
        ; line_number = 204
        ;info   204, 1138
        movwf   _signed16_result3

        ; line_number = 206
        ;info   206, 1139
        clrf    _signed16_neg_flag

        ; line_number = 208
        ;info   208, 1140
        btfss   _signed16_a0, 7
        ; line_number = 209
        ;info   209, 1141
        goto    _signed16_multiply_a_pos
        ; line_number = 210
        ;info   210, 1142
        comf    _signed16_a0,f
        ; line_number = 211
        ;info   211, 1143
        comf    _signed16_a1,f
        ; line_number = 212
        ;info   212, 1144
        incf    _signed16_a1,f
        ; line_number = 213
        ;info   213, 1145
        btfsc   _z___byte, _z___bit
        ; line_number = 214
        ;info   214, 1146
        incf    _signed16_a0,f
        ; line_number = 215
        ;info   215, 1147
        incf    _signed16_neg_flag,f

        ; line_number = 217
_signed16_multiply_a_pos:
        ; line_number = 218
        ;info   218, 1148
        btfss   _signed16_b0, 7
        ; line_number = 219
        ;info   219, 1149
        goto    _signed16_multiply_nextbit
        ; line_number = 220
        ;info   220, 1150
        comf    _signed16_b0,f
        ; line_number = 221
        ;info   221, 1151
        comf    _signed16_b1,f
        ; line_number = 222
        ;info   222, 1152
        incf    _signed16_b1,f
        ; line_number = 223
        ;info   223, 1153
        btfsc   _z___byte, _z___bit
        ; line_number = 224
        ;info   224, 1154
        incf    _signed16_b0,f
        ; line_number = 225
        ;info   225, 1155
        incf    _signed16_neg_flag,f

        ; line_number = 227
_signed16_multiply_nextbit:
        ; line_number = 228
        ;info   228, 1156
        rrf     _signed16_a0,f
        ; line_number = 229
        ;info   229, 1157
        rrf     _signed16_a1,f

        ; line_number = 231
        ;info   231, 1158
        btfss   _c___byte, _c___bit
        ; line_number = 232
        ;info   232, 1159
        goto    _signed16_multiply_nobit_l
        ; line_number = 233
        ;info   233, 1160
        movf    _signed16_b1,w
        ; line_number = 234
        ;info   234, 1161
        addwf   _signed16_result2,f

        ; line_number = 236
        ;info   236, 1162
        movf    _signed16_b0,w
        ; line_number = 237
        ;info   237, 1163
        btfsc   _c___byte, _c___bit
        ; line_number = 238
        ;info   238, 1164
        incfsz  _signed16_b0,w
        ; line_number = 239
        ;info   239, 1165
        addwf   _signed16_result1,f
        ; line_number = 240
        ;info   240, 1166
        btfsc   _c___byte, _c___bit
        ; line_number = 241
        ;info   241, 1167
        incf    _signed16_result0,f
        ; line_number = 242
        ;info   242, 1168
        bcf     _c___byte, _c___bit

        ; line_number = 244
_signed16_multiply_nobit_l:
        ; line_number = 245
        ;info   245, 1169
        btfss   _signed16_a1, 7
        ; line_number = 246
        ;info   246, 1170
        goto    _signed16_multiply_nobit_h
        ; line_number = 247
        ;info   247, 1171
        movf    _signed16_b1,w
        ; line_number = 248
        ;info   248, 1172
        addwf   _signed16_result1,f
        ; line_number = 249
        ;info   249, 1173
        btfsc   _c___byte, _c___bit
        ; line_number = 250
        ;info   250, 1174
        incf    _signed16_result0,f
        ; line_number = 251
        ;info   251, 1175
        movf    _signed16_b0,w
        ; line_number = 252
        ;info   252, 1176
        addwf   _signed16_result0,f

        ; line_number = 254
_signed16_multiply_nobit_h:
        ; line_number = 255
        ;info   255, 1177
        rrf     _signed16_result0,f
        ; line_number = 256
        ;info   256, 1178
        rrf     _signed16_result1,f
        ; line_number = 257
        ;info   257, 1179
        rrf     _signed16_result2,f
        ; line_number = 258
        ;info   258, 1180
        rrf     _signed16_result3,f

        ; line_number = 260
        ;info   260, 1181
        btfss   _c___byte, _c___bit
        ; line_number = 261
        ;info   261, 1182
        goto    _signed16_multiply_nextbit
        ; line_number = 262
        ;info   262, 1183
        btfss   _signed16_neg_flag, 0
        ; line_number = 263
        ;info   263, 1184
        goto    _signed16_mulitply_no_invert

        ; line_number = 265
        ;info   265, 1185
        comf    _signed16_result0,f
        ; line_number = 266
        ;info   266, 1186
        comf    _signed16_result1,f
        ; line_number = 267
        ;info   267, 1187
        comf    _signed16_result2,f
        ; line_number = 268
        ;info   268, 1188
        comf    _signed16_result3,f

        ; line_number = 270
        ;info   270, 1189
        incf    _signed16_result3,f
        ; line_number = 271
        ;info   271, 1190
        btfsc   _z___byte, _z___bit
        ; line_number = 272
        ;info   272, 1191
        incf    _signed16_result2,f
        ; line_number = 273
        ;info   273, 1192
        btfsc   _z___byte, _z___bit
        ; line_number = 274
        ;info   274, 1193
        incf    _signed16_result1,f
        ; line_number = 275
        ;info   275, 1194
        btfsc   _z___byte, _z___bit
        ; line_number = 276
        ;info   276, 1195
        incf    _signed16_result0,f
        ; line_number = 277
_signed16_mulitply_no_invert:

        ; # Store the final result into _signed16_a<0:1>:
        ; line_number = 280
        ;info   280, 1196
        movf    _signed16_result2,w
        ; line_number = 281
        ;info   281, 1197
        movwf   _signed16_a0
        ; line_number = 282
        ;info   282, 1198
        movf    _signed16_result3,w
        ; line_number = 283
        ;info   283, 1199
        movwf   _signed16_a1
        ; line_number = 284
        ;info   284, 1200
        return  


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




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

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

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
        ; line_number = 295
        ;  assemble
        ;info   295, 1202
        ; # Pointer is in W; move it to {_fsr}:
        ; line_number = 297
        ;info   297, 1202
        movwf   _fsr
        ; # Set up {_irp} and _{fsr}:
        ; line_number = 299
        ;info   299, 1203
        bcf     _irp___byte, _irp___bit
        ; line_number = 300
        ;info   300, 1204
        rlf     _fsr,f
        ; line_number = 301
        ;info   301, 1205
        btfsc   _c___byte, _c___bit
        ; line_number = 302
        ;info   302, 1206
        bsf     _irp___byte, _irp___bit
        ; line_number = 303
        ;info   303, 1207
        bcf     _fsr, 0

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

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

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

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

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


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




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

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

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
        ; line_number = 334
        ;  assemble
        ;info   334, 1220
        ; # Pointer is in W; move it to {_fsr}:
        ; line_number = 336
        ;info   336, 1220
        movwf   _fsr
        ; # Set up {_irp} and _{fsr}:
        ; line_number = 338
        ;info   338, 1221
        bcf     _irp___byte, _irp___bit
        ; line_number = 339
        ;info   339, 1222
        rlf     _fsr,f
        ; line_number = 340
        ;info   340, 1223
        btfsc   _c___byte, _c___bit
        ; line_number = 341
        ;info   341, 1224
        bsf     _irp___byte, _irp___bit
        ; line_number = 342
        ;info   342, 1225
        bcf     _fsr, 0
        ; # Grab the value and store into {_signed16_a0}:{_signed16_a1}:
        ; line_number = 344
        ;info   344, 1226
        movf    _signed16_a0,w
        ; line_number = 345
        ;info   345, 1227
        movwf   _indf
        ; line_number = 346
        ;info   346, 1228
        incf    _fsr,f
        ; line_number = 347
        ;info   347, 1229
        movf    _signed16_a1,w
        ; line_number = 348
        ;info   348, 1230
        movwf   _indf
        ; line_number = 349
        ;info   349, 1231
        return  


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




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

        ; # This procedure will negate the signed16 A registers.

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


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




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

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

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
        ; line_number = 372
        ;  assemble
        ;info   372, 1240
        ; # Pointer is in W; move it to {_fsr}:
        ; line_number = 374
        ;info   374, 1240
        movwf   _fsr
        ; # Set up {_irp} and _{fsr}:
        ; line_number = 376
        ;info   376, 1241
        bcf     _irp___byte, _irp___bit
        ; line_number = 377
        ;info   377, 1242
        rlf     _fsr,f
        ; line_number = 378
        ;info   378, 1243
        btfsc   _c___byte, _c___bit
        ; line_number = 379
        ;info   379, 1244
        bsf     _irp___byte, _irp___bit
        ; line_number = 380
        ;info   380, 1245
        bcf     _fsr, 0

        ; # Swap {pointer} with {_signed16_a0}:
        ; line_number = 383
        ;info   383, 1246
        movf    _indf,w
        ; line_number = 384
        ;info   384, 1247
        xorwf   _signed16_a0,f
        ; line_number = 385
        ;info   385, 1248
        xorwf   _signed16_a0,w
        ; line_number = 386
        ;info   386, 1249
        xorwf   _signed16_a0,f
        ; line_number = 387
        ;info   387, 1250
        movwf   _indf

        ; # Swap {pointer}+1 with {_signed16_a1}:
        ; line_number = 390
        ;info   390, 1251
        incf    _fsr,f
        ; line_number = 391
        ;info   391, 1252
        movf    _indf,w
        ; line_number = 392
        ;info   392, 1253
        xorwf   _signed16_a1,f
        ; line_number = 393
        ;info   393, 1254
        xorwf   _signed16_a1,w
        ; line_number = 394
        ;info   394, 1255
        xorwf   _signed16_a1,f
        ; line_number = 395
        ;info   395, 1256
        movwf   _indf
        ; line_number = 396
        ;info   396, 1257
        return  


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




_signed16_from_byte__0return equ globals___0+30
        ; line_number = 399
        ;info   399, 1258
        ; procedure _signed16_from_byte
_signed16_from_byte:
        ; Last argument is sitting in W; save into argument variable
        movwf   _signed16_from_byte__number
        ; delay=4294967295
        ; line_number = 400
        ; argument number byte
_signed16_from_byte__number equ globals___0+29
        ; line_number = 401
        ;  returns signed16

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

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
        ; line_number = 405
        ;  _signed16_a0 := 0
        ;info   405, 1259
        clrf    _signed16_a0
        ; line_number = 406
        ;  _signed16_a1 := number
        ;info   406, 1260
        movf    _signed16_from_byte__number,w
        movwf   _signed16_a1
        ; line_number = 407
        ;  assemble
        ;info   407, 1262
        ; line_number = 408
        ;info   408, 1262
        movlw   _signed16_from_byte__0return>>1
        ; line_number = 409
        ;info   409, 1263
        call    _signed16_pointer_store
        ; line_number = 410
        ;info   410, 1264
        retlw   _signed16_from_byte__0return>>1


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




_signed16_from_byte2__0return equ globals___0+34
        ; line_number = 413
        ;info   413, 1266
        ; procedure _signed16_from_byte2
_signed16_from_byte2:
        ; Last argument is sitting in W; save into argument variable
        movwf   _signed16_from_byte2__byte2
        ; delay=4294967295
        ; line_number = 414
        ; argument byte1 byte
_signed16_from_byte2__byte1 equ globals___0+32
        ; line_number = 415
        ; argument byte2 byte
_signed16_from_byte2__byte2 equ globals___0+33
        ; line_number = 416
        ;  returns signed16

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

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:00=uu=>00)
        ; line_number = 421
        ;  _signed16_a0 := byte1
        ;info   421, 1267
        movf    _signed16_from_byte2__byte1,w
        movwf   _signed16_a0
        ; line_number = 422
        ;  _signed16_a1 := byte2
        ;info   422, 1269
        movf    _signed16_from_byte2__byte2,w
        movwf   _signed16_a1
        ; line_number = 423
        ;  assemble
        ;info   423, 1271
        ; line_number = 424
        ;info   424, 1271
        movlw   _signed16_from_byte2__0return>>1
        ; line_number = 425
        ;info   425, 1272
        call    _signed16_pointer_store
        ; line_number = 426
        ;info   426, 1273
        retlw   _signed16_from_byte2__0return>>1


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




        ; line_number = 429
        ;info   429, 1275
        ; procedure _signed16_to_byte
_signed16_to_byte:
        ; line_number = 430
        ; argument number signed16
_signed16_to_byte__number equ globals___0+36
        ; line_number = 431
        ;  returns byte

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

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


        ; delay after procedure statements=non-uniform




        ; line_number = 442
        ;info   442, 1279
        ; procedure _signed16_byte_high
_signed16_byte_high:
        ; line_number = 443
        ; argument number signed16
_signed16_byte_high__number equ globals___0+38
        ; line_number = 444
        ;  returns byte

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

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


        ; delay after procedure statements=non-uniform




        ; line_number = 455
        ;info   455, 1283
        ; procedure _signed16_byte_low
_signed16_byte_low:
        ; line_number = 456
        ; argument number signed16
_signed16_byte_low__number equ globals___0+40
        ; line_number = 457
        ;  returns byte

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

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


        ; delay after procedure statements=non-uniform




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

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

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


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




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

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

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


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




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

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

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


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




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

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

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


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




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

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

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


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




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

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

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


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




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

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

        ; #Initialize:
        ; line_number = 587
        ;info   587, 1323
        movlw   16
        ; line_number = 588
        ;info   588, 1324
        movwf   _signed16_count
        ; line_number = 589
        ;info   589, 1325
        movf    _signed16_a0,w
        ; line_number = 590
        ;info   590, 1326
        movwf   _signed16_temp0
        ; line_number = 591
        ;info   591, 1327
        movf    _signed16_a1,w
        ; line_number = 592
        ;info   592, 1328
        movwf   _signed16_temp1
        ; line_number = 593
        ;info   593, 1329
        clrf    _signed16_a0
        ; line_number = 594
        ;info   594, 1330
        clrf    _signed16_a1
        ; line_number = 595
        ;info   595, 1331
        clrf    _signed16_rem0
        ; line_number = 596
        ;info   596, 1332
        clrf    _signed16_rem1
        ; # Loop 16 times usinge {_signed16_count}:
        ; line_number = 598
_signed16_divide_dloop:
        ; line_number = 599
        ;info   599, 1333
        bcf     _c___byte, _c___bit
        ; line_number = 600
        ;info   600, 1334
        rlf     _signed16_temp1,f
        ; line_number = 601
        ;info   601, 1335
        rlf     _signed16_temp0,f
        ; line_number = 602
        ;info   602, 1336
        rlf     _signed16_rem1,f
        ; line_number = 603
        ;info   603, 1337
        rlf     _signed16_rem0,f
        ; line_number = 604
        ;info   604, 1338
        movf    _signed16_b0,w
        ; line_number = 605
        ;info   605, 1339
        subwf   _signed16_rem0,w
        ; line_number = 606
        ;info   606, 1340
        btfss   _z___byte, _z___bit
        ; line_number = 607
        ;info   607, 1341
        goto    _signed16_divide_no_check
        ; line_number = 608
        ;info   608, 1342
        movf    _signed16_b1,w
        ; line_number = 609
        ;info   609, 1343
        subwf   _signed16_rem1,w
        ; line_number = 610
_signed16_divide_no_check:
        ; line_number = 611
        ;info   611, 1344
        btfss   _c___byte, _c___bit
        ; line_number = 612
        ;info   612, 1345
        goto    _signed16_divide_no_go
        ; line_number = 613
        ;info   613, 1346
        movf    _signed16_b1,w
        ; line_number = 614
        ;info   614, 1347
        subwf   _signed16_rem1,f
        ; line_number = 615
        ;info   615, 1348
        btfss   _c___byte, _c___bit
        ; line_number = 616
        ;info   616, 1349
        decf    _signed16_rem0,f
        ; line_number = 617
        ;info   617, 1350
        movf    _signed16_b0,w
        ; line_number = 618
        ;info   618, 1351
        subwf   _signed16_rem0,f
        ; line_number = 619
        ;info   619, 1352
        bsf     _c___byte, _c___bit
        ; line_number = 620
_signed16_divide_no_go:
        ; line_number = 621
        ;info   621, 1353
        rlf     _signed16_a1,f
        ; line_number = 622
        ;info   622, 1354
        rlf     _signed16_a0,f
        ; line_number = 623
        ;info   623, 1355
        decfsz  _signed16_count,f
        ; line_number = 624
        ;info   624, 1356
        goto    _signed16_divide_dloop

        ; line_number = 626
        ;info   626, 1357
        btfss   _signed16_sign, 7
        ; line_number = 627
        ;info   627, 1358
        retlw   0
        ; line_number = 628
        ;info   628, 1359
        goto    _signed16_divide_neg_b

        ; line_number = 630
_signed16_divide_neg_b:
        ; line_number = 631
        ;info   631, 1360
        comf    _signed16_b1,f
        ; line_number = 632
        ;info   632, 1361
        incf    _signed16_b1,f
        ; line_number = 633
        ;info   633, 1362
        btfsc   _z___byte, _z___bit
        ; line_number = 634
        ;info   634, 1363
        decf    _signed16_b0,f
        ; line_number = 635
        ;info   635, 1364
        comf    _signed16_b0,f
        ; line_number = 636
        ;info   636, 1365
        retlw   0

        ; line_number = 638
_signed16_divide_s_sign:
        ; line_number = 639
        ;info   639, 1366
        movf    _signed16_b0,w
        ; line_number = 640
        ;info   640, 1367
        xorwf   _signed16_a0,w
        ; line_number = 641
        ;info   641, 1368
        movwf   _signed16_sign
        ; line_number = 642
        ;info   642, 1369
        btfss   _signed16_a0, 7
        ; line_number = 643
        ;info   643, 1370
        goto    _signed16_divide_check_a

        ; line_number = 645
        ;info   645, 1371
        comf    _signed16_a1,f
        ; line_number = 646
        ;info   646, 1372
        incf    _signed16_a1,f
        ; line_number = 647
        ;info   647, 1373
        btfsc   _z___byte, _z___bit
        ; line_number = 648
        ;info   648, 1374
        decf    _signed16_a0,f
        ; line_number = 649
        ;info   649, 1375
        comf    _signed16_a0,f

        ; line_number = 651
_signed16_divide_check_a:
        ; line_number = 652
        ;info   652, 1376
        btfss   _signed16_b0, 7
        ; line_number = 653
        ;info   653, 1377
        retlw   0
        ; line_number = 654
        ;info   654, 1378
        goto    _signed16_divide_neg_b

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




        ; 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 = 0x400
        ; cp = off (0x3030)
        ; debug = off (0x800)
        ; wrt = off (0x0)
        ; cpd = off (0x100)
        ; lvp = off (0x0)
        ; boden = off (0x0)
        ; pwrte = off (0x8)
        ; wdte = off (0x0)
        ; fosc = hs (0x2)
        ; 15674 = 0x3d3a
        __config 15674
        ; Define start addresses for data regions
        ; Region="shared___globals" Address=112" Size=16 Bytes=2 Bits=0 Available=14
        ; Region="globals___0" Address=32" Size=80 Bytes=61 Bits=4 Available=18
        ; Region="globals___1" Address=160" Size=80 Bytes=78 Bits=0 Available=2
        ; 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
