(* * FSTHST21 - Sets up USR HST Modem for optimum speed * By Joseph Sheppard, The Ledge PCBoard (818) 352-3620 * * * Uses routines from Prokit: * (C) 1988 Samuel H. Smith, 22-Feb-88 (rev. 12-01-88) * *) (* ------------------------------------------------------------ *) uses dos,minicrt,tools,proroot,prodata; const initial_timeout = 3; timeout = 3; max_trys = 5; var linenum: integer; inbuf: string; lastln: string; try: integer; ans: string; dc: string; sp: string; (* ---------------------------------------------------------------- *) procedure xmit(s: string); var i: integer; begin for i := 1 to length(s) do INTR_transmit_data(s[i]); INTR_flush_com; end; (* ---------------------------------------------------------------- *) procedure recv; var c: char; begin repeat if INTR_receive_ready then c := INTR_receive_data else c := #255; case c of #255: exit; ' '..'~': inbuf := inbuf + c; ^J: if length(inbuf) > 1 then begin lastln := inbuf; inbuf := ''; end; end; write(c); until true=false; end; (* ---------------------------------------------------------------- *) procedure get_user_settings; begin clrscr; writeln('FASTHST V2.1 By Joseph Sheppard, The Ledge PCBoard '+ '818-352-3620'); writeln; writeln('Be sure that your dipswitches are set as indicated below: '); writeln; writeln('1 2 3 4 5 6 7 8 9 10'); writeln('-- -- -- -- -- -- -- -- -- --'); writeln('UP UP DN DN DN UP UP DN UP UP'); writeln; write('Press any key to continue or Q to Quit ? '); readln(ans); stoupper(ans); if ans[1]='Q' then halt; clrscr; writeln('If data compression is enabled, text downloads will be'); writeln('faster, but compressed files (ZIP, ARC, LZH, etc) will be'); writeln('slower. If you will be using your modem mainly for transfering'); writeln('compressed files, your performance will be better of you disable'); writeln('the data compression feature'); writeln; write('Disable Data Compression (MNP Level 5) Y/N ? '); readln(ans); stoupper(ans); if ans[1]='N' then dc:='&K1'; clrscr; writeln('FASTHST sets up your modem to send detailed messages to your '); writeln('terminal program regarding line status (CONNECT, RING, NO CARRIER '); writeln('NO DIAL TONE, BUSY, NO ANSWER, RINGING, VOICE). You may want to '); writeln('turn your modem speaker off all the time and monitor the status '); writeln('of your connection with these silent messages'); writeln; write('Do you want your modem speaker to always be off? '); readln(ans); stoupper(ans); if ans[1]='N' then sp:='M1'; end; (* ---------------------------------------------------------------- *) (* * main program * *) var c: char; port: string; time: real; begin if paramcount <> 1 then begin writeln('Usage: FASTHST PORT'); writeln('Example: FASTHST 1'); halt; end; dc:='&K0'; sp:='M0'; get_user_settings; clrscr; (* install interrupt handlers *) local := false; port := paramstr(1); INTR_init_com(ord(port[1])-ord('1')); c := '?'; inbuf := ''; lastln := ''; time := get_time-timeout+initial_timeout; try := 1; repeat recv; if {(lastln = '') and} (get_time > time+timeout) then begin lastln := ''; end; if (lastln = '') or (lastln = 'RING') or (lastln = 'NO CARRIER') or (lastln = 'NO DIAL TONE') then begin inc(try); if try > max_trys then begin writeln; writeln; writeln('modem is not responding! Process aborted'); writeln; INTR_uninit_com; halt; end; INTR_lower_dtr; delay(500); INTR_raise_dtr; delay(500); writeln; writeln('Resetting modem to factory settings...'); writeln; writeln('AT&F'); xmit('AT&F'^M); xmit('AT&W'^M); delay(500); writeln; writeln('Changing NRAM settings...'); writeln; writeln('ATS7=60E0'+sp+'X6'); writeln; xmit('ATS7=60E0'+sp+'X6'^M); delay(500); writeln('AT&H3&R2&S1&B1'+dc+'&W'); xmit('AT&H3&R2&S1&B1'+dc+'&W'^M); delay(500); writeln; lastln := ''; time := get_time; end; if keypressed then begin c := readkey; if c = #27 then begin writeln(''); INTR_uninit_com; halt(0); end; end; until lastln = 'OK'; writeln; writeln('modem setup successful!'); writeln; writeln('Change the initialization string for your terminal'+ ' program to ATH0'); INTR_uninit_com; halt; end.