User Tools

Site Tools


cdc:nos2.source:opl871:termio

TERMIO

Table Of Contents

  • [00001] PROC TERMIO
  • [00002] TERMIO - TERMINAL INPUT/OUTPUT MODULE.
  • [00007] TERMINAL INPUT/OUTPUT MODULE.
  • [00077] PROC TTITRAP
  • [00078] PROC TTOTRAP
  • [00079] PROC VOLUNTEER
  • [00080] FUNC NOSWDSZ
  • [00088] PROC VDTLOF$
  • [00089] PROC VDTRD$
  • [00090] PROC VDTREC$
  • [00091] PROC VDTREO$
  • [00092] PROC VDTWRC$
  • [00093] PROC VDTWRO$
  • [00094] PROC VDTWRR$
  • [00099] PROC VDTCLO$
  • [00100] PROC VDTOPN$
  • [00124] PROC VDTFLS
  • [00125] VDTFLS - FLUSH OUTPUT BUFFER.
  • [00130] VDTFLS - FLUSH OUTPUT BUFFER.
  • [00147] PROC VDTDRN
  • [00148] VDTDRN - FLUSH THE INPUT BUFFER.
  • [00153] VDTDRN - FLUSH THE INPUT BUFFER.
  • [00178] PROC VDTRDO(L)
  • [00179] VDTRDO - READ ONE WORD OF INPUT.
  • [00184] VDTRDO - READ ONE WORD OF INPUT.
  • [00236] PROC VDTWTO(A)
  • [00237] VDTWTO - WRITE ONE WORD OF OUTPUT.
  • [00242] VDTWTO - WRITE ONE WORD OF OUTPUT.
  • [00272] PROC VDTRDC(L,N)
  • [00273] VDTRDC - READ ONE LINE OF INPUT.
  • [00278] VDTRDC - READ ONE LINE OF INPUT.
  • [00327] PROC VDTWTC(A)
  • [00328] VDTWTC - WRITE ONE LINE OF OUTPUT.
  • [00333] VDTWTC - WRITE ONE LINE OF OUTPUT.
  • [00363] PROC VDTCLO(RCL)
  • [00364] VDTCLO - DO A WRITER ON OUTPUT FET.
  • [00369] VDTCLO - DO A WRITER ON OUTPUT FET.
  • [00401] PROC VDTFOS(RCL)
  • [00402] VDTFOS - FLUSH OUTPUT TO SCREEN.
  • [00407] VDTFOS - FLUSH OUTPUT TO SCREEN.
  • [00427] PROC VDTOPN
  • [00428] VDTOPN - INITIALIZE TERMIO MODULE.
  • [00433] VDTOPN - INITIALIZE TERMIO MODULE.
  • [00462] PROC MAKEFET(FET,NAME,BUFFER,LENGTH)
  • [00463] MAKEFET - MAKE A FET.
  • [00468] MAKEFET - MAKE A FET.
  • [00542] PROC VDTDMP$
  • [00543] VDTDMP$ - DUMP OUTPUT DATA TO XXXDUMP.
  • [00548] VDTDMP$ - DUMP OUTPUT DATA TO XXXDUMP.

Source Code

