nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 18 Apr 2024 11:54



Reply to topic  [ 47 posts ]  Go to page Previous  1, 2, 3, 4  Next
Sprinter ISA 
Author Message
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22534
Location: Silicon Valley
Reply with quote
Расширил тестилку TIMER.EXE и померял скорость ОЗУ на ISA-шине - 14 МГц получается там, а не 7 :mrgreen:


Attachments:
Timer2.jpg
Timer2.jpg [ 296.85 KiB | Viewed 7126 times ]

_________________
:dj: https://mastodon.social/@Shaos
14 Jan 2021 01:32
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22534
Location: Silicon Valley
Reply with quote
Начал было вставлять в TIMER.EXE проверку наличия ОЗУ в ISA-слоте и наткнулся на интересный эффект - короче если ничего нету в слоте, то читаются FF-ы, но если что-то туда записать и СРАЗУ же прочитать - то прочитается "записанное" значение, которое будет висеть на отключенной шине какое-то время :)
Соответственно чтобы протестировать что это дейтвительно ОЗУ надо сначало записать одно значение (скажем 0AAh) по адресу 0C800h, потом другое значение (скажем 055h) по адресу 0C8001h и потом прочитать из 0C800h - если прочитается 0AAh, то это ОЗУ, а если 055h, то платка не вставлена :mrgreen:
Теперь TIMER2.EXE пишет в каком слоте обнаружил память (а если не обнаружил, то строчек ISA в результатах не будет):


Attachments:
Timer2isa12.jpg
Timer2isa12.jpg [ 289.31 KiB | Viewed 7116 times ]

_________________
:dj: https://mastodon.social/@Shaos
14 Jan 2021 04:01
Profile WWW
Maniac

Joined: 05 Oct 2009 19:44
Posts: 223
Location: 212.164.105.5
Reply with quote
Так а где сама прга то? приложить к посту, не?
и в репу ещё кинуть тоже. и чтобы мерж сделать с оригиналом.


14 Jan 2021 08:12
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22534
Location: Silicon Valley
Reply with quote
Sayman wrote:
Так а где сама прга то? приложить к посту, не?
и в репу ещё кинуть тоже. и чтобы мерж сделать с оригиналом.

Ну я её в дискорд пока закинул - если у тебя запускается, то сложу в репу (три версии друг на друга чтобы видеть изменения)

_________________
:dj: https://mastodon.social/@Shaos


14 Jan 2021 14:03
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22534
Location: Silicon Valley
Reply with quote
Shaos wrote:
Sayman wrote:
Так а где сама прга то? приложить к посту, не?
и в репу ещё кинуть тоже. и чтобы мерж сделать с оригиналом.

Ну я её в дискорд пока закинул - если у тебя запускается, то сложу в репу (три версии друг на друга чтобы видеть изменения)

Выложил сюда: https://gitlab.com/sprinter-computer/apps

_________________
:dj: https://mastodon.social/@Shaos


15 Jan 2021 23:45
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22534
Location: Silicon Valley
Reply with quote
Shaos wrote:
Максимальные возможные размеры ISA-платы:

Image
Источник: http://www.interfacebus.com/Design_Connector_PCAT.html

RomanRom2 уговаривает меня сделать низкопрофильную плату Ethernet:

Attachment:
isa-low-profile.jpg
isa-low-profile.jpg [ 185.01 KiB | Viewed 7021 times ]

Снял заглушку, воткнул в ISA-слот и приложил к материнке в слим-корпусе - по размеру подходит:

Attachment:
isa-low-profile-slim.jpg
isa-low-profile-slim.jpg [ 193.74 KiB | Viewed 6997 times ]

_________________
:dj: https://mastodon.social/@Shaos


18 Jan 2021 20:52
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
RomanRom2 уговаривает меня сделать низкопрофильную плату Ethernet:

Shaos, а почему бы просто не взять старую ISA-плату Ethernet?

_________________
iLavr


19 Jan 2021 10:05
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22534
Location: Silicon Valley
Reply with quote
Lavr wrote:
Shaos wrote:
RomanRom2 уговаривает меня сделать низкопрофильную плату Ethernet:

Shaos, а почему бы просто не взять старую ISA-плату Ethernet?

Потому что программировать надо больше - у визнета многое делается прямо в чипе и наружу сразу торчат 4 TCP/IP сокета (хотя низко-уровневые протоколы тоже возможны)

_________________
:dj: https://mastodon.social/@Shaos


19 Jan 2021 14:01
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22534
Location: Silicon Valley
Reply with quote
Продолжаю работать над платой SprinterNet - это второй прототип:


