home *** CD-ROM | disk | FTP | other *** search
- ; PROGRAM NECSET.ASM
- ;
- ; WRITTEN BY KENT WALKER
- ; OCTOBER, 1982
- ;
- ; 8080 ASSEMBLER CODE
- ; USING CP/M BDOS FUNCTIONS
- ;
- ; THIS PROGRAM IS DESIGNED
- ; TO SET THE
- ; >>>>>>>>NEC-8023A-C<<<<<<<<
- ; PRINTER PARAMETERS
- ; VIA KEYBOARD INPUT.
- ;
- ; A TABLE OF OPTIONS IS PRESENTED ON THE MONITOR.
- ; INPUT IS TERMINATED BY A CARRIAGE RETURN.
- ; INPUT CHARACTERS MUST BE IN UPPER CASE.
- ;
- ORG 100H
- BDOS EQU 0005H
- INCHR EQU 1 ;KEYBOARD INPUT FUNCTION
- LSTCHR EQU 5 ;CHARACTER TO LIST DEVICE FUNCTION
- CR EQU 000DH ;CARRIAGE RETURN
- LF EQU 000AH ;LINE FEED
- TAB EQU 0009H ;TAB CHARACTER
- CLRSCR EQU 001AH ;CLEAR SCREEN - CTRL Z - OSBORNE & TELEVIDEO
- ESC EQU 001BH ;ESCAPE CODE
- SO EQU 000EH ;SOCODE
- SI EQU 000FH ;SI CODE
- PRSTR EQU 9 ;PRINT STRING FUNCTION
- BOOT EQU 0 ;WARM BOOT
- ;
- LXI SP,STACK ;SET UP STACK
- LXI D,MESAGE ;POINT TO MESSAGE
- MVI C,PRSTR ;STRING PRINT FUNCTION
- CALL BDOS
- ;
- LOOP MVI C,INCHR
- CALL BDOS
- CPI CR ;CARRIAGE RETURN ENDS INPUT
- JZ BOOT
- ;
- LXI H,PICA ;TEST FOR 'B'
- CPI 'B'
- JZ LIST
- ;
- LXI H,ELITE ;TEST FOR 'C'
- CPI 'C'
- JZ LIST
- ;
- LXI H,MICRON ;TEST FOR 'D'
- CPI 'D'
- JZ LIST
- ;
- LXI H,PROP ;TEST FOR 'P'
- CPI 'P'
- JZ LIST
- ;
- LXI H,EMPH ;TEST FOR 'E'
- CPI 'E'
- JZ LIST
- ;
- LXI H,NOEMPH ;TEST FOR 'F'
- CPI 'F'
- JZ LIST
- ;
- LXI H,DBLWD ;TEST FOR '2'
- CPI '2'
- JZ LIST
- ;
- LXI H,SNGLWD ;TEST FOR '1'
- CPI '1'
- JZ LIST
- ;
- LXI H,SIXLPI ;TEST FOR '6'
- CPI '6'
- JZ LIST
- ;
- LXI H,EITLPI ;TEST FOR '8'
- CPI '8'
- JZ LIST
- ;
- JMP LOOP
- ;
- ;
- ; SUBROUTINE TO OUTPUT ESCAPE CODE TO PRINTER
- ;
- LIST MOV E,M ;MOVE CHAR TO REG E
- PUSH H ;SAVE STRING POINTER
- MVI C,LSTCHR ;SET UP FOR LINE PRINTER
- CALL BDOS ;PRINT CHARACTER
- POP H ;RESTORE STRING POINTER
- INX H ;POINT TO NEXT CHAR
- MOV A,M ;MOVE NEXT CHAR TO REG A
- CPI '$' ;IS IT THE TERMINATOR ($) ?
- JZ LOOP ;RETURN IF YES
- JMP LIST ;ELSE REPEAT
- ;
- ; END OF SUBROUTINE
- ;
- ;
- ; MESSAGES
- ;
- MESAGE DB CLRSCR,TAB,'NEC-8023 PRINTER FUNCTIONS',CR,LF,LF
- DB TAB,'B = 10 CHARACTERS PER INCH',CR,LF
- DB TAB,'C = 12 CHARACTERS PER INCH',CR,LF
- DB TAB,'D = 17 CHATACTERS PER INCH',CR,LF
- DB TAB,'P = PROPORTIONAL SPACING' ,CR,LF,LF
- DB TAB,'E = EMPHASIZED PRINT' ,CR,LF
- DB TAB,'F = NON-EMPHASIZED PRINT' ,CR,LF,LF
- DB TAB,'2 = DOUBLE WIDTH PRINT' ,CR,LF
- DB TAB,'1 = SINGLE WIDTH PRINT' ,CR,LF,LF
- DB TAB,'6 = 6 LINES PER INCH' ,CR,LF
- DB TAB,'8 = 8 LINES PER INCH' ,CR,LF,LF
- DB '$'
- ;
- ; TABLE OF PRINTER ESCAPE CODES
- ;
- PICA DB ESC,'N$'
- ELITE DB ESC,'E$'
- MICRON DB ESC,'Q$'
- PROP DB ESC,'P$'
- EMPH DB ESC,'!$'
- NOEMPH DB ESC,'"$'
- DBLWD DB SO, '$'
- SNGLWD DB SI, '$'
- SIXLPI DB ESC,'A$'
- EITLPI DB ESC,'B$'
- ;
- ; STACK AREA
- ;
- DS 10H
- STACK
- ;
- END