--- /dev/null
+\r
+.DATA\r
+EXTRN _AllocExch FWORD\r
+EXTRN _DeAllocExch FWORD\r
+EXTRN _GetTSSExch FWORD\r
+EXTRN _SetPriority FWORD\r
+EXTRN _NewTask FWORD\r
+EXTRN _SpawnTask FWORD\r
+EXTRN _SendMsg FWORD\r
+EXTRN _ISendMsg FWORD\r
+EXTRN _WaitMsg FWORD\r
+EXTRN _CheckMsg FWORD\r
+EXTRN _Request FWORD\r
+EXTRN _MoveRequest FWORD\r
+EXTRN _Respond FWORD\r
+EXTRN _GetpJCB FWORD\r
+EXTRN _GetJobNum FWORD\r
+EXTRN _LoadNewJob FWORD\r
+EXTRN _Chain FWORD\r
+EXTRN _ExitJob FWORD\r
+EXTRN _KillJob FWORD\r
+EXTRN _SetUserName FWORD\r
+EXTRN _GetUserName FWORD\r
+EXTRN _SetCmdLine FWORD\r
+EXTRN _GetCmdLine FWORD\r
+EXTRN _SetPath FWORD\r
+EXTRN _GetPath FWORD\r
+EXTRN _SetExitJob FWORD\r
+EXTRN _GetExitJob FWORD\r
+EXTRN _SetSysIn FWORD\r
+EXTRN _GetSysIn FWORD\r
+EXTRN _SetSysOut FWORD\r
+EXTRN _GetSysOut FWORD\r
+EXTRN _SetJobName FWORD\r
+EXTRN _RegisterSvc FWORD\r
+EXTRN _UnRegisterSvc FWORD\r
+EXTRN _GetSystemDisk FWORD\r
+EXTRN _SetVidOwner FWORD\r
+EXTRN _SetNormVid FWORD\r
+EXTRN _GetNormVid FWORD\r
+EXTRN _ClrScr FWORD\r
+EXTRN _GetVidChar FWORD\r
+EXTRN _SetXY FWORD\r
+EXTRN _PutVidAttrs FWORD\r
+EXTRN _PutVidChars FWORD\r
+EXTRN _GetVidOwner FWORD\r
+EXTRN _GetXY FWORD\r
+EXTRN _ScrollVid FWORD\r
+EXTRN _TTYOut FWORD\r
+EXTRN _EditLine FWORD\r
+PUBLIC _NextNumber DD 0\r
+L_lit DB 78,85,77,66,69,82,83,32,0,78,85,77,66,69,82,83\r
+ DB 32,83,101,114,118,105,99,101,32,73,110,115,116,97,108,108\r
+ DB 101,100,46,13,10,0,65,78,89,32,118,97,108,105,100,32\r
+ DB 107,101,121,115,116,114,111,107,101,32,119,105,108,108,32,116\r
+ DB 101,114,109,105,110,97,116,101,32,116,104,101,32,115,101,114\r
+ DB 118,105,99,101,46,13,10,0,75,69,89,66,79,65,82,68\r
+ DB 0,69,114,114,111,114,32,111,110,32,75,101,121,98,111,97\r
+ DB 114,100,32,82,101,113,117,101,115,116,58,13,10,0,78,85\r
+ DB 77,66,69,82,83,32,0,78,85,77,66,69,82,83,32,83\r
+ DB 101,114,118,105,99,101,32,103,97,118,101,32,111,117,116,32\r
+ DB 110,117,109,98,101,114,58,32,37,100,46,13,10,0\r
+PUBLIC _pRqBlk DD 0h\r
+PUBLIC _MainExch DD 0h\r
+PUBLIC _Message DD 2 DUP(0)\r
+PUBLIC _rqHndl DD 0h\r
+\r
+\r
+.CODE\r
+EXTRN _fopen: NEAR\r
+EXTRN _fclose: NEAR\r
+EXTRN _remove: NEAR\r
+EXTRN _rename: NEAR\r
+EXTRN _fgetc: NEAR\r
+EXTRN _fgets: NEAR\r
+EXTRN _fputs: NEAR\r
+EXTRN _fputc: NEAR\r
+EXTRN _printf: NEAR\r
+EXTRN _sprintf: NEAR\r
+EXTRN _fprintf: NEAR\r
+EXTRN _ftell: NEAR\r
+EXTRN _rewind: NEAR\r
+EXTRN _fseek: NEAR\r
+EXTRN _fread: NEAR\r
+EXTRN _fwrite: NEAR\r
+PUBLIC _main:\r
+ PUSH EBP\r
+ MOV EBP,ESP\r
+ SUB ESP,16\r
+ PUSH OFFSET _MainExch\r
+ CALL FWORD PTR _AllocExch\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JZ L_1\r
+ PUSH DWORD PTR [EBP-4]\r
+ CALL FWORD PTR _ExitJob\r
+L_1:\r
+ PUSH OFFSET L_lit+0\r
+ PUSH _MainExch\r
+ CALL FWORD PTR _RegisterSvc\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JZ L_2\r
+ PUSH DWORD PTR [EBP-4]\r
+ CALL FWORD PTR _ExitJob\r
+L_2:\r
+ PUSH 7\r
+ CALL FWORD PTR _SetNormVid\r
+ CALL FWORD PTR _ClrScr\r
+ PUSH OFFSET L_lit+9\r
+ MOV EDI, 0\r
+ CALL _printf\r
+ ADD ESP,4\r
+ PUSH OFFSET L_lit+38\r
+ MOV EDI, 0\r
+ CALL _printf\r
+ ADD ESP,4\r
+ PUSH OFFSET L_lit+88\r
+ PUSH 1\r
+ PUSH _MainExch\r
+ PUSH OFFSET _rqHndl\r
+ XOR EAX,EAX\r
+ PUSH EAX\r
+ LEA EAX,DWORD PTR [EBP-12]\r
+ PUSH EAX\r
+ PUSH 4\r
+ XOR EAX,EAX\r
+ PUSH EAX\r
+ XOR EAX,EAX\r
+ PUSH EAX\r
+ PUSH 1\r
+ XOR EAX,EAX\r
+ PUSH EAX\r
+ XOR EAX,EAX\r
+ PUSH EAX\r
+ CALL FWORD PTR _Request\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JZ L_3\r
+ PUSH OFFSET L_lit+97\r
+ PUSH DWORD PTR [EBP-4]\r
+ MOV EDI, 4\r
+ CALL _printf\r
+ ADD ESP,8\r
+L_3:\r
+L_4:\r
+ MOV EAX,1\r
+ AND EAX,EAX\r
+ JZ L_5\r
+ PUSH _MainExch\r
+ PUSH OFFSET _Message\r
+ CALL FWORD PTR _WaitMsg\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_6\r
+ MOV ESI,OFFSET _Message\r
+ MOV EAX,DWORD PTR [ESI]\r
+ CMP EAX,_rqHndl\r
+ SETE AL\r
+ AND AL,AL\r
+ JZ L_7\r
+ PUSH OFFSET L_lit+126\r
+ CALL FWORD PTR _UnRegisterSvc\r
+L_8:\r
+ PUSH _MainExch\r
+ PUSH OFFSET _Message\r
+ CALL FWORD PTR _CheckMsg\r
+ AND EAX,EAX\r
+ JNZ L_9\r
+ MOV ESI,OFFSET _Message\r
+ MOV EAX,DWORD PTR [ESI]\r
+ MOV _pRqBlk, EAX\r
+ PUSH _pRqBlk\r
+ PUSH 30\r
+ CALL FWORD PTR _Respond\r
+ JMP L_8\r
+L_9:\r
+ PUSH _MainExch\r
+ CALL FWORD PTR _DeAllocExch\r
+ PUSH 4\r
+ CALL FWORD PTR _ExitJob\r
+L_7:\r
+ MOV ESI,OFFSET _Message\r
+ MOV EAX,DWORD PTR [ESI]\r
+ MOV _pRqBlk, EAX\r
+ MOV ESI,_pRqBlk\r
+ MOVSX EAX,WORD PTR [ESI+32]\r
+ XOR ECX,ECX\r
+ CMP EAX,ECX\r
+ SETE AL\r
+ AND AL,AL\r
+ JZ L_10\r
+ XOR EAX,EAX\r
+ MOV DWORD PTR [EBP-8], EAX\r
+ JMP L_11\r
+L_10:\r
+ MOV ESI,_pRqBlk\r
+ MOVSX EAX,WORD PTR [ESI+32]\r
+ CMP EAX,1\r
+ SETE AL\r
+ AND AL,AL\r
+ JZ L_12\r
+ MOV ESI,_pRqBlk\r
+ MOV EAX,DWORD PTR [ESI+36]\r
+ MOV DWORD PTR [EBP-16], EAX\r
+ MOV ESI,DWORD PTR [EBP-16]\r
+ MOV EAX,_NextNumber\r
+ INC _NextNumber\r
+ MOV DWORD PTR [ESI], EAX\r
+ XOR EAX,EAX\r
+ MOV DWORD PTR [EBP-8], EAX\r
+ PUSH OFFSET L_lit+135\r
+ MOV EAX,_NextNumber\r
+ SUB EAX,1\r
+ PUSH EAX\r
+ MOV EDI, 4\r
+ CALL _printf\r
+ ADD ESP,8\r
+ JMP L_13\r
+L_12:\r
+ MOV EAX,32\r
+ MOV DWORD PTR [EBP-8], EAX\r
+L_13:\r
+L_11:\r
+ PUSH _pRqBlk\r
+ PUSH DWORD PTR [EBP-8]\r
+ CALL FWORD PTR _Respond\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_6:\r
+ JMP L_4\r
+L_5:\r
+ MOV ESP,EBP\r
+ POP EBP\r
+ RETN\r