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

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

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

        ; buffer = 'chopper_test'
        ; line_number = 6
        ; library _pic16f777 entered

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

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

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

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

        ; line_number = 59
        ;  interrupts_possible
        ; line_number = 60
        ;  packages pdip = 40
        ; line_number = 61
        ;  pin re3_in, re3_out, mclr, vpp, thv, re3_unused
        ; line_number = 62
        ; pin_bindings pdip = 1
        ; line_number = 63
        ;  bind_to _porte@3
        ; line_number = 64
        ;  or_if re3_in _trise 8
        ; line_number = 65
        ;  or_if re3_in _adcon1 15
        ; line_number = 66
        ;  or_if re3_in _adcon0 0
        ; line_number = 67
        ;  or_if re3_out _trise 0
        ; line_number = 68
        ;  or_if re3_out _adcon1 15
        ; line_number = 69
        ;  or_if re3_out _adcon0 0
        ; line_number = 70
        ; pin ra0_in, ra0_out, an0, ra0_unused
        ; line_number = 71
        ; pin_bindings pdip = 2
        ; line_number = 72
        ;  bind_to _porta@0
        ; line_number = 73
        ;  or_if ra0_in _trisa 1
        ; line_number = 74
        ;  or_if ra0_in _adcon1 15
        ; line_number = 75
        ;  or_if ra0_in _adcon0 0
        ; line_number = 76
        ;  or_if ra0_out _trisa 0
        ; line_number = 77
        ;  or_if ra0_out _adcon1 15
        ; line_number = 78
        ;  or_if ra0_out _adcon0 0
        ; line_number = 79
        ; pin ra1_in, ra1_out, an1, ra1_unused
        ; line_number = 80
        ; pin_bindings pdip = 3
        ; line_number = 81
        ;  bind_to _porta@1
        ; line_number = 82
        ;  or_if ra1_in _trisa 2
        ; line_number = 83
        ;  or_if ra1_in _adcon1 15
        ; line_number = 84
        ;  or_if ra1_in _adcon0 0
        ; line_number = 85
        ;  or_if ra1_out _trisa 0
        ; line_number = 86
        ;  or_if ra1_out _adcon1 15
        ; line_number = 87
        ;  or_if ra1_out _adcon0 0
        ; line_number = 88
        ; pin ra2_in, ra2_out, an2, vref_minus, ra2_unused
        ; line_number = 89
        ; pin_bindings pdip = 4
        ; line_number = 90
        ;  bind_to _porta@2
        ; line_number = 91
        ;  or_if ra2_in _trisa 4
        ; line_number = 92
        ;  or_if ra2_in _adcon1 15
        ; line_number = 93
        ;  or_if ra2_in _adcon0 0
        ; line_number = 94
        ;  or_if ra2_out _trisa 0
        ; line_number = 95
        ;  or_if ra2_out _adcon1 15
        ; line_number = 96
        ;  or_if ra2_out _adcon0 0
        ; line_number = 97
        ; pin ra3_in, ra3_out, an3, vrev_plus, ra3_unused
        ; line_number = 98
        ; pin_bindings pdip = 5
        ; line_number = 99
        ;  bind_to _porta@3
        ; line_number = 100
        ;  or_if ra3_in _trisa 8
        ; line_number = 101
        ;  or_if ra3_in _adcon1 15
        ; line_number = 102
        ;  or_if ra3_in _adcon0 0
        ; line_number = 103
        ;  or_if ra3_out _trisa 0
        ; line_number = 104
        ;  or_if ra3_out _adcon1 15
        ; line_number = 105
        ;  or_if ra3_out _adcon0 0
        ; line_number = 106
        ; pin ra4_in, ra4_out, t0cki, ra4_unused
        ; line_number = 107
        ; pin_bindings pdip = 6
        ; line_number = 108
        ;  bind_to _porta@4
        ; line_number = 109
        ;  or_if ra4_in _trisa 16
        ; line_number = 110
        ;  or_if ra4_in _adcon1 15
        ; line_number = 111
        ;  or_if ra4_in _adcon0 0
        ; line_number = 112
        ;  or_if ra4_out _trisa 0
        ; line_number = 113
        ;  or_if ra4_out _adcon1 15
        ; line_number = 114
        ;  or_if ra4_out _adcon0 0
        ; line_number = 115
        ; pin ra5_in, ra5_out, an4, ra5_unused
        ; line_number = 116
        ; pin_bindings pdip = 7
        ; line_number = 117
        ;  bind_to _porta@5
        ; line_number = 118
        ;  or_if ra5_in _trisa 32
        ; line_number = 119
        ;  or_if ra5_in _adcon1 15
        ; line_number = 120
        ;  or_if ra5_in _adcon0 0
        ; line_number = 121
        ;  or_if ra5_out _trisa 0
        ; line_number = 122
        ;  or_if ra5_out _adcon1 15
        ; line_number = 123
        ;  or_if ra5_out _adcon0 0
        ; line_number = 124
        ; pin re0_in, re0_out, rd, an5, re0_unused
        ; line_number = 125
        ; pin_bindings pdip = 8
        ; line_number = 126
        ;  bind_to _porte@0
        ; line_number = 127
        ;  or_if re0_in _trise 1
        ; line_number = 128
        ;  or_if re0_in _adcon1 15
        ; line_number = 129
        ;  or_if re0_in _adcon0 0
        ; line_number = 130
        ;  or_if re0_out _trise 0
        ; line_number = 131
        ;  or_if re0_out _adcon1 15
        ; line_number = 132
        ;  or_if re0_out _adcon0 0
        ; line_number = 133
        ; pin re1_in, re1_out, wr, an6, re1_unused
        ; line_number = 134
        ; pin_bindings pdip = 9
        ; line_number = 135
        ;  bind_to _porte@1
        ; line_number = 136
        ;  or_if re1_in _trise 2
        ; line_number = 137
        ;  or_if re1_in _adcon1 15
        ; line_number = 138
        ;  or_if re1_in _adcon0 0
        ; line_number = 139
        ;  or_if re1_out _trise 0
        ; line_number = 140
        ;  or_if re1_out _adcon1 15
        ; line_number = 141
        ;  or_if re1_out _adcon0 0
        ; line_number = 142
        ; pin re2_in, re2_out, cs, re2_unused
        ; line_number = 143
        ; pin_bindings pdip = 10
        ; line_number = 144
        ;  bind_to _porte@2
        ; line_number = 145
        ;  or_if re2_in _trise 4
        ; line_number = 146
        ;  or_if re2_in _adcon1 15
        ; line_number = 147
        ;  or_if re2_in _adcon0 0
        ; line_number = 148
        ;  or_if re2_out _trise 0
        ; line_number = 149
        ;  or_if re2_out _adcon1 15
        ; line_number = 150
        ;  or_if re2_out _adcon0 0
        ; line_number = 151
        ; pin vdd1, power_supply
        ; line_number = 152
        ; pin_bindings pdip = 11
        ; line_number = 153
        ; pin vss1, ground
        ; line_number = 154
        ; pin_bindings pdip = 12
        ; line_number = 155
        ; pin osc1, clki, ra7_in, ra7_out, ra7_unused
        ; line_number = 156
        ; pin_bindings pdip = 13
        ; line_number = 157
        ;  bind_to _porta@6
        ; line_number = 158
        ;  or_if ra7_in _trisa 128
        ; line_number = 159
        ;  or_if ra7_in _adcon1 15
        ; line_number = 160
        ;  or_if ra7_in _adcon0 0
        ; line_number = 161
        ;  or_if ra7_out _trisa 0
        ; line_number = 162
        ;  or_if ra7_out _adcon1 15
        ; line_number = 163
        ;  or_if ra7_out _adcon0 0
        ; line_number = 164
        ; pin osc2, clko, ra6_in, ra6_out, ra6_unused
        ; line_number = 165
        ; pin_bindings pdip = 14
        ; line_number = 166
        ;  bind_to _porta@6
        ; line_number = 167
        ;  or_if ra6_in _trisa 64
        ; line_number = 168
        ;  or_if ra6_in _adcon1 15
        ; line_number = 169
        ;  or_if ra6_in _adcon0 0
        ; line_number = 170
        ;  or_if ra6_out _trisa 0
        ; line_number = 171
        ;  or_if ra6_out _adcon1 15
        ; line_number = 172
        ;  or_if ra6_out _adcon0 0
        ; line_number = 173
        ; pin rc0_in, rc0_out, t1oso, t1cki, rc0_unused
        ; line_number = 174
        ; pin_bindings pdip = 15
        ; line_number = 175
        ;  bind_to _portc@0
        ; line_number = 176
        ;  or_if rc0_in _trisc 1
        ; line_number = 177
        ;  or_if rc0_in _adcon1 15
        ; line_number = 178
        ;  or_if rc0_in _adcon0 0
        ; line_number = 179
        ;  or_if rc0_out _trisc 0
        ; line_number = 180
        ;  or_if rc0_out _adcon1 15
        ; line_number = 181
        ;  or_if rc0_out _adcon0 0
        ; line_number = 182
        ; pin rc1_in, rc1_out, t1osi, ccp2a, rc1_unused
        ; line_number = 183
        ; pin_bindings pdip = 16
        ; line_number = 184
        ;  bind_to _portc@1
        ; line_number = 185
        ;  or_if rc1_in _trisc 2
        ; line_number = 186
        ;  or_if rc1_in _adcon1 15
        ; line_number = 187
        ;  or_if rc1_in _adcon0 0
        ; line_number = 188
        ;  or_if rc1_out _trisc 0
        ; line_number = 189
        ;  or_if rc1_out _adcon1 15
        ; line_number = 190
        ;  or_if rc1_out _adcon0 0
        ; line_number = 191
        ; pin rc2_in, rc2_out, ccp1, rc2_unused
        ; line_number = 192
        ; pin_bindings pdip = 17
        ; line_number = 193
        ;  bind_to _portc@2
        ; line_number = 194
        ;  or_if rc2_in _trisc 4
        ; line_number = 195
        ;  or_if rc2_in _adcon1 15
        ; line_number = 196
        ;  or_if rc2_in _adcon0 0
        ; line_number = 197
        ;  or_if rc2_out _trisc 0
        ; line_number = 198
        ;  or_if rc2_out _adcon1 15
        ; line_number = 199
        ;  or_if rc2_out _adcon0 0
        ; line_number = 200
        ; pin rc3_in, rc3_out, sck, scl, rc3_unused
        ; line_number = 201
        ; pin_bindings pdip = 18
        ; line_number = 202
        ;  bind_to _portc@3
        ; line_number = 203
        ;  or_if rc3_in _trisc 8
        ; line_number = 204
        ;  or_if rc3_in _adcon1 15
        ; line_number = 205
        ;  or_if rc3_in _adcon0 0
        ; line_number = 206
        ;  or_if rc3_out _trisc 0
        ; line_number = 207
        ;  or_if rc3_out _adcon1 15
        ; line_number = 208
        ;  or_if rc3_out _adcon0 0
        ; line_number = 209
        ; pin rd0_in, rd0_out, psp0, rd0_unused
        ; line_number = 210
        ; pin_bindings pdip = 19
        ; line_number = 211
        ;  bind_to _portd@0
        ; line_number = 212
        ;  or_if rd0_in _trisd 1
        ; line_number = 213
        ;  or_if rd0_in _adcon1 15
        ; line_number = 214
        ;  or_if rd0_in _adcon0 0
        ; line_number = 215
        ;  or_if rd0_out _trisd 0
        ; line_number = 216
        ;  or_if rd0_out _adcon1 15
        ; line_number = 217
        ;  or_if rd0_out _adcon0 0
        ; line_number = 218
        ; pin rd1_in, rd1_out, psp1, rd1_unused
        ; line_number = 219
        ; pin_bindings pdip = 20
        ; line_number = 220
        ;  bind_to _portd@1
        ; line_number = 221
        ;  or_if rd1_in _trisd 2
        ; line_number = 222
        ;  or_if rd1_in _adcon1 15
        ; line_number = 223
        ;  or_if rd1_in _adcon0 0
        ; line_number = 224
        ;  or_if rd1_out _trisd 0
        ; line_number = 225
        ;  or_if rd1_out _adcon1 15
        ; line_number = 226
        ;  or_if rd1_out _adcon0 0
        ; line_number = 227
        ; pin rd2_in, rd2_out, psp2, rd2_unused
        ; line_number = 228
        ; pin_bindings pdip = 21
        ; line_number = 229
        ;  bind_to _portd@2
        ; line_number = 230
        ;  or_if rd2_in _trisd 4
        ; line_number = 231
        ;  or_if rd2_in _adcon1 15
        ; line_number = 232
        ;  or_if rd2_in _adcon0 0
        ; line_number = 233
        ;  or_if rd2_out _trisd 0
        ; line_number = 234
        ;  or_if rd2_out _adcon1 15
        ; line_number = 235
        ;  or_if rd2_out _adcon0 0
        ; line_number = 236
        ; pin rd3_in, rd3_out, psp3, rd3_unused
        ; line_number = 237
        ; pin_bindings pdip = 22
        ; line_number = 238
        ;  bind_to _portd@3
        ; line_number = 239
        ;  or_if rd3_in _trisd 8
        ; line_number = 240
        ;  or_if rd3_in _adcon1 15
        ; line_number = 241
        ;  or_if rd3_in _adcon0 0
        ; line_number = 242
        ;  or_if rd3_out _trisd 0
        ; line_number = 243
        ;  or_if rd3_out _adcon1 15
        ; line_number = 244
        ;  or_if rd3_out _adcon0 0
        ; line_number = 245
        ; pin rc4_in, rc4_out, sdi, sda, rc4_unused
        ; line_number = 246
        ; pin_bindings pdip = 23
        ; line_number = 247
        ;  bind_to _portc@4
        ; line_number = 248
        ;  or_if rc4_in _trisc 16
        ; line_number = 249
        ;  or_if rc4_in _adcon1 15
        ; line_number = 250
        ;  or_if rc4_in _adcon0 0
        ; line_number = 251
        ;  or_if rc4_out _trisc 0
        ; line_number = 252
        ;  or_if rc4_out _adcon1 15
        ; line_number = 253
        ;  or_if rc4_out _adcon0 0
        ; line_number = 254
        ; pin rc5_in, rc5_out, sdo, rc5_unused
        ; line_number = 255
        ; pin_bindings pdip = 24
        ; line_number = 256
        ;  bind_to _portc@5
        ; line_number = 257
        ;  or_if rc5_in _trisc 32
        ; line_number = 258
        ;  or_if rc5_in _adcon1 15
        ; line_number = 259
        ;  or_if rc5_in _adcon0 0
        ; line_number = 260
        ;  or_if rc5_out _trisc 0
        ; line_number = 261
        ;  or_if rc5_out _adcon1 15
        ; line_number = 262
        ;  or_if rc5_out _adcon0 0
        ; line_number = 263
        ; pin rc6_in, rc6_out, tx, ck, rc6_unused
        ; line_number = 264
        ; pin_bindings pdip = 25
        ; line_number = 265
        ;  bind_to _portc@6
        ; line_number = 266
        ;  or_if rc6_in _trisc 64
        ; line_number = 267
        ;  or_if rc6_in _adcon1 15
        ; line_number = 268
        ;  or_if rc6_in _adcon0 0
        ; line_number = 269
        ;  or_if rc6_out _trisc 0
        ; line_number = 270
        ;  or_if rc6_out _adcon1 15
        ; line_number = 271
        ;  or_if rc6_out _adcon0 0
        ; line_number = 272
        ;  or_if tx _trisc 0
        ; line_number = 273
        ;  or_if tx _adcon1 15
        ; line_number = 274
        ;  or_if tx _adcon0 0
        ; line_number = 275
        ; pin rc7_in, rc7_out, rx, dt, rc7_unused
        ; line_number = 276
        ; pin_bindings pdip = 26
        ; line_number = 277
        ;  bind_to _portc@7
        ; line_number = 278
        ;  or_if rc7_in _trisc 128
        ; line_number = 279
        ;  or_if rc7_in _adcon1 15
        ; line_number = 280
        ;  or_if rc7_in _adcon0 0
        ; line_number = 281
        ;  or_if rx _trisc 128
        ; line_number = 282
        ;  or_if rx _adcon1 15
        ; line_number = 283
        ;  or_if rx _adcon0 0
        ; line_number = 284
        ;  or_if rc7_out _trisc 0
        ; line_number = 285
        ;  or_if rc7_out _adcon1 15
        ; line_number = 286
        ;  or_if rc7_out _adcon0 0
        ; line_number = 287
        ; pin rd4_in, rd4_out, psp4, rd4_unused
        ; line_number = 288
        ; pin_bindings pdip = 27
        ; line_number = 289
        ;  bind_to _portd@4
        ; line_number = 290
        ;  or_if rd4_in _trisd 16
        ; line_number = 291
        ;  or_if rd4_in _adcon1 15
        ; line_number = 292
        ;  or_if rd4_in _adcon0 0
        ; line_number = 293
        ;  or_if rd4_out _trisd 0
        ; line_number = 294
        ;  or_if rd4_out _adcon1 15
        ; line_number = 295
        ;  or_if rd4_out _adcon0 0
        ; line_number = 296
        ; pin rd5_in, rd5_out, psp5, rd5_unused
        ; line_number = 297
        ; pin_bindings pdip = 28
        ; line_number = 298
        ;  bind_to _portd@5
        ; line_number = 299
        ;  or_if rd5_in _trisd 32
        ; line_number = 300
        ;  or_if rd5_in _adcon1 15
        ; line_number = 301
        ;  or_if rd5_in _adcon0 0
        ; line_number = 302
        ;  or_if rd5_out _trisd 0
        ; line_number = 303
        ;  or_if rd5_out _adcon1 15
        ; line_number = 304
        ;  or_if rd5_out _adcon0 0
        ; line_number = 305
        ; pin rd6_in, rd6_out, psp6, rd6_unused
        ; line_number = 306
        ; pin_bindings pdip = 29
        ; line_number = 307
        ;  bind_to _portd@6
        ; line_number = 308
        ;  or_if rd6_in _trisd 64
        ; line_number = 309
        ;  or_if rd6_in _adcon1 15
        ; line_number = 310
        ;  or_if rd6_in _adcon0 0
        ; line_number = 311
        ;  or_if rd6_out _trisd 0
        ; line_number = 312
        ;  or_if rd6_out _adcon1 15
        ; line_number = 313
        ;  or_if rd6_out _adcon0 0
        ; line_number = 314
        ; pin rd7_in, rd7_out, psp7, rd7_unused
        ; line_number = 315
        ; pin_bindings pdip = 30
        ; line_number = 316
        ;  bind_to _portd@7
        ; line_number = 317
        ;  or_if rd7_in _trisd 128
        ; line_number = 318
        ;  or_if rd7_in _adcon1 15
        ; line_number = 319
        ;  or_if rd7_in _adcon0 0
        ; line_number = 320
        ;  or_if rd7_out _trisd 0
        ; line_number = 321
        ;  or_if rd7_out _adcon1 15
        ; line_number = 322
        ;  or_if rd7_out _adcon0 0
        ; line_number = 323
        ; pin vss2, ground2
        ; line_number = 324
        ; pin_bindings pdip = 31
        ; line_number = 325
        ; pin vdd2, power_supply2
        ; line_number = 326
        ; pin_bindings pdip = 32
        ; line_number = 327
        ; pin rb0_in, rb0_out, int, an12, rb0_unused
        ; line_number = 328
        ; pin_bindings pdip = 33
        ; line_number = 329
        ;  bind_to _portb@0
        ; line_number = 330
        ;  or_if rb0_in _trisb 1
        ; line_number = 331
        ;  or_if rb0_in _adcon1 15
        ; line_number = 332
        ;  or_if rb0_in _adcon0 0
        ; line_number = 333
        ;  or_if rb0_out _trisb 0
        ; line_number = 334
        ;  or_if rb0_out _adcon1 15
        ; line_number = 335
        ;  or_if rb0_out _adcon0 0
        ; line_number = 336
        ; pin rb1_in, rb1_out, an10, rb1_unused
        ; line_number = 337
        ; pin_bindings pdip = 34
        ; line_number = 338
        ;  bind_to _portb@1
        ; line_number = 339
        ;  or_if rb1_in _trisb 2
        ; line_number = 340
        ;  or_if rb1_in _adcon1 15
        ; line_number = 341
        ;  or_if rb1_in _adcon0 0
        ; line_number = 342
        ;  or_if rb1_out _trisb 0
        ; line_number = 343
        ;  or_if rb1_out _adcon1 15
        ; line_number = 344
        ;  or_if rb1_out _adcon0 0
        ; line_number = 345
        ; pin rb2_in, rb2_out, an8, rb2_unused
        ; line_number = 346
        ; pin_bindings pdip = 35
        ; line_number = 347
        ;  bind_to _portb@2
        ; line_number = 348
        ;  or_if rb2_in _trisb 4
        ; line_number = 349
        ;  or_if rb2_in _adcon1 15
        ; line_number = 350
        ;  or_if rb2_in _adcon0 0
        ; line_number = 351
        ;  or_if rb2_out _trisb 0
        ; line_number = 352
        ;  or_if rb2_out _adcon1 15
        ; line_number = 353
        ;  or_if rb2_out _adcon0 0
        ; line_number = 354
        ; pin rb3_in, rb3_out, ccp2b, an9, rb3_unused
        ; line_number = 355
        ; pin_bindings pdip = 36
        ; line_number = 356
        ;  bind_to _portb@3
        ; line_number = 357
        ;  or_if rb3_in _trisb 8
        ; line_number = 358
        ;  or_if rb3_in _adcon1 15
        ; line_number = 359
        ;  or_if rb3_out _trisb 0
        ; line_number = 360
        ;  or_if rb3_out _adcon1 15
        ; line_number = 361
        ; pin rb4_in, rb4_out, an11, rb4_unused
        ; line_number = 362
        ; pin_bindings pdip = 37
        ; line_number = 363
        ;  bind_to _portb@4
        ; line_number = 364
        ;  or_if rb4_in _trisb 16
        ; line_number = 365
        ;  or_if rb4_in _adcon1 15
        ; line_number = 366
        ;  or_if rb4_in _adcon0 0
        ; line_number = 367
        ;  or_if rb4_out _trisb 0
        ; line_number = 368
        ;  or_if rb4_out _adcon1 15
        ; line_number = 369
        ;  or_if rb4_out _adcon0 0
        ; line_number = 370
        ; pin rb5_in, rb5_out, an13, ccp3, rb5_unused
        ; line_number = 371
        ; pin_bindings pdip = 38
        ; line_number = 372
        ;  bind_to _portb@5
        ; line_number = 373
        ;  or_if rb5_in _trisb 32
        ; line_number = 374
        ;  or_if rb5_in _adcon1 15
        ; line_number = 375
        ;  or_if rb5_in _adcon0 0
        ; line_number = 376
        ;  or_if rb5_out _trisb 0
        ; line_number = 377
        ;  or_if rb5_out _adcon1 15
        ; line_number = 378
        ;  or_if rb5_out _adcon0 0
        ; line_number = 379
        ; pin rb6_in, rb6_out, pgc, rb6_unused
        ; line_number = 380
        ; pin_bindings pdip = 39
        ; line_number = 381
        ;  bind_to _portb@6
        ; line_number = 382
        ;  or_if rb6_in _trisb 64
        ; line_number = 383
        ;  or_if rb6_in _adcon1 15
        ; line_number = 384
        ;  or_if rb6_in _adcon0 0
        ; line_number = 385
        ;  or_if rb6_out _trisb 0
        ; line_number = 386
        ;  or_if rb6_out _adcon1 15
        ; line_number = 387
        ;  or_if rb6_out _adcon0 0
        ; line_number = 388
        ; pin rb7_in, rb7_out, pgd, rb7_unused
        ; line_number = 389
        ; pin_bindings pdip = 40
        ; line_number = 390
        ;  bind_to _portb@7
        ; line_number = 391
        ;  or_if rb7_in _trisb 128
        ; line_number = 392
        ;  or_if rb7_in _adcon1 15
        ; line_number = 393
        ;  or_if rb7_in _adcon0 0
        ; line_number = 394
        ;  or_if rb7_out _trisb 0
        ; line_number = 395
        ;  or_if rb7_out _adcon1 15
        ; line_number = 396
        ;  or_if rb7_out _adcon0 0

        ; line_number = 398
        ; library _pic16f7x7 entered

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

        ; buffer = '_pic16f7x7'
        ; line_number = 6
        ; library _standard entered

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

        ; # Standard definition for uCL:

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


        ; buffer = '_pic16f7x7'
        ; line_number = 6
        ; library _standard exited

        ; # Common declarations for PIC16F7x7 series microcontrollers:

        ; # Register and pin definitions:

        ; # Bank 0:

        ; line_number = 14
        ; register _indf = 
