Soviet Union ZX Spectrum CommunityПонедельник, 25.11.2024, 03:30
Вы вошли как Гость | Группа "Гости" | RSS
 [ · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Pentagon by Northwood
Black_CatДата: Среда, 01.07.2020, 16:12 | Сообщение # 1
Координатор
Группа: Координаторы
Сообщений: 730
Статус: Offline
1. Сигналы DOS/, IODOS/ для NemoBus v.1.2



Цепи DOS/, DOS на выходе DD29 идущие на дешифрацию портов разорвать, и в разрыв врезать схему. Цепи, идущие на выборку ПЗУ оставить как есть.
Прикрепления: 8323490.png (30.3 Kb)


"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!".
"Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло."
Гарри Трумэн
 
NorthwoodДата: Пятница, 04.09.2020, 08:20 | Сообщение # 121
80h
Группа: Пользователи
Сообщений: 131
Статус: Offline
Цитата Black_Cat ()
Это POST, его уместно оставить в ПЗУ ядра, а вот API работы с винтом - это уже функционал сугубо BIOS. В Спектруме роль BIOS выполняет SOS48/SOS128/TR-DOS/Service и т.д., вот куда-то туда это и надо размазать, как это сделано в +3e DOS c API divIDE/divMMC.


Процедуры HDD, размещённые мной в ПЗУ BIOS, делятся на 2 части:

1) Процедуры HDD, написанные автором TR-DOS 5.30 - ZET-9 и предназначенные исключительно для этой TR-DOS, они не универсальны, поэтому использовать их в пользовательских программах затруднительно, поэтому назвать это API нельзя.
2) Универсальные процедуры HDD - инициализация винчестеров, получение 512 байт служебной информации, чтение / запись блока секторов начиная с заданного адреса в ОЗУ, которые можно легко использовать в пользовательских программах, это можно назвать API.

В стандартных страницах ПЗУ BASIC-48, Basic-128/Menu-128 ничего менять нельзя, эти прошивки должны оставаться стандартными ради полной совместимости со стандартным Спектрумом.
ПЗУ TR-DOS включается только в режиме DOS через адреса #3Dxx, поэтому размещать в нём API HDD, предназначенное для пользовательских программ, тоже нельзя. Более того, мой BIOS при тестировании аппаратуры, сам использует это же API для инициализации HDD и получении информации о названии жёсткого диска и его объёме. Поэтому этот API тем более должен оставаться в ПЗУ BIOS, но можно перенести на другую страницу.
Но если мы убираем сигнал DOS из дешифрации NemoIDE, то процедуры HDD, которые написаны специально для TR-DOS 5.30 автором прошивки - "ZET-9" и размещённые им в ПЗУ BASIC-48, и перенесённые мной в ПЗУ BIOS, можно и даже нужно перенести в ПЗУ TR-DOS и назвать её версию 5.32, если конечно в нём хватит для них места, но по идее, хватить должно.

ПЗУ Gluk тоже менять не нужно, у пользователей должна оставаться возможность использовать стандартные версии прошивок, не привязываясь к своему железу.

Цитата Black_Cat ()
Реально, LPrint это заплатка на SOS48, и занимает не полную страницу 2к, просто сэкономили на дешифрации, остальное место можно вполне использовать для чего-то полезного, если улучшить дешифрацию подключения этой заплатки.


Т.к. прошивка ZX Lprint занимает всего 2 КБ, то она на странице повторяется 8 раз. Я не знаю, используют ли этот факт существующие процедуры печати в BASIC-48 или нет, обращаются ли они к ПЗУ ZX-Lprint исключительно в диапазоне адресов #0000-#07FF или могут использовать адреса от #800 до #3FFF ? Но было бы глупо так делать. Однако, у меня нет уверенности в том, что если прошивка ZX-Lprint будет доступна только в диапазоне #0000-#07FF и не будет доступна в адресах >=#0800, то это не нарушит нормальную работу процедуры печати.

