Oberon #01: Свиток: Обзор редактора текста ZX/IBM

        ZX/IBM EDITOR v1.0 (1.5D)         
══════════════════════════════════════════
Вам когда-нибудь приходилось использовать компьютер в качестве пищущей машинки? НЕТ?! Немедленно выключите компьютер!!! Все ниже написанное не для вас!
.......!!!! ......!!! .......!! .......!
Ну вот. Теперь нас читают только те, кто сталкивался с проблемой ввода текста в компьютер. Если вы еще новичок в нашем деле, то вам будет, наверное, не безынтересно узнать, что для ЭТОЙ цели создано великое множество программ - редакторов. До последнего времени у нас (авторов этого текста) был популярен редактор, входящий в базовый пакет Is-DOS. У него есть масса достоинств, но один серьезный недостаток - он работает только в среде Is-DOS, т.е. чтобы начать с ним работать, нужно сначала запустить саму Is-DOS. Но сейчас разговор не о нем.

Мы предлагаем вашему вниманию новый (он написан в конце 1993 года, но появился на рынке ПО совсем недавно) редактор, обладающий почти всеми достоинствами Is-DOS-овского, кроме одного - он не может форматировать текст. Но если вы не занимаетесь изданием газет, журналов и т.д., ну в общем, если вам не надо очень красиво оформлять текст, то вам нет необходимости его форматировать, а значит для вас этот редактор вообще не имеет недостатков.
Хотя владельцы нескольких дисководов будут слегка разочарованы - редактор работает только с ТЕКУЩИМ диском. Спасибо автору и за это - некоторые "железно" привязывают свои программы к диску "A", забыв, что количество дисководов у пользователя - его личное дело, а не автора.
Да, забыли, он запускается прямо из TRDOS, имеет полную ASCII кодировку (как у IBM и у Is-DOS), оформлен по лучшим стандартам редакторов-оболочек СИ, ПАСКАЛь для IBM.

Кто он? Его зовут "ZX/IBM Text Editor". Написан он Хохловым Олегом.
А мы - группа "STARS OF KELADAN" - сейчас поведаем вам о том, как с ним работать.
Итак.
Весь экран можно разделить по вертикали на три зоны: строка меню, информационная строка, зона редактируемого текста.
C чего начнем? Хорошо, хорошо, пусть первым будет меню.

Работа с меню.
Работать с меню (даже если вы никогда не делали этого раньше) очень просто: клавишами "вверх", "вниз", "влево", "вправо" вы передвигаете курсор (прямоугольник инверсного цвета), а клавишей "ENTER" выбираете понравившийся вам пункт. Можно поступить еще проще: в названии каждого пункта есть хотя бы одна заглавная буква - это буква-ключ, если вы нажмете клавишу с такой буквой, то сразу выберете этот пункт. Например, пункт "File" - если вы нажмете клавишу "F", то это будет все равно, что подвести к нему курсор и нажать "ENTER". Ну, а теперь о самом меню. В нем вы найдете пять пунктов:

- File - работа с файлами:

- Edit - переход в режим редактора:

- Pribt - работа с принтером:

- SetUp - настройки:

- Ibfo - информация.

Теперь по порядку:

1. File - работа с файлами.
Это, по сути, ворота в "иной мир" для текстов. C его помощью вы можете проделывать головокружительные трюки с вашими текстами.
Всего таких трюков восемь:
- Save - запись текущего текста в файл с нужным именем, если такой файл уже существовал, то он автоматически перезаписывается:
- Load - чтение текста с диска, текущий текст УНИЧТОЖАЕТСЯ:
- Catalogue - просмотр каталога диска:
- New - создание нового текста, с УНИЧТОЖЕНИЕМ текущего:
- save Block - запись отмеченного блока в файл с нужным именем:
- Merge - слияние текущего текста с текстом из файла:
- Erase file - удаление нужного вам файла на диске:
- Quit - выход из редактора, у нас, правда, этот пункт "глючит", так что лучше пользуйтесь кнопкой "RESET".

2. Edit - режим редактирования.
Если вы выберете этот пункт или просто нажмете "SPACE" (для знатоков IBM - здесь эта чудесная клавиша играет роль "ESC", т.е. это клавиша "ВЫХОД, ОТМЕНА"), то перейдете в режим редактирования текста. О нем мы вам расскажем немного позже.

3. Pribt - работа с принтером.
- Pribt text - печать всего текста:
- pribt Block - печать выделенного блока:
- page Size - задание размера страницы, т.е. сколько строк помещается на странице.

