home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
cpm
/
genasm
/
duracode.asm
< prev
next >
Wrap
Assembly Source File
|
1994-07-13
|
5KB
|
170 lines
;
; DURA-SELECTRIC I/O DRIVER
;
; 4/21/79 J. A. PREST
;
; THIS IS A SIMPLE CODE CONVERTER FOR THE DURA MACH 10
; I/O TYPEWRITER. THIS MACHINE IS SIMILAR TO THE
; IBM SELECTRIC AND USES THE SAME TYPE ELEMENTS.
; THE PROGRAM IS SET UP WITH TWO CODE TABLES ONE FOR
; THE COURIER 12, 12-PITCH (PART #132) BALL AND ONE FOR
; THE MANIFOLD 72, 10-PITCH (PART #019) BALL. THE
; COURIER CAN BE USED FOR CORRESPONDENCE AND REPORT
; WRITING. THE MANIFOLD BALL IS USED FOR HEX PRINTOUTS
; SINCE THERE IS NO NEED TO SWITCH CASE WHEN GOING FROM
; ALPHA TO NUMERIC. THIS WILL SAVE WEAR AND TEAR ON THE
; PRINTER.
;
STATUS: EQU 2 ;DURA STATUS PORT
SELSTA: EQU 2 ;DURA READY FLAG
SELDTA: EQU 1 ;DURA DATA PORT
UCSHFT: EQU 88H ;SELECTRIC UP-SHIFT CODE
LCSHFT: EQU 90H ; " DOWN " "
CASE: EQU 0FB4FH ;RAM FOR CASE FLAG
COURIER: EQU 1 ;1=COURIER 0=MANIFOLD
MANIFOLD: EQU NOT COURIER
;
; UNIVERSAL SELECTRIC OUTPUT
;
ORG 0E100H ;COURIER 12 ROM
SELCONC: MOV A,C ;ENTER HERE WITH DATA IN REG C
DB 0FEH ;DUMMY CPI TO GET AROUND NEXT BYTE
SELCONB: MOV A,B ;ENTER HERE WITH DATA IN REG B
SELCONA: PUSH H ;ENTER HERE WITH DATA IN REG A
PUSH B ;SAVE HL AND BC
CALL SELCON ;CONVERT AND PRINT
POP B
POP H
RET ;BACK WE GO
;
SELCON: CPI ' '+1 ;SPACE IS A CONTROL CHAR
JC CTLCHR
LXI H,TABLE-20H
ANI 7FH ;STRIP OFF MSB
MVI B,0
MOV C,A
DAD B
MOV A,M
ANI 0C0H ;SAVE 2 MSB'S
RZ ;IF BOTH BIT 6&7 ARE 0 NO CONVERSION
CPI 0C0H
JZ NOSHFT ;PRINT IN ANY CASE
CPI 80H
LDA CASE
JNZ UPPER ;AN UPPER CASE CHAR
LOWER: CPI LCSHFT
JZ NOSHFT
MVI A,LCSHFT
LOWER2: STA CASE
CALL PRINT
NOSHFT: MOV A,M ;GET THE CHAR BACK
ORI 0C0H ;SET 2 MSB = 1
PRINT: PUSH H
PUSH PSW
PRINT4: IN STATUS
ANI SELSTA
JZ PRINT4
PRINT6: POP PSW
OUT SELDTA
POP H
RET
;
CTLCHR: LXI H,FNTABL-1
CTLCH2: INX H
CMP M
INX H
RC
JNZ CTLCH2
MOV A,M
JMP PRINT
;
UPPER: CPI UCSHFT
JZ NOSHFT
MVI A,UCSHFT
JMP LOWER2
;
; FUNCTION TABLE
;
FNTABL: DB 9,81H ;TAB
DB 0DH,82H ;RETURN
DB 1AH,0A0H ;BACKSPACE
DB 1CH,88H ;SHIFT UP
DB 1DH,90H ;SHIFT DOWN
DB 20H,84H ;SPACE
DB 0FFH ;END OF TABLE
;
; LOOK-UP TABLES FOR TYPE ELEMENTS
; BIT 6&7 ARE USED AS FLAGS:
;
; BIT 7 BIT 6 CHARACTERISTICS
; 0 0 NO CONVERSION
; 0 1 UPPER CASE
; 1 0 LOWER CASE
; 1 1 PRINTS IN EITHER CASE
;
IF COURIER
;
; COURIER 12 TYPE ELEMENT
; UPPER AND LOWER CASE ALPHA, NUMERALS AND MOST
; PUNCTUATION MARKS. BRACKETS AND BRACES CONVERT
; TO ( AND ).
;
TABLE: DB 4,7FH,55H,7EH ;SPACE EX.PT " #
DB 79H,75H,7DH,95H ; $ % & '
DB 70H,71H,7CH,46H ; ( ) * +
DB 0CCH,80H,0D6H,89H ; , - . /
DB 0B1H,0BFH,0B6H,0BEH ; 0 1 2 3
DB 0B9H,0B5H,0B4H,0BDH ; 4 5 6 7
DB 0BCH,0B0H,4DH,8DH ; 8 9 : ;
DB 70H,86H,71H,49H ; ( = ) ?
DB 76H,5CH,60H,6CH ; @ A B C
DB 6DH,65H,4EH,4FH ; D E F G
DB 61H,54H,47H,64H ; H I J K
DB 69H,5FH,66H,59H ; L M N O
DB 45H,44H,5DH,51H ; P Q R S
DB 67H,6EH,5EH,50H ; T U V W
DB 6FH,41H,77H,70H ; X Y Z (
DB 89H,71H,97H,40H ; / ) 1/2 US
DB 95H,9CH,0A0H,0ACH ; ' A B C
DB 0ADH,0A5H,8EH,8FH ; D E F G
DB 0A1H,94H,87H,0A4H ; H I J K
DB 0A9H,9FH,0A6H,99H ; L M N O
DB 85H,84H,9DH,91H ; P Q R S
DB 0A7H,0AEH,9EH,90H ; T U V W
DB 0AFH,81H,0B7H,70H ; X Y Z (
DB 7FH,71H,57H,0 ;EX.PT ) 1/4 NC
ENDIF
;
;
IF MANIFOLD
;
; MANIFOLD 72 TYPE ELEMENT
; UPPER CASE ALPHA, NUMERALS, AND MOST PUNCTUATION
;
TABLE: DB 0,97H,55H,7EH ;SPACE EX.PT " #
DB 79H,75H,7DH,95H ; $ % & '
DB 70H,71H,7CH,46H ; ( ) * +
DB 0CCH,80H,0D6H,89H ; , - . /
DB 0B1H,0BFH,0B6H,0BEH ; 0 1 2 3
DB 0B9H,0B5H,0B4H,0BDH ; 4 5 6 7
DB 0BCH,0B0H,4DH,8DH ; 8 9 : ;
DB 70H,86H,71H,49H ; ( = ) ?
DB 76H,0DCH,0E0H,0ECH ; @ A B C
DB 0EDH,0E5H,0CEH,0CFH ; D E F G
DB 0E1H,0D4H,0C7H,0E4H ; H I J K
DB 0E9H,0DFH,0E6H,0D9H ; L M N O
DB 0C5H,0C4H,0DDH,0D1H ; P Q R S
DB 0E7H,0EEH,0DEH,0D0H ; T U V W
DB 0EFH,0C1H,0F7H,70H ; X Y Z (
DB 89H,71H,57H,40H ; / ) DEG US
DB 95H,0DCH,0E0H,0ECH ; ' A B C
DB 0EDH,0E5H,0CEH,0CFH ; D E F G
DB 0E1H,0D4H,0C7H,0E4H ; H I J K
DB 0E9H,0DFH,0E6H,0D9H ; L M N O
DB 0C5H,0C4H,0DDH,0D1H ; P Q R S
DB 0E7H,0EEH,0DEH,0D0H ; T U V W
DB 0EFH,0C1H,0F7H,70H ; X Y Z (
DB 97H,71H,7FH,0 ;EX.PT ) +- NC
ENDIF
END START