Google
 

Trailing-Edge - PDP-10 Archives - scratch - 10,7/unscsp/sos/sossym.mac
There are 3 other files named sossym.mac in the archive. Click here to see a list.
	UNIVERSAL SOSSYM
	SEARCH	SOSTCS

; SOS -- Line editor for editing disk files.
; 
;  This version works by re-copying, as do other versions  of  SOS.
;  Unlike  other versions, however, the temporary files are created
;  only once and are reused on subsequent passes through the  file.
;  This  substantially  improves  the speed of the editor since the
;  relatively slow operations  of  DELETE,  RENAME  and  ENTER  are
;  replaced  with  the  fast operation of USETx.  This version also
;  does all binary IO in dump mode,  which  allows  a  smaller  low
;  segment and substantially improves the running speed.
;
;  Included in the version are many  new  features,  including  the
;  co-edit commands (CX), output command (O:filename,range), change
;  case (VU, VL and VV), plus numerous switches.  Also added  is  a
;  special  VT52  mode  for intended for VT52 running on fast lines
;  that take special advantages of the display  features  in  alter
;  mode.
;  
;  All  of  the  standard  SOS  version  22 (University of Arizona)
;  features have been included, and many commands have been cleaned
;  up  to make them more convenient.  Also included are some of the
;  DEC SOS features  that  were  missing  for  version  22.   These
;  include  control-C  trapping,  the 'lines deleted' message, .Qxx
;  and .Zxx  backup  files,  provision  for  editing  files  a  2xx
;  protection  and SFD support.  Most  of these are included  under
;  controllable switch so that they can be enabled or  disabled  as
;  desired.

.VNCCL==SOSEDT	; Change this each time the /CCL part of SOSDAT
		; is changed to avoid junk CCL files.
	SUBTTL	Feature tests and installation parameters
;		-----------------------------------------


	MLON		; Multi-line thingies
	SALL		; Suppress macro xpansions

; Assembly time parameters

IFNDEF I.LNSZ,<I.LNSZ==^D500>	; Maximum line length
IFNDEF I.SSLS,<I.SSLS==^D400>	; Maximum search string length
IFNDEF I.NSSS,<I.NSSS==^D20>	; Maximum simultaneous search strings
IFNDEF I.PGSZ,<I.PGSZ==^D55>	; Number of text lines per page
IFNDEF I.PLPP,<I.PLPP==^D66>	; Physical length of a page in lines
IFNDEF I.LPPP,<I.LPPP==^D56>	; Lines printed per page by L command

;Installation parameters

%UACCL==0	; Support of the fancy /CCL features
%UAPRT==0	; For default file protection by PPN (Requires U of A
		; special GETTAB tables)
%UAHPQ==0	; For selective insertion in HPQ 1. 

;Feature tests

LSTSW==1	; For L and O commands
VCMDSW==-1	; On for V command (change case over range)
JUSTSW==1	; For text justification
RENTSW==1	; For re-entrant version (off is not supported)
CCLSW==1	; For ccl features
TEMPC==1	; For tempcore feature
CRYPSW==1	; For encrypted files
EXTEND==1	; For extended features
XSARSW==0	; Turn this on if /EXPERT should suppress the 
		;[Accepted] and [Rejected] messages from decide mode
		; substitute.
BACKSW==-1	; On if /BACKSPACE should be default
INFSW==-1	; On if /INFORM should be default
CKPSW==0	; On if supporting checkpoint file
		;** Do not turn on.  Calls routines that are not
		; currently supplied with sos.  this is part of a
		; research project.
OPTNAM==<SIXBIT/SOS/>		;Tag to find in option file SWITCH.INI
KIONLY==0	; For KI only instructions.  Set to zero if for KA 00.
KLONLY==1	; For KL only instructions.  Set to zero for KI
IFN KLONLY,<KIONLY==1>		; Same here

FTVDDT==1	; Special core UUO simulation for VMDDT usage
		; Highly recommended for using customized page fault
		; handler or VM DDT.
	SUBTTL	Processor Dependent Macro Definitions


