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 / SET192V3.ASM < prev    next >
Assembly Source File  |  2000-06-30  |  10KB  |  311 lines

  1. ;*****************************************************************
  2. ;    TITLE:        SET192V3.ASM         
  3. ;
  4. ;    PURPOSE:    OKIDATA 192/193 PRINTER OPTIONS SELECTOR
  5. ;****************************************************************
  6. ;    Adapted from the following:             
  7. ;       TITLE:         SET92.ASM
  8. ;    PURPOSE:    Set-Up for OKIDATA 92 Printer
  9. ;    AUTHOR:        J. A. GRONEK
  10. ;    COPYRIGHT:    UCS, inc.  1984
  11. ;    VERSION:    2.2    DATED:    AUGUST 22, 1984
  12. ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  13. ; SET192 revision 3.0                30 Apr 86   Jim Lill
  14. ; - added "end with <cr>" note, deleted "ctrl-C quits" note
  15. ; - added paper-out disable command (resets with "R" default)
  16. ; - moved "R" line and listed defaults on screen
  17. ; - deleted RESET to defaults from START, must force with a "R"
  18. ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  19. ; SET192 revision 2.0                28 Mar 86   Jim Lill
  20. ; - reformatted menu for additional commands
  21. ; - added commands for choice of Language Sets
  22. ; - changed commands to all letters to eliminate errors such
  23. ;   as hitting "6" for 6 LPI
  24. ; - changed method of handling lower case, now p/o INPUT sub-routine
  25. ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  26. ; Updated for Okidata 192             9 Feb 86   Jim Lill                              
  27. ; From SET92.ASM, changing name and resetting rev. to 1.1
  28. ; Added:
  29. ; 1) Italics 
  30. ; 2) Enhanced Print
  31. ; 3) Left offset of 1/2 inch for improving print-outs that are
  32. ;    to be punched  
  33. ; 4) characters to "sample"                    
  34. ; 5) 1/2 speed printing
  35. ; 6) unidirectional printing
  36. ; 7) Changed DEFAULT concept. Now affects only the following:
  37. ;           - cancels print suppress
  38. ;           - cancels Emph. and Enh. mode
  39. ;           - cancels italicized print mode
  40. ;           - resets left margin to column 1
  41. ;           - returns to full speed printing
  42. ;           - returns to bidirectional printing
  43. ;   All others commands remain as last selected or power-up defaults
  44. ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  45. ; Updated to version 2.3  09/05/84  Steve Sanders 
  46. ;
  47. ; added "L"inefeed command and
  48. ; "P"rint sample command and upper/lower
  49. ; case conversion for letter commands
  50. ;******************************************************************
  51. ;
  52.     ORG    100H
  53. ;
  54.         JMP   START          ;JUMP INTO PROGRAM
  55. ;
  56. ; ENVIRONMENTAL EQU'S
  57. ;
  58. BDOS    EQU   5              ;SYSTEM CALL ENTRY POINT
  59. CONIN   EQU   1              ;GET KEYBOARD CHARACTER
  60. CR      EQU   0DH            ;CONTROL-M FOR CARRIAGE RETURN
  61. CONOUT  EQU   2              ;CRT OUTPUT ROUTINE
  62. CTLC    EQU   3              ;CONTROL-C TO TERMINATE
  63. ESC     EQU   1BH            ;ESCAPE CHARACTER
  64. LF      EQU   0AH            ;CONTROL-J FOR LINE FEED
  65. LIST    EQU   5              ;LIST DEVICE OUTPUT
  66. STRING  EQU   9              ;PRINT STRING ON CONSOLE
  67. TAB     EQU   09H            ;CONTROL-I FOR HORIZONTAOL TAB
  68. CLSCR   EQU   1AH         ;CLEAR SCREEN CODE        
  69. ;.....
  70. ;
  71. ;
  72. ; DATA STRINGS TO CONTROL OKIDATA PRINTER
  73. ;
  74. COMPR:  DB    29,0                   ;17.1 CPI        
  75. NORM:   DB    30,0                 ;10 CPI
  76. TWELV:    DB    28,0                   ;12 CPI         
  77.  
  78. DUBL:   DB    31,0                   ;DOUBLE WIDTH
  79. COOR:   DB    ESC,'1',0              ;CORRESPONDENCE MODE
  80. DATA:    DB    ESC,'0',0              ;DATA PROCESSING MODE
  81. ITAL:   DB    ESC,'!','/',0          ;ITALIC MODE
  82. EMPH:   DB    ESC,'T',0              ;EMPHASIZED PRINT      
  83. ENHAN:  DB    ESC,'H',0              ;ENHANCED PRINT      
  84. SIX:    DB    ESC,'6',0              ;6 LINES PER INCH        
  85. EIGHT:  DB    ESC,'8',0              ;8 LINES PER INCH
  86. LEFT:   DB    ESC,'%','C','061',0    ;1/2 INCH LEFT MARGIN OFFSET
  87. HSPEED: DB    ESC,'<',0              ;1/2 SPEED PRINTING 
  88. ONEWAY: DB    ESC,'-',0              ;ONE-WAY PRINTING
  89. STDLAN:    DB    ESC,'!','0',0         ;STANDARD LANG. SET
  90. IBMLAN:    DB    ESC,'!',31H,0          ;IBM LANG. SET
  91. ASCIIZ:    DB    ESC,'!',40H,0         ;ASCII W/SLASH ZERO   
  92. ASCII:    DB    ESC,'!',41H,0          ;ASCII W/O SLASH ZERO
  93. papero: DB    ESC,'E','1',0          ;disable paper out
  94. sample:    DB    cr,lf
  95.     DB    'abcdefghijklmnopqrstuvwxyz 0123456789#$%',cr,lf
  96.     DB    'ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789#$%',cr,lf,0
  97. line:    DB    lf,0
  98. FINISH: DB    cr,lf,lf,lf,lf,lf,lf,lf,lf,lf,lf,lf,lf,lf,lf,lf,lf,lf,lf
  99.     DB    lf,lf,lf,lf,lf,lf,'$'
  100. DEFLT:  DB    17,CR,ESC,73,CR,ESC,37,67,'001',CR,ESC
  101.         DB    62,CR,ESC,61,CR,ESC,33,42,esc,'E','0',0
  102. ;.....    
  103. ;
  104. ;
  105. SOM:    DB    CR,LF,'OKIDATA'
  106.         DB    tab,tab,tab,'       A = '
  107.     DB    '10 CPI, Normal'
  108.     DB    cr,lf,'192/193'
  109.         DB    TAB,TAB,TAB,'       B = '
  110.     DB    '12 CPI, Normal'
  111.     DB    cr,lf,'Printer'
  112.         DB    TAB,TAB,TAB,'       C = '
  113.     DB    '17.1 CPI, Normal'
  114.     DB    cr,lf,'Set-up'
  115.         DB    TAB,TAB,TAB,'       D = '
  116.     DB    'Double width Characters'
  117.     DB    cr,lf,'Utility'
  118.         DB    TAB,TAB,TAB,'       E = '
  119.     DB    'Correspondence Mode'
  120.     DB    cr,lf,'Version 3.0'
  121.         DB    TAB,TAB,'       F = '
  122.     DB    'Data Processing Mode'
  123.     DB    cr,lf,'Jim Lill 4/86'
  124.     DB    TAB,TAB,'       G = '
  125.         DB    'Italicized Mode'
  126.         DB    CR,LF,TAB,TAB,TAB,'       H = '
  127.     DB    'Emphasized Print Mode'
  128.     DB    CR,LF,TAB,TAB,TAB,'       J = '
  129.     DB    'Enhanced Print Mode'
  130.     DB    CR,LF,TAB,TAB,TAB,'       K = '
  131.     DB    '6 Lines per inch'
  132.         DB    cr,lf,TAB,TAB,'               L = '
  133.     DB    '8 lines per inch'
  134.     DB    cr,lf,'----------------------\        M = '
  135.     DB    '1/2 Inch Left Margin Offset'
  136.     DB    CR,LF,'- enables Printer      \       N = '
  137.         DB    'One-Way Printing'
  138.         DB    CR,LF,'- enables Full-Speed    \      P = '
  139.     DB    '1/2-Speed (Quiet) Printing'
  140.     DB    CR,LF,'- enables Bidirect. Prt. \     Q = '
  141.     DB    'Standard Character Set'
  142.         DB    cr,lf,'- cancels Enhanced        ===> R = '
  143.     DB    'Reset to default parameters'
  144.     DB    cr,lf,'- cancels Emphasized     /     S = '
  145.     DB    'IBM Character Set'
  146.     DB    cr,lf,'- cancels Italics       /      T = '
  147.     DB    'ASCII with Slash Zero'
  148.     DB    cr,lf,'upper/lower case okay  /       U = '
  149.     DB    'ASCII w/o Slash Zero'
  150.     DB    cr,lf,'----------------------/        V = '
  151.         DB    'Disable Paper-Out Alarm'
  152.     DB    cr,lf,tab,tab,'               W = '
  153.     DB    'Linefeed Issued to Printer'
  154.     DB    cr,lf,tab,tab,tab,'       X = '
  155.     DB    'Print Sample'
  156.         DB    cr,lf,lf,'String as many selections as you wish, end with <cr>, SELECT:'
  157.         DB    '$'
  158. ;.....
  159. ;
  160. ;
  161. START:  POP   H              ;RETURN ADDRESS TO 'CCP'
  162.         SHLD  EXIT1+1        ;STORE
  163.         LXI   SP,STACK       ;SET UP STACK
  164.         LXI   D,SOM          ;SIGNON MESSAGE
  165.         CALL  DSTRNG         ;SHOW ON THE CRT
  166. ;...
  167. ;
  168. ;
  169. SELECT: CALL  INPUT          ;GET A CHAR.
  170. ;
  171.         CPI   82             ;RESET TO DEFAULT PARAMETERS
  172.         LXI   H,DEFLT
  173.         JZ    PSTRNG
  174. ;
  175.         CPI   65 
  176.         LXI   H,NORM         ;10 CPI, NORMAL
  177.         JZ    PSTRNG
  178. ;
  179.         CPI   66 
  180.         LXI   H,TWELV        ;12 CPI, NORMAL
  181.         JZ    PSTRNG
  182.  
  183. ;
  184.         CPI   67 
  185.         LXI   H,COMPR        ;17.1 CPI, NORMAL
  186.         JZ    PSTRNG
  187. ;
  188.         CPI   68 
  189.         LXI   H,DUBL         ;DOUBLE WIDTH
  190.         JZ    PSTRNG
  191. ;
  192.         CPI   69 
  193.         LXI   H,COOR         ;CORRESPONDENCE PRINT
  194.         JZ    PSTRNG
  195. ;
  196.         CPI   70 
  197.         LXI   H,DATA         ;DATA PROC PRINT
  198.         JZ    PSTRNG
  199. ;
  200.         CPI   71 
  201.         LXI   H,ITAL         ;Italics
  202.         JZ    PSTRNG
  203. ;
  204.         CPI   72  
  205.         LXI   H,EMPH         ;EMPHASIZED PRINT
  206.         JZ    PSTRNG
  207. ;
  208.         CPI   74             
  209.         LXI   H,ENHAN        ;ENHANCED PRINT
  210.         JZ    PSTRNG
  211. ;
  212.         CPI   75 
  213.         LXI   H,SIX          ;6 LINES PER INCH
  214.         JZ    PSTRNG
  215. ;
  216.         CPI   76 
  217.         LXI   H,EIGHT        ;8 LINES PER INCH
  218.         JZ    PSTRNG
  219. ;
  220.     cpi   77             ;LEFT MARGIN
  221.     lxi   h,LEFT
  222.     jz    PSTRNG
  223. ;
  224.     CPI   80 
  225.         LXI   H,HSPEED          ; HALF SPEED
  226.         JZ    PSTRNG
  227. ;
  228.     CPI   78
  229.     LXI   H,ONEWAY            ;ONE WAY PRINTING
  230.         JZ    PSTRNG
  231. ;
  232.     cpi   86
  233.         lxi   h,papero        ;paper-out disable
  234.         jz    pstrng
  235. ;
  236.     CPI   87 
  237.     LXI   H,LINE            ;LINEFEED     
  238.     JZ    PSTRNG
  239. ;
  240.     cpi   88         ; print sample
  241.     lxi   h,sample
  242.     jz    PSTRNG
  243. ;
  244.     CPI   81      
  245.     LXI   H,STDLAN      ;STD CHAR SET
  246.     JZ    PSTRNG
  247. ;
  248.     CPI   83
  249.     LXI   H,IBMLAN          ;IBM CHAR SET
  250.     JZ    PSTRNG
  251. ;
  252.     CPI   84
  253.     LXI   H,ASCIIZ            ;WITH SLASH ZERO
  254.     JZ    PSTRNG    
  255. ;
  256.     CPI   85
  257.     LXI   H,ASCII           ;W/O SLASH
  258.     JZ    PSTRNG
  259. ;
  260.     JNZ    SELECT         ;IF NONE OF THESE, ASK AGAIN
  261. ;.....
  262. ;
  263. ;
  264. ;
  265. EXIT:   LXI   D,FINISH       ;TURN UP SOME EXTRA LINES
  266.         CALL  DSTRNG         ;DISPLAY ON THE CRT
  267. ;
  268. EXIT1:  JMP   0              ;FILLED BY 'START' FOR RETURN TO 'CCP'
  269. ;.....
  270. ;
  271. ;
  272. ;
  273. INPUT:  MVI   C,CONIN        ;KEYBOARD ROUTINE
  274.         CALL  BDOS
  275.         ANI   7FH            ;STRIP AWAY ANY PARITY
  276.     CPI   90         ;IS ENTRY LOWER CASE
  277.     JC    NOT$LC         ;JUMP IF INPUT NOT LOWER CASE
  278.     SBI   32             ;SUBTRACT 32 TO CONVERT LC TO UC
  279. NOT$LC: CPI   CTLC           ;CONTROL-C?
  280.         JZ    EXIT           ;IF YES, ALL FINISHED
  281.         CPI   CR             ;CONTROL-M FOR RETURN?
  282.         JZ    EXIT           ;IF YES, ALL FINISHED
  283.         RET
  284. ;.....
  285. ;
  286. ;
  287. DSTRNG: MVI   C,STRING       ;CONSOLE STRING ROUTINE
  288.         JMP   BDOS           ;SEND TO THE CRT
  289. ;.....
  290. ;
  291. ;
  292. PSTRNG: MOV   A,M            ;GET THE CHARACTER IN THE STRING
  293.         ORA   A              ;SEE IF FINISHED YET
  294.         JZ    SELECT         ;GET NEW ANSWER IF ZERO
  295. ;
  296.         PUSH  H              ;SAVE THE ADDRESS IN THE STRING
  297.         MVI   C,LIST         ;PRINTER ROUTINE
  298.         MOV   E,A            ;PUT THE CHAR. INTO 'E' REG.
  299.         CALL  BDOS           ;SEND TO THE PRINTER
  300.         POP   H              ;BACK TO THE STRING ADDRESS
  301.         INX   H              ;NEXT LOCATION
  302.         JMP   PSTRNG         ;DO THE NEXT ONE
  303. ;.....
  304. ;
  305. ;
  306.     DS    20H            ;ALLOW ROOM FOR STACK
  307. ;
  308. STACK    DS    0
  309. ;
  310.     END
  311.