4. SetUp - настройки.
Сей пункт предлагает вам выбрать режим работы редактора:
- EOLN code - выбор разделителя строк:
- Compress - включение (ON) и выключение (OFF) компрессии текста:
- Driver - выбор типа драйвера печати, внутренний (Ibside) или пользовательский (User's).

А вы знаете, что такое разделитель строк, и какой он бывает? Объясняем. Разделитель строки - это один или два байта, которые показывают, что текущая строка кончилась и следующий за ним символ принадлежит другой. Разделитель в "ZX/IBM Editore" бывает двух типов: "CR" - возврат каретки, один байт #D (также как и в Is-DOS); "CR/LF" - возврат каретки + перевод строки, два байта #D,#A (а это как в IBM, именно поэтому он "ZX/IBM"). Если вы пишете свой текст исключительно на (и для) ZX-SPECTRUM, то лучше ставьте "CR" - он займет меньше места. А если же ориентируетесь на IBM, то "CR/LF". Хотя, если вам надо поменять разделитель в уже готовом тексте, то поменяйте его в "SetUp", а затем "пробегите" курсором по всем строкам текста (снизу-вверх или сверху-вниз, но не по длине строки) - разделитель будет заменен.
Если вы включите (ON) компрессию текста, то редактор "схлопывает" повторяющиеся пробелы, в результате чего текст становится меньше в объеме, при этом текст внешне выглядит вполне нормально (редактор выводит вам компрессированные строки в "удобоваримом" виде).
Но, горе вам, если вы потом отключите (OFF) компрессию - обратно декомпрессировать ранее скомпрессированный текст этот редактор пока не может, а внутреннее преобразование "компрессия-декомпрессия" вы только что отключили, в результате на экране окажется смесь вашего текста и служебных байтов. И вообще, зачем нужна эта компрессия? Мы ею никогда не пользуемся, и вам не советуем.

Немного о драйвере принтера. За неимением последнего (принтера) мы не можем гарантировать, что все ниже следующее чистая ИСТИНА. Но как хаккеры, мы можем дать вам несколько наших соображений по этому поводу (мы досконально исследовали процедуру печати).
Во-первых. Пользовательский (User's) драйвер должен находиться с адреса #5B03 (23299) и занимать не более 252 байт (что вполне достаточно). Если его там не будет, то при печати вас ждет сюрприз - или полные "висячки" компьютера, или всякая "бяка".
Во-вторых. Внутренний (Ibside) драйвер. Он зачем-то сначала вызывает процедуру #5B01 (23297), последствия те же (сюрприз), и только после этого начинает саму печать. Еще раз просим извинения за нашу неосведомленность, но все же кто-то может и поймет, с каким принтером работает внутренний драйвер, а мы сообщим лишь то, что поняли:
- информация для печати (очередной символ) "кидается" в порт #3F (63):
- порт #5F (95) является двунаправленным портом управления/контроля. При чтении 4-й бит - 1 - занято, идет печать, 0 - принтер готов; 5-й бит - 0 - ошибка печати (нет бумаги) или принтер не подключен, 1 - соответственно - "порядок".
Запись. Совершенно не понятно - сразу же после печати символа в этот порт "закидывается" ноль, затем единица.
[Во время подготовки номера мы наконец-то узнали, что это за интерфейс принтера. Это интерфейс CENTRONICS (параллельный порт), построенный на базе микросхемы KPS8OBB55. При этом поочередная запись нуля и единицы в порт #5F генерирует импульс строба печати. Порт #7F - активизация принтера.]
5. Ibfo - информация. Здесь вам покажут название программы - "ZX/IBM Editor", ее версию (у нас 1.0), автора и ... "Text Length" - текущую длину текста (включая байты-разделители), и "Free Space" - количество свободного места для текста.
Ну вот, с меню вроде бы разобрались.

Информационная строка.
Здесь совсем все просто. Если смотреть слева на право, то вы увидите:
- текущий алфавит, "Rus" - русский, "Lat" - латинский (и английский в том числе):
- размер символов, "Lock" - строчные, "Caps" - заглавные.
Если вы включили режим псевдографики, то вместо двух предыдущих надписей будет просто "Graphics".
- режим редактирования, "Ibsert" - вставка нового символа с раздвижкой строки, "<пустота>" - наложение нового символа на старый, с уничтожением последнего:
- десятичный код символа, на котором "стоит" курсор (для владельцев цветных мониторов: код - красные цифры):
- "Line xxx" - номер текущей строки:
- "Col xx" - номер позиции курсора в строке.
Ну вот, и с этим все.

Зона редактируемого текста.
К сожалению, не зная всего вышеизложенного, вам было бы очень трудно (если вообще возможно) нормально редактировать текст, именно поэтому описание самого процесса редактирования мы начинаем только сейчас.
Итак. Если вы загрузили текст, или выбрали "New" и попали в режим редактирования, то первое, что вы увидите на экране какую-то мигающую "сикильду" - это курсор, ваш незаменимый помощник и партнер. Он указывает, в какое место будет вставлен нужный вам символ. Двигать его можно клавишами "влево", "вправо", "вверх", "вниз".
И раз уж речь зашла о клавишах, позвольте рассказать вам о них:
- "EDIT" - переключает алфавиты: русский/латинский:
- "CAPS LOCK" - переключает строчные/заглавные буквы:
- "DELETE" - уничтожает один символ СЛЕВА от курсора:
- "GRAPH" - уничтожает один символ СПРАВА от курсора, с помощью этой клавиши вы можете также сдвигать строки (попрактикуйтесь в этом, пригодится):
- "TRUE VIDEO" - страница вперед, к концу текста:
- "INV.VIDEO" - страница назад, к началу текста:
- "EXT.MODE" - вход в режим команд, в информационной строке появляется надпись "Command:", о клавишах в этом режиме мы скажем чуть ниже:
- "ENTER" - раздвижка строк (появляется новая строка под текущей) и перенос всех символов правее курсора (если такие есть) на новую строку; если выключен режим Insert, то раздвижки не будет:
- "SS/Q" - в начало строки:
- "SS/W" - включение/отключение режима вставки (Insert):
- "SS/E" - в конец строки:
- "SS/Space" - выход в меню, чтобы попасть обратно в редактор, нужно выбрать соответствующий пункт (см. выше) или нажать клавишу "Space":
- "CS/Space" - к началу следующего слова, находящегося строчкой выше (!), довольно запутанное действие, означающее, что курсор в текущей строке устанавливается в позицию, с которой начинается следующее слово на предыдущей строке: теперь понятно? Если нет, то поэкспериментируйте - поймете. Похоже, это ошибка автора, все действия должны производиться в текущей строке.
Теперь клавиши режима команд:
- цифры 0..9 - ввод кода символа, т.е. это ввод символа не через нажатие соответствующей ему клавиши, а через ввод его кода:
- стрелка "вверх" - переход к началу всего текста:
- стрелка "вниз" - переход к концу текста:
- "L" - УДАЛЕНИЕ текущей строки:
- "J" - перейти к строке с нужным вам номером, "Line Number" - номер строки:
- "G" - включение/выключение режима псевдографики, к слову, псевдографика IBM, а не SPECTRUM (помните: рожицы, рамочки, уголки и т.д.; а не помните, так узнаете сами):
- "S" - поиск (Search) последовательности символов, "Not Found" - такой фрагмент не найден:
- "R" - замена (Replace) одного фрагмента другим:
- "B" - отметить начало блока:
- "E" - отметить конец блока:
- "Q" - разотметить блок, снять отметку:
- "C" - скопировать блок в позицию курсора:
- "M" - перенести блок в позицию курсора, т.е. скопировать и уничтожить старое:
- "D" - удалить блок:
- любая другая клавиша - вывод помощи (HELP) по вышеописанным клавишам на английском языке.

Теперь немного о русском алфавите. Так как в русском языке букв несколько больше, чем в английском, то некоторые буквы можно получить нажав "SYMB.SHIFT" + какая-то клавиша. А в общем, русские буквы расположены по стандарту "QWERTY", ох, простите, "ЯВЕРТЫ", и если вы работали в Is-DOS, то без труда освоите их, кроме того вас ждет сюрприз - цифры можно вводить, не переключаясь на латинский алфавит. Для остальных приведем соответствие клавиш и русских букв (строчных, заглавные - тоже самое, но в режиме "CAPS" или с клавишей "CAPS.SHIFT"):

а - A и - I р - R ш - SS/F
б - B й - J с - S щ - SS/G
в - W к - K т - T ъ - SS/D
г - G л - L у - U ы - Y
д - D м - M ф - F ь - X
е - E н - N х - H э - SS/S
ж - V о - O ц - C ю - SS/X
з - Z п - P ч - SS/A я - Q

[SS - клавиша "SYMBOL SHIFT"]

Если вы вводите текст с далеко идущими планами (использовать его в своей программе или что-то в этом роде), то вам полезно будет знать, что русские символы занимают область национальных шрифтов в таблице ASCII (ACKUU, а не АCЦ-2!!) т.е. имеют код больший, чем десятичное 127.

Вот, в общем-то, и все. Приятной работы и хороших и грамотных (очень актуально) текстов.

P.S. Во время подготовки номера нас все-таки "пробрал" (мы же тоже люди!) многодисководный шовинизм - мы начали адаптацию редактора к нескольким дисководам. Результат трудов наших мы вам и представляем (уважаемые владельцы N дисководов, не "зарывайтесь") как версию 1.5D.
А теперь немного "чернухи". Оказывается v1.0 (та, которую мы хотели включить в наш номер, и которую мы описали выше) совсем не версия программы, это одна из СТАДИЙ РАЗРАБОТКИ первой версии!!! Мы нашли, что оказывается в программе есть процедура собственной печати каталога диска (!!), но из-за поставленной автором отладочной заглушки вывод каталога происходит стандартной процедурой TR-DOS. Кроме того, "безалаберно" выполняется обработка "Quit" (помните, чуть выше мы писали, что выход не срабатывает), вернее обработка вообще не выполняется никак. И самое главное редактор рассчитан также на работу с MSDOS-дисками, но сделано это настолько примитивно (нет возможности работы с поддиректориями), что совершенно непонятно, как работать с этими дисками. По нашему мнению с MS-DOS-дисками лучше работать через ISDOS.
Немного подумав, мы сделали версию 1.5D, которую и представляем вам. Теперь вместо пункта "Quit" (в подменю "File") стоит пункт "mOre" (буква "O" - буква-ключ), он позволит вам попасть во вторую часть подменю "File". Там вы сможете выйти в Бейсик (опция "Basic", "починенный" нами "Quit") или выбрать другой дисковод (опция "Change disk", чисто наш прибамбас), где в свою очередь можно будет выбрать диск.
Кроме того, мы убрали несколько заглушек и теперь вывод каталога диска будет практически таким, каким он был для MS-DOS (хотя, каемся, мы его немного изменили, например, добавили выход по клавише "Space" между страницами каталога): поставили "заглушки" драйвера принтера на тот случай, если драйвер принтера не загружен (а загружать его следует, выйдя в Бейсик из редактора).
Теперь у владельцев 128К-машин не будет практически никаких проблем с редактором - он автоматически переводит компьютер в псевдо 48К-режим ("натуральный" 48К, но с сохранением 128К-памяти). И теперь вы можете спокойно выходить в Бейсик и заходить обратно в редактор, текст сохраняется, и компьютер не "глючит".
P.P.S. Чур, по ушам не бить. По голове тоже. Счастливой охоты за меткими словами.
══════════════════════════════════════════
* * * * *

Оглавление издания: Oberon #01

  • Вступление
    Введение в первый выпуск электронного журнала 'Оберон' от самарской группы STARS OF KELADAN, задуманного как альтернатива 'SPECTROFON', с акцентом на профессионализм программирования.
  • Свиток
    Анализ проблем с программами в играх ZX Spectrum, представленных в 'SPECTROFON', конкретно 'SPACE CRUSADE' и 'REBEL STAR'. Обсуждение ошибок программ, попыток взлома и отсутствия тестирования. Критика работы журнала 'SPECTROFON' по обеспечению качества программ.
  • Свиток
    Описание редактора ZX/IBM Editor v1.0 с подробным анализом его возможностей, таких как навигация по меню, работа с файлами и сжатие текста. Обсуждается совместимость с несколькими дисководами и адаптация для машин с 128К. Предоставлена информация о ограничениях и обновлениях в версии 1.5D.
  • Обзор
    Статья обсуждает программы, доступные в ZX-Клубе, включая подробные обзоры Animation 2.0, пакета для создания простых рекламных роликов, и игры 'Страна Мифов' в жанре Dungeons & Dragons. 'Insult Megademo' от Code Busters выделяется музыкой и видеоэффектами, с предупреждениями о проблемах совместимости для некоторых компьютеров. Подчеркивается важность покупки только тщательно протестированного ПО, чтобы избежать проблем.
  • Обзор
    Анализ программ, распространяемых 'ИНФОРКОМ', выявляет проблемы в STS, TASM128 и VIRUS, критикуя технические недостатки и маркетинговые утверждения. Статья ставит под сомнение качество и легальность этих программ, предлагая альтернативные решения. Обсуждаются проблемы разработки и распространения программного обеспечения для ZX Spectrum.
  • Обо всём
    Обсуждение трюков и багов программ для ZX Spectrum, упоминаются пользовательский опыт и отзывы, с особым акцентом на игры и технические проблемы.
  • Ликбез - Paul Atrides
    Обсуждение этикета программирования и необходимости всесторонних знаний за пределами навыков кодирования, с историческим взглядом на вычислительную технику.
  • Железо - Александр Королёв
    Статья обсуждает порт атрибутов #FF на российских клонах ZX Spectrum, его особенности и возможные проблемы с использованием схемы Громова. Автор предлагает улучшенный вариант схемы для большей совместимости. Эта техническая заметка предназначена для энтузиастов, желающих усовершенствовать свои системы.