User Tools

Site Tools


plato:architecture:memory.structures

Memory Structures

Overview

A fundamental understanding of memory structures used within the PLATO subsystem is crucial when working with most aspects of not only PLATO, but of related subsystems such as the CONDENSER, FORMATTER and PLATO Disk storage.

PLATO Control Points

Referring to this topology, it is important to note that some structures are omitted to limit confusion. Some of those elements are referenced here as they support inter-subsystem communication.

Critical Elements

  • Extended Memory (EM) is accessible to all components in the running NOS system.
  • Central Memory (CM) is limited to the Field Length (FL)1) of each Control Point and Component.

Extended Memory (EM)

Extended Memory is used to pass data between components and to store larger blocks of data.

EM is divided into a number of sections:

  • Special System Buffers: Not discussed here
  • Station Banks: One subsection, a station bank, for each of the physical terminals defined. Currently, a single station bank is 30 words long. station bank is indexed by physical station number.
  • Lesson Buffer2): A large area of managed memory divided into lessons. While a lesson may hold a TUTOR lesson binary, it may hold other kinds of data as well.

    Examples of the various types of data stored in the lesson buffer are:
    • Lesson Binary (filetype=binary)
    • Lesson List (blocktype=leslist)
    • Line Set (blocktype=lineset)
    • Commons (blocktype=common)
    • Storage
    • Character Sets (blocktype=charset)
    • Student Bank

PLATO CM

Concept: Time Slices

In PLATO, all users are given a slice of time (literally “time shared”) in which their 'context' is swapped-in, then swapped-out. This “swap space” is stored in Extended Memory and are loaded into Central Memory ONLY for the duration of the time-slice.

Between time slices ALL user data/buffers are held in Extended Memory.

During a users active time slice, the user's buffers from EM are loaded into Central Memory (CM) for processing:

  1. Station Bank
  2. Student Bank (a type of lesson buffer entry with user-specific information)

The Student Bank and Station Bank together are the users execution context.

See file pftext blocks 1-e to 2-d for the layout of Station Bank

The Student Bank is divided into two sections: -

  1. Temporary Session information
  2. Long-term information stored in the users records 3)

See on-line file platxt blocks 4-e to 6-f for layout of Student Bank

Other items held in CM:

  • MOUT buffer - See File paramc block 2-d for standard outcodes FIXME: need to add a reference to l1pmods 4-c and 4-d for level 1 codes Outcodes
  • Unit binary being executed
  • Storage segments
  • Common segments

Central Memory Layout

As Of 2025 May 05

Map of Memory Blocks Block Sysloc Location Length Station ststart 00000111 000037 Student(t) sbstart 00000150 000474 Student(p) rcstart 00000605 000064 Student(v) studvar 00000671 000226 MOUT mout 00002211 001750 router v 00013505 000100 local v 00013605 000226 nc vars ncvrbuf 00014033 005670 Student(t) = Temporary part of student bank Student(p) = Permanant part of student bank Student(v) = Student variables

MOUT Buffer

Each MOUT Buffer entry has a header and zero or more words of extra data.

Header:

011OUTCODE1223LENGTH2435DATA3647DATA4859DATA

36/DATA, 12/LENGTH, 12/OUTCODE - Outcodes

LENGTH is the total length of the package (0 or 1 for header only).

Non-header words can contain anything.

1)
Field Length is the continuous collection of CM words which are assigned to the Control Point
2)
NOTE: The PLATO component has a memory manager that periodically cleans up the lesson buffer.
3)
The concept of records is a PLATO construct similar to an account on modern-day systems.
plato/architecture/memory.structures.txt · Last modified: 2025/05/06 12:24 by Dale Sinder