.DATA EXTRN _AllocExch FWORD EXTRN _DeAllocExch FWORD EXTRN _GetTSSExch FWORD EXTRN _SetPriority FWORD EXTRN _NewTask FWORD EXTRN _SpawnTask FWORD EXTRN _SendMsg FWORD EXTRN _ISendMsg FWORD EXTRN _WaitMsg FWORD EXTRN _CheckMsg FWORD EXTRN _Request FWORD EXTRN _MoveRequest FWORD EXTRN _Respond FWORD EXTRN _GetpJCB FWORD EXTRN _GetJobNum FWORD EXTRN _LoadNewJob FWORD EXTRN _Chain FWORD EXTRN _ExitJob FWORD EXTRN _KillJob FWORD EXTRN _SetUserName FWORD EXTRN _GetUserName FWORD EXTRN _SetCmdLine FWORD EXTRN _GetCmdLine FWORD EXTRN _SetPath FWORD EXTRN _GetPath FWORD EXTRN _SetExitJob FWORD EXTRN _GetExitJob FWORD EXTRN _SetSysIn FWORD EXTRN _GetSysIn FWORD EXTRN _SetSysOut FWORD EXTRN _GetSysOut FWORD EXTRN _SetJobName FWORD EXTRN _RegisterSvc FWORD EXTRN _UnRegisterSvc FWORD EXTRN _GetSystemDisk FWORD EXTRN _SetVidOwner FWORD EXTRN _SetNormVid FWORD EXTRN _GetNormVid FWORD EXTRN _ClrScr FWORD EXTRN _GetVidChar FWORD EXTRN _SetXY FWORD EXTRN _PutVidAttrs FWORD EXTRN _PutVidChars FWORD EXTRN _GetVidOwner FWORD EXTRN _GetXY FWORD EXTRN _ScrollVid FWORD EXTRN _TTYOut FWORD EXTRN _EditLine FWORD EXTRN _CopyData FWORD EXTRN _FillData FWORD EXTRN _CompareNCS FWORD EXTRN _Compare FWORD EXTRN _OutByte FWORD EXTRN _OutWord FWORD EXTRN _InByte FWORD EXTRN _InWord FWORD EXTRN _ReadCMOS FWORD EXTRN _Alarm FWORD EXTRN _KillAlarm FWORD EXTRN _Sleep FWORD EXTRN _MicroDelay FWORD EXTRN _GetCMOSTime FWORD EXTRN _GetCMOSDate FWORD EXTRN _GetTimerTick FWORD EXTRN _Tone FWORD EXTRN _Beep FWORD EXTRN _InitDevDr FWORD EXTRN _DeviceOp FWORD EXTRN _DeviceStat FWORD EXTRN _DeviceInit FWORD EXTRN _UnMaskIRQ FWORD EXTRN _MaskIRQ FWORD EXTRN _SetIRQVector FWORD EXTRN _EndOfIRQ FWORD PUBLIC _fToFile DB 0 L_lit DB 79,112,101,110,76,80,84,32,69,82,82,79,82,58,32,37 DB 100,32,13,10,0,13,0,10,0,12,0,67,97,110,39,116 DB 32,119,114,105,116,101,32,116,111,32,76,80,84,46,32,69 DB 114,114,111,114,58,32,37,100,13,10,0,67,97,110,39,116 DB 32,99,108,111,115,101,32,76,80,84,46,32,69,114,114,111 DB 114,58,32,37,100,13,10,0,67,84,82,76,45,65,76,84 DB 45,80,114,105,110,116,83,99,114,110,32,119,105,108,108,32 DB 112,114,105,110,116,32,116,104,101,32,115,99,114,101,101,110 DB 32,102,114,111,109,32,97,110,121,32,106,111,98,32,121,111 DB 117,39,114,101,32,118,105,101,119,105,110,103,46,13,10,0 DB 80,114,101,115,115,58,13,10,0,32,32,32,49,41,32,84 DB 111,32,100,105,114,101,99,116,32,115,99,114,101,101,110,32 DB 112,114,105,110,116,115,32,116,111,32,76,80,84,49,47,80 DB 114,105,110,116,101,114,32,40,100,101,102,97,117,108,116,41 DB 46,13,10,0,32,32,32,50,41,32,84,111,32,100,105,114 DB 101,99,116,32,115,99,114,101,101,110,32,112,114,105,110,116 DB 115,32,116,111,32,97,32,102,105,108,101,46,13,10,0,32 DB 32,32,51,41,32,84,111,32,116,101,114,109,105,110,116,101 DB 32,116,104,101,32,115,99,114,101,101,110,32,112,114,105,110 DB 116,32,117,116,105,108,105,116,121,46,13,10,10,0,83,99 DB 114,101,101,110,80,114,105,110,116,0,83,99,114,101,101,110 DB 32,80,114,105,110,116,32,85,116,105,108,105,116,121,32,105 DB 110,115,116,97,108,108,101,100,32,97,115,32,106,111,98,32 DB 110,117,109,98,101,114,58,32,37,100,46,13,10,10,0,75 DB 69,89,66,79,65,82,68,0,69,114,114,111,114,32,37,100 DB 32,111,110,32,71,108,111,98,97,108,32,75,101,121,98,111 DB 97,114,100,32,82,101,113,117,101,115,116,13,10,0,75,69 DB 89,66,79,65,82,68,0,69,114,114,111,114,32,37,100,32 DB 111,110,32,82,101,97,100,75,101,121,32,82,101,113,117,101 DB 115,116,13,10,0,83,99,114,101,101,110,32,112,114,105,110 DB 116,32,100,105,114,101,99,116,101,100,32,116,111,32,112,114 DB 105,110,116,101,114,32,40,76,80,84,49,41,13,10,0,76 DB 80,84,0,13,10,69,110,116,101,114,32,102,105,108,101,110 DB 97,109,101,32,116,111,32,112,114,105,110,116,32,116,111,58 DB 32,0,13,10,0,75,69,89,66,79,65,82,68,0,75,69 DB 89,66,79,65,82,68,0,97,0,67,97,110,39,116,32,111 DB 112,101,110,32,102,105,108,101,58,32,37,115,13,10,0,83 DB 99,114,101,101,110,32,112,114,105,110,116,32,115,101,110,116 DB 32,116,111,32,37,115,32,102,111,114,32,106,111,98,32,37 DB 100,13,10,10,0,83,99,114,101,101,110,32,112,114,105,110 DB 116,32,115,101,110,116,32,116,111,32,76,80,84,49,32,102 DB 111,114,32,106,111,98,32,37,100,13,10,10,0,75,69,89 DB 66,79,65,82,68,0,69,114,114,111,114,32,37,100,32,111 DB 110,32,87,97,105,116,77,115,103,32,102,114,111,109,32,107 DB 101,114,110,101,108,13,10,0 PUBLIC _pRqBlk DD 0h PUBLIC _AnExch DD 0h PUBLIC _Message DD 2 DUP(0) PUBLIC _rqHndlG DD 0h PUBLIC _rqHndlK DD 0h PUBLIC _cbFilename DD 0h PUBLIC _Filename DB 80 DUP(0) PUBLIC _ourJob DD 0h PUBLIC _printJob DD 0h PUBLIC _fh DD 0h PUBLIC _keycode DD 0h PUBLIC _keycodeG DD 0h PUBLIC _buf DB 4160 DUP(0) .CODE EXTRN _fopen: NEAR EXTRN _fclose: NEAR EXTRN _remove: NEAR EXTRN _rename: NEAR EXTRN _fgetc: NEAR EXTRN _fgets: NEAR EXTRN _fputs: NEAR EXTRN _fputc: NEAR EXTRN _printf: NEAR EXTRN _sprintf: NEAR EXTRN _fprintf: NEAR EXTRN _ftell: NEAR EXTRN _rewind: NEAR EXTRN _fseek: NEAR EXTRN _fread: NEAR EXTRN _fwrite: NEAR EXTRN _strcpy: NEAR EXTRN _strncpy: NEAR EXTRN _strcat: NEAR EXTRN _strncat: NEAR EXTRN _strcmp: NEAR EXTRN _strncmp: NEAR EXTRN _strlen: NEAR EXTRN _strchr: NEAR EXTRN _exit: NEAR PUBLIC _CaptureScreen: PUSH EBP MOV EBP,ESP PUSH 753664 PUSH OFFSET _buf PUSH 4000 CALL FWORD PTR _CopyData PUSH 1000 PUSH 15 CALL FWORD PTR _Tone PUSH 300 PUSH 15 CALL FWORD PTR _Tone POP EBP RETN PUBLIC _ProcessScreen: PUSH EBP MOV EBP,ESP SUB ESP,4 XOR EAX,EAX MOV DWORD PTR [EBP-4], EAX L_1: MOV EAX,DWORD PTR [EBP-4] CMP EAX,4000 SETL AL AND AL,AL JZ L_2 JMP SHORT L_3 L_4: MOV EAX,DWORD PTR [EBP-4] ADD EAX,2 MOV DWORD PTR [EBP-4], EAX JMP SHORT L_1 L_3: MOV EAX,DWORD PTR [EBP-4] MOV ESI,OFFSET _buf ADD ESI,EAX XOR EAX,EAX MOV AL,BYTE PTR [ESI] CMP EAX,32 SETB AL AND AL,AL JNZ L_5 MOV EAX,DWORD PTR [EBP-4] MOV ESI,OFFSET _buf ADD ESI,EAX XOR EAX,EAX MOV AL,BYTE PTR [ESI] CMP EAX,126 SETA AL AND AL,AL L_5: JZ L_6 MOV EAX,DWORD PTR [EBP-4] MOV ESI,OFFSET _buf ADD ESI,EAX MOV EAX,32 MOV BYTE PTR [ESI], AL L_6: JMP L_4 L_2: MOV ESP,EBP POP EBP RETN PUBLIC _ScreenToFile: PUSH EBP MOV EBP,ESP SUB ESP,8 XOR EAX,EAX MOV DWORD PTR [EBP-4], EAX L_7: MOV EAX,DWORD PTR [EBP-4] CMP EAX,25 SETL AL AND AL,AL JZ L_8 JMP SHORT L_9 L_10: MOV EAX,DWORD PTR [EBP-4] INC DWORD PTR [EBP-4] JMP SHORT L_7 L_9: XOR EAX,EAX MOV DWORD PTR [EBP-8], EAX L_11: MOV EAX,DWORD PTR [EBP-8] CMP EAX,160 SETL AL AND AL,AL JZ L_12 JMP SHORT L_13 L_14: MOV EAX,DWORD PTR [EBP-8] ADD EAX,2 MOV DWORD PTR [EBP-8], EAX JMP SHORT L_11 L_13: MOV EAX,DWORD PTR [EBP-4] MOV ECX,160 IMUL ECX ADD EAX,DWORD PTR [EBP-8] MOV ESI,OFFSET _buf ADD ESI,EAX XOR EAX,EAX MOV AL,BYTE PTR [ESI] PUSH EAX PUSH DWORD PTR [EBP+8] CALL _fputc JMP L_14 L_12: PUSH 10 PUSH DWORD PTR [EBP+8] CALL _fputc JMP L_10 L_8: MOV ESP,EBP POP EBP RETN 4 PUBLIC _ScreenToLPT: PUSH EBP MOV EBP,ESP SUB ESP,12 PUSH 3 PUSH 10 XOR EAX,EAX PUSH EAX XOR EAX,EAX PUSH EAX LEA EAX,DWORD PTR [EBP-8] PUSH EAX CALL FWORD PTR _DeviceOp MOV DWORD PTR [EBP-4], EAX MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JZ L_15 PUSH OFFSET L_lit+0 PUSH DWORD PTR [EBP-4] MOV EDI, 4 CALL _printf ADD ESP,8 JMP L_16 L_15: XOR EAX,EAX MOV DWORD PTR [EBP-8], EAX L_17: MOV EAX,DWORD PTR [EBP-8] CMP EAX,25 SETL AL AND AL,AL JZ L_18 JMP SHORT L_19 L_20: MOV EAX,DWORD PTR [EBP-8] INC DWORD PTR [EBP-8] JMP SHORT L_17 L_19: XOR EAX,EAX MOV DWORD PTR [EBP-12], EAX L_21: MOV EAX,DWORD PTR [EBP-12] CMP EAX,160 SETL AL AND AL,AL JZ L_22 JMP SHORT L_23 L_24: MOV EAX,DWORD PTR [EBP-12] ADD EAX,2 MOV DWORD PTR [EBP-12], EAX JMP SHORT L_21 L_23: PUSH 3 PUSH 32 XOR EAX,EAX PUSH EAX PUSH 1 MOV EAX,DWORD PTR [EBP-8] MOV ECX,160 IMUL ECX ADD EAX,DWORD PTR [EBP-12] MOV ESI,OFFSET _buf ADD ESI,EAX PUSH ESI CALL FWORD PTR _DeviceOp MOV DWORD PTR [EBP-4], EAX MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JNZ L_22 JMP L_24 L_22: PUSH 3 PUSH 32 XOR EAX,EAX PUSH EAX PUSH 1 PUSH OFFSET L_lit+21 CALL FWORD PTR _DeviceOp MOV DWORD PTR [EBP-4], EAX PUSH 3 PUSH 32 XOR EAX,EAX PUSH EAX PUSH 1 PUSH OFFSET L_lit+23 CALL FWORD PTR _DeviceOp MOV DWORD PTR [EBP-4], EAX MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JNZ L_18 JMP L_20 L_18: PUSH 3 PUSH 32 XOR EAX,EAX PUSH EAX PUSH 1 PUSH OFFSET L_lit+25 CALL FWORD PTR _DeviceOp MOV DWORD PTR [EBP-4], EAX MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JZ L_27 PUSH OFFSET L_lit+27 PUSH DWORD PTR [EBP-4] MOV EDI, 4 CALL _printf ADD ESP,8 L_27: PUSH 3 PUSH 11 XOR EAX,EAX PUSH EAX XOR EAX,EAX PUSH EAX LEA EAX,DWORD PTR [EBP-8] PUSH EAX CALL FWORD PTR _DeviceOp MOV DWORD PTR [EBP-4], EAX MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JZ L_28 PUSH OFFSET L_lit+59 PUSH DWORD PTR [EBP-4] MOV EDI, 4 CALL _printf ADD ESP,8 L_28: L_16: MOV ESP,EBP POP EBP RETN PUBLIC _menu: PUSH EBP MOV EBP,ESP PUSH OFFSET L_lit+88 MOV EDI, 0 CALL _printf ADD ESP,4 PUSH OFFSET L_lit+160 MOV EDI, 0 CALL _printf ADD ESP,4 PUSH OFFSET L_lit+169 MOV EDI, 0 CALL _printf ADD ESP,4 PUSH OFFSET L_lit+228 MOV EDI, 0 CALL _printf ADD ESP,4 PUSH OFFSET L_lit+271 MOV EDI, 0 CALL _printf ADD ESP,4 POP EBP RETN PUBLIC _main: PUSH EBP MOV EBP,ESP SUB ESP,14 PUSH OFFSET _ourJob CALL FWORD PTR _GetJobNum PUSH OFFSET L_lit+318 PUSH 11 CALL FWORD PTR _SetJobName PUSH OFFSET _Filename PUSH 80 PUSH 32 CALL FWORD PTR _FillData XOR EAX,EAX MOV _cbFilename, EAX XOR EAX,EAX MOV _fToFile, AL PUSH OFFSET _AnExch CALL FWORD PTR _AllocExch MOV DWORD PTR [EBP-4], EAX MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JZ L_29 PUSH DWORD PTR [EBP-4] CALL FWORD PTR _ExitJob L_29: PUSH 7 CALL FWORD PTR _SetNormVid CALL FWORD PTR _ClrScr PUSH OFFSET L_lit+330 PUSH _ourJob MOV EDI, 4 CALL _printf ADD ESP,8 PUSH OFFSET L_lit+383 PUSH 2 PUSH _AnExch PUSH OFFSET _rqHndlG XOR EAX,EAX PUSH EAX PUSH OFFSET _keycodeG PUSH 4 XOR EAX,EAX PUSH EAX XOR EAX,EAX PUSH EAX XOR EAX,EAX PUSH EAX XOR EAX,EAX PUSH EAX XOR EAX,EAX PUSH EAX CALL FWORD PTR _Request MOV DWORD PTR [EBP-4], EAX MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JZ L_30 PUSH OFFSET L_lit+392 PUSH DWORD PTR [EBP-4] MOV EDI, 4 CALL _printf ADD ESP,8 L_30: PUSH OFFSET L_lit+430 PUSH 1 PUSH _AnExch PUSH OFFSET _rqHndlK XOR EAX,EAX PUSH EAX PUSH OFFSET _keycode PUSH 4 XOR EAX,EAX PUSH EAX XOR EAX,EAX PUSH EAX PUSH 1 XOR EAX,EAX PUSH EAX XOR EAX,EAX PUSH EAX CALL FWORD PTR _Request MOV DWORD PTR [EBP-4], EAX MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JZ L_31 PUSH OFFSET L_lit+439 PUSH DWORD PTR [EBP-4] MOV EDI, 4 CALL _printf ADD ESP,8 L_31: CALL _menu L_32: MOV EAX,1 AND EAX,EAX JZ L_33 PUSH _AnExch PUSH OFFSET _Message CALL FWORD PTR _WaitMsg MOV DWORD PTR [EBP-4], EAX MOV EAX,DWORD PTR [EBP-4] AND EAX,EAX JNZ L_34 MOV ESI,OFFSET _Message MOV EAX,DWORD PTR [ESI] CMP EAX,_rqHndlK SETE AL AND AL,AL JZ L_35 MOV EAX,_keycode AND EAX,127 MOV BYTE PTR [EBP-13], AL XOR EAX,EAX MOV AL,BYTE PTR [EBP-13] JMP L_37 L_38: XOR EAX,EAX MOV _fToFile, AL PUSH OFFSET L_lit+469 MOV EDI, 0 CALL _printf ADD ESP,4 PUSH OFFSET _Filename PUSH OFFSET L_lit+511 CALL _strcpy MOV EAX,3 MOV _cbFilename, EAX JMP L_36 L_39: PUSH OFFSET L_lit+515 MOV EDI, 0 CALL _printf ADD ESP,4 LEA EAX,DWORD PTR [EBP-8] PUSH EAX LEA EAX,DWORD PTR [EBP-12] PUSH EAX CALL FWORD PTR _GetXY PUSH OFFSET _Filename PUSH _cbFilename PUSH 50 PUSH OFFSET _cbFilename LEA EAX,BYTE PTR [EBP-14] PUSH EAX PUSH 112 CALL FWORD PTR _EditLine XOR EAX,EAX MOV AL,BYTE PTR [EBP-14] CMP EAX,13 SETE AL AND AL,AL JZ L_40 MOV EAX,_cbFilename L_40: AND EAX,EAX JZ L_41 MOV EAX,_cbFilename MOV ESI,OFFSET _Filename ADD ESI,EAX XOR EAX,EAX MOV BYTE PTR [ESI], AL MOV EAX,1 MOV _fToFile, AL JMP L_42 L_41: XOR EAX,EAX MOV _fToFile, AL L_42: PUSH OFFSET L_lit+546 MOV EDI, 0 CALL _printf ADD ESP,4 JMP L_36 L_43: PUSH OFFSET L_lit+549 PUSH 3 PUSH _AnExch PUSH OFFSET _rqHndlG XOR EAX,EAX PUSH EAX XOR EAX,EAX PUSH EAX XOR EAX,EAX PUSH EAX XOR EAX,EAX PUSH EAX XOR EAX,EAX PUSH EAX PUSH _ourJob XOR EAX,EAX PUSH EAX XOR EAX,EAX PUSH EAX CALL FWORD PTR _Request MOV DWORD PTR [EBP-4], EAX PUSH _AnExch PUSH OFFSET _Message CALL FWORD PTR _WaitMsg MOV DWORD PTR [EBP-4], EAX PUSH _AnExch CALL FWORD PTR _DeAllocExch XOR EAX,EAX PUSH EAX CALL _exit JMP L_36 L_37: CMP EAX,51 JE L_43 CMP EAX,50 JE L_39 CMP EAX,49 JE L_38 L_36: PUSH OFFSET L_lit+558 PUSH 1 PUSH _AnExch PUSH OFFSET _rqHndlK XOR EAX,EAX PUSH EAX PUSH OFFSET _keycode PUSH 4 XOR EAX,EAX PUSH EAX XOR EAX,EAX PUSH EAX PUSH 1 XOR EAX,EAX PUSH EAX XOR EAX,EAX PUSH EAX CALL FWORD PTR _Request MOV DWORD PTR [EBP-4], EAX CALL _menu JMP L_44 L_35: MOV ESI,OFFSET _Message MOV EAX,DWORD PTR [ESI] CMP EAX,_rqHndlG SETE AL AND AL,AL JZ L_45 MOV EAX,_keycodeG AND EAX,255 CMP EAX,28 SETE AL AND AL,AL JZ L_46 CALL _CaptureScreen CALL _ProcessScreen MOVSX EAX,_fToFile AND EAX,EAX JZ L_47 PUSH OFFSET _Filename PUSH OFFSET L_lit+567 CALL _fopen MOV _fh, EAX MOV EAX,_fh AND EAX,EAX JZ L_48 PUSH _fh CALL _ScreenToFile PUSH _fh CALL _fclose JMP L_49 L_48: PUSH OFFSET L_lit+569 PUSH OFFSET _Filename MOV EDI, 4 CALL _printf ADD ESP,8 L_49: JMP L_50 L_47: CALL _ScreenToLPT L_50: PUSH OFFSET _printJob CALL FWORD PTR _GetVidOwner MOVSX EAX,_fToFile AND EAX,EAX JZ L_51 PUSH OFFSET L_lit+591 PUSH OFFSET _Filename PUSH _printJob MOV EDI, 8 CALL _printf ADD ESP,12 JMP L_52 L_51: PUSH OFFSET L_lit+629 PUSH _printJob MOV EDI, 4 CALL _printf ADD ESP,8 L_52: CALL _menu L_46: PUSH OFFSET L_lit+669 PUSH 2 PUSH _AnExch PUSH OFFSET _rqHndlG XOR EAX,EAX PUSH EAX PUSH OFFSET _keycodeG PUSH 4 XOR EAX,EAX PUSH EAX XOR EAX,EAX PUSH EAX XOR EAX,EAX PUSH EAX XOR EAX,EAX PUSH EAX XOR EAX,EAX PUSH EAX CALL FWORD PTR _Request MOV DWORD PTR [EBP-4], EAX L_45: L_44: JMP L_53 L_34: PUSH OFFSET L_lit+678 PUSH DWORD PTR [EBP-4] MOV EDI, 4 CALL _printf ADD ESP,8 L_53: JMP L_32 L_33: MOV ESP,EBP POP EBP RETN 8