nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 09:07



Reply to topic  [ 8 posts ] 
Специалист - Мысли по расширению ОЗУ за счёт ПЗУ 
Author Message
Doomed

Joined: 12 Feb 2016 13:39
Posts: 463
Reply with quote
Так, а в чем сложность? Это вполне можно сделать. Я у себя в Специалисте аналогично часть адресного пространства отведенного под ПЗУ выделил под ОЗУ и разместил там область для хранения переменных при работе с SD картой(вариант SD интерфейса на дискретных элементах). В таком раскладе памяти для программ, рассчитанных на базовый Специалист, вообще все прозрачно и незаметно.


14 Apr 2017 14:05
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
А наш коллега rw6hrm "раритетный восьмибитный компьютер "Дон" (клон "Специалиста") на процессоре КР580ВМ80А" таки продал...

Image

Image

Ну и правильно, наверное, это всё же раритет, как первые 200 советских "Эпплов-I" :mrgreen:
Незачем его переделывать...

Надо намекнуть fifan-y попросить у коллеги rw6hrm эти фотографии для своего сайта.
Ибо фотография от пользователя форума zx.pk.ru dr.Titus на сайте fifan-а гораздо хуже...

Image

_________________
iLavr


16 Jul 2017 00:02
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
rw6hrm wrote:
продал..., будем считать, что передал дальше. Доделывать аппарат не стоило, уж больно красиво сделан.
Совершенно с вами согласен, никакого негатива по этому факту в виду не имел.

rw6hrm wrote:
Нормального прикладного софта к нему нет ...

Тоже соглашусь, поскольку у меня всё же "Специалист_МХ" с великолепным пакетом RAMFOS.
А на оригинальном "Специалисте" я практически и не работал - мы с другом купили сразу т.н. Монитор-DDT
у одного кооператива - он был очень удачным, с набором прикладных программ.
Я порой подозреваю, что RAMFOS - это интегрированный и красиво доработанный в единое целое пакет DDT.

rw6hrm wrote:
А узел считывания с ленты у него классный. Жаль, не перерисовал...

Мне кажется, я этот узел знаю (обратил внимание тоже, что много "рыжих" транзисторов :wink: ),
в переделках "Специалист_МХ" - этот (или похожий) узел есть. Но я не стал его делать, т.к. метод кодирования
FSK, принятый в "Специалисте_МХ" куда более "читабельный" нежели фазовая манипуляция в оригинальном
"Специалисте", поэтому простого компаратора СА3 хватало за глаза...

_________________
iLavr


16 Jul 2017 01:57
Profile
Devil

Joined: 06 Oct 2006 03:17
Posts: 856
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
Да, хорошо бы фотки получше надыбать. Все хотел спросить, а как же этот клон работает без функциональных клавиш?


25 Jul 2017 10:07
Profile
Doomed
User avatar

Joined: 19 Feb 2017 03:46
Posts: 584
Location: Санкт-Петербург, Россия, третья планета от Солнца, галактика Млечный Путь
Reply with quote
Топик стартер обсуждал традиционную идею расширения ОЗУ в неиспользуемом окне D000...F7FF, я могу предложить лучший вариант. Ведь форум читают не для того, чтобы узнать, какой компьютер у кого есть и как он выглядит, а для того чтобы черпать идеи.

Главные критерии при доработках на готовой плате - это минимальный объём переделок и эффективность. При расширении памяти Специалиста на РУ5 (т.е в платах Экспресс и Специалист-М) обычно рассматривают 2 варианта. Первый вариант - это "открытие" ОЗУ в незадействованных системным ПО адресах D000...F7FF, что добавляет 10 кб (этот вариант использовался всеми версиями установки CP/M на Специалист, причём разные авторы пришли к этому решению независимо).