Attachments:
SprinterNet-proto2d.jpg
SprinterNet-proto2d.jpg [ 395.65 KiB | Viewed 6969 times ]

_________________
:dj: https://mastodon.social/@Shaos
21 Jan 2021 19:40
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22534
Location: Silicon Valley
Reply with quote
Купил ISA-тройник и перевставил прототип в него:


Attachments:
SprinterNet-proto2e-small.jpg
SprinterNet-proto2e-small.jpg [ 203.83 KiB | Viewed 6941 times ]

_________________
:dj: https://mastodon.social/@Shaos
22 Jan 2021 21:33
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22534
Location: Silicon Valley
Reply with quote
Shaos wrote:
Отпочковано отсюда
Shaos wrote:
Вот немного по ISA из официального документа sp2000.pdf:

Image

Image

Ещё помню был какой-то текстовый файл с более детальным описанием работы с ISA (я в 2003 было брался ISA-плату COM-порта делать для Спринтера и собирал у всех любую инфу по работе с ISA), но я его с ходу не нашёл - буду смотреть дальше...

Взято из INFO_012.TXT
Code:
Работа с ISA.

  ┌────┬──────────┬────┬───────────┐
  │конт│ Сигнал   │конт│ Сигнал    │  ┌───────────────┬────────────────┐
  ├────┼──────────┼────┼───────────┤  │ A16 BA15      │ B16 DRQ2       │
  │ A1 │IOCHK     │ B1 │GND        │  │ A17 BA14      │ B17 DACK2      │
  │ A2 │BD7       │ B2 │ISA_RES    │  │ A18 BA13      │ B18 DRQ2       │
  │ A3 │BD6       │ B3 │VCC        │  │ A19 BA12      │ B19 ISARF      │
  │ A4 │BD5       │ B4 │IRQ2       │  │ A20 BA11      │ B20 CLKZ1      │
  │ A5 │BD4       │ B5 │-5V        │  │ A21 BA10      │ B21 IRQ2       │
  │ A6 │BD3       │ B6 │DRQ2       │  │ A22 BA9       │ B22 IRQ2       │
  │ A7 │BD2       │ B7 │VCC-12     │  │ A23 BA8       │ B23 IRQ2       │
  │ A8 │BD1       │ B8 │/0WS       │  │ A24 BA7       │ B24 IRQ2       │
  │ A9 │BD0       │ B9 │VCC12      │  │ A25 BA6       │ B25 IRQ2       │
  │ A10│IOCHRDY   │ B10│GND        │  │ A26 BA5       │ B26 DACK2      │
  │ A11│AEN       │ B11│/MEMW2     │  │ A27 BA4       │ B27 TC         │
  │ A12│BA19      │ B12│/MEMR2     │  │ A28 BA3       │ B28 BALE       │
  │ A13│BA18      │ B13│/IOWR2     │  │ A29 BA2       │ B29 VCC        │
  │ A14│BA17      │ B14│/IORD2     │  │ A30 BA1       │ B30 CLK14      │
  │ A15│BA16      │ B15│DACK2      │  │ A31 BA0       │ B31 GND        │
  └────┴──────────┴────┴───────────┘  └───────────────┴────────────────┘

Сигналы BDx, BAx подаются с процессора через буферы.
IOCHRDY через диод подается на /WAIT процессора
IRQi соединены вместе, подаются на порт 1Ch (параллельный порт Z84C15)
DRQi соединены вместе, подаются на порт 1Ch (параллельный порт Z84C15)
DACKi соединены вместе, подаются на порт 1Ch (параллельный порт Z84C15)
Для каждого слота ISA свои биты для IRQ,DRQ,DACK
ISARF подается с RFSH через буфер
BALE подается с MERQ через буфер
CLK14 - отсутствует
CLKZ1 - частота с процессора
TC    - отсутствует
/0WS  - отсутствует

/MEMW - Подаются с дешифратора ИД7.
/MEMR - Для каждого слота свои.
/IOWR - Обращение, как к памяти, так и к портам ISA происходит через
/IORD - специальные страницы ОЗУ.

Что бы получить доступ к ISA надо установить скорпионовскую страницу 8..15 в
C000h..FFFFh, после этого в порт E2h заслать номер страницы, соответствующий
портам/памяти ISA

      ┌────────┬──────────────┬─────────┬───────────────┐
      │ D0h    │ порты ISA1   │  D4h    │ память ISA1   │
      │ D2h    │ порты ISA2   │  D6h    │ память ISA2   │
      └────────┴──────────────┴─────────┴───────────────┘

Это имеет какое-то отношение к реальности или это Sp97 ?...

