home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / database / techs.zip / TECH20.ARC / PRNTCHK.ASM next >
Assembly Source File  |  1985-10-30  |  2KB  |  152 lines

  1.     .LFCOND
  2.     PAGE    60,132
  3.     D3DR    EQU    1
  4.     COM    EQU    0
  5.     TRUE    EQU    1
  6.     FALSE    EQU    0
  7. ;**************************************
  8. CODESEG SEGMENT    BYTE PUBLIC 'CODE'
  9.     ASSUME CS:CODESEG,ES:CODESEG
  10. ;--------------------------------------
  11. PRNTCHK    PROC    FAR
  12.     IF    COM
  13.       ORG    100H
  14.     ENDIF
  15. START:    JMP    NEXT_STEP
  16. ;
  17. MESS0   DB      'PRINTER OUT OF PAPER',0DH,0AH,'$'
  18. MESS1    DB    'PRINTER OFF LINE - PLEASE ADJUST',0DH,0AH,'$'
  19. MESS2    DB    'PRINTER NOT TURNED ON - PLEASE TURN IT ON',0DH,0AH,'$'
  20. MESS3    DB    'PRINTER AVAILABLE FOR PRINTING',0DH,0AH,'$'
  21. MESS4   DB    'PRESS ANY KEY TO CONTINUE',0DH,0AH,'$'
  22. OK    DB    ?
  23. ;
  24. NEXT_STEP:
  25.     PUSH    AX
  26.     PUSH    BX
  27.     PUSH    DS
  28.     PUSH    ES
  29.     PUSH    CS
  30.     POP    ES
  31.     MOV    AX,40H
  32.     MOV    DS,AX
  33.     MOV    SI,8
  34.     MOV    DX,[SI]
  35.     INC    DX
  36.     IN    AL,DX
  37.     AND    AL,0F8H
  38.     CMP    AL,0D8H
  39.     JNE    OUT_OF_PAPER
  40.       MOV    ES:OK,TRUE
  41.     IF    COM
  42.       MOV    DX,OFFSET MESS3
  43.       CALL    PRINTMESS
  44.     ENDIF
  45.     JMP    SHORT EXIT
  46. OUT_OF_PAPER:
  47.     CMP    AL,0E8H
  48.     JNE    OFF_LINE
  49.     MOV    ES:OK,FALSE
  50.     IF    COM
  51.       MOV    DX,OFFSET MESS0
  52.       CALL    PRINTMESS
  53.       MOV    DX,OFFSET MESS4
  54.       CALL    PRINTMESS
  55.       CALL    CRLF
  56.       POP    ES
  57.       POP    DS
  58.       POP    BX
  59.       POP    AX
  60.       CALL    WAIT
  61.       JMP    NEXT_STEP
  62.     ENDIF
  63.     JMP    SHORT EXIT
  64. OFF_LINE:
  65.     CMP    AL,0C8H
  66.     JNE    TURNED_OFF
  67.     MOV    ES:OK,FALSE
  68.     IF    COM
  69.       MOV    DX,OFFSET MESS1
  70.       CALL    PRINTMESS
  71.       MOV    DX,OFFSET MESS4
  72.       CALL  PRINTMESS
  73.       CALL    CRLF
  74.       POP    ES
  75.       POP    DS
  76.       POP    BX
  77.       POP    AX
  78.       CALL    WAIT
  79.       JMP    NEXT_STEP
  80.     ENDIF
  81.     JMP    SHORT EXIT
  82. TURNED_OFF:
  83.     MOV    ES:OK,FALSE
  84.     IF    COM
  85.       MOV    DX,OFFSET MESS2
  86.       CALL    PRINTMESS
  87.       MOV     DX,OFFSET MESS4
  88.       CALL    PRINTMESS
  89.       CALL    CRLF
  90.       POP    ES
  91.       POP    DS
  92.       POP    BX
  93.       POP     AX
  94.       CALL    WAIT
  95.       JMP    NEXT_STEP
  96.     ENDIF
  97.  
  98. EXIT:    POP    ES
  99.          POP    DS
  100.     POP    BX
  101.     IF     D3DR
  102.       MOV    AL,ES:OK
  103.       MOV    BYTE PTR [BX],AL
  104.     ENDIF
  105.     POP    AX
  106.     IF    COM
  107.       INT    20H
  108.     ELSE
  109.       RET
  110.     ENDIF
  111. ;
  112. PRNTCHK    ENDP
  113. ;----------------------------------------
  114. CRLF    PROC    NEAR
  115.     PUSH    AX
  116.     PUSH    DX
  117.     MOV    DL,0DH
  118.     MOV    AH,2
  119.     INT    21H
  120.     MOV    DL,0AH
  121.     MOV    AH,2
  122.     INT    21H
  123.     POP    DX
  124.     POP    AX
  125.     RET
  126. CRLF    ENDP
  127. ;----------------------------------------
  128. PRINTMESS PROC    NEAR
  129.     PUSH    AX
  130.     PUSH    DS
  131.     MOV    AX,ES
  132.     MOV    DS,AX
  133.     XOR    AX,AX
  134.     MOV    AH,9
  135.     INT    21H
  136.     POP    DS
  137.     POP    AX
  138.     RET
  139. PRINTMESS ENDP
  140. ;----------------------------------------
  141. WAIT    PROC    NEAR
  142.     PUSH    AX
  143.     MOV    AH,7
  144.     INT    21H
  145.     POP    AX
  146.     RET
  147. WAIT    ENDP
  148. ;----------------------------------------
  149. CODESEG    ENDS
  150. ;******************************************
  151.     END    START
  152.