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 E6BS E661 1275 OUT E687 C3 1276 RET ;RETURN TO CALLER 1277 BEEP EtlDP 1278 1------------------------------------------- 1279 THIS PROCEDURE WILL SEND A SOFTWARE RESET TO THE KEYBOARD. 1280 SCAN CODE AA' SHOULD BE RETURNED TO THE CPU. 1281 ; ------------------------------------------- E688 1282 PROC NEAR E688 BOOC 1283 AL,OCH ;SET KBD CLK LINE LOW £6810. E661 1284 PORT.B,AL ;WRITE 8255 PORT B f68t 695629 1285 MOY CX, 10582 ;HOLO KBD CLK LOW FOR 20 MS E6aF E2FE 1286 G8: LOOP G8 ,LOOP FOR 20 MS £691 Boce 1287 MOV AL.OCCH ,SET CLK, ENABLE LINES HIGH E693 E661 1288 OUT PORT.B.AL £695 1289 SP_TEST: I ENTRY FOR I1AHUFACTURING TEST 2 £695 B04C 1290 HOV AL.4CH ,SET KBD CLK HIBH. ENABLE LOW £697 E661 1291 OUT PORT.B.AL E699 SOFO 1292 HOV AL,OFOH i ENABLE KEYBOARD INTERRUPTS E695 £62.1 1293 OUT INTAOl.AL ,WRITE 8259 IMR E690 FB 1294 STI iENABLE SYSTEM INTERRUPTS £69£ 6400 1295 HOV AH.O ,RESET INTERRUPT IUDICATOR £6AO 28C9 1296 sua CX.CX ,SETUP INTERRUPT TIMEOUT CNT f6A2 F6C4FF 1297 G9: TEST AH, OFFH iDID A KEYBOARD INTR OCCUR~ £610.5 750Z 1298 Jtll GI0 ;YES - READ SCAN COOE RETtmNED £6A7 E2F9 1299 LOOP G9 INa - LOOP TILL TIMEOUT £6A9 £460 1300 GI0: IN AL,PORT.A !READ KEYBOARD SCAN CODE E6AB 810.08 1301 HOV BL,AL ,SAVE SCAN CODE JUST READ E6AD Boce 1302 HOV AL,OCCH ,CLEAR KEYBOARD E6AF E661 1303 OUT PORT.B,AL E6Bl C3 1304 RET IRETURN TO CALLER 1305 KBD.RESET ENDP 1306 1307 BLINK LED PROCEDURE FOR t1FG BURN-IN AND RUN-IN TESTS 1308 (LED WILL BLINK APPROXIMATELY. 25 SECOND) 1309 i - - - --- - - - - ---------------------- - - - - - f662 1310 BLIN'CINT PROC NEAR f682 FB 1311 STI E683 51 1312 PUSH ex I SAVE CX REG CONTENTS £684 50 1313 PUSH AX ;SAVE AX REG CONTENTS E685 £461 1314 IN AL,PORT_B ;READ CIJR'RENT VAL OF PORT 8 E6B7 24BF 1315 AND AL.OBFH £689 E661 1316 OUT PORT_B,AL !BLINK LED EbBS 28C9 1317 SUB CX,CX E6BD E2FE 1318 Gl}: LOOP G11 E68F OC40 1319 OR AL,40H ISTOP BLINKING LEO fbCl E661 1320 OUT PORT_B,AL £6C3 B020 1321 HOV AL,EOI f6C5 £62:0 1322 OUT INTAOO.AL f6C7 58 1323 POP AX ,RESTORE AX REG f6e8 59 1324 POP CX !RESTORE CX REG E6C9 CF 1325 IRET 1326 1327 ; ----------------------------------------- 1328 THIS SUBROUTINE WILL PRINT A MESSAGE ON THE DISPLAY 1329 1330 !ENTRY REQUIREMENTS: 1331 51 ::: OFFSETCADORESS) OF MESSAGE BUFFER 1332 CX = MESSAGE BYTE COUNT 1333 MAXIMUM MESSAGE LENGTH IS 36 CHARACTERS 1334 ; ------------------------------------------- E6CA 1335 E6CA 884000 1336 HOV AX,DATA I POINT OS TO DATA SEG E6eD 8E08 1337 HOV OS,AX E6CF 803£120001 1338 CHP MFG.TST .1 IMFG TEST MODE? £604 7505 1339 JNE G12 ;NO - DISPLAY ERROR M5G E6D6 B601 1340 HOV OH,1 ; YES - SETUP TO BEEP SPEAKER ~ Eb08 E95SFF 1341 JMP ERR.BEEP ; YES - BEEP SPEAKER EbDB 1342 G12: ; WRITCMSG: E6DB 2E8A04 13l.3 NOV AL,CS:(SIl ; PUT CHAR IN AL E60E 46 1344 INC SI ; POINT TO NEXT CHAR E60F B700 1345 MOV FJ;H,O ;SET PAGE # TO ZERO f6E1 840£ 1346 MOV AH.14 ;~RITE CHAR {TTY-INTERFACE) E6El COlO 1347 HIT 10H iCALL VIDEO.IO f6E5 E2F4 1348 lOOP G12 ; CONTINUE TI lL "SG WRITTEN f6E7 B80DOE 1349 MOV AX, OEODH ; POSITION CURSOR TO NEXT LINE f6EA COlO 1350 INT 10H ;SeNO CARRIAGE RETURN AND A-19
LaC OSJ LINE SOURCE E6EC eSOAOE E6EF COlO £6fl Cl E6F2 E6F2: FB E6F3 884000 E6F6 8£08 E6Fe All000 E6F8 A801 E6FD 7423 E6FF 890400 E702 noz 51 £703 8400 E705 CDll n07 7214 £109 8402 £10& B80000 E70E 8fC3 E7l0 BB007C E713 BAOOOO E7l6 8901QO E7l9 B001 E7lB CDl3 E7lD 59 E7lE 7304 E720 £2£0 £722: E72:O! C018 E7Z4 e724 EAOO7COOOO 1351 MOV AX,OEOAH ; LINE FEED CHARS 1352: ItH 10H 1353 RET 1354 P _HSG EHOP 1355 ;--- INT 19 ---------------------------- 1356 I BOOT STRAP LOADER 1357 IF A 5 1/4" DISKETTE DRIVE IS AVAIlABLE 1358 ON THE SYSTEM. TRACK 0, SECTOR 1 IS READ INTO THE 1359 BOOT LOCATION (SEG~IENT O. OFFSET 7COO} 1360 Aim CONTROL IS TRANSFERRED THERE. 1361 1362 IF TIiERE IS NO DISKETTE DRIVE. OR IF THERE IS 1363 IS A HAROWARE ERROR CONTROL IS TRANSFERREO 1364 TO THE CASSETTE BASIC E~Y POINT. 1365 1366 I IPl ASSUMPTIONS 1367 8255 PORT bOH El:lT 0 1368 = 1 IF IPL FROH DISKETTE 1369 ; ------------------------------.-------- 1370 ASSUME CS:CDDE.DS:DATA 1371 BOOT.STRAP PROC NEAR 1372 1373 STI 1 ENABLE INTERRUPTS 1374 HOV AX,DATA ; ESTABLISH ADDRESSING 1375 HOV OS,AX 1376 HOV AX. EQUIPJUG ; GET THE EQUIPMENT SWITCKE' 1377 TEST ALd J ISOLATE IPL SENSE SWITCH 1378 JZ H3 ;, GO TO CASSETTE BASIC ENTRY POINT 1379 1380 ;------ MUST LOAD SYSTEM FROM DISKETTE - ex HAS RETRY COUHT 1381 1382 NOV CX.4 ; SET RETRY COUNT 1383 HI: J IPL.SYSTEH 1384 PUSH ex ; SAVE RETRY COl.mT 1385 HOV AH,O ; RESET THE DISKETTE SYSTEM 1386 INT 13ft j DISKETTE.IO 1387 JC HZ I IF ERROR. TRY AGAIN 1388 HOV AH,2 ; READ IN THE SINGLE SECTOR 1389 MOV BX.O ; TO THE BOOT LOCATION 1390 MOV ES,BX 1391 HOV eX,oFFSET BOOT.LOCN 139Z HOV OX,O I DRIVE 0, HEAD 0 1393 MOV CX.! ; SECTOR I, TRACK 0 1394 NOV AL,I ; READ ONE SECTOR n95 INT IlH i DISKETTE.IO 1396 POP ex j RECOVER RETRY COUNT 1397 JNe H4 ; CF SET BY UNSUCCESSFUL READ 1398 LOOP HI j DO IT FOR RETRY TIMES 1399 1400 j------ UNABLE TO IPL FROM THE DISKETTE 1401 1402 H3: I CASSETTE_JUMP: 1403 INT 18H ; USE INTERRUPT VECTOR TO GET TO BASIC 1404 1405 1------ IPL WAS SUCCESSFUL 1406 1407 H4: 1406 1409 1410 ; -----INT 14------------------------------- 1411 ;RS232_IO 1412 THIS ROUTINE PROVIDES BYTE STREAM I/O TO THE: COf1MUNICATIOHS 1413 PORT ACCORDING TO THE: PARAMETERS: 1414 (AH )=0 INITIALIZE TItE COMMUNICATIONS PORT 1415 j AL) HAS PARMS fOR INITIALIZATION 1416 1417 7 • 4 I 1416 ---- BAUD RATE - -PARITY- STOPBIT --WORD lENGTH- 1419 1420 000 - 110 xo - NONE o 1 10 - 7 BITS 1421 001 - 150 01 - COD 1 - Z 11 - 8 BITS 1422 010 - 300 11 - EVEN 1423 011 - 600 1424 100 - 1200 1425 101 - 24QO 1426 110 - 4600 1427 III - 9600 A-20
- 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 and 208: LOC OSJ LINE SOU RCE E42B 7440 900
- Page 209 and 210: lOC OBJ LINE SOURCE ESIE 884000 E52
- Page 211: LaC OBJ LINE SOURCE E613 803E120001
- 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
- Page 259 and 260: LOC OBJ LINE SOURCE F7Cl 8AC4 F7e]
- Page 261 and 262: LaC OBJ LINE SOURCE F840 4967 EQUIP
LaC OSJ LINE SOURCE<br />
E6EC eSOAOE<br />
E6EF COlO<br />
£6fl Cl<br />
E6F2<br />
E6F2: FB<br />
E6F3 884000<br />
E6F6 8£08<br />
E6Fe All000<br />
E6F8 A801<br />
E6FD 7423<br />
E6FF 890400<br />
E702<br />
noz 51<br />
£703 8400<br />
E705 CDll<br />
n07 7214<br />
£109 8402<br />
£10& B80000<br />
E70E 8fC3<br />
E7l0 BB007C<br />
E713 BAOOOO<br />
E7l6 8901QO<br />
E7l9 B001<br />
E7lB CDl3<br />
E7lD 59<br />
E7lE 7304<br />
E720 £2£0<br />
£722:<br />
E72:O! C018<br />
E7Z4<br />
e724 EAOO7COOOO<br />
1351 MOV AX,OEOAH ; LINE FEED CHARS<br />
1352: ItH 10H<br />
1353 RET<br />
1354 P _HSG EHOP<br />
1355 ;--- INT 19 ----------------------------<br />
1356 I BOOT STRAP LOADER<br />
1357 IF A 5 1/4" DISKETTE DRIVE IS AVAIlABLE<br />
1358 ON THE SYSTEM. TRACK 0, SECTOR 1 IS READ INTO THE<br />
1359 BOOT LOCATION (SEG~IENT O. OFFSET 7COO}<br />
1360 Aim CONTROL IS TRANSFERRED THERE.<br />
1361<br />
1362 IF TIiERE IS NO DISKETTE DRIVE. OR IF THERE IS<br />
1363 IS A HAROWARE ERROR CONTROL IS TRANSFERREO<br />
1364 TO THE CASSETTE BASIC E~Y POINT.<br />
1365<br />
1366 I IPl ASSUMPTIONS<br />
1367 8255 PORT bOH El:lT 0<br />
1368 = 1 IF IPL FROH DISKETTE<br />
1369 ; ------------------------------.--------<br />
1370 ASSUME CS:CDDE.DS:DATA<br />
1371 BOOT.STRAP PROC NEAR<br />
1372<br />
1373 STI 1 ENABLE INTERRUPTS<br />
1374 HOV AX,DATA ; ESTABLISH ADDRESSING<br />
1375 HOV OS,AX<br />
1376 HOV AX. EQUIPJUG ; GET THE EQUIPMENT SWITCKE'<br />
1377 TEST ALd J ISOLATE IPL SENSE SWITCH<br />
1378 JZ H3 ;, GO TO CASSETTE BASIC ENTRY POINT<br />
1379<br />
1380 ;------ MUST LOAD SYSTEM FROM DISKETTE - ex HAS RETRY COUHT<br />
1381<br />
1382 NOV CX.4 ; SET RETRY COUNT<br />
1383 HI: J IPL.SYSTEH<br />
1384 PUSH ex ; SAVE RETRY COl.mT<br />
1385 HOV AH,O ; RESET THE DISKETTE SYSTEM<br />
1386 INT 13ft j DISKETTE.IO<br />
1387 JC HZ I IF ERROR. TRY AGAIN<br />
1388 HOV AH,2 ; READ IN THE SINGLE SECTOR<br />
1389 MOV BX.O ; TO THE BOOT LOCATION<br />
1390 MOV ES,BX<br />
1391 HOV eX,oFFSET BOOT.LOCN<br />
139Z HOV OX,O I DRIVE 0, HEAD 0<br />
1393 MOV CX.! ; SECTOR I, TRACK 0<br />
1394 NOV AL,I ; READ ONE SECTOR<br />
n95 INT IlH i DISKETTE.IO<br />
1396 POP ex j RECOVER RETRY COUNT<br />
1397 JNe H4 ; CF SET BY UNSUCCESSFUL READ<br />
1398 LOOP HI j DO IT FOR RETRY TIMES<br />
1399<br />
1400 j------ UNABLE TO IPL FROM THE DISKETTE<br />
1401<br />
1402 H3: I CASSETTE_JUMP:<br />
1403 INT 18H ; USE INTERRUPT VECTOR TO GET TO BASIC<br />
1404<br />
1405 1------ IPL WAS SUCCESSFUL<br />
1406<br />
1407 H4:<br />
1406<br />
1409<br />
1410 ; -----INT 14-------------------------------<br />
1411 ;RS232_IO<br />
1412 THIS ROUTINE PROVIDES BYTE STREAM I/O TO THE: COf1MUNICATIOHS<br />
1413 PORT ACCORDING TO THE: PARAMETERS:<br />
1414 (AH )=0 INITIALIZE TItE COMMUNICATIONS PORT<br />
1415 j AL) HAS PARMS fOR INITIALIZATION<br />
1416<br />
1417 7 • 4 I<br />
1416 ---- BAUD RATE - -PARITY- STOPBIT --WORD lENGTH-<br />
1419<br />
1420 000 - 110 xo - NONE o 1 10 - 7 BITS<br />
1421 001 - 150 01 - COD 1 - Z 11 - 8 BITS<br />
1422 010 - 300 11 - EVEN<br />
1423 011 - 600<br />
1424 100 - 1200<br />
1425 101 - 24QO<br />
1426 110 - 4600<br />
1427 III - 9600<br />
A-20