1
0
mirror of https://github.com/PDP-10/its.git synced 2026-03-01 09:40:56 +00:00

PALX - PDP-11 cross assembler.

This commit is contained in:
Lars Brinkhoff
2016-12-09 20:35:34 +01:00
parent fbcecf6092
commit 02f60d544c
8 changed files with 8231 additions and 1 deletions

View File

@@ -112,7 +112,8 @@ There's a [DDT cheat sheet](doc/DDT.md) for Unix users.
- MTBOOT, make bootable tapes.
- NAME, Shows logged in users and locations, aka FINGER.
- NETIME, network time dragon.
- OS, realtime TTY spy
- OS, realtime TTY spy.
- PALX, PDP-11 cross assembler.
- PANDA, user account management program.
- PDSET, set time and date.
- PEEK, system monitoring.

View File

@@ -710,6 +710,10 @@ expect ":KILL"
respond "*" ":midas decsys;_decbot\r"
expect ":KILL"
# palx
respond "*" ":midas sys;ts palx_sysen1;palx\r"
expect ":KILL"
# idle
respond "*" ":midas sys1;ts idle_gren;idle\r"
expect ":KILL"

170
doc/_info_/palx.format Executable file
View File

@@ -0,0 +1,170 @@
Format of PDP11 binary files as stored on ITS
Output produced by PALX and :ABSDMP in 11simulator starts with is
PDP11 paper tape absolute loader format, stored 1 byte per pdp10 word.
The symbol table starts immediately after the end of pdp11 core.
The entire file is divided into blocks, usually the PDP11 core image
is a series of blocks, increasing in core address. Blocks are generally
less than 120 bytes in length, although the format theoretically can
allow nearly an entire address space (actually 65530 bytes) to
be stored as one block.
A typical block: (Note each PDP11 byte is stored right justified,
that is in the low-order end, of a PDP10 word)
------------------------
| 000000000001 | always there, means absloader format block
| 000000000000 | always there
| low order byte | of count of number of bytes in block
| high order byte | includes the initial 1 and 0 but not checksum
| low order byte | of address of this data
| high order byte | of address
| _ _ _ _ _ _ _ |
|/ \/ \/ \/ \/ \/ \/ \/
.
. Byte count minus 6 bytes of data,
. low order byte first then high order
.
_/\_/\_/\_/\_/\_/\_/\_/|
| |
| |
| checksum | of all bytes of block including the 1,0,count
------------------------ and the address. Sum of all bytes + checksum
should equal 0 modulo 256.
The last block of data to be loaded into the 11 is has a byte count
of 6. The load address of that block is the starting address for the
program, unless it is odd in which case the processor is supposed to halt.
The symbol table block always seems to be after the PDP11 core image
data and looks like:
------------------------
| 000000000002 |
| sixbit symbol |
| flags,,value |
| sixbit symbol |
| flags,,value |
| _ _ _ _ _ _ _ |
|/ \/ \/ \/ \/ \/ \/ \/
.
. any number of symbols followed by value cells...
.
_/\_/\_/\_/\_/\_/\_/\_/|
| |
| 000000000000 | apparently ended just by a word of zero
------------------------ in the word the symbol is usually in.
The flags appear in the left half, I've only found the first 4 useful
but just in case PALX's internal definitions for the rest of the bits is
given.
HKLSYM==020000 ;HALF KILLED SYMBOL
UNDSYM==010000 ;UNDEFINED SYMBOL FLAG
REGSYM==004000 ;REGISTER
LBLSYM==001000 ;LABEL
INDSYM==000040 ; VALUE OF SYMBOL DEPENDS ON ANOTHER SYMBOL
ENTSYM==000400 ; SYMBOL IS AN ENTRY POINT
EXTSYM==000200 ; SYMBOL IS EXTERNAL
RELSYM==000100 ; SYMBOL HAS RELOCATABLE VALUE
MDLSYM==002000 ;MULTIPLY DEFINED LABEL FLAG
SUPSYM==040000 ;DON'T OUTPUT THIS SYMBOL.
NCRSYM==100000 ;DON'T CREF THIS SYM.
INISYM==200000 ;PDP-11 INSTRUCTION, ERROR IF REDEFINED (BUT OK TO EXPUNGE).
PALX "Newbin" format
The disk format used by the ITS and Sail version of Palx are rather
inefficient of disk space and take quite a bit of interpetation (e.g.
converting symbols from sixbit to rad50) in order to load into a pdp11
debugger such as Rug. The "newbin" format is produced by a palx which has
been generated with the newbin flag on. This is default for the Twenex
version. There is an ITS version under the name NPALX that does this
also. The newbin format is exactly the pdp11 loading format described
below stored with four 8 bit bytes high order justified in a pdp10 word
exactly as you would expect for use with pdp10 byte pointer instructions.
PDP11 Loading Protocol
The format of the data used when loading a PDP11, is essentially
the absloader format, except that the data path is only 7 bits wide.
The PDP11 must send a positive or negative acknowledge after each block.
If positive the next block is sent, if not the last block is repeated
until a postive acknowledge is recieved.
The stream of characters as it comes to a PDP11 looks like:
------------------------
| 001 | always there, the 1st 2 bytes are meant to cause the
| 002 | PDP11 Consol program to go into "load" mode.
------------------------
------------------------
| 001 | \
| 000 | ]
| _ _ _ _ _ _ _ | ]
|/ \/ \/ \/ \/ \/ \/ \/ \
> absloader format blocks
_/\_/\_/\_/\_/\_/\_/\_/| /
| | ]
| checksum | /
------------------------
If PDP11 sends back a 4, the next block is sent,
if anything else (usually a 6) is recieved, the last
block is re-sent.
After the last abloader format block (indicated by
a block with a byte count of 6) the PDP11 sends back
a 5 if it wants symbols sent, or a 47 if it doesn't.
If symbols are to be sent they are sent as data to be loaded into
Rug's symbol table. Symbol table entries consist of 2 rad50 words
for the symbol name followed by 1 word of symbol value. After
16 symbols, two words containing bit flags specify which of the 16
symbols are half-killed and which are register symbols. (Low-order
bit corresponds to the symbol entry stored at the highest end of
the 16 symbols.) Loder sends symbols in groups of 16 followed by
these flag words, each group of 16 loading below the previous group.
Thus, Rug's symbol table grows downward in chunks of 100 decimal bytes.
The load address used for each group of 16 symbols is a negative offset
from the top of the symbol table (i.e. the 1st group of symbols will
load from -100 to 0). Rug will add the symbol-table top to this
offset while loading symbols.
------------------------
| 001 | \
| 000 | ]
| _ _ _ _ _ _ _ | ]
|/ \/ \/ \/ \/ \/ \/ \/ \
> absloader format block, 106. byte count.
_/\_/\_/\_/\_/\_/\_/\_/| / Data is 100. bytes, 16 entries of 3 words
| | ] each, plus two flag words. Load address
| checksum | / is -100., -200., etc.
------------------------
Symbol table:
(low address)
_/\_/\_/\_/\_/\_/\_/\_/|
| | (register flag word)
|----------------------|
| rad50 | 1st 3 letters of 1st symbol name
|----------------------|
| rad50 | last 3 letters of 1st symbol name
|----------------------|
| value | 1st symbol value
|----------------------|
|/\_/\_/\_/\_/\_/\_/\_/|
(15 more symbol entries)
_/\_/\_/\_/\_/\_/\_/\_/|
| | (16th symbol value)
|----------------------|
| hk flag | half-kill flag (bit 0 => 16th symbol)
|----------------------|
| reg flag | register flag
|----------------------|
| | (1st 3 letters of 1st symbol name for
|/\_/\_/\_/\_/\_/\_/\_/| next 16 symbols)
This file last updated 3:30pm Sunday, 8 July 1984 by CBF.

