Home » Archimedes archive » Acorn User » AU 1998-12.adf » Regulars » RTR/Serial3

RTR/Serial3

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Acorn User » AU 1998-12.adf » Regulars
Filename: RTR/Serial3
Read OK:
File size: 1870 bytes
Load address: 0000
Exec address: 0000
File contents
PIC 16C84 Assembler V1.4 by Mike Cook
File:- ADFS::Square.$.Develop.SerialPIC.SerialIO
Assembled on :- Thu,02 Jul 1998 at 17:02:31

;Serial I/O User Port
;For an 10 MHz clock
;A0 - Serial out
;A1 - Serial in
;A2 - CTS allows serial input
;A3 - RTS output held until this is low
;A4 - I/O mode 0 = Input mode   1 = Output mode

;Note for 16F84 invert the state of the PWRTE
              list   P=16C84


       C             equ 0          
       PCL           equ 2          
       Z             equ 2          
       PORTB         equ 6          
       PORTA         equ 5          
       TRISB         equ 86H          
       TRISA         equ 85H          
       EECON1        equ 88H          
       EEDATA        equ 8          
       EEADR         equ 9          
       STATUS        equ 3          
       RP0           equ 5          
       INC           equ 1          
       cts           equ 2          
       rts           equ 3          
       sBuf          equ 0ch          ;Serial send buffer
       Scount        equ 0dh          ;Tempory Counter
       Cdown         equ 0eh          ;Time delay countdown
       rBuf          equ 0fh          ;Recieve buffer

;
              org    0
0000   2833   goto   Start          

;Recieve a serial byte
Rx:

0001   1105   bcf    PORTA,cts      ;Allow for incomming data
0002   3008   movlw  8              ;Number of data bits to get
0003   008D   movwf  Scount         
Sb:
0004   1885   btfsc  PORTA,1        ;Hold until start bit
0005   2804   goto   Sb             
0006   1505   bsf    PORTA,cts      ;Stop any more incomming
0007   2028   call   hDelay         ;Half a baud delay
Rnb:
0008   1003   bcf    STATUS,C       ;Clear the carry bit
0009   0C8F   rrf    rBuf,f         ;Prepare for next bit  
000A   202B   call   rDelay         ;Full baud delay for recieve
000B   1885   btfsc  PORTA,1        ;Test input
000C   178F   bsf    rBuf,7         ;Set if needed
000D   0B8D   decfsz Scount,f       ;See if finished
000E   2808   goto   Rnb            ;Round again if not
000F   202B   call   rDelay         ;Allow for stop bit to start
0010   0008   return                


;Send a serial byte
Send:

0011   1985   btfsc  PORTA,rts      ;Only proceed when rts is low
0012   2811   goto   Send           
0013   3009   movlw  9              ;Number of data bits to send
0014   008D   movwf  Scount         
0015   1005   bcf    PORTA,0        ;Start bit
0016   2025   call   cDelay         ;Extra delay compensation
Sloop:
0017   202E   call   Delay          
0018   180C   btfsc  sBuf,0         ;Set the next bit
0019   1405   bsf    PORTA,0        
001A   1C0C   btfss  sBuf,0         
001B   1005   bcf    PORTA,0        
001C   0C8C   rrf    sBuf,f         ;Shift for next time
001D   0B8D   decfsz Scount,f       
001E   2817   goto   Sloop          ;Round until finished
001F   1405   bsf    PORTA,0        ;Stop bit
0020   2025   call   cDelay         ;Extra delay compensation
0021   202E   call   Delay          
0022   202E   call   Delay          
0023   2025   call   cDelay         ;For good measure
0024   0008   return                

cDelay:

0025   3009   movlw  9              ;Small delay at end of send
0026   008E   movwf  Cdown          
0027   2830   goto   Dloop          

hDelay:

0028   3015   movlw  21             ;half delay for serial recieve 10MHz clock
0029   008E   movwf  Cdown          ; 19,200 Baud rate
002A   2830   goto   Dloop          

rDelay:

002B   3026   movlw  38             ;Delay for serial recieve 10MHz clock
002C   008E   movwf  Cdown          ; 19,200 Baud rate
002D   2830   goto   Dloop          

Delay:

002E   3027   movlw  39             ;Delay for serial send 10MHz clock
002F   008E   movwf  Cdown          ; 19,200 Baud rate
Dloop:
0030   0B8E   decfsz Cdown,f        
0031   2830   goto   Dloop          
0032   0008   return                


Start:

0033   1683   bsf    STATUS,RP0     ;SELECT REGISTER BANK 1
0034   301A   movlw  1Ah            ;Bits 4,3 & 2 inputs
0035   0085   movwf  TRISA^80H      
0036   1283   bcf    STATUS,RP0     ;SELECT REGISTER BANK 0
0037   1A05   btfsc  PORTA,4        ;See if in input or output mode
0038   2846   goto   InLoop         

0039   1683   bsf    STATUS,RP0     ;SELECT REGISTER BANK 1

003A   3000   movlw  0              ;All port B to outputs
003B   0086   movwf  TRISB^80H      
003C   1283   bcf    STATUS,RP0     ;SELECT REGISTER BANK 0

003D   1405   bsf    PORTA,0        ;Serial at Mark

003E   1505   bsf    PORTA,cts      ;CTS disabled


outMain:

003F   2001   call   Rx             ;Get byte to output
0040   080F   movf   rBuf,w         ;Byte to send
0041   0086   movwf  PORTB          ;Output it
0042   0806   movf   PORTB,w        ;Get output state
0043   008C   movwf  sBuf           ;Ready to output it
0044   2011   call   Send           ;Send it back to computer
0045   283F   goto   outMain        

InLoop:


0046   1683   bsf    STATUS,RP0     ;SELECT REGISTER BANK 1

0047   30FF   movlw  0ffh           ;All port B to inputs
0048   0086   movwf  TRISB^80H      
0049   1381   bcf    1,7            ;Enable pull up resistors
004A   1283   bcf    STATUS,RP0     ;SELECT REGISTER BANK 0

004B   1405   bsf    PORTA,0        ;Serial at Mark

004C   1505   bsf    PORTA,cts      ;CTS disabled


inMain:

004D   2001   call   Rx             ;Get byte to initiate read
004E   0806   movf   PORTB,w        ;Get input state
004F   008C   movwf  sBuf           ;Ready to output it
0050   2011   call   Send           ;Send it back to computer
0051   284D   goto   inMain         

end

Memory Usage Map ('X' = Used, '-' = Unused)

0000   : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0040   : XXXXXXX-XXXXXXXX XX-------------- ---------------- ----------------

33 Lables & Constants:-
Hex    Name
0000   C
0002   PCL
0002   Z
0006   PORTB
0005   PORTA
0086   TRISB
0085   TRISA
0088   EECON1
0008   EEDATA
0009   EEADR
0003   STATUS
0005   RP0
0001   INC
0002   cts
0003   rts
000C   sBuf
000D   Scount
000E   Cdown
000F   rBuf
0001   Rx
0004   Sb
0008   Rnb
0011   Send
0017   Sloop
0025   cDelay
0028   hDelay
002B   rDelay
002E   Delay
0030   Dloop
0033   Start
003F   outMain
0046   InLoop
004D   inMain