_indf equ 0

        ; line_number = 16
        ; register _tmr0 = 
_tmr0 equ 1

        ; line_number = 18
        ; register _pcl = 
_pcl equ 2

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

        ; line_number = 30
        ; register _fsr = 
_fsr equ 4

        ; line_number = 32
        ; register _porta = 
_porta equ 5

        ; line_number = 34
        ; register _portb = 
_portb equ 6

        ; line_number = 36
        ; register _portc = 
_portc equ 7

        ; line_number = 38
        ; register _pclath = 
_pclath equ 10

        ; line_number = 40
        ; register _intcon = 
_intcon equ 11
        ; line_number = 41
        ; bind _gie = _intcon@7
_gie___byte equ _intcon
_gie___bit equ 7
        ; line_number = 42
        ; bind _peie = _intcon@6
_peie___byte equ _intcon
_peie___bit equ 6
        ; line_number = 43
        ; bind _tmr0ie = _intcon@5
_tmr0ie___byte equ _intcon
_tmr0ie___bit equ 5
        ; line_number = 44
        ; bind _int0ie = _intcon@4
_int0ie___byte equ _intcon
_int0ie___bit equ 4
        ; line_number = 45
        ; bind _rbie = _intcon@3
_rbie___byte equ _intcon
_rbie___bit equ 3
        ; line_number = 46
        ; bind _tmr0if = _intcon@2
_tmr0if___byte equ _intcon
_tmr0if___bit equ 2
        ; line_number = 47
        ; bind _int0if = _intcon@1
_int0if___byte equ _intcon
_int0if___bit equ 1
        ; line_number = 48
        ; bind _rbif = _intcon@0
_rbif___byte equ _intcon
_rbif___bit equ 0

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

        ; line_number = 60
        ; register _pir2 = 
_pir2 equ 13
        ; line_number = 61
        ; bind _osif = _pir2@7
_osif___byte equ _pir2
_osif___bit equ 7
        ; line_number = 62
        ; bind _cmif = _pir2@6
_cmif___byte equ _pir2
_cmif___bit equ 6
        ; line_number = 63
        ; bind _lvif = _pir2@5
_lvif___byte equ _pir2
_lvif___bit equ 5
        ; line_number = 64
        ; bind _bclif = _pir2@3
_bclif___byte equ _pir2
_bclif___bit equ 3
        ; line_number = 65
        ; bind _ccp3if = _pir2@1
_ccp3if___byte equ _pir2
_ccp3if___bit equ 1
        ; line_number = 66
        ; bind _ccp2if = _pir2@0
_ccp2if___byte equ _pir2
_ccp2if___bit equ 0

        ; line_number = 68
        ; register _tmr1l = 
_tmr1l equ 14

        ; line_number = 70
        ; register _tmr1h = 
_tmr1h equ 15

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

        ; line_number = 81
        ; register _tmr2 = 
_tmr2 equ 17

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

        ; line_number = 92
        ; register _sspbuf = 
_sspbuf equ 19

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

        ; line_number = 104
        ; register _ccpr1l = 
_ccpr1l equ 21

        ; line_number = 106
        ; register _ccpr1h = 
_ccpr1h equ 22

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

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

        ; line_number = 126
        ; register _txreg = 
_txreg equ 25

        ; line_number = 128
        ; register _rcreg = 
_rcreg equ 26

        ; line_number = 130
        ; register _ccpr2l = 
_ccpr2l equ 27

        ; line_number = 132
        ; register _ccpr2h = 
_ccpr2h equ 28

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

        ; line_number = 142
        ; register _adresh = 
_adresh equ 30

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

        ; # Bank 1:

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

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

        ; line_number = 175
        ; register _trisb = 
_trisb equ 134

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

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

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

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

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

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

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

        ; line_number = 237
        ; register _pr2 = 
_pr2 equ 146

        ; line_number = 239
        ; register _sspadd = 
_sspadd equ 147

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

        ; line_number = 251
        ; register _ccpr3l = 
_ccpr3l equ 149

        ; line_number = 253
        ; register _ccpr3h = 
_ccpr3h equ 150

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

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

        ; line_number = 272
        ; register _spbrg = 
_spbrg equ 153

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

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

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

        ; line_number = 298
        ; register _adresl = 
_adresl equ 158

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

        ; # Bank 2:

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

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

        ; line_number = 327
        ; register _pmdata = 
_pmdata equ 268

        ; line_number = 329
        ; register _pmadr = 
_pmadr equ 269

        ; line_number = 331
        ; register _pmdath = 
_pmdath equ 270

        ; line_number = 333
        ; register _pmadrh = 
_pmadrh equ 271

        ; # Bank 3:

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



        ; buffer = '_pic16f777'
        ; line_number = 398
        ; library _pic16f7x7 exited

        ; # Additional register and pin definitions:

        ; line_number = 402
        ; register _portd = 
_portd equ 8

        ; line_number = 404
        ; register _porte = 
_porte equ 9

        ; line_number = 406
        ; register _trisd = 
_trisd equ 136

        ; line_number = 408
        ; register _trise = 
_trise equ 137

        ; # Default configurations:


        ; buffer = 'chopper_test'
        ; line_number = 6
        ; library _pic16f777 exited
        ; line_number = 7
        ; 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 = 'chopper_test'
        ; line_number = 7
        ; library clock20mhz exited
        ; line_number = 8
        ; library _uart entered
        ; # Copyright (c) 2004 by Wayne C. Gramlich.
        ; # All rights reserved.

        ; # This library contains some procedures for accessing the UART.

        ; Delaying code generation for procedure  _uart_byte_safe_get
        ; Delaying code generation for procedure  _uart_byte_get
        ; Delaying code generation for procedure  _uart_hex_put
        ; Delaying code generation for procedure  _uart_nibble_put
        ; Delaying code generation for procedure  _uart_space_put
        ; Delaying code generation for procedure  _uart_crlf_put
        ; Delaying code generation for procedure  _uart_byte_put

        ; line_number = 8
        ; library _uart exited

        ; line_number = 10
        ; package pdip
        ; line_number = 11
        ; pin 1 = mclr
        ; line_number = 12
        ;  pin 2 = ra0_in, name = x_step
x_step___byte equ _porta
x_step___bit equ 0
        ; line_number = 13
        ;  pin 3 = ra1_in, name = y_dir
y_dir___byte equ _porta
y_dir___bit equ 1
        ; line_number = 14
        ;  pin 4 = ra2_in, name = z_dir
z_dir___byte equ _porta
z_dir___bit equ 2
        ; line_number = 15
        ;  pin 5 = ra3_in, name = x_dir
x_dir___byte equ _porta
x_dir___bit equ 3
        ; line_number = 16
        ;  pin 6 = ra4_in, name = a_step
a_step___byte equ _porta
a_step___bit equ 4
        ; line_number = 17
        ;  pin 7 = ra5_in, name = z_step
z_step___byte equ _porta
z_step___bit equ 5
        ; line_number = 18
        ;  pin 8 = re0_in, name = y_step
y_step___byte equ _porte
y_step___bit equ 0
        ; line_number = 19
        ;  pin 9 = re1_in, name = a_dir
a_dir___byte equ _porte
a_dir___bit equ 1
        ; line_number = 20
        ;  pin 10 = re2_unused
        ; line_number = 21
        ;  pin 11 = vdd1
        ; line_number = 22
        ;  pin 12 = vss1
        ; line_number = 23
        ;  pin 13 = osc1
        ; line_number = 24
        ;  pin 14 = osc2
        ; line_number = 25
        ;  pin 15 = rc0_in, name = strobe
strobe___byte equ _portc
strobe___bit equ 0
        ; line_number = 26
        ;  pin 16 = rc1_unused
        ; line_number = 27
        ;  pin 17 = rc2_out, name = load
load___byte equ _portc
load___bit equ 2
        ; line_number = 28
        ;  pin 18 = rc3_out, name = clock
clock___byte equ _portc
clock___bit equ 3
        ; line_number = 29
        ;  pin 19 = rd0_out, name = x4