468
doc/_info_/palx.order Executable file
View File

@@ -0,0 +1,468 @@
PALX command string format:
BIN, LST, ERR _ SRC1, SRC2,...,SRCN
The SRC files are effectively concatenated and assembled.
If the BIN spec is empty, no bin file is generated, unless the BIN spec is
followed by the "_".
If the LST spec is empty, a LST file is generated with default names iff there
is no ERR spec.
If no LST is wanted, the comma should be omitted as well.
If the ERR spec is present (that is, the LST spec is followed by a comma) an
ERR file is produced with the default names. (If you don't want one, omit the
comma between the LST spec and the "_")
The device defaults to DSK for the BIN, LST and 1st SRC files.
The 1st name for BIN, LST and ERR files defaults to that of 1st SRC file.
The 2nd name for the BIN file defaults to BIN;
That of the lst file, LIST if /c isn't given, CREF if it is
That of the ERR file, to ERRORS
That of the SRC files, to > .
:_SRC1,SRC2,...,SRCN can be abbreviated
SRC1,SRC2,...,SRCN
Switches do not constitute a non-null spec. (":" or ";" will do that)
The switches are:
/B - Suppress binary. (useful with short format)
/C - Output cref listing. forces /L.
/D - Give back tty and run disowned. Logout when finished. Forces /E.
/E - Force error file to be written.
/H - Double size of symbol table for each /H seen.
/L - Output listing even if no LST spec. (useful with abbreviated format)
If /L appears twice in the command string, listing will be done on both
passes.
/M - Suppress listing of lines generated by macros.
/N - Suppress error messages on tty. Forces /E
/P - Output bin on Ptp:. Forces /S.
/R - Reproduce source in listing. Forces /L.
/S - No symbols in BIN. Forces BIN to be generated unless /B.
/T - Cause normal listing if LST is on tty, cause tty-type listing if LST isn't
on tty.
/V - Sets the number of lines per page to be used in the listing. It should be
followed by an L for LPT, an X forf XGP, or a decimal number terminated by
a comma, which should be the desired number of lines per page including
space for margins. (That is, 60. for the LPT, etc.) This is the only
switch which affects more than one command string - the value set by the
switch will be used for each assembly until another occurrence of the V
switch alters the value.
Command files:
If "@FILSPEC" is placed in a command string, the contents of the file FILSPEC
are effectively inserted in the command string, surrounded by spaces. The
character following "@FILSPEC" is lost, and should be a comma unless "@FILSPEC"
is at the end of the command string, when the same ^M that ends the command
string will end "@FILSPEC".
^M and ^J in the file are treated as spaces; ^L and ^C terminate the file.
Command files may refer to other files to a depth limited by the iopdl.
Command file names default independently to DSK: >
They have no effect on the defaulting of other file names.
The character ^U cancels an entire command string, just as a sufficient number
of rubouts would.
in DDT,
:PALX command
is equivalent to
PALX^K
command^C
On finishing a command, PALX will normally ask for another. But, if the
command was terminated by ^C instead of ^M, and no fatal errors occurred during
execution, PALX will do a .BREAK 16,140000 to delete itself without flushing
the typein buffer. Fatal errors do flush it. Thus, one can type DDT commands
after a command terminated by a ^C. (And also commands to other programs that
might be run by the DDT commands).
Macro-argument scan:
If the first character read when a macro-arg is expected is ^, the next
character is used as the delimiter and all successive characters up to the next
appearance of the delimiter go in the macro arg. After that, spaces are
skipped, and a comma, CR or ; should follow.
If the first character seen is <, all characters between it and the matching >
(not including the < and > themselves) go in the macro arg. After the >,
spaces are skipped and a comma, CR or ; should follow.
If the first character is \, an expression is read in and its value is
converted to a string in base 8, which becomes the macro argument. After the
expression, spaces are skipped, etc.
Otherwise, all characters up to but not including the first comma, CR or ;
go in the macro arg, except that trailing spaces (and tabs, of course)
before a ; will be ignored.
If the scan of the argument stopped on a CR or ;, there are no more arguments.
Any more arguments wanted will be made null. The CR or ; will remain to be
re-read after the expansion of the macro, etc. If the scan stopped on a comma,
the next argument's scan will start with the character after the comma.
Pseudo-ops:
Ordinary pseudo-ops are legal only as the first symbol in a line. Each use of
a pseudo-op uses a whole line.
Value-returning pseudo-ops may be used anywhere an ordinary symbol may be used.
Such a pseudo will usually skip over any comma following its last arg. If
there is to be anything on the line after the psuedo's last arg the comma
should be used; eg:
foo==.length ^/ gg,,hh /,+1 ;sets foo to 9.
.ABS Sets %ABSADR to nonzero. Exactly the same as %ABSADR=-1
.ADRMD ADDR is a value-returning pseudo whose value is the addressing mode
of ADDR (the 6 bit quantity that would go in the SRC or DEST
field of an ordinary instruction given ADDR as an arg). If you
want to follow this construction with an arithmetic operator
put a comma in between; otherwise the operator may be included
in ADDR.
.ALSO Assembles the following code up to the matching .ENDC iff the
last conditional succeeded; i.e. if %SUCCESS is non-zero
.ASCII /TEXT/ Generates several bytes from the chars of TEXT. "/" may be
replaced by any char not in TEXT.
.ASCIZ /TEXT/ Similar but puts a zero byte after the TEXT.
.AUXIL Does nothing. This operator gives information to the @ lister.
.BLKB N is like .=.+N
.BLKW N Moves to even addr, then leaves N words of space. Like
.=.+<.&1>+<2*n>
.BYTE A,B,C Generates 3 bytes containing A,B,C respectively. Any number of
args may be given. Only commas separate args. Null args are
treated as 0.
.EJECT Starts a new listing page. Useful in macros, etc. where ^L's
can't be used.
.ELSE Assembles the following lines up the the matching .ENDC iff the
last conditional failed; i.e. iff %SUCCESS is zero. %SUCCESS
is complemented.
.END ADDR Ends a pass. Remaining input is ignored. Sets the starting
address to ADDR. ADDR may be absent, in which case 1 is used.
.ENDC Terminates a conditional. Error if unmatched.
.ENDM Terminates a .MACR or .TTYMA .
.ENDR Terminates a .REPT .
.EOT Causes whatever remains in current SRC file to be ignored.
.ERROR MSG Causes an error whose message is just the source line ".ERROR
MSG". As with other errors, the PC, page and line are printed.
.EVEN Like ".=<.&1>+." -- moves up to even addr.
.EXPUNGE Makes the symbols in the list following it undefined, like
.KILL in MIDAS: .EXPUNGE A,B,C
.IALSO STATEMENT
Assemble STATEMENT iff %SUCCESS is non-zero. See .ALSO .
.IELSE STATEMENT
Assemble STATEMENT iff %SUCCESS is zero. See .ELSE .
.IF CONDITION
Assemble lines up to following .ENDC only if CONDITION is true.
The conditions are:
1) Arithmetic conditionals:
NAME EXP
where NAME can be E,EQ,L,LE,LT,G,GE,GT,NE,NG,NL,NZ,Z
and any expression can be used. E.g., .IF EQ X-Y
2) String comparison:
DIF ARG1,ARG2
where ARG1 and ARG2 are macro-type args. E.g.,
IDN ARG1,ARG2
3) String comparison with null string.
B ARG true if ARG (a macro-type arg) is null
NB ARG true otherwise.
4) Definition testing
DF EXP true if all syms in EXP are defined.
NDF EXP the opposite.
5) Pass number testing
P1 true on pass 1
P2 true on pass 2
.IFF A subconditional. May appear only inside a conditional.
Switches the sense of the conditional for the code that
follows, so that it will assembled iff the conditional failed.
.IFT A subconditional that restores the original sense of the
conditional for the code that follows.
.IFTF A subconditional that causes the following code in the
conditional to be assembled unconditionally. This is different
from ending the conditional because a .IFT may appear later and
make assembly conditional again, for instance.
.IF1 Assemble lines up to following .ENDC only on pass 1.
.IF2 ...only on pass 2.
.IFB LINE ...only if 1st nonblank in LINE is CR, ; or comma.
.IFDF EXP ...only if all symbols in EXP are defined.
.IFG EXP ...only if EXP is positive.
.IFGE EXP ...only if EXP is nonneg.
.IFL EXP ...only if EXP is negative.
.IFLE EXP ...only if EXP is nonpositive.
.IFNB LINE ...only if 1st nonblank in LINE isn't comma, CR or ; .
.IFNDF EXP ...only if some symbol in EXP is undefined.
.IFNZ EXP ...only if EXP isn't 0.
.IFZ EXP ...only if EXP is 0.
.IIF CONDITION STATEMENT
Assemble STATEMENT only if CONDITION true. See .IF for
documentation of conditions.
.INSRT FILSPC Pushes the current source file and/or repeat, macro, etc. and
starts reading from the specified file. After the end of that
file, the file or macro containing the .INSRT will be resumed
starting with the next line. The characters "/@,_" are not
special in .INSRT FILSPC's - they go right in the filenames.
If the spec'd file isn't found, a non-fatal error occurs and
assembly of the .INSRT-ing file resumes. %FNAM2 is set to the
2nd name of the .INSRTED file and remains set after the file is
finished (unless that file has done a .INSRT, of course).
.IRP DUMMY,<A1,A2,A3>
Repeats all the following text up to the matching .ENDM
substituting A1 for DUMMY the first time, A2 for DUMMY the
second time, etc. The stuff following the comma is a macro-arg
and might also be delimited by ^/ ... /, for example. If the
arg is delimited with < and > then <'s and >'s within the arg
are significant; i.e. ".IRP X,<FOO,<BAR,FAH>>" repeats over two
args, "FOO" and "<BAR,FAH>", whereas ".IRP X,^|FOO,<BAR,FAH>|
repeats over three args, "FOO", "<BAR", and "FAH>".
.IRPC DUMMY,STRING
Repeats the text up to a matching .ENDM once for each character
in STRING, each time substituting that character for DUMMY.
DUMMY must be a symbol; STRING is read in as a macro-argument.
.LENGTH STRING Where STRING is read in as a macro arg, returns the number of
characters in STRING. This is a value-returning pseudo and
arithmetic can be done with it (but remember to put a comma
between the arg and any following arithmetic operators).
.LALSO
ANY-STATEMENT-ON-NEXT-LINE
Assembles the next line iff %SUCCESS is non-zero. See .ALSO .
.LELSE
ANY-STATEMENT-ON-NEXT-LINE
Assembles the next line iff %SUCCESS is zero. See .ELSE .
.LIF CONDITION
ANY-STATEMENT-ON-NEXT-LINE
Assembles the next line only if CONDITION is true. If
CONDITION fails, lists the next line but does nothing with it.
.LIST Decrement XLIST count if it isn't 0. Listing takes place only
if XLIST count is 0. The .LIST itself lists only if XLIST
count was 0.
.MACR M A,B,C Define M as a macro with args named A,B,C . The macro
definition is on the following lines, up to a .ENDM
(intervening matched .MACR'S and .ENDM's go into the macro
being defined).
.MACRO M A,B,C Same as .MACR M A,B,C .
.MEXIT Pops out of the innermost .REPT, macro-call, .IRP or .IRPC .
.MSG LINE Like .ERROR LINE, but doesn't increment the error count.
.NARG SYM Sets SYM to the number of args in the innermost macro
invocation (that is, does SYM==%NARG). The symbol will be
halfkilled.
.NCHR SYM,ARG Sets the symbol SYM to the number of characters in ARG. The
syntax for ARG is the same as for macro args. The symbol will
be halfkilled.
.NTYPE SYM,ARG Sets SYM to the addressing mode of ARG. For example, if ARG is
200(4), SYM will be set to 64. The symbol will be halfkilled.
.NLIST Increments the XLIST count. same as .XLIST .
.ODD Moves to next odd address -- same as .=.+1-<.&1>
.OFFSET EXP Sets the offset to EXP. Whenever the symbol "." is used, in
relative addressing, and in defining labels, the offset is
added to the real location counter. The offset is 0 at the
start of a pass.
.PAGE Starts new page in listing. same as .EJECT .
.PRINT /TEXT/ Prints TEXT on the tty.
.RAD50 /TEXT/ Generates several words of radix 50 code, one for every 3 chars
in TEXT. Zeroes fill up last word, if necessary.
.REM MSG Same as .MSG MSG . Don't ask me why RCC added this.
- Look, if we're going to put comments in here: don't ask me
why you wrote this documentation all in upper case. It's so
hard on the eyes that I spent 2 hours fixing it. --PGS
.REPT EXP Starts a repeat. The body of the repeat consists of all
following lines up to a matching .ENDR . The body of the
repeat is assembled EXP times.
.SBTTL LINE Same as .STITL LINE .
.SEE SYM May go anywhere a symbol would be evaluated. Has no effect
except to CREF the symbol SYM. The @ lister also will see that
SYM is used.
.STITL LINE Sets the subtitle to LINE. The subtitle lists on the 2nd line
of each header. If the .STITL is the first line of a page, it
takes effect on that page; else, on the next page.
.TITLE LINE Sets the title to LINE, also types it on tty. The title
appears on the 1st line of each header. Takes effect as .STITL
does.
.TTYMA A,B,C Reads a line from the tty, then defines A,B,C from that line
using the macro-arg scanning rules. Within the scope of the
.TTYMAC (up to a matching .ENDM) A,B,C will be replaced by the
strings obtained by scanning what was read from the tty.
.WORD A,B,C Like .BYTE A,B,C but makes a word from each arg, instead of a
byte.
.XCREF A,B,C Prevents CREF output from being generated for symbols A, B, C.
.XLIST Increments the XLIST count.
Special symbols:
These may be used as normal symbols, or set with "=".
. The location counter (including offset). . always equals
%.+%OFFSET . Setting .=A is equivalent to %.=A-%OFFSET.
%. The unoffset location counter (where code will actually be
loaded).
%ABSAD If nonzero, PALX will use absolute addressing as the default,
instead of relative addressing. That is, "MOV FOO,%0" will
assemble in this mode the way "MOV @#FOO,%0" always does. Note
that "@FOO" will still use indexing by the PC. Explicit
indexing by the PC will not be overridden.
%COMPAT If nonzero (as is the default), PALX gives an error message
when an instruction that executes differently on different
model PDP-11's is assembled.
%DAY The number in the month of the day on which the assembly is
done. (see %MONTH, %YEAR) [not Tenex]
%FNAM2 The result of taking the current source file's second name, and
turning it into a decimal number, ignoring non-digits.
%MONTH The number in the year of the month on which the assembly is
done. (see %DAY, %YEAR) [not Tenex].
%NARG The number of args given to the innermost macro invocation.
%OFFSE The value of the offset.
%SUCCESS Non-zero if the last conditional succeeded, i.e. the the
condition was true; zero otherwise. This is set both when the
conditional is evaluated and when its scope is terminated (e.g.
by a .ENDC).
%TTYFL Initially 0. when nonzero, tty typeout is inhibited. Cleared
by any attempt to do tty input.
%XCREF Stops CREFfing if not 0.
%XLIST The value of the XLIST count.
%YEAR The number of the year in which the assembly is done. This is
only that last two digits, so in 1980 %YEAR is 80., and in 2001
%YEAR is 1. (see %DAY, %MONTH) [not Tenex]
.RPCNT Normally 0 except in repeats. In repeats, is 0 the 1st time
through, 1 the next, etc.
.IRPCN Like .RPCNT but for IRPs instead of repeats.
Symbols of the form 69$ are "local tags." The scope of these symbols is
limited to the area between two ordinary labels. These are typically used for
tags in branches that skip over a few lines within a single routine. These
symbols behave the same as in MACRO-11.
The following symbols are predefined in PALX:
For teletype: %TKS, %TKB, %TPS, %TPB and trap vectors %TKV, %TPV
For paper tape: %PRS, %PRB, %PPS, %PPB, and vectors %PRV, %PPV
For 60-cycle clock: %LKS and vector %LKV
For programmable clock: %PKC, %PKCSB, %PKCSR and %PKV
For line printer: %LPS, %LPB, and %LPV
For RF-11 disk: %DCS, %DWC (also %WC), %DCA (also %CMA), %DAR, %DAE, %DBR, %DSA
(also %ADS), and %DV
For RK-11: %RKDS, %RKER, %RKCS, %RKWC, %RKBA, %RKDA and %RKV
For Knight display: %NGCSR, %NGREL
For DR-11: %DRS, %DRIB, %DROB, and %DRV1, %DRV2
For DC-11: %RCSR, %RBUF, %TSCR, %TBUF
For DM-11: %CSR, %BAR, %BCR, %TBR
For EAE: %DIV, %AC, %MQ, %MUL, %SC, %SR, %NOR, %LGS, %ARS
For processor traps: %ERRV(=4), %BPTV(=14), %IOTV, %PWRV, %EMTV, %TRPV
For processor regs: %PS, %SWR (switches)
For use with PDP11^K (the ITS PDP-11 simulator): %CSX
I will define others on request.
Error message format:
An error message has the following components:
REL-LOCTR ABS.-LOCTR. page line DESCRIPTIVE-MESSAGE.
The REL-LOCTR has the form LABEL+DISP. It gives the value of the unoffset
location counter, relative to the most recently defined label. It does not
appear if no labels have yet been defined (tabs are printed instead).
The ABS.-LOCTR is the unoffset location counter in octal.
The page and line numbers are in the source file.
In addition, on the first error in a source file other than the first file, the
message
FILE such-and-such
will be printed.

