|
nedoPC.orgCommunity for electronics hobbyists, established in 2002 |
|
Операционная система ShaOS
Author |
Message |
CHRV
God
Joined: 29 Dec 2003 01:00 Posts: 1101 Location: Москва
|
Посмотрел я описание твоей ШаОСи, ты серьезно собираешся заниматься или это пока так, мечты?
|
18 Aug 2004 01:22 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23387 Location: Silicon Valley
|
Функции которые описаны на вебе (т.е. там где не только названия) уже полностью реализованы мной в 1996-1998 годах (написано более 3000 строк кода на ассемблере 8080). Так что это по большому счету реализованная мечта P.S. В июне 2016 добавил линки на старые архивы, прибитые при переезде на вики в 2012-2014: http://www.nedopc.org/nedopc/shaos/s004_v0.zip (20K) - оригинальные исходники для RASM (1998) http://www.nedopc.org/nedopc/shaos/s004_v0_.zip (13K) - перетранслированные в 2006 году исходники для ZMAC плюс TAP-файл:P.P.S. Самое раннее появление ShaOS в интернете (февраль 2002):
https://web.archive.org/web/20020216221439/http://shaos.ru/nedopc/shaos/shaos_w.htm
|
18 Aug 2004 06:23 |
|
|
CHRV
God
Joined: 29 Dec 2003 01:00 Posts: 1101 Location: Москва
|
Это очень хорошо! Просто я давно ищу хоть какое то подобие оси, которую можно модернизировать и довести, как говориться, до ума... Все таки ТР-ДОС и прочее уже както несерьезно использовать на современном оборудовании.
|
18 Aug 2004 06:46 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23387 Location: Silicon Valley
|
Для ZX-Spectrum существует одна очень хорошая разработка (чем-то перекликающаяся с моей недоделанной ShaOS) - это X-DOS. Очень приятное впечатление осталось от знакомства - удобный API, симпатичные программки, полная документация: vtrdos.ru/sbor/XDOS.ZIPhttps://vtrd.in/system/XDOS151.ziphttps://vtrd.in/release.php?r=1137175f405f663a78c16b1d323165e1
|
18 Aug 2004 07:28 |
|
|
CHRV
God
Joined: 29 Dec 2003 01:00 Posts: 1101 Location: Москва
|
Надо посмотреть. Еще есть такие факторы: - исходники; - модульность ОС (простота доработки); - и наверно самый важный фактор - вменяемость и желание сотрудничать автора ОС Вот у Shaos такие факторы присутствуют Когда я смогу передохнуть от железа, надо будет продумывать план и создавать рабочую группу по созданию или доработки ОС.
|
19 Aug 2004 00:24 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23387 Location: Silicon Valley
|
Ну спасибо на добром слове, вот только исходники я еще не выкладывал - надо над ними поработать
|
21 Aug 2004 14:31 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23387 Location: Silicon Valley
|
Вот неопубликованная статья, которую я писал по просьбе Шушкова в 2002 году - недавно я на нее наткнулся в архивах: | | | | Quote: Чтобы внести свой вклад в дело спектрумистского операционносистемостроения я решил рассказать о той работе, которая была мной сделана много лет тому назад, а именно об операционной системе ShaOS, которая была названа, как нетрудно догадаться взглянув на мою фамилию, в честь меня самого :) а я, соответственно, сделал себе ник в честь своей операционной системы...
Итак, все началось десять лет назад - в 1992 году. Я стал делать наброски операционной системы для гипотетического микрокомпьютера на микропроцессоре К580ВМ80А (никакого микрокомпьютера у меня тогда не было, но я изучил ассемблер i8080 и хотел применить свои знания в жизнь - все наброски делались исключительно на бумаге). Изначально я хотел просто сделать примитивную квазидисковую операционную систему с командной строкой наподобие MS-DOS. В качестве квазидисков должна была использоваться плата с несколькими ПЗУ К573РФ2. Вначале я назвал свое творение ROS (Radio Operation System), так как хотел в перспективе реализовать ОС на Радио-86РК, который начал собирать. Но тут у меня появился ZX-Spectrum (под названием Урал-48К) и мои предпочтения поколебались. Не сумев полностью выбросить из головы Радио-86РК (а так же Орион-128 - компьютер моей мечты, которого у меня никогда не было, и, наверное, никогда не будет), я решил подружить Радио со Спектрумом - сделать ОС, приложения которой будут работать на обеих машинах! Речь идет лишь о системном софте и разного рода утилитах, компилерах и т.д. - ни о каких графических изысках я тогда и не думал. На первый взгляд задача невыполнима, однако я ее решил, создав к 1996 году спецификацию ОС, приложения которой могли бы работать на любой i8080 или z80 системе, реализующей несколько простых аппаратных вещей. Во-первых, в области памяти #C800-#CFFF должно быть ОЗУ размером 2К для векторов переходов, системных переменных и стека, а в области #D000-#DFFF должно быть ПЗУ размером 4К с самим ОСом (в Спектруме это реализуемо путем простого помещения кода в данную область памяти, а в Радио надо было делать небольшую доработку схемы). Во-вторых, к системе определенным образом должен был подключаться квазидиск. Интерфейс доступа к данным квазидиска был 16-битным (8 бит данных и 8 бит управления) и реализовывался через порты B и C микросхемы К580ВВ55 (к порту A был подключен джойстик). Дополнительные управляющие контакты выводились в разъем принтера, что давало возможность втыкать в разъем и принтер, и плату расширения, в которую и вставлялся квазидиск.
В спецификацию были включены функции работы с квазидисками (а также всеми внешними устройствами, подключенными по этому интерфейсу), командной строкой, переменными окружения, памятью. Имелись разнообразные функции для работы со строками, функции преобразования и печати десятичных и шестнадцатиричных чисел. Была продумана идеология цепочки драйверов файловых устройств. Подразумевалась загрузка и исполнение BAS (бейсик) и BAT (пакетных) файлов. Для перемещения кода предполагалось использовать подход с таблицей перекодировки, хранимой в EXE файле приложения. Исполняемые файлы COM были неперемещаемыми.
На более серьезный уровень разработки я вышел в январе 1997 года. К тому времени я уже имел ПЦ, и, назвав ОС просто ShaOS, я стал кодить. С нуля был написан кросс-ассемблер для i8080 под ПЦ, эмулятор ShaOS-совместимого компьютера под ПЦ ("ShaOS-совместимый" подразумевает микропроцессор i8080, обращение к образам квазидисков в файлах на ПЦ, перехват вызовов для работы с клавиатурой и экраном ПЦ). Кроме того было создано примерно 3500 строк ассемблерного кода (4К в бинарном виде), который работал вполне адекватно на эмуляторе ShaOS, эмуляторе ZX-Spectrum (тогда это был Z80.EXE), а потом и на реале (Урал-48К с загрузкой через звуковую карточку ПЦ). Было реализовано 75% спецификации, что позволяло писать простые приложения, использующие клавиатуру, экран, командную строку, квазидиски. В виде отдельных приложений были реализованы утилиты CD и DIR. 13 июня 1998 года была написана и отлажена последняя строка в коде ShaOS - все остановилось, потому что я устроился на работу ПЦ-программером в серьезную фирму (до сих пор там работаю и программирую очень дорогие и серьезные вещи).
В настоящее время мучаюсь от носталигии и собираю музей спектрумов всех видов и мастей. Вспомнил про ShaOS и решил совершить подвиг - потихоньку дописать ее, прикрутив к спектрумам с расширенной памятью и дисковым интерфейсом. Сразу же увидел неприспособленность спецификации к таким машинам - ОС располагается в области памяти с #C800 по #DFFF и не подразумевает переключения страниц, а именно область над #C000 и должна переключаться по стандарту Spectrum-128. Выход, который видится - помещать ядро ОС в более уютное место, например #6800-#7FFF, а при загрузке приложения менять адреса вызова системных подпрограмм (этот адрес всегда лежит в области #CC00-#CCFF по старой спецификации и может быть отдетектирован в коде по байтам CD ?? CC, конечно если мы договоримся использовать лишь безусловный вызов системных подпрограмм), а системные переменные напрямую никогда приложениями не используются и их реальное местоположение может знать лишь ядро ОС. В таком случае мы можем расположить код системы где угодно в памяти, модифицируя код приложений под это расположение при загрузке на исполнение. Расширенную память можно использовать через дополнительный драйвер файлового устройства в цепочке файловых драйверов, юзая лишнюю память как рамдиск. Также полезно было бы оптимизировать исходный код путем использования инструкций Z80. Кроме того можно поразмышлять и над многозадачностью, если конечно это кого-нибудь интересует. Ну так что, господа спектрумисты, нужна такая ОС или как? :)
| | | | |
|
06 Sep 2004 20:43 |
|
|
cr0acker
God
Joined: 03 Feb 2003 13:53 Posts: 1078
|
А мы это статьюб в никроне:)
|
07 Sep 2004 07:12 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23387 Location: Silicon Valley
|
Ненадо - она устарела
|
07 Sep 2004 16:14 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23387 Location: Silicon Valley
|
Итак вот она - упомянутая плата расширения: Девайс H003, позволявший подключать к моему ZX Урал-48К (и теоретически к чему угодно, имеющему свободных 8 вых.пинов и 8 вх.-вых. пинов) адресуемые устройства в адресном пространстве до 4 Гб! Был основой для квазидисковой операционной системы ShaOS.
|
26 Oct 2004 20:27 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23387 Location: Silicon Valley
|
Кратко о ShaOS:
| | | | Shaos wrote: Вкраце о ShaOS (Shabarshin OS : ) Это моя старая (1997) и недоделанная разработка Объем ассемблерного кода - 3500 строк. Многое перекочевало в библиотеки языка RW1P2 http://shaos.ru/pub/rw1p2.rarВсе команды, которые имеют словестное описание - реализованы. http://www.nedopc.org/nedopc/shaos/shaos_r.shtmlСоздавалась для натягивания интерфейса командной строки типа MS-DOS на микроэвм с памятью до 64К (без переключеиня страниц). Рассчитывалась поддержка специального ROM-диска, подключающегося через ВВ55 (в случае спектрума - я приделывал к микросхеме, к порту А которой был подключен кемпстон джойстик, а порты B и C были свободны - интерфейс не конфликтует с принтером). Предполагалось поддерживать цепочки подсоединяемых драйверов для новых типов накопителей. Адреса векторов и кода системы выбирались таким образом, чтобы все могло работать на ZX-Spectrum и слегка модифицированном Радио-86РК (надо добавить 2К статической памяти и 2(4)К пзу). Кроме того система может работать из ПЗУ (нет самомодифицирующихся частей, все системные переменные сидят в специальной области ОЗУ), собственно все создавалось для запуска i8080-бинарников на любой i8080(z80) системе, поддерживающей интерфейс ShaOS. Расположение векторов системы несколько противоречит существующей модели переключения страниц в Spectrum-128 (все находится в четвертой странице, которая собственно и может переключаться). В-принципе, в железяках, в которых можно переключать любые сраницы (0,1,2), можно сделать поддержку переключающихся страниц в ShaOS. | | | | |
|
29 Jun 2005 19:11 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23387 Location: Silicon Valley
|
Кстати мой недо-девайс NedoPC-85-A сделанный в июне 2004 года
должен быть совместим с ShaOS - все нужные блоки памяти у него сидят в нужных местах
|
09 Mar 2006 20:38 |
|
|
jdigreze
God
Joined: 02 Jan 2006 02:28 Posts: 1388 Location: Abakan
|
Достаточно простая спецификация.
Интересно, какая функциональность доступна в текущем виде?
И есть ли какие-нибудь прикладные программы?
|
10 Mar 2006 07:22 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23387 Location: Silicon Valley
|
Как я уже говорил - доступно 70% функциональности (это те функции в описании, у которых описаны входы и выходы)
Из программ написанных под эту ось есть только CD и DIR - на остальное времени не было
А вообще под нее писать должно быть очень просто - на то и расчет был, чтобы упростить жизнь недо-программиста
|
10 Mar 2006 07:28 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23387 Location: Silicon Valley
|
А вот собственно и они - CD.A:
| | | | Code: \ УТИЛИТА "CD" ОС S004.0 \ SHABARSHIN A.A. 25.06.1997 \ SHABARSHIN A.A. 21.01.1998
+INCLUDE\S004
ORG #E800
CD: LHLD @ACMD CALL @CON CPI 2 JNZ CD_ERR CD_1: MVI_A, 1 CALL @COG XRA_A LXI_H, CD_STR CALL @CPY CD_2: MVI_A, #11 CALL @FOP JNC CD_ERR CALL @FPD MOV_A,C RLC RLC RLC RLC MOV_B,A LDA @HDEXT ORA_A JZ CD_3 LXI_H, CD_STR JMP CD_2 CD_3: LXI_H, CD_STR LXI_D, CD_STR1 MVI_A, 0 CALL @CAT LHLD @HDCRC CALL @HLL LDA @HLH ORA_B XCHG LXI_H, @CPTR MOV_M,E INX_H MOV_M,D INX_H MOV_M,A LDA CD_STR CPI #2E JZ CD_DOT MVI_A, 0 LXI_H, @CDIR LXI_D, CD_STR CALL @CAT JMP CD_END CD_DOT: LXI_H, @CDIR CD_4: MOV_A,M ORA_A JZ CD_5 INX_H JMP CD_4 CD_5: MOV_A,M DCX_H CPI '\' JZ CD_6 JMP CD_5 CD_6: LDA CD_STR1 SUI '\' STA CD_STR1 JNZ CD_7 \ ПРОВЕРКА НА КОРЕНЬ MOV_A,M CPI #3A JNZ CD_5 CD_7: INX_H INX_H MVI_M, 0 CD_END: MVI_A, 1 RET
CD_ERR: MVI_A, 7 CALL @ERR RET
CD_STR1 DB '\',0 CD_STR DB 0
| | | | |
и DIR.A: | | | | Code: \ УТИЛИТА "DIR" ОС S004.0 \ SHABARSHIN A.A. 25.06.1997 \ SHABARSHIN A.A. 21.01.1998
+INCLUDE\S004
ORG #E800
DIR: LXI_H, DIR_S1 CALL @NLN CALL @WST LXI_H, @CDIR CALL @WST CALL @NLN CALL @NLN LXI_H, DIR_SH DIR_1: MVI_A, #11 DIR_11: CALL @FOP JNC DIR_2 LDA @FAT ORA_A JNZ DIR_2 LXI_D, @HDBUF LXI_H, DIR_S1 PUSH_H MVI_A, 0 CALL @CPY LXI_D, #0008 DAD_D MVI_M, 0 POP_H CALL @WST CALL @GCR MVI_B, 9 CALL @SCR LDA @HDEXT LXI_H, DIR_S1 CALL @GUX CALL @WST ORA_A JNZ DIR_3 MVI_A, #20 CALL @WRI LXI_H, DIR_DI CALL @WST JMP DIR_4 DIR_3: LXI_H, DIR_N MOV_A,M INR_A MOV_M,A DIR_4: CALL @GCR MVI_B, 18 CALL @SCR LHLD @HDLEN CALL @HLL PUSH_H POP_B LXI_H, DIR_S1 CALL @D2S CALL @WST LDA @HDEXT ORA_A JZ DIR_5 MVI_A, #20 CALL @WRI CALL @WRI LHLD @HDADR CALL @WHL DIR_5: CALL @NLN XRA_A JMP DIR_11 DIR_2: CALL @NLN CALL @GCR MVI_B, 7 CALL @SCR LHLD DIR_0 MOV_B,L MOV_C,H LXI_H, DIR_S1 CALL @D2S CALL @WST LXI_H, DIR_FI CALL @WST CALL @NLN CALL @NLN MVI_A, 1 RET
DIR_SH DB "*",0 DIR_S1 DB " DIR OF ",0 DIR_DI DB "<DIR>",0 DIR_FI DB " FILES" DIR_0 DB 0 DIR_N DB 0
| | | | |
Работа этих программ выглядела вот так:
P.S. Откопал в своих старых бумагах, что название ShaOS я придумал 25 января 1998 года, а до этого (примерно с апреля 1996) система имела кодовое наименование S004, а ещё раньше (конец 1992) - SH-DOS или ROS (Radio Operating System)...
|
27 Jun 2011 22:07 |
|
|
Who is online |
Users browsing this forum: No registered users and 1 guest |
|
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
|
|