User Tag List

Показано с 1 по 10 из 200

Тема: Пишем свою ОС. Практика

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    05.10.2006
    Адрес
    Харьковская обл.
    Сообщений
    166
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Пишем свою ОС. Практика

    Пишем свою ОС.Практика.
    (создано по мотивам бесед из удалённой темы Q-DOS).

    Лирическое вступление

    Если начинающий кодер хочет попробовать научиться писать игры, то он может почитать разные книги , например «Как написать игру для ZX-Spectrum на бэйсике» или более продвинутый вариант «Как написать игру для ZX-Spectrum на ассемблере». Книги на тему "Как написать операционную систему для ZX-Spectrum" к сожалению нет(или мне о такой книге неизвестно).Вот если бы во времена нашей юности у нас была подобная книга...
    Так как же быть тем,кто хочет сделать свою операционную систему для нашего любимого Спектрума? Можно конечно обратиться к серьёзной литературе мирового уровня по разработке ОС и потратить несколько лет на изучение книг объёмом в сотни страниц, но к тому времени желание что-либо делать иссякнет,поэтому хочется уже сейчас,прямо сегодня,в крайнем случае в ближайшие выходные приступить к процессу создания «ОС Вашей мечты».Предлагаю не откладывать это дело в долгий ящик, и пока еще чего-то хочется - в этой теме начать учиться. Мы не будем сразу замахиваться на что-то глобальное,ведь все начинали с простых вещей,даже художники,чьи полотна признаны шедеврами,сначала рисовали на маленьких листочках бумаги или в блокноте. Поэтому предлагаю начать на самых простых примерах,и пусть первая версия ос для начала будет очень простая, примитивная, даже можно сказать — игрушечная, но главное не останавливаться на достигнутом, и потом сделать ещё одну версию,уже посложнее, а потом ещё одну и ещё одну и так, продвигаясь небольшими шажками - научиться делать операционные системы и если к тому времени у нас еще останутся силы/желание/свободное время, то мы сможем создать для нашего любимого компьютера свою собственную,и конечно же самую быструю,самую лучшую, НАСТОЯЩУЮ операционную систему, которой будет удобно пользоваться и которой мы все сможем гордиться.

    Предлагаю не относиться к нижеизложенному слишком серьезно и воспринимать это обучение в игровой и приколисто-юморной форме.

    Хочу обьявить эту тему территорией,свободной от флэйма, и каждому, кто придет сюда просто поразмышлять на тему "разработка ОС для Спектрума",мы скажем - "ну шо ты к нам приштал,эт наша пешошница".И предложим перейти в тему "Пишем свою ОС. Теория" в разделе "Концепции" и уже там высказать всё,что их душа пожелает. А сюда приглашаются те,кто действительно заинтересован сделать что-нибудь реально работающее (а если никто не придёт, буду потихоньку куковать в одиночестве).
    Что бы оценить уровень своих познаний, можно поробовать поделиться ими с другими людьми,при этом будут обнаружены неоторые пробелы в тех или иных областях обсуждаемого предмета.
    Предлагаю:
    1)В процесе обучения сделать хотя бы одну настоящую ОС и больше не сомневаться на тему, есть ОС у Спектрума, или нет ОС. (какого уровня сложности она будет и какие у неё будут возможности — это уже другой вопрос).
    2) Излагаемые факты из истории развития ОС,концепции осестроительсва будут максимально упрощены и из них будут выброшены незначащие (на мой взгляд) подробности.
    3)Будем использовать технологии open source - т.е. юзать в наших проектах свободно распространяемые программы и драйвера с исходными текстами,а так же свои собственные уже существующие процедуры и старые наработки.
    4) Продвинутым кодерам, случайно заглянувшим к нам на огонёк, просьба не удивляться,так как мы будем делать по возможности максимально просто,потому что Спектрум - простой в освоении компьютер, и хотелось бы, чтобы всё на нём было простым и удобным.
    /////////////////////////////////////////////////////////////////////
    Вообще хотелось бы начать сначала, но раз уже в теме Q-DOS начали обсуждать
    быстрый драйвер дисковода, то рассмотрим его

    ---------- Post added at 21:47 ---------- Previous post was at 21:45 ----------

    Цитата Сообщение от Sayman Посмотреть сообщение
    стоп. для скорпа была своя версия цпм. кроме того, разъясню в чём косяк совместимости. когда я говорил про работу с флопом из диапазона от 0 до 16383 (т.е. проще говоря из пзу или то что сидит на её месте), я имел ввиду довольно простую ситуацию. видиш ли, стартовый адрес для прог цпм = 100h.
    так то была от МОА, а это от К.Фролова - я же упоминал:
    Цитата Сообщение от Zet9 Посмотреть сообщение
    Есть версия цпм 2.2 от К.Фролова для Пентагона с кеш-памятью от 16К(дополнительно в ней драйвер экрана для режима 512х192), она же работает на KAY-256/Scorpion-256 и в ней драйвер дискеты настроен на форматы цпм от МОА для устройств A и B, для цпм от АТМ на устройстве С и для дискет от Профи-цпм на устройстве D

    Цитата Сообщение от Sayman Посмотреть сообщение
    все эти почти 16к могут быть свободно отведены под прогу юзера, за исключением моментов, когда юзер компилит её на другой адрес используя дерективы phase. но это отдельная песня. так вот. когда прога начинает чтото подгружать своё, какие то свои куски, что она делает? пральна, образщается к функции системы.
    dos equ 5
    open_f equ 15
    ld c,open_f
    ld de,myfcb
    call dos
    т.е. посути обращение идёт снова таки по адресу, который сидит гдето там...в области пзу ну или теневой озу (кэш). т.е. собсвтенно драйвера то там нет, всего лиш начала диспечера посути. окольными путями потом это всё погрузица. зхначит на этих клонах, для того чтобы всё работало нормально, нужно как минимум сохранять стэк пользователя, перекидывать всю юзерскую прогу от 100 до 3fff куда то там на свободное место, перекидывать драйвер дисковода на нужные адреса, отработать, потом всё вернуть на свои места. это как минимум тормоз,
    хорошенькие "этюды" получаются

    Цитата Сообщение от Sayman Посмотреть сообщение
    как максимум, не уверен что авторы тех версий цпм сталибы так извращаться.
    думаю не стали бы.Если бы я делал,то бы сделал так:
    1)Имеем "рулез" в виде Пентагона с кэш-памятью 32Кб - можем подключать 2 страницы по 16Кб с адреса 0

    ---------- Post added at 21:51 ---------- Previous post was at 21:47 ----------

    первая страница кеша подключена когда работает программа
    при вызове через call 5 происходит подключение 2-й страницы кеша - там все дрова и дискетные в том числе - юзаем прямое программирование ВГ93,грузим сразу весь сектор 1Кб сюда же и потом переносим нужные 128 байт в самый верх памяти, где сидит остатки bdos и bios (таблицы перехода там) - далее перепрыгиваем туда, подключаем первую страницу кэш, копируем эти 128 байт на адрес #0080 и возвращаемя в прогу (в случае если адрес DMA переставлен выше #4000 то сразу из 2-й страницы кеша копируем туда)
    а поскоку прога не включаем IM2 - то дисковые операции пройдут успешно.

    Цитата Сообщение от Sayman Посмотреть сообщение
    нет уж...звиняйте. таких тормозов нам ненужно.
    не вижу никаких тормозов

    ---------- Post added at 13:42 ---------- Previous post was at 13:34 ----------

    2)Имеем любой любой спек-128, у которого для доступа к ВГ93 нужно лезть к #3d2f, и при этом есть возможность подключить страницу ОЗУ на адрес 0
    в этой странице начало проги - , а на #c000 - подключаем страница 1(или другая)
    прога делает вызов call 5 - мы переплёвываемся на адрес в конце страницы #ffXX и отключаем страницу 0 - там теперь стандарное пзу
    ну а далее обращаемя к #3d2f - таким образом,как это вделано в тысячах прог с турбо-лоадером и выполняем дисковую операцию, читаем сектор сразу в верхнюю страницу, где ядро (при DMA=#0080 или выше #C000 ) или в ниже если DMA от #4000-#BF80
    потом принеобходимости переностим 128 байт вниз
    И снова никаких тормозов[COLOR="Silver"]

    ---------- Post added at 22:04 ---------- Previous post was at 21:51 ----------

    Цитата Сообщение от Sayman Посмотреть сообщение
    читаем сектор сразу в верхнюю страницу
    нифига. вот тебе пример - если прога весит ну скажем 8 килобайт. дма сидит где то грубо говоря посередине и туда надо чтобы чтото погружалось. ммм?? лишнии проволочки с перемещениями и потом - кто тебе сказал что грузить мы будем немного? какой нить вордстар попросит погрузить килобайт 20 текста, ты что будеш по 128байт бросать туда сюда включая и выключая пзу, перемещая блоки?! вот я тебе и говорю что это тормоз!
    ты просто не представляеш что такое грузить по 128 байт или там по сектору, потом махинации с переключениями и перебросками, созранениями всяякие, потом снова погрузка и т.д. я вот проделывал такие операции. я грузил и по 128байт и по 256 и по 512 а потом когда погрузил сразу по 16кб, вот тут то и увидел разницу. хотя она заметна уже на 128байт и на 512байт. приэтом я делал почти теже махинации..не совсем, но их хватало. в итоге файл весом всего то ничего 30 или 40 кб, грузился секунд наверно 10 - 15...а на финише когда переделал всё под корень, секунды полторы. а представь если файл ещё больше?! ну уж нафиг. хотя канечно, на 128м то куда. у стандартной цпм ТПА как правило не менее 50кб..обычно. на 128м наверно ещё меньше будет с учётом трдоса.
    Вот смотри самый тяжелый вариант загружает с адреса пусть #0100 кусок длиной 62 Кб - т.е. впритык к TPA.
    в случа пентагона с кэшем имеем то что я сказал выше - и после переключения во вторую страничку кеша мы подключаем на #C000 страницу 3 (пустую) и грузим в нее #3F00 байт,
    далее подключам на #C000 страницу 0 (принадлежащюю программе и вней же в конце урезанные BDOS и BIOS) и грузим остаток файла 46,25 Кб с адреса #4000
    далее включаем на адрес#C000 опять страницу 3, включаем 2-ю страницу кеша (на адрес 0)
    и перед возвратом в программу копируем из #C000 на #0100 кусок длиной #3F00 байт (это 15.75 Кб)
    Ну наверно надо уже мне сделать драйвер и оценить быстродейтсвие.
    (Сделал и оценил(01-02.10) - мои теоретические рассуждения полностью подтвердились - работает БЫСТРО! )
    Последний раз редактировалось Zet9; 18.12.2010 в 16:43.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Пишем на ассемблере под эмулятором
    от GM BIT в разделе Для начинающих
    Ответов: 76
    Последнее: 15.07.2016, 20:04
  2. Пишем свою ОС. Теория
    от Zet9 в разделе ZX Концепции
    Ответов: 280
    Последнее: 27.06.2012, 15:27
  3. Я ищу свою дему
    от AAA в разделе Демо
    Ответов: 4
    Последнее: 04.05.2005, 22:59
  4. Ищу свою gfx работу!!!
    от invador в разделе Игры
    Ответов: 7
    Последнее: 02.02.2005, 12:54

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •