|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
|
Page 1 of 1
|
[ 8 posts ] |
|
Специалист - Мысли по расширению ОЗУ за счёт ПЗУ
Author |
Message |
PVV
Doomed
Joined: 12 Feb 2016 13:39 Posts: 463
|
Так, а в чем сложность? Это вполне можно сделать. Я у себя в Специалисте аналогично часть адресного пространства отведенного под ПЗУ выделил под ОЗУ и разместил там область для хранения переменных при работе с SD картой(вариант SD интерфейса на дискретных элементах). В таком раскладе памяти для программ, рассчитанных на базовый Специалист, вообще все прозрачно и незаметно.
|
14 Apr 2017 14:05 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
А наш коллега rw6hrm "раритетный восьмибитный компьютер "Дон" (клон "Специалиста") на процессоре КР580ВМ80А" таки продал... Ну и правильно, наверное, это всё же раритет, как первые 200 советских "Эпплов-I" Незачем его переделывать... Надо намекнуть fifan-y попросить у коллеги rw6hrm эти фотографии для своего сайта. Ибо фотография от пользователя форума zx.pk.ru dr.Titus на сайте fifan-а гораздо хуже...
_________________ iLavr
|
16 Jul 2017 00:02 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Совершенно с вами согласен, никакого негатива по этому факту в виду не имел. Тоже соглашусь, поскольку у меня всё же "Специалист_МХ" с великолепным пакетом RAMFOS. А на оригинальном "Специалисте" я практически и не работал - мы с другом купили сразу т.н. Монитор-DDT у одного кооператива - он был очень удачным, с набором прикладных программ. Я порой подозреваю, что RAMFOS - это интегрированный и красиво доработанный в единое целое пакет DDT. Мне кажется, я этот узел знаю (обратил внимание тоже, что много "рыжих" транзисторов ), в переделках "Специалист_МХ" - этот (или похожий) узел есть. Но я не стал его делать, т.к. метод кодирования FSK, принятый в "Специалисте_МХ" куда более "читабельный" нежели фазовая манипуляция в оригинальном "Специалисте", поэтому простого компаратора СА3 хватало за глаза...
_________________ iLavr
|
16 Jul 2017 01:57 |
|
|
fifan
Devil
Joined: 06 Oct 2006 03:17 Posts: 858 Location: г.Лянтор,Сургутского р-на,ХМАО
|
Да, хорошо бы фотки получше надыбать. Все хотел спросить, а как же этот клон работает без функциональных клавиш?
|
25 Jul 2017 10:07 |
|
|
barsik
Doomed
Joined: 19 Feb 2017 03:46 Posts: 583 Location: Санкт-Петербург, Россия, третья планета от Солнца, галактика Млечный Путь
|
Топик стартер обсуждал традиционную идею расширения ОЗУ в неиспользуемом окне D000...F7FF, я могу предложить лучший вариант. Ведь форум читают не для того, чтобы узнать, какой компьютер у кого есть и как он выглядит, а для того чтобы черпать идеи. Главные критерии при доработках на готовой плате - это минимальный объём переделок и эффективность. При расширении памяти Специалиста на РУ5 (т.е в платах Экспресс и Специалист-М) обычно рассматривают 2 варианта. Первый вариант - это "открытие" ОЗУ в незадействованных системным ПО адресах D000...F7FF, что добавляет 10 кб (этот вариант использовался всеми версиями установки CP/M на Специалист, причём разные авторы пришли к этому решению независимо). Второй вариант - это использование идеи от ПК Львов, а именно - закрытие экранной области сегментом памяти находящимся под ПЗУ C000. Всё отличие только в том, что во Львове для реализации этой идеи экран грамотно переместили на 4000, что даёт преимущество в том, что при переключениях рабочие ячейки ПЗУ под RAMTOP не исчезают из адресного пространства. Можно конечно тоже коммутировать экран с 9000 на 5000, но особого смысла нет, т.к это резко усложняет схему, а грамотный программист может выкрутиться и без подобных удобств. Достоинство такого варианта, что это расширение не за счёт ПЗУ, как в варианте ТС, - ПЗУ до 14 кб остаётся. Вот схема. Принцип работы очевиден, а для некомпетентных в железе поясняю. Есть схема совпадения, которая выдаёт единицу когда 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 |
|
|
PVV
Doomed
Joined: 12 Feb 2016 13:39 Posts: 463
|
Хорошая идея и вполне по теме этого топика. Скажу больше, мне в личку с пол года назад приходило сообщение с обсуждением этой идеи высказанной 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 |
|
|
barsik
Doomed
Joined: 19 Feb 2017 03:46 Posts: 583 Location: Санкт-Петербург, Россия, третья планета от Солнца, галактика Млечный Путь
|
Да точно, промахнулся выбирая мышью элемент в списке (клавиша в мышке поддохла, срабатывала лишь после нескольких нажатий через силу), а на схеме не обратил внимание, т.к схема чертилась всего пару минут, а после не приглядывался. Не ошибается лишь, кто ничего не делает. Спасибо, что заметили; никто другой не заметил, хотя аппаратчиков, что знают (или ещё помнят) TTL-микросхемы, намного больше, чем любителей программирования. Так было бы если бы на 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, его можно менять, сдвигать коды, т.к извращений типа самомодификации кода там нет. Обсуждать программы ни здесь ни в иной теме я изначально и не собирался (имел ввиду лишь выкладку готовых кодов). Да, создам тему, но не в разделе Специалиста. У меня уже есть вариант CP/M для обычного Специалиста, как раз только успел его странслировать 1.5 года назад, чтобы поиметь РК-КНГМД на Специалисте. Впрочем, у меня даже исходник CP/M-BIOS Специалиста из 1990 года сохранился (дискеты и инсталляторы CP/M Специалиста не сохранились, зачем было их хранить 30 лет), потому странслировать заново полный оригинал CP/M Специалиста версии 1990 - дело не более часа. Тут от вас труда понадобится совсем немного. Надо написать подпрограмму (точнее две), что берёт из ячеек TRACK и SECTOR значения и считывает (записывает) в ОЗУ по адресу из ячеек DMA физический сектор.
|
12 Nov 2019 20:05 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Я, честно говоря, несколько удивляюсь столь повышенному вниманию вокруг этой самой СР/М. Это обычная операционная система под процессоры i8080, i8085, а позже и z80. У неё просто несколько специфический способ вызова своих системных подпрограмм. Не так, как мы привыкли: 0F803H, 0F809H и т.п., а вот так: Это я покопался на своих образах дисков для "Специалиста"... Но сейчас не конец 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Н... Но в НЕХ-виде сразу понятно, откуда выросли "уши" у SID. Он, кстати, безболезненно и под RAMFOS работает, сам свои уши показывая... Так что во многих случаях совершенно необязательно непосредственно СР/М ставить на наши древние монстрики, чтобы использовать что-то из её ПО.
_________________ iLavr
|
13 Nov 2019 08:11 |
|
|
|
Page 1 of 1
|
[ 8 posts ] |
|
Who is online |
Users browsing this forum: No registered users and 2 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
|
|