Второй вариант - это использование идеи от ПК Львов, а именно - закрытие экранной области сегментом памяти находящимся под ПЗУ C000. Всё отличие только в том, что во Львове для реализации этой идеи экран грамотно переместили на 4000, что даёт преимущество в том, что при переключениях рабочие ячейки ПЗУ под RAMTOP не исчезают из адресного пространства. Можно конечно тоже коммутировать экран с 9000 на 5000, но особого смысла нет, т.к это резко усложняет схему, а грамотный программист может выкрутиться и без подобных удобств. Достоинство такого варианта, что это расширение не за счёт ПЗУ, как в варианте ТС, - ПЗУ до 14 кб остаётся.

Вот схема.

Image

Принцип работы очевиден, а для некомпетентных в железе поясняю. Есть схема совпадения, которая выдаёт единицу когда A14=0 и A15=1, т.е на шине выставлен адрес в окне 8000....BFFF. Эта единица подаётся на XOR-вентиль ЛП5, на второй вход которого заведён адрес А14 процессора. ЛП5, когда у него на одном входе подана постоянная единица по второму входу работает как инвертор. Таким образом на выходе ЛП5 будет инвертированный адрес А14 и в итоге и А14 и А15 подаваемые на ОЗУ будут единицами, что выбирает сегмент C000...FFFF из памяти. Выходной сигнал схемы A14' подаётся на ногу КП2 адресного мультиплексора динамической памяти вместо A14 от процессора. На обращения видеочасти в ОЗУ это не повлияет, т.к при обращениях видеочасти данный вход КП2 не используется. Таким образом при сигнале 'mode'=1, в окне 8000...BFFF будет читаться не экранное ОЗУ с ячейками монитора, а область ОЗУ закрытая ПЗУ C000...FFFF.

Такая доработка самая простая и позволяет получить 48 кб сплошного ОЗУ, что в свою очередь позволяет получить CP/M с относительно высоким TPA в Специалисте без второй банки РУ5. При этом используем ПЗУ 27256 читаемое в окне 14К (C000...F7FF). Имеем две страницы ПЗУ по 14К на 27256. Переключать ПЗУ будем тем же сигналом mode, т.е расхода деталей нет (панелька для ПЗУ на 28 ног на плате Экспресс как раз уже есть).

CP/M целиком (это ~8 кб без буферов, буфера д.быть в ОЗУ) размещаем в одной странице ПЗУ 27256 с окном 14К и эта страница ПЗУ включается тем же сигналом mode=1. Оконный драйвер VT52 (10 кб) или простейший в (4 кб) допрошиваем в обычное ПЗУ Специалиста в неиспользуемый базовым ПО участок D000...FFFF, и оно, как и коды базового ROM-BIOS (C000...CFFF) доступно при mode=0. Это сохраняет совместимость с всеми программами Специалиста. Код драйвера VT52 обязательно должен прогоняться при включённом экране, его нельзя перенести в страницу ПЗУ, где CP/M. А CP/M экран не нужен, нужно только сплошное ОЗУ и общих ячеек у драйвера подпрограммы CONOUT и CP/M нет. Потому и проблем разнесения драйвера CONOUT и CP/M по разным страницам ПЗУ нет.

В качестве сигнала mode удобнее всего использовать уже имеющийся сигнал НП, освободив его от от функции НП (удобно тем, что бесплатно и все программы Специалиста не меняют этот бит). А если процессор КР580 и прерывания не нужны, то можно в качестве управляющего сигнала использовать выход EI самого процессора. Команды DI/EI в программах Специалиста отсутствуют, в фирменных программах CP/M они тоже не используются. Это бесплатное, но не лучшее решение, т.к, хотя игр на прерываниях для Специалиста нет, но при подключении мыши прерывания очень желательны.

Хотелось бы выложить в этой теме программную поддержку этой простейшей и самой разумной доработки, - по крайней мере тест ОЗУ, минимальный ROM-BIOS на 48К и CP/M (скорее всего лишь для Z80, очистка программ от Z80-кодов слишком утомляет).

О этой идее, кстати, я упоминал ещё в форуме ZX-PK.ru. Доработка простейшая и самая разумная. Две копеечные микросхемы заменяют громоздкую "навороченность" в три десятка корпусов в Специалисте-MX, причём и CP/M получается с бОльшим TPA. Переделка делается за 30 минут, а не за 30 дней. Вот именно такие простые доработки имеют смысл.

