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

  1. NAME     CANCEL_MAIN
  2. PAGE     75,132
  3. TITLE    CANCEL.ASM -- PROCEDURE TO CANCEL PRN SETTINGS
  4. ;
  5. ; NO STACK SEGMENT
  6. ;
  7. ;
  8. DISPLAY  MACRO     MESSAGE             ;DISPLAY A MESSAGE TO STD OUTPUT
  9.          MOV       AH,09
  10.          MOV       DX,OFFSET MESSAGE
  11.          INT       21H                 ;DOS SERVICE FOR DISPLAY
  12.          ENDM
  13. ;
  14. WORKAREA SEGMENT PARA PUBLIC 'DATA'
  15. MSG      DB        'SYSTEM:  Intervention required on LPT1$',10,13
  16. INFO     DB        10,13,'LPT1:  Cancelled$',10,13
  17. ROWCOL   DW        ?                   ;SAVE ROW AND COLUMN OF CURSOR
  18. CMDLINE  DB        24,27,'2',27,'8',27,'<',27,'O',7,10
  19. WORKAREA ENDS
  20. ;
  21. ;
  22. CANCEL_CODE SEGMENT PARA PUBLIC 'CODE'
  23.          PUBLIC    START
  24. START    PROC      FAR
  25.          ASSUME    CS:CANCEL_CODE,DS:WORKAREA
  26.          PUSH      DS
  27.          SUB       AX,AX
  28.          PUSH      AX                  ;RETURN CODES ON STACK
  29.          CLI                           ;DISABLE INTERRUPTS
  30.          MOV       AX,WORKAREA         ;GET THE DATA SEGMENT
  31.          MOV       DS,AX               ;AND MOVE IN INTO REGISTER
  32.          STI
  33.          CALL      B10TST              ;TEST PRN STATS
  34.          CALL      C10PRT              ;PRINT THE COMMAND LINE
  35.          RET
  36. START    ENDP
  37. ;
  38. B10TST   PROC      NEAR                ;LOCAL PROCS ARE NEAR BY
  39.          MOV       AH,03               ;SET OLD CURSOR POSITION
  40.          MOV       BH,00
  41.          INT       10H                 ;READ CURSOR PSN
  42.          MOV       ROWCOL,DX        ;SAVE IT
  43. B20:
  44.          MOV       AH,02
  45.          MOV       DX,00               ;TEST PRINTER STATUS HERE
  46.          INT       17H
  47.          TEST      AH,00101001B        ;SEE IF READY OR NOT
  48.          JZ        B30                 ;NO MESSAGE AND RESCAN
  49.          CALL      E10MSG              ;NOTIFY OPERATOR TO FIX PRN
  50.          JMP       B20
  51. B30:
  52.          RET       ;FINISHED, EXIT
  53. B10TST   ENDP
  54. ;
  55. C10PRT   PROC      NEAR
  56.          LEA       SI,CMDLINE       ;GET ADDR OF COMMAND LINE
  57.          MOV       CX,11               ;NUMBER OF BYTES IN COMMAND
  58.          CALL      D10OUT              ;PRINT THE COMMAND TO PRINT CTRLR
  59.          RET
  60. C10PRT   ENDP
  61. ;
  62. D10OUT   PROC      NEAR
  63.          MOV       DX,0000
  64. D20:
  65.          MOV       AH,00
  66.          MOV       AL,[SI]
  67.          INT       17H
  68.          INC       SI
  69.          LOOP      D20
  70.          DISPLAY   INFO
  71.          RET
  72. D10OUT   ENDP
  73. ;
  74. E10MSG   PROC      NEAR
  75.          MOV       AH,02               ;REQUEST DISPLAY SERVICE
  76.          MOV       BH,00               ;SET CURSOR TO OLD PLACE
  77.          MOV       DX,ROWCOL           ;MOVE SETTING INTO DX REG
  78.          INT       10H                 ;BIOS FOR SERVICE
  79.          LEA       DX,MSG              ;GET THE ADDR
  80.          MOV       AH,09H              ;SELECT FUNCTION = DISPLAY ON MONITOR
  81.          INT       21H
  82.          RET
  83. E10MSG   ENDP
  84. ;
  85. CANCEL_CODE ENDS
  86.          END       START
  87.