]> pd.if.org Git - mmurtl/blob - msamples/service/service.asm
autocommit for file dated 1995-02-09 16:03:42
[mmurtl] / msamples / service / service.asm
1 \r
2 .DATA\r
3 EXTRN _AllocExch FWORD\r
4 EXTRN _DeAllocExch FWORD\r
5 EXTRN _GetTSSExch FWORD\r
6 EXTRN _SetPriority FWORD\r
7 EXTRN _NewTask FWORD\r
8 EXTRN _SpawnTask FWORD\r
9 EXTRN _SendMsg FWORD\r
10 EXTRN _ISendMsg FWORD\r
11 EXTRN _WaitMsg FWORD\r
12 EXTRN _CheckMsg FWORD\r
13 EXTRN _Request FWORD\r
14 EXTRN _MoveRequest FWORD\r
15 EXTRN _Respond FWORD\r
16 EXTRN _GetpJCB FWORD\r
17 EXTRN _GetJobNum FWORD\r
18 EXTRN _LoadNewJob FWORD\r
19 EXTRN _Chain FWORD\r
20 EXTRN _ExitJob FWORD\r
21 EXTRN _KillJob FWORD\r
22 EXTRN _SetUserName FWORD\r
23 EXTRN _GetUserName FWORD\r
24 EXTRN _SetCmdLine FWORD\r
25 EXTRN _GetCmdLine FWORD\r
26 EXTRN _SetPath FWORD\r
27 EXTRN _GetPath FWORD\r
28 EXTRN _SetExitJob FWORD\r
29 EXTRN _GetExitJob FWORD\r
30 EXTRN _SetSysIn FWORD\r
31 EXTRN _GetSysIn FWORD\r
32 EXTRN _SetSysOut FWORD\r
33 EXTRN _GetSysOut FWORD\r
34 EXTRN _SetJobName FWORD\r
35 EXTRN _RegisterSvc FWORD\r
36 EXTRN _UnRegisterSvc FWORD\r
37 EXTRN _GetSystemDisk FWORD\r
38 EXTRN _SetVidOwner FWORD\r
39 EXTRN _SetNormVid FWORD\r
40 EXTRN _GetNormVid FWORD\r
41 EXTRN _ClrScr FWORD\r
42 EXTRN _GetVidChar FWORD\r
43 EXTRN _SetXY FWORD\r
44 EXTRN _PutVidAttrs FWORD\r
45 EXTRN _PutVidChars FWORD\r
46 EXTRN _GetVidOwner FWORD\r
47 EXTRN _GetXY FWORD\r
48 EXTRN _ScrollVid FWORD\r
49 EXTRN _TTYOut FWORD\r
50 EXTRN _EditLine FWORD\r
51 PUBLIC _NextNumber DD 0\r
52 L_lit DB 78,85,77,66,69,82,83,32,0,78,85,77,66,69,82,83\r
53  DB 32,83,101,114,118,105,99,101,32,73,110,115,116,97,108,108\r
54  DB 101,100,46,13,10,0,65,78,89,32,118,97,108,105,100,32\r
55  DB 107,101,121,115,116,114,111,107,101,32,119,105,108,108,32,116\r
56  DB 101,114,109,105,110,97,116,101,32,116,104,101,32,115,101,114\r
57  DB 118,105,99,101,46,13,10,0,75,69,89,66,79,65,82,68\r
58  DB 0,69,114,114,111,114,32,111,110,32,75,101,121,98,111,97\r
59  DB 114,100,32,82,101,113,117,101,115,116,58,13,10,0,78,85\r
60  DB 77,66,69,82,83,32,0,78,85,77,66,69,82,83,32,83\r
61  DB 101,114,118,105,99,101,32,103,97,118,101,32,111,117,116,32\r
62  DB 110,117,109,98,101,114,58,32,37,100,46,13,10,0\r
63 PUBLIC _pRqBlk DD 0h\r
64 PUBLIC _MainExch DD 0h\r
65 PUBLIC _Message DD 2 DUP(0)\r
66 PUBLIC _rqHndl DD 0h\r
67 \r
68 \r
69 .CODE\r
70 EXTRN _fopen: NEAR\r
71 EXTRN _fclose: NEAR\r
72 EXTRN _remove: NEAR\r
73 EXTRN _rename: NEAR\r
74 EXTRN _fgetc: NEAR\r
75 EXTRN _fgets: NEAR\r
76 EXTRN _fputs: NEAR\r
77 EXTRN _fputc: NEAR\r
78 EXTRN _printf: NEAR\r
79 EXTRN _sprintf: NEAR\r
80 EXTRN _fprintf: NEAR\r
81 EXTRN _ftell: NEAR\r
82 EXTRN _rewind: NEAR\r
83 EXTRN _fseek: NEAR\r
84 EXTRN _fread: NEAR\r
85 EXTRN _fwrite: NEAR\r
86 PUBLIC _main:\r
87         PUSH EBP\r
88         MOV EBP,ESP\r
89         SUB ESP,16\r
90         PUSH OFFSET _MainExch\r
91         CALL FWORD PTR _AllocExch\r
92         MOV DWORD PTR [EBP-4], EAX\r
93         MOV EAX,DWORD PTR [EBP-4]\r
94         AND EAX,EAX\r
95         JZ L_1\r
96         PUSH DWORD PTR [EBP-4]\r
97         CALL FWORD PTR _ExitJob\r
98 L_1:\r
99         PUSH OFFSET L_lit+0\r
100         PUSH _MainExch\r
101         CALL FWORD PTR _RegisterSvc\r
102         MOV DWORD PTR [EBP-4], EAX\r
103         MOV EAX,DWORD PTR [EBP-4]\r
104         AND EAX,EAX\r
105         JZ L_2\r
106         PUSH DWORD PTR [EBP-4]\r
107         CALL FWORD PTR _ExitJob\r
108 L_2:\r
109         PUSH 7\r
110         CALL FWORD PTR _SetNormVid\r
111         CALL FWORD PTR _ClrScr\r
112         PUSH OFFSET L_lit+9\r
113         MOV EDI, 0\r
114         CALL _printf\r
115         ADD ESP,4\r
116         PUSH OFFSET L_lit+38\r
117         MOV EDI, 0\r
118         CALL _printf\r
119         ADD ESP,4\r
120         PUSH OFFSET L_lit+88\r
121         PUSH 1\r
122         PUSH _MainExch\r
123         PUSH OFFSET _rqHndl\r
124         XOR EAX,EAX\r
125         PUSH EAX\r
126         LEA EAX,DWORD PTR [EBP-12]\r
127         PUSH EAX\r
128         PUSH 4\r
129         XOR EAX,EAX\r
130         PUSH EAX\r
131         XOR EAX,EAX\r
132         PUSH EAX\r
133         PUSH 1\r
134         XOR EAX,EAX\r
135         PUSH EAX\r
136         XOR EAX,EAX\r
137         PUSH EAX\r
138         CALL FWORD PTR _Request\r
139         MOV DWORD PTR [EBP-4], EAX\r
140         MOV EAX,DWORD PTR [EBP-4]\r
141         AND EAX,EAX\r
142         JZ L_3\r
143         PUSH OFFSET L_lit+97\r
144         PUSH DWORD PTR [EBP-4]\r
145         MOV EDI, 4\r
146         CALL _printf\r
147         ADD ESP,8\r
148 L_3:\r
149 L_4:\r
150         MOV EAX,1\r
151         AND EAX,EAX\r
152         JZ L_5\r
153         PUSH _MainExch\r
154         PUSH OFFSET _Message\r
155         CALL FWORD PTR _WaitMsg\r
156         MOV DWORD PTR [EBP-4], EAX\r
157         MOV EAX,DWORD PTR [EBP-4]\r
158         AND EAX,EAX\r
159         JNZ L_6\r
160         MOV ESI,OFFSET _Message\r
161         MOV EAX,DWORD PTR [ESI]\r
162         CMP EAX,_rqHndl\r
163         SETE AL\r
164         AND AL,AL\r
165         JZ L_7\r
166         PUSH OFFSET L_lit+126\r
167         CALL FWORD PTR _UnRegisterSvc\r
168 L_8:\r
169         PUSH _MainExch\r
170         PUSH OFFSET _Message\r
171         CALL FWORD PTR _CheckMsg\r
172         AND EAX,EAX\r
173         JNZ L_9\r
174         MOV ESI,OFFSET _Message\r
175         MOV EAX,DWORD PTR [ESI]\r
176         MOV _pRqBlk, EAX\r
177         PUSH _pRqBlk\r
178         PUSH 30\r
179         CALL FWORD PTR _Respond\r
180         JMP L_8\r
181 L_9:\r
182         PUSH _MainExch\r
183         CALL FWORD PTR _DeAllocExch\r
184         PUSH 4\r
185         CALL FWORD PTR _ExitJob\r
186 L_7:\r
187         MOV ESI,OFFSET _Message\r
188         MOV EAX,DWORD PTR [ESI]\r
189         MOV _pRqBlk, EAX\r
190         MOV ESI,_pRqBlk\r
191         MOVSX EAX,WORD PTR [ESI+32]\r
192         XOR ECX,ECX\r
193         CMP EAX,ECX\r
194         SETE AL\r
195         AND AL,AL\r
196         JZ L_10\r
197         XOR EAX,EAX\r
198         MOV DWORD PTR [EBP-8], EAX\r
199         JMP L_11\r
200 L_10:\r
201         MOV ESI,_pRqBlk\r
202         MOVSX EAX,WORD PTR [ESI+32]\r
203         CMP EAX,1\r
204         SETE AL\r
205         AND AL,AL\r
206         JZ L_12\r
207         MOV ESI,_pRqBlk\r
208         MOV EAX,DWORD PTR [ESI+36]\r
209         MOV DWORD PTR [EBP-16], EAX\r
210         MOV ESI,DWORD PTR [EBP-16]\r
211         MOV EAX,_NextNumber\r
212         INC _NextNumber\r
213         MOV DWORD PTR [ESI], EAX\r
214         XOR EAX,EAX\r
215         MOV DWORD PTR [EBP-8], EAX\r
216         PUSH OFFSET L_lit+135\r
217         MOV EAX,_NextNumber\r
218         SUB EAX,1\r
219         PUSH EAX\r
220         MOV EDI, 4\r
221         CALL _printf\r
222         ADD ESP,8\r
223         JMP L_13\r
224 L_12:\r
225         MOV EAX,32\r
226         MOV DWORD PTR [EBP-8], EAX\r
227 L_13:\r
228 L_11:\r
229         PUSH _pRqBlk\r
230         PUSH DWORD PTR [EBP-8]\r
231         CALL FWORD PTR _Respond\r
232         MOV DWORD PTR [EBP-4], EAX\r
233 L_6:\r
234         JMP L_4\r
235 L_5:\r
236         MOV ESP,EBP\r
237         POP EBP\r
238         RETN\r