C
CHELLL
смысл программы, такой "вывод флагов нажатых клавиш", текст вот:
проблема втом что преподавателю не нравится обрание с буферомв этих строках:
*start=0x1E;
*end=0x1E;
, как можно по другому сделать так что бы буфер заполнялся с начала или нужно что то исправить в тексте программы ещё. Без этих строк, буфер начинает заполняться с произвольного момента и пи в вводе символов он заплняется и не реагирует на выход
Код:
#include <iostream.h>
#include <conio.h>
#include <dos.h>
#include <stdlib.h>
void main()
{
char far *a;
int far *start,far *end;
a=(char far *)MK_FP(0x40,0x17);
start=(int far *)MK_FP(0x40,0x1A);
end=(int far *)MK_FP(0x40,0x1C);
*start=0x1E;
*end=0x1E;
int t;
outportb(0x60,0xf3);
outportb(0x60,0x7D);
for(;;)
{
delay(300);
clrscr();
for(int i=7;i>=0;i--)
{
t=(*a>>i)&1;
cout<<t;
}
if((*a>>0)&1) cout<<"\nR Shift= 1";
else cout<<"\nR Shift= 0";
if((*a>>1)&1) cout<<"\nL Shift= 1";
else cout<<"\nL Shift= 0";
if((*a>>6)&1) cout<<"\nCL=1";
else cout<<"\nCL=0";
if(*start!=*end)
{
cout<<"\nDly vihoda nazhat' q";
cout<<"\nV bufere est':\n";
for(int i=*start;i<*end;i+=2)
{
char buf=peek(0x40,i);
cout<<buf;
if(buf=='q') exit(1);
}
if(*end-*start==30)
{
cout<<"\nBufer zapolnen\n";
break;
}
}
}
}
*start=0x1E;
*end=0x1E;
, как можно по другому сделать так что бы буфер заполнялся с начала или нужно что то исправить в тексте программы ещё. Без этих строк, буфер начинает заполняться с произвольного момента и пи в вводе символов он заплняется и не реагирует на выход