IBM AT 5170 Technical Reference page 229

Table of Contents

Advertisement

IBM P.,..sonal
Computer MACRO Aaall!llbl.,..
Vera'on 2.00
1-30
TEST!
---- Ob/l0/85
POWER ON SELF TEST (POST)
06-10-85
3039
PAGE
3040
3041
MANUFACTUR ING BOOT TEST CODE ROUT I NE
3042
LOAD A BLOCK OF TEST CODE THROUGH THE KEYBOARD PORT FOR MANUFACTURING
3043
TESTS.
3044
THIS ROUTINE WILL LOAD A TEST IMAX LENGTH=FAFFH)
THROUGH THE KEYBOARD
3045
PORT. CODE WILL BE LOADED AT LOCATION
0000:0500.
AFTER LOADING,
304b
CONTROL WILL BE TRANSFERRED TO LOCATION
0000:0500.
THE STACK WILL
3041
BE LOCATED AT 0000:0400.
THIS ROUTINE ASSUMES THAT THE FIRST 2 BYTES
3048
TRANSFERRED CONT A I N THE COUNT OF BYTES TO BE LOADED
3049
(BYTE
I =COUNT LOW, BYTE 2=COUNT HI. )
3050
;
- -------
---
- - - - - -
-
- - - - - - - - --
--------------
- - - - - - - - - - - - - - --- - -
-----
--
------
- - -­
3051
3052
;-----
DEGATE ADDRESS LINE 20
30~3
3054 OC21
MFG BOOT:
3055 OC21 B4 00
-
MOV
AH,DISABLE 81T20
; DEGATE COMMAND FOR ADDRESS LINE 20
305b OC29 E8 0000 E
CALL
GATE_A20
-
;
ISSUE TO KEYBOARD ADAPTER AND CL I
3057
3058
SETUP HARDWARE
I NTERRUPT VECTOR TABLE LEVEL 0-7 AND SOFTWARE INTERRUPTS
3059
30bO OC2C 68 ---- R
PUSH
ABSO
SET ES SEGMENT REGISTER TO ABSO
30bl
OC2F 07
POP
ES
30b2 OC30 B9 0016
"OV
CX,24
GET VECTOR COUNT
3063 OC33 8C C8
"OV
AX,CS
GET THE CURRENT CODE SEGMENT VALUE
30b4 OC35 8E 08
"OV
DS,AX
SETUP OS SEGMENT REGI STER TO
30b5 OC3T BE 0000 E
"OV
SI,OFFSET VECTOR TABLE
POiNT TO THE ROUTINE ADDRESS TABLE
30b6 OC3A BF 0020
R
MOV
01 ,OFFSET ClINT_PTR
SET DESTINATION TO FIRST USED VECTOR
30bl OC3D
30b8 OC3D A5
MOVSW
MOVE ONE ROUT I NE OFFSET ADDRESS
30b9 OC3E AB
STOSW
I
NSERT CODE SEGMENT VALUE
3010 OC3F E2 FC
LOOP
MFG_Bl
MOVE THE NUMBER OF ENTR I ES REQU I RED
3011
3012
;-----
SETUP HARDWARE INTERRUPT VECTORS LEVEL 8-15
(VECTORS START AT INT 70 H)
3013
301-4 OC41
B9 0008
MOV
3015 OC44
BE 0000 E
MOV
3076 OC47 BF OICO R
"OV
3077 OC4A
3078 OC4A A5
MOVSW
; MOVE ONE ROUTINE OFFSET ADDRESS
3079 OC4B AB
STOSW
;
INSERT CODE SEGMENT VALUE
3080 OC4C E2 FC
LOOP
MFG_B2
3081
3082
SET UP OTHER INTERRUPTS AS NECESSARY
3083
3084
ASSUME
OS; ASSO, ES: ABSO
3085 OC4E Ob
PUSH
ES
ES= ABSO
308b OC4F IF
POP
as
SET OS TO ABSO
3081 OC50 Cl 06 0008 R 0000 E
MOV
WORD PTR (INN I PTR, OFFSET NM I
I NT
NM I
INTERRUPT
3068 OC5b Cl Ob 0014 RODDa E
MaV
WORD PTR PINT5 PTR,OFFSET PRTNT SCREEN
PRINT SCREEN
3089 OC5C C1
Ob 00b2 R FbOO
MOV
WORD PTR PBASIC_PTR+2,OF600H
-
CASSETTE BAS I C SEGMENT
3090
3091
;-----
ENABLE KEYBOARD PORT
3092
3093 OCb2 BO bO
MOV
AL, bOH
WRITE 8042 MEMORY LOCATION
0
3094 OC64 E8
039b R
CALL
C8042
I S SUE THE COMMAND
3095 OC67 BO 09
MOV
AL,OOOOIOOIS
SET
INHIBIT OVERRIDE/ENABLE OSF
3096 OC69 Eb
bO
OUT
PORT_A,AL
INTERRUPT AND NOT PC COMPATIBLE
3097
3098 OC6B E8 OC8D R
CALL
MFG B4
GET COUNT LOW
3099 OC6E 8A F8
"OV
BH,AL
SAVE
IT
3100 OCTO E8 aCeD R
CALL
MFG B4
GET COUNT HI
3101
OC73 8A E8
"OV
CH.'AL
3102 OC75 8A CF
"OV
CL.BH
ex
NjJW HAS COUNT
3103 OC17 FC
eLD
SET DIRECTION FLAG TO INCREMENT
3104 OC76 BF 0500 R
MOV
OJ ,OFFSET IPMFG_TEST_RTN
SET TARGET OFFSET
(OS=OOOO)
3105 OC1B
310b OC1B E4
b4
IN
AL,STATUS PORT
GET 8042 STATUS PORT
3101 OC10 AS 0
r
TEST
AL, OUT BUF FULL
KEYBOARD REQUEST PENDING?
31015 OC7F 14 FA
JZ
MFG B3-
-
LOOP TILL DATA PRESENT
3109 aC81 E4 bO
IN
AL.PORT_A
GET DATA
3110 OCB3 AA
STOSB
STORE IT
31 I I
aCB4 Eb 80
OUT
MFG PORT ,AL
DISPLAY CHARACTER AT MFG PORT
3112 OC86 E2 F3
LOOP
MFG::::B3
LOOP T ILL ALL
BYTES
READ
3113
3114 OC88 EA 0500 ---- R
';MP
OMFG_TEST_RTN
FAR .JUMP TO CODE THAT WAS .JUST LOADED
3115
31 16 OC8D
31 1 7 OC8D E4 64
IN
AL,STATUS PORT
CHECK FOR OUTPUl BUFFER FULL
31 18 OC8F A8 01
TEST
AL, OUT BUF FULL
HANG HERE IF NO DATA AVAILABLE
3119 OC91
Et FA
LOOPZ
MFG_B4-
­
3120
3121
ocn
E4
bO
IN
AL .PORT_A
GET THE COUNT
3122 OC95 C3
RET
3123
3124 OC96
POSTI
ENOP
3125 OC96
CODE
ENOS
3126
ENO
TESTl
5-57

Advertisement

Table of Contents
loading

Table of Contents