USBFm.LST
Upload User: wang202020
Upload Date: 2021-02-07
Package Size: 182k
Code Size: 427k
Category:

SCM

Development Platform:

HTML/CSS

  1.                           M     else
  2.                           M       if ((LCDOUT) < 1)
  3.                           M         call    LCDOUT
  4. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 72
  5. LOC  OBJECT CODE     LINE SOURCE TEXT
  6.   VALUE
  7.                           M       else
  8.                           M         if ((LCDOUT) > $)
  9.                           M         call    LCDOUT
  10.                           M         else
  11.                           M           if ((LCDOUT) < ($ - 3ffh))
  12. 0009BC EC23 F000          M         call    LCDOUT
  13.                           M           else
  14.                           M         rcall   LCDOUT
  15.                           M           endif
  16.                           M         endif
  17.                           M       endif
  18.                           M     endif
  19.                       00105         LCDOUT?C        072h
  20.                           M         MOVE?CA 072h
  21. 0009C0 0E72               M         movlw   low (072h)
  22.                           M         L?CALL  LCDOUT
  23.                           M         RST?RP
  24.                           M     if (PREV_BANK != 0)
  25.                           M         movlb   0
  26.                           M PREV_BANK = 0
  27.                           M     endif
  28.                           M 
  29.                           M     ifdef USE_LINKER
  30.                           M         call    LCDOUT
  31.                           M     else
  32.                           M       if ((LCDOUT) < 1)
  33.                           M         call    LCDOUT
  34.                           M       else
  35.                           M         if ((LCDOUT) > $)
  36.                           M         call    LCDOUT
  37.                           M         else
  38.                           M           if ((LCDOUT) < ($ - 3ffh))
  39. 0009C2 EC23 F000          M         call    LCDOUT
  40.                           M           else
  41.                           M         rcall   LCDOUT
  42.                           M           endif
  43.                           M         endif
  44.                           M       endif
  45.                           M     endif
  46.                       00106         LCDOUT?C        020h
  47.                           M         MOVE?CA 020h
  48. 0009C6 0E20               M         movlw   low (020h)
  49.                           M         L?CALL  LCDOUT
  50.                           M         RST?RP
  51.                           M     if (PREV_BANK != 0)
  52.                           M         movlb   0
  53.                           M PREV_BANK = 0
  54.                           M     endif
  55.                           M 
  56.                           M     ifdef USE_LINKER
  57.                           M         call    LCDOUT
  58.                           M     else
  59.                           M       if ((LCDOUT) < 1)
  60. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 73
  61. LOC  OBJECT CODE     LINE SOURCE TEXT
  62.   VALUE
  63.                           M         call    LCDOUT
  64.                           M       else
  65.                           M         if ((LCDOUT) > $)
  66.                           M         call    LCDOUT
  67.                           M         else
  68.                           M           if ((LCDOUT) < ($ - 3ffh))
  69. 0009C8 EC23 F000          M         call    LCDOUT
  70.                           M           else
  71.                           M         rcall   LCDOUT
  72.                           M           endif
  73.                           M         endif
  74.                           M       endif
  75.                           M     endif
  76.                       00107         LCDOUT?C        046h
  77.                           M         MOVE?CA 046h
  78. 0009CC 0E46               M         movlw   low (046h)
  79.                           M         L?CALL  LCDOUT
  80.                           M         RST?RP
  81.                           M     if (PREV_BANK != 0)
  82.                           M         movlb   0
  83.                           M PREV_BANK = 0
  84.                           M     endif
  85.                           M 
  86.                           M     ifdef USE_LINKER
  87.                           M         call    LCDOUT
  88.                           M     else
  89.                           M       if ((LCDOUT) < 1)
  90.                           M         call    LCDOUT
  91.                           M       else
  92.                           M         if ((LCDOUT) > $)
  93.                           M         call    LCDOUT
  94.                           M         else
  95.                           M           if ((LCDOUT) < ($ - 3ffh))
  96. 0009CE EC23 F000          M         call    LCDOUT
  97.                           M           else
  98.                           M         rcall   LCDOUT
  99.                           M           endif
  100.                           M         endif
  101.                           M       endif
  102.                           M     endif
  103.                       00108         LCDOUT?C        06Dh
  104.                           M         MOVE?CA 06Dh
  105. 0009D2 0E6D               M         movlw   low (06Dh)
  106.                           M         L?CALL  LCDOUT
  107.                           M         RST?RP
  108.                           M     if (PREV_BANK != 0)
  109.                           M         movlb   0
  110.                           M PREV_BANK = 0
  111.                           M     endif
  112.                           M 
  113.                           M     ifdef USE_LINKER
  114.                           M         call    LCDOUT
  115.                           M     else
  116. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 74
  117. LOC  OBJECT CODE     LINE SOURCE TEXT
  118.   VALUE
  119.                           M       if ((LCDOUT) < 1)
  120.                           M         call    LCDOUT
  121.                           M       else
  122.                           M         if ((LCDOUT) > $)
  123.                           M         call    LCDOUT
  124.                           M         else
  125.                           M           if ((LCDOUT) < ($ - 3ffh))
  126. 0009D4 EC23 F000          M         call    LCDOUT
  127.                           M           else
  128.                           M         rcall   LCDOUT
  129.                           M           endif
  130.                           M         endif
  131.                           M       endif
  132.                           M     endif
  133.                       00109 
  134.                       00110         LABEL?L _ProgramStart   
  135.                           M         RST?RP
  136.                           M     if (PREV_BANK != 0)
  137.                           M         movlb   0
  138.                           M PREV_BANK = 0
  139.                           M     endif
  140.                           M     ifdef PM_USED
  141.                           M         LALL
  142.                           M _ProgramStart
  143.                           M         XALL
  144.                           M     else
  145. 0009D8                    M _ProgramStart
  146.                           M     endif
  147.                       00111         USBSERVICE?     
  148.                           M ;  local        Label1
  149.                           M         L?CALL  USBCheckBusStatus       ; Must use polling method
  150.                           M         RST?RP
  151.                           M     if (PREV_BANK != 0)
  152.                           M         movlb   0
  153.                           M PREV_BANK = 0
  154.                           M     endif
  155.                           M 
  156.                           M     ifdef USE_LINKER
  157.                           M         call    USBCheckBusStatus
  158.                           M     else
  159.                           M       if ((USBCheckBusStatus) < 1)
  160.                           M         call    USBCheckBusStatus
  161.                           M       else
  162.                           M         if ((USBCheckBusStatus) > $)
  163.                           M         call    USBCheckBusStatus
  164.                           M         else
  165.                           M           if ((USBCheckBusStatus) < ($ - 3ffh))
  166.                           M         call    USBCheckBusStatus
  167.                           M           else
  168. 0009D8 DE59               M         rcall   USBCheckBusStatus
  169.                           M           endif
  170.                           M         endif
  171.                           M       endif
  172. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 75
  173. LOC  OBJECT CODE     LINE SOURCE TEXT
  174.   VALUE
  175.                           M     endif
  176.                           M ;        BIT?GOTO 1, UCFG, UTEYE, Label1
  177.                           M         L?CALL  USBDriverService        ; Interrupt or polling method
  178.                           M         RST?RP
  179.                           M     if (PREV_BANK != 0)
  180.                           M         movlb   0
  181.                           M PREV_BANK = 0
  182.                           M     endif
  183.                           M 
  184.                           M     ifdef USE_LINKER
  185.                           M         call    USBDriverService
  186.                           M     else
  187.                           M       if ((USBDriverService) < 1)
  188.                           M         call    USBDriverService
  189.                           M       else
  190.                           M         if ((USBDriverService) > $)
  191.                           M         call    USBDriverService
  192.                           M         else
  193.                           M           if ((USBDriverService) < ($ - 3ffh))
  194.                           M         call    USBDriverService
  195.                           M           else
  196. 0009DA DE73               M         rcall   USBDriverService
  197.                           M           endif
  198.                           M         endif
  199.                           M       endif
  200.                           M     endif
  201.                           M ;Label1
  202.                           M         L?CALL  DUNN            ; Do our cleanup
  203.                           M         RST?RP
  204.                           M     if (PREV_BANK != 0)
  205.                           M         movlb   0
  206.                           M PREV_BANK = 0
  207.                           M     endif
  208.                           M 
  209.                           M     ifdef USE_LINKER
  210.                           M         call    DUNN
  211.                           M     else
  212.                           M       if ((DUNN)  < 1)
  213.                           M         call    DUNN
  214.                           M       else
  215.                           M         if ((DUNN)  > $)
  216.                           M         call    DUNN
  217.                           M         else
  218.                           M           if ((DUNN)  < ($ - 3ffh))
  219. 0009DC ECD4 F000          M         call    DUNN
  220.                           M           else
  221.                           M         rcall   DUNN
  222.                           M           endif
  223.                           M         endif
  224.                           M       endif
  225.                           M     endif
  226.                       00112         GOSUB?L _DoUSBOut
  227.   0000                    M     local dlabel
  228. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 76
  229. LOC  OBJECT CODE     LINE SOURCE TEXT
  230.   VALUE
  231.                           M     ifdef DEBUG_STACK
  232.                           M         CHK?RP  DEBUG_STACK
  233.                           M       ifdef DEBUG_STACK_ADDR
  234.                           M         bcf     STATUS, C
  235.                           M         rlcf    DEBUG_STACK, W
  236.                           M         addlw   DEBUG_STACK_ADDR
  237.                           M         movwf   FSR0L
  238.                           M         clrf    FSR0H
  239.                           M         movlw   low (dlabel)
  240.                           M         movwf   POSTINC0
  241.                           M         movlw   high (dlabel)
  242.                           M         movwf   INDF0
  243.                           M       endif
  244.                           M         incf    DEBUG_STACK, F
  245.                           M     endif
  246.                           M         L?CALL  _DoUSBOut
  247.                           M         RST?RP
  248.                           M     if (PREV_BANK != 0)
  249.                           M         movlb   0
  250.                           M PREV_BANK = 0
  251.                           M     endif
  252.                           M 
  253.                           M     ifdef USE_LINKER
  254.                           M         call    _DoUSBOut
  255.                           M     else
  256.                           M       if ((_DoUSBOut) < 1)
  257.                           M         call    _DoUSBOut
  258.                           M       else
  259.                           M         if ((_DoUSBOut) > $)
  260. 0009E0 EC97 F005          M         call    _DoUSBOut
  261.                           M         else
  262.                           M           if ((_DoUSBOut) < ($ - 3ffh))
  263.                           M         call    _DoUSBOut
  264.                           M           else
  265.                           M         rcall   _DoUSBOut
  266.                           M           endif
  267.                           M         endif
  268.                           M       endif
  269.                           M     endif
  270. 0009E4                    M dlabel
  271.                       00113         GOSUB?L _DoUSBIn
  272.   0000                    M     local dlabel
  273.                           M     ifdef DEBUG_STACK
  274.                           M         CHK?RP  DEBUG_STACK
  275.                           M       ifdef DEBUG_STACK_ADDR
  276.                           M         bcf     STATUS, C
  277.                           M         rlcf    DEBUG_STACK, W
  278.                           M         addlw   DEBUG_STACK_ADDR
  279.                           M         movwf   FSR0L
  280.                           M         clrf    FSR0H
  281.                           M         movlw   low (dlabel)
  282.                           M         movwf   POSTINC0
  283.                           M         movlw   high (dlabel)
  284. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 77
  285. LOC  OBJECT CODE     LINE SOURCE TEXT
  286.   VALUE
  287.                           M         movwf   INDF0
  288.                           M       endif
  289.                           M         incf    DEBUG_STACK, F
  290.                           M     endif
  291.                           M         L?CALL  _DoUSBIn
  292.                           M         RST?RP
  293.                           M     if (PREV_BANK != 0)
  294.                           M         movlb   0
  295.                           M PREV_BANK = 0
  296.                           M     endif
  297.                           M 
  298.                           M     ifdef USE_LINKER
  299.                           M         call    _DoUSBIn
  300.                           M     else
  301.                           M       if ((_DoUSBIn) < 1)
  302.                           M         call    _DoUSBIn
  303.                           M       else
  304.                           M         if ((_DoUSBIn) > $)
  305. 0009E4 EC7E F005          M         call    _DoUSBIn
  306.                           M         else
  307.                           M           if ((_DoUSBIn) < ($ - 3ffh))
  308.                           M         call    _DoUSBIn
  309.                           M           else
  310.                           M         rcall   _DoUSBIn
  311.                           M           endif
  312.                           M         endif
  313.                           M       endif
  314.                           M     endif
  315. 0009E8                    M dlabel
  316.                       00114         CMPNE?TCL       _incr, 000h, L00001
  317.                           M     if (000h == 0)
  318.                           M         CLRWDT?
  319.                           M     ifndef NO_CLRWDT
  320. 0009E8 0004               M         clrwdt
  321.                           M     endif
  322.                           M         BIT?GOTO 1, PORTC, 000h,  L00001
  323.                           M     ifdef USE_LINKER
  324.                           M         CLRWDT?
  325.                           M     else
  326.                           M       if ($ == (L00001))
  327.                           M         CLRWDT?
  328.                           M       endif
  329.                           M     endif
  330.                           M 
  331.                           M     if (((PORTC) > BANKA_END) & ((PORTC) < (0f01h + BANKA_END)))
  332.                           M         bcf     STATUS, OV
  333.                           M         CHK?RP  PORTC
  334.                           M       if (1      == 0)
  335.                           M         btfss   PORTC, 000h
  336.                           M       else
  337.                           M         btfsc   PORTC, 000h
  338.                           M       endif
  339.                           M         bsf     STATUS, OV
  340. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 78
  341. LOC  OBJECT CODE     LINE SOURCE TEXT
  342.   VALUE
  343.                           M         RST?RP
  344.                           M       ifdef USE_LINKER
  345.                           M         btfsc   STATUS, OV
  346.                           M         goto    L00001
  347.                           M       else
  348.                           M         if ((L00001) < 1)
  349.                           M         btfsc   STATUS, OV
  350.                           M         goto    L00001
  351.                           M         else
  352.                           M           if ((L00001) > $)
  353.                           M         btfsc   STATUS, OV
  354.                           M         goto    L00001
  355.                           M           else
  356.                           M             if ((L00001) < ($ - 7fh))
  357.                           M         btfsc   STATUS, OV
  358.                           M         goto    L00001
  359.                           M             else
  360.                           M         bov     L00001
  361.                           M             endif
  362.                           M           endif
  363.                           M         endif
  364.                           M       endif
  365.                           M     else
  366.                           M         RST?RP
  367.                           M     if (PREV_BANK != 0)
  368.                           M         movlb   0
  369.                           M PREV_BANK = 0
  370.                           M     endif
  371.                           M       if (1      == 0)
  372.                           M         btfss   PORTC, 000h
  373.                           M       else
  374. 0009EA B082               M         btfsc   PORTC, 000h
  375.                           M       endif
  376.                           M       ifdef USE_LINKER
  377.                           M         goto    L00001
  378.                           M       else
  379.                           M         if ((L00001) < 1)
  380.                           M         goto    L00001
  381.                           M         else
  382.                           M           if ((L00001) > $)
  383. 0009EC EF06 F005          M         goto    L00001
  384.                           M           else
  385.                           M             if ((L00001) < ($ - 3ffh))
  386.                           M         goto    L00001
  387.                           M             else
  388.                           M         bra     L00001
  389.                           M             endif
  390.                           M           endif
  391.                           M         endif
  392.                           M       endif
  393.                           M     endif
  394.                           M     else
  395.                           M       if (000h == 1)
  396. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 79
  397. LOC  OBJECT CODE     LINE SOURCE TEXT
  398.   VALUE
  399.                           M         CLRWDT?
  400.                           M         BIT?GOTO 0, PORTC, 000h,  L00001
  401.                           M       else
  402.                           M         L?GOTO  L00001
  403.                           M       endif
  404.                           M     endif
  405.                       00115         PAUSE?C 0C8h
  406.                           M     if (high (0C8h) == 0)
  407.                           M         MOVE?CA 0C8h
  408. 0009F0 0EC8               M         movlw   low (0C8h)
  409.                           M         L?CALL  PAUSE
  410.                           M         RST?RP
  411.                           M     if (PREV_BANK != 0)
  412.                           M         movlb   0
  413.                           M PREV_BANK = 0
  414.                           M     endif
  415.                           M 
  416.                           M     ifdef USE_LINKER
  417.                           M         call    PAUSE
  418.                           M     else
  419.                           M       if ((PAUSE) < 1)
  420.                           M         call    PAUSE
  421.                           M       else
  422.                           M         if ((PAUSE) > $)
  423.                           M         call    PAUSE
  424.                           M         else
  425.                           M           if ((PAUSE) < ($ - 3ffh))
  426. 0009F2 EC80 F000          M         call    PAUSE
  427.                           M           else
  428.                           M         rcall   PAUSE
  429.                           M           endif
  430.                           M         endif
  431.                           M       endif
  432.                           M     endif
  433.                           M     else
  434.                           M         MOVE?CB high (0C8h), R1 + 1
  435.                           M         MOVE?CA low (0C8h)
  436.                           M         L?CALL  PAUSEL
  437.                           M     endif
  438.                       00116         ADD?BCB _Frecuencia, 001h, _Frecuencia
  439.                           M     if (_Frecuencia == _Frecuencia)
  440.                           M       if (001h == 1)
  441.                           M         CHK?RP  _Frecuencia
  442.                           M     if (((_Frecuencia) > BANKA_END) & ((_Frecuencia) < (0f01h + BANKA_END)))
  443.                           M       if (((_Frecuencia) & 0f00h) != (PREV_BANK << 8))
  444.                           M         movlb   high (_Frecuencia)
  445.                           M PREV_BANK = high (_Frecuencia)
  446.                           M       endif
  447.                           M     endif
  448. 0009F6 2A1E               M         incf    _Frecuencia, F
  449.                           M       else
  450.                           M         movlw   001h
  451.                           M         CHK?RP  _Frecuencia
  452. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 80
  453. LOC  OBJECT CODE     LINE SOURCE TEXT
  454.   VALUE
  455.                           M         addwf   _Frecuencia, F
  456.                           M       endif
  457.                           M     else
  458.                           M       if (001h == 1)
  459.                           M         CHK?RP  _Frecuencia
  460.                           M         incf    _Frecuencia, W
  461.                           M         MOVE?AB _Frecuencia
  462.                           M       else
  463.                           M         movlw   001h
  464.                           M         CHK?RP  _Frecuencia
  465.                           M         addwf   _Frecuencia, W
  466.                           M         MOVE?AB _Frecuencia
  467.                           M       endif
  468.                           M     endif
  469.                       00117         CMPLT?BCL       _Frecuencia, 0FEh, L00003
  470.                           M     if (0FEh < 100h)
  471.                           M         CLRWDT?
  472.                           M     ifndef NO_CLRWDT
  473. 0009F8 0004               M         clrwdt
  474.                           M     endif
  475.                           M         MOVE?CA 0FEh
  476. 0009FA 0EFE               M         movlw   low (0FEh)
  477.                           M         CHK?RP  _Frecuencia
  478.                           M     if (((_Frecuencia) > BANKA_END) & ((_Frecuencia) < (0f01h + BANKA_END)))
  479.                           M       if (((_Frecuencia) & 0f00h) != (PREV_BANK << 8))
  480.                           M         movlb   high (_Frecuencia)
  481.                           M PREV_BANK = high (_Frecuencia)
  482.                           M       endif
  483.                           M     endif
  484. 0009FC 5C1E               M         subwf   _Frecuencia, W
  485.                           M         BIT?GOTO 0, STATUS, C, L00003
  486.                           M     ifdef USE_LINKER
  487.                           M         CLRWDT?
  488.                           M     else
  489.                           M       if ($ == (L00003))
  490.                           M         CLRWDT?
  491.                           M       endif
  492.                           M     endif
  493.                           M 
  494.                           M     if (((STATUS) > BANKA_END) & ((STATUS) < (0f01h + BANKA_END)))
  495.                           M         bcf     STATUS, OV
  496.                           M         CHK?RP  STATUS
  497.                           M       if (0      == 0)
  498.                           M         btfss   STATUS, C
  499.                           M       else
  500.                           M         btfsc   STATUS, C
  501.                           M       endif
  502.                           M         bsf     STATUS, OV
  503.                           M         RST?RP
  504.                           M       ifdef USE_LINKER
  505.                           M         btfsc   STATUS, OV
  506.                           M         goto    L00003
  507.                           M       else
  508. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 81
  509. LOC  OBJECT CODE     LINE SOURCE TEXT
  510.   VALUE
  511.                           M         if ((L00003) < 1)
  512.                           M         btfsc   STATUS, OV
  513.                           M         goto    L00003
  514.                           M         else
  515.                           M           if ((L00003) > $)
  516.                           M         btfsc   STATUS, OV
  517.                           M         goto    L00003
  518.                           M           else
  519.                           M             if ((L00003) < ($ - 7fh))
  520.                           M         btfsc   STATUS, OV
  521.                           M         goto    L00003
  522.                           M             else
  523.                           M         bov     L00003
  524.                           M             endif
  525.                           M           endif
  526.                           M         endif
  527.                           M       endif
  528.                           M     else
  529.                           M         RST?RP
  530.                           M     if (PREV_BANK != 0)
  531.                           M         movlb   0
  532.                           M PREV_BANK = 0
  533.                           M     endif
  534.                           M       if (0      == 0)
  535. 0009FE A0D8               M         btfss   STATUS, C
  536.                           M       else
  537.                           M         btfsc   STATUS, C
  538.                           M       endif
  539.                           M       ifdef USE_LINKER
  540.                           M         goto    L00003
  541.                           M       else
  542.                           M         if ((L00003) < 1)
  543.                           M         goto    L00003
  544.                           M         else
  545.                           M           if ((L00003) > $)
  546. 000A00 EF04 F005          M         goto    L00003
  547.                           M           else
  548.                           M             if ((L00003) < ($ - 3ffh))
  549.                           M         goto    L00003
  550.                           M             else
  551.                           M         bra     L00003
  552.                           M             endif
  553.                           M           endif
  554.                           M         endif
  555.                           M       endif
  556.                           M     endif
  557.                           M     else
  558.                           M         L?GOTO  L00003
  559.                           M     endif
  560.                       00118         MOVE?CB 0FDh, _Frecuencia
  561.                           M         CHK?RP  _Frecuencia
  562.                           M     if (((_Frecuencia) > BANKA_END) & ((_Frecuencia) < (0f01h + BANKA_END)))
  563.                           M       if (((_Frecuencia) & 0f00h) != (PREV_BANK << 8))
  564. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 82
  565. LOC  OBJECT CODE     LINE SOURCE TEXT
  566.   VALUE
  567.                           M         movlb   high (_Frecuencia)
  568.                           M PREV_BANK = high (_Frecuencia)
  569.                           M       endif
  570.                           M     endif
  571.                           M     if (low (0FDh) == 0)
  572.                           M         clrf    _Frecuencia
  573.                           M     else
  574. 000A04 0EFD               M         movlw   low (0FDh)
  575. 000A06 6E1E               M         movwf   _Frecuencia
  576.                           M     endif
  577.                       00119         LABEL?L L00003  
  578.                           M         RST?RP
  579.                           M     if (PREV_BANK != 0)
  580.                           M         movlb   0
  581.                           M PREV_BANK = 0
  582.                           M     endif
  583.                           M     ifdef PM_USED
  584.                           M         LALL
  585.                           M L00003
  586.                           M         XALL
  587.                           M     else
  588. 000A08                    M L00003
  589.                           M     endif
  590.                       00120         MOVE?BB _Frecuencia, PORTB
  591. 000A08 C01E FF81          M         movff   _Frecuencia, PORTB
  592.                       00121         LABEL?L L00001  
  593.                           M         RST?RP
  594.                           M     if (PREV_BANK != 0)
  595.                           M         movlb   0
  596.                           M PREV_BANK = 0
  597.                           M     endif
  598.                           M     ifdef PM_USED
  599.                           M         LALL
  600.                           M L00001
  601.                           M         XALL
  602.                           M     else
  603. 000A0C                    M L00001
  604.                           M     endif
  605.                       00122         CMPNE?TCL       _decr, 000h, L00005
  606.                           M     if (000h == 0)
  607.                           M         CLRWDT?
  608.                           M     ifndef NO_CLRWDT
  609. 000A0C 0004               M         clrwdt
  610.                           M     endif
  611.                           M         BIT?GOTO 1, PORTC, 001h,  L00005
  612.                           M     ifdef USE_LINKER
  613.                           M         CLRWDT?
  614.                           M     else
  615.                           M       if ($ == (L00005))
  616.                           M         CLRWDT?
  617.                           M       endif
  618.                           M     endif
  619.                           M 
  620. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 83
  621. LOC  OBJECT CODE     LINE SOURCE TEXT
  622.   VALUE
  623.                           M     if (((PORTC) > BANKA_END) & ((PORTC) < (0f01h + BANKA_END)))
  624.                           M         bcf     STATUS, OV
  625.                           M         CHK?RP  PORTC
  626.                           M       if (1      == 0)
  627.                           M         btfss   PORTC, 001h
  628.                           M       else
  629.                           M         btfsc   PORTC, 001h
  630.                           M       endif
  631.                           M         bsf     STATUS, OV
  632.                           M         RST?RP
  633.                           M       ifdef USE_LINKER
  634.                           M         btfsc   STATUS, OV
  635.                           M         goto    L00005
  636.                           M       else
  637.                           M         if ((L00005) < 1)
  638.                           M         btfsc   STATUS, OV
  639.                           M         goto    L00005
  640.                           M         else
  641.                           M           if ((L00005) > $)
  642.                           M         btfsc   STATUS, OV
  643.                           M         goto    L00005
  644.                           M           else
  645.                           M             if ((L00005) < ($ - 7fh))
  646.                           M         btfsc   STATUS, OV
  647.                           M         goto    L00005
  648.                           M             else
  649.                           M         bov     L00005
  650.                           M             endif
  651.                           M           endif
  652.                           M         endif
  653.                           M       endif
  654.                           M     else
  655.                           M         RST?RP
  656.                           M     if (PREV_BANK != 0)
  657.                           M         movlb   0
  658.                           M PREV_BANK = 0
  659.                           M     endif
  660.                           M       if (1      == 0)
  661.                           M         btfss   PORTC, 001h
  662.                           M       else
  663. 000A0E B282               M         btfsc   PORTC, 001h
  664.                           M       endif
  665.                           M       ifdef USE_LINKER
  666.                           M         goto    L00005
  667.                           M       else
  668.                           M         if ((L00005) < 1)
  669.                           M         goto    L00005
  670.                           M         else
  671.                           M           if ((L00005) > $)
  672. 000A10 EF18 F005          M         goto    L00005
  673.                           M           else
  674.                           M             if ((L00005) < ($ - 3ffh))
  675.                           M         goto    L00005
  676. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 84
  677. LOC  OBJECT CODE     LINE SOURCE TEXT
  678.   VALUE
  679.                           M             else
  680.                           M         bra     L00005
  681.                           M             endif
  682.                           M           endif
  683.                           M         endif
  684.                           M       endif
  685.                           M     endif
  686.                           M     else
  687.                           M       if (000h == 1)
  688.                           M         CLRWDT?
  689.                           M         BIT?GOTO 0, PORTC, 001h,  L00005
  690.                           M       else
  691.                           M         L?GOTO  L00005
  692.                           M       endif
  693.                           M     endif
  694.                       00123         PAUSE?C 0C8h
  695.                           M     if (high (0C8h) == 0)
  696.                           M         MOVE?CA 0C8h
  697. 000A14 0EC8               M         movlw   low (0C8h)
  698.                           M         L?CALL  PAUSE
  699.                           M         RST?RP
  700.                           M     if (PREV_BANK != 0)
  701.                           M         movlb   0
  702.                           M PREV_BANK = 0
  703.                           M     endif
  704.                           M 
  705.                           M     ifdef USE_LINKER
  706.                           M         call    PAUSE
  707.                           M     else
  708.                           M       if ((PAUSE) < 1)
  709.                           M         call    PAUSE
  710.                           M       else
  711.                           M         if ((PAUSE) > $)
  712.                           M         call    PAUSE
  713.                           M         else
  714.                           M           if ((PAUSE) < ($ - 3ffh))
  715. 000A16 EC80 F000          M         call    PAUSE
  716.                           M           else
  717.                           M         rcall   PAUSE
  718.                           M           endif
  719.                           M         endif
  720.                           M       endif
  721.                           M     endif
  722.                           M     else
  723.                           M         MOVE?CB high (0C8h), R1 + 1
  724.                           M         MOVE?CA low (0C8h)
  725.                           M         L?CALL  PAUSEL
  726.                           M     endif
  727.                       00124         SUB?BCB _Frecuencia, 001h, _Frecuencia
  728.                           M     if (_Frecuencia == _Frecuencia)
  729.                           M       if (001h == 1)
  730.                           M         CHK?RP  _Frecuencia
  731.                           M     if (((_Frecuencia) > BANKA_END) & ((_Frecuencia) < (0f01h + BANKA_END)))
  732. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 85
  733. LOC  OBJECT CODE     LINE SOURCE TEXT
  734.   VALUE
  735.                           M       if (((_Frecuencia) & 0f00h) != (PREV_BANK << 8))
  736.                           M         movlb   high (_Frecuencia)
  737.                           M PREV_BANK = high (_Frecuencia)
  738.                           M       endif
  739.                           M     endif
  740. 000A1A 061E               M         decf    _Frecuencia, F
  741.                           M       else
  742.                           M         movlw   001h
  743.                           M         CHK?RP  _Frecuencia
  744.                           M         subwf   _Frecuencia, F
  745.                           M       endif
  746.                           M     else
  747.                           M       if (001h == 1)
  748.                           M         CHK?RP  _Frecuencia
  749.                           M         decf    _Frecuencia, W
  750.                           M         MOVE?AB _Frecuencia
  751.                           M       else
  752.                           M         movlw   001h
  753.                           M         CHK?RP  _Frecuencia
  754.                           M         subwf   _Frecuencia, W
  755.                           M         MOVE?AB _Frecuencia
  756.                           M       endif
  757.                           M     endif
  758.                       00125         CMPNE?BCL       _Frecuencia, 009h, L00007
  759.                           M     if (009h < 100h)
  760.                           M         CLRWDT?
  761.                           M     ifndef NO_CLRWDT
  762. 000A1C 0004               M         clrwdt
  763.                           M     endif
  764.                           M         MOVE?BA _Frecuencia
  765.                           M         CHK?RP  _Frecuencia
  766.                           M     if (((_Frecuencia) > BANKA_END) & ((_Frecuencia) < (0f01h + BANKA_END)))
  767.                           M       if (((_Frecuencia) & 0f00h) != (PREV_BANK << 8))
  768.                           M         movlb   high (_Frecuencia)
  769.                           M PREV_BANK = high (_Frecuencia)
  770.                           M       endif
  771.                           M     endif
  772. 000A1E 501E               M         movf    _Frecuencia, W
  773. 000A20 0809               M         sublw   009h
  774.                           M         BIT?GOTO 0, STATUS, Z, L00007
  775.                           M     ifdef USE_LINKER
  776.                           M         CLRWDT?
  777.                           M     else
  778.                           M       if ($ == (L00007))
  779.                           M         CLRWDT?
  780.                           M       endif
  781.                           M     endif
  782.                           M 
  783.                           M     if (((STATUS) > BANKA_END) & ((STATUS) < (0f01h + BANKA_END)))
  784.                           M         bcf     STATUS, OV
  785.                           M         CHK?RP  STATUS
  786.                           M       if (0      == 0)
  787.                           M         btfss   STATUS, Z
  788. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 86
  789. LOC  OBJECT CODE     LINE SOURCE TEXT
  790.   VALUE
  791.                           M       else
  792.                           M         btfsc   STATUS, Z
  793.                           M       endif
  794.                           M         bsf     STATUS, OV
  795.                           M         RST?RP
  796.                           M       ifdef USE_LINKER
  797.                           M         btfsc   STATUS, OV
  798.                           M         goto    L00007
  799.                           M       else
  800.                           M         if ((L00007) < 1)
  801.                           M         btfsc   STATUS, OV
  802.                           M         goto    L00007
  803.                           M         else
  804.                           M           if ((L00007) > $)
  805.                           M         btfsc   STATUS, OV
  806.                           M         goto    L00007
  807.                           M           else
  808.                           M             if ((L00007) < ($ - 7fh))
  809.                           M         btfsc   STATUS, OV
  810.                           M         goto    L00007
  811.                           M             else
  812.                           M         bov     L00007
  813.                           M             endif
  814.                           M           endif
  815.                           M         endif
  816.                           M       endif
  817.                           M     else
  818.                           M         RST?RP
  819.                           M     if (PREV_BANK != 0)
  820.                           M         movlb   0
  821.                           M PREV_BANK = 0
  822.                           M     endif
  823.                           M       if (0      == 0)
  824. 000A22 A4D8               M         btfss   STATUS, Z
  825.                           M       else
  826.                           M         btfsc   STATUS, Z
  827.                           M       endif
  828.                           M       ifdef USE_LINKER
  829.                           M         goto    L00007
  830.                           M       else
  831.                           M         if ((L00007) < 1)
  832.                           M         goto    L00007
  833.                           M         else
  834.                           M           if ((L00007) > $)
  835. 000A24 EF16 F005          M         goto    L00007
  836.                           M           else
  837.                           M             if ((L00007) < ($ - 3ffh))
  838.                           M         goto    L00007
  839.                           M             else
  840.                           M         bra     L00007
  841.                           M             endif
  842.                           M           endif
  843.                           M         endif
  844. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 87
  845. LOC  OBJECT CODE     LINE SOURCE TEXT
  846.   VALUE
  847.                           M       endif
  848.                           M     endif
  849.                           M     else
  850.                           M         L?GOTO  L00007
  851.                           M     endif
  852.                       00126         MOVE?CB _FreqMin, _Frecuencia
  853.                           M         CHK?RP  _Frecuencia
  854.                           M     if (((_Frecuencia) > BANKA_END) & ((_Frecuencia) < (0f01h + BANKA_END)))
  855.                           M       if (((_Frecuencia) & 0f00h) != (PREV_BANK << 8))
  856.                           M         movlb   high (_Frecuencia)
  857.                           M PREV_BANK = high (_Frecuencia)
  858.                           M       endif
  859.                           M     endif
  860.                           M     if (low (_FreqMin) == 0)
  861.                           M         clrf    _Frecuencia
  862.                           M     else
  863. 000A28 0E0A               M         movlw   low (_FreqMin)
  864. 000A2A 6E1E               M         movwf   _Frecuencia
  865.                           M     endif
  866.                       00127         LABEL?L L00007  
  867.                           M         RST?RP
  868.                           M     if (PREV_BANK != 0)
  869.                           M         movlb   0
  870.                           M PREV_BANK = 0
  871.                           M     endif
  872.                           M     ifdef PM_USED
  873.                           M         LALL
  874.                           M L00007
  875.                           M         XALL
  876.                           M     else
  877. 000A2C                    M L00007
  878.                           M     endif
  879.                       00128         MOVE?BB _Frecuencia, PORTB
  880. 000A2C C01E FF81          M         movff   _Frecuencia, PORTB
  881.                       00129         LABEL?L L00005  
  882.                           M         RST?RP
  883.                           M     if (PREV_BANK != 0)
  884.                           M         movlb   0
  885.                           M PREV_BANK = 0
  886.                           M     endif
  887.                           M     ifdef PM_USED
  888.                           M         LALL
  889.                           M L00005
  890.                           M         XALL
  891.                           M     else
  892. 000A30                    M L00005
  893.                           M     endif
  894.                       00130         DIV?BCW _Frecuencia, 021h, _Modulante
  895.                           M     if (021h == 2)
  896.                           M         bcf     STATUS, C
  897.                           M         CHK?RP  _Frecuencia
  898.                           M         rrcf    _Frecuencia, W
  899.                           M         MOVE?AW _Modulante
  900. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 88
  901. LOC  OBJECT CODE     LINE SOURCE TEXT
  902.   VALUE
  903.                           M     else
  904.                           M         MOVE?BW _Frecuencia, R0
  905. 000A30 C01E F001          M         movff   _Frecuencia, R0
  906.                           M         CHK?RP  R0
  907.                           M     if (((R0)    > BANKA_END) & ((R0)    < (0f01h + BANKA_END)))
  908.                           M       if (((R0)    & 0f00h) != (PREV_BANK << 8))
  909.                           M         movlb   high (R0)
  910.                           M PREV_BANK = high (R0)
  911.                           M       endif
  912.                           M     endif
  913. 000A34 6A02               M         clrf    (R0)   + 1
  914.                           M         MOVE?CW 021h, R1
  915.                           M         CHK?RP  R1
  916.                           M     if (((R1)    > BANKA_END) & ((R1)    < (0f01h + BANKA_END)))
  917.                           M       if (((R1)    & 0f00h) != (PREV_BANK << 8))
  918.                           M         movlb   high (R1)
  919.                           M PREV_BANK = high (R1)
  920.                           M       endif
  921.                           M     endif
  922.                           M     ifdef USE_LINKER
  923.                           M         movlw   low (021h)
  924.                           M         movwf   R1
  925.                           M         movlw   high (021h)
  926.                           M         movwf   (R1)   + 1
  927.                           M     else
  928.                           M       if (low (021h) == 0)
  929.                           M         clrf    R1
  930.                           M       else
  931. 000A36 0E21               M         movlw   low (021h)
  932. 000A38 6E03               M         movwf   R1
  933.                           M       endif
  934.                           M       if ((high (021h)) == 0)
  935. 000A3A 6A04               M         clrf    (R1)   + 1
  936.                           M       else
  937.                           M         movlw   high (021h)
  938.                           M         movwf   (R1)   + 1
  939.                           M       endif
  940.                           M     endif
  941.                           M         L?CALL  DIV
  942.                           M         RST?RP
  943.                           M     if (PREV_BANK != 0)
  944.                           M         movlb   0
  945.                           M PREV_BANK = 0
  946.                           M     endif
  947.                           M 
  948.                           M     ifdef USE_LINKER
  949.                           M         call    DIV
  950.                           M     else
  951.                           M       if ((DIV)   < 1)
  952.                           M         call    DIV
  953.                           M       else
  954.                           M         if ((DIV)   > $)
  955.                           M         call    DIV
  956. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 89
  957. LOC  OBJECT CODE     LINE SOURCE TEXT
  958.   VALUE
  959.                           M         else
  960.                           M           if ((DIV)   < ($ - 3ffh))
  961. 000A3C EC9D F000          M         call    DIV
  962.                           M           else
  963.                           M         rcall   DIV
  964.                           M           endif
  965.                           M         endif
  966.                           M       endif
  967.                           M     endif
  968.                           M         MOVE?AWW R0, _Modulante
  969.                           M         MOVE?AB _Modulante
  970.                           M         CHK?RP  _Modulante
  971.                           M     if (((_Modulante) > BANKA_END) & ((_Modulante) < (0f01h + BANKA_END)))
  972.                           M       if (((_Modulante) & 0f00h) != (PREV_BANK << 8))
  973.                           M         movlb   high (_Modulante)
  974.                           M PREV_BANK = high (_Modulante)
  975.                           M       endif
  976.                           M     endif
  977. 000A40 6E1C               M         movwf   _Modulante
  978.                           M         MOVE?BB (R0)  + 1, (_Modulante) + 1
  979. 000A42 C002 F01D          M         movff   (R0) + 1, (_Modulante) + 1
  980.                           M     endif
  981.                       00131         MUL?WCW _Modulante, 021h, T1
  982.                           M         MOVE?WW _Modulante, R3
  983.                           M         MOVE?BB _Modulante, R3
  984. 000A46 C01C F007          M         movff   _Modulante, R3
  985.                           M         MOVE?BB (_Modulante) + 1, (R3) + 1
  986. 000A4A C01D F008          M         movff   (_Modulante) + 1, (R3) + 1
  987.                           M         MOVE?CW 021h, R1
  988.                           M         CHK?RP  R1
  989.                           M     if (((R1)    > BANKA_END) & ((R1)    < (0f01h + BANKA_END)))
  990.                           M       if (((R1)    & 0f00h) != (PREV_BANK << 8))
  991.                           M         movlb   high (R1)
  992.                           M PREV_BANK = high (R1)
  993.                           M       endif
  994.                           M     endif
  995.                           M     ifdef USE_LINKER
  996.                           M         movlw   low (021h)
  997.                           M         movwf   R1
  998.                           M         movlw   high (021h)
  999.                           M         movwf   (R1)   + 1
  1000.                           M     else
  1001.                           M       if (low (021h) == 0)
  1002.                           M         clrf    R1
  1003.                           M       else
  1004. 000A4E 0E21               M         movlw   low (021h)
  1005. 000A50 6E03               M         movwf   R1
  1006.                           M       endif
  1007.                           M       if ((high (021h)) == 0)
  1008. 000A52 6A04               M         clrf    (R1)   + 1
  1009.                           M       else
  1010.                           M         movlw   high (021h)
  1011.                           M         movwf   (R1)   + 1
  1012. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 90
  1013. LOC  OBJECT CODE     LINE SOURCE TEXT
  1014.   VALUE
  1015.                           M       endif
  1016.                           M     endif
  1017.                           M         L?CALL  MUL
  1018.                           M         RST?RP
  1019.                           M     if (PREV_BANK != 0)
  1020.                           M         movlb   0
  1021.                           M PREV_BANK = 0
  1022.                           M     endif
  1023.                           M 
  1024.                           M     ifdef USE_LINKER
  1025.                           M         call    MUL
  1026.                           M     else
  1027.                           M       if ((MUL)   < 1)
  1028.                           M         call    MUL
  1029.                           M       else
  1030.                           M         if ((MUL)   > $)
  1031.                           M         call    MUL
  1032.                           M         else
  1033.                           M           if ((MUL)   < ($ - 3ffh))
  1034. 000A54 ECB5 F000          M         call    MUL
  1035.                           M           else
  1036.                           M         rcall   MUL
  1037.                           M           endif
  1038.                           M         endif
  1039.                           M       endif
  1040.                           M     endif
  1041.                           M         MOVE?AWW R2, T1
  1042.                           M         MOVE?AB T1
  1043.                           M         CHK?RP  T1
  1044.                           M     if (((T1)    > BANKA_END) & ((T1)    < (0f01h + BANKA_END)))
  1045.                           M       if (((T1)    & 0f00h) != (PREV_BANK << 8))
  1046.                           M         movlb   high (T1)
  1047.                           M PREV_BANK = high (T1)
  1048.                           M       endif
  1049.                           M     endif
  1050. 000A58 6E13               M         movwf   T1
  1051.                           M         MOVE?BB (R2)  + 1, (T1)   + 1
  1052. 000A5A C006 F014          M         movff   (R2) + 1, (T1) + 1
  1053.                       00132         SUB?BWB _Frecuencia, T1, _Residuo
  1054.                           M     if (_Residuo == _Frecuencia)
  1055.                           M         MOVE?BA T1
  1056.                           M         CHK?RP  _Residuo
  1057.                           M         subwf   _Residuo, F
  1058.                           M     else
  1059.                           M         MOVE?BA T1
  1060.                           M         CHK?RP  T1
  1061.                           M     if (((T1)    > BANKA_END) & ((T1)    < (0f01h + BANKA_END)))
  1062.                           M       if (((T1)    & 0f00h) != (PREV_BANK << 8))
  1063.                           M         movlb   high (T1)
  1064.                           M PREV_BANK = high (T1)
  1065.                           M       endif
  1066.                           M     endif
  1067. 000A5E 5013               M         movf    T1,  W
  1068. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 91
  1069. LOC  OBJECT CODE     LINE SOURCE TEXT
  1070.   VALUE
  1071.                           M         CHK?RP  _Frecuencia
  1072.                           M     if (((_Frecuencia) > BANKA_END) & ((_Frecuencia) < (0f01h + BANKA_END)))
  1073.                           M       if (((_Frecuencia) & 0f00h) != (PREV_BANK << 8))
  1074.                           M         movlb   high (_Frecuencia)
  1075.                           M PREV_BANK = high (_Frecuencia)
  1076.                           M       endif
  1077.                           M     endif
  1078. 000A60 5C1E               M         subwf   _Frecuencia, W
  1079.                           M         MOVE?AB _Residuo
  1080.                           M         CHK?RP  _Residuo
  1081.                           M     if (((_Residuo) > BANKA_END) & ((_Residuo) < (0f01h + BANKA_END)))
  1082.                           M       if (((_Residuo) & 0f00h) != (PREV_BANK << 8))
  1083.                           M         movlb   high (_Residuo)
  1084.                           M PREV_BANK = high (_Residuo)
  1085.                           M       endif
  1086.                           M     endif
  1087. 000A62 6E1F               M         movwf   _Residuo
  1088.                           M     endif
  1089.                       00133         MUL?BCB _Residuo, 00Ah, _Residuo
  1090.                           M         MOVE?BW _Residuo, R3
  1091. 000A64 C01F F007          M         movff   _Residuo, R3
  1092.                           M         CHK?RP  R3
  1093.                           M     if (((R3)    > BANKA_END) & ((R3)    < (0f01h + BANKA_END)))
  1094.                           M       if (((R3)    & 0f00h) != (PREV_BANK << 8))
  1095.                           M         movlb   high (R3)
  1096.                           M PREV_BANK = high (R3)
  1097.                           M       endif
  1098.                           M     endif
  1099. 000A68 6A08               M         clrf    (R3)   + 1
  1100.                           M         MOVE?CW 00Ah, R1
  1101.                           M         CHK?RP  R1
  1102.                           M     if (((R1)    > BANKA_END) & ((R1)    < (0f01h + BANKA_END)))
  1103.                           M       if (((R1)    & 0f00h) != (PREV_BANK << 8))
  1104.                           M         movlb   high (R1)
  1105.                           M PREV_BANK = high (R1)
  1106.                           M       endif
  1107.                           M     endif
  1108.                           M     ifdef USE_LINKER
  1109.                           M         movlw   low (00Ah)
  1110.                           M         movwf   R1
  1111.                           M         movlw   high (00Ah)
  1112.                           M         movwf   (R1)   + 1
  1113.                           M     else
  1114.                           M       if (low (00Ah) == 0)
  1115.                           M         clrf    R1
  1116.                           M       else
  1117. 000A6A 0E0A               M         movlw   low (00Ah)
  1118. 000A6C 6E03               M         movwf   R1
  1119.                           M       endif
  1120.                           M       if ((high (00Ah)) == 0)
  1121. 000A6E 6A04               M         clrf    (R1)   + 1
  1122.                           M       else
  1123.                           M         movlw   high (00Ah)
  1124. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 92
  1125. LOC  OBJECT CODE     LINE SOURCE TEXT
  1126.   VALUE
  1127.                           M         movwf   (R1)   + 1
  1128.                           M       endif
  1129.                           M     endif
  1130.                           M         L?CALL  MUL
  1131.                           M         RST?RP
  1132.                           M     if (PREV_BANK != 0)
  1133.                           M         movlb   0
  1134.                           M PREV_BANK = 0
  1135.                           M     endif
  1136.                           M 
  1137.                           M     ifdef USE_LINKER
  1138.                           M         call    MUL
  1139.                           M     else
  1140.                           M       if ((MUL)   < 1)
  1141.                           M         call    MUL
  1142.                           M       else
  1143.                           M         if ((MUL)   > $)
  1144.                           M         call    MUL
  1145.                           M         else
  1146.                           M           if ((MUL)   < ($ - 3ffh))
  1147. 000A70 ECB5 F000          M         call    MUL
  1148.                           M           else
  1149.                           M         rcall   MUL
  1150.                           M           endif
  1151.                           M         endif
  1152.                           M       endif
  1153.                           M     endif
  1154.                           M         MOVE?AB _Residuo
  1155.                           M         CHK?RP  _Residuo
  1156.                           M     if (((_Residuo) > BANKA_END) & ((_Residuo) < (0f01h + BANKA_END)))
  1157.                           M       if (((_Residuo) & 0f00h) != (PREV_BANK << 8))
  1158.                           M         movlb   high (_Residuo)
  1159.                           M PREV_BANK = high (_Residuo)
  1160.                           M       endif
  1161.                           M     endif
  1162. 000A74 6E1F               M         movwf   _Residuo
  1163.                       00134         DIV?BCB _Residuo, 021h, _Residuo
  1164.                           M     if (021h == 2)
  1165.                           M         bcf     STATUS, C
  1166.                           M       if (_Residuo == _Residuo)
  1167.                           M         CHK?RP  _Residuo
  1168.                           M         rrcf    _Residuo, F
  1169.                           M       else
  1170.                           M         CHK?RP  _Residuo
  1171.                           M         rrcf    _Residuo, W
  1172.                           M         MOVE?AB _Residuo
  1173.                           M       endif
  1174.                           M     else
  1175.                           M         MOVE?BW _Residuo, R0
  1176. 000A76 C01F F001          M         movff   _Residuo, R0
  1177.                           M         CHK?RP  R0
  1178.                           M     if (((R0)    > BANKA_END) & ((R0)    < (0f01h + BANKA_END)))
  1179.                           M       if (((R0)    & 0f00h) != (PREV_BANK << 8))
  1180. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 93
  1181. LOC  OBJECT CODE     LINE SOURCE TEXT
  1182.   VALUE
  1183.                           M         movlb   high (R0)
  1184.                           M PREV_BANK = high (R0)
  1185.                           M       endif
  1186.                           M     endif
  1187. 000A7A 6A02               M         clrf    (R0)   + 1
  1188.                           M         MOVE?CW 021h, R1
  1189.                           M         CHK?RP  R1
  1190.                           M     if (((R1)    > BANKA_END) & ((R1)    < (0f01h + BANKA_END)))
  1191.                           M       if (((R1)    & 0f00h) != (PREV_BANK << 8))
  1192.                           M         movlb   high (R1)
  1193.                           M PREV_BANK = high (R1)
  1194.                           M       endif
  1195.                           M     endif
  1196.                           M     ifdef USE_LINKER
  1197.                           M         movlw   low (021h)
  1198.                           M         movwf   R1
  1199.                           M         movlw   high (021h)
  1200.                           M         movwf   (R1)   + 1
  1201.                           M     else
  1202.                           M       if (low (021h) == 0)
  1203.                           M         clrf    R1
  1204.                           M       else
  1205. 000A7C 0E21               M         movlw   low (021h)
  1206. 000A7E 6E03               M         movwf   R1
  1207.                           M       endif
  1208.                           M       if ((high (021h)) == 0)
  1209. 000A80 6A04               M         clrf    (R1)   + 1
  1210.                           M       else
  1211.                           M         movlw   high (021h)
  1212.                           M         movwf   (R1)   + 1
  1213.                           M       endif
  1214.                           M     endif
  1215.                           M         L?CALL  DIV
  1216.                           M         RST?RP
  1217.                           M     if (PREV_BANK != 0)
  1218.                           M         movlb   0
  1219.                           M PREV_BANK = 0
  1220.                           M     endif
  1221.                           M 
  1222.                           M     ifdef USE_LINKER
  1223.                           M         call    DIV
  1224.                           M     else
  1225.                           M       if ((DIV)   < 1)
  1226.                           M         call    DIV
  1227.                           M       else
  1228.                           M         if ((DIV)   > $)
  1229.                           M         call    DIV
  1230.                           M         else
  1231.                           M           if ((DIV)   < ($ - 3ffh))
  1232. 000A82 EC9D F000          M         call    DIV
  1233.                           M           else
  1234.                           M         rcall   DIV
  1235.                           M           endif
  1236. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 94
  1237. LOC  OBJECT CODE     LINE SOURCE TEXT
  1238.   VALUE
  1239.                           M         endif
  1240.                           M       endif
  1241.                           M     endif
  1242.                           M         MOVE?AB _Residuo
  1243.                           M         CHK?RP  _Residuo
  1244.                           M     if (((_Residuo) > BANKA_END) & ((_Residuo) < (0f01h + BANKA_END)))
  1245.                           M       if (((_Residuo) & 0f00h) != (PREV_BANK << 8))
  1246.                           M         movlb   high (_Residuo)
  1247.                           M PREV_BANK = high (_Residuo)
  1248.                           M       endif
  1249.                           M     endif
  1250. 000A86 6E1F               M         movwf   _Residuo
  1251.                           M     endif
  1252.                       00135         USBSERVICE?     
  1253.                           M ;  local        Label1
  1254.                           M         L?CALL  USBCheckBusStatus       ; Must use polling method
  1255.                           M         RST?RP
  1256.                           M     if (PREV_BANK != 0)
  1257.                           M         movlb   0
  1258.                           M PREV_BANK = 0
  1259.                           M     endif
  1260.                           M 
  1261.                           M     ifdef USE_LINKER
  1262.                           M         call    USBCheckBusStatus
  1263.                           M     else
  1264.                           M       if ((USBCheckBusStatus) < 1)
  1265.                           M         call    USBCheckBusStatus
  1266.                           M       else
  1267.                           M         if ((USBCheckBusStatus) > $)
  1268.                           M         call    USBCheckBusStatus
  1269.                           M         else
  1270.                           M           if ((USBCheckBusStatus) < ($ - 3ffh))
  1271.                           M         call    USBCheckBusStatus
  1272.                           M           else
  1273. 000A88 DE01               M         rcall   USBCheckBusStatus
  1274.                           M           endif
  1275.                           M         endif
  1276.                           M       endif
  1277.                           M     endif
  1278.                           M ;        BIT?GOTO 1, UCFG, UTEYE, Label1
  1279.                           M         L?CALL  USBDriverService        ; Interrupt or polling method
  1280.                           M         RST?RP
  1281.                           M     if (PREV_BANK != 0)
  1282.                           M         movlb   0
  1283.                           M PREV_BANK = 0
  1284.                           M     endif
  1285.                           M 
  1286.                           M     ifdef USE_LINKER
  1287.                           M         call    USBDriverService
  1288.                           M     else
  1289.                           M       if ((USBDriverService) < 1)
  1290.                           M         call    USBDriverService
  1291.                           M       else
  1292. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 95
  1293. LOC  OBJECT CODE     LINE SOURCE TEXT
  1294.   VALUE
  1295.                           M         if ((USBDriverService) > $)
  1296.                           M         call    USBDriverService
  1297.                           M         else
  1298.                           M           if ((USBDriverService) < ($ - 3ffh))
  1299.                           M         call    USBDriverService
  1300.                           M           else
  1301. 000A8A DE1B               M         rcall   USBDriverService
  1302.                           M           endif
  1303.                           M         endif
  1304.                           M       endif
  1305.                           M     endif
  1306.                           M ;Label1
  1307.                           M         L?CALL  DUNN            ; Do our cleanup
  1308.                           M         RST?RP
  1309.                           M     if (PREV_BANK != 0)
  1310.                           M         movlb   0
  1311.                           M PREV_BANK = 0
  1312.                           M     endif
  1313.                           M 
  1314.                           M     ifdef USE_LINKER
  1315.                           M         call    DUNN
  1316.                           M     else
  1317.                           M       if ((DUNN)  < 1)
  1318.                           M         call    DUNN
  1319.                           M       else
  1320.                           M         if ((DUNN)  > $)
  1321.                           M         call    DUNN
  1322.                           M         else
  1323.                           M           if ((DUNN)  < ($ - 3ffh))
  1324. 000A8C ECD4 F000          M         call    DUNN
  1325.                           M           else
  1326.                           M         rcall   DUNN
  1327.                           M           endif
  1328.                           M         endif
  1329.                           M       endif
  1330.                           M     endif
  1331.                       00136         LCDOUT?C        0FEh
  1332.                           M         MOVE?CA 0FEh
  1333. 000A90 0EFE               M         movlw   low (0FEh)
  1334.                           M         L?CALL  LCDOUT
  1335.                           M         RST?RP
  1336.                           M     if (PREV_BANK != 0)
  1337.                           M         movlb   0
  1338.                           M PREV_BANK = 0
  1339.                           M     endif
  1340.                           M 
  1341.                           M     ifdef USE_LINKER
  1342.                           M         call    LCDOUT
  1343.                           M     else
  1344.                           M       if ((LCDOUT) < 1)
  1345.                           M         call    LCDOUT
  1346.                           M       else
  1347.                           M         if ((LCDOUT) > $)
  1348. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 96
  1349. LOC  OBJECT CODE     LINE SOURCE TEXT
  1350.   VALUE
  1351.                           M         call    LCDOUT
  1352.                           M         else
  1353.                           M           if ((LCDOUT) < ($ - 3ffh))
  1354. 000A92 EC23 F000          M         call    LCDOUT
  1355.                           M           else
  1356.                           M         rcall   LCDOUT
  1357.                           M           endif
  1358.                           M         endif
  1359.                           M       endif
  1360.                           M     endif
  1361.                       00137         LCDOUT?C        0C0h
  1362.                           M         MOVE?CA 0C0h
  1363. 000A96 0EC0               M         movlw   low (0C0h)
  1364.                           M         L?CALL  LCDOUT
  1365.                           M         RST?RP
  1366.                           M     if (PREV_BANK != 0)
  1367.                           M         movlb   0
  1368.                           M PREV_BANK = 0
  1369.                           M     endif
  1370.                           M 
  1371.                           M     ifdef USE_LINKER
  1372.                           M         call    LCDOUT
  1373.                           M     else
  1374.                           M       if ((LCDOUT) < 1)
  1375.                           M         call    LCDOUT
  1376.                           M       else
  1377.                           M         if ((LCDOUT) > $)
  1378.                           M         call    LCDOUT
  1379.                           M         else
  1380.                           M           if ((LCDOUT) < ($ - 3ffh))
  1381. 000A98 EC23 F000          M         call    LCDOUT
  1382.                           M           else
  1383.                           M         rcall   LCDOUT
  1384.                           M           endif
  1385.                           M         endif
  1386.                           M       endif
  1387.                           M     endif
  1388.                       00138         LCDOUT?C        046h
  1389.                           M         MOVE?CA 046h
  1390. 000A9C 0E46               M         movlw   low (046h)
  1391.                           M         L?CALL  LCDOUT
  1392.                           M         RST?RP
  1393.                           M     if (PREV_BANK != 0)
  1394.                           M         movlb   0
  1395.                           M PREV_BANK = 0
  1396.                           M     endif
  1397.                           M 
  1398.                           M     ifdef USE_LINKER
  1399.                           M         call    LCDOUT
  1400.                           M     else
  1401.                           M       if ((LCDOUT) < 1)
  1402.                           M         call    LCDOUT
  1403.                           M       else
  1404. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 97
  1405. LOC  OBJECT CODE     LINE SOURCE TEXT
  1406.   VALUE
  1407.                           M         if ((LCDOUT) > $)
  1408.                           M         call    LCDOUT
  1409.                           M         else
  1410.                           M           if ((LCDOUT) < ($ - 3ffh))
  1411. 000A9E EC23 F000          M         call    LCDOUT
  1412.                           M           else
  1413.                           M         rcall   LCDOUT
  1414.                           M           endif
  1415.                           M         endif
  1416.                           M       endif
  1417.                           M     endif
  1418.                       00139         LCDOUT?C        03Dh
  1419.                           M         MOVE?CA 03Dh
  1420. 000AA2 0E3D               M         movlw   low (03Dh)
  1421.                           M         L?CALL  LCDOUT
  1422.                           M         RST?RP
  1423.                           M     if (PREV_BANK != 0)
  1424.                           M         movlb   0
  1425.                           M PREV_BANK = 0
  1426.                           M     endif
  1427.                           M 
  1428.                           M     ifdef USE_LINKER
  1429.                           M         call    LCDOUT
  1430.                           M     else
  1431.                           M       if ((LCDOUT) < 1)
  1432.                           M         call    LCDOUT
  1433.                           M       else
  1434.                           M         if ((LCDOUT) > $)
  1435.                           M         call    LCDOUT
  1436.                           M         else
  1437.                           M           if ((LCDOUT) < ($ - 3ffh))
  1438. 000AA4 EC23 F000          M         call    LCDOUT
  1439.                           M           else
  1440.                           M         rcall   LCDOUT
  1441.                           M           endif
  1442.                           M         endif
  1443.                           M       endif
  1444.                           M     endif
  1445.                       00140         LCDOUTD?W       _Modulante
  1446.                           M         MOVE?WWA _Modulante, R2
  1447.                           M         MOVE?BB (_Modulante) + 1, (R2) + 1
  1448. 000AA8 C01D F006          M         movff   (_Modulante) + 1, (R2) + 1
  1449.                           M         MOVE?BA _Modulante
  1450.                           M         CHK?RP  _Modulante
  1451.                           M     if (((_Modulante) > BANKA_END) & ((_Modulante) < (0f01h + BANKA_END)))
  1452.                           M       if (((_Modulante) & 0f00h) != (PREV_BANK << 8))
  1453.                           M         movlb   high (_Modulante)
  1454.                           M PREV_BANK = high (_Modulante)
  1455.                           M       endif
  1456.                           M     endif
  1457. 000AAC 501C               M         movf    _Modulante, W
  1458.                           M         L?CALL  LCDOUTDECL
  1459.                           M         RST?RP
  1460. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 98
  1461. LOC  OBJECT CODE     LINE SOURCE TEXT
  1462.   VALUE
  1463.                           M     if (PREV_BANK != 0)
  1464.                           M         movlb   0
  1465.                           M PREV_BANK = 0
  1466.                           M     endif
  1467.                           M 
  1468.                           M     ifdef USE_LINKER
  1469.                           M         call    LCDOUTDECL
  1470.                           M     else
  1471.                           M       if ((LCDOUTDECL) < 1)
  1472.                           M         call    LCDOUTDECL
  1473.                           M       else
  1474.                           M         if ((LCDOUTDECL) > $)
  1475.                           M         call    LCDOUTDECL
  1476.                           M         else
  1477.                           M           if ((LCDOUTDECL) < ($ - 3ffh))
  1478. 000AAE EC05 F000          M         call    LCDOUTDECL
  1479.                           M           else
  1480.                           M         rcall   LCDOUTDECL
  1481.                           M           endif
  1482.                           M         endif
  1483.                           M       endif
  1484.                           M     endif
  1485.                       00141         LCDOUT?C        02Eh
  1486.                           M         MOVE?CA 02Eh
  1487. 000AB2 0E2E               M         movlw   low (02Eh)
  1488.                           M         L?CALL  LCDOUT
  1489.                           M         RST?RP
  1490.                           M     if (PREV_BANK != 0)
  1491.                           M         movlb   0
  1492.                           M PREV_BANK = 0
  1493.                           M     endif
  1494.                           M 
  1495.                           M     ifdef USE_LINKER
  1496.                           M         call    LCDOUT
  1497.                           M     else
  1498.                           M       if ((LCDOUT) < 1)
  1499.                           M         call    LCDOUT
  1500.                           M       else
  1501.                           M         if ((LCDOUT) > $)
  1502.                           M         call    LCDOUT
  1503.                           M         else
  1504.                           M           if ((LCDOUT) < ($ - 3ffh))
  1505. 000AB4 EC23 F000          M         call    LCDOUT
  1506.                           M           else
  1507.                           M         rcall   LCDOUT
  1508.                           M           endif
  1509.                           M         endif
  1510.                           M       endif
  1511.                           M     endif
  1512.                       00142         LCDOUTD?B       _Residuo
  1513.                           M         MOVE?BA _Residuo
  1514.                           M         CHK?RP  _Residuo
  1515.                           M     if (((_Residuo) > BANKA_END) & ((_Residuo) < (0f01h + BANKA_END)))
  1516. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 99
  1517. LOC  OBJECT CODE     LINE SOURCE TEXT
  1518.   VALUE
  1519.                           M       if (((_Residuo) & 0f00h) != (PREV_BANK << 8))
  1520.                           M         movlb   high (_Residuo)
  1521.                           M PREV_BANK = high (_Residuo)
  1522.                           M       endif
  1523.                           M     endif
  1524. 000AB8 501F               M         movf    _Residuo, W
  1525.                           M         L?CALL  LCDOUTDEC
  1526.                           M         RST?RP
  1527.                           M     if (PREV_BANK != 0)
  1528.                           M         movlb   0
  1529.                           M PREV_BANK = 0
  1530.                           M     endif
  1531.                           M 
  1532.                           M     ifdef USE_LINKER
  1533.                           M         call    LCDOUTDEC
  1534.                           M     else
  1535.                           M       if ((LCDOUTDEC) < 1)
  1536.                           M         call    LCDOUTDEC
  1537.                           M       else
  1538.                           M         if ((LCDOUTDEC) > $)
  1539.                           M         call    LCDOUTDEC
  1540.                           M         else
  1541.                           M           if ((LCDOUTDEC) < ($ - 3ffh))
  1542. 000ABA EC04 F000          M         call    LCDOUTDEC
  1543.                           M           else
  1544.                           M         rcall   LCDOUTDEC
  1545.                           M           endif
  1546.                           M         endif
  1547.                           M       endif
  1548.                           M     endif
  1549.                       00143         LCDOUT?C        020h
  1550.                           M         MOVE?CA 020h
  1551. 000ABE 0E20               M         movlw   low (020h)
  1552.                           M         L?CALL  LCDOUT
  1553.                           M         RST?RP
  1554.                           M     if (PREV_BANK != 0)
  1555.                           M         movlb   0
  1556.                           M PREV_BANK = 0
  1557.                           M     endif
  1558.                           M 
  1559.                           M     ifdef USE_LINKER
  1560.                           M         call    LCDOUT
  1561.                           M     else
  1562.                           M       if ((LCDOUT) < 1)
  1563.                           M         call    LCDOUT
  1564.                           M       else
  1565.                           M         if ((LCDOUT) > $)
  1566.                           M         call    LCDOUT
  1567.                           M         else
  1568.                           M           if ((LCDOUT) < ($ - 3ffh))
  1569. 000AC0 EC23 F000          M         call    LCDOUT
  1570.                           M           else
  1571.                           M         rcall   LCDOUT
  1572. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 100
  1573. LOC  OBJECT CODE     LINE SOURCE TEXT
  1574.   VALUE
  1575.                           M           endif
  1576.                           M         endif
  1577.                           M       endif
  1578.                           M     endif
  1579.                       00144         LCDOUT?C        04Dh
  1580.                           M         MOVE?CA 04Dh
  1581. 000AC4 0E4D               M         movlw   low (04Dh)
  1582.                           M         L?CALL  LCDOUT
  1583.                           M         RST?RP
  1584.                           M     if (PREV_BANK != 0)
  1585.                           M         movlb   0
  1586.                           M PREV_BANK = 0
  1587.                           M     endif
  1588.                           M 
  1589.                           M     ifdef USE_LINKER
  1590.                           M         call    LCDOUT
  1591.                           M     else
  1592.                           M       if ((LCDOUT) < 1)
  1593.                           M         call    LCDOUT
  1594.                           M       else
  1595.                           M         if ((LCDOUT) > $)
  1596.                           M         call    LCDOUT
  1597.                           M         else
  1598.                           M           if ((LCDOUT) < ($ - 3ffh))
  1599. 000AC6 EC23 F000          M         call    LCDOUT
  1600.                           M           else
  1601.                           M         rcall   LCDOUT
  1602.                           M           endif
  1603.                           M         endif
  1604.                           M       endif
  1605.                           M     endif
  1606.                       00145         LCDOUT?C        068h
  1607.                           M         MOVE?CA 068h
  1608. 000ACA 0E68               M         movlw   low (068h)
  1609.                           M         L?CALL  LCDOUT
  1610.                           M         RST?RP
  1611.                           M     if (PREV_BANK != 0)
  1612.                           M         movlb   0
  1613.                           M PREV_BANK = 0
  1614.                           M     endif
  1615.                           M 
  1616.                           M     ifdef USE_LINKER
  1617.                           M         call    LCDOUT
  1618.                           M     else
  1619.                           M       if ((LCDOUT) < 1)
  1620.                           M         call    LCDOUT
  1621.                           M       else
  1622.                           M         if ((LCDOUT) > $)
  1623.                           M         call    LCDOUT
  1624.                           M         else
  1625.                           M           if ((LCDOUT) < ($ - 3ffh))
  1626. 000ACC EC23 F000          M         call    LCDOUT
  1627.                           M           else
  1628. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 101
  1629. LOC  OBJECT CODE     LINE SOURCE TEXT
  1630.   VALUE
  1631.                           M         rcall   LCDOUT
  1632.                           M           endif
  1633.                           M         endif
  1634.                           M       endif
  1635.                           M     endif
  1636.                       00146         LCDOUT?C        07Ah
  1637.                           M         MOVE?CA 07Ah
  1638. 000AD0 0E7A               M         movlw   low (07Ah)
  1639.                           M         L?CALL  LCDOUT
  1640.                           M         RST?RP
  1641.                           M     if (PREV_BANK != 0)
  1642.                           M         movlb   0
  1643.                           M PREV_BANK = 0
  1644.                           M     endif
  1645.                           M 
  1646.                           M     ifdef USE_LINKER
  1647.                           M         call    LCDOUT
  1648.                           M     else
  1649.                           M       if ((LCDOUT) < 1)
  1650.                           M         call    LCDOUT
  1651.                           M       else
  1652.                           M         if ((LCDOUT) > $)
  1653.                           M         call    LCDOUT
  1654.                           M         else
  1655.                           M           if ((LCDOUT) < ($ - 3ffh))
  1656. 000AD2 EC23 F000          M         call    LCDOUT
  1657.                           M           else
  1658.                           M         rcall   LCDOUT
  1659.                           M           endif
  1660.                           M         endif
  1661.                           M       endif
  1662.                           M     endif
  1663.                       00147         LCDOUT?C        020h
  1664.                           M         MOVE?CA 020h
  1665. 000AD6 0E20               M         movlw   low (020h)
  1666.                           M         L?CALL  LCDOUT
  1667.                           M         RST?RP
  1668.                           M     if (PREV_BANK != 0)
  1669.                           M         movlb   0
  1670.                           M PREV_BANK = 0
  1671.                           M     endif
  1672.                           M 
  1673.                           M     ifdef USE_LINKER
  1674.                           M         call    LCDOUT
  1675.                           M     else
  1676.                           M       if ((LCDOUT) < 1)
  1677.                           M         call    LCDOUT
  1678.                           M       else
  1679.                           M         if ((LCDOUT) > $)
  1680.                           M         call    LCDOUT
  1681.                           M         else
  1682.                           M           if ((LCDOUT) < ($ - 3ffh))
  1683. 000AD8 EC23 F000          M         call    LCDOUT
  1684. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 102
  1685. LOC  OBJECT CODE     LINE SOURCE TEXT
  1686.   VALUE
  1687.                           M           else
  1688.                           M         rcall   LCDOUT
  1689.                           M           endif
  1690.                           M         endif
  1691.                           M       endif
  1692.                           M     endif
  1693.                       00148         LCDOUT?C        020h
  1694.                           M         MOVE?CA 020h
  1695. 000ADC 0E20               M         movlw   low (020h)
  1696.                           M         L?CALL  LCDOUT
  1697.                           M         RST?RP
  1698.                           M     if (PREV_BANK != 0)
  1699.                           M         movlb   0
  1700.                           M PREV_BANK = 0
  1701.                           M     endif
  1702.                           M 
  1703.                           M     ifdef USE_LINKER
  1704.                           M         call    LCDOUT
  1705.                           M     else
  1706.                           M       if ((LCDOUT) < 1)
  1707.                           M         call    LCDOUT
  1708.                           M       else
  1709.                           M         if ((LCDOUT) > $)
  1710.                           M         call    LCDOUT
  1711.                           M         else
  1712.                           M           if ((LCDOUT) < ($ - 3ffh))
  1713. 000ADE EC23 F000          M         call    LCDOUT
  1714.                           M           else
  1715.                           M         rcall   LCDOUT
  1716.                           M           endif
  1717.                           M         endif
  1718.                           M       endif
  1719.                           M     endif
  1720.                       00149         LCDOUT?C        020h
  1721.                           M         MOVE?CA 020h
  1722. 000AE2 0E20               M         movlw   low (020h)
  1723.                           M         L?CALL  LCDOUT
  1724.                           M         RST?RP
  1725.                           M     if (PREV_BANK != 0)
  1726.                           M         movlb   0
  1727.                           M PREV_BANK = 0
  1728.                           M     endif
  1729.                           M 
  1730.                           M     ifdef USE_LINKER
  1731.                           M         call    LCDOUT
  1732.                           M     else
  1733.                           M       if ((LCDOUT) < 1)
  1734.                           M         call    LCDOUT
  1735.                           M       else
  1736.                           M         if ((LCDOUT) > $)
  1737.                           M         call    LCDOUT
  1738.                           M         else
  1739.                           M           if ((LCDOUT) < ($ - 3ffh))
  1740. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 103
  1741. LOC  OBJECT CODE     LINE SOURCE TEXT
  1742.   VALUE
  1743. 000AE4 EC23 F000          M         call    LCDOUT
  1744.                           M           else
  1745.                           M         rcall   LCDOUT
  1746.                           M           endif
  1747.                           M         endif
  1748.                           M       endif
  1749.                           M     endif
  1750.                       00150         LCDOUT?C        020h
  1751.                           M         MOVE?CA 020h
  1752. 000AE8 0E20               M         movlw   low (020h)
  1753.                           M         L?CALL  LCDOUT
  1754.                           M         RST?RP
  1755.                           M     if (PREV_BANK != 0)
  1756.                           M         movlb   0
  1757.                           M PREV_BANK = 0
  1758.                           M     endif
  1759.                           M 
  1760.                           M     ifdef USE_LINKER
  1761.                           M         call    LCDOUT
  1762.                           M     else
  1763.                           M       if ((LCDOUT) < 1)
  1764.                           M         call    LCDOUT
  1765.                           M       else
  1766.                           M         if ((LCDOUT) > $)
  1767.                           M         call    LCDOUT
  1768.                           M         else
  1769.                           M           if ((LCDOUT) < ($ - 3ffh))
  1770. 000AEA EC23 F000          M         call    LCDOUT
  1771.                           M           else
  1772.                           M         rcall   LCDOUT
  1773.                           M           endif
  1774.                           M         endif
  1775.                           M       endif
  1776.                           M     endif
  1777.                       00151         USBSERVICE?     
  1778.                           M ;  local        Label1
  1779.                           M         L?CALL  USBCheckBusStatus       ; Must use polling method
  1780.                           M         RST?RP
  1781.                           M     if (PREV_BANK != 0)
  1782.                           M         movlb   0
  1783.                           M PREV_BANK = 0
  1784.                           M     endif
  1785.                           M 
  1786.                           M     ifdef USE_LINKER
  1787.                           M         call    USBCheckBusStatus
  1788.                           M     else
  1789.                           M       if ((USBCheckBusStatus) < 1)
  1790.                           M         call    USBCheckBusStatus
  1791.                           M       else
  1792.                           M         if ((USBCheckBusStatus) > $)
  1793.                           M         call    USBCheckBusStatus
  1794.                           M         else
  1795.                           M           if ((USBCheckBusStatus) < ($ - 3ffh))
  1796. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 104
  1797. LOC  OBJECT CODE     LINE SOURCE TEXT
  1798.   VALUE
  1799. 000AEE EC46 F003          M         call    USBCheckBusStatus
  1800.                           M           else
  1801.                           M         rcall   USBCheckBusStatus
  1802.                           M           endif
  1803.                           M         endif
  1804.                           M       endif
  1805.                           M     endif
  1806.                           M ;        BIT?GOTO 1, UCFG, UTEYE, Label1
  1807.                           M         L?CALL  USBDriverService        ; Interrupt or polling method
  1808.                           M         RST?RP
  1809.                           M     if (PREV_BANK != 0)
  1810.                           M         movlb   0
  1811.                           M PREV_BANK = 0
  1812.                           M     endif
  1813.                           M 
  1814.                           M     ifdef USE_LINKER
  1815.                           M         call    USBDriverService
  1816.                           M     else
  1817.                           M       if ((USBDriverService) < 1)
  1818.                           M         call    USBDriverService
  1819.                           M       else
  1820.                           M         if ((USBDriverService) > $)
  1821.                           M         call    USBDriverService
  1822.                           M         else
  1823.                           M           if ((USBDriverService) < ($ - 3ffh))
  1824. 000AF2 EC61 F003          M         call    USBDriverService
  1825.                           M           else
  1826.                           M         rcall   USBDriverService
  1827.                           M           endif
  1828.                           M         endif
  1829.                           M       endif
  1830.                           M     endif
  1831.                           M ;Label1
  1832.                           M         L?CALL  DUNN            ; Do our cleanup
  1833.                           M         RST?RP
  1834.                           M     if (PREV_BANK != 0)
  1835.                           M         movlb   0
  1836.                           M PREV_BANK = 0
  1837.                           M     endif
  1838.                           M 
  1839.                           M     ifdef USE_LINKER
  1840.                           M         call    DUNN
  1841.                           M     else
  1842.                           M       if ((DUNN)  < 1)
  1843.                           M         call    DUNN
  1844.                           M       else
  1845.                           M         if ((DUNN)  > $)
  1846.                           M         call    DUNN
  1847.                           M         else
  1848.                           M           if ((DUNN)  < ($ - 3ffh))
  1849. 000AF6 ECD4 F000          M         call    DUNN
  1850.                           M           else
  1851.                           M         rcall   DUNN
  1852. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 105
  1853. LOC  OBJECT CODE     LINE SOURCE TEXT
  1854.   VALUE
  1855.                           M           endif
  1856.                           M         endif
  1857.                           M       endif
  1858.                           M     endif
  1859.                       00152         GOTO?L  _ProgramStart
  1860.                           M         L?GOTO  _ProgramStart
  1861.                           M     ifdef USE_LINKER
  1862.                           M         CLRWDT?
  1863.                           M     else
  1864.                           M       if ($ == (_ProgramStart))
  1865.                           M         CLRWDT?
  1866.                           M       endif
  1867.                           M     endif
  1868.                           M 
  1869.                           M         RST?RP
  1870.                           M     if (PREV_BANK != 0)
  1871.                           M         movlb   0
  1872.                           M PREV_BANK = 0
  1873.                           M     endif
  1874.                           M 
  1875.                           M     ifdef USE_LINKER
  1876.                           M         goto    _ProgramStart
  1877.                           M     else
  1878.                           M       if ((_ProgramStart) < 1)
  1879.                           M         goto    _ProgramStart
  1880.                           M       else
  1881.                           M         if ((_ProgramStart) > $)
  1882.                           M         goto    _ProgramStart
  1883.                           M         else
  1884.                           M           if ((_ProgramStart) < ($ - 3ffh))
  1885.                           M         goto    _ProgramStart
  1886.                           M           else
  1887. 000AFA D76E               M         bra     _ProgramStart
  1888.                           M           endif
  1889.                           M         endif
  1890.                           M       endif
  1891.                           M     endif
  1892.                       00153 
  1893.                       00154         LABEL?L _DoUSBIn        
  1894.                           M         RST?RP
  1895.                           M     if (PREV_BANK != 0)
  1896.                           M         movlb   0
  1897.                           M PREV_BANK = 0
  1898.                           M     endif
  1899.                           M     ifdef PM_USED
  1900.                           M         LALL
  1901.                           M _DoUSBIn
  1902.                           M         XALL
  1903.                           M     else
  1904. 000AFC                    M _DoUSBIn
  1905.                           M     endif
  1906.                       00155         MOVE?CB _USBBufferSizeRX, _USBBufferCount
  1907.                           M         CHK?RP  _USBBufferCount
  1908. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 106
  1909. LOC  OBJECT CODE     LINE SOURCE TEXT
  1910.   VALUE
  1911.                           M     if (((_USBBufferCount) > BANKA_END) & ((_USBBufferCount) < (0f01h + BANKA_END)))
  1912.                           M       if (((_USBBufferCount) & 0f00h) != (PREV_BANK << 8))
  1913.                           M         movlb   high (_USBBufferCount)
  1914.                           M PREV_BANK = high (_USBBufferCount)
  1915.                           M       endif
  1916.                           M     endif
  1917.                           M     if (low (_USBBufferSizeRX) == 0)
  1918.                           M         clrf    _USBBufferCount
  1919.                           M     else
  1920. 000AFC 0E10               M         movlw   low (_USBBufferSizeRX)
  1921. 000AFE 6E20               M         movwf   _USBBufferCount
  1922.                           M     endif
  1923.                       00156         USBSERVICE?     
  1924.                           M ;  local        Label1
  1925.                           M         L?CALL  USBCheckBusStatus       ; Must use polling method
  1926.                           M         RST?RP
  1927.                           M     if (PREV_BANK != 0)
  1928.                           M         movlb   0
  1929.                           M PREV_BANK = 0
  1930.                           M     endif
  1931.                           M 
  1932.                           M     ifdef USE_LINKER
  1933.                           M         call    USBCheckBusStatus
  1934.                           M     else
  1935.                           M       if ((USBCheckBusStatus) < 1)
  1936.                           M         call    USBCheckBusStatus
  1937.                           M       else
  1938.                           M         if ((USBCheckBusStatus) > $)
  1939.                           M         call    USBCheckBusStatus
  1940.                           M         else
  1941.                           M           if ((USBCheckBusStatus) < ($ - 3ffh))
  1942. 000B00 EC46 F003          M         call    USBCheckBusStatus
  1943.                           M           else
  1944.                           M         rcall   USBCheckBusStatus
  1945.                           M           endif
  1946.                           M         endif
  1947.                           M       endif
  1948.                           M     endif
  1949.                           M ;        BIT?GOTO 1, UCFG, UTEYE, Label1
  1950.                           M         L?CALL  USBDriverService        ; Interrupt or polling method
  1951.                           M         RST?RP
  1952.                           M     if (PREV_BANK != 0)
  1953.                           M         movlb   0
  1954.                           M PREV_BANK = 0
  1955.                           M     endif
  1956.                           M 
  1957.                           M     ifdef USE_LINKER
  1958.                           M         call    USBDriverService
  1959.                           M     else
  1960.                           M       if ((USBDriverService) < 1)
  1961.                           M         call    USBDriverService
  1962.                           M       else
  1963.                           M         if ((USBDriverService) > $)
  1964. MPASM  5.22                         USBFM.ASM   1-25-2010  15:59:32         PAGE 107
  1965. LOC  OBJECT CODE     LINE SOURCE TEXT
  1966.   VALUE
  1967.                           M         call    USBDriverService
  1968.                           M         else
  1969.                           M           if ((USBDriverService) < ($ - 3ffh))
  1970. 000B04 EC61 F003          M         call    USBDriverService
  1971.                           M           else
  1972.                           M         rcall   USBDriverService
  1973.                           M           endif
  1974.                           M         endif
  1975.                           M       endif
  1976.                           M     endif
  1977.                           M ;Label1
  1978.                           M         L?CALL  DUNN            ; Do our cleanup
  1979.                           M         RST?RP
  1980.                           M     if (PREV_BANK != 0)
  1981.                           M         movlb   0
  1982.                           M PREV_BANK = 0
  1983.                           M     endif
  1984.                           M 
  1985.                           M     ifdef USE_LINKER