;***Caution--to conserve space, the DMOVE instructions have been
;	used for KI/KL processors.  For a KA version of SOS, DMOVE
;	and DMOVEM are redefined to be macros that perform the same
;	functions.  Since these expand into two instructions, DO NOT
;	use a DMOVE or DMOVEM as an instruction that may be skipped
;	by a test or subroutine call.

IFE KIONLY,<		; Redefine DMOVE/DMOVEM for KA-10's
	DEFINE DMOVE(AC,ADDR),<
	MOVE	AC,ADDR
	MOVE	<AC+1>,1+ADDR
	>
	DEFINE DMOVEM(AC,ADDR),<
	MOVEM	AC,ADDR
	MOVEM	<AC+1>,1+ADDR
	>
>

;*** Note, the following macro differs from the ADJSP instruction
;    in two essential ways:  It does not check for overflow, and
;    the adjustment must completely evaluated at assembly time.

IFE KLONLY,<		; Define ADJSP macro for KI/KA processors
	DEFINE ADJSP(R,N),<
IFG N,<
	ADD	R,[N,,N]
>
IFL N,<
	SUB	R,[-<N>,,-<N>]
>
>>

	SUBTTL	Processor Independent Macro Definitions


DEFINE	OCRLF,<
	OUTSTR CRLF##
>
DEFINE	ONECHO,<
	TRZE	FL,NECHO		;;ECHO OFF?
	 STSTS.	TTY,IO.LEM!IO.ASL	;;YES--TURN BACK ON
>
DEFINE	OFFECHO,<
	TRON	FL,NECHO		;;ECHO ON?
	 STSTS.	TTY,IO.LEM!IO.ASL!IO.SUP;;YES--TURN IT OFF
>
DEFINE	DELETE(CHN),<
	RENAME	CHN,NULFIL##
>
DEFINE	CLRBFI,<
	IF1, <	PUSHJ	P,CTTBFI>
	IF2, <	IFNDEF CTTBFI,<EXTERN CTTBFI>
		PUSHJ	P,CTTBFI>
>
DEFINE	CHKREN(XFR),<
	TLZE	FL2,RENTF	; Have we re-entered?
	JRST	XFR
>

DEFINE CLEARM(FOO),
<
	IRP FOO<
	SETZM	FOO
>
>

	DEFINE	CONT.<LALL

			   PAGE	;(Continued on next page)
			   SALL	;(Continued from previous page)
>

; I/O channels

TTY==1		; Channel for TTY
IN==2
OUT==3
LPT==4
ALTDV==5	; The other input device (copy and transfer)
IND==6		; Indirect chl for "@" cmd
OPT==7		; Chl for option file
CXOUT==10	; Input channel during CX type co-edit
CXIN==11	; Output channel during CX type co-edit

; Acs used

T1=1	; Temp registers
T2=2
T3=3
T4=4
T5=5
CN=7

LPNTR=6		; Low buffer pointer.  Do not reference outside of
		; SOSBUF except to save/restore it.
FL=10		; Flag register
FL2=11
ALTP=12		; Pointer for alter mode
CS=13		; Character table bits
SINDEX=14	; Line to find, used also by the various routines
PNTR=15		; Points at current place in buffer
C=16		; Character returned here by gnch
P=17		; Pushdown list

; Special ac's

D==PNTR
S1==PNTR
S2==SINDEX
	SUBTTL	Flag Definitions

; Flags  (Right half of FL)

BOF==1		; Now on first record of file
EOF==2		; Have read end of file but not necessarily in buffer
SSBGSN==4	; Suppress setting of BGSN.  Set by OCOMPL, cleared
		; by FIND.  Indicates CPG is not setup correctly.
ADDL==10	; Used in command scanning--line number + inc
SUBL==20	; Line number - inc
IDF==40		; Scan has seen an identifier
NUMF==100	; Scan has seen a number
TERMF==200	; Scan saw a terminator (lf or altmode)
LINSN==400	; The command input routines saw a line number
PGSN==1000	; They saw a page number
NEWFL==2000	; This edit is creating a new file
WNEWFL==4000	; End code has seen a new file name
BGSN==10000	; Biggest page has been seen
CURPRT==20000	; Use direct cursor addressing in OUTLIN print
CNTF==40000	; Command using !
TERMFF==100000	;<FF> TERMINATOR (USED FOR DONT GO UP WITH P CMD)
READOF==200000	; This file is being used in read only mode
NECHO==400000	; ON IF ECHO IS TURNED OFF

