comp.lang.ada
 help / color / mirror / Atom feed
* Ada Terminal Emulator evaluation notes
@ 2003-06-29 16:12 Simon Clubley
  2003-06-30  0:53 ` Ross Higson
  2003-06-30  3:49 ` Ross Higson
  0 siblings, 2 replies; 4+ messages in thread
From: Simon Clubley @ 2003-06-29 16:12 UTC (permalink / raw)


[I am posting this to CLA, instead of mailing Ross, so that anyone else
evaluating his emulator can compare notes.]

Ross, here are my notes on your emulator:

Testing environment.
--------------------
Emulator installed on a 233Mhz PC running Windows 98SE. COM3 on this PC was
connected at 9600 baud to the target machine's console port.

The target machine was an Alpha running VMS V7.2.

The current versions of GNATCOM and GWindows were downloaded from Adapower
and installed. The emulator was compiled with Gnat 3.14p.

Ada Terminal Emulator version was V0.5.

The command line used was "comms /port=3 /xin /xout".

Installation.
-------------
1) The clean rule is called by the makefile on a build; it causes the build to
fail on the initial installation as the files to be deleted do not exist yet.
I got the build to start by commenting out the calls to the clean rule.

2) You need to describe the _exact_ compilation/installation environment.
For example, did you build from the DOS command prompt, or from Cygwin ?
Which version of GNU Make did you use ?

I built from the DOS command prompt using the version of make with GNAT 3.14p,
and had a number of problems building. I ended up doing a number of the
steps manually and using alternate versions of make.

Here is an example error:

C:\terminal>make RELEASE=1
make -C emulator
make[1]: Entering directory `C:/terminal/emulator'
make libMIT.a -C mit_parser
make[2]: Entering directory `C:/terminal/emulator/mit_parser'
gcc -Dpascal="" -c vtparser.c
gcc: installation problem, cannot exec `as': No such file or directory
make[2]: *** [vtparser.o] Error 1

I got around this by repeatedly calling the libMIT.a target manually with the
GNAT 3.14p make and the MSys 1.0 make (version 3.79.1), switching between them
as the build got a bit further and then died, until this target had been built.

Here is another example error. I got around these types of error by copying
the file manually and commenting out the command in the makefile:

make[2]: Leaving directory `C:/terminal/emulator/mit_parser'
copy mit_parser\libMIT.a .
process_begin: CreateProcess((null), copy mit_parserlibMIT.a ., ...) failed.
make (e=2): The system cannot find the file specified.
make[1]: *** [libMIT.a] Error 2

Emulator.
---------
3) The DEC keyboard is not active. This applies to the keypad, the editing
keys and cursor keys. The manual implies that there is an advanced menu, but
I cannot find it. This has stopped me from running a large range of the
tests that I would normally run and is a show stopper in a VMS environment.

4) Scrolling is very slow on a 233 Mhz machine; probably too slow to be usable.

For example, a listing of a VMS directory takes 5 seconds using MS-Kermit.
Using the Ada Terminal Emulator, the same listing takes 12 seconds.

I then created a file containing 1001 lines of 13 letter A's per line.
Typing this file in MS-Kermit takes 18 seconds.
Typing this file in the Ada Terminal Emulator takes 43 seconds.

5) The results from a $ set term/inquire give occasional unusual results.
See the following session:

This initial command puts the terminal into a known state:

$ set term/dev=vt200/page=24
$ sh term                   
Terminal: _OPA0:      Device_Type: VT200_Series  Owner: SIMON  
                                                               
   Input:    9600     LFfill:  0      Width:  80      Parity: None
   Output:   9600     CRfill:  0      Page:   24                  
                                                                  
[snip]

I then issue the command that causes VMS to interrogate the terminal and
causes the terminal to send escape sequences identifying itself. The cursor is
on line 24 when I issue this command (you will see why that is important in
a moment).

$ set term/inquire   
$ sh term            
Terminal: _OPA0:      Device_Type: VT100         Owner: SIMON     
                                                                  
   Input:    9600     LFfill:  0      Width:  80      Parity: None
   Output:   9600     CRfill:  0      Page:   24                  

