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 / CPM / PROGRAMS / LIST / SETOKI92.ASM < prev    next >
Assembly Source File  |  2000-06-30  |  5KB  |  162 lines

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