x4___byte equ _portd
x4___bit equ 0
        ; line_number = 30
        ;  pin 20 = rd1_out, name = x3
x3___byte equ _portd
x3___bit equ 1
        ; line_number = 31
        ;  pin 21 = rd2_out, name = x2
x2___byte equ _portd
x2___bit equ 2
        ; line_number = 32
        ;  pin 22 = rd3_out, name = x1
x1___byte equ _portd
x1___bit equ 3
        ; line_number = 33
        ;  pin 23 = rc4_out, name = ldac
ldac___byte equ _portc
ldac___bit equ 4
        ; line_number = 34
        ;  pin 24 = rc5_out, name = data
data___byte equ _portc
data___bit equ 5
        ; line_number = 35
        ;  pin 25 = rc6_unused
        ; line_number = 36
        ;  pin 26 = rx, name = rxd
rxd___byte equ _portc
rxd___bit equ 7
        ; line_number = 37
        ;  pin 27 = rd4_out, name = y4
y4___byte equ _portd
y4___bit equ 4
        ; line_number = 38
        ;  pin 28 = rd5_out, name = y3
y3___byte equ _portd
y3___bit equ 5
        ; line_number = 39
        ;  pin 29 = rd6_out, name = y2
y2___byte equ _portd
y2___bit equ 6
        ; line_number = 40
        ;  pin 30 = rd7_out, name = y1
y1___byte equ _portd
y1___bit equ 7
        ; line_number = 41
        ;  pin 31 = vss2
        ; line_number = 42
        ;  pin 32 = vdd2
        ; line_number = 43
        ;  pin 33 = rb0_out, name = z4
z4___byte equ _portb
z4___bit equ 0
        ; line_number = 44
        ;  pin 34 = rb1_out, name = z3
z3___byte equ _portb
z3___bit equ 1
        ; line_number = 45
        ;  pin 35 = rb2_out, name = z2
z2___byte equ _portb
z2___bit equ 2
        ; line_number = 46
        ;  pin 36 = rb3_out, name = z1
z1___byte equ _portb
z1___bit equ 3
        ; line_number = 47
        ;  pin 37 = rb4_out, name = a4
a4___byte equ _portb
a4___bit equ 4
        ; line_number = 48
        ;  pin 38 = rb5_out, name = a3
a3___byte equ _portb
a3___bit equ 5
        ; line_number = 49
        ;  pin 39 = rb6_out, name = a2
a2___byte equ _portb
a2___bit equ 6
        ; line_number = 50
        ;  pin 40 = rb7_out, name = a1
a1___byte equ _portb
a1___bit equ 7


        ; line_number = 54
        ; constant microsecond = 5
microsecond equ 5

        ; line_number = 56
        ; constant tmr0_prescale_power = 0
tmr0_prescale_power equ 0
        ; line_number = 57
        ; constant tmr0_prescale = 1 << (tmr0_prescale_power + 1)
tmr0_prescale equ 2
        ; line_number = 58
        ; constant refresh_rate = 25000
refresh_rate equ 25000
        ; line_number = 59
        ; constant refresh_clocks = instruction_rate / refresh_rate
refresh_clocks equ 200
        ; line_number = 60
        ; constant tmr0_value = 255 - (refresh_clocks / tmr0_prescale) 
tmr0_value equ 155

        ; # sin((0/8) * 90) = 0.000000   x 255 = 0
        ; # sin((1/8) * 90) = 0.195090   x 255 = 50
        ; # sin((2/8) * 90) = 0.382683   x 255 = 98
        ; # sin((3/8) * 90) = 0.555570   x 255 = 142 
        ; # sin((4/8) * 90) = 0.707107   x 255 = 180
        ; # sin((5/8) * 90) = 0.831470   x 255 = 212
        ; # sin((6/8) * 90) = 0.923880   x 255 = 236
        ; # sin((7/8) * 90) = 0.980785   x 255 = 250
        ; # sin((8/8) * 90) = 1.000000   x 255 = 255

        ; line_number = 72
        ; constant sine_0_8 = 0
sine_0_8 equ 0
        ; line_number = 73
        ; constant sine_1_8 = 50
sine_1_8 equ 50
        ; line_number = 74
        ; constant sine_2_8 = 98
sine_2_8 equ 98
        ; line_number = 75
        ; constant sine_3_8 = 142
sine_3_8 equ 142
        ; line_number = 76
        ; constant sine_4_8 = 180
sine_4_8 equ 180
        ; line_number = 77
        ; constant sine_5_8 = 212
sine_5_8 equ 212
        ; line_number = 78
        ; constant sine_6_8 = 236
sine_6_8 equ 236
        ; line_number = 79
        ; constant sine_7_8 = 250
sine_7_8 equ 250
        ; line_number = 80
        ; constant sine_8_8 = 255
sine_8_8 equ 255

        ; line_number = 82
        ; global dac byte
dac equ globals___0+3
        ; line_number = 83
        ; global port_b byte
port_b equ globals___0+4
        ; line_number = 84
        ; global port_d byte
port_d equ globals___0+5
        ; line_number = 85
        ; global a_angle byte
a_angle equ globals___0+6
        ; line_number = 86
        ; global x_angle byte
x_angle equ globals___0+7
        ; line_number = 87
        ; global y_angle byte
y_angle equ globals___0+8
        ; line_number = 88
        ; global z_angle byte
z_angle equ globals___0+9
        ; line_number = 89
        ; global a_amount byte
a_amount equ globals___0+10
        ; line_number = 90
        ; global x_amount byte
x_amount equ globals___0+11
        ; line_number = 91
        ; global y_amount byte
y_amount equ globals___0+12
        ; line_number = 92
        ; global z_amount byte
z_amount equ globals___0+13
        ; line_number = 93
        ; global a_step_previous bit
a_step_previous___byte equ globals___0+79
a_step_previous___bit equ 0
        ; line_number = 94
        ; global x_step_previous bit
x_step_previous___byte equ globals___0+79
x_step_previous___bit equ 1
        ; line_number = 95
        ; global y_step_previous bit
y_step_previous___byte equ globals___0+79
y_step_previous___bit equ 2
        ; line_number = 96
        ; global z_step_previous bit
z_step_previous___byte equ globals___0+79
z_step_previous___bit equ 3
        ; line_number = 97
        ; global dac_update byte
dac_update equ globals___0+14
        ; line_number = 98
        ; bind a_dac_update = dac_update@3
a_dac_update___byte equ globals___0+14
a_dac_update___bit equ 3
        ; line_number = 99
        ; bind z_dac_update = dac_update@2
z_dac_update___byte equ globals___0+14
z_dac_update___bit equ 2
        ; line_number = 100
        ; bind y_dac_update = dac_update@1
y_dac_update___byte equ globals___0+14
y_dac_update___bit equ 1
        ; line_number = 101
        ; bind x_dac_update = dac_update@0
x_dac_update___byte equ globals___0+14
x_dac_update___bit equ 0
        ; line_number = 102
        ; global a_mask byte
a_mask equ globals___0+15
        ; line_number = 103
        ; global z_mask byte
z_mask equ globals___0+16
        ; line_number = 104
        ; global y_mask byte
y_mask equ globals___0+17
        ; line_number = 105
        ; global x_mask byte
x_mask equ globals___0+18
        ; line_number = 106
        ; global a_strength byte
a_strength equ globals___0+19
        ; line_number = 107
        ; global x_strength byte
x_strength equ globals___0+20
        ; line_number = 108
        ; global y_strength byte
y_strength equ globals___0+21
        ; line_number = 109
        ; global z_strength byte
z_strength equ globals___0+22

        ; line_number = 111
        ; origin 0
        org     0

        ; line_number = 113
        ;info   113, 0
        ; procedure start
start:
        ; arguments_none
        ; line_number = 115
        ;  returns_nothing

        ; #: This procedure simply jumps around the interrupt procedure
        ; #, located at location 4.

        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:00=>00)
        ; line_number = 120
        ;  assemble
        ;info   120, 0
        ; line_number = 121
        ;info   121, 0
        goto    main

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




        ; line_number = 123
        ; origin 4
        org     4

        ; line_number = 125
        ;info   125, 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 = 127
        ;  returns_nothing

        ; # This procedure processes the TMR0 interrupt.

        ; # Restart TMR0:
        ; before procedure statements delay=non-uniform, bit states=(data:??=>?? code:00=>00)
        ; line_number = 132
        ;  _tmr0 := tmr0_value
        ;info   132, 7
        movlw   155
        bcf     __rp0___byte, __rp0___bit
        movwf   _tmr0
        ; line_number = 133
        ;  _tmr0if := _false
        ;info   133, 10
        bcf     _tmr0if___byte, _tmr0if___bit

        ; # Blank for 4 microseconds:
        ; line_number = 136
        ;  strobe := _false
        ;info   136, 11
        bcf     __rp1___byte, __rp1___bit
        bcf     strobe___byte, strobe___bit
        ; line_number = 137
        ;  delay 4 * microsecond start
        ;info   137, 13
        ; Delay expression evaluates to 20
        ; # Set the H-Bridges:
        ; line_number = 139
        ;  _portb := port_b
        ; Delay at assignment is 0
        ;info   139, 13
        movf    port_b,w
        movwf   _portb
        ; line_number = 140
        ;  _portd := port_d
        ; Delay at assignment is 2
        ;info   140, 15
        movf    port_d,w
        movwf   _portd

        ; # Force the DAC values out to the pins:
        ; line_number = 143
        ;  ldac := _false
        ; Delay at assignment is 4
        ;info   143, 17
        bcf     ldac___byte, ldac___bit
        ; line_number = 144
        ;  ldac := _true
        ; Delay at assignment is 5
        ;info   144, 18
        bsf     ldac___byte, ldac___bit

        ; # Strobe the H-bridges
        ; # It may be necessary to add some delay here to let the
        ; # sense resistor voltages settle down.
        ; Delay 14 cycles
        ; Delay loop takes 3 * 4 = 12 cycles
        movlw   3
interrupt__1:
        addlw   255
        btfss   __z___byte, __z___bit
        goto    interrupt__1
        goto    interrupt__2
interrupt__2:
        ; line_number = 137
        ;  delay 4 * microsecond done
        ; line_number = 149
        ; strobe := _true
        ;info   149, 24
        bsf     strobe___byte, strobe___bit


        ; 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  




        ; line_number = 152
        ;info   152, 30
        ; procedure sine
sine:
        ; Last argument is sitting in W; save into argument variable
        movwf   sine__angle
        ; delay=4294967295
        ; line_number = 153
        ; argument angle byte
sine__angle equ globals___0+23
        ; line_number = 154
        ;  returns byte

        ; # This procedure will return sin({angle})*255, where {angle} is
        ; # measured in multiples of 11.25 degrees (= (1/8) * 90).

        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:00=>00)
        ; line_number = 159
        ;  switch angle start
        ;info   159, 31
        movlw   sine__145>>8
        movwf   __pclath
        movf    sine__angle,w
        addlw   sine__145
        movwf   __pcl
        ; page_group 144
