IBM 5170 Technical Reference page 196

Hide thumbs Also See for 5170:
Table of Contents

Advertisement

0197
E6 87
OUT
SAVE WHICH CHECK TO USE
;------- PRINT 64 K BYTES OK
0199
o 19C
0190
88
50
E9
0040
0347
R
E20A:
NOV
PUSH
JMP
AX,16*4
AX
PRT_SIZ
START I NG AMT.
OF MEMORY OK
SAVE MEMORY OK SIZE
POST MESSAGE
; ----­--­
I S CMOS GOOD?
01AO
01A2
01A4
01A6
alAe
80
E6
E8
Ell
50
8E
70
00
71
E20B:
MOV
OUT
JNP
IN
PUSH
AL,
0 I AG_ST ATUS
CMOS PORT, AL
SHORT $+2
AL,CMOS_PORT+l
AX
DETERMINE THE CONDITION OF CMOS
10 DELAY
GET THE CMOS STATUS
SAVE CMOS STATUS
;-------- GET THE MEMORY SIZE DETERMINED (PREPARE BX FOR BAD CMOS)
01A9
BO Bl
MaY
AL,M_SIZE_HI
CET THE HIGH BYTE
01AB
[6 70
OUT
CMOS PORT, AL
01AD
EB 00
JMP
SHORT $+2
10 DELAY
OlAF
E4 71
IN
AL,CMOS_PORT+1
HIGH BYTE
01 B1
86 EO
XCHG
AH,AL
SAVE HIGH BYTE
OlB3
BO BO
MOY
AL, M_S I ZE_LO
GET LOW BYTE
0185
E6 10
OU-I
CMOS PORT, AL
01B7
EB 00
JMP
SHORT $+2
10 DELAY
01B9
EI.j 71
IN
AL, CMOS_PORT+l
LOW BYTE
01 BB
8B lE 0013 R
MOV
BX,MEMORY_SIZE
PRE LOAD THE MEMORY SIZE
01 BF
03 D8
ADD
BX,AX
SET TOTAL
r~EMORY
SIZE
01C1
89 lE 0017 R
MOV
WORD PTR KB_FLAG, BX
SAVE THE TOTAL SIZE
01G5
58
POP
AX
RESTORE CMOS STATUS
01C6
A8 CO
TEST
AL,OCOH
CMOS OK?
OlC8
74 03
JZ
E20BO
GO I F YES
01CA
E9 026E R
JMP
E20C
DEFAULT
I F NOT
O1CD
E20BO:
;-------- GET THE BASE 0->640K MEMORY SIZE FROM CONFIG
IN CMOS
01CD
BO 96
MOY
AL,Ml_S1ZE_HI
GET THE HIGH BYTE
01CF
E6 70
OUT
CMOS PORT,AL
OlDl
EB 00
JMP
SHORT $+2
10 DELAY
o
lD3
E4 71
IN
AL, CMOS_PORT+1
HIGH BYTE
o
lDS
86 EO
XCHG
AH,AL
SAVE HIGH BYTE
0101
BO 95
MOY
AL,Ml_SIZE_LO
GET LOW BYTE
01D9
E6 70
OUT
CMOS PORT, AL
0108
EB 00
JMP
SHORT $+2
10 DELAY
01DO
E4 71
IN
AL, CMOS_PORT+1
LOW BYTE
01DF
39060013 R
Cf>IP
MEMORY SIZE,AX
IS MEMORY SIZE GREATER THAN CONFIG?
01 E3
74 lC
JZ
E20Bl -
GO
I F EQUAL
;------- SET MEMERY SIZE DETERMINE NOT EQUAL TO CONFIG
OlES
50
PUSH
AX
SAVE AX
OlE6
80 8E
MaY
AL,
0
I AG_ST ATUS
01E8
E6 70
OUT
CMOS PORT, AL
ADDRESS THE STATUS BYTE
OlEA
EB 00
JMP
SHORT $+2
10 DELAY
01EC
E4 71
IN
Al, CMOS_PORT+l
GET THE STATUS
01 EE
OC
10
OR
AL,W_MEM_SIZE
SET CMOS FLAG
OHO
86 CII
XCHG
AH
SAVE AL
01F2
BO 8E
Mav
,--':AG_STATUS
01F4
E6 70
OUT
Ci'10S PORT, AL
01 F6
86 C4
XCHG
AL,AH
RESTORE AL
01 FB
EB 00
JMP
SHORT $+2
10 DELAY
OHA
E6 71
OUT
CMOS PORT+l,AL
OHC
58
POP
AX
-
RESTORE AX
01 FD
39 06 0013 R
CMP
MEMORY
_S
I ZE, AX
IS MEMORY SIZE GREATER THAN CONFIG?
0201
77 68
E20Bl!
JA
E20C
DEFAULT TO MEM SIZE DET
I F YES
0203
8B 08
MaY
BX,AX
SET BASE MEMORY SIZE
0205
3D 0201
eMP
AX,513
CHECK
I F
BASE RAM LESS 512K
0208
72 16
JR
NO_6qO
GO
IF YES
020A
80 B3
MOY
AL, INfO_STATUS
SET 640K BASE RAM BIT
020C
E6 70
OUT
CMOS PORT, AL
020E
EB 00
JMP
SHORT $+2
10 DELAY
0210
Ell 71
IN
AL,CMOS_PORT+1
GET THE CURRENT STATUS
0212
OC 80
OR
AL.M640K
TuRN ON 640K BIT I F NOT ALREADY
ON
0214
86 C4
XCHG
AL,AH
SAVE THE CURRENT DIAG STATUS
0216
BO B3
MaY
AL, INFO_STATUS
0218
E6 70
OUT
CMOS_PORT,AL
ADDR THE STATUS BYTE
021A
86 C4
XCHG
AL,AH
RESTORE THE STATUS
021C
EB
00
JMP
SHORT $+2
10 DELAY
021 [
E6 71
OUT
CMOS_PORT+l,AL
;-------- CHECK MEMORY SIZE ABOVE 640K FROM CONFIG
0220
NO_GilD:
0220
BO 98
NOV
AL,M2_SIZE_HI
GET THE HIGH BYTE
0222
E6 70
OUT
CMOS PORT ,AL
0224
EB 00
JMP
SHORT $+2
10 DELAY
0226
E4
71
IN
AL, CMOS_PORT + 1
HIGH BYTE
0228
86 EO
XCHG
AH,AL
SAVE HIGH BYTE
022A
BO 97
MOV
AL,M2_SIZE_lO
GET LOW BYTE
022C
E6 70
OUT
CMOS_PORT, AL
022E
EB 00
JMP
SHORT $+2
10 DELAY
0230
E4 71
IN
AL,CMOS_PORT+l
;
LOW BYTE
0232
8B C8
MOV
CX,AX
;
SAVE THE ABOVE 640K RAM SIZE
;------- ABOVE 6qOK SIZE FROM MEMORY SIZE DETERMINE
;------- GX"'CONFIG
AX=MEMORY SIZE DETERMINE
0234
BO B1
MOV
AL,~I"_SIZE_HI
GET THE HIGH BYTE
0236
E6 70
OUT
CMOS PORT ,AL
023B
EB 00
JMP
SHORf $+2
10 DELAY
023A
E4 71
IN
AL, CMOS_PORT +1
HIGIi BYTE
023C
86 EO
XCHG
AH,AL
SAVE HIGH BYTE
023E
BO 1:30
MOV
AL, M_S IZE_LO
GET LOW I:3YTE
0240
E6 70
OUT
CMOS PORT,AL
0242
EB 00
JMP
SIIORT $+2
10 DELAY
0244
E4 71
IN
AL,CMOS_PORT+l
LOW BYTE
;------- WHICH
IS GREATER
; ------- AX=MEMORY SIZE DETERM I NE CX=CON FIG (ABOVE 640)
BX=S IZE (BELOW 640)
0246
3B CB
CMP
CX,AX
;
IS CONFIG EQUAL TO DETERMINED?
0248
74 18
JZ
SET MEMl
;
GO I F EQUAL
;------- SET MEMERY-SIZE DETERMINE NOT EQUAL TO CONFIG
024A
50
PUSH
AX
SAVE AX
024B
BO 8E
MOV
AL,DIAG_STATUS
0240
E6 70
OUT
CMOS PORT, AL
ADDRESS THE STATUS BYTE
024f
EB 00
JMP
SHORT $+2
10 DELAY
0251
E4 71
iN
AL,CMOS_PORT+1
GET THE STATUS
0253
DC 10
OR
AL, W_MEM_S IZE
SET CMOS FLAG
0255
86 C4
XCIIG
AL,AH
SAVE AL
0257
BO
BE
MaY
AL,DIAG_STATUS
0259
E6 70
OUT
CMOS PORT,AL
025B
86 C4
XCHG
AL,AH
RESTORE AL
0250
EB 00
J M P
SHORT $+2
10 DELAY
025F
E6 71
OUT
CMOS_pORT+l,AL
0261
58
POP
AX
RESTORE AX
0262
5-54 Test 2

Hide quick links:

Advertisement

Table of Contents
loading

Table of Contents