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

        ; Define start addresses for data regions
shared___globals equ 112
globals___0 equ 32
globals___1 equ 160
globals___2 equ 288
__indf equ 0
__pcl equ 2
__status equ 3
__fsr equ 4
__c___byte equ 3
__c___bit equ 0
__z___byte equ 3
__z___bit equ 2
__rp0___byte equ 3
__rp0___bit equ 5
__rp1___byte equ 3
__rp1___bit equ 6
__irp___byte equ 3
__irp___bit equ 7
__pclath equ 10
__cb0___byte equ 10
__cb0___bit equ 3
__cb1___byte equ 10
__cb1___bit equ 4

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

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

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

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

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

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

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

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

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

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

        ; line_number = 205
        ; library _standard entered

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

        ; # Standard definition for uCL:

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


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


        ; # Register/bit bindings:

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

        ; line_number = 216
        ; register _indf = 
_indf equ 0

        ; line_number = 218
        ; register _tmr0 = 
_tmr0 equ 1

        ; line_number = 220
        ; register _pcl = 
_pcl equ 2

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

        ; line_number = 232
        ; register _fsr = 
_fsr equ 4

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

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

        ; line_number = 252
        ; register _pclath = 
_pclath equ 10

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

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

        ; line_number = 274
        ; register _tmr1l = 
_tmr1l equ 14

        ; line_number = 276
        ; register _tmr1h = 
_tmr1h equ 15

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

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

        ; line_number = 296
        ; register _spbrgh = 
_spbrgh equ 18

        ; line_number = 298
        ; register _spbrg = 
_spbrg equ 19

        ; line_number = 300
        ; register _rcreg = 
_rcreg equ 20

        ; line_number = 302
        ; register _txreg = 
_txreg equ 21

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

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

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

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

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

        ; line_number = 345
        ; register _adresh = 
_adresh equ 30

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

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

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

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

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

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

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

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

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

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

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

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

        ; line_number = 442
        ; register _eedath = 
_eedath equ 151

        ; line_number = 444
        ; register _eeadrh = 
_eeadrh equ 152

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

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

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

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

        ; line_number = 481
        ; register _eecon2 = 
_eecon2 equ 157

        ; line_number = 483
        ; register _adresl = 
_adresl equ 158

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

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

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

        ; # The system is running at 20MHz:
        ; line_number = 10
        ; library clock20mhz entered
        ; # Copyright (c) 2004 by Wayne C. Gramlich
        ; # All rights reserved.

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

        ; # Define processor constants:
        ; buffer = 'clock20mhz'
        ; line_number = 9
        ; constant clock_rate = 20000000
clock_rate equ 20000000
        ; line_number = 10
        ; constant clocks_per_instruction = 4
clocks_per_instruction equ 4
        ; line_number = 11
        ; constant instruction_rate = clock_rate / clocks_per_instruction
instruction_rate equ 5000000


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

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

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

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

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

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

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

        ; # The library of bus access routines for use by a PIC16F688.
        ; line_number = 20
        ; 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 = 14
        ; constant rb2_laser1_sense_read = 0
rb2_laser1_sense_read equ 0
        ; line_number = 15
        ; constant rb2_laser1_enable_read = 1
rb2_laser1_enable_read equ 1
        ; line_number = 16
        ; constant rb2_laser1_enable_clear = 2
rb2_laser1_enable_clear equ 2
        ; line_number = 17
        ; constant rb2_laser1_enable_set = 3
rb2_laser1_enable_set equ 3

        ; line_number = 19
        ; constant rb2_minimotor2_address = 2
rb2_minimotor2_address equ 2
        ; line_number = 20
        ; constant rb2_midimotor2_address = 3
rb2_midimotor2_address equ 3
        ; line_number = 21
        ; constant rb2_motor0_speed_get = 0
rb2_motor0_speed_get equ 0
        ; line_number = 22
        ; constant rb2_motor0_speed_set = 1
rb2_motor0_speed_set equ 1
        ; line_number = 23
        ; constant rb2_motor1_speed_get = 2
rb2_motor1_speed_get equ 2
        ; line_number = 24
        ; constant rb2_motor1_speed_set = 3
rb2_motor1_speed_set equ 3
        ; line_number = 25
        ; constant rb2_duty_cycle_get = 4
rb2_duty_cycle_get equ 4
        ; line_number = 26
        ; constant rb2_duty_cycle_set = 8
rb2_duty_cycle_set equ 8

        ; line_number = 28
        ; constant rb2_irdistance2_address = 4
rb2_irdistance2_address equ 4
        ; line_number = 29
        ; constant rb2_irdistance2_raw0_get = 0
rb2_irdistance2_raw0_get equ 0
        ; line_number = 30
        ; constant rb2_irdistance2_raw1_get = 1
rb2_irdistance2_raw1_get equ 1
        ; line_number = 31
        ; constant rb2_irdistance2_smooth0_get = 2
rb2_irdistance2_smooth0_get equ 2
        ; line_number = 32
        ; constant rb2_irdistance2_smooth1_get = 3
rb2_irdistance2_smooth1_get equ 3
        ; line_number = 33
        ; constant rb2_irdistance2_linear0_get = 4
rb2_irdistance2_linear0_get equ 4
        ; line_number = 34
        ; constant rb2_irdistance2_linear1_get = 6
rb2_irdistance2_linear1_get equ 6

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


        ; line_number = 68
        ; constant rb2_orient5_address = 6
rb2_orient5_address equ 6

        ; line_number = 70
        ; constant rb2_compass8_address = 7
rb2_compass8_address equ 7

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

        ; line_number = 84
        ; constant rb2_sonar2_address = 9
rb2_sonar2_address equ 9

        ; line_number = 86
        ; constant rb2_voice1_address = 10
rb2_voice1_address equ 10

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

        ; line_number = 112
        ; constant rb2_controller28_address = 28
