25.03.2015 Views

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)

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

LaC OBJ LINE SOURCE<br />

1659 ASSUME CS:CODE,DS!DAiA<br />

E8tE 1660 KEYBOARD_IO PROC "R<br />

E82E FB 1661 SH j INTERRUPTS BACK ON<br />

ESZ:F IE 1662 PUSH OS J SAVE CURRENT DS<br />

. E8lt 53 16.63 IJUSH 6X I SAVE BX TEMPORARILY<br />

E831 B84000 1664 I10V ex,OATA<br />

E8M SEDB 1665 MOV OS,BX I ESTABLISH POINTER TO DATA REGION<br />

£836 OAF. 1666 OR ....... ; AH=O<br />

E83& 740B 1667 JZ .1 ; ASCII_READ<br />

E63A fEee<br />

1666<br />

O'C A.<br />

I AH-=1<br />

E83C 7420<br />

1669<br />

JZ<br />

J ASCII_STATUS<br />

••<br />

E83E FEet<br />

1670<br />

DEC AH<br />

; AH:::2<br />

E840 71\2D 1671 JZ Kl ; SHIFT_STATUS<br />

E842 5B 1672 POP BX J RECOVER REGISTER<br />

E843 IF 1673 POP OS<br />

E84lt CF 1674 IRET J INVALID COHt1AND<br />

1675<br />

1676 ;------ READ THE KEY TO FIGURE OUT WHAT TO DO<br />

1677<br />

1678 Kl: ; ASCII READ<br />

'84'<br />

E845 FB 1679 STt ; INTERRUPTS BACK ON DURING LOOP<br />

E846 90 1680 NOP J AlLOW AN INTERRUPT TO OCCUR<br />

EM7 FA 1681 eLI I INTERRUPTS BACK OFf<br />

E848 881ElAOO 1682 MaV ex.BUfFER_HEAD­ I GET POINTER TO HEAD OF BUFFER<br />

EMC 381EICOO 1683 eMP BX,BUFFER_TAIl I TEST END Of BUFfER<br />

E850 74F3 1684 JZ Kl I LOOP UNTIL SOMETHING IN BUFFER<br />

f652 8B07 1685 I10V AX,lBXl j GET SCAM CODE AND ASCII CODE<br />

E654 E81EOO 16.. CALL K' I MOVE POINTER TO NEXT POSITION<br />

E857 891E lAOO 1687 I10V eUfFER_HEAD,BX I STORE VALUE IN VARIABLE<br />

E858 58 1688 pop ex ; RECOVER REGISTER<br />

f85t IF 1689 POP os • RECOVER SEGMENT<br />

E8SD Cf 1690 IRET ~ RETURN TO C.A LLER<br />

1691<br />

1692 1------ .ASCII STATUS<br />

1693<br />

E85E 1694<br />

E85E FA 169S eLI ; INTERRUPTS Off<br />

E85F 881£1AOO 1696 I10V ax .SUFFER_HEAD ; GET HUD POINTER<br />

E86.3 381ElCOO 1697 CMP ex.BUFFER_TAIl ; IF EQUAL (Z=l) THEN NOTHIHG THERE<br />

E867 8807 1696 HOV AX.fex]<br />

[869 Fe 1699 SH ; INTERRUIJTS BACK ON<br />

E8~A 58 1700 POP BX J RECOVER REGISTER<br />

E86B IF 1701 POP OS o RECOVER SEGMENT<br />

E86C CA02O'O 1702 RET ; THROW AWAY fLAGS<br />

1703<br />

1704 1------ SHIfT SfArus<br />

1705<br />

E8bF 1706 K3:<br />

E86F A01700 1707 I10V Al ,KBJLAG 1 GET THE SHIFT STATUS FLAGS<br />

E872 58 1708 pop ex ; RECOVER REGISTER<br />

£873 IF 1709 POP DS ; RECOVER REGISTERS<br />

E874 CF 1710 IRET ; RETURN TO CALLER<br />

1711<br />

1712<br />

17U<br />

1714<br />

j------ INCREMENT A BUFfER POINTER<br />

E875 1715 K4 PROC NEAR<br />

E875 83C302 1716 ADD B)(,2 ; MOVE TO NEXT WORD IN LIST<br />

E878 81 F83EOO 1717 CHP BX,OfFSET KB_BUFFER_ENO ; AT END OF eUFFER?<br />

Ea7C 7503 1718 JNE .s j NO. CONTINUE<br />

E87E 881EOO J719 MOV ax ,OFfSET Ke_BUFFER t YES, RESET TO eUFFER BEGINNING<br />

'681 1720 KS:<br />

E881 C3 1721 RET<br />

1722 K4 ENDP<br />

1723<br />

1724 ~------ TABLE OF SHIfT KEYS AtI) tuSK VALUES<br />

Ins<br />

Eee! 1726 K6 LABEL eYTE<br />

E882 ;2 1727 DB INS_KEY ; INSERT KEY<br />

E8&3 3A45463&10 1728 06 CAPS_KEY ,NUN_KEY ,SCROL~KEY •AlT_KEY.eTl_KEY<br />

E888 2A36 1729 DB LEF-r_KEy,RIGHT_KEY<br />

0008 1130 .bL 'OU $-K6<br />

1731<br />

1732 ;------ SHIFT_H'\sK_TABLE<br />

1733<br />

..... 1734 K7 LABEL BYTE<br />

E88A 80 1735 DB ; INSERT MODE SHIFT<br />

A-24

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

Saved successfully!

Ooh no, something went wrong!