|
Форум - редактор для GENS.
|
(С) Бандура Сергей Иванович
г. Николаев
Редактор для GENS
Не надо объяснять, что самым большим недостатком пакета GENS-MONS
является встроенный в GENS неудобный строчный редактор. Однако фирма Hisoft,
встраивающая этот редактор во все свои разработки, почему-то только для
Паскаля сделала исключение, разработав для него дополнительный
псевдоэкранный редактор, который в пакете для Паскаля HP4TM16 называется
AD64 и содержится в файле EDITOR. Можно предположить, что если и Ассемблер,
и Паскаль, разработанные одной фирмой, имеют одинаковые строчные редакторы,
то дополнительный редактор от Паскаля должен подойти и к Ассемблеру. К
сожалению это не так, потому, что:
- в Паскале под номер строки отводится три байта, а в GENS - два;
- при наборе программы в строчном редакторе Паскаля вместо операторов
подставляются токены, как в Бейсике, которые при запуске внешнего редактора
преобразуются в слова;
- в GENS для экономии памяти лишние пробелы заменяются символом табуляции
(код 09);
- GENS - перемещаемая программа, поэтому заранее неизвестно, где будут
храниться адреса начала и конца текста;
- возможность редактирования строки длиной до 80 символов с отображением 64
символов в строке явно избыточна для Ассемблера.
Поэтому, для того, чтобы использовать редактор AD64 совместно с GENS
(использовался gens4m версия 4.1, дисковая, 51 знак в строке), требуется
внести следующие изменения:
1. С адреса F0BEH занести:
21 30 75 C3 EE F3 ...
или
LD HL, 30000 ; стартовый адрес GENS
JP #F3EE ; настройка редактора
2. С адреса F36CH занести:
C5 0E 02 CD D3 F3 FE 0D 20 F9 C1 ...
или
PUSH BC
LD C,02
L1 CALL #F3D3 ; подпрограмма удаления
CP #0D ; лишних пробелов
JR NZ,L1
POP BC
3. Все с адреса F3A8H по адрес F4A3H заполнить кодом 00 и там разместить
новые подпрограммы:
ORG #F3A8
LF3A8 INC HL ; удаление номеров строк
INC HL
PUSH BC
LD C,#07
LF3AE LD A,(HL)
LD (DE),A
CP #09
CALL Z,LF3D2
DEC D
INC HL
INC DE
CP #0D
JR NZ,LF3AE
POP BC
SBC HL,BC
ADD HL,BC
JR NZ,LF3A8
LD (#F0C6),DE
RET
LF3D2 PUSH HL ; замена символов табуляции
LD A,#20
DEC DE
LF3D9 INC DE
LD (DE),A
DEC C
JR NZ,LF3D9
LD C,#06
POP HL
RET
ORG #F3D3
L0 LD A,(HL) ; проверка на лишние пробелы
CP #20
CALL Z,PR
LD (DE),A
INC HL
INC DE
RET
PR LD A,C
OR A
JR NZ,TAB
LD A,(HL)
RET
TAB INC HL
LD A,(HL) ; замена лишних пробелов
CP #20 ; на символ табуляции
JR Z,TAB
DEC C
LD A,#09
DEC HL
RET
ORG #F3EE ; настройка редактора
PUSH HL
LD DE,#0036 ; для gens4m адрес конца текста
ADD HL,DE ; хранится в ячейке, отстоящей на
LD (L2+1),HL ; 54 байта от начала программы
POP HL
LD DE,#22E8 ; адрес начала текста хранится в
ADD HL,DE ; ячейке, отстоящей от начала прог-
LD (L1+2),HL ; раммы на 8936 байт
L1 LD DE,(#0000)
L2 LD HL,(#0000)
LD (#F0C6),HL
LD HL,(L2+1)
LD (#F59A),HL
LD (#F0C4),DE
CALL #F39E
CALL #F7DE
LD HL,#0000
LD (#F0CA),HL
JP #F4FB
Редактор AD64 использует собственный буфер, адрес вершины которого
хранится в ячейке FC08H, туда нужно занести код B8H, дно ограничено адресом
конца текста.
Поскольку строчный редактор GENS не отображает символов псевдографики,
возможность их ввода можно отключить:
POKE 62781,24: POKE 62782,5
Готовую программу следует сохранить командой:
SAVE "gensedit" CODE 61630,3906
Загрузчик для GENS и для редактора может быть таким же, как для Паскаля:
1 RANDOMIZE USR 61630: RANDOMIZE USR a
10 CLEAR 29999: LET a=30000: REM стартовый адрес GENS
20 RANDOMIZE USR 15619: REM: LOAD "gens4" CODE a
30 RANDOMIZE USR 15619: REM: LOAD "gensedit" CODE
40 POKE 61632,INT (a/256): POKE 61631,(a-256*PEEK 61632)
50 RANDOMIZE USR a
Его следует сохранить командой:
SAVE "gens4" LINE 10
Запуск внешнего редактора производится после выхода из GENS в Бейсик
командой GO TO 1.
При наборе текста в новом редакторе команды Ассемблера отличаются от
меток тем, что перед меткой не должно быть пробелов. Количество пробелов
перед командой не ограничено, поскольку после выхода из редактора все
заменяются одним символом табуляции.
Перечень управляющих клавиш и команд редактора AD64 содержится в файле
HELP, входящем в пакет Паскаля HP4TM16, но на всякий случай привожу их еще
раз:
Управляющие клавиши:
CS+1 (EDIT) - редактировать строку;
CS+2 (Caps Lock) - переключить регистр;
CS+3 (True Video) - на страницу вперед;
CS+4 (Inv. Video) - на страницу назад;
CS+5 (Влево) - курсор/строка влево;
CS+6 (Вниз) - экранный курсор вниз;
CS+7 (Вверх) - экранный курсор вверх;
CS+8 (Вправо) - курсор/строка вправо;
CS+9 (GRAPHICS) - вкл/выкл ввода псевдографики;
CS+0 (DELETE) - удалить символ;
SS+Q (<=) - экранный курсор в начало текста;
SS+W (<>) - экранный курсор в конец текста;
SS+I - режим вставки строк;
SS+E - режим редактирования;
SS+A - режим добавления строк;
SS+D - удалить строку;
SS+S - найти образец;
SS+CS (EXTEND MODE) - ввод команды.
Команды:
4 (OPEN) - пометить начало блока;
5 (CLOSE) - пометить конец блока;
6 (MOVE) - перенести блок;
7 (ERASE) - стереть блок;
O (FORMAT) - экран 32/64 символа в строке;
Z (COPY) - копировать блок;
X (CLEAR) - стереть текст;
Y - выход из редактора;
F - задать образец для поиска;
R - задать строку для замены.
Команды поиска:
S - найти образец;
R - заменить на заданную строку;
G - заменить все образцы до конца текста.
О дополнительных изменениях
Выше было сказано, что режим 64 символа в строке избыточен для Ассемблера
- можно работать в режиме 32 символа в строке, а можно попробовать заменить
драйвер экрана. В AD64 он расположен с адреса FD3DH и на входе получает в
регистре А - код символа, в регистре HL - координату экрана в знакоместах
(0000 - верхний левый угол), при выходе должен быть установлен флаг Z, если
позиция печати находится в пределах экрана. Для примера в листинге 1
приведен драйвер печати на 42 символа в строке (переделан из драйвера на 51
символ в строке от GENS).
При использовании этого драйвера следует переустановить ограничитель
курсора:
POKE 64501,40
и отключить переключатель 32/64 символа в строке:
POKE 62628,24: POKE 62629,5
К сожалению, работает этот драйвер очень медленно, зато освобождается
область памяти с FEB8H по FFFFH, где можно разместить, например, процедуру
вывода на принтер, использовав для ее вызова освободившийся переключатель
32/64 символа в строке или клавишу GRAPHICS.
Листинг 1. Драйвер экрана на 42 символа в строке
FD3D: E5 D5 C5 FE 00 20 02 3E : 17
FD45: 20 4F 7D FE 2A D2 DE FD : 03
FD4D: 7C E6 07 0F 0F 0F F5 45 : 1A
FD55: 2E 06 3E 00 85 10 FD 6F : C5
FD5D: E6 07 32 2C FE CB 3D CB : 76
FD65: 3D CB 3D F1 85 6F 7C E6 : EE
FD6D: F8 F6 40 67 E5 79 FE 20 : 7B
FD75: 30 05 11 BA FD 18 04 ED : 78
FD7D: 5B 36 5C 6F 26 00 E5 29 : 0A
FD85: 29 29 19 79 01 08 00 11 : 80
ED8D: 24 FE ED B0 FE 59 20 05 : C5
FD95: 21 27 FE 36 38 E1 11 12 : 4A
FD9D: FE 19 5E E1 3A 2C FE B7 : 0B
FDA5: 28 09 47 D5 11 00 01 CD : CE
FDAD: E2 FD D1 47 C6 06 F5 FE : 60
FDB5: 09 30 07 06 06 4B 16 08 : 67
FDBD: 18 0F D6 08 57 3E 08 90 : EC
FDC5: 47 4B CD F0 FD 2C 42 16 : 92
FDCD: 10 CD F0 FD 7A D1 92 28 : 99
FDD5: 08 47 11 00 01 CD E2 FD : DF
FDDD: BF C1 D1 E1 C9 C5 06 08 : A8
FDE5: E5 CB 06 19 10 FB E1 C1 : 5E
FDED: 10 F3 C9 D5 C5 11 24 FE : 83
FDF5: CB 79 F5 20 16 E5 06 08 : 54
FDFD: 1A CB 7F CB BE 28 02 CB : DC
FE05: FE 13 CB 06 24 10 F1 E1 : EB
FE0D: 11 24 FE CB 01 06 08 EB : 03
FE15: CB 06 23 10 FB EB F1 20 : 0E
FE1D: D4 D1 42 10 CF D1 C9 00 : 7B
FE25: 00 00 00 3E 00 00 00 02 : 63
FE2D: 18 24 18 28 28 03 81 88 : DB
FE35: 88 C0 42 81 81 C0 03 C0 : 42
FE3D: C0 81 82 81 81 84 C0 A0 : E4
FE45: A0 82 A0 A0 C0 A0 A0 03 : A8
FE4D: 03 C0 82 81 A0 A0 A0 A0 : 91
FE55: A0 A0 A0 A0 A0 A0 C0 A0 : 73
FE5D: A0 A0 90 A0 A0 A0 A0 A0 : 4B
FE65: A0 82 A0 90 90 90 28 C0 : BD
FE6D: C0 81 03 81 81 84 81 C0 : 76
FE75: C0 81 81 C0 81 81 81 81 : F9
FE7D: 81 C0 81 81 81 81 81 81 : C2
FE85: 81 81 81 81 81 81 81 81 : 8B
FE8D: C0 C0 81 81 0C 00 00 00 : 19
FE95: 00 00 00 81 FF 10 18 FC : 37
FE9D: FE FE FC 18 10 00 1F 3E : 18
FEA5: 7E FC 7E 3E 1F 82 EE FE : 66
FEAD: FE FE 7C 38 10 10 38 7C : 2F
FEB5: FE FE FE EE 82 00 00 00 : 1D
СОДЕРЖАНИЕ:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Форум-Игры - В разделе рассмотрены: Burry, McGuian World Champion, Sword&Sorcery, Marsport, Master of Magic, Colony, Firelord, Tai-Pan, The Spectre, Rebel Star, Dr.What, Rescue, Vatman, Iron Man, Seymour at the Movies, Wild West Seymour Adventures, Venturama, Livingstone 2, Total Eclipse 2, Dizzy 6, Elite, Street Hassle.
-
Перекресток - В разделе рассмотрены: Mysterious Adventure N11, Temple of Terror, Witch Cauldron, Smok Wawelski, ID, Eric the Viking, Golden Apple, Famous Five, Emerald Island,Magnetic Moon 1, Shadows of Mordor, Quest Adventure, Sam Spoon, Snowball, Slain the King, Lancelot, MindFighter, The Legend of Apache Gold, Звёздное Наследие, Return to Eden.
-
-
-
-
-
-
-
-
|
|