IBM 5150 Hardware Reference Manual page 270

Hide thumbs Also See for 5150:
Table of Contents

Advertisement

lOC OBJ
LINE
SOURCE
5641
;--- INT lA ------------------------------­
5642
TIME_OF _DAY
5643
THIS ROUTINE ALLOWS THE CLOCK TO BE SET/READ
5644
5645
INPUT
5646
IAH)
=
0
READ THE CURRENT CLOCK SETTING
5647
RETURNS
ex
=
HIGH PORTION Of COUNT
5648
OX
=
lOW
PORTIOt~
Of COUNT
5649
AL
=
0 IF TIHER HAS NOT PASSED 24 HOURS SINCE LAST READ
5650
<>0 IF ON ANOTHER DAY
5651
IAH)
=
1
SET THE CURRENT ClOCK
5652
CX = HIGH PORTION OF COUUT
5653
OX
=
LOW PORTION OF COUNT
5654
NOTE: COut-ITS OCCUR AT THE RATE OF
1193180/65536
COUIITS/SEC
5655
lOR ABOUT 18.2 PER SECOND -­ SEE EQUATES BELOW)
5656
; -------­ ----------­ -----------------­ ------­
5657
ASSUME
CS:CODE.DS:DATA
FE6E
5658
TIME_OF_DAY
PROC
FAR
FE6E Fe
5659
STI
INTERRUPTS BACK ON
FE6f IE
5660
PUSH
DS
SAVE SEGMENT
FE70 50
5661
PUSH
AX
SAVE PARN
FE7l 884000
5662
MOV
AX.DATA
FE74 8E08
5663
MOV
DS.AX
I
ESTABLISH ADDRESSING TO VALUES
FE76 56
5664
POP
AX
i
GET BACK INPUT PARM
FEn OAE4
5665
OR
AH.AH
; AH=O
FE79
7407
5666
JZ
T2
; READ_TIME
FE7B FEee
5667
DEC
AH
I
AH=1
FE7D 7416
5668
JZ
n
; SET_TINE
FE7F
5669
Tl:
; TOO_RETURN
FE7F FB
5670
STI
; INTERRUPTS BACK
ON
FEeD IF
5671
POP
os
; RECOVER SEGMENT
FEel CF
567Z
IRET
; RETURN TO CAllER
5673
FEel
5674
12:
I
READ_TIME
FEez FA
5675
CLI
; NO TIMER INTERRUPTS WHILE READING
FEB3 A07000
5676
MOV
AL.TINER_OFl
~
FE86 C606700000
5677
MOV
TIMER_OFL.O
; GET OVERFLOW. AND RESET THE FLAG
FEes 860E6EOO
5678
MDV
CX. TIMER_HIGH
FE8F 88166COO
5679
MOV
OX. TIMER_LOW
FE93 EBEA
5680
JMP
Tl
5681
FE 95
5682
T3:
SET_TIME
FE95 FA
5683
CLI
NO INTERRUPTS WHILE WRITING
FE96 69166COO
5684
MOV
TINER_LOW. OX
FE9A 890E6EOO
5685
MOV
TIMER_HIGH .CX
SET THE TIME
FE9E C606700000
5686
MOV
TIMER_OFl.O
RESET OVERflOW
FEU EBDA
5667
JMP
Tl
TOO_RETURN
TIME_OF _DAY
568~
; -------­ ----------­ -­ ----------------------­
5690
;
THIS ROUTINE HANDLES THE TINER INTERRUPT fROM
56~1
; CHANNEL 0 OF THE 8253 TIMER.
INPUT FREQUENCY IS 1.19318
HHZ
5692
; AHD THE DIVISOR IS 65536 , RESULTING IN APPROX. 18.
Z
INTERRUPTS
5693
; EVERY SECOND.
5694
5695
THE INTERRUPT HANDLER MAINTAINS A COUNT OF INTERRUPTS SINCE POWER
5696
ON TIME. WHICH MAY BE USED TO ESTABLISH TINE OF DAY.
5697
THE INTERRUPT HANDLER ALSO DECREMENTS THE MOTOR COtHROl COUNT
5698
OF THE DISKETTE, AND WHEU
IT
EXPIRES, WILL TURN OFF THE DISKETTE
5699
NOTOR. AND RESET THE MOTOR
RU~INING
FLAGS
5700
THE INTERRUPT HAf'..'OLER WILL ALSO INVOKE A USER ROUTINE THROUGH INTERRUPT
5701
lCH AT EVERY' TIME TICK.
THE USER MUST CODE
A
ROUTINE
AND
PLACE THE
5702
CORRECT ADDRESS IN THE VECTOR TABLE.
5703
HAS
5704
TIMER_INT
PROC
FAR
FEAS Fe
5705
STI
; INTERRUPTS BACK ON
~FEA61E
5706
PUSH
DS
FEA7 50
5707
PUSH
AX
FEAB 52
5708
PUSH
DX
; SAVE MACHINE STATE
FEA9 884000
5709
MDV
AX.DATA
FEAC BED8
5710
MOV
DS,AX
ESTABLISH ADDRESSABIlITY
FEAE FF066COO
5711
INC
TIMER_lOW
INCREMENT TIt1E
FEBZ 7504
5712
JIIZ
T4
TEST_DAY
FEB4 FF066EOD
5713
INC
TIMER_HIGH
UICREMENT HIGH WORD OF TIME
FEBS
5714
T4:
TE!"T_DAY
A-77

Hide quick links:

Advertisement

Table of Contents
loading

Table of Contents