rb2_controller28_address equ 28

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


        ; buffer = 'servo4'
        ; line_number = 20
        ; library rb2_constants exited
        ; line_number = 21
        ; library rb2bus_pic16f688 entered

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

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

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

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

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

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

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

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

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


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

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

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

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

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

        ; buffer = 'servo4'
        ; line_number = 21
        ; library rb2bus_pic16f688 exited

        ; # This module uses 20MHz ceramic resonator; hence mode FOSC=HS:

        ; # We want the TRM0 to interrupt every 2.5mS.  With FOSC=20MHz,
        ; # we need to interrupt every 2.5 * 1000 * 5 = 12,500 instructions.
        ; # With the TMR0 prescaler set to 64, we want TMR0 every 195 ticks
        ; # (195 * 64 = 12480):
        ; line_number = 30
        ; constant tmr0_instructions = 2500 * microsecond
tmr0_instructions equ 12500
        ; line_number = 31
        ; constant tmr0_power = 6
tmr0_power equ 6
        ; line_number = 32
        ; constant tmr0_prescale = 1 << tmr0_power
tmr0_prescale equ 64
        ; line_number = 33
        ; constant tmr0_ps = tmr0_power - 1
tmr0_ps equ 5
        ; line_number = 34
        ; constant tmr0_value = tmr0_instructions / tmr0_prescale + 1
tmr0_value equ 196
        ; line_number = 35
        ; constant tmr0_value_negative = (0 - tmr0_value) & 0xff
tmr0_value_negative equ 60

        ; line_number = 37
        ; constant servos = 4
servos equ 4
        ; line_number = 38
        ; constant servos_mask = servos - 1
servos_mask equ 3
        ; line_number = 39
        ; constant enables_mask = (1 << servos) - 1
enables_mask equ 15

        ; # 1.5ms pulse width is supposed to be the "center" position
        ; # for a servo.  We will initialize for center.
        ; # 7500 * .20us = 1.5ms.   7500 = 0x1d4c
        ; line_number = 44
        ; constant servo_center = 1500 * microsecond
servo_center equ 7500
        ; line_number = 45
        ; constant servo_center_low = servo_center & 0xff
servo_center_low equ 76
        ; line_number = 46
        ; constant servo_center_high = servo_center >> 8
servo_center_high equ 29

        ; line_number = 48
        ; global enables byte
enables equ globals___0+12
        ; line_number = 49
        ; global servo_index byte
servo_index equ globals___0+13
        ; line_number = 50
        ; global servos_high[servos] array[byte]
servos_high equ globals___0+14
        ; line_number = 51
        ; global servos_low[servos] array[byte]
servos_low equ globals___0+18

        ; line_number = 53
        ; package pdip
        ; line_number = 54
        ; pin 1 = power_supply
        ; line_number = 55
        ;  pin 2 = osc1
        ; line_number = 56
        ;  pin 3 = osc2
        ; line_number = 57
        ;  pin 4 = ra3_nc
        ; line_number = 58
        ;  pin 5 = rx, name=rx, bit=rx_bit
rx___byte equ _portc
rx___bit equ 5
rx_bit equ 5
        ; line_number = 59
        ;  pin 6 = tx, name=tx, bit=tx_bit
tx___byte equ _portc
tx___bit equ 4
tx_bit equ 4
        ; line_number = 60
        ;  pin 7 = rc3_out, name=servo3, mask=servo3_mask, bit=servo_bit3
servo3___byte equ _portc
servo3___bit equ 3
servo3_mask equ 8
servo_bit3 equ 3
        ; line_number = 61
        ;  pin 8 = rc2_out, name=servo2, mask=servo2_mask, bit=servo_bit2
servo2___byte equ _portc
servo2___bit equ 2
servo2_mask equ 4
servo_bit2 equ 2
        ; line_number = 62
        ;  pin 9 = rc1_out, name=servo1, mask=servo1_mask, bit=servo_bit1
servo1___byte equ _portc
servo1___bit equ 1
servo1_mask equ 2
servo_bit1 equ 1
        ; line_number = 63
        ;  pin 10 = rc0_out, name=servo0, mask=servo0_mask, bit=servo_bit0
servo0___byte equ _portc
servo0___bit equ 0
servo0_mask equ 1
servo_bit0 equ 0
        ; line_number = 64
        ;  pin 11 = ra2_nc
        ; line_number = 65
        ;  pin 12 = ra1_nc
        ; line_number = 66
        ;  pin 13 = ra0_nc
        ; line_number = 67
        ;  pin 14 = ground

        ; line_number = 69
        ; constant all_mask = servo0_mask | servo1_mask | servo2_mask | servo3_mask
all_mask equ 15

        ; line_number = 71
        ; origin 0
        org     0

        ; line_number = 73
        ;info   73, 0
        ; procedure start
