annotate level1/modules/dwrdmess.asm @ 3165:2d22d31bc74b

L2 kernel: Minor comment tweaks
author Neal Crook <foofoobedoo@gmail.com>
date Thu, 06 Apr 2017 22:51:54 +0100
parents c92a6c65bbd9
children c505ae3120c4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2534
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
1 *******************************************************
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
2 *
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
3 * DWRdMess
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
4 * Receive a response from the DriveWire server via MESS FIFO
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
5 * 4/27/10 AAW - Based on John Linville's example driver
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
6 *
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
7 * Entry:
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
8 * X = starting address where data is to be stored
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
9 * Y = number of bytes expected
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
10 *
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
11 * Exit:
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
12 * CC = carry set on framing error, Z set if all bytes received
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
13 * X = starting address of data received
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
14 * Y = checksum
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
15 * U is preserved. All accumulators are clobbered
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
16 *
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
17
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
18 DWRead clra ; clear Carry (no framing error)
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
19 pshs u,x,cc ; preserve registers, push timeout msb
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
20 orcc #$50 ; mask interrupts
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
21
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
22 leau ,x ; U = storage ptr
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
23 ldx #0 ; initialize checksum
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
24
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
25 * Read a byte
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
26 rxByte ldb $ffe1 ; check for data in FIFO
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
27 beq rxByte ; loop while empty
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
28 ldb $ffe0 ; read data value
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
29
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
30 stb ,u+ ; store received byte to memory
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
31 abx ; update checksum
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
32 leay ,-y ; decrement request count
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
33 bne rxByte ; loop if another byte wanted
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
34
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
35
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
36 * Clean up, set status and return
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
37 rxExit leay ,x ; return checksum in Y
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
38 puls cc,x,u,pc ; restore registers and return
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
39 setdp $00
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
40
c92a6c65bbd9 dw3 MESS driver
aaronwolfe
parents:
diff changeset
41