ZX Light #0C
17 мая 2000 |
|
(с) 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:
|
|
|
|
|
|
|
|
|
Similar articles:
В этот день... 21 November