Но если в этой же странице ПЗУ, где размещён ZX-Lprint, использовать свободное пространство для API HDD, то я не смогу предоставить его через точки входа RST xx, да и проще будет всё-таки не трогать страницу принтера и разместить этот API HDD в другой странице ПЗУ BIOS, например, во 2-й (считая от 0). Но придётся усложнить коммутацию страниц ПЗУ BIOS.


Сообщение отредактировал Northwood - Пятница, 04.09.2020, 08:31
 
Black_CatДата: Суббота, 05.09.2020, 12:42 | Сообщение # 122
Координатор
Группа: Координаторы
Сообщений: 730
Статус: Offline
Для лучшего понимания набросал схемку адаптера DIVide для NemoBus https://zx.clan.su/forum/8-167-1 . От предложенной сначала блокировки по A15 отказался в пользу M1/.

Добавлено (05.09.2020, 12:46)
---------------------------------------------
Цитата Northwood ()
я не смогу предоставить его через точки входа RST xx

Ты в курсе, что divIDE/MMC тоже перехватывает эти точки, ты учитывал это?


"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!".
"Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло."
Гарри Трумэн
 
NorthwoodДата: Суббота, 05.09.2020, 12:53 | Сообщение # 123
80h
Группа: Пользователи
Сообщений: 131
Статус: Offline
Цитата Black_Cat ()
Ты в курсе, что divIDE/MMC тоже перехватывает эти точки, ты учитывал это?

Без разницы. Чтобы вызвать процедуру HDD через RST xx, сначала нужно включить ПЗУ BIOS, чего не будет при работе с DivIDE. Поэтому не вижу проблемы.
 
Black_CatДата: Суббота, 05.09.2020, 13:16 | Сообщение # 124
Координатор
Группа: Координаторы
Сообщений: 730
Статус: Offline
Цитата Northwood ()
Поэтому не вижу проблемы.
 Вижу, что не видишь :) . У divIDE её ловушки RSTxx включены всегда, и divIDE не знает, что ты ей заблокировал отключение ПЗУ на мамке, она тупо по срабатыванию ловушки подключит своё ПЗУ на шину, и будете вы с ней соревноваться, чьё ПЗУ быстрее сдохнет :) . Эт я к тому, что даж при наличии у тебя отдельного слота под divIDE, работать она всё равно не будет, а с предложенной схемой адаптера будет (по крайней мере на сколько я понимаю работу divIDE :) ). Так что удаляй этот бесполезный слот, и разводи на его месте микрухи, за одно сэкономишь кучу логических элементов задействованных под этот слот.


"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!".
"Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло."
Гарри Трумэн
 
NorthwoodДата: Суббота, 05.09.2020, 13:29 | Сообщение # 125
80h
Группа: Пользователи
Сообщений: 131
Статус: Offline
А есть вменяемая принципиальная схема DivIDE и описание его работы ? То что мне удалось найти, схемой трудно назвать - какая-то сплошная мазня - надписи налазят друг на друга, что хрен их прочитаешь и хрен поймёшь, что куда идёт.
 
Black_CatДата: Суббота, 05.09.2020, 13:33 | Сообщение # 126
Координатор
Группа: Координаторы
Сообщений: 730
Статус: Offline
Цитата Northwood ()
А есть вменяемая принципиальная схема DivIDE и описание его работы ? То что мне удалось найти, схемой трудно назвать - какая-то сплошная мазня - надписи налазят друг на друга, что хрен их прочитаешь и хрен поймёшь, что куда идёт.

Да схема бестолку, там сплошные ПЛМы.  Вот текст из доки: "If CPU jump to adress #0, #8, #38, #66, #4C6,#562 then divide automatically connect at next
adress in rom area 8kB divide rom + 8 kB divide
ram (rom=0-8191 and ram=8192-16383). Rom is read
only and ram is rewritable. Divide memory is
disconnect if CPU jump to adress range #1FF8-
#1FFF.(read only one instruction code from divide
rom in this adress and at next adress disconnect
divide memory + connect back ZX rom).
DivIDE support also trdos memory maping.
Automatically connect memory if CPU jump to
adress range #3D00-#3DFF. Return is same (#1FF8-
#1FFF)."