start:
        ; arguments_none
        ; line_number = 75
        ;  returns_nothing

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
        ; line_number = 77
        ;  assemble
        ;info   77, 0
        ; line_number = 78
        ;info   78, 0
        goto    main

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




        ; line_number = 80
        ; origin 4
        org     4

        ; line_number = 82
        ;info   82, 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 = 84
        ;  returns_nothing

        ; # We can arrive here from either a TMR0 or TMR1 interrupt.

        ; # For a TMR1 interrupt, we just clear all of the servo outputs
        ; # to zero.  Since it is always safe to do this for a TMR0 interrupt,
        ; # we just clear the servo outputs no matter what:

        ; # Clear all servo pulses:
        ; before procedure statements delay=non-uniform, bit states=(data:??=uu=>?? code:XX=cc=>XX)
        ; line_number = 93
        ;  _rc := 0
        ;info   93, 7
        bcf     __rp0___byte, __rp0___bit
        clrf    _rc

        ; # Clear the TMR1 Interrupt Flag:
        ; line_number = 96
        ;  _tmr1if := _false
        ;info   96, 9
        bcf     __rp1___byte, __rp1___bit
        bcf     _tmr1if___byte, _tmr1if___bit
        ; # Turn TMR1 off:
        ; line_number = 98
        ;  _tmr1on := _false
        ;info   98, 11
        bcf     _tmr1on___byte, _tmr1on___bit

        ; # Now deal with TMR0:
        ; line_number = 101
        ;  if _t0if start
        ;info   101, 12
        ; =>bit_code_emit@symbol(): sym=_t0if
        ; No 1TEST: true.size=39 false.size=0
        ; No 2TEST: true.size=39 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   _t0if___byte, _t0if___bit
        goto    interrupt__11
        ; # Load the 1's complement of the select servo into 
        ; line_number = 103
        ;  servo_index := (servo_index + 1) & servos_mask
        ;info   103, 14
        incf    servo_index,w
        andlw   3
        movwf   servo_index
        ; line_number = 104
        ;  _tmr1h := 0xff ^ servos_high[servo_index]
        ;info   104, 17
        movf    servo_index,w
        addlw   servos_high
        movwf   __fsr
        movf    __indf,w
        xorlw   255
        movwf   _tmr1h
        ; line_number = 105
        ;  _tmr1l := 0xff ^ servos_low[servo_index]
        ;info   105, 23
        movf    servo_index,w
        addlw   servos_low
        movwf   __fsr
        movf    __indf,w
        xorlw   255
        movwf   _tmr1l

        ; # Reload TRM0:
        ; line_number = 108
        ;  _t0if := _false
        ;info   108, 29
        bcf     _t0if___byte, _t0if___bit
        ; line_number = 109
        ;  _tmr0 := tmr0_value_negative
        ;info   109, 30
        movlw   60
        movwf   _tmr0

        ; # Turn on the appropriate servo:
        ; line_number = 112
        ;  switch servo_index start
        ;info   112, 32
        ; switch_before:(data:00=uu=>00 code:XX=cc=>XX) size=18
        movlw   interrupt__9>>8
        movwf   __pclath
        movf    servo_index,w
        ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
        addlw   interrupt__9
        movwf   __pcl
        ; page_group 4
interrupt__9:
        goto    interrupt__5
        goto    interrupt__6
        goto    interrupt__7
        goto    interrupt__8
        ; line_number = 113
        ; case 0
interrupt__5:
        ; line_number = 114
        ; if enables@0 start
        ;info   114, 41
interrupt__select__1___byte equ enables
interrupt__select__1___bit equ 0
        ; =>bit_code_emit@symbol(): sym=interrupt__select__1
        ; 1TEST: Single test with code in skip slot
        btfsc   interrupt__select__1___byte, interrupt__select__1___bit
        ; line_number = 115
        ; servo0 := _true
        ;info   115, 42
        bsf     servo0___byte, servo0___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 114
        ; if enables@0 done
        goto    interrupt__10
        ; line_number = 116
        ; case 1
interrupt__6:
        ; line_number = 117
        ; if enables@1 start
        ;info   117, 44
interrupt__select__2___byte equ enables
interrupt__select__2___bit equ 1
        ; =>bit_code_emit@symbol(): sym=interrupt__select__2
        ; 1TEST: Single test with code in skip slot
        btfsc   interrupt__select__2___byte, interrupt__select__2___bit
        ; line_number = 118
        ; servo1 := _true
        ;info   118, 45
        bsf     servo1___byte, servo1___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 117
        ; if enables@1 done
        goto    interrupt__10
        ; line_number = 119
        ; case 2
interrupt__7:
        ; line_number = 120
        ; if enables@2 start
        ;info   120, 47
interrupt__select__3___byte equ enables
interrupt__select__3___bit equ 2
        ; =>bit_code_emit@symbol(): sym=interrupt__select__3
        ; 1TEST: Single test with code in skip slot
        btfsc   interrupt__select__3___byte, interrupt__select__3___bit
        ; line_number = 121
        ; servo2 := _true
        ;info   121, 48
        bsf     servo2___byte, servo2___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 120
        ; if enables@2 done
        goto    interrupt__10
        ; line_number = 122
        ; case 3
interrupt__8:
        ; line_number = 123
        ; if enables@3 start
        ;info   123, 50
interrupt__select__4___byte equ enables
interrupt__select__4___bit equ 3
        ; =>bit_code_emit@symbol(): sym=interrupt__select__4
        ; 1TEST: Single test with code in skip slot
        btfsc   interrupt__select__4___byte, interrupt__select__4___bit
        ; line_number = 124
        ; servo3 := _true
        ;info   124, 51
        bsf     servo3___byte, servo3___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 123
        ; if enables@3 done
interrupt__10:
        ; line_number = 112
        ;  switch servo_index done
        ; # Fire up TRM1:
        ; line_number = 126
        ;  _tmr1on := _true
        ;info   126, 52
        bsf     _tmr1on___byte, _tmr1on___bit
        ; Recombine size1 = 0 || size2 = 0
interrupt__11:
        ; line_number = 101
        ;  if _t0if done
        ; # All done:

        ; delay after procedure statements=non-uniform
        ; 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  




        ; # The tables below provide pulse widths from .75uS to 2.25uS:
        ; line_number = 130
        ; string quick_highs = "\14,15,16,17,18,19,20,21,21,22,23,24,25,26,27,28,29,30,31,32,32,33,34,35,36,37,38,39,40,41,42,43\" start
        ; quick_highs = '\14,15,16,17,18,19,20,21,21,22,23,24,25,26,27,28,29,30,31\  !"#_%&\39\()*+'
quick_highs:
        ; Temporarily save index into FSR
        movwf   __fsr
        ; Initialize PCLATH to point to this code page
        movlw   quick_highs___base>>8
        movwf   __pclath
        ; Restore index from FSR
        movf    __fsr,w
        addlw   quick_highs___base
        ; Index to the correct return value
        movwf   __pcl
        ; page_group 32