sine__145:
        ; line_number = 161
        ; return 0 start
        ; line_number = 161
        ;info   161, 36
        retlw   0
        ; line_number = 161
        ; return 0 done
        ; line_number = 163
        ; return 0 start
        ; line_number = 163
        ;info   163, 37
        retlw   0
        ; line_number = 163
        ; return 0 done
        ; line_number = 165
        ; return 0 start
        ; line_number = 165
        ;info   165, 38
        retlw   0
        ; line_number = 165
        ; return 0 done
        ; line_number = 167
        ; return 0 start
        ; line_number = 167
        ;info   167, 39
        retlw   0
        ; line_number = 167
        ; return 0 done
        ; line_number = 169
        ; return 0 start
        ; line_number = 169
        ;info   169, 40
        retlw   0
        ; line_number = 169
        ; return 0 done
        ; line_number = 171
        ; return 0 start
        ; line_number = 171
        ;info   171, 41
        retlw   0
        ; line_number = 171
        ; return 0 done
        ; line_number = 173
        ; return 0 start
        ; line_number = 173
        ;info   173, 42
        retlw   0
        ; line_number = 173
        ; return 0 done
        ; line_number = 175
        ; return 0 start
        ; line_number = 175
        ;info   175, 43
        retlw   0
        ; line_number = 175
        ; return 0 done
        ; line_number = 177
        ; return 0 start
        ; line_number = 177
        ;info   177, 44
        retlw   0
        ; line_number = 177
        ; return 0 done
        ; line_number = 179
        ; return 0 start
        ; line_number = 179
        ;info   179, 45
        retlw   0
        ; line_number = 179
        ; return 0 done
        ; line_number = 181
        ; return 0 start
        ; line_number = 181
        ;info   181, 46
        retlw   0
        ; line_number = 181
        ; return 0 done
        ; line_number = 183
        ; return 0 start
        ; line_number = 183
        ;info   183, 47
        retlw   0
        ; line_number = 183
        ; return 0 done
        ; line_number = 185
        ; return 0 start
        ; line_number = 185
        ;info   185, 48
        retlw   0
        ; line_number = 185
        ; return 0 done
        ; line_number = 187
        ; return 0 start
        ; line_number = 187
        ;info   187, 49
        retlw   0
        ; line_number = 187
        ; return 0 done
        ; line_number = 189
        ; return 0 start
        ; line_number = 189
        ;info   189, 50
        retlw   0
        ; line_number = 189
        ; return 0 done
        ; line_number = 191
        ; return 0 start
        ; line_number = 191
        ;info   191, 51
        retlw   0
        ; line_number = 191
        ; return 0 done

        ; line_number = 194
        ; return sine_0_8 * 1 / 8 start
        ; line_number = 194
        ;info   194, 52
        retlw   0
        ; line_number = 194
        ; return sine_0_8 * 1 / 8 done
        ; line_number = 196
        ; return sine_1_8 * 1 / 8 start
        ; line_number = 196
        ;info   196, 53
        retlw   6
        ; line_number = 196
        ; return sine_1_8 * 1 / 8 done
        ; line_number = 198
        ; return sine_2_8 * 1 / 8 start
        ; line_number = 198
        ;info   198, 54
        retlw   12
        ; line_number = 198
        ; return sine_2_8 * 1 / 8 done
        ; line_number = 200
        ; return sine_3_8 * 1 / 8 start
        ; line_number = 200
        ;info   200, 55
        retlw   17
        ; line_number = 200
        ; return sine_3_8 * 1 / 8 done
        ; line_number = 202
        ; return sine_4_8 * 1 / 8 start
        ; line_number = 202
        ;info   202, 56
        retlw   22
        ; line_number = 202
        ; return sine_4_8 * 1 / 8 done
        ; line_number = 204
        ; return sine_5_8 * 1 / 8 start
        ; line_number = 204
        ;info   204, 57
        retlw   26
        ; line_number = 204
        ; return sine_5_8 * 1 / 8 done
        ; line_number = 206
        ; return sine_6_8 * 1 / 8 start
        ; line_number = 206
        ;info   206, 58
        retlw   29
        ; line_number = 206
        ; return sine_6_8 * 1 / 8 done
        ; line_number = 208
        ; return sine_7_8 * 1 / 8 start
        ; line_number = 208
        ;info   208, 59
        retlw   31
        ; line_number = 208
        ; return sine_7_8 * 1 / 8 done
        ; line_number = 210
        ; return sine_8_8 * 1 / 8 start
        ; line_number = 210
        ;info   210, 60
        retlw   31
        ; line_number = 210
        ; return sine_8_8 * 1 / 8 done
        ; line_number = 212
        ; return sine_7_8 * 1 / 8 start
        ; line_number = 212
        ;info   212, 61
        retlw   31
        ; line_number = 212
        ; return sine_7_8 * 1 / 8 done
        ; line_number = 214
        ; return sine_6_8 * 1 / 8 start
        ; line_number = 214
        ;info   214, 62
        retlw   29
        ; line_number = 214
        ; return sine_6_8 * 1 / 8 done
        ; line_number = 216
        ; return sine_5_8 * 1 / 8 start
        ; line_number = 216
        ;info   216, 63
        retlw   26
        ; line_number = 216
        ; return sine_5_8 * 1 / 8 done
        ; line_number = 218
        ; return sine_4_8 * 1 / 8 start
        ; line_number = 218
        ;info   218, 64
        retlw   22
        ; line_number = 218
        ; return sine_4_8 * 1 / 8 done
        ; line_number = 220
        ; return sine_3_8 * 1 / 8 start
        ; line_number = 220
        ;info   220, 65
        retlw   17
        ; line_number = 220
        ; return sine_3_8 * 1 / 8 done
        ; line_number = 222
        ; return sine_2_8 * 1 / 8 start
        ; line_number = 222
        ;info   222, 66
        retlw   12
        ; line_number = 222
        ; return sine_2_8 * 1 / 8 done
        ; line_number = 224
        ; return sine_1_8 * 1 / 8 start
        ; line_number = 224
        ;info   224, 67
        retlw   6
        ; line_number = 224
        ; return sine_1_8 * 1 / 8 done

        ; line_number = 227
        ; return sine_0_8 * 2 / 8 start
        ; line_number = 227
        ;info   227, 68
        retlw   0
        ; line_number = 227
        ; return sine_0_8 * 2 / 8 done
        ; line_number = 229
        ; return sine_1_8 * 2 / 8 start
        ; line_number = 229
        ;info   229, 69
        retlw   12
        ; line_number = 229
        ; return sine_1_8 * 2 / 8 done
        ; line_number = 231
        ; return sine_2_8 * 2 / 8 start
        ; line_number = 231
        ;info   231, 70
        retlw   24
        ; line_number = 231
        ; return sine_2_8 * 2 / 8 done
        ; line_number = 233
        ; return sine_3_8 * 2 / 8 start
        ; line_number = 233
        ;info   233, 71
        retlw   35
        ; line_number = 233
        ; return sine_3_8 * 2 / 8 done
        ; line_number = 235
        ; return sine_4_8 * 2 / 8 start
        ; line_number = 235
        ;info   235, 72
        retlw   45
        ; line_number = 235
        ; return sine_4_8 * 2 / 8 done
        ; line_number = 237
        ; return sine_5_8 * 2 / 8 start
        ; line_number = 237
        ;info   237, 73
        retlw   53
        ; line_number = 237
        ; return sine_5_8 * 2 / 8 done
        ; line_number = 239
        ; return sine_6_8 * 2 / 8 start
        ; line_number = 239
        ;info   239, 74
        retlw   59
        ; line_number = 239
        ; return sine_6_8 * 2 / 8 done
        ; line_number = 241
        ; return sine_7_8 * 2 / 8 start
        ; line_number = 241
        ;info   241, 75
        retlw   62
        ; line_number = 241
        ; return sine_7_8 * 2 / 8 done
        ; line_number = 243
        ; return sine_8_8 * 2 / 8 start
        ; line_number = 243
        ;info   243, 76
        retlw   63
        ; line_number = 243
        ; return sine_8_8 * 2 / 8 done
        ; line_number = 245
        ; return sine_7_8 * 2 / 8 start
        ; line_number = 245
        ;info   245, 77
        retlw   62
        ; line_number = 245
        ; return sine_7_8 * 2 / 8 done
        ; line_number = 247
        ; return sine_6_8 * 2 / 8 start
        ; line_number = 247
        ;info   247, 78
        retlw   59
        ; line_number = 247
        ; return sine_6_8 * 2 / 8 done
        ; line_number = 249
        ; return sine_5_8 * 2 / 8 start
        ; line_number = 249
        ;info   249, 79
        retlw   53
        ; line_number = 249
        ; return sine_5_8 * 2 / 8 done
        ; line_number = 251
        ; return sine_4_8 * 2 / 8 start
        ; line_number = 251
        ;info   251, 80
        retlw   45
        ; line_number = 251
        ; return sine_4_8 * 2 / 8 done
        ; line_number = 253
        ; return sine_3_8 * 2 / 8 start
        ; line_number = 253
        ;info   253, 81
        retlw   35
        ; line_number = 253
        ; return sine_3_8 * 2 / 8 done
        ; line_number = 255
        ; return sine_2_8 * 2 / 8 start
        ; line_number = 255
        ;info   255, 82
        retlw   24
        ; line_number = 255
        ; return sine_2_8 * 2 / 8 done
        ; line_number = 257
        ; return sine_1_8 * 2 / 8 start
        ; line_number = 257
        ;info   257, 83
        retlw   12
        ; line_number = 257
        ; return sine_1_8 * 2 / 8 done

        ; line_number = 260
        ; return sine_0_8 * 3 / 8 start
        ; line_number = 260
        ;info   260, 84
        retlw   0
        ; line_number = 260
        ; return sine_0_8 * 3 / 8 done
        ; line_number = 262
        ; return sine_1_8 * 3 / 8 start
        ; line_number = 262
        ;info   262, 85
        retlw   18
        ; line_number = 262
        ; return sine_1_8 * 3 / 8 done
        ; line_number = 264
        ; return sine_2_8 * 3 / 8 start
        ; line_number = 264
        ;info   264, 86
        retlw   36
        ; line_number = 264
        ; return sine_2_8 * 3 / 8 done
        ; line_number = 266
        ; return sine_3_8 * 3 / 8 start
        ; line_number = 266
        ;info   266, 87
        retlw   53
        ; line_number = 266
        ; return sine_3_8 * 3 / 8 done
        ; line_number = 268
        ; return sine_4_8 * 3 / 8 start
        ; line_number = 268
        ;info   268, 88
        retlw   67
        ; line_number = 268
        ; return sine_4_8 * 3 / 8 done
        ; line_number = 270
        ; return sine_5_8 * 3 / 8 start
        ; line_number = 270
        ;info   270, 89
        retlw   79
        ; line_number = 270
        ; return sine_5_8 * 3 / 8 done
        ; line_number = 272
        ; return sine_6_8 * 3 / 8 start
        ; line_number = 272
        ;info   272, 90
        retlw   88
        ; line_number = 272
        ; return sine_6_8 * 3 / 8 done
        ; line_number = 274
        ; return sine_7_8 * 3 / 8 start
        ; line_number = 274
        ;info   274, 91
        retlw   93
        ; line_number = 274
        ; return sine_7_8 * 3 / 8 done
        ; line_number = 276
        ; return sine_8_8 * 3 / 8 start
        ; line_number = 276
        ;info   276, 92
        retlw   95
        ; line_number = 276
        ; return sine_8_8 * 3 / 8 done
        ; line_number = 278
        ; return sine_7_8 * 3 / 8 start
        ; line_number = 278
        ;info   278, 93
        retlw   93
        ; line_number = 278
        ; return sine_7_8 * 3 / 8 done
        ; line_number = 280
        ; return sine_6_8 * 3 / 8 start
        ; line_number = 280
        ;info   280, 94
        retlw   88
        ; line_number = 280
        ; return sine_6_8 * 3 / 8 done
        ; line_number = 282
        ; return sine_5_8 * 3 / 8 start
        ; line_number = 282
        ;info   282, 95
        retlw   79
        ; line_number = 282
        ; return sine_5_8 * 3 / 8 done
        ; line_number = 284
        ; return sine_4_8 * 3 / 8 start
        ; line_number = 284
        ;info   284, 96
        retlw   67
        ; line_number = 284
        ; return sine_4_8 * 3 / 8 done
        ; line_number = 286
        ; return sine_3_8 * 3 / 8 start
        ; line_number = 286
        ;info   286, 97
        retlw   53
        ; line_number = 286
        ; return sine_3_8 * 3 / 8 done
        ; line_number = 288
        ; return sine_2_8 * 3 / 8 start
        ; line_number = 288
        ;info   288, 98
        retlw   36
        ; line_number = 288
        ; return sine_2_8 * 3 / 8 done
        ; line_number = 290
        ; return sine_1_8 * 3 / 8 start
        ; line_number = 290
        ;info   290, 99
        retlw   18
        ; line_number = 290
        ; return sine_1_8 * 3 / 8 done

        ; line_number = 293
        ; return sine_0_8 * 4 / 8 start
        ; line_number = 293
        ;info   293, 100
        retlw   0
        ; line_number = 293
        ; return sine_0_8 * 4 / 8 done
        ; line_number = 295
        ; return sine_1_8 * 4 / 8 start
        ; line_number = 295
        ;info   295, 101
        retlw   25
        ; line_number = 295
        ; return sine_1_8 * 4 / 8 done
        ; line_number = 297
        ; return sine_2_8 * 4 / 8 start
        ; line_number = 297
        ;info   297, 102
        retlw   49
        ; line_number = 297
        ; return sine_2_8 * 4 / 8 done
        ; line_number = 299
        ; return sine_3_8 * 4 / 8 start
        ; line_number = 299
        ;info   299, 103
        retlw   71
        ; line_number = 299
        ; return sine_3_8 * 4 / 8 done
        ; line_number = 301
        ; return sine_4_8 * 4 / 8 start
        ; line_number = 301
        ;info   301, 104
        retlw   90
        ; line_number = 301
        ; return sine_4_8 * 4 / 8 done
        ; line_number = 303
        ; return sine_5_8 * 4 / 8 start
        ; line_number = 303
        ;info   303, 105
        retlw   106
        ; line_number = 303
        ; return sine_5_8 * 4 / 8 done
        ; line_number = 305
        ; return sine_6_8 * 4 / 8 start
        ; line_number = 305
        ;info   305, 106
        retlw   118
        ; line_number = 305
        ; return sine_6_8 * 4 / 8 done
        ; line_number = 307
        ; return sine_7_8 * 4 / 8 start
        ; line_number = 307
        ;info   307, 107
        retlw   125
        ; line_number = 307
        ; return sine_7_8 * 4 / 8 done
        ; line_number = 309
        ; return sine_8_8 * 4 / 8 start
        ; line_number = 309
        ;info   309, 108
        retlw   127
        ; line_number = 309
        ; return sine_8_8 * 4 / 8 done
        ; line_number = 311
        ; return sine_7_8 * 4 / 8 start
        ; line_number = 311
        ;info   311, 109
        retlw   125
        ; line_number = 311
        ; return sine_7_8 * 4 / 8 done
        ; line_number = 313
        ; return sine_6_8 * 4 / 8 start
        ; line_number = 313
        ;info   313, 110
        retlw   118
        ; line_number = 313
        ; return sine_6_8 * 4 / 8 done
        ; line_number = 315
        ; return sine_5_8 * 4 / 8 start
        ; line_number = 315
        ;info   315, 111
        retlw   106
        ; line_number = 315
        ; return sine_5_8 * 4 / 8 done
        ; line_number = 317
        ; return sine_4_8 * 4 / 8 start
        ; line_number = 317
        ;info   317, 112
        retlw   90
        ; line_number = 317
        ; return sine_4_8 * 4 / 8 done
        ; line_number = 319
        ; return sine_3_8 * 4 / 8 start
        ; line_number = 319
        ;info   319, 113
        retlw   71
        ; line_number = 319
        ; return sine_3_8 * 4 / 8 done
        ; line_number = 321
        ; return sine_2_8 * 4 / 8 start
        ; line_number = 321
        ;info   321, 114
        retlw   49
        ; line_number = 321
        ; return sine_2_8 * 4 / 8 done
        ; line_number = 323
        ; return sine_1_8 * 4 / 8 start
        ; line_number = 323
        ;info   323, 115
        retlw   25
        ; line_number = 323
        ; return sine_1_8 * 4 / 8 done

        ; line_number = 326
        ; return sine_0_8 * 5 / 8 start
        ; line_number = 326
        ;info   326, 116
        retlw   0
        ; line_number = 326
        ; return sine_0_8 * 5 / 8 done
        ; line_number = 328
        ; return sine_1_8 * 5 / 8 start
        ; line_number = 328
        ;info   328, 117
        retlw   31
        ; line_number = 328
        ; return sine_1_8 * 5 / 8 done
        ; line_number = 330
        ; return sine_2_8 * 5 / 8 start
        ; line_number = 330
        ;info   330, 118
        retlw   61
        ; line_number = 330
        ; return sine_2_8 * 5 / 8 done
        ; line_number = 332
        ; return sine_3_8 * 5 / 8 start
        ; line_number = 332
        ;info   332, 119
        retlw   88
        ; line_number = 332
        ; return sine_3_8 * 5 / 8 done
        ; line_number = 334
        ; return sine_4_8 * 5 / 8 start
        ; line_number = 334
        ;info   334, 120
        retlw   112
        ; line_number = 334
        ; return sine_4_8 * 5 / 8 done
        ; line_number = 336
        ; return sine_5_8 * 5 / 8 start
        ; line_number = 336
        ;info   336, 121
        retlw   132
        ; line_number = 336
        ; return sine_5_8 * 5 / 8 done
        ; line_number = 338
        ; return sine_6_8 * 5 / 8 start
        ; line_number = 338
        ;info   338, 122
        retlw   147
        ; line_number = 338
        ; return sine_6_8 * 5 / 8 done
        ; line_number = 340
        ; return sine_7_8 * 5 / 8 start
        ; line_number = 340
        ;info   340, 123
        retlw   156
        ; line_number = 340
        ; return sine_7_8 * 5 / 8 done
        ; line_number = 342
        ; return sine_8_8 * 5 / 8 start
        ; line_number = 342
        ;info   342, 124
        retlw   159
        ; line_number = 342
        ; return sine_8_8 * 5 / 8 done
        ; line_number = 344
        ; return sine_7_8 * 5 / 8 start
        ; line_number = 344
        ;info   344, 125
        retlw   156
        ; line_number = 344
        ; return sine_7_8 * 5 / 8 done
        ; line_number = 346
        ; return sine_6_8 * 5 / 8 start
        ; line_number = 346
        ;info   346, 126
        retlw   147
        ; line_number = 346
        ; return sine_6_8 * 5 / 8 done
        ; line_number = 348
        ; return sine_5_8 * 5 / 8 start
        ; line_number = 348
        ;info   348, 127
        retlw   132
        ; line_number = 348
        ; return sine_5_8 * 5 / 8 done
        ; line_number = 350
        ; return sine_4_8 * 5 / 8 start
        ; line_number = 350
        ;info   350, 128
        retlw   112
        ; line_number = 350
        ; return sine_4_8 * 5 / 8 done
        ; line_number = 352
        ; return sine_3_8 * 5 / 8 start
        ; line_number = 352
        ;info   352, 129
        retlw   88
        ; line_number = 352
        ; return sine_3_8 * 5 / 8 done
        ; line_number = 354
        ; return sine_2_8 * 5 / 8 start
        ; line_number = 354
        ;info   354, 130
        retlw   61
        ; line_number = 354
        ; return sine_2_8 * 5 / 8 done
        ; line_number = 356
        ; return sine_1_8 * 5 / 8 start
        ; line_number = 356
        ;info   356, 131
        retlw   31
        ; line_number = 356
        ; return sine_1_8 * 5 / 8 done

        ; line_number = 359
        ; return sine_0_8 * 6 / 8 start
        ; line_number = 359
        ;info   359, 132
        retlw   0
        ; line_number = 359
        ; return sine_0_8 * 6 / 8 done
        ; line_number = 361
        ; return sine_1_8 * 6 / 8 start
        ; line_number = 361
        ;info   361, 133
        retlw   37
        ; line_number = 361
        ; return sine_1_8 * 6 / 8 done
        ; line_number = 363
        ; return sine_2_8 * 6 / 8 start
        ; line_number = 363
        ;info   363, 134
        retlw   73
        ; line_number = 363
        ; return sine_2_8 * 6 / 8 done
        ; line_number = 365
        ; return sine_3_8 * 6 / 8 start
        ; line_number = 365
        ;info   365, 135
        retlw   106
        ; line_number = 365
        ; return sine_3_8 * 6 / 8 done
        ; line_number = 367
        ; return sine_4_8 * 6 / 8 start
        ; line_number = 367
        ;info   367, 136
        retlw   135
        ; line_number = 367
        ; return sine_4_8 * 6 / 8 done
        ; line_number = 369
        ; return sine_5_8 * 6 / 8 start
        ; line_number = 369
        ;info   369, 137
        retlw   159
        ; line_number = 369
        ; return sine_5_8 * 6 / 8 done
        ; line_number = 371
        ; return sine_6_8 * 6 / 8 start
        ; line_number = 371
        ;info   371, 138
        retlw   177
        ; line_number = 371
        ; return sine_6_8 * 6 / 8 done
        ; line_number = 373
        ; return sine_7_8 * 6 / 8 start
        ; line_number = 373
        ;info   373, 139
        retlw   187
        ; line_number = 373
        ; return sine_7_8 * 6 / 8 done
        ; line_number = 375
        ; return sine_8_8 * 6 / 8 start
        ; line_number = 375
        ;info   375, 140
        retlw   191
        ; line_number = 375
        ; return sine_8_8 * 6 / 8 done
        ; line_number = 377
        ; return sine_7_8 * 6 / 8 start
        ; line_number = 377
        ;info   377, 141
        retlw   187
        ; line_number = 377
        ; return sine_7_8 * 6 / 8 done
        ; line_number = 379
        ; return sine_6_8 * 6 / 8 start
        ; line_number = 379
        ;info   379, 142
        retlw   177
        ; line_number = 379
        ; return sine_6_8 * 6 / 8 done
        ; line_number = 381
        ; return sine_5_8 * 6 / 8 start
        ; line_number = 381
        ;info   381, 143
        retlw   159
        ; line_number = 381
        ; return sine_5_8 * 6 / 8 done
        ; line_number = 383
        ; return sine_4_8 * 6 / 8 start
        ; line_number = 383
        ;info   383, 144
        retlw   135
        ; line_number = 383
        ; return sine_4_8 * 6 / 8 done
        ; line_number = 385
        ; return sine_3_8 * 6 / 8 start
        ; line_number = 385
        ;info   385, 145
        retlw   106
        ; line_number = 385
        ; return sine_3_8 * 6 / 8 done
        ; line_number = 387
        ; return sine_2_8 * 6 / 8 start
        ; line_number = 387
        ;info   387, 146
        retlw   73
        ; line_number = 387
        ; return sine_2_8 * 6 / 8 done
        ; line_number = 389
        ; return sine_1_8 * 6 / 8 start
        ; line_number = 389
        ;info   389, 147
        retlw   37
        ; line_number = 389
        ; return sine_1_8 * 6 / 8 done

        ; line_number = 392
        ; return sine_0_8 * 7 / 8 start
        ; line_number = 392
        ;info   392, 148
        retlw   0
        ; line_number = 392
        ; return sine_0_8 * 7 / 8 done
        ; line_number = 394
        ; return sine_1_8 * 7 / 8 start
        ; line_number = 394
        ;info   394, 149
        retlw   43
        ; line_number = 394
        ; return sine_1_8 * 7 / 8 done
        ; line_number = 396
        ; return sine_2_8 * 7 / 8 start
        ; line_number = 396
        ;info   396, 150
        retlw   85
        ; line_number = 396
        ; return sine_2_8 * 7 / 8 done
        ; line_number = 398
        ; return sine_3_8 * 7 / 8 start
        ; line_number = 398
        ;info   398, 151
        retlw   124
        ; line_number = 398
        ; return sine_3_8 * 7 / 8 done
        ; line_number = 400
        ; return sine_4_8 * 7 / 8 start
        ; line_number = 400
        ;info   400, 152
        retlw   157
        ; line_number = 400
        ; return sine_4_8 * 7 / 8 done
        ; line_number = 402
        ; return sine_5_8 * 7 / 8 start
        ; line_number = 402
        ;info   402, 153
        retlw   185
        ; line_number = 402
        ; return sine_5_8 * 7 / 8 done
        ; line_number = 404
        ; return sine_6_8 * 7 / 8 start
        ; line_number = 404
        ;info   404, 154
        retlw   206
        ; line_number = 404
        ; return sine_6_8 * 7 / 8 done
        ; line_number = 406
        ; return sine_7_8 * 7 / 8 start
        ; line_number = 406
        ;info   406, 155
        retlw   218
        ; line_number = 406
        ; return sine_7_8 * 7 / 8 done
        ; line_number = 408
        ; return sine_8_8 * 7 / 8 start
        ; line_number = 408
        ;info   408, 156
        retlw   223
        ; line_number = 408
        ; return sine_8_8 * 7 / 8 done
        ; line_number = 410
        ; return sine_7_8 * 7 / 8 start
        ; line_number = 410
        ;info   410, 157
        retlw   218
        ; line_number = 410
        ; return sine_7_8 * 7 / 8 done
        ; line_number = 412
        ; return sine_6_8 * 7 / 8 start
        ; line_number = 412
        ;info   412, 158
        retlw   206
        ; line_number = 412
        ; return sine_6_8 * 7 / 8 done
        ; line_number = 414
        ; return sine_5_8 * 7 / 8 start
        ; line_number = 414
        ;info   414, 159
        retlw   185
        ; line_number = 414
        ; return sine_5_8 * 7 / 8 done
        ; line_number = 416
        ; return sine_4_8 * 7 / 8 start
        ; line_number = 416
        ;info   416, 160
        retlw   157
        ; line_number = 416
        ; return sine_4_8 * 7 / 8 done
        ; line_number = 418
        ; return sine_3_8 * 7 / 8 start
        ; line_number = 418
        ;info   418, 161
        retlw   124
        ; line_number = 418
        ; return sine_3_8 * 7 / 8 done
        ; line_number = 420
        ; return sine_2_8 * 7 / 8 start
        ; line_number = 420
        ;info   420, 162
        retlw   85
        ; line_number = 420
        ; return sine_2_8 * 7 / 8 done
        ; line_number = 422
        ; return sine_1_8 * 7 / 8 start
        ; line_number = 422
        ;info   422, 163
        retlw   43
        ; line_number = 422
        ; return sine_1_8 * 7 / 8 done

        ; line_number = 425
        ; return sine_0_8 start
        ; line_number = 425
        ;info   425, 164
        retlw   0
        ; line_number = 425
        ; return sine_0_8 done
        ; line_number = 427
        ; return sine_1_8 start
        ; line_number = 427
        ;info   427, 165
        retlw   50
        ; line_number = 427
        ; return sine_1_8 done
        ; line_number = 429
        ; return sine_2_8 start
        ; line_number = 429
        ;info   429, 166
        retlw   98
        ; line_number = 429
        ; return sine_2_8 done
        ; line_number = 431
        ; return sine_3_8 start
        ; line_number = 431
        ;info   431, 167
        retlw   142
        ; line_number = 431
        ; return sine_3_8 done
        ; line_number = 433
        ; return sine_4_8 start
        ; line_number = 433
        ;info   433, 168
        retlw   180
        ; line_number = 433
        ; return sine_4_8 done
        ; line_number = 435
        ; return sine_5_8 start
        ; line_number = 435
        ;info   435, 169
        retlw   212
        ; line_number = 435
        ; return sine_5_8 done
        ; line_number = 437
        ; return sine_6_8 start
        ; line_number = 437
        ;info   437, 170
        retlw   236
        ; line_number = 437
        ; return sine_6_8 done
        ; line_number = 439
        ; return sine_7_8 start
        ; line_number = 439
        ;info   439, 171
        retlw   250
        ; line_number = 439
        ; return sine_7_8 done
        ; line_number = 441
        ; return sine_8_8 start
        ; line_number = 441
        ;info   441, 172
        retlw   255
        ; line_number = 441
        ; return sine_8_8 done
        ; line_number = 443
        ; return sine_7_8 start
        ; line_number = 443
        ;info   443, 173
        retlw   250
        ; line_number = 443
        ; return sine_7_8 done
        ; line_number = 445
        ; return sine_6_8 start
        ; line_number = 445
        ;info   445, 174
        retlw   236
        ; line_number = 445
        ; return sine_6_8 done
        ; line_number = 447
        ; return sine_5_8 start
        ; line_number = 447
        ;info   447, 175
        retlw   212
        ; line_number = 447
        ; return sine_5_8 done
        ; line_number = 449
        ; return sine_4_8 start
        ; line_number = 449
        ;info   449, 176
        retlw   180
        ; line_number = 449
        ; return sine_4_8 done
        ; line_number = 451
        ; return sine_3_8 start
        ; line_number = 451
        ;info   451, 177
        retlw   142
        ; line_number = 451
        ; return sine_3_8 done
        ; line_number = 453
        ; return sine_2_8 start
        ; line_number = 453
        ;info   453, 178
        retlw   98
        ; line_number = 453
        ; return sine_2_8 done
        ; line_number = 455
        ; return sine_1_8 start
        ; line_number = 455
        ;info   455, 179
        retlw   50
        ; line_number = 455
        ; return sine_1_8 done


