]> pd.if.org Git - mmurtl/blob - msamples/scrnprnt/scrnprnt.asm
9d9a430f5b041d14787889f9816b884f5e3f8de6
[mmurtl] / msamples / scrnprnt / scrnprnt.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 EXTRN _CopyData FWORD\r
52 EXTRN _FillData FWORD\r
53 EXTRN _CompareNCS FWORD\r
54 EXTRN _Compare FWORD\r
55 EXTRN _OutByte FWORD\r
56 EXTRN _OutWord FWORD\r
57 EXTRN _InByte FWORD\r
58 EXTRN _InWord FWORD\r
59 EXTRN _ReadCMOS FWORD\r
60 EXTRN _Alarm FWORD\r
61 EXTRN _KillAlarm FWORD\r
62 EXTRN _Sleep FWORD\r
63 EXTRN _MicroDelay FWORD\r
64 EXTRN _GetCMOSTime FWORD\r
65 EXTRN _GetCMOSDate FWORD\r
66 EXTRN _GetTimerTick FWORD\r
67 EXTRN _Tone FWORD\r
68 EXTRN _Beep FWORD\r
69 EXTRN _InitDevDr FWORD\r
70 EXTRN _DeviceOp FWORD\r
71 EXTRN _DeviceStat FWORD\r
72 EXTRN _DeviceInit FWORD\r
73 EXTRN _UnMaskIRQ FWORD\r
74 EXTRN _MaskIRQ FWORD\r
75 EXTRN _SetIRQVector FWORD\r
76 EXTRN _EndOfIRQ FWORD\r
77 PUBLIC _fToFile DB 0\r
78 L_lit DB 79,112,101,110,76,80,84,32,69,82,82,79,82,58,32,37\r
79  DB 100,32,13,10,0,13,0,10,0,12,0,67,97,110,39,116\r
80  DB 32,119,114,105,116,101,32,116,111,32,76,80,84,46,32,69\r
81  DB 114,114,111,114,58,32,37,100,13,10,0,67,97,110,39,116\r
82  DB 32,99,108,111,115,101,32,76,80,84,46,32,69,114,114,111\r
83  DB 114,58,32,37,100,13,10,0,67,84,82,76,45,65,76,84\r
84  DB 45,80,114,105,110,116,83,99,114,110,32,119,105,108,108,32\r
85  DB 112,114,105,110,116,32,116,104,101,32,115,99,114,101,101,110\r
86  DB 32,102,114,111,109,32,97,110,121,32,106,111,98,32,121,111\r
87  DB 117,39,114,101,32,118,105,101,119,105,110,103,46,13,10,0\r
88  DB 80,114,101,115,115,58,13,10,0,32,32,32,49,41,32,84\r
89  DB 111,32,100,105,114,101,99,116,32,115,99,114,101,101,110,32\r
90  DB 112,114,105,110,116,115,32,116,111,32,76,80,84,49,47,80\r
91  DB 114,105,110,116,101,114,32,40,100,101,102,97,117,108,116,41\r
92  DB 46,13,10,0,32,32,32,50,41,32,84,111,32,100,105,114\r
93  DB 101,99,116,32,115,99,114,101,101,110,32,112,114,105,110,116\r
94  DB 115,32,116,111,32,97,32,102,105,108,101,46,13,10,0,32\r
95  DB 32,32,51,41,32,84,111,32,116,101,114,109,105,110,116,101\r
96  DB 32,116,104,101,32,115,99,114,101,101,110,32,112,114,105,110\r
97  DB 116,32,117,116,105,108,105,116,121,46,13,10,10,0,83,99\r
98  DB 114,101,101,110,80,114,105,110,116,0,83,99,114,101,101,110\r
99  DB 32,80,114,105,110,116,32,85,116,105,108,105,116,121,32,105\r
100  DB 110,115,116,97,108,108,101,100,32,97,115,32,106,111,98,32\r
101  DB 110,117,109,98,101,114,58,32,37,100,46,13,10,10,0,75\r
102  DB 69,89,66,79,65,82,68,0,69,114,114,111,114,32,37,100\r
103  DB 32,111,110,32,71,108,111,98,97,108,32,75,101,121,98,111\r
104  DB 97,114,100,32,82,101,113,117,101,115,116,13,10,0,75,69\r
105  DB 89,66,79,65,82,68,0,69,114,114,111,114,32,37,100,32\r
106  DB 111,110,32,82,101,97,100,75,101,121,32,82,101,113,117,101\r
107  DB 115,116,13,10,0,83,99,114,101,101,110,32,112,114,105,110\r
108  DB 116,32,100,105,114,101,99,116,101,100,32,116,111,32,112,114\r
109  DB 105,110,116,101,114,32,40,76,80,84,49,41,13,10,0,76\r
110  DB 80,84,0,13,10,69,110,116,101,114,32,102,105,108,101,110\r
111  DB 97,109,101,32,116,111,32,112,114,105,110,116,32,116,111,58\r
112  DB 32,0,13,10,0,75,69,89,66,79,65,82,68,0,75,69\r
113  DB 89,66,79,65,82,68,0,97,0,67,97,110,39,116,32,111\r
114  DB 112,101,110,32,102,105,108,101,58,32,37,115,13,10,0,83\r
115  DB 99,114,101,101,110,32,112,114,105,110,116,32,115,101,110,116\r
116  DB 32,116,111,32,37,115,32,102,111,114,32,106,111,98,32,37\r
117  DB 100,13,10,10,0,83,99,114,101,101,110,32,112,114,105,110\r
118  DB 116,32,115,101,110,116,32,116,111,32,76,80,84,49,32,102\r
119  DB 111,114,32,106,111,98,32,37,100,13,10,10,0,75,69,89\r
120  DB 66,79,65,82,68,0,69,114,114,111,114,32,37,100,32,111\r
121  DB 110,32,87,97,105,116,77,115,103,32,102,114,111,109,32,107\r
122  DB 101,114,110,101,108,13,10,0\r
123 PUBLIC _pRqBlk DD 0h\r
124 PUBLIC _AnExch DD 0h\r
125 PUBLIC _Message DD 2 DUP(0)\r
126 PUBLIC _rqHndlG DD 0h\r
127 PUBLIC _rqHndlK DD 0h\r
128 PUBLIC _cbFilename DD 0h\r
129 PUBLIC _Filename DB 80 DUP(0)\r
130 PUBLIC _ourJob DD 0h\r
131 PUBLIC _printJob DD 0h\r
132 PUBLIC _fh DD 0h\r
133 PUBLIC _keycode DD 0h\r
134 PUBLIC _keycodeG DD 0h\r
135 PUBLIC _buf DB 4160 DUP(0)\r
136 \r
137 \r
138 .CODE\r
139 EXTRN _fopen: NEAR\r
140 EXTRN _fclose: NEAR\r
141 EXTRN _remove: NEAR\r
142 EXTRN _rename: NEAR\r
143 EXTRN _fgetc: NEAR\r
144 EXTRN _fgets: NEAR\r
145 EXTRN _fputs: NEAR\r
146 EXTRN _fputc: NEAR\r
147 EXTRN _printf: NEAR\r
148 EXTRN _sprintf: NEAR\r
149 EXTRN _fprintf: NEAR\r
150 EXTRN _ftell: NEAR\r
151 EXTRN _rewind: NEAR\r
152 EXTRN _fseek: NEAR\r
153 EXTRN _fread: NEAR\r
154 EXTRN _fwrite: NEAR\r
155 EXTRN _strcpy: NEAR\r
156 EXTRN _strncpy: NEAR\r
157 EXTRN _strcat: NEAR\r
158 EXTRN _strncat: NEAR\r
159 EXTRN _strcmp: NEAR\r
160 EXTRN _strncmp: NEAR\r
161 EXTRN _strlen: NEAR\r
162 EXTRN _strchr: NEAR\r
163 EXTRN _exit: NEAR\r
164 PUBLIC _CaptureScreen:\r
165         PUSH EBP\r
166         MOV EBP,ESP\r
167         PUSH 753664\r
168         PUSH OFFSET _buf\r
169         PUSH 4000\r
170         CALL FWORD PTR _CopyData\r
171         PUSH 1000\r
172         PUSH 15\r
173         CALL FWORD PTR _Tone\r
174         PUSH 300\r
175         PUSH 15\r
176         CALL FWORD PTR _Tone\r
177         POP EBP\r
178         RETN\r
179 PUBLIC _ProcessScreen:\r
180         PUSH EBP\r
181         MOV EBP,ESP\r
182         SUB ESP,4\r
183         XOR EAX,EAX\r
184         MOV DWORD PTR [EBP-4], EAX\r
185 L_1:\r
186         MOV EAX,DWORD PTR [EBP-4]\r
187         CMP EAX,4000\r
188         SETL AL\r
189         AND AL,AL\r
190         JZ L_2\r
191         JMP SHORT L_3\r
192 L_4:\r
193         MOV EAX,DWORD PTR [EBP-4]\r
194         ADD EAX,2\r
195         MOV DWORD PTR [EBP-4], EAX\r
196         JMP SHORT L_1\r
197 L_3:\r
198         MOV EAX,DWORD PTR [EBP-4]\r
199         MOV ESI,OFFSET _buf\r
200         ADD ESI,EAX\r
201         XOR EAX,EAX\r
202         MOV AL,BYTE PTR [ESI]\r
203         CMP EAX,32\r
204         SETB AL\r
205         AND AL,AL\r
206         JNZ L_5\r
207         MOV EAX,DWORD PTR [EBP-4]\r
208         MOV ESI,OFFSET _buf\r
209         ADD ESI,EAX\r
210         XOR EAX,EAX\r
211         MOV AL,BYTE PTR [ESI]\r
212         CMP EAX,126\r
213         SETA AL\r
214         AND AL,AL\r
215 L_5:\r
216         JZ L_6\r
217         MOV EAX,DWORD PTR [EBP-4]\r
218         MOV ESI,OFFSET _buf\r
219         ADD ESI,EAX\r
220         MOV EAX,32\r
221         MOV BYTE PTR [ESI], AL\r
222 L_6:\r
223         JMP L_4\r
224 L_2:\r
225         MOV ESP,EBP\r
226         POP EBP\r
227         RETN\r
228 PUBLIC _ScreenToFile:\r
229         PUSH EBP\r
230         MOV EBP,ESP\r
231         SUB ESP,8\r
232         XOR EAX,EAX\r
233         MOV DWORD PTR [EBP-4], EAX\r
234 L_7:\r
235         MOV EAX,DWORD PTR [EBP-4]\r
236         CMP EAX,25\r
237         SETL AL\r
238         AND AL,AL\r
239         JZ L_8\r
240         JMP SHORT L_9\r
241 L_10:\r
242         MOV EAX,DWORD PTR [EBP-4]\r
243         INC DWORD PTR [EBP-4]\r
244         JMP SHORT L_7\r
245 L_9:\r
246         XOR EAX,EAX\r
247         MOV DWORD PTR [EBP-8], EAX\r
248 L_11:\r
249         MOV EAX,DWORD PTR [EBP-8]\r
250         CMP EAX,160\r
251         SETL AL\r
252         AND AL,AL\r
253         JZ L_12\r
254         JMP SHORT L_13\r
255 L_14:\r
256         MOV EAX,DWORD PTR [EBP-8]\r
257         ADD EAX,2\r
258         MOV DWORD PTR [EBP-8], EAX\r
259         JMP SHORT L_11\r
260 L_13:\r
261         MOV EAX,DWORD PTR [EBP-4]\r
262         MOV ECX,160\r
263         IMUL ECX\r
264         ADD EAX,DWORD PTR [EBP-8]\r
265         MOV ESI,OFFSET _buf\r
266         ADD ESI,EAX\r
267         XOR EAX,EAX\r
268         MOV AL,BYTE PTR [ESI]\r
269         PUSH EAX\r
270         PUSH DWORD PTR [EBP+8]\r
271         CALL _fputc\r
272         JMP L_14\r
273 L_12:\r
274         PUSH 10\r
275         PUSH DWORD PTR [EBP+8]\r
276         CALL _fputc\r
277         JMP L_10\r
278 L_8:\r
279         MOV ESP,EBP\r
280         POP EBP\r
281         RETN 4\r
282 PUBLIC _ScreenToLPT:\r
283         PUSH EBP\r
284         MOV EBP,ESP\r
285         SUB ESP,12\r
286         PUSH 3\r
287         PUSH 10\r
288         XOR EAX,EAX\r
289         PUSH EAX\r
290         XOR EAX,EAX\r
291         PUSH EAX\r
292         LEA EAX,DWORD PTR [EBP-8]\r
293         PUSH EAX\r
294         CALL FWORD PTR _DeviceOp\r
295         MOV DWORD PTR [EBP-4], EAX\r
296         MOV EAX,DWORD PTR [EBP-4]\r
297         AND EAX,EAX\r
298         JZ L_15\r
299         PUSH OFFSET L_lit+0\r
300         PUSH DWORD PTR [EBP-4]\r
301         MOV EDI, 4\r
302         CALL _printf\r
303         ADD ESP,8\r
304         JMP L_16\r
305 L_15:\r
306         XOR EAX,EAX\r
307         MOV DWORD PTR [EBP-8], EAX\r
308 L_17:\r
309         MOV EAX,DWORD PTR [EBP-8]\r
310         CMP EAX,25\r
311         SETL AL\r
312         AND AL,AL\r
313         JZ L_18\r
314         JMP SHORT L_19\r
315 L_20:\r
316         MOV EAX,DWORD PTR [EBP-8]\r
317         INC DWORD PTR [EBP-8]\r
318         JMP SHORT L_17\r
319 L_19:\r
320         XOR EAX,EAX\r
321         MOV DWORD PTR [EBP-12], EAX\r
322 L_21:\r
323         MOV EAX,DWORD PTR [EBP-12]\r
324         CMP EAX,160\r
325         SETL AL\r
326         AND AL,AL\r
327         JZ L_22\r
328         JMP SHORT L_23\r
329 L_24:\r
330         MOV EAX,DWORD PTR [EBP-12]\r
331         ADD EAX,2\r
332         MOV DWORD PTR [EBP-12], EAX\r
333         JMP SHORT L_21\r
334 L_23:\r
335         PUSH 3\r
336         PUSH 32\r
337         XOR EAX,EAX\r
338         PUSH EAX\r
339         PUSH 1\r
340         MOV EAX,DWORD PTR [EBP-8]\r
341         MOV ECX,160\r
342         IMUL ECX\r
343         ADD EAX,DWORD PTR [EBP-12]\r
344         MOV ESI,OFFSET _buf\r
345         ADD ESI,EAX\r
346         PUSH ESI\r
347         CALL FWORD PTR _DeviceOp\r
348         MOV DWORD PTR [EBP-4], EAX\r
349         MOV EAX,DWORD PTR [EBP-4]\r
350         AND EAX,EAX\r
351         JNZ L_22\r
352         JMP L_24\r
353 L_22:\r
354         PUSH 3\r
355         PUSH 32\r
356         XOR EAX,EAX\r
357         PUSH EAX\r
358         PUSH 1\r
359         PUSH OFFSET L_lit+21\r
360         CALL FWORD PTR _DeviceOp\r
361         MOV DWORD PTR [EBP-4], EAX\r
362         PUSH 3\r
363         PUSH 32\r
364         XOR EAX,EAX\r
365         PUSH EAX\r
366         PUSH 1\r
367         PUSH OFFSET L_lit+23\r
368         CALL FWORD PTR _DeviceOp\r
369         MOV DWORD PTR [EBP-4], EAX\r
370         MOV EAX,DWORD PTR [EBP-4]\r
371         AND EAX,EAX\r
372         JNZ L_18\r
373         JMP L_20\r
374 L_18:\r
375         PUSH 3\r
376         PUSH 32\r
377         XOR EAX,EAX\r
378         PUSH EAX\r
379         PUSH 1\r
380         PUSH OFFSET L_lit+25\r
381         CALL FWORD PTR _DeviceOp\r
382         MOV DWORD PTR [EBP-4], EAX\r
383         MOV EAX,DWORD PTR [EBP-4]\r
384         AND EAX,EAX\r
385         JZ L_27\r
386         PUSH OFFSET L_lit+27\r
387         PUSH DWORD PTR [EBP-4]\r
388         MOV EDI, 4\r
389         CALL _printf\r
390         ADD ESP,8\r
391 L_27:\r
392         PUSH 3\r
393         PUSH 11\r
394         XOR EAX,EAX\r
395         PUSH EAX\r
396         XOR EAX,EAX\r
397         PUSH EAX\r
398         LEA EAX,DWORD PTR [EBP-8]\r
399         PUSH EAX\r
400         CALL FWORD PTR _DeviceOp\r
401         MOV DWORD PTR [EBP-4], EAX\r
402         MOV EAX,DWORD PTR [EBP-4]\r
403         AND EAX,EAX\r
404         JZ L_28\r
405         PUSH OFFSET L_lit+59\r
406         PUSH DWORD PTR [EBP-4]\r
407         MOV EDI, 4\r
408         CALL _printf\r
409         ADD ESP,8\r
410 L_28:\r
411 L_16:\r
412         MOV ESP,EBP\r
413         POP EBP\r
414         RETN\r
415 PUBLIC _menu:\r
416         PUSH EBP\r
417         MOV EBP,ESP\r
418         PUSH OFFSET L_lit+88\r
419         MOV EDI, 0\r
420         CALL _printf\r
421         ADD ESP,4\r
422         PUSH OFFSET L_lit+160\r
423         MOV EDI, 0\r
424         CALL _printf\r
425         ADD ESP,4\r
426         PUSH OFFSET L_lit+169\r
427         MOV EDI, 0\r
428         CALL _printf\r
429         ADD ESP,4\r
430         PUSH OFFSET L_lit+228\r
431         MOV EDI, 0\r
432         CALL _printf\r
433         ADD ESP,4\r
434         PUSH OFFSET L_lit+271\r
435         MOV EDI, 0\r
436         CALL _printf\r
437         ADD ESP,4\r
438         POP EBP\r
439         RETN\r
440 PUBLIC _main:\r
441         PUSH EBP\r
442         MOV EBP,ESP\r
443         SUB ESP,14\r
444         PUSH OFFSET _ourJob\r
445         CALL FWORD PTR _GetJobNum\r
446         PUSH OFFSET L_lit+318\r
447         PUSH 11\r
448         CALL FWORD PTR _SetJobName\r
449         PUSH OFFSET _Filename\r
450         PUSH 80\r
451         PUSH 32\r
452         CALL FWORD PTR _FillData\r
453         XOR EAX,EAX\r
454         MOV _cbFilename, EAX\r
455         XOR EAX,EAX\r
456         MOV _fToFile, AL\r
457         PUSH OFFSET _AnExch\r
458         CALL FWORD PTR _AllocExch\r
459         MOV DWORD PTR [EBP-4], EAX\r
460         MOV EAX,DWORD PTR [EBP-4]\r
461         AND EAX,EAX\r
462         JZ L_29\r
463         PUSH DWORD PTR [EBP-4]\r
464         CALL FWORD PTR _ExitJob\r
465 L_29:\r
466         PUSH 7\r
467         CALL FWORD PTR _SetNormVid\r
468         CALL FWORD PTR _ClrScr\r
469         PUSH OFFSET L_lit+330\r
470         PUSH _ourJob\r
471         MOV EDI, 4\r
472         CALL _printf\r
473         ADD ESP,8\r
474         PUSH OFFSET L_lit+383\r
475         PUSH 2\r
476         PUSH _AnExch\r
477         PUSH OFFSET _rqHndlG\r
478         XOR EAX,EAX\r
479         PUSH EAX\r
480         PUSH OFFSET _keycodeG\r
481         PUSH 4\r
482         XOR EAX,EAX\r
483         PUSH EAX\r
484         XOR EAX,EAX\r
485         PUSH EAX\r
486         XOR EAX,EAX\r
487         PUSH EAX\r
488         XOR EAX,EAX\r
489         PUSH EAX\r
490         XOR EAX,EAX\r
491         PUSH EAX\r
492         CALL FWORD PTR _Request\r
493         MOV DWORD PTR [EBP-4], EAX\r
494         MOV EAX,DWORD PTR [EBP-4]\r
495         AND EAX,EAX\r
496         JZ L_30\r
497         PUSH OFFSET L_lit+392\r
498         PUSH DWORD PTR [EBP-4]\r
499         MOV EDI, 4\r
500         CALL _printf\r
501         ADD ESP,8\r
502 L_30:\r
503         PUSH OFFSET L_lit+430\r
504         PUSH 1\r
505         PUSH _AnExch\r
506         PUSH OFFSET _rqHndlK\r
507         XOR EAX,EAX\r
508         PUSH EAX\r
509         PUSH OFFSET _keycode\r
510         PUSH 4\r
511         XOR EAX,EAX\r
512         PUSH EAX\r
513         XOR EAX,EAX\r
514         PUSH EAX\r
515         PUSH 1\r
516         XOR EAX,EAX\r
517         PUSH EAX\r
518         XOR EAX,EAX\r
519         PUSH EAX\r
520         CALL FWORD PTR _Request\r
521         MOV DWORD PTR [EBP-4], EAX\r
522         MOV EAX,DWORD PTR [EBP-4]\r
523         AND EAX,EAX\r
524         JZ L_31\r
525         PUSH OFFSET L_lit+439\r
526         PUSH DWORD PTR [EBP-4]\r
527         MOV EDI, 4\r
528         CALL _printf\r
529         ADD ESP,8\r
530 L_31:\r
531         CALL _menu\r
532 L_32:\r
533         MOV EAX,1\r
534         AND EAX,EAX\r
535         JZ L_33\r
536         PUSH _AnExch\r
537         PUSH OFFSET _Message\r
538         CALL FWORD PTR _WaitMsg\r
539         MOV DWORD PTR [EBP-4], EAX\r
540         MOV EAX,DWORD PTR [EBP-4]\r
541         AND EAX,EAX\r
542         JNZ L_34\r
543         MOV ESI,OFFSET _Message\r
544         MOV EAX,DWORD PTR [ESI]\r
545         CMP EAX,_rqHndlK\r
546         SETE AL\r
547         AND AL,AL\r
548         JZ L_35\r
549         MOV EAX,_keycode\r
550         AND EAX,127\r
551         MOV BYTE PTR [EBP-13], AL\r
552         XOR EAX,EAX\r
553         MOV AL,BYTE PTR [EBP-13]\r
554         JMP L_37\r
555 L_38:\r
556         XOR EAX,EAX\r
557         MOV _fToFile, AL\r
558         PUSH OFFSET L_lit+469\r
559         MOV EDI, 0\r
560         CALL _printf\r
561         ADD ESP,4\r
562         PUSH OFFSET _Filename\r
563         PUSH OFFSET L_lit+511\r
564         CALL _strcpy\r
565         MOV EAX,3\r
566         MOV _cbFilename, EAX\r
567         JMP L_36\r
568 L_39:\r
569         PUSH OFFSET L_lit+515\r
570         MOV EDI, 0\r
571         CALL _printf\r
572         ADD ESP,4\r
573         LEA EAX,DWORD PTR [EBP-8]\r
574         PUSH EAX\r
575         LEA EAX,DWORD PTR [EBP-12]\r
576         PUSH EAX\r
577         CALL FWORD PTR _GetXY\r
578         PUSH OFFSET _Filename\r
579         PUSH _cbFilename\r
580         PUSH 50\r
581         PUSH OFFSET _cbFilename\r
582         LEA EAX,BYTE PTR [EBP-14]\r
583         PUSH EAX\r
584         PUSH 112\r
585         CALL FWORD PTR _EditLine\r
586         XOR EAX,EAX\r
587         MOV AL,BYTE PTR [EBP-14]\r
588         CMP EAX,13\r
589         SETE AL\r
590         AND AL,AL\r
591         JZ L_40\r
592         MOV EAX,_cbFilename\r
593 L_40:\r
594         AND EAX,EAX\r
595         JZ L_41\r
596         MOV EAX,_cbFilename\r
597         MOV ESI,OFFSET _Filename\r
598         ADD ESI,EAX\r
599         XOR EAX,EAX\r
600         MOV BYTE PTR [ESI], AL\r
601         MOV EAX,1\r
602         MOV _fToFile, AL\r
603         JMP L_42\r
604 L_41:\r
605         XOR EAX,EAX\r
606         MOV _fToFile, AL\r
607 L_42:\r
608         PUSH OFFSET L_lit+546\r
609         MOV EDI, 0\r
610         CALL _printf\r
611         ADD ESP,4\r
612         JMP L_36\r
613 L_43:\r
614         PUSH OFFSET L_lit+549\r
615         PUSH 3\r
616         PUSH _AnExch\r
617         PUSH OFFSET _rqHndlG\r
618         XOR EAX,EAX\r
619         PUSH EAX\r
620         XOR EAX,EAX\r
621         PUSH EAX\r
622         XOR EAX,EAX\r
623         PUSH EAX\r
624         XOR EAX,EAX\r
625         PUSH EAX\r
626         XOR EAX,EAX\r
627         PUSH EAX\r
628         PUSH _ourJob\r
629         XOR EAX,EAX\r
630         PUSH EAX\r
631         XOR EAX,EAX\r
632         PUSH EAX\r
633         CALL FWORD PTR _Request\r
634         MOV DWORD PTR [EBP-4], EAX\r
635         PUSH _AnExch\r
636         PUSH OFFSET _Message\r
637         CALL FWORD PTR _WaitMsg\r
638         MOV DWORD PTR [EBP-4], EAX\r
639         PUSH _AnExch\r
640         CALL FWORD PTR _DeAllocExch\r
641         XOR EAX,EAX\r
642         PUSH EAX\r
643         CALL _exit\r
644         JMP L_36\r
645 L_37:\r
646         CMP EAX,51\r
647         JE L_43\r
648         CMP EAX,50\r
649         JE L_39\r
650         CMP EAX,49\r
651         JE L_38\r
652 L_36:\r
653         PUSH OFFSET L_lit+558\r
654         PUSH 1\r
655         PUSH _AnExch\r
656         PUSH OFFSET _rqHndlK\r
657         XOR EAX,EAX\r
658         PUSH EAX\r
659         PUSH OFFSET _keycode\r
660         PUSH 4\r
661         XOR EAX,EAX\r
662         PUSH EAX\r
663         XOR EAX,EAX\r
664         PUSH EAX\r
665         PUSH 1\r
666         XOR EAX,EAX\r
667         PUSH EAX\r
668         XOR EAX,EAX\r
669         PUSH EAX\r
670         CALL FWORD PTR _Request\r
671         MOV DWORD PTR [EBP-4], EAX\r
672         CALL _menu\r
673         JMP L_44\r
674 L_35:\r
675         MOV ESI,OFFSET _Message\r
676         MOV EAX,DWORD PTR [ESI]\r
677         CMP EAX,_rqHndlG\r
678         SETE AL\r
679         AND AL,AL\r
680         JZ L_45\r
681         MOV EAX,_keycodeG\r
682         AND EAX,255\r
683         CMP EAX,28\r
684         SETE AL\r
685         AND AL,AL\r
686         JZ L_46\r
687         CALL _CaptureScreen\r
688         CALL _ProcessScreen\r
689         MOVSX EAX,_fToFile\r
690         AND EAX,EAX\r
691         JZ L_47\r
692         PUSH OFFSET _Filename\r
693         PUSH OFFSET L_lit+567\r
694         CALL _fopen\r
695         MOV _fh, EAX\r
696         MOV EAX,_fh\r
697         AND EAX,EAX\r
698         JZ L_48\r
699         PUSH _fh\r
700         CALL _ScreenToFile\r
701         PUSH _fh\r
702         CALL _fclose\r
703         JMP L_49\r
704 L_48:\r
705         PUSH OFFSET L_lit+569\r
706         PUSH OFFSET _Filename\r
707         MOV EDI, 4\r
708         CALL _printf\r
709         ADD ESP,8\r
710 L_49:\r
711         JMP L_50\r
712 L_47:\r
713         CALL _ScreenToLPT\r
714 L_50:\r
715         PUSH OFFSET _printJob\r
716         CALL FWORD PTR _GetVidOwner\r
717         MOVSX EAX,_fToFile\r
718         AND EAX,EAX\r
719         JZ L_51\r
720         PUSH OFFSET L_lit+591\r
721         PUSH OFFSET _Filename\r
722         PUSH _printJob\r
723         MOV EDI, 8\r
724         CALL _printf\r
725         ADD ESP,12\r
726         JMP L_52\r
727 L_51:\r
728         PUSH OFFSET L_lit+629\r
729         PUSH _printJob\r
730         MOV EDI, 4\r
731         CALL _printf\r
732         ADD ESP,8\r
733 L_52:\r
734         CALL _menu\r
735 L_46:\r
736         PUSH OFFSET L_lit+669\r
737         PUSH 2\r
738         PUSH _AnExch\r
739         PUSH OFFSET _rqHndlG\r
740         XOR EAX,EAX\r
741         PUSH EAX\r
742         PUSH OFFSET _keycodeG\r
743         PUSH 4\r
744         XOR EAX,EAX\r
745         PUSH EAX\r
746         XOR EAX,EAX\r
747         PUSH EAX\r
748         XOR EAX,EAX\r
749         PUSH EAX\r
750         XOR EAX,EAX\r
751         PUSH EAX\r
752         XOR EAX,EAX\r
753         PUSH EAX\r
754         CALL FWORD PTR _Request\r
755         MOV DWORD PTR [EBP-4], EAX\r
756 L_45:\r
757 L_44:\r
758         JMP L_53\r
759 L_34:\r
760         PUSH OFFSET L_lit+678\r
761         PUSH DWORD PTR [EBP-4]\r
762         MOV EDI, 4\r
763         CALL _printf\r
764         ADD ESP,8\r
765 L_53:\r
766         JMP L_32\r
767 L_33:\r
768         MOV ESP,EBP\r
769         POP EBP\r
770         RETN 8\r