"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!".
"Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло."
Гарри Трумэн
 
NorthwoodДата: Суббота, 05.09.2020, 13:54 | Сообщение # 127
80h
Группа: Пользователи
Сообщений: 131
Статус: Offline
Ну с таким раскладом DivIDE в любом случае не будет давать компьютеру нормально работать. Но ты говорил про A15, если туда принудительно подавать 1, то DivIDE не сможет отловить переходы на адреса #00, #08 и т.д.
 
Black_CatДата: Суббота, 05.09.2020, 14:05 | Сообщение # 128
Координатор
Группа: Координаторы
Сообщений: 730
Статус: Offline
Цитата Northwood ()
Ну с таким раскладом DivIDE в любом случае не будет давать компьютеру нормально работать. Но ты говорил про A15, если туда принудительно подавать 1, то DivIDE не сможет отловить переходы на адреса #00, #08 и т.д.

Ну дык посмотри мою схему адаптера, там всё уже решено :) . Ну чо, выкидываешь +3 слот? Кстати, твой слот бесполезен ещё и потому, что разные divIDE используют разный конструктив установки слота - либо в плоскости платы divIDE, либо перпекдикулярно. В последнем случае ты её либо не поставишь, либо она перекроет собою все твои слоты на мамке :) . Так что этот слот на мамке бессмыслица.


"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!".
"Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло."
Гарри Трумэн
 
NorthwoodДата: Суббота, 05.09.2020, 15:07 | Сообщение # 129
80h
Группа: Пользователи
Сообщений: 131
Статус: Offline
Цитата Black_Cat ()
Кстати, твой слот бесполезен ещё и потому, что разные divIDE используют разный конструктив установки слота - либо в плоскости платы divIDE, либо перпекдикулярно. В последнем случае ты её либо не поставишь, либо она перекроет собою все твои слоты на мамке :)


Если перпендикулярно, тогда и этот переходник не поможет установить карту.
 
Black_CatДата: Суббота, 05.09.2020, 15:27 | Сообщение # 130
Координатор
Группа: Координаторы
Сообщений: 730
Статус: Offline
Цитата Northwood ()
Если перпендикулярно, тогда и этот переходник не поможет установить карту.

Ну, не обязательно переходник делать с параллельными краевыми разъёмами, они могут быть перпекдикулярными, чтоб ZXBus был направлен внутрь корпуса, тогда в башне угловой divIDE будет развёрнут вверх. Видишь, использование переходника позволяет более гибко конфигурировать периферию для стандартных слотов NemoBus, подбирая нужный переходник, в отличие от варианта с +3 слотом на мамке, который либо будет тупо занимать место и не использоваться, либо о5 же требовать ещё к себе переходника :) . И в чём тогда профит его наличия?


"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!".
"Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло."
Гарри Трумэн
 
NorthwoodДата: Суббота, 05.09.2020, 15:34 | Сообщение # 131
80h
Группа: Пользователи
Сообщений: 131
Статус: Offline
Цитата Black_Cat ()
они могут быть перпекдикулярными, чтоб ZXBus был направлен внутрь корпуса, тогда в башне угловой divIDE будет развёрнут вверх

И как такое изготовить с краевым разъёмом ? Переходник делать из двух плат ? Но это будет в 2 раза дороже в изготовлении, т.к. нужно заказывать на заводе 2 платы.


Сообщение отредактировал Northwood - Суббота, 05.09.2020, 15:35
 
Black_CatДата: Суббота, 05.09.2020, 15:38 | Сообщение # 132
Координатор
Группа: Координаторы
Сообщений: 730
Статус: Offline
Цитата Northwood ()
И как такое изготовить с краевым разъёмом ?

