LINUX.ORG.RU

ДОС, резидент и QEMU


1

0
Это мой первый скриншот на ЛОРе, поэтому прошу пинать очень сильно.

Что было надо? Надо было написать TSR приложение под ДОС, которое бы циклически через заданное количество секунд блокировало доступ к диску на другое заданное количество секунд. Все это делалось в рамках лабораторной работы по Операционным системам.

Собственно на скрине: FreeBSD 4.11, WindowMaker 0.92 с кучей докапов, MC в котором открыто описание функций из dos.h ну и конечно qemu с Turbo C 2.0 (единственный компилятор под дос, который сумел достать). К сожалению его пришлось использовать не только как компилятор, но и как редактор. Пробовал писать код в любимом emacs, а потом вставлять в ТС, но он почему-то игнорировал переносы строки.



Проверено: Shaman007 ()
Лабу надо было в Minix-е делать там и редакторы и компиляторы нормальные, вывод препод ламо, вали аттуда
anonymous
()
Два обработчика таймера, setvect() туда-сюда... брр
Я бы делал все это в одном обработчике таймера
И еще - уже не помню, но сам setvect() вроде бы вызывает int 21h/ah=25h?
В обработчике таймера лучше писать напрямую в таблицу векторов прерываний - как-то спокойнее, да и быстрее ;-)
anonymous
()
Ответ на: комментарий от Darkman
Не убивали, а на прерываниях вешали.
Macil ★★★★★
()
Ответ на: комментарий от smartly
Гы гы... а те прерывания, которые он на себя перехватывал ты долго и мучительно востанавливал?
eXOR ★★★★★
()
Ответ на: комментарий от smartly
Паскаль перехватывает довольно много прерываний.
Но там есть процедуоа SwapVectors().
Так что никаких проблем.

SwapVectors;
Keep(0); // stay resident
anonymous
()
Ответ на: комментарий от smartly
> Кто, паскаль? Какие он на себя прерывания перехватывал?

Номеров уже и не помню, но TP RunTime точно часть прерываний на себя перехватывал.

Darkman ★★★
()
Ответ на: комментарий от Darkman
Например деление на 0, нажатие Ctrl+C ...
anonymous
()
Ответ на: комментарий от grustnoe
>а как в миниксе написать резидент? :)

лаба должна не только научить как писать на С,
но также позволить поглубже заглянуть в устройство ОС,

то что препод знает только DOS и соотвественно
его студенты изучают никому ненужную ОС,
это швах.
anonymous
()
Ответ на: комментарий от anonymous
>А кому реально счаз DOS нужен? И зачем нужен опыт писания резидента?

никому, но остались динозавры которые только это и знают,
и считают это системным программированием.
anonymous
()
Ответ на: комментарий от anonymous
А подумать ? Опыт написания резидента под ДОС пригодится человеку который столкнется с жестким hardware-программингом. Например для какого-нибудь 8-разрядного микроконтроллера или DSP-шника.
BottleHunter
()
Ответ на: комментарий от anonymous
Просто есть такой предмет - операционные системы, в рамках которого изучается обработка прерываний и IPC (в линукс и в оффтопике). Это - первая лаба, она на обработку прерываний, следующие лабы будут по средствам IPC в Linux и OFFTOPIC соответственно.
Strange
() автор топика
Ответ на: комментарий от BottleHunter
Ох не помню уже чего там паскаль перехватывал. Но помню, что все проблемы успешно решались.

> Опыт написания резидента под ДОС пригодится человеку который столкнется с жестким hardware-программингом. Например для какого-нибудь 8-разрядного микроконтроллера

В принципе согласен. Опыт написания обработчиков прерываний помогает писать обработчики прерываний для микроконтроллеров.

smartly ★★★
()
Хотел было спросить, а почему не dosemu для ДОСа
используется, но упс, это ж БСД... ну тогда почему
не dosbox?
anonymous
()
Ответ на: комментарий от anonymous
Сейчас как раз использую DosBox, он оказался гораздо удобнее, т.к. нинадо делать никаких образов, можно просто маунтить каталог. Но все равно тестить прогу не получается, т.к. не дают напрямую писать в регистры и менять вектора. Приходится юзать еще одну тачку с голым досом.
Strange
() автор топика
Ответ на: комментарий от Strange
Вот никак не могу понять большой радости от шрифта Terminus. Русские буквы <<к>> и <<в>> в нем какие-то странные: первая как латинская, а вторая неоличима от заглавной.
brazhe
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.