Буфер клавиатуры

Тема в разделе "Общие вопросы по С и С++", создана пользователем CHELLL, 16 янв 2008.

  1. CHELLL

    CHELLL Гость

    смысл программы, такой "вывод флагов нажатых клавиш", текст вот:
    Код (Text):
    #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;
    , как можно по другому сделать так что бы буфер заполнялся с начала или нужно что то исправить в тексте программы ещё. Без этих строк, буфер начинает заполняться с произвольного момента и пи в вводе символов он заплняется и не реагирует на выход
     
Загрузка...

Поделиться этой страницей