Да просто квадратная плата - с нижнего края NemoBus + игольчатый разъём для дочек над ней, на левом крае ZXBus, с нумерацией снизу-вверх.


"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!".
"Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло."
Гарри Трумэн
 
NorthwoodДата: Суббота, 05.09.2020, 15:52 | Сообщение # 133
80h
Группа: Пользователи
Сообщений: 131
Статус: Offline
Ты имеешь ввиду вот такой игольчатый разъём ? Но как механически на нём закрепить плату DivIDE ?

 
Black_CatДата: Суббота, 05.09.2020, 16:12 | Сообщение # 134
Координатор
Группа: Координаторы
Сообщений: 730
Статус: Offline
Цитата Northwood ()
Но это будет в 2 раза дороже в изготовлении, т.к. нужно заказывать на заводе 2 платы.

Во-первых, почему это должно волновать тебя? Переходники - это проблема владельцев divIDE. Ты обязан обеспечить возможность подключения к стандартной шине NemoBus, а кто и что туда втыкает - это ответственность пользователя. Конечно, ты можешь доукомплектовать плату переходником, кому он нужен, но это уже отдельное устройство за отдельные деньги, и по отдельной договорённости.

Цитата Northwood ()
Ты имеешь ввиду вот такой игольчатый разъём ? Но как механически на нём закрепить плату DivIDE ?

Нет! Вот рисунок:

Добавлено (05.09.2020, 16:19)
---------------------------------------------
На твоей картинке PLD коннектор, он позволяет цеплять дочку токо с одной стороны, а чтоб цеплять с двух сторон надо PBD коннектор, вот я же давал его чертёж: https://zx.clan.su/forum/8-166-1186-16-1596387421

Прикрепления: 0032374.png (3.3 Kb)


"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!".
"Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло."
Гарри Трумэн
 
NorthwoodДата: Суббота, 05.09.2020, 18:22 | Сообщение # 135
80h
Группа: Пользователи
Сообщений: 131
Статус: Offline
Интересно, где ты взял PBD коннекторы с ножками длинной 10 мм ? Я нахожу только 3 мм, что в интернет-магазинах, что на гугл-фото:
https://www.google.com/search?....BAgKEAE

С длинными прямыми ногами вообще существуют в продаже ?
 
Black_CatДата: Суббота, 05.09.2020, 20:11 | Сообщение # 136
Координатор
Группа: Координаторы
Сообщений: 730
Статус: Offline
Цитата Northwood ()
Интересно, где ты взял PBD коннекторы с ножками длинной 10 мм ?

У китайцев
Прикрепления: pbd.pdf (54.2 Kb)


"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!".
"Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло."
Гарри Трумэн
 
Black_CatДата: Суббота, 05.09.2020, 22:57 | Сообщение # 137
Координатор
Группа: Координаторы
Сообщений: 730
Статус: Offline
у эуропэйцэв, берёшь модель BE2-064-S112-55, либо две BE2-032-S112-55, либо четыре BE2-016-S112-55, токо пластмасску лишнюю с ножек снимаешь:
Прикрепления: 72_PC-07a.pdf (199.0 Kb)


"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!".
"Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло."
Гарри Трумэн
 
NorthwoodДата: Воскресенье, 06.09.2020, 13:58 | Сообщение # 138
80h
Группа: Пользователи
Сообщений: 131
Статус: Offline
По поводу дополнительного триггера так называемого "режима ядра", я не вижу необходимости в нём. Я могу сформировать сигналы DOS\ = IODOS\=0 на шине NemoBus при включении ПЗУ BIOS, используя сигнал ROM_SP, это запретит картам расширения занимать шину, когда выполняется код BIOS-а. Не вижу смысла блокировать пользователям доступ к ПЗУ BIOS к любой его странице. Единственный порт, который действительно нужно защищать от свободного доступа, это #FC37, потому что на нём висит программирование ПЗУ.