[snip]

So VMS thinks that it's a VT100 that it's talking to with a page length of 24.

However, if I do a Hard Reset, which puts the cursor in the top left, press
Return a few times to move the cursor down the screen a bit, and repeat the
above, I get:

$ set term/inquire 
$ sh term          
Terminal: _OPA0:      Device_Type: VT100         Owner: SIMON    
                                                                 
   Input:    9600     LFfill:  0      Width:  80      Parity: None
   Output:   9600     CRfill:  0      Page:    7                  

[snip]

This page length of 7 is clearly wrong.

6) Pressing Delete sends Backspace (8 decimal) instead of delete
(127 decimal). Searching for "Delete" or "Backspace" in the manual did not
turn up anything relevant.

7) I have found a bug in reverse video handling when using TPU and MONITOR.
When painting some areas, the area is incorrectly displayed in reverse video.

It's easier to describe the TPU problem. Selecting the Find command
(PF1 then PF3; given (3) above, I entered the escape sequences manually)
should cause the text "Forward Find: " to appear in reverse video in the
command window at the bottom of the screen. This it does, but the rest of
the line is also incorrectly in reverse video. Another example of the reverse
video problem is when TPU repaints the screen after leaving the help system;
the emulator paints any blank lines of the edit window in reverse video.

8) When saving the history buffer to a file, the full width of the line,
including trailing spaces, is written to the file. You may want to provide
an option to strip trailing spaces when writing to the file.

9) Do you have any support for the bell ? VMS operations that normally ring
the bell are silent.

Misc questions.
---------------
10) Did you consider using GtkAda instead of GWindows to write the emulator ?
This would have created something that could run on Linux as well.

11) If you can't write a Telnet package, is there an existing command line
telnet that you can use from within a redirect window, or the Win98
workaround you have for redirect ?

A final note:
-------------
I have only spent a few hours building and evaluating this emulator, so this
cannot be anything approaching a full evaluation. Also problems with the
keyboard emulation stopped me from running my usual range of tests. These
reasons mean you need to be aware that there may be other issues that I have
not discovered.

Although I cannot spend any more time on this, I hope that the above feedback
does prove helpful for you.

Simon.
-- 
Simon Clubley, clubley@remove_me.eisner.decus.org-Earth.UFP       
VMS advocate: One who makes a Mac advocate look like a beginner at advocacy.



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Ada Terminal Emulator evaluation notes
  2003-06-29 16:12 Ada Terminal Emulator evaluation notes Simon Clubley
@ 2003-06-30  0:53 ` Ross Higson
  2003-06-30  3:49 ` Ross Higson
  1 sibling, 0 replies; 4+ messages in thread
From: Ross Higson @ 2003-06-30  0:53 UTC (permalink / raw)


Simon,

I'll answer this in the newsgroup as well since you raise some good 
points, but (for future adventurers,
who I hope won't be put off by Simon's experience !) direct email will 
normally get a faster response.

Simon Clubley wrote:

>Installation.
>-------------
>1) The clean rule is called by the makefile on a build; it causes the build to
>fail on the initial installation as the files to be deleted do not exist yet.
>I got the build to start by commenting out the calls to the clean rule.
>
I'll try to make my Makefiles more robust. Do you by any chance also 
have GTKAda installed ?
This can really mess up GNU Make. Not just my stuff - I also cannot 
build GWindows programs
with GTKAda installed. Do you think there might be some kind of 
conspiracy going on here ? :)

My solution is to temporarily rename the GTKAda directory to get it off 
my path when building any
non-GTKAda stuff. If I cannot make my makefiles work in such cases, I'll 
make an appropriate
note in the documentation. Thanks for reminding me about this one.