Если бы я догадался до этой идеи в 1990 году, то не стал бы переходить на ОРИОН, ведь все программы ОРИОНА работают в банке 0, имея доступными те же самые 48 кб, но в отличие от Специалиста цвет в ОРИОНЕ тормозной. Так что Специалист с 64К и бестормозным цветом лучше, а заменой РУ5 на РУ7 (что я делал в 1990, когда переделывал одну из плат Специалиста в монохромный ОРИОН) получается и ОЗУ больше, причём общее число корпусов без цвета на плате Экспресс остаётся меньшим (40...42). Цвет по схеме А.Волкова это ещё несколько корпусов. Кстати, редакция журнала МК в начале 1991 предложила мне опубликовать серию статей, но я вынужден был отказаться, т.к уже перешёл на ОРИОН.

В 10 кб ПЗУ в его странице 0 умещается драйвер VT52, причём оконный (этот драйвер для Z80 у меня есть от ОРИОНА и как раз 10 кб, хотя его придётся кастрировать, убрав цвет ОРИОНА). И для этого драйвера у меня и цветной CP/M-нортон уже есть (также для Z80 и тоже от ОРИОНА). Если в ОРИОНЕ CP/M для банки 0 даже без драйвера даёт TPA всего в ~32К, то тут, причём с драйвером, получаем TPA в 46-47 кб (точнее это зависит от размера физического сектора и размера диска). Для сравнения в Apple-II CP/M имела TPA 44К, а в ОРИОНЕ 51К.

Вот для такого Специалиста можно заняться написанием DOS-менеджера файлов в стиле GUI с мышью, что-то типа Apple-IIe MouseDesk или GEOS для Commodore-64. В них добавили мышь, а скорости 6502 в 1 МГЦ хватило, значит и скорости Z80 на 4 МГЦ хватит (это Z80 турбированный по схеме без WAIT, ОЗУ на 4 МГЦ ещё не перегревается). Если кто из практикующих сейчас ассемблерных программистов захочет присоединиться буду рад. На самом деле это не так сложно, как кажется (выводим на экран мелкие картинки и мышью гоняем по ним стрелку указатель).

Проблема мыши решаема. Для начала у меня есть мышь от Корвета (она имеет простой параллельный интерфейс) и известен, хотя и довольно противный по железу (2 БИС 580-го МПК и дефицитные буфера 170-й серии) вариант установки Microsoft мыши в ОРИОН из ж.Радиолюбитель 1994 года.


Last edited by barsik on 26 Nov 2019 04:40, edited 3 times in total.



11 Nov 2019 07:03
Profile
Doomed

Joined: 12 Feb 2016 13:39
Posts: 463
Reply with quote
Хорошая идея и вполне по теме этого топика. Скажу больше, мне в личку с пол года назад приходило сообщение с обсуждением этой идеи высказанной barsik_ом на zx-pk, так что она очень даже интересна и не только здесь и сейчас.

По самой схеме, на рисунке указаны элементы ЛЛ1, а в тексте ЛП5, ну и в логике дб ЛП5, может рисунок стоит поправить?
Потом, если идет инверсия А14, то область ОЗУ 0хС000-0хFFFF видится в адресах 0х8000-0хBFFF, тогда при обращении к 0хС000-0хFFFF мы то будем попадать в 0х8000-0хBFFF, а это значит, что непрерывного ОЗУ даже не 48, а 52КБ, и только после начнется видео ОЗУ...
Проблему пока вижу одну - как достучаться к клавиатуре? Переключать режимы по опросу? - не вариант. Были бы прерывания, или легко организуемый доступ к портам в ВМ80, а без этого...

