-
Notifications
You must be signed in to change notification settings - Fork 1
/
HT1613.asm
186 lines (184 loc) · 4.43 KB
/
HT1613.asm
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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
ORG #8002
;-----------------------------------------
;Program Driver For LCD Display HT1613 (SC-1611M10T)
;(C) By (R)soft 16.4.2000
;Connected To Port #3F
;BIT0 - CLOCK
;BIT1 - DATA
;BIT2 - POWER
;Keys 1-0 For Change Indicate
;Press SPACE To Exit Program
;------------------------------------------
PORT EQU #3F
PORTSET EQU #7F
DI
LD A,#80
OUT (PORTSET),A
CALL POWER_HT
; CALL CLS_HT
LD HL,INT_HT
LD (#7FFF),HL
LD A,#7F
LD I,A
IM 2
EI
;
KEYLOOP0
LD A,5
OUT (#FE),A
LD HL,0
LD DE,0
LD BC,704
LDIR
;
LD BC,#05FF
LD A,#F7
IN A,(#FE)
KEYLOOP1
INC C
RRA
JR NC,KEYS1
DJNZ KEYLOOP1
;
LD BC,#050A
LD A,#EF
IN A,(#FE)
KEYLOOP2
DEC C
RRA
JR NC,KEYS1
DJNZ KEYLOOP2
;
XOR A
OUT (#FE),A
HALT
;
LD A,#7F
IN A,(#FE)
RRA
JR C,KEYLOOP0
;
DI
LD A,#3F
LD I,A
IM 1
XOR A
OUT (PORT),A
EI
RET
KEYS1
LD HL,BUFER
LD B,0
ADD HL,BC
LD A,#FE ;Key CAPS
IN A,(#FE)
RRA
JR NC,MINUS
LD A,(HL)
AND A
JR Z,KEYLOOP0
CP 10
JR NZ,$+5
LD (HL),0
XOR A
CP 9
JR NC,KEYLOOP0
INC (HL)
CALL PAUSE2
JR KEYLOOP0
MINUS
LD A,(HL)
AND A
JR Z,KEYLOOP0
CP 10
JR NC,KEYLOOP0
CP 2
JR NC,$+4
LD (HL),11
DEC (HL)
CALL PAUSE2
JR KEYLOOP0
INT_HT
PUSH AF
PUSH HL
PUSH DE
PUSH BC
LD HL,BUFER
CALL WIEV_HT
POP BC
POP DE
POP HL
POP AF
EI
RET
WIEV_HT
LD BC,#0A3F ;10
WIEV_HTL
LD A,(HL) ;7
INC HL ;6
RLA ;4
RLA ;4
RLA ;4
RLA ;4 =29
;1 Takt
RLA ;4
LD DE,#0706 ;10
JR C,$+5 ;7/12
LD DE,#0504 ;10
OUT (C),D ;12
OUT (C),E ;12 =55/60
;2 Takt
RLA ;4
LD DE,#0706 ;10
JR C,$+5 ;7/12
LD DE,#0504 ;10
OUT (C),D ;12
OUT (C),E ;12 =55/60
;3 Takt
RLA ;4
LD DE,#0706 ;10
JR C,$+5 ;7/12
LD DE,#0504 ;10
OUT (C),D ;12
OUT (C),E ;12 =55/60
;4 Takt
RLA ;4
LD DE,#0706 ;10
JR C,$+5 ;7/12
LD DE,#0504 ;10
OUT (C),D ;12
OUT (C),E ;12 =55/60
;
DJNZ WIEV_HTL ;8/13
LD A,4 ;7
OUT (PORT),A ;11 SCL=0 SDA=0
RET ;All 2643/2843 Takts
PAUSE
PUSH BC
LD B,10
DJNZ $
POP BC
RET
CLS_HT
LD BC,#283F ;10
LD DE,#0504 ;10
CLS_HTL
OUT (C),D ;12 SCL=1 SDA=0
OUT (C),E ;12 SCL=0 SDA=0
DJNZ CLS_HTL ;8/13
RET ;All 1495 Takts
POWER_HT
LD A,4 ;POWER ON, SCL=0 SDA=0
OUT (PORT),A
RET
PAUSE2
PUSH DE
LD DE,#5000
PAUSE20
DEC DE
LD A,D
OR E
JR NZ,PAUSE20
POP DE
RET
BUFER DEFB #0E,#01,#02,#0A,#0A,#00,#0B,#03,#07,#0A