]> wirehaze git hosting - MS-DOS.git/blob - v2.0/source/MORE.ASM

wirehaze git hosting

MZ is back!
[MS-DOS.git] / v2.0 / source / MORE.ASM
1 TITLE MORE MS-DOS Paginate Filter
2 FALSE EQU 0
3 TRUE EQU NOT FALSE
4
5 IBMVER EQU TRUE
6 KANJI EQU FALSE
7 MSVER EQU FALSE
8
9 INCLUDE DOSSYM.ASM
10
11 CODE SEGMENT PUBLIC
12 ORG 100H
13 ASSUME CS:CODE,DS:CODE,ES:CODE,SS:CODE
14 START:
15
16 MOV AH,GET_VERSION
17 INT 21H
18 XCHG AH,AL ; Turn it around to AH.AL
19 CMP AX,200H
20 JAE OKDOS
21 MOV DX,OFFSET BADVER
22 MOV AH,STD_CON_STRING_OUTPUT
23 INT 21H
24 INT 20H
25 OKDOS:
26
27 IF IBMVER
28 IF KANJI
29 MOV BYTE PTR MAXROW,24
30 ELSE
31 MOV BYTE PTR MAXROW,25
32 ENDIF
33 MOV AH,15
34 INT 16
35 MOV MAXCOL,AH
36 ENDIF
37
38 MOV DX,OFFSET CRLFTXT ; INITIALIZE CURSOR
39 MOV AH,STD_CON_STRING_OUTPUT
40 INT 21H
41
42 XOR BX,BX ; DUP FILE HANDLE 0
43 MOV AH,XDUP
44 INT 21H
45 MOV BP,AX
46
47 MOV AH,CLOSE ; CLOSE STANDARD IN
48 INT 21H
49
50 MOV BX,2 ; DUP STD ERR TO STANDARD IN
51 MOV AH,XDUP
52 INT 21H
53
54 ALOOP:
55 CLD
56 MOV DX,OFFSET BUFFER
57 MOV CX,4096
58 MOV BX,BP
59 MOV AH,READ
60 INT 21H
61 OR AX,AX
62 JNZ SETCX
63 DONE: INT 20H
64 SETCX: MOV CX,AX
65 MOV SI,DX
66
67 TLOOP:
68 LODSB
69 CMP AL,1AH
70 JZ DONE
71 CMP AL,13
72 JNZ NOTCR
73 MOV BYTE PTR CURCOL,1
74 JMP SHORT ISCNTRL
75
76 NOTCR: CMP AL,10
77 JNZ NOTLF
78 INC BYTE PTR CURROW
79 JMP SHORT ISCNTRL
80
81 NOTLF: CMP AL,8
82 JNZ NOTBP
83 CMP BYTE PTR CURCOL,1
84 JZ ISCNTRL
85 DEC BYTE PTR CURCOL
86 JMP SHORT ISCNTRL
87
88 NOTBP: CMP AL,9
89 JNZ NOTTB
90 MOV AH,CURCOL
91 ADD AH,7
92 AND AH,11111000B
93 INC AH
94 MOV CURCOL,AH
95 JMP SHORT ISCNTRL
96
97 NOTTB:
98 IF MSVER ; IBM CONTROL CHARACTER PRINT
99 CMP AL,' '
100 JB ISCNTRL
101 ENDIF
102
103 IF IBMVER
104 CMP AL,7 ; ALL CHARACTERS PRINT BUT BELL
105 JZ ISCNTRL
106 ENDIF
107
108 INC BYTE PTR CURCOL
109 MOV AH,CURCOL
110 CMP AH,MAXCOL
111 JBE ISCNTRL
112 INC BYTE PTR CURROW
113 MOV BYTE PTR CURCOL,1
114
115 ISCNTRL:
116 MOV DL,AL
117 MOV AH,STD_CON_OUTPUT
118 INT 21H
119 MOV AH,CURROW
120 CMP AH,MAXROW
121 JB CHARLOOP
122
123 ASKMORE:
124 MOV DX,OFFSET MORETXT
125 MOV AH,STD_CON_STRING_OUTPUT
126 INT 21H ; ASK MORE?
127
128 MOV AH,STD_CON_INPUT_FLUSH ; WAIT FOR A KEY, NO ECHO
129 MOV AL,STD_CON_INPUT
130 INT 21H
131
132 MOV DX,OFFSET CRLFTXT
133 MOV AH,STD_CON_STRING_OUTPUT
134 INT 21H
135
136 MOV BYTE PTR CURCOL,1
137 MOV BYTE PTR CURROW,1
138
139 CHARLOOP:
140 DEC CX
141 JZ GOBIG
142 JMP TLOOP
143 GOBIG: JMP ALOOP
144
145 MAXROW DB 24
146 MAXCOL DB 80
147 CURROW DB 1
148 CURCOL DB 1
149 EXTRN MORETXT:BYTE,BADVER:BYTE,CRLFTXT:BYTE,BUFFER:BYTE
150
151 CODE ENDS
152 END START
153