to barsik: Программную поддержку, если это в разрезе CP/M, обсуждать здесь вряд ли имеет смысл, может сделать тему "CP/M для Специалиста", в ней, развить и эту идею, а заодно, пошагово рассказать, как нужно собирать файлы CP/M, на что обращать внимание, со всеми нюансами, что бы в результате получилась готовая к работе версия CP/M для Специалиста. Внешний носитель - SD, я к такому проекту подключусь.


12 Nov 2019 12:59
Profile
Doomed
User avatar

Joined: 19 Feb 2017 03:46
Posts: 584
Location: Санкт-Петербург, Россия, третья планета от Солнца, галактика Млечный Путь
Reply with quote
Post 
PVV wrote:
на рисунке указаны элементы ЛЛ1, а в тексте ЛП5
Да точно, промахнулся выбирая мышью элемент в списке (клавиша в мышке поддохла, срабатывала лишь после нескольких нажатий через силу), а на схеме не обратил внимание, т.к схема чертилась всего пару минут, а после не приглядывался. Не ошибается лишь, кто ничего не делает. Спасибо, что заметили; никто другой не заметил, хотя аппаратчиков, что знают (или ещё помнят) TTL-микросхемы, намного больше, чем любителей программирования.
PVV wrote:
Потом, если идет инверсия А14, то область ОЗУ С000-FFFF видится в адресах 8000-BFFF, тогда при обращении к С000-FFFF, мы то будем попадать в 8000-BFFF, а это значит, что непрерывного ОЗУ даже не 48, а 50 Кб, и только после начнется видео ОЗУ
Так было бы если бы на XOR-вентиль (в качестве выборки окна) поступал только адрес A15, тогда бы получался не перенос блока C000...FFFF на 8000, а перестановка блоков 8000 <--> C000 (т.е перекорёживатель ОЗУ по типу предложенного для ОРИОНА). Такая схема ещё проще. А в данной схеме никакие сигналы относящиеся к узлам выше C000, в том числе и выборки 7-ми ПЗУ РФ2 и В/У в окне F800...FFFF не меняются.

Потому выше 8000 всё остаётся как в оригинале. Устройства выше C000 надо оставить как в оригинале, особенно, если переключения делать не выходом EI у КР580, а битом НП порта клавиатуры (тогда доступ к В/У необходим во всех режимах, иначе как вернуть mode=0).

Я этот бит НП из ППА в своих Специалистах из конца 80-тых освобождал формируя НП на RS-триггере из двух вентилей из ЛА3 (можно и на половинке ТМ2), - взвод по /RESET, сброс по /WR, и использовал, чтобы формировать бордюр и бегущие полосы при вводе с МГ, как в ZX (программно совсем просто, по готовности байта при МГ-вводе, инвертируем бит НП - три команды ассемблера).

А если сделать так, чтобы при mode=1 ПЗУ и порты, как и экран тоже исчезали (т.е ОЗУ было и выше C000), то управлять mode можно будет только выходом EI КР580 или надо вводить порт управления как настоящий порт IN/OUT. А в подобных доработках на готовой плате проводками самое главное сохранить простоту.

Сюжет здесь в том, что в отличие от ОРИОНА, сплошные 48К есть одновременно с наличием ПЗУ C000...F7FF (в ОРИОНЕ сплошные 48К тоже есть, но там на C000...F7FF не поместить программ, мешает экран и В/У). Это позволяет перенести код CP/M в ПЗУ выше C000. Если есть только ПЗУ 27128, то можно обойтись одной страницей ПЗУ в 14К, разместив в ПЗУ 10К только BDOS, BIOS и минимальный драйвер.

BDOS легко переделывается на работу в ПЗУ, перенеся 72 рабочих ячейки BDOS из тела BDOS и 48 ячеек его же стека из тела BDOS (что теперь ПЗУ) - в ОЗУ ниже C000. Сам код BDOS не меняется, хотя там 65 ячеек стоят в конце тела BDOS, как обычно принято в программах, а 7 ячеек (консольных) располагаются сдуру прямо в середине тела BDOS, потому код BDOS расположенный выше этих 7-ми ячеек, если их убрать, сдвинется, произойдёт схлопывание на 7 байт. У меня полноценный исходник BDOS, его можно менять, сдвигать коды, т.к извращений типа самомодификации кода там нет.
PVV wrote:
Программную поддержку... обсуждать здесь вряд ли имеет смысл, может сделать тему "CP/M для Специалиста"
Обсуждать программы ни здесь ни в иной теме я изначально и не собирался (имел ввиду лишь выкладку готовых кодов). Да, создам тему, но не в разделе Специалиста.