sine__146:
        ; line_number = 159
        ;  switch angle done
        ; delay after procedure statements=non-uniform
        ; Exiting procedure with no return(s); infinite loop fail
sine__147:
        goto    sine__147




        ; line_number = 458
        ;info   458, 181
        ; procedure test_mode
test_mode:
        ; arguments_none
        ; line_number = 460
        ;  returns_nothing

        ; # This procedure is used for testing only.

        ; line_number = 464
        ;  local command byte
test_mode__command equ globals___0+24
        ; line_number = 465
        ;  local high byte
test_mode__high equ globals___0+25
        ; line_number = 466
        ;  local low byte
test_mode__low equ globals___0+26
        ; line_number = 467
        ;  local voltage byte
test_mode__voltage equ globals___0+27

        ; # Test 3: Verify that we can write to D/A chip:
        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:00=>00)
        ; line_number = 470
        ;  dac := 0
        ;info   470, 181
        clrf    dac
        ; line_number = 471
        ;  low := 0
        ;info   471, 182
        clrf    test_mode__low
        ; line_number = 472
        ;  high := 0
        ;info   472, 183
        clrf    test_mode__high
        ; line_number = 473
        ;  dac_update := 0
        ;info   473, 184
        clrf    dac_update
        ; line_number = 474
        ;  loop_forever start
        ;info   474, 185
test_mode__1:
        ; #ldac := 0
        ; line_number = 476
        ;  ldac := _true
        ;info   476, 185
        bsf     ldac___byte, ldac___bit
        ; line_number = 477
        ;  load := _true
        ;info   477, 186
        bsf     load___byte, load___bit
        ; line_number = 478
        ;  call _uart_byte_put('>')
        ;info   478, 187
        movlw   62
        call    _uart_byte_put
        ; line_number = 479
        ;  command := _uart_byte_get()
        ;info   479, 189
        call    _uart_byte_get
        movwf   test_mode__command
        ; line_number = 480
        ;  call _uart_byte_put(command)
        ;info   480, 191
        movf    test_mode__command,w
        call    _uart_byte_put
        ; line_number = 481
        ;  if '0' <= command && command <= '7' start
        ;info   481, 193
        movlw   48
        subwf   test_mode__command,w
        ; =>bit_code_emit@symbol(): sym=__c
        ; No 1TEST: true.size=9 false.size=1
        ; No 2TEST: true.size=9 false.size=1
        ; 2GOTO: Single test with two GOTO's
        btfss   __c___byte, __c___bit
        goto    test_mode__2
        ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
        movlw   55
        subwf   test_mode__command,w
        btfsc   __z___byte, __z___bit
        bcf     __c___byte, __c___bit
        ; =>bit_code_emit@symbol(): sym=__c
        ; No 1TEST: true.size=0 false.size=3
        ; No 2TEST: true.size=0 false.size=3
        ; 1GOTO: Single test with GOTO
        btfsc   __c___byte, __c___bit
        goto    test_mode__3
        ; # Select a channel:
        ; line_number = 483
        ;  dac := command - '0'
        ;info   483, 203
        movlw   208
        addwf   test_mode__command,w
        movwf   dac
test_mode__3:
test_mode__2:
        ; Recombine code1_bit_states != code2_bit_states
        ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:00=>00)
        ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
        ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295
        ; Recombine code1_bit_states != code2_bit_states
        ; 2GOTO: No goto needed; true= false=test_mode__2 true_size=9 false_size=1
        ; 2GOTO: code1 final bitstates:(data:00=>00 code:00=>00)
        ; 2GOTO: code2 final bitstates:(data:XX=>XX code:00=>00)
        ; 2GOTO: code final bitstates:(data:00=>00 code:00=>00)
        ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:00=>00)
        ; line_number = 481
        ;  if '0' <= command && command <= '7' done
        ; line_number = 484
        ; if 'a' <= command && command <= 'p' start
        ;info   484, 206
        movlw   97
        subwf   test_mode__command,w
        ; =>bit_code_emit@symbol(): sym=__c
        ; No 1TEST: true.size=9 false.size=1
        ; No 2TEST: true.size=9 false.size=1
        ; 2GOTO: Single test with two GOTO's
        btfss   __c___byte, __c___bit
        goto    test_mode__4
        ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
        movlw   112
        subwf   test_mode__command,w
        btfsc   __z___byte, __z___bit
        bcf     __c___byte, __c___bit
        ; =>bit_code_emit@symbol(): sym=__c
        ; No 1TEST: true.size=0 false.size=3
        ; No 2TEST: true.size=0 false.size=3
        ; 1GOTO: Single test with GOTO
        btfsc   __c___byte, __c___bit
        goto    test_mode__5
        ; line_number = 485
        ; low := command - 'a'
        ;info   485, 216
        movlw   159
        addwf   test_mode__command,w
        movwf   test_mode__low
test_mode__5:
test_mode__4:
        ; Recombine code1_bit_states != code2_bit_states
        ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:00=>00)
        ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
        ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295
        ; Recombine code1_bit_states != code2_bit_states
        ; 2GOTO: No goto needed; true= false=test_mode__4 true_size=9 false_size=1
        ; 2GOTO: code1 final bitstates:(data:00=>00 code:00=>00)
        ; 2GOTO: code2 final bitstates:(data:XX=>XX code:00=>00)
        ; 2GOTO: code final bitstates:(data:00=>00 code:00=>00)
        ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:00=>00)
        ; line_number = 484
        ; if 'a' <= command && command <= 'p' done
        ; line_number = 486
        ; if 'A' <= command && command <= 'P' start
        ;info   486, 219
        movlw   65
        subwf   test_mode__command,w
        ; =>bit_code_emit@symbol(): sym=__c
        ; No 1TEST: true.size=9 false.size=1
        ; No 2TEST: true.size=9 false.size=1
        ; 2GOTO: Single test with two GOTO's
        btfss   __c___byte, __c___bit
        goto    test_mode__6
        ; &&||: index=1 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
        movlw   80
        subwf   test_mode__command,w
        btfsc   __z___byte, __z___bit
        bcf     __c___byte, __c___bit
        ; =>bit_code_emit@symbol(): sym=__c
        ; No 1TEST: true.size=0 false.size=3
        ; No 2TEST: true.size=0 false.size=3
        ; 1GOTO: Single test with GOTO
        btfsc   __c___byte, __c___bit
        goto    test_mode__7
        ; # Set a voltage:
        ; line_number = 488
        ;  high := command - 'A'
        ;info   488, 229
        movlw   191
        addwf   test_mode__command,w
        movwf   test_mode__high
test_mode__7:
test_mode__6:
        ; Recombine code1_bit_states != code2_bit_states
        ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:00=>00)
        ; &&||: index=0 true_delay=4294967295 false_delay=4294967295 goto_delay=4294967295
        ; &&||:: index=0 new_delay=4294967295 goto_delay=4294967295
        ; Recombine code1_bit_states != code2_bit_states
        ; 2GOTO: No goto needed; true= false=test_mode__6 true_size=9 false_size=1
        ; 2GOTO: code1 final bitstates:(data:00=>00 code:00=>00)
        ; 2GOTO: code2 final bitstates:(data:XX=>XX code:00=>00)
        ; 2GOTO: code final bitstates:(data:00=>00 code:00=>00)
        ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:00=>00)
        ; line_number = 486
        ; if 'A' <= command && command <= 'P' done
        ; line_number = 489
        ; if command = 's' start
        ;info   489, 232
        ; Left minus Right
        movlw   141
        addwf   test_mode__command,w
        ; =>bit_code_emit@symbol(): sym=__z
        ; No 1TEST: true.size=23 false.size=0
        ; No 2TEST: true.size=23 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   __z___byte, __z___bit
        goto    test_mode__11
        ; # Set voltage:
        ; line_number = 491
        ;  call _uart_crlf_put()
        ;info   491, 236
        call    _uart_crlf_put
        ; line_number = 492
        ;  voltage := (high << 4) | low
        ;info   492, 237
test_mode__8 equ globals___0+38
        swapf   test_mode__high,w
        andlw   240
        iorwf   test_mode__low,w
        movwf   test_mode__voltage

        ; line_number = 494
        ;  call _uart_hex_put(dac)
        ;info   494, 241
        movf    dac,w
        call    _uart_hex_put
        ; line_number = 495
        ;  call _uart_hex_put(voltage)
        ;info   495, 243
        movf    test_mode__voltage,w
        call    _uart_hex_put
        ; line_number = 496
        ;  call _uart_space_put()
        ;info   496, 245
        call    _uart_space_put

        ; # Select the DAC to output to:
        ; line_number = 499
        ;  call spi_send(dac << 1)
        ;info   499, 246
test_mode__9 equ globals___0+38
        rlf     dac,w
        andlw   254
        call    spi_send
        ; line_number = 500
        ;  call spi_send(voltage)
        ;info   500, 249
        movf    test_mode__voltage,w
        call    spi_send

        ; # Wait until the command is finished sending:
        ; line_number = 503
        ;  while !_bf start
test_mode__10:
        ;info   503, 251
        ; =>bit_code_emit@symbol(): sym=_bf
        ; 1TEST: Single test with code in skip slot
        bsf     __rp0___byte, __rp0___bit
        btfss   _bf___byte, _bf___bit
        ; line_number = 504
        ; do_nothing
        ;info   504, 253

        goto    test_mode__10
        ; Recombine size1 = 0 || size2 = 0
        ; <=bit_code_emit@symbol; sym=_bf (data:00=>01 code:00=>00)
        ; line_number = 503
        ;  while !_bf done
        ; # Load the command into the DAC chip:
        ; line_number = 507
        ;  load := _false
        ;info   507, 254
        bcf     __rp0___byte, __rp0___bit
        bcf     load___byte, load___bit
        ; line_number = 508
        ;  load := _true
        ;info   508, 256
        bsf     load___byte, load___bit

        ; # Force the DAC values out:
        ; line_number = 511
        ;  ldac := _false
        ;info   511, 257
        bcf     ldac___byte, ldac___bit
        ; line_number = 512
        ;  ldac := _true
        ;info   512, 258
        bsf     ldac___byte, ldac___bit
        ; Recombine size1 = 0 || size2 = 0
test_mode__11:
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:00=>00)
        ; line_number = 489
        ; if command = 's' done
        ; line_number = 513
        ; if command = 't' start
        ;info   513, 259
        ; Left minus Right
        movlw   140
        addwf   test_mode__command,w
        ; =>bit_code_emit@symbol(): sym=__z
        ; No 1TEST: true.size=28 false.size=0
        ; No 2TEST: true.size=28 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   __z___byte, __z___bit
        goto    test_mode__12
        ; line_number = 514
        ; call _uart_byte_put('s')
        ;info   514, 263
        movlw   115
        call    _uart_byte_put
        ; line_number = 515
        ;  call _uart_hex_put(_sspstat)
        ;info   515, 265
        bsf     __rp0___byte, __rp0___bit
        movf    _sspstat,w
        bcf     __rp0___byte, __rp0___bit
        call    _uart_hex_put
        ; line_number = 516
        ;  call _uart_hex_put(_sspcon)
        ;info   516, 269
        movf    _sspcon,w
        call    _uart_hex_put
        ; line_number = 517
        ;  call _uart_byte_put('t')
        ;info   517, 271
        movlw   116
        call    _uart_byte_put
        ; line_number = 518
        ;  call _uart_hex_put(_trisa)
        ;info   518, 273
        bsf     __rp0___byte, __rp0___bit
        movf    _trisa,w
        bcf     __rp0___byte, __rp0___bit
        call    _uart_hex_put
        ; line_number = 519
        ;  call _uart_hex_put(_trisc)
        ;info   519, 277
        bsf     __rp0___byte, __rp0___bit
        movf    _trisc,w
        bcf     __rp0___byte, __rp0___bit
        call    _uart_hex_put
        ; line_number = 520
        ;  call _uart_byte_put('m')
        ;info   520, 281
        movlw   109
        call    _uart_byte_put
        ; line_number = 521
        ;  call _uart_hex_put(_tmr0)
        ;info   521, 283
        movf    _tmr0,w
        call    _uart_hex_put
        ; line_number = 522
        ;  call _uart_hex_put(_option_reg)
        ;info   522, 285
        bsf     __rp0___byte, __rp0___bit
        movf    _option_reg,w
        bcf     __rp0___byte, __rp0___bit
        call    _uart_hex_put
        ; line_number = 523
        ;  call _uart_hex_put(_intcon)
        ;info   523, 289
        movf    _intcon,w
        call    _uart_hex_put
        ; Recombine size1 = 0 || size2 = 0
test_mode__12:
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:00=>00)
        ; line_number = 513
        ; if command = 't' done
        ; line_number = 524
        ; if command = 'T' start
        ;info   524, 291
        ; Left minus Right
        movlw   172
        addwf   test_mode__command,w
        ; =>bit_code_emit@symbol(): sym=__z
        ; No 1TEST: true.size=10 false.size=0
        ; No 2TEST: true.size=10 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   __z___byte, __z___bit
        goto    test_mode__13
        ; line_number = 525
        ; call _uart_byte_put('d')
        ;info   525, 295
        movlw   100
        call    _uart_byte_put
        ; line_number = 526
        ;  call _uart_hex_put(port_d)
        ;info   526, 297
        movf    port_d,w
        call    _uart_hex_put
        ; line_number = 527
        ;  call _uart_byte_put('_')
        ;info   527, 299
        movlw   36
        call    _uart_byte_put
        ; line_number = 528
        ;  call _uart_byte_put('d')
        ;info   528, 301
        movlw   100
        call    _uart_byte_put
        ; line_number = 529
        ;  call _uart_hex_put(_portd)
        ;info   529, 303
        movf    _portd,w
        call    _uart_hex_put
        ; Recombine size1 = 0 || size2 = 0
test_mode__13:
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:00=>00)
        ; line_number = 524
        ; if command = 'T' done
        ; line_number = 530
        ; if command = 'u' start
        ;info   530, 305
        ; Left minus Right
        movlw   139
        addwf   test_mode__command,w
        ; =>bit_code_emit@symbol(): sym=__z
        ; No 1TEST: true.size=4 false.size=0
        ; No 2TEST: true.size=4 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   __z___byte, __z___bit
        goto    test_mode__15
        ; line_number = 531
        ; _portd := (high << 4) | low
        ;info   531, 309
test_mode__14 equ globals___0+38
        swapf   test_mode__high,w
        andlw   240
        iorwf   test_mode__low,w
        movwf   _portd
        ; Recombine size1 = 0 || size2 = 0
test_mode__15:
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:00=>00)
        ; line_number = 530
        ; if command = 'u' done
        ; line_number = 532
        ; if command = 'U' start
        ;info   532, 313
        ; Left minus Right
        movlw   171
        addwf   test_mode__command,w
        ; =>bit_code_emit@symbol(): sym=__z
        ; No 1TEST: true.size=4 false.size=0
        ; No 2TEST: true.size=4 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   __z___byte, __z___bit
        goto    test_mode__17
        ; line_number = 533
        ; port_d := (high << 4) | low
        ;info   533, 317
test_mode__16 equ globals___0+38
        swapf   test_mode__high,w
        andlw   240
        iorwf   test_mode__low,w
        movwf   port_d
        ; Recombine size1 = 0 || size2 = 0
test_mode__17:
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:00=>00)
        ; line_number = 532
        ; if command = 'U' done
        ; line_number = 534
        ; if command = 'v' start
        ;info   534, 321
        ; Left minus Right
        movlw   138
        addwf   test_mode__command,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    test_mode__18
        ; line_number = 535
        ; _gie := _true
        ;info   535, 325
        bsf     _gie___byte, _gie___bit
        ; line_number = 536
        ;  _tmr0ie := _true
        ;info   536, 326
        bsf     _tmr0ie___byte, _tmr0ie___bit
        ; Recombine size1 = 0 || size2 = 0
test_mode__18:
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:00=>00)
        ; line_number = 534
        ; if command = 'v' done
        ; line_number = 537
        ; if command = 'V' start
        ;info   537, 327
        ; Left minus Right
        movlw   170
        addwf   test_mode__command,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    test_mode__19
        ; line_number = 538
        ; _gie := _false
        ;info   538, 331
        bcf     _gie___byte, _gie___bit
        ; line_number = 539
        ;  _tmr0ie := _false
        ;info   539, 332
        bcf     _tmr0ie___byte, _tmr0ie___bit
        ; Recombine size1 = 0 || size2 = 0
test_mode__19:
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:00=>00)
        ; line_number = 537
        ; if command = 'V' done
        ; line_number = 540
        ; if command = 'w' start
        ;info   540, 333
        ; Left minus Right
        movlw   137
        addwf   test_mode__command,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    test_mode__20
        ; line_number = 541
        ; a_angle := a_angle + a_amount
        ;info   541, 337
        movf    a_amount,w
        addwf   a_angle,f
        ; line_number = 542
        ;  a_dac_update := _true
        ;info   542, 339
        bsf     a_dac_update___byte, a_dac_update___bit
        ; Recombine size1 = 0 || size2 = 0
test_mode__20:
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:00=>00)
        ; line_number = 540
        ; if command = 'w' done
        ; line_number = 543
        ; if command = 'W' start
        ;info   543, 340
        ; Left minus Right
        movlw   169
        addwf   test_mode__command,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    test_mode__21
        ; line_number = 544
        ; a_angle := a_angle - a_amount
        ;info   544, 344
        movf    a_amount,w
        subwf   a_angle,f
        ; line_number = 545
        ;  a_dac_update := _true
        ;info   545, 346
        bsf     a_dac_update___byte, a_dac_update___bit
        ; Recombine size1 = 0 || size2 = 0
test_mode__21:
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:00=>00)
        ; line_number = 543
        ; if command = 'W' done
        ; line_number = 546
        ; if command = 'x' start
        ;info   546, 347
        ; Left minus Right
        movlw   136
        addwf   test_mode__command,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    test_mode__22
        ; line_number = 547
        ; x_angle := x_angle + x_amount
        ;info   547, 351
        movf    x_amount,w
        addwf   x_angle,f
        ; line_number = 548
        ;  x_dac_update := _true
        ;info   548, 353
        bsf     x_dac_update___byte, x_dac_update___bit
        ; Recombine size1 = 0 || size2 = 0
test_mode__22:
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:00=>00)
        ; line_number = 546
        ; if command = 'x' done
        ; line_number = 549
        ; if command = 'X' start
        ;info   549, 354
        ; Left minus Right
        movlw   168
        addwf   test_mode__command,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    test_mode__23
        ; line_number = 550
        ; x_angle := x_angle - x_amount
        ;info   550, 358
        movf    x_amount,w
        subwf   x_angle,f
        ; line_number = 551
        ;  x_dac_update := _true
        ;info   551, 360
        bsf     x_dac_update___byte, x_dac_update___bit
        ; Recombine size1 = 0 || size2 = 0
test_mode__23:
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:00=>00)
        ; line_number = 549
        ; if command = 'X' done
        ; line_number = 552
        ; if command = 'y' start
        ;info   552, 361
        ; Left minus Right
        movlw   135
        addwf   test_mode__command,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    test_mode__24
        ; line_number = 553
        ; y_angle := y_angle + y_amount
        ;info   553, 365
        movf    y_amount,w
        addwf   y_angle,f
        ; line_number = 554
        ;  y_dac_update := _true
        ;info   554, 367
        bsf     y_dac_update___byte, y_dac_update___bit
        ; Recombine size1 = 0 || size2 = 0
test_mode__24:
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:00=>00)
        ; line_number = 552
        ; if command = 'y' done
        ; line_number = 555
        ; if command = 'Y' start
        ;info   555, 368
        ; Left minus Right
        movlw   167
        addwf   test_mode__command,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    test_mode__25
        ; line_number = 556
        ; y_angle := y_angle - y_amount
        ;info   556, 372
        movf    y_amount,w
        subwf   y_angle,f
        ; line_number = 557
        ;  y_dac_update := _true
        ;info   557, 374
        bsf     y_dac_update___byte, y_dac_update___bit
        ; Recombine size1 = 0 || size2 = 0
test_mode__25:
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:00=>00)
        ; line_number = 555
        ; if command = 'Y' done
        ; line_number = 558
        ; if command = 'z' start
        ;info   558, 375
        ; Left minus Right
        movlw   134
        addwf   test_mode__command,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    test_mode__26
        ; line_number = 559
        ; z_angle := z_angle + z_amount
        ;info   559, 379
        movf    z_amount,w
        addwf   z_angle,f
        ; line_number = 560
        ;  z_dac_update := _true
        ;info   560, 381
        bsf     z_dac_update___byte, z_dac_update___bit
        ; Recombine size1 = 0 || size2 = 0
test_mode__26:
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:00=>00)
        ; line_number = 558
        ; if command = 'z' done
        ; line_number = 561
        ; if command = 'Z' start
        ;info   561, 382
        ; Left minus Right
        movlw   166
        addwf   test_mode__command,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    test_mode__27
        ; line_number = 562
        ; z_angle := z_angle - z_amount
        ;info   562, 386
        movf    z_amount,w
        subwf   z_angle,f
        ; line_number = 563
        ;  z_dac_update := _true
        ;info   563, 388
        bsf     z_dac_update___byte, z_dac_update___bit
        ; Recombine size1 = 0 || size2 = 0
test_mode__27:
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:00=>00)
        ; line_number = 561
        ; if command = 'Z' done
        ; line_number = 564
        ; call _uart_crlf_put()
        ;info   564, 389
        call    _uart_crlf_put

        ; # This is the code that forces the DAC's to be updated:
        ; line_number = 567
        ;  if dac_update != 0 start
        ;info   567, 390
        ; Left minus Right
        movf    dac_update,w
        ; =>bit_code_emit@symbol(): sym=__z
        ; No 1TEST: true.size=0 false.size=54
        ; No 2TEST: true.size=0 false.size=54
        ; 1GOTO: Single test with GOTO
        btfsc   __z___byte, __z___bit
        goto    test_mode__32
        ; line_number = 568
        ; if a_dac_update start
        ;info   568, 393
        ; =>bit_code_emit@symbol(): sym=a_dac_update
        ; No 1TEST: true.size=11 false.size=0
        ; No 2TEST: true.size=11 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   a_dac_update___byte, a_dac_update___bit
        goto    test_mode__28
        ; line_number = 569
        ; a_dac_update := _false
        ;info   569, 395
        bcf     a_dac_update___byte, a_dac_update___bit
        ; line_number = 570
        ;  a_mask := dac_setup(a_angle, a_strength, 0) << 4
        ;info   570, 396
        movf    a_angle,w
        movwf   dac_setup__angle
        movf    a_strength,w
        movwf   dac_setup__strength
        movlw   0
        call    dac_setup
        movwf   a_mask
        swapf   a_mask,f
        movlw   240
        andwf   a_mask,f
        ; Recombine size1 = 0 || size2 = 0
test_mode__28:
        ; <=bit_code_emit@symbol; sym=a_dac_update (data:00=>00 code:00=>00)
        ; line_number = 568
        ; if a_dac_update done
        ; line_number = 571
        ; if z_dac_update start
        ;info   571, 406
        ; =>bit_code_emit@symbol(): sym=z_dac_update
        ; No 1TEST: true.size=8 false.size=0
        ; No 2TEST: true.size=8 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   z_dac_update___byte, z_dac_update___bit
        goto    test_mode__29
        ; line_number = 572
        ; z_dac_update := _false
        ;info   572, 408
        bcf     z_dac_update___byte, z_dac_update___bit
        ; line_number = 573
        ;  z_mask := dac_setup(z_angle, z_strength, 2)
        ;info   573, 409
        movf    z_angle,w
        movwf   dac_setup__angle
        movf    z_strength,w
        movwf   dac_setup__strength
        movlw   2
        call    dac_setup
        movwf   z_mask
        ; Recombine size1 = 0 || size2 = 0
test_mode__29:
        ; <=bit_code_emit@symbol; sym=z_dac_update (data:00=>00 code:00=>00)
        ; line_number = 571
        ; if z_dac_update done
        ; line_number = 574
        ; if y_dac_update start
        ;info   574, 416
        ; =>bit_code_emit@symbol(): sym=y_dac_update
        ; No 1TEST: true.size=11 false.size=0
        ; No 2TEST: true.size=11 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   y_dac_update___byte, y_dac_update___bit
        goto    test_mode__30
        ; line_number = 575
        ; y_dac_update := _false
        ;info   575, 418
        bcf     y_dac_update___byte, y_dac_update___bit
        ; line_number = 576
        ;  y_mask := dac_setup(y_angle, y_strength, 4) << 4
        ;info   576, 419
        movf    y_angle,w
        movwf   dac_setup__angle
        movf    y_strength,w
        movwf   dac_setup__strength
        movlw   4
        call    dac_setup
        movwf   y_mask
        swapf   y_mask,f
        movlw   240
        andwf   y_mask,f
        ; Recombine size1 = 0 || size2 = 0
