ZX-Ревю 1994 №5 1993 г.

Читатель - читателю - о текстовом редакторе "ZX-WORD".


О текстовом редакторе "ZX-WORD"

© Макарычев В.П., г. Москва, 1994 г.

Год назад на рынке программ я повстречался с весьма заманчивым текстовым редактором "ZX-WORD" Редактор удобен во многих отношениях, даже его версия 1.01. В настоящее время существует уже версия 2.1 (автор Елисеев Владимир), обладающая еще большими возможностями. На мой восторг быстро прошел, когда я убедился,

что принтер в этих редакторах ничего печатать не хочет. Аналогичный результат получили и мои знакомые (думаю, многие читатели ZX-ревю тоже). В ходе работ я пришел к следующим выводам.

Редактор рассчитан на работу с интерфейсом типа CENTRONICS на базе программируемого порта КР580ВВ55. На этот порт имеются ссылки в описании редактора, на него рассчитан встроенный драйвер (INSIDE DRIVER); драйвер пользователя (USER) описан применительно к нему же. Работа с этим интерфейсом проста и надежна, рекомендации по его реализации будут приведены ниже. Но, как выяснилось обе версии редактора могут работать и с ZX-Lprint III. Соответствующий драйвер приведен в листинге 1.

Указанный драйвер должен иметь название "DRIVER". Под этим именем ZX-WORD ищет драйвер пользователя (USER) и загружает его в область буфера принтера. Имеющийся на диске одноименный файл необходимо удалить или переименовать при помощи программы INSTALL, входящей в комплект поставки ZX-WORD, или любой сервисной программы.

Здесь следует отметить следующее. Драйвер пользователя (любой) загружается в область буфера принтера, а в режиме 128К (при его наличии) там находятся системные переменные. Поэтому драйвер пользователя можно использовать только в режиме 48К. Встроенный драйвер (INSIDE) расположен внутри тела редактора, поэтому при его использовании режим печати на принтер по стыку "CENTRONICS" прекрасно работает как в 48К, так и в 128К. На мой взгляд использование стыка RS-232 для 128К машин - весьма неудобное решение. Авторы, которым придется самим разрабатывать драйверы для своих конкретных условий, должны учитывать следующие особенности.

1. Соблюдение адресов точек входа. Драйвер состоит из двух частей: программы инициализации (INIT) и собственно программы печати знака (PRINT). При инициализации, например, программируется микросхема КР580ВВ55, там же удобно разместить управляющие коды принтера для включения альтернативной кодовой таблицы. Адрес входа в INIT - 23296, адрес входа в PRINT - 23299. Поэтому обязательно наличие нулевой команды NOP по адресу 23298 (можно разместить NOP в 23296, а вход в INIT - 23297).

2. Встроенный драйвер принтера для КР580ВВ55 (INSIDE) при печати знака тестирует 5-й бит данных при чтении сигналов управления из порта PC-II. Нулевое значение бита интерпретируется как наличие сигнала ошибки, выдаваемого принтером, при этом ZX-WORD осуществляет выход из режима печати. Таким образом, если в интерфейсе этот контроль не реализован, печать на принтер будет заблокирована. Можно заменить три команды драйвера, реализующие этот контроль, на нулевые байты, но лучше подключить вывод 12 микросхемы КР580ВВ55 через резистор 2 ком к шине +5В.

3. В отличие от интерфейса ZX-Lprint III, где сигнал BUSY опрашивается по 7 разряду шины данных, ZX-WORD опрашивает его по 4 разряду. Следует обеспечить соответствие программы и схемной части. В ZX-WORD 2.1 для опроса 7 разряда следует изменить содержимое ячейки 32469 с #67 на #7F.

Все вышесказанное относится к версиям 1.01 и 2.1. В листинге 2 приведен драйвер пользователя (USER) для работы с портом КР580ВВ55 в следующей конфигурации: порт РА - для подключения KEMPSTON джойстика; порт РВ - выдача информации на принтер; порт PCI бит 1 - выдача сигнала STROBE на принтер; порт PCII - приём управляющих сигналов от принтера. Дальнейшие рассуждения касаются только версии 2.1.

4. В тексте программы имеется ошибка. По адресам 28110-28122 находятся команды, заполняющие область атрибутов 22560-23296 включительно байтом #0F, причем затрагивается и ячейка буфера принтера 23296, являющаяся точкой входа программы INIT принтерного драйвера пользователя. По этой причине следует переход по неверному адресу и "зависание" программы печати. Для устранения не достатка необходимо изменить содержимое ячейки с адресом 28111 с #E0 на #DF.