264
src/sys/itsdfs.8 Executable file
View File

@@ -0,0 +1,264 @@
.AUXIL
;.ITSDF defines the ITS uuos, .CALL series, .OPER series,
; and .SUSET symbols.
DEFINE .ITSSET XXX/
.INIT"XXX
TERMIN
;DEFINE ALL THE ITS SYMBOLS IN THE .INIT BLOCK.
DEFINE .ITSDF DEF=[.ITSSET]
.ITSOP DEF
.ITSCL DEF
.ITSUU DEF
.ITSUS DEF
TERMIN
DEFINE .ITSUS DEF
DEF .RUPC==:0
DEF .RVAL==:1
DEF .RTTY==:2
DEF .RFLS==:3
DEF .RUNAME==:4
DEF .RJNAME==:5
DEF .RMASK==:6
DEF .RUSTP==:7
DEF .RPIRQC==:10
DEF .RINTB==:11
DEF .RMEMT==:12
DEF .RSV40==:13
DEF .RIPIRQ==:14
DEF .RAPIRQ==:15
DEF .RSNAM==:16
DEF .RPICLR==:17
DEF .RMARA==:20
DEF .RMARPC==:21
DEF .RUUOH==:22
DEF .RUIND==:23
DEF .RRUNT==:24
DEF .RMSK2==:25
DEF .RIFPIR==:26
DEF .RAPRC==:27
DEF .RCNSL==:30
DEF .RUTRP==:31
DEF .RIIFPI==:32
DEF .RAIFPI==:33
DEF .RIMASK==:34
DEF .RAMASK==:35
DEF .RIMSK2==:36
DEF .RAMSK2==:37
DEF .RJPC==:40
DEF .ROPC==:41
DEF .RRTMR==:42
DEF .RHSNAM==:43
DEF .RBCHN==:44
DEF .RMPVA==:45
DEF .RIDF1==:46
DEF .RADF1==:47
DEF .RIDF2==:50
DEF .RADF2==:51
DEF .RDF1==:52
DEF .RDF2==:53
DEF .ROPTION==:54
DEF .R40ADDR==:55
DEF .RTVCRE==:56
DEF .RTTST==:57
DEF .RTTS1==:60
DEF .RTTS2==:61
DEF .RWHO1==:62
DEF .RWHO2==:63
DEF .RWHO3==:64
DEF .RSUPPRO==:65
DEF .RTR1IN==:66
DEF .RTR2IN==:67
DEF .RMBOX==:70
DEF .RMBO1==:71
DEF .REBOX==:72
DEF .REBO1==:73
DEF .RXUNAME==:74
DEF .RXJNAME==:75
DEF .RFTL1==:76
DEF .RFTL2==:77
DEF .RIOC==:100
DEF .RIOS==:120
DEF .RIOP==:140
DEF .RPMAP==:200
DEF .RPAGR==:600
DEF .RPAGA==:601
DEF .RSERVER==:602
DEF .SUPC==:400000
DEF .SVAL==:400001
DEF .STTY==:400002
DEF .SFLS==:400003
DEF .SUNAME==:400004
DEF .SJNAME==:400005
DEF .SMASK==:400006
DEF .SUSTP==:400007
DEF .SPIRQC==:400010
DEF .SINTB==:400011
DEF .SMEMT==:400012
DEF .SSV40==:400013
DEF .SIPIRQ==:400014
DEF .SAPIRQ==:400015
DEF .SSNAM==:400016
DEF .SPICLR==:400017
DEF .SMARA==:400020
DEF .SMARPC==:400021
DEF .SUUOH==:400022
DEF .SUIND==:400023
DEF .SRUNT==:400024
DEF .SMSK2==:400025
DEF .SIFPIR==:400026
DEF .SAPRC==:400027
DEF .SCNSL==:400030
DEF .SUTRP==:400031
DEF .SIIFPI==:400032
DEF .SAIFPI==:400033
DEF .SIMASK==:400034
DEF .SAMASK==:400035
DEF .SIMSK2==:400036
DEF .SAMSK2==:400037
DEF .SJPC==:400040
DEF .SOPC==:400041
DEF .SRTMR==:400042
DEF .SHSNAM==:400043
DEF .SBCHN==:400044
DEF .SMPVA==:400045
DEF .SIDF1==:400046
DEF .SADF1==:400047
DEF .SIDF2==:400050
DEF .SADF2==:400051
DEF .SDF1==:400052
DEF .SDF2==:400053
DEF .SOPTION==:400054
DEF .S40ADDR==:400055
DEF .STVCRE==:400056
DEF .STTST==:400057
DEF .STTS1==:400060
DEF .STTS2==:400061
DEF .SWHO1==:400062
DEF .SWHO2==:400063
DEF .SWHO3==:400064
DEF .SSUPPRO==:400065
DEF .STR1IN==:400066
DEF .STR2IN==:400067
DEF .SMBOX==:400070
DEF .SMBO1==:400071
DEF .SEBOX==:400072
DEF .SEBO1==:400073
DEF .SXUNAME==:400074
DEF .SXJNAME==:400075
DEF .SFTL1==:400076
DEF .SFTL2==:400077
DEF .SPAGRAN==:400600
DEF .SPAGAHD==:400601
DEF .SSERVER==:400602
TERMIN
DEFINE .ITSOP DEF
DEF .ITYI=:42^9 1
DEF .LISTEN=:42^9 2
DEF .SLEEP=:42^9 3
DEF .SETMSK=:42^9 4
DEF .SETM2=:42^9 5
DEF .DEMON=:42^9 6
DEF .CLOSE=:42^9 7
DEF .UCLOSE=:42^9 10
DEF .ATTY=:42^9 11
DEF .DTTY=:42^9 12
DEF .IOPUSH=:42^9 13
DEF .IOPOP=:42^9 14
DEF .DCLOSE=:42^9 15
DEF .DSTOP=:42^9 16
DEF .RDTIME=:42^9 17
DEF .RDSW=:42^9 20
DEF .GUN=:42^9 21
DEF .UDISMT=:42^9 22
DEF .GETSYS=:42^9 23
DEF .IPDP=:42^9 24
DEF .GETLOC=:42^9 25
DEF .SETLOC=:42^9 26
DEF .DISOWN=:42^9 27
DEF .DWORD=:42^9 30
DEF .DSTEP=:42^9 31
DEF .GENSYM=:42^9 32
DEF .LOGOUT=:42^9 33
DEF .REALT=:42^9 34
DEF .WSNAME=:42^9 35
DEF .UPISET=:42^9 36
DEF .RESET=:42^9 37
DEF .ARMOVE=:42^9 40
DEF .DCONT=:42^9 41
DEF .CBLK=:42^9 42
DEF .ASSIGN=:42^9 43
DEF .DESIGN=:42^9 44
DEF .RTIME=:42^9 45
DEF .RDATE=:42^9 46
DEF .HANG=:42^9 47
DEF .EOFC=:42^9 50
DEF .IOTLSR=:42^9 51
DEF .RSYSI=:42^9 52
DEF .SUPSET=:42^9 53
DEF .PDTIME=:42^9 54
DEF .ARMRS=:42^9 55
DEF .UBLAT=:42^9 56
DEF .IOPDL=:42^9 57
DEF .ITYIC=:42^9 60
DEF .MASTER=:42^9 61
DEF .VSTST=:42^9 62
DEF .NETAC=:42^9 63
DEF .NETS=:42^9 64
DEF .REVIVE=:42^9 65
DEF .DIETIM=:42^9 66
DEF .SHUTDN=:42^9 67
DEF .ARMOFF=:42^9 70
DEF .NDIS=:42^9 71
DEF .FEED=:42^9 72
DEF .EVAL=:42^9 73
DEF .REDEF=:42^9 74
DEF .IFSET=:42^9 75
DEF .UTNAM=:42^9 76
DEF .UINIT=:42^9 77
DEF .RYEAR=:42^9 100
DEF .RLPDTM=:42^9 101
DEF .RDATIM=:42^9 102
DEF .RCHST=:42^9 103
DEF .RBTC=:42^9 104
DEF .DMPCH=:42^9 105
DEF .SWAP=:42^9 106
DEF .MTAPE=:42^9 107
DEF .GENNUM=:42^9 110
DEF .NETINT=:42^9 111
TERMIN
DEFINE .ITSCL DEF
DEF .DISMIS=:43^9 1.,
DEF .LOSE=:43^9 2.,
DEF .TRANAD=:43^9 3.,
DEF .VALUE=:43^9 4.,
DEF .UTRAN=:43^9 5.,
DEF .CORE=:43^9 6.,
DEF .TRAND=:43^9 7.,
DEF .DSTART=:43^9 8.,
DEF .FDELE=:43^9 9.,
DEF .DSTRTL=:43^9 10.,
DEF .SUSET=:43^9 11.,
DEF .LTPEN=:43^9 12.,
DEF .VSCAN=:43^9 13.,
DEF .POTSET=:43^9 14.,
TERMIN
DEFINE .ITSUU DEF
DEF .IOT=:40^9
DEF .OPEN=:41^9
DEF .OPER=:42^9
DEF .CALL=:43^9
DEF .USET=:44^9
DEF .BREAK=:45^9
DEF .STATUS=:46^9
DEF .ACCESS=:47^9
TERMIN

