home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / database / db3util.zip / PRINTDB.EXE / lha / PRINTDB.ASM < prev    next >
Assembly Source File  |  1985-12-11  |  4KB  |  148 lines

  1.  
  2.                                                 
  3.  
  4.  
  5.     .LFCOND    
  6.     PAGE    60,132
  7.  
  8. ;
  9.     D3DR    EQU    0    ;ASSEMBLE
  10.                  ;DEVELOPERS RELEASE
  11.     COM    EQU    1
  12.     TRUE    EQU    1    ;DEFINE SYMBOLS
  13.     FALSE    EQU    0    ;for .t. and .f.
  14. ;***************************************
  15. CODESEG SEGMENT BYTE PUBLIC 'CODE'
  16.     ASSUME CS:CODESEG,ES:CODESEG
  17. ;---------------------------------------
  18. PRNTCHK    PROC    FAR
  19.     IF    COM
  20.       ORG    100H        ;ORG AT 100H
  21.     ENDIF
  22. START:    JMP    NEXT_STEP        ;SKIP PAST DATA
  23. ;
  24. MESS1    DB    'PRINTER OFF-LINE - PLEASE ADJUST',0DH,0AH,'$'
  25. MESS2    DB    'PRINTER NOT TURNED ON - PLEASE TURN IT ON',0DH,0AH,'$'
  26. MESS3    DB    'PRINTER AVAILABLE FOR PRINTING',0DH,0AH,'$'
  27. MESS4    DB    'PRESS ANY KEY TO CONTINUE',0DH,0AH,'$'
  28. OK    DB    ?
  29. ;
  30. NEXT_STEP:
  31.     PUSH    AX    ;SAVE REGISTERS
  32.     PUSH    BX
  33.     PUSH    DS
  34.     PUSH    ES
  35.     PUSH    CS
  36.     POP    ES
  37.     MOV    AX,40H    ;POINT TO SYSTEM DATA SEGMENT.
  38.     MOV    DS,AX
  39.     MOV    SI,8    ;POINT TO LPT1 PORT ADDRESS
  40.     MOV    DX,[SI]    ;LOAD IT INTO DX.
  41.     INC    DX    ;POINT TO LPT1 STATUS PORT
  42.     IN    AL,DX    ;AND READ IT.
  43.     CMP    AL,0DFH    ;PRINTER OK?
  44.     JNE    OFF_LINE    ; NO, IS IT OFF-LINE?
  45.     MOV    ES:OK,TRUE     ;PLACE .T. IN TEMPORARY VARIABLE.
  46.     IF    COM
  47.       MOV    DX,OFFSET MESS3    ;PRINT REPORT IF .COM FILE.
  48.       CALL    PRINTMESS
  49.     ENDIF
  50.     JMP    SHORT EXIT    ;RETURN TO DBASE.
  51. OFF_LINE:
  52.     CMP    AL,04FH
  53.     JNE    TURNED_OFF    ;NO, IT MUST BE TURNED OFF.
  54.     IF    COM
  55.       MOV    DX,OFFSET MESS1     ;PRINT REPORT IF .COM FILE.
  56.       CALL    PRINTMESS
  57.       MOV     DX,OFFSET MESS4
  58.       CALL    PRINTMESS
  59.       CALL     CRLF    ;SKIP LINE.
  60.       POP    ES
  61.       POP    DS
  62.       POP    BX
  63.       POP    AX
  64.       CALL    WAIT    ;WAIT FOR KEYPRESS.
  65.            JMP    NEXT_STEP     ;GO BACK AND CHECK STATUS AGAIN.
  66.     ENDIF
  67.     JMP    SHORT EXIT    ;LEAVE IF OK.
  68. TURNED_OFF:
  69.     MOV    ES:OK,FALSE    ;PLACE .F. IN TEMPORARY VARIABLE.
  70.     IF    COM
  71.       MOV    DX,OFFSET MESS2    ;PRINT REPORT IF .COM FILE
  72.       CALL    PRINTMESS
  73.       MOV    DX,OFFSET MESS4
  74.       CALL     PRINTMESS
  75.       CALL    CRLF    ;SKIP LINE
  76.       POP    ES
  77.       POP    DS
  78.       POP    BX
  79.       POP    AX
  80.       CALL    WAIT    ;WAIT FOR KEYPRESS
  81.       JMP    NEXT_STEP     ;GO BACK AND CHECK STATUS AGAIN.
  82.     ENDIF
  83. EXIT:    POP    ES    ;RESTORE RIGISTERS
  84.     POP    DS    ;NOW DS AND BX ARE POINTING
  85.     POP    BX    ;TO VARIABLE PASSED BY DBASE III.
  86.     IF    D3DR
  87.       MOV    AL,ES:OK    ;GET .T. OR .F. FROM TEMPORARY
  88.             ;VARIABLE
  89.       MOV    BYTE PTR [BX],AL     ;PLACE IT IN DBASE VARIBLE.
  90.     ENDIF
  91.     POP    AX    ;RESTORE REMAINING REGISTERS.
  92.     IF    COM
  93.       INT    20H    ;INT 20H IF .COM FILE.
  94.     ELSE
  95.       RET        ;FAR RETURN IF DEVELOPERS RELEASE.
  96.     ENDIF
  97. ;
  98. PRNTCHK    ENDP
  99. ;------------------------------------------
  100. ;           SUBROUTINES
  101. ;------------------------------------------
  102. CRLF    PROC    NEAR    ;SKIPS LINE
  103.     PUSH    AX    ;SAVE REGISTERS
  104.     PUSH    DX
  105.     MOV    DL,0DH    ;PRINT CARRIAGE RETURN
  106.     MOV    AH,2
  107.     INT    21H
  108.     MOV    DL,0AH    ;PRINT LINE FEED.
  109.     MOV    AH,2
  110.     INT    21H
  111.     POP    DX    ;RESTORE REGISTERS
  112.     POP    AX
  113.     RET        ;RETURN TO CALLER.
  114. CRLF    ENDP
  115. ;----------------------------------------------
  116. PRINTMESS PROC    NEAR    ;PRINT MESSAGE
  117.     PUSH    AX    ;SAVE REGISTERS
  118.     PUSH    DS
  119.     MOV    AX,ES    ;ES POINTS TO PRNTCHK'S
  120.     MOV    DS,AX    ;DATA.
  121.     XOR    AX,AX    ;ZERO AX.
  122.     MOV    AH,9    ;CALL DOS PRINT STRING FUNCTION
  123.     INT    21H
  124.     POP    DS    ;RESTORE REGISTERS
  125.     POP    AX
  126.     RET        ;RETURN TO CALLER
  127. PRINTMESS ENDP
  128. ;----------------------------------------------
  129. WAIT    PROC    NEAR    ;WAITS FOR KEYPRESS.
  130.             ;DOES NOT CHECK FOR CTRL-BREAK.
  131.  
  132.     PUSH    AX    ;SAVE REGISTERS
  133.     MOV    AH,1    ;CALL DOS, WAIT FOR KEYPRESS.
  134.     INT    21H    ;DON'T CHECK CTRL-BREAK FUNCTION.
  135.     POP    AX    ;RESTORE REGISTER
  136.     RET        ;RETURN TO CALLER
  137. WAIT    ENDP
  138. ;--------------------------------------------
  139. CODESEG ENDS
  140. ;*********************************************
  141.     END    START        
  142.  
  143.     
  144.  
  145.     
  146.         
  147.  
  148.