автор: Alone Coder a.k.a. Дмитрий Быстров
страна/город: Россия/Рязань
годы выпуска: ???-2010
минимальные системные требования: ZX Spectrum 128k+TR-DOS
исходники: есть (см. авторский архив версий)
Текстовый редактор AC Edit
AC Edit - мощный текстовый редактор от Alone Coder. На сегодняшний день самый распространенный и частоиспользуемый редактор на ZX, обладающий целой палитрой версий. Обновления для него более не выпускаются, впрочем, с точки зрения возможностей добавить в принципе уже нечего. А вот полноценный GUI был бы очень кстати.
Ниже приведено авторское описание, идущее в комплекте с версией 1.04.
Операции с диском:
Ext/L (Load) - меню загрузки файлов. В него можно также попасть по кнопке Break или по кнопке L в окошке справки сразу после запуска редактора. В меню Load действуют следующие клавиши:
стрелки - перемещение курсора выбора файла.
Enter - загрузка текстового файла.
Адрес курсора в тексте берётся из адреса загрузки файла (параметр Start), если он в нужных пределах. Если включен видеорежим 000 или 001 (см. SetUp ), то по первой странице текста автоматически определяется, какой из этих режимов включить: если страница шире 42 символов, то включается режим 001, иначе 000. То же происходит после запуска модулей (в том числе встроенных перекодировщиков).
Break - вернуться в редактор.
PgDn (Inv Video) - переключить страницу каталога (их не более двух, т.к. на одной странице помещается 88 файлов).
Edit - перечитать диск.
1-4 - выбор дисковода.
M - запустить бейсик-файл (не более 16K), плагин (см. AlCoNews #3 и #12) или музыку:
-компилированную в любом формат при условии, что кодовый блок начинается с LD HL,module:JR/JP ini: play;
-некомпилированную: PT2, PT3 (можно TurboSound);
-можно паковать в формате Hrust2 без распаковщика;
-компилированную можно паковать с распаковщиком.
F - загрузить шрифт:
-с расширением .f - 4x8 в экранном формате;
-с расширением .C - 6x8 в экранном формате.
SS/D (Erase) - удалить файл.
R (Rename) - переименовать файл (можно восстановить удалённый файл).
SS/V (Move) - уплотнение диска.
Реализовано путём вызова соответствующей процедуры TR-DOS.
V - посмотреть экранный файл (можно вырезать нужный кусок стрелками и по кнопке Enter вставить его в текст).
Ext/S (Save) - запись текста на диск под произвольным именем (дисковод выбирается кнопками 1-4 в крайнем правом положении курсора ввода имени). Файл нулевой длины или длиной более 65280 байт (поймёте по красному бордеру во время редактирования) не сохраняется. Если на диске встретится файл с тем же именем и длиной в секторах, то новый запишется поверх старого. При дисковых ошибках тоже показывается красный бордер, в этом случае можно нажать"R" (Retry),"I" (Ignore) или "A" (Abort). Нажатие"A" вернёт дисковод по умолчанию (23833).
CS/Enter (Fast Save) - сохранение под текущим именем на текущий диск.
Ext/V (Pack & Save) - упаковка по методу Hrust2 (формат см. в Inferno Guide #5 ). Текст не должен превышать 32K.
Ext/G (Merge) - присоединить текст из файла к редактируемому тексту. Если суммарный файл не может поместиться в память, то операция не выполняется.
Ext/T (Text Cutter) - стереть текст перед курсором. После подтверждения этого действия предлагается сохранить удаляемый блок (если не надо – нажмите Break). Иногда полезно при работе с большими текстами.
Перемещение по тексту:
Курсорные клавиши – свободное перемещение курсора. Курсор свободный в том смысле, что ему не мешает двигаться текст (как это можно видеть в ModernWord).
PgUp (TrueVideo), PgDn (InvVideo) - постраничное листание текста.
SS/True (BeginOfFile) - в начало текста.
SS/Inv (EndOfFile) - в конец текста.
SS/Q (Home) - в начало строки.
SS/E (EndOfLine) - в конец строки. Если строка шире правой границы, то на правую границу (зависит от опции "Границы" в SetUp ).
SS/влево (WordLeft) - на слово влево.
SS/вправо (WordRight) - на слово вправо.
SS/Space - табуляция на каждый 3-й (зависит от SetUp ) символ. Просто двигает курсор. Возможно, будет выброшена в одной из следующих версий.
Режимы клавиатуры:
Edit - переключение языка Рус/Lat. Текущий язык отображается в строке статуса и влияет на вид курсора. Украинский язык доступен в русской раскладке ШВЕРТЫ (комбинации je, ji, jy, cg вводят соответственно "ї", "•", "ў", "є").
Ext/1 - включить/выключить режим псевдографики. Знаки расположены на клавиатуре так же, как в драйвере keyrus на PC. Цифры 1..8, а также SS/1..7 – цвета (цвет 8 - фоновый, т.е. цвет по умолчанию, настраивается в SetUp ).
CapsLock - переключить регистр. В заглавном режиме буква, нажатая вместе с CS, будет строчной, и наоборот. Если, удерживая CS, набрать две или три цифры (первая из них должна быть"1" или "2" ), то появится символ, соответствующий введённому коду. Коды >256 соответствуют началу кодовой таблицы (#00..#1F).
Ext/I (Insert/Overwrite) – переключение режимов вставка/замена. Изначально включен режим вставки, где буква, введённая в середине строки, раздвигает строку. Режим замены рекомендуется для рисования в псевдографике (при этом лучше отключить движение курсора вправо). В режиме замены отключен автоматический переход курсора на следующую строку. В режиме замены курсор мигает.
Другие клавиши:
Ext/O (impOrt) - расшифровать текст, написанный не в досовской (CP866/CP1125) кодировке. Можно сразу же разрезать строки и удалить коды #00.
Ext/X (eXport) - перевести текст в другую кодировку или в коды для принтера. Можно одновременно убрать цвета.
SS/Delete - стереть слово слева от курсора.
SS/Graph - стереть текущую строку.
Ext/Q - сжать строку к левому краю. Удаляются все лишние пробелы. Действие зависит от опции "Пробелы после знаков" в SetUp. При нажатии внутри помеченного блока обрабатывается весь блок.
SS/W - раздвинуть строку до правой границы поля редактирования (см. SetUp ). При первом проходе вставляются пробелы после знаков препинания (кроме тире и тех, после которых скобка или ещё знак препинания) в порядке ? ! . : ; , При втором проходе - пробелы между словами, где нет знаков препинания. При третьем - опять после знаков, и т.д. Пробелы вокруг тире не растягиваются. Такой же алгоритм при автовыравнивании строки во время ввода. При нажатии SS/W внутри помеченного блока обрабатывается весь блок.
Ext/W - центрировать строку.
Ext/P - печать текста на принтер. Драйвер надо загружать кнопкой M в меню Load. Редактор инициализирует драйвер по адресу #5B00, потом пересылает символы в аккумуляторе через точку входа #5B03. Коды конца строки при этом #0D, #0A, а в конце
текста посылается #00. Если процедура #5B03 возвращает CY=1, то печать прекращается. Прерывания во время печати выключены.
Ext/U - отмена изменений в строке или восстановление только что стёртой строки.
Ext/F - поиск/замена последовательности символов в тексте/блоке (если курсор в блоке). Поиск происходит от курсора вниз. Предлагается ввести две строки: искомую и заменяющую (переход между ними – кнопки вверх/вниз). Если Enter был нажат во время
редактирования первой строки, то будет поиск. Иначе замена. Длина строк зависит
от положения курсора. Через CS можно вводить коды символов. Если включен режим CapsLock, то поиск идёт без учёта регистра. Пробел в строке поиска (только при поиске, но не при замене) обозначает любое число пробелов, цветовых кодов или переводов строки.
SS/I - продолжить поиск.
SS/Break - выход в программу, сидящую в 7 странице памяти и притворяющуюся Quick
Commander'ом, или сброс.
OUT (#7FFD),23
CP (#C000),#FF31
JP Z,#C000
OUT (#7FFD),16
PUSH 0
JP 15663
Работа с блоками текста:
SS/Up, SS/Down - построчная пометка. Можно двигать любой край пометки, если
поместить курсор на этот край.
Ext/B (Mark Begin) - пометить начало блока.
Ext/E (Mark End) - пометить конец блока.
Ext/A (Mark All) - пометить весь текст.
Ext/R (Mark None) - забыть пометку.
Ext/C (Copy Block) - скопировать блок под курсор.
Ext/M (Move Block) - переместить блок под курсор. Это не Copy Block + Delete Block, а построчное перемещение, поэтому можно перемещать блоки даже в тексте максимального размера.
Ext/D (Delete Block) - стереть блок.
Ext/K (Save Block) - сохранить блок. Имя, которое вы введёте в режиме каталога, относится только к сохраняемому блоку, а после записи восстановится старое имя текста.
Ext/J (Justify) - подгонка блока под правую границу поля редактирования (см. SetUp). Абзацем считается пробел после перевода строки или двойной перевод строки. Форматирование блока (без переносов) в общем случае заключается в Ext/Q, Ext/J, SS/W.
Строка статуса:
код текущего символа
* (если текст был изменён)
имя файла
длина блока
адрес курсора/длина текста
положение курсора в строке/длина строки
маркер конца текущей строки
номер строки/число строк
режим клавиатуры
SetUp (SS/Enter):
Двигаться по меню SetUp можно кнопками Up, Down, Home, End. Enter меняет "+" на"-" и наоборот. Left и Right меняют числа. Break или SS/Enter - выход из SetUp.
CS/Enter - сохранить настройки на диск в тело редактора (при этом не проверяется, что в текущем дисководе лежит именно диск с редактором!).
Tab 003
Шаг табуляции и размер красной строки.
Keyboard 001
Номер раскладки клавиатуры. Раскладки пронумерованы в следующем порядке (некоторые могут быть выключены в исходнике):
-ЯВЕРТЫ (как в ZX Word и его аналогах - на основе кодировки KOI-7). &="ё".
-ШВЕРТЫ (русский и украинский одновременно). При этом часть букв вводится двумя нажатиями (ja=я, jo=ё, ju=ю, je=ї, ji=•, jy=ў, cg=є, cc=ц, hh=э, jj=ъ ). Из-за того, что "й", "ц", "ш", "э" работают в начале комбинаций, отдельно их ввести можно, нажав после них какую-либо клавишу, не входящую в их комбинации. Эта клавиша, нажатая после, не игнорируется, а тоже обрабатывается. В литературном тексте комбинации "йа", "йо", "йу", "йе", "чч", "хх", "йи", "йы", "йй", "цг" практически исключены (бывают в иностранных словах). Чтобы вводить такие комбинации, можно пользоваться движением курсора. Все знаки препинания, доступные в латинском режиме, доступны и в русском. Кодировка украинских букв - CP1125.
-ЙЦУКЕН ( "б","ж","х","э","ю","ё" на цифрах сSS ).
Цвет +
Включить/выключить отображение цветов. Если эта опция выключена, то цветовые коды отображаются как символы.
Фоновый 005
Указывает, какой атрибут (от 001 до 079) соответствует цветовому коду #08.
Звук 001
Звук на бипере:
000 - нет звука.
001 - Рус:писк, Lat:треск.
002 - Рус:треск, Lat:вжик.
003 - вжик в обоих режимах.
Hex -
Включить/выключить шестнадцатеричный режим показа двухбайтных чисел.
Optimize spaces -
Указывает, оптимизировать ли строки по занимаемой памяти за счёт замены пробелов
на табуляции. Когда строка текста берётся на редактирование, все табуляции в ней заменяются на пробелы. Когда она кладётся обратно в текст (это происходит, если она
изменена и при этом с неё сошёл курсор), пробелы могут быть оптимизированы путём
замены на табуляции. Код табуляции - #09, означает сдвиг курсора вправо на ближайшую
позицию табуляции (позиции 8*N+1, где N целое). Параметр Tab (см. выше) не имеет отношения к этим табуляциям.
CR +
Выбирает код конца строки: <CR> (#0D) или <CR+LF> (#0D, #0A). Если изменить эту
настройку, то по выходе из SetUp текущий текст перекодируется. При загрузке текста
он всегда перекодируется в текущий режим. Можно загружать и тексты с концом строки <LF>, и даже с концом строки <LF+CR>.
Отступ -
Если эта опция включена, то Enter, нажатый в конце строки, будет не только переводить
курсор на новую строку (на её начало, т.е. левую границу поля редактирования), но и ставить абзацный отступ (красную строку). Величина этого отступа указывается в параметре Tab (см. выше).
Перенос +
Если эта опция включена, то при вводе буквы на правой границе поля редактирования (см. ниже) слова могут переноситься (в случаях, допустимых нормами русского языка). При этом ставится знак переноса "-" (код #C4 ). Если опция отключена, текст переносится только по границам слов. Если включен режим "Пробелы после знаков" (см. ниже), то границей слова считается только пробел. В противном случае конец группы знаков препинания тоже считается границей слова.
Выравнивание +
Если эта опция включена, то при автоматическом переходе на новую строку или переносе введённая строка будет растягиваться до правой границы поля редактирования. Если включен режим "Пробелы после знаков" (см. ниже), то растягиваются только пробелы. Иначе при первом проходе вставляются пробелы после знаков препинания (кроме тире и тех, после которых скобка или ещё знак препинания) в порядке ? ! . : ; , При втором проходе - пробелы между словами, где нет знаков препинания. При третьем - опять после
знаков, и т.д. Пробелы вокруг тире не растягиваются.
Пробелы после знаков –
Если включить, то редактор будет считать, что знаки препинания равноправны буквам и
цифрам при переносе и выравнивании. В частности, пробелы после них не будут сжиматься.
Autosave -
Разрешает/запрещает автосохранение текста. Текст, если он был изменён, автосохраняется через 163 секунды после предыдущего сохранения.
SaveYN -
Определяет, давать ли запрос на сохранение изменённого текста. Возможно, в одной из следующих версий эта настройка будет выброшена из SetUp, а останется только в исходнике, поскольку переключать её во время работы не требуется.
Cross +
Если эта опция включена, то после далёких перемещений курсора (например, после Find) его новое положение показывается перекрестием. Возможно, переключение останется только в исходнике - во время работы переключать не требуется.
Движение курсора 002
Если этот параметр равен 000, то при вводе символа курсор остаётся на месте (для рисования ASCII-графики). Если 001, то курсор движется вниз (для раскраски). Если 002, то вправо (для ввода текста).
Границы +
Определяет, соблюдать ли при перемещении курсора и при вводе текста границы поля редактирования. Если выключено, курсор движется свободно, а текст прокручивается, когда курсор оказывается возле краёв экрана.
Левая граница 000
Левая граница поля редактирования - количество пробелов, проставляемое в начало перенесённой строки. В две колонки писать нельзя. Используется только для оформления эпиграфов.
Правая граница 042
Правая граница поля редактирования - граница, правее которой введённый символ будет переноситься на следующую строку.
Видеорежим 000
Выбирает режим отображения текста. Режимы отсортированы в следующем порядке (некоторые могут быть выключены в исходнике):
-42 символа в строке (шрифт 6x8).
-64 символа в строке (шрифт 4x8).
-80 символов в строке в экранном режиме
384x304 (шрифт 4x8), спрайты в тексте не
показываются.
-84 символа в строке в экранном режиме
512x192 (шрифт 6x8), без цветов, спрайты в
тексте не показываются.
Спрайты:
Если в тексте встречается код #00, то вся остальная часть текста не воспринимается (но сохраняется). Сделано, чтобы предусмотреть место под спрайты в тексте, сохраняя совместимость с обычным форматом текста. Ширина спрайтов всегда равна 32 знакоместам. Их графика хранится после кода #00 по знакоместным строкам (одна знакоместная строка состоит из 8 строк растра и строки атрибутов). Спрайты вставляются в текст в виде кодов: #FF, (#80+номер_строки_спрайта). Функция V в меню Load расставляет эти коды автоматически после вырезания нужного спрайта стрелками и нажатия Enter.
Раскраска:
Достигается помещением между словами (поверх пробела или вместо него) цветовых кодов #01..#07 (тёмные цвета), #08 (цвет по умолчанию), #0E..#14 (яркие цвета).
Проще всего их впечатывать в режиме псевдографики(Ext/1) с помощью кнопок от 1 до 8 (с SS или без). Цветовой код для начала строки хранится в конце строки. Если цветового кода там нет, то начальный цвет строки - цвет по умолчанию. В редакторе для удобства
организована установка цвета начала строки при курсоре в начале строки. При этом отслеживается возможность втиснуть цвет вместо пробела в начале строки. Если нажать поверх цветового кода клавишу, соответствующую другому цвету, то старый цвет заменится новым. Если же поверх цветового кода нажать пробел, то цвет заменится на пробел. При этом курсор не двигается. Во время раскрашивания текста удобно двигаться по словам (SS/Left, SS/Right), при этом курсор старается перейти на пробел, то есть именно туда, где ставятся цвета.
Загрузчик:
Бейсик-загрузчик редактора, кроме собственно загрузки программы, пытается найти на диске шрифт и музыку, названия которых указаны в конце бейсик-файла (редактируются любым дисковым доктором). И то, и другое - в любом поддерживаемом формате. Этот процесс можно пропустить по кнопке CS. Загрузчик, кроме того, пытается найти в командной строке имя текстового файла для загрузки. Вид командной строки следующий:
A> RUN "D:ace",edfile W
где "ace" - имя, под которым лежит на диске редактор, "D" - дисковод, в котором он лежит, "edfile " - имя текстового файла, "W" - его расширение. Текстовый файл берётся с текущего дисковода (в данном случае с "A"). Дисковод можно не указывать - он для случая нахождения редактора не на диске с файлом. Длина имени редактора, включая имя
дисковода, должна быть не менее 3 символов (иначе TR-DOS запортит в командной строке имя загружаемого файла).
(4912) 75-13-90
390026 Рязань Высоковольтная 37к1 кв12
Быстров Дмитрий Михайлович
E-mail: dmitry.alonecoder@gmail.com
Аварийный e-mail: alone_coder@mail.ru