Optron
#21
27 ноября 1998 |
|
Кодинг - Тест доступной памяти. Управление банками памяти. Адаптация программ под Miko.
Miko-Best: с STS'ом в руках Иван Бугай, 1998 В этой статье мы с вами, дорогие читате- ли "Оптрона", вдохновясь примером Жанны Скальпив, попробуем подробнее разобраться с патогенным феноменом, известным под наз- ванием "Miko-Best 256kB". (Сразу же заме- чу, что "-Best" - это, скорее всего, тер- минологическая ошибка. Правильнее было бы "Miko-Suxx". Иначе как объяснить отношение производителей к своему детищу: ни инфор- мационной поддержки, ни программ.) Хотя сей феномен уже освещался (см. номера 7 и 8 "Оптрона"), вопрос требует дополнительного изучения. Для начала - небольшое уточнение У меня имеется Miko-Best 256kB v1.5 с двумя доработками: - OUT (#FD),A - работает нормально (ле- чится перешиванием ПЗУ, выполненного на РТ4, сие делали на фирме Мiko); - рубильник Miko-Pentagon (сие делал Рашпиль, премного ему блaгoдарен). А теперь - малость демагогии (или мои предположения) ROM 64Kb, в нём: 1 Мanager 2 TR-DOS 5.03 3 Basic 128 4 Basic 48 При начальном запуске или при сбросе уп- равление передаётся Manager, блокируется Magic, опрашиваются клавиши "R" и "T". "R" - запуск полного теста памяти. "Т" - телетест: тестируется содержимое #DB00 в банке #0D. Если оно не равно #АА55, то идет тест AY, Printer, Memory, и при его удачном завершении происходит вы- ход в меню. В противном случае проверяется, нажат ли пробел. Если да, то Miko Basic (и 48-й, и 128-й) работает из ПЗУ. Если не нажат, то Miko Basic перегружается в ОЗУ - банк #0C для 128-го и #0E для 48-го. В эти банки запрещается запись, и они проецируются с адреса #0000. Перейдем ближе к делу Управление ресурсами компьютера осу- ществляется через порт #DC: - BIT 0-3 - номер проецируемой страницы с адреса #8000; - BIT 4 - номер "линейки" из восьми бан- ков, проецируемых с адреса #C000; - BIT 5 - если "0", то вместо ПЗУ прое- цируется ОЗУ - банк #0C или #0Е, в зависи- мости от состояния четвёртого разряда пор- та #FD ("1" - #0E, "0" - #0C); - BIT 6 - если "0", то запись в сег- мент 0 разрешена (при условии, что сброшен BIT 5); - BIT 7 - eсли "1", то, начиная с адреса #4000, проецируется банк #0D, экран 0, а с адреса #C000 - экран 1, банк #0F. Порт #FD (есть мнение, что сего порта нет в помине, его отслеживание делается аппаратно и он эмулируется портoм #FC) - как в стандартном SPECCY 128. Порт #FC - эмулирует #FD с той разницей, что BIT 5 (защелка 48K) может переключать режимы 48/128. Все три названных порта доступны как на запись, так и на чтение. Практическое применение Вот небольшой отрывок из Miko comander: LD BC,#FFFC ;порт-аналог #FD IN H,(C) ;сохранили текущее LD A,#55 ;значение OUT (C),A IN L,(C) ;проверка, доступна CP L ;ли запись? JR NZ,NO_MIKO OUT (C),H ;восстановили LD DE,768 ;доступно памяти IN A,(#DC) ;вместо ПЗУ ОЗУ? BIT 5,A JR NZ,STANDART LD DE,704 ;если да, то LD A,#FF ;исключить из списка LD (TBANK+13),A ;доступных банков #0D BIT 5,H ;включен Basic 128? JR NZ,MODE_128 LD DE,640 ;если да - выкинуть LD A,#FF ;банк #0C LD (TBANK+12),A Так выглядит тест доступной памяти, а управление банками происходит так: LD HL,TBANK LD E,A ;в А виртуальный LD D,0 ;номер страницы ADD HL,DE LD A,(HL) CP #FF ;если не доступна - RET Z ;выход LD L,A AND #08 ;выделили третий бит RLCA ;и преобразовали его в LD H,A ;номер "линейки", IN A,(#DC) ;который отправляется AND %11101111 ;в четвёртый разряд OR H ;порта #DC OUT (#DC),A LD A,L AND #07 LD L,A IN A,(#FC) AND %11111000 ;три младших разряда в OR L ;номере банка - в OUT (#FC),A ;порт #FC (#FD) SCF RET ... TBANK DB 0,1,3,4,6,7,8,9 DB #0A,#0B,#0F,#0C,#0E,#FF Банк #0D не используется, поскольку там Manager хранит 4 байта идентификатора за- пуска, из-за чего теряется 16K (по-моему, это делать нецелесообразно). "И что же со всем этим делать?" - спро- сите вы. Ну, если вы хотите адаптиравать програм- му под Miko, то всё просто (к примеру, HC_3.08 - лучший командер на Speccy, даже на сегодняшний день): ORG #6F0F PUSH BC LD B,A LD A,(#5B75) EX AF,AF' LD A,(#5B90) ADD A,A JR C,PENT LD A,B AND #08 RLCA OR #62 OUT (#DC),A PENT LD A,B LD (#5B75),A AND #08 RRCA RRCA RRCA LD C,A LD A,B AND #07 ADD A,C OR #10 LD BC,#7FFD OUT (C),A EX AF,AF' POP BC RET В Option надо задать User page, а Autoload Оverlays - убрать (для 256K). Те- перь вы имеете 160кБ без RAM-Disk. На не- которое несоответствие информации относи- тельно Memory (программа сделана для, как минимум, 512K) не обращайте внимания. Если же программа сделана под порты Scorpion'а, то это сделать ещё проще. А что делать с четырьмя экранами? Можно, например, смотреть триколорные картинки: ORG #7800 LCODE "PICT" ORG #6000 BEGIN DI LD A,#17 LD HL,#7800 LD BC,#7FFD LD DE,#C000 OUT (C),A PUSH DE,BC LD BC,6144 LDIR PUSH HL LD HL,#D800 INC DE LD BC,767 LD A,(COLOR2) LD (HL),A LDIR POP HL POP BC,DE PUSH DE,BC LD A,#15 OUT (C),A LD BC,6144 LDIR PUSH HL LD HL,#D800 INC DE LD BC,767 LD A,(COLOR4) LD (HL),A LDIR POP HL POP BC,DE LD A,#72 OUT (#DC),A LD A,#17 OUT (C),A LD BC,6144 LDIR LD HL,#D800 INC DE LD BC,767 LD A,(COLOR1) LD (HL),A LDIR LD A,#62 OUT (C),A LD HL,#BE00 LD DE,#BE01 LD A,H LD (HL),#BF LD I,A LD BC,257 LDIR LD A,#C3 LD (#BFBF),A LD HL,#8000 LD (#BFC0),HL EX DE,HL LD HL,INT LD BC,COLOR1-INT LDIR IM 2 EI LD A,#15 OUT (#FD),A MAIN HALT CALL 8020 JR C,MAIN EXIT DI LD A,#62 OUT (#DC),A LD BC,#7FFD LD A,60 LD I,A IM 1 LD A,#10 OUT (C),A EI RET INT DI PUSH AF,BC,DE,HL,IX,IY EXX EX AF,AF' PUSH AF,BC,DE,HL LD BC,#7FFD LD HL,#151D LD A,#62 OUT (#DC),A LD A,0 WHO EQU #8000+$-1-INT OR A JR NZ,SK0 INC A SK0 DEC A JR NZ,SK7 OUT (C),H INC A JR QEX SK7 DEC A JR NZ,SK5F OUT (C),L INC A INC A JR QEX SK5F LD A,#E2 OUT (#DC),A LD A,#11 P1 DJNZ $ DEC A JR NZ,P1 XOR A DEC A QEX INC A LD (WHO),A LD A,#62 OUT (#DC),A POP HL,DE,BC,AF EX AF,AF' EXX POP IY,IX,HL,DE,BC,AF EI RET COLOR2 DEFB #42 COLOR4 DEFB #44 COLOR1 DEFB #41 Здесь и считать не надо: почти всё время компьютера - в вашeй власти. Сей отрывок взят из программы 3C-studio, которую я на- писал ещё год назад (полноэкранный редак- тор триколорных картинок). В принципе, в ней уже можно раскрашивать любые картинки. Если кто-то изъявит желание, то я её допи- шу. Кстати, такой редактор можно написать и для Speccy 128 (использовав одну треть эк- рана для редактирования), проблем здесь нет. Перспектива Неплохо было бы сделать перехват Magic'а или Reset'а: это вполне реально. При по- ступлении сигнала NMI вместо ПЗУ ТR-DOS подставляем страничку ОЗУ, а там выбираем Magic, Debuger и т.п. Ещё хорошо бы в ПЗУ вместо Manager'а за- шить свою программу. В общем, нужен программатор. А там - попробуем, что получится. ──══════════── ──══ P.S. от Рашпиля ══── Конечно, заменить малополезный Manager чем-то "более другим" заманчиво, но не спешите, уважаемые пользователи Miko: "Не зная броду, не суйся в воду". Просто так взять и зашить что-то в ПЗУ, предназначен- ное для работы в Miko Best, не выйдет! Оказывается, разработчики этого компью- тера додумались перепутать шину данных ПЗУ и процессора! Вот табличка, из которой яс- но, что к чему: ROM CPU D0 (11) D2 (12) D1 (12) D7 (13) D2 (13) D0 (14) D3 (15) D1 (15) D4 (16) D5 (9) D5 (17) D3 (8) D6 (18) D4 (7) D7 (19) D6 (10) В скобках я указал номера выводов соот- ветствующих микросхем. Как видно из таблички, просматривается некая закономерность именно такого распо- ложения шин. До такого, скорее всего, до- думался какой-нибудь нерадивый разработ- чик, решивший сэкономить пару переходных отверстий, пустив все дорожки паралельно. Или, может быть, это так "шифруют" инфор- мацию? А в качестве замены Manager'а я бы посо- ветовал попробовать прошивку Gluk Reset Service; ее можно заказать на Tree of Life BBS. Если же у Вас нет программатора, то для прошивки ПЗУ можете обращаться к С.Филимо- нову. Его координаты, равно как и коорди- наты автора этой статьи вы найдёте на страничке About. ──══════════──
Другие статьи номера:
ZX-Обоз - Обзор электронной прессы: Pilot 29, CNet Week 17, Born Dead 1-4, Maximum 47, Nicron 104. |
Железо - Много функций на одном теле (об АОН'ах). |
Железо - Обзор качества дискет. |
Кодинг - Тест доступной памяти. Управление банками памяти. Адаптация программ под Miko. |
Ликбез - Ассемблер: Взгляд издалека (продолжение). |
Реклама - Реклама и объявления... |
Четыре килобайта - О тематических выпусках Оптрона: Железо и кодинг. |
Похожие статьи:
В этот день... 21 ноября