-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathBASLIB E200.ASM
268 lines (259 loc) · 3.7 KB
/
BASLIB E200.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
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
10 ORG 100H
20PUTSTR EQU 0BFF1H
30WAITK EQU 0BFCDH
40RPTCHR EQU 0BFEEH
50GPF EQU 0BFD0H
60 CALL CLS
70 LD HL,STRBUF
80 LD (HL),'C'
90 INC HL
100 LD (HL),'L'
110 INC HL
120 LD (HL),'S'
130 INC HL
140 LD (HL),' '
150 INC HL
160 LD DE,CLS
170 LD A,D
180 CALL BYTE
190 LD A,E
200 CALL BYTE
210 LD (HL),' '
220 INC HL
230 LD (HL),'C'
240 INC HL
250 LD (HL),'L'
260 INC HL
270 LD (HL),'S'
280 INC HL
290 LD (HL),'0'
300 INC HL
310 LD (HL),' '
320 INC HL
330 LD DE,CLS0
340 LD A,D
350 CALL BYTE
360 LD A,E
370 CALL BYTE
380 LD (HL),0
390 LD HL,STRBUF
400 LD DE,0
410 CALL STRLN
420 CALL PUTSTR
430 LD HL,STRBUF
440 LD (HL),'C'
450 INC HL
460 LD (HL),'N'
470 INC HL
480 LD (HL),'U'
490 INC HL
500 LD (HL),'M'
510 INC HL
520 LD (HL),' '
530 INC HL
540 LD DE,CLSN
550 LD A,D
560 CALL BYTE
570 LD A,E
580 CALL BYTE
590 LD (HL),' '
600 INC HL
610 LD (HL),'X'
620 INC HL
630 LD (HL),' '
640 INC HL
650 LD DE,CLSX
660 LD A,D
670 CALL BYTE
680 LD A,E
690 CALL BYTE
700 LD (HL),' '
710 INC HL
720 LD (HL),'Y'
730 INC HL
740 LD (HL),' '
750 INC HL
760 LD DE,CLSY
770 LD A,D
780 CALL BYTE
790 LD A,E
800 CALL BYTE
810 LD (HL),0
820 LD HL,STRBUF
830 LD DE,00100H
840 CALL STRLN
850 CALL PUTSTR
860 LD HL,STRBUF
870 LD (HL),'C'
880 INC HL
890 LD (HL),'H'
900 INC HL
910 LD (HL),'A'
920 INC HL
930 LD (HL),'R'
940 INC HL
950 LD (HL),' '
960 INC HL
970 LD DE,CHAR
980 LD A,D
990 CALL BYTE
1000 LD A,E
1010 CALL BYTE
1020 LD (HL),' '
1030 INC HL
1040 LD (HL),'P'
1050 INC HL
1060 LD (HL),'W'
1070 INC HL
1080 LD (HL),'D'
1090 INC HL
1100 LD (HL),' '
1110 INC HL
1120 LD DE,PWD
1130 LD A,D
1140 CALL BYTE
1150 LD A,E
1160 CALL BYTE
1170 LD (HL),0
1180 LD HL,STRBUF
1190 LD DE,00200H
1200 CALL STRLN
1210 CALL PUTSTR
860 LD HL,STRBUF
870 LD (HL),'I'
880 INC HL
890 LD (HL),'N'
900 INC HL
910 LD (HL),'P'
920 INC HL
950 LD (HL),' '
960 INC HL
970 LD DE,INP2
980 LD A,D
990 CALL BYTE
1000 LD A,E
1010 CALL BYTE
1020 LD (HL),' '
1030 INC HL
1040 LD (HL),'V'
1050 INC HL
1060 LD (HL),'A'
1070 INC HL
1080 LD (HL),'R'
1090 INC HL
1100 LD (HL),' '
1110 INC HL
1120 LD DE,INPOUT
1130 LD A,D
1140 CALL BYTE
1150 LD A,E
1160 CALL BYTE
1020 LD (HL),' '
1030 INC HL
1040 LD (HL),'O'
1050 INC HL
1060 LD (HL),'U'
1070 INC HL
1080 LD (HL),'T'
1090 INC HL
1100 LD (HL),' '
1110 INC HL
1120 LD DE,OUT2
1130 LD A,D
1140 CALL BYTE
1150 LD A,E
1160 CALL BYTE
1170 LD (HL),0
1180 LD HL,STRBUF
1190 LD DE,00300H
1200 CALL STRLN
1210 CALL PUTSTR
1600WAIT: CALL WAITK
1610 CP 0
1620 JP Z,WAIT
1630 RET
2000CLS: LD A,144
2010 LD (CLSN),A
2020 LD DE,0
2030 LD (CLSX),DE
2040 LD A,32
2050 LD (CHAR),A
2060CLS0: LD A,(CLSN)
2070 LD B,A
2080 LD A,(CHAR)
2090 LD DE,(CLSY)
2100 CALL RPTCHR
2110 RET
2120CLSN: DB 144
2130CLSY: DB 0
2140CLSX: DB 0
2150CHAR: DB 32
2160GETPWD: CALL CLS
2170 LD HL,079C0H
2180 LD B,8
2190 LD DE,0000FH
2200 CALL PUTSTR
2210 LD HL,PWD
2220 LD B,4
2230 LD DE,0000AH
2240 CALL PUTSTR
2250 JP WAIT
2260INPOUT: DB 40H,0
2270 ; First by port address
2280 ; Second is IN/OUT value
2290INP2: PUSH BC
2300 PUSH HL
2310 LD HL,INPOUT
2320 LD C,(HL)
2330 INC HL
2340 IN A,(C)
2350 LD (HL),A
2360 POP HL
2370 POP BC
2380 RET
2390OUT2: PUSH BC
2400 PUSH HL
2410 LD HL,INPOUT
2420 LD C,(HL)
2430 INC HL
2440 LD A,(HL)
2450 OUT (C),A
2460 POP HL
2470 POP BC
2480 RET
3000BYTE: PUSH AF
3010 AND 0F0H
3020 RRCA
3030 RRCA
3040 RRCA
3050 RRCA
3060 CALL NIBBLE
3070 INC HL
3080 POP AF
3090 AND 15
3100 CALL NIBBLE
3110 INC HL
3120 RET
3130NIBBLE: SUB 10
3140 JP M,ZERO9
3150 ADD A,7
3160ZERO9: ADD A,58
3170 LD (HL),A
3180 RET
3190STRLN: LD B,0
3200 PUSH HL
3210STRLN0: LD A,(HL)
3220 CP 0
3230 JP Z,STRLN1
3240 INC HL
3250 INC B
3260 JP STRLN0
3270STRLN1: POP HL
3280 RET
5000BUFFER: DB 0,0,0,0,0,0,0,0
5010PWD: DB 'pwd:'
5020STRBUF: DB 0,0,0,0,0,0,0,0
5030 DB 0,0,0,0,0,0,0,0
5040 DB 0,0,0,0,0,0,0,0
5050 DB 0,0,0,0,0,0,0,0