IBM AT 5170 Technical Reference page 345

Table of Contents

Advertisement

IBM Personal Computer MACRO Assembler
Verll;on 2.00
1-11
BIOSI
---- 06/10/85
INTERRUPT 15H BIOS ROUTINES
06-10-85
1028
PACiE
1029
;---
INT 15 H I FUNCTION 89 H ) -----------------------------------­
1030
, PURPOSE:
1031
;
THIS BIOS FUNCTION PROVIDES A MEANS TO THE USER TO SWITCH
INTO
1032
;
V I RTUAL
(PROTECTEO) MODE.
UPON COMPLET I ON OF TH I S FUNCT I ON THE
1033
PROCESSOR WILL BE
IN
VIRTUAL
(PROTECTEO)
MODE AND CONTROL WILL
1034
BE TRANSFERRED TO THE CODE SECiMENT THAT WAS SPECIFIED BY THE USER.
1035
1036
ENTRY REQUIREMENTS:
1031
1038
IES:SIJ
POINTS TO A OESCRIPTOR TABLE
(GOT!
BUILT BEFORE INTERRUPTING
1039
TO THIS FUNCTION.
THESE DESCRIPTORS ARE USED BY THIS FUNCTION TO
1040
I NIT I AL I ZE THE
I
OTR. THE GDTR AND THE STACK SEGMENT SELECTOR.
THE
1041
DATA SEGMENT
IDS)
SELECTOR AND THE EXTRA SEGMENT
IES)
SELECTOR WILL
1042
BE INITIALIZE TO DESCRIPTORS BUILT BY THE ROUTINE USING THIS FUNCTION.
1043
BH - OFFSET I NTO THE
INTERRUPT OESCR I PTOR TABLE ST ATI NG WHERE THE
1044
FIRST EIGHT HARDWARE
INTERRUPTS WILL BEGIN.
(
INTERRUPT LEVEL I
I
1045
8L
OFFSET INTO THE
INTERRUPT DESCRIPTOR TABLE STATING WHERE THE
1046
SECOND EIGHT HARDWARE I NTERRUPTS BEG
J
N.
(
I NTERRUPT LEVEL 2 )
1041
1048
THE DESCRIPTORS ARE DEFINED AS FOLLOWS:
1049
1050
THE FIRST DESCRIPTOR
IS THE REQUIRED DUMMY.
1051
(USER
INITIALIZED TO 0)
1052
2.
THE SECOND DESCRIPTOR POINTS TO THE GOT TABLE AS
1053
A DATA SEGMENT.
1054
(USER
INITIALIZED)
1055
THE THIRD DESCRIPTOR POINTS TO THE USER DEFINED
1056
INTERRUPT DESCR I PTOR TABLE
(lOT).
1051
IUSER INITIALIZED)
1058
THE FORTH DESCR[PTOR POINTS TO THE USER'S DATA
1059
SEGMENT
(OS).
1060
WSER
INIT[ALIZED)
1061
THE FIFTH DESCR I PTOR PO (NTS TO THE USER' S EXTRA
1062
SEGMENT
(ES).
1063
IUSER
[NITIALIZED)
1064
6.
THE SIXTH DESCRIPTOR POINTS TO THE USER'S STACK
1065
SEGMENT
(SS ) •
1066
(USER
INITIALIZED}
1061
THE SEVENTH OESCR I PTOR PO I NTS TO THE CODE SEGMENT
1068
THAT THIS FUNCTION WILL RETURN TO.
1069
I USER
IN [T I AL I ZED TO THE USER' S CODE SEGMENT.)
1010
8.
THE EIGHTH DESCRIPTOR
IS USED BY THIS FUNCTION TO
1011
ESTABL[SH A CODE SEGMENT FOR
ITSELF. THIS
IS
1012
NEEDED SO THAT TH IS FUNCT I ON CAN COMPLETE IT' S
1013
EXECUT I ON WH I LE I N PROTECTED MODE.
WHEN CONTROL
1014
GETS PASSED TO THE USER'S CODE THIS DESCRIPTOR CAN
1075
BE USED BY HIM IN ANY WAY HE CHOOSES.
1016
1017
NOTE -
EACH DESCRIPTOR MUST CONTAIN ALL THE NECESSARY DATA
1018
I.E. THE LlMIT.
8ASE ADDRESS AND THE ACCESS RlGHTS BYTE.
1019
1080
AH= 89H
(FUNCTi ON CALL)
1081
ESISI
=
LOCATION OF THE GOT TABLE BUILD BY ROUTINE
1082
USING THIS FUNCTION.
1083
1084
EXIT PARAMETERS:
1085
1086
AH
=
0
[F SUCCES SFUL
1081
ALL SEGMENT REGISTERS ARE CHANGED.
(AXl
AND
(BP)
DESTROYED
1088
1089
CONSIDERATIONS:
1090
1091
I.
NO B I OS AVA I LA8LE TO USER.
USER MUST HANDLE ALL
1092
I/O COMMANDS.
1093
2.
INTERRUPTS -
I NTERRUPT VECTOR LOCAT IONS MUS T BE
1094
MOVED.
DUE TO THE 286 RESERVED AREAS.
THE
1095
HARDWARE
INTERRUPT CONTROLLERS MUST BE REINITIALIZED
1096
TO DEFINE LOCATIONS THAT
00 NOT RESIDE IN THE 286
1091
RESERVED AREAS.
1098
3.
EXCEPTION [NTERRUPT TABLE AND HANDLER MUST BE
1099
INITlAL[ZEO BY THE USER.
I 100
THE INTERRUPT DESCRIPTOR TABLE MUST NOT OVERLAP
I 101
THE REAL MODE BIOS
INTERRUPT DESCRIPTOR TABLE.
1102
THE FOLLOWING GIVES AN
IDEA OF WHAT THE USER CODE
1103
SHOULD LOOK LIKE WHEN INVOKING THIS FUNCTION.
1104
1 105
REAL MODE -
-->
"USER CODE­
1 106
MOV
A X ,CiDT SECiMENT
I
101
MOV
ES,AX
1 108
MOV
S I • CiDT OFFSET
'"
>09
MOV
BH, HARDWARE
I NT LEVEL 1 OFFSET
"0
MOV
BL, HARDWARE I NT LEVEL 2 OFFSET
MOV
AH,89H
"2
INT
15H
"3
VIRTUAL MODE --->
"USER CODE"
"4
"5
DESCRIPTION:
"6
1117
I.
CLI
(NO
INTERRUPTS ALLOWED)
WHILE THIS FUNCTION IS EXECUTING.
"8
2.
ADDRESS LINE 20 IS GATED ACTIVE.
3.
THE CURRENT USER STACK SEGMENT DESCRIPTOR
IS INITIALIZED.
120
4.
THE GDTR
IS LOADED WITH THE GOT BASE ADDRESS.
121
5.
THE
[DTR
IS LOADED WITH THE
[DT BASE ADDRESS.
122
6.
THE 8259
IS RE I NIT I AL I ZED WITH THE NEW
I NiERRUPT OFFSETS.
123
7.
THE PROCESSOR
I S PUT I N VIRTUAL MODE W[TH THE CODE
124
SEGMENT DESIGNATED FOR THIS FUNCTION.
125
8.
DATA SEGMENT IS LOADED WITH THE USER DEFINED
126
SELECTOR FOR THE OS REG
t
STER .
127
9.
EXTRA SEGMENT I S LOADED WITH THE USER DEF I NED
128
SELECTOR FOR THE ES REG I 5 TER .
129
10.
STACK SEGMENT IS LOADED WITH THE USER DEFINED
130
SELECTOR FOR THE SS REG I STER.
131
CODE SEGMENT DESCRIPTOR SELECTOR VALUE IS
132
SUBSTITUTED ON THE STACK FOR RETURN TO USER.
133
12.
WE TRANSFER CONTROL TO THE USER WITH INTERRUPTS 0 I SABLED.
134
"9
BIOSI
5-173

Advertisement

Table of Contents
loading

Table of Contents