.DATA EXTRN _InitDevDr FWORD EXTRN _DeviceOp FWORD EXTRN _DeviceStat FWORD EXTRN _DeviceInit FWORD EXTRN _UnMaskIRQ FWORD EXTRN _MaskIRQ FWORD EXTRN _SetIRQVector FWORD EXTRN _EndOfIRQ 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 _ReadKbd 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 _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 PUBLIC _tabstops DD 4 PUBLIC _NoFF DD 0 PUBLIC _fDisplay DD 0 PUBLIC _fBinary DD 0 PUBLIC _col DD 0 L_lit DB 80,114,105,110,116,105,110,103,0,73,110,118,97,108,105,100 DB 32,115,119,105,116,99,104,0,80,114,105,110,116,32,70,105 DB 108,101,44,32,86,101,114,115,105,111,110,32,49,44,48,13 DB 10,0,85,115,97,103,101,58,32,70,105,108,101,110,97,109 DB 101,32,47,49,32,47,50,32,47,52,32,47,56,32,47,70 DB 32,47,68,32,47,66,13,10,0,47,49,32,47,50,32,47 DB 52,32,47,56,32,45,32,84,97,98,32,115,116,111,112,32 DB 116,114,97,110,115,108,97,116,105,111,110,32,118,97,108,117 DB 101,13,10,0,47,70,32,32,110,111,32,70,111,114,109,70 DB 101,101,100,32,97,116,32,101,110,100,32,111,102,32,102,105 DB 108,101,13,10,0,47,68,32,32,68,105,115,112,108,97,121 DB 32,102,105,108,101,32,119,104,105,108,101,32,112,114,105,110 DB 116,105,110,103,13,10,0,47,66,32,32,66,105,110,97,114 DB 121,32,112,114,105,110,116,46,32,78,79,32,116,114,97,110 DB 115,108,97,116,105,111,110,44,32,110,111,32,70,70,13,10 DB 10,0,69,114,114,111,114,58,32,83,111,117,114,99,101,32 DB 102,105,108,101,110,97,109,101,32,114,101,113,117,105,114,101 DB 100,13,10,0,69,114,114,111,114,32,103,101,116,116,105,110 DB 103,32,76,80,84,32,68,101,118,105,99,101,32,83,116,97 DB 116,117,115,58,32,37,100,13,10,0,79,112,101,110,76,80 DB 84,32,69,82,82,79,82,58,32,37,100,32,13,10,0,80 DB 114,105,110,116,105,110,103,32,37,115,32,46,46,46,13,10 DB 0,114,0,67,97,110,39,116,32,111,112,101,110,58,32,37 DB 115,13,10,0,13,10,0,32,0,32,0,37,99,0,69,114 DB 114,111,114,32,87,114,105,116,105,110,103,32,66,121,116,101 DB 58,32,37,100,13,10,0,12,0,67,97,110,39,116,32,99 DB 108,111,115,101,32,76,80,84,46,32,69,114,114,111,114,58 DB 32,37,100,13,10,0,68,111,110,101,13,10,0 PUBLIC _key DD 0h PUBLIC _name DB 80 DUP(0) PUBLIC _f DD 0h PUBLIC _lpt DB 61 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 _iscntrl: NEAR EXTRN _isspace: NEAR EXTRN _isdigit: NEAR EXTRN _isupper: NEAR EXTRN _islower: NEAR EXTRN _ispunct: NEAR EXTRN _isalpha: NEAR EXTRN _isxdigit: NEAR EXTRN _isalnum: NEAR EXTRN _isgraph: NEAR EXTRN _toupper: NEAR EXTRN _tolower: 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 _main: PUSH EBP MOV EBP,ESP SUB ESP,23 PUSH OFFSET L_lit+0 PUSH 8 CALL FWORD PTR _SetJobName MOV ESI,OFFSET _name XOR EAX,EAX MOV BYTE PTR [ESI],AL MOV EAX,1 MOV DWORD PTR [EBP-12],EAX L_1: MOV EAX,[EBP-12] CMP EAX,DWORD PTR [EBP+12] SETL AL AND AL,AL JZ L_2 JMP SHORT L_3 L_4: INC DWORD PTR [EBP-12] MOV EAX,[EBP-12] JMP SHORT L_1 L_3: MOV EAX,[EBP-12] SHL EAX,2 MOV ESI,DWORD PTR [EBP+8] ADD ESI,EAX MOV EAX,DWORD PTR [ESI] MOV DWORD PTR [EBP-23],EAX MOV ESI,DWORD PTR [EBP-23] MOVSX EAX,BYTE PTR [ESI] CMP EAX,47 SETE AL AND AL,AL JZ L_5 MOV ESI,DWORD PTR [EBP-23] INC DWORD PTR [EBP-23] MOV EAX,DWORD PTR [ESI] MOV ESI,DWORD PTR [EBP-23] MOVSX EAX,BYTE PTR [ESI] JMP L_7 L_8: L_9: L_10: L_11: MOV ESI,DWORD PTR [EBP-23] MOVSX EAX,BYTE PTR [ESI] SUB EAX,48 MOV _tabstops,EAX JMP L_6 L_12: L_13: MOV EAX,1 MOV _NoFF,EAX JMP L_6 L_14: L_15: MOV EAX,1 MOV _fDisplay,EAX JMP L_6 L_16: L_17: MOV EAX,1 MOV _fBinary,EAX JMP L_6 L_18: PUSH OFFSET L_lit+9 MOV EDI, 0 CALL _printf ADD ESP,4 PUSH 1 CALL _exit JMP L_6 L_7: CMP EAX,98 JE L_17 CMP EAX,66 JE L_16 CMP EAX,100 JE L_15 CMP EAX,68 JE L_14 CMP EAX,102 JE L_13 CMP EAX,70 JE L_12 CMP EAX,56 JE L_11 CMP EAX,52 JE L_10 CMP EAX,50 JE L_9 CMP EAX,49 JE L_8 JMP L_18 L_6: JMP L_19 L_5: MOV ESI,OFFSET _name MOVSX EAX,BYTE PTR [ESI] AND EAX,EAX JNZ L_20 PUSH OFFSET _name MOV EAX,[EBP-12] SHL EAX,2 MOV ESI,DWORD PTR [EBP+8] ADD ESI,EAX PUSH DWORD PTR [ESI] PUSH 79 CALL _strncpy L_20: L_19: JMP L_4 L_2: MOV ESI,OFFSET _name MOVSX EAX,BYTE PTR [ESI] AND EAX,EAX JNZ L_21 PUSH OFFSET L_lit+24 MOV EDI, 0 CALL _printf ADD ESP,4 PUSH OFFSET L_lit+50 MOV EDI, 0 CALL _printf ADD ESP,4 PUSH OFFSET L_lit+89 MOV EDI, 0 CALL _printf ADD ESP,4 PUSH OFFSET L_lit+132 MOV EDI, 0 CALL _printf ADD ESP,4 PUSH OFFSET L_lit+165 MOV EDI, 0 CALL _printf ADD ESP,4 PUSH OFFSET L_lit+199 MOV EDI, 0 CALL _printf ADD ESP,4 PUSH OFFSET L_lit+242 MOV EDI, 0 CALL _printf ADD ESP,4 PUSH 1 CALL _exit L_21: PUSH 3 PUSH OFFSET _lpt PUSH 64 LEA EAX,DWORD PTR [EBP-12] PUSH EAX CALL FWORD PTR _DeviceStat MOV DWORD PTR [EBP-4],EAX MOV EAX,[EBP-4] AND EAX,EAX JZ L_22 PUSH OFFSET L_lit+276 PUSH DWORD PTR [EBP-4] MOV EDI, 4 CALL _printf ADD ESP,8 PUSH DWORD PTR [EBP-4] CALL FWORD PTR _ExitJob L_22: PUSH 3 PUSH 10 XOR EAX,EAX PUSH EAX XOR EAX,EAX PUSH EAX LEA EAX,DWORD PTR [EBP-12] PUSH EAX CALL FWORD PTR _DeviceOp MOV DWORD PTR [EBP-4],EAX MOV EAX,[EBP-4] AND EAX,EAX JZ L_23 PUSH OFFSET L_lit+314 PUSH DWORD PTR [EBP-4] MOV EDI, 4 CALL _printf ADD ESP,8 PUSH DWORD PTR [EBP-4] CALL FWORD PTR _ExitJob L_23: PUSH OFFSET L_lit+335 PUSH OFFSET _name MOV EDI, 4 CALL _printf ADD ESP,8 PUSH OFFSET _name PUSH OFFSET L_lit+353 CALL _fopen MOV _f,EAX AND EAX,EAX JNZ L_24 PUSH 3 PUSH 12 XOR EAX,EAX PUSH EAX XOR EAX,EAX PUSH EAX LEA EAX,DWORD PTR [EBP-12] PUSH EAX CALL FWORD PTR _DeviceOp MOV DWORD PTR [EBP-4],EAX PUSH OFFSET L_lit+355 PUSH OFFSET _name MOV EDI, 4 CALL _printf ADD ESP,8 PUSH DWORD PTR [EBP-4] CALL FWORD PTR _ExitJob L_24: XOR EAX,EAX MOV _col,EAX XOR EAX,EAX MOV DWORD PTR [EBP-12],EAX XOR EAX,EAX MOV BYTE PTR [EBP-17],AL XOR EAX,EAX MOV BYTE PTR [EBP-19],AL L_25: MOVSX EAX,BYTE PTR [EBP-19] AND EAX,EAX SETZ AL AND AL,AL JZ L_27 MOV EAX,[EBP-4] AND EAX,EAX SETZ AL AND AL,AL L_27: JZ L_26 MOV EAX,[EBP-12] INC DWORD PTR [EBP-12] PUSH _f CALL _fgetc MOV DWORD PTR [EBP-16],EAX XOR EAX,EAX MOV AL,BYTE PTR [EBP-17] MOV BYTE PTR [EBP-18],AL MOV EAX,[EBP-16] AND EAX,255 MOV BYTE PTR [EBP-17],AL MOV EAX,[EBP-16] CMP EAX,-1 SETE AL AND AL,AL JZ L_28 MOV EAX,1 MOV BYTE PTR [EBP-19],AL JMP L_29 L_28: MOV EAX,_fBinary AND EAX,EAX JZ L_30 PUSH 3 PUSH 32 XOR EAX,EAX PUSH EAX PUSH 1 LEA EAX,BYTE PTR [EBP-18] PUSH EAX CALL FWORD PTR _DeviceOp MOV DWORD PTR [EBP-4],EAX JMP L_31 L_30: XOR EAX,EAX MOV AL,BYTE PTR [EBP-17] JMP L_33 L_34: PUSH 3 PUSH 32 XOR EAX,EAX PUSH EAX PUSH 1 LEA EAX,BYTE PTR [EBP-17] PUSH EAX CALL FWORD PTR _DeviceOp MOV DWORD PTR [EBP-4],EAX JMP L_32 L_35: XOR EAX,EAX MOV AL,BYTE PTR [EBP-18] CMP EAX,13 SETNE AL AND AL,AL JZ L_36 MOV EAX,13 MOV BYTE PTR [EBP-18],AL PUSH 3 PUSH 32 XOR EAX,EAX PUSH EAX PUSH 1 LEA EAX,BYTE PTR [EBP-18] PUSH EAX CALL FWORD PTR _DeviceOp MOV DWORD PTR [EBP-4],EAX L_36: PUSH 3 PUSH 32 XOR EAX,EAX PUSH EAX PUSH 1 LEA EAX,BYTE PTR [EBP-17] PUSH EAX CALL FWORD PTR _DeviceOp MOV DWORD PTR [EBP-4],EAX MOV EAX,_fDisplay AND EAX,EAX JZ L_37 PUSH OFFSET L_lit+372 XOR EAX,EAX MOV AL,BYTE PTR [EBP-18] PUSH EAX MOV EDI, 4 CALL _printf ADD ESP,8 L_37: XOR EAX,EAX MOV _col,EAX JMP L_32 L_38: L_39: PUSH 3 PUSH 32 XOR EAX,EAX PUSH EAX PUSH 1 PUSH OFFSET L_lit+375 CALL FWORD PTR _DeviceOp MOV DWORD PTR [EBP-4],EAX MOV EAX,_col INC _col MOV EAX,_fDisplay AND EAX,EAX JZ L_42 PUSH OFFSET L_lit+377 MOV EDI, 0 CALL _printf ADD ESP,4 L_42: L_40: MOV EAX,_col MOV ECX,_tabstops CDQ IDIV ECX MOV EAX,EDX AND EAX,EAX JNZ L_39 L_41: JMP L_32 L_43: MOV EAX,_fDisplay AND EAX,EAX JZ L_44 PUSH OFFSET L_lit+379 XOR EAX,EAX MOV AL,BYTE PTR [EBP-17] PUSH EAX MOV EDI, 4 CALL _printf ADD ESP,8 L_44: MOV EAX,_col INC _col PUSH 3 PUSH 32 XOR EAX,EAX PUSH EAX PUSH 1 LEA EAX,BYTE PTR [EBP-17] PUSH EAX CALL FWORD PTR _DeviceOp MOV DWORD PTR [EBP-4],EAX MOV EAX,[EBP-4] AND EAX,EAX JZ L_45 PUSH OFFSET L_lit+382 PUSH DWORD PTR [EBP-4] MOV EDI, 4 CALL _printf ADD ESP,8 L_45: JMP L_32 L_33: CMP EAX,9 JE L_38 CMP EAX,10 JE L_35 CMP EAX,13 JE L_34 JMP L_43 L_32: L_31: L_29: MOV EAX,[EBP-12] MOV ECX,100 CDQ IDIV ECX MOV EAX,EDX CMP EAX,0 SETE AL AND AL,AL JZ L_46 PUSH OFFSET _key XOR EAX,EAX PUSH EAX CALL FWORD PTR _ReadKbd MOV DWORD PTR [EBP-8],EAX MOV EAX,[EBP-8] AND EAX,EAX JNZ L_47 MOV EAX,_key AND EAX,0 JZ L_48 MOV EAX,1 MOV BYTE PTR [EBP-19],AL MOV EAX,4 MOV DWORD PTR [EBP-4],EAX L_48: L_47: L_46: JMP L_25 L_26: MOV EAX,_fBinary AND EAX,EAX SETZ AL AND AL,AL JZ L_49 MOV EAX,_NoFF AND EAX,EAX SETZ AL AND AL,AL L_49: JZ L_50 PUSH 3 PUSH 32 XOR EAX,EAX PUSH EAX PUSH 1 PUSH OFFSET L_lit+407 CALL FWORD PTR _DeviceOp MOV DWORD PTR [EBP-4],EAX L_50: PUSH _f CALL _fclose PUSH 3 PUSH 11 XOR EAX,EAX PUSH EAX XOR EAX,EAX PUSH EAX LEA EAX,DWORD PTR [EBP-12] PUSH EAX CALL FWORD PTR _DeviceOp MOV DWORD PTR [EBP-4],EAX MOV EAX,[EBP-4] AND EAX,EAX JZ L_51 PUSH OFFSET L_lit+409 PUSH DWORD PTR [EBP-4] MOV EDI, 4 CALL _printf ADD ESP,8 L_51: PUSH OFFSET L_lit+438 MOV EDI, 0 CALL _printf ADD ESP,4 PUSH DWORD PTR [EBP-4] CALL FWORD PTR _ExitJob MOV ESP,EBP POP EBP RETN 8