Вообще WizNet можно использовать в режиме с косвенной адресацией, подцепив вместо дополнительного ВВ5 в разъём X3 (9xxx) - там как раз 4 ячейки адресуются:Shaos wrote:Кстати вот этот вот разъём расширения:позволит подцепить к компьютеру урезанную версию SprinterNet с косвенным обращением к буферам WizNet-чипа вместо прямого доступа - правда прошивку ПЗУ сетевушки придётся переписать с z80 на 8080 и изменить API, чтобы не использовались индексные регистры...Shaos wrote:введены дополнительные дешифраторы #C000 (разделяемый ресурс с ВГ75), #C800, #D000, #D800 - все эти CS-ы вместе с адресами A0...A10, WR/RD и буферизированной шиной данных выходят наружу через 28-дырочный разъём...
Code: Select all
0 - регистр MR (включение косвенного режима и флаг автоинкремента, чтобы каждый раз не менять адрес)
1 - регистр IDM_AR0 (старший байт адреса)
2 - регистр IDM_AR1 (младший байт адреса)
3 - регистр IDM_DR (чтение/запись данных в косвенном режиме)
Code: Select all
#9000 - [3] регистр IDM_DR (чтение/запись данных в косвенном режиме)
#9001 - [2] регистр IDM_AR1 (младший байт адреса)
#9002 - [1] регистр IDM_AR0 (старший байт адреса)
#9003 - [0] регистр MR (включение косвенного режима и флаг автоинкремента, чтобы каждый раз не менять адрес)
Адресное пространство W5100 имеет дырки: Когда в 2016 году я начал пилить интернет для TS2068 (который потом превратился в SprinterNet для Спринтера) я в эти дырки планировал воткнуть часы реального времени - в этот раз можно таки это сделать, просто параллельно визнету надо поставить регистры адреса, которые будут сохранять записываемый адрес для дырок, чтобы другие части схемы могли на них реагировать помимо визнета (правда автоинкремент по понятным причинам в этих дырках работать не будет).
Соответственно, косвенные адреса можно расположить таким образом:
Code: Select all
#00XX - WizNET registers (48 bytes)
#01XX - reserved (SPI?)
#02XX - reserved (RTC-addr?)
#03XX - reserved (RTC-data?)
#04XX - 1st socket WizNET (44 bytes)
#05XX - 2nd socket WizNET (44 bytes)
#06XX - 3rd socket WizNET (44 bytes)
#07XX - 4th socket WizNET (44 bytes)
#0800...#1FFF - unused (RTC?)
#2000...#3FFF - ROM-disk (8KB 001...)
#4000...#5FFF - TX memory WizNET (8KB 010...)
#6000...#7FFF - RX memory WizNET (8KB 011...)
P.S. Ха - можно ведь там даже ROM с программой разместить для обычных РК-шек

Люди будут втыкать эту платку в разъём квазидиска #AXXX (или даже вместо второго ВВ55) и с помощью директивы R вычитать стартовую программку-инициализатор, которая затем всё будет делать, выходя в интернет, и даже программки РК-шные можно было бы читать из интернета директивой R, копируя байты из RX memory WizNET! И часы реального времени лучше в ту же дырку воткнуть - скажем по адресу #1000 пусть будет DS12C887+ (или DS1687-5+), тогда можно одним дешифратором 3:8 обойтись и несколькими вентилями И
P.P.S. Хотя у этих RTC шина мультиплексированная - сначала надо адрес выставить дёрнув ALE, а потом только данные читать-писать...