PDA

Просмотр полной версии : ДОС для РК: идеи.



Kakos_nonos
02.03.2014, 17:22
Всем доброго дня!
Хочу изложить в этой теме моё видение ДОСа для РК-совместимых компов.
Сейчас уже есть немало наработок в этой области: ORDOS, флеш-пзу, для дискет со своим форматом, но есть у этого одна проблема: каждый вариант доса работает только у автора и заточен под его оборудование. Если взять все варианты РК (РК стандарт, РК SRAM, Апогей, Микроша, Партнёт...) и перемноржить на все типы подключения хранилищ данных (Флеш(много вариантов), Дискета, SPI флеш, I2C ...), то получится огромное количество ДОСов. Как же разобраться в этой ситуации? Придумать единый стандарт и насильно всех на него пересадить - такой вариант не сойдёт. Многим приятна и родна какая-то либо машина, с ней будет неохота уходить. Как, например, мне с Апогея, хотя сейчас есть более развитые варианты, но апогей мне больше нравится.

И вот мне пришла в голову идея, с помошью которой может получиться решить проблему: Распростронять ДОС в виде исходников (возможно, и даже лучше, вместе с компилятором).
Что мы тогда получаем: Человек скачивает архив с исходниками, редактирует их под свой вариант РК, компилирует и прошивает (или загружает в память, если дос в озу хранится). Все эти действия надо свести к максимальной простоте: распростронять коды вместе с ассемблером, чтоб откомпилировать одним кликом, писать инструкцию по портированию(Открыть DOS.ASM, установить стартовый адрес после .ORG... и далее в таком ключе). Чтобы дос работал с разныминакопителями, надо сделать так: разделить исходник на два файла: первый будет содержать в себе исходники самого доса, операций над файлами, а второй - только операции работы с диском: чтение и запись сектора. В комплекте исходников должно быть несколько вариантов этого файла, для каждого типа накопителя. То есть: BDOS_I2C.ASM, BDOS_FLOPPY.ASM, BDOS_FLASH.ASM, возможно несколько вариантов одного и того же типа хранилища, для разных микросхем. Эти файлы тоже должны быть настраеваемы, в них вначале должен быть откомментированный текст, в котором должно быть написано что сделать чтоб адаптировать этот исходник к вашей модели РК: где поменять адрес ВВ55, где поменять используемые биты, и прочее.
Тогда мы получим максимальную совместимость, программы будут одинаково работать как, например на Апогее с I2C флешкой и на РК SRAM с Ромдиском на AT27XXXX !
Данный метод распространения программ широко используется, можно привести много примеров, например, линукс. Трудно найти место, куда его не портировали. Или например, CP/M. Вполне похожий принцип, количество её вариантов достаточно велико. Вот ещё один вариант, далеко ходить не надо - This Is Apogey!!!. Стоило мне выложить исходники+компилятор, как демку сразу портировали на РК и ЮТ :) Кстати, мы тоже можеи не зацикливаться на РК, а распрострониться на соседние компы: ЮТ, Специалист, Орион... Это будет сделать проще простого.

Но тут вылазят несколько проблем. Первая и основная - Не постоянный адрес ДОСа. В своей идее я подразумеваю, что дос может компилироваться под любой адрес. Это зависит как от модели компьютера, как и от желаний автора. В итоге мы получаем, что программа не будет знать где находится ДОС, и, собственно, процедуры сохранения/записи. Как я предлагаю решить данную проблему. Опять предлагаю обратиться к предкам: В Cp/M программы грузились с адрса $100, до этого распологалась системная зона, которая служила для связи прогаммы и ОС. Нечто подобное можно сделать и здесь, только предлагаю уменьшить эту область до двух байт. Эти два байта будут, собственно и адресом доса. Есть два варианта дальнейшиих размышлений. Первый, как в Мониторе - прдпрограммы располагаются с некоторым смещением от начального адреса. Т.е.: Чтение файла = Старт+3, Запись файла - Старт + 6... Второй вариант - Как в CP/M - этот адрес указывает не на адрес доса, а на адрес обрабатывающей процедуры, тогда: Чтение файла - MVI A,1:CALL DOS, Запись файла - MVI A,2:CALL DOS. А можно объеденить эти два варианта. Тогда в первых двух байтах находится адрес доса, а далше - ДОС+3 - обрабатывающая процедура (как в cp/m), дос+6 - чтение файла, и т д...
Но кто же занесёт в эту область адрес доса? - спросите вы. Тут надо взглянуть на братьев спектрумистов. У них есть похожая ситуация- за всё время существования спектрума так и не было придумано универсального способа управления в играх. И поэтому вначале каждой игры есть табличка: 1-Keyboard. 2-Kempston. 3-Sinclair. 4-Redefine. 5-Start game. Так и тут я предлагаю, чтоб программа при запуске спрашивала адрес доса, и записывала его в Первые два байта памяти. Если же пользователь не ввёл, а просто нажал энтер, значит, адрес уже там есть, использовать его. Можно ввести какой нибудь флаг, что запись там уже есть, чтоб на каждом резете не вводить число. Но всё равно, думаю, от того, что надо будет нажать 5 кнопок (4 hex числа + Enter) никто не умрёт, и много времени это не займёт.

