Просмотр полной версии : Научить Скорпион понимать OUT (#FD),A. Как?
Evgeny Muchkin
09.01.2007, 16:49
Вот такой дурацкий вопрос :)
Схема из ZX-Format для отключалки порта 1ffd всем известна, но вопрос немного в другом, а именно: Можно ли научить Скорпион понимать OUT (#FD),A , при этом не отключая 1ffd ? Т.е. чтобы не нужно было тыкать каждый раз кнопку блокировки скорповского порта.
Возможно глупость говорю, но все же... ;)
SAM style
09.01.2007, 17:03
Вот такой дурацкий вопрос :)
Схема из ZX-Format для отключалки порта 1ffd всем известна, но вопрос немного в другом, а именно: Можно ли научить Скорпион понимать OUT (#FD),A , при этом не отключая 1ffd ? Т.е. чтобы не нужно было тыкать каждый раз кнопку блокировки скорповского порта.
Возможно глупость говорю, но все же... ;)
На скорпе все порты вида #XXFD дешифруются по A14,A15 после дешифрации самого #FD.
00 - 1ffd
01 - 7ffd
10 - bffd
11 - fffd
при выводе out (#fd),a порт определяется старшими битами A. вот отсюда и плясать надо.
нарисуй проблему поподробнее - где конфликт?
в каком-то старом журнале предлогали декодить код команды и, если это out (xx),a - отрубать 1ffd. можно еще и аргумент проверять, но схема много более гиморная получится.
Максагор
09.01.2007, 21:00
http://atmturbo.nedopc.com/dev_fd.htm - (самая первая картинка) там, правда, сделано под порт #FDFD на ATM-turbo 1, но переставив адрсные линии можно сделать и под #1FFD - сам принцип, заключающийся в распознавании на шине команды OUT (N),A (и только ее - по соответствующим битам данных и сигнала M1) и отрубание на время ее исполнения соответствующих "лишних" линий адреса, остается неизменным. При этом, при исполнении "полных" команд вывода в порт типа OUT (C),A, эти биты не блокируются.
Вот реальная возможность обойтись без тумблера.
Evgeny Muchkin
09.01.2007, 22:11
Максагор именно то что нужно! Спасибо!
Но к сожалению, я не смогу самостоятельно перепридумать это дело под скорпион. :(
Помогите кто-нибудь, пожалуйста. Дело для спеца на 2 минуты ведь. :)
Заранее спасибо.
А чего ж этого Зонов сразу не сделал ?
Evgeny Muchkin
09.01.2007, 22:25
А чего ж этого Зонов сразу не сделал ?
Наверное, сначала просто не подумал о возможных проблемах, а уже потом при проектировании зеленой платы просто поленился. ;)
deathsoft
09.01.2007, 22:39
А чего ж этого Зонов сразу не сделал ?
Цитата с сайта http://scorpion.ru/spectrum/hard/plataSCT.htm
Единственное из того, что надо было бы сделать и не сделано на плате Turbo+ , это возможность блокировки порта 1FFDh при обращении к другим системным портам по укороченному адресу FDh. Не будем здесь долго останавливаться на том, как правильно обращаться к порту, имеющему адрес 7FFDh, и как будут работать программы, использующие укороченную адресацию, на фирменных компьютерах ZX Spectrum +2, +2A, +3. Пусть это останется на совести тех наших программистов , которые экономят байты там, где в этом нет ни малейшей необходимости. Поскольку, на наш взгляд, от этого не должен страдать пользователь компьютера, то наряду с призывами к программистам использовать правильную адресацию, мы хотим порекомендовать тем, кто уже имеет Scorpion или еще только думает о его приобретении собрать одну из уже многочисленного количества опубликованных схем блокировки порта 1FFDh. Прежде всего, советуем обратиться к журналу ZX Format N1(Раздел “Железо”) Поскольку свободного места для расширений доработок и исследований на плате Scorpion Turbo+ оставлено предостаточно, то такого рода доработки при наличии подробной документации ( см.ниже) не составят труда для тех, кто пожелает их сделать.
Black_Cat
10.01.2007, 02:45
Как понимаю надо определиться что исправляем, только 1ffd или все порты с расширенной адресацией. В первом случае через упомянутую Максагором схему пропускаем строб записи C(9 нога) на ТМ9 1ffd порта (DD47), но только не через элемент 2ИЛИ (ЛЛ), а через 2И (ЛИ), притом что второй его вход подключать к 9 ноге ТМ2 (неинверсный выход). Во втором случае вообще этот элемент не нужен и выход 9 ТМ2 подключаем к ноге 6 DD52 ИД7, предварительно оторвав её от +5, или соответственно выход 8 ТМ2 подключаем к ноге 5 DD52 ИД7, предварительно оторвав её от земли - как тебе будет удобней.
Как понимаю всёж тебе надо первый вариант, при этом для 7ffd, bffd, fffd останется возможность укороченной адресации, а для 1ffd - только двухбайтной.
Evgeny Muchkin
10.01.2007, 10:33
Проверьте пожалуйста, все ли я правильно понял и нарисовал?
http://i19.photobucket.com/albums/b175/muchast/fd_blk.gif
Максагор
10.01.2007, 10:38
Максагор именно то что нужно! Спасибо!
Но к сожалению, я не смогу самостоятельно перепридумать это дело под скорпион. :(
Помогите кто-нибудь, пожалуйста. Дело для спеца на 2 минуты ведь. :)
Заранее спасибо.
Плиз, выложите сюда вырезанный кусок скана схемы скорпа, где указана дешифрация страничного порта скорпа. Хочу посмотреть точно, какие битики там заюзаны. После этого нарисовать измененную схему - дело пары минут...
Evgeny Muchkin
10.01.2007, 10:57
Вот полностью схема (просто я не знаю, что вырезать ;)). На ней вместо DD47 (так на зеленом, видимо) ТМ9 пронумерована как D49 (в левом нижнем углу находится.)
Black_Cat
10.01.2007, 16:44
все ли я правильно понял и нарисовал?Всё правильно ты понял, но всёж по первому варианту не получится, т.к. в регистр данные пишутся по фронту , а не по уровню. Поэтому правильно будет работать модифицированный второй вариант - напаять поверх дешифратора ИД7 ещё один (при этом припаивать только входы и питание, кроме вывода 6, который у тебя судя по исправлениям на схеме припаян проводом). На этот вход подавать сигнал через схему по первому варианту (т.е. через ЛИ1) 15 вывод дешифратора, с которого идёт строб на запись в регистр 1ffd - отрезать и подключить к аналогичной ноге на дешифраторе со второго этажа.
Evgeny Muchkin
10.01.2007, 22:23
Всё правильно ты понял, но всёж по первому варианту не получится, т.к. в регистр данные пишутся по фронту , а не по уровню. Поэтому правильно будет работать модифицированный второй вариант - напаять поверх дешифратора ИД7 ещё один (при этом припаивать только входы и питание, кроме вывода 6, который у тебя судя по исправлениям на схеме припаян проводом). На этот вход подавать сигнал через схему по первому варианту (т.е. через ЛИ1) 15 вывод дешифратора, с которого идёт строб на запись в регистр 1ffd - отрезать и подключить к аналогичной ноге на дешифраторе со второго этажа.
Мда, Ты меня запутал совсем :) Боюсь, что не отважусь такую схемищщу напаивать... :(
Black_Cat
10.01.2007, 22:37
такую схемищщу напаивать...Чё там за схемища.. на одну МС больше, да и та вторым этажом стоит, места не занимает и лишних проводов не создаёт. Если оч критичны корпуса, то можно ужать. У тя на плате должны быть свободны D58.2, D58.5-ЛН1, D57.1, D57.2-ЛА3, если ты их не занял, то тогда нужно дополнительно только ЛА2, ТМ2 и ИД7. Могу такой вариант предложить.
Evgeny Muchkin
11.01.2007, 09:08
Black_Cat, а может есть возможность зацепиться за какой-нибудь адресный сигнал (а не за CS1FFD), как у Масагора на схеме.
PS: Вторым этажом у меня стопроцентно сопли по плате побегут ;) Боюсь так делать.
Black_Cat
11.01.2007, 18:04
Как понимаю основная проблема - это использование в некоторых прогах команды OUT (#FD),A для адресации порта 7ffd из-за чего возникают проблемы со всей группой портов xxfd. В результате получается что 7ffd надо разрешить срабатывать и на полные и на укороченные адреса, а 1ffd(и судя по всему все остальные тоже) - только на полные. Это можно сделать только разделив выборку этих портов на две ветки - отдельно для 7ffd, отдельно для всех остальных xxfd, что я тебе и предлагаю. На скорпе, при наличии указанных неиспользованых элементов на плате, это меньше чем тремя доп. корпусами мелкой логики не организовать. В напаивании ИД7 вторым этажом не вижу никаких проблем. Вобщем пиши, если есть желание и неиспользованные элементы то сделать можно.
отдельно для 7ffd, отдельно для всех остальных xxfd
раньше также было много любителей адресовать AY по 0b101xxxxx #FD. это нужно главным образом диджитал звукам
Black_Cat
11.01.2007, 20:36
раньше также было много любителей адресовать AY по 0b101xxxxx #FDБез проблем - можно отдельно выбирать 1ffd, а отдельно все остальные 7ffd, bffd, fffd или в любой другой комбинации - на количестве элементов это не скажется.
Наткнулся сейчас на эту тему и решил отписаться. Доработка желтого скорпа: Схема доработки дешифрации порта #FD (http://zxpress.ru/article.php?id=11679). После нее заработали всяческие демки использующие переключение страничек через out (#fd),a. Возможно эта информация кому-то еще пригодится.
А мой зеленый скорп, в свое время, был доработан вот по этой схеме:
USERHOME
06.09.2013, 20:41
Не в тему но всёж.
При использовании SHADOW ROM в Scorp 256, при отладке SHOCK128 было обнаружено следующее... На Intro где "Etanol software" и рисунок руля...
При нажатии на SPACE прога висла, пошагово из теневого монитора я обходил эту неприятность , А вот дальше всё что написали поляки работало по пробелу.
Хотя там тоже переключение идёт по OUT (253),A ......????
И проблемка была в следующем, если бы программисты учитывали нюансы, то проблем бы не было.
Выглядит так:
LD A,16 + (номер страницы)
OR 64 = (Команда снимает все проблемы и такты переключения порта остаются неизменными....CodeBusters об этом не знали и у владельцев ZS-256 нет возможности посмотреть многие демки)
OUT (253),A
ИИииии проблем со Scorpion 256 НЕТ!
Поляки молодцы! знали весь "цинус" Z-80
То что попало в регистр LD A,n выводится на ША в старшую тетраду. А команда OUT (253),A выводит на ША проца в младшую тетраду.
Я у себя сделал просто отключение по кнопке этого порта (иногда помогает пройти дальше, чем в стандартной ситуации)
P.S. Если Вы пошагово отлаживайте в теневом мониторе програмку, то перед командой OUT 253,A нужно в регистре A включить 6-ой бит (редактированием регистра A ну типа из командной строки монитора..)
нужно в регистре A включить 6-ой бит (редактированием регистра A ну типа из командной строки монитора..)
Это давно известный прием, на самом деле! :-) Но, все эти кнопки, тумблеры... Прелесть способа, который я привел в предыдущем посте в том, что на Scorpione начинает работать такой прием как ld a,#10 : out (#fd),a безо всякого 6-го бита.
Evgeny Muchkin
18.11.2016, 23:07
Прелесть способа, который я привел в предыдущем посте
В том, что он дал ответ на тему всего топика :)
По вышеприведённой схеме: DD52:2 - это сигнал A14 по схеме зелёного, правильно?
pavel_1977
02.02.2017, 08:55
Подскажите в схеме выделенный элемент должен быть "2И" или схема с ошибкой и должен быть "2И-НЕ"
59623
null_device
02.02.2017, 14:43
в схеме выделенный элемент должен быть "2И" или схема с ошибкой и должен быть "2И-НЕ"
pavel_1977, похоже на то.
pavel_1977
08.02.2017, 14:26
Как и предполагал: в схеме ошибка. Проверено на своем Scorpion-е.
Вот исправленные схемы.
А в каком журнале эти схемы приведены? Особенно интересует для зелёного скорпа.
Сделал себе на новодельный скорп такую схему в GAL'ке, всё отлично заработало. Корпусов меньше, паять проще. А то вариант с триггером никак не хотел работать.
Как и предполагал: в схеме ошибка. Проверено на своем Scorpion-е.
Вот исправленные схемы.
Спасибо за исправленные схемы, видимо Дмитрий (автор доработки) проглядел ошибку при рисовании схемы в ArtStudio. В железе и у него (на желтом скорпе) и у меня (на зеленом) все работало.
А в каком журнале эти схемы приведены? Особенно интересует для зелёного скорпа.
Для желтого скорпа схема была опубликована в журнале RealTime#2. Для зеленого скорпа схема в журнале не публиковалась, должна была быть в RealTime#3, но увы... Но скриншот схемы был подготовлен.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot