home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / library / dos / asm_sour / setp.asm < prev    next >
Assembly Source File  |  1984-08-06  |  3KB  |  89 lines

  1. NAME SETP_MAIN
  2. PAGE 75,132
  3. TITLE SETP.ASM -- PROCEDURE TO SET PAGE LINES AND PERFORATION SKIP
  4. ;
  5. ;
  6. ;        NO STACK SEGMENT
  7. ;
  8. DISPLAY  MACRO     MESSAGE
  9.          MOV       AH,09               ;REQUEST DISPLAY
  10.          MOV       DX,OFFSET MESSAGE   ;GET MESSAGE
  11.          INT       21H                 ;DOS SERVICE TO PRINT
  12.     ENDM
  13. ;
  14. WORKAREA SEGMENT   PARA PUBLIC 'DATA'
  15. msg      db        'SYSTEM:  Intervention required on LPT1 $'
  16. info1    db        10,13,'LPT1:  Page length set for 11 inches$'
  17. info2    db        10,13,'LPT1:  Perforation skip set to 10 lines$'
  18. info3    db        10,13,'LPT1:  Line printer ready',10,13,'$'
  19. ROWCOL   DW        ?                   ;ROW AND COLUMN FOR CURSOR
  20. CMDLINE  DB        24,27,'9',27,'C',00,11,27,'N',12,07,10
  21. WORKAREA ENDS
  22. ;
  23. SETP_CODE SEGMENT PARA PUBLIC 'CODE'
  24. BEGIN    PROC      FAR                 ;FAR AWAY FROM DOS 2.10
  25.          ASSUME    CS:SETP_CODE,DS:WORKAREA
  26.          PUSH      DS
  27.          SUB       AX,AX
  28.          PUSH      AX
  29.     CLI        ;DISABLE INTERRUPTS
  30.     MOV    AX,WORKAREA    ;GET THE DATA SEGMENT
  31.     MOV    DS,AX    ;SAVE IT
  32.     STI        ;RESTART INTERRUPTS
  33.          CALL      B10TST              ;SEE IF PRINTER IS READY
  34.          CALL      C10PRT              ;CALL PRINT ROUTINE
  35.          RET
  36. BEGIN    ENDP                          ;END OF MAIN CODE
  37. ;
  38. B10TST   PROC      NEAR                ;LOCAL PROCS ARE NEAR BY
  39.          MOV       AH,03               ;FETCH CURSOR POSITION AND SAVE IT
  40.          MOV       BH,00
  41.          INT       10H                 ;BIOS FOR CURSOR SERVICE
  42.          MOV       ROWCOL,DX           ;SAVE THE RETURNED VALUE
  43. B20:
  44.          MOV       AH,02               ;TEST PRINTER STATUS
  45.          MOV       DX,00               ;
  46.          INT       17H                 ;BIOS SERVICE TO TEST DEVICE
  47.          TEST      AH,00101001B        ;SEE IF PRINTER READY ELSE MESSAGE
  48.          JZ        B30                 ;NO - MESSAGE AND EXIT
  49.          CALL      E10MSG              ;PROVIDE MESSAGE
  50.          JMP       B20
  51. B30:
  52.          RET
  53. B10TST   ENDP
  54. ;
  55. C10PRT   PROC      NEAR                ;PROCEDURE TO PRINT
  56.          LEA       SI,CMDLINE          ;GET THE PRINTER COMMANDS
  57.          MOV       CX,11               ;NUMBER OF BYTES TO PRINT
  58.          CALL      D10OUT              ;DISPLAY THE LINE
  59.          RET
  60. C10PRT   ENDP
  61. ;
  62. D10OUT   PROC      NEAR                ;PRINT MESSAGE
  63.          MOV       DX,0000             ;PRINTER #0
  64. D20:
  65.          MOV       AH,00               ;REQUEST PRINT
  66.          MOV       AL,[SI]             ;GET CHAR FROM LINE
  67.          INT       17H                 ;BIOS TO PRINT SERVICE
  68.          INC       SI
  69.          LOOP      D20
  70.          DISPLAY   INFO1
  71.          DISPLAY   INFO2
  72.          DISPLAY   INFO3
  73.          RET
  74. D10OUT   ENDP
  75. ;
  76. E10MSG   PROC      NEAR                ;DISPLAY A MESSAGE
  77.          MOV       AH,02               ;REQUEST SET CURSOR FUNCTION
  78.          MOV       BH,00               ;
  79.          MOV       DX,ROWCOL           ;OLD POSITION SAVED
  80.          INT       10H                 ;BIOS FOR DISPLAY SERVICE
  81.          LEA       DX,MSG              ;GET ERROR MESSAGE
  82.          MOV       AH,09H
  83.          INT       21H
  84.          RET
  85. E10MSG   ENDP
  86. ;
  87. SETP_CODE ENDS
  88.          END       BEGIN
  89.