test_mode__30:
        ; <=bit_code_emit@symbol; sym=y_dac_update (data:00=>00 code:00=>00)
        ; line_number = 574
        ; if y_dac_update done
        ; line_number = 577
        ; if x_dac_update start
        ;info   577, 429
        ; =>bit_code_emit@symbol(): sym=x_dac_update
        ; No 1TEST: true.size=8 false.size=0
        ; No 2TEST: true.size=8 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   x_dac_update___byte, x_dac_update___bit
        goto    test_mode__31
        ; line_number = 578
        ; x_dac_update := _false
        ;info   578, 431
        bcf     x_dac_update___byte, x_dac_update___bit
        ; line_number = 579
        ;  x_mask := dac_setup(x_angle, z_strength, 6)
        ;info   579, 432
        movf    x_angle,w
        movwf   dac_setup__angle
        movf    z_strength,w
        movwf   dac_setup__strength
        movlw   6
        call    dac_setup
        movwf   x_mask
        ; Recombine size1 = 0 || size2 = 0
test_mode__31:
        ; <=bit_code_emit@symbol; sym=x_dac_update (data:00=>00 code:00=>00)
        ; line_number = 577
        ; if x_dac_update done
        ; line_number = 580
        ; port_b := a_mask | z_mask
        ;info   580, 439
        movf    a_mask,w
        iorwf   z_mask,w
        movwf   port_b
        ; line_number = 581
        ;  port_d := y_mask | x_mask
        ;info   581, 442
        movf    y_mask,w
        iorwf   x_mask,w
        movwf   port_d

        ; #call _uart_byte_put('b')
        ; #call _uart_hex_put(port_b)
        ; #call _uart_byte_put('d')
        ; #call _uart_hex_put(port_d)

        ; # Force the DAC values out:
        ; line_number = 589
        ;  ldac := _false
        ;info   589, 445
        bcf     ldac___byte, ldac___bit
        ; line_number = 590
        ;  ldac := _true
        ;info   590, 446
        bsf     ldac___byte, ldac___bit


test_mode__32:
        ; Recombine size1 = 0 || size2 = 0
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:00=>00)
        ; line_number = 567
        ;  if dac_update != 0 done
        ; line_number = 474
        ;  loop_forever wrap-up
        goto    test_mode__1
        ; line_number = 474
        ;  loop_forever done
        ; delay after procedure statements=non-uniform




        ; line_number = 593
        ;info   593, 448
        ; procedure main
main:
        ; Initialize some registers
        clrf    _adcon0
        movlw   15
        bsf     __rp0___byte, __rp0___bit
        movwf   _adcon1
        movlw   63
        movwf   _trisa
        clrf    _trisb
        movlw   129
        movwf   _trisc
        clrf    _trisd
        movlw   3
        movwf   _trise
        ; arguments_none
        ; line_number = 595
        ;  returns_nothing

        ; # Turn off general interrupts:
        ; before procedure statements delay=non-uniform, bit states=(data:00=>01 code:00=>00)
        ; line_number = 598
        ;  _gie := _false
        ;info   598, 460
        bcf     _gie___byte, _gie___bit

        ; # The {strobe} line is actually an output.  It *must* be
        ; # left high pretty much all the time.  It only gets strobed
        ; # low for small number of cycles (currently 4uS) every
        ; # 1/{refresh_rate}'th  of a second.  If {strobe} is left
        ; # low for an extended period of time, it simply turns on
        ; # the H-bridges and overrides the current limit detection
        ; # circuitry.  This can cause the H-bridges to burn out.
        ; # I know this from very painful experience.  The solution is to
        ; # define {strobe} as a input and then switch it over to being
        ; # an output in the initialization code:

        ; # Step 1: Set {strobe} high first:
        ; line_number = 612
        ;  strobe := _true
        ;info   612, 461
        bcf     __rp0___byte, __rp0___bit
        bsf     strobe___byte, strobe___bit
        ; # Step 2: Set {_portb} and {_portd} to 0 so that the H-bridges are
        ; # set not to conduct any current even if they are turned on.
        ; line_number = 615
        ;  _portb := 0
        ;info   615, 463
        clrf    _portb
        ; line_number = 616
        ;  _portd := 0
        ;info   616, 464
        clrf    _portd
        ; # Step 3: Enable {strobe} as an output by setting {_trisc}@0 to 0:
        ; line_number = 618
        ;  _trisc@0 := _false
        ;info   618, 465
main__select__1___byte equ _trisc
main__select__1___bit equ 0
        bsf     __rp0___byte, __rp0___bit
        bcf     main__select__1___byte, main__select__1___bit

        ; # Initilize serial port:

        ; # Do Baud Rate selection and asynch. serial port enable:
        ; # Prescaler = low:
        ; line_number = 624
        ;  _brgh := _true
        ;info   624, 467
        bsf     _brgh___byte, _brgh___bit
        ; # Baud rate = 19200 Baud:
        ; line_number = 626
        ;  _spbrg := 64
        ;info   626, 468
        movlw   64
        movwf   _spbrg
        ; # Asynchronous mode:
        ; line_number = 628
        ;  _sync := _false
        ;info   628, 470
        bcf     _sync___byte, _sync___bit
        ; # Serial port enable:
        ; line_number = 630
        ;  _spen := _true
        ;info   630, 471
        bcf     __rp0___byte, __rp0___bit
        bsf     _spen___byte, _spen___bit
        ; line_number = 631
        ;  _txif := _false
        ;info   631, 473
        bcf     _txif___byte, _txif___bit

        ; # Enable the transmitter:
        ; # 8-bit mode:
        ; line_number = 635
        ;  _tx9 := _false
        ;info   635, 474
        bsf     __rp0___byte, __rp0___bit
        bcf     _tx9___byte, _tx9___bit
        ; # Enable transmitter:
        ; line_number = 637
        ;  _txen := _true
        ;info   637, 476
        bsf     _txen___byte, _txen___bit

        ; # Enable the receiver:
        ; # 8-bit mode:
        ; line_number = 641
        ;  _rx9 := _false
        ;info   641, 477
        bcf     __rp0___byte, __rp0___bit
        bcf     _rx9___byte, _rx9___bit
        ; # Disable address:
        ; line_number = 643
        ;  _adden := _false
        ;info   643, 479
        bcf     _adden___byte, _adden___bit
        ; # Continuous receive enable:
        ; line_number = 645
        ;  _cren := _true
        ;info   645, 480
        bsf     _cren___byte, _cren___bit
        ; # Serial receive enable:
        ; line_number = 647
        ;  _sren := _true
        ;info   647, 481
        bsf     _sren___byte, _sren___bit

        ; # Test 1: Say "Hi!":
        ; #loop_forever
        ; #	call _uart_byte_put('H')
        ; #	call _uart_byte_put('i')
        ; #	call _uart_byte_put('!')
        ; #	call _uart_crlf_put()

        ; # Test 2: Double Echo:
        ; #loop_forever
        ; #	dac := _uart_byte_get()
        ; #	call _uart_byte_put(dac)
        ; #	call _uart_byte_put(dac)

        ; # Initialize TMR0:
        ; # Set OPTION_REG<2:0> to {tmr0_prescale_power}:
        ; line_number = 664
        ;  _option_reg := tmr0_prescale_power
        ;info   664, 482
        bsf     __rp0___byte, __rp0___bit
        clrf    _option_reg
        ; # Prescaler assigned to TMR0 module
        ; line_number = 666
        ;  _psa := _false
        ;info   666, 484
        bcf     _psa___byte, _psa___bit
        ; # TMR0 runs of system clock
        ; line_number = 668
        ;  _t0cs := _false
        ;info   668, 485
        bcf     _t0cs___byte, _t0cs___bit

        ; # The synchronous serial port can be run in master mode at three
        ; # different clock rates:
        ; #
        ; #    Fosc/4 - SSPM<3:0> = 0000   = 5MHz @ Fosc=20MHz
        ; #    Fosc/16 - SSPM<3:0> = 0001  = 1.25MHz @ Fosc=20MHz
        ; #    Fosc/64 - SSPM<3:0> = 0010  = .3125MHz @ Fosc=20Mhz
        ; #
        ; # Technically, the specifications for the TLC5628 8-channel DAC
        ; # specify the following:
        ; #
        ; #    Maximum clock rate = 1 MHz suggesting Fosc/64
        ; #    Minimum setup times = 50ns sugessing Fosc/16
        ; #    Mininum pulse widths = 250ns suggesting Fosc/16
        ; #
        ; # In practice, everything seems to work just fine with Fosc/4.
        ; # Go figure.

        ; # Initialize {_sspcon}:
        ; line_number = 688
        ;  _sspcon := 0
        ;info   688, 486
        bcf     __rp0___byte, __rp0___bit
        clrf    _sspcon
        ; # Transmit on idle to active:
        ; line_number = 690
        ;  _cke := _false
        ;info   690, 488
        bsf     __rp0___byte, __rp0___bit
        bcf     _cke___byte, _cke___bit

        ; # Initialize {_sspstat}:
        ; line_number = 693
        ;  _sspstat := 0
        ;info   693, 490
        clrf    _sspstat
        ; # Idle SCK is low:
        ; line_number = 695
        ;  _ckp := _false
        ;info   695, 491
        bcf     __rp0___byte, __rp0___bit
        bcf     _ckp___byte, _ckp___bit
        ; # Ensure that SDO is an output:
        ; line_number = 697
        ;  _trisc5 := _false
        ;info   697, 493
        bsf     __rp0___byte, __rp0___bit
        bcf     _trisc5___byte, _trisc5___bit
        ; # Ensure that SCK is an output:
        ; line_number = 699
        ;  _trisc3 := _false
        ;info   699, 495
        bcf     _trisc3___byte, _trisc3___bit
        ; # {load} is active low, so it idles at high:
        ; line_number = 701
        ;  load := _true
        ;info   701, 496
        bcf     __rp0___byte, __rp0___bit
        bsf     load___byte, load___bit
        ; # {ldac} is active low, so it idles at high:
        ; line_number = 703
        ;  ldac := _true
        ;info   703, 498
        bsf     ldac___byte, ldac___bit
        ; # Enable Synchronous Serial Port:
        ; line_number = 705
        ;  _sspen := _true
        ;info   705, 499
        bsf     _sspen___byte, _sspen___bit

        ; # The _bf (buffer full) bit is read-only and it initializes to 0.
        ; # We need to get it set.  This is done by causing the synchronous
        ; # serial port to write (and read) 8 bits:
        ; line_number = 710
        ;  _sspbuf := 0
        ;info   710, 500
        clrf    _sspbuf
        ; # In about 8 cycles {_bf} should be 1:

        ; # Now initialize the axis angles:
        ; line_number = 714
        ;  a_angle := 0
        ;info   714, 501
        clrf    a_angle
        ; line_number = 715
        ;  x_angle := 0
        ;info   715, 502
        clrf    x_angle
        ; line_number = 716
        ;  y_angle := 0
        ;info   716, 503
        clrf    y_angle
        ; line_number = 717
        ;  z_angle := 0
        ;info   717, 504
        clrf    z_angle

        ; # Now intiialize the axis offsets:
        ; # 1 = 11.25 degrees
        ; # 2 = 22.5 degrees
        ; # 4 = 45 degrees (Half Step)
        ; # 8 = 90 degrees (Wave Step)
        ; line_number = 724
        ;  a_amount := 1
        ;info   724, 505
        movlw   1
        movwf   a_amount
        ; line_number = 725
        ;  x_amount := 1
        ;info   725, 507
        movlw   1
        movwf   x_amount
        ; line_number = 726
        ;  y_amount := 1
        ;info   726, 509
        movlw   1
        movwf   y_amount
        ; line_number = 727
        ;  z_amount := 1
        ;info   727, 511
        movlw   1
        movwf   z_amount

        ; # Clear any previous states:
        ; line_number = 730
        ;  a_step_previous := _false
        ;info   730, 513
        bcf     a_step_previous___byte, a_step_previous___bit
        ; line_number = 731
        ;  x_step_previous := _false
        ;info   731, 514
        bcf     x_step_previous___byte, x_step_previous___bit
        ; line_number = 732
        ;  y_step_previous := _false
        ;info   732, 515
        bcf     y_step_previous___byte, y_step_previous___bit
        ; line_number = 733
        ;  z_step_previous := _false
        ;info   733, 516
        bcf     z_step_previous___byte, z_step_previous___bit
        ; line_number = 734
        ;  dac_update := 0
        ;info   734, 517
        clrf    dac_update

        ; # Clear out the mask values:
        ; line_number = 737
        ;  a_mask := 0
        ;info   737, 518
        clrf    a_mask
        ; line_number = 738
        ;  x_mask := 0
        ;info   738, 519
        clrf    x_mask
        ; line_number = 739
        ;  y_mask := 0
        ;info   739, 520
        clrf    y_mask
        ; line_number = 740
        ;  z_mask := 0
        ;info   740, 521
        clrf    z_mask

        ; # Set the initial strength values:
        ; line_number = 743
        ;  a_strength := 0x70
        ;info   743, 522
        movlw   112
        movwf   a_strength
        ; line_number = 744
        ;  x_strength := 0x70
        ;info   744, 524
        movlw   112
        movwf   x_strength
        ; line_number = 745
        ;  y_strength := 0x70
        ;info   745, 526
        movlw   112
        movwf   y_strength
        ; line_number = 746
        ;  z_strength := 0x70
        ;info   746, 528
        movlw   112
        movwf   z_strength

        ; # This causes us to enter test mode:
        ; line_number = 749
        ;  call test_mode()
        ;info   749, 530
        call    test_mode


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




        ; line_number = 752
        ;info   752, 532
        ; procedure step_check
step_check:
        ; arguments_none
        ; line_number = 754
        ;  returns_nothing

        ; # This procedure is reponsible for checking to see whether
        ; # a step pulse occurred.

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


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




        ; line_number = 762
        ;info   762, 533
        ; procedure dac_setup
dac_setup:
        ; Last argument is sitting in W; save into argument variable
        movwf   dac_setup__dac_base
        ; delay=4294967295
        ; line_number = 763
        ; argument angle byte
dac_setup__angle equ globals___0+29
        ; line_number = 764
        ; argument strength byte
dac_setup__strength equ globals___0+30
        ; line_number = 765
        ; argument dac_base byte
dac_setup__dac_base equ globals___0+31
        ; line_number = 766
        ;  returns byte

        ; # This procedure will send the appropriate DAC value for {angle}
        ; # out the two DAC channels numbered {dac_base} and {dac_base}+1.
        ; # The  returned value is used to set the direction of both H-bridge
        ; # coils.

        ; line_number = 773
        ;  local result byte
dac_setup__result equ globals___0+28

        ; #call _uart_byte_put('a')
        ; #call _uart_hex_put(angle)
        ; #call _uart_byte_put('d')
        ; #call _uart_hex_put(dac_base)

        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:00=>00)
        ; line_number = 780
        ;  result := dac_helper(angle, strength, dac_base) | dac_helper(angle + 8, strength, dac_base + 1) << 2 
        ;info   780, 534
dac_setup__1 equ globals___0+39
        movf    dac_setup__angle,w
        movwf   dac_helper__angle
        movf    dac_setup__strength,w
        movwf   dac_helper__strength
        movf    dac_setup__dac_base,w
        call    dac_helper
        movwf   dac_setup__1
dac_setup__2 equ globals___0+40
        movlw   8
        addwf   dac_setup__angle,w
        movwf   dac_helper__angle
        movf    dac_setup__strength,w
        movwf   dac_helper__strength
        incf    dac_setup__dac_base,w
        call    dac_helper
        movwf   dac_setup__2
        rlf     dac_setup__2,f
        rlf     dac_setup__2,w
        andlw   252
        iorwf   dac_setup__1,w
        movwf   dac_setup__result

        ; #call _uart_byte_put('r')
        ; #call _uart_hex_put(result)

        ; line_number = 786
        ;  return result start
        ; line_number = 786
        ;info   786, 554
        movf    dac_setup__result,w
        return  
        ; line_number = 786
        ;  return result done


        ; delay after procedure statements=non-uniform




        ; line_number = 789
        ;info   789, 556
        ; procedure dac_helper
