Previous: prsqst Up: ../plot79_p.html Next: prssec
SUBROUTINE PRSRTY (RTYFLG) C$ (Parse Internal - Retype Command) C$ When help has been offered, or recognition performed, or a C$ CTL-H or CTL-R entered, the current input buffer must be C$ retyped, preserving its original appearence with respect to C$ continuation lines. C$ C$ The single argument RTYFLG has one of the following values: C$ C$ RTYNEW....Retype entire command beginning on a new line. C$ RTYOVR....Retype LAST line of command on current line, C$ erasing the previous line contents. C$ C$ RTYNEW is trivial to simulate, since we can just output the C$ lines normally. C$ C$ RTYOVR is harder, since it requires terminal dependent C$ processing. On most ASCII display terminals, the required C$ commands are: C$ C$ Retype current line: C$ <Cursor to BOL> <Erase from cursor to EOL> <line contents> C$ C$ Position to beginning of previous line: C$ <Cursor to BOL> <Erase from cursor to EOL> C$ <Cursor Up> <Erase from cursor to EOL> C$ C$ The actual ASCII byte sequences for these vary from C$ terminal to terminal. Here are some examples: C$ C$ Command DEC VT52 DEC VT100 Televideo C$ --------------- -------- ------------ --------- C$ <Cursor to BOL> CR CR CR C$ <Erase from C$ cursor to EOL> ESC K ESC LBRACK K ESC T C$ <Cursor Up> ESC A ESC LBRACK A ESC j C$ C$ There is a further complication that some terminal models C$ at high baud rates require padding characters to force a C$ delay to enable the function to be completed properly. We C$ shall assume that such padding is not required in this C$ simple interface. The command tables are simple enough C$ that padding characters could easily be added transparently C$ to the code. C$ C$ If the output is not directed to a terminal, then RTYOVR C$ should function like RTYNEW. Similarly, if the host cannot C$ support output cursor-addressable terminals, or output at C$ the end of the current line, then RTYOVR should function C$ like RTYNEW. C$ C$ If FORTRAN input is used, then after the user has typed a C$ line, it must have been ended by a carriage return, and the C$ cursor is therefore one line below the line in question, so C$ we need the command sequence to position to the beginning C$ of the previous line. If character-at-a-time input is C$ used, then the cursor is on the current line, so we can get C$ by with erasing from BOL to EOL. C$ C$ If the host software system supports it, a more C$ sophisticated version of this routine could use inquiry C$ functions to determine at runtime the terminal type and C$ current cursor position, then send out specifically C$ tailored commands. C$ (19-NOV-82)