COMSETUP.MOD 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646
  1. (* Release 3.10 *)
  2. (*-------------------------------------------------------------------------*
  3. * *
  4. * COMSETUP.MOD - COMMS Toolkit setup *
  5. * *
  6. * COPYRIGHT (C) 1988..1992 Clarion Software Corporation. *
  7. * All Rights Reserved *
  8. * *
  9. *--------------------------------------------------------------------------*)
  10. IMPLEMENTATION MODULE ComSetup;
  11. IMPORT CommUtil,FIO,IO,Lib,MenuLib,MPRINTF,RS232,SPRINTF,Str,Window;
  12. FROM CommUtil IMPORT FuncKeys;
  13. FROM RS232 IMPORT ParityCodes,FlowControls;
  14. TYPE
  15. String30 = ARRAY[0..30] OF CHAR;
  16. String10 = ARRAY[0..10] OF CHAR;
  17. String3 = ARRAY[0..3] OF CHAR;
  18. AsciiStd = ARRAY[0..32] OF String3;
  19. CONST
  20. Template = Window.WinDef(0,0,0,0,Window.Yellow,Window.Black,TRUE,FALSE,FALSE,TRUE,Window.SingleFrame,Window.LightGray,Window.Black);
  21. Code = AsciiStd('NUL','SOH','STX','ETX','EOT','ENQ','ACK','BEL','BS',
  22. 'HT','LF','VT','FF','CR','SO','SI','DLE','DC1','DC2',
  23. 'DC3','DC4','NAK','SYN','ETB','CAN','EM','SUB','ESC',
  24. 'FS','GS','RS','US','SP');
  25. VAR
  26. OldEmulation : Term.Emulations;
  27. BoolStr : ARRAY BOOLEAN OF String3;
  28. SMenu : MenuLib.MenuRec;
  29. (*........................................*)
  30. PROCEDURE AsciiCode(c:CHAR):String3;
  31. VAR
  32. s : String3;
  33. BEGIN
  34. IF c<=' ' THEN
  35. s:=Code[ORD(c)];
  36. ELSE
  37. s:=' ';
  38. s[0]:=c;
  39. END;
  40. RETURN s;
  41. END AsciiCode;
  42. (*........................................*)
  43. PROCEDURE GetDefaultSetup;
  44. VAR
  45. i : CARDINAL;
  46. BEGIN
  47. WITH Setup DO
  48. WITH Serial DO
  49. Port:=1;
  50. Baud:=1200;
  51. DataBits:=8;
  52. StopBits:=1;
  53. Parity:=None;
  54. FlowControl:=RtsCts;
  55. END;
  56. WITH General DO
  57. MaskBit7:=TRUE;
  58. CRInTranslation:=CR;
  59. CROutTranslation:=CR;
  60. ScriptDir:='';
  61. DownloadDir:='';
  62. END;
  63. WITH Kermit DO
  64. Sync:=1C;
  65. MaxPacketSize:=90;
  66. PadChar:=0C;
  67. NumPadChars:=0;
  68. CtlQuote:='#';
  69. ReptPrefix:='~';
  70. EightBitQuote:='&';
  71. ImageMode:=TRUE;
  72. IBMMode:=FALSE;
  73. EolChar:=CHR(13);
  74. END;
  75. WITH ASCII DO
  76. CharDelayMS:=20;
  77. LineDelayMS:=40;
  78. END;
  79. Emulation:=Term.EmVT100;
  80. FOR i:=0 TO 9 DO
  81. Macros[i]:='';
  82. END;
  83. END;
  84. END GetDefaultSetup;
  85. (*........................................*)
  86. PROCEDURE InitSetup;
  87. VAR
  88. f : FIO.File;
  89. BEGIN
  90. FIO.IOcheck := FALSE;
  91. f := FIO.Open('TERM.CFG');
  92. IF FIO.IOresult()=0 THEN
  93. IF NOT (FIO.RdBin(f,Setup,SIZE(SetupRec))=SIZE(SetupRec)) THEN
  94. GetDefaultSetup;
  95. END;
  96. FIO.Close(f);
  97. ELSE
  98. GetDefaultSetup;
  99. END;
  100. END InitSetup;
  101. (*................................................*)
  102. PROCEDURE Value(VAR s:ARRAY OF CHAR; VAR Result:CARDINAL);
  103. VAR
  104. c : CHAR;
  105. x,i : CARDINAL;
  106. BEGIN
  107. IF s[0]<>0C THEN
  108. x:=0; i:=0;
  109. FOR i:=0 TO HIGH(s) DO
  110. c := CAP(s[i]);
  111. IF c=0C THEN
  112. Result:=x;
  113. RETURN;
  114. ELSIF (c>='0') AND (c<='9') THEN
  115. x := x*10 + ORD(c)-48
  116. ELSE
  117. RETURN;
  118. END;
  119. END;
  120. Result := x;
  121. END;
  122. END Value;
  123. (*........................................*)
  124. PROCEDURE ReadNum(x,y:CARDINAL; Prompt:ARRAY OF CHAR; Min,Max:CARDINAL;VAR Result:CARDINAL);
  125. VAR
  126. Ok : BOOLEAN;
  127. Num,Lnth : CARDINAL;
  128. NumStr : ARRAY[0..3] OF CHAR;
  129. Def : Window.WinDef;
  130. Win : Window.WinType;
  131. BEGIN
  132. Def := Template;
  133. WITH Def DO
  134. X1:=x;
  135. Y1:=y;
  136. X2:=X1+39;
  137. Y2:=Y1+2;
  138. Foreground := CommUtil.Colors.PromptFore;
  139. Background := CommUtil.Colors.PromptBack;
  140. FrameFore := CommUtil.Colors.PromptFrFore;
  141. FrameBack := CommUtil.Colors.PromptFrBack;
  142. END;
  143. Win := Window.Open(Def);
  144. Window.TextColor(CommUtil.Colors.PromptFore);
  145. Window.GotoXY(1,1);
  146. IO.WrStr(Prompt);
  147. Window.TextColor(CommUtil.Colors.PromptHigh);
  148. Str.CardToStr(LONGCARD(Result),NumStr,10,Ok);
  149. CommUtil.ReadLine(NumStr,4);
  150. Num := Result;
  151. Value(NumStr,Num);
  152. IF (Num>=Min) AND (Num<=Max) THEN
  153. Result:=Num;
  154. END;
  155. Window.Close(Win);
  156. END ReadNum;
  157. (*........................................*)
  158. PROCEDURE ReadChar(x,y:CARDINAL; Prompt:ARRAY OF CHAR; VAR Ch:CHAR);
  159. VAR
  160. c : CHAR;
  161. Lnth : CARDINAL;
  162. Def : Window.WinDef;
  163. Win : Window.WinType;
  164. BEGIN
  165. Lnth := Str.Length(Prompt)+20;
  166. Def := Template;
  167. WITH Def DO
  168. X1:=x;
  169. Y1:=y;
  170. X2:=X1+39;
  171. Y2:=Y1+2;
  172. Foreground := CommUtil.Colors.PromptFore;
  173. Background := CommUtil.Colors.PromptBack;
  174. FrameFore := CommUtil.Colors.PromptFrFore;
  175. FrameBack := CommUtil.Colors.PromptFrBack;
  176. END;
  177. Win := Window.Open(Def);
  178. Window.TextColor(CommUtil.Colors.PromptFore);
  179. Window.GotoXY(1,1);
  180. IO.WrStr(Prompt);
  181. Window.TextColor(CommUtil.Colors.PromptHigh);
  182. IO.WrStr(AsciiCode(Ch));
  183. Window.GotoXY(Str.Length(Prompt)+1,1);
  184. CommUtil.Read(c);
  185. IF c<>CHR(27) THEN
  186. Ch:=c;
  187. END;
  188. Window.Close(Win);
  189. END ReadChar;
  190. (*........................................*)
  191. PROCEDURE ModemSetup(MenuX,MenuY:CARDINAL);
  192. VAR
  193. i,Count : CARDINAL;
  194. Serial : MenuLib.MenuRec;
  195. (*. . . . . . . . . . . . . . . . . . . . .*)
  196. PROCEDURE ParStr(Parity:ParityCodes):String10;
  197. BEGIN
  198. CASE Parity OF
  199. Odd : RETURN ' ODD'; |
  200. Even : RETURN ' EVEN'; |
  201. Mark : RETURN ' MARK'; |
  202. Space : RETURN 'SPACE'; |
  203. None : RETURN ' NONE'; |
  204. END;
  205. END ParStr;
  206. (*. . . . . . . . . . . . . . . . . . . . .*)
  207. PROCEDURE FlowStr(Ctrl:FlowControls):String10;
  208. BEGIN
  209. CASE Ctrl OF
  210. NoFlowControl: RETURN ' NONE'; |
  211. RtsCts : RETURN ' RTS/CTS'; |
  212. XonXoff : RETURN 'XON/XOFF'; |
  213. END;
  214. END FlowStr;
  215. (*. . . . . . . . . . . . . . . . . . . . .*)
  216. PROCEDURE MsChangeMenu;
  217. BEGIN
  218. WITH Setup.Serial DO
  219. WITH Serial DO
  220. SPRINTF.SPrintF1(' Comm Port: %5u ',Port,Option[0].Name);
  221. SPRINTF.SPrintF1(' Baud Rate: %5u ',Baud,Option[1].Name);
  222. SPRINTF.SPrintF1(' Data Bits: %5u ',DataBits,Option[2].Name);
  223. SPRINTF.SPrintF1(' Parity: %s ',ParStr(Parity),Option[3].Name);
  224. SPRINTF.SPrintF1(' Stop bits: %5u ',StopBits,Option[4].Name);
  225. SPRINTF.SPrintF1(' Flow Ctrl: %s ',FlowStr(FlowControl),Option[5].Name);
  226. END; (*WITH*)
  227. END; (*WITH*)
  228. END MsChangeMenu;
  229. (*. . . . . . . . . . . . . . . . . . . . .*)
  230. BEGIN (* ModemSetup *)
  231. MenuLib.InitMenu(Serial,'',MenuX,MenuY,22);
  232. Serial.EscapeOK := TRUE;
  233. Serial.ExitOnChar := TRUE;
  234. FOR i:=0 TO 5 DO
  235. MenuLib.AddOption(Serial,' Comm Port: ');
  236. END;
  237. MsChangeMenu;
  238. MenuLib.DispMenu(Serial);
  239. LOOP
  240. WITH Setup.Serial DO
  241. CASE MenuLib.MenuDrive(Serial) OF
  242. -1 : EXIT; |
  243. 0 : Port := (Port MOD 4)+1; |
  244. 1 : Baud := Baud*2;
  245. IF Baud>19200 THEN
  246. Baud := 75;
  247. END; |
  248. 2 : DataBits := 7+ORD(DataBits=7); |
  249. 3 : CASE Parity OF
  250. None : Parity:=Even; |
  251. Even : Parity:=Odd; |
  252. Odd : Parity:=Mark; |
  253. Mark : Parity:=Space; |
  254. Space: Parity:=None; |
  255. END; |
  256. 4 : StopBits := 1+ORD(StopBits=1); |
  257. 5 : IF FlowControl=NoFlowControl THEN
  258. FlowControl:=RtsCts
  259. ELSIF FlowControl=RtsCts THEN
  260. FlowControl:=XonXoff
  261. ELSE
  262. FlowControl:=NoFlowControl
  263. END; |
  264. END;
  265. END;
  266. MsChangeMenu;
  267. END;
  268. MenuLib.KillMenu(Serial);
  269. RS232.UnInstall;
  270. WITH Setup.Serial DO
  271. RS232.SelectPort(Port);
  272. RS232.InitPort(Baud,DataBits,StopBits,Parity);
  273. RS232.Install;
  274. RS232.SetFlowControl(FlowControl);
  275. END;
  276. END ModemSetup;
  277. (*........................................*)
  278. PROCEDURE GeneralSetup(MenuX,MenuY:CARDINAL);
  279. VAR
  280. i : CARDINAL;
  281. GMenu : MenuLib.MenuRec;
  282. Selection : INTEGER;
  283. CRText : ARRAY CrTypes OF String10;
  284. (*. . . . . . . . . . . . . . . . . . . . .*)
  285. PROCEDURE GsChangeMenu;
  286. BEGIN
  287. WITH Setup.General DO
  288. WITH GMenu DO
  289. SPRINTF.SPrintF1(' Strip Parity Bit: %3s ',BoolStr[MaskBit7],Option[0].Name);
  290. SPRINTF.SPrintF1(' CR-in Translation: %4s ',CRText[CRInTranslation],Option[1].Name);
  291. SPRINTF.SPrintF1(' CR-out Translation: %4s ',CRText[CROutTranslation],Option[2].Name);
  292. END;
  293. END;
  294. END GsChangeMenu;
  295. (*. . . . . . . . . . . . . . . . . . . . .*)
  296. BEGIN (* GeneralSetup *)
  297. CRText[CR]:='CR';
  298. CRText[CRLF]:='CRLF';
  299. MenuLib.InitMenu(GMenu,'',MenuX,MenuY,26);
  300. GMenu.EscapeOK := TRUE;
  301. FOR i:=0 TO 2 DO
  302. MenuLib.AddOption(GMenu,' X ');
  303. END;
  304. MenuLib.AddOption(GMenu,' Directory for Scripts ');
  305. MenuLib.AddOption(GMenu,' Directory for Downloads ');
  306. GsChangeMenu;
  307. MenuLib.DispMenu(GMenu);
  308. LOOP
  309. Selection := MenuLib.MenuDrive(GMenu);
  310. WITH Setup.General DO
  311. CASE Selection OF
  312. -1 : EXIT; |
  313. 0 : MaskBit7 := (NOT MaskBit7); |
  314. 1 : IF CRInTranslation=CR THEN
  315. CRInTranslation:=CRLF
  316. ELSE
  317. CRInTranslation:=CR
  318. END; |
  319. 2 : IF CROutTranslation=CR THEN
  320. CROutTranslation:=CRLF
  321. ELSE
  322. CROutTranslation:=CR
  323. END; |
  324. 3 : CommUtil.ReadString(MenuX+1,MenuY+5,'','',ScriptDir);|
  325. 4 : CommUtil.ReadString(MenuX+1,MenuY+6,'','',DownloadDir);|
  326. END;
  327. END;
  328. IF (Selection>=0) AND (Selection<=2) THEN
  329. GsChangeMenu;
  330. END;
  331. END;
  332. MenuLib.KillMenu(GMenu);
  333. END GeneralSetup;
  334. (*........................................*)
  335. PROCEDURE KermitSetup(MenuX,MenuY:CARDINAL);
  336. VAR
  337. i : CARDINAL;
  338. KMenu : MenuLib.MenuRec;
  339. ModeStr : ARRAY BOOLEAN OF String10;
  340. (*. . . . . . . . . . . . . . . . . . . .*)
  341. PROCEDURE KsChangeMenu;
  342. BEGIN
  343. WITH Setup.Kermit DO
  344. WITH KMenu DO
  345. SPRINTF.SPrintF1(' Sync Char: %3s ',AsciiCode(Sync),Option[0].Name);
  346. SPRINTF.SPrintF1(' Packet Size: %4u ',MaxPacketSize,Option[1].Name);
  347. SPRINTF.SPrintF1(' Pad Char: %3s ',AsciiCode(PadChar),Option[2].Name);
  348. SPRINTF.SPrintF1(' No. Pad Chars: %4u ',NumPadChars,Option[3].Name);
  349. SPRINTF.SPrintF1(' Control Quote: %c ',CtlQuote,Option[4].Name);
  350. SPRINTF.SPrintF1(' Repeat Prefix: %c ',ReptPrefix,Option[5].Name);
  351. SPRINTF.SPrintF1(' 8th bit Quote: %c ',EightBitQuote,Option[6].Name);
  352. SPRINTF.SPrintF1(' Transfer Mode: %4s ',ModeStr[ImageMode],Option[7].Name);
  353. SPRINTF.SPrintF1(' IBM Mode: %3s ',BoolStr[IBMMode],Option[8].Name);
  354. SPRINTF.SPrintF1(' EOL Char: %3s ',AsciiCode(EolChar),Option[9].Name);
  355. END;
  356. END;
  357. END KsChangeMenu;
  358. (*. . . . . . . . . . . . . . . . . . . .*)
  359. BEGIN (* KermitSetup *)
  360. ModeStr[TRUE] := '8Bit';
  361. ModeStr[FALSE] := '7Bit';
  362. MenuLib.InitMenu(KMenu,'',MenuX,MenuY,21);
  363. KMenu.EscapeOK := TRUE;
  364. FOR i:=0 TO 9 DO
  365. MenuLib.AddOption(KMenu,' x ');
  366. END;
  367. KsChangeMenu;
  368. MenuLib.DispMenu(KMenu);
  369. LOOP
  370. WITH Setup.Kermit DO
  371. CASE MenuLib.MenuDrive(KMenu) OF
  372. -1 : EXIT; |
  373. 0 : ReadChar(MenuX+1,MenuY+2,' Sync Char? ',Sync); |
  374. 1 : ReadNum(MenuX+1,MenuY+3,' Packet Size? ',30,90,MaxPacketSize);|
  375. 2 : ReadChar(MenuX+1,MenuY+4,' Pad Char? ',PadChar);|
  376. 3 : ReadNum(MenuX+1,MenuY+5,' No. Pad Chars? ',0,256,NumPadChars);|
  377. 4 : ReadChar(MenuX+1,MenuY+6,' Ctl Quote Char? ',CtlQuote);|
  378. 5 : ReadChar(MenuX+1,MenuY+7,' Repeat Prefix? ',ReptPrefix);|
  379. 6 : ReadChar(MenuX+1,MenuY+8,' 8th Bit Quote? ',EightBitQuote);|
  380. 7 : ImageMode := NOT ImageMode; |
  381. 8 : IBMMode := NOT IBMMode; |
  382. 9 : ReadChar(MenuX+1,MenuY+11,' EOL Char? ',EolChar);|
  383. END;
  384. END;
  385. KsChangeMenu;
  386. END;
  387. MenuLib.KillMenu(KMenu);
  388. END KermitSetup;
  389. (*........................................*)
  390. PROCEDURE AsciiSetup(MenuX,MenuY:CARDINAL);
  391. VAR
  392. i : CARDINAL;
  393. AMenu : MenuLib.MenuRec;
  394. (*. . . . . . . . . . . . . . . . . . . .*)
  395. PROCEDURE AsChangeMenu;
  396. BEGIN
  397. WITH Setup.ASCII DO
  398. WITH AMenu.Option[0] DO
  399. SPRINTF.SPrintF1(' Character Delay (ms): %4u ',CharDelayMS,Name);
  400. END;
  401. WITH AMenu.Option[1] DO
  402. SPRINTF.SPrintF1(' Line Delay (ms): %4u ',LineDelayMS,Name);
  403. END;
  404. END;
  405. END AsChangeMenu;
  406. (*. . . . . . . . . . . . . . . . . . . .*)
  407. BEGIN (* AsciiSetup *)
  408. MenuLib.InitMenu(AMenu,'',MenuX,MenuY,28);
  409. AMenu.EscapeOK := TRUE;
  410. AMenu.ExitOnChar := TRUE;
  411. FOR i:=0 TO 1 DO
  412. MenuLib.AddOption(AMenu,' x ');
  413. END;
  414. AsChangeMenu;
  415. MenuLib.DispMenu(AMenu);
  416. LOOP
  417. WITH Setup.ASCII DO
  418. CASE MenuLib.MenuDrive(AMenu) OF
  419. -1 : EXIT; |
  420. 0 : ReadNum(MenuX+1,MenuY+2,' Char Delay? ',0,9999,CharDelayMS); |
  421. 1 : ReadNum(MenuX+1,MenuY+3,' Line Delay? ',0,9999,LineDelayMS); |
  422. END;
  423. END;
  424. AsChangeMenu;
  425. END;
  426. MenuLib.KillMenu(AMenu);
  427. END AsciiSetup;
  428. (*........................................*)
  429. PROCEDURE ChangeMacro(MenuX,MenuY:CARDINAL);
  430. VAR
  431. i : CARDINAL;
  432. Def : Window.WinDef;
  433. Win : Window.WinType;
  434. (*. . . . . . . . . . . . . . . . . . . . .*)
  435. PROCEDURE Highlight(MacroNo:CARDINAL; On:BOOLEAN);
  436. BEGIN
  437. Window.GotoXY(1,MacroNo+1);
  438. Window.TextBackground(CommUtil.Colors.MacroBack);
  439. Window.TextColor(CommUtil.Colors.MacroFore);
  440. MPRINTF.PrintF1(' %u ',MacroNo);
  441. IF On THEN
  442. Window.TextBackground(CommUtil.Colors.MacroHighBack);
  443. Window.TextColor(CommUtil.Colors.MacroHighFore);
  444. ELSE
  445. Window.TextBackground(CommUtil.Colors.MacroLowBack);
  446. Window.TextColor(CommUtil.Colors.MacroLowFore);
  447. END;
  448. MPRINTF.PrintF1('%-70s\r',Setup.Macros[MacroNo]);
  449. Window.GotoXY(4,MacroNo+1);
  450. END Highlight;
  451. (*. . . . . . . . . . . . . . . . . . . . .*)
  452. PROCEDURE EditMacros;
  453. VAR
  454. Ch : CHAR;
  455. MacroNo,
  456. NextMacroNo : CARDINAL;
  457. ch : ARRAY[0..1] OF CHAR;
  458. BEGIN
  459. ch:=' ';
  460. MacroNo:=0;
  461. LOOP
  462. Highlight(MacroNo,TRUE);
  463. NextMacroNo := MacroNo;
  464. CommUtil.Read(Ch);
  465. CASE CommUtil.FuncKeyTyped OF
  466. Cup : IF MacroNo>0 THEN
  467. NextMacroNo:=MacroNo-1;
  468. END; |
  469. Cdown : IF MacroNo<9 THEN
  470. NextMacroNo:=MacroNo+1;
  471. END; |
  472. Escape : EXIT; |
  473. EndKey,Del,
  474. Cright : IF Setup.Macros[MacroNo,0]<>0C THEN
  475. CommUtil.PushBack(Ch);
  476. CommUtil.SpacesOK:=TRUE;
  477. CommUtil.ReadLine(Setup.Macros[MacroNo],70);
  478. IF MacroNo<9 THEN
  479. NextMacroNo:=MacroNo+1;
  480. END;
  481. END; |
  482. NotRecognised:CommUtil.PushBack(Ch);
  483. CommUtil.SpacesOK:=TRUE;
  484. CommUtil.ReadLine(Setup.Macros[MacroNo],70);
  485. IF MacroNo<9 THEN
  486. NextMacroNo:=MacroNo+1;
  487. END; |
  488. END;
  489. Highlight(MacroNo,FALSE);
  490. MacroNo := NextMacroNo;
  491. END;
  492. END EditMacros;
  493. (*. . . . . . . . . . . . . . . . . . . . .*)
  494. BEGIN (* ChangeMacro *)
  495. Def := Template;
  496. WITH Def DO
  497. X1:=3;
  498. Y1:=6;
  499. X2:=74;
  500. Y2:=17;
  501. Foreground := CommUtil.Colors.MacroFore;
  502. Background := CommUtil.Colors.MacroBack;
  503. FrameFore := CommUtil.Colors.MacroFrFore;
  504. FrameBack := CommUtil.Colors.MacroFrBack;
  505. END;
  506. Win := Window.Open(Def);
  507. Window.SetTitle(Win,'Macros',Window.LeftUpperTitle);
  508. FOR i:=0 TO 9 DO
  509. Highlight(i,FALSE);
  510. END;
  511. EditMacros;
  512. Window.Close(Win);
  513. END ChangeMacro;
  514. (*........................................*)
  515. PROCEDURE ChangeEmulation(MenuX,MenuY:CARDINAL);
  516. BEGIN
  517. WITH Setup DO
  518. CASE Emulation OF
  519. Term.EmVT100 : Emulation := Term.EmVT52;
  520. SMenu.Option[5].Name := ' E - Emulating VT52 '; |
  521. Term.EmVT52 : Emulation := Term.EmANSI;
  522. SMenu.Option[5].Name := ' E - Emulating ANSI '; |
  523. Term.EmANSI : Emulation := Term.EmVT100;
  524. SMenu.Option[5].Name := ' E - Emulating VT100 '; |
  525. END;
  526. END;
  527. END ChangeEmulation;
  528. (*........................................*)
  529. PROCEDURE SaveSetup;
  530. VAR
  531. f : FIO.File;
  532. BEGIN
  533. f := FIO.Create('TERM.CFG');
  534. FIO.WrBin(f,Setup,SIZE(SetupRec));
  535. FIO.Close(f);
  536. END SaveSetup;
  537. (*........................................*)
  538. PROCEDURE ChangeSetup;
  539. VAR
  540. Result : INTEGER;
  541. BEGIN
  542. OldEmulation := Setup.Emulation;
  543. MenuLib.InitMenu(SMenu,'Setup',1,1,21);
  544. SMenu.ExitOnChar := TRUE;
  545. SMenu.EscapeOK := TRUE;
  546. MenuLib.AddOption(SMenu,' C - Comms Setup ');
  547. MenuLib.AddOption(SMenu,' G - General Setup ');
  548. MenuLib.AddOption(SMenu,' K - Kermit Setup ');
  549. MenuLib.AddOption(SMenu,' A - ASCII Setup ');
  550. MenuLib.AddOption(SMenu,' M - Edit Macros ');
  551. CASE Setup.Emulation OF
  552. Term.EmVT100 : MenuLib.AddOption(SMenu,' E - Emulating VT100 '); |
  553. Term.EmVT52 : MenuLib.AddOption(SMenu,' E - Emulating VT52 '); |
  554. Term.EmANSI : MenuLib.AddOption(SMenu,' E - Emulating ANSI '); |
  555. END;
  556. MenuLib.AddOption(SMenu,' S - Save Setup ');
  557. MenuLib.DispMenu(SMenu);
  558. LOOP
  559. Result := MenuLib.MenuDrive(SMenu);
  560. CASE Result OF
  561. -1 : EXIT; |
  562. 0 : ModemSetup(2,3); |
  563. 1 : GeneralSetup(2,4); |
  564. 2 : KermitSetup(2,5); |
  565. 3 : AsciiSetup(2,6); |
  566. 4 : ChangeMacro(2,7); |
  567. 5 : ChangeEmulation(2,8); |
  568. 6 : SaveSetup; |
  569. END;
  570. END;
  571. MenuLib.KillMenu(SMenu);
  572. IF Setup.Emulation<>OldEmulation THEN
  573. CASE Setup.Emulation OF
  574. Term.EmVT100 : Term.EmulateVT100; |
  575. Term.EmVT52 : Term.EmulateVT52; |
  576. Term.EmANSI : Term.EmulateANSI; |
  577. END;
  578. END;
  579. END ChangeSetup;
  580. (*........................................*)
  581. BEGIN
  582. BoolStr[TRUE] := 'YES';
  583. BoolStr[FALSE] := 'NO';
  584. END ComSetup.
  585.