                                                                                                       	.TITLE	RSX11C
;
;	RSX11C	V007A
;	DECEMBER 15,1973
;
;	COPYRIGHT 1973,1974 DIGITAL EQUIPMENT CORP. MAYNARD MASS. 
;
;
;	STANDARD REGISTER DEFINITIONS
;
R0=%0
R1=%1
R2=%2
R3=%3
R4=%4
R5=%5
SP=%6
PC=%7
	.GLOBL	PS	;ADDRESS OF PROCESSOR STATUS REGISTER.
PS=177776
	.GLOBL	S.STAT	;PROCESSOR STATUS WORD.
S.STAT=-2
;
;	REAL TIME HEADER SYMBOLIC DEFINITIONS
;
	.GLOBL	CN	;RTH-CALL NUMBER.
	.GLOBL	SN	;RTH-SYMBOLIC NAME(CHARS 1-3)
	.GLOBL	SS	;RTH-SYMBOLIC NAME (CHARS 4-6)
	.GLOBL	SA	;RTH-SUSPENDED STACK ADDRESS
	.GLOBL	NP	;RTH-NUMBER PASSED IN CALL
	.GLOBL	WL	;RTA-WAITING LIST HEAD(LOW BYTE)&TAIL(HIGH BYTE
	.GLOBL	SC	;RTH-START OF CODE(TRANSFER ADDRESS)
	.GLOBL	IS	;RTH-INITIAL STACK SETTING.
	.GLOBL	TR	;RTH-TRAP VECTOR SETTING. 0 IF NONE.
	.GLOBL	MS	;RTH-MAXIMUM STACK ADDRESS (STACK LIMIT)
	.GLOBL	IP	;RTH-INITIAL PRIORITY (LOW BYTE),#OF SHARED RES
	.GLOBL	SL	;MINUTES AT START(HI BYTE),SECONDS AT LAST UPDA
	.GLOBL	SM	;MAXIMUM LEVEL 1 RUN TIME(SECONDS)
	.GLOBL	SR	;SECONDS SINCE BEGINNING OF THIS RUN.
	.GLOBL	WTCH	;WATCH DOG TIMER(LOW BYTE)
	.GLOBL	FLBF	;DISPLACEMENT TO BUFFER ADDRESS
			;STORAGE IN TASK RTH
	.GLOBL	FLTB	;DISPLACEMENT TO FILE ENTRY ADDRESS
			;STORAGE IN TASK RTH
	.GLOBL	OTSV	;POINTER TO $OTSV (FORTRAN OTS IMPURE AREA VECT
CN=0				;DISK CALL NUMBER REAL TIME LIBRARY
SN=-2				;SYMBOLIC NAME
SS=-4				;SECOND WORD OF 6 CHARACTER SYMBOLIC NA
SA=-6				;SUSPENDED STACK ADDRESS
NP=-8.				;NUMBER PASSED TO PROGRAM ACTIVATED
WL=-10.				;LEFT BYTE LAST WAITING, RIGHT FIRST WA
SC=-12.				;INITIAL START OF CODE
IS=-14.				;INITIAL STACK ADDRESS
TR=-16.				;LEFT BYTE EMT TRAP STARTS RIGHT TRAP S
MS=-18.				;MAXIMUM STACK ADDRESS
IP=-20.				;LEFT SHARED DEVICE COUNTS, RIGHT INITA
SL=-22.				;HIGH BYTE MINUTES AT START, LOW BYTE S
SM=-24.				;MAXIMUM SECONDS BEFORE ERROR REPORT
SR=-26.				;SECOND SINCE BEGINING OF THIS RUN
WTCH=-28.			;WATCH DOG TIMER LOW BYTE
FLBF=-30.			;FILE BUFFER STORAGE
FLTB=-32.			;FILE TABLE SLOT STORAGE
OTSV=-34.			;POINTER TO OTS
;
;	PRIORITY LEVEL DEFINITIONS FOR PS
;
	.GLOBL	PL7	;PRIORITY LEVEL 7
	.GLOBL	PL6	;PRIORITY LEVEL 6
	.GLOBL	PL5	;PRIORITY LEVEL 5
	.GLOBL	PL4	;PRIORITY LEVEL 4
	.GLOBL	PL3	;PRIORITY LEVEL 3
	.GLOBL	SY.PLE	;PRIORITY LEVEL 4
	.GLOBL	SY.PLH	;PRIORITY LEVEL 7
PL7=340				;PRIORITY LEVELS
PL6=300
PL5=240
PL4=200
PL3=140
SY.PLE=200
SY.PLH=340
                        ;
;	LINE FREQUENCY (50./60.CYCLE)
;
	.GLOBL	CYCSEC	;LINE FREQUENCY IN TICKS PER SECOND.
	.GLOBL	MCYC		;MINUS LINE FREQUENCY
	.IFNDF	CYCSEC
CYCSEC=60.
	.ENDC
MCYC=-CYCSEC

;	TIME-OUTS FOR LEVELS 3,2,1 (TICKS)
;
	.GLOBL	TIMLV1	;TIME-OUT FOR LEVEL1(TICKS).
	.GLOBL	TIMLV2	;TIME-OUT FOR LEVEL 2(TICKS).
	.GLOBL	TIMLV3	;TIME-OUT FOR LEVEL 3(TICKS).
	.IFNDF	TIMLV3
;
	.IFEQ	CYCSEC-60.
;
TIMLV3=6.
	.ENDC
;
	.IFEQ	CYCSEC-50.
;
TIMLV3=5.
	.ENDC
	.ENDC
	.IFNDF	TIMLV2
;
	.IFEQ	CYCSEC-60.
;
TIMLV2=30.
	.ENDC
;
	.IFEQ	CYCSEC-50.
;
TIMLV2=25.
	.ENDC
	.ENDC
	.IFNDF	TIMLV1
;
	.IFEQ	CYCSEC-60.
;
TIMLV1=60.
	.ENDC
;
	.IFEQ	CYCSEC-50.
;
TIMLV1=50.
	.ENDC
	.ENDC
;
;	SIZE OF SHEDULING TABLE
;
	.GLOBL	N	;SCHEDULING TABLE SIZE
	.GLOBL	MN	;-N
	.IFNDF	N
N=128.
	.ENDC
MN=-N			;SET TO -N.
                        ;
;	EAE PARAMETERS
;
	.GLOBL	EAEAC	;EAE AC REGISTER.
	.GLOBL	EAEMQ	;EAE MQ REGISTER.
	.GLOBL	EAESC	;EAE SC&SR.
EAEAC=177302			;AC
EAEMQ=177304			;MQ
EAESC=177310			;SC&SR
;
;	THE FOLLOWING DEFINE THE SLOTS RESERVED FOR SYSTEM
;	TASKS.  THESE TASKS MUST BE LOADED INTO THE SLOTS
;	INDICATED.  THE SLOTS ARE DEFINED RELATIVE TO
;	THE HIGHEST SLOT (N).
;
	.GLOBL	POWFT	;POWER FAIL TASK SLOT.
	.GLOBL	UDCT	;UDC TASK SLOT.
	.GLOBL	TTOPT	;TT OPERATOR TASK SLOT NUMBER.
	.GLOBL	ERMST	;ERROR MESSAGE TASK SLOT.
	.GLOBL	OPERT	;OPERR TASK AND SLOT NUMBER.
	.GLOBL	UTILT	;UTILITY TASK SLOT.
	.GLOBL	GETT	;ON LINE LOADER TASK SLOT #
	.GLOBL	SYSRT	;SYSTEM REPORT TASK CALL NUMBER
POWFT=N-2			;POWER FAIL TASK SLOT #.
UDCT=N-4			;UDC TASK SLOT #
TTOPT=N-6			;TT OPERATOR TASK SLOT #.
ERMST=N-8.			;ERROR MESSAGE TASK
OPERT=N-10.			;OPERATORS CONSOLE TASK
UTILT=N-12.			;UTILITY TASK
GETT=N-14.			;ON LINE LOADER TASK SLOT #.
SYSRT=-1			;REPORT TASK CALL NUMBER
;
;	NUMBER OF ITEMS FOR ERROR MESSAGE BUFFER
;
	.GLOBL	ERRBSZ	;ERROR MESSAGE BUFFER SIZE (# OF ITEMS)
	.IFNDF	ERRBSZ
ERRBSZ=10.
	.ENDC
                        ;
;	SYMBOLIC ERROR MESSAGE NUMBERS AND CLASSES.
;
	.GLOBL	SHORT	;SHORT CALL SEQUENCE ERROR.
	.GLOBL	ABSENT	;TASK CALLED BY NUMBER NOT PRESENT.
	.GLOBL	UNITS	;ILLEGAL TIME UNITS.
	.GLOBL	SIZE	;ILLEGAL TIME VALUE
	.GLOBL	SLOT	;NO SLOT AVAILABLE.
	.GLOBL	TIMER	;MAX RUN TIME EXCEEDED.
	.GLOBL	COMMAN	;ILLEGAL OR UNRECOGNIZED COMMAND.
	.GLOBL	REPORT	;ILLEGAL SYSTEM REPORT NUMBER.
	.GLOBL	BUSY	;BACKGROUND BUSY.
	.GLOBL	SYMBLE	;SYMBOLIC TASK NAME NOT FOUND.
	.GLOBL	SYNTAX	;COMMAND SYNTAX ERROR.
	.GLOBL	TURN.O	;ILLEGAL TURNON TIME.
SHORT=1500			;SHORT CALL SEQUENCE
ABSENT=1101			;TASK CALLED NOT PRESENT
UNITS=1102			;ILLEGAL TIME UNITS
SIZE=1103			;ILLEGAL TIME VALUE
SLOT=1104			;NO SLOTS AVAILABLE
TIMER=1105			;EXCEEDED MAXIMUM RUN TIME
COMMAN=1106			;ILLEGAL OPERATOR COMMAND
REPORT=1107			;ILLEGAL REPORT NUMBER
BUSY=1110			;BACKGROUND ALREADY BUSY
SYMBLE=1111			;SYMBOLIC TASK NAME NOT FOUND
SYNTAX=1113			;SYNTAX ERROR
TURN.O=1114			;ILLEGAL TUNRON TIME

;DISTANCE FROM USERS PC, ON HIS STACK, TO THE
;	TOP OF HIS STACK

	.GLOBL	SY.DTS	;DISTANCE FROM USER PC TO STACK TOP.
SY.DTS=-16

;SIZE OF DDB (IN BYTES)
	.GLOBL	SY.DDS	;SIZE OF DDB (BYTES).
SY.DDS=56.			;28 WORDS
                        ;
;OFFSETS FROM BASE OF DDB TO PARTICULAR ELEMENT
;
	.GLOBL	SY.DVL	;DDB-SUSPEND LEVEL COUNTS.
	.GLOBL	SY.SPN	;DDB-SUSPEND NUMBER (BYTE)
	.GLOBL	SY.BFS	;DDB-BUFFER SIZE
	.GLOBL	SY.PTB	;DDB-POINTER TO TOP OF BUFFER.
	.GLOBL	SY.PTI	;DDB-BUFFER INPUT POINTER.
	.GLOBL	SY.PTO	;DDB-BUFFER OUTPUT POINTER.
	.GLOBL	SY.PIC	;DDB-CURRENT INPUT CHANGE BLOCK POINTER.
	.GLOBL	SY.RTN	;DDB-TASK DDB RESERVED FOR (BYTE)
	.GLOBL	SY.DFL	;DDB-FLAG BYTE.
	.GLOBL	SY.SCB	;DDB-STORE FOR CURRENT CHANGE BLOCK.
	.GLOBL	SY.TO	;DDB-TIME OUT COUNT (0=NOT ACTIVE)
	.GLOBL	SY.INH	;DDB-TIME OUT MESSAGE INHIBIT COUNT
	.GLOBL	SY.QLK	;Q LINK TO ACTIVE DDB'S
;
SY.DVL=-6			;SUSPEND LEVEL CTRS.
SY.SPN=31			;SUSPEND # (BYTE)
SY.BFS=32			;BUFFER SIZE (WORD)
SY.PTB=34			;POINTER TO TOP OF BUFFER (WORD)
SY.PTI=36			;INPUT PTR TO BUFFER (WORD)
SY.PTO=40			;OUTPUT PTR FROM BUFFER (WORD)
SY.PIC=42			;PTR TO CURRENT INPUT CHANGE BLOCK (WOR
SY.RTN=44			;RESERVED TASK # (BYTE)
SY.DFL=45			;DDB FLAGS (BYTE)
SY.SCB=46			;STORAGE FOR CURRENT OUTPUT CHANGE BLOC
SY.TO=52			;TIME OUT COUNT (0=NOT ACTIVE)
SY.INH=53			;TIME OUT MESSAGE INHIBIT COUNT
SY.QLK=-12			;Q LINK TO ACTIVE DDB'S
;
;FLAGS IN DDB POSITION "SY.DFL"
;
	.GLOBL	SY.LOC	;DDB-LOCKED FLAG.
	.GLOBL	SY.RES	;DDB-RESERVED FLAG.
	.GLOBL	SY.WDC	;DDB-WAITING FOR DEVICE COMPLETION FLAG
	.GLOBL	SY.DPR	;DDB-PERMANENT DDB BIT.
	.GLOBL	SY.TWR	;DDB-THE OWNER IS WAITING.
	.GLOBL	SY.WIW	;DDB-.WRITE OR .READ IS WAITING FOR ROOM OR DAT
	.GLOBL	SY.DWN	;DDB-DEVICE IS DOWN FLAG (NOT READY).
;
SY.LOC=200			;LOCKED
SY.RES=100			;RESERVED
SY.WDC=40			;WAITING FOR DEVICE COMPLETION
SY.DPR=20			;THIS IS A PERMANENT DDB
SY.TWR=10			;AN OWNER IS WAITING
SY.WIW=4			;.WRITE IS WAITING FOR ROOM.
SY.DWN=2			;DEVICE IS DOWN
                        ;
;SUSPEND REASONS
;
;THESE ARE PUT ON THE TOP OF THE USER STACK AND
;INDICATE WHY THE TASK IS SUSPENDED.
;

	.GLOBL	SY.WL	;SUSPEND-WAIT, LOCKED
	.GLOBL	SY.OR	;SUSPEND-OPEN, RESERVED
	.GLOBL	SY.OL	;SUSPEND-OPEN, LOCKED FOR ANOTHER TASK
	.GLOBL	SY.OF	;SUSPEND-OPEN, BUFFER FULL.
	.GLOBL	SY.OLT	;SUSPEND-OPEN,LOCKED FOR THIS TASK
	.GLOBL	SY.CR	;SUSPEND-CLOSE, RESERVED.
	.GLOBL	SY.CL	;SUSPEND-CLOSE, LOCKED FOR ANOTHER TASK.
	.GLOBL	SY.CF	;SUSPEND-CLOSE, BUFFER FULL
	.GLOBL	SY.CLT	;SUSPEND-CLOSE, LOCKED FOR THIS TASK
	.GLOBL	SY.WRR	;SUSPEND-WRITE, LOCKED FOR ANOTHER TASK
	.GLOBL	SY.WRL	;SUSPEND-WRITE, LOCKED FOR ANOTHER TASK
	.GLOBL	SY.WLT	;SUSPEND-WRITE, LOCKED FOR THIS TASK
	.GLOBL	SY.RLT	;SUSPEND-RELEASE, LOCKED FOR THIS TASK
	.GLOBL	SY.SPL	;SUSPEND-SPECIAL FCN, LOCKED FOR ANOTHER TASK
	.GLOBL	SY.SPR	;SUSPEND-SPECIAL FCN, RESERVED
	.GLOBL	SY.SPT	;SUSPEND-SPECIAL FCN, LOCKED FOR THIS TASK
	.GLOBL	SY.TRL	;SUSPEND-XFR FCN, LOCKED FOR ANOTHER TASK
	.GLOBL	SY.TRR	;SUSPEND-XFR FCN, RESERVED
	.GLOBL	SY.TRT	;SUSPEND-XFR FCN, LOCKED FOR THIS TASK


SY.WL=1				;WAIT, LOCKED
SY.OR=2				;OPEN, RESERVED
SY.OL=3				;OPEN, LOCKED FOR ANOTHER TASK
SY.OF=4				;OPEN, FULL
SY.OLT=5			;OPEN, LOCKED FOR THIS TASK.
SY.CR=6				;CLOSE, RESERVED
SY.CL=7				;CLOSE, LOCKED FOR ANOTHER TASK
SY.CF=10			;CLOSE, FULL
SY.CLT=11			;CLOSE, LOCKED FOR THIS TASK.
SY.WRR=12			;WRITE, RESERVED
SY.WRL=13			;WRITE, LOCKED FOR ANOTHER TASK
SY.WLT=14			;WRITE, LOCKED FOR THIS TASK
SY.RLT=15			;RELEASE, LOCKED FOR THIS TASK.
SY.SPR=16			;SPECIAL FCN-RESERVED
SY.SPL=17			;SPECIAL FCN-LOCKED FOR ANOTHER TASK
SY.SPT=20			;SPECIAL FCN-LOCKED FOR THIS TASK
SY.TRR=21			;XFR FCN, RESERVED
SY.TRL=22			;XFR FCN, LOCKED FOR ANOTHER TASK
SY.TRT=23			;XFR FCN, LOCKED FOR THIS TASK
                        ;
;	ERROR CLASSES *(2^8)
;
	.GLOBL	S.EINF	;INFORMATIONAL CLASS MESSAGE
	.GLOBL	S.EACT	;ACTION CLASS MESSAGE
	.GLOBL	S.EWAR	;WARNING CLASS MESSAGE
	.GLOBL	S.EFAT	;FATAL CLASS MESSAGE
	.GLOBL	S.ESYS	;SYSTEM PROGRAM CLASS MESSAGE
	.GLOBL	S.EREL	;REAL TIME ERROR(ILLEGAL ACTION)
;
S.EINF=0			;INFORMATIONAL
S.EINF=0			;INFORMATIONAL
S.EACT=400			;ACTION
S.EWAR=1000			;WARNING
S.EFAT=1400			;FATAL
S.ESYS=2000			;SYSTEM PROGRAM
S.EREL=2400			;REAL-TIME ONLY (ACTION FATAL)

;
;COMMANDS FOR OUTPUT CIRCULAR BUFFER
;
	.GLOBL	SY.OPN	;CMD-OPEN
	.GLOBL	SY.CLS	;CMD-CLOSE
	.GLOBL	SY.TRA	;CMD-TRANS
	.GLOBL	SY.WR	;CMD-WRITE
	.GLOBL	SY.CLI	;CMD-INPUT CLOSE
	.GLOBL	SY.WAP	;CMD-WRAP AROUND

SY.OPN=2			;OPEN
SY.CLS=4			;CLOSE
SY.TRA=6			;TRANS
SY.WR=10			;WRITE
SY.CLI=12			;SPECIAL INPUT CLOSE.
SY.WAP=14			;WRAP AROUND

;
;FLAG IN USER LINE BUFFER TO CONTROL ATTACH/DETACH
;STAY ATTACHED UNLESS=1
;
	.GLOBL	SY.DET	;FREE BIT
SY.DET=40			;BIT 5 OF MODE BYTE
;
	.GLOBL	SY.MUD	;DRIVER MULTI-ACCESS BIT.
SY.MUD=1
                        ;
;	INDEXES INTO DDB USED BY AD/AF/UDC DRIVERS
;	  AND SUBROUTINES.
;
	.GLOBL	PI.FCN	;DDB-SPECIAL FCN CODE STORE
	.GLOBL	PI.ADR	;DDB-ADDRESS OF MUX ARRAY
	.GLOBL	PI.NUM	;DDB-NUMBER OF POINTS
	.GLOBL	PI.DAT	;DDB-ADDRESS OF DATA ARRAY
	.GLOBL	PI.ERR	;DDB-ADDRESS OF FINAL STATUS
	.GLOBL	PI.FST	;DDB-FIRST CHANNEL NUMBER FOR SEQUENTIAL OPS.
	.GLOBL	PI.FAD	;DDB-ADDRESS OF # OF POINTS
PI.FCN=20		;STORAGE FOR FUNCTION CODE.
PI.ADR=4		;STORE FOR ADDRESS OF CONNECTION DATA ARRAY
PI.NUM=6		;STORE FOR NUMBER OF POINTS.
PI.DAT=10		;STORE FOR ADDRESS OF DATA ARRAY
PI.ERR=24		;STORE FOR ADDRESS OF TRANSFER STATUS.
PI.FST=22		;STORE FOR FIRST CHANNEL NUMBER.
PI.FAD=34		;STORE FOR ADDR OF # OF POINTS.
	.EOT
                                                                                                                                                                                                                                                                                                                                                                                                                                         