>Emulator.
>---------
>3) The DEC keyboard is not active. This applies to the keypad, the editing
>keys and cursor keys. The manual implies that there is an advanced menu, but
>I cannot find it. This has stopped me from running a large range of the
>tests that I would normally run and is a show stopper in a VMS environment.
>
You have to set the emulation mode (e.g. to vt100). Use the option 
"/mode" on the command line,
such as "comms /port=3 /xin /xout /mode=vt100" The emulation mode 
particularly affects the
keyboard, as described in Appendix A. The default emulation mode is PC, 
not VTxxx. The
advanced menu is enabled by the "/advanced" option. If you enable this, 
you can change the
emulation mode from within the program as well. For example, use the 
command
"comms /port=3 /xin /xout /mode=vt100 /advanced".

>4) Scrolling is very slow on a 233 Mhz machine; probably too slow to be usable.
>
Performance comments noted - improvements are in the pipeline, but 
compatibility issues get
higher priority at the moment. However, I'll update the documentation to 
recommend 500Mhz
(which is what I normally test with) as the minimum for acceptable 
performance.

>5) The results from a $ set term/inquire give occasional unusual results.
>See the following session:
>
>[snip]
>
>This page length of 7 is clearly wrong.
>
I'll investigate. Looks like I may be sending back the current cursor 
location instead of the screen size.
I'll have to hunt down which particular terminal report is being used here.

>6) Pressing Delete sends Backspace (8 decimal) instead of delete
>(127 decimal). Searching for "Delete" or "Backspace" in the manual did not
>turn up anything relevant.
>
You can send ASCII.DEL by pressing CTRL+backspace (this is described in 
appendix A.2 - I
don't know why your search didn't find this). I decided not to use the 
DEL key since it is used
as part of the editing keypad simulation (required in vt420 mode, also 
described in appendix A).
I agree this may be confusing, - I could make the DEL key work as you 
expect in vt100 mode,
but I would have to disable it again in vt420 mode. One of the problems 
with the whole keypad
emulation is that the layout of the IBM keypad is so different to the 
DEC layout that there doesn't
seem to be an obvious mapping that suits all modes.

>7) I have found a bug in reverse video handling when using TPU and MONITOR.
>When painting some areas, the area is incorrectly displayed in reverse video.
>
I'll look into it. Thanks. See last comment (below).

>9) Do you have any support for the bell ? VMS operations that normally ring
>the bell are silent.
>
Yes, the emulator supports ASCII.BEL. There must be some other control 
sequences that
cause a bell on a real vt100. I'll fix them as I find them.

>Misc questions.
>---------------
>10) Did you consider using GtkAda instead of GWindows to write the emulator ?
>This would have created something that could run on Linux as well.
>
Not really - one of the reasons for building the emulator in the first 
place was to try out
GWindows. It then got out of hand as I found more and more uses for the 
emulator
(which is why Redirect exists). I particularly wanted to try GWindows, 
since it looks very
promising as a means of making Ada more accessible to MS programmers - 
they don't
have to learn a new windowing system as well as a new language. Also, I 
think Linux
is well provided for in terminal emulation, whereas Windows is not. At 
least, not with
non-commercial solutions.

>11) If you can't write a Telnet package, is there an existing command line
>telnet that you can use from within a redirect window, or the Win98
>workaround you have for redirect ?
>
I had the same thought, and am looking into it now. I'll keep you posted.

>A final note:
>-------------
>I have only spent a few hours building and evaluating this emulator, so this
>cannot be anything approaching a full evaluation. Also problems with the
>keyboard emulation stopped me from running my usual range of tests. These
>reasons mean you need to be aware that there may be other issues that I have
>not discovered.
>  
>
>Although I cannot spend any more time on this, I hope that the above feedback
>does prove helpful for you.
>  
>
Yes, thanks. However, if you can find the time to go at least repeat 
your tests with the
emulation mode set to vt100 (which would solve a few of the problems) 
I'd be particularly
interested in any more information you could give me on the reverse 
video problem.
If you do get time, perhaps you could run the program with the 
"/displaycontrols" option
enabled, and then save the entire virtual buffer to a file and email it 
to me ?.

Thanks,