5. К сожалению, программа требует реализации в компьютере KEMPSTON джойстика. При его отсутствии (из порта с адресом 31 считывается байт #FF) происходит непрерывное перемещение курсора главного меню по опциям.

__Таблица 1.

адрес ячейки

старое значение

новое значение

33962

#27

#1F

32508

#27

#1F

32879

#67

#57

6. На мой взгляд, весьма неудачно выбраны атрибуты некоторых подменю, например, SETUP и др.: PAPER 4, INK 7. В итоге "читаема" только опция, выделенная курсором. Предлагаемая в таблице 1 замена устраняет этот недостаток.

7. Не совсем рационально выбрана регулировка интервалов печати строк. Используется команда управления принтера "ESC А" (27-65-n), выставляющая размер интервала n/72 дюйма. В редакторе n изменяется дискретно по формуле: n=8+4*z, где z = 0;1;2;3;4 для размера интервала редактора 0.5;1.0;1.5;2.0;2.5 строк соответственно. Таким образом, интервалу редактора 0.5 соответствует интервал принтера 8/72 дюйма, интервалу 1.0 - 12/72 и т.д. При этом даже при интервале 0.5 вертикальные линии из элементов псевдографики получаются прерывистыми, а интервалы 2.0 и 2.5 вообще теряют смысл (крупный интервал можно обеспечить вставкой пустой строки). Более удобно использовать команду управления принтера "ESC 3" (27-51-m), где т изменяется по формуле: m=13+4*z (z=0...4), что соответствует интервалу строк принтера m/216 дюйма. Для реализации указанной замены следует изменить содержимое ячеек, как указано в таблице 2.

Все вышесказанное ни в коей мере не снижает прекрасное впечатление от редактора. Прошу авторов ZX-WORD извинить меня за переделки программного продукта и в свою очередь хочу поблагодарить его создателей за весьма удачную работу.

адрес ячейки

старое значение

новое значение

32223

#41

#33

32224

#0C

#11

32236

#08

#0D

Таблица 2.

00010 00020 00030 00040

00050 INIT

00060

00070

00080

00090 LP1

00100

00110

00120

00130 PRINT

00140

00150

00160

00170

00180

00010 ORG

00020 JR

00030 NOP

00040 JR

00050 INIT LD

00060

00070

00080

00090

00100 OUT

00110 LD

00120 OUT

00130 RET 00140 PRINT OUT 00150 PRINT1 CALL

00160 JR

00170 IN

00180 BIT

00190 JR

00200 BIT

00210 JR

00220 XOR

00230 OUT

00240 INC

00250 NOP

00260 NOP

00270 OUT

00280 SCF

00290 CCF

00300 RET 00310 PRINTQ SCF

00320 RET

#5B00 INIT

PRINT А,3 #1601

C,A

A, (#7B) 7,A

Z,PRIN1 LP1 A, C (#7B)

ORG

JR

NOP

JR

LD

CALL

RET

LD

IN

BIT

JR

JR

LD

OUT

NOP

OUT

NOP

OUT

A

(#7B),А

(#7B),A

#5B00 INIT

PRINT A,#98

(#7F),A A,1

(#5F),A

(#3F),A #1F54 NC,PRINTQ A,(#5F) 5,A

Z,PRINTQ 7,A

NZ,PRINT1 A

(#5F),A A A

(#5F),A

Листинг 1 (для ZX-Lprint III).

АДРЕС ТРАНСЛЯЦИИ ТОЧКА ВХОДА ИНИЦИАЛИЗАЦИИ ПАУЗА ДЛЯ JR PRINT = #5B03 ТОЧКА ВХОДА ПЕЧАТИ БАЙТА

ПРОВЕРКА НА ГОТОВНОСТЬ ПРИНТЕРА BUSY ПО 7 РАЗРЯДУ

ВОЗВРАТ, ЕСЛИ НЕ ГОТОВ ВОССТАНОВИТЬ ИНФОРМАЦИИ ВЫСТАВИТЬ НА ШИНУ БАЙТ ИНФОРМАЦИИ

ВЫСТАВИТЬ STROBE В 0

ВЕРНУТЬ STROBE В 1 (завершить)

Листинг 2 (Для КР580ВВ55А).

АДРЕС ТРАНСЛЯЦИИ ТОЧКА ВХОДА ИНИЦИАЛИЗАЦИИ ПАУЗА ДЛЯ JR PRINT = #5B03 ТОЧКА ВХОДА ПЕЧАТИ БАЙТА

НАСТРОЙКА АДАПТЕРА: результат побитовой PA - ВВОД раскладки шины данных

PB - ВЫВОД упр. слова порта ВВ55

PC(0-3) - ВЫВОД в режиме 0 PC ( 0-4) - ВВОД

вывод упр. слова УСТАНОВИТЬ STROBE В 1 (исх. сост.)-LT вывод 1 по РСО (STROBE)

ВЫСТАВИТЬ БАЙТ НА ШИНУ (вывод РВ из А) ПРОВЕРКА НА BREAK ВЫХОД ПО BREAK

СЧИТАТЬ СОСТОЯНИЕ ПРИНТЕРА (Ввод PC 4-7) test на ERROR принтера (BIT 5 = 0) ВЫХОД ПО ОШИБКЕ

test на готовность принтера (BUSY)

ПОВТОРИТЬ, ЕСЛИ НЕ ГОТОВ

ОБНУЛИТЬ РЕГИСТР A (для выдачи строба)

ВЫДАТЬ СТРОБ ПО PC 0

A=1

ПАУЗА ДЛЯ ДЛИТЕЛЬНОСТИ СТРОБА

ВОССТАНОВИТЬ STROBE В 1 (завершить) УСТАНОВИТЬ ФЛАГ C

ИЗМЕНИТЬ ФЛАГ НА ПРОТИВОПОЛОЖНЫЙ НОРМАЛЬНОЕ ЗАВЕРШЕНИЕ ПРИ С=0 УСТАНОВИТЬ ФЛАГ C НЕНОРМАЛЬНОЕ ЗАВЕРШЕНИЕ ПРИ C=1




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



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

Похожие статьи:
Zx-Net - ноде-лист пользователей, имеющих сетевой адрес.
EI is dead - Ковровская группа Eternity Industry переименовалась в Placebo.
Разбиралка - Описание-проходилка аркадно-адвентюрной игры "BIFF".
WANTED - Розыск программ...
Новости ПО - О новинках ПО: Винни Пух-2, Tower Pod, Operation OiX, Stickman Animation Studio, Screen Traslate Universal v1.0, Code Disabler v1.0, Art Studio v2.3, Zx-Word v2.6, Picture viewer v1.18, Chunk Graphics Editor v1.2.

В этот день...   21 ноября