From: Richard Burgess <> Date: Thu, 9 Feb 1995 16:03:42 +0000 (+0000) Subject: autocommit for file dated 1995-02-09 16:03:42 X-Git-Url: https://pd.if.org/git/?p=mmurtl;a=commitdiff_plain;h=e507261f87dde133f54e9584f8b17665f59ead3c autocommit for file dated 1995-02-09 16:03:42 --- diff --git a/msamples/service/service.asm b/msamples/service/service.asm new file mode 100644 index 0000000..f4de558 --- /dev/null +++ b/msamples/service/service.asm @@ -0,0 +1,238 @@ + +.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 +PUBLIC _NextNumber DD 0 +L_lit DB 78,85,77,66,69,82,83,32,0,78,85,77,66,69,82,83 + DB 32,83,101,114,118,105,99,101,32,73,110,115,116,97,108,108 + DB 101,100,46,13,10,0,65,78,89,32,118,97,108,105,100,32 + DB 107,101,121,115,116,114,111,107,101,32,119,105,108,108,32,116 + DB 101,114,109,105,110,97,116,101,32,116,104,101,32,115,101,114 + DB 118,105,99,101,46,13,10,0,75,69,89,66,79,65,82,68 + DB 0,69,114,114,111,114,32,111,110,32,75,101,121,98,111,97 + DB 114,100,32,82,101,113,117,101,115,116,58,13,10,0,78,85 + DB 77,66,69,82,83,32,0,78,85,77,66,69,82,83,32,83 + DB 101,114,118,105,99,101,32,103,97,118,101,32,111,117,116,32 + DB 110,117,109,98,101,114,58,32,37,100,46,13,10,0 +PUBLIC _pRqBlk DD 0h +PUBLIC _MainExch DD 0h +PUBLIC _Message DD 2 DUP(0) +PUBLIC _rqHndl DD 0h + + +.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 +PUBLIC _main: + PUSH EBP + MOV EBP,ESP + SUB ESP,16 + PUSH OFFSET _MainExch + CALL FWORD PTR _AllocExch + MOV DWORD PTR [EBP-4], EAX + MOV EAX,DWORD PTR [EBP-4] + AND EAX,EAX + JZ L_1 + PUSH DWORD PTR [EBP-4] + CALL FWORD PTR _ExitJob +L_1: + PUSH OFFSET L_lit+0 + PUSH _MainExch + CALL FWORD PTR _RegisterSvc + MOV DWORD PTR [EBP-4], EAX + MOV EAX,DWORD PTR [EBP-4] + AND EAX,EAX + JZ L_2 + PUSH DWORD PTR [EBP-4] + CALL FWORD PTR _ExitJob +L_2: + PUSH 7 + CALL FWORD PTR _SetNormVid + CALL FWORD PTR _ClrScr + PUSH OFFSET L_lit+9 + MOV EDI, 0 + CALL _printf + ADD ESP,4 + PUSH OFFSET L_lit+38 + MOV EDI, 0 + CALL _printf + ADD ESP,4 + PUSH OFFSET L_lit+88 + PUSH 1 + PUSH _MainExch + PUSH OFFSET _rqHndl + XOR EAX,EAX + PUSH EAX + LEA EAX,DWORD PTR [EBP-12] + PUSH EAX + 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_3 + PUSH OFFSET L_lit+97 + PUSH DWORD PTR [EBP-4] + MOV EDI, 4 + CALL _printf + ADD ESP,8 +L_3: +L_4: + MOV EAX,1 + AND EAX,EAX + JZ L_5 + PUSH _MainExch + PUSH OFFSET _Message + CALL FWORD PTR _WaitMsg + MOV DWORD PTR [EBP-4], EAX + MOV EAX,DWORD PTR [EBP-4] + AND EAX,EAX + JNZ L_6 + MOV ESI,OFFSET _Message + MOV EAX,DWORD PTR [ESI] + CMP EAX,_rqHndl + SETE AL + AND AL,AL + JZ L_7 + PUSH OFFSET L_lit+126 + CALL FWORD PTR _UnRegisterSvc +L_8: + PUSH _MainExch + PUSH OFFSET _Message + CALL FWORD PTR _CheckMsg + AND EAX,EAX + JNZ L_9 + MOV ESI,OFFSET _Message + MOV EAX,DWORD PTR [ESI] + MOV _pRqBlk, EAX + PUSH _pRqBlk + PUSH 30 + CALL FWORD PTR _Respond + JMP L_8 +L_9: + PUSH _MainExch + CALL FWORD PTR _DeAllocExch + PUSH 4 + CALL FWORD PTR _ExitJob +L_7: + MOV ESI,OFFSET _Message + MOV EAX,DWORD PTR [ESI] + MOV _pRqBlk, EAX + MOV ESI,_pRqBlk + MOVSX EAX,WORD PTR [ESI+32] + XOR ECX,ECX + CMP EAX,ECX + SETE AL + AND AL,AL + JZ L_10 + XOR EAX,EAX + MOV DWORD PTR [EBP-8], EAX + JMP L_11 +L_10: + MOV ESI,_pRqBlk + MOVSX EAX,WORD PTR [ESI+32] + CMP EAX,1 + SETE AL + AND AL,AL + JZ L_12 + MOV ESI,_pRqBlk + MOV EAX,DWORD PTR [ESI+36] + MOV DWORD PTR [EBP-16], EAX + MOV ESI,DWORD PTR [EBP-16] + MOV EAX,_NextNumber + INC _NextNumber + MOV DWORD PTR [ESI], EAX + XOR EAX,EAX + MOV DWORD PTR [EBP-8], EAX + PUSH OFFSET L_lit+135 + MOV EAX,_NextNumber + SUB EAX,1 + PUSH EAX + MOV EDI, 4 + CALL _printf + ADD ESP,8 + JMP L_13 +L_12: + MOV EAX,32 + MOV DWORD PTR [EBP-8], EAX +L_13: +L_11: + PUSH _pRqBlk + PUSH DWORD PTR [EBP-8] + CALL FWORD PTR _Respond + MOV DWORD PTR [EBP-4], EAX +L_6: + JMP L_4 +L_5: + MOV ESP,EBP + POP EBP + RETN