{********** host.inc **********} { host modem routines} procedure get(var In_Char: char); {modem_in with echo to terminal} begin in_char := modem_in; write(in_char); end; {get} procedure get_line(var line: data2); {modem_in a line with echo to terminal} var In_char: char; begin repeat get(in_char); line:= line + in_char; until in_char= LF; end; {get_line} procedure send_chr(OutChar: char); {modem_out with echoe to terminal} begin modem_out(outChar); write(outChar); end; {send_chr} procedure send(line: data2); {modem_out line no cr/ with echoe to terminal} var local: byte; begin for local:= 1 to length(line) do modem_out(line[local]); write(line); end; {send} procedure send_line(Line: data2); begin modem_out_line(line); writeln(line); end; {send_line} procedure go_answer; label quit_answer; var local: char; begin if eraseOK then clrScr; modem_out_line('ATS0=3'); {enable auto answer 4 rings} writeln('HOST mode (awaiting phone call)'); writeln('(^T test / ^X to quit)'); repeat sinp(local); if local in [ ^X, ^T ] then goto quit_answer; until carrier; {want terminal mode if answer} QUIT_ANSWER: X:= local; modem_out_line('ATS0=0'); end; {go_answer} procedure remote_menu; label startloop, quitloop; var local: data2; begin startloop: send_line(' '); send_line('Remote Menue'); send_line('============'); send_line(' '); send_line('(C)hat with operator'); send_line('(E)nter a message'); send_line('(R)ead message(s)'); send_line('(G)oodbye'); write(CRLF+ 'Enter SELECTION: '); if carrier then get_line(local) else readln(local); {local := modem_in;} send_line(' '); if length(local)= 0 then local:= '?'; case upCase(local[1]) of 'C': begin send_line('CHAT mode / ^E for menu'); duplex:= false; terminal_mode; duplex:= true; end; { 'G': local:= '0'; } {goto quitloop} end; if local in ['G', 'g'] then else goto startloop; {loop back} quitloop: end; {remote_menue} procedure host; label rehost, access, endhost, quit; var Password,Sysop,Host_Answer: boolean; local: data2; temp1: data; local1: byte; local2: char; begin Password:= false; OK:= false; Sysop:= false; writeln('HOST mode'); writeln; {setup_Host;} host_mode:= true; write('Use password (Y/[N])? '); readln(local); if length(local)= 0 then local:= 'N'; if upCase(local)= 'N' then OK:= true; REHOST: password:= OK; local1:= 0; repeat go_answer; if X= ^X then goto endhost; if X= ^T then goto access; {test} until carrier; ACCESS: if not carrier then writeln('==> test mode'); {now connected} send_line(CRLF); send_line('>> Phil''s Remote Computer System <<'); send_line(CRLF); send_line('Welcome!'); if not Password then begin repeat send('Enter PASSWORD: '); if carrier then get_line(local) else Readln(local); temp1:= local; upper(temp1); if temp1= 'FOOBAR' then Password:= true; if temp1= 'BYE' then goto quit; if not Password then begin send_line(CRLF+'++ Password Fail ++'+CRLF); local1:= local1+ 1; end; if password then local1:= 3; until local1= 3; end; if Password then remote_menu else send_line('==> Access fails -- disconnecting --'); quit: send_line('Goodbye, thanks for calling . . .'); if carrier then go_onHook else delay(2000); goto rehost; endhost: end; {host}