Операционная система ShaOS
Moderator: Shaos
-
- God
- Posts: 1101
- Joined: 29 Dec 2003 01:00
- Location: Москва
Операционная система ShaOS
Посмотрел я описание твоей ШаОСи, ты серьезно собираешся заниматься или это пока так, мечты?
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: ShaOS
Функции которые описаны на вебе (т.е. там где не только названия) уже полностью реализованы мной в 1996-1998 годах (написано более 3000 строк кода на ассемблере 8080). Так что это по большому счету реализованная мечтаCHRV wrote:Посмотрел я описание твоей ШаОСи, ты серьезно собираешся заниматься или это пока так, мечты?

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
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- God
- Posts: 1101
- Joined: 29 Dec 2003 01:00
- Location: Москва
Re: ShaOS
Это очень хорошо! Просто я давно ищу хоть какое то подобие оси, которую можно модернизировать и довести, как говориться, до ума... Все таки ТР-ДОС и прочее уже както несерьезно использовать на современном оборудовании.Shaos wrote: Функции которые описаны на вебе (т.е. там где не только названия) уже полностью реализованы мной в 1996-1998 годах (написано более 3000 строк кода на ассемблере 8080). Так что это по большому счету реализованная мечта
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: ShaOS
Для ZX-Spectrum существует одна очень хорошая разработка (чем-то перекликающаяся с моей недоделанной ShaOS) - это X-DOS. Очень приятное впечатление осталось от знакомства - удобный API, симпатичные программки, полная документация:CHRV wrote:Это очень хорошо! Просто я давно ищу хоть какое то подобие оси, которую можно модернизировать и довести, как говориться, до ума... Все таки ТР-ДОС и прочее уже както несерьезно использовать на современном оборудовании.Shaos wrote: Функции которые описаны на вебе (т.е. там где не только названия) уже полностью реализованы мной в 1996-1998 годах (написано более 3000 строк кода на ассемблере 8080). Так что это по большому счету реализованная мечта
vtrdos.ru/sbor/XDOS.ZIP
https://vtrd.in/system/XDOS151.zip
https://vtrd.in/release.php?r=1137175f405f663a78c16b1d323165e1
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- God
- Posts: 1101
- Joined: 29 Dec 2003 01:00
- Location: Москва
Re: ShaOS
Надо посмотреть.Shaos wrote:Для ZX-Spectrum существует одна очень хорошая разработка (чем-то перекликающаяся с моей недоделанной ShaOS) - это X-DOS. Очень приятное впечатление осталось от знакомства - удобный API, симпатичные программки, полная документация
Еще есть такие факторы:
- исходники;
- модульность ОС (простота доработки);
- и наверно самый важный фактор - вменяемость и желание сотрудничать автора ОС

Вот у Shaos такие факторы присутствуют

Когда я смогу передохнуть от железа, надо будет продумывать план и создавать рабочую группу по созданию или доработки ОС.
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: ShaOS
Ну спасибо на добром слове, вот только исходники я еще не выкладывал - надо над ними поработатьCHRV wrote: Вот у Shaos такие факторы присутствуют![]()

Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Вот неопубликованная статья, которую я писал по просьбе Шушкова в 2002 году - недавно я на нее наткнулся в архивах:
Чтобы внести свой вклад в дело спектрумистского
операционносистемостроения я решил рассказать о той работе,
которая была мной сделана много лет тому назад, а именно об
операционной системе 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. Кроме того можно поразмышлять и над
многозадачностью, если конечно это кого-нибудь интересует.
Ну так что, господа спектрумисты, нужна такая ОС или как? :)
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Итак вот она - упомянутая плата расширения:Shaos wrote:Интерфейс доступа к данным квазидиска
был 16-битным (8 бит данных и 8 бит управления) и реализовывался
через порты B и C микросхемы К580ВВ55 (к порту A был подключен
джойстик). Дополнительные управляющие контакты выводились в
разъем принтера, что давало возможность втыкать в разъем и
принтер, и плату расширения, в которую и вставлялся квазидиск.

Девайс H003, позволявший подключать к моему ZX Урал-48К (и теоретически к чему угодно, имеющему свободных 8 вых.пинов и 8 вх.-вых. пинов) адресуемые устройства в адресном пространстве до 4 Гб! Был основой для квазидисковой операционной системы ShaOS.
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- 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.
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Кстати мой недо-девайс NedoPC-85-A сделанный в июне 2004 года

должен быть совместим с ShaOS - все нужные блоки памяти у него сидят в нужных местах

должен быть совместим с ShaOS - все нужные блоки памяти у него сидят в нужных местах

Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- God
- Posts: 1388
- Joined: 02 Jan 2006 02:28
- Location: Abakan
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Как я уже говорил - доступно 70% функциональности (это те функции в описании, у которых описаны входы и выходы)jdigreze wrote:Достаточно простая спецификация.
Интересно, какая функциональность доступна в текущем виде?
И есть ли какие-нибудь прикладные программы?
Из программ написанных под эту ось есть только CD и DIR - на остальное времени не было

А вообще под нее писать должно быть очень просто - на то и расчет был, чтобы упростить жизнь недо-программиста

Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 23989
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
А вот собственно и они - CD.A:Shaos wrote:Как я уже говорил - доступно 70% функциональности (это те функции в описании, у которых описаны входы и выходы)jdigreze wrote:Достаточно простая спецификация.
Интересно, какая функциональность доступна в текущем виде?
И есть ли какие-нибудь прикладные программы?
Из программ написанных под эту ось есть только CD и DIR - на остальное времени не было
Code: Select all
\ УТИЛИТА "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
Code: Select all
\ УТИЛИТА "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)...
Я тут за главного - если что шлите мыло на me собака shaos точка net