ShaosBox для ZX

Старый спектрумистский форум

Moderator: Shaos

User avatar
Shaos
Admin
Posts: 24083
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Примерная раскладка памяти при включении WizNET+RTC+ROM в память процессора:

Code: Select all

#C000...#C0FF - регистры WizNET (используются только первые 48 байт из 256)
#C100...#C1FF - окно первой шины NI-15 (задействованы все 256 байт)
#C200...#C2FF - окно второй шины NI-15 (задействованы все 256 байт)
#C300...#C3FF - часы реального времени с энергонезависимой памятью (используются только первые 128 байт из 256)
#C400...#C7FF - управление сокетами WizNET (задействован весь килобайт)
#C800...#CFFF - через это 2К окно просвечивает ОЗУ (тут будет вектор переходов ShaOS, стек и буфер под системные утилиты)
#D000...#D7FF - ПЗУ 2К с драйверами SD-карты (минимальный ShaOS)
#D800...#DFFF - место под второе ПЗУ 2К (опционально)
#E000...#FFFF - сюда подключается RX-буфер или TX-буфер WizNET (занимает все 8К)
Включение этой раскладки происходит через сигналы ввода-вывода AY (куда также подключены LPT и SD)

P.S. Видно что есть место для расширения - в области #C031...#C0FF и #C380...#C3FF можно будет в будущем цеплять другие периферийные устройства как ВВ55, ВВ51 и т.д.

P.P.S. Можно сделать так, что при передаче управления в область #CCxx (вектор переходов ShaOS) это всё будет вставляться в память процессора автоматически (при условии взведения некоего триггера), а при возврате из подпрограммы память будет отдаваться обратно.

P.P.P.S. Для управления хочу ещё заюзать 3 свободных бита при записи в порт #FE...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24083
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:1) к внешнему AY-дейвайсу (пока не получил) прикручиваю LPT-принтер (по схеме ZX-Evo) и SD-card (плюс несколько выходов под будущее управление памятью)...
Не - не буду как в ZX-Эве делать - там порт AYB попеременно то на ввод, то на вывод юзается (из-за этого резисторы подтягивающие и последовательно вставленные навтыканы):

Image

Лучше уберу STROBE в порт #FE (старший бит), а AYB сделаю только на ввод и порядок расположения битов сделаю по аналогии с пц-шным регистром статуса как для LPT.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24083
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:Лучше уберу STROBE в порт #FE (старший бит), а AYB сделаю только на ввод и порядок расположения битов сделаю по аналогии с пц-шным регистром статуса как для LPT.
Прикидываем далее что да как:

Image

Итак инвертированный STROBE (1) будет браться из бита 7 порта #FE. Данные (2...9) будут браться из AYA0...AYA7. А вот порт AYB будет использоваться так:

AYB0 - MISO (вход от SPI bus)
AYB1 - /SDEX (равно нулю, если вставлена SD-карточка)
AYB2 - /SDRO (равно нулю, если SD-карточка защищена от записи)
AYB3 - инвертированный BUSY (11) в режиме принтера либо "0" если вставлена nedoCard (?)
AYB4 - ACK (10) в режиме принтера
AYB5 - PAPER OUT (12) в режиме принтера
AYB6 - SELECT (13) в режиме принтера
AYB7 - ERROR (15) в режиме принтера

Бит 6 порта #FE будет управлять тем, куда идёт строб - в принтер (1) или в регистр (0), сохраняющий состояние данных с порта AYA (этот же бит через инвертор можно отправить на выход "SELECT PRINTER"). Регистр по ребуту обнуляется. Выходы регистра могут использоваться следующим образом:

