home *** CD-ROM | disk | FTP | other *** search
-
-
-
-
- .LFCOND
- PAGE 60,132
-
- ;
- D3DR EQU 0 ;ASSEMBLE
- ;DEVELOPERS RELEASE
- COM EQU 1
- TRUE EQU 1 ;DEFINE SYMBOLS
- FALSE EQU 0 ;for .t. and .f.
- ;***************************************
- CODESEG SEGMENT BYTE PUBLIC 'CODE'
- ASSUME CS:CODESEG,ES:CODESEG
- ;---------------------------------------
- PRNTCHK PROC FAR
- IF COM
- ORG 100H ;ORG AT 100H
- ENDIF
- START: JMP NEXT_STEP ;SKIP PAST DATA
- ;
- MESS1 DB 'PRINTER OFF-LINE - PLEASE ADJUST',0DH,0AH,'$'
- MESS2 DB 'PRINTER NOT TURNED ON - PLEASE TURN IT ON',0DH,0AH,'$'
- MESS3 DB 'PRINTER AVAILABLE FOR PRINTING',0DH,0AH,'$'
- MESS4 DB 'PRESS ANY KEY TO CONTINUE',0DH,0AH,'$'
- OK DB ?
- ;
- NEXT_STEP:
- PUSH AX ;SAVE REGISTERS
- PUSH BX
- PUSH DS
- PUSH ES
- PUSH CS
- POP ES
- MOV AX,40H ;POINT TO SYSTEM DATA SEGMENT.
- MOV DS,AX
- MOV SI,8 ;POINT TO LPT1 PORT ADDRESS
- MOV DX,[SI] ;LOAD IT INTO DX.
- INC DX ;POINT TO LPT1 STATUS PORT
- IN AL,DX ;AND READ IT.
- CMP AL,0DFH ;PRINTER OK?
- JNE OFF_LINE ; NO, IS IT OFF-LINE?
- MOV ES:OK,TRUE ;PLACE .T. IN TEMPORARY VARIABLE.
- IF COM
- MOV DX,OFFSET MESS3 ;PRINT REPORT IF .COM FILE.
- CALL PRINTMESS
- ENDIF
- JMP SHORT EXIT ;RETURN TO DBASE.
- OFF_LINE:
- CMP AL,04FH
- JNE TURNED_OFF ;NO, IT MUST BE TURNED OFF.
- IF COM
- MOV DX,OFFSET MESS1 ;PRINT REPORT IF .COM FILE.
- CALL PRINTMESS
- MOV DX,OFFSET MESS4
- CALL PRINTMESS
- CALL CRLF ;SKIP LINE.
- POP ES
- POP DS
- POP BX
- POP AX
- CALL WAIT ;WAIT FOR KEYPRESS.
- JMP NEXT_STEP ;GO BACK AND CHECK STATUS AGAIN.
- ENDIF
- JMP SHORT EXIT ;LEAVE IF OK.
- TURNED_OFF:
- MOV ES:OK,FALSE ;PLACE .F. IN TEMPORARY VARIABLE.
- IF COM
- MOV DX,OFFSET MESS2 ;PRINT REPORT IF .COM FILE
- CALL PRINTMESS
- MOV DX,OFFSET MESS4
- CALL PRINTMESS
- CALL CRLF ;SKIP LINE
- POP ES
- POP DS
- POP BX
- POP AX
- CALL WAIT ;WAIT FOR KEYPRESS
- JMP NEXT_STEP ;GO BACK AND CHECK STATUS AGAIN.
- ENDIF
- EXIT: POP ES ;RESTORE RIGISTERS
- POP DS ;NOW DS AND BX ARE POINTING
- POP BX ;TO VARIABLE PASSED BY DBASE III.
- IF D3DR
- MOV AL,ES:OK ;GET .T. OR .F. FROM TEMPORARY
- ;VARIABLE
- MOV BYTE PTR [BX],AL ;PLACE IT IN DBASE VARIBLE.
- ENDIF
- POP AX ;RESTORE REMAINING REGISTERS.
- IF COM
- INT 20H ;INT 20H IF .COM FILE.
- ELSE
- RET ;FAR RETURN IF DEVELOPERS RELEASE.
- ENDIF
- ;
- PRNTCHK ENDP
- ;------------------------------------------
- ; SUBROUTINES
- ;------------------------------------------
- CRLF PROC NEAR ;SKIPS LINE
- PUSH AX ;SAVE REGISTERS
- PUSH DX
- MOV DL,0DH ;PRINT CARRIAGE RETURN
- MOV AH,2
- INT 21H
- MOV DL,0AH ;PRINT LINE FEED.
- MOV AH,2
- INT 21H
- POP DX ;RESTORE REGISTERS
- POP AX
- RET ;RETURN TO CALLER.
- CRLF ENDP
- ;----------------------------------------------
- PRINTMESS PROC NEAR ;PRINT MESSAGE
- PUSH AX ;SAVE REGISTERS
- PUSH DS
- MOV AX,ES ;ES POINTS TO PRNTCHK'S
- MOV DS,AX ;DATA.
- XOR AX,AX ;ZERO AX.
- MOV AH,9 ;CALL DOS PRINT STRING FUNCTION
- INT 21H
- POP DS ;RESTORE REGISTERS
- POP AX
- RET ;RETURN TO CALLER
- PRINTMESS ENDP
- ;----------------------------------------------
- WAIT PROC NEAR ;WAITS FOR KEYPRESS.
- ;DOES NOT CHECK FOR CTRL-BREAK.
-
- PUSH AX ;SAVE REGISTERS
- MOV AH,1 ;CALL DOS, WAIT FOR KEYPRESS.
- INT 21H ;DON'T CHECK CTRL-BREAK FUNCTION.
- POP AX ;RESTORE REGISTER
- RET ;RETURN TO CALLER
- WAIT ENDP
- ;--------------------------------------------
- CODESEG ENDS
- ;*********************************************
- END START
-
-
-
-
-
-
-