home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol172 / oki-92.a86 < prev    next >
Encoding:
Text File  |  1984-05-30  |  4.5 KB  |  187 lines

  1.  
  2. M    EQU    Byte Ptr 0[BX]
  3.     TITLE    '92A OKIDATA PRINTER UTILITY          12 MARCH 84'
  4. ;
  5. ;    USE ASM86.CMD TO ASSEMBLE 
  6. ;    THEN    GENCMD OKI-92 8080
  7. ;       
  8. ;
  9. ; GENERAL EQU'S
  10. ;
  11. BDOS    EQU    224            ;SYSTEM CALL INTERUPT VECTOR
  12. CONIN    EQU    1            ;GET KEYBOARD CHARACTER
  13. CR    EQU    0DH            ;CONTROL-M FOR CARRIAGE RETURN
  14. CONOUT    EQU    2            ;CRT OUTPUT ROUTINE
  15. CTLC    EQU    3            ;CONTROL-C TO TERMINATE
  16. ESC    EQU    1BH            ;ESCAPE CHARACTER
  17. LF    EQU    0AH            ;CONTROL-J FOR LINE FEED
  18. LST    EQU    5            ;LIST DEVICE OUTPUT
  19. STRING    EQU    9            ;PRINT STRING ON CONSOLE
  20. TAB    EQU    09H            ;CONTROL-I FOR HORIZONTAOL TAB
  21. CLEAR    EQU    1AH            ;CLEAR SCREEN COMMAND
  22. ;
  23.     ORG    100H
  24. ;
  25.     JMP    START            ;JUMP INTO PROGRAM
  26. L_1    EQU    $
  27.     DSEG
  28.     ORG    Offset L_1
  29. ;
  30. ; DATA STRINGS TO CONTROL OKIDATA 92A PRINTER
  31. ;
  32. CPI5    DB    30,31,0            ;5 CPI   DOUBLE PRINT 
  33. CPI6    DB    28,31,ESC,'6',0        ;6 CPI   DOUBLE PRINT       
  34. CPI8    DB    29,31,ESC,'6',0        ;8.5 CPI DOUBLE PRINT     
  35. PRTSEL    DB    17,ESC,'0'        ;SELECT PRINTER    
  36. CPI10    DB    30,ESC,'6',0        ;10 CPI, NORMAL
  37. CPI12    DB    28,ESC,'6',0        ;12 CPI, NORMAL
  38. CPI17    DB    29,ESC,'6',0        ;17 CPI, NORMAL
  39. CORA    DB    ESC,'1',0        ;CORESPONDENCE PRINT
  40. DATAP    DB    ESC,'0',0        ;DATA PROCESSING PRINT
  41. LPI6    DB    ESC,'6',0        ;6 LINES PER INCH        
  42. LPI8    DB    ESC,'8',0        ;8 LINES PER INCH
  43. TURNUP    DB    CR,LF,'$'
  44. ;
  45. ;
  46. ; SIGN-ON MESSAGE
  47. ;
  48. SOM    DB    LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF,LF
  49.     DB    TAB,'OKIDATA 92A Printer options '
  50.     DB    TAB,'12 March 84 CCR',LF,LF
  51.     DB    CR,TAB,'STRING AS MANY NUMBERS AS YOU LIKE',LF
  52.     DB    CR,TAB,TAB,'BEFORE YOU HIT A C/R',LF
  53.     DB    CR,LF,TAB,TAB,'0 = DEFALT TO 10 CPI'
  54.     DB    CR,LF,TAB,TAB,'1 = 5 CPI   Double Size '
  55.     DB    CR,LF,TAB,TAB,'2 = 6 CPI   Double Size '
  56.     DB    CR,LF,TAB,TAB,'3 = 8.5 CPI Double Size '
  57.     DB    CR,LF,TAB,TAB,'4 = 10 CPI, Normal'
  58.     DB    CR,LF,TAB,TAB,'5 = 12 CPI, Normal'
  59.     DB    CR,LF,TAB,TAB,'6 = 17 CPI, Normal'
  60.     DB    CR,LF,TAB,TAB,'7 = Correspondence Print'
  61.     DB    CR,LF,TAB,TAB,'8 = Data Processing Print'
  62.     DB    CR,LF,TAB,TAB,'9 = 6 Vertical lines per inch'
  63.     DB    CR,LF,TAB,TAB,'A = 8 Vertical lines per inch'
  64.     DB    CR,LF,LF,LF,LF,TAB,'Select: '
  65.     DB    '$'
  66. L_2    EQU    $
  67.     CSEG
  68.     ORG    Offset L_2
  69. ;
  70. START:
  71.     MOV    SP,(Offset STACK)    ;SET UP STACK
  72.     MOV    DX,(Offset SOM)        ;SIGNON MESSAGE
  73.     CALL    DSTRNG            ;SHOW ON THE CRT
  74.     MOV    BX,(Offset PRTSEL)    ;SET THE PRINTER TO NORMAL CONDITIONS
  75.     JMP    PSTRNG
  76. ;
  77. SELECT:    CALL    INPUT            ;GET A CHAR.
  78. ;
  79.     CMP    AL,'0'            ;RESET TO DEFAULT PARAMETERS
  80.     MOV    BX,(Offset PRTSEL)    ;TURN PRINTER ON and 10 CPI
  81.     JNZ    L_3    
  82.     JMP    PSTRNG
  83. L_3:
  84. ;
  85.     CMP    AL,'1'
  86.     MOV    BX,(Offset CPI5)    ; 5 CPI DOUBLE PRINT 
  87.     JZ    PSTRNG
  88. ;                                                    
  89.     CMP    AL,'2'
  90.     MOV    BX,(Offset CPI6)    ; 6 CPI DOUBLE PRINT 
  91.     JZ    PSTRNG
  92. ;                                                    
  93.     CMP    AL,'3'
  94.     MOV    BX,(Offset CPI8)    ; 8.5 CPDOUBLE PRINT 
  95.     JZ    PSTRNG
  96. ;                                         
  97.     CMP    AL,'4'
  98.     MOV    BX,(Offset CPI10)    ; 10 CPI, NORMAL
  99.     JZ    PSTRNG
  100. ;                                         
  101.     CMP    AL,'5'
  102.     MOV    BX,(Offset CPI12)    ; 12 CPI, NORMAL
  103.     JZ    PSTRNG
  104. ;
  105.     CMP    AL,'6'
  106.     MOV    BX,(Offset CPI17)    ; 17 CPI, NORMAL
  107.     JZ    PSTRNG
  108. ;
  109.     CMP    AL,'7'
  110.     MOV    BX,(Offset CORA)    ; CORRESPONDENCE PRINT
  111.     JZ    PSTRNG
  112. ;
  113.     CMP    AL,'8'
  114.     MOV    BX,(Offset DATAP)    ; DATA PROCESSING PRINT
  115.     JZ    PSTRNG
  116. ;
  117.     CMP    AL,'9'
  118.     MOV    BX,(Offset LPI6)    ; 6 VERTICAL LINES PER INCH
  119.     JZ    PSTRNG
  120. ;
  121.     CMP    AL,'A'
  122.     MOV    BX,(Offset LPI8)    ; 8 VERTICAL LINES PER INCH
  123.     JZ    PSTRNG
  124. ;
  125.     CMP    AL,'a'
  126.     MOV    BX,(Offset LPI8)    ; 8 VERTICAL LINES PER INCH
  127.     JZ    PSTRNG
  128. ;
  129.     JMPS    SELECT            ;IF NONE OF THESE, ASK AGAIN
  130. ;                                                                      ;
  131. ;                     ROUTINES START HERE                              ;
  132. ;
  133. EXIT:    MOV    DX,(Offset TURNUP)    ;TURN UP SOME EXTRA LINES
  134.     CALL    DSTRNG            ;DISPLAY ON THE CRT
  135. ;
  136. EXIT1:    MOV    CL,0            ;FILLED BY 'START' FOR RETURN TO 'CCP'
  137.     MOV    DL,0
  138.     INT    BDOS
  139. ;
  140. ; GET A KEYBOARD CHARACTER
  141. ;
  142. INPUT:    MOV    CL,CONIN        ;KEYBOARD ROUTINE
  143.     INT    BDOS
  144.     AND    AL,7FH            ;STRIP AWAY ANY PARITY
  145.     CMP    AL,CTLC            ;CONTROL-C?
  146.     JZ    EXIT            ;IF YES, ALL FINISHED
  147.     CMP    AL,CR            ;CONTROL-M FOR RETURN?
  148.     JZ    EXIT            ;IF YES, ALL FINISHED
  149.     RET
  150. ;
  151. ; DISPLAY A STRING ON THE CRT
  152. ;
  153. DSTRNG:    MOV    CL,STRING        ;BDOS CONSOLE STRING ROUTINE
  154.     INT    BDOS            ;CALL BDOS AND SEND TO THE CRT
  155.     RET
  156. ;
  157. ; PRINT A STRING OF CHARS. ON THE OKIDATA 92A
  158. ;
  159. PSTRNG:    MOV    AL,M            ;GET THE CHARACTER IN THE STRING
  160.     OR    AL,AL            ;SEE IF FINISHED YET
  161.     JNZ    L_4    
  162.     JMP    SELECT            ;GET NEW ANSWER IF ZERO
  163. L_4:
  164. ;
  165.     PUSH    BX            ;SAVE THE ADDRESS IN THE STRING
  166.     MOV    CL,LST            ;BDOS PRINTER ROUTINE
  167.     MOV    DL,AL            ;PUT THE CHAR. INTO 'E' REG.
  168.     INT    BDOS            ;CALL BDOS AND SEND TO THE PRINTER
  169.     POP    BX            ;BACK TO THE STRING ADDRESS
  170.     INC    BX            ;NEXT LOCATION
  171.     JMPS    PSTRNG            ;DO THE NEXT ONE
  172. L_5    EQU    $
  173.     DSEG
  174.     ORG    Offset L_5
  175. ;
  176. ;
  177. ;    STACK AREA
  178. ;
  179.     RS    20H            ;ALLOW ROOM FOR STACK
  180. L_6    EQU    $
  181.     CSEG
  182.     ORG    Offset L_6
  183. ;
  184. STACK    RS    0            ; "0" FOR GENCMD
  185. ;
  186.     END
  187.