quick_highs___base:
        retlw   14
        retlw   15
        retlw   16
        retlw   17
        retlw   18
        retlw   19
        retlw   20
        retlw   21
        retlw   21
        retlw   22
        retlw   23
        retlw   24
        retlw   25
        retlw   26
        retlw   27
        retlw   28
        retlw   29
        retlw   30
        retlw   31
        retlw   32
        retlw   32
        retlw   33
        retlw   34
        retlw   35
        retlw   36
        retlw   37
        retlw   38
        retlw   39
        retlw   40
        retlw   41
        retlw   42
        retlw   43
        ; line_number = 130
        ; string quick_highs = "\14,15,16,17,18,19,20,21,21,22,23,24,25,26,27,28,29,30,31,32,32,33,34,35,36,37,38,39,40,41,42,43\" start
        ; line_number = 131
        ; string quick_lows = "\166,144,123,101,80,58,36,15,249,227,206,184,163,141,119,98,76,54,33,11,246,224,202,181,159,137,116,94,73,51,29,8\" start
        ; quick_lows = '\166,144\{eP:_\15,249,227,206,184,163,141\wbL6!\11,246,224,202,181,159,137\t^I3\29,8\'
quick_lows:
        ; Temporarily save index into FSR
        movwf   __fsr
        ; Initialize PCLATH to point to this code page
        movlw   quick_lows___base>>8
        movwf   __pclath
        ; Restore index from FSR
        movf    __fsr,w
        addlw   quick_lows___base
        ; Index to the correct return value
        movwf   __pcl
        ; page_group 32
quick_lows___base:
        retlw   166
        retlw   144
        retlw   123
        retlw   101
        retlw   80
        retlw   58
        retlw   36
        retlw   15
        retlw   249
        retlw   227
        retlw   206
        retlw   184
        retlw   163
        retlw   141
        retlw   119
        retlw   98
        retlw   76
        retlw   54
        retlw   33
        retlw   11
        retlw   246
        retlw   224
        retlw   202
        retlw   181
        retlw   159
        retlw   137
        retlw   116
        retlw   94
        retlw   73
        retlw   51
        retlw   29
        retlw   8
        ; line_number = 131
        ; string quick_lows = "\166,144,123,101,80,58,36,15,249,227,206,184,163,141,119,98,76,54,33,11,246,224,202,181,159,137,116,94,73,51,29,8\" start

        ; line_number = 133
        ;info   133, 134
        ; procedure main
main:
        ; Initialize some registers
        clrf    _adcon0
        bsf     __rp0___byte, __rp0___bit
        clrf    _ansel
        movlw   7
        bcf     __rp0___byte, __rp0___bit
        movwf   _cmcon0
        movlw   63
        bsf     __rp0___byte, __rp0___bit
        movwf   _trisa
        movlw   48
        movwf   _trisc
        ; arguments_none
        ; line_number = 135
        ;  returns_nothing

        ; line_number = 137
        ;  local command byte
main__command equ globals___0+22
        ; line_number = 138
        ;  local id_index byte
main__id_index equ globals___0+23
        ; line_number = 139
        ;  local index byte
main__index equ globals___0+24
        ; line_number = 140
        ;  local servo byte
main__servo equ globals___0+25
        ; line_number = 141
        ;  local high byte
main__high equ globals___0+26
        ; line_number = 142
        ;  local low byte
main__low equ globals___0+27
        ; line_number = 143
        ;  local position byte
main__position equ globals___0+28

        ; # Initialize the RB2 module:
        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>01 code:XX=cc=>XX)
        ; line_number = 146
        ;  call rb2bus_initialize(rb2_servo4_address)
        ;info   146, 145
        movlw   11
        bcf     __rp0___byte, __rp0___bit
        call    rb2bus_initialize

        ; # Initialize everything else:

        ; # Initialize the pulses:
        ; line_number = 151
        ;  index := 0
        ;info   151, 148
        clrf    main__index
        ; line_number = 152
        ;  while index < servos start
main__1:
        ;info   152, 149
        movlw   4
        subwf   main__index,w
        ; =>bit_code_emit@symbol(): sym=__c
        ; No 1TEST: true.size=0 false.size=12
        ; No 2TEST: true.size=0 false.size=12
        ; 1GOTO: Single test with GOTO
        btfsc   __c___byte, __c___bit
        goto    main__2
        ; line_number = 153
        ; servos_high[index] := servo_center_high
        ;info   153, 153
        ; index_fsr_first
        movf    main__index,w
        addlw   servos_high
        movwf   __fsr
        movlw   29
        movwf   __indf
        ; line_number = 154
        ;  servos_low[index] := servo_center_low
        ;info   154, 158
        ; index_fsr_first
        movf    main__index,w
        addlw   servos_low
        movwf   __fsr
        movlw   76
        movwf   __indf
        ; line_number = 155
        ;  index := index + 1
        ;info   155, 163
        incf    main__index,f
        goto    main__1
