home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-386-Vol-2of3.iso / c / caty16.zip / CATYTERM.PAS < prev    next >
Pascal/Delphi Source File  |  1991-07-20  |  8KB  |  163 lines

  1. UNIT CATYTERM; (* Interrupt driven Serial Terminal - D. J. Wilke 1/12/91 *)
  2.  
  3. INTERFACE
  4.  
  5. USES CRT, DOS, CATYGLO, CATYUTIL, CATYDISP, CATYCOMM, CATYMVFO;
  6.  
  7. PROCEDURE DumbTerm;
  8.  
  9. IMPLEMENTATION
  10.  
  11. USES CATYINST;                               (* Prevents circ reference *)
  12.  
  13. (*═══════════════════════════════════════════════════════════════════════*)
  14. PROCEDURE DumbTerm; (* Split screen communications terminal for packet *)
  15.  
  16. VAR
  17.    Quit    : BOOLEAN;                        (* Flag for exiting *)
  18.    KeyChar : CHAR;                           (* Char from the keyboard *)
  19.    TNCChar : CHAR;                           (* Char from the TNC port *)
  20.    NoShow  : SET OF CHAR;                    (* Don't show characters set *)
  21.    RX,RY,
  22.    TX,TY   : BYTE;
  23.  
  24. BEGIN
  25.    RX := 1; RY := 1; TX := 1; TY := 1;       (* Initialize cursor vars *)
  26.    NoShow := [#0,#127];                      (* Don't display NUL, RUBOUT *)
  27.    Quit := FALSE;                            (* Exit when Quit goes TRUE *)
  28.    CLRSCR;
  29.    WINDOW(1,1,80,5);
  30.    PrMessage(' -    Terminal Node Controller Screen    - ',4);
  31.    PromptLine('T');                          (* Put up Terminal prompt *)
  32.    PrLines('H',2,79,18,0,SBA,DBG,196);
  33.    ScreenWrite(' '+CHR(24)+' Receive '+CHR(4)+
  34.      ' Transmit '+CHR(25)+' ',30,18,PFG);
  35.    WINDOW(3,6,78,17); CLRSCR;                (* Clear RCV window *)
  36.    WINDOW(3,19,78,22); CLRSCR;               (* Clear XMIT window *)
  37.    TurnCatOn;
  38.    CatSend(Check,86);                        (* Get new parameters *)
  39.    QuickStat;
  40.    TurnCatOff;                                (* Update panel *)
  41.    REPEAT                                    (* Loop `til Quit *)
  42.       WINDOW(3,6,78,17);
  43.       GOTOXY(RX,RY);
  44.       TEXTCOLOR(TRFG); TEXTBACKGROUND(DBG);  (* Terminal RCV colors *)
  45.       IF TInStat THEN BEGIN                  (* If char comes from TNC *)
  46.          TNCChar := TInChar;                 (* Go get character *)
  47.          TNCChar := Char(Byte(TNCChar) AND $7F); (* Mask off high bit *)
  48.          IF NOT (TNCChar IN NoShow) THEN     (* If we can show it, *)
  49.             WRITE(TNCChar);                  (* ...then show it *)
  50.       END;
  51.       RX := WhereX; RY := WhereY;            (* Save cursor pos *)
  52.       IF KeyPressed THEN BEGIN               (* If char from the kbd *)
  53.          WINDOW(3,19,78,22);
  54.          TEXTCOLOR(TTFG); TEXTBACKGROUND(DBG); (* Terminal xmit colors *)
  55.          KeyChar := ReadKey;                 (* First, read the keystroke *)
  56.          IF KeyChar = CHR(0) THEN BEGIN      (* Extended scan code *)
  57.             KeyChar := ReadKey;              (* Second half of ext code *)
  58.             GOTOXY(1,TY);
  59.             CASE ORD(KeyChar) OF
  60.                59 : BEGIN
  61.                        WRITELN('Help...');
  62.                        SendTString('H');        (* F1  = Display help screen *)
  63.                        TY := WhereY;            (* Save cursor pos *)
  64.                     END;
  65.                60 : BEGIN
  66.                        WRITELN('Display TNC parameters...');
  67.                        SendTString('DISP Z');   (* F2  = Display parameters *)
  68.                        TY := WhereY;            (* Save cursor pos *)
  69.                     END;
  70.                61 : BEGIN
  71.                        WRITELN('Monitor mode = ALL');
  72.                        SendTString('M 6');      (* F3  = Monitor mode 6 *)
  73.                        TY := WhereY;            (* Save cursor pos *)
  74.                     END;
  75.                62 : BEGIN
  76.                        WRITELN('Start BAUDOT mode');
  77.                        WRITELN('RTTY Baud rate = 45');
  78.                        WRITELN('Wide Shift = OFF');
  79.                        SendTString('BA');       (* F4  = Baudot *)
  80.                        SendTString('RB 45');
  81.                        SendTString('WI OFF');
  82.                        TY := WhereY;            (* Save cursor pos *)
  83.                     END;
  84.                63 : BEGIN
  85.                        WRITELN('Stations Heard:');
  86.                        SendTString('MH');       (* F5  = MHeard *)
  87.                        TY := WhereY;            (* Save cursor pos *)
  88.                     END;
  89.                64 : BEGIN
  90.                        WRITELN('Start PACKET mode');
  91.                        WRITELN('Set VHF OFF');
  92.                        WRITELN('Set baud to 300');
  93.                        SendTString('PA');       (* F6  = HF Packet *)
  94.                        SendTString('V OFF');
  95.                        SendTString('HB 300');   (* 300 baud *)
  96.                        TY := WhereY;            (* Save cursor pos *)
  97.                     END;
  98.                65 : BEGIN
  99.                        WRITELN('Start PACKET mode');
  100.                        WRITELN('Set VHF ON');
  101.                        WRITELN('Set baud to 1200');
  102.                        SendTString('PA');       (* F7  = VHF Packet *)
  103.                        SendTString('V ON');
  104.                        SendTString('HB 1200');  (* 1200 baud *)
  105.                        TY := WhereY;            (* Save cursor pos *)
  106.                     END;
  107.                66 : BEGIN
  108.                        WRITELN('Disconnect.');
  109.                        SendTString(CHR(3)+'D'); (* F8  = Disconnect *)
  110.                        TY := WhereY;            (* Save cursor pos *)
  111.                     END;
  112.                67 : BEGIN
  113.                        WRITELN('Start AMTOR mode...');
  114.                        SendTString('AL');       (* F9  = AMTOR Listen mode *)
  115.                        TY := WhereY;            (* Save cursor pos *)
  116.                     END;
  117.                68 : BEGIN
  118.                        WRITELN('Channel STATUS:');
  119.                        SendTString('CS');       (* F10 = Channel Status *)
  120.                        TY := WhereY;            (* Save cursor pos *)
  121.                     END;
  122.                71 : BEGIN                       (* <Home> = Clears screen *)
  123.                        WINDOW(3,6,78,17);
  124.                        CLRSCR;
  125.                     END;
  126.                73 : BEGIN
  127.                        WRITELN('CONVERSE mode...');
  128.                        SendTString('CONV');  (* <Page Up> = Converse mode *)
  129.                     END;
  130.                79 : Quit := True;            (* <End> = Exit to Main Menu *)
  131.                81 : BEGIN
  132.                        WRITELN('COMMAND mode...');
  133.                        SendTString(CHR(3));  (* <Page Down> = CMD mode *)
  134.                     END;
  135.             END; (* CASE *)
  136.          END (* IF KeyChar *)
  137.          ELSE BEGIN                          (* Not extended, show char *)
  138.             GOTOXY(TX,TY);
  139.             OutChar(KeyChar,TComBase);
  140.             IF NOT (KeyChar IN NoShow) THEN
  141.                 WRITE(KeyChar);              (* Then show it *)
  142.             IF KeyChar = CHR(13) THEN
  143.                 WRITE(CHR(13),CHR(10));      (* Bump the line *)
  144.          END; (* ELSE *)
  145.          TX := WhereX; TY := WhereY;         (* Save cursor pos *)
  146.       END; (* IF KeyPressed *)
  147.    UNTIL Quit;
  148.    FOR Index := 1 TO 80 DO BEGIN             (* Clean up behind us *)
  149.       ScreenWrite(' ',Index,23,0);
  150.       ScreenWrite(CHR(205),Index,24,SBA);    (* Put back line *)
  151.    END;
  152.    WINDOW(2,6,79,23);
  153.    ScreenWrite(CHR(186),1,23,SBA);           (* Put back corners *)
  154.    ScreenWrite(CHR(186),80,23,SBA);
  155.    ScreenWrite(CHR(200),1,24,SBA);
  156.    ScreenWrite(CHR(188),80,24,SBA);
  157.    TEXTCOLOR(DFG);
  158.    TEXTBACKGROUND(DBG);                      (* Default screen colors *)
  159.    MainMenu;
  160. END; (* DumbTerm *)
  161.  
  162. END. (* UNIT CATYTERM *)
  163.