home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HAM Radio 1
/
HamRadio.cdr
/
cw
/
kamrtty
/
kam-rcv.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1988-04-06
|
3KB
|
147 lines
procedure capture_on;
begin
check_if_in_help;
prompt_color;
get_file_name(capture_file_name,
20,aux_line,'Capture',1,1,80,24,3);
if (capture_file_name = '')
then
begin
gotoxy(20,aux_line); aux_color; ClrEol;
end
else
begin
assign(capture_file,capture_file_name);
{$I-}
rewrite(capture_file);
if (IOresult <> 0)
then begin
gotoxy(20,aux_line); status_color;
write('Unable to open ',capture_file_name,^G^G^G);
delay(2000);
gotoxy(20,aux_line); aux_color; ClrEol;
close(capture_file);
end;
capture := TRUE;
sho_status;
capture_pointer := 0;
end;
end;
procedure write_capture_block;
var write_result : integer;
begin
{$I-}
blockwrite(capture_file,capture_buffer,16,write_result);
capture_pointer := 0;
if write_result = 0 then
begin
close(capture_file);
gotoxy(20,aux_line);status_color;
write('File Write Error !!!');
delay(2000);
gotoxy(20,aux_line); aux_color; ClrEol;
capture := FALSE;
end;
end;
procedure capture_off;
begin
capture_buffer[capture_pointer] := ^Z;
write_capture_block;
close(capture_file);
capture := FALSE;
gotoxy(20,aux_line); aux_color; ClrEol;
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 update_buffer(c : char);
begin
rcv_buffer[rcv_cnt] := c;
rcv_cnt := (rcv_cnt + 1) AND $7FF;
end;
procedure show_inp(st: char);
var n,p: integer;
begin
if st = #00 then exit;
window(1, inp_start_line, 80, inp_end_line );
receive_color;
if (xin > scrn_width) OR (st = #13) then
begin
n := 0;
if (st in ['!'..'z']) then
begin
p := rcv_cnt;
repeat
n := n + 1;
p := (p-1) AND $7FF;
until (rcv_buffer[p] = ' ');
p := p + 1;
n := n - 1;
if (xin > scrn_width) AND (yin = rcv_bottom)
then begin
gotoxy(scrn_width - n, yin-1);
ClrEol;
end
else begin
gotoxy(scrn_width - n, yin);
ClrEol;
end;
end;
xin := 1;
yin := yin + 1;
if (yin > rcv_bottom) then
begin
yin := rcv_bottom;
if (st = #13) then writeln;
end;
gotoxy(xin,yin);
while (n > 0) do
begin
write(rcv_buffer[p]);
p := (p+1) AND $7FF;
n := n - 1;
xin := xin + 1;
end;
if (capture = TRUE) then
begin
capture_char(#13);
capture_char(#10);
end;
update_buffer(#13);
update_buffer(#10);
end;
gotoxy(xin,yin);
if (NOT (st in [#10,#13])) then
begin
write(st);
if (capture = TRUE) then capture_char(st);
end;
if (st in [' '..'z']) then
begin
xin := xin + 1;
update_buffer(st);
end;
reset_cursor;
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;