357
src/sys/saidfs.15 Executable file
View File

@@ -0,0 +1,357 @@
;.DECDF DEFINES SAIL UUOS AND JOBDAT VARIABLES.
.AUXIL
DEFINE .DECSET XXX/
.INIT"XXX
TERMIN
DEFINE .DECS1 XXX/
XXX
TERMIN
DEFINE .DECHK XXX/
XXX
IRPS XXY,,XXX
XXY==:XXY
.ISTOP
TERMIN
TERMIN
;.DECDF DEFINES ALL THE SAIL SYMBOLS.
;THE "JOBH.." SERIES IS HALF-KILLED.
DEFINE .DECDF DEF
IFSE [DEF],[
.DECUU .DECS1
.DECTT .DECS1
.DECCL .DECS1
.DECMS .DECS1
.DEC.J .DECS1
.DECJH .DECHK
.HKILL CALLI, TTYUUO, PPIOT, MAIL, PTYUUO, PGIOT, INTUUO
]
IFSN [DEF],[
.DECUU DEF
.DECTT DEF
.DECCL DEF
.DECMS DEF
.DEC.J DEF
.DECJH DEF
]
TERMIN
;THIS MACRO REPEATS OVER THE NAMES OF THE SAIL UUOS.
;THE LARGE NUMBERS MAY LOOK UGLY, BUT SINCE THEY ARE ONE SYLLABLE
;THE MACRO "DEF" CAN EXTRACT THEM WITH AN IRPS.
DEFINE .DECUU DEF
DEF INIT=:41000000000
DEF SPCWAR=:43000000000
DEF CALLI=:47000000000
DEF OPEN=:50000000000
DEF TTYUUO=:51000000000
DEF RENAME=:55000000000
DEF IN=:56000000000
DEF OUT=:57000000000
DEF SETSTS=:60000000000
DEF STATO=:61000000000
DEF GETSTS=:62000000000
DEF STATZ=:63000000000
DEF INBUF=:64000000000
DEF OUTBUF=:65000000000
DEF INPUT=:66000000000
DEF OUTPUT=:67000000000
DEF CLOSE=:70000000000
DEF RELEAS=:71000000000
DEF MTAPE=:72000000000
DEF UGETF=:73000000000
DEF USETI=:74000000000
DEF USETO=:75000000000
DEF LOOKUP=:76000000000
DEF ENTER=:77000000000
DEF DPYCLR=:701000000000
DEF PPIOT=:702000000000
DEF UPGIOT=:703000000000
DEF UINBF=:704000000000
DEF UOUTBF=:705000000000
DEF FBREAD=:706000000000
DEF FBWRT=:707000000000
DEF MAIL=:710000000000
DEF PTYUUO=:711000000000
DEF POINTS=:712000000000
DEF UPGMVE=:713000000000
DEF UPGMVM=:714000000000
DEF PGIOT=:715000000000
DEF CHNSTS=:716000000000
DEF CLKINT=:717000000000
DEF INTMSK=:720000000000
DEF IMSKST=:721000000000
DEF IMSKCL=:722000000000
DEF INTUUO=:723000000000
DEF IOPUSH=:724000000000
DEF IOPOP=:725000000000
DEF IOPDL=:726000000000
TERMIN
;THIS MACRO DEFINES THE SAIL TTYUUOS.
DEFINE .DECTT DEF
DEF INCHRW=:51000000000
DEF OUTCHR=:51040000000
DEF INCHRS=:51100000000
DEF OUTSTR=:51140000000
DEF INCHWL=:51200000000
DEF INCHSL=:51240000000
DEF GETLIN=:51300000000
DEF SETLIN=:51340000000
DEF RESCAN=:51400000000
DEF CLRBFI=:51440000000
DEF CLRBFO=:51500000000
DEF INSKIP=:51540000000
DEF INWAIT=:51600000000
DEF SETACT=:51640000000
DEF TTREAD=:51700000000
DEF OUTFIV=:51740000000
TERMIN
;THIS MACRO REPEATS OVER THE HIGH SEGMENT JOB DATA AREA SYMBOLS.
DEFINE .DECJH DEF
DEF JOBHGH==:400000
DEF JOBHSA==:0
DEF JOBH41==:1
DEF JOBHCR==:2
DEF JOBHRN==:3
DEF JOBHVR==:4
DEF JOBHNM==:5
DEF JOBHSM==:6
DEF JOBHGA==:7
DEF JOBHDA==:10
TERMIN
;THIS MACRO REPEATS OVER THE LOW SEGMENT JOB DATA AREA SYMBOLS.
;IT MENTIONS BOTH THE .JB... AND THE JOB... SYMBOLS FOR USER'S CONVENIENCE.
DEFINE .DEC.J DEF
DEF JOBUUO=:40
DEF JOB41=:41
DEF JOBERR=:42
DEF JOBENB=:43
DEF JOBREL=:44
DEF JOBINT=:71
DEF JOBHCU=:72
DEF JOBPC=:73
DEF JOBDDT=:74
DEF JOBSAV=:JOBDDT-1 ;LAST LOC NOT SAVED BY SAVE COMMAND
DEF JOBJDA=:75
DEF JOBPFI=:114
DEF JOBHRL=:115
DEF JOBSYM=:116
DEF JOBUSY=:117
DEF JOBSA=:120
DEF JOBFF=:121
DEF JOBS41=:122
DEF JOBREN=:124
DEF JOBAPR=:125
DEF JOBCNI=:126
DEF JOBTPC=:127
DEF JOBOPC=:130
DEF JOBCHN=:131
DEF JOBCOR=:133
DEF JOBVER=:137
DEF JOBDA=:140
DEF .JBUUO=:40
DEF .JB41=:41
DEF .JBERR=:42
DEF .JBENB=:43
DEF .JBREL=:44
DEF .JBINT=:71
DEF .JBHCU=:72
DEF .JBPC=:73
DEF .JBDDT=:74
DEF .JBSAV=:.JBDDT-1
DEF .JBJDA=:75
DEF .JBPFI=:114
DEF .JBHRL=:115
DEF .JBSYM=:116
DEF .JBUSY=:117
DEF .JBSA=:120
DEF .JBFF=:121
DEF .JBS41=:122
DEF .JBREN=:124
DEF .JBAPR=:125
DEF .JBCNI=:126
DEF .JBTPC=:127
DEF .JBOPC=:130
DEF .JBCHN=:131
DEF .JBCOR=:133
DEF .JBVER=:137
DEF .JBDA=:140
TERMIN
DEFINE .DECCL DEF
DEF RESET=:47000000000
DEF DDTIN=:47000000001
DEF SETDDT=:47000000002
DEF DDTOUT=:47000000003
DEF DEVCHR=:47000000004
DEF DDTGT=:47000000005
DEF GETCHR=:47000000006
DEF DDTRL=:47000000007
DEF WAIT=:47000000010
DEF CORE=:47000000011
DEF EXIT=:47000000012
DEF MONRT.=:exit 1,
DEF UTPCLR=:47000000013
DEF DATE=:47000000014
DEF LOGIN=:47000000015
DEF APRENB=:47000000016
DEF LOGOUT=:47000000017
DEF SWITCH=:47000000020
DEF REASSI=:47000000021
DEF TIMER=:47000000022
DEF MSTIME=:47000000023
DEF GETPPN=:47000000024
DEF RUNTIM=:47000000027
DEF PJOB=:47000000030
DEF SLEEP=:47000000031
DEF SETPOV=:47000000032
DEF PEEK=:47000000033
DEF GETLN=:47000000034
DEF RUN=:47000000035
DEF SETUWP=:47000000036
DEF REMAP=:47000000037
DEF GETSEG=:47000000040
DEF GETTAB=:47000000041
DEF SETNAM=:47000000043
DEF TMPCOR=:47000000044
DEF SPWBUT=:47000400000
DEF CTLV=:47000400001
DEF SPCWGO=:47000400003
DEF SWAP=:47000400004
DEF EIOTM=:47000400005
DEF LIOTM=:47000400006
DEF PNAME=:47000400007
DEF .SYML=:47000400010
DEF SHOWIT=:47000400011
DEF FREEZE=:47000400012
DEF JBTSTS=:47000400013
DEF TTYIOS=:47000400014
DEF CORE2=:47000400015
DEF ATTSEG=:47000400016
DEF DETSEG=:47000400017
DEF SETPRO=:47000400020
DEF SEGNUM=:47000400021
DEF SEGSIZ=:47000400022
DEF LINKUP=:47000400023
DEF DISMIS=:47000400024
DEF INTENB=:47000400025
DEF INTORM=:47000400026
DEF INTACM=:47000400027
DEF INTENS=:47000400030
DEF INTIIP=:47000400031
DEF INTIRQ=:47000400032
DEF INTGEN=:47000400033
DEF UWAIT=:47000400034
DEF DEBREA=:47000400035
DEF SETNM2=:47000400036
DEF SEGNAM=:47000400037
DEF IWAIT=:47000400040
DEF USKIP=:47000400041
DEF BUFLEN=:47000400042
DEF NAMEIN=:47000400043
DEF SLEVEL=:47000400044
DEF IENBW=:47000400045
DEF RUNMSK=:47000400046
DEF TTYMES=:47000400047
DEF JOBRD=:47000400050
DEF DEVUSE=:47000400051
DEF SETPR2=:47000400052
DEF GETPR2=:47000400053
DEF RLEVEL=:47000400054
DEF STDTIM=:47000400055
DEF KILL=:47000400056
DEF WHOAMI=:47000400057
DEF WAKEME=:47000400061
DEF GETNAM=:47000400062
DEF SNEAKW=:47000400063
DEF SNEAKS=:47000400064
DEF GDPTIM=:47000400065
DEF SETPRV=:47000400066
DEF DDCHAN=:47000400067
DEF VDSMAP=:47000400070
DEF DSKPPN=:47000400071
DEF GETHI=:47000400072
DEF SETCRD=:47000400073
DEF CALLIT=:47000400074
DEF XGPUUO=:47000400075
DEF LOCK=:47000400076
DEF UNLOCK=:47000400077
DEF DAYCNT=:47000400100
DEF ACCTIM=:47000400101
DEF UNPURE=:47000400102
DEF TMPCRD=:47000400103
DEF DEVNUM=:47000400104
DEF ACTCHR=:47000400105
DEF UUOSIM=:47000400106
DEF PPSPY=:47000400107
DEF ADSMAP=:47000400110
DEF BEEP=:47000400111
DEF WHO=:47000400112
DEF TTYJOB=:47000400113
DEF NULMES=:47000400114
DEF GETPRV=:47000400115
DEF TTYSKP=:47000400116
DEF DIAL=:47000400117
DEF LTHUUO=:47000400120
DEF TTYSET=:47000400121
DEF MTRUUO=:47000400122
DEF RDLINE=:47000400123
TERMIN
;THIS DEFINES THE MISCELLANEOUS SAIL UUO'S (PPIOT, MAIL, PTYUUO, PGIOT, INTUUO)
DEFINE .DECMS DEF
DEF PPSEL=:702000000000
DEF PPACT=:702040000000
DEF DPYPOS=:702100000000
DEF DPYSIZ=:702140000000
DEF PPREL=:702200000000
DEF PPINFO=:702240000000
DEF LEYPOS=:702300000000
DEF PPHLD=:702340000000
DEF CURSOR=:702400000000
DEF SEND=:710000000000
DEF WRCV=:710040000000
DEF SRCV=:710100000000
DEF SKPME=:710140000000
DEF SKPHIM=:710200000000
DEF SKPSEN=:710240000000
DEF PTYGET=:711000000000
DEF PTYREL=:711040000000
DEF PTIFRE=:711100000000
DEF PTOCNT=:711140000000
DEF PTRD1S=:711200000000
DEF PTRD1W=:711240000000
DEF PTWR1S=:711300000000
DEF PTWR1W=:711340000000
DEF PTRDS=:711400000000
DEF PTWRS7=:711440000000
DEF PTWRS9=:711500000000
DEF PTGETL=:711540000000
DEF PTSETL=:711600000000
DEF PTLOAD=:711640000000
DEF PTJOBX=:711700000000
DEF PTL7W9=:711740000000
DEF PGSEL=:715000000000
DEF PGACT=:715040000000
DEF PGCLR=:715100000000
DEF DDUPG=:715140000000
DEF PGINGO=:715200000000
DEF INTDEJ=:723000000000
DEF IMSTW=:723040000000
DEF IWKMSK=:723100000000
DEF INTDMP=:723140000000
DEF INTIPI=:723200000000
DEF IMSKCR=:723240000000
TERMIN
EQUALS .DECMT,.DECMS ;SO YOU CAN WIN WITH EITHER DECDFS OR SAIDFS, NOT KNOWING WHICH.

BIN
src/sys/twxdfs.8 Executable file

Binary file not shown.

6966
src/sysen1/palx.280 Executable file

File diff suppressed because it is too large Load Diff