main__2:
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 152
        ;  while index < servos done
        ; line_number = 156
        ; servo_index := 0
        ;info   156, 165
        clrf    servo_index

        ; # FIXME: Initialize to servos disabled!!!
        ; #enables := 0x0f
        ; line_number = 160
        ;  enables := 0
        ;info   160, 166
        clrf    enables

        ; # Initialize TRM0:
        ; line_number = 163
        ;  _option_reg := tmr0_ps
        ;info   163, 167
        movlw   5
        bsf     __rp0___byte, __rp0___bit
        movwf   _option_reg
        ; # {_t0cs}=0 (use instrucion clock)
        ; # {_psa}=0 (prescaler for TMR0)
        ; # {_ps2,_ps1,_ps0}=101 (1/64)

        ; # Initialize TRM1:
        ; line_number = 169
        ;  _t1con := 0
        ;info   169, 170
        bcf     __rp0___byte, __rp0___bit
        clrf    _t1con
        ; # {_t1ginv} := x (no care; 0 = not inverted)
        ; # {_tmr1ge} := 0 (Timer 1 on)
        ; # {_t1ckps} := 00 (prescale = 1:1)
        ; # {_t10scen} := 0 (lp osc. off)
        ; # {_t1sync} := x (no care;)
        ; # {_tmr1cs} := 0 (Fosc/4)
        ; # {_tmr1on} := 0 (off for now; interrupt routine turns it on)

        ; # Turn on TRM0:
        ; line_number = 179
        ;  _tmr1if := _false
        ;info   179, 172
        bcf     _tmr1if___byte, _tmr1if___bit
        ; line_number = 180
        ;  _tmr1ie := _true
        ;info   180, 173
        bsf     __rp0___byte, __rp0___bit
        bsf     _tmr1ie___byte, _tmr1ie___bit
        ; line_number = 181
        ;  _tmr0 := tmr0_value_negative
        ;info   181, 175
        movlw   60
        bcf     __rp0___byte, __rp0___bit
        movwf   _tmr0
        ; line_number = 182
        ;  _t0if := _false
        ;info   182, 178
        bcf     _t0if___byte, _t0if___bit
        ; line_number = 183
        ;  _t0ie := _true
        ;info   183, 179
        bsf     _t0ie___byte, _t0ie___bit
        ; line_number = 184
        ;  _peie := _true
        ;info   184, 180
        bsf     _peie___byte, _peie___bit
        ; line_number = 185
        ;  _gie := _true
        ;info   185, 181
        bsf     _gie___byte, _gie___bit

        ; line_number = 187
        ;  id_index := 0
        ;info   187, 182
        clrf    main__id_index

        ; line_number = 189
        ;  loop_forever start
main__3:
        ; # Make sure that we have been selected:
        ; line_number = 191
        ;  rb2bus_error := _true
        ;info   191, 183
        bsf     rb2bus_error___byte, rb2bus_error___bit
        ; line_number = 192
        ;  while rb2bus_error start
main__4:
        ;info   192, 184
        ; =>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__5
        ; line_number = 193
        ; call rb2bus_select_wait()
        ;info   193, 186
        call    rb2bus_select_wait
        ; line_number = 194
        ;  command := rb2bus_byte_get()
        ;info   194, 187
        call    rb2bus_byte_get
        movwf   main__command

        goto    main__4
        ; Recombine size1 = 0 || size2 = 0
main__5:
        ; line_number = 192
        ;  while rb2bus_error done
        ; # Decode {command}:
        ; line_number = 197
        ;  servo := command & servos_mask
        ;info   197, 190
        movlw   3
        andwf   main__command,w
        movwf   main__servo
        ; line_number = 198
        ;  switch command >> 6 start
        ;info   198, 193
        ; switch_before:(data:00=uu=>00 code:XX=cc=>XX) size=10
        movlw   main__36>>8
        movwf   __pclath
main__37 equ globals___0+29
        swapf   main__command,w
        movwf   main__37
        rrf     main__37,f
        rrf     main__37,w
        andlw   3
        ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
        addlw   main__36
        movwf   __pcl
        ; page_group 4
main__36:
        goto    main__33
        goto    main__33
        goto    main__34
        goto    main__35
        ; line_number = 199
        ; case 0, 1
main__33:
        ; # 0ppp ppss (Quick Set):
        ; line_number = 201
        ;  position := command >> 2
        ;info   201, 206
        rrf     main__command,w
        movwf   main__position
        rrf     main__position,f
        movlw   63
        andwf   main__position,f
        ; line_number = 202
        ;  servos_high[servo] := quick_highs[position]
        ;info   202, 211
        ; right_temporary_first
main__6 equ globals___0+29
        movf    main__position,w
        call    quick_highs
        movwf   main__6
        movf    main__servo,w
        addlw   servos_high
        movwf   __fsr
        movf    main__6,w
        movwf   __indf
        ; line_number = 203
        ;  servos_low[servo] := quick_lows[position]
        ;info   203, 219
        ; right_temporary_first
main__7 equ globals___0+29
        movf    main__position,w
        call    quick_lows
        movwf   main__7
        movf    main__servo,w
        addlw   servos_low
        movwf   __fsr
        movf    main__7,w
        movwf   __indf
        goto    main__38
        ; line_number = 204
        ; case 2
main__34:
        ; # 01xx xxxx:
        ; line_number = 206
        ;  switch (command >> 3) & 7 start
        ;info   206, 228
        ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
        ; line_number = 250
        ; case_maximum 7
        movlw   main__26>>8
        movwf   __pclath
main__27 equ globals___0+29
        rrf     main__command,w
        movwf   main__27
        rrf     main__27,f
        rrf     main__27,w
        andlw   7
        ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
        addlw   main__26
        movwf   __pcl
        ; page_group 8
main__26:
        goto    main__21
        goto    main__22
        goto    main__23
        goto    main__23
        goto    main__24
        goto    main__25
        goto    main__28
        goto    main__28
        ; line_number = 207
        ; case 0
main__21:
        ; # 1000 0xxx:
        ; line_number = 209
        ;  high := rb2bus_byte_get()
        ;info   209, 245
        call    rb2bus_byte_get
        movwf   main__high
        ; line_number = 210
        ;  if command@2 start
        ;info   210, 247
main__select__8___byte equ main__command
main__select__8___bit equ 2
        ; =>bit_code_emit@symbol(): sym=main__select__8
        ; No 1TEST: true.size=10 false.size=2
        ; No 2TEST: true.size=10 false.size=2
        ; 2GOTO: Single test with two GOTO's
        btfss   main__select__8___byte, main__select__8___bit
        goto    main__9
        ; # 1000 01ss (Short High Low Set):
        ; line_number = 212
        ;  low := high << 5
        ;info   212, 249
        swapf   main__high,w
        movwf   main__low
        rlf     main__low,f
        movlw   224
        andwf   main__low,f
        ; line_number = 213
        ;  high := high >> 3
        ;info   213, 254
        ; Assignment of variable to self (no code needed)
        rrf     main__high,f
        rrf     main__high,f
        rrf     main__high,f
        movlw   31
        andwf   main__high,f
        goto    main__10
        ; 2GOTO: Starting code 2