Ross.




^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Ada Terminal Emulator evaluation notes
  2003-06-29 16:12 Ada Terminal Emulator evaluation notes Simon Clubley
  2003-06-30  0:53 ` Ross Higson
@ 2003-06-30  3:49 ` Ross Higson
  2003-06-30 12:24   ` Simon Clubley
  1 sibling, 1 reply; 4+ messages in thread
From: Ross Higson @ 2003-06-30  3:49 UTC (permalink / raw)


clubley@remove_me.eisner.decus.org-Earth.UFP (Simon Clubley) wrote in message news:<pf60GsI3nRsF@eisner.encompasserve.org>...

My first reply to this doesn't seem to have appeared, so I'm trying
again - sorry if that means it appears twice. I'm answering this in
the newsgroup since Simon raises some good points, but (for future
adventurers, who I hope won't be put off by Simon's experience !)
direct email will normally get a faster response.

> Installation.
> -------------
> 1) The clean rule is called by the makefile on a build; it causes the build to
> fail on the initial installation as the files to be deleted do not exist yet.
> I got the build to start by commenting out the calls to the clean rule.
> 

I'll try to make my Makefiles more robust. Do you by any chance also
have GTKAda installed ? This can really mess up GNU Make. Not just my
stuff - I also cannot build GWindows programs with GTKAda installed.
Do you think there might be some kind of conspiracy going on here ? :)

My solution is to temporarily rename the GTKAda directory to get it
off my path when building any non-GTKAda stuff. If I cannot make my
makefiles work in such cases, I'll make an appropriate note in the
documentation. Thanks for reminding me about this one.

> Emulator.
> ---------
> 3) The DEC keyboard is not active. This applies to the keypad, the editing
> keys and cursor keys. The manual implies that there is an advanced menu, but
> I cannot find it. This has stopped me from running a large range of the
> tests that I would normally run and is a show stopper in a VMS environment.

You have to set the emulation mode (e.g. to vt100). Use the option
"/mode" on the command line, such as "comms /port=3 /xin /xout
/mode=vt100" The emulation mode particularly affects the keyboard, as
described in Appendix A. The default emulation mode is PC, not VTxxx.
The advanced menu is enabled by the "/advanced" option. If you enable
this, you can change the emulation mode from within the program as
well. For example, use the command "comms /port=3 /xin /xout
/mode=vt100 /advanced".

> 4) Scrolling is very slow on a 233 Mhz machine; probably too slow to be usable.
 
Performance comments noted - improvements are in the pipeline, but
compatibility issues get higher priority at the moment. However, I'll
update the documentation to recommend 500Mhz (which is what I normally
test with) as the minimum for acceptable performance.

> 5) The results from a $ set term/inquire give occasional unusual results.
> See the following session:
>                                                                   
> [snip]
> 
> This page length of 7 is clearly wrong.

I'll investigate. Looks like I may be sending back the current cursor
location instead of the screen size. I'll have to hunt down which
particular terminal report is being used here.

> 6) Pressing Delete sends Backspace (8 decimal) instead of delete
> (127 decimal). Searching for "Delete" or "Backspace" in the manual did not
> turn up anything relevant.
 
You can send ASCII.DEL by pressing CTRL+backspace (this is described
in appendix A.2 - I don't know why your search didn't find this). I
decided not to use the DEL key since it is used as part of the editing
keypad simulation (required in vt420 mode, also described in appendix
A). I agree this may be confusing, - I could make the DEL key work as
you expect in vt100 mode, but I would have to disable it again in
vt420 mode. One of the problems with the whole keypad emulation is
that the layout of the IBM keypad is so different to the DEC layout
that there doesn't seem to be an obvious mapping that suits all modes.

> 7) I have found a bug in reverse video handling when using TPU and MONITOR.
> When painting some areas, the area is incorrectly displayed in reverse video.

I'll look into it. Thanks. See last comment (below).

> 9) Do you have any support for the bell ? VMS operations that normally ring
> the bell are silent.

Yes, the emulator supports ASCII.BEL. There must be some other control
sequences that cause a bell on a real vt100. I'll fix them as I find
them.

> Misc questions.
> ---------------
> 10) Did you consider using GtkAda instead of GWindows to write the emulator ?
> This would have created something that could run on Linux as well.

Not really - one of the reasons for building the emulator in the first
place was to try out GWindows. It then got out of hand as I found more
and more uses for the emulator (which is why Redirect exists). I
particularly wanted to try GWindows, since it looks very promising as
a means of making Ada more accessible to MS programmers - they don't
have to learn a new windowing system as well as a new language. Also,
I think Linux is well provided for in terminal emulation, whereas
Windows is not. At least, not with non-commercial solutions.

> 11) If you can't write a Telnet package, is there an existing command line
> telnet that you can use from within a redirect window, or the Win98
> workaround you have for redirect ?
 
I had the same thought, and am looking into it now. I'll keep you
posted.

> A final note:
> -------------
> I have only spent a few hours building and evaluating this emulator, so this
> cannot be anything approaching a full evaluation. Also problems with the
> keyboard emulation stopped me from running my usual range of tests. These
> reasons mean you need to be aware that there may be other issues that I have
> not discovered.
> 
> Although I cannot spend any more time on this, I hope that the above feedback
> does prove helpful for you.
> 
> Simon.

Yes, thanks. However, if you can find the time to go at least repeat
your tests with the emulation mode set to vt100 (which would solve a
few of the problems) I'd be particularly interested in any more
information you could give me on the reverse video problem. If you do
get time, perhaps you could run the program with the
"/displaycontrols" option enabled, and then save the entire virtual
buffer to a file and email it to me ?.

Thanks,

Ross.



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Ada Terminal Emulator evaluation notes
  2003-06-30  3:49 ` Ross Higson
