ZX-Ревю 1995 №1 1994 г.

Читатель-читателю - Полезные советы.


Полезные советы

49876 DD Е5 PUSH IX

49878 СЗ 2F 3D JP 15663

то есть в этом месте все сделано корректно. Другой фрагмент программы выглядит так:

60595 21 30 3D LD HL,15664

60598 ЕЗ EX (SP),HL

60599 СЗ DF ЕЕ JP 61151

Найдите с помощью программ MONS4 иди DISK-DOCTOR данный стринг, и замените в нем #30 на #2F. Теперь программа будет работать на любом компьютере.

Так же выглядит аналогичный фрагмент и в других версиях. В DCU 2.21:

60849 21 30 3D LD HL,15664

60852 ЕЗ EX (SP),HL

60853 СЗ DD EF JP 61405

В DCU 2.12:

61311 21 30 3D LD HL,15664

61314 ЕЗ EX (SP),HL

61315 СЗ А7 F1 ЭР 61863

Кстати, если выбросить из программы все лишнее, а затем сжать ее каким-нибудь компрессором (рекомендую "RAM-PACKER" Д.Степаненко, текст которого опубликован в журнале "ZX+еще" N1), то программа на диске может стать несколько короче. "Лишним", например, являются упражнения г.Родионова в употреблении крепких английских выражений, что, по-моему, не делает ему чести при всем моем к нему уважении, как к программисту. После проведения данных операций разиер DCU 2.21 сократился у меня с 61 до 54, а DCU 2.31 с 59 до 47 секторов.

Хочу также поделиться некоторым опытом по вопросу, рассмотренному в статье Д.Пьянкова и С.Машарина "Опыт русификации программ" в ZX-FORUM на стр.123.

Я делаю это несколько иначе. Для поиска символьного набора и элементов графики я использую следующую программу:

30 INPUT "address: ";adr 40 LET x=adr 50 FOR a*16384 TO 16415 60 FOR fr=a TO a+224 STEP 32 70 FOR C=b TO b+1792 STEP 256 80 POKE C,PEEK X 90 LET X»X+1: NEXT С 100 NEXT b 110 NEXT a 120 PRINT #0;x;" "; 130 PAUSE 0 140 GO TO 50

Эта программа выводит содержимое памяти с заданного адреса на экран в его верхнюю треть вертикальными колонками, то есть длина блока, который можно видеть одновременно, составляет 2К. В нижней части экрана выводится адрес начала следующего блока, который будет выведен на экран при нажатии любой клавиши. Когда найдете то, что Вам требуется, нажмите BREAK. Затем содержимое экрана можно записать на диск, отредактировать в ARTSTUDIO и поместить на прежнее место при помощи этой же программы, поменяв предварительно местами переменные в строке 80.

Использование полноэкранного редактора, по-моему, удобнее и нагляднее, чем редактора фонтов. Для большего удобства хорошо включить шахматное поле и зафиксировать его, установив в меню атрибутов опцию Bright-Transparent . Тогда удобнее ориентироваться в группах по 8 байтов. Если в этот блок попадет кроме графики и еще что-то - ничего страшного. Просто не трогайте при редактировании ничего лишнего.

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

В некоторых случаях может оказаться удобнее просматривать файл блоками длиной по 4К. Для этого нужно изменить в программе одну строку и добавить две новые:

55 FOR ns0 ТО 2048 STEP 2048 60 FOR b*a+n TO a+n+224 STEP 32 105 NEXT n

Таким способом я русифицировал "геркулес". Рисовать символы, имея на экране весь символьный набор одновременно, оказалось очень удобно. Точно таким же образом я редактировал символьный набор принтера "IВМ-PROPRINTER II". Только символы на экране при этом оказались расположенными горизонтально, да еще и задом-напе-ред. Для того, чтобы они приняли более удобное положение, пришлось изменить несколько строк:

55 FOR П-2048 ТО 0 STEP -2048

60 FOR b»a+n+224 ТО a+n STEP

-32

70 FOR c=b+1792 TO b STEP -256

В таком виде программа начинает рисовать колонки снизу вверх.

Ну и, уж если речь зашла о принтерах, то хочу предложить еще одну программу, написанную моим сыном Андреем, которому тогда было 15 лет. Она предназначена для тех, кто пользуется редактором TLW2.

Этот редактор предназначен для работы с принтером, имеющим кодировку КОИ-7. Но очень многие принтеры ее не имеют. Предлагаемая программа перекодирует посылаемые на принтер коды из кодировки КОИ-7 в альтернативную. Ее можно разместить в любом свободном месте памяти и вызвать как подпрограмму из драйвера принтера непосредственно перед обращением к порту. Код печатаемого символа при этом находится в регистре А.