main__9:
        ; # 1000 00ss (High Low Set):
        ; line_number = 216
        ;  low := rb2bus_byte_get()
        ;info   216, 260
        call    rb2bus_byte_get
        movwf   main__low
main__10:
        ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; line_number = 210
        ;  if command@2 done
        ; line_number = 217
        ; if !rb2bus_error start
        ;info   217, 262
        ; =>bit_code_emit@symbol(): sym=rb2bus_error
        ; No 1TEST: true.size=0 false.size=10
        ; No 2TEST: true.size=0 false.size=10
        ; 1GOTO: Single test with GOTO
        btfsc   rb2bus_error___byte, rb2bus_error___bit
        goto    main__11
        ; line_number = 218
        ; servos_high[servo] := high
        ;info   218, 264
        ; index_fsr_first
        movf    main__servo,w
        addlw   servos_high
        movwf   __fsr
        movf    main__high,w
        movwf   __indf
        ; line_number = 219
        ;  servos_low[servo] := low
        ;info   219, 269
        ; index_fsr_first
        movf    main__servo,w
        addlw   servos_low
        movwf   __fsr
        movf    main__low,w
        movwf   __indf
main__11:
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 217
        ; if !rb2bus_error done
        goto    main__28
        ; line_number = 220
        ; case 1
main__22:
        ; # 1000 1xxx:
        ; line_number = 222
        ;  if command@2 start
        ;info   222, 275
main__select__14___byte equ main__command
main__select__14___bit equ 2
        ; =>bit_code_emit@symbol(): sym=main__select__14
        ; # 1000 11ss (High Set)
        ; line_number = 224
        ;  high := rb2bus_byte_get()
        ;info   224, 275
        call    rb2bus_byte_get
        ; # 1000 10ss (Low Set)
        ; line_number = 229
        ;  low := rb2bus_byte_get()
        ;info   229, 276
        ; No 1TEST: true.size=8 false.size=8
        ; No 2TEST: true.size=8 false.size=8
        ; 2GOTO: Single test with two GOTO's
        btfss   main__select__14___byte, main__select__14___bit
        goto    main__15
        movwf   main__high
        ; line_number = 225
        ;  if !rb2bus_error start
        ;info   225, 279
        ; =>bit_code_emit@symbol(): sym=rb2bus_error
        ; No 1TEST: true.size=0 false.size=5
        ; No 2TEST: true.size=0 false.size=5
        ; 1GOTO: Single test with GOTO
        btfsc   rb2bus_error___byte, rb2bus_error___bit
        goto    main__13
        ; line_number = 226
        ; servos_high[servo] := high
        ;info   226, 281
        ; index_fsr_first
        movf    main__servo,w
        addlw   servos_high
        movwf   __fsr
        movf    main__high,w
        movwf   __indf
main__13:
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 225
        ;  if !rb2bus_error done
        goto    main__16
        ; 2GOTO: Starting code 2
main__15:
        movwf   main__low
        ; line_number = 230
        ;  if !rb2bus_error start
        ;info   230, 288
        ; =>bit_code_emit@symbol(): sym=rb2bus_error
        ; No 1TEST: true.size=0 false.size=5
        ; No 2TEST: true.size=0 false.size=5
        ; 1GOTO: Single test with GOTO
        btfsc   rb2bus_error___byte, rb2bus_error___bit
        goto    main__12
        ; line_number = 231
        ; servos_low[servo] := low
        ;info   231, 290
        ; index_fsr_first
        movf    main__servo,w
        addlw   servos_low
        movwf   __fsr
        movf    main__low,w
        movwf   __indf
main__12:
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 230
        ;  if !rb2bus_error done
main__16:
        ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; line_number = 222
        ;  if command@2 done
        goto    main__28
        ; line_number = 232
        ; case 2, 3
main__23:
        ; # 1001 eeee (Enables Set):
        ; line_number = 234
        ;  enables := command & enables_mask
        ;info   234, 296
        movlw   15
        andwf   main__command,w
        movwf   enables
        goto    main__28
        ; line_number = 235
        ; case 4
main__24:
        ; # 1010 0xxx:
        ; line_number = 237
        ;  if command@2 start
        ;info   237, 300
main__select__17___byte equ main__command
main__select__17___bit equ 2
        ; =>bit_code_emit@symbol(): sym=main__select__17
        ; # 1010 01ss (Low Get)
        ; line_number = 239
        ;  call rb2bus_byte_put(servos_low[servo])
        ;info   239, 300
        movf    main__servo,w
        ; # 1010 00ss (High Get)
        ; line_number = 242
        ;  call rb2bus_byte_put(servos_high[servo])
        ;info   242, 301
        ; No 1TEST: true.size=1 false.size=1
        ; 2TEST: two tests with code in both delay slots
        btfsc   main__select__17___byte, main__select__17___bit
        addlw   servos_low
        btfss   main__select__17___byte, main__select__17___bit
        addlw   servos_high
        movwf   __fsr
        movf    __indf,w
        call    rb2bus_byte_put
        ; line_number = 237
        ;  if command@2 done
        goto    main__28
        ; line_number = 243
        ; case 5
main__25:
        ; # 1010 1xxx:
        ; line_number = 245
        ;  switch command & 7 start
        ;info   245, 309
        ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
        ; line_number = 249
        ; case_maximum 7
        movlw   main__19>>8
        movwf   __pclath
        movlw   7
        andwf   main__command,w
        ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
        addlw   main__19
        movwf   __pcl
        ; page_group 8
main__19:
        goto    main__18
        goto    main__20
        goto    main__20
        goto    main__20
        goto    main__20
        goto    main__20
        goto    main__20
        goto    main__20
        ; line_number = 246
        ; case 0
main__18:
        ; # 1010 1000 (Enables Get)
        ; line_number = 248
        ;  call rb2bus_byte_put(enables)
        ;info   248, 323
        movf    enables,w
        call    rb2bus_byte_put