0 Errors
00000000  50 49 43 20 31 36 43 38  34 20 41 73 73 65 6d 62  |PIC 16C84 Assemb|
00000010  6c 65 72 20 56 31 2e 34  20 62 79 20 4d 69 6b 65  |ler V1.4 by Mike|
00000020  20 43 6f 6f 6b 0a 46 69  6c 65 3a 2d 20 41 44 46  | Cook.File:- ADF|
00000030  53 3a 3a 53 71 75 61 72  65 2e 24 2e 44 65 76 65  |S::Square.$.Deve|
00000040  6c 6f 70 2e 53 65 72 69  61 6c 50 49 43 2e 53 65  |lop.SerialPIC.Se|
00000050  72 69 61 6c 49 4f 0a 41  73 73 65 6d 62 6c 65 64  |rialIO.Assembled|
00000060  20 6f 6e 20 3a 2d 20 54  68 75 2c 30 32 20 4a 75  | on :- Thu,02 Ju|
00000070  6c 20 31 39 39 38 20 61  74 20 31 37 3a 30 32 3a  |l 1998 at 17:02:|
00000080  33 31 0a 0a 3b 53 65 72  69 61 6c 20 49 2f 4f 20  |31..;Serial I/O |
00000090  55 73 65 72 20 50 6f 72  74 0a 3b 46 6f 72 20 61  |User Port.;For a|
000000a0  6e 20 31 30 20 4d 48 7a  20 63 6c 6f 63 6b 0a 3b  |n 10 MHz clock.;|
000000b0  41 30 20 2d 20 53 65 72  69 61 6c 20 6f 75 74 0a  |A0 - Serial out.|
000000c0  3b 41 31 20 2d 20 53 65  72 69 61 6c 20 69 6e 0a  |;A1 - Serial in.|
000000d0  3b 41 32 20 2d 20 43 54  53 20 61 6c 6c 6f 77 73  |;A2 - CTS allows|
000000e0  20 73 65 72 69 61 6c 20  69 6e 70 75 74 0a 3b 41  | serial input.;A|
000000f0  33 20 2d 20 52 54 53 20  6f 75 74 70 75 74 20 68  |3 - RTS output h|
00000100  65 6c 64 20 75 6e 74 69  6c 20 74 68 69 73 20 69  |eld until this i|
00000110  73 20 6c 6f 77 0a 3b 41  34 20 2d 20 49 2f 4f 20  |s low.;A4 - I/O |
00000120  6d 6f 64 65 20 30 20 3d  20 49 6e 70 75 74 20 6d  |mode 0 = Input m|
00000130  6f 64 65 20 20 20 31 20  3d 20 4f 75 74 70 75 74  |ode   1 = Output|
00000140  20 6d 6f 64 65 0a 0a 3b  4e 6f 74 65 20 66 6f 72  | mode..;Note for|
00000150  20 31 36 46 38 34 20 69  6e 76 65 72 74 20 74 68  | 16F84 invert th|
00000160  65 20 73 74 61 74 65 20  6f 66 20 74 68 65 20 50  |e state of the P|
00000170  57 52 54 45 0a 20 20 20  20 20 20 20 20 20 20 20  |WRTE.           |
00000180  20 20 20 6c 69 73 74 20  20 20 50 3d 31 36 43 38  |   list   P=16C8|
00000190  34 0a 0a 0a 20 20 20 20  20 20 20 43 20 20 20 20  |4...       C    |
000001a0  20 20 20 20 20 20 20 20  20 65 71 75 20 30 20 20  |         equ 0  |
000001b0  20 20 20 20 20 20 20 20  0a 20 20 20 20 20 20 20  |        .       |
000001c0  50 43 4c 20 20 20 20 20  20 20 20 20 20 20 65 71  |PCL           eq|
000001d0  75 20 32 20 20 20 20 20  20 20 20 20 20 0a 20 20  |u 2          .  |
000001e0  20 20 20 20 20 5a 20 20  20 20 20 20 20 20 20 20  |     Z          |
000001f0  20 20 20 65 71 75 20 32  20 20 20 20 20 20 20 20  |   equ 2        |
00000200  20 20 0a 20 20 20 20 20  20 20 50 4f 52 54 42 20  |  .       PORTB |
00000210  20 20 20 20 20 20 20 20  65 71 75 20 36 20 20 20  |        equ 6   |
00000220  20 20 20 20 20 20 20 0a  20 20 20 20 20 20 20 50  |       .       P|
00000230  4f 52 54 41 20 20 20 20  20 20 20 20 20 65 71 75  |ORTA         equ|
00000240  20 35 20 20 20 20 20 20  20 20 20 20 0a 20 20 20  | 5          .   |
00000250  20 20 20 20 54 52 49 53  42 20 20 20 20 20 20 20  |    TRISB       |
00000260  20 20 65 71 75 20 38 36  48 20 20 20 20 20 20 20  |  equ 86H       |
00000270  20 20 20 0a 20 20 20 20  20 20 20 54 52 49 53 41  |   .       TRISA|
00000280  20 20 20 20 20 20 20 20  20 65 71 75 20 38 35 48  |         equ 85H|
00000290  20 20 20 20 20 20 20 20  20 20 0a 20 20 20 20 20  |          .     |
000002a0  20 20 45 45 43 4f 4e 31  20 20 20 20 20 20 20 20  |  EECON1        |
000002b0  65 71 75 20 38 38 48 20  20 20 20 20 20 20 20 20  |equ 88H         |
000002c0  20 0a 20 20 20 20 20 20  20 45 45 44 41 54 41 20  | .       EEDATA |
000002d0  20 20 20 20 20 20 20 65  71 75 20 38 20 20 20 20  |       equ 8    |
000002e0  20 20 20 20 20 20 0a 20  20 20 20 20 20 20 45 45  |      .       EE|
000002f0  41 44 52 20 20 20 20 20  20 20 20 20 65 71 75 20  |ADR         equ |
00000300  39 20 20 20 20 20 20 20  20 20 20 0a 20 20 20 20  |9          .    |
00000310  20 20 20 53 54 41 54 55  53 20 20 20 20 20 20 20  |   STATUS       |
00000320  20 65 71 75 20 33 20 20  20 20 20 20 20 20 20 20  | equ 3          |
00000330  0a 20 20 20 20 20 20 20  52 50 30 20 20 20 20 20  |.       RP0     |
00000340  20 20 20 20 20 20 65 71  75 20 35 20 20 20 20 20  |      equ 5     |
00000350  20 20 20 20 20 0a 20 20  20 20 20 20 20 49 4e 43  |     .       INC|
00000360  20 20 20 20 20 20 20 20  20 20 20 65 71 75 20 31  |           equ 1|
00000370  20 20 20 20 20 20 20 20  20 20 0a 20 20 20 20 20  |          .     |
00000380  20 20 63 74 73 20 20 20  20 20 20 20 20 20 20 20  |  cts           |
00000390  65 71 75 20 32 20 20 20  20 20 20 20 20 20 20 0a  |equ 2          .|
000003a0  20 20 20 20 20 20 20 72  74 73 20 20 20 20 20 20  |       rts      |
000003b0  20 20 20 20 20 65 71 75  20 33 20 20 20 20 20 20  |     equ 3      |
000003c0  20 20 20 20 0a 20 20 20  20 20 20 20 73 42 75 66  |    .       sBuf|
000003d0  20 20 20 20 20 20 20 20  20 20 65 71 75 20 30 63  |          equ 0c|
000003e0  68 20 20 20 20 20 20 20  20 20 20 3b 53 65 72 69  |h          ;Seri|
000003f0  61 6c 20 73 65 6e 64 20  62 75 66 66 65 72 0a 20  |al send buffer. |
00000400  20 20 20 20 20 20 53 63  6f 75 6e 74 20 20 20 20  |      Scount    |
00000410  20 20 20 20 65 71 75 20  30 64 68 20 20 20 20 20  |    equ 0dh     |
00000420  20 20 20 20 20 3b 54 65  6d 70 6f 72 79 20 43 6f  |     ;Tempory Co|
00000430  75 6e 74 65 72 0a 20 20  20 20 20 20 20 43 64 6f  |unter.       Cdo|
00000440  77 6e 20 20 20 20 20 20  20 20 20 65 71 75 20 30  |wn         equ 0|
00000450  65 68 20 20 20 20 20 20  20 20 20 20 3b 54 69 6d  |eh          ;Tim|
00000460  65 20 64 65 6c 61 79 20  63 6f 75 6e 74 64 6f 77  |e delay countdow|
00000470  6e 0a 20 20 20 20 20 20  20 72 42 75 66 20 20 20  |n.       rBuf   |
00000480  20 20 20 20 20 20 20 65  71 75 20 30 66 68 20 20  |       equ 0fh  |
00000490  20 20 20 20 20 20 20 20  3b 52 65 63 69 65 76 65  |        ;Recieve|
000004a0  20 62 75 66 66 65 72 0a  0a 3b 0a 20 20 20 20 20  | buffer..;.     |
000004b0  20 20 20 20 20 20 20 20  20 6f 72 67 20 20 20 20  |         org    |
000004c0  30 0a 30 30 30 30 20 20  20 32 38 33 33 20 20 20  |0.0000   2833   |
000004d0  67 6f 74 6f 20 20 20 53  74 61 72 74 20 20 20 20  |goto   Start    |
000004e0  20 20 20 20 20 20 0a 0a  3b 52 65 63 69 65 76 65  |      ..;Recieve|
000004f0  20 61 20 73 65 72 69 61  6c 20 62 79 74 65 0a 52  | a serial byte.R|
00000500  78 3a 0a 0a 30 30 30 31  20 20 20 31 31 30 35 20  |x:..0001   1105 |
00000510  20 20 62 63 66 20 20 20  20 50 4f 52 54 41 2c 63  |  bcf    PORTA,c|
00000520  74 73 20 20 20 20 20 20  3b 41 6c 6c 6f 77 20 66  |ts      ;Allow f|
00000530  6f 72 20 69 6e 63 6f 6d  6d 69 6e 67 20 64 61 74  |or incomming dat|
00000540  61 0a 30 30 30 32 20 20  20 33 30 30 38 20 20 20  |a.0002   3008   |
00000550  6d 6f 76 6c 77 20 20 38  20 20 20 20 20 20 20 20  |movlw  8        |
00000560  20 20 20 20 20 20 3b 4e  75 6d 62 65 72 20 6f 66  |      ;Number of|
00000570  20 64 61 74 61 20 62 69  74 73 20 74 6f 20 67 65  | data bits to ge|
00000580  74 0a 30 30 30 33 20 20  20 30 30 38 44 20 20 20  |t.0003   008D   |
00000590  6d 6f 76 77 66 20 20 53  63 6f 75 6e 74 20 20 20  |movwf  Scount   |
000005a0  20 20 20 20 20 20 0a 53  62 3a 0a 30 30 30 34 20  |      .Sb:.0004 |
000005b0  20 20 31 38 38 35 20 20  20 62 74 66 73 63 20 20  |  1885   btfsc  |
000005c0  50 4f 52 54 41 2c 31 20  20 20 20 20 20 20 20 3b  |PORTA,1        ;|
000005d0  48 6f 6c 64 20 75 6e 74  69 6c 20 73 74 61 72 74  |Hold until start|
000005e0  20 62 69 74 0a 30 30 30  35 20 20 20 32 38 30 34  | bit.0005   2804|
000005f0  20 20 20 67 6f 74 6f 20  20 20 53 62 20 20 20 20  |   goto   Sb    |
00000600  20 20 20 20 20 20 20 20  20 0a 30 30 30 36 20 20  |         .0006  |
00000610  20 31 35 30 35 20 20 20  62 73 66 20 20 20 20 50  | 1505   bsf    P|
00000620  4f 52 54 41 2c 63 74 73  20 20 20 20 20 20 3b 53  |ORTA,cts      ;S|
00000630  74 6f 70 20 61 6e 79 20  6d 6f 72 65 20 69 6e 63  |top any more inc|
00000640  6f 6d 6d 69 6e 67 0a 30  30 30 37 20 20 20 32 30  |omming.0007   20|
00000650  32 38 20 20 20 63 61 6c  6c 20 20 20 68 44 65 6c  |28   call   hDel|
00000660  61 79 20 20 20 20 20 20  20 20 20 3b 48 61 6c 66  |ay         ;Half|
00000670  20 61 20 62 61 75 64 20  64 65 6c 61 79 0a 52 6e  | a baud delay.Rn|
00000680  62 3a 0a 30 30 30 38 20  20 20 31 30 30 33 20 20  |b:.0008   1003  |
00000690  20 62 63 66 20 20 20 20  53 54 41 54 55 53 2c 43  | bcf    STATUS,C|
000006a0  20 20 20 20 20 20 20 3b  43 6c 65 61 72 20 74 68  |       ;Clear th|
000006b0  65 20 63 61 72 72 79 20  62 69 74 0a 30 30 30 39  |e carry bit.0009|
000006c0  20 20 20 30 43 38 46 20  20 20 72 72 66 20 20 20  |   0C8F   rrf   |
000006d0  20 72 42 75 66 2c 66 20  20 20 20 20 20 20 20 20  | rBuf,f         |
000006e0  3b 50 72 65 70 61 72 65  20 66 6f 72 20 6e 65 78  |;Prepare for nex|
000006f0  74 20 62 69 74 20 20 0a  30 30 30 41 20 20 20 32  |t bit  .000A   2|
00000700  30 32 42 20 20 20 63 61  6c 6c 20 20 20 72 44 65  |02B   call   rDe|
00000710  6c 61 79 20 20 20 20 20  20 20 20 20 3b 46 75 6c  |lay         ;Ful|
00000720  6c 20 62 61 75 64 20 64  65 6c 61 79 20 66 6f 72  |l baud delay for|
00000730  20 72 65 63 69 65 76 65  0a 30 30 30 42 20 20 20  | recieve.000B   |
00000740  31 38 38 35 20 20 20 62  74 66 73 63 20 20 50 4f  |1885   btfsc  PO|
00000750  52 54 41 2c 31 20 20 20  20 20 20 20 20 3b 54 65  |RTA,1        ;Te|
00000760  73 74 20 69 6e 70 75 74  0a 30 30 30 43 20 20 20  |st input.000C   |
00000770  31 37 38 46 20 20 20 62  73 66 20 20 20 20 72 42  |178F   bsf    rB|
00000780  75 66 2c 37 20 20 20 20  20 20 20 20 20 3b 53 65  |uf,7         ;Se|
00000790  74 20 69 66 20 6e 65 65  64 65 64 0a 30 30 30 44  |t if needed.000D|
000007a0  20 20 20 30 42 38 44 20  20 20 64 65 63 66 73 7a  |   0B8D   decfsz|
000007b0  20 53 63 6f 75 6e 74 2c  66 20 20 20 20 20 20 20  | Scount,f       |
000007c0  3b 53 65 65 20 69 66 20  66 69 6e 69 73 68 65 64  |;See if finished|
000007d0  0a 30 30 30 45 20 20 20  32 38 30 38 20 20 20 67  |.000E   2808   g|
000007e0  6f 74 6f 20 20 20 52 6e  62 20 20 20 20 20 20 20  |oto   Rnb       |
000007f0  20 20 20 20 20 3b 52 6f  75 6e 64 20 61 67 61 69  |     ;Round agai|
00000800  6e 20 69 66 20 6e 6f 74  0a 30 30 30 46 20 20 20  |n if not.000F   |
00000810  32 30 32 42 20 20 20 63  61 6c 6c 20 20 20 72 44  |202B   call   rD|
00000820  65 6c 61 79 20 20 20 20  20 20 20 20 20 3b 41 6c  |elay         ;Al|
00000830  6c 6f 77 20 66 6f 72 20  73 74 6f 70 20 62 69 74  |low for stop bit|
00000840  20 74 6f 20 73 74 61 72  74 0a 30 30 31 30 20 20  | to start.0010  |
00000850  20 30 30 30 38 20 20 20  72 65 74 75 72 6e 20 20  | 0008   return  |
00000860  20 20 20 20 20 20 20 20  20 20 20 20 20 20 0a 0a  |              ..|
00000870  0a 3b 53 65 6e 64 20 61  20 73 65 72 69 61 6c 20  |.;Send a serial |
00000880  62 79 74 65 0a 53 65 6e  64 3a 0a 0a 30 30 31 31  |byte.Send:..0011|
00000890  20 20 20 31 39 38 35 20  20 20 62 74 66 73 63 20  |   1985   btfsc |
000008a0  20 50 4f 52 54 41 2c 72  74 73 20 20 20 20 20 20  | PORTA,rts      |
000008b0  3b 4f 6e 6c 79 20 70 72  6f 63 65 65 64 20 77 68  |;Only proceed wh|
000008c0  65 6e 20 72 74 73 20 69  73 20 6c 6f 77 0a 30 30  |en rts is low.00|
000008d0  31 32 20 20 20 32 38 31  31 20 20 20 67 6f 74 6f  |12   2811   goto|
000008e0  20 20 20 53 65 6e 64 20  20 20 20 20 20 20 20 20  |   Send         |
000008f0  20 20 0a 30 30 31 33 20  20 20 33 30 30 39 20 20  |  .0013   3009  |
00000900  20 6d 6f 76 6c 77 20 20  39 20 20 20 20 20 20 20  | movlw  9       |
00000910  20 20 20 20 20 20 20 3b  4e 75 6d 62 65 72 20 6f  |       ;Number o|
00000920  66 20 64 61 74 61 20 62  69 74 73 20 74 6f 20 73  |f data bits to s|
00000930  65 6e 64 0a 30 30 31 34  20 20 20 30 30 38 44 20  |end.0014   008D |
00000940  20 20 6d 6f 76 77 66 20  20 53 63 6f 75 6e 74 20  |  movwf  Scount |
00000950  20 20 20 20 20 20 20 20  0a 30 30 31 35 20 20 20  |        .0015   |
00000960  31 30 30 35 20 20 20 62  63 66 20 20 20 20 50 4f  |1005   bcf    PO|
00000970  52 54 41 2c 30 20 20 20  20 20 20 20 20 3b 53 74  |RTA,0        ;St|
00000980  61 72 74 20 62 69 74 0a  30 30 31 36 20 20 20 32  |art bit.0016   2|
00000990  30 32 35 20 20 20 63 61  6c 6c 20 20 20 63 44 65  |025   call   cDe|
000009a0  6c 61 79 20 20 20 20 20  20 20 20 20 3b 45 78 74  |lay         ;Ext|
000009b0  72 61 20 64 65 6c 61 79  20 63 6f 6d 70 65 6e 73  |ra delay compens|
000009c0  61 74 69 6f 6e 0a 53 6c  6f 6f 70 3a 0a 30 30 31  |ation.Sloop:.001|
000009d0  37 20 20 20 32 30 32 45  20 20 20 63 61 6c 6c 20  |7   202E   call |
000009e0  20 20 44 65 6c 61 79 20  20 20 20 20 20 20 20 20  |  Delay         |
000009f0  20 0a 30 30 31 38 20 20  20 31 38 30 43 20 20 20  | .0018   180C   |
00000a00  62 74 66 73 63 20 20 73  42 75 66 2c 30 20 20 20  |btfsc  sBuf,0   |
00000a10  20 20 20 20 20 20 3b 53  65 74 20 74 68 65 20 6e  |      ;Set the n|
00000a20  65 78 74 20 62 69 74 0a  30 30 31 39 20 20 20 31  |ext bit.0019   1|
00000a30  34 30 35 20 20 20 62 73  66 20 20 20 20 50 4f 52  |405   bsf    POR|
00000a40  54 41 2c 30 20 20 20 20  20 20 20 20 0a 30 30 31  |TA,0        .001|
00000a50  41 20 20 20 31 43 30 43  20 20 20 62 74 66 73 73  |A   1C0C   btfss|
00000a60  20 20 73 42 75 66 2c 30  20 20 20 20 20 20 20 20  |  sBuf,0        |
00000a70  20 0a 30 30 31 42 20 20  20 31 30 30 35 20 20 20  | .001B   1005   |
00000a80  62 63 66 20 20 20 20 50  4f 52 54 41 2c 30 20 20  |bcf    PORTA,0  |
00000a90  20 20 20 20 20 20 0a 30  30 31 43 20 20 20 30 43  |      .001C   0C|
00000aa0  38 43 20 20 20 72 72 66  20 20 20 20 73 42 75 66  |8C   rrf    sBuf|
00000ab0  2c 66 20 20 20 20 20 20  20 20 20 3b 53 68 69 66  |,f         ;Shif|
00000ac0  74 20 66 6f 72 20 6e 65  78 74 20 74 69 6d 65 0a  |t for next time.|
00000ad0  30 30 31 44 20 20 20 30  42 38 44 20 20 20 64 65  |001D   0B8D   de|
00000ae0  63 66 73 7a 20 53 63 6f  75 6e 74 2c 66 20 20 20  |cfsz Scount,f   |
00000af0  20 20 20 20 0a 30 30 31  45 20 20 20 32 38 31 37  |    .001E   2817|
00000b00  20 20 20 67 6f 74 6f 20  20 20 53 6c 6f 6f 70 20  |   goto   Sloop |
00000b10  20 20 20 20 20 20 20 20  20 3b 52 6f 75 6e 64 20  |         ;Round |
00000b20  75 6e 74 69 6c 20 66 69  6e 69 73 68 65 64 0a 30  |until finished.0|
00000b30  30 31 46 20 20 20 31 34  30 35 20 20 20 62 73 66  |01F   1405   bsf|
00000b40  20 20 20 20 50 4f 52 54  41 2c 30 20 20 20 20 20  |    PORTA,0     |
00000b50  20 20 20 3b 53 74 6f 70  20 62 69 74 0a 30 30 32  |   ;Stop bit.002|
00000b60  30 20 20 20 32 30 32 35  20 20 20 63 61 6c 6c 20  |0   2025   call |
00000b70  20 20 63 44 65 6c 61 79  20 20 20 20 20 20 20 20  |  cDelay        |
00000b80  20 3b 45 78 74 72 61 20  64 65 6c 61 79 20 63 6f  | ;Extra delay co|
00000b90  6d 70 65 6e 73 61 74 69  6f 6e 0a 30 30 32 31 20  |mpensation.0021 |
00000ba0  20 20 32 30 32 45 20 20  20 63 61 6c 6c 20 20 20  |  202E   call   |
00000bb0  44 65 6c 61 79 20 20 20  20 20 20 20 20 20 20 0a  |Delay          .|
00000bc0  30 30 32 32 20 20 20 32  30 32 45 20 20 20 63 61  |0022   202E   ca|
00000bd0  6c 6c 20 20 20 44 65 6c  61 79 20 20 20 20 20 20  |ll   Delay      |
00000be0  20 20 20 20 0a 30 30 32  33 20 20 20 32 30 32 35  |    .0023   2025|
00000bf0  20 20 20 63 61 6c 6c 20  20 20 63 44 65 6c 61 79  |   call   cDelay|
00000c00  20 20 20 20 20 20 20 20  20 3b 46 6f 72 20 67 6f  |         ;For go|
00000c10  6f 64 20 6d 65 61 73 75  72 65 0a 30 30 32 34 20  |od measure.0024 |
00000c20  20 20 30 30 30 38 20 20  20 72 65 74 75 72 6e 20  |  0008   return |
00000c30  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |               .|
00000c40  0a 63 44 65 6c 61 79 3a  0a 0a 30 30 32 35 20 20  |.cDelay:..0025  |
00000c50  20 33 30 30 39 20 20 20  6d 6f 76 6c 77 20 20 39  | 3009   movlw  9|
00000c60  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3b 53  |              ;S|
00000c70  6d 61 6c 6c 20 64 65 6c  61 79 20 61 74 20 65 6e  |mall delay at en|
00000c80  64 20 6f 66 20 73 65 6e  64 0a 30 30 32 36 20 20  |d of send.0026  |
00000c90  20 30 30 38 45 20 20 20  6d 6f 76 77 66 20 20 43  | 008E   movwf  C|
00000ca0  64 6f 77 6e 20 20 20 20  20 20 20 20 20 20 0a 30  |down          .0|
00000cb0  30 32 37 20 20 20 32 38  33 30 20 20 20 67 6f 74  |027   2830   got|
00000cc0  6f 20 20 20 44 6c 6f 6f  70 20 20 20 20 20 20 20  |o   Dloop       |
00000cd0  20 20 20 0a 0a 68 44 65  6c 61 79 3a 0a 0a 30 30  |   ..hDelay:..00|
00000ce0  32 38 20 20 20 33 30 31  35 20 20 20 6d 6f 76 6c  |28   3015   movl|
00000cf0  77 20 20 32 31 20 20 20  20 20 20 20 20 20 20 20  |w  21           |
00000d00  20 20 3b 68 61 6c 66 20  64 65 6c 61 79 20 66 6f  |  ;half delay fo|
00000d10  72 20 73 65 72 69 61 6c  20 72 65 63 69 65 76 65  |r serial recieve|
00000d20  20 31 30 4d 48 7a 20 63  6c 6f 63 6b 0a 30 30 32  | 10MHz clock.002|
00000d30  39 20 20 20 30 30 38 45  20 20 20 6d 6f 76 77 66  |9   008E   movwf|
00000d40  20 20 43 64 6f 77 6e 20  20 20 20 20 20 20 20 20  |  Cdown         |
00000d50  20 3b 20 31 39 2c 32 30  30 20 42 61 75 64 20 72  | ; 19,200 Baud r|
00000d60  61 74 65 0a 30 30 32 41  20 20 20 32 38 33 30 20  |ate.002A   2830 |
00000d70  20 20 67 6f 74 6f 20 20  20 44 6c 6f 6f 70 20 20  |  goto   Dloop  |
00000d80  20 20 20 20 20 20 20 20  0a 0a 72 44 65 6c 61 79  |        ..rDelay|
00000d90  3a 0a 0a 30 30 32 42 20  20 20 33 30 32 36 20 20  |:..002B   3026  |
00000da0  20 6d 6f 76 6c 77 20 20  33 38 20 20 20 20 20 20  | movlw  38      |
00000db0  20 20 20 20 20 20 20 3b  44 65 6c 61 79 20 66 6f  |       ;Delay fo|
00000dc0  72 20 73 65 72 69 61 6c  20 72 65 63 69 65 76 65  |r serial recieve|
00000dd0  20 31 30 4d 48 7a 20 63  6c 6f 63 6b 0a 30 30 32  | 10MHz clock.002|
00000de0  43 20 20 20 30 30 38 45  20 20 20 6d 6f 76 77 66  |C   008E   movwf|
00000df0  20 20 43 64 6f 77 6e 20  20 20 20 20 20 20 20 20  |  Cdown         |
00000e00  20 3b 20 31 39 2c 32 30  30 20 42 61 75 64 20 72  | ; 19,200 Baud r|
00000e10  61 74 65 0a 30 30 32 44  20 20 20 32 38 33 30 20  |ate.002D   2830 |
00000e20  20 20 67 6f 74 6f 20 20  20 44 6c 6f 6f 70 20 20  |  goto   Dloop  |
00000e30  20 20 20 20 20 20 20 20  0a 0a 44 65 6c 61 79 3a  |        ..Delay:|
00000e40  0a 0a 30 30 32 45 20 20  20 33 30 32 37 20 20 20  |..002E   3027   |
00000e50  6d 6f 76 6c 77 20 20 33  39 20 20 20 20 20 20 20  |movlw  39       |
00000e60  20 20 20 20 20 20 3b 44  65 6c 61 79 20 66 6f 72  |      ;Delay for|
00000e70  20 73 65 72 69 61 6c 20  73 65 6e 64 20 31 30 4d  | serial send 10M|
00000e80  48 7a 20 63 6c 6f 63 6b  0a 30 30 32 46 20 20 20  |Hz clock.002F   |
00000e90  30 30 38 45 20 20 20 6d  6f 76 77 66 20 20 43 64  |008E   movwf  Cd|
00000ea0  6f 77 6e 20 20 20 20 20  20 20 20 20 20 3b 20 31  |own          ; 1|
00000eb0  39 2c 32 30 30 20 42 61  75 64 20 72 61 74 65 0a  |9,200 Baud rate.|
00000ec0  44 6c 6f 6f 70 3a 0a 30  30 33 30 20 20 20 30 42  |Dloop:.0030   0B|
00000ed0  38 45 20 20 20 64 65 63  66 73 7a 20 43 64 6f 77  |8E   decfsz Cdow|
00000ee0  6e 2c 66 20 20 20 20 20  20 20 20 0a 30 30 33 31  |n,f        .0031|
00000ef0  20 20 20 32 38 33 30 20  20 20 67 6f 74 6f 20 20  |   2830   goto  |
00000f00  20 44 6c 6f 6f 70 20 20  20 20 20 20 20 20 20 20  | Dloop          |
00000f10  0a 30 30 33 32 20 20 20  30 30 30 38 20 20 20 72  |.0032   0008   r|
00000f20  65 74 75 72 6e 20 20 20  20 20 20 20 20 20 20 20  |eturn           |
00000f30  20 20 20 20 20 0a 0a 0a  53 74 61 72 74 3a 0a 0a  |     ...Start:..|
00000f40  30 30 33 33 20 20 20 31  36 38 33 20 20 20 62 73  |0033   1683   bs|
00000f50  66 20 20 20 20 53 54 41  54 55 53 2c 52 50 30 20  |f    STATUS,RP0 |
00000f60  20 20 20 20 3b 53 45 4c  45 43 54 20 52 45 47 49  |    ;SELECT REGI|
00000f70  53 54 45 52 20 42 41 4e  4b 20 31 0a 30 30 33 34  |STER BANK 1.0034|
00000f80  20 20 20 33 30 31 41 20  20 20 6d 6f 76 6c 77 20  |   301A   movlw |
00000f90  20 31 41 68 20 20 20 20  20 20 20 20 20 20 20 20  | 1Ah            |
00000fa0  3b 42 69 74 73 20 34 2c  33 20 26 20 32 20 69 6e  |;Bits 4,3 & 2 in|
00000fb0  70 75 74 73 0a 30 30 33  35 20 20 20 30 30 38 35  |puts.0035   0085|
00000fc0  20 20 20 6d 6f 76 77 66  20 20 54 52 49 53 41 5e  |   movwf  TRISA^|
00000fd0  38 30 48 20 20 20 20 20  20 0a 30 30 33 36 20 20  |80H      .0036  |
00000fe0  20 31 32 38 33 20 20 20  62 63 66 20 20 20 20 53  | 1283   bcf    S|
00000ff0  54 41 54 55 53 2c 52 50  30 20 20 20 20 20 3b 53  |TATUS,RP0     ;S|
00001000  45 4c 45 43 54 20 52 45  47 49 53 54 45 52 20 42  |ELECT REGISTER B|
00001010  41 4e 4b 20 30 0a 30 30  33 37 20 20 20 31 41 30  |ANK 0.0037   1A0|
00001020  35 20 20 20 62 74 66 73  63 20 20 50 4f 52 54 41  |5   btfsc  PORTA|
00001030  2c 34 20 20 20 20 20 20  20 20 3b 53 65 65 20 69  |,4        ;See i|
00001040  66 20 69 6e 20 69 6e 70  75 74 20 6f 72 20 6f 75  |f in input or ou|
00001050  74 70 75 74 20 6d 6f 64  65 0a 30 30 33 38 20 20  |tput mode.0038  |
00001060  20 32 38 34 36 20 20 20  67 6f 74 6f 20 20 20 49  | 2846   goto   I|
00001070  6e 4c 6f 6f 70 20 20 20  20 20 20 20 20 20 0a 0a  |nLoop         ..|
00001080  30 30 33 39 20 20 20 31  36 38 33 20 20 20 62 73  |0039   1683   bs|
00001090  66 20 20 20 20 53 54 41  54 55 53 2c 52 50 30 20  |f    STATUS,RP0 |
000010a0  20 20 20 20 3b 53 45 4c  45 43 54 20 52 45 47 49  |    ;SELECT REGI|
000010b0  53 54 45 52 20 42 41 4e  4b 20 31 0a 0a 30 30 33  |STER BANK 1..003|
000010c0  41 20 20 20 33 30 30 30  20 20 20 6d 6f 76 6c 77  |A   3000   movlw|
000010d0  20 20 30 20 20 20 20 20  20 20 20 20 20 20 20 20  |  0             |
000010e0  20 3b 41 6c 6c 20 70 6f  72 74 20 42 20 74 6f 20  | ;All port B to |
000010f0  6f 75 74 70 75 74 73 0a  30 30 33 42 20 20 20 30  |outputs.003B   0|
00001100  30 38 36 20 20 20 6d 6f  76 77 66 20 20 54 52 49  |086   movwf  TRI|
00001110  53 42 5e 38 30 48 20 20  20 20 20 20 0a 30 30 33  |SB^80H      .003|
00001120  43 20 20 20 31 32 38 33  20 20 20 62 63 66 20 20  |C   1283   bcf  |
00001130  20 20 53 54 41 54 55 53  2c 52 50 30 20 20 20 20  |  STATUS,RP0    |
00001140  20 3b 53 45 4c 45 43 54  20 52 45 47 49 53 54 45  | ;SELECT REGISTE|
00001150  52 20 42 41 4e 4b 20 30  0a 0a 30 30 33 44 20 20  |R BANK 0..003D  |
00001160  20 31 34 30 35 20 20 20  62 73 66 20 20 20 20 50  | 1405   bsf    P|
00001170  4f 52 54 41 2c 30 20 20  20 20 20 20 20 20 3b 53  |ORTA,0        ;S|
00001180  65 72 69 61 6c 20 61 74  20 4d 61 72 6b 0a 0a 30  |erial at Mark..0|
00001190  30 33 45 20 20 20 31 35  30 35 20 20 20 62 73 66  |03E   1505   bsf|
000011a0  20 20 20 20 50 4f 52 54  41 2c 63 74 73 20 20 20  |    PORTA,cts   |
000011b0  20 20 20 3b 43 54 53 20  64 69 73 61 62 6c 65 64  |   ;CTS disabled|
000011c0  0a 0a 0a 6f 75 74 4d 61  69 6e 3a 0a 0a 30 30 33  |...outMain:..003|
000011d0  46 20 20 20 32 30 30 31  20 20 20 63 61 6c 6c 20  |F   2001   call |
000011e0  20 20 52 78 20 20 20 20  20 20 20 20 20 20 20 20  |  Rx            |
000011f0  20 3b 47 65 74 20 62 79  74 65 20 74 6f 20 6f 75  | ;Get byte to ou|
00001200  74 70 75 74 0a 30 30 34  30 20 20 20 30 38 30 46  |tput.0040   080F|
00001210  20 20 20 6d 6f 76 66 20  20 20 72 42 75 66 2c 77  |   movf   rBuf,w|
00001220  20 20 20 20 20 20 20 20  20 3b 42 79 74 65 20 74  |         ;Byte t|
00001230  6f 20 73 65 6e 64 0a 30  30 34 31 20 20 20 30 30  |o send.0041   00|
00001240  38 36 20 20 20 6d 6f 76  77 66 20 20 50 4f 52 54  |86   movwf  PORT|
00001250  42 20 20 20 20 20 20 20  20 20 20 3b 4f 75 74 70  |B          ;Outp|
00001260  75 74 20 69 74 0a 30 30  34 32 20 20 20 30 38 30  |ut it.0042   080|
00001270  36 20 20 20 6d 6f 76 66  20 20 20 50 4f 52 54 42  |6   movf   PORTB|
00001280  2c 77 20 20 20 20 20 20  20 20 3b 47 65 74 20 6f  |,w        ;Get o|
00001290  75 74 70 75 74 20 73 74  61 74 65 0a 30 30 34 33  |utput state.0043|
000012a0  20 20 20 30 30 38 43 20  20 20 6d 6f 76 77 66 20  |   008C   movwf |
000012b0  20 73 42 75 66 20 20 20  20 20 20 20 20 20 20 20  | sBuf           |
000012c0  3b 52 65 61 64 79 20 74  6f 20 6f 75 74 70 75 74  |;Ready to output|
000012d0  20 69 74 0a 30 30 34 34  20 20 20 32 30 31 31 20  | it.0044   2011 |
000012e0  20 20 63 61 6c 6c 20 20  20 53 65 6e 64 20 20 20  |  call   Send   |
000012f0  20 20 20 20 20 20 20 20  3b 53 65 6e 64 20 69 74  |        ;Send it|
00001300  20 62 61 63 6b 20 74 6f  20 63 6f 6d 70 75 74 65  | back to compute|
00001310  72 0a 30 30 34 35 20 20  20 32 38 33 46 20 20 20  |r.0045   283F   |
00001320  67 6f 74 6f 20 20 20 6f  75 74 4d 61 69 6e 20 20  |goto   outMain  |
00001330  20 20 20 20 20 20 0a 0a  49 6e 4c 6f 6f 70 3a 0a  |      ..InLoop:.|
00001340  0a 0a 30 30 34 36 20 20  20 31 36 38 33 20 20 20  |..0046   1683   |
00001350  62 73 66 20 20 20 20 53  54 41 54 55 53 2c 52 50  |bsf    STATUS,RP|
00001360  30 20 20 20 20 20 3b 53  45 4c 45 43 54 20 52 45  |0     ;SELECT RE|
00001370  47 49 53 54 45 52 20 42  41 4e 4b 20 31 0a 0a 30  |GISTER BANK 1..0|
00001380  30 34 37 20 20 20 33 30  46 46 20 20 20 6d 6f 76  |047   30FF   mov|
00001390  6c 77 20 20 30 66 66 68  20 20 20 20 20 20 20 20  |lw  0ffh        |
000013a0  20 20 20 3b 41 6c 6c 20  70 6f 72 74 20 42 20 74  |   ;All port B t|
000013b0  6f 20 69 6e 70 75 74 73  0a 30 30 34 38 20 20 20  |o inputs.0048   |
000013c0  30 30 38 36 20 20 20 6d  6f 76 77 66 20 20 54 52  |0086   movwf  TR|
000013d0  49 53 42 5e 38 30 48 20  20 20 20 20 20 0a 30 30  |ISB^80H      .00|
000013e0  34 39 20 20 20 31 33 38  31 20 20 20 62 63 66 20  |49   1381   bcf |
000013f0  20 20 20 31 2c 37 20 20  20 20 20 20 20 20 20 20  |   1,7          |
00001400  20 20 3b 45 6e 61 62 6c  65 20 70 75 6c 6c 20 75  |  ;Enable pull u|
00001410  70 20 72 65 73 69 73 74  6f 72 73 0a 30 30 34 41  |p resistors.004A|
00001420  20 20 20 31 32 38 33 20  20 20 62 63 66 20 20 20  |   1283   bcf   |
00001430  20 53 54 41 54 55 53 2c  52 50 30 20 20 20 20 20  | STATUS,RP0     |
00001440  3b 53 45 4c 45 43 54 20  52 45 47 49 53 54 45 52  |;SELECT REGISTER|
00001450  20 42 41 4e 4b 20 30 0a  0a 30 30 34 42 20 20 20  | BANK 0..004B   |
00001460  31 34 30 35 20 20 20 62  73 66 20 20 20 20 50 4f  |1405   bsf    PO|
00001470  52 54 41 2c 30 20 20 20  20 20 20 20 20 3b 53 65  |RTA,0        ;Se|
00001480  72 69 61 6c 20 61 74 20  4d 61 72 6b 0a 0a 30 30  |rial at Mark..00|
00001490  34 43 20 20 20 31 35 30  35 20 20 20 62 73 66 20  |4C   1505   bsf |
000014a0  20 20 20 50 4f 52 54 41  2c 63 74 73 20 20 20 20  |   PORTA,cts    |
000014b0  20 20 3b 43 54 53 20 64  69 73 61 62 6c 65 64 0a  |  ;CTS disabled.|
000014c0  0a 0a 69 6e 4d 61 69 6e  3a 0a 0a 30 30 34 44 20  |..inMain:..004D |
000014d0  20 20 32 30 30 31 20 20  20 63 61 6c 6c 20 20 20  |  2001   call   |
000014e0  52 78 20 20 20 20 20 20  20 20 20 20 20 20 20 3b  |Rx             ;|
000014f0  47 65 74 20 62 79 74 65  20 74 6f 20 69 6e 69 74  |Get byte to init|
00001500  69 61 74 65 20 72 65 61  64 0a 30 30 34 45 20 20  |iate read.004E  |
00001510  20 30 38 30 36 20 20 20  6d 6f 76 66 20 20 20 50  | 0806   movf   P|
00001520  4f 52 54 42 2c 77 20 20  20 20 20 20 20 20 3b 47  |ORTB,w        ;G|
00001530  65 74 20 69 6e 70 75 74  20 73 74 61 74 65 0a 30  |et input state.0|
00001540  30 34 46 20 20 20 30 30  38 43 20 20 20 6d 6f 76  |04F   008C   mov|
00001550  77 66 20 20 73 42 75 66  20 20 20 20 20 20 20 20  |wf  sBuf        |
00001560  20 20 20 3b 52 65 61 64  79 20 74 6f 20 6f 75 74  |   ;Ready to out|
00001570  70 75 74 20 69 74 0a 30  30 35 30 20 20 20 32 30  |put it.0050   20|
00001580  31 31 20 20 20 63 61 6c  6c 20 20 20 53 65 6e 64  |11   call   Send|
00001590  20 20 20 20 20 20 20 20  20 20 20 3b 53 65 6e 64  |           ;Send|
000015a0  20 69 74 20 62 61 63 6b  20 74 6f 20 63 6f 6d 70  | it back to comp|
000015b0  75 74 65 72 0a 30 30 35  31 20 20 20 32 38 34 44  |uter.0051   284D|
000015c0  20 20 20 67 6f 74 6f 20  20 20 69 6e 4d 61 69 6e  |   goto   inMain|
000015d0  20 20 20 20 20 20 20 20  20 0a 0a 65 6e 64 0a 0a  |         ..end..|
000015e0  4d 65 6d 6f 72 79 20 55  73 61 67 65 20 4d 61 70  |Memory Usage Map|
000015f0  20 28 27 58 27 20 3d 20  55 73 65 64 2c 20 27 2d  | ('X' = Used, '-|
00001600  27 20 3d 20 55 6e 75 73  65 64 29 0a 0a 30 30 30  |' = Unused)..000|
00001610  30 20 20 20 3a 20 58 58  58 58 58 58 58 58 58 58  |0   : XXXXXXXXXX|
00001620  58 58 58 58 58 58 20 58  58 58 58 58 58 58 58 58  |XXXXXX XXXXXXXXX|
00001630  58 58 58 58 58 58 58 20  58 58 58 58 58 58 58 58  |XXXXXXX XXXXXXXX|
00001640  58 58 58 58 58 58 58 58  20 58 58 58 58 58 58 58  |XXXXXXXX XXXXXXX|
00001650  58 58 58 58 58 58 58 58  58 0a 30 30 34 30 20 20  |XXXXXXXXX.0040  |
00001660  20 3a 20 58 58 58 58 58  58 58 2d 58 58 58 58 58  | : XXXXXXX-XXXXX|
00001670  58 58 58 20 58 58 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |XXX XX----------|
00001680  2d 2d 2d 2d 20 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |---- -----------|
00001690  2d 2d 2d 2d 2d 20 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----- ----------|
000016a0  2d 2d 2d 2d 2d 2d 0a 0a  33 33 20 4c 61 62 6c 65  |------..33 Lable|
000016b0  73 20 26 20 43 6f 6e 73  74 61 6e 74 73 3a 2d 0a  |s & Constants:-.|
000016c0  48 65 78 20 20 20 20 4e  61 6d 65 0a 30 30 30 30  |Hex    Name.0000|
000016d0  20 20 20 43 0a 30 30 30  32 20 20 20 50 43 4c 0a  |   C.0002   PCL.|
000016e0  30 30 30 32 20 20 20 5a  0a 30 30 30 36 20 20 20  |0002   Z.0006   |
000016f0  50 4f 52 54 42 0a 30 30  30 35 20 20 20 50 4f 52  |PORTB.0005   POR|
00001700  54 41 0a 30 30 38 36 20  20 20 54 52 49 53 42 0a  |TA.0086   TRISB.|
00001710  30 30 38 35 20 20 20 54  52 49 53 41 0a 30 30 38  |0085   TRISA.008|
00001720  38 20 20 20 45 45 43 4f  4e 31 0a 30 30 30 38 20  |8   EECON1.0008 |
00001730  20 20 45 45 44 41 54 41  0a 30 30 30 39 20 20 20  |  EEDATA.0009   |
00001740  45 45 41 44 52 0a 30 30  30 33 20 20 20 53 54 41  |EEADR.0003   STA|
00001750  54 55 53 0a 30 30 30 35  20 20 20 52 50 30 0a 30  |TUS.0005   RP0.0|
00001760  30 30 31 20 20 20 49 4e  43 0a 30 30 30 32 20 20  |001   INC.0002  |
00001770  20 63 74 73 0a 30 30 30  33 20 20 20 72 74 73 0a  | cts.0003   rts.|
00001780  30 30 30 43 20 20 20 73  42 75 66 0a 30 30 30 44  |000C   sBuf.000D|
00001790  20 20 20 53 63 6f 75 6e  74 0a 30 30 30 45 20 20  |   Scount.000E  |
000017a0  20 43 64 6f 77 6e 0a 30  30 30 46 20 20 20 72 42  | Cdown.000F   rB|
000017b0  75 66 0a 30 30 30 31 20  20 20 52 78 0a 30 30 30  |uf.0001   Rx.000|
000017c0  34 20 20 20 53 62 0a 30  30 30 38 20 20 20 52 6e  |4   Sb.0008   Rn|
000017d0  62 0a 30 30 31 31 20 20  20 53 65 6e 64 0a 30 30  |b.0011   Send.00|
000017e0  31 37 20 20 20 53 6c 6f  6f 70 0a 30 30 32 35 20  |17   Sloop.0025 |
000017f0  20 20 63 44 65 6c 61 79  0a 30 30 32 38 20 20 20  |  cDelay.0028   |
00001800  68 44 65 6c 61 79 0a 30  30 32 42 20 20 20 72 44  |hDelay.002B   rD|
00001810  65 6c 61 79 0a 30 30 32  45 20 20 20 44 65 6c 61  |elay.002E   Dela|
00001820  79 0a 30 30 33 30 20 20  20 44 6c 6f 6f 70 0a 30  |y.0030   Dloop.0|
00001830  30 33 33 20 20 20 53 74  61 72 74 0a 30 30 33 46  |033   Start.003F|
00001840  20 20 20 6f 75 74 4d 61  69 6e 0a 30 30 34 36 20  |   outMain.0046 |
00001850  20 20 49 6e 4c 6f 6f 70  0a 30 30 34 44 20 20 20  |  InLoop.004D   |
00001860  69 6e 4d 61 69 6e 0a 0a  30 20 45 72 72 6f 72 73  |inMain..0 Errors|
00001870