; Special flags for parse code (Right half of FL)

F.LAHD==1
F.PER==2
F.SLSH==4
F.CDSN==10
F.PPN==20
F.COLN==400
F.PROT==100000

P.FLGS==F.LAHD!F.PER!F.SLSH!F.CDSN!F.PPN!F.COLN!F.PROT

DEV==0		; Device offset
NAME==1		; Name offset
EXT==2		; Extension offset
PPN==5		; Ppn offset
SFD==PPN+1	; First SFD name in parse
CODE==14	; Follows PPN and PATH block (.PTMAX+3)
CODMAX==^D20	; Max chars in code

; Flags (Left half of FL)

NEGF==1		; Search has seen a 
DEMCHR==2	; Search must see another character
ASSMF==4	; Search has assumed search continuation
ALTSRF==10	; He wants to do a search and edit
NUMSRF==20	; He only wants numbers of lines found
ARBITG==40	; We are doing  currently, do not allow another
EXCTSR==100	; Wants to search exactly (not ignore case)
COPFIL==200	; We are copying from another file
L1.NNL==400	; Need a new line (Used for sequencing TECO files)
NOPRN==1000	; Do not print while doing substitute
DECID==2000	; Allow user to decide if line is OK
EXCTS1==4000	; Another exact search flag for subs
			; 10000 is free
GCOM==20000	; Doing a g command instead of e
SRCOP==40000	; Doing a search of second file
L1.MCM==100000	;MARK COMMAND USED TO FLAG *+1 OK W/O NLN ERROR
TECOF==200000	; This is a teco file
L1.NCR==400000	; Need a carriage return at next line.  User just
		; typed line feed instead of <CR><LF> to end last line.

; Flags in FL2 (right)

STARF==1	; We have seen a * for the last line
RUBF==2		; We are doing rubout in intra-line edit
ALTDUP==4	; Duplex characters in alter mode
RUBF2==10	; Doing delete type rubout in alter mode
R2.CCI==20	; User has a ^C^C request pending
PDFL1==40	; Process dependent
PDFL2==100	; J does right justify
PDFL3==200	; 
PDFL4==400	; 
SUPN==1000	; Suppress line numbers on printing
PDFL5==2000	; 
PDFL6==4000	; 
QSEPF==10000	; Treat . % $ as separators
R2.DSW==20000	; If /DECRYPT was selected
PDFL7==40000	; J does fill words only
ENTALT==100000	; Enter alter mode on this line from insert
R2.PSW==200000	; If /ENCRYPT was selected
R2.TSC==400000	; Temporary SAV file created

ALLPDF==PDFL1!PDFL2!PDFL3!PDFL4!PDFL5!PDFL6!PDFL7

; Flags in FL2 (left)

PDECID==1	; Perm decide mode for S
UARWF==2	; Up arrow (^) seen for first line
HPQF==4		; SOS in running in HPQ
NORENT==10	; Don't allow reenter
RENTF==20	; Reenter command typed
BELLF==40	; Allow <bell><bell>
BELLSN==100	; <bell> seen
AUTOF==200	; Auto save in progress
L2.SSI==400	; Suppress search increment.  For F & G in ALTER mode.
		; 1000 is free
DOENDF==2000	; E cmd requested
INOPTF==4000	; Reading option file
INPARS==10000	; Doing initial parse
		; 20000 is free
L2.NAB==40000	; No Altmode Break (Tells TTY scanner about ESC usage)
INSF==100000	; On if currently doing a line insert
LNUMF==200000	; On if printing line numbers
BKSPF==400000	; On if treating backspace like rubout
	IFN BACKSW,<DFBKSW==BKSPF>
	IFE BACKSW,<DFBKSW==0>

; Magic charater bits -- used to see if next character could start
; a line number specifier.  Does not contain "^" or the digits.
; Digits will set NUMF (in FL), ^ must be check specially since its
; code is too large to fit in even a whole word.

BK==40		; Suitable bias so all fit in a halfword
NUMCHR=1B<"+"-BK>!1B<"-"-BK>!1B<"*"-BK>!1B<"!"-BK>!1B<"/"-BK>!1B<":"-BK>!1B<"#"-BK>!1B<"%"-BK>
	SUBTTL	IO UUO Definitions

