home *** CD-ROM | disk | FTP | other *** search
-
- M EQU Byte Ptr 0[BX]
- TITLE '92A OKIDATA PRINTER UTILITY 12 MARCH 84'
- ;
- ; USE ASM86.CMD TO ASSEMBLE
- ; THEN GENCMD OKI-92 8080
- ;
- ;
- ; GENERAL EQU'S
- ;
- BDOS EQU 224 ;SYSTEM CALL INTERUPT VECTOR
- CONIN EQU 1 ;GET KEYBOARD CHARACTER
- CR EQU 0DH ;CONTROL-M FOR CARRIAGE RETURN
- CONOUT EQU 2 ;CRT OUTPUT ROUTINE
- CTLC EQU 3 ;CONTROL-C TO TERMINATE
- ESC EQU 1BH ;ESCAPE CHARACTER
- LF EQU 0AH ;CONTROL-J FOR LINE FEED
- LST EQU 5 ;LIST DEVICE OUTPUT
- STRING EQU 9 ;PRINT STRING ON CONSOLE
- TAB EQU 09H ;CONTROL-I FOR HORIZONTAOL TAB
- CLEAR EQU 1AH ;CLEAR SCREEN COMMAND
- ;
- ORG 100H
- ;
- JMP START ;JUMP INTO PROGRAM
- L_1 EQU $
- DSEG
- ORG Offset L_1
- ;
- ; DATA STRINGS TO CONTROL OKIDATA 92A PRINTER
- ;
- CPI5 DB 30,31,0 ;5 CPI DOUBLE PRINT
- CPI6 DB 28,31,ESC,'6',0 ;6 CPI DOUBLE PRINT
- CPI8 DB 29,31,ESC,'6',0 ;8.5 CPI DOUBLE PRINT
- PRTSEL DB 17,ESC,'0' ;SELECT PRINTER
- CPI10 DB 30,ESC,'6',0 ;10 CPI, NORMAL
- CPI12 DB 28,ESC,'6',0 ;12 CPI, NORMAL
- CPI17 DB 29,ESC,'6',0 ;17 CPI, NORMAL
- CORA DB ESC,'1',0 ;CORESPONDENCE PRINT
- DATAP DB ESC,'0',0 ;DATA PROCESSING PRINT
- LPI6 DB ESC,'6',0 ;6 LINES PER INCH
- LPI8 DB ESC,'8',0 ;8 LINES PER INCH
- TURNUP DB CR,LF,'$'
- ;
- ;
- ; SIGN-ON MESSAGE
- ;
- SOM DB LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF
- DB TAB,'OKIDATA 92A Printer options '
- DB TAB,'12 March 84 CCR',LF,LF
- DB CR,TAB,'STRING AS MANY NUMBERS AS YOU LIKE',LF
- DB CR,TAB,TAB,'BEFORE YOU HIT A C/R',LF
- DB CR,LF,TAB,TAB,'0 = DEFALT TO 10 CPI'
- DB CR,LF,TAB,TAB,'1 = 5 CPI Double Size '
- DB CR,LF,TAB,TAB,'2 = 6 CPI Double Size '
- DB CR,LF,TAB,TAB,'3 = 8.5 CPI Double Size '
- DB CR,LF,TAB,TAB,'4 = 10 CPI, Normal'
- DB CR,LF,TAB,TAB,'5 = 12 CPI, Normal'
- DB CR,LF,TAB,TAB,'6 = 17 CPI, Normal'
- DB CR,LF,TAB,TAB,'7 = Correspondence Print'
- DB CR,LF,TAB,TAB,'8 = Data Processing Print'
- DB CR,LF,TAB,TAB,'9 = 6 Vertical lines per inch'
- DB CR,LF,TAB,TAB,'A = 8 Vertical lines per inch'
- DB CR,LF,LF,LF,LF,TAB,'Select: '
- DB '$'
- L_2 EQU $
- CSEG
- ORG Offset L_2
- ;
- START:
- MOV SP,(Offset STACK) ;SET UP STACK
- MOV DX,(Offset SOM) ;SIGNON MESSAGE
- CALL DSTRNG ;SHOW ON THE CRT
- MOV BX,(Offset PRTSEL) ;SET THE PRINTER TO NORMAL CONDITIONS
- JMP PSTRNG
- ;
- SELECT: CALL INPUT ;GET A CHAR.
- ;
- CMP AL,'0' ;RESET TO DEFAULT PARAMETERS
- MOV BX,(Offset PRTSEL) ;TURN PRINTER ON and 10 CPI
- JNZ L_3
- JMP PSTRNG
- L_3:
- ;
- CMP AL,'1'
- MOV BX,(Offset CPI5) ; 5 CPI DOUBLE PRINT
- JZ PSTRNG
- ;
- CMP AL,'2'
- MOV BX,(Offset CPI6) ; 6 CPI DOUBLE PRINT
- JZ PSTRNG
- ;
- CMP AL,'3'
- MOV BX,(Offset CPI8) ; 8.5 CPDOUBLE PRINT
- JZ PSTRNG
- ;
- CMP AL,'4'
- MOV BX,(Offset CPI10) ; 10 CPI, NORMAL
- JZ PSTRNG
- ;
- CMP AL,'5'
- MOV BX,(Offset CPI12) ; 12 CPI, NORMAL
- JZ PSTRNG
- ;
- CMP AL,'6'
- MOV BX,(Offset CPI17) ; 17 CPI, NORMAL
- JZ PSTRNG
- ;
- CMP AL,'7'
- MOV BX,(Offset CORA) ; CORRESPONDENCE PRINT
- JZ PSTRNG
- ;
- CMP AL,'8'
- MOV BX,(Offset DATAP) ; DATA PROCESSING PRINT
- JZ PSTRNG
- ;
- CMP AL,'9'
- MOV BX,(Offset LPI6) ; 6 VERTICAL LINES PER INCH
- JZ PSTRNG
- ;
- CMP AL,'A'
- MOV BX,(Offset LPI8) ; 8 VERTICAL LINES PER INCH
- JZ PSTRNG
- ;
- CMP AL,'a'
- MOV BX,(Offset LPI8) ; 8 VERTICAL LINES PER INCH
- JZ PSTRNG
- ;
- JMPS SELECT ;IF NONE OF THESE, ASK AGAIN
- ; ;
- ; ROUTINES START HERE ;
- ;
- EXIT: MOV DX,(Offset TURNUP) ;TURN UP SOME EXTRA LINES
- CALL DSTRNG ;DISPLAY ON THE CRT
- ;
- EXIT1: MOV CL,0 ;FILLED BY 'START' FOR RETURN TO 'CCP'
- MOV DL,0
- INT BDOS
- ;
- ; GET A KEYBOARD CHARACTER
- ;
- INPUT: MOV CL,CONIN ;KEYBOARD ROUTINE
- INT BDOS
- AND AL,7FH ;STRIP AWAY ANY PARITY
- CMP AL,CTLC ;CONTROL-C?
- JZ EXIT ;IF YES, ALL FINISHED
- CMP AL,CR ;CONTROL-M FOR RETURN?
- JZ EXIT ;IF YES, ALL FINISHED
- RET
- ;
- ; DISPLAY A STRING ON THE CRT
- ;
- DSTRNG: MOV CL,STRING ;BDOS CONSOLE STRING ROUTINE
- INT BDOS ;CALL BDOS AND SEND TO THE CRT
- RET
- ;
- ; PRINT A STRING OF CHARS. ON THE OKIDATA 92A
- ;
- PSTRNG: MOV AL,M ;GET THE CHARACTER IN THE STRING
- OR AL,AL ;SEE IF FINISHED YET
- JNZ L_4
- JMP SELECT ;GET NEW ANSWER IF ZERO
- L_4:
- ;
- PUSH BX ;SAVE THE ADDRESS IN THE STRING
- MOV CL,LST ;BDOS PRINTER ROUTINE
- MOV DL,AL ;PUT THE CHAR. INTO 'E' REG.
- INT BDOS ;CALL BDOS AND SEND TO THE PRINTER
- POP BX ;BACK TO THE STRING ADDRESS
- INC BX ;NEXT LOCATION
- JMPS PSTRNG ;DO THE NEXT ONE
- L_5 EQU $
- DSEG
- ORG Offset L_5
- ;
- ;
- ; STACK AREA
- ;
- RS 20H ;ALLOW ROOM FOR STACK
- L_6 EQU $
- CSEG
- ORG Offset L_6
- ;
- STACK RS 0 ; "0" FOR GENCMD
- ;
- END
-