谈谈打印失控悬挂状态的解决 四川省南充纺织职中 任 强 1992-09-25 一、Apple机打印卡故障 打印卡由EPROM控制电路(2716)、打印机状态检测电路(74LS251)和数据输出电路(由74LS10与74LS00组成R-触发器,74LS373)组成。当主机DEVSEn为低电位,逻辑电路工作($C090-$C09F),而I/OS-ELn低就能使打印卡的2716($C100~$C1FF),在I/OTROBE为低时,通过74LS08选通扩充ROM($C800~$CFFF)。那么联机悬挂时,可先强行退出死锁态,键入下列程序,并运行,若不断打印“*”号(死循环),则可断定是卡上的2K EPROM芯片M2716有故障, 5 REM program No1 10 FOR I=1 TO 13 20 READ A:POKE 767 + I,A 30 NEXT I 40 CALL 768 50 DATA 173,193,193,48,251,169,42,141,144,192,76,00,03 使其中的打印程序无法工作;反之则说明其它故障还隐含着,可用逻辑笔探一下74LS74第八脚电位,若高则该片坏,一直处于等待状态;若低则可测74LS07的12脚,若高则该片坏。反之再查74LS14第3脚(低)、第4脚(高),74LS00第3脚(低),若不正常则查相应信号和芯片;若正常则可更换74LS251,退出“假忙”,顺利接收数据。若联机出现乱跑纸或乱打印,常常应先查74LS07和74LS373(三态锁存)的状态。 二、联机状态 打印机准备好否,常以面板的READY指示灯作标志,若不亮,或与PAPER OUT红灯同时亮,则一定是未准备好。或者打印机与主机不匹配。 从电路上分析,打印机状态的检测依靠74LS251来进行,当74LS14在接到I/OSELn低有效后其反门变高,致使74LS10的12脚低,在寻址$CnC4(n为槽口号)时,74LS125的D4脚数据输入端选通,从而BUSY信号与数据总线MD7连通。根据这一原理,用逻辑笔测试打印卡的ACK信号线,查74LS14的第三脚,若高则说明打印机本身有故障,电路无法接收信号。 进一步推下去,当译码至$CnC0时,ACK信号经74LS14、74CS251直接与MD7连接,主机也就可以检测到打印机的ACK状态,即打印机接收完数据后向主机的答信号。在打印驱动程序中还要判查BUSY信号,以了解打印机工作状态,它与STROBE(主机呼叫打印机$C090)和ACK(打印机回答主机,$Cnc0)不同,是高有效,它是寻址选用$CnC1,那么可以通过这个软地址检测到MD7数据线状态(“1”为“忙”,拒绝接收主机发来的数据),也就是说我们可直接查询$CnC1(当n=1时,地址为49601)的值。在中文状态,该单元为0表示打印状态准备好,否则为128;西文状态下,为32表示准备好,否则为160。 此外,破坏汉字打印失控(出现悬挂、跑纸、怪字等现象)也与汉字管理程序的设计失误有关,由于汉字打印管理使用了与内存第三六相撞的$0393~$0398,使其中的汉字打印控制值受到破坏或覆盖,而这一动作的标志字是$047B(1147),但若它为0则系统可做一次控制单元初始化,这一点对我们太重要了! 下面用这两个方法写一个程序例子,可供您作联机前的程序头。(100语句以后主程序) 5 REM Mprogram No2 10 HOME:VTAB 7:INPUT “Test parint?(y/n)”;R $:IF R $<>"Y" THEN 100 20 SPEED=255:POKE 1147,0:PRINT CHR $ (4)" PR #3":PRINT:VTAB 4:PRINT " " 30 IF PEEK (49601) <>0 THEN SPEED=150:PRINT" 开启打印":CALL-198:CALL -1052: SPEED=255:PRINT…:GOTO 20 40 POKE 1147,0:POKE 915,90:POKE 1659,1:PRINT" 测试打印" 50 POKE 915,76:POKE 1659,0 100 REM 主程序 如果读者严格按此格式录入程序,不仅能彻底避免打印失控或因联机状态不好而造成数据丢失等现象,而且还能看到用倍密度打印(POKE 915,90)的字样和提示你开启打印机以及正在测试打印机的巧妙屏显。