; Give DEC UUO new names so we can still reference them

IF1,<			; Only do this on pass one to get old values
OPDEF CORE.	[CORE]
OPDEF RLEAS.	[RELEAS]
OPDEF INBUF.	[INBUF]
OPDEF OUTBF.	[OUTBUF]
OPDEF USETI.	[USETI]
OPDEF USETO.	[USETO]
OPDEF IN.	[IN]
OPDEF INPUT.	[INPUT]
OPDEF OUPUT.	[OUTPUT]
OPDEF OUT.	[OUT]
OPDEF STATZ.	[STATZ]
OPDEF STATO.	[STATO]
OPDEF OPEN.	[OPEN]
OPDEF CLOSE.	[CLOSE]
OPDEF LOOKP.	[LOOKUP]
OPDEF ENTER.	[ENTER]
OPDEF RENAM.	[RENAME]
OPDEF GTSTS.	[GETSTS]
OPDEF STSTS.	[SETSTS]
>

; These trap to the SOS UUO handler so the correct channel
; can be inserted before the UUO is executed.  The LOOKUP UUO
; is redefined substantially

FIOUUO==13		; First one used

OPDEF XENTER	[13B8]  ; Extended ENTER
OPDEF OPNDSK	[14B8]
IFN FTVDDT,<
OPDEF CORE	[15B8]
>
OPDEF RELEAS	[16B8]
OPDEF INBUF	[17B8]
OPDEF OUTBUF	[20B8]
OPDEF USETI	[21B8]
OPDEF USETO	[22B8]
OPDEF INUUO	[23B8]
OPDEF INPUT	[24B8]
OPDEF OUTUUO	[25B8]
OPDEF OUTPUT	[26B8]
OPDEF STATZ	[27B8]
OPDEF STATO	[30B8]
OPDEF OPEN	[31B8]
OPDEF CLOSE	[32B8]
OPDEF XLOOKP	[33B8]
OPDEF ENTER	[34B8]
OPDEF RENAME	[35B8]
OPDEF GETSTS	[36B8]
OPDEF SETSTS	[37B8]
	SUBTTL	Error Definitions

OPDEF ERROR [1B8]	; Error uuos fatal error
OPDEF NERROR [2B8]	; Non-fatal error
OPDEF RERROR [3B8]	; Print message and return
OPDEF PJRST  [JRST]	; Mnemonic OPDEF

; Error numbers

ICN==1		; Internal editro confusion
DIE==2		; Device input error
DDE==3		; Device output error
ILC==4		; Illegal command
ILUUO==5	; Protection. someone executed an illegal uuo
LTL==6		; Line is too lognng
NLN==7		; Null comand range
NSP==10		; No such page (delete)
ORDER==11	; Lines out of order
ACF==12		; Already changed the file
ILR==13		; Illegal replacement with insert
WAR==14		; Wrap around in renumbering
TMS==15		; Too many search strings given
STL==16		; Too many total string chrs
ISS==17		; Illegal search string
ILFMT==20	; Illegal line format detected
NSG==21		; No string given
FNF==22		; File not found (copy)
DNA==23		; Disk not available (copy)
NEC==24		; Not enough core (copy)
IRS==25		; Illegal replacement string
STC==26		; Search string too complex (got pdlov)
ITD==27		; Illegal transfer destination (place no longer there)
NNN==30		; No next line (from join type commands)
SRF==31		; Search fail (f and s commands)
CMERR==32	; Error in command file
CMEND==33	; Eof seen in command file
MAR==34		; Rmar must be greater than lmar and pmar
BBF==35		; Funny stuff in "basic" mode (fatal)
MEC==36		; Must exit co-file first
TMC==37		; Too many co-files
BFS==40		; Bad file specification
IBM==41		; Illegal in Basic mode
ELL==42		; Excessively Long Line
IRO==43		; Illegal when read-only
APN==44		; Ambiguous parameter name
NPN==45		; No such parameter
CFB==46		; Command file too big
PMI==47		; Page mark inserted to prevent wrap around
URT==50		; Unrecognized terminal type
IMN==51		; ILLEGAL MACRO NAME
TMM==52		; TOO MANY MACRO NAMES
MDL==53		; MACRO DEFINITION TOO LONG
MTD==54		; MACROS NESTED TOO DEEP
ISW==55		; Illegal Switch
FIQ==56		; Filespec Illegal on Quit
	SUBTTL	Miscellaneous Definitions