@ 2003-06-30 12:24   ` Simon Clubley
  0 siblings, 0 replies; 4+ messages in thread
From: Simon Clubley @ 2003-06-30 12:24 UTC (permalink / raw)


In article <3c1f2fe3.0306291949.a7ef41f@posting.google.com>, rossh@zip.com.au (Ross Higson) writes:
> clubley@remove_me.eisner.decus.org-Earth.UFP (Simon Clubley) wrote in message news:<pf60GsI3nRsF@eisner.encompasserve.org>...
> 

[I will reply here for this message as I want to point something out to the
newsgroup in the next paragraph. If you want to do any further followup in
email then feel free to do so.]

> My first reply to this doesn't seem to have appeared, so I'm trying
> again - sorry if that means it appears twice. I'm answering this in
> the newsgroup since Simon raises some good points, but (for future
> adventurers, who I hope won't be put off by Simon's experience !)
> direct email will normally get a faster response.
> 

You seem a bit deflated that I have found a number of problems; don't be. :-)

The display part of your emulator has survived a lot better under VMS than a
number of more higher profile freeware emulators. VMS also has a reputation
for finding problems in emulators that pass other tests. I also want to point
out to the newsgroup that writing a 100% accurate DEC terminal emulator is
actually a hard task and it does not surprise me in the slightest that using
an emulator in a new environment will expose problems.

> I'll try to make my Makefiles more robust. Do you by any chance also
> have GTKAda installed ? This can really mess up GNU Make. Not just my
> stuff - I also cannot build GWindows programs with GTKAda installed.
> Do you think there might be some kind of conspiracy going on here ? :)
> 

Yes, GtkAda is installed.

> You have to set the emulation mode (e.g. to vt100). Use the option
> "/mode" on the command line, such as "comms /port=3 /xin /xout
> /mode=vt100" The emulation mode particularly affects the keyboard, as
> described in Appendix A. The default emulation mode is PC, not VTxxx.
> The advanced menu is enabled by the "/advanced" option. If you enable
> this, you can change the emulation mode from within the program as
> well. For example, use the command "comms /port=3 /xin /xout
> /mode=vt100 /advanced".
> 

I found the comms specific command options on the initial read, and looking
at it again, I have now noticed the pointer to the other part of the manual
containing the other options. You may need to highlight these other options
further as I missed it on a quick read of the documentation. BTW, is there
any reason why you don't just have all the menus enabled ?

>> 6) Pressing Delete sends Backspace (8 decimal) instead of delete
>> (127 decimal). Searching for "Delete" or "Backspace" in the manual did not
>> turn up anything relevant.
>  
> You can send ASCII.DEL by pressing CTRL+backspace (this is described
> in appendix A.2 - I don't know why your search didn't find this). I
> decided not to use the DEL key since it is used as part of the editing
> keypad simulation (required in vt420 mode, also described in appendix
> A). I agree this may be confusing, - I could make the DEL key work as
> you expect in vt100 mode, but I would have to disable it again in
> vt420 mode. One of the problems with the whole keypad emulation is
> that the layout of the IBM keypad is so different to the DEC layout
> that there doesn't seem to be an obvious mapping that suits all modes.
> 

Ah, my DEC background is showing here as there's a terminology confusion here.

When I talk about the Delete key, I am referring to the large key in the upper
right hand of the main keyboard, which is marked Backspace on a PC keyboard,
but which I have always known in recent times as the Delete key (on really
old terminals, it was known as the Rubout key).

On a DEC terminal, that key can be configured to send decimal 127 (Delete) or
decimal 8 (Backspace). On VMS systems that key needs to send decimal 127.

I found the Ctrl+Backspace reference BTW, which is what I ended up using.
What I was looking for was a way to configure Backspace so that it sends
Delete without having to use Ctrl.

My suggested DEC to PC keyboard mapping if you are interested:

Numeric keypad maps one to one with the DEC numeric keypad (including PF1
through PF4 on the top row of the numeric keypad), apart from the PC plus key,
which is mapped to the DEC keypad comma. The DEC keypad minus is ignored.

This choice about which key to drop is made because comma gives you "delete
character" in a DEC editor.

Editing keypad:
	Insert => Insert Here
	Delete => Remove
	Home => Find
	End => Select
	Page Up => Prev Screen
	Page Down => Next Screen

Access the high numbered DEC function keys by using Ctrl. Ie: Ctrl+F6 gives
you F16.

> 
>> 9) Do you have any support for the bell ? VMS operations that normally ring
>> the bell are silent.
> 
> Yes, the emulator supports ASCII.BEL. There must be some other control
> sequences that cause a bell on a real vt100. I'll fix them as I find
> them.
> 

It's just a normal ASCII.BEL. Are you sounding the PC's internal speaker like
MS-Kermit does, or are you sending something out through the sound card, which
may not have speakers attached to it ?

> Also, I think Linux is well provided for in terminal emulation, whereas
> Windows is not. At least, not with non-commercial solutions.
>

Try running some of those Linux emulators against VMS and see how long they
last! :-) The only one that I tried that survived was xterm, and I had to
use a DEC keyboard script with it. In fairness though, it is a year or two
since I last evaluated most of these Linux emulators, so they may have
improved since then.

> 
> Yes, thanks. However, if you can find the time to go at least repeat
> your tests with the emulation mode set to vt100 (which would solve a
> few of the problems) I'd be particularly interested in any more
> information you could give me on the reverse video problem. If you do
> get time, perhaps you could run the program with the
> "/displaycontrols" option enabled, and then save the entire virtual
> buffer to a file and email it to me ?.
> 

I will try and find some time over the next 2-3 weekends to redo some of the
testing. No promises though.

Simon.

-- 
Simon Clubley, clubley@remove_me.eisner.decus.org-Earth.UFP       
VMS advocate: One who makes a Mac advocate look like a beginner at advocacy.



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2003-06-30 12:24 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-06-29 16:12 Ada Terminal Emulator evaluation notes Simon Clubley
2003-06-30  0:53 ` Ross Higson
2003-06-30  3:49 ` Ross Higson
2003-06-30 12:24   ` Simon Clubley

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox