From deab617dff5a85f7272db2c7de931dad727ea2dd Mon Sep 17 00:00:00 2001 From: Richard Burgess <> Date: Mon, 30 Jan 1995 22:46:08 +0000 Subject: [PATCH] autocommit for file dated 1995-01-30 22:46:08 --- msamples/print/print.asm | 613 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 613 insertions(+) create mode 100644 msamples/print/print.asm diff --git a/msamples/print/print.asm b/msamples/print/print.asm new file mode 100644 index 0000000..9a3fc64 --- /dev/null +++ b/msamples/print/print.asm @@ -0,0 +1,613 @@ + +.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 -- 2.40.0