Добавлено (06.09.2020, 20:11)
---------------------------------------------
Ещё вопрос: Для чего, открывая порты CMOS через D7 #EFF7, выдавать 0 на IODOS/ на шине и открывать порты TR-DOS ?


Сообщение отредактировал Northwood - Воскресенье, 06.09.2020, 20:12
 
Black_CatДата: Воскресенье, 06.09.2020, 20:15 | Сообщение # 139
Координатор
Группа: Координаторы
Сообщений: 730
Статус: Offline
Цитата Northwood ()
Не вижу смысла блокировать пользователям доступ к ПЗУ BIOS к любой его странице.

Задача ядра сконфигурировать АВМ, а т.к. вход в ядро происходит сразу по аппаратному сбросу, то было бы логично вынести процедуры POST и SETUP в ядро, т.к. они тоже используются сразу после старта компа, а в BIOS оставить токо API. Режим ядра открывает доступ ко всей памяти компьютера, в то время как режим АВМ позволяет иметь доступ токо к памяти этой АВМ, которая работает в защищённом режиме, чтоб никто не мог влезть в её память и чото повредить. Всё прогрессивное человечество изобретало защищённый режим, а ты предлагаешь отказаться от него и дать всем программам возможность срать куда не попадя :) . Если нужен доступ ко всему ОЗУ - для этого у нас есть однозадачный режим AllRAM, когда открыта вся память компа :) . В многозадачном режиме программа не должна иметь возможность лазить в ОЗУ сверх выделенной ей. Если такая программа сбойнула, или в ней ошибка, то она не сможет повредить ничего вне отведённой ей памяти. Повторяю ещё раз - ядро, это программа, выполняемая перед стартом Спектрума. Эта программа завершается RST0, после чего управление передаётся сконфигурированной в ядре АВМ.

Добавлено (06.09.2020, 20:23)
---------------------------------------------

Цитата Northwood ()
Для чего, открывая порты CMOS через D7 #EFF7, выдавать 0 на IODOS/ на шине и открывать порты TR-DOS ?

Чтоб иметь возможность открывать все теневые порты, в частности порты BDI без необходимости входить в TR-DOS, что актуально для CP/M например.


"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!".
"Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло."
Гарри Трумэн
 
NorthwoodДата: Воскресенье, 06.09.2020, 20:36 | Сообщение # 140
80h
Группа: Пользователи
Сообщений: 131
Статус: Offline
Я не говорил про открыть доступ ко всему ОЗУ, я говорил про ПЗУ, и вопрос был про дополнительный триггер, определяющий включение режима Kernel Mode, хотя тоже самое можно сделать и через D0 #FF37. Включение программами ПЗУ BIOS не даст им доступ ко всей памяти, конфигурация памяти от этого не меняется, т.к. за это отвечает другой порт - #FC37.

Добавлено (06.09.2020, 20:41)
---------------------------------------------

Цитата Black_Cat ()
Чтоб иметь возможность открывать все теневые порты, в частности порты BDI без необходимости входить в TR-DOS, что актуально для CP/M например.

Ок, здесь вопросов больше нет. BIOS открыл порты CMOS, потерял доступ к некоторым портам, прочитал / записал инфу в CMOS, выключил его порты, доступ к некоторым портам вернулся.

Добавлено (06.09.2020, 20:59)
---------------------------------------------
P.s. я только сделал маленькое изменение в твою схему формирования сигнала DOS - ЛИ1 заменил на ЛП5, поменяв местами DOS и DOS/. Для того, чтобы во время работы работы BIOS (POST, Setup), когда на шине будет DOS/ = IODOS/ = 0, чтобы тем самым не открывался доступ к портам TR-DOS, т.к. BIOS тогда не сможет протестировать порты атрибутов и джойстика.

Сообщение отредактировал Northwood - Воскресенье, 06.09.2020, 20:39
 
Поиск:

Copyright MyCorp © 2006Сайт управляется системой uCoz