ZXNet эхоконференция «code.zx»


тема: driver, printer and is-dos



от: Dima Boyko
кому: All
дата: 18 Feb 2001
Х а ю ш к и, All ! В связи с написанием драйвера принтера под ис дос возникла куча вопросов. сразу оговорю что мой принтер (мс 6304) имеет ИРПР интерфейс (это не ИРПРМ и не Centronix) переделаный под центроникс. Т.е. имеет ТТL входы и имеет прямые сигналы данных. Итак вопрос первый: почему процедура вывода на печать не работает вот в таком виде: 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) RLA JR C,BUSY__ LD A,E OUT (#FB),A; вывод данных. OUT (#7B),A; стpоб в "1" LD A,#FF L1 DEC A JR NZ,L1 LD A,E L1 IN A,(#7B) ; читаем состояние принтера RLA ; проверяем нет ли бизи JR C,GOTO_ ; если есть печатаем дальше ; EI ; LD C,#07 ; RST #10 ; CP #10; "SS+A" ; JR Z,EXIT__ ; CP #16; "CS+BS=BREAK" ; JR Z,EXIT__ ; DI JR L1 ; если нет - ждем пока появится GOTO_ LD A,E OUT (#FB),A EI INIT_I RET хотя здесь напрямую реализован алгоритм работы принтера. И такое работает в моей печаталке под тр досом. Зато здесь работает упрощенный вариант реализации интерфейса: 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) RLA JR C,BUSY__ LD A,E OUT (#FB),A; вывод данных. OUT (#7B),A; стpоб в "1" или ноль я не помню LD A,#7F ; задержка L1 DEC A JR NZ,L1 LD A,E OUT (#FB),A EI INIT_I RET почему так? С наилучшими, Dima Boyko.

от: Valerij Kozhevnikoff
кому: Dima Boyko
дата: 25 Feb 2001
Здравствуй, Dima! 18 Фев 01 09:11, Dima Boyko -> All: DB> OUT (#FB),A; вывод данных. DB> OUT (#7B),A; стpоб в "1" DB> LD A,#FF DB> L1 DEC A DB> JR NZ,L1 DB> хотя здесь напрямую реализован алгоритм работы принтера. И такое работает в DB> моей печаталке под тр досом. Зато здесь работает упрощенный вариант DB> реализации интерфейса: DB> LD A,E DB> OUT (#FB),A; вывод данных. DB> OUT (#7B),A; стpоб в "1" или ноль я не помню Принтер стробируется нулем. DB> LD A,#7F ; задержка DB> L1 DEC A DB> JR NZ,L1 DB> почему так? Уйё... По докам длительность строба должна быть 10-20 тактов, а у тебя сколько? И чего ты хочешь после этого? У принтера мозги наверное клинит. LD E,A WAIT CALL #1F54 CCF RET C IN A,(#7B) RLA JR C,WAIT NOP NOP NOP LD A,E OUT (#FB),A OUT (#7B),A NOP NOP NOP NOP OUT (#FB),A AND A RET *Только так, и никак иначе!* Бизю опрашивать после строба -- нафиг, ибо ACK от принтера все равно не заведен. /STROBE ───────┬---┬──────────────────────── │ │ └───┘ ┌───────────────┐ │ │ BUSY ────────┴---------------┴─────────── /ACK ───────────────────────┬------┬───── │ │ └──────┘ DATA ─────-------------------──────────── / / / /\n ─────-------------------──────────── WBR, Jason. [Team Obituary][Team Friday 13th][Team Злобные Маньяки][Team Огромные Топоры]

от: Valerij Kozhevnikoff
кому: Dima Boyko
дата: 04 Mar 2001
Здравствуй, Dima! 27 Фев 01 22:54, Dima Boyko -> Valerij Kozhevnikoff: VK>> Уйё... По докам длительность строба должна быть 10-20 DB> это в центрониксе а у меня ИРПР - другой интерфейс. Интерфейс ИРПР - параллельный интерфейс, отличающийся от CENTRONIX как полярностью сигналов, так и протоколом обмена. В упрощенном варианте для работоспособности интерфейса кроме 8-ми информационных сигналов DATA 0-7 необходимы 2 управляющих сигнала: - SC - строб источника, аналогично сигналу Strobe интерфейса CENTRONIX, в низком уровне свидетельствует о достоверности данных на линиях DATA 0-7; - AC - запрос приемника, в состоянии 0/1 сигнализирует о готовности/неготовности принтера к приему данных, т.е. аналогичен сигналу Busy интерфейса CENTRONIX. Сигналы SC и AC связаны между собой следующим образом: - SC изменяет состояние из лог. 1 в лог. 0 только при AC = 0, а из 0 в 1 - при AC = 1; - AC остается в состоянии лог. 1 до тех пор, пока сигнал SC не изменит свое состояние из лог. 0 в лог. 1. Hесмотря на отличия в протоколах обмена, схема и программа поддержки интерфейса CENTRONIX вполне могут работать с принтерами оснащенными интерфейсом ИРПР. Для этого необходимом инвертировать информационные линии DATA 0-7 и буферизовать сигнал SC, так как в ИРПР требуются токи нагрузки около 40 мА. Сигнал AC используется вместо сигнала Busy, а сигнал SC вместо сигнала Strobe. Вот так наверное: LD E,A WAIT CALL #1F54 CCF RET C IN A,(#7B) RLA JR C,WAIT NOP NOP DI LD A,E OUT (#FB),A NOP OUT (#7B),A NOP NOP WAIT2 IN A,(#7B) RLA JR NC,WAIT2 LD A,E OUT (#FB),A AND A EI RET [...] DB> это ты Centronix(ИРПРМ) описал. А у меня все по другому. DB> нет АСК DATA инверсная. Строб такой-же. И бизя такая-же. DB> Или обратная я непомню. Я данные аппаратно инвертирую,возможно и бизю тоже DB> - не помню. Дык инвертируешь или нет? От этого все зависит. WBR, Jason. [Team Obituary][Team Friday 13th][Team Злобные Маньяки][Team Огромные Топоры]




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Игры - как написать кампьютерную игру (продолжение).
ZXNet - О почтовой системе в Internet.
От заката - О итогах конкурса по игре VIRUS-2.
От редакции - Hу, вот и третий номер...
Блиц-опрос - интервью с музыкантом и программистом Shiru Otaku.

В этот день...   8 мая