IBM AT 5170 Technical Reference page 352

Table of Contents

Advertisement

IBM Personal Comput.,. MACRO A •• embler
Version 2.00
1-5
BIOS2 ----
06/10/85
BIOS INTERRUPT ROUTINES
06-10-85
305
PAGE
3B.
;---
INT
05 H -------------------------------------- -------------------------­
3B7
PR I NT SCREEN
3BB
THIS LOGIC WILL BE
INVOKED BY INTERRUPT 05H TO PRINT THE SCREEN.
3B'
THE CURSOR POSITION AT THE TIME THIS ROUTINE
IS INVOKED WILL BE
3.0
SAVED AND RESTORED UPON COMPLETION.
THE ROUTINE IS INTENDED TO
3.,
RUN WITH
I NTERRUPTS ENABLED.
I F A SUBSEQUENT PR I NT SCREEN KEY
3.3
3'2
IS DEPRESSED WHILE THIS ROUTINE
IS PRINTING IT WILL BE
IGNORED.
THE BASE PRINTERS STATUS IS CHECKED FOR NOT BUSY AND NOT OUT OF
3'4
PAPER.
AN INITIAL STATUS ERROR WILL ABEND THE PRINT REQUEST.
3.5
ADDRESS
0050:0000
CONTAINS THE STATUS OF THE PRINT SCREEN:
3 ••
3.T
50: 0
= 0
PR I NT SCREEN HAS NOT BEEN CALLED OR UPON RETURN
3'B
FROM A CALL THIS INDICATES A SUCCESSFUL OPERATION.
3 ••
= I
PRINT SCREEN
IS IN PROGRESS -
IGNORE THIS REQUEST.
400
;
= 255
ERROR ENCOUNTERED DURING PRINTING.
401
;
-
- - - -
------
- - - - - - - -
---
---- - - - - - - - - - - - - -
-
-
--
- - - - - - ---
-------------
- -- - - - - - - - -
-- ­
402
403
OIEC
PR I NT_SCREEN
-
I
PROC
FAR
404
; DELA Y I NTERRUPT ENABLE TILL FLAG SET
405
OIEC
IE
PUSH
OS
40.
OlEO 50
PUSH
AX
SAVE WORK REGISTERS
40T
OIEE 53
PUSH
ex
40B
OIEF 51
PUSH
CX
40'
o !FO 52
PUSH
OX
USE 0040:0100 FOR STATUS AREA STORAGE
410
OIFt E8 0000 E
CALL
DDS
GET STATUS BYTE DATA SEGMENT
411
0!F4 80 3E 0100 R 01
CMP
ClSTATUS_BYTE.1
SEE IF PRINT ALREADY IN PROGRESS
"E
412
0!F9 74 74
PRI90
i
EX I T
[F PR [NT ALREADY
[N PROGRESS
413
O!FB C6 06 0100 R 01
MOY
"'"STATUS_BYTE. 1
I
INDICATE PR[NT NOW
[N PROGRESS
414
0200 FB
ST I
i
MUST RUN W[TH
[."ITERRUPTS ENABLED
415
020. B4 OF
MOY
AH,OFH
; WILL REQUEST THE CURRENT SCREEN MODE
41.
0203 CD 10
INT
10H
(ALI = MODE
41 T
(AH)= NUMBER COLUMNS/LINE
41B
IBHI= VISUAL PAGE
41'
0205 8A CC
MOY
CL.AH
W[LL MAKE USE
OF I
CX) REG
I
STER TO
420
0207 8A 2E 0084 R
MOY
CH.ltROWS
CONTROL ROWS ON SCREEN
&
COLUMNS
421
020B FE C5
INC
CH
ADJUST ROWS ON DISPLAY COUNT
422
(CLI = NUMBER COLUMNS/LINE
423
(CHI = NUMBER OF ROWS ON 01 SPLAY
424
;
-------- ------ - - - - - - - -- - -- - - -- - - - - -
------
-
----
-
-----
- -- - - - - - - - -­
42S
;
AT THIS POINT WE KNOW THE COLUMNS/LINE COUNT
15
IN
(CLl
:
42.
AND THE NUMBER OF ROWS ON THE DISPLAY IS IN (CHI.
427
THE PAGE IF APPLICABLE
[S
[N
(BHI.
THE STACK HAS
42B
(05). (AX), (BX), (CX), (OX)
PUSHED.
42.
~~~-----~~~~~--
- - - - - - - -- - - - - - - - - -
-;
~ ~~ ~
-;;
~ ~~~;-
---------
- - - - - -­
430
0200 33 02
43'
020F B4 02
MOV
AH,02H
SET PRINTER STATUS REQUEST COMMAND
432
02.. CD 17
[NT
17H
REQUEST CURRENT PR [NTER STATUS
433
02.3 80 F04 80
XOR
AH,080H
CHECK FOR PRINTER BUSY
INOT CONNECTED
I
434
0216 Fa C04 AD
TEST
AH,OAOH
OR
OUT OF PAPER
435
02.9 75 04E
.JNZ
PRIBO
ERROR EX[T IF PR[NTER STATUS ERROR
43.
437
021B E8 0275
R
CALL
CRLF
I CARR I AGE RETURN LINE FEED TO PR INTER
43B
439
021E 51
PUSH
CX
; SAVE SCREEN BOUNDS
440
021F B4 03
MOV
AH,03H
, NOW READ THE CURRENT CURSOR POSITION
44.
0221 CO 10
INT
10H
=
AND RESTORE AT END OF ROUTINE
442
0223 59
POP
CX
i
RECALL SCREEN BOUNDS
443
0224 52
PUSH
OX
; PRESERVE THE ORIGINAL POSITION
444
0225 33 02
XOR
DX.DX
;
INITIAL CURSOR
(0.0)
AND F[RST PRINTER
445
;
---
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - --
--
- - - -
---
- - - -- - -­
44.
I
TH I SLOOP
15
TO READ EACH CURSOR POsl T I ON FROM THE
:
44T
;
SCREEN AND PRINT IT.
(BH)= VISUAL PAGE
(CH)= ROWS
44B
;
-
-
- - - -
-
- - - - - - -
----------
-
---
- - - - - - - - - - - -- - - ------ - - - - - - - - ---
-
- - ­
449
0227
PRIIOI
450
0227 B4 02
MOY
AH.OZH
INDICATE CURSOR SET REQUEST
451
0229 CD 10
INT
10H
NEW CURSOR POS I TI ON ESTABLI SHED
452
022B B4 08
MOY
AH.08H
INDICATE READ CHARACTER FROM DISPLAY
453
0220 CD 10
INT
10H
CHARACTER NOW IN
(All
4504
022F OA CO
OR
AL,AL
SEE IF VALID CHAR
455
0231
75 02
JNZ
PRIZO
JUMP IF VALID CHAR
456
0233 BO 20
MOY
AL, '
ELSE MAKE
I T A BLANK
457
0235
PRIZO:
458
0235 52
PUSH
OX
SAVE CURSOR POSITION
459
0236 33 02
XOR
DX,DX
INDICATE FIRST PRINTER
(DX= 01
460
0238 32 E4
XOR
AH,AH
INDICATE PRINT CHARACTER IN IALI
46'
023A CO 17
INT
I TH
PRINT THE CHARACTER
462
023C 5A
POP
DX
RECALL CURSOR POS I T [ON
463
0230 F6 C4 29
TEST
AH,29H
TEST FOR PRINTER ERROR
464
0240 75 22
JNZ
PRI70
EX I T I F ERROR DETECTED
465
0242 FE C2
INC
DL
ADVANCE TO NEXT COLUMN
466
0244 3A CA
C"P
CL,DL
SEE
IF AT END OF LINE
467
0246 75 OF
JNZ
PRJ
10
IF NOT LOOP FOR NEXT COLUMN
466
0246 32 02
XOR
DL,DL
BACK TO COLUMN 0
469
024A 8A E2
"OY
AH,OL
(AH) =0
470
024C 52
PUSH
DX
SAVE NEW CURSOR POS I T I ON
471
0240 E8 0275 R
CALL
CRLF
LINE FEED CARR I AGE RETURN
472
0250 5A
POP
OX
RECALL CURSOR POSITION
413
0251 FE C6
INC
DH
ADVANCE TO NEXT LINE
414
0253 3A EE
CMP
CH.DH
F[NISHED?
0475
0255 15 DO
JNZ
PRIIO
[F NOT LOOP FOR NEXT LINE
4T.
0411
0257 5A
POP
OX
GET CURSOR POSITION
'to78
0258 B4 02
MOY
AH.OZH
INDICATE REQUEST CURSOR SET
479
025A CO
!
0
INT
10H
CURSOR POsl T I ON RESTORED
480
025C FA
CLI
BLOCK INTERRUPTS TILL STACK CLEARED
0481
0250 C6 06 0100 R 00
MOY
OSTATUS BYTE,O
MOVE OK RESULTS FLAG TO STATUS BYTE
0482
0262 EB OB
JMP
SHORT PR[90
EXIT PRINTER ROUTINE
­
4B3
484
0264
PRll0:
ERROR EXIT
0485
02604 5A
POP
OX
GET CURSOR POSITION
486
0265 B4 02
"OY
AH,02H
IND[CATE REQUEST CURSOR SET
487
0267 CD 10
INT
CURSOR POS I T I ON RESTORED
"H
488
0269
,
PR [80:
489
0269 FA
eLi
BLOCK
INTERRUPTS T[LL STACK CLEARED
490
026A C6 06 0100 R FF
","STATUS_BYTE.OFFH
SET ERROR FLAG
491
026F
PR190;
492
026F 5A
POP
OX
EXIT ROUTINE
493
0210 59
POP
CX
RESTORE ALL THE REGISTERS USED
494
0271
5B
POP
BX
495
0272 58
POP
AX
496
0273 IF
POP
05
497
0274 CF
IRET
RETURN WITH I NIT I AL
I NTERRUPT MASK
498
0275
PRINT_sCREEN_I
ENDP
5-180
BIOS2

Advertisement

Table of Contents
loading

Table of Contents