LINSIZ==I.LNSZ	; Number of characters allowed in a line
IFG LINSIZ-^D630,<PRINTX ?LINSIZ is too large.  ^D630 will be used
	LINSIZ==^D630
>
SRBLG==I.SSLS	; Number of chrs allowed in search string
SRNUM==I.NSSS	; Number of search strings allowed
PDLSIZ==200	; Pushdown list size
MXWPL==LINSIZ/5	; Max number of words per line
MINDSK==^D5	; Minimum disk space to try output
OVRDRW==^D100	; Over draw allowance
IFN EXTEND,<LSNUM==1	; Number of nested line searches allowed>
%LPP==I.LPPP	; Lines/page for "L" cmd
PGSZ==I.PGSZ	; Lines / page
FULLPG==I.PLPP	; Lines to next page
BLKSIZ==^D128	; Disk block size
B2WLSH==7	; Blocks to words conversion
W2BLSH==-B2WLSH	; Words to blocks
RTPLSZ==50	; Size of push down list for read teco co-routine

.TOLCT==1003	; Lower case TTY

%LDSTP==12,,16	; Index into .GTLVD table for default protection
%LDFFA==2,,16	; Index into .GTLVD table for Full File Access PPN
IFN %UAPRT,<
.GTPRV==6	; Privilege table index
JP.LJT==1	; Local JACCT  (Project leader)
>
.GTPRG==3	; Program name
.GTDFL==140	; Default parameters table
	JD.PRT==777B8	;Default protection
	JD.SDP==1B9	;Default was specified

; Flags used in character table

OPF==10		; This is a special character
SNUMF==4	; This is part of a number
LETF==2		; This is a letter
TERM==1		; This is a terminator
M37==400000	; This chr is printed as itself on model 37
NSEPF==200000	; This is not a seperator (used on $,%,and.)

; Special characters for find and substitute commands

;	These have been moved to table in SOSFAS.MAC