В общем, вот так:)
Что хотел, высказал. Думаю, надо эту идею немного обсудить и можно приступать к реализации. Можно взять за основу имеющийся дос, можно написать заново. Второе, наверное, лучше, так как идея переносимости будет реализована полностью. Если никто не возмётся, напишу сам, опыт и умения есть, но только после Демопати Мультиматограф, сейчас нет времени, занят другим проектом. (Для РК. Будет интересно :))

VovanRK86
02.03.2014, 23:02
Апогее с I2C флешкой
Вот про это поподробнее узнать бы

А вот по поводу ДОСа действительно стоит поразмыслить.

Например для РК86 (РК86СРАМ) были сделаны платы ФДД, и скоро ДОС 2.9 на нём появиться, может есть смысл взять её за основу и например ДОС под флеш оформить как её файл, а может наоборот ДОС под флеш дополнить таблицей переходов от ДОСа 2.9 получим совместимость (правда к сожалению с пятью програмами:( ДОСа 2.9) я Владимиру об этом написал.
Можно за основу взять ОРДОС с его таблицей переходов, он мне всегда нравился, я даже пытался его на РК перетащить, но если честно я бы его оставил Ориону, а на РК пусть будет его ДОС 2.9
А вот по поводу "в Cp/M программы грузились с адрса $100" мне ни когда не нравилось, т.к. в РК подобных компиках сложился стандарт $0000 не занимать, я бы ДОС всё же старался бы запихнуть в адреса повыше.

Как то так пока.

Alex_LG
03.03.2014, 12:18
Я здесь недавно и поэтому могу сказать или глупость или очевидную вещь.
Почему бы не сделать так же как и в уже упомянутом Спектруме - использовать таблицу переходов. Саму таблицу расположить в верхней памяти и стандартную для всех, а вот адреса переходов - у каждого свои. Раз ДОС распространять в виде исходников, то логично, что в нем же будет и загрузчик, который и заполнит таблицу переходов. С такой таблицей решается вопрос и с уже существующими версиями ДОСа - для них нужен всего лишь загрузчик, который заполнит таблицу переходов. Проблема только в существующем софте, который нужно переделать для обращения к функциям ДОСа через точки перехода.

Kakos_nonos
03.03.2014, 12:39
Так вот дело в том, что "в верхней памяти" будет у всех разное. У одних моделей память кончается на $8000, у других на $E000, у третьих ещё где-то. Очень трудно подобрать место в таком случае.

Alex_LG
03.03.2014, 12:48
Все равно надо хотя бы одну ячейку стандартизировать иначе ничего не получится! А вот в этой ячейке записывать адрес таблицы переходов.

gdv2002
03.03.2014, 12:53
Идея хороша, но утопична. Каждый РК-клон его автор кроил по своему, как удобно/хотел/умел. Единого "стандарта" нет именно по этой причине.
И подружить всех будет очень не просто, это работа для хорошего программера, а кто будет этим заниматься?
Я подымал вопрос о создании чего-то подобного, предлагал сделать фонд поддержки для создателя/лей ДОС, но так все и кануло в пучине букаф и обсуждений отдельных разработок.

alx32
03.03.2014, 13:00
возможно, как вариант, использовать точки входа монитора, а сама дос будет спрашивать, что да как. Например ввод/вывод на магнитофон, запрос типа "Лента/Диск?", при выборе ленты - переход на стандартную программу монитора, а диск - это уже средства дос. И ещё, а может точку входа сделать в самом мониторе?

Alex_LG
03.03.2014, 13:09
Идея хороша, но утопична.

Я бы не сказал, что сильно и утопично. Стандартизировать нужно всего лишь ОДНУ ячейку и расписать таблицу переходов, вернее расписать индексы подпрограмм, а уж каждый хозяин "своего" ДОСа впишет туда свои адреса! Проблема только в одном - заставить программеров писать программы для ДОСа для такого стандарта, что практически невыполнимо - лень непобедима... :(

Kakos_nonos
03.03.2014, 15:29
Поначалу будет много досов, потом их количество будет уменьшаться и придёт к одному.
Примерно такое было со спеком. Вначале было много клонов, время шло и в итоге остался распростронён практически один вариант - пентагон.



Стандартизировать нужно всего лишь ОДНУ ячейку и расписать таблицу переходов, вернее расписать индексы подпрограмм, а уж каждый хозяин "своего" ДОСа впишет туда свои адреса!

Лучше всего сделать её в мониторе, так как верхняя граница ОЗУ у всех своя. Но для этого придётся монитор перешивать.
Я предлагал так, чтоб программа при первом запуске сама спрашивала этот байт, и от него уже отталкивалась. Не так уж это и страшно. Взамен получим полную универсальность.

VovanRK86
03.03.2014, 19:03
Я подымал вопрос о создании чего-то подобного, предлагал сделать фонд поддержки для создателя/лей ДОС, но так все и кануло в пучине букаф
Дмитрий это вы зря, ни куда ни чего не кануло, если бы кануло то данная тема не появилась бы!

---------- Post added at 18:01 ---------- Previous post was at 17:59 ----------


Поначалу будет много досов
Вот здесь вопрос, где же их много?

---------- Post added at 18:03 ---------- Previous post was at 18:01 ----------


Проблема только в одном - заставить программеров писать программы для ДОСа

Вот это действительно проблема, кто знает НОВУЮ программу хотя бы под ДОС 2.9, кроме пяти тех из журнала?

Kakos_nonos
03.03.2014, 20:26
Вот здесь вопрос, где же их много?
Ордос, ДОС 2.9, может ещё один выйдет из обсуждений. Ещё у Vinxru свой дос есть.

VovanRK86
03.03.2014, 21:04
Ордос, ДОС 2.9, может ещё один выйдет из обсуждений. Ещё у Vinxru свой дос есть.
Ну ещё у Vladimir_S под Флеш, не так много получается, хотя есть ещё читалка с SD, и прога для соединения с ПС, соответственно нужно объединить Ордос и ДОС 2.9, а всё остальное туда добавить.

VovanRK86
04.03.2014, 16:58
Kakos_nonos, Что же всё же Апогей с I2C флешкой?

И если это не у вас, то каким ДОСом пользуетесь сейчас.

Kakos_nonos
04.03.2014, 18:51
I2C я написал для примера, как вариант подключения накопителя.
Подключение такой флешки, возможно, будет очень простым, всего 4 провода и простой протокол, всего пара команд.
Доса у меня пока нет.

Kakos_nonos
24.04.2014, 16:00
Теперь и у меня ДОС есть, заказал у vinxru контроллёр sd-карты, очень удобная штука. Есть удобный двухпанельный коммандер как нортон, работа с каталогами.
Правда, там atmega8 стоит, кому-то это может не понравиться, но меня это не огорчает.
После запуска апогея надо ввести:

R0,100
G

И запускается коммандер, где можно работатьс файлами.

VovanRK86
25.04.2014, 00:48
Есть удобный двухпанельный коммандер как нортон, работа с каталогами.
Вот я о таком давно мечтаю для РК86!



заказал у vinxru контроллёр sd-карты, очень удобная штука


А где то есть схема, прошивка или это коммерческий пока проект?

gdv2002
25.04.2014, 07:10
Теперь и у меня ДОС есть, заказал у vinxru контроллёр sd-карты, очень удобная штука. Есть удобный двухпанельный коммандер как нортон, работа с каталогами.
Правда, там atmega8 стоит, кому-то это может не понравиться, но меня это не огорчает.
После запуска апогея надо ввести:

R0,100
G

И запускается коммандер, где можно работатьс файлами.

Тоже интересно, что за проект и как работает на РК?
Атмег8 китайские товарищи прислали с запасом, типа в подарок, но насколько помню, и где-то в темах про РК я выкладывал ссылку на проект vinxru, там с карточки только чтение.
Или уже есть более продвинутая схема?

Kakos_nonos
25.04.2014, 11:50
А где то есть схема, прошивка или это коммерческий пока проект?
Всё открыто, доступно, схемы, прошивки, исходники.
Доступна и запись на карту.
С рк пока не работает, но исходники открыты, можно изменить пару адресов, перекомпилировать и будет работать с РК.
https://github.com/vinxru/86RKSD