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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

LOC OBJ LINE SOURCE<br />

E994 8E08 1798 HOV DS,AX ; SET UP ADDRESSING<br />

E996 E460 1799 IN AL,KB_DATA j READ IN THE CHARACTER<br />

E998 50 1800 PUSH AX ; SAVE IT<br />

E999 E461 11301 m AL,KB_CTL j GET THE CONTROL PORT<br />

E998 8AEO 1802 MOV AH ,AL ; SAVE VALUE<br />

E990 DC8D 1803 OR AL,80H ; RESET BIT fOR KEYBOARD<br />

E99F E661 1804 OUT<br />

E9Al 66ED 1605 XCHG AH,AL j GET BACK ORIGINAL CONTROL<br />

E9A3 E661 1806 OUT KB_CTl,AL ; KB HAS BEEN RESET<br />

E9A5 58 1807 POP AX ; RECOVER SCAN CODE<br />

E9A6 8AEO 1808 HOV AH,Al ; SAVE SCAN CODE IN AH ALSO<br />

1809<br />

1810 ;------ TEST FOR OVERRUN SCAN CODE FROM KEYBOARD<br />

1811<br />

E9A8 3eFF 1812 CMP AL,OFFH ; IS THIS AN OVERRUN CHAR<br />

E9AA 7503 len JI~Z K16 ; NO, TEST fOR SHIfT 'KEY<br />

E9AC E97502: 1814 J~IP K62 I BUFFER_FULL_BEEP<br />

1815<br />

1816 ;------ TEST FOR SHIFT KEYS<br />

1817<br />

E9AF 1818 K16: I TEST_SHIFT<br />

E9AF 247F 1819 AHa AL,07FH ; TURN OFF THE BREAK BIT<br />

E9Bl DE 1820 PUSH OS<br />

E982 07 1821 POP ES I ESTABLISH ADDRESS OF SHIFT TABLE<br />

E9B3 BF8ZE8 1822 MOV DI,OFFSET K6 ; SHIFT KEY TABLE<br />

E9B6 890800 1823 MOV CX,K6L LENGTH<br />

E~9 F2 1824 PEPNE SCASB ; LOOK THROUGH THE TABLE FOR A MATCH<br />

E9SA AE<br />

E9B8 8A.C4 1825 HOY AL,AH j RECOVER SCAN COOE<br />

E9SD 7403 1826 JE K17 j JUMP IF MATCH FOUND<br />

E98F E9880D 1827 JtlP K2S ; IF NO MATCH, THEN SHIrT NOT FOUND<br />

1828<br />

1829 j------ SHIFT KEY FOUHD<br />

1830<br />

E9C2 81EF83E8 1831 K17: SUB DI,OFFSET K6.1 J ADJUST PTP TO SCAN CODE MTCH<br />

E9C6 2E8AA5BAfa 1832 MOV AH,CS:K7[DII I GET MASK INTO AH<br />

E9CD .1.680 1833 TEST AL,eOH ; TEST FOR BREAK KEY<br />

EQCD 7554 1834 JNZ K21 ; BREAK_SHIFT_FOUND<br />

1835<br />

1836 j------ SHIFT HAKE FOlR'ID, DETERMINE SET OR TOGGLE<br />

1837<br />

E9CF 80FCI0 1838 OHP AH ,SCROLL_SHIFT<br />

E902 7307 1839 JAE K18 IF SCROll SHIFT OR ABOVE, TOGGLE KEY<br />

1840<br />

1841 1------ PLAIN SHIFT KEY, SET SHIFT ON<br />

1842<br />

E9D4 08261700 1843 OR TURN ON SHIFT BIT<br />

E9D8 E98300 1844 JHP ; INTERRUPT_RETURN<br />

1845<br />

1646 1------ TOGGLED SHIFT KEY. TEST FOR 1ST MAKE OR NOT<br />

1847<br />

E9DB 1848 K18: ; SHIFT-TOGGLE<br />

E9DB F606170004 1849 TEST KBJLAG. CT,"-SHIFT ; CHECK CTL SHIFT STATE<br />

E9EO 7568 1850 JNZ K25 JUMP IF CTL STATE<br />

E9E2 3e52 1851 CMP Al, INS_KEY I CHECK FOR INSERT KEY<br />

E9E4 7525 1852 JHZ K22 1 JUMP IF NOT INSERT KEY<br />

E9E6 F60617DQ08 1653 TEST KBJLAG. ALT_SHIFT CHECK FOR ALTERNATE SHIFT<br />

E9E8 7403 1654 JZ K19 JUMP IF NOT ALTERNATE SHIFT<br />

E9ED E85890 1855 JHP K25 JUt1P IF ALTERNATE SHIFT<br />

E9FO F606170020 1856 K19: TEST KBJLAG, NUH_STATE ; CHECK FOR BASE STATE<br />

E9F5 750D 1857 JNZ KZl ; JUMP IF NUM LOCK IS ON<br />

E9F7 F606170003 1858 TEST<br />

E9Fe 7400 1859 JZ K22 ; JUMP IF BASE STATE<br />

1660<br />

E9FE 1861 K20: ; truMERIC ZERO. NOT INSERT KEY<br />

E9FE 883052 1862 "OV AX, 5230H ; PUT OUT AN ASCII ZERO<br />

EADI E90801 1863 JHP K57 ; BUFFER]ILL<br />

EA04 le64 ; MIGHT BE NUMERIC<br />

EA04 F606170003 1865 TEST KBJLAG, LEFT_SHIFT+ RIGHT_SHIFT<br />

EA09 74F3 1866 JZ K20 i JUMP NUHERIC, NOT INSERT<br />

1867<br />

EADs 1868 K22: ; SHIFT TOGGLE KEY HIT; PROCESS IT<br />

EADB 84261800 1869 ; IS KEY ALREADY DEPRESSED<br />

EAOF 7540 1870 JNZ K26 ; JUMP IF KEY ALREADY DEPRESSED<br />

EAll 08261800 1871 OR KBJLAG_l.AH INDICATE THAT THE KEY IS DEPRESSED<br />

EAtS 30261700 1872 XOR K8JLAG.AH TOGGLE THE SHIFT STATE<br />

EAi9 3C52 1873 Cf1P Al.INS_KEY TEST FOR 1ST MAKE OF INSERT KEY<br />

EAIB 7541 1874 JNE K26 JUMP IF NOT INSERT KEY<br />

A-26

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

Saved successfully!

Ooh no, something went wrong!