main__20:
        ; line_number = 245
        ;  switch command & 7 done
main__28:
        ; line_number = 206
        ;  switch (command >> 3) & 7 done
        goto    main__38
        ; line_number = 251
        ; case 3
main__35:
        ; # 11xx xxxx:
        ; line_number = 253
        ;  switch (command >> 3) & 7 start
        ;info   253, 326
        ; switch_before:(data:XX=cc=>XX code:XX=cc=>XX) size=0
        movlw   main__30>>8
        movwf   __pclath
main__31 equ globals___0+29
        rrf     main__command,w
        movwf   main__31
        rrf     main__31,f
        rrf     main__31,w
        andlw   7
        ; switch after expression:(data:00=uu=>00 code:XX=cc=>XX)
        addlw   main__30
        movwf   __pcl
        ; page_group 8
main__30:
        goto    main__32
        goto    main__32
        goto    main__32
        goto    main__32
        goto    main__32
        goto    main__32
        goto    main__32
        goto    main__29
        ; line_number = 254
        ; case 7
main__29:
        ; # 1111 1xxx:
        ; line_number = 256
        ;  call rb2bus_command(command)
        ;info   256, 343
        movf    main__command,w
        call    rb2bus_command

main__32:
        ; line_number = 253
        ;  switch (command >> 3) & 7 done
main__38:
        ; line_number = 198
        ;  switch command >> 6 done
        ; line_number = 189
        ;  loop_forever wrap-up
        goto    main__3
        ; line_number = 189
        ;  loop_forever done
        ; delay after procedure statements=non-uniform




        ; line_number = 258
        ;info   258, 346
        ; procedure wait
wait:
        ; arguments_none
        ; line_number = 260
        ;  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:XX=cc=>XX)
        ; line_number = 265
        ;  do_nothing
        ;info   265, 346


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




        ; line_number = 268
        ; string id = "\16,0,11,2,3,8\Servo4-B\7\Gramson" start
        ; id = '\16,0,11,2,3,8\Servo4-B\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 22
id___base:
        retlw   16
        retlw   0
        retlw   11
        retlw   2
        retlw   3
        retlw   8
        retlw   83
        retlw   101
        retlw   114
        retlw   118
        retlw   111
        retlw   52
        retlw   45
        retlw   66
        retlw   7
        retlw   71
        retlw   114
        retlw   97
        retlw   109
        retlw   115
        retlw   111
        retlw   110
        ; line_number = 268
        ; string id = "\16,0,11,2,3,8\Servo4-B\7\Gramson" start



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

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

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

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
        ; line_number = 71
        ;  rb2bus_error := _false
        ;info   71, 375
        bcf     rb2bus_error___byte, rb2bus_error___bit
        ; line_number = 72
        ;  while !rb2bus_selected start
rb2bus_select_wait__1:
        ;info   72, 376
        ; =>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, 378
        bsf     _adden___byte, _adden___bit
        ; # Wait for a byte to arrive.
        ; line_number = 75
        ;  while !_rcif start
rb2bus_select_wait__2:
        ;info   75, 379
        ; =>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, 381
        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, 383
        bcf     rb2bus_select_wait__address_bit___byte, rb2bus_select_wait__address_bit___bit
        ; line_number = 80
        ;  if _rx9d start
        ;info   80, 384
        ; =>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, 385
        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, 386
        movf    _rcreg,w
        movwf   rb2bus_select_wait__value

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

        ; line_number = 91
        ;  if address_bit start
        ;info   91, 393
        ; =>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, 395
        ; 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, 399
        bsf     rb2bus_selected___byte, rb2bus_selected___bit
        ; line_number = 94
        ;  call rb2bus_byte_put(rb2_ok)
        ;info   94, 400
        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, 404
        ; procedure rb2bus_deselect
rb2bus_deselect:
        ; arguments_none
        ; line_number = 99
        ;  returns_nothing

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

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


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




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

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

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

        ; # Return 0 in a bus flush condition to get us back to {rb2bus_select_wait}:
        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
        ; line_number = 123
        ;  if rb2bus_error start
        ;info   123, 406
        ; =>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, 407
        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, 408
        bcf     _adden___byte, _adden___bit
        ; line_number = 128
        ;  while !_rcif start
rb2bus_byte_get__1:
        ;info   128, 409
        ; =>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, 411
        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, 413
        bcf     rb2bus_byte_get__address_bit___byte, rb2bus_byte_get__address_bit___bit
        ; line_number = 133
        ;  if _rx9d start
        ;info   133, 414
        ; =>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, 415
        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, 416
        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, 418
        ; =>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, 419
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 139
        ;  if _oerr done
        ; line_number = 141
        ; if _ferr start
        ;info   141, 420
        ; =>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, 421
        bcf     _cren___byte, _cren___bit
        ; Recombine size1 = 0 || size2 = 0
        ; line_number = 141
        ; if _ferr done
        ; line_number = 143
        ; _cren := _true
        ;info   143, 422
        bsf     _cren___byte, _cren___bit

        ; line_number = 145
        ;  if address_bit start
        ;info   145, 423
        ; =>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, 425
        ; 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, 429
        bsf     rb2bus_selected___byte, rb2bus_selected___bit
        ; line_number = 150
        ;  _adden := _false
        ;info   150, 430
        bcf     _adden___byte, _adden___bit

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