;	Extended LOOKUP and ENTER parameters
; Special SOS symbols (extension to the block placed before the
; monitors block have the form XRB???.  All have negative indices.

; --------
XRBBIG==-3		; Number of SOS entries in the LOOKUP block
XRBNOR==-3		; -1 if file not open in update mode.
			; greater or equal to zero otherwise
XRBTFX==-2		; Temporary file extension
XRBMWL==-1		; Maximum written length of file
; ---
.RBCNT==0			; Length of the lookup block
	RB.NSE==1B18		;(ENTER only) non-superseding enter
.RBPPN==1			; PPN or path pointer for the file
.RBNAM==2			; Name of the file
.RBEXT==3			; Extension for the file
.RBPRV==4			; Protection of the file
.RBSIZ==5			; Size of the file
.RBVER==6			; Version number for the file
.RBSPL==7			; Spooled name for the file
.RBEST==10
.RBALC==11
.RBPOS==12			; Position for ENTER
.RBDEV==16
.RBBIG==16		; Last argument referenced in SOS

; Words in the OPEN block

UU.PHS==1B0	; Sign bit in OPEN block implies physical
UU.PHY==1B19	; Bit 19 .NE. bit 18 of CALLI implies physical only

.OPMOD==0		; Mode
	.IOASL==1		; ASCII line
	.IOASC==0		; ASCII
	.IODMP==17		; DUMP mode

	IO.ERR==17B21		; IO error bits
	IO.EOF==1B22		; End of file bit
	IO.LEM==1B29		; Special line editor mode
	IO.SUP==1B28		; Suppress echo mode
	IO.ASL==1B35		; ASCII Line
.OPDEV==1		; Device name
.OPBUF==2		; Buffer header pointer

; Words in the Buffer Header Block

.BFADR==0		; Header word
.BFPTR==1		; Buffer byte pointer
.BFCTR==2		; Count of bytes remaining

; Close bits

CL.DAT==1B29	; Delete access table from disk data base
CL.RST==1B30	; Inhibit creating a new file (or superseding
		; An old one) on output close
CL.NMB==1B31	;Inhibit deleting name block on a
		; Close with only a lookup done
CL.ACS==1B32	; Inhibit updating access date
CL.DLL==1B33	; Inhibit deallocation of allocated
		; But unwritten blocks
CL.IN==1B34	; Inhibit closing input
CL.OUT==1B35	; Inhibit closing output

; Some GETTAB bits

%CNSTS==<17,,11>		; States word
%CNPGS==115,,11			; Unit of core allocation
	ST%IND==<1B10>		; INDPPN=-1 if this bit is on
%LDNDB==30,,16			;Default disk buffers in ring


	SUBTTL	MISC. NON-I/O -- HIBER

HB.SWP==1B0	;FORCE IMMEDIATE SWAP OUT
HB.IPC==1B10	;IPCF
HB.RIO==1B11	;I/O
HB.RPT==1B12	;PTY ACTIVITY
HB.RTL==1B13	;TTY LINE ACTIVITY
HB.RTC==1B14	;TTY CHARACTER ACTIVITY
HB.RWJ==1B15	;THIS JOB
HB.RWP==1B16	;THIS PROGRAMMER
HB.RWT==1B17	;THIS PROJECT
	SUBTTL	Miscellaneous I/O -- DEVCHR

DV.DRI==1B0	; Dta with directory in core
DV.DSK==1B1	; Device is a file structure
DV.CDR==1B2	; If dvout=1 device is a cdp
		; If dvin=1 device is a cdr
DV.LPT==1B3	; Device is a line printer
DV.TTA==1B4	; Device is a TTY controling a job
DV.TTU==1B5	; Tty ddb is in use
DV.TTB==1B6	; Free bit left from scnsrf
DV.DIS==1B7	; Device is a display
DV.LNG==1B8	; Device has a long dispatch table
DV.PTP==1B9	; Device is a paper tape punch
DV.PTR==1B10	; Device is a paper tape reader
DV.DTA==1B11	; Device is a DEC-tape
DV.AVL==1B12	; Device is available to this job
DV.MTA==1B13	; Device is a magnetic tape
DV.TTY==1B14	; Device is a TTY
DV.DIR==1B15	; Device has a directory
DV.IN==1B16	; Device can do input
DV.OUT==1B17	; Device can do output
DV.ASC==1B18	; Device assigned by assign command
DV.ASP==1B19	; Device assigned by INIT or OPEN uuo
DV.M17==1B20	; Device can do mode 17
DV.M16==1B21	; Device can do mode 16
DV.M15==1B22	; Device can do mode 15
DV.M14==1B23	; Device can do mode 14
DV.M13==1B24	; Device can do mode 13
DV.M12==1B25	; Device can do mode 12
DV.M11==1B26	; Device can do mode 11
DV.M10==1B27	; Device can do mode 10
DV.M7==1B28	; Device can do mode 7
DV.M6==1B29	; Device can do mode 6
DV.M5==1B30	; Device can do mode 5
DV.M4==1B31	; Device can do mode 4
DV.M3==1B32	; Device can do mode 3
DV.M2==1B33	; Device can do mode 2
DV.M1==1B34	; Device can do mode 1
DV.M0==1B35	; Device can do mode 0
	SUBTTL	Disk UUOS -- PATH.

.PTFCN==0	; Job #,,function or argument channel or device
		.PTFRD==-1	; Read default
		.PTFSD==-2	; Set default path
		.PTFSL==-3	; Set LIB, NEW, SYS
		.PTFRL==-4	; Read LIB, NEW, SYS
.PTSTR==0	; Answer has STR name
.PTSWT==1	; Switches and flags
	PT.SLT==7B29	; Type of search list
		.PTSLJ==1	; Job
		.PTSLA==2	; All
		.PTSLS==3	; SYS
	PT.IPP==1B30	; Implied PPN (forced)
	PT.LIB==1B31	; /LIB
	PT.SYS==1B32	; /SYS
	PT.NEW==1B33	; /NEW
	PT.SCN==3B35	; Scan switch
		.PTSCN==1	; No (off)
		.PTSCY==2	; Yes (on)
	PT.SNW==1B34	; /NEW on .PTFSL/.PTFRL
	PT.SSY==1B35	; /SYS on .PTFSL/.PTFRL
.PTPPN==2	; PPN (UFD) of path
.PTMAX==11	; Last possible 0 after last SFD +1

SFDLIM==5
		; (ie, length of path block)

	SUBTTL	DISK UUOS -- CHKACC

.ACCPR==0	;CHANGE PROTECTION
.ACREN==1	;RENAME
.ACWRI==2	;WRITE
.ACUPD==3	;UPDATE
.ACAPP==4	;APPEND
.ACRED==5	;READ
.ACEXO==6	;EXECUTE
.ACCRE==7	;CREATE
.ACSRC==10	;SEARCH DIRECTORY
; LOOKUP/ENTER/RENAME/GETSEG/RUN error codes

ERFNF%==0	; File not found
ERIPP%==1	; Incorrect PPN
ERPRT%==2	; Protection failure
ERFBM%==3	; File being modified
ERAEF%==4	; Already existing file name
ERISU%==5	; Illegal sequence of UUOS
ERTRN%==6	; Transmission error
ERNSF%==7	; Not a save file
ERNEC%==10	; Not enough core
ERDNA%==11	; Device not available
ERNSD%==12	; No such device
ERILU%==13	; Illegal uuo
ERNRM%==14	; No room
ERWLK%==15	; Write-locked
ERNET%==16	; Not enough table space
ERPOA%==17	; Patial allocation
ERBNF%==20	; Block not free
ERCSD%==21	; Can't supersede a directory
ERDNE%==22	; Can't delete non-empty directory
ERSNF%==23	; SFD not found
ERSLE%==24	; Search list empty
ERLVL%==25	; SFD nest level too deep
ERNCE%==26	; No-create for all S/L
ERSNS%==27	; Segment not on swap space
ERFCU%==30	; Can't update file
ERLOH%==31	; Low seg overlaps hi seg (GETSEG)
ERNLI%==32	; Not logged in (RUN)

; File protection codes

.PTCPR==0	; Change protection
.PTREN==1	; Rename
.PTWRI==2	; Write
.PTUPD==3	; Update
.PTAPP==4	; Append
.PTRED==5	; Read
.PTEXO==6	; Execute
.PTNON==7	; No-access

; Directory protection codes

PT.LOK==4	; Allow lookups
PT.CRE==2	; Allow creates
PT.SRC==1	; Search directory
	SUBTTL	External Declarations

DEFINE	EXDATA<		;; Macro to declare externals
IFN RENTSW,<TWOSEG
	RELOC	400000 >
;; EXTERNal locations

EXTERN	CMFFLG,COMFRP
EXTERN	TMFCUR,TMFCR
EXTERN	CTBL,DATAB,DATABL,INDEVI,OUDEVI,ALDEVI,TTDEVI,INDDVI,OPTDVI
EXTERN	OPTFIL,LSBUFN,LSPTR,LSPTT,PGMK,PGMKW2,SQBUF,PGHS,PGHD,LPDEVI
EXTERN	ERRHD,ASCZ1,PRNTO1,ASCIZ2,PRNTO2,PMAR,LMAR,RMAR,MAXL,MAXLN
EXTERN	WTBL,JFLOP,PAGESZ,PLINES,COMESS,COMCNT,LINOUT,T.HEAD,T.IOWD
EXTERN	RPGR,CNCBLK,CNCLOK,DATAE,IPATH,OPATH,APATH,SVPATH,UUONOM
EXTERN	FTYPE,STOPGF,XCMDF,SAVPDP,SUPSNF,RTIPDP,BUFSAI,XFLAG,ERDEV
EXTERN	ZEROB,BAKF,SVWD,SVWD2,TMPT1,BASICF,UNSEQF,RPGSW,TMPNAM,TMPCOD,PMIFLG,UNPAGF
EXTERN	TMPDEV,NEWNAM,NEWEXT,PZBEG,PNAMI,ICODE,PNAMO,OCODE,DELCNT
EXTERN	CODBUF,PZEND,BUFFIR,BUFLAS,BUFLIM,BUFHSZ,OUTSIZ,REMSIZ,SSW
EXTERN	RSW
EXTERN	EDNAM,DFXSW,SVDFX,CHNTAB,BAKF1,LPPATH,NPATH,VT52FL,COMFLF
EXTERN	RDTPDL,RDTPDP,TECLIN,LSTBLK,SVJFF2,PNTNMO,PNTNMI,EXACTF,AEXACF
EXTERN	AUTALT,UNSQIF,TOTCHG,.BAKF,.UNSQF,RDTBFP,OUTNAM,OUTEXT,OUTPTH
EXTERN	CLN,INCR,CPG,CPGL,OLDLIN,SSAVEN,CHNIN,CHNOUT,NEWDEV,CHGCNT
EXTERN	SAVEN,SISAVN,ISAVEN,ALTSN,ALTINC,ALTFLG,CASEBT,BGPG,ACCUM
EXTERN	SVT1E,SVERN,SAVCHR,TECINC,TECFST,TEMINC,REINC,INCST,ALTCNT
EXTERN	LOGPG,LSTCNT,SVCCNT,SAVC,LSHIPG,LSHILN,LSCNT,LSPG,LSBUF,LSPNT
EXTERN	LOBUF,LIMBO,CHIN,SVCCIN,SVPCIN,TTOBUF,TTOCNT,TTOPNT,OBUF,IBUF
EXTERN	NAMEO,AUXFIL,PDL,P.TEXT,CMDBUF,LIBUF,CRSX,LIBUF2,SVPT,RNPATH
EXTERN	CODEBF,BUFSAV,STRNAM,STRSBN,ARBBUF,ARBCNT,SRHIPG,SRHILN,SRCNT
EXTERN	SRBUF,SRPG,SRPNT,BOTLIN,PGDELS,STARTD,ENDD,TRANST,PGINSD,DESTLN
EXTERN	DESTPG,FINCR,SINCR,SVLNUM,LSTPG,SVJRL,COPDL,PMTSTR,CMDPMT
EXTERN	FNDPMT,STDPMT,QUITSW,DPYFLG,EXPFLG,OPNOUF,FRCPAG,WFLG,ERSCTW
EXTERN	NLIN1,NLIN2,DESTN,LSTLN,PARCNT,RPPG,RPCNT,FNDFLG,R1BUF,R2BUF
EXTERN	RPHILN,RPHIPG,R1PNT,R2PNT,CCNT,RSTRCT,OCNT1,OPTR,LINL,LWRD
EXTERN	WRDL,TPNT,ELIN,TCHR,WCNT,BPW,REM,BLIN,INDNT,SVOCIN,OPTION
EXTERN	OPTBHD,COMBUF,INDFIL,INDEXT,INDBUF,SVALTP,DPG,SVINC,EWNFNF
EXTERN	SVCNT,OCNT,NCNT,SRCALP,SVPBTS,FFFLAG,GIFEXT,GIFDEV,CMPATH,PRTCOD
EXTERN	ZEROE,ORGNAM,ORGEXT,ORGPTH,NAMEI,HILN,HIPG,LOLN,LOPG,IMPEND
EXTERN	ORGDEV,OUTLEB,WINDOW,WINRAT,WINMIN,WINMAX,CXFCOR,CXFPDP,CXFPTR
EXTERN	LSGLEN,CXFMNE,CCEXIT,SVTSTS,FDELLN,LDELLN,FDELPG,QZBAKF,INFFLG
EXTERN	CTIBUF,TIBUF,TBUF,LINEW,HLPBUF,DELBAK,BUFBDY,BUFLOW,NEWPTH,LINEW
EXTERN	CXSUPF,ENDFLG,ERSW,MYPPN,COCOPY,ISCOP,TRANFL,REFDLY,START2
EXTERN	TMFCLR,TMFCTE,TMFCLN,TMFCUP,TMFFIR,TMFLAS,LSLOLN,CURINS,LSLOPG
EXTERN	CURINP,CAUNIT,CRLFSW,DELETF,NOAINF,SVCRLF,QMDFLG,BUFBLL
EXTERN	TABCUR,TABINI,MYUDX
EXTERN	NEWCMD,BAUD,TSPEED
EXTERN	TERMNM
>
	ASUPPRESS
	LIST
	END