Скачиваний:
33
Добавлен:
01.05.2014
Размер:
2 Кб
Скачать
{ "ЋЇҐа жЁ®­­лҐ баҐ¤л Ђ‘Ћ€“"
     Copyrights 2003 "9331 super group"
  ‹ Ў®а в®а­ п а Ў®в  5

  „Ґ¬®­бва жЁп ЇаЁ¬Ґ­Ґ­Ёп ᥬ д®а®ў  }

Program Lab5;

Uses Corout,CRT;

{-----------------------------------------------------}
Var SScr : TSemaphore; { ђ §аҐиҐ­ЁҐ ­  ўлў®¤ ­  нЄа ­ }
    SCanRead : TSemaphore; { ђ §аҐиҐ­ЁҐ ­  з⥭ЁҐ б®®ЎйҐ­Ёп }
    SCanWrite : TSemaphore; { ђ §аҐиҐ­ЁҐ ­  § ЇЁбм б®®ЎйҐ­Ёп }
    myMessage : String;

Procedure WriteMessage; far;
Var Row : Byte;
Begin
  Row := 5;
  while true do begin
    SCanRead.P; { †¤Ґ¬ а §аҐиҐ­Ёп зЁв вм б®®ЎйҐ­ЁҐ }
    SScr.P; { ‡ Єал«Ё ᥬ д®а нЄа ­  }
    GotoXY(1,Row); Inc(Row);
    Writeln('Џ®«г祭® б®®ЎйҐ­ЁҐ: ',myMessage);
    SScr.V; { ЋвЄал«Ё ᥬ д®а нЄа ­  }
    SCanWrite.V; { ђ §аҐи Ґ¬ ЇЁб вм ­®ў®Ґ б®®ЎйҐ­ЁҐ }
  end {while};
End;

{-- Џа®бв®© бва®Є®ўл© । Єв®а Є®¬ ­¤ --}
Procedure CommandLine; far;
Var CurKey:Char; { ’ҐЄгй п ­ ¦ в п Є« ўЁи  }
    S:String; { ’ҐЄг饥 б®бв®п­ЁҐ Є®¬ ­¤­®© бва®ЄЁ }
Begin
  Writeln('ESC - ‚л室 Ё§ Їа®Ја ¬¬л');
  Writeln('------------------------');
  S := '';
  while true do begin
    if KeyPressed then begin
      CurKey := ReadKey;
      Case CurKey of
        #27: { ESC - ‚л室 Ё§ бЁб⥬л }
          Begin
            Writeln('‚л室 Ї® Є« ўЁиҐ ESC!');
            ReadyList.Stop_Manager;
          End;
        #13: { Џ®б« вм б®®ЎйҐ­ЁҐ }
          Begin
            myMessage:=S; S:='';
            SScr.P; { ‡ Єал«Ё ᥬ д®а нЄа ­  }
            GotoXY(1,20);
            Write('                                                   ');
            SScr.V; { ЋвЄал«Ё ᥬ д®а нЄа ­  }
            SCanRead.V; { ђ §аҐиЁ«Ё з⥭ЁҐ б®®ЎйҐ­Ёп }
            SCanWrite.P; { †¤Ґ¬ а §аҐиҐ­ЁҐ ­  § ЇЁбм б«Ґ¤го饣® б®®ЎйҐ­Ёп }
          End;
      Else
        S := S + CurKey;
      End;
      SScr.P; { ‡ Єал«Ё ᥬ д®а нЄа ­  }
      GotoXY(1,20);
      Write(S);
      SScr.V; { ЋвЄал«Ё ᥬ д®а нЄа ­  }
    end;
  end {while};
End;

{-----------------------------------------------------}
Begin
  { €­ЁжЁ «Ё§ жЁп ᥬ д®а®ў }
  SScr.Init(1);
  SCanRead.Init(0);
  SCanWrite.Init(0);
  { „®Ў ў«пҐ¬ Їа®жҐббл }
  ReadyList.Add_New_Process(WriteMessage);
  ReadyList.Add_New_Process(CommandLine);
  { ‡ ЇгбЄ ¬­®Ј®§ ¤ з­®© бЁб⥬л }
  ReadyList.Run_Manager;
  { ЋвзЁбвЄ  Ї ¬п⨠ᥬ д®а®ў }
  SScr.Done;
  SCanRead.Done;
  SCanWrite.Done;
  { ЋвзЁбвЄ  Ї ¬пвЁ бЁб⥬­ле ®зҐаҐ¤Ґ© }
  Free_All_Subsystems;
End.
Соседние файлы в папке lab_5_1