program talk; #include "classes/ansi.inc" unit ekran : ANSI process(node:integer;rozm:rozmowca); unit rejestruj : procedure(r:rozmowca); begin rozm := r; end rejestruj; unit odbior_zdalny : procedure(s:char); begin call GotoXy(hy, hisline); call Bold; writeln(s); hy := hy+1; if s=chr(13) then hisline := hisline + 1;hy:=1; fi; if hy = 80 then hy := 1; hisline:=hisline+1 fi; call Normal; if hisline = 12 then hisline := 1; (* call Rect(1,1,11,80); *) fi; end odbior_zdalny; unit odbior_lokalny : procedure(s:char); begin call GotoXY(my, myline); write(s); my := my+1; if s=chr(13) then myline := myline + 1;my:=1; fi; if my = 80 then my := 1; myline := myline+1 fi; if myline = 25 then myline := 13; (* call Rect(13,1,24,80); *) fi; end odbior_lokalny; unit kasuj_lokalny : procedure; begin my := my - 1; if my<0 then my := 0 fi; call GotoXY(my, myline); write(" "); end kasuj_lokalny; unit kasuj_zdalny : procedure; begin hy := hy - 1; if hy<0 then hy := 0 fi; call GotoXY(hy, hisline); write(" "); end kasuj_zdalny; unit koniec : procedure; begin knc := true; end koniec; var knc:boolean, myline,hisline,my,hy:integer, s:char, name:string; begin knc := false; myline := 13; hisline := 1; my := 1; hy := 1; call Clear; call GotoXY(1, 12); call Bold; write("-------------------------ESC - koniec ----------------------------"); call Normal; return; accept rejestruj; while not knc do accept odbior_lokalny, odbior_zdalny, kasuj_lokalny, kasuj_zdalny, koniec; od ; call rozm.koniec; end ekran; (*---------------------------------*) unit rozmowca : IIUWgraph process(node: integer;el,ez:ekran); var knc:boolean, s:char, i:integer; unit koniec : procedure; begin knc := true; end koniec; begin knc := false; return; enable koniec; while not knc do i := inkey; if i<>0 then s := chr(i); if i=8 then call el.kasuj_lokalny; call ez.kasuj_zdalny; else call el.odbior_lokalny(s); call ez.odbior_zdalny(s); fi; if i = 27 then call ez.koniec; call el.koniec; fi; fi; od; end rozmowca; var p1,p2:rozmowca, e1,e2:ekran; begin e1 := new ekran(0,none); resume(e1); e2 := new ekran(1,none); resume(e2); p1 := new rozmowca(0,e1,e2); p2 := new rozmowca(1,e2,e1); call e1.rejestruj(p1); call e2.rejestruj(p2); resume(p1); resume(p2); end