Pentagon by Northwood
|
|
Black_Cat | Дата: Среда, 01.07.2020, 16:12 | Сообщение # 1 |
Координатор
Группа: Координаторы
Сообщений: 731
Статус: Offline
| 1. Сигналы DOS/, IODOS/ для NemoBus v.1.2
Цепи DOS/, DOS на выходе DD29 идущие на дешифрацию портов разорвать, и в разрыв врезать схему. Цепи, идущие на выборку ПЗУ оставить как есть.
"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "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 |
Координатор
Группа: Координаторы
Сообщений: 731
Статус: 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 |
Координатор
Группа: Координаторы
Сообщений: 731
Статус: 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 |
Координатор
Группа: Координаторы
Сообщений: 731
Статус: 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 |
Координатор
Группа: Координаторы
Сообщений: 731
Статус: 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 |
Координатор
Группа: Координаторы
Сообщений: 731
Статус: 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 |
Координатор
Группа: Координаторы
Сообщений: 731
Статус: Offline
| Цитата Northwood ( ) И как такое изготовить с краевым разъёмом ? Да просто квадратная плата - с нижнего края NemoBus + игольчатый разъём для дочек над ней, на левом крае ZXBus, с нумерацией снизу-вверх.
"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!". "Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло." Гарри Трумэн
|
|
| |
Northwood | Дата: Суббота, 05.09.2020, 15:52 | Сообщение # 133 |
80h
Группа: Пользователи
Сообщений: 131
Статус: Offline
| Ты имеешь ввиду вот такой игольчатый разъём ? Но как механически на нём закрепить плату DivIDE ?
|
|
| |
Black_Cat | Дата: Суббота, 05.09.2020, 16:12 | Сообщение # 134 |
Координатор
Группа: Координаторы
Сообщений: 731
Статус: 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
"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "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 |
Координатор
Группа: Координаторы
Сообщений: 731
Статус: Offline
| Цитата Northwood ( ) Интересно, где ты взял PBD коннекторы с ножками длинной 10 мм ? У китайцев
"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!". "Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло." Гарри Трумэн
|
|
| |
Black_Cat | Дата: Суббота, 05.09.2020, 22:57 | Сообщение # 137 |
Координатор
Группа: Координаторы
Сообщений: 731
Статус: Offline
| у эуропэйцэв, берёшь модель BE2-064-S112-55, либо две BE2-032-S112-55, либо четыре BE2-016-S112-55, токо пластмасску лишнюю с ножек снимаешь:
"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "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 |
Координатор
Группа: Координаторы
Сообщений: 731
Статус: 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 |
|
| |
|