home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / assemblr / library / asm_kit / setoki.asm < prev    next >
Assembly Source File  |  1984-03-04  |  5KB  |  146 lines

  1.         TITLE   SET_OKI PRINTER MODES
  2.         PAGE    80,132
  3.  
  4. ; THIS PROGRAM SENDS CONTROL CHARACTERS TO AN OKIDATA MICROLINE 92
  5. ; PRINTER CONNECTED AS LPT1.
  6. ;
  7. ; THE USER IS PRESENTED WITH A MENU OF 16 ITEMS. ANY NUMBER OF
  8. ; CONTROL FUNCTIONS MAY BE PERFORMED.
  9. ;
  10. ; DOS 2.00 WITH ANSI.SYS IS REQUIRED.
  11.  
  12. CSEG    SEGMENT PARA PUBLIC 'CODE'
  13.         ORG     100H
  14.  
  15. SET_OKI PROC    FAR
  16.         ASSUME  CS:CSEG,DS:CSEG,ES:NOTHING
  17. SET:    PUSH    DS
  18.         XOR     AX,AX   ;SET RETURN CODE
  19.         PUSH    AX
  20.         PUSH    CS      ;SET DATA SEG
  21.         POP     DS
  22.  
  23.         MOV     DX,OFFSET TITLES      ;START-UP MESSAGE
  24.         MOV     AH,9
  25.         INT     21H
  26.  
  27. PROMPT: MOV     AH,8  pe"w*:hr AAL NNO ECHO
  28.         INT     21H     ; CALL DOS TO DO IT
  29.         CMP     AL,0    ;EXTENDED CODE?
  30.         JE      ERROR   ;YES, INVALID
  31.         CMP     AL,27   ; OR ESCAPE?
  32.         JE      DONE
  33.  
  34.         MOV     WHAT,AL
  35.         CMP     AL,97   ;IS IT LOWER CASE
  36.         JL      UPPER   ; NO, SEE IF LETTER
  37.         SUB     AL,97   ;FORM OFFSET
  38.         ADD     AL,10   ; ADJUST FOR LETTER CODE
  39.         JMP     LETTER
  40.  
  41. UPPER:  CMP     AL,65   ;IS IT A LETTER?
  42.         JL      NUMBER  ; NO, ASSUME NUMBER
  43.         SUB     AL,65   ;GET OFFSET
  44.         ADD     AL,10
  45.         JMP     LETTER
  46.  
  47. NUMBER: CMP     AL,57   ;VALID NUMBER?
  48.         JA      ERROR   ; NOPE
  49.         SUB     AL,48   ;TO BINARY VALUE
  50.         JS      ERROR   ;IF LESS THAN ZERO
  51. LETTER: MOV     SI,AX   ;SAVE BINARY CODE
  52.         CMP     AL,15   ;EXCEEDED MENU LIST?
  53.         JA      ERROR   ;YES, OOPS
  54.         ADD     AL,AL   ;TIMES 2 FOR INDEXING
  55.         MOV     BL,AL   ;COPY OFFSET
  56.         SUB     BH,BH   ;CLEAR HI-BYTE
  57.         MOV     CX,WORD PTR CMDS[BX]
  58.  
  59.         MOV     AX,SI   ;GET CODE BACK
  60.         MUL     TEXT_SIZE
  61.         MOV     BX,AX   ; AS INDEX TO ATTRIBUTE
  62.         MOV     TEXT+2[BX],'1'  ; AND HI-LITE CHOSEN TEXT
  63.         MOV     TEXT+39[BX],'$' ; AND PRINT STOPPER
  64.  
  65.         MOV     DL,CL
  66.         MOV     AH,5    ;PRINT CHAR IN DL
  67.         INT     21H
  68.  
  69.         MOV     DL,CH
  70.         MOV     AH,5    ;PRINT CHAR IN DL
  71.         INT     21H
  72.  
  73.         MOV     DX,OFFSET WORD PTR TEXT
  74.         ADD     DX,BX   ;HI-LITE SELECTED OPTION
  75.         MOV     AH,9
  76.         INT     21H
  77.         MOV     DX,OFFSET ANSWER
  78.         MOV     AH,9    ;CONFIRM SELECTION
  79.         INT     21H
  80.         JMP     PROMPT  ;GET ANOTHER SELECTION
  81.  
  82. ERROR:  MOV     AH,9
  83.         MOV     DX,OFFSET ERR_MSG       ;INVALID ENTRY
  84.         INT     21H
  85.         JMP     PROMPT
  86.  
  87. DONE:   MOV     AH,9
  88.         MOV     DX,OFFSET END_MSG       ;ALL SET
  89.         INT     21H
  90.         RET             ;RETURN TO DOS
  91.         PAGE
  92. TEXT_SIZE DB    40      ;LENGTH OF SELECTION ITEMS
  93. TITLES  DB      27,'[2J',27,'[=2H',27,'[0M'
  94. VERSION DB      'SET OKIDATA(R) PRINTER - VER. 1.0'
  95.         DB      27,'[1;41H (C) 1984 VERNON D. BUERG'
  96. ;        EACH ENTRY MUST BE 40 BYTES AND IN NUMBER SEQUENCE
  97. TEXT    DB      27,'[0M',27,'[3;1H0 = SIX (6) LPI               ';2754
  98.         DB      27,'[0M',27,'[4;1H1 = PICA 10 CPI               ';3000
  99.         DB      27,'[0M',27,'[5;1H2 = ELITE 12 CPI              ';2800
  100.         DB      27,'[0M',27,'[6;1H3 = CONDENSED 17 CPI          ';2900
  101.         DB      27,'[0M',27,'[7;1H4 = CORRESPONDENCE QUALITY    ';2749
  102.         DB      27,'[0M',27,'[8;1H5 = EMPHASIZED PRINT          ';2784
  103.         DB      27,'[0M',27,'[9;1H6 = STOP ENHANCED/EMPHASIZE   ';2773
  104.         DB      27,'[0M',27,'[10;1H7 = UNDERLINED               ';2767
  105.         DB      27,'[0M',27,'[3;41H8 = EIGHT (8) LPI            ';2756
  106.         DB      27,'[0M',27,'[4;41H9 = DOUBLE PICA, 5 CPI       ';3031
  107.         DB      27,'[0M',27,'[5;41HA = DOUBLE ELITE, 6 CPI      ';2831
  108.         DB      27,'[0M',27,'[6;41HB = DOUBLE CONDENSED, 8.5CPI ';2931
  109.         DB      27,'[0M',27,'[7;41HC = DATA PROCESSING QUALITY  ';2748
  110.         DB      27,'[0M',27,'[8;41HD = ENHANCED PRINT           ';2772
  111.         DB      27,'[0M',27,'[9;41HE = FORM FEED                ';1200
  112.         DB      27,'[0M',27,'[10;41HF = STOP UNDERLINING        ';2768
  113.  
  114. MSG     DB      27,'[14;18HENTER SELECTION =>     '
  115.         DB      27,'[17;18HESCAPE TO EXIT'
  116.         DB      27,'[14;37H$'
  117.  
  118. ANSWER  DB      27,'[0M',27,'[15;18H'
  119. WHAT    DB      0,' HAS BEEN PROCESSED',27,'[14;37H $'
  120.  
  121. ERR_MSG DB      07,27,'[1M',27,'[15;18HINVALID ENTRY           '
  122.         DB      27,'[0M',27,'[14;37H $'
  123.  
  124. END_MSG DB      27,'[19;20H',27,'[1M ALL SET',27,'[0M$'
  125.  
  126. CMDS    DB      27,54 ;0        TWO BYTE DECIMAL CODES
  127.         DB      30,00 ;1        REFER TO USER'S MANUAL
  128.         DB      28,00 ;2
  129.         DB      29,00 ;3
  130.         DB      27,49 ;4
  131.         DB      27,84 ;5
  132.         DB      27,73 ;6
  133.         DB      27,67 ;7
  134.         DB      27,56 ;8
  135.         DB      30,31 ;9
  136.         DB      28,31 ;A
  137.         DB      29,31 ;B
  138.         DB      27,48 ;C
  139.         DB      27,72 ;D
  140.         DB      12,00 ;E
  141.         DB      27,68 ;F
  142.  
  143. SET_OKI ENDP
  144. CSEG    ENDS
  145.         END     SET
  146.