]> pd.if.org Git - mmurtl/commitdiff
autocommit for file dated 1995-01-30 22:40:56
authorRichard Burgess <>
Mon, 30 Jan 1995 22:40:56 +0000 (22:40 +0000)
committerNathan Wagner <nw@hydaspes.if.org>
Mon, 17 Oct 2016 14:03:47 +0000 (14:03 +0000)
msamples/dumbterm/dumbterm.asm [new file with mode: 0644]

diff --git a/msamples/dumbterm/dumbterm.asm b/msamples/dumbterm/dumbterm.asm
new file mode 100644 (file)
index 0000000..b845305
--- /dev/null
@@ -0,0 +1,392 @@
+\r
+.DATA\r
+EXTRN _InitDevDr FWORD\r
+EXTRN _DeviceOp FWORD\r
+EXTRN _DeviceStat FWORD\r
+EXTRN _DeviceInit FWORD\r
+EXTRN _UnMaskIRQ FWORD\r
+EXTRN _MaskIRQ FWORD\r
+EXTRN _SetIRQVector FWORD\r
+EXTRN _EndOfIRQ 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 _ReadKbd FWORD\r
+EXTRN _Alarm FWORD\r
+EXTRN _KillAlarm FWORD\r
+EXTRN _Sleep FWORD\r
+EXTRN _MicroDelay FWORD\r
+EXTRN _GetCMOSTime FWORD\r
+EXTRN _GetCMOSDate FWORD\r
+EXTRN _GetTimerTick FWORD\r
+EXTRN _Tone FWORD\r
+EXTRN _Beep 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
+L_lit DB 32,32,32,32,32,84,101,114,109,105,110,97,108,108,121,32\r
+ DB 68,85,77,66,44,32,68,117,109,98,32,84,101,114,109,105\r
+ DB 110,97,108,32,80,114,111,103,114,97,109,13,10,0,32,32\r
+ DB 32,32,32,32,40,77,77,85,82,84,76,32,67,111,109,109\r
+ DB 115,32,68,101,118,105,99,101,32,68,114,105,118,101,114,32\r
+ DB 100,101,109,111,41,32,13,10,0,69,114,114,111,114,32,111\r
+ DB 110,32,68,101,118,105,99,101,32,83,116,97,116,58,32,37\r
+ DB 100,13,10,0,73,82,81,78,117,109,58,32,37,100,13,10\r
+ DB 0,73,79,66,97,115,101,58,32,37,100,13,10,0,115,88\r
+ DB 66,117,102,58,32,32,37,100,13,10,0,115,82,66,117,102\r
+ DB 58,32,32,37,100,13,10,0,82,84,105,109,101,79,58,32\r
+ DB 37,100,13,10,0,88,84,105,109,101,79,58,32,37,100,13\r
+ DB 10,0,69,114,114,111,114,32,111,110,32,68,101,118,105,99\r
+ DB 101,32,73,110,105,116,58,32,37,100,13,10,0,79,112,101\r
+ DB 110,67,111,109,109,67,32,69,82,82,79,82,58,32,37,100\r
+ DB 32,13,10,0,67,111,109,109,117,110,105,99,97,116,105,111\r
+ DB 110,115,32,80,111,114,116,32,73,110,105,116,105,97,108,105\r
+ DB 122,101,100,46,13,10,0,87,114,105,116,101,66,121,116,101\r
+ DB 67,69,114,114,111,114,58,32,37,100,32,13,10,0,10,0\r
+PUBLIC _key DD 0h\r
+PUBLIC _com DB 64 DUP(0)\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
+EXTRN _iscntrl: NEAR\r
+EXTRN _isspace: NEAR\r
+EXTRN _isdigit: NEAR\r
+EXTRN _isupper: NEAR\r
+EXTRN _islower: NEAR\r
+EXTRN _ispunct: NEAR\r
+EXTRN _isalpha: NEAR\r
+EXTRN _isxdigit: NEAR\r
+EXTRN _isalnum: NEAR\r
+EXTRN _isgraph: NEAR\r
+EXTRN _toupper: NEAR\r
+EXTRN _tolower: NEAR\r
+EXTRN _strcpy: NEAR\r
+EXTRN _strncpy: NEAR\r
+EXTRN _strcat: NEAR\r
+EXTRN _strncat: NEAR\r
+EXTRN _strcmp: NEAR\r
+EXTRN _strncmp: NEAR\r
+EXTRN _strlen: NEAR\r
+EXTRN _strchr: NEAR\r
+PUBLIC _main:\r
+       PUSH EBP\r
+       MOV EBP,ESP\r
+       SUB ESP,7\r
+       PUSH 31\r
+       CALL FWORD PTR _SetNormVid\r
+       CALL FWORD PTR _ClrScr\r
+       PUSH  OFFSET L_lit+0\r
+       MOV EDI, 0\r
+       CALL _printf\r
+       ADD ESP,4\r
+       PUSH  OFFSET L_lit+46\r
+       MOV EDI, 0\r
+       CALL _printf\r
+       ADD ESP,4\r
+       PUSH 6\r
+       PUSH OFFSET _com\r
+       PUSH 64\r
+       LEA EAX,WORD PTR [EBP-4]\r
+       PUSH EAX\r
+       CALL FWORD PTR _DeviceStat\r
+       MOV WORD PTR [EBP-2],AX\r
+       MOVSX EAX,WORD PTR [EBP-2]\r
+       AND EAX,EAX\r
+       JZ L_1\r
+       PUSH 7\r
+       CALL FWORD PTR _SetNormVid\r
+       CALL FWORD PTR _ClrScr\r
+       PUSH  OFFSET L_lit+89\r
+       MOVSX EAX,WORD PTR [EBP-2]\r
+       PUSH EAX\r
+       MOV EDI, 4\r
+       CALL _printf\r
+       ADD ESP,8\r
+       MOVSX EAX,WORD PTR [EBP-2]\r
+       PUSH EAX\r
+       CALL FWORD PTR _ExitJob\r
+L_1:\r
+       MOV ESI,OFFSET _com\r
+       MOV EAX,9600\r
+       MOV DWORD PTR [ESI+12],EAX\r
+       MOV ESI,OFFSET _com\r
+       XOR EAX,EAX\r
+       MOV BYTE PTR [ESI+16],AL\r
+       MOV ESI,OFFSET _com\r
+       MOV EAX,8\r
+       MOV BYTE PTR [ESI+17],AL\r
+       MOV ESI,OFFSET _com\r
+       MOV EAX,1\r
+       MOV BYTE PTR [ESI+18],AL\r
+       PUSH  OFFSET L_lit+116\r
+       MOV ESI,OFFSET _com\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [ESI+19]\r
+       PUSH EAX\r
+       MOV EDI, 4\r
+       CALL _printf\r
+       ADD ESP,8\r
+       PUSH  OFFSET L_lit+129\r
+       MOV ESI,OFFSET _com\r
+       PUSH DWORD PTR [ESI+20]\r
+       MOV EDI, 4\r
+       CALL _printf\r
+       ADD ESP,8\r
+       PUSH  OFFSET L_lit+142\r
+       MOV ESI,OFFSET _com\r
+       PUSH DWORD PTR [ESI+24]\r
+       MOV EDI, 4\r
+       CALL _printf\r
+       ADD ESP,8\r
+       PUSH  OFFSET L_lit+155\r
+       MOV ESI,OFFSET _com\r
+       PUSH DWORD PTR [ESI+28]\r
+       MOV EDI, 4\r
+       CALL _printf\r
+       ADD ESP,8\r
+       PUSH  OFFSET L_lit+168\r
+       MOV ESI,OFFSET _com\r
+       PUSH DWORD PTR [ESI+36]\r
+       MOV EDI, 4\r
+       CALL _printf\r
+       ADD ESP,8\r
+       PUSH  OFFSET L_lit+181\r
+       MOV ESI,OFFSET _com\r
+       PUSH DWORD PTR [ESI+32]\r
+       MOV EDI, 4\r
+       CALL _printf\r
+       ADD ESP,8\r
+       PUSH 6\r
+       PUSH OFFSET _com\r
+       PUSH 64\r
+       CALL FWORD PTR _DeviceInit\r
+       MOV WORD PTR [EBP-2],AX\r
+       MOVSX EAX,WORD PTR [EBP-2]\r
+       AND EAX,EAX\r
+       JZ L_2\r
+       PUSH 7\r
+       CALL FWORD PTR _SetNormVid\r
+       CALL FWORD PTR _ClrScr\r
+       PUSH  OFFSET L_lit+194\r
+       MOVSX EAX,WORD PTR [EBP-2]\r
+       PUSH EAX\r
+       MOV EDI, 4\r
+       CALL _printf\r
+       ADD ESP,8\r
+       MOVSX EAX,WORD PTR [EBP-2]\r
+       PUSH EAX\r
+       CALL FWORD PTR _ExitJob\r
+L_2:\r
+       PUSH 6\r
+       PUSH 10\r
+       XOR EAX,EAX\r
+       PUSH EAX\r
+       XOR EAX,EAX\r
+       PUSH EAX\r
+       LEA EAX,WORD PTR [EBP-4]\r
+       PUSH EAX\r
+       CALL FWORD PTR _DeviceOp\r
+       MOV WORD PTR [EBP-2],AX\r
+       MOVSX EAX,WORD PTR [EBP-2]\r
+       AND EAX,EAX\r
+       JZ L_3\r
+       PUSH 7\r
+       CALL FWORD PTR _SetNormVid\r
+       CALL FWORD PTR _ClrScr\r
+       PUSH  OFFSET L_lit+221\r
+       MOVSX EAX,WORD PTR [EBP-2]\r
+       PUSH EAX\r
+       MOV EDI, 4\r
+       CALL _printf\r
+       ADD ESP,8\r
+       MOVSX EAX,WORD PTR [EBP-2]\r
+       PUSH EAX\r
+       CALL FWORD PTR _ExitJob\r
+L_3:\r
+       PUSH  OFFSET L_lit+244\r
+       MOV EDI, 0\r
+       CALL _printf\r
+       ADD ESP,4\r
+       MOV EAX,1\r
+       MOV BYTE PTR [EBP-7],AL\r
+L_4:\r
+       MOVSX EAX,BYTE PTR [EBP-7]\r
+       AND EAX,EAX\r
+       JZ L_5\r
+       PUSH OFFSET _key\r
+       XOR EAX,EAX\r
+       PUSH EAX\r
+       CALL FWORD PTR _ReadKbd\r
+       AND EAX,EAX\r
+       JNZ L_6\r
+       MOV EAX,_key\r
+       AND EAX,127\r
+       MOV BYTE PTR [EBP-5],AL\r
+       MOV EAX,_key\r
+       AND EAX,12288\r
+       JZ L_7\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [EBP-5]\r
+       PUSH EAX\r
+       CALL _toupper\r
+       JMP L_9\r
+L_10:\r
+       PUSH 6\r
+       PUSH 11\r
+       XOR EAX,EAX\r
+       PUSH EAX\r
+       XOR EAX,EAX\r
+       PUSH EAX\r
+       LEA EAX,WORD PTR [EBP-4]\r
+       PUSH EAX\r
+       CALL FWORD PTR _DeviceOp\r
+       MOV WORD PTR [EBP-2],AX\r
+       PUSH 7\r
+       CALL FWORD PTR _SetNormVid\r
+       CALL FWORD PTR _ClrScr\r
+       MOVSX EAX,WORD PTR [EBP-2]\r
+       PUSH EAX\r
+       CALL FWORD PTR _ExitJob\r
+       JMP L_8\r
+L_11:\r
+       JMP L_8\r
+L_9:\r
+       CMP EAX,81\r
+       JE L_10\r
+       JMP L_11\r
+L_8:\r
+       JMP L_12\r
+L_7:\r
+       PUSH 6\r
+       PUSH 32\r
+       XOR EAX,EAX\r
+       PUSH EAX\r
+       XOR EAX,EAX\r
+       PUSH EAX\r
+       LEA EAX,BYTE PTR [EBP-5]\r
+       PUSH EAX\r
+       CALL FWORD PTR _DeviceOp\r
+       MOV WORD PTR [EBP-2],AX\r
+       MOVSX EAX,WORD PTR [EBP-2]\r
+       AND EAX,EAX\r
+       JZ L_13\r
+       PUSH  OFFSET L_lit+279\r
+       MOVSX EAX,WORD PTR [EBP-2]\r
+       PUSH EAX\r
+       MOV EDI, 4\r
+       CALL _printf\r
+       ADD ESP,8\r
+       JMP L_14\r
+L_13:\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [EBP-5]\r
+       CMP EAX,13\r
+       SETE AL\r
+       AND AL,AL\r
+       JZ L_15\r
+       MOV EAX,10\r
+       MOV BYTE PTR [EBP-5],AL\r
+       PUSH 6\r
+       PUSH 32\r
+       XOR EAX,EAX\r
+       PUSH EAX\r
+       XOR EAX,EAX\r
+       PUSH EAX\r
+       LEA EAX,BYTE PTR [EBP-5]\r
+       PUSH EAX\r
+       CALL FWORD PTR _DeviceOp\r
+       MOV WORD PTR [EBP-2],AX\r
+L_15:\r
+L_14:\r
+L_12:\r
+L_6:\r
+       PUSH 6\r
+       PUSH 31\r
+       XOR EAX,EAX\r
+       PUSH EAX\r
+       XOR EAX,EAX\r
+       PUSH EAX\r
+       LEA EAX,BYTE PTR [EBP-5]\r
+       PUSH EAX\r
+       CALL FWORD PTR _DeviceOp\r
+       MOV WORD PTR [EBP-2],AX\r
+       MOVSX EAX,WORD PTR [EBP-2]\r
+       AND EAX,EAX\r
+       JNZ L_16\r
+       LEA EAX,BYTE PTR [EBP-5]\r
+       PUSH EAX\r
+       PUSH 1\r
+       PUSH 31\r
+       CALL FWORD PTR _TTYOut\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [EBP-6]\r
+       CMP EAX,13\r
+       SETE AL\r
+       AND AL,AL\r
+       JZ L_17\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [EBP-5]\r
+       CMP EAX,10\r
+       SETNE AL\r
+       AND AL,AL\r
+L_17:\r
+       JZ L_18\r
+       PUSH  OFFSET L_lit+302\r
+       PUSH 1\r
+       PUSH 31\r
+       CALL FWORD PTR _TTYOut\r
+L_18:\r
+       XOR EAX,EAX\r
+       MOV AL,BYTE PTR [EBP-5]\r
+       MOV BYTE PTR [EBP-6],AL\r
+L_16:\r
+       JMP L_4\r
+L_5:\r
+       MOV ESP,EBP\r
+       POP EBP\r
+       RETN\r