P.P.S. Если уже строить ISA-8 плату, то надо строить универсальную, чтобы в IBM PC тоже работало - поэтому надо будет делать защёлкивание адреса по BALE и т.д. http://www.hardwarebook.info/ISA
Ну может быть повторное защёлкивание адреса на самой плате это и лишнее, но при зашумлённой шине (как на Спринтере) думаю норм.
P.S. Вот вроде закончил переходничок с защёлкой адреса, проверкой на A19=A18=1 и сравнением битов A14-A17 c четырьмя проводочечными джамперами (вариант когда джамперов нет даёт диапазон F0xxx...FFxxx, который устанавливается биосом при старте Спринтера, т.е. его можно считать режимом по умолчанию):
Вобщем как я и написал чуть выше, я делаю SprinterNet - Ethernet для Спринтера, который начинался в 2016 году как Ethernet для TS2068 (по идее можно сделать единую PCB от которой надо будет отпиливать лишние части, чтобы получить либо SprinterNet-ISA8, либо SprinterNet-TS2068). На борту кроме модуля WizNet (на базе W5100) есть 8 GPIO (пока только 3 на вход и 8 на выход), 2Кб ОЗУ, 8Кб ПЗУ, SPI EEPROM 25C320 на 4КБ (для хранения MAC-адреса и настроек сети - можно наверное память и побольше поставить, например 25LC1024 на 128КБ, тогда её можно как квазидиск задействовать) и, в будущем, слот для SD-карточки. ПЗУ чтобы сразу иметь "драйвера" без необходимости что-то доустанавливать в DSS, а ОЗУ - для хранения рабочей области переменных для этих самых "драйверов". Можно даже единый код иметь для Спринтера и Timex Sinclair 2068, определяя тип машины программно
Минимальный набор драйверов - функции работы с BSD-сокетами, чтобы можно было программировать любые TCP/IP примеры "из книжки", а также функции работы с EEPROM (чтобы давать пользователю функции, обходящие запрещённые зоны, где хранятся MAC-адрес и настройки сети) и SD-карточкой (если будет). Внешними будут программы, использующие эти сокеты (программы естественно разные для разных машин) - HTTP сервер (я его уже писал для W5100 в 2007 году правда в кодах PIC17), HTTP клиент (браузер), а также можно скажем FTP клиента и NTP клиента ещё сделать. Вобщем как-то так...
P.S. Ещё идея у меня была т.к. WizNet не хранит в себе MAC-адрес (его надо программно прописывать), можно под мою карманную корпорацию официально зарезервировать диапазон MAC-адресов, записав адреса оттуда в EEPROM-ы, которые раздавать вместе с платами. Сейчас блок из 4096 адресов стоит $780 выплаченных однократно - подробнее см.https://standards.ieee.org/products-services/regauth/oui36/index.html)
P.P.S. Как альтернатива покупке блока адресов может выступать EEPROM с зашитым в него MAC-адресом типа 93AA46AE48 (1K Microwire Serial EEPROM with EUI-48), хотя по сути это тоже самое т.к. судя по документации, юзер может перезаписать байты, где записан MAC-адрес.
P.P.P.S. Можно не давать пользователю API на доступ к записи в EEPROM байтов и блоков, а вместо этого выдать абстрактный API для некоего key=value persistant storage (с замахом на поддержку cookies в будущем).
Светодиод загорается, когда старшие 2 бита адреса (A19,A18) равны 1 и следующие 4 бита (A17,A16,A15,A14) совпадают с выставленными проводочками (проводочек означает "0")
Для Компаньона-2 делал просто такой переходник, через него на хлеборезке уже подключал всё, что надо (наклейка с портами B, C отлетела куда-то). Думал к переходнику через штырьки и другие перфплаты подключать.
Переходник
Attachment:
File comment: Front
DSCN1512.JPG [ 227.13 KiB | Viewed 6565 times ]
Attachment:
File comment: Back
DSCN1514.JPG [ 229.7 KiB | Viewed 6565 times ]
Но сабж покраше будет .
06 Jan 2021 00:06
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22802 Location: Silicon Valley
Да я изначально хотел "интеллектуальный" переходник сделать, который бы уже декодировал адрес и выдавал /CS на остальную плату, в которой декодера адреса нету
Вот у меня кое-что из старья есть на попробовать - ISA-8:
Attachment:
ISA-8.jpg [ 230.92 KiB | Viewed 6559 times ]
и ISA-16:
Attachment:
ISA-16.jpg [ 200.95 KiB | Viewed 6559 times ]
(две одинаковые карточки слева-внизу я около десяти лет назад покупал на Jameco как "новые" очень дёшево, чтобы в перспективе попробовать подключить флоппик к какому-нибудь своему недокомпьютеру с шиной ISA16)
Да я изначально хотел "интеллектуальный" переходник сделать, который бы уже декодировал адрес и выдавал /CS на остальную плату, в которой декодера адреса нету
Про тестирование сетевой платки на WizNET, приделанной через этот переходник, можно почитать в другом топике:
На прошлой странице меня немного озадачила схема формирования RD и WR стробов для ISA-словтов:
Shaos wrote:
Сигнал CS_CACHE (как и CS_ROM) приходит из Альтеры. RA14, RA15, RA16, RA17 - тоже (интересно, что они участвуют в формировании адреса ПЗУ, быстрой памяти и ISA). Соответственно, этот дешифратор работает когда:
CS_CACHE=0 RA16=0 (когда оно в 1, то идёт разрешение быстрой памяти вместо исы) RA17=1
интересно, что сигнал /RD никак не участвует в формировании стробов /MEMRx:
Code:
RA14=0 /WR=0 RA15=0 -----> /MEMW1 (1000=08h должно устанавливаться через значение D0h) RA14=0 /WR=0 RA15=1 -----> /MEMW2 (1010=0Ah должно устанавливаться через значение D2h) RA14=0 /WR=1 RA15=0 -----> /MEMR1 (1000=08h должно устанавливаться через значение D0h) RA14=0 /WR=1 RA15=1 -----> /MEMR2 (1010=0Ah должно устанавливаться через значение D2h) RA14=1 /WR=0 RA15=0 -----> /IOWR1 (1001=09h должно устанавливаться через значение D4h) RA14=1 /WR=0 RA15=1 -----> /IOWR2 (1011=0Bh должно устанавливаться через значение D6h) RA14=1 /WR=1 RA15=0 -----> /IORD1 (1001=09h должно устанавливаться через значение D4h) RA14=1 /WR=1 RA15=1 -----> /IORD2 (1011=0Bh должно устанавливаться через значение D6h)
Если посмотреть в схему внимательно, то можно увидеть, что сигнал /RD принимает некоторое участие в работе с ISA, а именно управляет направлением буфера данных:
Attachment:
Screenshot from 2021-01-11 05-07-15.png [ 29.48 KiB | Viewed 6464 times ]
ISA_CS получается из CS_CASH вот так:
Attachment:
Screenshot from 2021-01-11 05-12-43.png [ 11.14 KiB | Viewed 6464 times ]
т.е. ISA_CS = CS_CASH or A16 тут будет 0, если CS_CASH=0 и A16=0 (в этом случае выбрана ISA)
а сама шина данных подтянута к +5В:
Attachment:
Screenshot from 2021-01-11 05-08-17.png [ 25.87 KiB | Viewed 6464 times ]
Получается, что при вышеизложенном формировании /MEMR1/2 и /MEMW1/2 карточка ISA будет видеть следующее:
Attachment:
Z80_memory_rw_SprinterISA.jpg [ 38.59 KiB | Viewed 6445 times ]
т.е. даже если я буду маскировать /MEMR и /MEMW на плате сигналом /MREQ, всё равно в цикле записи будет вылезать неожиданный мусорный /MEMRD который будет приводить к конфликту на шине данных в момент перехода мусорного /MEMR в /MEMW (может быть случайно записан только что прочитанный байт) и обратно...
P.S. И это при том, что на ISA не идёт /MREQ, точнее в случае Спринтера он идёт, но как ALE...
P.P.S. 27 января 2021 года RomanRom2 таки снял осциллограммы и подтвердил, что мусорный строб чтения (фиолетовый /MEMR) в цикле записи присутствует:
Attachment:
Write-Read-Garbage1.png [ 46.96 KiB | Viewed 6234 times ]
Голубой сигнал тут это /MEMW, а синий - /MREQ (поданный на ISA-слоты как ALE)
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot post attachments in this forum