IBM 5170 Technical Reference page 284

Hide thumbs Also See for 5170:
Table of Contents

Advertisement

;----- WAIT FOR liGHT PEN TO BE DEPRESSED
070F
B4 00
MOV
AH,O
SET NO liGHT PEN RETURN CODE
07E1
8B 16 0063 R
MOV
DX,ADDR 6845
GET BASE ADDRESS OF 6845
07E5
83 C2 06
ADD
DX,6
-
POINT TO STATUS REGISTER
07E8
EC
IN
Al, ox
GET STATUS REG I STER
07E9
A8 04
TEST
Al,4
TEST liGHT PEN SW ITCH
OnB
74 03
JZ
v6_A
GO I F YES
07EO
E9 0872 R
JMP
V6
NOT SET,
RETURN
;----- NOW TEST FOR liGHT PEN TRIGGER
07FO
A8 02
V6_A:
TEST
Al,2
TEST liGHT PEN TRIGGER
07F2
75 03
JNZ
V7A
RETURN WITHOUT RESETTING TRIGGER
07F4
E9 081C R
JMP
V7
; ----­ TR I GGER HAS BEEN SET. READ THE VALUE IN
07F7
V7A:
07F7
B4 10
MOV
;
liGHT PEN REGISTERS ON 6845
I N PUT REGS PO I NTED TO BY AH, AND CONVERT TO ROW COLUMN I N OX
07F9
07FD
8B
8A
16
C4
0063 R
MOV
MOV
OX, AD DR 6845
Al,AH
-
ADDRESS REGISTER FOR 6845
REG I STER TO READ
07FF
0800
EE
EB 00
OUT
JMP
DX,Al
SHORT $+2
SET IT UP
fa DELAY
0802
42
INC
OX
DATA REG I STER
0803
0804
0806
EC
8A
4A
E8
IN
MOV
DEC
Al,DX
CH,Al
OX
GET THE VALUE
SAVE IN CX
ADDRESS REG I STER
0807
FE C4
INC
AH
0809
8A C4
MOV
Al.AH
SEGOND DATA REG I STER
080B
EE
OUT
DX,Al
080C
42
INC
OX
POINT TO DATA REGISTER
0800
EB 00
JMP
SHORT $+2
10 DELAY
080F
EC
1 N
AL, DX
GET SECOND DATA VALUE
0810
8A,. E5
MOV
AH, CH
AX
HAS INPUT VALUE
; ----- AX HAS THE VALUE READ I N FROM THE 6845
0812
8A 1E 0049 R
MOV
BL, CRT MODE
0816
2A FF
SUB
BH, BH -
MODE VALUE TO BX
0818
2E: SA 9F 0107 R
MOV
BL,CS:Vl[BX]
DETERM I NE A/-:OUNT TO SUBTRACT
0810
2B C3
SUB
AX,BX
TAKE I T AWAY
081F
8[3 lE 004E R
MOV
BX, CRT START
0823
01
EB
SHR
BX,l
­
0825
2B C3
SUB
AX,BX
CONVERT TO COI'(RECT PAGE ORIGIN
0827
79 02
JNS
V2
IF POSITIVE, DETERMINE MODE
0829
28 CO
SUB
AX,AX
<0 PLAYS AS 0
;----- DETERMINE MODE OF OPERATION
082B
V2:
DETERM I NE_MODE
082B
Bl 03
MOV
Cl,3
SET *8 SH I FT COUNT
0820
80 3E 0049 R 04
CMP
CRT_MODE,4
DETERM I NE I F GRAPH I CS OR ALPHA
0832
72
2A
JB
VU
ALPHA_PEN
0834
80 3E 0049 R 07
eMP
CRT_MODE,7
0839
74 23
JE
VU
ALPHA_PEN
;----- GRAPHICS MODE
083B
B2 28
MOV
Dl,40
DIVISOR FOR GRAPHICS
0830
F6 F2
DIV
OL
DETERMINE ROW(AL) AND COlUMN(AH)
Al RANGE 0-99, AH RANGE 0-39
;----- DETERMINE GRAPHIC ROW POSITION
083F
8A E8
MOV
CH,Al
SAVE ROW VALUE INCH
0841
02
EO
AOO
CH, Cli
*2 FOR EVEN/ODD FIELD
0843
8A DC
MOV
Bl,AH
COLUMN VALUE TO BX
0845
2A FF
SUB
BH, BH
MULTIPLY BY 8 FOR MEDIUM RES
0847
80 3E 0049 R 06
eMP
CRT_MOOE,6
DETERMINE MEDIUM OR HIGH RES
084C
75 04
JNE
V3
NOT HIGH RES
084E
B1 04
MOV
Cl,4
SHifT VALUE FOR HIGH RES
0850
DO E4
SAL
AH,l
COLUMN VAlU E TIMES 2 FOR HIGH RES
0852
V3:
NOT_H I
GH~RES
0852
03 E3
SHl
BX,Cl
Ml,ILTIPlY *16 fOR HIGH RES
;----- DETERMINE ALPHA CHAR POSITION
0854
8A
DI~
MOV
Dl,AH
COLUMN VALUE FOR RETURN
0856
8A FO
MOV
DH,Al
ROW VALUE
0858
DO EE
SHR
DH,l
DIVIDE BY 4
085A
DO EE
SHR
DH,l
FOR VALUE IN 0-24 RANGE
085C
EB 12
JMP
SHORT V5
LI GHT_PEN_RETURN_SET
;----- ALPHA MODE ON LIGHT PEN
085E
V4:
ALPHA_PEN
085E
F6 36 004A R
OIV
BYTE PTR CRT_COlS
DETERM I NE ROW, COLUMN VALUE
0862
8A FO
MOV
DH,Al
ROWS TO OH
0864
8A 04
MOV
DL,AH
COlS TO Dl
0866
02 EO
SAL
AL,Cl
MULTI PLY ROWS * 8
0868
8A E8
MOV
CH,Al
GET RASTER VALUE TO RETURN REG
086A
8A DC
MOV
Bl,AH
COLUMN VALUE
086C
32 FF
XOR
BH, BH
TO BX
086E
03 E3
SAL
BX,CL
0870
V5:
LIGHT PEN RETURN SET
0870
B4 01
MOV
AH,1
t NO I CATE EVERTH I NG SET
0872
V6:
LIGHT PEN RETURN
0872
52
PUSH
OX
SAVE "RETURN VALUE (IN CASE)
0873
8B 16 0063 R
MOV
OX, AODR_6845
GET BASE ADDRESS
0877
83 C2 01
ADD
DX,7
POINT TO RESET PARM
oe7A
EE
OUT
DX,AL
ADDRESS, NOT DATA,
IS IMPORTANT
087B
5A
POP
ox
RECOVER VALUE
087C
V1:
RETURN_NO_RESET
087C
50
POP
BP
0870
SF
POP
01
087E
5E
POP
SI
087F
1 F
POP
OS
DISCARD SAVED BX, CX, OX
0880
1 F
POP
OS
0881
1 F
POP
OS
0882
1 F
POP
OS
0883
07
POP
ES
0884
CF
I RET
0885
ENDP
0885
~~~~_LPE~NDS
END
5-142 Video

Hide quick links:

Advertisement

Table of Contents
loading

Table of Contents