IBM PC CONVERTIBLE Technical Reference page 213

Table of Contents

Advertisement

03DB
03DB
57
03DC
06
0300
53
03DE
BF ----
03El
8E C7
03E3
3C 01
03E5
74 4B
03E7
3C 02
03E9
74 3A
03EB
3C FD
03ED
75 33
03EF
E8 0442 R
03F2
73 4A
03F4
51
03F5
8A DO
03F7
DO E5
03F9
02 DO
DELBUSY
PUSH
PUSH
PUSH
MOV
MOV
CMP
JE
CMP
JE
CMP
JNE
PROC
01
ES
BX
DI,DATA
ES,DI
AL,OI
DSKLBUSY
AL,02
KYBD_WAIT
AL ,OFDH
DEVB_CLEAR
NEAR
SAVE REGISTERS
SET ES TO DATA
IS DEVICE TYPE = DISKETTE?
YES, GO SERVICE FOR DISKETTE
NO, DEVICE TYPE = KEYBOARD?
YES, GO SERVICE FOR KEYBOARD
DEV TYPE = DSKT MTR STARTUP?
NO, RETURN WITH CARRY CLEAR
WAIT FOR DISKETTE MOTOR STARTUP TIME TO ELAPSE
WAIT TIME IS IN 125 MILLISECOND UNITS IN CH
CALL
JNC
PUSH
MOV
SHL
ADD
TMRO_CHK
DEVB_EXIT
CX
BL ,CH
CH,1
BL ,CH
CHECK FOR TIMER 0 RUNNING
I F NOT RUNN I NG THEN EX IT, NO
WAIT
COPY TIME IN CH
MULTIPLY BY 3
WAIT TIME is IN BL
REQUEST CONTROLLER POWER ON TO OVERLAP PWR ON SEQ WITH MOTOR STARTUP
DELAY
03FB
88 IE 007B R
MOV
POP
PUSH
MOV
IN
EV ENT _TIM_OUT, BL
CX
SAVE TIME DLY IN TIMEOUT CTR
RESTORE CX
03 FF
59
0400
52
OX
0401
BA 03F4
DX,3F4H
0404
EC
AL,DX
0405
90
0406
5A
OX
SAVE OX
DO DUMMY READ TO PWR ON CNTL
FOR MOTOR WAIT OVERLAP
TIMER 0 ROUTINE WILL DECRMNT
TIME VAL EVENLTIM_OUT WHILE
CNTLR IS BEING POWERED ON
BE BACK FROM NMI IF PWR WAS
OFF HERE
RESTORE OX
0407
38 IE 007B R
NOP
POP
eMP
JA
MOV
OR
JNE
STC
JMP
EVENLTIM_OUT, BL
DEVLEXIT
040B
77 31
0400
8A IE 007B R
BL, EV ENL TI M_OUT
BL, BL
EXIT I F MORE THAN ENOUGH TME
RETRI EVE ADJUSTED WAIT TIME
0411
OA DB
0413
75 03
0415
F9
0416
EB 26
0418
0418
B7 00
041A
OE
041B
07
041C
2B FF
041E
BO 01
0420
EB 19
0422
0422
F8
0423
EB 19
BF 001C R
DEVB_Ol :
MOV
PUSH
POP
SUB
MOV
JMP
DEVLOI
SHORT DEVB_EXIT
BH,O
CS
ES
01,01
AL,OI
SHORT BUSLWAIT
RETURN WITH CARRY CLEAR
DEVBJLEAR:
CLC
JMP
SHORT DEVLEXIT
WAITING FOR KEY IN KEYBOARD BUFFER
DON'T WAIT IF TIME EXPIRED
SET CARRY TO SHOW TIMEOUT
EXIT WITH TIME EXPIRED
SET COMPARE MASK TO 0
SET ES TO ROM SEGMENT
SET ADDR 0 IN ROM FOR DUMMY
COMPARE
RETURN ON COMPARE EQUAL
WAIT FOR TIMEOUT TO OCCUR
; EXIT ROUTINE
PERFORM WAILON_EVENT FOR BUFFEILHEAD
<>
BUFFER TAIL
(LOW BYTES)
KYBD_WAIT:
MOV
0425
0425
0428
042C
042E
0430
8A 3E 001A R
BO 02
MOV
MOV
SUB
JMP
DI,OFFSET BUFFER_TAIL; POINT ES:DI TO BFR HEAD
BH,BYTE PTR BUFFER_HEAD; MASK TO CURRENT BFR TAIL
AL,02
; FN CODE=CMP, RTRN NOT EQUAL
2A DB
EB 09
0432
0432
BF 003E R
BL, BL
; NO TIMEOUT
SHORT BUSLWAIT
WAIT FOR DISKETTE INTERRUPT COMPLETE
(INLFLAG TO BE SET IN SEEK-STATUS)
DSKLBUSY:
MOV
DI,OFFSET SEEK-STATUS
GET ADD OF DSKT INTR FLAG
2-188 ROM BIOS

Hide quick links:

Advertisement

Table of Contents
loading

Table of Contents