TERMIO.txt
  1. PROC TERMIO;
  2. # TITLE TERMIO - TERMINAL INPUT/OUTPUT MODULE. #
  3.  
  4. BEGIN # TERMIO #
  5.  
  6. #
  7. *** TERMIO - TERMINAL INPUT/OUTPUT MODULE.
  8. *
  9. * *TERMIO* PROVIDES FETS, CIRCULAR BUFFERS, AND FUNDAMENTAL
  10. * I/O MACROS FOR THE FULL SCREEN EDITOR AND FOR PRODUCTS
  11. * BUILT ON THE VIRTUAL DISPLAY TERMINAL OBJECT ROUTINES.
  12. *
  13. * FOR THE FULL SCREEN EDITOR, *TERMIO* MAPS STORAGE INTO THE
  14. * GLOBAL COMMON BLOCK AND GENERATES CODE APPROPRIATE TO THE
  15. * SINGLE AND MULTI USER VERSIONS OF THE EDITOR. FOR OTHER
  16. * PRODUCTS, *TERMIO* STANDS ALONE.
  17. *
  18. * PROC TERMIO
  19. *
  20. * ENTRY OBJECT ROUTINE CALLED.
  21. *
  22. * EXIT OBJECT ROUTINE EXECUTED.
  23. *
  24. * NOTES THE *TERMIO* ROUTINES ALLOW USE OF BOTH *FORTRAN*
  25. * AND *COBOL* CALLING SEQUENCES.
  26. *
  27. * COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  28. #
  29.  
  30. # START OF MODIFY CONDITIONAL SEQUENCE #
  31. *IF DEF,EDITOR
  32. DEF LISTCON #0#; # DO NOT LIST COMDECKS #
  33. *ELSE
  34. DEF LISTCON #1#; # LIST COMDECKS #
  35. *ENDIF
  36. # END OF MODIFY CONDITIONAL #
  37.  
  38. *IFCALL SINGLE,COMFSGL
  39. *IFCALL ONLY,COMFONL
  40. *IFCALL MULTI,COMFMLT
  41. *IFCALL EDITOR,COMFFSE
  42.  
  43. # START OF CODE SEQUENCE CONDITIONALLY PRODUCED BY MODIFY UTILITY #
  44.  
  45. *NIFCALL EDITOR,COMFTIO
  46. *IF UNDEF,EDITOR
  47. DEF SINGLE #1#; # SINGLE-USER VERSION #
  48. DEF MULTI #0#; # NOT MULTI-USER VERSION #
  49. DEF EDITORVDT #0#; # STANDALONE VERSION OF VIRTERM #
  50. DEF IOBEGIN(XXX) #BEGIN#; # BEGIN COMPOUND STATEMENT #
  51. DEF IOEND #END#; # END COMPOUND STATEMENT #
  52. DEF IORET #RETURN;#; # EXIT FROM SUBPROGRAM #
  53. CONTROL PRESET;
  54. *ENDIF
  55.  
  56. *IF UNDEF,QTRM
  57. DEF QTRMV #0#; # NOT QTRM VERSION #
  58. *ELSE
  59. DEF QTRMV #1#; # QTRM VERSION #
  60. *ENDIF
  61.  
  62. # END OF MODIFY CONDITIONAL #
  63.  
  64. # COMMON DATA #
  65.  
  66. CONTROL IFEQ MULTI,1;
  67. XREF ARRAY RENTSTK [1:MAXREENT] P(1); # SUBROUTINE STACK #
  68. BEGIN # ARRAY RENTSTK #
  69. ITEM RSTK I; # STACK WORD #
  70. END # ARRAY RENTSTK #
  71. XREF ITEM RSTKPTR I; # STACK POINTER #
  72. CONTROL FI;
  73.  
  74. CONTROL IFEQ MULTI,1;
  75. XREF
  76. BEGIN
  77. PROC TTITRAP; # TELETYPE INPUT TRAP #
  78. PROC TTOTRAP; # TELETYPE OUTPUT TRAP #
  79. PROC VOLUNTEER; # VOLUNTEER PREEMPTIVE SWAPPING #
  80. FUNC NOSWDSZ; # NOS WORD SIZE #
  81. END
  82. CONTROL FI;
  83.  
  84. XREF
  85. BEGIN
  86. *IFCALL EDITOR,COMFXSB
  87. CONTROL IFEQ SINGLE,1;
  88. PROC VDTLOF$; # SET LIST OF FILES #
  89. PROC VDTRD$; # READ AFTER EOR #
  90. PROC VDTREC$; # READ CODED LINE #
  91. PROC VDTREO$; # READ ONE WORD #
  92. PROC VDTWRC$; # WRITE CODED LINE #
  93. PROC VDTWRO$; # CIO WRITE WORD #
  94. PROC VDTWRR$; # WRITE EOR #
  95. *IF DEF,CRM
  96.  
  97. # START OF MODIFY CONDITIONAL FOR TERMINAL OUTPUT. #
  98.  
  99. PROC VDTCLO$; # CLOSE CRM OUTPUT FILE #
  100. PROC VDTOPN$; # OPEN CRM OUTPUT FILE #
  101.  
  102. # END OF MODIFY CONDITIONAL FOR TERMINAL OUTPUT. #
  103.  
  104. *ENDIF
  105. CONTROL FI;
  106. END
  107.  
  108. XDEF
  109. BEGIN # COMFXTI #
  110. *CALL COMFXTI
  111. END # COMFXTI #
  112.  
  113.  
  114. # COMMON DATA BLOCK #
  115. *IFCALL EDITOR,COMFDS1
  116. *IFCALL EDITOR,COMFVD2
  117. *IFCALL EDITOR,COMFDS2
  118.  
  119. *NIFCALL EDITOR,COMFVD1
  120. *NIFCALL EDITOR,COMFVD2
  121. *NIFCALL EDITOR,COMFVD3
  122. CONTROL EJECT;
  123.  
  124. PROC VDTFLS;
  125. # TITLE VDTFLS - FLUSH OUTPUT BUFFER. #
  126.  
  127. BEGIN # VDTFLS #
  128.  
  129. #
  130. ** VDTFLS - FLUSH OUTPUT BUFFER.
  131. *
  132. * *VDTFLS* FLUSHES THE OUTPUT BUFFER.
  133. *
  134. * PROC VDTFLS
  135. *
  136. * EXIT TTYO - FET HAS RESET TO SHOW THE OUTPUT BUFFER
  137. * EMPTY.
  138. #
  139.  
  140. CONTROL IFEQ SINGLE,1;
  141. TTYOIN = TTYOOT; # SET IN EQUAL TO OUT #
  142. CONTROL FI;
  143.  
  144. END # VDTFLS #
  145. CONTROL EJECT;
  146.  
  147. PROC VDTDRN;
  148. # TITLE VDTDRN - FLUSH THE INPUT BUFFER. #
  149.  
  150. IOBEGIN(VDTDRN)
  151.  
  152. #
  153. ** VDTDRN - FLUSH THE INPUT BUFFER.
  154. *
  155. * *VDTDRN* FLUSHES THE INPUT BUFFER.
  156. *
  157. * PROC VDTDRN
  158. *
  159. * EXIT TTYI - FET HAS EMPTY CIRCULAR BUFFER, IN EITHER
  160. * SINGLE-EDITOR OR STANDALONE VERSION.
  161. *
  162. * CALLS TTITRAP (MULTI ONLY).
  163. *
  164. * USES TTILEN (MULTI ONLY).
  165. #
  166.  
  167. CONTROL IFEQ SINGLE,1;
  168. TTYIOT=TTYIIN;
  169. CONTROL FI;
  170. CONTROL IFEQ MULTI,1;
  171. TTILEN=-1;
  172. TTITRAP;
  173. CONTROL FI;
  174.  
  175. IOEND # VDTDRN #
  176. CONTROL EJECT;
  177.  
  178. PROC VDTRDO(L);
  179. # TITLE VDTRDO - READ ONE WORD OF INPUT. #
  180.  
  181. IOBEGIN(VDTRDO)
  182.  
  183. #
  184. ** VDTRDO - READ ONE WORD OF INPUT.
  185. *
  186. * *VDTRDO* READS ONE WORD OF INPUT INTO BUFFER *L*.
  187. *
  188. * PROC VDTRDO(L)
  189. *
  190. * ENTRY L - WORD TO BE READ INTO.
  191. *
  192. * CALLS READ, READO (SINGLE OR STANDALONE).
  193. * MORTAL (SINGLE-EDITOR ONLY).
  194. * TTITRAP, VOLUNTEER (MULTI-EDITOR ONLY).
  195. *
  196. * USES TTYI FET (SINGLE OR STANDALONE).
  197. * TTIADDR, TTILEN (MULTI ONLY).
  198. * TTYINPUT (SINGLE EDITOR ONLY)
  199. #
  200.  
  201. ARRAY L [0:0] P(1); # WORD TO BE READ INTO #
  202. BEGIN # ARRAY L #
  203. ITEM LL I; # LINE OF INPUT #
  204. END # ARRAY L #
  205.  
  206. CONTROL IFEQ MULTI,1;
  207. TTIADDR=LOC(L);
  208. TTILEN=1;
  209. TTITRAP; # GET FROM SMFEX #
  210. VOLUNTEER; # MOVE FAST IF LOW TTI #
  211. CONTROL FI;
  212.  
  213. CONTROL IFEQ SINGLE,1;
  214. ITEM R I; # READ STATUS #
  215. LL = 0; # EMPTY LINE BY DEFAULT #
  216. R=-1; # EOF DETECTED ON FILE #
  217. IF TTYIIN EQ TTYIOT THEN
  218. BEGIN
  219. *IF DEF,DEBUG
  220. VDTDMP$;
  221. *ENDIF
  222. VDTRD$(TTYI,1); # READ MACRO #
  223. END
  224. IF TTYIIN NQ TTYIOT THEN VDTREO$(TTYI,L,R); # READO MACRO #
  225. # START OF CODE CONDITIONALLY PRODUCED BY MODIFY UTILITY #
  226. *IF DEF,EDITOR
  227. IF R NQ 0 AND NOT TTYINPUT
  228. THEN MORTAL(" QUIT IS REQUIRED FOR BATCH JOBS.$");
  229. *ENDIF
  230. # END OF MODIFY UTILITY CONDITIONAL #
  231. CONTROL FI;
  232.  
  233. IOEND # VDTRDO #
  234. CONTROL EJECT;
  235.  
  236. PROC VDTWTO(A);
  237. # TITLE VDTWTO - WRITE ONE WORD OF OUTPUT. #
  238.  
  239. IOBEGIN(VDTWTO)
  240.  
  241. #
  242. ** VDTWTO - WRITE ONE WORD OF OUTPUT.
  243. *
  244. * *VDTWTO* WRITES ONE WORD OF OUTPUT FROM BUFFER *A*.
  245. *
  246. * PROC VDTWTO(A)
  247. *
  248. * ENTRY A - THE WORD.
  249. *
  250. * CALLS WRITEO (SINGLE-EDITOR OR STANDALONE).
  251. * TTOTRAP (MULTI ONLY).
  252. *
  253. * USES TTOLEN, TTOTYPE, TTOADDR (MULTI ONLY).
  254. #
  255.  
  256. ARRAY A [0:0] P(1);; # WORD OF OUTPUT #
  257.  
  258. CONTROL IFEQ MULTI,1;
  259. TTOADDR=LOC(A);
  260. TTOLEN=1;
  261. TTOTYPE=TTOST"NORMAL";
  262. TTOTRAP;
  263. CONTROL FI;
  264.  
  265. CONTROL IFEQ SINGLE,1;
  266. VDTWRO$(TTYO,A); # WRITEO MACRO #
  267. CONTROL FI;
  268.  
  269. IOEND # VDTWTO #
  270. CONTROL EJECT;
  271.  
  272. PROC VDTRDC(L,N);
  273. # TITLE VDTRDC - READ ONE LINE OF INPUT. #
  274.  
  275. IOBEGIN(VDTRDC)
  276.  
  277. #
  278. ** VDTRDC - READ ONE LINE OF INPUT.
  279. *
  280. * *VDTRDC* READS ONE LINE OF INPUT INTO BUFFER *L*.
  281. *
  282. * PROC VDTRDC(L,N)
  283. *
  284. * ENTRY L - LINE IMAGE BUFFER.
  285. * N - BUFFER CAPACITY IN WORDS.
  286. *
  287. * CALLS READ, READC (SINGLE OR STANDALONE).
  288. * MORTAL (SINGLE-EDITOR ONLY).
  289. * TTITRAP, VOLUNTEER (MULTI-EDITOR ONLY).
  290. *
  291. * USES TTYI FET (SINGLE OR STANDALONE).
  292. * TTIADDR, TTILEN (MULTI ONLY).
  293. * TTYINPUT (SINGLE EDITOR ONLY)
  294. #
  295.  
  296. ARRAY L [0:0] P(1); # LINE IMAGE BUFFER #
  297. BEGIN # ARRAY L #
  298. ITEM LL I; # LINE IMAGE #
  299. END # ARRAY L #
  300.  
  301. ITEM N I; # MAX NUM WORDS #
  302.  
  303. CONTROL IFEQ MULTI,1;
  304. TTIADDR=LOC(L);
  305. TTILEN=N;
  306. TTITRAP; # GET FROM SMFEX #
  307. VOLUNTEER; # MOVE FAST IF LOW TTI #
  308. CONTROL FI;
  309.  
  310. CONTROL IFEQ SINGLE,1;
  311. ITEM R I; # READ STATUS #
  312. LL = 0; # EMPTY LINE BY DEFAULT #
  313. R=-1; # EOF DETECTED ON FILE #
  314. IF TTYIIN EQ TTYIOT THEN VDTRD$(TTYI,1); # READ MACRO #
  315. IF TTYIIN NQ TTYIOT THEN VDTREC$(TTYI,L,N,R); # READC MACRO #
  316. # START OF SEQUENCE CONDITIONALLY PRODUCED BY MODIFY UTILITY #
  317. *IF DEF,EDITOR
  318. IF R NQ 0 AND NOT TTYINPUT
  319. THEN MORTAL(" QUIT IS REQUIRED FOR BATCH JOBS.$");
  320. *ENDIF
  321. # END OF MODIFY CONDITIONAL #
  322. CONTROL FI;
  323.  
  324. IOEND # VDTRDC #
  325. CONTROL EJECT;
  326.  
  327. PROC VDTWTC(A);
  328. # TITLE VDTWTC - WRITE ONE LINE OF OUTPUT. #
  329.  
  330. IOBEGIN(VDTWTC)
  331.  
  332. #
  333. ** VDTWTC - WRITE ONE LINE OF OUTPUT.
  334. *
  335. * *VDTWTC* WRITES ONE LINE OF OUTPUT FROM BUFFER *A*.
  336. *
  337. * PROC VDTWTC(A)
  338. *
  339. * ENTRY A - LINE IMAGE BUFFER WITH ZERO BYTE TERMINATOR.
  340. *
  341. * CALLS WRITEC (SINGLE-EDITOR OR STANDALONE).
  342. * TTOTRAP (MULTI ONLY).
  343. *
  344. * USES TTOLEN, TTOTYPE, TTOADDR (MULTI ONLY).
  345. #
  346.  
  347. ARRAY A [0:0] P(1);; # LINE IMAGE BUFFER #
  348.  
  349. CONTROL IFEQ MULTI,1;
  350. TTOADDR=LOC(A);
  351. TTOLEN=NOSWDSZ(9999,A);
  352. TTOTYPE=TTOST"NORMAL";
  353. TTOTRAP;
  354. CONTROL FI;
  355.  
  356. CONTROL IFEQ SINGLE,1;
  357. VDTWRC$(TTYO,A); # WRITEC MACRO #
  358. CONTROL FI;
  359.  
  360. IOEND # VDTWTC #
  361. CONTROL EJECT;
  362.  
  363. PROC VDTCLO(RCL);
  364. # TITLE VDTCLO - DO A WRITER ON OUTPUT FET. #
  365.  
  366. IOBEGIN(VDTCLO)
  367.  
  368. #
  369. ** VDTCLO - DO A WRITER ON OUTPUT FET.
  370. *
  371. * *VDTCLO* CLOSES THE OUTPUT FET BY DOING A *WRITER*.
  372. *
  373. * PROC VDTCLO(RCL)
  374. *
  375. * CALLS VDTWRR$ (SINGLE EDITOR OR STANDALONE).
  376. *IF DEF,CRM
  377. * VDTCLO$ (CRM STANDALONE ONLY).
  378. *ENDIF
  379. #
  380.  
  381. ITEM RCL I; # RECALL PARAMETER #
  382. CONTROL IFEQ SINGLE,1;
  383. *IF DEF,DEBUG
  384. VDTDMP$;
  385. *ENDIF
  386. VDTWRR$(TTYO,RCL); # WRITER MACRO #
  387. *IF DEF,CRM
  388.  
  389. # START OF MODIFY CONDITIONAL FOR TERMINAL OUTPUT. #
  390.  
  391. VDTCLO$; # CLOSE CRM OUTPUT FILE #
  392.  
  393. # END OF MODIFY CONDITIONAL FOR TERMINAL OUTPUT. #
  394.  
  395. *ENDIF
  396. CONTROL FI;
  397.  
  398. IOEND # VDTCLO #
  399. CONTROL EJECT;
  400.  
  401. PROC VDTFOS(RCL);
  402. # TITLE VDTFOS - FLUSH OUTPUT TO SCREEN. #
  403.  
  404. IOBEGIN(VDTFOS)
  405.  
  406. #
  407. ** VDTFOS - FLUSH OUTPUT TO SCREEN.
  408. *
  409. * *VDTFOS* FLUSHES THE OUTPUT TO SCREEN BY A WRITER ON OUTPUT FET.
  410. *
  411. * PROC VDTFOS(RCL)
  412. *
  413. * CALLS VDTWRR$ (SINGLE EDITOR OR STANDALONE).
  414. #
  415.  
  416. ITEM RCL I; # RECALL PARAMETER #
  417. CONTROL IFEQ SINGLE,1;
  418. *IF DEF,DEBUG
  419. VDTDMP$;
  420. *ENDIF
  421. VDTWRR$(TTYO,RCL); # WRITER MACRO #
  422. CONTROL FI;
  423.  
  424. IOEND # VDTFOS #
  425. CONTROL EJECT;
  426.  
  427. PROC VDTOPN;
  428. # TITLE VDTOPN - INITIALIZE TERMIO MODULE. #
  429.  
  430. IOBEGIN(VDTOPN)
  431.  
  432. #
  433. ** VDTOPN - INITIALIZE TERMIO MODULE.
  434. *
  435. * *VDTOPN* OPENS THE INPUT AND OUTPUT FETS AND INITIALIZES
  436. * THEM.
  437. *
  438. * PROC VDTOPN
  439. *
  440. * ENTRY INTERACT - WHETHER TRULY INTERACTIVE (SINGLE EDITOR).
  441. *
  442. * EXIT TTYI, TTYO - FETS ARE INITIALIZED.
  443. * LIST OF FILES IS SET UP.
  444. *
  445. * CALLS MAKEFET (INTERNAL) (STANDALONE ONLY).
  446. * MAKEFET (EXTERNAL) (SINGLE-EDITOR ONLY).
  447. *IF UNDEF,CRM
  448. * VDTLOF$ (SINGLE EDITOR OR STANDALONE).
  449. *ELSE
  450. * VDTOPN$ (CRM STANDALONE ONLY).
  451. *ENDIF
  452. *
  453. * NOTE CURRENTLY A NO-OP FOR MULTI-EDITOR.
  454. #
  455.  
  456. # START OF SEQUENCE CONDITIONALLY PRODUCED BY MODIFY UTILITY #
  457.  
  458. *IF UNDEF EDITOR
  459. DEF INTERACT #TRUE#; # INTERACTIVE TERMINALS #
  460.  
  461.  
  462. PROC MAKEFET(FET,NAME,BUFFER,LENGTH);
  463. # TITLE MAKEFET - MAKE A FET. #
  464.  
  465. BEGIN # MAKEFET #
  466.  
  467. #
  468. ** MAKEFET - MAKE A FET.
  469. *
  470. * *MAKEFET* SETS UP THE FET AND INITIALIZES IT.
  471. *
  472. * PROC MAKEFET(FET,NAME,BUFFER,LENGTH)
  473. *
  474. * ENTRY NAME - FET NAME.
  475. * BUFFER - FIRST ADDRESS.
  476. * LENGTH - FET LENGTH.
  477. *
  478. * EXIT FET INITIALIZED.
  479. #
  480.  
  481. ARRAY FET [0:0] S(5);
  482. BEGIN # ARRAY FET #
  483. ITEM FETNAME C(00,00,07); # FET NAME #
  484. ITEM FETCODE U(00,42,18); # FET STATUS CODES #
  485. ITEM FETFIRST I(01,00,60); # FIRST ADDRESS #
  486. ITEM FETIN I(02,00,60); # IN ADDRESS #
  487. ITEM FETOUT I(03,00,60); # OUT ADDRESS #
  488. ITEM FETLIMIT I(04,00,60); # LIMIT ADDRESS #
  489. END # ARRAY FET #
  490.  
  491. ITEM NAME C(07); # FET NAME #
  492. ARRAY BUFFER [0:0] P(1);; # FIRST ADDRESS #
  493. ITEM LENGTH I; # FET LENGTH #
  494. ITEM TMP1 I; # TEMPORARY STORAGE #
  495.  
  496. FETNAME=NAME;
  497. FOR TMP1=0 STEP 1 UNTIL 6 DO
  498. BEGIN
  499. IF C<TMP1,1>FETNAME EQ " " THEN C<TMP1,1>FETNAME=0;
  500. END
  501. FETCODE=1;
  502. FETFIRST=LOC(BUFFER);
  503. FETIN=FETFIRST;
  504. FETOUT=FETFIRST;
  505. FETLIMIT=FETFIRST+LENGTH;
  506.  
  507. END # MAKEFET #
  508.  
  509. *ENDIF
  510. # END OF MODIFY CONDITIONAL FOR MAKEFET #
  511.  
  512. # START OF MAIN-LINE CODE FOR VDTOPN #
  513.  
  514. CONTROL IFEQ SINGLE,1;
  515. MAKEFET(TTYI,INPTNAM,TTYIBF,TTYIBUFSIZ);
  516.  
  517. # START OF MODIFY CONDITIONAL FOR TERMINAL OUTPUT. #
  518.  
  519. *IF UNDEF,CRM
  520. MAKEFET(TTYO,OUTPNAM,TTYOBF,TTYOBUFSIZ);
  521. IF INTERACT THEN
  522. BEGIN
  523. B<12,18>LISTFETPTR=LOC(FETLIST);
  524. FETLSTNAM=TTYONM;
  525. FETLSTLOC=LOC(TTYO);
  526. TTYOFB=TRUE;
  527. VDTLOF$(LISTFETPTR); # SETLOF MACRO #
  528. END
  529. *ELSE
  530. VDTOPN$(LISTFETPTR); # OPEN CRM OUTPUT FILE #
  531. P<TTYO>=LISTFETPTR; # SET BASED ARRAY ADDRESS #
  532. *ENDIF
  533.  
  534. # END OF MODIFY CONDITIONAL FOR TERMINAL OUTPUT. #
  535.  
  536. CONTROL FI;
  537.  
  538. IOEND # VDTOPN #
  539. *IF DEF,DEBUG
  540. CONTROL EJECT;
  541.  
  542. PROC VDTDMP$;
  543. # TITLE VDTDMP$ - DUMP OUTPUT DATA TO XXXDUMP. #
  544.  
  545. BEGIN # VDTDMP$ #
  546.  
  547. #
  548. ** VDTDMP$ - DUMP OUTPUT DATA TO XXXDUMP.
  549. *
  550. * THIS PROCEDURE DUMPS THE CURRENT CONTENTS OF THE OUPUT FET TO
  551. * THE LOCAL FILE *XXXDUMP* OR DEBUGGING ANALYSIS.
  552. *
  553. * PROC VDTDMP$.
  554. *
  555. * EXIT DATA DUMPED TO XXXDUMP.
  556. *
  557. * CALLS VDTWRR$.
  558. #
  559.  
  560. ARRAY XXXDUMP [0:0] P(5);
  561. BEGIN
  562. ITEM DUMPLFN U(00,00,60) = [O"3030 3004 2515 2000 0001"];
  563. ITEM DUMPFT U(01,42,18);
  564. ITEM DUMPIN U(02,42,18);
  565. ITEM DUMPOT U(03,42,18);
  566. ITEM DUMPLM U(04,42,18);
  567. END
  568.  
  569. DUMPFT = TTYOFT; # SET FET POINTERS #
  570. DUMPIN = TTYOIN;
  571. DUMPOT = TTYOOT;
  572. DUMPIN = TTYOLM;
  573. VDTWRR$(XXXDUMP,1); # DUMP BUFFER #
  574.  
  575. END # VDTDMP$ #
  576. *ENDIF
  577.  
  578.  
  579. END # TERMIO #
  580.  
  581. TERM
cdc/nos2.source/opl871/termio.txt · Last modified: 2023/08/05 17:24 by Site Administrator