home *** CD-ROM | disk | FTP | other *** search
- procedure capture_on;
- begin
- check_if_in_help;
- prompt_color;
- capture_file_name := 'CAPTURE.TMP';
- Set_PickWindow_To(10,5,25,22,SingleLine,'Files');
- SayGet(20,status_line,'Capture File (or ?) ',capture_file_name,_S,24,1);
- WatchKeys := ['?'];
- ReadGets;
- if LastKey = '?' then capture_file_name := PickFile('*.*');
- if (capture_file_name <> '')
- then
- begin
- assign(capture_file,capture_file_name);
- {$I-}
- rewrite(capture_file);
- if (IOresult <> 0)
- then begin
- gotoxy(20,status_line); status_color;
- write('Unable to open ',capture_file_name,^G^G^G);
- delay(1000);
- close(capture_file);
- end;
- capture := TRUE;
- sho_status;
- capture_pointer := 0;
- end;
- end;
-
- procedure write_capture_block;
- var i : integer;
- begin
- for i := 0 to 2047 do
- write(capture_file,capture_buffer[i]);
- capture_pointer := 0;
- end;
-
- procedure capture_off;
- begin
- capture_buffer[capture_pointer] := ^Z;
- write_capture_block;
- close(capture_file);
- capture := FALSE;
- sho_status;
- end;
-
- procedure capture_char(c : char);
- begin
- capture_buffer[capture_pointer] := c;
- capture_pointer := capture_pointer + 1;
- if capture_pointer > 2047 then
- write_capture_block;
- end;
-
- procedure init_rcv_buffers;
- var i : integer;
- begin
- for i := 0 to max_rcv_buffers do
- rcv_buffer[i]^[0] := chr(0);
- rcv_cnt := 1;
- end;
-
- procedure update_buffer(c : char);
- var i : integer;
- begin
- if c <> #13 then
- begin
- rcv_buffer[max_rcv_buffers]^[rcv_cnt] := c;
- rcv_buffer[max_rcv_buffers]^[0] := chr(rcv_cnt);
- inc(rcv_cnt);
- end;
- if (rcv_cnt = 81) OR (c = #13) then
- begin
- for i := 0 to max_rcv_buffers - 1 do
- rcv_buffer[i]^ := rcv_buffer[i+1]^;
- rcv_cnt := 1;
- rcv_buffer[max_rcv_buffers]^[0] := chr(0);
- end;
- end;
-
- procedure next_line;
- begin
- if yin = inp_end_line
- then begin
- window(1, inp_start_line, 80, inp_end_line );
- gotoxy(1,1); DelLine;
- full_window;
- xin := 1;
- gotoxy(xin,yin);
- end
- else begin
- yin := yin + 1;
- xin := 1;
- gotoxy(xin,yin);
- end;
- end;
-
- procedure show_inp(st: char);
- var i,n,p: integer;
- begin
- if st = #00 then exit;
- receive_color;
- if (xin > scrn_width) then
- case st of
- '!'..'z': begin
- n := 0;
- p := rcv_cnt;
- repeat
- n := n + 1;
- p := (p-1);
- until (rcv_buffer[max_rcv_buffers]^[p] = ' ') OR
- (p = 0);
- p := p + 1;
- n := n - 1;
- if n in [1..10]
- then
- begin
- tmpstr := '';
- gotoxy(xin - n, yin);
- ClrEol;
- next_line;
- while (n > 0) do
- begin
- rcv_buffer[max_rcv_buffers]^[0] := chr(rcv_cnt - n);
- tmpstr := tmpstr + rcv_buffer[max_rcv_buffers]^[p];
- write(rcv_buffer[max_rcv_buffers]^[p]);
- inc(p);
- dec(n);
- inc(xin);
- end;
- update_buffer(#13);
- for i := 1 to length(tmpstr) do
- update_buffer(tmpstr[i]);
- end
- else
- begin
- next_line;
- update_buffer(#13);
- end;
- end;
- ' ' : begin
- next_line;
- update_buffer(#13);
- end;
- end;
- gotoxy(xin,yin);
- case st of
- #13 : begin
- update_buffer(#13);
- next_line;
- if (capture = TRUE) then
- begin
- capture_char(#13);
- capture_char(#10);
- end;
- end;
- #10 : ;
- else begin
- write(st);
- xin := xin + 1;
- update_buffer(st);
- if (capture = TRUE) then capture_char(st);
- end;
- end;
- if (st = #32) AND (mode = CW)
- then begin
- rcv_stat;
- disp_rcv_wpm;
- end;
- end;
-
- procedure rcvg;
- begin
- if char_ready then show_inp(kam_in);
- end;
-
- procedure show_page;
- begin
- clrscr;
- if show_line < first then show_line := first;
- line_count := 1;
- repeat
- write(rcv_buffer[show_line]^);
- if (length(rcv_buffer[show_line]^) < 80) AND
- (line_count < (nlines))
- then writeln;
- inc(show_line);
- inc(line_count);
- until (line_count = nlines) OR (show_line > max_rcv_buffers);
- end;
-
- procedure review_rcv_buffer;
- var i : integer;
- OldVideo : array[1..2000] of word;
- RevKey : char;
- begin
- nlines := inp_end_line - inp_start_line + 1;
- first := -1;
- repeat
- inc(first);
- until (length(rcv_buffer[first]^) > 0) OR (first = max_rcv_buffers);
- if (first = max_rcv_buffers) AND (rcv_cnt = 1) then exit;
- FillPage(@OldVideo);
- gotoxy(1,status_line);
- status_color;
- ClrEol;
- write(' <HOME> beginning <END> end <PgUp> <PgDwn> <ESC>ape');
- window(1,inp_start_line,80,inp_end_line);
- receive_color;
- show_line := first;
- show_page;
- repeat
- repeat
- RevKey := readkey;
- until RevKey in [#0,#27];
- if RevKey = #0 then RevKey := readkey;
- case RevKey of
- #71 : begin { HOME }
- show_line := first;
- show_page;
- end;
- #79 : begin { END }
- show_line := max_rcv_buffers - nlines + 1;
- show_page;
- end;
- #73 : begin { PGUP }
- show_line := show_line - 2*(nlines) - 1;
- show_page;
- end;
- #81 : begin { PGDWN }
- if show_line > (max_rcv_buffers - nlines + 1) then
- show_line := max_rcv_buffers - nlines + 1;
- show_page;
- end;
- end;
- until RevKey = #27;
- DisPlayPage(@OldVideo);
- window(1,1,80,25);
- end;
-