home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
SIMTEL
/
CPMUG
/
CPMUG008.ARK
/
WYLECON2.LIB
< prev
next >
Wrap
Text File
|
1984-04-29
|
2KB
|
79 lines
;++++++++++++++++++++++++++++++++++++++++++++++
;
; WYLE KEYBOARD CODE CONVERSION
; WITH LOWER CASE
;
; WYLECON2.LIB - Version 2.0 - 11 OCT 77
;
; J.W. SHOOK, P.O. BOX 185, ROCKY POINT, NY 11778
;
;++++++++++++++++++++++++++++++++++++++++++++++
; Convert codes from Wyle Computer keyboard
; to ASCII codes by use of a lookup table
; and then convert alphabetic characters
; to lower case if shift lock is off and
; shift key not depressed.
WYLECON:
PUSH B ; Save register contents
PUSH H
MOV C,A ; Save bit 7 (shift key)
MVI B,TABLEN+1 ; Set table length
LXI H,TABLST-1 ; Conversion table start
WYLEC1: DCR B ; Decrement table entry count
JZ WYLEC2 ; Done?
INX H ; Move pointer to test value
CMP M ; Compare character to entry
INX H ; Move pointer to replacement char
JNZ WYLEC1 ; Same?
MOV A,M
WYLEC2: ANI 7FH ; Delete shift bit
MOV B,A ; Save converted char
CPI 'A' ; Test for alpha char
JC WYLEC3 ; Non alpha?
CPI 'Z'+1 ;
JNC WYLEC3 ; Non alpha?
INR C ; Test shift bit
DCR C
JM WYLEC3 ; Shift key pressed?
IN SENSW ; Test shift lock switch
ANI SHFTLK ; Mask bit
MOV A,B ; Restore char to A
JNZ WYLEC3 ; Switch on?
ADI 20H ; Convert to lower case
WYLEC3: POP H ; Restore registers
POP B
RET
TABLST: DB 0B7H,21H
DB 03DH,59H
DB 023H,55H
DB 05CH,49H
DB 05EH,4FH
DB 01FH,3DH
DB 09FH,22H
DB 00CH,23H
DB 08EH,0AH
DB 00EH,7FH
DB 08FH,7BH
DB 00FH,1BH
DB 09AH,7DH
DB 01DH,15H
DB 09EH,7CH
DB 01EH,16H
DB 09BH,10H
DB 01BH,13H
DB 00BH,03H
DB 089H,5EH
DB 021H,08H
DB 0A1H,5CH
TABLND:
TABLEN: EQU (TABLND-TABLST)/2 ; Number of entries