Для работы с этой программой нужно поместить в таблице УКП коды: рус. - 253, лат. - 254. Они служат для включения и выключения

ЧИТАТЕЛЬ-ЧИТАТЕЛЮ

ЧИТАТЕЛЬ-ЧИТАТЕЛЮ

00010

PUSH

AF

Сохранение регистра А на стеке.

00020

LD

A,(UK)

Проверка состояния флага UK

00030

CP

0

(управляющий код - символ).

00040

JR

Z,X2

Переход на Х2, если он сброшен.

00050

XOR

A

Сброс флага, если он установлен

00060

XI

PD

(UK),A

и выход с восстановлением А.

00070

JR

X6

00080

Х2

POP

AF

Восстановление А

00090

PUSH

AF

с сохранением его на стеке.

00100

CP

27

Установка флага UK

00110

JR

NZ,X3

если в А код 27.

00120

LD

A,1

00130

JR

XI

00140

ХЗ

CP

253

Установка или сброс флага RUS

00150

JR

NZ ,X4

(руссхий - латинский)

00160

LD

A, 1

если в А 253 или 254.

00170

JR

X5

00180

Х4

CP

254

00190

JR

NZ,X7

00200

XOR

A

00210

Х5

LD

(RUS),A

00220

POP

AF

Уменьшение SP для того, чтобы произошел возврат не в драйвер принтера, а сразу в редактор без печати кодов 253 и 254.

00230

Хб

POP

AF

Выход с восстановлением А.

00240

RET

00250

Х7

LD

A,(RUS)

Проверка флага RUS и переход к программе

00260

CP

1

перекодирования, если он равен 1,

00270

JR

Z,X8

в противном случае - выход

00280

JR

X6

с восстановлением А.

00290

Х8

POP

AF

00300

PUSH

ВС

Сохранение регистров на стеке.

00310

PUSH

DE

00320

PUSH

HL

00330

PUSH

AF

00340

LD

HL,KOI7

Загрузка в регистры

00350

LD

DE,ALT

адресов

00360

LD

B,63

и длины таблиц.

00370

Х9

LD

A,(HL)

Сравнение числа в А с числом

00380

LD

С ,A

в таблице KOI-7.

00390

POP

AF

00400

PUSH

AF

00410

CP

С

00420

JR

NZ,X10

Загрузка соответствующего числа

00430

POP

AF

из таблицы ALT при равенстве

00440

LD

A,(DE)

или переход к следующему числу.

00450

JR

Xil

00460

Х10

INC

HL

00470

INC

DE

00480

DJNZ

X9

00490

POP

AF

00500

XII

POP

HL

Выход с восстановлением регистров.

00510

POP

DE

00520

POP

ВС

00530

RET

1

ЧИТАТЕЛЬ-ЧИТАТЕЛЮ

00540

RUS

DEFB

00550

UK

DEFB

00560

KOI7

DEFB

00570

DEFB

00580

DEFB

00590

DEFB

00600

DEFB

00610

DEFB

00620

DEFB

00630

ALT

DEFB

00640

DEFB

00650

DEFB

00660

DEFB

00670

DEFB

00680

DEFB

00690

DEFB

О ;Флаг "РУССКИЙ - ЛАТИНСКИЙ".

О ;Флаг "УПРАВЛЯЮЩИЙ КОД - СИМВОЛ".

97,98,119,103,100,101,118,122,105,106

107,108,109,110,111,112,114,115,116,117

102,104,99,126,123,125,121,120,124,96

113,65,66,87,71,68,69,86,90,73

74,75,76,77,78,79,80,82,83,84

85,70,72,67,94,91,93,95,89,88

92,64,81

128,129,130,131,132,133,134,135,136,137 138,139,140,141,142,143,144,145,146,147 148,149,150,151,152,153,155,156,157,158 159,160,161,162,163,164,165,166,167,168 169,170,171,172,173,174,175,224,225,226 227,228,229,230,231,232,233,234,235,236 237,238,239

режима перекодировки. Для правильного использования команд управления принтером в любом режиме не перекодируется один байт после кода 27. Если требуется включить в текст команду принтера у которой третий байт больше 64, нужно заранее перейти в латинский алфавит.

При необходимости работать с "основной", "болгарской" кодировкой или КОИ-8, достаточно заменить вторую таблицу.




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Вступление - стихи, новогодние поздравления, и содержание номера.
Системки - история операционной системы CP/M для Спектрума (часть 1).
Part three - Вы мне должны деньги! - Извините, но это уже по моему усмотрению...
Фантастика - Что такое искусственныый pазум?
Реклама - реклама и объявления.

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