ОС - это системный подход)
ОС - это системный подход)
ты знаешь, не припоминаю, чтобы на Спектруме при выводе картинок/спрайтов стеком, чтобы параллельно ещё и мышь опрашивалась. разницы нет, ты что на Спектруме не будешь этого делать, что тут. пока процедура вывода не отработает, ты к работе с мышкой не перейдёшь, а прерывания запрещены (потому, что стек)ю твой обработчик (опрос мышки) молчит в это время.
таки не обычное, т.к. запрещают на какой то период. при этом на спектруме так же в это же время мыша не обрабатывается, т.к. обработчик (читалка как минимум) так же висит на прерываниях.
Последний раз редактировалось Sayman; 19.11.2020 в 04:47.
даа... и мышки я там тоже как бы не наблюдаю, ага...
- - - Добавлено - - -
так там im1 или всё таки запрещённые прерывания? определись уже. если говоришь, im1, то значит прерывания там есть и запрещаются они только в какие то моменты.
или команда DI как то иначе работает с IM1? я чего то не знаю? О_о
вот это ты выдал
И им1
И запрещенные прерывания
- - - Добавлено - - -
поставь бряк на $38 и подожди пока он сработает
кучи игр не используют прерывания
- - - Добавлено - - -
и поэтому как то странно
пилятели девайса должны были предусмотреть что будет адаптация старых программ
хотя ж то было в доисторические времена
может и не было очевидно что куча софта запрещает прерывания раз и навсегда...
- - - Добавлено - - -
перечетал твой псто выше
там вообще ж rst20
оно же бейскиковский NEXT-CHAR
тоесть софтвари с подключенной стандартной пзу-шкой вообще не адаптировать?
заточенность чисто под новый софт
и чем они думали?
- - - Добавлено - - -
от сюда вопрос а как оно тогда работает?
дополнительно есть порт в котором нужно разрешить генерацию прерыванию от мыши?
а потом еще и три прерывания читать значения из еще какого то порта?
нахрена эта городуха?
- - - Добавлено - - -
и вообще реквестирую ссылку на доку по профенской мышо
ато шота не ясно это вин или феил
Я не понял о чём срач?
В старых прогах нет мыши. В новых - есть прерывания. Проблемы нет. Или вам надо непременно запустить прогу для 48К, написанную в 85 году и чтобы мышка по верху бегала? Что за бред?
Любая ОС требует определённых правил работы. И многозадачные требуют, чтобы прерывания были разрешены. Точнее не запрещались насовсем.
- - - Добавлено - - -
Ребятки, вы не поставили самый главный вопрос: ДЛЯ ЧЕГО СПЕКУ ОСЬ?
Just for fun - это оставим за скобками.
Итак, моё мнение.
Для запуска игрушек - ОС точно не нужна. Вообще. Достаточно фаталла какого-нибудь. Такая возможность есть в NedoOS, но это приятный бонус.
ОС нужна для прикладных программ: языка, редакторы, браузеры и проч. И как раз в этих применениях "такты" - вторичны. Архитектура ОС - первична.
Компилировать ОС на каждый чих, конечно, клёвая идея. Но неудобно. Скажем, пишешь ты драйвер. Так почему не дать возможность его динамически выгрузит-загрузит, не прибегая к кнопке RESET? Так что реализация динамически загружаемых драйверов это ещё и удобство разработки.
Да, в конце концов, можно иметь несколько вариантов драйвера и грузить нужный.
Далее, некоторые тут "считают такты"... Хотя реализация аналога select() сэкономит на порядки больше тактов: процесс будет ждать события и система не будет переключаться на этот процесс (то есть щёлкать его контекстом), пока событие не наступит. Например не появятся данные на порту или не выйдет заданный таймаут.
В своё время, в бытность студентом, был у нас один перец, который усираясь от собственного величия, писал на асме 3Д на 286й машинке. Работало, но тормозило не подетски. Другой парниша не стал усираться, а сначала почитал книжки по алгоритмам и спокойно на С написал прогу, которая то же 3Д на той же 286й выводило куда плавнее. Это я к чему. Можно до геморроя на пальцах "считать такты" и "экономить байты", но при этом получить плохой результат изза непродуманности архитектуры программы. А можно продумать архитектуру, реализовать её, а потом уж в узких местах оптимизировать.
Alone и DimkaM сделали офигенную работу: действующий макет ОС. ИМХО, мне кажется пора чуток остановиться, подумать куда двигаться дальше, отложить ассемблер в сторону, взять текстовый редактор и написать план работ. И главное - сразу поставить конечную цель по каждому пункту.
Если сейчас ребята упрутся в портирование игрулек - то ОС помрёт. Ведь и без неё игрульки работают замечательно.
Не. давай конкретно. если прерывания запрещены, то они запрещены и нет никакого значения, im1 там или im2. поскольку оно никогда не будет включено.И им1
И запрещенные прерывания
а когда ты говоришь, что там im1 и запрещённые прерывания, то значит прерывания когда-то проскальзывают (разрешаются). обычно так и говорят - прерывания запрещены,
без указания режима который был запрещён.
ОК. я с этим согласен. едем дальше.кучи игр не используют прерывания
если говорить в контексте адаптированной программы (игры или ещё чего то там), то конечно такие моменты учитывались.пилятели девайса должны были предусмотреть что будет адаптация старых программ
Тем более, что я говорил про Профи, у которого есть своя ОС (клон ЦПМ), есть возможность выключить ПЗУ.
Мышь на профи изначально (с первых дней существования) подключалась компортовая. Был написан драйвер, кототорый
реализовывал активный режим работы мышки. Активный, значит без постоянного чтения (poll) портов на предмет данных
на основном обработчике прерываний или где то в циклах программы. Как я уже сказал, событие от мышки выдаёт на шину
опкод команды rst 0x20. Т.е. включён режим im0. По протоколу msmouse пакет состоит из 3х байт. соответственно будет
3 события и 3 вызова обработчика мышки, который прочитает порт с данным. а потом уже с этими данными программа делает
то, что ей нужно. Однако, никто не запрещает читать мышь в пассивном режиме. Различие между компортовой мышкой и
кемпстон мышкой в том, что перед чтением данных с порта данных компортовой мышки, нужно прочитать порт статус ком порта.
Если выставлен статус "есть данные", то далее читать порт с данными, 1 байт, а потом делать снова poll.
проблема в том, что в отличии от кемпстон мышки читать данные подряд не получается. проходит около 7тысяч тактов
между байтами. 2 ожидания (между первым и вторым, а потом вторым и третьим байтами), 14кт. это много. в этом
плане кемпстон мышь несопостовима лучше, проще и удобнее. но когда включаем активный режим работы у компортовой мышки,
то она сразу выигрывает за счёт меньших телодвижений.
что же касается опроса мышки без прерываний, то кемпстон мышь тоже весьма проблемно читать. просто потому, что часть данных
будет теряться. поэтому никто в здравом уме не будет пилить мушку на запрещённых прерываниях.
это ты про бейсик. я же про профи говорил, с загруженной осью, с отключенным пзу.там вообще ж rst20
под профи есть адаптированные игры с мсх, с корвета, с роботрона, даже со спектрума с трдоса и с кассет.тоесть софтвари с подключенной стандартной пзу-шкой вообще не адаптировать?
к сожалению нет. историческая справка:Just for fun - это оставим за скобками.
вот краткий список ОСей и ядер, которые существовали/были написаны под z80 (калькуляторы, разные компы и т.д.) как многозадачные:
1. Profi Vision
2. Uzix
3. Fuzix
4. Symbos
5. Contiki
6. KnightOS
7. теперь ещё и NedoOS.
8. даже в рамках этого форума пролетало пара вариаций зачатков RTOS или чего то подобного.
А теперь расскажи о том, какая из этих систем не является just for fun, которая имеет обширную базу пользователей (активных!!!),
кодеров и других деятелей?! " самые громкие системы - Uzix и Symbos. Но даже там нет толп жаждущих пользователей и кодеров. Uzix вообще умерла
в тот день, когда автора системы обокрали в 2001м году. Fuzix туда же - кроме Алана никому она не интересна. Под симбос написали чуть больше софта.
В том числе и "прикладной" (клиент IRC, email (клон outlook)). Браузер тоже там есть. Но воз и ныне там. И самое забавное, что в рамках той же
MSX или Enterprise 128, народ продолжает пользоваться msx-dos 2 и EXDOS. Потому, что многозадачность на наших мелких машинках ником уне нужна.
Это как собаке 5я нога. Только лишний тормоз добавляет. практического применения никакого никогда не было. Даже контики для С64 давно умерла
(и это не смотря на то, что на этой контики крутили демосайт в интернет с Цэшки!) толком не взлетев. На наших машинах более, чем достаточно просто ДОС.
Или, как ты выразился, достаточно одной пускалки, но дос она чуть более умная и даёт чуть больше комфорта, чем пускалка в виде фатала.
Варианты с красивой загрузкой драйверов, точки монтирования, с одной точкой для вызова системы, всё это не для наших слабых машин. это всё не состоятельные
и без жизненные варианты. ЬТы просто переигрался в линукс. Методы и концепция линукса к нашим машинкам тут не применима. Помнится ты запиливал Fuzix
под Эву, но так и не допилил. Что же ты бросил всё? оно как раз соответствует твоим ожиданиям (почти во всём).
Алоний без спорно - Молодец, что взялся за многозадачную ось. Но его начинание так и останется начинанием. просто красивой техдемкой, игрушкой.
Особенно если учесть, что недопилив ядро он уже кинулся переносить прод под ещё не законченную систему (видимо он потом хочет весь этот прод активно
ещё раз переделывать под новые релизы системы).
Особенно если учесть, что ни Димка, ни сам Алоний не блещут желанием разобраться в работе и структуре других осей. что и как у других, почитать
какие то доки. В том числе не хотят разобраться в работе Fat.
Опять-таки, система находится в паблике уже явно больше года. За это время к разработке больше никто не присоединялся, активно прод никто не пишет. всем плевать на недоос. И это не смотря на то,
что Алоний активно её рекламирует и агитирует за неё везде, где только можно, включая утуп и твич. Доброжелатели есть (сочувствующие), но не более того. Вот и ты, как обладатель(?) Эвы затесался в ряды пассивных сочувствующих. А толп юзеров и полчищ кодеров как не было, так и нет.
это с "того" форума. Процесс не должен иметь прямого доступа к переменным окружения, даже если этот процесс унаследовал их. Для этого в системе должны быть соответствующие функции, которые вернуть переменную и значение. например:Точно так же и с переменными окружения.
Входные значения:
B - номер подфункции
C - 46h
B=0 Получение системного окружения
HL - буфер
B=1 Получить переменную окружения
HL - имя переменной
DE - буфер для значения переменной
B=2 Установить/удалить переменную окружения
HL - имя переменной и значение, разделенные символом '=', (ПЕРЕМЕННАЯ=ЗНАЧЕНИЕ)
Выходные значения:
A - состояние, если CF=0
A=0 - переменная обнаружена
A=0FFh - переменная не обнаружена
DE - указывает на конец буфера
A - код ошибки, если CF=1
Последний раз редактировалось Sayman; 19.11.2020 в 08:02.
Djoni(19.11.2020), NEO SPECTRUMAN(19.11.2020)
1. что за бред не понимать что старые программы не адаптируют под мышки?
2. практика показывает что новых программ НЕТ
конечно раньше может было и не очевидно
что под расширенное железо не пишут программы
но щас про "только из загруженной оси"...
ладно хрен с ним
*****мыша 30 лет назад запилена
уже ничего не изменишь
да и на фоне биперного компорта в фирменном спектруме![]()
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)