如何确保打印前自动联机

Author: 辽宁 王红军 谢玉芬 Date: 1996-09-27

        ;PRNON.ASM
        CODE SEGMENT
        PROG PROC FAR   ;定义远过程
        ASSUME CS:CODE,DS:CODE,SS:CODE
        PUSH DS   ;保存重要寄存器
        PUSH DX
        PUSH AX
        MOV DX,00H   ;设置打印口为LPT1
        MOV AH,01H   ;初始化打印机
        INT 17H   ;功能调用
        POP AX   ;恢复原寄存器内容
        POP DX
        POP DS
        RETF   ;远程返回
        PROG ENDP
        CODE ENDS
        END PROG
        把上面的汇编程序经过编译、连接,再用EXE2BIN转换为二进制文件PRNON.BIN。由于程序很小,所以也可以通过DEBUG的小汇编A命令直接输入程序的主体部分,也能形成PRNON.BIN二进制文件。这样就可以在FOXBASE或FOXPRO等系统调用了。
        ……
        LOAD PRNON   &&装载二进制文件
        CALL PRNON   &&调用二进制文件
        KEY=INKEY(5)   &&因初始化时打印头需动作,故此时需几秒钟的延迟
        SET PRINT ON   &&联机
        SET DEVICE TO PRINT   &&磁盘内容输出到打印机
        ……
        将上述几条命令加入打印程序的前面,无论打印机的当前状态如何,都能够确保在打印前自动联接打印机。它能够将打印机缓冲区中的残留数据清空,具有仿真WPS打印功能的效果。程序执行时,我们可以看到打印头从当前位置回到初始位置,并伴有复位动作声和联机信号的鸣叫声。有兴趣的读者不妨把它加到自己的程序中,同时也可以把这个功能扩展到其它语言编写的程序中,如C语言、PASCAL语言等。