(с) EraserAREAsoft 2000
Существует такая прога как Global
commander v1.31. Это очень прикольный ко-
мандир, но он имеет один злостный глюк -
во время копирования если вся информация
не умещается в буфер, то на диск приёмник
будет записана только та часть, которая
влезла в буфер. Причём в принимающем ката-
логе будут записаны имена всех копируемых
файлов, включая не yместившиеся в буфер.
Аналогичная ситуация и с операцией MOVE.
Об исправлении этого глючка и пойдёт
сегодня рассказ.
Для исправления GC потребуется pacnako-
вать кодовый блок с ядром командира. Затем
внести в него такие изменения:
1.
#5F26 CALL #6620
2.
#6620 DI
XOR A
LD (#707B),A
OR B
RET
3.
#6627 DEFB #31,#50
DEFB "`?` - HELP"
4.
#6576
LD HL,#6627
Затем записать исправленный блок на
диск и упаковать. После чего упакованный
блок можно вставлять обратно в командир
так же как и вытаскивали.
Исправленная таким образом версия ко-
мандира уже довольно давно гуляет по стра-
не. Отличить её от глюкавой можно по над-
писи:
`?` - HELP
вместо
Press `?` to help
----------------------------------
А сейчас очередная доработка самого
крутого ассемблера Alasm v4.1. На этот раз
мы его переделаем для работы на Scorpion`е
с памятью 1024 килобайта (расширение через
6,7 бит порта #1FFD - схема этого расшире-
ния находится в разделе "Железяки".
Проблема работы Alasm`а на ZS-1024
заключается в том, что невозможно запихать
драйвер памяти на все 64 странички в отве-
денные для этого 26 байт (максимум можно
сделать драйвер на 32 странички). Тем бо-
лее, что часть этих самых байтов заняты
подпрограммой запуска ассемблера из бейси-
ка. Но не всё так страшно как может пока-
заться на первый взгляд. B приложении вы
найдёте драйвер в формате Alasm`а и гото-
вый драйвер. Но для того, что бы этот дры-
вер заработал надо внести некоторые изме-
нения в тело Alasm`а. Вот листинг этой до-
работки.
#BFE0 LD D,А ;сохраняем номер страницы
AND #30 ;выделяем 2 бита
RLA ;переносим их в б,7 бит
RLA
LD L,А ;сохраняем резултaт вращения
LD А,D ;берем сохраненный номер страницы
AND 8 ;выделяем еще один бит
RLA ;вращаем - он пойдет в 4 бит
0R L ;объеденяеm с пред. результатом
LD L,А ;опять сохраняем
LD А,D ;снова берем номер страницы
AND 7 ;выделяем три младших бита
0R L ;объединяем все в кучу
JP #803F ;переход собственно на дрывер
B результате этих манипуляций на вход
драйвера будет приходить код страницы поч-
ти готовый для выдачи в порт. Надо будет
только разделить, какие биты в какой порт
кидать.
Вот формат кода страницы:
:) ABxCxPAG
ABC - биты выдаваемые в порт #1FFD, соот-
ветственно AB - 6,7 бит, а С - 4 бит
(стандартный скорпионовский) порта. Этими
только разделить, какие биты в какой порт
кидать.
Вот формат кода страницы:
:) ABxCxPAG
ABC - биты выдаваемые в порт #1FFD, соот-
ветственно AB - 6,7 бит, а С - 4 бит
(стандартный скорпионовский) порта. Этими
битами выбирается номер сегмента метровой
памяти. 3 бита - 8 сегментов по 128 кБ
PAG - биты выдаваемые в порт #7FFD - ими
выбирается номер странички в каждом сег-
менте.
Таким образом можно переделать ALASM
под любой стандарт расширения памяти - да-
же самый извращенный.
----------------------------------------
На этом позвольте откланяться.
До следующих "Мелочей".
Other articles: