Операционная система ShaOS

Публичный форум для http://www.nedopc.org/nedopc

Moderator: Shaos

User avatar
CHRV
God
Posts: 1101
Joined: 29 Dec 2003 01:00
Location: Москва

Операционная система ShaOS

Post by CHRV »

Посмотрел я описание твоей ШаОСи, ты серьезно собираешся заниматься или это пока так, мечты?
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: ShaOS

Post by Shaos »

CHRV wrote:Посмотрел я описание твоей ШаОСи, ты серьезно собираешся заниматься или это пока так, мечты?
Функции которые описаны на вебе (т.е. там где не только названия) уже полностью реализованы мной в 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-файл:


Image

P.P.S. Самое раннее появление ShaOS в интернете (февраль 2002):

https://web.archive.org/web/20020216221439/http://shaos.ru/nedopc/shaos/shaos_w.htm
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
CHRV
God
Posts: 1101
Joined: 29 Dec 2003 01:00
Location: Москва

Re: ShaOS

Post by CHRV »

Shaos wrote: Функции которые описаны на вебе (т.е. там где не только названия) уже полностью реализованы мной в 1996-1998 годах (написано более 3000 строк кода на ассемблере 8080). Так что это по большому счету реализованная мечта :)
Это очень хорошо! Просто я давно ищу хоть какое то подобие оси, которую можно модернизировать и довести, как говориться, до ума... Все таки ТР-ДОС и прочее уже както несерьезно использовать на современном оборудовании.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: ShaOS

Post by Shaos »

CHRV wrote:
Shaos wrote: Функции которые описаны на вебе (т.е. там где не только названия) уже полностью реализованы мной в 1996-1998 годах (написано более 3000 строк кода на ассемблере 8080). Так что это по большому счету реализованная мечта :)
Это очень хорошо! Просто я давно ищу хоть какое то подобие оси, которую можно модернизировать и довести, как говориться, до ума... Все таки ТР-ДОС и прочее уже както несерьезно использовать на современном оборудовании.
Для ZX-Spectrum существует одна очень хорошая разработка (чем-то перекликающаяся с моей недоделанной ShaOS) - это X-DOS. Очень приятное впечатление осталось от знакомства - удобный API, симпатичные программки, полная документация:

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
User avatar
CHRV
God
Posts: 1101
Joined: 29 Dec 2003 01:00
Location: Москва

Re: ShaOS

Post by CHRV »

Shaos wrote:Для ZX-Spectrum существует одна очень хорошая разработка (чем-то перекликающаяся с моей недоделанной ShaOS) - это X-DOS. Очень приятное впечатление осталось от знакомства - удобный API, симпатичные программки, полная документация
Надо посмотреть.
Еще есть такие факторы:
- исходники;
- модульность ОС (простота доработки);
- и наверно самый важный фактор - вменяемость и желание сотрудничать автора ОС :-)

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

Когда я смогу передохнуть от железа, надо будет продумывать план и создавать рабочую группу по созданию или доработки ОС.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: ShaOS

Post by Shaos »

CHRV wrote: Вот у Shaos такие факторы присутствуют ;-)
Ну спасибо на добром слове, вот только исходники я еще не выкладывал - надо над ними поработать ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Вот неопубликованная статья, которую я писал по просьбе Шушкова в 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
User avatar
cr0acker
God
Posts: 1078
Joined: 03 Feb 2003 13:53

Post by cr0acker »

А мы это статьюб в никроне:)
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

cr0acker wrote:А мы это статьюб в никроне:)
Ненадо - она устарела :)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:Интерфейс доступа к данным квазидиска
был 16-битным (8 бит данных и 8 бит управления) и реализовывался
через порты B и C микросхемы К580ВВ55 (к порту A был подключен
джойстик). Дополнительные управляющие контакты выводились в
разъем принтера, что давало возможность втыкать в разъем и
принтер, и плату расширения, в которую и вставлялся квазидиск.
Итак вот она - упомянутая плата расширения:

Image

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

Post by Shaos »

Кратко о 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
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Кстати мой недо-девайс NedoPC-85-A сделанный в июне 2004 года

Image

должен быть совместим с ShaOS - все нужные блоки памяти у него сидят в нужных местах :)
Я тут за главного - если что шлите мыло на me собака shaos точка net
jdigreze
God
Posts: 1388
Joined: 02 Jan 2006 02:28
Location: Abakan

Post by jdigreze »

Достаточно простая спецификация.
Интересно, какая функциональность доступна в текущем виде?
И есть ли какие-нибудь прикладные программы?
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

jdigreze wrote:Достаточно простая спецификация.
Интересно, какая функциональность доступна в текущем виде?
И есть ли какие-нибудь прикладные программы?
Как я уже говорил - доступно 70% функциональности (это те функции в описании, у которых описаны входы и выходы)

Из программ написанных под эту ось есть только CD и DIR - на остальное времени не было :)

А вообще под нее писать должно быть очень просто - на то и расчет был, чтобы упростить жизнь недо-программиста ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:
jdigreze wrote:Достаточно простая спецификация.
Интересно, какая функциональность доступна в текущем виде?
И есть ли какие-нибудь прикладные программы?
Как я уже говорил - доступно 70% функциональности (это те функции в описании, у которых описаны входы и выходы)

Из программ написанных под эту ось есть только CD и DIR - на остальное времени не было :)
А вот собственно и они - CD.A:

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
и DIR.A:

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
Работа этих программ выглядела вот так:

Image

P.S. Откопал в своих старых бумагах, что название ShaOS я придумал 25 января 1998 года, а до этого (примерно с апреля 1996) система имела кодовое наименование S004, а ещё раньше (конец 1992) - SH-DOS или ROS (Radio Operating System)...
Я тут за главного - если что шлите мыло на me собака shaos точка net