ROCKSTAR
В нашем распоряжении оказа-
лась дисковая версия этой прог-
раммы, адаптированная Валентином
Озеровым в 1992 г. Речь пойдет о
ней. Сначала рассмотрим процеду-
ру, выполняющую модификацию сим-
вольного набора для получе-
ния оригинального стилизованно-
го шрифта.
Листинг процедуры:
1420.
61B4 21003D LD HL,#3D00
61B7 118890 LD DE,#9088
61BA 010003 LD BC,#0300
61BD EDB0 LDIR
61BF 218790 LD HL,#9087
61C2 1E60 LD E,#60
61C4 1D DEC E
61C5 0604 LD B,#04
61C7 23 INC HL
61C8 05 DEC B
61C9 7E LD A,(HL)
61CA 4F LD C,A
61CB 0F RRCA
61CC B1 OR C
61CD 77 LD (HL),A
61CE 78 LD A,B
61CF FE00 CP #00
61D1 C2C761 JP NZ,#61C7
61D4 0604 LD B,#04
61D6 23 INC HL
61D7 05 DEC B
61D8 7E LD A,(HL)
61D9 0F RRCA
61DA 4F LD C,A
61DB 07 RLCA
61DC 07 RLCA
61DD B1 OR C
61DE 77 LD (HL),A
61DF 78 LD A,B
61E0 FE00 CP #00
61E2 C2D661 JP NZ,#61D6
61E5 7B LD A,E
61E6 FE00 CP #00
61E8 C2C461 JP NZ,#61C4
61EB 21888F LD HL,#8F88
61EE 22365C LD (#5C36),HL
61F1 C9 RET
2
Старт процедуры происходит с
адреса загрузки: RANDOMIZE USR
25012. Число в команде по адре-
су 61B7H, задаваемое в регистр
DE, определяет адрес, в котором
будет происходить формирование
стилизованного символьного набо-
ра - 9088H (37000). Вначале сю-
да перебрасывается символьный
набор из ПЗУ. Если Вы захотите
изменить этот адрес, то обрати-
те внимание, что надо заодно из-
менить и число в команде по ад-
ресу 61BFH - оно на единицу
меньше, чем начало символьного
набора.
Числовой параметр в команде
по адресу 61C2H определяет чис-
ло символов, для которых будет
выполнено преобразование - 96.
Модификация верхней половины
символа происходит с адреса
61C5H по 61D1H, а нижней полови-
ны символа: c 61D4H по 61E2H
включительно.
После того, как формирование
нового символьного набора будет
завершено, происходит переключе-
ние на него системной перемен-
ной CHARS. Вы можете, в зави-
симости от конкретных обстоя-
тельств, исключить изменение
CHARS, забив NOP-ами команду по
адресу 61EEH.
Для получения блока кодов по
модификации символьного набора
можно воспользоваться Бейсик-
программой:
1 READ ram: CLEAR ram: READ f
$: READ st: READ len: FOR a=st T
O st+len-1: READ b: POKE a,b: NE
XT a: SAVE f$CODE st,len
10 DATA 25011,"ro1",25012,62
100 DATA
033,000,061,017,136,144,001,000,
003,237,176,033,135,144,030,096,
029,006,004,035,005,126,079,015,
177,119,120,254,000,194,199,097
110 DATA
006,004,035,005,126,015,079,007,
007,177,119,120,254,000,194,214,
097,123,254,000,194,196,097,033,
136,143,034,054,092,201