P.S. Судя по всему табличка неправильная - должно быть так (выяснили ниже 27 декабря 2020):
Code:
      ┌────────┬──────────────┬─────────┬───────────────┐
      │ D0h    │ память ISA1  │  D4h    │ порты ISA1    │
      │ D2h    │ память ISA2  │  D6h    │ порты ISA2    │
      └────────┴──────────────┴─────────┴───────────────┘

D0 -> 1101 0000 => 0-RAM 0-ISA#1
D2 -> 1101 0010 => 0-RAM 1-ISA#2
D4 -> 1101 0100 => 1-IO 0-ISA#1
D6 -> 1101 0110 => 1-IO 1-ISA#2
значит описание должно быть таким:
;D7...should be 1
;D6...should be 1
;D5...should be 0
;D4...should be 1
;D3...should be 0
;D2...specify access mode (0 - ISA memory, 1 - ISA ports)
;D1...specify index of ISA slot (0 - ISA#1, 1 - ISA#2)
;D0...should be 0

P.P.S. Для информации картинка ISA-слота:

Image
Источник: https://linuxgazette.net/124/dutta.html


Тут похоже вся эта кухня с DRQ/DACK никогда не работала, во-первых, адресные биты идут на шину ISA через буфер, который намертво подключен в одну сторону, т.е. отцепить Спринтер от шины адреса ISA, чтобы какое-то устройство начало рулить шиной, нельзя. Во-вторых, в BIOS только старшие 2 бита инициализируются как выходные:
Code:
SPRINT00.ASZ:LPT1_D      EQU 1CH
SPRINT00.ASZ:LPT1_C      EQU 1DH
SPRINT00.ASZ:LPT2_D      EQU 1EH
SPRINT00.ASZ:LPT2_C      EQU 1FH

EXP.ASZ:
Code:
;    Инициализация параллельного порта 2 (INT/DMA ISA)

    LD BC,LPT2_C

    LD A,0CFH    ; BITS I/O
    OUT (C),A ; <<<< set 1100 1111 (set mode 11 - control)
    LD A,03FH
    OUT (C),A ; <<<< set 0011 1111 (bits 7,6 - outputs, bits 5...0 - inputs)
    LD A,0C0h ; <<<< 1100 0000 (data)
    OUT (LPT2_D),A
а DSS (VIDEO.ASM) похоже ошибка - вместо #63 должно быть 63 (что тоже самое как и 0x3F):
Code:
PRINT_INIT
   DI
   LD   A,#CF ; port 1F только чеpез LD BC,1F: Out (BC),reg !!!
   LD   BC,#001F
   OUT   (C),A ; <<<< set 1100 1111 (set mode 11 - control)
   LD   A,#63
   OUT   (C),A ; <<<< set 0110 0011 ???
   LD   A,#C0 ; Bit 7 - Select (1), Bit 6 - Auto_Line_Feed (1)
   OUT   (#1E),A
т.е. по идее имелось ввиду, что инициализируются на выход только 2 старших бита в PIO2, которые уходят на LPT, а все остальные инициализированы на вход, даже DACK1/2, которые как бы должны быть выходами:

Image

Соответственно у меня предложение к RomanRom2, как создателю новой платы Спринтера, отрезать DACK/DRQ от ISA-шины совсем и в будущей плате, в которой предполагаются размноженные ISA-слоты во втором канале, подключить ВСЕ IRQ линии по человечески (через тот же PIO2):
Code:
bit 0 - input IRQ1 (ZX-BUS)
bit 1 - input IRQ3 (ISA8)
bit 2 - input IRQ4 (ISA8)
bit 3 - input IRQ5 (ISA8)
bit 4 - input IRQ6 (ISA8)
bit 5 - input IRQ7 (ISA8)
bit 6 - output Auto_Line_Feed (LPT)
bit 7 - output Select (LPT)
Причём бит 0 (IRQ1) всё так же останется единственной линией генерации прерываний для первого канала, к которому в будущем будет подключен единственный слот ZX-BUS.

Я планирую в ближайшем будущем подключить ISA backplane на несколько слотов через самодельный переходник ко второму слоту ISA на своей плате Sp2000, разведя все IRQ-и на правильные битики, чтобы удостовериться, что это будет работать...

_________________
:dj: https://mastodon.social/@Shaos


26 Jan 2021 20:06
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22534
Location: Silicon Valley
Reply with quote
Shaos wrote:
Купил ISA-тройник и перевставил прототип в него

Сегодня воткнул ещё одну карточку с памятью в тот же тройник - память на ней настроена на другой диапазон адресов 0xC8xxx и работает параллельно и независимо от сетевой карточки (которая настроена на 0xDCxxx) т.к. каждая карточка отзывается только на свои адреса будучи на той же самой ISA-шине, как и должно было быть :)


Attachments:
SprinterNet-proto2f.jpg
SprinterNet-proto2f.jpg [ 129.81 KiB | Viewed 6882 times ]

_________________
:dj: https://mastodon.social/@Shaos
27 Jan 2021 00:30
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22534
Location: Silicon Valley
Reply with quote
Shaos wrote:
На прошлой странице меня немного озадачила схема формирования RD и WR стробов для ISA-словтов
...
Получается, что при вышеизложенном формировании /MEMR1/2 и /MEMW1/2 карточка ISA будет видеть следующее:

Image
т.е. даже если я буду маскировать /MEMR и /MEMW на плате сигналом /MREQ, всё равно в цикле записи будет вылезать неожиданный мусорный /MEMRD :o
который будет приводить к конфликту на шине данных в момент перехода мусорного /MEMR в /MEMW (может быть случайно записан только что прочитанный байт) и обратно...

Сегодня RomanRom2 таки снял осциллограммы и подтвердил мою теорию, что мусорный строб чтения (фиолетовый /MEMR) в цикле записи присутствует:

Attachment:
Write-Read-Garbage1.png
Write-Read-Garbage1.png [ 46.96 KiB | Viewed 6845 times ]

Наряду с фиолетовым /MEMR тут можно видеть голубой сигнал /MEMW и синий - /MREQ (поданный на ISA-слоты как ALE) - в течение одного /MREQ должен быть либо один /MEMW, либо один /MEMR, но никак не оба.

Тоже самое подальше:

Attachment:
Write-Read-Garbage2.png
Write-Read-Garbage2.png [ 54.58 KiB | Viewed 6845 times ]

Решение для новой платы я уже предлагал (толи в телеге, толи в дискорде) - прицепить в разрыв /MEMR1 /MEMR2 /IORD1 /IORD2 по OR гейту (т.е. всего 4 - один корпус 74LS32), каждый из которых стробается реальным сигналом /RD с процессора, чтобы эти сигналы не доходили до шины, когда ненадо (а именно в цикле записи, когда /RD=1)

_________________
:dj: https://mastodon.social/@Shaos


27 Jan 2021 17:32
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22534
Location: Silicon Valley
Reply with quote
Вот свежие фоточки от RomanRom2 - тут запись 1 байта в ISA (с мусорным чтением непосредственно перед) и потом 2 чтения подряд что было ld hd,(addr) - нетурба:

Attachment:
Write-Read-Garbage-2read.jpg
Write-Read-Garbage-2read.jpg [ 189.6 KiB | Viewed 5943 times ]

и турба:

Attachment:
Write-Read-Garbage-2readTurbo.jpg
Write-Read-Garbage-2readTurbo.jpg [ 193.94 KiB | Viewed 5943 times ]

А вот так это выглядит в слоте у воткнутой карточки - ошибочное срабатывание схем записи и чтения одновременно гарантировано:

Attachment:
Write-Read-Garbage-2readTurboSlot.jpg
Write-Read-Garbage-2readTurboSlot.jpg [ 176.81 KiB | Viewed 5943 times ]

_________________
:dj: https://mastodon.social/@Shaos


06 Apr 2021 18:45
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22534
Location: Silicon Valley
Reply with quote
Shaos wrote:
Решение для новой платы я уже предлагал (толи в телеге, толи в дискорде) - прицепить в разрыв /MREQ1 /MREQ2 /IORD1 /IORD2 по OR гейту (т.е. всего 4 - один корпус 74LS32), каждый из которых стробается реальным сигналом /RD с процессора, чтобы эти сигналы не доходили до шины, когда ненадо (а именно в цикле записи, когда /RD=1)

Фикс на OR-гейтах проверен - RomanRom2 показывает, что теперь всё ок :mrgreen:

Attachment:
Write-Read-Garbage-2readTurboFixed.jpg
Write-Read-Garbage-2readTurboFixed.jpg [ 187.75 KiB | Viewed 5943 times ]


Стэндъ:


Attachments:
RomanRom2-ISA-testing.jpg
RomanRom2-ISA-testing.jpg [ 382.62 KiB | Viewed 5943 times ]

_________________
:dj: https://mastodon.social/@Shaos
06 Apr 2021 18:54
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 47 posts ]  Go to page Previous  1, 2, 3, 4  Next

Who is online

Users browsing this forum: No registered users and 6 guests


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

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.