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)

classiccomputers.info
from classiccomputers.info More from this publisher
25.03.2015 Views

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

LOC OBJ LINE SOURCE<br />

E6BS E661 1275 OUT<br />

E687 C3 1276 RET ;RETURN TO CALLER<br />

1277 BEEP EtlDP<br />

1278 1-------------------------------------------­<br />

1279 THIS PROCEDURE WILL SEND A SOFTWARE RESET TO THE KEYBOARD.<br />

1280 SCAN CODE AA' SHOULD BE RETURNED TO THE CPU.<br />

1281 ; -------------------------------------------­<br />

E688 1282 PROC NEAR<br />

E688 BOOC 1283 AL,OCH ;SET KBD CLK LINE LOW<br />

£6810. E661 1284 PORT.B,AL ;WRITE 8255 PORT B<br />

f68t 695629 1285 MOY CX, 10582 ;HOLO KBD CLK LOW FOR 20 MS<br />

E6aF E2FE 1286 G8: LOOP G8 ,LOOP FOR 20 MS<br />

£691 Boce 1287 MOV AL.OCCH ,SET CLK, ENABLE LINES HIGH<br />

E693 E661 1288 OUT PORT.B.AL<br />

£695 1289 SP_TEST: I ENTRY FOR I1AHUFACTURING TEST 2<br />

£695 B04C 1290 HOV AL.4CH ,SET KBD CLK HIBH. ENABLE LOW<br />

£697 E661 1291 OUT PORT.B.AL<br />

E699 SOFO 1292 HOV AL,OFOH i ENABLE KEYBOARD INTERRUPTS<br />

E695 £62.1 1293 OUT INTAOl.AL ,WRITE 8259 IMR<br />

E690 FB 1294 STI iENABLE SYSTEM INTERRUPTS<br />

£69£ 6400 1295 HOV AH.O ,RESET INTERRUPT IUDICATOR<br />

£6AO 28C9 1296 sua CX.CX ,SETUP INTERRUPT TIMEOUT CNT<br />

f6A2 F6C4FF 1297 G9: TEST AH, OFFH iDID A KEYBOARD INTR OCCUR~<br />

£610.5 750Z 1298 Jtll GI0 ;YES - READ SCAN COOE RETtmNED<br />

£6A7 E2F9 1299 LOOP G9 INa - LOOP TILL TIMEOUT<br />

£6A9 £460 1300 GI0: IN AL,PORT.A !READ KEYBOARD SCAN CODE<br />

E6AB 810.08 1301 HOV BL,AL ,SAVE SCAN CODE JUST READ<br />

E6AD Boce 1302 HOV AL,OCCH ,CLEAR KEYBOARD<br />

E6AF E661 1303 OUT PORT.B,AL<br />

E6Bl C3 1304 RET IRETURN TO CALLER<br />

1305 KBD.RESET ENDP<br />

1306<br />

1307 BLINK LED PROCEDURE FOR t1FG BURN-IN AND RUN-IN TESTS<br />

1308 (LED WILL BLINK APPROXIMATELY. 25 SECOND)<br />

1309 i - ­ - - --­- ­ - - - - -­--­-------------------­ - - - - -­<br />

f662 1310 BLIN'CINT PROC NEAR<br />

f682 FB 1311 STI<br />

E683 51 1312 PUSH ex I SAVE CX REG CONTENTS<br />

£684 50 1313 PUSH AX ;SAVE AX REG CONTENTS<br />

E685 £461 1314 IN AL,PORT_B ;READ CIJR'RENT VAL OF PORT 8<br />

E6B7 24BF 1315 AND AL.OBFH<br />

£689 E661 1316 OUT PORT_B,AL !BLINK LED<br />

EbBS 28C9 1317 SUB CX,CX<br />

E6BD E2FE 1318 Gl}: LOOP G11<br />

E68F OC40 1319 OR AL,40H ISTOP BLINKING LEO<br />

fbCl E661 1320 OUT PORT_B,AL<br />

£6C3 B020 1321 HOV AL,EOI<br />

f6C5 £62:0 1322 OUT INTAOO.AL<br />

f6C7 58 1323 POP AX ,RESTORE AX REG<br />

f6e8 59 1324 POP CX !RESTORE CX REG<br />

E6C9 CF 1325 IRET<br />

1326<br />

1327 ; ----------­----------------------------­---­<br />

1328 THIS SUBROUTINE WILL PRINT A MESSAGE ON THE DISPLAY<br />

1329<br />

1330 !ENTRY REQUIREMENTS:<br />

1331 51 ::: OFFSETCADORESS) OF MESSAGE BUFFER<br />

1332 CX = MESSAGE BYTE COUNT<br />

1333 MAXIMUM MESSAGE LENGTH IS 36 CHARACTERS<br />

1334 ; -------------------------------------------­<br />

E6CA 1335<br />

E6CA 884000 1336 HOV AX,DATA I POINT OS TO DATA SEG<br />

E6eD 8E08 1337 HOV OS,AX<br />

E6CF 803£120001 1338 CHP MFG.TST .1 IMFG TEST MODE?<br />

£604 7505 1339 JNE G12 ;NO - DISPLAY ERROR M5G<br />

E6D6 B601 1340 HOV OH,1 ; YES - SETUP TO BEEP SPEAKER<br />

~ Eb08 E95SFF 1341 JMP ERR.BEEP ; YES - BEEP SPEAKER<br />

EbDB 1342 G12: ; WRITCMSG:<br />

E6DB 2E8A04 13l.3 NOV AL,CS:(SIl ; PUT CHAR IN AL<br />

E60E 46 1344 INC SI ; POINT TO NEXT CHAR<br />

E60F B700 1345 MOV FJ;H,O ;SET PAGE # TO ZERO<br />

f6E1 840£ 1346 MOV AH.14 ;~RITE CHAR {TTY-INTERFACE)<br />

E6El COlO 1347 HIT 10H iCALL VIDEO.IO<br />

f6E5 E2F4 1348 lOOP G12 ; CONTINUE TI lL "SG WRITTEN<br />

f6E7 B80DOE 1349 MOV AX, OEODH ; POSITION CURSOR TO NEXT LINE<br />

f6EA COlO 1350 INT 10H ;SeNO CARRIAGE RETURN AND<br />

A-19

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!