Mercurial > hg > Members > kono > nitros9-code
annotate level1/modules/dwread.asm @ 2773:ce3dba57003b lwtools-port
boot_dw now uses dwinit.asm.
dwinit.asm updated for Arduino
author | Boisy Pitre <boisy.pitre@nuance.com> |
---|---|
date | Wed, 23 Jan 2013 14:54:29 -0600 |
parents | bfe3de781ddf |
children | 28ed72477814 |
rev | line source |
---|---|
2770
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
1 ******************************************************* |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
2 * |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
3 * DWRead |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
4 * Receive a response from the DriveWire server. |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
5 * Times out if serial port goes idle for more than 1.4 (0.7) seconds. |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
6 * Serial data format: 1-8-N-1 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
7 * 4/12/2009 by Darren Atkinson |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
8 * |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
9 * Entry: |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
10 * X = starting address where data is to be stored |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
11 * Y = number of bytes expected |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
12 * |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
13 * Exit: |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
14 * CC = carry set on framing error, Z set if all bytes received |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
15 * X = starting address of data received |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
16 * Y = checksum |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
17 * U is preserved. All accumulators are clobbered |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
18 * |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
19 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
20 IFNE ARDUINO |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
21 * Note: this is an optimistic routine. It presumes that the server will always be there, and |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
22 * has NO timeout fallback. It is also very short and quick. |
2773
ce3dba57003b
boot_dw now uses dwinit.asm.
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2770
diff
changeset
|
23 DWRead clra ; clear Carry (no framing error) |
2770
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
24 pshs u,x,cc ; preserve registers |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
25 leau ,x |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
26 ldx #$0000 |
2773
ce3dba57003b
boot_dw now uses dwinit.asm.
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2770
diff
changeset
|
27 loop@ tst $FF51 ; check for CA1 bit (1=Arduino has byte ready) |
ce3dba57003b
boot_dw now uses dwinit.asm.
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2770
diff
changeset
|
28 bpl loop@ ; loop if not set |
ce3dba57003b
boot_dw now uses dwinit.asm.
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2770
diff
changeset
|
29 ldb $FF50 ; clear CA1 bit in status register |
ce3dba57003b
boot_dw now uses dwinit.asm.
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2770
diff
changeset
|
30 stb ,u+ ; save off acquired byte |
ce3dba57003b
boot_dw now uses dwinit.asm.
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2770
diff
changeset
|
31 abx ; update checksum |
2770
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
32 leay ,-y |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
33 bne loop@ |
2773
ce3dba57003b
boot_dw now uses dwinit.asm.
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2770
diff
changeset
|
34 leay ,x ; return checksum in Y |
ce3dba57003b
boot_dw now uses dwinit.asm.
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2770
diff
changeset
|
35 puls cc,x,u,pc ; restore registers and return |
2770
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
36 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
37 ELSE |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
38 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
39 IFNE JMCPBCK |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
40 * NOTE: There is no timeout currently on here... |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
41 DWRead clra ; clear Carry (no framing error) |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
42 deca ; clear Z flag, A = timeout msb ($ff) |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
43 tfr cc,b |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
44 pshs u,x,dp,b,a ; preserve registers, push timeout msb |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
45 leau ,x |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
46 ldx #$0000 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
47 orcc #IntMasks |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
48 loop@ ldb $FF4C |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
49 bitb #$02 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
50 beq loop@ |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
51 ldb $FF44 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
52 stb ,u+ |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
53 abx |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
54 leay ,-y |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
55 bne loop@ |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
56 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
57 tfr x,y |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
58 ldb #0 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
59 lda #3 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
60 leas 1,s ; remove timeout msb from stack |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
61 inca ; A = status to be returned in C and Z |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
62 ora ,s ; place status information into the.. |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
63 sta ,s ; ..C and Z bits of the preserved CC |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
64 leay ,x ; return checksum in Y |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
65 puls cc,dp,x,u,pc ; restore registers and return |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
66 ELSE |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
67 IFNE BECKER |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
68 * NOTE: There is no timeout currently on here... |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
69 DWRead clra ; clear Carry (no framing error) |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
70 deca ; clear Z flag, A = timeout msb ($ff) |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
71 tfr cc,b |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
72 pshs u,x,dp,b,a ; preserve registers, push timeout msb |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
73 leau ,x |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
74 ldx #$0000 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
75 orcc #IntMasks |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
76 loop@ ldb $FF41 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
77 bitb #$02 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
78 beq loop@ |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
79 ldb $FF42 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
80 stb ,u+ |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
81 abx |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
82 leay ,-y |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
83 bne loop@ |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
84 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
85 tfr x,y |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
86 ldb #0 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
87 lda #3 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
88 leas 1,s ; remove timeout msb from stack |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
89 inca ; A = status to be returned in C and Z |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
90 ora ,s ; place status information into the.. |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
91 sta ,s ; ..C and Z bits of the preserved CC |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
92 leay ,x ; return checksum in Y |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
93 puls cc,dp,x,u,pc ; restore registers and return |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
94 ENDC |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
95 ENDC |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
96 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
97 IFEQ BECKER+JMCPBCK+ARDUINO |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
98 IFNE BAUD38400 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
99 ******************************************************* |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
100 * 38400 bps using 6809 code and timimg |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
101 ******************************************************* |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
102 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
103 DWRead clra ; clear Carry (no framing error) |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
104 deca ; clear Z flag, A = timeout msb ($ff) |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
105 tfr cc,b |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
106 pshs u,x,dp,b,a ; preserve registers, push timeout msb |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
107 orcc #$50 ; mask interrupts |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
108 tfr a,dp ; set direct page to $FFxx |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
109 setdp $ff |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
110 leau ,x ; U = storage ptr |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
111 ldx #0 ; initialize checksum |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
112 adda #2 ; A = $01 (serial in mask), set Carry |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
113 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
114 * Wait for a start bit or timeout |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
115 rx0010 bcc rxExit ; exit if timeout expired |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
116 ldb #$ff ; init timeout lsb |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
117 rx0020 bita <BBIN ; check for start bit |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
118 beq rxByte ; branch if start bit detected |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
119 subb #1 ; decrement timeout lsb |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
120 bita <BBIN |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
121 beq rxByte |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
122 bcc rx0020 ; loop until timeout lsb rolls under |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
123 bita <BBIN |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
124 beq rxByte |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
125 addb ,s ; B = timeout msb - 1 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
126 bita <BBIN |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
127 beq rxByte |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
128 stb ,s ; store decremented timeout msb |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
129 bita <BBIN |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
130 bne rx0010 ; loop if still no start bit |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
131 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
132 * Read a byte |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
133 rxByte leay ,-y ; decrement request count |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
134 ldd #$ff80 ; A = timeout msb, B = shift counter |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
135 sta ,s ; reset timeout msb for next byte |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
136 rx0030 exg a,a |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
137 nop |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
138 lda <BBIN ; read data bit |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
139 lsra ; shift into carry |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
140 rorb ; rotate into byte accumulator |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
141 lda #$01 ; prep stop bit mask |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
142 bcc rx0030 ; loop until all 8 bits read |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
143 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
144 stb ,u+ ; store received byte to memory |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
145 abx ; update checksum |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
146 ldb #$ff ; set timeout lsb for next byte |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
147 anda <BBIN ; read stop bit |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
148 beq rxExit ; exit if framing error |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
149 leay ,y ; test request count |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
150 bne rx0020 ; loop if another byte wanted |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
151 lda #$03 ; setup to return SUCCESS |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
152 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
153 * Clean up, set status and return |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
154 rxExit leas 1,s ; remove timeout msb from stack |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
155 inca ; A = status to be returned in C and Z |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
156 ora ,s ; place status information into the.. |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
157 sta ,s ; ..C and Z bits of the preserved CC |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
158 leay ,x ; return checksum in Y |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
159 puls cc,dp,x,u,pc ; restore registers and return |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
160 setdp $00 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
161 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
162 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
163 ELSE |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
164 IFEQ H6309 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
165 ******************************************************* |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
166 * 57600 (115200) bps using 6809 code and timimg |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
167 ******************************************************* |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
168 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
169 DWRead clra ; clear Carry (no framing error) |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
170 deca ; clear Z flag, A = timeout msb ($ff) |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
171 tfr cc,b |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
172 pshs u,x,dp,b,a ; preserve registers, push timeout msb |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
173 orcc #$50 ; mask interrupts |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
174 tfr a,dp ; set direct page to $FFxx |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
175 setdp $ff |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
176 leau ,x ; U = storage ptr |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
177 ldx #0 ; initialize checksum |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
178 lda #$01 ; A = serial in mask |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
179 bra rx0030 ; go wait for start bit |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
180 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
181 * Read a byte |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
182 rxByte leau 1,u ; bump storage ptr |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
183 leay ,-y ; decrement request count |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
184 lda <BBIN ; read bit 0 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
185 lsra ; move bit 0 into Carry |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
186 ldd #$ff20 ; A = timeout msb, B = shift counter |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
187 sta ,s ; reset timeout msb for next byte |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
188 rorb ; rotate bit 0 into byte accumulator |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
189 rx0010 lda <BBIN ; read bit (d1, d3, d5) |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
190 lsra |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
191 rorb |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
192 bita 1,s ; 5 cycle delay |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
193 bcs rx0020 ; exit loop after reading bit 5 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
194 lda <BBIN ; read bit (d2, d4) |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
195 lsra |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
196 rorb |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
197 leau ,u |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
198 bra rx0010 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
199 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
200 rx0020 lda <BBIN ; read bit 6 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
201 lsra |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
202 rorb |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
203 leay ,y ; test request count |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
204 beq rx0050 ; branch if final byte of request |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
205 lda <BBIN ; read bit 7 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
206 lsra |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
207 rorb ; byte is now complete |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
208 stb -1,u ; store received byte to memory |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
209 abx ; update checksum |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
210 lda <BBIN ; read stop bit |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
211 anda #$01 ; mask out other bits |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
212 beq rxExit ; exit if framing error |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
213 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
214 * Wait for a start bit or timeout |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
215 rx0030 bita <BBIN ; check for start bit |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
216 beq rxByte ; branch if start bit detected |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
217 bita <BBIN ; again |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
218 beq rxByte |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
219 ldb #$ff ; init timeout lsb |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
220 rx0040 bita <BBIN |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
221 beq rxByte |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
222 subb #1 ; decrement timeout lsb |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
223 bita <BBIN |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
224 beq rxByte |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
225 bcc rx0040 ; loop until timeout lsb rolls under |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
226 bita <BBIN |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
227 beq rxByte |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
228 addb ,s ; B = timeout msb - 1 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
229 bita <BBIN |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
230 beq rxByte |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
231 stb ,s ; store decremented timeout msb |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
232 bita <BBIN |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
233 beq rxByte |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
234 bcs rx0030 ; loop if timeout hasn't expired |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
235 bra rxExit ; exit due to timeout |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
236 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
237 rx0050 lda <BBIN ; read bit 7 of final byte |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
238 lsra |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
239 rorb ; byte is now complete |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
240 stb -1,u ; store received byte to memory |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
241 abx ; calculate final checksum |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
242 lda <BBIN ; read stop bit |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
243 anda #$01 ; mask out other bits |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
244 ora #$02 ; return SUCCESS if no framing error |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
245 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
246 * Clean up, set status and return |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
247 rxExit leas 1,s ; remove timeout msb from stack |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
248 inca ; A = status to be returned in C and Z |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
249 ora ,s ; place status information into the.. |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
250 sta ,s ; ..C and Z bits of the preserved CC |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
251 leay ,x ; return checksum in Y |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
252 puls cc,dp,x,u,pc ; restore registers and return |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
253 setdp $00 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
254 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
255 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
256 ELSE |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
257 ******************************************************* |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
258 * 57600 (115200) bps using 6309 native mode |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
259 ******************************************************* |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
260 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
261 DWRead clrb ; clear Carry (no framing error) |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
262 decb ; clear Z flag, B = $FF |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
263 pshs u,x,dp,cc ; preserve registers |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
264 orcc #$50 ; mask interrupts |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
265 * ldmd #1 ; requires 6309 native mode |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
266 tfr b,dp ; set direct page to $FFxx |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
267 setdp $ff |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
268 leay -1,y ; adjust request count |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
269 leau ,x ; U = storage ptr |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
270 tfr 0,x ; initialize checksum |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
271 lda #$01 ; A = serial in mask |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
272 bra rx0030 ; go wait for start bit |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
273 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
274 * Read a byte |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
275 rxByte sexw ; 4 cycle delay |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
276 ldw #$006a ; shift counter and timing flags |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
277 clra ; clear carry so next will branch |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
278 rx0010 bcc rx0020 ; branch if even bit number (15 cycles) |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
279 nop ; extra (16th) cycle |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
280 rx0020 lda <BBIN ; read bit |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
281 lsra ; move bit into carry |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
282 rorb ; rotate bit into byte accumulator |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
283 lda #0 ; prep A for 8th data bit |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
284 lsrw ; bump shift count, timing bit to carry |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
285 bne rx0010 ; loop until 7th data bit has been read |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
286 incw ; W = 1 for subtraction from Y |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
287 inca ; A = 1 for reading bit 7 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
288 anda <BBIN ; read bit 7 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
289 lsra ; move bit 7 into carry, A = 0 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
290 rorb ; byte is now complete |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
291 stb ,u+ ; store received byte to memory |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
292 abx ; update checksum |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
293 subr w,y ; decrement request count |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
294 inca ; A = 1 for reading stop bit |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
295 anda <BBIN ; read stop bit |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
296 bls rxExit ; exit if completed or framing error |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
297 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
298 * Wait for a start bit or timeout |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
299 rx0030 clrw ; initialize timeout counter |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
300 rx0040 bita <BBIN ; check for start bit |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
301 beq rxByte ; branch if start bit detected |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
302 addw #1 ; bump timeout counter |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
303 bita <BBIN |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
304 beq rxByte |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
305 bcc rx0040 ; loop until timeout rolls over |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
306 lda #$03 ; setup to return TIMEOUT status |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
307 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
308 * Clean up, set status and return |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
309 rxExit beq rx0050 ; branch if framing error |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
310 eora #$02 ; toggle SUCCESS flag |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
311 rx0050 inca ; A = status to be returned in C and Z |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
312 ora ,s ; place status information into the.. |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
313 sta ,s ; ..C and Z bits of the preserved CC |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
314 leay ,x ; return checksum in Y |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
315 puls cc,dp,x,u,pc ; restore registers and return |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
316 setdp $00 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
317 |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
318 ENDC |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
319 ENDC |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
320 ENDC |
bfe3de781ddf
Added Arduino dwread/dwwrite changes
Boisy Pitre <boisy.pitre@nuance.com>
parents:
2725
diff
changeset
|
321 ENDC |