IBM 5170 Technical Reference page 276

Hide thumbs Also See for 5170:
Table of Contents

Advertisement

035E
WR 1 TE_AC_CURRENT
PROC
NEAR
035E
80 FC 04
CMP
AH,4
JS THIS GRAPHICS
0361
72 08
JC
P6
0363
80 FC 07
CMP
AH,7
IS THIS BW CARD
0366
74 03
JE
P6
0368
E9 05B8 R
JMP
GRAPH I CS_WR I TE
0368
P6:
WRITE AC COtHINUE
0368
8A E3
MOV
AH, BL
GET ATTRIBUTE TO AH
0360
50
PUSH
AX
SAVE ON STACK
036E
51
PUSH
CX
SAVE WR 1TE COUNT
036F
E8 0342 R
CALL
F I NO
pas
IT I ON
0372
8B FB
MOV
DI,BX
ADDRESS TO OJ REGISTER
0374
59
POP
CX
WRI TE COUNT
0375
5B
POP
BX
CIIARACTER
IN BX REG
0376
P7:
wR I TE_lOOP
;------ WAIT fOR HORIZONTAL RETRACE
03-/6
8B 16 0063 R
MOY
OX, AODR_6845
GET BASE ADDRESS
OHA
83 C2 06
AOO
DX,6
POINT AT STATUS PORT
037D
P8:
0370
EC
IN
AL,DX
GET STATUS
037E
A8 01
TEST
AL,l
IS IT LOW
0380
75 FB
JNZ
P8
WAIT UNTIL IT IS
0382
FA
CLI
NO MORE J NTERRUPTS
0383
P9 :
0383
EC
IN
AL, OX
GET STATUS
0384
A8 01
TEST
AL,l
IS IT HIGH
0386
74 FB
JZ
P9
WAIT UNTIL IT IS
0388
88 C3
May
AX, BX
RECOVER THE CHAR/ATTR
038A
AB
STOSW
PUT THE CHAR/ATTR
0388
FB
ST I
I NTERRU PTS BACK ON
038C
E2 E8
LOOP
P7
AS MANY TIMES AS REQUESTED
038E
E9 0144 R
JMP
VIDEO RETURN
0391
WR I TE_AC_CURRENT
-
ENDP
;
---------------------
---
----------_.-.--­
WR I TE_C_CURRENT
THIS ROUTINE WRITES THE CHARACTER AT
THE CURRENT CURSOR POSITION, ATTRIBUTE UNCHANGED
INPUT
(AH) '" CURRENT CRT MODE
(BH)
=
DISPLAY PAGE
(CX) '" COUNT OF CHARACTERS TO WRITE
(Al) = CHAR TO WRITE
(OS) '" DATA SEGMENT
( ES) '" REGEN SEGMENT
OUTPUT
NONE
0391
WR I TE C CURRENT PROC
NEAR
0391
80 FC 04
-
-eMP
AH,4
IS THIS GRAPHICS
0394
72 08
JC
P1Q
0396
80 FC 07
CMP
AH,7
IS THIS
BW
CARD
0399
74 03
JE
P1Q
0398
E9
0568
R
JMP
GRAPHICS_WRITE
039E
P10:
039E
50
PUSH
AX
SAVE ON STACK
039F
51
PUSH
ex
SAVE WRITE COUNT
03AO
E8 0342 R
CALL
FIND POSITION
03A3
86 F6
MOY
DI, BX
ADDRESS TO 0 I
03A5
59
POP
ex
WRITE COUNT
03A6
5B
POP
BX
BL HAS CHAR TO WRITE
03A7
P11 ;
WRITE_LOOP
;------ WAIT FOR HORIZONTAL RETRACE
031\7
86 16 0063 R
MOY
OX, ADDR_6845
GET BASE ADDRESS
03Arl
83 C2 06
AOO
DX,6
POINT AT STATUS PORT
03AE
P12:
03AE
EC
IN
Al,DX
GET STATUS
03AF
A8 01
1[ST
AL,l
IS IT LOW
03B1
75 FB
JNZ
P12
WAIT UNTIL IT is
03B3
FA
Cli
NO MORE
INTERRUPTS
03B4
P13 :
03B4
[C
IN
AL, OX
GET STATUS
0365
A8 01
TEST
AL,l
IS IT HIGH
03B7
74 FB
Jl
P13
WAIT UNTIL IT IS
03B9
8A C3
MOY
AL, BL
RECOVER CHAR
03BB
FB
STI
ENABLE
INTS.
03BC
AA
STOSB
PUT THE CHAR/AlTR
03BD
47
INC
01
BUMP POINTER PAST ATTRIBUTE
03BC
E2 E7
LOOP
P11
AS MANY TIMES AS REQUESTED
03CO
E9 0144 R
JJ.jP
VIDEO RETURN
03C3
WR1TE_C_CURRENT ENDP ­
page
;
--.-------
--------
--
-
---------------
-----_.
-_.---------
-
--
- -
-----
- -
WR I TeSTR I NG
This routine writes a string of characters to the crt.
INPUT
(Al)
=
WRITE STRING COMMAND
0 -
3
(BH)
=
DISPLAY PAGE
(CX) :::: COUNT OF CHARACTERS TO WRI TE,
IF CX
THEN RETURN
(Bl) '" ATTRIBUTE OF CHAR TO WRITE
IF AL
==
0
AL
==
1
(ES)
== STRING SEGMENT
(BP) '" STRING OFFSET
OUTPUT
NfA
03C3
WRITE_STRING
PROC
NEAR
TEST FOR I NVAL I D WR I TE STR I NG OPT I ON
03CS
72 03
JB
WO
I F OPT I ON
I NVALI D THEN RETURN
03C7
E9 045B R
JMP
DONE
03CA
OB C9
140:
OR
CX,CX
03C3
3C 04
CMP
AL.04
TEST FOR ZERO LENGTH STR I NG
03CC
75 03
JNZ
Wl
03CE
E9 045B R
DONE
JMP
I F ZERO LENGTH STR I NG THEN RETURN
0301
53
ex
W1 :
PUSH
SAVE PAGE AND POSSIBLE ATTRIBUTE
0302
8A OF
MOY
BL, BH
GET CURRENT CURSOR POSlTlON
0304
32 FF
XOR
BH, BH
0306
01
E3
SAL
BX,l
;
0308
8B B7 0050 R
MOY
S I. [BX+OFFSET CURSOR_POSN 1
030C
5B
POP
BX
;
RESTORE BX
0300
56
PUSH
SI
;
SAVE CURRENT CURSOR POSITION
030E
50
PUSH
AX
SAVE WRITE STRING OPTION
03DF
B8 0200
MOY
AX,0200H
SET NEW CURSOR POS I T
J
ON
03E2
CO 10
INT
10M
03E4
5B
POP
AX
RESTORE WRITE STRING OPTION
WRITE CHAR:
03E5
51
PUSH
03E5
-
CX
03E6
53
PUSH
BX
5-134 Video

Hide quick links:

Advertisement

Table of Contents
loading

Table of Contents