-
Notifications
You must be signed in to change notification settings - Fork 0
/
SENDRECV.H
132 lines (125 loc) · 2.25 KB
/
SENDRECV.H
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
;stime .db 255
;stimeout:
; ld a, (stime)
; dec a
; ld (stime), a
; ret
#define LINKPORT 0
;#define LINKMASK 12
#define LINKMASK 3
#define D0LD1L 3 ;values for port
#define D0LD1H 1
#define D0HD1L 2
#define D0HD1H 0
checkbyte:
TryReceiveByte:
in a,(LINKPORT)
and LINKMASK
cp LINKMASK
scf
ret z
ReceiveByteCont:
call LinkPrep
jr ReceiveCont
ReceiveByte:
call LinkPrep
ReceiveBits:
ld de,-1
WaitRecBit:
call CheckLink
jr z,LinkFailed
cp LINKMASK
jr z,WaitRecBit
ReceiveCont:
sub LINKMASK/3*2
ld a,LINKMASK/3*2
ld d,D0LD1H
jr c,ReceiveLow
rra
ld d,D0HD1L
ReceiveLow:
rr c
ld (AckBit),a
ld a,d
out (LINKPORT),a
ld de,-1
WaitAckRec:
call CheckLink
cp 0
AckBit =$-1
jr nz,WaitAckRec
ld a,D0HD1H
out (LINKPORT),a
ld d,4
WaitReadyRec:
dec d
jr z,ReadyRec
in a,(LINKPORT)
cp LINKMASK
jr nz,WaitReadyRec
ReadyRec:
djnz ReceiveBits
jr LinkSuccess
LinkPrep:
ex (sp),hl
push bc
push de
set 2,(iy+12h)
ld b,8
jp (hl)
send_outbyte:
;SendByte:
call LinkPrep
ld c,a
;ld a, 255
;ld (stime), a
SendBits:
rr c
ld a,D0LD1H
jr nc,SendLow
ld a,D0HD1L
SendLow:
out (LINKPORT),a
ld de,-1
WaitAckSend:
call CheckLink
jr nz,WaitAckSend
SendAcked:
ld a,D0HD1H
out (LINKPORT),a
ld de,-1
WaitReadySend:
call CheckLink
cp LINKMASK
jr nz,WaitReadySend
djnz SendBits
LinkSuccess:
or 0
.org $-1
LinkFailed:
scf
res 2,(iy+12h)
;#ifdef TI83
ld a,D0HD1H ; ld a,0D0h
out (0),a
;#endif
ld a,c
pop de
pop bc
pop hl
ret
CheckLink:
pop hl
dec de
ld a,d
or e
jr z,LinkFailed
ld a,0BFh
;call stimeout
;cp 0
;call _readkeypad
;bit 6,a
;jr z,LinkFailed
in a,(LINKPORT)
and LINKMASK
jp (hl)