|
ZX Time
#04
17 ноября 2001 |
|
Дискуссия - "реализация многозадачности и ОС на спектруме".

Дискуссия. О многозадачности.
────────────────────────────────────────
DJ Blast
Баталии развернулись с небывалой силой
--------------------------------------
DJ Blast^TNL InSys представляет Вашему
вниманию очередную партию своих мыслей
на тему "Ось на ZX". Как говорится, хо-
тели дискуссию - получите, кто не спря-
тался, я не виноват!
К сожалению, диск с ZXT#3 посетили
инопланетяне, поэтому буду цитировать по
памяти, сорры, если где ошибусь...
Во-первых, очень печально, что для
многих людей слова Windows и PC стали
практически синонимами. Мне искренне
жаль тех людей, которые неспособны про-
вести различие между ПЛАТФОРМОЙ и
ОПЕРАЦИОННОЙ СИСТЕМОЙ (просьба не
воспринимать данную фразу как оскорбле-
ние)... Предлагаю на этом закончить об-
суждение этого вопроса как не относяще-
гося к тематике ZXTime (ключевое слово
все-таки ZX!).
Что касается IS-DOS, то из своего опы-
та работы с ней (небольшого, к сожале-
нию... или может к счастью?) я могу сде-
лать вывод, что единственной заслуживав-
шей внимания вещью в ней был только тек-
стовый редактор. К тому же, чтобы рабо-
тать в IS-Dos, требовались стальные нер-
вы и чугунный дисковод, и даже в этом
случае работа напоминала сеанс садомазо-
хизма... Хотя, это было так давно, мо-
жет, с того времени что-то изменилось?
Возвращаемся к Relocation Tables. Фра-
за "А если программа имеет длину 100К?"
выглядит весьма забавно. Интересно,где
же это вы нашли такую программу? :) Даже
в Черном Вороне обьем ИСПОЛНЯЕМОГО КОДА
значительно меньше. Но в любом случае,
даже если и 100К, то одним блоком такую
программу загрузить не получится чисто
физически. Нужно ведь страницы листать.
Отсюда вывод: держи пиво в холоде...
Ой!!! что это я??? Вот блин! Вывод та-
кой: любая программа все равно будет
грузиться блоками. И настраивать можно
каждый блок в отдельности. И вообще, те
блоки, которые будут находиться в стра-
ницах верхней памяти, настраивать не
нужно, все равно все страницы начинаются
с одного адреса.
О структуре оси можно спорить очень
долго. Например, есть мнение, что ось на
спеке должна представлять собой только
драйвер дисковых операций (в том числе и
с винтом!) и новую файловую систему. А
вот компилятор языка, тем более динами-
ческий, как вы предлагаете, имхо идея
вообще весьма и весьма непродуманная.
Это же такой тормоз будет! Даже на ПЦ,
где мощность проца намного выше, такие
языки не применяются. Любой подобный
язык потребует универсализации его опе-
раторов, а чем выше универсальность, тем
меньше скорость. В доказательство:
посмотрите на игрушку "The Double". Она
откомпилирована с какого-то языка высо-
кого уровня (уж не знаю с какого). Ну
как? Голова не кружится от скорости? ;)
А при динамической компиляции будет еще
хуже. Насчет "Подвышенного уровня". Я
понимаю, ZXASM_3.10 rulez 4eva (сам им
пользуюсь :), но там речь шла только о
системе макросов, да и то в качестве
шутки. Вот с одним я могу согласиться:
нужен набор стандартных процедур и стан-
дартный интерфейс с ними, то есть стан-
дартные точки входа, но и только! Вызы-
вать их из асма будет гораздо удобнее и
нагляднее, чем из любого языка более вы-
сокого уровня.
В завершение данного раунда ;))) хочу
выдвинуть идею. Возможно, нечто подобное
уже было, но я не знаю. Выкинуть ПЗУ
Basic128 (что само по себе и не ново) и
заменить его комбинацией ПЗУ и ОЗУ.
Поясню: допустим, в адресах #0000..#03FF
будет ПЗУшка с зашитым загрузчиком оси,
а остальные адреса (#0400..#3FFF) - ОЗУ,
в которое будем грузить ядро оси с дис-
ка. Этого было бы достаточно, но к сожа-
лению иногда встречается очистка экрана
примерно таким способом:
ld hl,23297
xor a
l1 dec hl
ld (hl),a
or (hl)
jr z,l1
...
Для нашей оси это закончится весьма и
весьма печально. Поэтому нужно добавить
порт для защиты нижней памяти от подоб-
ных посягательств. Имеется в виду, что в
зависимости от состояния данного порта
будет разрешаться/запрещаться запись в
адреса #0000..#3FFF. Пример:
;Some example of OS loader:
ld bc,port ;адрес порта уп-
;равления защитой
;памяти
ld a,1 ;разрешить запись
out (c),a ;без комментариев
ld hl,#0400 ;\
ld de,adr_on_disk ; \
ld b,sec_len ; } загрузка
ld c,load ; /
call disk_driver ;/
...
ld bc,port
xor a ;запрет записи
out (c),a
...
Все это безобразие потребует доработки
железа, но "если ничего не дорабатывать,
то что вообще можно получить?" (c)Steel
Drugon. Я не железячник, но знающие люди
говорят, что такая доработка реализуется
достаточно просто. А если учесть, что
большАя часть спектрумистов сидит на
эмуляторах, то можно просто обратиться к
авторам эмуляторов с просьбой поддержать
данный вариант.
К достоинствам такой оси можно отнести
то, что каждая новая версия не потребует
перешивки ПЗУ, и вообще, каждый конкрет-
ный пользователь сможет без особых проб-
лем пропатчить ось для своих черных це-
лей. Опять же, все системные переменные
можно будет хранить в теле самой оси,
оставив всю основную память программам
пользователя. Да и вообще, можно приду-
мать еще массу применений этой памяти,
даже если ось не нужна...
На этом пока закончу. Интересно узнать
мнение читателей о моём предложении. До
встречи в эфире :)
- - -
Комментарии от DWT:
Я рад как ребёнок:). Всё-таки много-
задчность, ОС и даже язык под_вышенного
уровня вызвали реакцию в массах. Значит
людЯм небезразлична судьба Спектрума,
как живого компьютера, где помимо высо-
ких технологий программированния, кото-
рые уже, кажется, достигают своего
максимума, развиваются и технологии
"стыковки 'человек-компьютер'".
Спорить о структуре ОС можно,
действительно, очень долго. Для чего мы,
собственно, и заварили эту кашу...
Замечание о невозможности различить ОС
и платформу проигнорирую. Преступлю сра-
зу к рассуждениям о языке высокого уров-
ня. В какой раз я это говорю: СПЕКТРУМ -
ЖЕЛЕЗЯКА СВОЕОБРАЗНАЯ, ПОЭТОМУ ЕМУ НУЖЕН
И СВОЕОБРАЗНЫЙ, ОСОБЫЙ ЯЗЫК. Пусть этот
язык будет структурно похож на ассемблер
и даже чем-то его напоминать, дублиро-
вать. Пусть это будет даже ассемблер, в
котором будут расширены макросы...
Очень рад, что программы в сто кило-
байт позабавили нашего читателя. А чтобы
он вообще разорвал себе живот со смеху,
признаю, что я был в чём-то не прав. Я
просто не вдумался в суть и не прикинул
объёмы relocation tables. Извиняюсь, по-
горячился.
Идея о замене части ОЗУ ПЗУ'шкой уже
не нова. Однако, при её реализации дей-
ствительно развязываются руки и появ-
ляется возможность клепать разные ОС'ы
на любой вкус. Идея весьма интересна,
ведь тогда, при её реализации, каждая
игра (допустим) сможет иметь собственную
ОС, подогнанную под её собственные тре-
бования. Сразу скажу DJ Blast'у - один
единомышленник в плане идеи о ПЗУ+ОЗУ у
тебя есть:).
* * *
Другие статьи номера:
Похожие статьи:
В этот день... 16 ноября