I use the word "terminal" in quotes to designate either a real
DEC VT100 or an emulated "terminal" under emulators such
as Ersatz-11 which support up to 255 character columns
and maybe eventually 255 lines (at present only up to 60 lines)
and other emulators of the VT100 or any other real DEC
terminals - including Ersatz-11 which also emulates the DEC
VT52. However, I have avoided testing any code which is
specifically for the VT52 since there seems to be zero
interest in an emulation of a VT52 with more than 24 lines.
Actually, there seems to be zero interest in emulation of a
VT100 with more than 24 lines and 132 columns, but I will
use the code for myself, so I will pursue the challenge.
Rick Murphy wrote:
At 05:57 PM
7/15/2012, Jerome H. Fine wrote:
How much memory is available for a program under
OS/8?
VT support isn't available until the system has at least 16k of
memory. The OS takes up 256 words of that.
The VT100 can also use a screen with 132 columns and
24 lines which requires an extra 1248 bytes. The VT100
variants of KED all support both 80 character columns and
132 character columns on a VT100. The KED commands:
SET SCREEN 80
SET SCREEN 132
allow the use to switch between 80 character columns
and 132 character columns. MACRO-11 listings are
normally 132 character columns and is very difficult to
read such listings using only 80 character columns.
Would it be possible to provide support for those extra
1248 bytes for a screen buffer for the VT100 under OS/8?
80x24 frame buffer including flags occupies a big
chunk of that - 2048
words (which holds the current screen image plus video attributes). On
that 16k system, TECO is overlayed to make things fit. More memory
means that the overlays get remapped into different memory fields,
avoiding the swapping.
INTERESTING!!! Under RT-11, that concept is also available
under Mapped Monitors, but only when the program is explicitly
LINKed for virtual overlays. BUT, when standard low
memory overlays are requested, there is no method to
avoid using disk I/O read requests for each overlay
segments as required. Of course, if the disk block in
question is already in cache memory, then there is just
a memory to memory transfer of the words for the segment.
Under an RT-11 Mapped Monitor which supports 4 MB
of memory, most programs can be initiated within a region
of extended memory of 64 KB for which the program address
range is 0 octal to 177777 octal. No memory is lost to the OS -
or more to the point, the program executes out of USER
memory and the OS continues to execute out of KERNAL
memory. All of this separation makes use of the MMU
hardware.
Making OS/8 TECO support bigger screens wouldn't
be either practical
or useful as the current
"current" what?
I agree that with such a limited size of memory under OS/8,
more than 24 lines by 132 columns is not a possibility. RT-11
was also extremely limited in the 1970s when many PDP-11
systems were using core memory, usually with a maximum of
32 KB (or 16 KW) including memory for the OS. But, when
the VT100 became available, as far as I understand, there was
always support for 24 lines by 132 columns.
Now that a full 64 KB are available and Ersatz-11 makes it
trivial to use a VT100 ANSI "terminal" with 60 vertical lines
by 200 character columns, it seems worth my effort to modify
KED to support that availability, although I will probably limit
my usage to a maximum of 60 lines by 150 character columns.
As for
"terminals" which have more than 24 lines and / or 132 columns,
even 40K bytes is not very much memory for a "terminal" with 100 lines
and 200 columns, but it is sufficient.
40K 8-bit bytes (what you're talking about here for just your screen
buffer) is roughly 26KW out of the maximum 32KW for an OS/8 system.
Doesn't leave much for code, does it? That's why it's either
impractical or so heavily overlayed that it wouldn't be usable.
The variant of KED for the VT100 which uses low memory overlays
presently requires just over 16 KB for code and fixed data. When run
under an RT-11 Mapped Monitor which makes 64 KB, an enhanced
KED could use 20 KB for a screen buffer for a "terminal" with 100 lines
and 200 columns as opposed to 3 KB for a VT100 (or an emulated
VT100) with 24 lines and 132 columns. Even with the larger screen
buffer, there would still be sufficient memory for everything else that
is required, although the cut / paste buffer would be considerably
smaller.
Unfortunately, at the moment, there is a catch 22 within the code in
KED which divides the memory into various portions depending on
how much is available. That code is executed before the code makes
a request to determine which file is to be used. Type ahead of the
file specification is explicitly allowed. However, in order to determine
the number of lines and columns of the "terminal", the request sent to
the terminal receives characters back from the terminal which will
conflict with any characters which are already present for the file names.
In addition, the request to determine the files names uses the memory
made available which depends on the size of the screen. There may
also be other code and data conflicts if the screen size is determined
again after the file names are determined.
Requesting the largest possible memory for the screen buffer and then
wasting most of it is not reasonable, but shifting the order of the
code may be difficult. The present compromise uses a screen buffer
for 60 lines by 132 columns when only 44 lines by 132 columns are
actually required. The wasted 2000 bytes is not really a problem
when 64 KB are available.
So now the challenge is to determine how to divide up the available
memory to use just the size required for the screen buffer without
wasting any. It would have been much easier if KED had used some
other memory that was temporarily available to first request the
file names, then allocated the available memory for the screen buffer
and everything else. But then I would not be writing this response
and looking forward to the challenge of finding a solution!!!!!!!!!!!!!
Did anyone read this to the end?
Any suggestions? Again, will anyone else ever use a VT100 with
KED and more than 24 lines by 132 columns? It really is sort of
interesting that the solution which supports 44 lines by 132 columns
is already being used to develop and look for other enhancements
within KED itself. That variant of KED is K42 after the VT420
which supports 48 lines by 132 columns.
Jerome Fine