driver, printer and is-dos

ZXNet echo conference «code.zx»

From Dima Boyko To All 18 February 2001

Khayushki, All! In connection with writing a printer driver for IS DOS, a lot of questions arose. I’ll immediately say that my printer (ms 6304) has an IRPR interface (this is not IRPRM and not Centronix) converted to Centronix. Those. has TTL inputs and has direct data signals. So question one: Why does the printing procedure not work like this: LL8079 LD E,A BUSY__EI LD C,#09 RST #10 JR Z,LL808B LD C,#07 RST #10 CP#10; "SS+A" JR Z,EXIT__ CP#16; "CS+BS=BREAK" JR Z,EXIT__ LL808B DI IN A,(#7B) R.L.A. JR C,BUSY__ LD A,E OUT(#FB),A; data output. OUT(#7B),A; strobe at "1" LD A,#FF L1 DEC A JR NZ,L1 LD A,E L1 IN A,(#7B) ; read the printer status RLA ; check if there is bisi JR C,GOTO_ ; if there is any, we print further ; EI ; LD C,#07 ; RST #10 ; CP#10; "SS+A" ; JR Z,EXIT__ ; CP#16; "CS+BS=BREAK" ; JR Z,EXIT__ ; D.I. JR L1; if not, wait until it appears GOTO_LD A,E OUT(#FB),A EI INIT_I RET although the printer operation algorithm is directly implemented here. And this works in my printer under tr dos. But a simplified version of the interface implementation works here: LL8079 LD E,A BUSY__EILD C,#09 RST #10 JR Z,LL808B LD C,#07 RST #10 CP#10; "SS+A" JR Z,EXIT__ CP#16; "CS+BS=BREAK" JR Z,EXIT__ LL808B DI IN A,(#7B) R.L.A. JR C,BUSY__ LD A,E OUT(#FB),A; data output. OUT(#7B),A; strobe in "1" or zero I don't remember LD A,#7F ; delay L1 DEC A JR NZ,L1 LD A,E OUT(#FB),A EI INIT_I RET why so? With the best, Dima Boyko.

From Valerij Kozhevnikoff To Dima Boyko 25 February 2001

Hello, Dima! 18 Feb 01 09:11, Dima Boyko -> All: DB> OUT (#FB),A; data output. DB> OUT (#7B),A; strobe at "1" DB> LD A,#FF DB> L1 DEC A DB> JR NZ,L1 DB> although the printer operation algorithm is directly implemented here. And this works in DB> to my printer under the printer. But a simplified version works here DB> interface implementations: DB> LD A,E DB> OUT (#FB),A; data output. DB> OUT (#7B),A; strobe in "1" or zero I don't remember The printer is gated to zero. DB> LD A,#7F ; delay DB> L1 DEC A DB> JR NZ,L1 DB> why is this? Uyo... According to the docks, the duration of the strobe should be 10-20 cycles, but how many do you have? And what do you want after that? The printer's brain is probably jammed. LD E,A WAIT CALL #1F54 CCF RET C IN A,(#7B) R.L.A. JR C,WAIT NOP NOP NOP LD A,E OUT(#FB),A OUT(#7B),A NOP NOPNOP NOP OUT(#FB),A AND A RET *Only this way, and no other way!* To interrogate bizyu after the strobe - what for, because there is still no ACK from the printer wound up /STROBE ───────┬---┬──────────────────────── │ │ └───┘ ┌───────────────┐ │ │ BUSY ────────┴---------------┴─────────── /ACK ───────────────────────┬------┬───── │ │ └──────┘ DATA ─────-------------------──────────── // / /\n ─────-------------------──────────── WBR, Jason. [Team Obituary][Team Friday 13th][Team Evil Maniacs][Team Huge Axes]

From Valerij Kozhevnikoff To Dima Boyko 4 March 2001

Hello, Dima! 27 Feb 01 22:54, Dima Boyko -> Valerij Kozhevnikoff: VK>> Uyo... On the docks, the strobe duration should be 10-20 DB> this is in Centronix and I have IRPR - a different interface. IRPR interface is a parallel interface that differs from CENTRONIX as the polarity of the signals and the exchange protocol. In a simplified version for interface operability except for 8 information signals DATA 0-7 2 control signals are needed: - SC - source strobe, similar to the Strobe signal of the CENTRONIX interface, in a low level indicates the reliability of the data on the DATA 0-7 lines; - AC - receiver request, in state 0/1 signals whether the printer is ready/unready to receive data, i.e. similar to Busy signal CENTRONIX interface. The SC and AC signals are interconnected as follows: - SC changes state from log. 1 to log. 0 only at AC = 0, and from 0 to 1 - at AC = 1; - AC remains in log state. 1 until the SC signal changes its state from log. 0 to log. 1. Despite the differences in exchange protocols, the scheme and support program interface CENTRONIX can work with printers equipped with an interface IRPR. To do this, it is necessary to invert the information lines DATA 0-7 andbuffer the SC signal, since the IRPR requires load currents of about 40 mA. The AC signal is used instead of the Busy signal, and the SC signal is used instead of the Strobe signal. Probably like this: LD E,A WAIT CALL #1F54 CCF RET C IN A,(#7B) R.L.A. JR C,WAIT NOP NOP D.I. LD A,E OUT(#FB),A NOP OUT(#7B),A NOP NOP WAIT2 IN A,(#7B) R.L.A. JR NC,WAIT2 LD A,E OUT(#FB),A AND A EI RET [...] DB> you described Centronix (IPRM). But for me everything is different. DB> no ACK DATA inverse. The strobe is the same. And the mizzy is the same. DB> Or I don’t remember the opposite. I invert the data by hardware, maybe the bizyu too DB> - I don’t remember. So are you inverting or not? Everything depends on this. WBR, Jason. [Team Obituary][Team Friday 13th][Team Evil Maniacs][Team Huge Axes]