Схема дешифрации стандартных портов
|
|
Hazar | Дата: Четверг, 10.01.2013, 13:26 | Сообщение # 1 |
80h
Группа: Пользователи
Сообщений: 231
Статус: Offline
| решил разработать более полную схему дешифрации стандартного ZX-Spectrum 48 /128
Spectrum жив в нашей душе навсегда
|
|
| |
Black_Cat | Дата: Четверг, 10.01.2013, 15:50 | Сообщение # 2 |
Координатор
Группа: Координаторы
Сообщений: 731
Статус: Offline
| Не покатит. Спектрум - это не IBM PC, у него изначальным стандартом является неполная дешифрация портов, и криворукое программирование, использующее обращения по нестандартным адресам. С такой дешифрацией, у тя куча прог работать не будут. Смотри дешифрацию у KAY-1024, там она наиболее правильная, хотя в компах на FPGA можно сделать ещё более правильную - там не надо экономить логику
"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!". "Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло." Гарри Трумэн
|
|
| |
Hazar | Дата: Пятница, 11.01.2013, 06:28 | Сообщение # 3 |
80h
Группа: Пользователи
Сообщений: 231
Статус: Offline
| Цитата (Black_Cat) изначальным стандартом является неполная дешифрация портов, и криворукое программирование, использующее обращения по нестандартным адресам. С такой дешифрацией, у тя куча прог работать не будут
Тогда может сделать анализатор портов и адресного пространства (по IORQ) и каждый раз проводить проверку, далее по результатам делать пере-адресацию . И тогда все будет работать
Spectrum жив в нашей душе навсегда
|
|
| |
Black_Cat | Дата: Пятница, 11.01.2013, 08:33 | Сообщение # 4 |
Координатор
Группа: Координаторы
Сообщений: 731
Статус: Offline
| Цитата (Hazar) Тогда может сделать анализатор портов и адресного пространства (по IORQ) и каждый раз проводить проверку, далее по результатам делать пере-адресацию
для Спектрума достаточно хорошей документации и корректной схемотехники. Так было, есть, и будет всегда
"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!". "Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло." Гарри Трумэн
|
|
| |
Hazar | Дата: Пятница, 11.01.2013, 09:04 | Сообщение # 5 |
80h
Группа: Пользователи
Сообщений: 231
Статус: Offline
| Цитата (Black_Cat) изначальным стандартом является неполная дешифрация портов
Ну и как подключить к спектруму новое устройство которое использует 3 порта ХХХХ (HHex)
Spectrum жив в нашей душе навсегда
|
|
| |
Hazar | Дата: Суббота, 12.01.2013, 20:54 | Сообщение # 6 |
80h
Группа: Пользователи
Сообщений: 231
Статус: Offline
| Добавил дешифрацию для Spectrum +3
Spectrum жив в нашей душе навсегда
Сообщение отредактировал Hazar - Воскресенье, 13.01.2013, 06:18 |
|
| |
Hazar | Дата: Суббота, 12.01.2013, 21:00 | Сообщение # 7 |
80h
Группа: Пользователи
Сообщений: 231
Статус: Offline
| Stránkování paměti
Расширение памяти
Поскольку процессор Z80 может адресовать только 64 КБ памяти, весь размер памяти 192 КБ разделен на страницы размером 16 КБ, которое připínají в адресном пространстве процессора. Адреса от 0 до 16383 подключены к одному из четырех страниц ROM памяти с адреса 16384 до 32767 прилагается страница 5 из оперативной памяти с адреса 32768 по решению 49151 связана стр. 2 RAM и адреса от 49152 до 65535 может обратиться подключить любую из восьми страниц памяти, в том числе участки № 2 и № 5 [5] Кроме того, память может быть настроена в систему allram, когда весь спектр адресов только в составе оперативной памяти. Компьютер имеет два VideoRam, один из которых расположен на странице 5 а другая расположена на странице № 7
Схема расширения памяти компьютера Sinclair ZX Spectrum +3
Spectrum жив в нашей душе навсегда
Сообщение отредактировал Hazar - Воскресенье, 13.01.2013, 05:29 |
|
| |
Hazar | Дата: Пятница, 25.01.2013, 14:46 | Сообщение # 8 |
80h
Группа: Пользователи
Сообщений: 231
Статус: Offline
| для расширения памяти используется порт 32765 и 8189 Значение каждого бита значения передаются в порт 32765, выглядит следующим образом:
Подержанные порты [6] десятичной, шестнадцатеричной важность декодирования Používané porty[6] desítkově šestnáctkově dekódování význam 254 FE xxxxxxx0 klávesnice, magnetofon, reproduktor, barva okraje 4093 0FFD 0000xxxx xxxxxx0x paralelní port 8189 1FFD 0001xxxx xxxxxx0x stránkování paměti 12285 2FFD 0010xxxx xxxxxx0x stavový registr řadiče disketové jednotky 16381 3FFD 0011xxxx xxxxxx0x datový registr řadiče disketové jednotky 32765 7FFD 01xxxxxx xxxxxx0x stránkování paměti 49149 BFFD 10xxxxxx xxxxxx0x data hudebního čipu AY 65533 FFFD 11xxxxxx xxxxxx0x výběr datového registru hudebního čipu AYДобавлено (25.01.2013, 14:46) --------------------------------------------- распространенные стандарты памяти Для переключения памяти в Scorpion, KAY, Profi и ATM1 используется 2 порта - это #7ffd (0, 1 и 2-ой биты) + биты дополнительного порта. Для Pentagon и ATM2 используется один порт (только #7ffd). --------- Pentagon --------- 256K - используется 6-ой бит #7FFD 512K - используются 6 и 7 биты #7FFD 1024K - используются 5, 6 и 7 биты #7FFD 4096K - используются 5, 6, 7 биты #7FFD + 0,1 биты #AFF7 Примечание насчет последних двух: 5-ый бит в оригинальном спектруме служит для отключения порта #7FFD, посему есть вероятность оказаться в 48-ом режиме. ------------ Scorpion/KAY ------------ 256К - используется 4-ый бит #1FFD (Scorpion и KAY) 512K - не бывает 1024K Scorpion - используются 4, 6 и 7-ой биты #1FFD 1024K KAY - используются 4 и 6 биты #1FFD + 6-ой бит #7FFD ----- Profi ----- 256К-1024К - используются 0, 1 и 2 биты #DFFD Примечание: На Profi физически присутствует 4 линейки памяти (значения 0,1 2,3 4,5 и 6,7 в порту #DFFD). Линейки могут быть запаяны как РУ5 (64Кб), так и РУ7 (256Кб). Если памяти 1Мб, то все просто - стоит 4 линейки по 256Кб. Но большое количество Profi имеет 256К, 512К, 768К и 576К(!) памяти. Например, в Profi 576K используется 0,1,2,3 банки и четверть 7-ой банки памяти. ----- ATM-1 ----- 256К - не бывает 512K - используются 0 и 1 биты #FDFD 1024К - используются 0, 1 и 2-ой биты #FDFD Насчет 1024K: на оригинальном ATM-1 всегда было только 512Кб. 2-ой бит порта #FDFD использовался при подключении ПЗУ объемом не 64Кб (27512) как обычно, а 128Кб (271000). Он выбирал дополнительные 4 странички. Но этот наворот практически никогда и нигде не использовался, даже в ATM-2 (хотя сейчас разрабатывается новое ПЗУ на все 128Кб для ATM-2, но не для ATM-1). Так что этот бит практически являлся неиспользуемым, что и позволило народным умельцам его задействовать. То есть стандарт неофициальный.
----- ATM-2 ----- 256К и 512К - может и были, но я никогда не слышал 1024K: есть 2 способа адресации страниц: с использованием #7ffd+#fff7 и только через #fff7. В #fff7 биты записываются инвертированные! Раскладка битов порта #FFF7 такая: 0-5 - номер страницы (0-63). 6 - определяет, что это за страница: 0 - ROM, 1 - RAM 7 - Определяет сочетание #FFF7 и #7FFD. А именно: 0 - определяет страницы только порт #FFF7, а 1 - инвертированные D0-D2 порта #FFF7 заменяются на неинвертированные D0-D2 из порта #7FFD. Биты старше них продолжают браться из порта #FFF7. Сам порт #FFF7 доступен только из TR-DOS ПЗУ. Биты в него записываются инвертированные! Пример работы: LD BC,#FFF7 LD A,n CPL CALL OUTC ... OUTC LD HL,#2A53 ;здесь OUT ©,A:RET PUSH HL JP #3D2F
Spectrum жив в нашей душе навсегда
Сообщение отредактировал Hazar - Воскресенье, 13.01.2013, 06:20 |
|
| |
Black_Cat | Дата: Пятница, 25.01.2013, 16:03 | Сообщение # 9 |
Координатор
Группа: Координаторы
Сообщений: 731
Статус: Offline
| Цитата (Hazar) Pentagon --------- 256K - используется 6-ой бит #7FFD 512K - используются 6 и 7 биты #7FFD 1024K - используются 5, 6 и 7 биты #7FFD 4096K - используются 5, 6, 7 биты #7FFD + 0,1 биты #AFF7 Пент с 256к никогда не выпускался, были токо 128, 512, 1024. Про #AFF7 - не факт. Цитата (Hazar) 1024K Scorpion - используются 4, 6 и 7-ой биты #1FFD Это любительская доработка, фирмой Скорпион не поддерживалось ничего кроме 256к.
Цитата (Hazar) 1024K KAY - используются 4 и 6 биты #1FFD + 6-ой бит #7FFD Вааще-то D7 #1FFD и D7 #7FFDЦитата (Hazar) Примечание насчет последних двух: 5-ый бит в оригинальном спектруме служит для отключения порта #7FFD, посему есть вероятность оказаться в 48-ом режим Для Пента более 128к для таких случаев есть порт #EFF7
"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!". "Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло." Гарри Трумэн
|
|
| |
Hazar | Дата: Пятница, 25.01.2013, 17:15 | Сообщение # 10 |
80h
Группа: Пользователи
Сообщений: 231
Статус: Offline
| Цитата (Black_Cat) 1024K KAY - используются 4 и 6 биты #1FFD + 6-ой бит #7FFD
Вааще-то D7 #1FFD и D7 #7FFD даа - вот везде пишут по разному
по портам ZX Spectrum +3 то хоть все правильно написал?
Spectrum жив в нашей душе навсегда
|
|
| |
Hazar | Дата: Пятница, 25.01.2013, 17:23 | Сообщение # 11 |
80h
Группа: Пользователи
Сообщений: 231
Статус: Offline
| В продолжении темы я немного подправил старую статью которая публиковалась в ZX-Element-SpellBbinder Ни для кого не секрет, что дополнительные порты в компьютерах кроме преимуществ ( дополнительная память, отключение ПЗУ ит.д.) приносят пользователям и головную боль, а именно необходимость их блокировки. В противном случае не идут некоторые проги и демы. Предлагаемые схемы борьбы с этим заключаются в жесткой дешифрации данных портов и являются полезным дополнением к схеме компьютера, однако не решают проблемы полностью. При обращении к портам по короткой адресации все равно возникают проблемы. Например: LD A,#DF OUT (#FD),A сработает порт у ПРОФИ (#DFFD). Еще более печальная ситуация на СКОРПИОНАХ : STS 3.3 делает так LD A,#1F OUT (#FD),A он конечно-же хочет включить 7-й банк, но по иронии судьбы (или создателей СКОРПИОНа) откликается порт #1FFD и компьютер благополучно зависает. О ПЕНТАГОНАХ-512 я уже и не говорю. Предлагаемая схема "отслеживает" команды короткой адресации и блокирует, на время ее выполнения, все критичные порты. Что позволяет не пользоваться кнопками блокировки портов. Схема работает элементарно: команд короткой адресации всего две: это IN A,(NN) - #DB и OUT (NN),A - #D3. Они отличаются всего одним битом - D3, его мы просто не заводим.При появлении на шине данных байта #DB (1101 1011) или #D3 (1101 0011) на выходе ЛА2 появится логический 0. Если этот байт код операции, извлекаемой процессором, то сигналом М1 он зафиксируется в ТМ2 до следующего цикла извлечения кода операции. Если процессор считает любую другую команду, то в ТМ2 зафиксируется логическая 1. Данный сигнал (BLOK) используется для блокировки критичных портов. А так-же для управления жесткостью дешифрации других портов (например #7FFD и муз. сопроцессора) позволяя иметь жесткую дешифрацию при длинной адресации и упрощенную при короткой. Данная схема опробована на компьютера ПРОФИ и СКОРПИОН и показала прекрасные результаты.
Spectrum жив в нашей душе навсегда
Сообщение отредактировал Hazar - Пятница, 25.01.2013, 20:09 |
|
| |
Black_Cat | Дата: Пятница, 25.01.2013, 22:48 | Сообщение # 12 |
Координатор
Группа: Координаторы
Сообщений: 731
Статус: Offline
| Цитата (Hazar) Предлагаемая схема "отслеживает" команды короткой адресации и блокирует, на время ее выполнения, все критичные порты.
http://zx.clan.su/forum/8-66-553-16-1336469313
"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!". "Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло." Гарри Трумэн
|
|
| |
Hazar | Дата: Вторник, 29.01.2013, 14:36 | Сообщение # 13 |
80h
Группа: Пользователи
Сообщений: 231
Статус: Offline
| Текущий проект по портам с учетом идей рассмотренных в этой теме
Spectrum жив в нашей душе навсегда
Сообщение отредактировал Hazar - Вторник, 29.01.2013, 18:37 |
|
| |
|