IBM 5150 PC Technical Reference (6025005, August, 1981) (PDF)
IBM 5150 PC Technical Reference (6025005, August, 1981) (PDF) IBM 5150 PC Technical Reference (6025005, August, 1981) (PDF)
LOC OBJ LINE SOURCE 97. ;-------------------------------------- 97. ; INITIAL RELIABILITY TEST -- PHASE 4 97. ;-------------------------------------- 977 ASSUME CS:COOE ,OS: DATA E4A7 20333031 97. '1 DB • 301' 0004 97. EQU $-FI J KEYBOARD MESSAGE E4A8 313331 980 DB '131' "L EOU t-F2 i CASSETTE MESSAGE E4AE 363031 982 F3 O' '601 ' ".......... 0003 9Bl " ••• 'IL 00Q3 9B3 F3L EOU $-F3 ; DISKETTE MESSAGE 98. E481 985 F. LABEL WORD ; PRINTER SOURCE TABLE E4Bl BC03 986 OW 38CH E483 7603 9B7 OW 378H E485 7602 9BB OW 278H E487 989 F'E LABEL WORD £487 30313233343536 9'0 ASCII.TBl DB '0123456789ABCDEF' 37383941424344 .546 991 .------------------------------------------- 9'2 HEST.12 9.J KEYBOARD TEST 99. ;DESCRIPTION E4C7 '.B TSTl2: 99. PESET THE KE'tBOARD AND CHECK THAT SCAN CODE AA.' IS RETURNED 99. TO THE CPU. CHECK FOR STUCK KEYS. 9.7 i -----------------------------------------.- E4C7 884000 MOV AX,DATA ;POINT OS TO DATA SEG E4CA 8E08 1000 MOV OS,AX E4CC 803E120001 1001 eMP ~:FG_TST ,I ;MANUFACTURING TEST HODE? E401 7439 1002 JE F7 ; YES - SKIP KEYBOARD TEST E4D3 E8B201 1003 CAll K8D_RESET ; ISSUE SOFTWARE RESET TO KEYBRD E4D6 E32B 1004 JCXZ '6 i PRINT ERR HSG IF NO INTERRUPT E4D8 B04D 1005 NOV AL,4DH ; ENABLE KEYBOARD E40A E661 1006 OUT PORT_B,Al E40C 80FBll 1007 CMP Bl,OAAH iSCAN CODE AS EXPECTED? ".......... 1009 E40F 7522 1006 JHE F. iNO - DISPLAY ERROR HSG 1010 CHECK FOR STUCK KEYS 1011 E4E1 BOCt 1012 tIOV Al,otCH ; e lR KBD. SET ClK lINE HIGH E4E3 E661 Ion OUT PORT_B,Al E4£5 B04C 1014 MOV Al.4CH IENABlE KBD,elK IN NEXT BYTE E4E7 E661 1015 OUT PORT_B,Al E4E9 2BC9 1016 SUB ex,cx E4EB 1017 F5: ; KBD_WAIT: E4EB E2FE 1018 lOOP '5 ;DELAY FOR A WHILE E4ED E460 1019 IN Al,KBD_IN ICHECK FOR STUCK KEYS E4EF 3COO 1020 CMP Al,o iSCAN CODE = O? E4Fl 7419 1021 JE '7 J YES - CONTINUE TESTING E4F3 8AE8 1022 MOV eH,Al .SAVE SCAN CODE E4F5 BI04 1023 MOV Cl,4 E4F7 02E8 1024 5H. Al,el iRIGHT-JUSTIFY HIGH BYTE E4F9 E89CFF 1025 CAll XlAT_PIHHT_CODE j CONVERT AND PRINT E4FC 8AC5 1026 MOV Al.CH JRECOVER SCAN CODE E4FE 240F 1027 AND Al.OFH iISOlATE LOW ORDER BYTE E500 E895FF 1028 CAll XlAT_PRINT_CODE I CONVERT ANO PRINT E503 BEA7E4 1029 F6: MDV 5I.OFFSET F 1 ;GET MSG AOOR E506 B90400 1030 MOV CX,F1l ;GET HSG BYTE COUNT E509 E86E01 1031 CAll P_HSG i PRINT MSG ON SCREEN 1032 1033 SETUP INTERRUPT VECTOR TABLE 1034 ESOC 1035 F7: ; SE1UP_lNT_TABlE: E50C 2BCO 1036 SUB AX,AX £50£ 8ECO 1037 MOV ES,AX ".......... £510 B93000 1038 MOV CX,24*Z: ;GET VECTOR CNT E513 OE 1039 PUSH CS iSETUP OS SEG REG E514 IF 1040 POP OS £515 BEnF£ 1041 MOV SI.OFEF3H ; OFFSET VECTOR_TABLE E518 BF2000 1042 MOV OI.OFFSET INT_PTR E51B FC 1043 CLD E5lC F3 1044 .EP HOV5W E51D AS A-IS
lOC OBJ LINE SOURCE ESIE 884000 E521 8E08 f523 B04t1 £525 E661 E527 BOFF E529 £621 f5za B086 £520 £643 ESZ' 860304 £532 (642 !534 8AC4 £536 £642 E538 £462 f53A 2410 f5X 1.26800 E53F E83E14 ESifZ £83814 ES45 E30C £547 81F84005 E54B 7306 £540 61F81004 E551 7309 E553 E553 BEABE4 E556 B90300 £559 £86EOI ESSC ESSC 80Ft ESSE £621 E560 1.01000 E563 1.801 E565 7503 E567 E98900 £56A E56A Boee E56C £621 E56£ 8400 £570 CDn f572 F6C4FF f575 7520 £577 BAF201 £57. eOIC f57C EE ES7D 28C9 E57F E51F E2FE E581 E581 ElFE E583 3302 1045 J------------------------------------------- 1046 ;TEST.Il 1047 CASSETTE DATA WRAP TEST 1048 .DESCRIPTION 1049 , TURN CASSETTE MOTOR OFF. WRITE A BIT OUT TO THE CASSETTE DATA BUS. 1050 VERIFY THAT CASSETTE DATA READ IS WITHIN A VALID RANGE. 1051 ; ------------------------------------------- 1052 1053 TURN THE CASSETTE HOTOR OFf 1054 1055 NOV AX,DATA ;POINT OS REG TO DATA SEG 1056 HOV OS,AX 1057 HOV AL,04DH ; SET TIMER 2: SPK OUT, AND CASST 1058 OUT PORT_B.U jOur BITS ON. CASSETTE MOT OFf 1059 lObO 1061 WRITE A BIT 1062 I10V AL.OffH ;DISABLE TIHER INTERRUPTS 1063 OUT nlTMI,AL 1064 NOV AL.OB6H iSEL TIM 2, LSB, t1S8, l1D 3 106S OUT TltIER+3,AL jWRlTE 8253 CMD/MODE REG 1066 NOV AX, 1235 ;5ET TIMER 2 CNT fOR 1000 USEC 1067 OUT TIMEFh2.Al ;WRITE TIMER 2 COUHTER REG 106a HOV AL,AH ;WRITE HSB 1069 OUT TIMER+2,AL 1070 1071 READ CASSETTE INPUT 1072 1073 IN AL,PORT_C ;READ VAWE OF CASS IN BIT 1074 AND AL~ I OH ; ISOLATE FRctI OTHER BITS 107$ NOV LAST_VAl,AL 1076 CALL READ_HALF_BIT 1077 CALL READ_HALF_BIT 1078 JCXZ fa ; CAS_ERR 1079 CN" BX.MAX_PERIOD 1080 JNC fa i CAS_ERR 1081 CHP BX,MIN_PERIOD 1082 JNC f9 ;GO TO NEXT TEST IF OK 1083 Fa: ) CAS_ERR: I ... HOV SI.OfFSET F2 iCASSETTE WRAP FAIlED lOSS NOV CX,f2L 1086 CALL P_MSG ;GO PRINT ERROR MSG 1087 ; ------------------------------------------- 1088 iTEST.14 1089 DISKEnE ATTACHMENT TEST 1090 lDESCRIPTION 1091 CHECK IF IPL DISKETTE DRIVE IS ATTACHED TO SYSTEM. IF ATTACHED. 1092 VERIFY STATUS OF NEC FDC AFTER A RESET. ISSUE A RECAL AHD SEEK 1093 CHO TO FDC AND CHECK STATUS. COI1PLETE SYSTEI1 INITIALIZATION THEN 1094 PASS CONTROL TO THE BOOT LOADER PROGRAJ1. 1095 l------------------------------------------- 1096 F9: 1097 MOV AL.OFCH ;ENABLE TIMeR AND KeD INTS 1098 OUT INTAOI,Al 1099 MOV AL.BYTE PTR EQUIPJLAG ;GET SENSE SWS INFO 1100 TEST AL.OIH ;IPL DISKETTE DRI .... E AHCH? 1101 JNZ fl. ;YES - TEST DISKETTE CONTR 1102 JNP ,.. .NO - SKIP THIS TEST 1103 FlO: ; DISK_TEST: 1104 MeV AL,OSCH ; ENABLE DISKETTE I KEYBOARD, 1105 OUT INTAOt,AL ; AND TINER INTERRUPTS 1106 HOV AH ,0 ;RESET flEC FOC 1107 INT BH iVERIfY STATUS AFTER RESET 1108 TEST AH.OFFH ;STATUS OK? 1109 JNZ fl' iNa - FDC FAILED 1110 1111 TURN DRIVE 0 MOTOR ON 1112 1113 NOV OX.OlF2H ; GET AODR OF FOC CARD 1114 HOV AL.ICH ;TURN MOTOR ON, EN DHA/IHT 1115 OUT DX,AL il,JRITE FOC CONTROL REG 1116 sua CX,CX 1117 F11: ; NOTOR_WAIT: 1118 LOOP fll ;WAIT FOR 1 SECOND 1119 F12: I HOTOICWAITl: 1120 lOOP fl2 1121 XOR DX,OX ;SELECT DRIVE 0 A-16
- Page 158 and 159: Interrupt Identification Register T
- Page 160 and 161: Interrupt Enable Register This 8-bi
- Page 162 and 163: In the diagnostic mode, the receive
- Page 164 and 165: Transmitter Holding Register The T
- Page 166 and 167: Asynchronous Communications Adapter
- Page 168 and 169: SECTION 3. ROM and SYSTEM r", USAGE
- Page 170 and 171: MOV AH,l ;function is to set time o
- Page 172 and 173: Vectors With Special Meanings Inter
- Page 174 and 175: BIOS Memory Map STARTING ADDRESS H
- Page 176 and 177: The timer is set mode 3 which means
- Page 178 and 179: Keyboard Encoding and Usage Encodin
- Page 180 and 181: Keys 71-83 have meaning only in bas
- Page 182 and 183: ALT - Temporarily shifts keys 2-13,
- Page 184 and 185: Keyboard Usage This section is inte
- Page 186 and 187: Table 28. BASIC Screen Editor Speci
- Page 188 and 189: Low Memory Maps (O-'0600'x) Table 3
- Page 190 and 191: BASIC Workspace Variables If you do
- Page 192: APPENDICES Contents: Appendix A: RO
- Page 195 and 196: lOC OBJ LINE SOURCE STITlE( ROM BIO
- Page 197 and 198: LOC OBJ LINE SOURCE 0068 ?! 155 De
- Page 199 and 200: LOC OBJ LINE SOURCE E09E BBf5 EOAO
- Page 201 and 202: lOC OBJ LINE SOURCE £179 E2FD 462
- Page 203 and 204: LOC OBJ LINE SOURCE E278 7408 612 J
- Page 205 and 206: lOC OBJ LINE SOURCE 755 ; ---------
- Page 207: LOC OSJ LINE SOU RCE E42B 7440 900
- Page 211 and 212: LaC OBJ LINE SOURCE E613 803E120001
- Page 213 and 214: LaC OSJ LINE SOURCE E6EC eSOAOE E6E
- Page 215 and 216: LaC OBJ LINE SOURCE E7SF 1505 .402:
- Page 217 and 218: LaC OBJ LINE SOURCE 1659 ASSUME CS:
- Page 219 and 220: LOC OBJ LINE SOURCE E994 8E08 1798
- Page 221 and 222: LOC 08J LINE SOURCE £"91 474849 EA
- Page 223 and 224: LaC OBJ LINE SOURCE E890 E99700 E89
- Page 225 and 226: LOC 08J LINE SOURCE 2255 ;-- INT 13
- Page 227 and 228: LOC OS! LINE SOURCE 2407 ;------ DI
- Page 229 and 230: lOC OBJ LINE SOURCE (Eol 7438 fE03
- Page 231 and 232: LOC OBJ LINE SOURCE Ef'tD £67200 2
- Page 233 and 234: LOC OBJ LINE SOURCE 2870 I ~- -----
- Page 235 and 236: LOC (lBJ LINE SOURCE 3007 j --- INT
- Page 237 and 238: laC OBJ LINE SOURCE 3157 (AH}=6 SCR
- Page 239 and 240: lOC OBJ LINE SOURt.:E FOA43828ZDOAI
- Page 241 and 242: lOC OBJ LINE SOURCE FtC7 3458 VIDEO
- Page 243 and 244: LOC OBJ LINE SOURCE F260 750E f2:62
- Page 245 and 246: LOC OBJ LINE SOURCE F32B 06 3760 PU
- Page 247 and 248: LOC OBJ LINE SOURCE F3Cl 3910 NEAR
- Page 249 and 250: laC OBJ LINE SOURCE 1'460 80HfE F46
- Page 251 and 252: LOC OBJ LINE SOURCE F4FF BSFB 4213
- Page 253 and 254: LOC OBJ LINE SOURCE 4359 j------ IM
- Page 255 and 256: LOC OBJ LINE SOURCE F689 57 4511 PU
- Page 257 and 258: lOC OBJ LINE SOLIRCE 4662 THE 0 COL
LOC OBJ LINE SOURCE<br />
97. ;--------------------------------------<br />
97. ; INITIAL RELIABILITY TEST -- PHASE 4<br />
97. ;--------------------------------------<br />
977 ASSUME CS:COOE ,OS: DATA <br />
E4A7 20333031 97. '1 DB • 301'<br />
0004 97. EQU $-FI J KEYBOARD MESSAGE<br />
E4A8 313331 980 DB '131'<br />
"L EOU t-F2 i CASSETTE MESSAGE<br />
E4AE 363031 982 F3 O' '601 '<br />
".......... 0003 9Bl "<br />
•••<br />
'IL<br />
00Q3 9B3 F3L EOU $-F3 ; DISKETTE MESSAGE <br />
98. <br />
E481 985 F. LABEL WORD ; PRINTER SOURCE TABLE <br />
E4Bl BC03 986 OW 38CH <br />
E483 7603 9B7 OW 378H <br />
E485 7602 9BB OW 278H <br />
E487 989 F'E LABEL WORD <br />
£487 30313233343536 9'0 ASCII.TBl DB '0123456789ABCDEF' <br />
37383941424344<br />
.546<br />
991 .-------------------------------------------<br />
9'2 HEST.12<br />
9.J KEYBOARD TEST<br />
99. ;DESCRIPTION<br />
E4C7 '.B TSTl2:<br />
99. PESET THE KE'tBOARD AND CHECK THAT SCAN CODE AA.' IS RETURNED<br />
99. TO THE CPU. CHECK FOR STUCK KEYS.<br />
9.7 i -----------------------------------------.-<br />
E4C7 884000 MOV AX,DATA ;POINT OS TO DATA SEG<br />
E4CA 8E08 1000 MOV OS,AX<br />
E4CC 803E120001 1001 eMP ~:FG_TST ,I ;MANUFACTURING TEST HODE?<br />
E401 7439 1002 JE F7 ; YES - SKIP KEYBOARD TEST<br />
E4D3 E8B201 1003 CAll K8D_RESET ; ISSUE SOFTWARE RESET TO KEYBRD<br />
E4D6 E32B 1004 JCXZ '6<br />
i PRINT ERR HSG IF NO INTERRUPT<br />
E4D8 B04D 1005 NOV AL,4DH ; ENABLE KEYBOARD<br />
E40A E661 1006 OUT PORT_B,Al<br />
E40C 80FBll 1007 CMP Bl,OAAH iSCAN CODE AS EXPECTED?<br />
"..........<br />
1009 <br />
E40F 7522 1006 JHE F. iNO - DISPLAY ERROR HSG<br />
1010 CHECK FOR STUCK KEYS<br />
1011<br />
E4E1 BOCt 1012 tIOV Al,otCH ; e lR KBD. SET ClK lINE HIGH <br />
E4E3 E661 Ion OUT PORT_B,Al <br />
E4£5 B04C 1014 MOV Al.4CH IENABlE KBD,elK IN NEXT BYTE <br />
E4E7 E661 1015 OUT PORT_B,Al <br />
E4E9 2BC9 1016 SUB ex,cx <br />
E4EB 1017 F5: ; KBD_WAIT: <br />
E4EB E2FE 1018 lOOP '5<br />
;DELAY FOR A WHILE <br />
E4ED E460 1019 IN Al,KBD_IN ICHECK FOR STUCK KEYS <br />
E4EF 3COO 1020 CMP Al,o iSCAN CODE = O? <br />
E4Fl 7419 1021 JE '7<br />
J YES - CONTINUE TESTING <br />
E4F3 8AE8 1022 MOV eH,Al .SAVE SCAN CODE<br />
E4F5 BI04 1023 MOV Cl,4<br />
E4F7 02E8 1024 5H. Al,el iRIGHT-JUSTIFY HIGH BYTE<br />
E4F9 E89CFF 1025 CAll XlAT_PIHHT_CODE j CONVERT AND PRINT<br />
E4FC 8AC5 1026 MOV Al.CH JRECOVER SCAN CODE<br />
E4FE 240F 1027 AND Al.OFH iISOlATE LOW ORDER BYTE<br />
E500 E895FF 1028 CAll XlAT_PRINT_CODE I CONVERT ANO PRINT<br />
E503 BEA7E4 1029 F6: MDV 5I.OFFSET F 1 ;GET MSG AOOR<br />
E506 B90400 1030 MOV CX,F1l ;GET HSG BYTE COUNT<br />
E509 E86E01 1031 CAll P_HSG i PRINT MSG ON SCREEN<br />
1032<br />
1033 SETUP INTERRUPT VECTOR TABLE<br />
1034<br />
ESOC 1035 F7: ; SE1UP_lNT_TABlE:<br />
E50C 2BCO 1036 SUB AX,AX<br />
£50£ 8ECO 1037 MOV ES,AX<br />
".......... £510 B93000 1038 MOV CX,24*Z: ;GET VECTOR CNT<br />
E513 OE 1039 PUSH CS iSETUP OS SEG REG<br />
E514 IF 1040 POP OS<br />
£515 BEnF£ 1041 MOV SI.OFEF3H ; OFFSET VECTOR_TABLE<br />
E518 BF2000 1042 MOV OI.OFFSET INT_PTR<br />
E51B FC 1043 CLD<br />
E5lC F3 1044 .EP HOV5W<br />
E51D AS<br />
A-IS