source: vendor/emx/0.9d-fix04/src/dos/oprint.asm

Last change on this file was 18, checked in by bird, 23 years ago

Initial revision

  • Property cvs2svn:cvs-rev set to 1.1
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 4.0 KB
Line 
1;
2; OPRINT.ASM -- Text output via DOS
3;
4; Copyright (c) 1991-1995 by Eberhard Mattes
5;
6; This file is part of emx.
7;
8; emx is free software; you can redistribute it and/or modify it
9; under the terms of the GNU General Public License as published by
10; the Free Software Foundation; either version 2, or (at your option)
11; any later version.
12;
13; emx is distributed in the hope that it will be useful,
14; but WITHOUT ANY WARRANTY; without even the implied warranty of
15; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16; GNU General Public License for more details.
17;
18; You should have received a copy of the GNU General Public License
19; along with emx; see the file COPYING. If not, write to
20; the Free Software Foundation, 59 Temple Place - Suite 330,
21; Boston, MA 02111-1307, USA.
22;
23; See emx.asm for a special exception.
24;
25
26 INCLUDE EMX.INC
27 INCLUDE SIGNAL.INC
28 INCLUDE PROCESS.INC
29
30 PUBLIC ODWORD, OWORD, OBYTE, ONIBBLE
31 PUBLIC OCHAR, OTEXT, OCRLF
32
33
34SV_DATA SEGMENT
35
36O_TMP_CHAR DB ?
37
38$CRLF DB CR, LF, 0
39
40SV_DATA ENDS
41
42SV_CODE SEGMENT
43
44 ASSUME CS:SV_CODE, DS:NOTHING
45
46;
47; Output using DOS
48;
49
50 ASSUME DS:SV_DATA
51ODWORD PROC NEAR
52 ROR EAX, 16
53 CALL OWORD
54 ROR EAX, 16
55 CALL OWORD
56 RET
57ODWORD ENDP
58
59 ASSUME DS:SV_DATA
60OWORD PROC NEAR
61 XCHG AL, AH
62 CALL OBYTE
63 XCHG AL, AH
64 CALL OBYTE
65 RET
66OWORD ENDP
67
68 ASSUME DS:SV_DATA
69OBYTE PROC NEAR
70 PUSH AX
71 SHR AL, 4
72 CALL ONIBBLE
73 POP AX
74 PUSH AX
75 CALL ONIBBLE
76 POP AX
77 RET
78OBYTE ENDP
79
80 ASSUME DS:SV_DATA
81ONIBBLE PROC NEAR
82 AND AL, 0FH
83 ADD AL, 30H
84 CMP AL, 3AH
85 JB SHORT ONIB1
86 ADD AL, 7
87ONIB1: CALL OCHAR
88 RET
89ONIBBLE ENDP
90
91
92;
93; In: EDX Pointer to null-terminated string
94;
95 ASSUME DS:SV_DATA
96OTEXT PROC NEAR
97 PUSH EAX
98 PUSH EBX
99 PUSH ECX
100 MOV ECX, EDX
101 XOR AL, AL
102OTEXT1: CMP AL, DS:[EDX]
103 JE SHORT OTEXT2
104 INC EDX
105 JMP SHORT OTEXT1
106OTEXT2: XCHG EDX, ECX
107 SUB ECX, EDX
108 MOV BX, PROC0.P_HANDLES[1*2]
109 MOV AH, 40H
110 PUSH PROCESS_PTR
111 MOV PROCESS_PTR, NO_PROCESS
112 INT 21H
113 POP PROCESS_PTR
114 POP ECX
115 POP EBX
116 POP EAX
117 RET
118OTEXT ENDP
119
120 ASSUME DS:SV_DATA
121OCHAR PROC NEAR
122 PUSH EAX
123 PUSH EBX
124 PUSH ECX
125 PUSH EDX
126 MOV O_TMP_CHAR, AL
127 LEA EDX, O_TMP_CHAR
128 MOV ECX, 1
129 MOV BX, PROC0.P_HANDLES[1*2]
130 MOV AH, 40H
131 PUSH PROCESS_PTR
132 MOV PROCESS_PTR, NO_PROCESS
133 INT 21H
134 POP PROCESS_PTR
135 POP EDX
136 POP ECX
137 POP EBX
138 POP EAX
139 RET
140OCHAR ENDP
141
142
143 ASSUME DS:SV_DATA
144OCRLF PROC NEAR
145 PUSH EDX
146 LEA EDX, $CRLF
147 CALL OTEXT
148 POP EDX
149 RET
150OCRLF ENDP
151
152SV_CODE ENDS
153
154 END
Note: See TracBrowser for help on using the repository browser.