Table of Contents

Phase 1 - Define Terminal Capabilities

William Schaub, Dale Sinder and Steve Zoppi 2025/05/09

Tutorial Phases

Tip

The tutorial phases are arranged in a prescribed order, wherein each phase builds upon the previous. Performing these activities out of order will leave the installation in an inconsistent, or perhaps inoperable state.

Objective

The Level One PLATO Protocol requires that a terminal emulator supports an array of new features that need to be individually tracked and available to lesson authors in the form of system defined variables 1) These variables (among other things) express the capabilities of the connected terminal.

Phase 1 accomplishes this by defining an appropriate place to store the information. One word is added to the student bank 2) and another to the station bank 3) The student bank is available to the PLATO executor while the station bank is available to both the executor and formatter.

Procedure

Extend the Student Bank

The Student Bank describes terminal capabilities which an author can interrogate/use. This needs to be our first modification as other system component rely on interrogating these properties / capabilities in the course of normal execution.

Follow Along

Code file plmods000

Block 7d - tbtcap

We extend this bank by one 60-bit word having the following properties:

01234567891011(A)(B)(C)(D)(E)(F)(G)(H)(I)(J)(K)(L)121314151617181920212223(M)(N)(O)(P)(Q)(R)(S)(T)(U)(V)(W)(X)242526272829303132333435(A2)(B2)(C2)(D2)(E2)(F2)(G2)(H2)(I2)(J2)(K2)(L2)363738394041424344454647(M2)(N2)(O2)(P2)(Q2)(R2)(S2)(T2)(U2)(V2)(W2)(X2)4853545556575859(A3)(G3)(H3)(I3)(J3)(K3)(L3)

tbtcap bss 1 terminal capabilites (A) cp.fill equ 0 fill bit - least sig. bit (B) cp.pal equ 1 palette (C) cp.styl equ 2 styles (D) cp.ftou equ 3 fine touch (E) cp.kerm equ 4 kermit (F) cp.trap equ 5 trap/stretch (G) cp.dsty equ 6 define styles (H) cp.lexe equ 7 local exec (I) cp.xor equ 8 xor mode (J) cp.img equ 9 image (K) cp.inhb equ 10 terminal inhibit/allow (L) cp.txt1 equ 11 terminal text edit assist 1 (M) cp.aud equ 12 basic audio functions (N) cp.tprt equ 13 text screen print bit (Q) 16 sound (R) 17 multi-click (S) 18 7-bit ascii ext / sys traps (T) 19 multi-click enable/disable (U) 20 full control keys available (v) 21 local fonts (W) 22 image load (X) 23 print control * * bits 48 - 53 operating system id * (A3) cp.osid equ 48 cp.oswi equ 6 (J3) cp.pixt equ 57 pixel touch on bit (K3) cp.chrd equ 58 fill chord flag (L3) cp.filf equ 59 fill flag - most sig. bit

Extend the Station Bank

In the station bank, 4) we extend the field list by one word with the following properties:

0123678911(K)(J)(I)(H)(G)(F)(E)1223(D) TERM Y SCR SIZE2435(C) TERM X SCR SIZE3647(B) PLATO Y SCR SIZE4859(A) PLATO X SCR SIZE

terscrn data 0 (A) 12/ plato x screen size - most sig. bits of word (B) 12/ plato y screen size (C) 12/ terminal x screen size (D) 12/ terminal y screen size (E) 3/ reserved for protocol level flags (F) 1/ Word Coordinate mode active flag (G) 1/ ascii plato iv bit (no mode 4) (H) 4/ mtutor version number (I) 1/ cdc epap bit (J) 1/ protocol level 1 flag (K) 1/ color flag - least sig. bit

Add System Reserved Word

Follow Along

Code file plmods000

Block 7e - tbtcap

Among other new system reserved words, add ztlevel whose value is:

The other system reserved words follow ztlevel:

sym ztlevel,70,95,icmpnam,sname7,ztlevel,s sym ztosid,70,95,icmpnam,sname6,ztosid,s sym ztxpps,70,95,icmpnam,sname6,ztxpps,s sym ztypps,70,95,icmpnam,sname6,ztypps,s sym ztxppc,70,95,icmpnam,sname6,ztxppc,s sym ztyppc,70,95,icmpnam,sname6,ztyppc,s sym zxmax,70,95,icmpnam,sname5,zxmax,s sym zymax,70,95,icmpnam,sname5,zymax,s sym zymin,70,95,icmpnam,sname5,zxymin,s sym zxmin,70,95,icmpnam,sname5,zxymin,s

Success

At this point, the critical system definitions have been mapped-out and we are now ready to move on to the next phase: Phase 2 - Set the 'Capabilities' Values

1)
The words “System Reserved Words” and “System Defined Variables” are used to mean the same thing. A list of System Reserved Words may be found in lesson aids a.k.a. INFO by pressing DATA and searching “system variables”.
2)
The Student Bank is a per-active-session region of storage which maintains information about the currently executing context. Student banks are dynamically allocated when NEXT is pressed at an inactive terminal.
3)
The Station Bank is a per terminal region of storage which maintains information about the currently connected terminal (or station). Station banks always exist and are in memory in a single block, one after another.
4)
Most significant bits in top row, least significant on the bottom.