У меня уже есть вариант CP/M для обычного Специалиста, как раз только успел его странслировать 1.5 года назад, чтобы поиметь РК-КНГМД на Специалисте. Впрочем, у меня даже исходник CP/M-BIOS Специалиста из 1990 года сохранился (дискеты и инсталляторы CP/M Специалиста не сохранились, зачем было их хранить 30 лет), потому странслировать заново полный оригинал CP/M Специалиста версии 1990 - дело не более часа.
PVV wrote:
Внешний носитель - SD, я к такому проекту подключусь
Тут от вас труда понадобится совсем немного. Надо написать подпрограмму (точнее две), что берёт из ячеек TRACK и SECTOR значения и считывает (записывает) в ОЗУ по адресу из ячеек DMA физический сектор.


12 Nov 2019 20:05
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
PVV wrote:
CP/M, обсуждать здесь вряд ли имеет смысл, может сделать тему "CP/M для Специалиста", ...
Я, честно говоря, несколько удивляюсь столь повышенному вниманию вокруг
этой самой СР/М. Это обычная операционная система под процессоры i8080,
i8085, а позже и z80. :roll:
У неё просто несколько специфический способ вызова своих системных подпрограмм.
Не так, как мы привыкли: 0F803H, 0F809H и т.п., а вот так:
Attachment:
scp_mf.gif
scp_mf.gif [ 6.14 KiB | Viewed 13797 times ]

Это я покопался на своих образах дисков для "Специалиста"... :wink:
Но сейчас не конец 80-х, когда всё было в новинку, и всё надо было "доставать".
Про СР/М вполне доступно и на русском можно прочитать в этом нашем Интернете
хотя бы вот здесь:
http://koapp.narod.ru/tehlit/system/dos/cpm/cpm.htm

Ну и интересно также, что с конца 80-х известно, что большое число
программ, написанных под эту самую СР/М можно весьма безболезненно
адаптировать под эти наши "РК-86", "Микроши" и "Специалисты".
Главное, чтобы не было обращений к дисковой системе, если на компьютере
её нет, а если есть диск или квазидиск, то и это решаемо.
Суть затеи в том, чтобы перенаправить вызовы СР/М в эти наши стандартные
подпрограммы "Мониторов" и согласовать параметры вызовов.

Об этом всём подробно рассказал всё тот же наш гуру-первопроходец Сергей
Попов
в журнале "Микропроцессорные средства и системы" ещё в 1987 году.
МПСС №6, 1987, Попов С.Н. "Программа «Имитатор ДОС» для 8-разрядной ПЭВМ"
Кто хочет прильнуть к первоисточнику, можно прочитать здесь:
http://www.wdigest.ru/mpss_1987.htm

Вероятно, Попов же и адаптировал СР/М-овский отладчик SID ещё для "Микроши".
Он там был на кассете под кличкой, кажется, OTLADCH.
Меня ещё очень удивляло, почему все программы стартуют с 0000Н, а эта -
с адреса 0100Н... :o Но в НЕХ-виде сразу понятно, откуда выросли "уши" у SID. :lol:

Он, кстати, безболезненно и под RAMFOS работает, сам свои уши показывая... :ewink:
Attachment:
sid_m.gif
sid_m.gif [ 5.12 KiB | Viewed 13797 times ]

Так что во многих случаях совершенно необязательно непосредственно СР/М
ставить на наши древние монстрики, чтобы использовать что-то из её ПО.

_________________
iLavr


13 Nov 2019 08:11
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 8 posts ] 

Who is online

Users browsing this forum: No registered users and 8 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.