rb2bus_byte_get__4:
        ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; line_number = 147
        ;  if value = rb2bus_address done
        ; # We want to get back to the beginning of decode:
        ; line_number = 159
        ;  rb2bus_error := _true
        ;info   159, 436
        bsf     rb2bus_error___byte, rb2bus_error___bit
        ; line_number = 160
        ;  value := 0
        ;info   160, 437
        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, 438
        movf    rb2bus_byte_get__value,w
        return  
        ; line_number = 163
        ;  return value done


        ; delay after procedure statements=non-uniform




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

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

        ; before procedure statements delay=non-uniform, bit states=(data:00=uu=>00 code:XX=cc=>XX)
        ; line_number = 174
        ;  if !rb2bus_error start
        ;info   174, 441
        ; =>bit_code_emit@symbol(): sym=rb2bus_error
        ; No 1TEST: true.size=0 false.size=16
        ; No 2TEST: true.size=0 false.size=16
        ; 1GOTO: Single test with GOTO
        btfsc   rb2bus_error___byte, rb2bus_error___bit
        goto    rb2bus_byte_put__4
        ; # Wait until {_txreg} is ready for a value:
        ; line_number = 176
        ;  while !_txif start
rb2bus_byte_put__1:
        ;info   176, 443
        ; =>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, 445
        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, 447
        bcf     _adden___byte, _adden___bit
        ; line_number = 181
        ;  _tx9d := _false
        ;info   181, 448
        bcf     _tx9d___byte, _tx9d___bit
        ; line_number = 182
        ;  _txreg := value
        ;info   182, 449
        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, 451
        ; =>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, 453
        ; line_number = 189
        ;info   189, 453
        movf    _rcreg,w

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

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

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

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

        ; # Fetch new address:
        ; line_number = 216
        ;  new_address := rb2bus_byte_get()
        ;info   216, 477
        call    rb2bus_byte_get
        movwf   rb2bus_command__new_address
        ; line_number = 217
        ;  if new_address = 0 || new_address = rb2bus_address start
        ;info   217, 479
        ; 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, 486
        movlw   0
        call    rb2bus_byte_put
        ; line_number = 219
        ;  rb2bus_error := _true
        ;info   219, 488
        bsf     rb2bus_error___byte, rb2bus_error___bit
        ; line_number = 220
        ;  rb2bus_selected := _false
        ;info   220, 489
        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, 491
        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, 493
        call    rb2bus_byte_get
        movwf   rb2bus_command__temp
        ; line_number = 227
        ;  if temp != new_address start
        ;info   227, 495
        ; 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, 499
        movf    rb2bus_command__new_address,w
        call    rb2bus_eedata_write
        ; line_number = 233
        ;  temp := rb2bus_eedata_read()
        ;info   233, 501
        call    rb2bus_eedata_read
        movwf   rb2bus_command__temp
        ; line_number = 234
        ;  if temp = new_address start
        ;info   234, 503
        ; 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, 507
        movf    rb2bus_command__new_address,w
        movwf   rb2bus_address
        ; line_number = 236
        ;  call rb2bus_byte_put(rb2_ok)
        ;info   236, 509
        movlw   165
        goto    rb2bus_command__2
        ; 2GOTO: Starting code 2
rb2bus_command__1:
        ; line_number = 238
        ; call rb2bus_byte_put(0)
        ;info   238, 511
        movlw   0
rb2bus_command__2:
        ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        call    rb2bus_byte_put
        ; line_number = 234
        ;  if temp = new_address done
        goto    rb2bus_command__4
        ; 2GOTO: Starting code 2
rb2bus_command__3:
        ; line_number = 228
        ; call rb2bus_byte_put(0)
        ;info   228, 514
        movlw   0
        call    rb2bus_byte_put
        ; line_number = 229
        ;  rb2bus_error := _true
        ;info   229, 516
        bsf     rb2bus_error___byte, rb2bus_error___bit
        ; line_number = 230
        ;  rb2bus_selected := _false
        ;info   230, 517
        bcf     rb2bus_selected___byte, rb2bus_selected___bit
rb2bus_command__4:
        ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; line_number = 227
        ;  if temp != new_address done
rb2bus_command__7:
        ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; 2GOTO: code2 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
        ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295
        ; 2GOTO: No goto needed; true=rb2bus_command__5 false= true_size=1 false_size=36
        ; 2GOTO: code1 final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; 2GOTO: code2 final bitstates:(data:XX=cc=>XX code:XX=cc=>XX)
        ; 2GOTO: code final bitstates:(data:00=uu=>00 code:XX=cc=>XX)
        ; line_number = 217
        ;  if new_address = 0 || new_address = rb2bus_address done
        goto    rb2bus_command__14
        ; line_number = 239
        ; case 5
rb2bus_command__10:
        ; # 1111 1101 (Id_next):
        ; line_number = 241
        ;  if rb2bus_index < id.size start
        ;info   241, 519
        movlw   22
        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, 523
        movf    rb2bus_index,w
        call    id
        call    rb2bus_byte_put
        ; line_number = 243
        ;  rb2bus_index := rb2bus_index + 1
        ;info   243, 526
        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, 528
        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, 530
        call    rb2bus_deselect


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




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

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

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

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

        ; # Initialize the {_rcsta} register:
        ; line_number = 38
        ;  _rcsta := 0
        ;info   38, 541
        clrf    _rcsta
        ; line_number = 39
        ;  _spen := _true
        ;info   39, 542
        bsf     _spen___byte, _spen___bit
        ; line_number = 40
        ;  _rx9 := _true
        ;info   40, 543
        bsf     _rx9___byte, _rx9___bit
        ; line_number = 41
        ;  _cren := _true
        ;info   41, 544
        bsf     _cren___byte, _cren___bit
        ; #_adden := _true
        ; line_number = 43
        ;  _adden := _false
        ;info   43, 545
        bcf     _adden___byte, _adden___bit

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

        ; line_number = 51
        ;  rb2bus_selected := _false
        ;info   51, 551
        bcf     rb2bus_selected___byte, rb2bus_selected___bit
        ; line_number = 52
        ;  rb2bus_error := _false
        ;info   52, 552
        bcf     rb2bus_error___byte, rb2bus_error___bit
        ; line_number = 53
        ;  rb2bus_index := 0
        ;info   53, 553
        clrf    rb2bus_index

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


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




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

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

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

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

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

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

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


        ; delay after procedure statements=non-uniform




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

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

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

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

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

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

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

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

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




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