RA0 - MOSI (выход на SPI bus)
RA1 - SS1 ("1" разрешает первое SPI-устройство - SD-карту)
RA2 - SS2 ("1" разрешает второе SPI-устройство - EEPROM)
RA3 - инвертированный LINE FEED (14) ?
RA4 - EA0 - 00 MEM, 01 RX, 10 TX, 11 ROM (содержимое области #E000...#FFFF когда CWIZ="1" или взведён CC-триггер)
RA5 - EA1 /
RA6 - CWIZ ("1" включает RTC+WIZ+ROM в область #C000...#DFFF)
RA7 - CCEN ("1" разрешает CC-триггер, взводимый при передаче управления на адрес #CCxx)

Если CC-триггер взведён, то RTC+WIZ+ROM находятся в области #C000...#DFFF (тоже самое как при CWIZ="1", но независимо от него). Сбрасывать CC-триггер может бит 5 порта #FE. Тот же самый STROBE (бит 7) может использоваться как SCLK для SPI-устройств (когда бит 6 порта #FE взведён). Вход принтера RESET (16) можно запитать от компьютерного RESET.
Last edited by Shaos on 19 Jul 2013 17:29, edited 1 time in total.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24083
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Видится мне 3 версии девайса ShaosBox:

v1 - только AY, LPT и SD-карточка (может втыкаться в 16К или 48К)
v2 - AY+LPT+SD+32K+nedoCard (может втыкаться только в 16К)
v3 - AY+LPT+SD+32K+nedoCard+WizNET+RTC+NI15+ROM (тоже только 16К)

NEDOCON-48K можно разрабатывать параллельно...

P.S. Можно ещё ShaosBox v4 сделать - где бейсиковский ROM может подменяться на 16K RAM - в этом случае 16К-спектрум можно легко превратить в CP/M-машину (с прикручиванием текстового видеорежима 80x25, который работает мимо обычной видеопамяти спектрума).

P.P.S. А не поддержать ли мне ещё и NES/SNES-контроллер, преобразовывая его интерфейс в Kempston-джойстик?
Last edited by Shaos on 18 Jul 2013 23:08, edited 3 times in total.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24083
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:А не поддержать ли мне ещё и NES/SNES-контроллер, преобразовывая его интерфейс в Kempston-джойстик?
Напокупал на ебее NES и SNES контроллеров и разъёмчиков к ним. Они вроде совместимы по формату (последовательная синхронная передача состояния кнопок) - просто у SNES больше битов передаётся (т.к. у него кнопок больше). Наверное сейчас это наиболее дешёвые и массовые геймпады, что есть на рынке. Вот думаю что лучше поддержать в своём гипотетическом девайсе - оригинальный геймпад и специфический для него разъём (NES или SNES) или геймпад с перепаянной розеткой и более доступные гнёзда типа DIN-5?

P.S. Нашёл только одного продавца, который продаёт SNES-разъёмы по цене 1.99 канадских баксов:
http://www.raphnet-tech.com/products/sn ... /index.php
PayPal пересчитал деньги как 1 U.S. Dollar = 1.0132 Canadian Dollars, т.е. один разъём получается $1.96
Если перепаивать NES/SNES-контроллер на свою вилку (DIN-5):
http://www.digikey.com/product-detail/e ... 0-ND/96997
и соответственно использовать более доставаемое гнездо:
http://www.digikey.com/product-detail/e ... 0-ND/97033
то по ценам получается так:
1 штука: $1.79 + $1.05 = $2.84
10 штук: $1.39 + $0.81 = $2.20
100 штук: $1.06 + $0.62 = $1.68
т.е. выгоднее оригинального разъёма только при большом количестве...

P.P.S. Вот тут пишут, что клоны NES использовали разъёмы DB9 и DB15:
https://www.kernel.org/doc/Documentatio ... arport.txt

Code: Select all

Pinout for NES clone (db9) gamepads     Pinout for NES clone (db15) gamepads

        +---------> Clock                    +-----------------> Data
        | +-------> Latch                    |             +---> Ground
        | | +-----> Data                     |             |
        | | |                              ___________________
    _____________                        8 \ o x x x x x x o / 1
  5 \ x o o o x / 1                         \ o x x o x x o /
     \ x o x o /                          15 `~~~~~~~~~~~~~' 9
    9 `~~~~~~~' 6                             |     |     |
         |   |                                |     |     +----> Clock
         |   +----> Power                     |     +----------> Latch
         +--------> Ground                    +----------------> Power
Кроме того существовали так называемые мультисистемные джойстики:

Code: Select all

2.2 Multisystem joysticks
~~~~~~~~~~~~~~~~~~~~~~~~~
  In the era of 8-bit machines, there was something like de-facto standard
for joystick ports. They were all digital, and all used D-Cannon 9 pin
connectors (db9). Because of that, a single joystick could be used without
hassle on Atari (130, 800XE, 800XL, 2600, 7200), Amiga, Commodore C64,
Amstrad CPC, Sinclair ZX Spectrum and many other machines. That's why these
joysticks are called "Multisystem".

  Now their pinout:

      +---------> Right
      | +-------> Left
      | | +-----> Down
      | | | +---> Up
      | | | |
  _____________
5 \ x o o o o / 1
   \ x o x o /
  9 `~~~~~~~' 6
       |   |
       |   +----> Button
       +--------> Ground
Я могу попробовать поддержать оба варианта на одном гнезде, причём второй вариант можно расширить до амиговского:

Code: Select all

      Amiga 1200

    +-----------> Button 3
    | +---------> Right
    | | +-------> Left
    | | | +-----> Down
    | | | | +---> Up
    | | | | |
  _____________
5 \ o o o o o / 1
   \ o o o o /
  9 `~~~~~~~' 6
     | | | |
     | | | +----> Button 1
     | | +------> Power
     | +--------> Ground
     +----------> Button 2
По идее только джойстик-интерфейс может уже продаваться как отдельный продукт, а добавление туда поддержки Dandy/Famicom/NES/SNES выгодно выделит его перед конкурентами

P.S. Кстати конкурент разрабатыват свой AY+Kempston за $29 - вот одна сторона печатной платы и картинко прототипа без корпуса:

Image

P.P.S. Я ещё будучи в Екатеринбурге покупал денди-джойстик (NES) и переделывал его под Kempston путём выковыривания микрухи и переподсоединения кнопочек напрямую к проводам - знал бы я тогда, что это последовательный синхронный интерфейс, то сделал бы декодер на мелкой логике ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24083
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

O - параллакс продаёт NES-гнёзда за $1.99 :o

http://www.parallax.com/Store/Component ... fault.aspx

P.S. Думаю, что SNES наверное будет предпочтительнее - с него 4 дополнительные кнопки можно загнать через AYB в режиме отключенного принтера - всего получится 12 сигналов! :o
Last edited by Shaos on 19 Jul 2013 17:45, edited 3 times in total.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
MC68k
Retired
Posts: 1328
Joined: 25 Jul 2011 00:14
Location: WWW

Post by MC68k »

Famicom который оригинальный имеет только DB15, джои не отключаемые.
User avatar
Shaos
Admin
Posts: 24083
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

MC68k wrote:Famicom который оригинальный имеет только DB15, джои не отключаемые.
Да - чего то такое я читал. Видимо в какой-то ранней версии - потом вроде везде стали втыкать эти кривые 7-ногие гнёзда.
Last edited by Shaos on 19 Jul 2013 21:34, edited 1 time in total.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24083
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Вобщем ежели ставить универсальный 9-пиновый разъём, способный работать как в режиме NES/SNES, так и "Multisystem", то раскладка будет такой:

1 - NC or UP (делаем всегда UP)
2 - DATA or DOWN *
3 - LATCH or LEFT *
4 - CLOCK or RIGHT *
5 - NC or BUTTON3 (делаем всегда BUTTON3)
6 - POWER or BUTTON1 *
7 - NC or POWER (делаем всегда POWER)
8 - GROUND or GROUND (делаем всегда GROUND)
9 - NC or BUTTON2 (делаем всегда BUTTON2)

Звёздочкой помечены 4 случая, когда назначение сигнала меняется в зависимости от того, какой джойстик воткнут. Представим, что у нас будет 4 переключателя (или джампера), которыми можно будет менять назначение этих сигналов. Кроме того на плате будет место под NES-разъём и SNES-разъём - главное чтобы юзер туда одновременно 3 джойстика не втыкал.

Кнопки джойстиков на порт #1F (Kempston) замаплены так ("1" означает, что нажато):

bit 7 - BUTTON2 (MULTI) or B (NES) or Y (SNES) - левая лицевая кнопка на NES/SNES
bit 6 - 0 (MULTI) or START (NES/SNES)
bit 5 - BUTTON3 (MULTI) or SELECT (NES/SNES)
bit 4 - BUTTON1 (MULTI) or A (NES) or B (SNES) - правая лицевая кнопка на NES и нижняя лицевая на SNES (главная)
bit 3 - UP (MULTI/NES/SNES)
bit 2 - DOWN (MULTI/NES/SNES)
bit 1 - LEFT (MULTI/NES/SNES)
bit 0 - RIGHT (MULTI/NES/SNES)

Дополнительные кнопки SNES-контроллера (читаются через AY в режиме отключённого принтера):

AYB4 - A (правая кнопка из четырёх лицевых)
AYB5 - X (верхняя кнопка из четырёх лицевых)
AYB6 - L (левое плечо)
AYB7 - R (правое плечо)

P.S. Расположение второй и третьей кнопки в порту кемпстона #1F позаимствовано отсюда
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
MC68k
Retired
Posts: 1328
Joined: 25 Jul 2011 00:14
Location: WWW

Post by MC68k »

Shaos wrote:
MC68k wrote:Famicom который оригинальный имеет только DB15, джои не отключаемые.
Да - чего то такое я читал. Видимо в какой-то ранней версии - потом вроде везде стали втыкать эти кривые 7-ногие гнёзда.
не путай с серым.

Image
User avatar
Shaos
Admin
Posts: 24083
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:
Shaos wrote:Нашёл чувака, который продаёт коннекторы для ZX-спектрума :o

http://lotharek.pl/product.php?pid=54
Купил у него 3 разъёма и один Wonder-AY :)
Присмотрелся к его фоткам и понял, что разъёмы у него САМОДЕЛЬНЫЕ :(

Не долго думая смастерил себе такой же - из ISA-шного 8-битного:

Image

Для этого с одного края вытаскивается одна пара контактов, а с другого - две. Далее отпиливаем лишее и вытаскиваем ещё пару, расположенную на месте пятого контакта. После этого получается вполне устойчивая конструкция, влезающая в стандартные спектрумы:

Image

P.S. Дырку на месте пятой пары надо каким-то куском текстолита закрыть или типа того - чтобы не давало вставить неправильно....

P.P.S. Вот сравнительная табличка назначения контактов разъёма с сайта велесофта:
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
MC68k
Retired
Posts: 1328
Joined: 25 Jul 2011 00:14
Location: WWW

Post by MC68k »

клаву помой - стыд и срам же :)
User avatar
Shaos
Admin
Posts: 24083
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

MC68k wrote:клаву помой - стыд и срам же :)
ну оно пылилось больше пяти лет ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24083
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:
Shaos wrote:
Shaos wrote:Нашёл чувака, который продаёт коннекторы для ZX-спектрума :o

http://lotharek.pl/product.php?pid=54
Купил у него 3 разъёма и один Wonder-AY :)
Присмотрелся к его фоткам и понял, что разъёмы у него САМОДЕЛЬНЫЕ :(

Не долго думая смастерил себе такой же - из ISA-шного 8-битного:

Image

Для этого с одного края вытаскивается одна пара контактов, а с другого - две. Далее отпиливаем лишее и вытаскиваем ещё пару, расположенную на месте пятого контакта. После этого получается вполне устойчивая конструкция, влезающая в стандартные спектрумы:

Image

P.S. Дырку на месте пятой пары надо каким-то куском текстолита закрыть или типа того - чтобы не давало вставить неправильно....

P.P.S. Вот сравнительная табличка назначения контактов разъёма с сайта велесофта:
Image
Пожалуй начну вот с такой платки :)

