IBM AT 5170 Technical Reference page 233

Table of Contents

Advertisement

IBM Personal Computer MACRO Assembler
Vers<on 2.00
1-4
TEST2 ---- 06/10/85
POST TESTS AND INITIALIZATION ROUTINES
06-10-85
0170 07
POP
ES
344
0171
26: C7
06 005A 0000
MOV
ES:SS TEMP.BASE LO WORD,O
345
017826: C6 06 005C 00
MOV
8YTE PTR ES: 15S-TEi:i:P.BASE HI
BYTEI,O
346
017E 8E 0058
MOV
SI,SS TEMP
-
-
­
347
0181
8E 06
MOV
SS,SI­
348
0183 8C FFFO
MOV
SP,MAX_SEG_LEN-2
349
350
DATA SEGMENT TO SYSTEM DATA AREA
351
352
0186 6A
18
PUSH
BYTE PTR RSDA PTR
POINT TO DATA AREA
353
0166
IF
POP
05
­
354
355
0169 BO 80
OOV
AL, PAR
I
TY CHECK
SET CHECK PAR I TY
356
018B E6 87
OUT
DMA_PAGE+6,AL
SAVE WH I CH CHECK TO USE
351
358
PR I NT 64 K BYTES OK
359
360
0160 B8 0040
OOV
AX,64
STARTING AMOUNT OF MEMORY OK
361
0190 E8 099F R
CALL
PRT _OK
POST 65K OK MESSAGE
362
363
GET THE MEMORY SIZE DETERM I NED
I
PREPARE 8X AND OX FOR BAD CMOS 1
364
365
0193 88 B081
MOV
AX, ICMOS U M
5
LO+NM11-H+CMOS U M
5
HI+NMI
366
0196 E8 0000 E
CAll
CMOS READ -
-
-
HIGH BYTE­
367
019986 EO
XCHG
AH,A[
SAVE HIGH BYTE
368
0198 E8 0000 E
CALL
CMOS READ
LOW 8YTE
369
019E 8B
IE
0013 R
MOV
8X,Q!lMEMORY SIZE
LOAD THE BASE MEMORY SIZE
370
0lA2 8B 03
MOV
DX,eX
-
SAVE BASE MEMORY SizE
371
0lA4 03 08
ADD
BX,AX
SET TOTAL MEMORY SIZE
312
373
1-----
I
S CMOS GOOD
7
314
375
0lA6 BO 8E
OOV
AL, CMOS 0 I AG+NM I
DETERMJNE THE CONDITION OF CMOS
376
0lA8 E8 0000 E
CALL
CMOS_READ
GET THE CMOS STATUS
311
376
0lA8 A8 CO
TEST
AL,BAD BAT+BAO CKSUM
CMOS OK
7
379
OIAD 74 02
J,
E20BO -
-
GO
I F YES
380
OlAF EB 5B
JMP
SHORT E20C
DEFAULT IF NOT
381
382
GET THE BASE 0->640K MEMORY SIZE FROM CONFIGURATION
IN CMOS
383
OIBI
E20BO:
384
OIBI
B8 9596
MOV
AX, (CMOS B M S LO+NM I) -H+CMOS 8 M 5 HI +NM I
385
0184 E8 0000 E
CALL
CMOS READ -
-
-
HIGH BYTE­
386
0187 24 3F
AND
AL,03FH
MASK OFF THE MANUFACTURING TEST BITS
387
018986 EO
XCHG
AH,AL
,
SAVE HIGH BYTE
388
0lB8 E8 0000 E
CALL
CMOS READ
;
LOW BYTE OF 8ASE MEMORY 5 I ZE
389
0 I BE 3B DO
CMP
DX,AX
;
IS MEMORY SIZE GREATER THAN CONFIG?
390
0 I CO 74
13
.JZ
E2081
I
GO I F EQUAL
3.,
392
1-----
SET MEMORY SIZE DETERMINE NOT EQUAL TO CONFIGURATION
393
394
0lC2 50
PUSH
AX
SAVE AX
395
a
I C3 88 8E8E
OOV
AX,X· (CMOS DIAG+NMI)
ADDRESS THE STATUS BYTE
396
01C6 E8 0000 E
CALL
CMOS READ -
GET THE STATUS
397
0 I C9 DC
10
OR
AL,W-MEM SIZE
SET CMOS FLAG
398
0lC8
86
C4
XCHG
AL.AH
-
SAVE AL AND GET ADDRESS
399
oleo
E8 0000 E
CALL
CMOS WR I TE
WRITE UPDATED STATUS
400
DIDO 58
POP
AX
-
RESTORE AX
401
0101
3B DO
eMP
DX,AX
I S MEMORY SIZE GREATER THAN CONF I G
7
402
0103
77 37
JA
E20C
DEFAULT TO MEMORY SIZE DETERMINED
7
403
0105
E2081:
404
0105 8B 08
~OV
BX,AX
SET BASE MEMORY SIZE I N TOT AL REG I STER
405
0107 88 DO
~OV
DX,AX
SAVE
IN
BASE SIZE REGISTER
406
401
;~---~
CHECK MEMORY SIZE A80VE 640K FROM CONFIGURATION
408
409
0109 B8 9798
MOY
AX,(CMOS EMS LO+NMII·H+(CMOS EMS HI+NMI)
410
OIDC E8 0000 E
CALL
CMOS READ -
-
-
;
HIGH-BYTE ­
411
OIDF 86 EO
XCHG
AH,A[
;
SAVE HIGH BYTE
412
OIEI E8 0000 E
CALL
CMOS READ
;
LOW BYTE
413
01E4 88 C8
MOY
CX, AX
;
SAVE THE ABOVE 640K MEMORY SIZE
414
;-----
ABOVE 640K SIZE FROM MEMORY SIZE OETERM I NE
415
;-----
CX=CONFIG
AX=MEMORY SIZE DETERMINE
416
01E6 88 8081
MOV
AX, (CMOS U M 5 LO+NM I I ·H+ (CMOS U M S HI +NM I I
417
0lE9 E8 0000 E
CALL
CMOS READ -
-
-
; HI GH-8YTE ­
418
OIEC 86 EO
XCHG
AH,AL
;
SAVE HIGH BYTE
419
OIEE E8 0000 E
CALL
CMOS READ
;
LOW BYTE
420
WHICH IS GREATER -
AX
= MEMORY SIZE DETERMINE
421
----- CX = CONFIGURATION
(ABOVE 6401
BX = SIZE (BELOW 6401
422
423
0 IF 1 3B C8
eMP
CX,AX
;
IS CONFIGURATION EQUAL TO DETERMINED?
424
0lF3 74 OF
JZ
SET_MEMI
;
GO IF EQUAL
425
426
;-----
SET MEMORY SIZE DETERMINE NOT EQUAL TO CONFIGURATION
421
426
0lF5 50
PUSH
AX
SAVE AX
429
0 I F6 B8 8E8E
MOV
AX,X-(CMOS DIAG+NMII
ADDRESS THE STATUS BYTE
430
0lF9 E8 0000
E
CALL
CMOS READ -
GET THE STATUS
431
OIFC DC
10
OR
AL.W-MEM SIZE
SET CMOS FLAG
432
01FE 86 C4
XCHG
AL,AH
-
SAVE AL
433
0200 E8 0000 E
CALL
CMOS WR (TE
UPDATE STATUS BYTE
434
0203 58
POP
AX
-
RESTORE AX
435
436
0204
SET MEMI :
431
0204 38 C8
-
CMP
CX,AX
IS CONFIG GREATER THAN DETERMINED?
438
0206
11 02
JA
SET MEM
GO
IF YES
43'
0208 88 C8
~OV
CX,AX
USE MEMORY SIZE DETERM I NE I F NOT
440
020A
SET MEM:
-
441
020A 03
09
ADD
BX,CX
SET TOTAL MEMORY SIZE
442
020C
E20C:
443
020C
81
FA 020 I
COP
DX,513
CHECK IF 8ASE MEMORY LESS 512K
444
0210 72 00
JB
NO_640
GO
IF YES
445
446
0212 B8 B3B3
OOV
AX,X· (CMOS
INFOI28+NMII
SET 640K BASE MEMORY BIT
447
0215 E8 0000 E
CALL
CMOS READ
GET THE CURRENT STATUS
448
0218 DC 80
OR
AL,M640K
TURN ON 640K BI T IF NOT ALREADY ON
449
021A 86 C4
XCHG
AL,AH
SAVE THE CURRENT DIAGNOSTIC STATUS
450
021C E8
0000
E
CALL
CMOS_WRITE
RESTORE THE STATUS
451
021F
452
021F 89
IE 0017
R
OOV
WORD PTR IIKB FLAG, BX
SAVE TOTAL SIZE FOR LATER TESTING
453
0223 C I
EB 06
5HR
8X,6
-
D[VIDE BY 64
454
0226 48
OEC
BX
1ST 64K ALREADY DONE
455
0227 C I
EA 06
5HR
DX,6
DIVIDE BY 64 FOR BASE
450
TEST2
5-61

Advertisement

Table of Contents
loading

Table of Contents