Цитата:
И им1
И запрещенные прерывания
Не. давай конкретно. если прерывания запрещены, то они запрещены и нет никакого значения, im1 там или im2. поскольку оно никогда не будет включено.
а когда ты говоришь, что там 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