dac_helper:
        ; Last argument is sitting in W; save into argument variable
        movwf   dac_helper__dac
        ; delay=4294967295
        ; line_number = 790
        ; argument angle byte
dac_helper__angle equ globals___0+33
        ; line_number = 791
        ; argument strength byte
dac_helper__strength equ globals___0+34
        ; line_number = 792
        ; argument dac byte
dac_helper__dac equ globals___0+35
        ; line_number = 793
        ;  returns byte

        ; # This procedure will output the DAC value for {angle} to DAC
        ; # channel {dac}.

        ; line_number = 798
        ;  local result byte
dac_helper__result equ globals___0+32

        ; # Select the DAC to output to:
        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:00=>00)
        ; line_number = 801
        ;  call spi_send(dac << 1)
        ;info   801, 557
dac_helper__1 equ globals___0+41
        rlf     dac_helper__dac,w
        andlw   254
        call    spi_send
        ; line_number = 802
        ;  call spi_send(sine(strength | (angle & 0xf)))
        ;info   802, 560
        movlw   15
        andwf   dac_helper__angle,w
        iorwf   dac_helper__strength,w
        call    sine
        call    spi_send

        ; line_number = 804
        ;  call step_check()
        ;info   804, 565
        call    step_check

        ; # Wait for data to flush:
        ; line_number = 807
        ;  while !_bf start
dac_helper__2:
        ;info   807, 566
        ; =>bit_code_emit@symbol(): sym=_bf
        ; 1TEST: Single test with code in skip slot
        bsf     __rp0___byte, __rp0___bit
        btfss   _bf___byte, _bf___bit
        ; line_number = 808
        ; do_nothing
        ;info   808, 568

        goto    dac_helper__2
        ; Recombine size1 = 0 || size2 = 0
        ; <=bit_code_emit@symbol; sym=_bf (data:00=>01 code:00=>00)
        ; line_number = 807
        ;  while !_bf done
        ; # Load it in:
        ; line_number = 811
        ;  load := _false
        ;info   811, 569
        bcf     __rp0___byte, __rp0___bit
        bcf     load___byte, load___bit
        ; line_number = 812
        ;  load := _true
        ;info   812, 571
        bsf     load___byte, load___bit

        ; line_number = 814
        ;  if angle & 15 = 0 start
        ;info   814, 572
        ; Left minus Right
        movlw   15
        andwf   dac_helper__angle,w
        ; =>bit_code_emit@symbol(): sym=__z
        ; No 1TEST: true.size=1 false.size=5
        ; No 2TEST: true.size=1 false.size=5
        ; 2GOTO: Single test with two GOTO's
        btfss   __z___byte, __z___bit
        goto    dac_helper__4
        ; # Turn the coil entirely off:
        ; line_number = 816
        ;  result := 0
        ;info   816, 576
        clrf    dac_helper__result
        goto    dac_helper__5
        ; 2GOTO: Starting code 2
dac_helper__4:
        ; line_number = 817
        ;info   817, 578
dac_helper__select__3___byte equ dac_helper__angle
dac_helper__select__3___bit equ 4
        ; =>bit_code_emit@symbol(): sym=dac_helper__select__3
        ; No 1TEST: true.size=1 false.size=1
        ; 2TEST: two tests with code in both delay slots
        btfsc   dac_helper__select__3___byte, dac_helper__select__3___bit
        ; # Coil goes in one direction ...
        ; line_number = 819
        ;  result := 2
        ;info   819, 579
        movlw   2
        btfss   dac_helper__select__3___byte, dac_helper__select__3___bit
        ; # ... or the other direction.
        ; line_number = 822
        ;  result := 1
        ;info   822, 581
        movlw   1
        movwf   dac_helper__result

        ; <=bit_code_emit@symbol; sym=dac_helper__select__3 (data:00=>00 code:XX=>XX)
dac_helper__5:
        ; 2GOTO: code1 final bitstates:(data:00=>00 code:XX=>XX)
        ; 2GOTO: code2 final bitstates:(data:00=>00 code:XX=>XX)
        ; 2GOTO: code final bitstates:(data:00=>00 code:00=>00)
        ; <=bit_code_emit@symbol; sym=__z (data:00=>00 code:00=>00)
        ; line_number = 814
        ;  if angle & 15 = 0 done
        ; #call _uart_byte_put('p')
        ; #call _uart_hex_put(result)

        ; line_number = 827
        ;  return result start
        ; line_number = 827
        ;info   827, 583
        movf    dac_helper__result,w
        return  
        ; line_number = 827
        ;  return result done


        ; delay after procedure statements=non-uniform




        ; line_number = 830
        ;info   830, 585
        ; procedure spi_send
spi_send:
        ; Last argument is sitting in W; save into argument variable
        movwf   spi_send__command
        ; delay=4294967295
        ; line_number = 831
        ; argument command byte
spi_send__command equ globals___0+37
        ; line_number = 832
        ;  returns_nothing

        ; # This procedure will stuff {command} into the SPI transmitter.

        ; line_number = 836
        ;  local zilch byte
spi_send__zilch equ globals___0+36

        ; # For debugging:
        ; #call _uart_byte_put('#')
        ; #call _uart_hex_put(command)

        ; # The code in the specification sheet is a little misleading
        ; # since it does not point out that {_bf} is in {_sspstat} which
        ; # is in data bank 1 and {_sspbuf} is in data bank 0.  They do
        ; # not show any of the data bank switching.  Luckily, the uCL
        ; # compiler keeps track of all of that.

        ; # Wait until the command is finished sending:
        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:00=>00)
        ; line_number = 849
        ;  while !_bf start
spi_send__1:
        ;info   849, 586
        ; =>bit_code_emit@symbol(): sym=_bf
        ; 1TEST: Single test with code in skip slot
        bsf     __rp0___byte, __rp0___bit
        btfss   _bf___byte, _bf___bit
        ; line_number = 850
        ; do_nothing
        ;info   850, 588

        goto    spi_send__1
        ; Recombine size1 = 0 || size2 = 0
        ; <=bit_code_emit@symbol; sym=_bf (data:00=>01 code:00=>00)
        ; line_number = 849
        ;  while !_bf done
        ; # Read contents of receive buffer {_sspbuf} and throw it away.
        ; # This should cause {_bf} to clear:
        ; line_number = 854
        ;  zilch := _sspbuf
        ;info   854, 589
        bcf     __rp0___byte, __rp0___bit
        movf    _sspbuf,w
        movwf   spi_send__zilch

        ; # Initiate command sending by writing {command} to {_sspbuf}:
        ; line_number = 857
        ;  _sspbuf := command
        ;info   857, 592
        movf    spi_send__command,w
        movwf   _sspbuf

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




        ; #    # This is some bit bang code that gets the job done:
        ; #
        ; #    loop_exactly 8
        ; #	if command@7
        ; #	    data := 1
        ; #	else
        ; #	    data := 0
        ; #	clock := 1
        ; #	#delay 1
        ; #	#    do_nothing
        ; #	clock := 0
        ; #	#delay 1
        ; #	#    do_nothing
        ; #	command := command << 1


        ; Appending 7 delayed procedures to code bank 0
        ; buffer = '_uart'
        ; line_number = 7
        ;info   7, 595
        ; procedure _uart_byte_safe_get
_uart_byte_safe_get:
        ; arguments_none
        ; line_number = 9
        ;  returns byte

        ; # This procedure will the next byte from UART.  If no byte
        ; # received in a reasonable time, 0xfc is returned.

        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:00=>00)
        ; line_number = 14
        ;  loop_exactly 255 start
        ;info   14, 595
_uart_byte_safe_get__1 equ globals___0+42
        movlw   255
        movwf   _uart_byte_safe_get__1
_uart_byte_safe_get__2:
        ; line_number = 15
        ; loop_exactly 255 start
        ;info   15, 597
_uart_byte_safe_get__3 equ globals___0+43
        movlw   255
        movwf   _uart_byte_safe_get__3
_uart_byte_safe_get__4:
        ; line_number = 16
        ; if _rcif start
        ;info   16, 599
        ; =>bit_code_emit@symbol(): sym=_rcif
        ; No 1TEST: true.size=2 false.size=0
        ; No 2TEST: true.size=2 false.size=0
        ; 1GOTO: Single test with GOTO
        btfss   _rcif___byte, _rcif___bit
        goto    _uart_byte_safe_get__5
        ; line_number = 17
        ; return _rcreg start
        ; line_number = 17
        ;info   17, 601
        movf    _rcreg,w
        return  
        ; line_number = 17
        ; return _rcreg done
        ; Recombine size1 = 0 || size2 = 0
_uart_byte_safe_get__5:
        ; <=bit_code_emit@symbol; sym=_rcif (data:00=>00 code:00=>00)
        ; line_number = 16
        ; if _rcif done
        ; line_number = 15
        ; loop_exactly 255 wrap-up
        decfsz  _uart_byte_safe_get__3,f
        goto    _uart_byte_safe_get__4
        ; line_number = 15
        ; loop_exactly 255 done
        ; line_number = 14
        ;  loop_exactly 255 wrap-up
        decfsz  _uart_byte_safe_get__1,f
        goto    _uart_byte_safe_get__2
        ; line_number = 14
        ;  loop_exactly 255 done
        ; line_number = 18
        ; return 0xfc start
        ; line_number = 18
        ;info   18, 607
        retlw   252
        ; line_number = 18
        ; return 0xfc done


        ; delay after procedure statements=non-uniform




        ; line_number = 21
        ;info   21, 608
        ; procedure _uart_byte_get
_uart_byte_get:
        ; arguments_none
        ; line_number = 23
        ;  returns byte

        ; # This procedure will return the next byte from the UART.

        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:00=>00)
        ; line_number = 27
        ;  while !_rcif start
_uart_byte_get__1:
        ;info   27, 608
        ; =>bit_code_emit@symbol(): sym=_rcif
        ; 1TEST: Single test with code in skip slot
        btfss   _rcif___byte, _rcif___bit
        ; line_number = 28
        ; do_nothing
        ;info   28, 609
        goto    _uart_byte_get__1
        ; Recombine size1 = 0 || size2 = 0
        ; <=bit_code_emit@symbol; sym=_rcif (data:00=>00 code:00=>00)
        ; line_number = 27
        ;  while !_rcif done
        ; line_number = 29
        ; return _rcreg start
        ; line_number = 29
        ;info   29, 610
        movf    _rcreg,w
        return  
        ; line_number = 29
        ; return _rcreg done


        ; delay after procedure statements=non-uniform




        ; line_number = 32
        ;info   32, 612
        ; procedure _uart_hex_put
_uart_hex_put:
        ; Last argument is sitting in W; save into argument variable
        movwf   _uart_hex_put__value
        ; delay=4294967295
        ; line_number = 33
        ; argument value byte
_uart_hex_put__value equ globals___0
        ; line_number = 34
        ;  returns_nothing

        ; # This procedure will output {value} to the UART as a 2-digit
        ; # hexadecimal number.

        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:00=>00)
        ; line_number = 39
        ;  call _uart_nibble_put(value >> 4)
        ;info   39, 613
_uart_hex_put__1 equ globals___0+44
        swapf   _uart_hex_put__value,w
        andlw   15
        call    _uart_nibble_put
        ; line_number = 40
        ;  call _uart_nibble_put(value & 0xf)
        ;info   40, 616
        movlw   15
        andwf   _uart_hex_put__value,w
        call    _uart_nibble_put


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




        ; line_number = 43
        ;info   43, 620
        ; procedure _uart_nibble_put
_uart_nibble_put:
        ; Last argument is sitting in W; save into argument variable
        movwf   _uart_nibble_put__nibble
        ; delay=4294967295
        ; line_number = 44
        ; argument nibble byte
_uart_nibble_put__nibble equ globals___0+1
        ; line_number = 45
        ;  returns_nothing

        ; # This procedure will output {value} to UART as a 1 digit
        ; # hexadecimal number.

        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:00=>00)
        ; line_number = 50
        ;  if nibble < 10 start
        ;info   50, 621
        movlw   10
        subwf   _uart_nibble_put__nibble,w
        ; =>bit_code_emit@symbol(): sym=__c
        ; No 1TEST: true.size=1 false.size=1
        ; 2TEST: two tests with code in both delay slots
        btfsc   __c___byte, __c___bit
        ; line_number = 53
        ; nibble := nibble - 10 + 'A'
        ;info   53, 624
        movlw   55
        btfss   __c___byte, __c___bit
        ; line_number = 51
        ; nibble := nibble + '0'
        ;info   51, 626
        movlw   48
        addwf   _uart_nibble_put__nibble,f
        ; <=bit_code_emit@symbol; sym=__c (data:00=>00 code:00=>00)
        ; line_number = 50
        ;  if nibble < 10 done
        ; line_number = 54
        ; call _uart_byte_put(nibble)
        ;info   54, 628
        movf    _uart_nibble_put__nibble,w
        call    _uart_byte_put


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




        ; line_number = 57
        ;info   57, 631
        ; procedure _uart_space_put
_uart_space_put:
        ; arguments_none
        ; line_number = 59
        ;  returns_nothing

        ; # This procedure will output a space to the UART.

        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:00=>00)
        ; line_number = 63
        ;  call _uart_byte_put(' ')
        ;info   63, 631
        movlw   32
        call    _uart_byte_put


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




        ; line_number = 66
        ;info   66, 634
        ; procedure _uart_crlf_put
_uart_crlf_put:
        ; arguments_none
        ; line_number = 68
        ;  returns_nothing

        ; # This procedure will output a carriage return line feed sequecne to
        ; # the UART.

        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:00=>00)
        ; line_number = 73
        ;  call _uart_byte_put('\cr\')
        ;info   73, 634
        movlw   13
        call    _uart_byte_put
        ; line_number = 74
        ;  call _uart_byte_put('\lf\')
        ;info   74, 636
        movlw   10
        call    _uart_byte_put


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




        ; line_number = 77
        ;info   77, 639
        ; procedure _uart_byte_put
_uart_byte_put:
        ; Last argument is sitting in W; save into argument variable
        movwf   _uart_byte_put__byte
        ; delay=4294967295
        ; line_number = 78
        ; argument byte byte
_uart_byte_put__byte equ globals___0+2
        ; line_number = 79
        ;  returns_nothing

        ; # This procedure will send {byte} out using to the UART.

        ; before procedure statements delay=non-uniform, bit states=(data:00=>00 code:00=>00)
        ; line_number = 83
        ;  while !_txif start
_uart_byte_put__1:
        ;info   83, 640
        ; =>bit_code_emit@symbol(): sym=_txif
        ; 1TEST: Single test with code in skip slot
        btfss   _txif___byte, _txif___bit
        ; line_number = 84
        ; do_nothing
        ;info   84, 641
        goto    _uart_byte_put__1
        ; Recombine size1 = 0 || size2 = 0
        ; <=bit_code_emit@symbol; sym=_txif (data:00=>00 code:00=>00)
        ; line_number = 83
        ;  while !_txif done
        ; line_number = 85
        ; _txreg := byte
        ;info   85, 642
        movf    _uart_byte_put__byte,w
        movwf   _txreg


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




        ; Code bank 1; Start address: 2048; End address: 4095
        org     2048
        ; Code bank 2; Start address: 4096; End address: 6143
        org     4096
        ; Code bank 3; Start address: 6144; End address: 8191
        org     6144
        ; Configuration bits
        ; address = 0x2007, fill = 0x600
        ; cp = off (0x2000)
        ; cpmx = rc1 (0x1000)
        ; debug = off (0x800)
        ; borv = borv00 (0x0)
        ; boren = off (0x0)
        ; mclre = off (0x0)
        ; pwrten = off (0x8)
        ; wdten = off (0x0)
        ; fosc = hs (0x2)
        ; 15882 = 0x3e0a
        ; 8199 = 0x2007
        __config 8199, 15882
        ; Configuration bits
        ; address = 0x2008, fill = 0x33bc
        ; borsen = off (0x0)
        ; ieso = off (0x2)
        ; fcmen = off (0x0)
        ; 13246 = 0x33be
        ; 8200 = 0x2008
        __config 8200, 13246
        ; 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=45 Bits=4 Available=34
        ; Region="globals___1" Address=160" Size=80 Bytes=0 Bits=0 Available=80
        ; Region="globals___2" Address=272" Size=96 Bytes=0 Bits=0 Available=96
        ; Region="globals___3" Address=400" Size=112 Bytes=0 Bits=0 Available=112
        end
