DOS-extender для компилятора Borland C++ 3.1
Категория реферата: Рефераты по информатике, программированию
Теги реферата: решебник по геометрии класс, дипломная работа методика
Добавил(а) на сайт: Savinkov.
Предыдущая страница реферата | 2 3 4 5 6 7 8 9 10 11 12 | Следующая страница реферата
MK_LIN_ADDR(_DS, &flipflop_tss),
(unsigned long)TSS_SIZE-1,
TYPE_TSS_DESCR | SEG_PRESENT_BIT);
// Инициализация TSS для задачи FLIP_TASK init_tss(&flipflop_tss, CODE_SELECTOR, DATA_SELECTOR, flipflop_stack + sizeof(flipflop_stack), flipflop_task);
// Загрузка регистра IDTR load_idtr(MK_LIN_ADDR(_DS, &idt), IDT_SIZE);
// Вход в защищённый режим protected_mode(MK_LIN_ADDR(_DS, &gdt), sizeof(gdt),
CODE_SELECTOR, DATA_SELECTOR);
}
4.4 Файл TASKS.C. Содержит функции задач.
#include
#include
#include
#include
#include
#include "tos.h"
#include "screen.h"
word dispatcher(void);
// Номер текущей строки для вывода на экран extern unsigned int y;
// Задача TASK_1
void task1(void)
{ while(1)
{ vi_print(0,y++, " Запущена задача TASK_1, "
" возврат управления главной задаче", 0x70); jump_to_task(MAIN_TASK_SELECTOR);
// После повторного запуска этой задачи
// снова входим в цикл.
}
}
// Задача TASK_2
long delay_cnt1 = 0l;
word flipflop1 = 0;
void task2(void)
{ char Buf[B_SIZE + 1]; // Буфер вывода задачи 2 static TLabel Label1; static TLabel Label2;
memset(Buf, ' ', B_SIZE);
Buf[B_SIZE] = 0;
Label1.Pos = 0;
Label1.Dir = 1;
Buf[Label1.Pos] = '/';
Label2.Pos = B_SIZE;
Label2.Dir = 0;
Buf[Label2.Pos] = '';
vi_print(30, 15, "Работает задача 2:", 0x7f);
while (1)
{
// Периодически выводим на экран движки,
// каждый раз переключая
// семафор номер 1. Этот семафор однозначно
// соответствует выведенной на экран строке. asm sti if (delay_cnt1 > 150000l)
{ asm cli
StepLabel(&Label1, &Label2, Buf);
if (flipflop1)
{ vi_print(5, 16, Buf, 0x1f); sem_clear(1);
} else
Рекомендуем скачать другие рефераты по теме: диплом купить, скачать конспект урока.
Предыдущая страница реферата | 2 3 4 5 6 7 8 9 10 11 12 | Следующая страница реферата