]> pd.if.org Git - mmurtl/blob - msamples/dumbterm/dumbterm.asm
autocommit for file dated 1995-01-30 22:58:12
[mmurtl] / msamples / dumbterm / dumbterm.asm
1 \r
2 .DATA\r
3 EXTRN _InitDevDr FWORD\r
4 EXTRN _DeviceOp FWORD\r
5 EXTRN _DeviceStat FWORD\r
6 EXTRN _DeviceInit FWORD\r
7 EXTRN _UnMaskIRQ FWORD\r
8 EXTRN _MaskIRQ FWORD\r
9 EXTRN _SetIRQVector FWORD\r
10 EXTRN _EndOfIRQ FWORD\r
11 EXTRN _GetpJCB FWORD\r
12 EXTRN _GetJobNum FWORD\r
13 EXTRN _LoadNewJob FWORD\r
14 EXTRN _Chain FWORD\r
15 EXTRN _ExitJob FWORD\r
16 EXTRN _KillJob FWORD\r
17 EXTRN _SetUserName FWORD\r
18 EXTRN _GetUserName FWORD\r
19 EXTRN _SetCmdLine FWORD\r
20 EXTRN _GetCmdLine FWORD\r
21 EXTRN _SetPath FWORD\r
22 EXTRN _GetPath FWORD\r
23 EXTRN _SetExitJob FWORD\r
24 EXTRN _GetExitJob FWORD\r
25 EXTRN _SetSysIn FWORD\r
26 EXTRN _GetSysIn FWORD\r
27 EXTRN _SetSysOut FWORD\r
28 EXTRN _GetSysOut FWORD\r
29 EXTRN _SetJobName FWORD\r
30 EXTRN _RegisterSvc FWORD\r
31 EXTRN _UnRegisterSvc FWORD\r
32 EXTRN _GetSystemDisk FWORD\r
33 EXTRN _ReadKbd FWORD\r
34 EXTRN _Alarm FWORD\r
35 EXTRN _KillAlarm FWORD\r
36 EXTRN _Sleep FWORD\r
37 EXTRN _MicroDelay FWORD\r
38 EXTRN _GetCMOSTime FWORD\r
39 EXTRN _GetCMOSDate FWORD\r
40 EXTRN _GetTimerTick FWORD\r
41 EXTRN _Tone FWORD\r
42 EXTRN _Beep FWORD\r
43 EXTRN _SetVidOwner FWORD\r
44 EXTRN _SetNormVid FWORD\r
45 EXTRN _GetNormVid FWORD\r
46 EXTRN _ClrScr FWORD\r
47 EXTRN _GetVidChar FWORD\r
48 EXTRN _SetXY FWORD\r
49 EXTRN _PutVidAttrs FWORD\r
50 EXTRN _PutVidChars FWORD\r
51 EXTRN _GetVidOwner FWORD\r
52 EXTRN _GetXY FWORD\r
53 EXTRN _ScrollVid FWORD\r
54 EXTRN _TTYOut FWORD\r
55 EXTRN _EditLine FWORD\r
56 L_lit DB 32,32,32,32,32,84,101,114,109,105,110,97,108,108,121,32\r
57  DB 68,85,77,66,44,32,68,117,109,98,32,84,101,114,109,105\r
58  DB 110,97,108,32,80,114,111,103,114,97,109,13,10,0,32,32\r
59  DB 32,32,32,32,40,77,77,85,82,84,76,32,67,111,109,109\r
60  DB 115,32,68,101,118,105,99,101,32,68,114,105,118,101,114,32\r
61  DB 100,101,109,111,41,32,13,10,0,69,114,114,111,114,32,111\r
62  DB 110,32,68,101,118,105,99,101,32,83,116,97,116,58,32,37\r
63  DB 100,13,10,0,73,82,81,78,117,109,58,32,37,100,13,10\r
64  DB 0,73,79,66,97,115,101,58,32,37,100,13,10,0,115,88\r
65  DB 66,117,102,58,32,32,37,100,13,10,0,115,82,66,117,102\r
66  DB 58,32,32,37,100,13,10,0,82,84,105,109,101,79,58,32\r
67  DB 37,100,13,10,0,88,84,105,109,101,79,58,32,37,100,13\r
68  DB 10,0,69,114,114,111,114,32,111,110,32,68,101,118,105,99\r
69  DB 101,32,73,110,105,116,58,32,37,100,13,10,0,79,112,101\r
70  DB 110,67,111,109,109,67,32,69,82,82,79,82,58,32,37,100\r
71  DB 32,13,10,0,67,111,109,109,117,110,105,99,97,116,105,111\r
72  DB 110,115,32,80,111,114,116,32,73,110,105,116,105,97,108,105\r
73  DB 122,101,100,46,13,10,0,87,114,105,116,101,66,121,116,101\r
74  DB 67,69,114,114,111,114,58,32,37,100,32,13,10,0,10,0\r
75 PUBLIC _key DD 0h\r
76 PUBLIC _com DB 64 DUP(0)\r
77 \r
78 \r
79 .CODE\r
80 EXTRN _fopen: NEAR\r
81 EXTRN _fclose: NEAR\r
82 EXTRN _remove: NEAR\r
83 EXTRN _rename: NEAR\r
84 EXTRN _fgetc: NEAR\r
85 EXTRN _fgets: NEAR\r
86 EXTRN _fputs: NEAR\r
87 EXTRN _fputc: NEAR\r
88 EXTRN _printf: NEAR\r
89 EXTRN _sprintf: NEAR\r
90 EXTRN _fprintf: NEAR\r
91 EXTRN _ftell: NEAR\r
92 EXTRN _rewind: NEAR\r
93 EXTRN _fseek: NEAR\r
94 EXTRN _fread: NEAR\r
95 EXTRN _fwrite: NEAR\r
96 EXTRN _iscntrl: NEAR\r
97 EXTRN _isspace: NEAR\r
98 EXTRN _isdigit: NEAR\r
99 EXTRN _isupper: NEAR\r
100 EXTRN _islower: NEAR\r
101 EXTRN _ispunct: NEAR\r
102 EXTRN _isalpha: NEAR\r
103 EXTRN _isxdigit: NEAR\r
104 EXTRN _isalnum: NEAR\r
105 EXTRN _isgraph: NEAR\r
106 EXTRN _toupper: NEAR\r
107 EXTRN _tolower: NEAR\r
108 EXTRN _strcpy: NEAR\r
109 EXTRN _strncpy: NEAR\r
110 EXTRN _strcat: NEAR\r
111 EXTRN _strncat: NEAR\r
112 EXTRN _strcmp: NEAR\r
113 EXTRN _strncmp: NEAR\r
114 EXTRN _strlen: NEAR\r
115 EXTRN _strchr: NEAR\r
116 PUBLIC _main:\r
117         PUSH EBP\r
118         MOV EBP,ESP\r
119         SUB ESP,7\r
120         PUSH 31\r
121         CALL FWORD PTR _SetNormVid\r
122         CALL FWORD PTR _ClrScr\r
123         PUSH  OFFSET L_lit+0\r
124         MOV EDI, 0\r
125         CALL _printf\r
126         ADD ESP,4\r
127         PUSH  OFFSET L_lit+46\r
128         MOV EDI, 0\r
129         CALL _printf\r
130         ADD ESP,4\r
131         PUSH 6\r
132         PUSH OFFSET _com\r
133         PUSH 64\r
134         LEA EAX,WORD PTR [EBP-4]\r
135         PUSH EAX\r
136         CALL FWORD PTR _DeviceStat\r
137         MOV WORD PTR [EBP-2],AX\r
138         MOVSX EAX,WORD PTR [EBP-2]\r
139         AND EAX,EAX\r
140         JZ L_1\r
141         PUSH 7\r
142         CALL FWORD PTR _SetNormVid\r
143         CALL FWORD PTR _ClrScr\r
144         PUSH  OFFSET L_lit+89\r
145         MOVSX EAX,WORD PTR [EBP-2]\r
146         PUSH EAX\r
147         MOV EDI, 4\r
148         CALL _printf\r
149         ADD ESP,8\r
150         MOVSX EAX,WORD PTR [EBP-2]\r
151         PUSH EAX\r
152         CALL FWORD PTR _ExitJob\r
153 L_1:\r
154         MOV ESI,OFFSET _com\r
155         MOV EAX,9600\r
156         MOV DWORD PTR [ESI+12],EAX\r
157         MOV ESI,OFFSET _com\r
158         XOR EAX,EAX\r
159         MOV BYTE PTR [ESI+16],AL\r
160         MOV ESI,OFFSET _com\r
161         MOV EAX,8\r
162         MOV BYTE PTR [ESI+17],AL\r
163         MOV ESI,OFFSET _com\r
164         MOV EAX,1\r
165         MOV BYTE PTR [ESI+18],AL\r
166         PUSH  OFFSET L_lit+116\r
167         MOV ESI,OFFSET _com\r
168         XOR EAX,EAX\r
169         MOV AL,BYTE PTR [ESI+19]\r
170         PUSH EAX\r
171         MOV EDI, 4\r
172         CALL _printf\r
173         ADD ESP,8\r
174         PUSH  OFFSET L_lit+129\r
175         MOV ESI,OFFSET _com\r
176         PUSH DWORD PTR [ESI+20]\r
177         MOV EDI, 4\r
178         CALL _printf\r
179         ADD ESP,8\r
180         PUSH  OFFSET L_lit+142\r
181         MOV ESI,OFFSET _com\r
182         PUSH DWORD PTR [ESI+24]\r
183         MOV EDI, 4\r
184         CALL _printf\r
185         ADD ESP,8\r
186         PUSH  OFFSET L_lit+155\r
187         MOV ESI,OFFSET _com\r
188         PUSH DWORD PTR [ESI+28]\r
189         MOV EDI, 4\r
190         CALL _printf\r
191         ADD ESP,8\r
192         PUSH  OFFSET L_lit+168\r
193         MOV ESI,OFFSET _com\r
194         PUSH DWORD PTR [ESI+36]\r
195         MOV EDI, 4\r
196         CALL _printf\r
197         ADD ESP,8\r
198         PUSH  OFFSET L_lit+181\r
199         MOV ESI,OFFSET _com\r
200         PUSH DWORD PTR [ESI+32]\r
201         MOV EDI, 4\r
202         CALL _printf\r
203         ADD ESP,8\r
204         PUSH 6\r
205         PUSH OFFSET _com\r
206         PUSH 64\r
207         CALL FWORD PTR _DeviceInit\r
208         MOV WORD PTR [EBP-2],AX\r
209         MOVSX EAX,WORD PTR [EBP-2]\r
210         AND EAX,EAX\r
211         JZ L_2\r
212         PUSH 7\r
213         CALL FWORD PTR _SetNormVid\r
214         CALL FWORD PTR _ClrScr\r
215         PUSH  OFFSET L_lit+194\r
216         MOVSX EAX,WORD PTR [EBP-2]\r
217         PUSH EAX\r
218         MOV EDI, 4\r
219         CALL _printf\r
220         ADD ESP,8\r
221         MOVSX EAX,WORD PTR [EBP-2]\r
222         PUSH EAX\r
223         CALL FWORD PTR _ExitJob\r
224 L_2:\r
225         PUSH 6\r
226         PUSH 10\r
227         XOR EAX,EAX\r
228         PUSH EAX\r
229         XOR EAX,EAX\r
230         PUSH EAX\r
231         LEA EAX,WORD PTR [EBP-4]\r
232         PUSH EAX\r
233         CALL FWORD PTR _DeviceOp\r
234         MOV WORD PTR [EBP-2],AX\r
235         MOVSX EAX,WORD PTR [EBP-2]\r
236         AND EAX,EAX\r
237         JZ L_3\r
238         PUSH 7\r
239         CALL FWORD PTR _SetNormVid\r
240         CALL FWORD PTR _ClrScr\r
241         PUSH  OFFSET L_lit+221\r
242         MOVSX EAX,WORD PTR [EBP-2]\r
243         PUSH EAX\r
244         MOV EDI, 4\r
245         CALL _printf\r
246         ADD ESP,8\r
247         MOVSX EAX,WORD PTR [EBP-2]\r
248         PUSH EAX\r
249         CALL FWORD PTR _ExitJob\r
250 L_3:\r
251         PUSH  OFFSET L_lit+244\r
252         MOV EDI, 0\r
253         CALL _printf\r
254         ADD ESP,4\r
255         MOV EAX,1\r
256         MOV BYTE PTR [EBP-7],AL\r
257 L_4:\r
258         MOVSX EAX,BYTE PTR [EBP-7]\r
259         AND EAX,EAX\r
260         JZ L_5\r
261         PUSH OFFSET _key\r
262         XOR EAX,EAX\r
263         PUSH EAX\r
264         CALL FWORD PTR _ReadKbd\r
265         AND EAX,EAX\r
266         JNZ L_6\r
267         MOV EAX,_key\r
268         AND EAX,127\r
269         MOV BYTE PTR [EBP-5],AL\r
270         MOV EAX,_key\r
271         AND EAX,12288\r
272         JZ L_7\r
273         XOR EAX,EAX\r
274         MOV AL,BYTE PTR [EBP-5]\r
275         PUSH EAX\r
276         CALL _toupper\r
277         JMP L_9\r
278 L_10:\r
279         PUSH 6\r
280         PUSH 11\r
281         XOR EAX,EAX\r
282         PUSH EAX\r
283         XOR EAX,EAX\r
284         PUSH EAX\r
285         LEA EAX,WORD PTR [EBP-4]\r
286         PUSH EAX\r
287         CALL FWORD PTR _DeviceOp\r
288         MOV WORD PTR [EBP-2],AX\r
289         PUSH 7\r
290         CALL FWORD PTR _SetNormVid\r
291         CALL FWORD PTR _ClrScr\r
292         MOVSX EAX,WORD PTR [EBP-2]\r
293         PUSH EAX\r
294         CALL FWORD PTR _ExitJob\r
295         JMP L_8\r
296 L_11:\r
297         JMP L_8\r
298 L_9:\r
299         CMP EAX,81\r
300         JE L_10\r
301         JMP L_11\r
302 L_8:\r
303         JMP L_12\r
304 L_7:\r
305         PUSH 6\r
306         PUSH 32\r
307         XOR EAX,EAX\r
308         PUSH EAX\r
309         XOR EAX,EAX\r
310         PUSH EAX\r
311         LEA EAX,BYTE PTR [EBP-5]\r
312         PUSH EAX\r
313         CALL FWORD PTR _DeviceOp\r
314         MOV WORD PTR [EBP-2],AX\r
315         MOVSX EAX,WORD PTR [EBP-2]\r
316         AND EAX,EAX\r
317         JZ L_13\r
318         PUSH  OFFSET L_lit+279\r
319         MOVSX EAX,WORD PTR [EBP-2]\r
320         PUSH EAX\r
321         MOV EDI, 4\r
322         CALL _printf\r
323         ADD ESP,8\r
324         JMP L_14\r
325 L_13:\r
326         XOR EAX,EAX\r
327         MOV AL,BYTE PTR [EBP-5]\r
328         CMP EAX,13\r
329         SETE AL\r
330         AND AL,AL\r
331         JZ L_15\r
332         MOV EAX,10\r
333         MOV BYTE PTR [EBP-5],AL\r
334         PUSH 6\r
335         PUSH 32\r
336         XOR EAX,EAX\r
337         PUSH EAX\r
338         XOR EAX,EAX\r
339         PUSH EAX\r
340         LEA EAX,BYTE PTR [EBP-5]\r
341         PUSH EAX\r
342         CALL FWORD PTR _DeviceOp\r
343         MOV WORD PTR [EBP-2],AX\r
344 L_15:\r
345 L_14:\r
346 L_12:\r
347 L_6:\r
348         PUSH 6\r
349         PUSH 31\r
350         XOR EAX,EAX\r
351         PUSH EAX\r
352         XOR EAX,EAX\r
353         PUSH EAX\r
354         LEA EAX,BYTE PTR [EBP-5]\r
355         PUSH EAX\r
356         CALL FWORD PTR _DeviceOp\r
357         MOV WORD PTR [EBP-2],AX\r
358         MOVSX EAX,WORD PTR [EBP-2]\r
359         AND EAX,EAX\r
360         JNZ L_16\r
361         LEA EAX,BYTE PTR [EBP-5]\r
362         PUSH EAX\r
363         PUSH 1\r
364         PUSH 31\r
365         CALL FWORD PTR _TTYOut\r
366         XOR EAX,EAX\r
367         MOV AL,BYTE PTR [EBP-6]\r
368         CMP EAX,13\r
369         SETE AL\r
370         AND AL,AL\r
371         JZ L_17\r
372         XOR EAX,EAX\r
373         MOV AL,BYTE PTR [EBP-5]\r
374         CMP EAX,10\r
375         SETNE AL\r
376         AND AL,AL\r
377 L_17:\r
378         JZ L_18\r
379         PUSH  OFFSET L_lit+302\r
380         PUSH 1\r
381         PUSH 31\r
382         CALL FWORD PTR _TTYOut\r
383 L_18:\r
384         XOR EAX,EAX\r
385         MOV AL,BYTE PTR [EBP-5]\r
386         MOV BYTE PTR [EBP-6],AL\r
387 L_16:\r
388         JMP L_4\r
389 L_5:\r
390         MOV ESP,EBP\r
391         POP EBP\r
392         RETN\r