mirror of
https://github.com/PDP-10/its.git
synced 2026-01-27 20:47:38 +00:00
SITS - Small ITS.
Timesharing system for the Logo PDP-11/45.
This commit is contained in:
86
doc/jay/sits.doc
Normal file
86
doc/jay/sits.doc
Normal file
@@ -0,0 +1,86 @@
|
||||
.xgp
|
||||
.nofill
|
||||
.center
|
||||
USING SITS
|
||||
I. System Console
|
||||
A. start RUG at 157000
|
||||
if RUG doesn't start...
|
||||
1. halt machine
|
||||
2. load MOVING RUG BOOT paper tape
|
||||
3. load address 177002
|
||||
4. clear switches
|
||||
5. hit START
|
||||
to load SITS
|
||||
B. <alt>L 0: SITS
|
||||
C. <alt>G
|
||||
The console should now type out SITS IS UP! along with version numbers and LOGIN:
|
||||
If, for some reason, you want to get back to RUG, this can be done by...
|
||||
A. Clear all switches
|
||||
B. Switch 15 on
|
||||
To salvage disks
|
||||
A. Get into RUG
|
||||
B. <alt>L 3: SALV
|
||||
C. <alt>G
|
||||
After the opening statement (SALV XX), to check a disk type <N>C, where <N> is the
|
||||
disk number (0-3).
|
||||
To return to RUG from the SALVAGER, type <cntrl>Z.
|
||||
To get a fresh copy of RUG while in RUG, type <alt><cntrl>U.
|
||||
|
||||
II. User Consoles
|
||||
A. Television Displays
|
||||
1. Hit <DO IT> key
|
||||
2. Type LOSER NAME <cr>
|
||||
B. Teletypes
|
||||
1. type <cntrl>Z
|
||||
2. type LOSER NAME <cr>
|
||||
|
||||
ENTERING A NEW USER ON THE SYSTEM
|
||||
1. RUN A DDT
|
||||
2. RUN INQUIR (<ALT>L . INQUIR,OR : . INQUIR)
|
||||
THE FOLLOWING IS A LIST OF THE COMANDS IN INQUIR WITH A SHORT DESCRIPTION OF ITS USE
|
||||
|
||||
LUSERS (L) LIST LUSERS I KNOW
|
||||
ENTER (E) <LUSER> ENTER A NEW LUSER
|
||||
QUIT (Q) QUIT
|
||||
DELETE (D) <LUSER> DELETE A LUSER
|
||||
CHANGE (C) <LUSER> CHANGE FACTS ABOUT A LUSER
|
||||
WHOIS (W) <LUSER> TELL ME ABOUT <LUSER>
|
||||
HELP (?) HELP /
|
||||
|
||||
THE INFORMATION WHICH IS STORED FOR EACH USER IS
|
||||
1. HIS LOGIN NAME
|
||||
2. HIS FULL NAME
|
||||
3. HIS DIRECTORY PATH (IE. 1; USERS <DIR NAME>)
|
||||
4. HIS DEFALT PROGRAM (IE. THE PROGRAM THAT IS AUTOMATICALLY LOADED
|
||||
FOR HIM WHEN HE LOGS IN, NAMELY DDT OR LOGO)
|
||||
|
||||
LOGIN ERRORS...
|
||||
1. NON-EXISTANT LOSER
|
||||
THAT USER HAS TO BE ENTERED USING INQUIR
|
||||
2. LOSER FILE HAS ZERO LENGTH
|
||||
THE FILE OF LOSERS FAILED, DO
|
||||
DDT<CR>
|
||||
<CNTRL>F ; <CR> TO SEE IF THERE IS A NON-ZERO LENGTH LOSER FILE
|
||||
IF THERE IS, DELETE THE ZERO FILE(S) AND HOPE FOR THE BEST
|
||||
IF THERE ISN'T, DELETE THE ZERO LENGTH FILES AND RETYPE THE FILE.
|
||||
|
||||
IN THE EVENT THAT THE SYSTEM DOESN'T LET ANYONE LOG ON, (WHICH IT SHOULDN'T DO)
|
||||
YOU CAN LOG IN AS AN ANONOMOUS HACKER AT THE SYSSPR LEVEL BY TYPING .? WHEN IT ASKS
|
||||
FOR A LOGIN NAME
|
||||
|
||||
THE FOLLOWING IS A LIST OF THE COMMANDS AT THE SYSSPR LEVEL
|
||||
|
||||
LOAD (L)
|
||||
LOGO (LO)
|
||||
LOGOUT
|
||||
DDT (D)
|
||||
KILL
|
||||
HELP (?)
|
||||
CONTINUE (CO)
|
||||
PEEK
|
||||
ONLINE <LOSER>
|
||||
SYSSPR
|
||||
GUN <LOSER>
|
||||
SEND <LOSER>
|
||||
RSTART (RS)
|
||||
|
||||
@@ -316,6 +316,7 @@
|
||||
- SENVER, Chaosnet SEND server.
|
||||
- SHELL, Unix-like command line processor.
|
||||
- SHUTDN, shut down ITS.
|
||||
- SITS, Small ITS for the Logo PDP-11/45.
|
||||
- SN, snoop terminal.
|
||||
- SPCWAR, Spacewar game.
|
||||
- SPEEDY, instruction timing test.
|
||||
|
||||
BIN
doc/rjl/edit.memo
Executable file
BIN
doc/rjl/edit.memo
Executable file
Binary file not shown.
3
doc/sits/-read-.-this-
Executable file
3
doc/sits/-read-.-this-
Executable file
@@ -0,0 +1,3 @@
|
||||
Directory for Small Incompatible Timesharing System-
|
||||
RJL, BEE, FMH, etc.
|
||||
|
||||
60
doc/sits/conven.3
Executable file
60
doc/sits/conven.3
Executable file
@@ -0,0 +1,60 @@
|
||||
SITS CONVENTIONS
|
||||
|
||||
THIS FILE CONTAINS INTERNAL CONVENTIONS IN SITS. SHOULD NOT ONLY CONTAIN THE CONVENTION
|
||||
BUT ALSO A SHORT JUSTIFICATION, AND WHAT WOULD HAVE TO BE CHANGED IF THE CONVENTION IS
|
||||
CHANGED. THE ENTRIES SHOULD BE SORTED BY TOPIC.
|
||||
|
||||
UPT'S:
|
||||
1. THE IN CORE BIT IS NOT NECESARILY ACCURATE ON THE INTERRUPT LEVEL. THIS WAS
|
||||
ADOPTED BECAUSE IT CAUSES LESS PROCESSING ON THE UPT AT INTERRUPT LEVEL. TO
|
||||
CHANGE IT, IT IS ONLY NECESSARY TO MOVE THE INSTRUCTION IN DSKRQ, TO BE BEFORE
|
||||
RESTORING PRIORITY LEVEL.
|
||||
|
||||
2. THE CIRCULAR LIST STRUCTURE OF UPT'S CANNOT BE DELETED FROM ON THE INTERRUPT
|
||||
LEVEL. THIS IS TO AVOID THE PROBLEM OF A PROCESS LINKING THROUGH THE CIRCULAR
|
||||
LIST, AND GETTING ISOLATED IN A UPT THAT WAS LINKED OUT. THIS CANNOT BE CHANGED
|
||||
UNLESS SOME WAY IS DEVISED TO INDICATE WHO IS LINKING THROUGH A GIVEN LIST
|
||||
AT A PARTICULAR TIME.
|
||||
|
||||
3. THE A AND W BITS ARE UPDATED WHENEVER THE SEGMENTATION REGISTERS ARE UNLOADED.
|
||||
THIS IS ONLY IN SPHERES. FOR FUPT'S THE BITS MUST BE SET MANUALLY (WHENEVER
|
||||
A WRITE IS DONE INTO THE PAGE, OR BEFORE THE PAGE IS UNLOADED. THE M (MODIFIED)
|
||||
BIT IS THE INCLUSIVE OR OF THE W BITS, AND IS ONLY CLEARED WHEN THE PAGE IS
|
||||
SWAPPED OUT TO SOURCE. IT INDICATES IF THE PAGE HAS BEEN MODIFIED SINCE
|
||||
BEING WRITTEN TO SOURCE. THE N BIT TELLS IF A PAGE HAS JUST COME FROM SOURCE.
|
||||
IT INHIBITS THE INCLUSIVE OR OF THE W BIT, INTO THE M BIT.
|
||||
|
||||
4. THE UPT STRUCTURE MAY NOT BE ACCURATE ON THE INTERRUPT LEVEL. THIS THEN
|
||||
PREVENTS AN INTERRUPT ROUTINE FROM LINKING THROUGH THE UPTS.
|
||||
ANY GIVEN UPT, HOWEVER WILL BE AT LEAST PARTIALLY ACCURATE.
|
||||
|
||||
5. BEFORE CREATING A UPT TO HANG OFF OF A FPT THE FPTLCK BIT MUST BE LOCKED.
|
||||
THIS IS SO THAT THE FPT WILL NOT BE DELETED AND SO THAT THE COMMON START
|
||||
AND LEGNTH FIELDS WILL NOT CHANGE.
|
||||
|
||||
6. THE A, W, M, AND N BITS ARE ONLY ACCURATE FOR THE GIVEN PAGE. FOR SWAPPING
|
||||
PURPOSES, ALL THE UPT'S BITS IN THE CIRCULAR LIST MUST BE INCLUSIVE OR'ED
|
||||
TO GET THE CORRECT STATUS. THIS LETS THE BIT MUNGING GO ON AT THE INTERRUPT
|
||||
LEVEL. ALSO SINCE HOPEFULLY THERE WILL BE MORE UNLOADING OF THE SEGMENTATION
|
||||
REGISTERS, THAN SWAPPING, THIS SHOULD SAVE TIME.
|
||||
|
||||
CAPABILITIES:
|
||||
1. BEFORE A CAPABILITY CAN BE DELETED FROM THE C-LIST OF A SPHERE, THE SCLSLK MUST
|
||||
BE LOCKED WITH A MINUS 1. THEN WHEN IT IS LOCKED, THE PROCESS NO. OF THE
|
||||
LOCKER MUST BE PLACED INTO THAT LOCATION. THEN THE ENTIRE SPHERE MUST BE
|
||||
STOPPED. THIS IS TO KEEP THE C-LIST IN A CONSISTENT STATE, WHILE THE DELETION
|
||||
IS OCCURING. AN ALTERNATIVE IS TO REQUIRE EACH SYSTEM CALL TO ONLY DEPEND ON
|
||||
THE CAPABILITY'S STATE AT THE START OF THE CALL.
|
||||
|
||||
2. A CAPABILITY SLOT THAT IS ABOUT TO BE USED, BUT THE CAPABILITY HASN'T ACTUALLY
|
||||
BEEN CREATED YET, HAS A TYPE WORD OF -1. THIS IS TO KEEP THAT SLOT FROM BEING
|
||||
USED, WHILE THE CAPABILITY IS IN THE PROCESS OF BEING CREATED. AN ALTERNATIVE
|
||||
TO THIS IS CAUSING EACH CAPABILITY CREATE ROUTINE TO BE IN A PCLOSERABLE STATE
|
||||
WHENEVER IT ACTUALLY IS READY TO PUT THE CAPABILITY INTO THE C-LIST.
|
||||
|
||||
DISKS:
|
||||
1. IN ORDER TO SWAP SOMETHING OUT TO SOURCE, IT IS NECESSARY FOR THE ROUTINE THAT
|
||||
MAKES THE REQUEST TO SET THE W BIT IN THE UPT'S IF THE PAGE HAS BEEN MODIFIED.
|
||||
THIS IS BECAUSE THE DISK ROUTINES WILL JUST ASSUME THE PAGE AT SOURCE IS THE
|
||||
SAME AS THE CURRENT ONE, AND NOT INITIATE THE TRANSFER.
|
||||
|
||||
921
doc/sits/docum.66
Executable file
921
doc/sits/docum.66
Executable file
@@ -0,0 +1,921 @@
|
||||
.xgp
|
||||
.font 0 25fdel
|
||||
.ce
|
||||
SITS system calls.
|
||||
.sp 2
|
||||
.adjust
|
||||
This file describes the SITS system calls. When a system call is executed, the
|
||||
arguments are pushed onto the stack (last argument first, next to last next . . . ).
|
||||
Then the system call is executed. The system call is an emulator trap.
|
||||
.sp
|
||||
If a call is successful, all the arguments are popped off the stack
|
||||
and the condition codes are
|
||||
cleared. If it fails, the Z condition code is set, and the arguments are not popped
|
||||
off.
|
||||
There are two versions of every system call: the .FOO version will just return with Z set if it fails. The $FOO version will cause a .EMTTF type of fault if it fails. This is handy for system calls that shouldn't ever fail:
|
||||
rather than inserting a test for failure or hoping it never fails and letting
|
||||
all hell break lose if it does, use the $FOO version.
|
||||
A failing system call should also set the process's error word,
|
||||
which can be read with .GERRW.
|
||||
.page
|
||||
.spread
|
||||
/.NOOP/Assembles as: EMT 0/Inputs: 0 Outputs: 0
|
||||
.br
|
||||
No-op system call, does nothing.
|
||||
|
||||
.br
|
||||
.spread
|
||||
/.FORK/Assembles as: EMT 1/Inputs: 1 Outputs: 0
|
||||
.br
|
||||
Creates a new process in the current sphere, and starts it. The
|
||||
argument is the starting address.
|
||||
|
||||
.br
|
||||
.spread
|
||||
/.POOFF/Assembles as: EMT 2/Inputs: 0 Outputs: 0
|
||||
.br
|
||||
Makes the process executing it disappear. (unless there still is
|
||||
a capability to it, in which case it is just stopped)
|
||||
|
||||
.br
|
||||
.spread
|
||||
/.SLEEP/Assembles as: EMT 3/Inputs: 2 Outputs: 0
|
||||
.br
|
||||
Doesn't return from the system call until the time specified has
|
||||
elapsed. The two arguments form a double precision integer.
|
||||
the first is the low order 16 bits, the second the high order.
|
||||
if the argument is positive, it returns that many 60ths of a
|
||||
second later. If the argument is negative, it is negated
|
||||
(making it positive), and the system call returns when the
|
||||
system time is equal to that number. This call modifies its
|
||||
arguments.
|
||||
|
||||
.br
|
||||
.spread
|
||||
/.SINK/Assembles as: EMT 4/Inputs: 0 Outputs: 0
|
||||
.br
|
||||
Disables the use of the floating point processor for this
|
||||
process. (this is the default state)
|
||||
|
||||
.br
|
||||
.spread
|
||||
/.FLOAT/Assembles as: EMT 5/Inputs: 0 Outputs: 0
|
||||
.br
|
||||
Enables the use of the floating point processor for this process.
|
||||
|
||||
.br
|
||||
.spread
|
||||
/.INVOK/Assembles as: EMT 6/Inputs: 3 Outputs: Var
|
||||
.br
|
||||
This is a series of calls that are further decoded by their
|
||||
arguments. The bottom byte of the first argument is the
|
||||
capability number that this .INVOK refers to. The top byte of
|
||||
it specifies the function. This is further desrcibed elsewhere.
|
||||
|
||||
.br
|
||||
.spread
|
||||
/.QULK/Assembles as: EMT 7/Inputs: 1 Outputs: 0
|
||||
.br
|
||||
The argument specifies a queue capability to lock. The system
|
||||
call returns when it succeeds in locking the queue.
|
||||
|
||||
.br
|
||||
.spread
|
||||
/.QUNLK/Assembles as: EMT 10/Inputs: 1 Outputs: 0
|
||||
.br
|
||||
The argument specifies a queue capability to unlock. The call
|
||||
unlocks it. These two calls implement the normal P and V operations.
|
||||
|
||||
.br
|
||||
.spread
|
||||
/.TTGIV/Assembles as: EMT 11/Inputs: 2 Outputs: 0
|
||||
.br
|
||||
The first argument specifies a master sphere capability, which
|
||||
specifies to what sphere the capability is given. The second
|
||||
argument specifies a tty capability that describes the tty that
|
||||
is going to be given away. If the tty belongs to the giver,
|
||||
control then is passed to the inferior, otherwise, it waits
|
||||
until the tty is given to it, and then gives it to the inferior.
|
||||
|
||||
.br
|
||||
.spread
|
||||
/.TTGET/Assembles as: EMT 12/Inputs: 1 Outputs: 0
|
||||
.br
|
||||
The argument specifies a tty capability that the system will
|
||||
regain control for the sphere executing it. It will succeed if
|
||||
the tty is owned by an inferior to the executing sphere.
|
||||
otherwise it will hang until the tty is given to it.
|
||||
|
||||
.br
|
||||
.spread
|
||||
/.WRDI/Assembles as: EMT 13/Inputs: 1 Outputs: 1
|
||||
.br
|
||||
he bottom byte of the argument specifies the c-list number
|
||||
of an i-o device capability. The top byte is used for device
|
||||
dependent flags. The system call then returns a word input from
|
||||
that device.
|
||||
|
||||
.br
|
||||
.spread
|
||||
/.WRDO/Assembles as: EMT 14/Inputs: 2 Outputs: 0
|
||||
.br
|
||||
The bottom byte of the first argument specifies the c-list
|
||||
number of an i-o capability. The second argument is then output
|
||||
to the device specified by the i-o capability.
|
||||
|
||||
.br
|
||||
.spread
|
||||
/.BYTI/Assembles as: EMT 15/Inputs: 1 Outputs: 1
|
||||
.br
|
||||
The bottom byte of the argument specifies the c-list number of
|
||||
an i-o capability. The top byte contains device dependent flags.
|
||||
the system call then returns a byte input from that device.
|
||||
|
||||
.br
|
||||
.spread
|
||||
/.BTYO/Assembles as: EMT 16/Inputs: 2 Outputs: 0
|
||||
.br
|
||||
The bottom byte of the first argument specifies the c-list
|
||||
number of an i-o capability. The bottom byte of the second
|
||||
argument is then output to that device.
|
||||
|
||||
.br
|
||||
.spread
|
||||
/.BLKI/Assembles as: EMT 17/Inputs: 3 Outputs: 0
|
||||
.br
|
||||
The bottom byte of the first argument specifies the c-list
|
||||
number of an i-o capability. The top byte contains device
|
||||
dependent flags. The second argument is the negative number
|
||||
of bytes to transfer. The system call then transfers that
|
||||
number of bytes from the input device to the destination
|
||||
specified by the third argument the system call may be updated,
|
||||
and the arguments changed.
|
||||
|
||||
.br
|
||||
.spread
|
||||
/.BLKO/Assembles as: EMT 20/Inputs: 3 Outputs: 0
|
||||
.br
|
||||
The three arguments are the same as .BLKO, except the bytes are
|
||||
transferred from the users core to the device.
|
||||
|
||||
.br
|
||||
.BYTI, .WRDI, and .BLKI all return with Z and V set if an attempt is
|
||||
made to read past the end of file. In the case of .BLKI, the pointers
|
||||
left on the stack reflect how far you got.
|
||||
.sp
|
||||
.br
|
||||
.spread
|
||||
/.MAP/Assembles as: EMT 21/Inputs: 4 Outputs: 0
|
||||
.br
|
||||
Creates or deletes a page for a specified sphere. If a page
|
||||
already exists in the specified place, it is deleted. The bottom
|
||||
byte of the first argument is a sphere capability to the sphere
|
||||
that the page is to be inserted to. The sphere capability must
|
||||
have core write access. The top byte is the access to give the
|
||||
sphere to that page (read only, read-write, etc.) the bits are .CRRD
|
||||
for read only, .CRWRT for read-write access, .CREX for
|
||||
execute only access, and .CRPRI for private page. The bottom
|
||||
byte of the second argument is the source of the page. (-1 for
|
||||
fresh page, -2 for absolute page, -3 for don't create a new page
|
||||
(just delete the current page), -4 for expand the current page
|
||||
(this works by offseting the user page in a virtual 4k page, as
|
||||
specified by the start and length fields) or the c-list no. Of
|
||||
the capability to a sphere, file, or display). The top byte is
|
||||
number of the page to create, (0-7 i space page, 10-17 d space
|
||||
page, 20-27 i=d pages). The third argument is the page no in
|
||||
the source to get the page from. The third argument is also used
|
||||
for the start of an absolute page. The bottom byte of the fourth
|
||||
argument is the offset to the start of the page, in 512. Word
|
||||
blocks. The top byte is the length minus one of the page in
|
||||
512. Word blocks. (the sum of the start and length cannot be
|
||||
greater than 7). If the capability is to a TK display, the MAP will result in
|
||||
a page the size of the associated display buffer being mapped
|
||||
in to the appropriate sphere page. If it is to a TV display
|
||||
the page number in source argument may be 0, 1, 2, 3 or 4.
|
||||
If it is 0, 1, 2, or 3 the page mapped in is a 4K page
|
||||
of the display memory. If it is 4 the page mapped in is a 32
|
||||
word page that points to the TV control registers.
|
||||
|
||||
.br
|
||||
.spread
|
||||
/.ALLOC/Assembles as: EMT 22/Inputs: 2 Outputs: 0
|
||||
.br
|
||||
This system call can only be executed once per reloading of the
|
||||
system. It can only be executed by the system job. It then
|
||||
allocates swapping space on the disks specified. The first
|
||||
argument is the number of swap areas on the disks. The second
|
||||
is a pointer to the data about the swap areas, which is in the
|
||||
following format. The first word is the logical disk number
|
||||
that this swap area resides on. The second word is the starting
|
||||
block number of the swap area. The third word is the length of
|
||||
the swap area.
|
||||
|
||||
.br
|
||||
.spread
|
||||
/.CRUSR/Assembles as: EMT 23/Inputs: 2 Outputs: 0
|
||||
.br
|
||||
This system call creates new users and sets and reads their user
|
||||
names. Any process can read the name of the user it belongs to;
|
||||
only the system sphere can create new users or set the name of a user.
|
||||
The first argument is a flag; if the flag is positive the name of the
|
||||
user the executing process belongs to is set from the ASCIZ string
|
||||
pointed to by the second argument; if it is zero a new user is created
|
||||
and the name is set from the second argument. If the flag is negative
|
||||
the name of the user the executing process belongs to is copied as
|
||||
an ASCIZ string to the place pointed to by the second argument.
|
||||
.br
|
||||
.spread
|
||||
/.RDMAP/Assembles as: EMT 24/Inputs: 2 Outputs: 0
|
||||
.br
|
||||
This system call reads map info out of a given sphere. The
|
||||
first argument is the capability number of a sphere or master
|
||||
sphere capability to the sphere who's map is being read. The
|
||||
second argument is a pointer into the users core, where the data
|
||||
will be put. The data consists of 16. words, one per page, with
|
||||
bits as follows:
|
||||
.nofill
|
||||
.indent 5
|
||||
.PLENM mask for the length field
|
||||
.PACCM mask for the access field
|
||||
.PFIL part of file bit
|
||||
.PABS absolute page
|
||||
.PDEI data = instruction page
|
||||
.CRRD can be read
|
||||
.CRWRT can be writen
|
||||
.CREX execute only
|
||||
.PLENM is the mask for the length of the page
|
||||
(in low bits of word)
|
||||
.indent 0
|
||||
|
||||
.br
|
||||
.spread
|
||||
/.FONT/Assembles as: EMT 25/Inputs: 2 Outputs: 0
|
||||
.fill
|
||||
.br
|
||||
Read or write fonts. The first arg low byte is the
|
||||
number of the font, the high byte is function:
|
||||
.PRWRT for write into a font item, and zero for
|
||||
read into user's core. The second is a pointer into
|
||||
user's core which is where to read or write the font.
|
||||
When creating a new font the data should be in the following
|
||||
format:
|
||||
.nofill
|
||||
.indent 5
|
||||
byte offset function
|
||||
4 width of a char frame (char plus separator) in bits.
|
||||
6 maximum height of char in tv lines.
|
||||
10 length of the font data from pointer in bytes.
|
||||
12 height of a char line in tv lines.
|
||||
14 right adjusted mask (1's) the actual width of char
|
||||
40 start of a table of 128 pointers, where each pointer
|
||||
is the byte offset from the start of the font to
|
||||
the data of the char corresponding to that pointer.
|
||||
240 actual font data in bytes for chars <= 8 bits wide
|
||||
and words for chars > than 8 bits.
|
||||
.fill
|
||||
.indent 0
|
||||
|
||||
.spread
|
||||
/.SSTAT/Assembles as: EMT 26/Inputs: 1 Outputs: 0
|
||||
.br
|
||||
This call reads various random info into the users core
|
||||
about the system. The argument is a pointer into user core;
|
||||
this block of info is written into the user starting at
|
||||
that point and continuing as long as there is info.
|
||||
the current info returned is:
|
||||
.nofill
|
||||
.indent 5
|
||||
the version number of the running system
|
||||
the time since the system came up, in 60ths of a second
|
||||
the high order part of the time
|
||||
the current contents of the console switches
|
||||
.fill
|
||||
if non-zero, this word indicates the system is
|
||||
currently paying attention to the console switches
|
||||
.in 0
|
||||
|
||||
.br
|
||||
.spread
|
||||
/.VIDSW/Assembles as: EMT 27/Inputs: 2 Outputs: 0
|
||||
.br
|
||||
This call allows switching of tv monitors and buffers via
|
||||
the video switch. The first argument specifies the the source
|
||||
or buffer, the second argument specifies the destination or
|
||||
montior channel. Both source and destination arguments should
|
||||
be in the format of a mode number in the high byte and an
|
||||
argument number in the low byte. There are four modes which
|
||||
can be used with both the source and destination arguments.
|
||||
.indent 5
|
||||
|
||||
.VIABS Just map the number directly into the appropriate
|
||||
byte of the video buffer.
|
||||
|
||||
.VILOT The number is a logical tty number. this number is
|
||||
the same number as is used in the create of the tty,
|
||||
and the tty must be one of the tv tty's. For source,
|
||||
this specifies the buffer associated with this tv.
|
||||
for destination the appropriate channel is selected
|
||||
using the logical tty number to index a table.
|
||||
|
||||
.VILOD Similar to vilot except that the number is a display
|
||||
number and must be a tv display.
|
||||
|
||||
.VICAM In this case, for both source and destination, the
|
||||
number specifies a capability in the caller's sphere.
|
||||
the capablity may be either a tty or display which
|
||||
is used to get either the logical tty number or display
|
||||
number and procede as in .VILOT and .VILOD.
|
||||
.indent 0
|
||||
|
||||
.spread
|
||||
/.RUG/Assembles as: EMT 30/Inputs: 0 Outputs: 0
|
||||
.br
|
||||
Works only for SYSSPR. Causes the system to breakpoint to RUG.
|
||||
If, upon returning from RUG, it is found that the .RUG has been
|
||||
changed to something else, the PC is not incremented before
|
||||
return to user mode, causing the new instruction to be executed.
|
||||
This allows one to place breakpoints in the SYSSPR moderately
|
||||
conviently.
|
||||
|
||||
.spread
|
||||
/.GERRW/Assembles as: EMT 31/Inputs: 0 Ouptuts: Var
|
||||
.br
|
||||
This call is used to get the error code after a failing system call.
|
||||
It returns the addess in the system where the error happened, and the
|
||||
error code. If there has been no error in the executing process
|
||||
since the last .GERRW was done, the call fails (!!), setting Z
|
||||
and putting nothing on the stack. The error codes that are returned are as follows:
|
||||
.indent 5
|
||||
.nofill
|
||||
.ENUL => NO ERROR AT ALL
|
||||
.EAPEF => ACCESS PAST END OF FILE
|
||||
.EBAC => BAD ACCESS
|
||||
.EBAD => BAD ARGUMENTS TO CALL
|
||||
.EBCN => BAD CAPABILITY NUMBER
|
||||
.EBCT => BAD CAPABILITY TYPE
|
||||
.EBFN => BAD FILE NAME
|
||||
.EBFUN => BAD FUNCTION
|
||||
.EBPN => BAD PAGE NUMBER
|
||||
.ECDD => CAN'T DELETE NON-EMPTY DIRECTORY
|
||||
.EDEVE => DEVICE ERROR
|
||||
.EDFL => DISK FULL
|
||||
.EDRF => DIRECTORY FULL
|
||||
.EEAE => ENTRY ALREADY EXISTS
|
||||
.EFLOK => FILE LOCKED
|
||||
.EFNF => FILE NOT FOUND
|
||||
.EFNTL => FILE NAME TOO LONG
|
||||
.EFTL => FILE ENTRY TOO LONG
|
||||
.ENIS => NO ITEM SPACE AVAILABLE
|
||||
.ENIT => NO ITEM AVAILABLE
|
||||
.ENSS => NO SWAP SPACE LEFT
|
||||
.ERNA => RESOURCE NOT AVAILABLE
|
||||
.ERPEF => ATTEMPT TO READ PAST END OF FILE
|
||||
.ESYS => CALL MAY ONLY BE EXECUTED BY SYSSPR
|
||||
.ECLF => C LIST IS FULL
|
||||
.indent 0
|
||||
.fill
|
||||
|
||||
.spread
|
||||
/.SYSJB/Assembles as: EMT 32/Inputs: 0 Ouptuts: 0
|
||||
.br
|
||||
This magical call is executed by one and only one process in the SYSSPR.
|
||||
It provides the system with a process to perform certain operations
|
||||
that would be difficult to perform otherwise.
|
||||
|
||||
.INVOK Calls:
|
||||
|
||||
If the top bit is set in the
|
||||
function, it is declared a system function. If it is a system
|
||||
function, it is decoded as below (the symbol is byte*400)
|
||||
.indent 5
|
||||
|
||||
.br
|
||||
Byte symbol description
|
||||
|
||||
200 .DELCP Deletes the capability invoked.
|
||||
|
||||
201 .CPYCP Copies the capability invoked. The second
|
||||
argument specifies the control bits to clear.
|
||||
(bits that are set in the argument are cleared
|
||||
in the capability). The destination of the copy
|
||||
is the current sphere, and the c-list entry
|
||||
specified by the third argument. (a c-list
|
||||
entry number between 0 and 200, or -1, which
|
||||
specifies the first free c-list entry)
|
||||
|
||||
.br
|
||||
202 .GIVCP The capability invoked must be a sphere capability with
|
||||
c-list append access. The second argument
|
||||
is the c-list number of the source entry in the
|
||||
current sphere. The capability is copied
|
||||
according to the destination in .CPYCP, but the
|
||||
destination sphere is the one referred to by the
|
||||
sphere capability. The c-list entry is then
|
||||
deleted from the sphere of the giver.
|
||||
|
||||
.br
|
||||
203 .TAKCP The capability invoked must be a sphere capability with
|
||||
c-list delete access. The capability is
|
||||
taken from the sphere specified by the sphere
|
||||
capability, and the c-list number of the second
|
||||
argument. The destination is the same as .CPYCP.
|
||||
the capability is then deleted from the source
|
||||
location.
|
||||
.indent 0
|
||||
|
||||
The left column is the capability invoked.
|
||||
|
||||
.CRCAP Create the capability type in the top byte of the first argument.
|
||||
the second arguments usage is described below. The third argument
|
||||
is where to put the created capability. (capability number or -1)
|
||||
This call returns the location where the capability was created.
|
||||
The following is an exact description of what happens when a given type
|
||||
of capability is created.
|
||||
.indent 5
|
||||
|
||||
.CRCAP The second argument is discarded, and a new create capability
|
||||
is created.
|
||||
|
||||
.MSCAP A sphere is created, and made inferior to the creating sphere,
|
||||
the second argument is the enter address for the inferior sphere
|
||||
into the creating sphere.
|
||||
|
||||
.SPCAP Illegal to create, can only appear as a consequence of copying
|
||||
a .MSCAP or .SPCAP.
|
||||
|
||||
.PRCAP A process is created, and its starting address is loaded from
|
||||
the second argument. The process is not placed in any sphere,
|
||||
and is initialized in a stopped state.
|
||||
|
||||
.TTCAP The second argument is the teletype number to create a teletype
|
||||
capability for. If no capability to that teletype exists
|
||||
already, one is created, otherwise an error is returned
|
||||
|
||||
.FACAP The second argument is a pointer to a block of data. the first
|
||||
word is flags for the file or directory, which is then followed
|
||||
by the name of the file ending with a zero byte. If a root
|
||||
directory capability is being created then three bytes after the
|
||||
zero indicate the logical disk number and the block number where
|
||||
the root directory can be found. Only the system sphere can
|
||||
create a root directory capability and only one per logical disk
|
||||
is allowed.
|
||||
if a temporary file capability is being created the user
|
||||
gets total access to a file of zero length with the name he
|
||||
specified. The default version number is no version number.
|
||||
other capabilities to the file can be created only by copying
|
||||
and the file is deleted when all capabilities to it are deleted.
|
||||
If the .FARUT bit is set in the flag word, a root directory
|
||||
is created for the disk specified in the low byte of the flag
|
||||
word. (This is normally done only by the SYSSPR).
|
||||
|
||||
.QUCAP Create a queue capability. the second argument is the number of
|
||||
people who can lock the queue, without hanging for someone to
|
||||
unlock it.
|
||||
|
||||
.CLCAP Create a core link. the second argument specifies the buffer
|
||||
capability of the core link. If the length of the core link
|
||||
is longer than 64. Words (with system overhead, that allows
|
||||
a buffer length of 60. Words), the system will allocate a page
|
||||
that will be swapped for the buffer, otherwise, it will allocate
|
||||
an item, which will never be swapped. Thus short core links are
|
||||
faster, but the chance of it filling up is greater.
|
||||
|
||||
.DSCAP Create a display capability. the high byte of the second arg
|
||||
is flags. The 100000 bit means that the low byte is a capability
|
||||
if it is off the low byte is a display number. The 40000
|
||||
bit if 0 means we are looking for a tk display capability;
|
||||
if 1 we wnat a tv display. For tk displays, the 400
|
||||
bit being 1 means we want a large buffer; 0 means
|
||||
we don't care. Returned values are
|
||||
the word offset of the buffer, its length in words,
|
||||
and the capability number. (capablity number is on top
|
||||
of stack, length is second)
|
||||
for tv displays, if the low byte is 377 the first free
|
||||
display buffer is grabbed.
|
||||
|
||||
.TPCAP Create a paper tape punch capability. The second argument
|
||||
is not used. The call fails if the paper tape punch is already open.
|
||||
|
||||
.TRCAP Create a paper tape reader capability. Same as .TPCAP
|
||||
|
||||
.LPCAP Create a lineprinter/plotter capability. The second argument is not used. The printer/plotter starts in print mode. Thc
|
||||
call will fail if the lineprinter/plotter is already open.
|
||||
|
||||
.CMCAP Create a color map capability. Call will fail if a color map capability
|
||||
already exists.
|
||||
.indent 0
|
||||
|
||||
.MSCAP The top byte of the first argument is used to specify a function to be
|
||||
performed. The functions are:
|
||||
.indent 5
|
||||
|
||||
.SPPTP put process into sphere. The second argument is the capability
|
||||
number of the process to put into the invoked sphere. The
|
||||
process capability must have write access to the process, and
|
||||
the sphere capability must have c-list add access to the sphere.
|
||||
|
||||
.SPRCP return the type of capability at the c-list entry specified by
|
||||
the second argument. If there is no capability there, a zero
|
||||
is returned, otherwise the number of the capability type. (e.g.
|
||||
.SPCAP,.MSCAP ...)
|
||||
|
||||
.SPSTP stop all processes in the sphere, except that if the executing process
|
||||
is in the sphere don't stop it.
|
||||
|
||||
.SPSTR start all the processes in the sphere.
|
||||
|
||||
.SPKIL kill all processes in the sphere, except that if the executing process
|
||||
is in the sphere don't kill it.
|
||||
|
||||
.SPPGT get info about the nth process in the sphere, where n is the second
|
||||
arg. Note that the numbering of the processes in a sphere can change when
|
||||
there is one or more processes running in the sphere. The info returned
|
||||
is the PC of the process and it ID number.
|
||||
|
||||
.SPGPC get a capability to a process in the sphere. Returns a capability
|
||||
to the process whose ID words are supplied as arguments 1 and 2. The
|
||||
capability always goes to the first free capability index.
|
||||
|
||||
.SPGNP get the number of processes in the sphere.
|
||||
.indent 0
|
||||
|
||||
.SPCAP Same as .MSCAP
|
||||
|
||||
.PRCAP The top byte of the first argument is used to specify a function to be
|
||||
performed. If the .PRWRT bit is set in the function, set the processes data
|
||||
from users core, else return the processes data to user. The third argument is
|
||||
never used. The functions low bits are decoded as follows:
|
||||
.indent 5
|
||||
|
||||
.PRREG Read or write the processes user mode general register specified
|
||||
by the number added to this symbol. I.E. .PRREG+3 specifies
|
||||
R3. If write, the second argument is what to deposite there. If read, returns
|
||||
value read.
|
||||
|
||||
.PRPSW Read or write the processor status word for the process. all
|
||||
bits are read, only the condition codes and t-bit are permitted
|
||||
to be written. If read, returns the value read.
|
||||
|
||||
.PRFREG Read or write the processes floating point registers. the
|
||||
second argument is a pointer to a four word block of data that
|
||||
is either read from, or written to. Never returns a value.
|
||||
|
||||
.PRFPST Read or write the floating point status. The arguments are
|
||||
handled the same as the user mode general registers.
|
||||
|
||||
.PRFPEN Read or write the floating point availability bit. A one means
|
||||
floating point is enabled, a zero means it is not. If written,
|
||||
the process either loses or gains availability of floating point
|
||||
processor. If read, returns the value read.
|
||||
|
||||
.PRSTOP Read or write the stop state of the process. If read returns
|
||||
stop word, if write, and the second argument is non zero, it
|
||||
stops the process, if zero, starts it if stopped. If read, returns the
|
||||
value read.
|
||||
|
||||
.PRERR Read or write the error word of the process. If read, returns the
|
||||
value read.
|
||||
|
||||
.PRERA Read or write the address the error happened at (in th system).
|
||||
|
||||
.PRFAUL Read or write the fault word of the process. If write, and
|
||||
the old fault word was clear, it causes the process to fault. If read,
|
||||
returns the value read.
|
||||
.indent 0
|
||||
|
||||
.TTCAP The top byte of the first argument is a function. If the .TTWRT bit is set,
|
||||
the data is written into the tty item, otherwise the data is returned to the
|
||||
user. The fuctions for writing are:
|
||||
.indent 5
|
||||
|
||||
.TTMOV Move the second argument into the tty status word
|
||||
|
||||
.TTBIS Set the bits specified in the second argument into the
|
||||
tty status word
|
||||
|
||||
.TTBIC Clear the bits specified in the second argument into the
|
||||
tty status word
|
||||
|
||||
.TTRD Read the tty status word.
|
||||
|
||||
.TTCNO Read or set the charno variable of the tty
|
||||
|
||||
.TTBRKA Process executing this invok will hang until certain
|
||||
conditions are satisfied. If any condition is satisfied
|
||||
the call completes. The second argument specifies two
|
||||
bytes such that is either of these bytes comes in the
|
||||
the input, then the call completes. The third argument
|
||||
specifies a number in the low such that if any byte less
|
||||
than that number is typed, then the call completes. In the
|
||||
high byte are flags for other break functions, such as if
|
||||
.TTMBK Is set, the process will break when more is triggered.
|
||||
the invok returns one value on stack which has the byte
|
||||
causing the break in low and a flag for the type of break high.
|
||||
flags for call function and return value:
|
||||
.indent 10
|
||||
|
||||
.TTIBK I/O Break caused by one of the chars described in
|
||||
args being typed.
|
||||
|
||||
.TTMBK MORE Break.
|
||||
.indent 5
|
||||
|
||||
.TTSPD Set the tty speed. applies only to the DH11 ttys currently.
|
||||
the second argument is moved into the line parameter register
|
||||
to set the speed.
|
||||
|
||||
.TTTYP Returns the tty type. the flags for this are the flags in
|
||||
the TTYTBL entry for the tty
|
||||
|
||||
.TTMV2 Read or write tty status 2, similar to .TTMOV
|
||||
|
||||
.TTBS2 Bit set into tty status 2, similar to .TTBIS
|
||||
|
||||
.TTBC2 Bit clear in tty status 2, similar to .TTBIC
|
||||
|
||||
The following invokes only apply to tv ttys:
|
||||
|
||||
.TVATC Attach a display to a tv. the second argument should
|
||||
be a display capability.
|
||||
|
||||
.TVCL Clear the screen, set cursor to home up.
|
||||
|
||||
.TVREV Reverse black and white on screen.
|
||||
|
||||
.TVFNT Set the font for this tv. second arg is the number of the
|
||||
font desired.
|
||||
|
||||
.TVRFN Returns information about the current font. when it returns
|
||||
the first word on stack contains the number of tvlines in
|
||||
a char line (fntlcl in font), and second word is the width
|
||||
of a char in bits (fnwide). Arguments are ignored
|
||||
|
||||
.TVSET Read or write tvline and tvcur. use .prwrt with function
|
||||
to specify write. Tvline will be second arg, and first
|
||||
value returned, tvcur next.
|
||||
|
||||
.TVOFF Read or write the tvoffl variable, use .prwrt for write.
|
||||
this variable only has effect in wrap mode and says what
|
||||
char line is the top of the screen. Writing into this
|
||||
variable will clear the entire screen and then set the
|
||||
cursor to the new value of tvoffl, at char position 0.
|
||||
|
||||
.TTPEK Returns the first character to be input from the tty, without flushing it
|
||||
permanently, that is the character that is read by .TTPEK, will be the same
|
||||
as the first character of the next input call on that tty. If there are no
|
||||
characters to be ready at that time, a -1 is returned.
|
||||
|
||||
.TTBAK Causes a break condition on a tty line. .TTBAK waits until all the characters
|
||||
currently in the output buffer are transmitted, and then causes a break condition
|
||||
for a certain duration. The duration is given by the first argument, in the form of
|
||||
number of character transmit times. That is if the first argument is 45, the break condition
|
||||
persists for the amount of time it would have taken to send 45 characters at the current
|
||||
speed.
|
||||
|
||||
.nofill
|
||||
The status bits in tty status word 1:
|
||||
.indent 10
|
||||
|
||||
.TIRST=> Reset the tty on next input break
|
||||
.TIQF=> Super quote the next character
|
||||
.TOTRN=> Currently transmitting
|
||||
.TIMGI=> Input image mode
|
||||
.TIMGO=> Output image mode
|
||||
.TIRBM=> In rubout mode
|
||||
.TIEDM=> In edit mode
|
||||
.TIECM=> In echo mode
|
||||
.TICTM=> controlify mode, control underscore
|
||||
controlify's next char
|
||||
.TICTF=> controlify next char (clear 100 bit)
|
||||
.TICVM=> Convert from lower to upper case mode
|
||||
.TLIPM=> Line input mode
|
||||
.TORST=> Reset the tty on next output break
|
||||
.TERST=> Reset the tty edit buffer
|
||||
on the next output commmand
|
||||
.indent 5
|
||||
|
||||
The status bits in tty status word 2:
|
||||
.indent 10
|
||||
|
||||
.TSCRL=> 1 means scroll mode, 0 means wrap mode for tv's
|
||||
.fill
|
||||
.indent 0
|
||||
|
||||
.FACAP The top byte of the first argument is a function decoded as follows:
|
||||
|
||||
.indent 5
|
||||
.FACF Clears the flags specified by the second argument, and ignores
|
||||
the third argument. Flags are:
|
||||
.nofill
|
||||
.indent 10
|
||||
|
||||
.FAAC -> allow user to change access codes (not implemented)
|
||||
.FARD -> allow read access to file/directory
|
||||
.FAWT -> allow write and expand access to files or
|
||||
allow delete access to a directory
|
||||
.FAAP -> allow append access to a file or
|
||||
add access to a directory
|
||||
.fill
|
||||
.indent 5
|
||||
|
||||
.FASP Sets the file page number and the byte pointer from the
|
||||
arguments. In all these calls (unless explicitly stated)
|
||||
the user gives or recieves a 32 bit byte count which is
|
||||
converted into or from a page number and byte offset.
|
||||
|
||||
.FARP Ignores the second and third arguments, returns the 32 bit
|
||||
byte pointer into the users file.
|
||||
|
||||
.FARE Returns the 32 bit byte count of the file's length.
|
||||
|
||||
.FADL The entry represented by the capability is deleted from
|
||||
it's directory. If the entry is a
|
||||
directory it will be deleted only if there are no files in that
|
||||
directory. If it is a file, it will be deleted always. The
|
||||
second and third argument are ignored.
|
||||
|
||||
.FASDL Like .FADL, but the directory is deleted even if it is
|
||||
non-empty. The use of this call should be avoided: note that
|
||||
the blocks represented by the files and directories contained
|
||||
in a non-empty directory deleted in this way will not be freed.
|
||||
|
||||
.FAAD Adds a file with name pointed to by the second argument to
|
||||
a directory. Adding a file with version number < is
|
||||
illegal. If a file that matches the supplied name already exists,
|
||||
an error occurs, unless the file is FOO>, in which case the next
|
||||
largest version of the file is created. If the name is FOO> and no match
|
||||
occurs, FOO#1 is created. The supplied directory capability is mutated to the new
|
||||
file.
|
||||
|
||||
.FAMD Makes a directory. Call with a capability to a file which is one
|
||||
block long. The file is changed into a directory, the previous contents
|
||||
of the file are lost.
|
||||
|
||||
.FAMU Mutate the capability invoked. the second argument points to
|
||||
the name of a path to take. The capability is then mutated
|
||||
down that path. If any of the path names is the name of a file
|
||||
it will give an error if there is any more path specfied. (only
|
||||
directories can be mutated). The third argument is the flags
|
||||
to specify on the open of each step along the path.
|
||||
If the .FALOK bit is set the file or dir is locked so no other
|
||||
capability to it can be created. If there already is another capability
|
||||
or a page of the file mapped in to some sphere the call will fail if this
|
||||
bit is set. The user's pointer is updated after each sucessful step along
|
||||
the path and the capability remains whatever it was after the
|
||||
last sucessful step.
|
||||
|
||||
.FAMB Can only be executed by the system sphere. it makes the invoked
|
||||
capability the "bits" file for the root directory it is inferior
|
||||
to. The second argument is used as the base year for the disk.
|
||||
The third argument is ignored.
|
||||
|
||||
.FARI Returns information about the file whose capability is invoked.
|
||||
the third argument is a pointer to where to place the informa-
|
||||
tion in the user's core. Data returned is as follows:
|
||||
word of the capabilities flags
|
||||
word of the mfi's flags; bits are:
|
||||
.nofill
|
||||
.indent 10
|
||||
|
||||
.FADIR -> set if it's a directory cap.
|
||||
.FALOK -> set if mfi is locked by some sphere
|
||||
.FARUT -> set if it's a root directory cap.
|
||||
length of file in blocks (rounded up)
|
||||
date of creation
|
||||
time of creation
|
||||
name (in bytes of ascii)
|
||||
(optional version number preceded by "#")
|
||||
ends with a zero byte
|
||||
.fill
|
||||
the second argument is the maximum number of bytes to return
|
||||
to the user (rounded to even count). If it is exceeded v is
|
||||
set. Greatest number of bytes returned = 410 (octal). If the
|
||||
count is 0 or 1 then as many words as necessary are returned.
|
||||
.indent 5
|
||||
|
||||
.FADI Returns information about the disk the file whose capability
|
||||
was invoked is on. After returning the number of free blocks
|
||||
is on top of the user's stack with the logical disk number under
|
||||
it.
|
||||
.indent 0
|
||||
|
||||
.QUCAP No invokes allowed
|
||||
|
||||
.CLCAP The second argument is negative, it tries to become the consumer for this core
|
||||
link. (there can be many capabilities to write data into a core link, but only
|
||||
one to remove it.) if no one else is a consumer on this core link, it makes
|
||||
the invoked capability the consumer. If the first argument is positive, it
|
||||
releases the consumer enable for this capability, if it was the consumer,
|
||||
otherwise there is no action. Second and third arguments are ignored.
|
||||
|
||||
.DSCAP High byte of first arg is a function. if the 100 bit is set, the function
|
||||
refers to tv type displays, otherwise it refers to tk type displays.
|
||||
.indent 5
|
||||
|
||||
TK display functions:
|
||||
.indent 10
|
||||
|
||||
0 start display. Second arg is the word offset to start at
|
||||
|
||||
1 stop display. Args ignored
|
||||
.indent 5
|
||||
|
||||
TV display information:
|
||||
|
||||
The tv functions are used for graphics on tv displays. The general
|
||||
idea is that there exists a pen or "turtle" for each display. This pen
|
||||
has a position on the screen which can be read or set. The functions
|
||||
which draw lines on the screen expect arguments which are a delta y and
|
||||
delta x relative to the current pen position. A full tv display has 455
|
||||
horizontal lines of 576 points per line. The line drawing functions
|
||||
change the position of the pen to a new relative position, but any invok
|
||||
which would cause the pen to be left outside the screen, ie vertical
|
||||
less than 0 or greater than 454, horizontal less than zero or greater
|
||||
than 575, will fail and will be completely ignored.
|
||||
|
||||
TV display functions:
|
||||
|
||||
.TVDSR Read pen position. returns pen y position on top of stack
|
||||
and pen x position next on stack.
|
||||
|
||||
.TVDSS Set pen position. expects y position as arg 2, x as arg 3.
|
||||
|
||||
.TVDSN Null line. expects delta y as arg 2 and delta x as arg 3.
|
||||
just sets the pen to the new relative position.
|
||||
|
||||
.TVDSI Ior line. inclusive or's a series of points starting at
|
||||
the current pen position and ending at new position.
|
||||
|
||||
.TVDSX Xor line. just like ior, but xor's the screen points.
|
||||
|
||||
.TVDSC Clear block. for this function, the pen operates in a
|
||||
slightly different mode. Delta y and delta x are expected
|
||||
as before, but in this case, they serve to delimit a
|
||||
rectangular area in the screen which is cleared. The pen
|
||||
is left at the diagonal corner.
|
||||
|
||||
.TVSAV Indicates that the executing process is using the TV registers
|
||||
directly and the system should preserve them for it.
|
||||
|
||||
.TVMAP The first arg is the data page number where the first
|
||||
page of the TV memory should be mapped in temporarilly. This only
|
||||
has effect for the executing process, the 4 pages replaced
|
||||
"shadow" the 4 pages in the sphere. If the first arg is negative
|
||||
the pages are mapped out.
|
||||
.indent 0
|
||||
|
||||
.TPCAP No invoks allowed.
|
||||
|
||||
.TRCAP No invoks allowed.
|
||||
|
||||
.LPCAP If the first argument is 0, the printer/plotter is put
|
||||
into print mode. If the argument is non zero,
|
||||
the printer/plotter is put into plot mode, and the scale factor is set to the argument.
|
||||
The maximum scale factor is 4. In print mode, the bytes output by
|
||||
.BYTO, .WRDO, and .BLKO, are interpreted as ascii characters,
|
||||
and printed as such.
|
||||
In plot mode, the bytes are considered to be in one of two formats:
|
||||
.indent 5
|
||||
|
||||
1. The first two bytes are taken to be the byte count for the current
|
||||
line. The next series of bytes are the data bytes to be plotted,
|
||||
and then the data for the next line. This continues until the
|
||||
data is exhausted.
|
||||
.indent 0
|
||||
|
||||
.CMCAP The first argument specifies wether this call sets a value
|
||||
into the color map or establishes a coorespondence between a TV
|
||||
display and a bit in the color map. If the .CMBIT bit is set
|
||||
in the first argument the low byte of that argument should
|
||||
be a capability to a TV display. If it is, that TV will
|
||||
be set up to be bit 1, 2, 3, 4, 5 or 6 of the color map
|
||||
input depending on the value of the second argument. This
|
||||
call will set the video switch and the scroll word in
|
||||
the TV. If the .CMBIT is not set the low byte of the first argument
|
||||
is the color number to set, and the bits .CMRED, .CMGRN and
|
||||
.CMBLU may be set to control which colors are set. The second argument
|
||||
is the value to set the color to.
|
||||
|
||||
SITS filename protocal
|
||||
|
||||
A file name is communicated to the system by a pointer to the ascii
|
||||
string of the file's name (or a pathname if a mutate call). The string is
|
||||
terminatd by an ascii null or zero byte.
|
||||
|
||||
A pathname consits of several filenames concatenated with space between.
|
||||
|
||||
A filename consists of a string of ascii characters terminated by one
|
||||
of the special characters <, >, space or null.
|
||||
|
||||
An optional version number is signaled by the character #.
|
||||
|
||||
FOO< is the file with the least version number.
|
||||
FOO> is the file wit the the greatest version number.
|
||||
FOO#123 is the file with version number 123.
|
||||
FOO is the file with no version number.
|
||||
|
||||
Any character after double quote " is quoted and has no special properties.
|
||||
|
||||
Note that FOO never matches a file with a version number, and FOO< and
|
||||
FOO> never match a file without a version number.
|
||||
|
||||
54
doc/sits/todo.23
Executable file
54
doc/sits/todo.23
Executable file
@@ -0,0 +1,54 @@
|
||||
|
||||
TVS UNDERLINE ECHOING
|
||||
LOGO TURTLES
|
||||
LOGO EDITING
|
||||
|
||||
BIT TABLE AND DIR WRITE OUT
|
||||
|
||||
|
||||
PAGING
|
||||
HOLES IN PAGES
|
||||
PRIVATE PAGING(??)
|
||||
|
||||
TTYS TBOXES (SYS AND LOGO)
|
||||
|
||||
DEVICES LPT
|
||||
RJL0@MIT-AI 07/11/75 02:51:18
|
||||
To: RJL at MIT-AI, SITS at MIT-AI
|
||||
YOUR TASKS ARE:
|
||||
|
||||
WHIP CRACKING
|
||||
|
||||
SYSSPR- SEND TALK
|
||||
|
||||
LOGO- continue?
|
||||
|
||||
|
||||
CHECK OUT TBOXES, MAKE SURE THE REFERENCE COUNT OF
|
||||
THE "REAL" DEVICE IS USED TO MAKE IT GO AWAY
|
||||
WHEN NO PSEDUO DEVICES EXIST
|
||||
|
||||
FIX UP LOGO TURTLE AND OTHER DEVICE CONTROL
|
||||
|
||||
RANDOM:
|
||||
TELL JIM TO PUT IN VARIABLE ALLOCATION OF SYMBOL TABLE INTO DDT
|
||||
|
||||
FINISH ADVENT
|
||||
|
||||
SITS FILE COPY
|
||||
|
||||
DISPLAY DISK SAVE
|
||||
|
||||
A FEW LESS VARIOUS SYS CRASHES
|
||||
|
||||
PAGE ACCESS CHANGE
|
||||
|
||||
ITSCOM
|
||||
|
||||
^Z, ^G TERMINATE LINE
|
||||
|
||||
LOCATE AND DESTROY FNF'S IN LOGO
|
||||
RJL@MIT-AI 09/12/75 21:07:01
|
||||
FIX CRITEM TO REALLY SWAP OUT A PAGE IF NEEDED.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user