Author |
Message |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22625 Location: Silicon Valley
|
Расширил тестилку TIMER.EXE и померял скорость ОЗУ на ISA-шине - 14 МГц получается там, а не 7
|
14 Jan 2021 01:32 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22625 Location: Silicon Valley
|
Начал было вставлять в TIMER.EXE проверку наличия ОЗУ в ISA-слоте и наткнулся на интересный эффект - короче если ничего нету в слоте, то читаются FF-ы, но если что-то туда записать и СРАЗУ же прочитать - то прочитается "записанное" значение, которое будет висеть на отключенной шине какое-то время Соответственно чтобы протестировать что это дейтвительно ОЗУ надо сначало записать одно значение (скажем 0AAh) по адресу 0C800h, потом другое значение (скажем 055h) по адресу 0C8001h и потом прочитать из 0C800h - если прочитается 0AAh, то это ОЗУ, а если 055h, то платка не вставлена Теперь TIMER2.EXE пишет в каком слоте обнаружил память (а если не обнаружил, то строчек ISA в результатах не будет):
|
14 Jan 2021 04:01 |
|
|
Sayman
Maniac
Joined: 05 Oct 2009 19:44 Posts: 223 Location: 212.164.105.5
|
Так а где сама прга то? приложить к посту, не? и в репу ещё кинуть тоже. и чтобы мерж сделать с оригиналом.
|
14 Jan 2021 08:12 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22625 Location: Silicon Valley
|
Ну я её в дискорд пока закинул - если у тебя запускается, то сложу в репу (три версии друг на друга чтобы видеть изменения)
|
14 Jan 2021 14:03 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22625 Location: Silicon Valley
|
|
15 Jan 2021 23:45 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22625 Location: Silicon Valley
|
RomanRom2 уговаривает меня сделать низкопрофильную плату Ethernet: Снял заглушку, воткнул в ISA-слот и приложил к материнке в слим-корпусе - по размеру подходит:
|
18 Jan 2021 20:52 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Shaos, а почему бы просто не взять старую ISA-плату Ethernet?
_________________ iLavr
|
19 Jan 2021 10:05 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22625 Location: Silicon Valley
|
Потому что программировать надо больше - у визнета многое делается прямо в чипе и наружу сразу торчат 4 TCP/IP сокета (хотя низко-уровневые протоколы тоже возможны)
|
19 Jan 2021 14:01 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22625 Location: Silicon Valley
|
Продолжаю работать над платой SprinterNet - это второй прототип:
|
21 Jan 2021 19:40 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22625 Location: Silicon Valley
|
Купил ISA-тройник и перевставил прототип в него:
|
22 Jan 2021 21:33 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22625 Location: Silicon Valley
|
| | | | Shaos wrote: Отпочковано отсюдаВзято из 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): 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-слота: Источник: https://linuxgazette.net/124/dutta.html | | | | |
Тут похоже вся эта кухня с DRQ/DACK никогда не работала, во-первых, адресные биты идут на шину ISA через буфер, который намертво подключен в одну сторону, т.е. отцепить Спринтер от шины адреса ISA, чтобы какое-то устройство начало рулить шиной, нельзя. Во-вторых, в BIOS только старшие 2 бита инициализируются как выходные: EXP.ASZ: а 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, которые как бы должны быть выходами: Соответственно у меня предложение к RomanRom2, как создателю новой платы Спринтера, отрезать DACK/DRQ от ISA-шины совсем и в будущей плате, в которой предполагаются размноженные ISA-слоты во втором канале, подключить ВСЕ IRQ линии по человечески (через тот же PIO2): Причём бит 0 (IRQ1) всё так же останется единственной линией генерации прерываний для первого канала, к которому в будущем будет подключен единственный слот ZX-BUS. Я планирую в ближайшем будущем подключить ISA backplane на несколько слотов через самодельный переходник ко второму слоту ISA на своей плате Sp2000, разведя все IRQ-и на правильные битики, чтобы удостовериться, что это будет работать...
|
26 Jan 2021 20:06 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22625 Location: Silicon Valley
|
Сегодня воткнул ещё одну карточку с памятью в тот же тройник - память на ней настроена на другой диапазон адресов 0xC8xxx и работает параллельно и независимо от сетевой карточки (которая настроена на 0xDCxxx) т.к. каждая карточка отзывается только на свои адреса будучи на той же самой ISA-шине, как и должно было быть
|
27 Jan 2021 00:30 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22625 Location: Silicon Valley
|
| | | | Shaos wrote: На прошлой странице меня немного озадачила схема формирования RD и WR стробов для ISA-словтов ... Получается, что при вышеизложенном формировании /MEMR1/2 и /MEMW1/2 карточка ISA будет видеть следующее: т.е. даже если я буду маскировать /MEMR и /MEMW на плате сигналом /MREQ, всё равно в цикле записи будет вылезать неожиданный мусорный /MEMRD который будет приводить к конфликту на шине данных в момент перехода мусорного /MEMR в /MEMW (может быть случайно записан только что прочитанный байт) и обратно... | | | | |
Сегодня RomanRom2 таки снял осциллограммы и подтвердил мою теорию, что мусорный строб чтения (фиолетовый /MEMR) в цикле записи присутствует: Наряду с фиолетовым /MEMR тут можно видеть голубой сигнал /MEMW и синий - /MREQ (поданный на ISA-слоты как ALE) - в течение одного /MREQ должен быть либо один /MEMW, либо один /MEMR, но никак не оба. Тоже самое подальше: Решение для новой платы я уже предлагал (толи в телеге, толи в дискорде) - прицепить в разрыв /MEMR1 /MEMR2 /IORD1 /IORD2 по OR гейту (т.е. всего 4 - один корпус 74LS32), каждый из которых стробается реальным сигналом /RD с процессора, чтобы эти сигналы не доходили до шины, когда ненадо (а именно в цикле записи, когда /RD=1)
|
27 Jan 2021 17:32 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22625 Location: Silicon Valley
|
Вот свежие фоточки от RomanRom2 - тут запись 1 байта в ISA (с мусорным чтением непосредственно перед) и потом 2 чтения подряд что было ld hd,(addr) - нетурба: и турба: А вот так это выглядит в слоте у воткнутой карточки - ошибочное срабатывание схем записи и чтения одновременно гарантировано:
|
06 Apr 2021 18:45 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22625 Location: Silicon Valley
|
Фикс на OR-гейтах проверен - RomanRom2 показывает, что теперь всё ок Стэндъ:
|
06 Apr 2021 18:54 |
|
|