Я пытаюсь написать программу на c, компилятор только для DOSBOX / TURBOC.
Цель программы очень проста: пользователь вводит целое число N с клавиатуры, и после этого программа ждет пользователя, пока он не нажмет на клавиши N
на клавиатурах (любая клавиша).
Я использую setvect и getvect для замены прерывания 9, но оно работает только один раз. Я имею в виду, что когда я вставляю N>1
, во время выполнения программа вводится только один раз в новый ISR (подпрограмма обработки прерываний), а не N
времени, как предполагалось.
Вот программа:
#include<stdio.h>
#include<dos.h>
volatile int AnyKey_Flag;
void interrupt (*Int9Save)(void);
void interrupt AnyKey_Handler(void)
{
AnyKey_Flag++;
printf("%d",AnyKey_Flag); //that line is just for testing
}
void main()
{
int N=0;
Int9Save=getvect(9); //save the old ISR
printf("Please insert a number: ");
scanf("%d",&N);
sleep(1);
AnyKey_Flag=0;
setvect(9, AnyKey_Handler); //here I replacing the ISR with AnyKey_Handler
while(AnyKey_Flag<2*N); //here the program waits until N presses, push and release are counted, so N is actually 2N
setvect(9, Int9Save); //restore the old ISR
printf("\nEND");
sleep(3);
}
Кстати, после этого программа завершает работу (только N = 1), компилятор не распознает никакой клавиши ...
Любая помощь будет оценена.
Thx,
Хаим