ДОРАБОТКА "TASM 128". Цель этого письма - помочь владельцам "Скорпионов", "АТМ" и др. Прочитав раздел "FORUM" в ZX РЕВЮ 95/4, где пишет Павел Ляховский, я решил помочь ему и всем остальным, у которых не работает "TASM-128".
Вообще существует этот пакет, который работает на "Скорпионе". Он иногда "зашивается" в ROM-диск этого компьютера. Теперь ближе к делу:
Программа TASM 3.0 не работает, потому, что обращение к порту #7FFD идет как обращение к порту #FD.
Чтобы изменить программу TASM 3.0, нужно загрузить кодовый блок TASM 3.0 - под адрес 49152, далее изменить следующие ячейки памяти:
#C019=#C3 8 #C01A=#40 JP 23872 #C01B=#5D -#C022=#C3 8 #C023=#50 JP 23888 #C024=#5D -
Далее выгрузите программу - SAVE "TASM 3.2" CODE 49152, 10448
Если Вы не производили изменений, о которых написано в ZX РЕВЮ 95/5, то их сделать тоже необходимо для работы с TASM'ом.
Далее необходим специальный загрузчик.
1. Наберите строку : 255 REM 34-пробела.
2. В сформированной строке отассемблируйте программу с адреса 23872:
LD |
(23904),BC |
LD |
BC,#7FFD |
OUT |
(C) , A |
LD |
BC, (23904) |
JP |
#C000 |
LD |
(23904),BC |
LD |
BC,#7FFD |
OUT |
(C) , A |
LD |
BC, (23904) |
JP |
49190 |
DEFW |
#FFFF |
3. Объедините по MERGE в TR-DOSS эту строку с загрузчиком пакета - TRACK 2&3.
4. Сотрите все строки, кроме нулевой и 255-ой.
5. Дайте POKE 23952,0.
И осталось набрать бейсик-строки следующего содержания:
10 POKE VAL "23693",VAL "7": POKE VAL "23624",VAL "7": OUT CODE "RETURN",NOT PI: OUT VAL "32765",VAL "20": RANDOMIZE USR VAL "15619": REM : LOAD "TASM3.2"CODE VAL "49152",VAL "10448"
20 OUT VAL "32765",VAL "20": RANDOMIZE USR VAL "49152": STOP
Для владельцев "Скорпионов" посоветую еще набрать следующую строку:
30 POKE 16384,243: POKE 16385,118: POKE 16386,251: POKE 16387,201: RANDOMIZE USR 16384
Эта строка обеспечивает вход в SHADOW MONITOR. Даете RUN 30, нажимаете MAGIC, отлаживаете свою программу и, по команде JP C в мониторе или "CONTINUE PROGRAM", выходите в BASIC.
Теперь загрузчик Вы написали, можете его выгружать: SAVE "TASM 3.2". Вот и все. После этих изменений ассемблер работает на любых компьютерах.
Приведенный мною фрагмент занимается коммутацией страниц при подаче команд: O,Q,R,S. Он раньше располагался с адреса 23597, и выглядел так: L1 JP 49152 (49190)
LD A,2 0
L2 OUT (253),A
JR L1
Обращение к порту #FD вынужденное, иначе этот резидент "залезает" в важные области системных переменных. Я, в свою очередь, заменил команду OUT (253),A и кусочек JR L1 на JP 23872 (23888), где и происходит корректное переключение порта #7FFD.
После всех выше перечисленных изменений программа работает просто великолепно!!!
© О. Литвинов.