mirror of
https://github.com/PDP-10/its.git
synced 2026-03-05 11:04:02 +00:00
Added PR.
This commit is contained in:
committed by
Lars Brinkhoff
parent
a0f2529bf2
commit
95cb6f4a9e
@@ -122,6 +122,7 @@ from scratch.
|
||||
- DCROCK, digital watch.
|
||||
- JOBS, list jobs by category
|
||||
- HSNDEV, HSNAME device
|
||||
- PR, print out various system documentation
|
||||
|
||||
6. A brand new host table is built from the host table source and
|
||||
installed into SYSBIN; HOSTS3 > using H3MAKE.
|
||||
|
||||
@@ -690,6 +690,24 @@ expect ":KILL"
|
||||
respond "*" ":link device;jobdev hs,device;jobdev hsname\r"
|
||||
respond "*" ":link device;jobdev hf,device;jobdev hsname\r"
|
||||
|
||||
# pr
|
||||
respond "*" ":midas sys1;ts pr_sysen1;pr\r"
|
||||
expect ":KILL"
|
||||
respond "*" ":link sys1;ts call,sys1;ts pr\r"
|
||||
respond "*" ":link sys1;ts .call,sys1;ts pr\r"
|
||||
respond "*" ":link sys1;ts uuo,sys1;ts pr\r"
|
||||
respond "*" ":link sys1;ts uset,sys1;ts pr\r"
|
||||
respond "*" ":link sys1;ts suset,sys1;ts pr\r"
|
||||
respond "*" ":link sys1;ts doc,sys1;ts pr\r"
|
||||
respond "*" ":link sys1;ts intrup,sys1;ts pr\r"
|
||||
respond "*" ":link sys1;ts ttyvar,sys1;ts pr\r"
|
||||
|
||||
respond "*" ":link .info.;its .calls,sysdoc;.calls >\r"
|
||||
respond "*" ":link .info.;its uuos,sysdoc;uuos >\r"
|
||||
respond "*" ":link .info.;its usets,sysdoc;usets >\r"
|
||||
respond "*" ":link .info.;its %pi,sysdoc;%pi >\r"
|
||||
respond "*" ":link .info.;its ttyvar,sysdoc;ttyvar >\r"
|
||||
|
||||
# ndskdmp tape
|
||||
respond "*" ":link kshack;good ram,.;ram ram\r"
|
||||
respond "*" ":link kshack;ddt bin,.;@ ddt\r"
|
||||
|
||||
290
doc/sysdoc/%pi.105
Normal file
290
doc/sysdoc/%pi.105
Normal file
@@ -0,0 +1,290 @@
|
||||
ITS INTERRUPTS:
|
||||
|
||||
This file attempts to maintain up-to-date documentation on
|
||||
ITS interrupts. Those wonderful
|
||||
souls who update the information in any way (additions,
|
||||
deletions, corrections) should describe their
|
||||
modifications in a brief note to INFO-ITS@AI so
|
||||
that interested parties can correct their copies or
|
||||
conceptions without needing to print or read the
|
||||
entire file again. For example:
|
||||
|
||||
:QMAIL INFO-ITS@AI I added more details to the %PIJST interrupt ^C
|
||||
|
||||
If you want to be put on the INFO-ITS mailing list,
|
||||
just say so in a message to it.
|
||||
-------------------------------------------------
|
||||
|
||||
<Most of ITS INTRUP is not here...>
|
||||
|
||||
FIRST The Interrupt Bits in the First Interrupt Word.
|
||||
|
||||
The interrupt classes are:
|
||||
[1] stops job and interrupts superior (fatal intr)
|
||||
[2] stops job and interrupts superior unless enabled and undeferred
|
||||
[3] does nothing unless enabled; waits if deferred.
|
||||
|
||||
Bits in the left half have two names: %PI... as a bit in the word,
|
||||
and %PJ... shifted down by 18. bits.
|
||||
|
||||
The following interrupts abort the instruction, and leave the PC pointing
|
||||
before the instruction if %OPOPC is 1 (as is winning), or after it if
|
||||
%OPOPC is 0: %PIMPV, %PIOOB, %PIIOC, %PIILO, %PITTY, %PIWRO, %PIFET, %PITRP.
|
||||
|
||||
"(S)" indicates a synchronous interrupt; "(A)", an asynchronous one.
|
||||
An interrupt is synchronous if its occurrence is always directly related
|
||||
to the instruction that is being executed when it is signaled.
|
||||
|
||||
SECOND The Interrupt Bits in the Second Interrupt Word.
|
||||
|
||||
The right half of the second word (.IFPIR) is used for I/O channel
|
||||
interrupts that signal the arrival of or need for data.
|
||||
They should not be confused with I/O channel error interrupts
|
||||
or IOCERRors. Each channel has its own bit: 1.1 is for channel
|
||||
0; 1.2, for channel 1; ... 2.7, for channel 17 .
|
||||
They are all class 3, and their significance depends on the device
|
||||
open on the channel.
|
||||
|
||||
The left half of the second word (.IFPIR) is used for
|
||||
"inferior got a fatal interrupt" interrupts. Each of a job's
|
||||
inferiors is assigned its own interrupt bit from among the
|
||||
bottom 8 bits of the left half. When an inferior job is created,
|
||||
its interrupt bit should be read and remembered by reading the
|
||||
.INTB variable with a .USET. Every time that inferior gets a fatal
|
||||
interrupt, it will be stopped and the superior will receive an
|
||||
interrupt on that inferior's bit in .IFPIR. The inferior may
|
||||
be restarted by zeroing its .USTP variable, but if the fatal
|
||||
interrupts remain and are still fatal the inferior will simply
|
||||
stop and interrupt the superior again. "Inferior got a fatal
|
||||
interrupt" interrupts are all class 3.
|
||||
|
||||
The reason that inferiors interrupt through a special set of bits
|
||||
instead of using I/O channel interrupts is that it makes it possible
|
||||
to receive interrupts from all one's inferiors without having them
|
||||
all open on I/O channels at all times. DDT normally keeps only
|
||||
its current job open, and when it receives an interrupt from some
|
||||
other job it opens that job temporarily.
|
||||
|
||||
STACK The format of the new-style interrupt stack
|
||||
|
||||
-----------------------------------
|
||||
| 1st word interrupt bits |
|
||||
-----------------------------------
|
||||
| 2nd word interrupt bits |
|
||||
-----------------------------------
|
||||
| Saved .DF1 |
|
||||
-----------------------------------
|
||||
| Saved .DF2 |
|
||||
-----------------------------------
|
||||
| Saved program counter |
|
||||
-----------------------------------
|
||||
| . . . |
|
||||
| Saved accumulators, if any |
|
||||
| . . . |
|
||||
-----------------------------------
|
||||
| Saved .JPC, if requested |
|
||||
-----------------------------------
|
||||
| Saved .SUUOH, if requested |
|
||||
-----------------------------------
|
||||
Top -> | Saved LSPCL, if requested |
|
||||
-----------------------------------
|
||||
|
||||
%PI1PR Single-instruction proceed [1] (S)
|
||||
|
||||
If a job is started with the one-proceed flag
|
||||
(%PC1PR on KA-10's) set, after one instruction
|
||||
is completed a %PI1PR interrupt will occur.
|
||||
DDT's ^N command uses this feature.
|
||||
|
||||
%PIARO Arithmetic overflow [3] (S)
|
||||
|
||||
The PDP-10's built-in arithmetic overflow
|
||||
condition was detected by the hardware.
|
||||
In fact, overflow occurs so often
|
||||
that enabling this interrupt causes the
|
||||
machine to slow down considerably,
|
||||
and it should be avoided.
|
||||
|
||||
%PIATY TTY returned. [3] (A)
|
||||
|
||||
This interrupt happens when the TTY is
|
||||
returned by the superior, after having
|
||||
been taken away. TECO uses this to know
|
||||
that it must redisplay the entire screen.
|
||||
|
||||
%PIB42 BADPI (Bad location 42) [1] (S)
|
||||
|
||||
If in attempting to interrupt a job it turns out
|
||||
to be necessary to refer to nonexistent memory
|
||||
or write in read-only memory, this interrupt
|
||||
is signaled, instead of MPV or WIRO.
|
||||
This is so that the program will return to DDT
|
||||
instead of mysteriously looping.
|
||||
|
||||
%PIBRK .BREAK instruction executed. [1] (S)
|
||||
|
||||
.BREAK is used for DDT breakpoints, and for explicit
|
||||
program requests to DDT.
|
||||
|
||||
%PIC.Z ^Z or CALL typed on terminal [1] (A)
|
||||
|
||||
%PICLI CLI interrupt [3] (A)
|
||||
|
||||
Some job opened the CLI device with filenames equal
|
||||
to the uname and jname of this job.
|
||||
|
||||
%PICLK Slow (1/2 sec) clock [3] (A)
|
||||
|
||||
%PIDBG System being debugged state change [3] (A)
|
||||
|
||||
When the system enters or leaves "debugging mode",
|
||||
this interrupt is signaled.
|
||||
|
||||
%PIDCL Deferred call. [1] (S)
|
||||
|
||||
An attempt was made to read TTY input
|
||||
and the next character was a deferred-call
|
||||
character (^_D or Control-CALL).
|
||||
This deferred-call character is never seen
|
||||
by the program; it just causes the interrupt.
|
||||
It differs from ordinary CALL or ^Z
|
||||
in that it takes effect when the program
|
||||
gets around to reading it, not immediately.
|
||||
|
||||
%PIDIS Display memory protect [2] (A)
|
||||
|
||||
The 340 or E&S display got an MPV.
|
||||
This is now obsolete since the 340 and E&S
|
||||
no longer work.
|
||||
|
||||
%PIDWN System-going-down status change [3] (A)
|
||||
|
||||
If the system changes its mind about whether
|
||||
or when it is scheduled to go down, this interrupt
|
||||
is signaled.
|
||||
|
||||
%PIFET Fetched insn from impure page [2] (S)
|
||||
|
||||
On KA-10's, if bit %PCPUR of the PC flags is 1,
|
||||
fetching an instruction from an impure page
|
||||
will cause this interrupt. This is supposed to
|
||||
facilitate catching jumps to randomness.
|
||||
The guilty instruction is aborted, and the PC is
|
||||
left set according to %OPOPC.
|
||||
|
||||
%PIFOV ARFOV (Floating overflow) [3] (S)
|
||||
|
||||
This is a non-aborting PDP-10 hardware condition.
|
||||
|
||||
%PIILO ILOPR, ILUUO (illegal operation) [2] (S)
|
||||
|
||||
This can be caused by a returnable uuo when the
|
||||
program's 41 doesn't seem suitable for handling one
|
||||
(see ITS UUOS). It can also be used to report
|
||||
the failure of certain more archaic system calls.
|
||||
The guilty instruction was aborted, and the PC was
|
||||
left set according to %OPOPC.
|
||||
|
||||
%PIIOC IOCERR (I/O channel error) [2] (S)
|
||||
|
||||
This indicates the failure of an I/O system
|
||||
call. The channel that was being operated on is
|
||||
in .BCHN, and its .IOS word should contain, in
|
||||
bits 4.5 - 4.1, an error code.
|
||||
The guilty instruction was aborted, and the PC was
|
||||
left set according to %OPOPC.
|
||||
|
||||
%PIJST Job Status display request. [3] (A)
|
||||
|
||||
The sequence ^_J was typed on the
|
||||
console owned by this process or some inferior.
|
||||
|
||||
%PILOS Lossage signaled. [2] (S)
|
||||
|
||||
A .LOSE UUO or a LOSE system call was executed.
|
||||
|
||||
%PILTP 340 or E&S light pen hit [3] (A)
|
||||
|
||||
%PIMAR MAR hit. [2] (S)
|
||||
|
||||
The MAR is a hardware feature that allows
|
||||
references to a specific memory location to
|
||||
be trapped. This is the interrupt that happens
|
||||
when such a reference is detected. The guilty
|
||||
instuction is usually not aborted; if it is, the
|
||||
PC is SOS'ed regardless of the setting of %OPOPC.
|
||||
See the .MARA and .MARPC variables.
|
||||
|
||||
%PIMPV MPV (memory protect violation) [2] (S)
|
||||
|
||||
The job referenced a non-existent memory location.
|
||||
The address of that location (roundd down to
|
||||
a page boundary on KA-10's) may be found in .MPVA.
|
||||
The guilty instruction was aborted, and the PC was
|
||||
left set according to %OPOPC.
|
||||
|
||||
%PINXI Non-existent IO register [2] (S)
|
||||
|
||||
A Job in User IOT mode referenced a non-existent IO
|
||||
register on the KS10 Unibus. The PC is left pointing
|
||||
before the guilty instruction. The address of the
|
||||
non-existant register may be found in .MPVA.
|
||||
|
||||
%PIOOB Address out of bounds [2] (S)
|
||||
|
||||
This is an obscure condition that used to
|
||||
happen on USR device IOT's, when an attempt
|
||||
was made to refer to a nonexistent location in the
|
||||
other job. Now this always causes an MPV.
|
||||
The guilty instruction was aborted, and the PC was
|
||||
left set according to %OPOPC.
|
||||
|
||||
%PIPAR Memory parity error [2] (A)
|
||||
|
||||
Programs are not intended to try to recover
|
||||
from parity errors, on the assumption that they
|
||||
are probably permanently screwed up.
|
||||
This interrupt is asynchronous because it can
|
||||
be caused by a parity error in another job
|
||||
which destroys data in a page shared with this job.
|
||||
|
||||
%PIPDL PDL overflow [3] (S)
|
||||
|
||||
%PIRLT Real-time timer went off [3] (A)
|
||||
|
||||
These interrupts are controlled by the .REALT
|
||||
uuo. See ITS UUOS.
|
||||
|
||||
%PIRUN Run-time timer went off [3] (A)
|
||||
|
||||
This interrupt is requested (in advance)
|
||||
by setting .RTMR.
|
||||
|
||||
%PITRP SYSUUO (System uuo in trap mode) [1] (S)
|
||||
|
||||
A job whose .UTRAP variable was nonzero either
|
||||
attempted to execute an instruction that trapped
|
||||
to the system, or was about to be interrupted.
|
||||
This feature is intended to be used by the superior
|
||||
to provide a non-ITS environment for the inferior.
|
||||
The guilty instruction was aborted, and the PC was
|
||||
left set according to %OPOPC.
|
||||
|
||||
%PITTY Don't have TTY [2] (S)
|
||||
|
||||
This results from an attempt to use the job's
|
||||
console tty when the job does not own it, if
|
||||
%TBINT is 1 and %TBWAT is 0. See ITS TTY.
|
||||
The guilty instruction is aborted, and the PC is
|
||||
left set according to %OPOPC.
|
||||
|
||||
%PITYI TTY input (obsolete) [3] (A)
|
||||
|
||||
%PIVAL .VALUE instruction executed [1] (S)
|
||||
|
||||
%PIWRO WIRO (Write in read-only page) [2] (S)
|
||||
|
||||
The guilty instruction was aborted, and the PC was
|
||||
left set according to %OPOPC. The address of read
|
||||
only location (rounded down to a page boundary on
|
||||
KA-10's) may be found in .MPVA.
|
||||
429
doc/sysdoc/ttyvar.105
Normal file
429
doc/sysdoc/ttyvar.105
Normal file
@@ -0,0 +1,429 @@
|
||||
ITS TTY Variables:
|
||||
|
||||
This file attempts to maintain up-to-date documentation on all
|
||||
the TTY variables. Those wonderful souls who update this information
|
||||
in anyway (additions, deletions, corrections) should describe their
|
||||
modifications in a brief note to INFO-ITS so that interested parties
|
||||
can correct their copies or conceptions without needing to print or read
|
||||
the entire file again. For example:
|
||||
|
||||
:MAIL INFO-ITS I added documentation on the FOO variable to TTYVAR.^C
|
||||
----------------------------------------------------------------------
|
||||
|
||||
For a more complete description of TTY handling see the file
|
||||
.INFO.;ITS TTY. This file exists primarily to facilitate lookup via
|
||||
the DOC program. Use :DOC TTYVAR <name> to read the documentation
|
||||
of a specific variable.
|
||||
|
||||
The system calls for reading and setting TTY variables are:
|
||||
CNSGET, CNSSET, OPEN, RCPOS, RFNAME, RSSIZE, SCML, SCPOS, STYGET,
|
||||
TTYGET, TTYSET, and TTYVAR.
|
||||
|
||||
BIT names:
|
||||
|
||||
Bit names begin with %Tx where x specifies which variable. Byte
|
||||
pointer names begin with $Tx. Here is a list of the prefixs in use
|
||||
and where they're found:
|
||||
|
||||
%TA TTYSTA
|
||||
%TB .TTY
|
||||
%TC TTYCOM
|
||||
%TD output buffers (these are characters, not bits)
|
||||
%TF ?
|
||||
%TG TTYST1 and TTYST2
|
||||
%TI IOCHNM (for input channels)
|
||||
%TJ IOCHNM (for output channels)
|
||||
%TN TCTYP (these are codes, not bits)
|
||||
%TO TTYOPT LH
|
||||
%TP TTYOPT RH
|
||||
%TQ TTYSMT LH
|
||||
%TR TTYSMT RH
|
||||
%TS TTYSTS
|
||||
%TT TTYTYP LH
|
||||
%TX input buffers
|
||||
%TY TTYTYP RH
|
||||
|
||||
HEIGHT: Screen Height (per-TTY)
|
||||
|
||||
HEIGHT contains the number of lines on the screen. For printing
|
||||
terminals it is usually some large number.
|
||||
|
||||
This variable can be read with the CNSGET, RSSIZE, and TTYVAR system
|
||||
calls and set with the CNSSET and TTYVAR system calls.
|
||||
|
||||
IDLTIM: Idle Time (per-TTY)
|
||||
|
||||
IDLTIM contains the length of time since the last input character
|
||||
character was typed on the TTY, in 30'ths of a second.
|
||||
|
||||
This variable can be read with the TTYVAR system call.
|
||||
|
||||
IOCHNM: I/O channel bits (per-channel)
|
||||
|
||||
Some of the control bits set first time options and some are per-channel.
|
||||
Those which are per-channel are marked below with a *. The standard names
|
||||
for these bits are also given.
|
||||
|
||||
Control bits on input:
|
||||
2.6 * %TIECH Read even if char needs pi echoing
|
||||
2.5 * %TIPEK Don't remove char from buffer (peek)
|
||||
2.3 * %TIACT Don't wait for activation char
|
||||
2.2 * %TIINT Read even if char is an interrupt
|
||||
char and hasn't interrupted yet.
|
||||
2.1 * %TINWT Do not wait for input. If no input is
|
||||
available, return -1 in unit mode, or
|
||||
return a partially filled block in block mode.
|
||||
1.9 * %TIFUL Use the full TV character set if possible.
|
||||
In this mode, characters have this form:
|
||||
2.3 %TXTOP Top.
|
||||
2.2 Obsolete. Used to be Shift lock.
|
||||
2.1 %TXSUP Super. Used to be Shift.
|
||||
1.9 %TXMTA Meta.
|
||||
1.8 %TXCTL Control.
|
||||
1.7-1.1 %TXASC Ascii part of character.
|
||||
Of course, for non-TV's only %TXASC
|
||||
will be non-zero.
|
||||
1.6 Set up 3 line echo area (like SCML of 3).
|
||||
1.4 "DDT" mode. Initially clear the %TGPIE and
|
||||
%TGMPE bits for carriage return, line feed,
|
||||
and tab, thus causing them not to echo.
|
||||
1.3 Image mode. Initially clear the %TGPIE
|
||||
and %TGMPE bits for all characters.
|
||||
1.2 0 = unit mode, 1 = block mode. In block mode,
|
||||
^C causes a block mode end of file.
|
||||
1.1 0 = input.
|
||||
|
||||
Control bits on output:
|
||||
|
||||
2.6 * %TJECH Echo mode output.
|
||||
2.5 * %TJCTN Don't do line continuation.
|
||||
2.4 * %TJSTP Channel is hung in **MORE**.
|
||||
Unusual in that the system modifies this bit.
|
||||
2.3 * %TJDIS Recognize ^P cursor codes.
|
||||
2.2 * %TJSIO Super-image output. No padding
|
||||
or cursor control is performed.
|
||||
2.1 * %TJMOR Do not do **MORE** processing.
|
||||
1.9 * %TJPP2 Output in the echo area if it exists.
|
||||
1.6 Same as 2.2 - turns on %TJSIO.
|
||||
1.5 Same as 2.3 - turns on %TJDIS.
|
||||
1.4 Turns on %TJECH, %TJPP2, %TJMOR.
|
||||
1.3 Image mode. Initially set %TGIMG bits
|
||||
for all characters.
|
||||
1.2 0 = unit mode, 1 = block mode. In block mode
|
||||
output all ^C's are ignored.
|
||||
1.1 1 = output.
|
||||
|
||||
The I/O channel word for a TTY channel can be read with RFNAME. It
|
||||
is set by the OPEN call.
|
||||
|
||||
ISPEED: Input Speed (per-TTY)
|
||||
|
||||
ISPEED is the input speed of the terminal. It refers to the input
|
||||
speed code stored in the TTYTYP variable. However, it is not a speed
|
||||
code, but rather the speed in bits per second. Also, you are allowed to
|
||||
set the ISPEED variable, while you are not allowed to set the whole TTYTYP
|
||||
variable.
|
||||
|
||||
This variable can be read and set with the TTYVAR system call.
|
||||
|
||||
OSPEED: Output Speed (per-TTY)
|
||||
|
||||
OSPEED is the output speed of the terminal. It refers to the output
|
||||
speed code stored in the TTYTYP variable. However, it is not a speed
|
||||
code, but rather the speed in bits per second. Also, you are allowed to
|
||||
set the OSPEED variable, while you are not allowed to set the whole TTYTYP
|
||||
variable.
|
||||
|
||||
This variable can be read and set with the TTYVAR system call.
|
||||
|
||||
TCTYP: Terminal type code (per-TTY)
|
||||
|
||||
0 %TNPRT Printing terminal.
|
||||
1 %TNDP Good Datapoint.
|
||||
2 %TNODP Bad Datapoint ("loser").
|
||||
3 %TNIML Imlac.
|
||||
4 %TNTEK Tektronix.
|
||||
5 %TNTV PDP-11 TV.
|
||||
6 %TNMEM Memowreck.
|
||||
7 %TNSFW Software terminal (accepts internal
|
||||
ITS display codes, such as live in
|
||||
internal terminal output buffers;
|
||||
see ITS TTY for details).
|
||||
10 %TNTRM Terminet.
|
||||
11 %TNESC Display using ASCII standard display codes.
|
||||
12 %TNDTM Datamedia.
|
||||
13 %TNRAY Teleray 1061
|
||||
14 %TNHDS Concept 100
|
||||
15 %TNH19 Zenith H19
|
||||
16 %TNAAA Ann Arbor Ambassador
|
||||
|
||||
This variable can be read with the CNSGET and TTYVAR system calls
|
||||
and set with the CNSSET and TTYVAR system calls.
|
||||
|
||||
TTYCOM: Com-link bits (per-TTY)
|
||||
|
||||
4.9 Communicate mode.
|
||||
4.8 %TCLFT Local feed through (my job sees his typing).
|
||||
4.7 %TCRFT Remote feed through (his job sees my typing).
|
||||
4.6 %TCICO Input comm override (my job sees my typing).
|
||||
4.5 %TCOCO Output comm override (I see my job's typing).
|
||||
4.4 %TCRFS Refuse comm messages.
|
||||
4.3 %TCQRY Query me if comm attempted to me.
|
||||
4.2 %TCMTR The tty's motor is off, and must be
|
||||
turned on before next output.
|
||||
(Currently only Terminets get turned off.)
|
||||
4.1 %TCECH The last output to this tty was PI echo.
|
||||
3.9 %TCINP Someone waited for input since last home-up.
|
||||
3.8 %TCDET Console's tree detached by top level interrupt.
|
||||
3.7 %TCDNG Type bell (input buffer full).
|
||||
3.6 %TCCBK Reading uname or tty number after ^_K.
|
||||
3.5 %TCCBS Reading uname or tty number after ^_S.
|
||||
3.4 %TCFPD First part of an output code sequence is done.
|
||||
3.3 %TCTPN Type ^_N on leaving comm (unless user types it).
|
||||
3.2 %TCPAD 0 => padding necessary on datapoint.
|
||||
3.1 %TCHNG Done flag seems to be fried - time out quickly.
|
||||
2.9-1.1 -1 if not in comm mode; otherwise number of
|
||||
next tty in circular list of those in comm mode
|
||||
together.
|
||||
|
||||
Only the %TCICO, %TCOCO, %TCRFS, %TCQRY, %TCMTR, and %TCINP bits may
|
||||
be set.
|
||||
|
||||
This variable can be read with the CNSGET and TTYVAR system calls
|
||||
and set with the CNSSET and TTYVAR system calls.
|
||||
|
||||
TTYOPT: TTY capability and option bits (per-TTY)
|
||||
|
||||
4.8 %TOALT Standardize altmodes.
|
||||
4.7 %TOCLC Convert lower case input to upper case.
|
||||
4.6 %TOERS This tty can selectively erase.
|
||||
4.5 %TOHDX This tty is half-duplex.
|
||||
4.4 %TOMVB This tty can backspace directly.
|
||||
4.3 %TOSAI This tty handles SAIL characters.
|
||||
4.2 %TOSA1 Used to initialize %TSSAI for new jobs.
|
||||
4.1 %TOOVR This tty can overprint correctly.
|
||||
3.9 %TOMVU This tty can move its cursor upward.
|
||||
3.8 %TOMOR Used to initialize %TSMOR for new jobs.
|
||||
3.7 %TOROL Used to initialize %TSROL for new jobs.
|
||||
3.6 %TORAW Don't optimize cursor motion.
|
||||
3.5 %TOLWR This tty has a lower case keyboard.
|
||||
3.4 %TOFCI This tty's keyboard has the full TV character set.
|
||||
3.3 %TOIML This tty acts like an IMLAC.
|
||||
3.2 %TOLID This tty can insert/delete lines.
|
||||
3.1 %TOCID This tty can insert/delete characters.
|
||||
2.9-2.7 $TPPLF How to pad line feeds:
|
||||
0 Don't.
|
||||
1 Two pad chars (Memorex, 2741).
|
||||
2 Terminet.
|
||||
2.6-2.4 $TPPCR How to pad carriage returns:
|
||||
0 Don't. 4 Execuport.
|
||||
1 Normal. 5 2741.
|
||||
2 Double. 6 Memorex.
|
||||
3 Unused. 7 Unused.
|
||||
For a Datapoint, number of pad chars before
|
||||
each string of cursor motion commands.
|
||||
For a Terminet, 0=no padding, 1,2,3,4,5
|
||||
correspond to 10,15,30,60,120 cps.
|
||||
2.3-2.1 $TPPTB How to pad tabs:
|
||||
0 Tabs not allowed.
|
||||
<n> Use <n-1> pad chars.
|
||||
On displays,
|
||||
0 don't use tabs.
|
||||
1 use tabs.
|
||||
2 use VT52-style absolute positioning.
|
||||
1.9 %TPMTA Treat bit 1.8 of input characters as the meta bit.
|
||||
this is for terminals such as Telerays which have Edit keys.
|
||||
1.8 %TPPRN interchange ( with [, and ) with ], on input.
|
||||
1.7 %TPTEL Treat CRLF input as CR for TELNET protocol.
|
||||
1.6 %TPCBS The ^\ intelligent terminal protocol is enabled.
|
||||
1.5 %TP11T PDP-11 TV. Reflects %TY11T.
|
||||
1.4 %TPORS Output reset really does something.
|
||||
1.3 %TPRSC This tty can do region scrolling.
|
||||
1.2 %TPIBC Oddball 2741-like tty. ;no longer defined
|
||||
1.1 %TPIBM It really is a 2741. ;no longer defined
|
||||
|
||||
This variable can be read with the CNSGET and TTYVAR system calls
|
||||
and set with the CNSSET and TTYVAR system calls.
|
||||
|
||||
TTYROL: Scroll count (per-TTY)
|
||||
|
||||
TTYROL contains the number of lines the TTY moves up when it scrolls.
|
||||
Scrolling occurs when a LF is sent while the cursor is on the last line.
|
||||
|
||||
This variable can be read and set with the TTYVAR system call.
|
||||
|
||||
TTYSMT: Smarts (per-TTY)
|
||||
|
||||
Bits marked with a * are pertain to the graphics protocol. If %TQGRF is 0,
|
||||
they should all be 0.
|
||||
|
||||
4.9-4.7 %TQMCH CPU type. 0 => unknown or uninteresting.
|
||||
1 => PDP11. 2 => IMLAC PDS4. 3 => IMLAC PDS1.
|
||||
4.6-4.2 * %TQHGT Character height in dots.
|
||||
4.1-3.7 * %TQWID Character width in dots.
|
||||
3.6 * %TQVIR Terminal implements virtual coordinates.
|
||||
3.5 * %TQBNK Terminal implements blinking.
|
||||
3.4 * %TQXOR Terminal implements XOR mode.
|
||||
3.3 * %TQREC Terminal implements the rectangle commands.
|
||||
3.2 * %TQSET Terminal implements multiple sets.
|
||||
3.1 * %TQGRF Terminal understands the graphics protocol.
|
||||
(Used to be called %TQGPH.)
|
||||
2.9 * %TRGIN Terminal provides graphic input.
|
||||
2.8 * %TRGHC Terminal provides has graphic hardcopy.
|
||||
2.7 %TRLED Terminal supports the local-editing protocol.
|
||||
(See SUPDUP doc)
|
||||
2.6 * %TRSCN Terminal implements scan-line output.
|
||||
2.5-2.3 %TRLSV Nonzero means terminal can save about 4**n lines.
|
||||
(See SUPDUP doc)
|
||||
2.2-1.7 %TRTIM Signed offset from GMT minus 20. A value of zero
|
||||
means don't know, don't care, or user program
|
||||
hasn't implemented it yet.
|
||||
|
||||
This variable can be read and set with the TTYVAR system call.
|
||||
|
||||
TTYSTA: Console Status
|
||||
|
||||
4.9 %TACFM Tty does not need a console free message
|
||||
eventually (hasn't been in use since
|
||||
the last one).
|
||||
4.8 %TAC.Z Tty is being ^Z'd. Shouldn't be on with
|
||||
%TACFM. If %TACFM and %TAC.Z are both 0,
|
||||
the tty is being freed and a console free
|
||||
message is immanent.
|
||||
4.7 %TANJS This ^Z is being flushed because no job
|
||||
slots are available. If set, %TAC.Z
|
||||
will be 1 and %TACFM will be 0.
|
||||
4.6-4.3 %TANEC Number of following chars to inhibit echo and ints for.
|
||||
This is used for the arg chars that follow Top-E,
|
||||
Top-S, Top-Y, etc.
|
||||
|
||||
This variable can be read with the STYGET system call.
|
||||
|
||||
TTYST1: Activation and Echo control word 1 (per-job)
|
||||
|
||||
This variable contains six groups of six bits.
|
||||
Each group is as follows:
|
||||
1.6 %TGMPE Echo at main program level (when IOT'ed).
|
||||
1.5 %TGPIE Echo at interrupt level (when typed).
|
||||
1.4 %TGIMG Echo in image mode.
|
||||
1.3 %TGSPC Special hack: convert lower case to upper.
|
||||
1.2 %TGACT Activation character.
|
||||
1.1 %TGINT Interrupt character.
|
||||
|
||||
The character groups are:
|
||||
4.9-4.4 ^@-^F ^K ^L ^N-^R ^T-^Z ^\-^_
|
||||
4.3-3.7 Upper and lower case letters.
|
||||
3.6-3.1 Digits.
|
||||
2.9-2.4 ! " # $ % & ' , . : ; ? @ \ ` | ~
|
||||
2.3-1.7 + * - / = ^ _
|
||||
1.6-1.1 < > ( ) [ ] { }
|
||||
|
||||
This variable can be read with the TTYGET system call and set
|
||||
with the TTYSET system call.
|
||||
|
||||
TTYST2: Activation and Echo control word 2 (per-job)
|
||||
|
||||
This variable contains six more groups of six bits.
|
||||
Each group is as follows:
|
||||
1.6 %TGMPE Echo at main program level (when IOT'ed).
|
||||
1.5 %TGPIE Echo at interrupt level (when typed).
|
||||
1.4 %TGIMG Echo in image mode.
|
||||
1.3 %TGSPC Special hack: convert lower case to upper.
|
||||
1.2 %TGACT Activation character.
|
||||
1.1 %TGINT Interrupt character.
|
||||
|
||||
The character groups are:
|
||||
4.9-4.4 ^G ^S
|
||||
4.3-3.7 ^I ^J (tab, linefeed)
|
||||
3.6-3.1 altmode (33)
|
||||
2.9-2.4 ^M (carriage return)
|
||||
2.3-1.7 rubout (177)
|
||||
1.6-1.1 space, ^H (backspace)
|
||||
|
||||
This variable can be read with the TTYGET system call and set
|
||||
with the TTYSET system call.
|
||||
|
||||
TTYSTS: TTY option bits (per-job)
|
||||
|
||||
4.9 %TSFRE Free console (not in use).
|
||||
4.8 %TSCLE ^L should echo as "^L" (normally
|
||||
clears screen on displays).
|
||||
4.7 %TSHDX Same as %TOHDX. Vestigial.
|
||||
4.6 %TSFCO Use full 12-bit TV char set for output and
|
||||
echoing: echo CONTROL as ALPHA, echo META
|
||||
as BETA, echo SUPER as EPSILON, and use
|
||||
Sail graphics if TOP is set.
|
||||
4.5 %TSALT Do not standardize altmodes.
|
||||
4.4 %TSROL Scroll mode.
|
||||
4.3 %TSSAI Echo and ascii output use SAIL
|
||||
character set.
|
||||
4.2 %TSACT Next input IOT shouldn't wait
|
||||
for an activation character.
|
||||
4.1 %TSNEA Don't echo in echo area; echo in M.P. Area.
|
||||
3.9 %TSINT Next input character should
|
||||
interrupt even if it ordinarily
|
||||
would not (%TGINT = 0).
|
||||
3.8 %TSMOR Inhibit **MORE** processing.
|
||||
3.7 %TSATY Set whenever an .ATTY executed by
|
||||
some superior returns the tty to
|
||||
the job.
|
||||
3.4 %TSNOE Defer echoing.
|
||||
3.3 %TSLCZ Last character typed was ^Z.
|
||||
This bit causes .ATTY's to fail.
|
||||
3.2 %TSSII Super-image input. The special
|
||||
actions of ^Z and ^_ are suppressed.
|
||||
3.1 %TSCNS This is a console, not a device.
|
||||
2.9-1.1 The user index of the job which controls
|
||||
the tty, or -1 if the tty is free.
|
||||
|
||||
%TSFRE, %TSHDX, %TSLCZ, %TSCNS, and the RH may not be altered.
|
||||
|
||||
This variable can be read with the TTYGET system call and set
|
||||
with the TTYSET system call.
|
||||
|
||||
TTYTYP: Semi-permanent stuff (per-TTY)
|
||||
|
||||
This variable may not be set, just read (but see ISPEED and OSPEED).
|
||||
|
||||
4.9 %TTLCL Local tty (i.e. right near the PDP-10).
|
||||
4.8 %TT340 Near the 340 or a 340 slave.
|
||||
4.7 %TT3HP High priority for grabbing 340.
|
||||
4.3 %TTPAR Tty needs a parity bit generated by software.
|
||||
4.2 %TTDDI Don't ding bell on excess input.
|
||||
4.1 %TTIBM Datel (2741) line.
|
||||
3.8-3.5 $TTISP Input speed code:
|
||||
0 = unknown 6 = 1800 baud 13 = 40K baud
|
||||
1 = 600 baud 7 = 2400 baud 14 = 50K baud
|
||||
2 = 110 baud 10 = 4800 baud 15 = 80K baud
|
||||
3 = 150 baud 11 = 9600 baud 16 unused
|
||||
4 = 300 baud 12 = 25K baud 17 unused
|
||||
5 = 1200 baud
|
||||
3.4-3.1 $TTOSP Output speed code, as above.
|
||||
2.9 %TYDPK Datapoint controller line.
|
||||
2.8 %TYSTY Alter ego to a STY.
|
||||
2.7 %TYNVA Nova tty (requiescat in pace).
|
||||
2.6 %TYMTY Morton controller line.
|
||||
2.5 %TYDIL Dial-up line.
|
||||
2.4 %TY11T PDP-11 TV tty.
|
||||
2.3 %TYDL DL-10 tty.
|
||||
2.2 %TYOTY KA-10 console tty.
|
||||
2.1 %TYETY DTE-20 tty.
|
||||
1.9 %TYNTY TK-10 tty.
|
||||
1.8 %TYMDM Dial-up line with modem control.
|
||||
1.7 %TYKST KS-10 console tty.
|
||||
1.6 %TYDZT DZ-11 tty on a KS-10.
|
||||
1.5 %TYRLM ROLM data switch tty.
|
||||
|
||||
This variable can be read with the CNSGET and TTYVAR system calls.
|
||||
|
||||
WIDTH: Screen width (per-TTY)
|
||||
|
||||
WIDTH contains the no. of usable print positions on a line for the
|
||||
TTY. It is usually one or two less than the actual no. of columns to allow
|
||||
room for a "!" in the last column to indicate typeout being continued on
|
||||
the next line (two columns are required when the terminal loses by
|
||||
automatically performing a CRLF operation when a character is output to
|
||||
the last column).
|
||||
|
||||
This variable can be read with the CNSGET, RSSIZE and TTYVAR system
|
||||
calls and set with the CNSSET and TTYVAR system calls.
|
||||
1406
doc/sysdoc/usets.120
Normal file
1406
doc/sysdoc/usets.120
Normal file
File diff suppressed because it is too large
Load Diff
969
src/sysen1/pr.87
Normal file
969
src/sysen1/pr.87
Normal file
@@ -0,0 +1,969 @@
|
||||
;;; -*- Mode:MIDAS -*-
|
||||
|
||||
TITLE PR FANCY FILE PRINTER
|
||||
|
||||
;Written by ... JMB 8/23/76
|
||||
;LSC feature changed since DM gone now ... CSTACY 1/30/84
|
||||
;LSC feature updated again since KL-MC about to die -- Zvona 5/12/86
|
||||
|
||||
;Has special print modes depending upon JNAME:
|
||||
; :DOC {:CALL :UUO :USET :SUSET :TTYVAR :INTRUP} <descriptor>
|
||||
; :LSC gets you the current LSC movie schedule
|
||||
; :PRIM ==> PRINT TO IMLAC
|
||||
; :TVDOC ==> TRIVIA DOCUMENTATION
|
||||
;See .INFO.;PR INFO FOR COMPLETE DETAILS
|
||||
|
||||
|
||||
.MLLIT==1
|
||||
|
||||
;ACCUMULATOR DEFINITIONS
|
||||
|
||||
N=0 ;NUMBER OF OUTPUT CHARACTERS
|
||||
A=1
|
||||
B=2
|
||||
C=3
|
||||
D=4
|
||||
E=5
|
||||
CC=6 ;CHARACTER COUNT FOR INDEX MAKING
|
||||
PSBP=7 ;PAGE STRING BP
|
||||
PSNUM=10 ;STRING LENGTH
|
||||
P=11 ;STACK POINTER
|
||||
SWTCHS=12 ;CONTAINS ALL SWITCHES
|
||||
DES=13 ;DESCRIPTOR NAME
|
||||
MSK=14 ;MASK FOR DESCRIPTOR MATCHING
|
||||
OBP=15 ;OUTPUT BYTE POINTER
|
||||
IBP=16 ;INPUT BYTE POINTER
|
||||
Z=17 ;RETURN ADDRESS FOR JSP
|
||||
|
||||
|
||||
;SWITCH DEFINITIONS
|
||||
|
||||
AS==1 ;DON'T PRINT CONTROL-ATSIGNS
|
||||
CS==4 ;STOP AT FIRST ^C (DEFAULTS ON)
|
||||
DS==10 ;NEXT NAME IS DESCRIPTOR
|
||||
FS==40 ;OUTPUT FILE IN USE
|
||||
IS==400 ;OUTPUT IN IMAGE MODE TO TTY
|
||||
LS==4000 ;LIST DOCUMENTATION DIRECTORY
|
||||
PS==100000 ;PAGE AT ^L OR ^_
|
||||
|
||||
|
||||
;DEVICE DEFINITIONS
|
||||
|
||||
TTYI==0
|
||||
TTYO==1 ;OUTPUT FILE, NOT NECESSARILY A TTY
|
||||
DSKBI==2
|
||||
DSKIO==3
|
||||
|
||||
|
||||
;INSTRUCTION DEFINITIONS
|
||||
|
||||
ERROR==JRST
|
||||
|
||||
|
||||
LOC 42
|
||||
|
||||
JSR TSINT
|
||||
|
||||
|
||||
LOC 100
|
||||
|
||||
|
||||
;RANDOM LOCATIONS
|
||||
|
||||
JCL: BLOCK 16
|
||||
FN1: 0 ;FIRST NAME FLAG
|
||||
FN2: 0 ;SECOND NAME FLAG
|
||||
NAME: 0 ;SLOT TO BUILD A NAME IN
|
||||
JNAM: 0 ;JOB NAME
|
||||
DEVICE: 0 ;INPUT FILE NAMES,
|
||||
SNAME: 0 ;DEFAULTS FROM DDT OR OUTPUT FILE NAMES
|
||||
FNAME1: 0
|
||||
FNAME2: 0
|
||||
ONAME1: 0 ;OUTPUT FILE NAMES,
|
||||
ONAME2: 0 ;DEFAULTS FROM DDT
|
||||
ODEVIC: 0
|
||||
OSNAME: 0
|
||||
XFNAME: 0
|
||||
YFNAME: 0
|
||||
IXNAME: 0
|
||||
CHARS: 0
|
||||
TSROL: 0 ;SCROLL MODE?
|
||||
TYP: 0 ;DESCRIPTOR TYPE
|
||||
GETDES: 0 ;DESCRIPTOR SEARCH LOOP?
|
||||
NEWDES: 0 ;SEARCHING FOR NEW DESCRIPTOR?
|
||||
BUFLEN==1000
|
||||
BFR: BLOCK BUFLEN
|
||||
ENDBFR: 10700,,BFR+BUFLEN-1 ;END OF INPUT BUFFER
|
||||
OBUFLN==100
|
||||
OBUF: BLOCK OBUFLN
|
||||
PDL: BLOCK 20
|
||||
|
||||
;INITIAL SETUP
|
||||
|
||||
START: MOVEI P,PDL ;SET UP PDL
|
||||
.OPEN TTYO,[.UAO,,'TTY]
|
||||
.LOSE 1000
|
||||
.OPEN TTYI,[.UAI,,'TTY]
|
||||
.LOSE 1000
|
||||
.SUSET [.SIMSK2,,[3]] ;ENABLE TTY INTERRUPTS
|
||||
.CALL TTYSET ;SET UP TTY TO TAKE CONTROL-S
|
||||
.LOSE 1000
|
||||
.CALL TTYGET ;CHECK FOR SCROLLAGE
|
||||
.LOSE 1000
|
||||
TLNE A,%TSROL
|
||||
SETOM TSROL
|
||||
|
||||
MOVE IBP,ENDBFR
|
||||
MOVE OBP,[440700,,OBUF]
|
||||
SETZ N,
|
||||
MOVEI SWTCHS,CS ;C SWITCH STARTS SET (STOP AT ^C)
|
||||
.SUSET [.RXJNAME,,JNAM] ;GET JOB NAME
|
||||
MOVE A,JNAM
|
||||
CAME A,[SIXBIT /CALL/] ;SPECIAL FORMS OF DOC
|
||||
CAMN A,[SIXBIT /.CALL/]
|
||||
JRST DOCTYP
|
||||
CAME A,[SIXBIT /UUO/]
|
||||
CAMN A,[SIXBIT /USET/]
|
||||
JRST DOCTYP
|
||||
CAME A,[SIXBIT /TVDOCT/]
|
||||
CAMN A,[SIXBIT /TVDOC/]
|
||||
JRST DOCTYP
|
||||
CAME A,[SIXBIT /MUD/]
|
||||
CAMN A,[SIXBIT /MUDDLE/]
|
||||
JRST DOCTYP
|
||||
CAME A,[SIXBIT /SUSET/]
|
||||
CAMN A,[SIXBIT /TTYVAR/]
|
||||
JRST DOCTYP
|
||||
CAMN A,[SIXBIT /INTRUP/]
|
||||
JRST DOCTYP
|
||||
CAMN A,[SIXBIT /PRIM/]
|
||||
JRST PRIM
|
||||
CAMN A,[SIXBIT /LSC/] ;IF LSC, GO TO SPECIAL ROUTINE
|
||||
JRST LSC
|
||||
; CAMN A,[SIXBIT /NLSC/] ;IF NLSC, GO TO SPECIAL ROUTINE
|
||||
; JRST NLSC
|
||||
JRST GETJCL
|
||||
|
||||
PRIM: .CALL CNSGET
|
||||
.LOSE 1000
|
||||
TLNN A,%TOIML
|
||||
JRST FINIS
|
||||
XORI SWTCHS,IS
|
||||
.CALL SCPOS
|
||||
.LOSE 1000
|
||||
JRST GETJCL
|
||||
|
||||
DOCTYP: MOVEM A,TYP ;SAVE DOC TYPE FOR LATER REFERENCE
|
||||
MOVE A,[SIXBIT /DOC/]
|
||||
MOVEM A,JNAM
|
||||
|
||||
GETJCL: .BREAK 12,[5,,JCL] ;GET JCL LINE
|
||||
MOVE D,[440700,,JCL] ;GET BP TO JCL
|
||||
MOVE E,TYP
|
||||
CAME E,[SIXBIT /TVDOC/]
|
||||
.BREAK 12,[6,,DEVICE] ;SET UP DEFAULTS FROM DDT
|
||||
MOVE A,FNAME1
|
||||
MOVEM A,XFNAME
|
||||
MOVE B,FNAME2
|
||||
MOVEM B,YFNAME
|
||||
|
||||
|
||||
;JCL PARSER
|
||||
|
||||
LOOP: SETZM NAME
|
||||
MOVE C,[440600,,NAME];CLEAR NAME SLOT
|
||||
GETCHR: CAIE B,^X ;CATCH LEFTOVER ^X OR ^Y
|
||||
CAIN B,^Y
|
||||
JRST FIELD
|
||||
ILDB B,D
|
||||
JUMPE B,FOPEN
|
||||
CAIE B,40
|
||||
CAIN B,11
|
||||
JRST GETCHR
|
||||
FIELD: CAIE B,40 ;HERE TO GET A NAME
|
||||
CAIN B,11
|
||||
JRST FNAM ;SPACE AND TAB MAKE FNAME1 AND 2
|
||||
CAIE B,0
|
||||
CAIN B,15
|
||||
JRST FNAM ;SO DOES 0 AND <CR>
|
||||
CAIN B,":
|
||||
JRST DEV
|
||||
CAIN B,";
|
||||
JRST DIR
|
||||
CAIN B,"_
|
||||
JRST OFILE
|
||||
CAIN B,"/
|
||||
JRST SWITCH
|
||||
CAIE B,^X ;TRAP ^X AND ^Y CROCKS
|
||||
CAIN B,^Y
|
||||
JRST XYNAME
|
||||
CAIN B,^Q ;HANDLE QUOTING
|
||||
ILDB B,D
|
||||
CAIGE B,40 ;SUBI B,40 < 0 (BAD CHARACTER)
|
||||
ERROR ILLCHR
|
||||
SUBI B,40
|
||||
CAIL B,100
|
||||
SUBI B,40 ;CASE CONVERSION
|
||||
TLNE C,770000 ;IGNORE MORE THAN 6 CHARACTERS,
|
||||
JRST NXTCHR-1
|
||||
MOVE A,JNAM
|
||||
TRNN SWTCHS,DS ;UNLESS D SWITCH IS SET,
|
||||
CAMN A,[SIXBIT /DOC/] ;OR JNAME IS DOC,
|
||||
CAIA
|
||||
JRST NXTCHR
|
||||
LDB E,[360600,,NAME]
|
||||
CAIE E,'. ;AND FIRST CHAR IN NAME WAS "."
|
||||
JRST NXTCHR
|
||||
MOVE E,NAME ;IF ALL THAT WAS TRUE, FLUSH "." & ADD NEW CHAR
|
||||
LSH E,6
|
||||
MOVEM E,NAME
|
||||
DPB B,C
|
||||
SKIPA
|
||||
IDPB B,C
|
||||
NXTCHR: ILDB B,D
|
||||
JRST FIELD
|
||||
|
||||
|
||||
;FILE NAME STORERS
|
||||
|
||||
DEV: MOVE A,NAME
|
||||
MOVEM A,DEVICE
|
||||
JRST LOOP
|
||||
|
||||
DIR: MOVE A,NAME
|
||||
MOVEM A,SNAME
|
||||
JRST LOOP
|
||||
|
||||
FNAM: TRNE SWTCHS,DS
|
||||
JRST DESNAM
|
||||
MOVE A,NAME
|
||||
JUMPE A,LOOP
|
||||
SKIPN FN1
|
||||
JRST FNAM1
|
||||
SETOM FN2
|
||||
MOVEM A,FNAME2
|
||||
JRST LOOP
|
||||
|
||||
FNAM1: MOVEM A,FNAME1
|
||||
SETOM FN1
|
||||
JRST LOOP
|
||||
|
||||
DESNAM: MOVE DES,NAME
|
||||
TRZ SWTCHS,DS
|
||||
JRST LOOP
|
||||
|
||||
OFILE: MOVE B,DEVICE ;TRANSFER CURRENT NAMES TO OUTPUT FILE NAME SLOTS
|
||||
MOVEM B,ODEVIC
|
||||
MOVE B,SNAME
|
||||
MOVEM B,OSNAME
|
||||
MOVE B,FNAME1
|
||||
MOVEM B,ONAME1
|
||||
MOVE B,FNAME2
|
||||
MOVEM B,ONAME2
|
||||
.BREAK 12,[6,,DEVICE] ;RESET DEFAULTS FROM DDT
|
||||
MOVE A,FNAME1
|
||||
MOVEM A,XFNAME
|
||||
MOVE B,FNAME2
|
||||
MOVEM B,YFNAME
|
||||
SETZM FN2
|
||||
MOVE A,NAME
|
||||
TRNN SWTCHS,DS
|
||||
JRST .+3
|
||||
SETZM FN1
|
||||
JRST DESNAM
|
||||
SKIPE FN1
|
||||
JRST .+4
|
||||
JUMPE A,LOOP
|
||||
MOVEM A,ONAME1
|
||||
JRST LOOP
|
||||
SETZM FN1
|
||||
JUMPE A,LOOP
|
||||
MOVEM A,ONAME2
|
||||
JRST LOOP
|
||||
|
||||
|
||||
;HANDLERS FOR SPECIAL JCL COMMANDS
|
||||
|
||||
SWITCH: ILDB B,D
|
||||
CAIE B,"C
|
||||
CAIN B,"c
|
||||
JRST CSWI
|
||||
CAIE B,"P
|
||||
CAIN B,"p
|
||||
JRST PSWI
|
||||
CAIE B,"A
|
||||
CAIN B,"a
|
||||
JRST ASWI
|
||||
CAIE B,"L
|
||||
CAIN B,"l
|
||||
JRST LSWI
|
||||
CAIE B,"D
|
||||
CAIN B,"d
|
||||
JRST DSWI
|
||||
CAIE B,"I
|
||||
CAIN B,"i
|
||||
JRST ISWI
|
||||
JRST ILLSWI
|
||||
CSWI: XORI SWTCHS,CS ;COMPLEMENT APPROPRIATE BIT
|
||||
JRST NXTCHR
|
||||
PSWI: XORI SWTCHS,PS
|
||||
JRST NXTCHR
|
||||
ASWI: XORI SWTCHS,AS
|
||||
JRST NXTCHR
|
||||
LSWI: XORI SWTCHS,LS
|
||||
JRST NXTCHR
|
||||
DSWI: TRO SWTCHS,DS
|
||||
SKIPE NAME
|
||||
JRST FNAM+2
|
||||
JRST NXTCHR
|
||||
ISWI: XORI SWTCHS,IS
|
||||
JRST NXTCHR
|
||||
|
||||
XYNAME: SKIPE NAME ;CAUSE BREAK IF NAME AROUND
|
||||
JRST FNAM
|
||||
MOVE A,XFNAME
|
||||
CAIE B,^X
|
||||
MOVE A,YFNAME
|
||||
MOVEM A,NAME
|
||||
MOVEI B,40
|
||||
JRST FNAM
|
||||
|
||||
|
||||
;DISK AND TTY OPENS
|
||||
|
||||
LSC: .CALL LSCOPN ;Get channel to LSC movies file
|
||||
ERROR NOLSC
|
||||
JRST PLOOP ;Print the file until ^C seen.
|
||||
|
||||
;NLSC: .CALL NLSCOP ;GET CHANNEL TO LSC MOVIES FILE
|
||||
; ERROR MVELST
|
||||
; JRST NLSCRD
|
||||
|
||||
FOPEN: MOVE A,JNAM
|
||||
CAME A,[SIXBIT /DOC/]
|
||||
JRST FOPEN1
|
||||
SKIPN TYP ;IF DOC TYPE COMES FROM JNAME, DO FIXUPS
|
||||
JRST FOPEN2
|
||||
SKIPE FN1
|
||||
MOVE DES,FNAME1
|
||||
JRST FOPEN3
|
||||
FOPEN2: SKIPN FN1 ;IF NO TYPE NAME, GIVE POSSIBILITIES
|
||||
ERROR DLIST
|
||||
MOVE A,FNAME1
|
||||
MOVEM A,TYP
|
||||
SKIPE FN2
|
||||
MOVE DES,FNAME2
|
||||
FOPEN3: SKIPN DES ;IF NO DESCRIPTOR, LIST DIRECTORY
|
||||
IORI SWTCHS,LS
|
||||
MOVE A,[SIXBIT /DSK/]
|
||||
MOVEM A,DEVICE
|
||||
MOVE B,TYP
|
||||
CAME B,[SIXBIT /MUD/]
|
||||
CAMN B,[SIXBIT /MUDDLE/]
|
||||
CAIA
|
||||
JRST DITS
|
||||
MOVE A,[SIXBIT /MUDMAN/]
|
||||
MOVEM A,SNAME
|
||||
MOVE A,[SIXBIT /MUDDLE/]
|
||||
MOVEM A,FNAME1
|
||||
MOVE A,[SIXBIT /ORDER/]
|
||||
JRST FOPEN0
|
||||
DITS: MOVE A,[SIXBIT /.INFO./]
|
||||
MOVEM A,SNAME
|
||||
MOVE A,[SIXBIT /ITS/]
|
||||
MOVEM A,FNAME1
|
||||
CAME B,[SIXBIT /CALL/]
|
||||
CAMN B,[SIXBIT /.CALL/]
|
||||
JRST [MOVE A,[SIXBIT /.CALLS/]
|
||||
JRST FOPEN0]
|
||||
CAMN B,[SIXBIT /UUO/]
|
||||
JRST [MOVE A,[SIXBIT /UUOS/]
|
||||
JRST FOPEN0]
|
||||
CAME B,[SIXBIT /SUSET/]
|
||||
CAMN B,[SIXBIT /USET/]
|
||||
JRST [MOVE A,[SIXBIT /USETS/]
|
||||
JRST FOPEN0]
|
||||
CAMN B,[SIXBIT /TTYVAR/]
|
||||
JRST [MOVE A,B
|
||||
JRST FOPEN0]
|
||||
CAMN B,[SIXBIT /INTRUP/]
|
||||
JRST [MOVE A,[SIXBIT /%PI/]
|
||||
JRST FOPEN0]
|
||||
CAME B,[SIXBIT /TVDOCT/]
|
||||
CAMN B,[SIXBIT /TVDOC/]
|
||||
JRST [MOVE A,TYP
|
||||
JRST FOPEN0]
|
||||
ERROR BADTYP
|
||||
FOPEN0: MOVEM A,FNAME2
|
||||
JUMPE B,FOPEN1
|
||||
TRZ A,7777
|
||||
IOR A,[SIXBIT / IX/]
|
||||
MOVEM A,IXNAME
|
||||
|
||||
FOPEN1: .CALL DSKOPN ;DO ALL OF THE NORMAL OPENS
|
||||
ERROR ILFILE
|
||||
SKIPN ODEVIC ;IF OUTPUT FILE GIVEN,
|
||||
JRST FOPEN4
|
||||
.CALL OFOPEN ;OPEN IT AS "TTYO",
|
||||
.LOSE 1000
|
||||
TRZ SWTCHS,PS ;TURN OFF PAGING,
|
||||
TRO SWTCHS,FS ;AND TURN ON F SWITCH
|
||||
FOPEN4: JUMPN B,DOCRD
|
||||
|
||||
TRNE SWTCHS,IS ;IF I SWITCH IS SET,
|
||||
JRST ILOOP ;DO SUPERIMAGE OUTPUT
|
||||
SKIPE ODEVIC ;IF OUTPUT FILE GIVEN,
|
||||
TRO SWTCHS,IS ;TURN ON IMAGING (JUST TO FOOL MOREAGE)
|
||||
TRNE SWTCHS,PS ;IF P SWITCH IS SET,
|
||||
SKIPE TSROL ;AND NOT SCROLLING,
|
||||
JRST PLOOP0
|
||||
MOVEI PSNUM,2 ;CLEAR PAGE BEFORE STARTING
|
||||
MOVE PSBP,[440700,,[ASCII /C/]]
|
||||
.CALL PBLOCK
|
||||
.LOSE 1000
|
||||
JRST PLOOP
|
||||
|
||||
|
||||
;READ AND PRINT LOOPS FOR VARIOUS MODES
|
||||
|
||||
PLOOP0: TRNN SWTCHS,FS
|
||||
.IOT TTYO,[^J]
|
||||
PLOOP: JSP Z,CIN ;HERE TO PRINT FILE
|
||||
JRST CFINIS
|
||||
CAIE A,^C
|
||||
JRST .+3
|
||||
TRNE SWTCHS,CS ;STOP IF ^C AND C SWITCH IS SET
|
||||
JRST CFINIS
|
||||
TRNN SWTCHS,PS ;SKIP THIS SECTION IF P SWITCH NOT SET
|
||||
JRST .+4
|
||||
CAIE A,^L
|
||||
CAIN A,^_
|
||||
JRST PAGE
|
||||
CAIN A,^@ ;DON'T PRINT ^@ IF A SWITCH SET
|
||||
TRNN SWTCHS,AS
|
||||
JSP Z,COUT
|
||||
JRST PLOOP
|
||||
|
||||
ILOOP: SETZ B,
|
||||
ILOOP1: JSP Z,CIN ;HERE TO PRINT FILE IN SUPERIMAGE MODE
|
||||
JRST FINIS
|
||||
CAIN A,^C
|
||||
AOJA B,ILOOP1
|
||||
JUMPE B,ILOOP3
|
||||
MOVE C,A
|
||||
MOVEI A,^C
|
||||
ILOOP2: .CALL IMGIOT
|
||||
.LOSE 1000
|
||||
SOJN B,ILOOP2
|
||||
MOVE A,C
|
||||
ILOOP3: .CALL IMGIOT ;OUTPUT CHAR
|
||||
.LOSE 1000
|
||||
JRST ILOOP1
|
||||
|
||||
;LSCRD: JSP Z,CIN ;READ UNTIL ^@
|
||||
; ERROR MVELST
|
||||
; JUMPN A,LSCRD
|
||||
;PRLOOP: JSP Z,CIN ;READ & PRINT UNTIL NEXT ^@
|
||||
; JRST CFINIS
|
||||
; JUMPE A,CFINIS
|
||||
; JSP Z,COUT
|
||||
; JRST PRLOOP
|
||||
;
|
||||
;NLSCRD: JSP Z,CIN ;READ UNTIL "
|
||||
; ERROR MVELST
|
||||
; CAIE A,""
|
||||
; JRST NLSCRD
|
||||
; MOVEI PSNUM,2 ;CLEAR PAGE BEFORE STARTING
|
||||
; MOVE PSBP,[440700,,[ASCII /C/]]
|
||||
; .CALL PBLOCK
|
||||
; .LOSE 1000
|
||||
;NPLOOP: JSP Z,CIN ;READ & PRINT UNTIL NEXT "
|
||||
; JRST CFINIS
|
||||
; CAIN A,""
|
||||
; JRST NMDONE
|
||||
; CAIE A,"\ ;HANDLE QUOTING
|
||||
; JRST .+3
|
||||
; JSP Z,CIN
|
||||
; JRST CFINIS
|
||||
; JSP Z,COUT
|
||||
; JRST NPLOOP
|
||||
;NMDONE: JSP Z,CIN ;LOOK FOR A (
|
||||
; JRST CFINIS
|
||||
; CAIE A,"(
|
||||
; JRST NMDONE
|
||||
;NMDON1: JSP Z,CIN ;NOW GET A "
|
||||
; JRST CFINIS
|
||||
; CAIE A,""
|
||||
; JRST NMDON1
|
||||
; JSP Z,OBCLR
|
||||
; PUSHJ P,MORE ;DO MOREAGE
|
||||
; JRST NPLOOP ;NOW PRINT THIS MESSAGE
|
||||
|
||||
DOCRD: LDB A,[360600,,DES];FLUSH LEADING DOTS IN DESCRIPTOR
|
||||
CAIE A,'.
|
||||
JRST .+3
|
||||
LSH DES,6
|
||||
JRST DOCRD
|
||||
TRNE SWTCHS,LS
|
||||
JRST DOCRD1
|
||||
MOVEI A,DSKBI
|
||||
.CALL RFDATE
|
||||
ERROR RFDLST
|
||||
MOVE D,B
|
||||
MOVEI A,.UII
|
||||
.CALL IDXOPN
|
||||
JRST MAKIDX
|
||||
MOVEI A,DSKIO
|
||||
.CALL RFDATE
|
||||
ERROR RFDLST
|
||||
CAME B,D
|
||||
JRST [ .CALL [ SETZ
|
||||
SIXBIT /DELEWO/
|
||||
SETZI DSKIO]
|
||||
.LOSE 1000
|
||||
JRST MAKIDX]
|
||||
MOVE A,DES ;SET UP MASK FOR DESCRIPTOR COMPARISON
|
||||
MOVEI B,[ 0
|
||||
770000,,0
|
||||
777700,,0
|
||||
-1,,0
|
||||
-1,,770000
|
||||
-1,,777700
|
||||
-1]
|
||||
MLOOP: ANDCM A,(B)
|
||||
SKIPE A
|
||||
AOJA B,MLOOP
|
||||
MOVE MSK,(B)
|
||||
SETOM GETDES
|
||||
JRST GETDOC
|
||||
MAKIDX: MOVEI PSNUM,46.
|
||||
MOVE PSBP,[440700,,[ASCII /New documentation file, must index, hang on.../]]
|
||||
.CALL PBLOCK
|
||||
.LOSE 1000
|
||||
MOVEI A,.UIO
|
||||
.CALL IDXOPN
|
||||
ERROR IDOLST
|
||||
JRST DOCRD1 ;FIRST PAGE DOESN'T HAVE TO START WITH ^L
|
||||
DOCRD0: JSP Z,CIN ;READ UNTIL ^L OR ^_
|
||||
JRST DOCEND
|
||||
CAIE A,^L
|
||||
CAIN A,^_
|
||||
JRST DOCRD1
|
||||
JRST DOCRD0
|
||||
DOCRD1: SETZ E, ;USE E TO KEEP TRACK OF LEADING DOTS
|
||||
JSP Z,CIN ;READ UNTIL A LETTER/NUMBER IS FOUND
|
||||
JRST DOCEND
|
||||
CAIE A,".
|
||||
JRST .+3
|
||||
MOVE E,A
|
||||
JRST DOCRD1+1
|
||||
CAIG A,40
|
||||
JRST DOCRD1
|
||||
MOVE B,[440600,,C]
|
||||
SETZ C,
|
||||
MOVEM CC,CHARS
|
||||
SOS CHARS
|
||||
GNLOOP: SUBI A,40 ;GET DESCRIPTOR NAME ON THIS PAGE
|
||||
IDPB A,B
|
||||
JSP Z,CIN
|
||||
JRST DOCEND
|
||||
CAIE A,"* ;THESE SPECIAL CHARACTERS MAY BE PART OF A NAME
|
||||
CAIN A,"+
|
||||
JRST GDCHAR
|
||||
CAIE A,"-
|
||||
CAIN A,"/
|
||||
JRST GDCHAR
|
||||
CAIE A,"=
|
||||
CAIN A,"?
|
||||
JRST GDCHAR
|
||||
CAIL A,"0 ;NON-LETTER/NUMBER SIGNALS END OF NAME
|
||||
CAILE A,"Z
|
||||
JRST DOCRD2
|
||||
CAILE A,"9
|
||||
CAIL A,"A
|
||||
SKIPA
|
||||
JRST DOCRD2
|
||||
GDCHAR: TLNE B,770000 ;IGNORE MORE THAN SIX CHARACTERS
|
||||
JRST GNLOOP
|
||||
DOCRD2: TRNN SWTCHS,LS ;IF L SWITCH SET, LIST NAMES AS PASSED
|
||||
JRST INDEX
|
||||
SKIPE E ;PRINT DOT IF THERE WAS ONE BEFORE NAME
|
||||
.IOT TTYO,E
|
||||
JSP Z,OSIX ;PRINT DESCRIPTOR NAME
|
||||
DOCRD3: .IOT TTYO,A ;PRINT REST OF LINE
|
||||
CAIN A,^J
|
||||
JRST DOCRD0
|
||||
JSP Z,CIN
|
||||
JRST DOCEND
|
||||
JRST DOCRD3
|
||||
DOCEND: TRNE SWTCHS,LS ;IF IN LIST MODE, END AT EOF
|
||||
JRST FINIS
|
||||
.IOT DSKIO,[0]
|
||||
.CALL SFDATE
|
||||
ERROR SFDLST
|
||||
.CLOSE DSKIO,
|
||||
MOVE IBP,[10700,,BFR+BUFLEN-1]
|
||||
MOVEM IBP,ENDBFR
|
||||
JRST FOPEN1
|
||||
INDEX: .IOT DSKIO,C ;WRITE OUT DESCRIPTOR NAME
|
||||
SKIPE E ;IF THERE WAS A DOT,
|
||||
SOS CHARS ; ALLOW SPACE FOR IT
|
||||
.IOT DSKIO,CHARS ;WRITE OUT POSITION
|
||||
JRST DOCRD0
|
||||
|
||||
DESCMP: .IOT DSKIO,C
|
||||
GETDOC: .IOT DSKIO,C
|
||||
SKIPN C
|
||||
JRST [ SKIPN NEWDES
|
||||
ERROR DOCLST
|
||||
JRST FINIS]
|
||||
AND C,MSK ;FLUSH UNWANTED PART
|
||||
CAME C,DES ;SEE IF THIS IS DESIRED DESCRIPTOR
|
||||
JRST DESCMP
|
||||
SKIPN NEWDES
|
||||
JRST PRDOC
|
||||
MOVE IBP,[10700,,BFR+BUFLEN-1]
|
||||
MOVEM IBP,ENDBFR
|
||||
PUSHJ P,MORE
|
||||
TRNE SWTCHS,FS
|
||||
.IOT TTYO,[12.]
|
||||
SETZM NEWDES
|
||||
PRDOC: .IOT DSKIO,C ;YES, CLEAR PAGE & PRINT NAME
|
||||
IDIVI C,5
|
||||
.ACCESS DSKBI,C
|
||||
TRNE SWTCHS,FS ;IF NOT OUTPUT FILING,
|
||||
JRST SLOOP
|
||||
SKIPE TSROL ;OR SCROLLING,
|
||||
JRST SLOOP-1
|
||||
MOVEI PSNUM,2 ;CLEAR SCREEN
|
||||
MOVE PSBP,[440700,,[ASCII /C/]]
|
||||
.CALL PBLOCK
|
||||
.LOSE 1000
|
||||
JRST SLOOP
|
||||
.IOT TTYO,[^M]
|
||||
.IOT TTYO,[^J]
|
||||
SLOOP: JUMPE D,CPLOOP
|
||||
JSP Z,CIN
|
||||
ERROR FILLST
|
||||
SOJA D,SLOOP
|
||||
CPLOOP: JSP Z,CIN ;READ & PRINT UNTIL NEXT ^L OR ^_ OR EOF
|
||||
JRST CFINIS
|
||||
CAIE A,^L
|
||||
CAIN A,^_
|
||||
JRST NXTDES
|
||||
CAIN A,^C
|
||||
TRNN SWTCHS,CS
|
||||
CAIA
|
||||
JRST NXTDES
|
||||
JSP Z,COUT
|
||||
JRST CPLOOP
|
||||
|
||||
NXTDES: JSP Z,OBCLR
|
||||
SETOM NEWDES
|
||||
JRST GETDOC
|
||||
|
||||
|
||||
;PAGER FOR READING PAGED FILES (^L OR ^_) WITH P SWITCH SET; MORE HANDLER
|
||||
|
||||
PAGE: JSP Z,OBCLR
|
||||
SETZ B, ;B USED FOR SPACE COUNTER
|
||||
JSP Z,CIN
|
||||
JRST FINIS ;DON'T PAGE IF AT END OF FILE
|
||||
CAIE A,^C
|
||||
JRST .+3
|
||||
TRNE SWTCHS,CS
|
||||
JRST FINIS
|
||||
CAIE A,^M ;FLUSH TRAILING CARRIAGE-RETURNS & LINE-FEEDS
|
||||
CAIN A,^J
|
||||
JRST PAGE
|
||||
CAIN A,40
|
||||
AOJA B,PAGE+1
|
||||
PUSHJ P,MORE
|
||||
JUMPE B,PAGEND
|
||||
MOVEI C,40
|
||||
.IOT TTYO,C ;PRINT SPACES, IF ANY
|
||||
SOJG B,.-1
|
||||
PAGEND: .IOT TTYO,A
|
||||
JRST PLOOP
|
||||
|
||||
MORE: TRNE SWTCHS,IS+FS ;IF I SWITCH OR F SWITCH IS ON,
|
||||
POPJ P, ;DO NOTHING
|
||||
PUSH P,PSNUM
|
||||
PUSH P,PSBP
|
||||
PUSH P,A
|
||||
SKIPE NEWDES
|
||||
JRST [ MOVEI PSNUM,14.
|
||||
MOVE PSBP,[440700,,[ASCII /--Next Match--/]]
|
||||
JRST DMORE]
|
||||
MOVEI PSNUM,8.
|
||||
MOVE PSBP,[440700,,[ASCII /--More--/]]
|
||||
DMORE: .CALL PBLOCK ;PAGER USING ^P HACKERY
|
||||
.LOSE 1000
|
||||
.LISTEN A,
|
||||
.CALL PEEK
|
||||
.LOSE 1000
|
||||
CAIN A,40
|
||||
JRST MORE1
|
||||
CAIE A,177
|
||||
CAIN A,^S
|
||||
CAIA
|
||||
JRST MORE2
|
||||
.CALL TYI
|
||||
.LOSE 1000
|
||||
MORE2: MOVEI PSNUM,7
|
||||
MOVE PSBP,[440700,,[ASCII /Flushed/]]
|
||||
.CALL PBLOCK
|
||||
.LOSE 1000
|
||||
SKIPE GETDES
|
||||
CAIE A,177
|
||||
JRST FINIS
|
||||
SKIPE NEWDES
|
||||
JRST FINIS
|
||||
MOVEI A,NXTDES
|
||||
MOVEM A,TSINT+1
|
||||
MOVE OBP,[440700,,OBUF]
|
||||
SETZ N,
|
||||
JRST MPOPS
|
||||
|
||||
MORE1: .CALL TYI
|
||||
.LOSE 1000
|
||||
MOVEI PSNUM,4
|
||||
MOVE PSBP,[440700,,[ASCII /TL/]]
|
||||
SKIPN TSROL
|
||||
JRST .+3
|
||||
MOVEI PSNUM,2
|
||||
MOVE PSBP,[440700,,[ASCII /
|
||||
/]]
|
||||
.CALL PBLOCK
|
||||
.LOSE 1000
|
||||
MPOPS: POP P,A
|
||||
POP P,PSBP
|
||||
POP P,PSNUM
|
||||
POPJ P,
|
||||
|
||||
|
||||
;ERROR MESSAGE PRINTER (WORD POINTER IN C)
|
||||
|
||||
ERRPRT: MOVEI PSNUM,2
|
||||
MOVE PSBP,[440700,,[ASCII /A/]]
|
||||
.CALL PBLOCK
|
||||
.LOSE 1000
|
||||
HRLI C,440700
|
||||
ERLOOP: ILDB B,C
|
||||
JUMPE B,ERRDON
|
||||
.IOT TTYO,B
|
||||
JRST ERLOOP
|
||||
ERRDON: .IOT TTYO,[^M]
|
||||
.IOT TTYO,[^J]
|
||||
JRST FINIS
|
||||
|
||||
|
||||
;SIXBIT OUTPUT ROUTINE (PUT WORD IN C, USES B & D)
|
||||
|
||||
OSIX: MOVE B,[440600,,C]
|
||||
OLOOP: ILDB D,B
|
||||
JUMPE D,(Z)
|
||||
ADDI D,40
|
||||
.IOT TTYO,D
|
||||
TLNE B,770000
|
||||
JRST OLOOP
|
||||
JRST (Z)
|
||||
|
||||
|
||||
;IOT SIMULATOR FOR READING FROM DISK FILE
|
||||
|
||||
CIN: CAMN IBP,ENDBFR
|
||||
JRST CIN1
|
||||
ILDB A,IBP
|
||||
AOJ CC, ;INCREMENT CHARACTER COUNT
|
||||
JRST 1(Z) ;NORMAL RETURN
|
||||
CIN1: MOVE A,ENDBFR
|
||||
CAME A,[10700,,BFR+BUFLEN-1]
|
||||
JRST (Z) ;EOF RETURN
|
||||
MOVE A,[-BUFLEN,,BFR]
|
||||
.IOT DSKBI,A
|
||||
MOVE IBP,[10700,,BFR-1]
|
||||
SKIPL A
|
||||
JRST CIN
|
||||
SOJ A,
|
||||
HRRM A,ENDBFR
|
||||
JRST CIN
|
||||
|
||||
|
||||
;IOT SIMULATOR FOR WRITING TO TTY & REAL STRING OUTPUTER
|
||||
|
||||
COUT: IDPB A,OBP
|
||||
AOJ N,
|
||||
CAIE N,OBUFLN*5
|
||||
JRST (Z)
|
||||
OBCLR: JUMPE N,(Z)
|
||||
MOVE OBP,[440700,,OBUF]
|
||||
.CALL [ SETZ
|
||||
SIXBIT /SIOT/
|
||||
1000,,TTYO
|
||||
OBP
|
||||
SETZ N]
|
||||
.LOSE 1000
|
||||
MOVE OBP,[440700,,OBUF]
|
||||
JRST (Z)
|
||||
|
||||
|
||||
;INTERRUPT HANDLER
|
||||
|
||||
TSINT: 0
|
||||
0
|
||||
PUSH P,A
|
||||
MOVE A,TSINT
|
||||
NXTINT: TRZE A,2
|
||||
PUSHJ P,MORE
|
||||
TRZE A,1
|
||||
JRST TYIINT
|
||||
INTRET: POP P,A
|
||||
.DISMIS TSINT+1
|
||||
TYIINT: MOVEI A,TTYI
|
||||
.ITYIC A,
|
||||
JRST INTRET ;IGNORE FALSE CHAR INTERRUPTS
|
||||
.RESET TTYO, ;FLUSH OUTPUT
|
||||
.RESET TTYI, ;AND INPUT
|
||||
.IOT TTYO,A
|
||||
JRST FINIS
|
||||
|
||||
|
||||
;VARIOUS CALL BLOCKS
|
||||
|
||||
DSKOPN: SETZ
|
||||
SIXBIT /OPEN/
|
||||
5000,,.BAI
|
||||
1000,,DSKBI
|
||||
DEVICE
|
||||
FNAME1
|
||||
FNAME2
|
||||
SETZ SNAME
|
||||
|
||||
IDXOPN: SETZ
|
||||
SIXBIT /OPEN/
|
||||
4000,,A
|
||||
1000,,DSKIO
|
||||
DEVICE
|
||||
FNAME1
|
||||
IXNAME
|
||||
SETZ SNAME
|
||||
|
||||
OFOPEN: SETZ
|
||||
SIXBIT /OPEN/
|
||||
5000,,.UAO
|
||||
1000,,TTYO
|
||||
ODEVIC
|
||||
ONAME1
|
||||
ONAME2
|
||||
SETZ OSNAME
|
||||
|
||||
RFDATE: SETZ
|
||||
SIXBIT /RFDATE/
|
||||
A
|
||||
SETZM B
|
||||
|
||||
SFDATE: SETZ
|
||||
SIXBIT /SFDATE/
|
||||
1000,,DSKIO
|
||||
SETZ D
|
||||
|
||||
LSCOPN: SETZ
|
||||
SIXBIT /OPEN/
|
||||
5000,,.BAI
|
||||
1000,,DSKBI
|
||||
[SIXBIT /KS/]
|
||||
[SIXBIT /MOVIES/]
|
||||
[SIXBIT /LSC/]
|
||||
SETZ [SIXBIT /COMAIL/]
|
||||
|
||||
;NLSCOP: SETZ
|
||||
; SIXBIT /OPEN/
|
||||
; 5000,,.BAI
|
||||
; 1000,,DSKBI
|
||||
; [SIXBIT /DM/]
|
||||
; [SIXBIT /SPECS/]
|
||||
; [SIXBIT /545MVE/]
|
||||
; SETZ [SIXBIT /.BATCH/]
|
||||
|
||||
PBLOCK: SETZ
|
||||
SIXBIT /SIOT/
|
||||
5000,,%TJDIS ;ENABLE ^P HACKERY
|
||||
1000,,TTYO
|
||||
PSBP
|
||||
SETZ PSNUM
|
||||
|
||||
IMGIOT: SETZ
|
||||
SIXBIT /IOT/
|
||||
5000,,%TJSIO
|
||||
1000,,TTYO
|
||||
SETZ A
|
||||
|
||||
TYI: SETZ
|
||||
SIXBIT /IOT/
|
||||
5000,,%TIACT
|
||||
1000,,TTYI
|
||||
SETZ A
|
||||
|
||||
PEEK: SETZ
|
||||
SIXBIT /IOT/
|
||||
5000,,%TIPEK+%TIACT
|
||||
1000,,TTYI
|
||||
SETZ A
|
||||
|
||||
TTYSET: SETZ
|
||||
SIXBIT /TTYSET/
|
||||
1000,,TTYI
|
||||
[404040,,404040]
|
||||
SETZ [414040,,500040]
|
||||
|
||||
TTYGET: SETZ
|
||||
SIXBIT /TTYGET/
|
||||
1000,,TTYI
|
||||
2000,,A
|
||||
2000,,A
|
||||
SETZM A
|
||||
|
||||
CNSGET: SETZ
|
||||
SIXBIT /CNSGET/
|
||||
1000,,TTYI
|
||||
2000,,A
|
||||
2000,,A
|
||||
2000,,A
|
||||
2000,,A
|
||||
SETZM A
|
||||
|
||||
SCPOS: SETZ
|
||||
SIXBIT /SCPOS/
|
||||
1000,,TTYI
|
||||
1000,,0
|
||||
SETZI
|
||||
|
||||
|
||||
;ERROR CRUFTIES
|
||||
|
||||
DEFINE DEFERR NAME,STRING
|
||||
NAME: MOVEI C,[ASCIZ/!STRING!/]
|
||||
JRST ERRPRT
|
||||
TERMIN
|
||||
|
||||
DEFERR ILLCHR,[Illegal character in JCL]
|
||||
DEFERR ILFILE,[File not found]
|
||||
DEFERR ILLSWI,[Illegal switch]
|
||||
DEFERR MVELST,[Information not currently available]
|
||||
DEFERR NOLSC,[The LSC movie guide seems to be missing.]
|
||||
DEFERR DOCLST,[No such descriptor found in this DOC file]
|
||||
DEFERR DLIST,[Known documentation types: CALL UUO USET SUSET TTYVAR INTRUP MUD(DLE)]
|
||||
DEFERR BADTYP,[Bad DOC type, use DOC^K to list possibilities]
|
||||
DEFERR SFDLST,[Set-file-date CALL lost]
|
||||
DEFERR RFDLST,[Read-file-date CALL lost]
|
||||
DEFERR IDOLST,[Open for output of new index file lost]
|
||||
DEFERR FILLST,[Documentation file or index in bad format]
|
||||
|
||||
|
||||
;NORMAL EXIT
|
||||
|
||||
CFINIS: JSP Z,OBCLR
|
||||
FINIS: .VALUE [ASCIZ ":KILLî:VKî"]
|
||||
|
||||
END START
|
||||
Reference in New Issue
Block a user