Image
Last edited by Shaos on 26 Jul 2013 19:23, edited 1 time in total.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24083
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Может добавить снизу ряд контактов NemoBus и барыжить этим на zx.pk.ru? ;)

P.S. Причём соединить только совместимые контакты (помеченные звёздочкой):

Code: Select all

 1 - * A15 | A14 *
 2 - * A13 | A12 *
 3 - *  D7 | +5V *
 4 -    NC | +9V - у NemoBus тут BLK (CSDS) и DOS (DCDOS)
 5 -  разделитель - у NemoBus справа тут 14MHz (Kay) или +12V (Scorpion), а слева в ZX-Evo обрзначено как TURBO, но никуда не подключено
 6 - *  D0 | GND *
 7 - *  D1 | GND * 
 8 - *  D2 | CLK * - у NemoBus тут тоже 3.5MHz, но не CLK, а /RAS (Scorpion) 
 9 - *  D6 | A0  *
10 - *  D5 | A1  *
11 - *  D3 | A2  *
12 - *  D4 | A3  *
13 - ? INT | IORQGE * - у NemoBus слева стоит прочерк (но INT в ZX-Evo)
14 - * NMI | GND *
15 - ?HALT | VIDEO - у NemoBus тут прочерк (но HALT в ZX-Evo) и RDR (CSROMCE)
16 - *MREQ | Y - у NemoBus справа тут RS (BIT_4 OF #7FFD)
17 - *IORQ | V - у NemoBus справа тут "not used"
18 - *  RD | U - у NemoBus справа тут "not used"
19 - *  WR | BUSRQ*
20 -   -5V | RESET* - у NemoBus слева тут "not used"
21 - *WAIT | A7  *
22 - ?+12V | A6  * - у NemoBus слева тут "not used", т.е. теоретически можно подцепить +12V от 29B
23 - 12VAC | A5  * - у NemoBus слева тут "not used"
24 - *  M1 | A4  *
25 - *RFSH | ROMCS*
26 - *  A8 | BUSACK*
27 - * A10 | A9  *
28 -    NC | A11 * - у NemoBus тут слева "not used" или +5V (Kay)
29 - отсутствует - у NemoBus тут +12V (Kay) и +5V (Kay)
30 - отсутствует - у NemoBus тут GND и GND
в ZX-Evo есть ещё 31-я пара (видимо для того чтобы ISA-шные разъёмы ставить), и туда даже что-то подключено...
P.P.S. В описании от Black_Cat-a тоже фигурирует 31-я пара контактов (оба NC), но на фотках плат расширения совецких спектрумов я могу только 30 контактов насчитать...
Я тут за главного - если что шлите мыло на me собака shaos точка net