  €€B 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          G/	-3C	
	.TITLE	MACT
;	PROGRAMMER	67
;	E M T EQUATES 

IOE$ = 101
QUEE$ = 1 
SUSE$ = 2 
UNSE$ = 3 
EXTE$ = 4 
BTAE$ = 16
ATBE$ = 17
CKPE$ = 27
NCKE$ = 30
GTIE$ = 31
GDAE$ = 32
ASRE$ = 46
RACE$ = 47
MSKE$ = 53
UNME$ = 54
GJDE$ = 70
OPNE$	= 101 
CLSE$	= OPNE$ + 1 
INPE$	= CLSE$ + 1 
OUTE$	= INPE$ + 1 
REWE$	= OUTE$ + 1 
FSRE$	= REWE$ + 1 
BSRE$	= FSRE$ + 1 
FSFE$	= BSRE$ + 1 
BSFE$	= FSFE$ + 1 
EOFE$	= BSFE$ + 1 
QTME$	= 113 
DQTE$	= QTME$ + 1 
QSKE$	= DQTE$ + 1 
DQSE$	= QS 	.TITLE	MACT
;	PROGRAMMER	67
;	E M T EQUATES 

IOE$ = 101
QUEE$ = 1 
SUSE$ = 2 
UNSE$ = 3 
EXTE$ = 4 
BTAE$ = 16
ATBE$ = 17
CKPE$ = 27
NCKE$ = 30
GTIE$ = 31
GDAE$ = 32
ASRE$ = 46
RACE$ = 47
MSKE$ = 53
UNME$ = 54
GJDE$ = 70
OPNE$	= 101 
CLSE$	= OPNE$ + 1 
INPE$	= CLSE$ + 1 
OUTE$	= INPE$ + 1 
REWE$	= OUTE$ + 1 
FSRE$	= REWE$ + 1 
BSRE$	= FSRE$ + 1 
FSFE$	= BSRE$ + 1 
BSFE$	= FSFE$ + 1 
EOFE$	= BSFE$ + 1 
QTME$	= 113 
DQTE$	= QTME$ + 1 
QSKE$	= DQTE$ + 1 
DQSE$	= QSKE$ + 1  ;       ORGINAL 10 JUL 74       FSDATA.S00

        .TITLE  FSDATA  FILE SYSTEM DATA
        .DEF    SFADCL,STADCL,SPADCL,BFADCL,CFADCL
        .DEF    $FIRST,$FNEXT,$FLAST
        .DEF    $FBITM
        .MCALL  FDL$

;       FILE DIRECTORY ENTRY MACRO

	.MACRO	$FLDRM	FID,FTY,NUM,LNG,ARA,PRT
	.LIST	ME 
;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
	.WORD	FID	; FILE I D 
	.WORD	0	; STARTING SECTOR NUMBER 
	.BYTE	FTY	; FILE TYPE (FIXED = 0, CIR = 1, VARIABLE ;       UPDATE  22 JUL 74       CEQU.S02
;       UPDATE  20 JUL 74       CEQU.S01
;       UPDATE 24 JUN 74        CEQU.S00
;       UPDATE  20 JUN 74       ROS3.DAP
        .SBTTL  CEQU            CON EQUATES 
;*
;*      G E N E R A L    S Y S T E M    E Q U A T E S 
;*
$1145   =       1               ;1 = 11/45      0 = NOT 11/45 
$1125   =       0               ;1 = 11/25      0 = NOT 11/25 
$1140   =       $1125           ;                                       6/15/73 
$1120   =       0     	 KE$ + 1 
R$	= 117 
RES$	= 120 
Q$	= 121 
GETE$ = 122 
PUTE$ = 123 


;	I/O CONTROL LIST OFFSET EQUATES 
$LUN	= 4		 ; LOGICAL DEVICE NUMBER, FILE NUMBER OR NAME
$PRI	= $LUN	+ 2	 ; I/O CALL PRIORITY 
$EX	 = $PRI	+ 1	 ; CALL TYPE (SEQUENTIAL, NON-SEQ, ETC.) 
$ERWD	= $EX	+ 1	 ; CALL OR I/O ERROR CODE (SET BY ROS) 
$NR	 = $ERWD + 2	 ; POINTER TO NORMAL RESUME LOCATION AFTER I/O 
$ER	 = $NR	+ 2	 ; POINTER TO ERROR RESUME LOCATION AFTER I/O
$MOD	= $ER	+ 2	 ; MODE OF TRANSFER (ASCII, BINARY, HOLLER
 
R$	= 117 
RES$	= 120 
Q$	= 121 
GETE$ = 122 
PUTE$ = 123 


;	I/O CONTROL LIST OFFSET EQUATES 
$LUN	= 4		 ; LOGICAL DEVICE NUMBER, FILE NUMBER OR NAME
$PRI	= $LUN	+ 2	 ; I/O CALL PRIORITY 
$EX	 = $PRI	+ 1	 ; CALL TYPE (SEQUENTIAL, NON-SEQ, ETC.) 
$ERWD	= $EX	+ 1	 ; CALL OR I/O ERROR CODE (SET BY ROS) 
$NR	 = $ERWD + 2	 ; POINTER TO NORMAL RESUME LOCATION AFTER I/O 
$ER	 = $NR	+ 2	 ; POINTER TO ERROR RESUME LOCATION AFTER I/O
$MOD	= $ER	+ 2	 ; MODE OF TRANSFER (ASCII, BINARY, HOLLERITH) 
$F  = 2) 
	.BYTE	ARA	; AREA NUMBER
	.WORD	NUM	; NUMBER OF RECORDS IN FILE
	.WORD	LNG	; RECORD LENGTH IN BYTES 
	.WORD	0,0	; RECORD NUMBER OR SECTOR ADDRESS
	.BYTE	PRT,0	; PROTECT AND EXCLUSIVE BYTES
	.BYTE	0,0	; READ ONLY & SHARED OPEN COUNTS 
	.WORD	0	; TASK NUMBER OF FIRST TASK IN OPEN QUEUE
	.WORD	0,0	; SPARE WORDS
	.NLIST	ME
	.ENDM	$FLDRM 
;       AREA SIZE TABLE 
ARSIZE: 
        .IRP    ARG,<00,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17> 
        .LIST   MEB 
        .IIF LT $ARM           ;1 = 11020 OR LESS (11/05, ETC.)
$KT11C  =       1               ;1 = KT11C SEGMENTATION 
                                ;0 = NO SEGMENTATION
$FPP    =       0               ;1 = FLOATING POINT PROCESSOR IS IN SYSTEM
        .IFZ    $1125!$1145 
        .IFNZ   $KT11C!$FPP 
        XXXXXXXX
        .ENDC 
        .ENDC 
$RASM   =       0               ; 1 IFF ROS ASSEMBLER IS IN SYSTEM (FOR CR) 
        .IFG    $KT11C-1
        XXXXXXXX
        .ENDC 
$DELAY  =       2              ITH) 
$FCT	= $MOD	+ 1	 ; FUNCTION CODE 
$NW	 = $FCT	+ 1	 ; NUMBER OF WORDS TO BE TRANSFERED
$ANW	= $NW	+ 2	 ; ACTUAL NUMBER OF WORDS TRANSFERED 
$BUF	= $ANW	+ 2	 ; POINTER TO DATA BUFFER
$ACC	= $BUF	+ 6	 ; ACCESS REQUESTED
$BLU	= $ACC	+ 2	 ; BACKUP LOGICAL DEVICE NO. OR FILE NO. 
$REC	= $BLU	+ 2	 ; LOGICAL RECORD NUMBER 
$CBN	= $REC	+ 4	 ; CURRENT RECORD FIRST BLOCK NUMBER 
$CRL	= $CBN	+ 2	 ; CURRENT RECORD LENGTH 
$PBN	= $CRL	+ 2	 ; PREVIOUS RECORD FIRST BLOCK NUMBER
$PRL	= $PBN	+ 2	 ; PREVIOU CT	= $MOD	+ 1	 ; FUNCTION CODE 
$NW	 = $FCT	+ 1	 ; NUMBER OF WORDS TO BE TRANSFERED
$ANW	= $NW	+ 2	 ; ACTUAL NUMBER OF WORDS TRANSFERED 
$BUF	= $ANW	+ 2	 ; POINTER TO DATA BUFFER
$ACC	= $BUF	+ 6	 ; ACCESS REQUESTED
$BLU	= $ACC	+ 2	 ; BACKUP LOGICAL DEVICE NO. OR FILE NO. 
$REC	= $BLU	+ 2	 ; LOGICAL RECORD NUMBER 
$CBN	= $REC	+ 4	 ; CURRENT RECORD FIRST BLOCK NUMBER 
$CRL	= $CBN	+ 2	 ; CURRENT RECORD LENGTH 
$PBN	= $CRL	+ 2	 ; PREVIOUS RECORD FIRST BLOCK NUMBER
$PRL	= $PBN	+ 2	 ; PREVIOUS RECORD  AX - ARG    .MEXIT
        .WORD   $AS0'ARG        ; NUMBER OF SECTORS IN AREA ARG 
        .NLIST  MEB 
        .ENDM 

        FDL$    SFADCL,1,0,63,0,200,$AS000,1
        FDL$    STADCL,2,0,63,0,200,$AS001,1
        FDL$    SPADCL,3,0,63,0,200,$AS002,1
        FDL$    BFADCL,4,0,63,0,200,$AS003,1
        FDL$    CFADCL,5,0,63,0,200,$AS004,1

;       FIRST, NEXT & LAST ALLOCATION POINTERS

$FIRST: 
TEMP    = 0 
        .IRP    ARG,<00,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17> 
   ;INDICATES TYPE OF MEMORY AND IS USED 
                                ;IN SOME DELAY LOOPS
                                ;1 = 1.2 US CORE
                                ;2 = 850 NS CORE
                                ;3 = 11/45 SOLID STATE MEMORY 
;       STANDARD REGISTER DEFINITIONS 
R0      =       %0
R1      =       %1
R2      =       %2
R3      =       %3
R4      =       %4
R5      =       %5
SP      =       %6
PC      =       %7
        .IFNZ   $FPP
AC0     =       %0           S RECORD LENGTH
$NBN	= $PRL	+ 2	 ; NEXT RECORD FIRST BLOCK NUMBER
$NRL	= $NBN	+ 2	 ; NEXT RECORD LENGTH


SP	= %6
PC	= %7

	.REF	GETBLK


CLQ:	NOP 
CLER1:	NOP 
ERRR:	NOP 
RTN1:	NOP 
ERR1:	NOP 
	.PAGE 
	.MACRO	ERPR	LST,CLER 
	.IF NB	LST 
	MOV	(SP)+,LST+$ERWD	; SAVE RETURNED CODE 
	.IFF 
#;	LIST ADDRESS IS REQUIRED 
	.ENDC
	.IF NB	CLER
	BEQ	.+4
	JMP	CLER	; GO TO ERROR PROCESSOR 
	.IFF 
#;	ERROR PROCESS MUST BE SPECIFIED
	.ENDC
	.ENDM	ERPR 

	.MACRO	ERRM	CLER 
	TST	(SP)+
	.IF LENGTH
$NBN	= $PRL	+ 2	 ; NEXT RECORD FIRST BLOCK NUMBER
$NRL	= $NBN	+ 2	 ; NEXT RECORD LENGTH


SP	= %6
PC	= %7

	.REF	GETBLK


CLQ:	NOP 
CLER1:	NOP 
ERRR:	NOP 
RTN1:	NOP 
ERR1:	NOP 
	.PAGE 
	.MACRO	ERPR	LST,CLER 
	.IF NB	LST 
	MOV	(SP)+,LST+$ERWD	; SAVE RETURNED CODE 
	.IFF 
#;	LIST ADDRESS IS REQUIRED 
	.ENDC
	.IF NB	CLER
	BEQ	.+4
	JMP	CLER	; GO TO ERROR PROCESSOR 
	.IFF 
#;	ERROR PROCESS MUST BE SPECIFIED
	.ENDC
	.ENDM	ERPR 

	.MACRO	ERRM	CLER 
	TST	(SP)+
	.IF NB	CLER         .LIST   MEB 
        .IIF LT $ARMAX - ARG    .MEXIT
        .WORD   TEMP
TEMP    = TEMP + $AS0'ARG 
        .NLIST  MEB 
        .ENDM 

$FNEXT: 
TEMP    = 0 
        .IRP    ARG,<00,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17> 
        .LIST   MEB 
        .IIF LT $ARMAX - ARG    .MEXIT
        .WORD   TEMP
TEMP    = TEMP + $AS0'ARG 
        .NLIST  MEB 
        .ENDM 

$FLAST: 
TEMP    = -1
        .IRP    ARG,<00,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17> 
       ; 
AC1     =       %1              ;FLOATING 
AC2     =       %2              ;  POINT
AC3     =       %3              ;    ACCUMULATOR
AC4     =       %4              ;      DEFINITIONS
AC5     =       %5              ; 
        .ENDC 
; 
        .IFNZ   $KT11C
$ROSM   =       100000          ;ROS MASK FOR SYSTEM TASKS TO USE 
        .ENDC                   ;TO 'OR' WITH ROS ADDRESSES TO POINT
        .IFZ    $KT11C          ; TO USER ASR 4 
$ROSM   =       0               ; 
        .E  NB	CLER
	BEQ	.+4
	JMP	CLER 
	.IFF 
#;	ERROR LOCATION MUST BE SPECIFIED 
	.ENDC
	.ENDM	ERRM 
;	Q$	QUEUE TASK MACRO REQUEST WITHOUT USEING DYNAMIC FREE CORE 


	.MACRO	Q$	LIST,CLER 
	.LIST	MEB 
	MOV	 #LIST,-(SP)	 ; PLACE ADDRESS ON STACK
	EMT	QUEE$
	ERPR	LIST,CLER 
	.NLIST	MEB 
	.ENDM	Q$


	Q$	LSQ,CLQ 
	.PAGE 
;	QUE$	QUEUE TASK MACRO REQUEST USEING DYNAMIC FREE CORE 

	.MACRO	QUE$	LST,CLER
	.LIST	MEB 
	MOV	 #LST,-(SP)	; PLACE LIST ADDRESS ON STACK 
	JSR	 PC,GETBLK	; PUBLIC LIBRARY 
	BEQ	.+4
	JMP	CLER 
	.IFF 
#;	ERROR LOCATION MUST BE SPECIFIED 
	.ENDC
	.ENDM	ERRM 

	.MACRO	SPM$	LST
	.LIST	MEB
	.IF NB	LST 
	MOV	#LST,-(SP)	F PLACE ON STACK
	.IFF 
#;	PARAMETER IS REQUIRED
	.ENDC
	ENDM	SPM$

	.MACRO	SPD$	LST
	.IF NB	LST 
	MOV	#LST,-(SP)	F PLACE ON STACK
	.IFF 
#;	PARAMETER IS REQUIRED
	.ENDC
	ENDM	SPD$

	.MACRO	STP$	VAR,CNT
	.IFNB	VAR
= 
	TEMP$ = TEMP$ + CNT
	.ENDC
	.ENDM	STP$ 

	.PAGE
;	Q$	QUEUE TASK MACRO REQUEST WITHOUT USEING DYNAMIC FREE CORE 


       .LIST   MEB 
        .IIF LT $ARMAX - ARG    .MEXIT
TEMP    = TEMP + $AS0'ARG 
        .WORD   TEMP
        .NLIST  MEB 
        .ENDM 

;       CREATED FILE BIT MAP   ( INITIALIZED BY IPL ) 
; 
;       WORD    BIT             FILE I D
;       0       0               $LUNMX + 1
;       0       1               $LUNMX + 2
;       .       .               .       . 
;       0       15              $LUNMX + 16 
;       1       0               $LUNMX + 17 
;       1       1               $L NDC 
PS      =       177776
; 
$DEBUG  =       1               ; ROS DEBUG SWITCH
$CORAL  =       1               ; TYPE OF CORE ALLOCATOR. 
                                ;       =0 SOFTWARE 
                                ;       =1 HARDWARE 
        .PAGE 
; 
;       TASK CONTROL SYSGEN EQUATE CARDS
; 
NPRIOR  =       6               ; NO. OF SOFTWARE PRIORITED IN SYSTEM 
PRIBKG  =       NPRIOR - 1      ; PRIORITY OF BATCH TASKS 
$BATCH  =       1               ; BATCH OPTION
; 
$SYSTK  SUBROUTINE 
	EMT	QUEE$
	ERPR	LST,CLER
	.NLIST	MEB 
	.ENDM	QUE$


	QUE$	LSQ,CLQ 
	.PAGE 
;	QL$	 TASK QUEUE DEFINITION MACRO 

 .MACRO QL$	 LIST,TSKN,PRIR,EXTY,ERES,NRES,BUF1,N1,BUF2,N2,ARG1,ARG2 
	.LIST	MEB 
	.BOUND
	.IF NB	LIST
LIST:	.WORD	1	; THREAD WORD 
	.IFF
 # ;	LIST ADDRESS MUST BE SPECIFIED
	.ENDC 
	.WORD	0	; CALLING TASK'S NUMBER 
	.IF NB	TSKN
	.WORD	TSKN	; CALLED TASK'S NUMBER
	.IFF
 # ;	CALLED TASK'S NUMBER MUST BE SPECIFIED
	.ENDC 
	.IF NB	PRIR
	.BYTE	PRIR	; PRIORITY 	.MACRO	Q$	LIST,CLER 
	SPM$	LIST
	EMT	QUEE$
	ERPR	LIST,CLER 
	.NLIST	MEB 
	.ENDM	Q$


	Q$	LSQ,CLQ 
	.PAGE 
;	QUE$	QUEUE TASK MACRO REQUEST USEING DYNAMIC FREE CORE 

	.MACRO	QUE$	LST,CLER
	SPM$	LST 
	JSR	 PC,GETBLK	; PUBLIC LIBRARY SUBROUTINE 
	EMT	QUEE$
	ERPR	LST,CLER
	.NLIST	MEB 
	.ENDM	QUE$


	QUE$	LSQ,CLQ 
	.PAGE 
;	QL$	 TASK QUEUE DEFINITION MACRO 

 .MACRO QL$	 LIST,TSKN,PRIR,EXTY,ERES,NRES,BUF1,N1,BUF2,N2,ARG1,ARG2 
	.LIST	MEB 
	.BOUND
	.IF NB	LIST
LIST:	.WORD	1	; THREA UNMX + 18 
;       .       .               .       . 
$FBITM: .REPT   <$MXDID - $LUNMX -1>/16 + 1 
        .WORD   0 
        .ENDR 

;  CORE RESIDENT SYSTEM FILE DIRECTORIES FOR FILES $LUNMX+1 THRU $MXSID 
; 
;   DISC DIRECTORY FILE DIRECTORY ENTRY 
$FDDFD: $FLDRM  $FIDDD,0,$NSDD,$STBSZ,$SYARN,63 
;   AREA SPACE DEFINITION FILE DIRECTORY ENTRY
$FASFD: $FLDRM  $FIDAS,0,$NSAS,$STBSZ,$SYARN,63 
;   TASK TABLE FILE DIRECTORY ENTRY 
$FTTFD: $FLDRM  $FIDTT,0,$NSTT,$STBSZ,$SYARN,63 
; 
;   CORE R   =       15.             ; NUMBER OF SYSTEM TASKS IN SYSTEM. 
        .IFLE   NPRIOR          ; 
        XXXXXXXX                ;NPRIOR MUST BE GREATER THAN ZERO 
        .ENDC 
MXTASK  =       30              ; MAX # OF CORE RESIDENT TASKS IN THE SYS 
NLTASK  =       1               ; LARGEST TASK # OF TASKS LOADED WITH SYSTEM
                                ;NOTE: IF OVERLAYS ARE USED, THEN THE 
                                ;FIRST OVERLAY TASK NUMBER IS MXTASK+1
OVTMIN  =       MXTASK+1     
	.BYTE	EXTY	; EXIT TYPE 
	.IFF
 # ;	PRIORITY MUST BE SPECIFIED
	.ENDC 
	.WORD	0	; CONTAINS ERROR CODE 
	.WORD	NRES	; NORMAL RESUME LOCATION OR 0 
	.WORD	ERES	; ERROR RESUME LOCATION OR 0
	.BYTE	N1	; NUMBER OF ARGUMENTS SENT, 0, OR 1ST ARGUMENT
	.BYTE	N2	; NUMBER OF ARGUMENTS TO RECEIVE, 0, OR 2ND ARG 
	.WORD	BUF2	; POINTER TO RECEIVING BUFFER, 0, OR 3RD ARG
	.WORD	BUF1	; POINTER TO SENDING BUFFER, 0, OR 4TH ARGUMENT 
	.WORD	ARG1	; 0 OR ARG
	.WORD	ARG2	; 0 OR ARG
	.ENDM	QL$ 

	QL$	 LSQ,12,5 D WORD 
	.IFF
 # ;	LIST ADDRESS MUST BE SPECIFIED
	.ENDC 
	.WORD	0	; CALLING TASK'S NUMBER 
	.IF NB	TSKN
	.WORD	TSKN	; CALLED TASK'S NUMBER
	.IFF
 # ;	CALLED TASK'S NUMBER MUST BE SPECIFIED
	.ENDC 
	.IF NB	PRIR
	.BYTE	PRIR	; PRIORITY
	.BYTE	EXTY	; EXIT TYPE 
	.IFF
 # ;	PRIORITY MUST BE SPECIFIED
	.ENDC 
	.WORD	0	; CONTAINS ERROR CODE 
	.WORD	NRES	; NORMAL RESUME LOCATION OR 0 
	.WORD	ERES	; ERROR RESUME LOCATION OR 0
	.BYTE	N1	; NUMBER OF ARGUMENTS SENT, 0, OR 1ST ARGUMENT
	.BYTE	N2	;   ESIDENT FILE DIRECTORIES FOR FILES $MXSID+1 THRU $MXCID 
; THE REPT & MACRO EXPANSION WAS USED RATHER THAN .BLKW TO AID IN SYSTEM DEBUG
; 
$FXCRD: .REPT   $MXCID - $MXSID 
        $FLDRM  0,0,0,0,0,0 
        .ENDR 
$FXCDE: 
        .END

                                                                                                                                                                                                                                                                            ;FIRST OVERLAY TASK NUMBER
OVRLAY  =       1               ;SYSTEM OVERLAY OPTION (1 = OVERLAY)
                                ;0 = NO OVERLAY, 1 = OVERLAY
        .IFNZ   OVRLAY          ; 
MAXOVR  =       $SYSTK + 50.    ; MAX # OF OVERLAY TASKS IN SYSTEM. 
        .ENDC                   ;(NOT USED IF OVRLAY = 0) 
        .IFZ    OVRLAY          ; 
MAXOVR  =       0               ;SET TO ZERO ONLY IF NO OVERLAYS
        .ENDC 
TASMAX  =       MXTASK+MAXOVR   ;MAXIMUM NUMBER OF TASKS (INCL! ,2,ERQ,NRQ

NRQ:	NOP		 ; NORMAL RETURN 
ERQ:	NOP		 ; ERROR RETURN
	.PAGE 
;	R$	RESUME TASK MACRO FOR METHOD 1 & 2

	.MACRO	R$	CLER
	.LIST	MEB 
	EMT	 R$
	TST	 (SP)+ 
	.IF NB	CLER
	BEQ	.+4
	JMP	CLER 
	.IFF
 # ;	CALL ERROR RETURN LOCATION MUST BE SPECIFIED
	.ENDC 
	.NLIST	MEB 
	.ENDM	R$


	R$	CLER1 
	.PAGE 
;	RES$	RESUME TASK MACRO FOR METHOD 3

	.MACRO	RES$	LST,CLER
	.LIST	MEB 
	.IF NB	LST 
	MOV	 #LST,-(SP)	; PLACE LIST ADDRESS ON STACK 
	.IFF
 # ;	LIST ADDRESS IS REQUIRED
	.E" NUMBER OF ARGUMENTS TO RECEIVE, 0, OR 2ND ARG 
	.WORD	BUF2	; POINTER TO RECEIVING BUFFER, 0, OR 3RD ARG
	.WORD	BUF1	; POINTER TO SENDING BUFFER, 0, OR 4TH ARGUMENT 
	.WORD	ARG1	; 0 OR ARG
	.WORD	ARG2	; 0 OR ARG
	.NLIST	MEB 
	.ENDM	QL$ 

	QL$	 LSQ,12,5,2,ERQ,NRQ

NRQ:	NOP		 ; NORMAL RETURN 
ERQ:	NOP		 ; ERROR RETURN
	.PAGE 
;	R$	RESUME TASK MACRO FOR METHOD 1 & 2

	.MACRO	R$	CLER
	.LIST	MEB 
	EMT	 R$
	ERRM	CLER
	.NLIST	MEB 
	.ENDM	R$


	R$	CLER1 
	.PAGE 
;	RES$	RESUME TASK MACRO FO# ;       ORGINAL COMPRS.S00      29-OCT-74 
        .TITLE  COMPRS  ( FIXED LENGTH FILE COMPRESS K-TASK ) 
;*************************************************************************
;*                                                                      **
;*      PROGRAM IDENTIFICATION. COMPRS                                  **
;*                                                                      **
;*      PURPOSE.  THIS TASK IS CALLED BY THE OPERATOR TO COMPRESS       **
;*               A DES$  OVERLAYS 
        .IFLE   MXTASK          ; 
        XXXXXXXX               ;MXTASK MUST BE GREATER THAN ZERO
        .ENDC 
        .IFL    NLTASK          ;                                       QTAB
        XXXXXXXX               ;NTASK CANNOT BE NEGATIVE
        .ENDC 
        .IFG    NLTASK-MXTASK   ;                                       QTAB
        XXXXXXXX               ;NTASK MUST BE <= MXTASK 
        .ENDC 
; 
;       ROS SYSTEM TASK NUMBERS 
; 
;               DON'T FORGET THE S% NDC 
	EMT	 RES$
	ERPR	LST,CLER
	.NLIST	MEB 
	.ENDM	RES$


	RES$	LSR,CLQ 
	.PAGE 
;	RESL$	RESUME TASK LIST MACRO

	.MACRO	RESL$	LST,TSKN,PROC,NN,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6
	.BOUND
	.LIST	MEB 
LST:	.WORD	1	; THREAD WORD 
	.IF NB	TSKN
	.WORD	TSKN	; NUMBER OF TASK TO BE RESUMED
	.IFF
 # ;	TASK NUMBER MUST BE SPECIFIED 
	.ENDC 
	.IF NB	PROC
	.WORD	PROC	; ERROR RETURN IF NO MORE CORE BLOCKS 
	.IFF
 # ;	ERROR RETURN MUST BE SPECIFIED
	.ENDC 
	.WORD	NN	; NUMBER OF ARGUMENTS PASSED
	.W& R METHOD 3

	.MACRO	RES$	LST,CLER
	SPM$	LST 
	EMT	 RES$
	ERPR	LST,CLER
	.NLIST	MEB 
	.ENDM	RES$


	RES$	LSR,CLQ 
	.PAGE 
;	RESL$	RESUME TASK LIST MACRO

	.MACRO	RESL$	LST,TSKN,PROC,NN,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6
	.BOUND
	.LIST	MEB 
LST:	.WORD	1	; THREAD WORD 
	.IF NB	TSKN
	.WORD	TSKN	; NUMBER OF TASK TO BE RESUMED
	.IFF
 # ;	TASK NUMBER MUST BE SPECIFIED 
	.ENDC 
	.IF NB	PROC
	.WORD	PROC	; ERROR RETURN IF NO MORE CORE BLOCKS 
	.IFF
 # ;	ERROR RETURN MUST BE SPECIFIED
	.ENDC 
' IGNATED FILE AREA                                 **
;*                                                                      **
;*      METHOD.   COMPRS SEQUENCES THROUGH A DESIGNATED AREA,FILE BY    **
;*                FILE,IN A REPACKING FILE MOVE PROCEDURE               **
;*                                                                      **
;*      TASK USAGE. COMPRS IS CALLED VIA THE OPERATOR DEMAND K-TASK     **
;*                  INPUT WITH THE COMMAND  CM,N  WHERE N IS THE        **
( YSTEM TASK'S FILE NUMBERS.            6/15/73 
; 
$TMRNO  =       2.              ; TIMER QUEUE PROCESSOR 
$SKDNO  =       3.              ; SKEDULER QUEUE PROCESSOR
$INITD  =       4.              ; DISC INITALIZER 
$INPNO  =       MXTASK+1        ; OPERATOR INPUT
                                ; NOTE THAT THE SLOTS FOR THE ROS SYSTEM
                                ; TASKS THAT ARE CORE RESIDENT MUST BE
                                ; SKIPED HERE.
$RLDNO  =       MXTASK+5.       ; ROS LOADER) ORD	ARG1	; ARGUMENT 1
	.WORD	ARG2	; ARGUMENT 2
	.WORD	ARG3	; ARGUMENT 3
	.WORD	ARG4	; ARGUMENT 4
	.WORD	ARG5	; ARGUMENT 5
	.WORD	ARG6	; ARGUMENT 6
	.NLIST	MEB 
	.ENDM	RESL$ 

	RESL$	LSR,42,ERRR,3,ARR1,ARR2,ARR3
ERR:	NOP 
ARR1:	.WORD	10
ARR2:	.WORD	20
ARR3:	.WORD	30
	.PAGE 
;	SUS$	TASK SUSPEND MACRO
	.MACRO	SUS$
	.LIST	MEB 
	EMT	 SUSE
	.NLIST	MEB 
	.ENDM	SUS$

	SUS$
	.PAGE 
;	UNS$	TASK UNSUSPEND MACRO

	.MACRO	UNS$	TSKN,RTRN,CLER
	.LIST	MEB 
	.IF NB	TSKN
	MOV	 #TSKN,-(SP)	 ; TA* 	.WORD	NN	; NUMBER OF ARGUMENTS PASSED
	.WORD	ARG1	; ARGUMENT 1
	.WORD	ARG2	; ARGUMENT 2
	.WORD	ARG3	; ARGUMENT 3
	.WORD	ARG4	; ARGUMENT 4
	.WORD	ARG5	; ARGUMENT 5
	.WORD	ARG6	; ARGUMENT 6
	.NLIST	MEB 
	.ENDM	RESL$ 

	RESL$	LSR,42,ERRR,3,ARR1,ARR2,ARR3
ERR:	NOP 
ARR1:	.WORD	10
ARR2:	.WORD	20
ARR3:	.WORD	30
	.PAGE 
;	SUS$	TASK SUSPEND MACRO
	.MACRO	SUS$
	.LIST	MEB 
	EMT	 SUSE
	.NLIST	MEB 
	.ENDM	SUS$

	SUS$
	.PAGE 
;	UNS$	TASK UNSUSPEND MACRO

	.MACRO	UNS$	TSKN,RTRN,CLER
	SPM$	T+ ;*                  DESIRED AREA NUMBER TO BE COMPRESSED.               **
;*                                                                      **
;*      PROGRAMMER: 67                                                  **
;*      DATE: 29-OCT-74                                                 **
;*                                                                      **
;*************************************************************************


;       PARAMETERS TO BE INCLUDED IN ROS3.DAP 
$F, 
$RASNO  =       MXTASK+6.       ; ROS ASSEMBLER TASK NUMBER 
$TKENO  =       MXTASK+7.       ; ROS TASK LOADER (ENTERER?)            4/8/73
$TKCNO  =       MXTASK+8.       ; TASK C??? 
$PCHNO  =       MXTASK+9.       ; DYNAMIC TASK PATCHER                  11/6/73 
$BFPNO  =       MXTASK+10.      ; BATCH FILE UTILITY PROCESSOR TASK     12/6/73 
$BT1NO  =       MXTASK+11.      ; BATCH MONITOR                         4/8/73
$CPTNO  = MXTASK+12.            ; FILE COMPRESSION
$FLTNO  = MXTASK+13.    - SK TO BE SUSPENDED
	.IFF
 # ;	TASK NUMBER	MUST BE GIVEN
	.ENDC 
	MOV	 #RTRN,-(SP) 
	EMT	 UNSE
	ERRM	CLER
	.NLIST	MEB 
	.ENDM	UNS$

	UNS$	5,RTNU,ERRU 

RTNU:	NOP 
ERRU:	NOP 
	.PAGE 

;	EXT$	TASK EXIT MACRO 
	.MACRO	EXT$
	.LIST	MEB 
	EMT	 EXTE
	.NLIST	MEB 
	.ENDM	EXT$

	EXT$
	.PAGE 
;	QTM$	QUEUE TIMER MACRO 

	.MACRO	QTM$	LIST,ERR,TMUL 
	.LIST	MEB 
	.IF NB	LIST
	MOV	 #LIST,-(SP)	 ; PLACE LIST ADDRESS ON STACK 
	.IFF
	# ;	LIST ADDRESS MUST BE SPECIFIED
	.ENDC 
	.IF NB	TMUL
. SKN
	MOV	 #RTRN,-(SP) 
	EMT	UNSE$
	ERRM	CLER
	.NLIST	MEB 
	.ENDM	UNS$

	UNS$	5,RTNU,ERRU 

RTNU:	NOP 
ERRU:	NOP 
	.PAGE 

;	EXT$	TASK EXIT MACRO 
	.MACRO	EXT$
	.LIST	MEB 
	EMT	EXTE$
	.NLIST	MEB 
	.ENDM	EXT$

	EXT$
	.PAGE 
;	QTM$	QUEUE TIMER MACRO 

	.MACRO	QTM$	LIST,ERR,TMUL 
	SPM$	LIST
	SPD$	TMUL
	EMT	 QTME$ 
	ERRM	ERR 
	.NLIST	MEB 
	.ENDM	QTM$


S3:	 QTM$	LS1,ER1,22

TG1:	NOP 
ER1:	NOP 
ER2:	NOP 
	.PAGE 
;	QTML$	TIMER LIST MACRO

 .MACRO QTML$	LIST,SOPT,RESL,ARGU/ MTSZ  = 50                    ; NUMBER OF ENTRIES IN THE FILE MOVE TABLE
$CMPTS  = 6                     ; NUMBER OF ENTRIES IN NON-COMPRESSABLE AREA TAB
$NCP00  = 0                     ; AREA NUMBER OF A NON-COMPRESSABLE AREA
$NCP01  = 1                     ; AREA NUMBER OF A NON-COMPRESSABLE AREA
$NCP02  = 2                     ; AREA NUMBER OF A NON-COMPRESSABLE AREA
$NCP03  = 3                     ; AREA NUMBER OF A NON-COMPRESSABLE AREA
$NCP04  = 4                     ; AREA NUMBER OF A NON-COM0         ; FILE DIRECTORY LISTER 
$FMGNO  = MXTASK+14.            ; FILE MANAGER
; 
        .PAGE 
; 
; NUMBER OF COMMON BLOCKS IN SYSTEM 
$COMAX  =       2 
        .PAGE 
        .IF  NZ OVRLAY          ; 
; 
; THESE EQUATES ARE USED ONLY FOR THOSE SYSTEMS CONTAINING THE TASK 
; OVERLAY OPTION. 
; 
$DYNSZ  =       70000           ; MIN. DYNAMIC AREA REQUIRED FOR SYSTEM 
$NBLKS  =       $DYNSZ/512.     ; NO. OF CORE BLOCKS IN MIN. AREA.
; 
; 
; THE MACRO 'DYTBGN' BUILDS ALL PARAMETERS NEE1 	MOV	 #TMUL,-(SP)	 ; PLACE TIMER MULTIPLE ON STACK 
	.IFF
	# ;	THE TIMER MULTIPLE AND RESET VALUE WORD MUST BE SPECIFIED 
	.ENDC 
	EMT	 QTME$ 
	ERRM	ERR 
	.NLIST	MEB 
	.ENDM	QTM$


S3:	 QTM$	LS1,ER1,22

TG1:	NOP 
ER1:	NOP 
ER2:	NOP 
	.PAGE 
;	QTML$	TIMER LIST MACRO

 .MACRO QTML$	LIST,SOPT,RESL,ARGU,TSKN,MASK,FLAG,JSRA 
	.LIST	MEB 
TEMP$	= 0 
	.BOUND
	.IF NB	LIST
LIST:	.WORD	1	; THREAD WORD 
	.WORD	0,0,0	;RESERVED FOR SYSTEM
	.IF NB	SOPT
	TEMP$	= TEMP$ + 200 
	.ENDC 
	.IF NB	AR2 ,TSKN,MASK,FLAG,JSRA 
	.LIST	MEB 
TEMP$	= 0 
	.BOUND
	.IF NB	LIST
LIST:	.WORD	1	; THREAD WORD 
	.WORD	0,0,0	;RESERVED FOR SYSTEM
	STP$	SOPT,200
	STP$	ARGU,100
	STP$	FLAG,40 
	STP$	JSRA,20 
	STP$	TSKN,10 
	.BYTE	RESL	; SET RESOLUTION
	.BYTE	TEMP$	; OPTION
	.WORD	0	; RESERVED FOR SYSTEM 
	.IF NB	ARGU
	.WORD	ARGU	; ARGUMENT TO BE TRANSMITTED TOTASK 
	.ENDC 
	.IF NB	FLAG
	.WORD	FLAG	; FLAG
	.WORD	MASK	; MASK
	.WORD	0,0	 ;RESERVED FOR SYSTEM
	.ENDC 
	.IF NB	JSRA
	.WORD	JSRA	; ADDRESS OF3 PRESSABLE AREA
$NCP05  = 5                     ; AREA NUMBER OF A NON-COMPRESSABLE AREA

        .PAGE 
        .REF    OPN 
        .REF    CLS 
        .REF    QIO 
        .REF    EXIT
        .REF    AFIRST
        .REF    ANEXT 
        .REF    ALAST 
        .REF    FSARUN
        .REF    TTFDCL
        .REF    CRFDET
        .REF    CFBITM

        .MCALL  IOCL$ 
        .MCALL  DCL$
        .MCALL  TSKH$ 
        .PAGE 
; TASK HEADER FOR COMPRS WHEN IT IS CORE RESIDENT 
CACC  4 DED BY THE SYSTEM FOR 
; OVERLAY & RPOM TABLES.  THE ARGUMENTS ARE:
;       XX      - PRIORITY LEVEL
;       PRIPX   - PRIORITY PROPERTY(+1 TIME SLICE, -1 DYNAMIC, 0 FIXED) 
;       NEQPX   - NUMBER OF ENTRIES IN RPOM'S QPART FOR THIS PRIORITY 
;       SBX     - THIS PRIORITIES START BLOCK (IE. HERE TO END OF POOL) 
;       BSIZEX  - SIZE OF THIS PRIORITY IFF FIXED OR TIME SLICED
; 
; THE PARAMETERS ARE: 
;       PRIPXX  - PRIORITY PROPERTY 
;       NEQPXX  - QPART SIZE
;       $SB0XX  - START 5 GU
	TEMP$	= TEMP$ + 100 
	.ENDC 
	.IF NB	FLAG
	TEMP$	= TEMP$ + 40
	.ENDC 
	.IF NB	JSRA
	TEMP$	= TEMP$ + 20
	.ENDC 
	.IF NB	TSKN
	TEMP$	= TEMP$ + 10
	.ENDC 
	.BYTE	RESL	; SET RESOLUTION
	.BYTE	TEMP$	; OPTION
	.WORD	0	; RESERVED FOR SYSTEM 
	.IF NB	ARGU
	.WORD	ARGU	; ARGUMENT TO BE TRANSMITTED TOTASK 
	.ENDC 
	.IF NB	FLAG
	.WORD	FLAG	; FLAG
	.WORD	MASK	; MASK
	.WORD	0,0	 ;RESERVED FOR SYSTEM
	.ENDC 
	.IF NB	JSRA
	.WORD	JSRA	; ADDRESS OF SUBROUTINE TO BE EXECUTED
	.ENDC 
	.IF NB	TSK6  SUBROUTINE TO BE EXECUTED
	.ENDC 
	.IF NB	TSKN
	.WORD	TSKN	; NUMBER OF TASK TO BE QUEUED 
	.ENDC 
	.IFF
	# ;	THE LIST SYMBOL MUST BE DEFINED 
	.ENDC 
	.NLIST	MEB 
	.ENDM	QTML$ 


S1:	QTML$	LS1,S,3,120,460,1243,45,TG1 

	.PAGE 
;	DQTM$	DEQUEUE TIMER MACRO 

	.MACRO	DQTM$	LIST,ERR
	SPM$	LIST
	EMT	 DQTE$ 
	ERRM	ERR 
	.NLIST	MEB 
	.ENDM	DQTM$ 


S4:	 DQTM$	LS1,ER1 
	.PAGE 
;	QSC$	QUEUE SCHEDULER MACRO 

;	QUEUE SCHEDULER MACRO 
	.MACRO	QSC$	LIST,ERR
	SPM$	LIST
	EMT	 QSKE$ 
	E7   = 20                    ; TASK ACCESS, SYSTEM TASK
CPRI    = 4                     ; TASK PRIORITY 
CSTK    = 200                   ; STACK SIZE
        TSKH$   $CPTNO,CACC,CPRI,CMPR00,0,CSTK,CMPRCS,CMPR
        .PAGE 
;*************************************************************************
;*                                                                      **
;*      COMPRS PROGRAM                                                  **
;*                                                      G BLOCK 
;       $PS0XX  - NO. OF BLOCKS IN THIS PRIORITY (A MIN. FOR DYNAMIC
;                 PRIORITY LEVELS)
; 
        .MACRO  DYTBGE  XX,PRIPX,NEQPX,SBX,BSIZEX  ;
        .IIF LT NPRIOR-XX'.  .MEXIT     ; DON'T EXPAND - NON-EXISTANT 
PRIP'XX =       PRIPX           ; SET PRIORITY PROPERTY 
NEQP'XX =       NEQPX           ; SET SIZE RPOM TABLES (QPART)
$SB0'XX =       SBX * 4         ; SET START BLOCK 
        .IF  LT PRIPX           ; 
$PS0'XX =       $NBLKS - $SB0'XX; SET NO. BLOCKS FOR DYNE N
	.WORD	TSKN	; NUMBER OF TASK TO BE QUEUED 
	.ENDC 
	.IFF
	# ;	THE LIST SYMBOL MUST BE DEFINED 
	.ENDC 
	.NLIST	MEB 
	.ENDM	QTML$ 


S1:	QTML$	LS1,S,3,120,460,1243,45,TG1 

	.PAGE 
;	DQTM$	DEQUEUE TIMER MACRO 

	.MACRO	DQTM$	LIST,ERR
	.LIST	MEB 
	.IF NB	LIST
	MOV	 #LIST,-(SP)	 ; PLACE LIST ADDRESS ON STACK 
	.IFF
	# ;	LIST ADDRESS MUST BE SPECIFIED
	.ENDC 
	EMT	 DQTE$ 
	ERRM	ERR 
	.NLIST	MEB 
	.ENDM	DQTM$ 


S4:	 DQTM$	LS1,ER1 
	.PAGE 
;	QSC$	QUEUE SCHEDULER MACRO 

;	QUEUF RRM	ERR 
	.NLIST	MEB 
	.ENDM	QSC$


S5:	 QSC$	LS2,ER2 

	.PAGE 
;	QSCL$	SCHEDULER LIST MACRO
;	THIS MACRO DOES NOT ALLOW THE (X) OPTION

 .MACRO QSCL$	LIST,SOPT,DED,DEH,DEM,ARGE,TSKN,STD,STH,STM,MASK,FLAG 
	.LIST	MEB 
TEMP$	= 0 
	.BOUND
	.IF NB	LIST
LIST:	.WORD	1	; THREAD WORD 
	.WORD	0,0,0	;RESERVED FOR SYSTEM
	.BYTE	0 
	STP$	ARGE,200
	STP$	FLAG,100
	STP$	SOPT,40 
	.BYTE	TEMP$	; OPTION
	.WORD	TSKN	; TASK NUMBER 
	.WORD	STD*40+STH*100+STM	; START 
	.WORD	DED*40+DEH*100+DEM	; DELTAH                 **
;*************************************************************************
CMPR00: JSR     PC,OPINT        ; CHECK AREA NUMBER 
        BR      CMPR50          ; ERROR RETURN
        ASL     R0              ; MAKE A WORD INDEX 
        MOV     AFIRST(R0),LFIRST       ; INITIALIZE LOCAL
        MOV     AFIRST(R0),LNEXT        ;   FIRST, NEXT, AND
        MOV     ALAST(R0),LLAST         ;     LAST POINTERS 
        ASR     R0              ; RETURN TO A BYTE INDEX
CMPR20: JSR     """""""  """""""""""""""                                               DDDDDDD @DDDDDDDDDDDDD                                                 ˆˆˆ                                                                     €ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ                €ˆˆˆ                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        A  D D                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           7B 	   €B 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 C f    }  . Á › kQPi  ğ * ² › |(a	{zú    › ër@Î8z q Ó› %ãf{Ö¶ ) Ì ›                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        $ D ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿»›™ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ             ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Åaå€Í‹æ Ä, L	ƒÖB8w &ÄB“Œ
ıƒàÇ`
%
&ˆÄ ‚— ıÿ}†&*ˆ CÒ$’$Î’Âe ¦’ÎEÀÿ—%> k†Œ	†—£ Îa€Ê‹aÊÕ€ ŠŠ¦ ¦˜æ ×$ &
*ˆÖPÓ$âÎ‹ÎŠËì ËÎ‹	¡Î€Óó ËdË
ÎŠÎ(ˆÍ1£'ˆu Ê÷	Â Q$f	€$Ë5 @ğU 
 ‘C Î‹
ÎCb÷	 M Î‹ÍğU @
 ğ ğU€ 
 &„
¥¥„
„
ÑB"‘â‹Ã
Å. & 0
 æ M	& 0
 &
şÿ M	0Š
 ¶ &I E SCHEDULER MACRO 
	.MACRO	QSC$	LIST,ERR
	.LIST	MEB 
	.IF NB	LIST
	MOV	 #LIST,-(SP)	 ; PLACE LIST ADDRESS ON STACK 
	.IFF
	# ;	LIST ADDRESS MUST BE SPECIFIED
	.ENDC 
	EMT	 QSKE$ 
	ERRM	ERR 
	.NLIST	MEB 
	.ENDM	QSC$


S5:	 QSC$	LS2,ER2 

	.PAGE 
;	QSCL$	SCHEDULER LIST MACRO
;	THIS MACRO DOES NOT ALLOW THE (X) OPTION

 .MACRO QSCL$	LIST,SOPT,DED,DEH,DEM,ARGE,TSKN,STD,STH,STM,MASK,FLAG 
	.LIST	MEB 
TEMP$	= 0 
	.BOUND
	.IF NB	LIST
LIST:	.WORD	1	; THREAD WORD 
	.WORD	0,0,0	;RESERVED FJ  
	.IF NB	ARGE
	.WORD	ARGE	; ARGUEMENT 
	.ENDC 
	.IF NB	FLAG
	.WORD	FLAG	; FLAG
	.WORD	MASK
	.WORD	0,0	 ;RESERVED FOR SYSTEM
	.ENDC 
	.IFF
	# ;	THE LIST SYMBOL MUST BE DEFINED 
	.ENDC 
	.NLIST	MEB 
	.ENDM	QSCL$ 

S2:	 QSCL$	LS2,S,4,2,4,5,6,2,1,4,26,243
	.PAGE 
;	DQSC$	DEQUEUE SCHEDULER MACRO 

	.MACRO	DQSC$	LIST,ERR
	SPM$	LIST
	EMT	 DQSE$ 
	ERRM	ERR 
	.NLIST	MEB 
	.ENDM	DQSC$ 



S6:	 DQSC$	LS2,ER2 

	.PAGE 
;	NCKP$	MACRO TO PROHIBIT CHECKPOINTING OF THE CALLING TASK 
	.MACK AMIC PRIORITIES 
        .IFF                    ; 
$PS0'XX =       BSIZEX          ; SET NO. BLOCKS- FIXED OR TIME SLICED
        .ENDC                   ; 
        .ENDM   DYTBGE          ; 
; 
        DYTBGE  01,-1, 10., 1   ; 
        DYTBGE  02,-1,  3., 1   ; 
        DYTBGE  03,-1,  3., 1   ; 
        DYTBGE  04,-1,  3., 1   ; 
        DYTBGE  05,-1,  7., 0   ; 
        DYTBGE  06,-1,  2., 0   ; 
; 
        .ENDC                   ; 
$ABMES  =       3               ; NO. OF ABORT MESSAL PC,SCFDE        ; SCAN ALL FDE AND BUILD FILE MOVE TABLE
        BR      CMPR50          ; ERROR RETURN
        TST     FMOVT           ; BRANCH TO EXIT IF FILE
        BEQ     CMPR40          ;   MOVE TABLE IS EMPTY 
        JSR     PC,MOVFL        ; MOVE FILES LISTED IN FILE MOVE TABLE
        BR      CMPR50          ; BR TO EXIT
        TST     OVFLW           ; DID THE FILE MOVE TABLE OVERFLOW
        BNE     CMPR20          ; GO FINISH THE AREA IF IT DID
CMPR40: 
        MOV     #CPMG30,COIOM OR SYSTEM
	.BYTE	0 
	.IF NB	ARGE
	TEMP$	= TEMP$ + 200 
	.ENDC 
	.IF NB	FLAG
	TEMP$	= TEMP$ + 100 
	.ENDC 
	.IF NB	SOPT
	TEMP$	= TEMP$ + 40
	.ENDC 
	.BYTE	TEMP$	; OPTION
	.WORD	TSKN	; TASK NUMBER 
	.WORD	STD*40+STH*100+STM	; START 
	.WORD	DED*40+DEH*100+DEM	; DELTA 
	.IF NB	ARGE
	.WORD	ARGE	; ARGUEMENT 
	.ENDC 
	.IF NB	FLAG
	.WORD	FLAG	; FLAG
	.WORD	MASK
	.WORD	0,0	 ;RESERVED FOR SYSTEM
	.ENDC 
	.IFF
	# ;	THE LIST SYMBOL MUST BE DEFINED 
	.ENDC 
	.NLIST	MEB 
	.ENDM	QSCL$ 

S2:	N RO	NCKP$ 
	.LIST	MEB 
	EMT	NCKE$
	.NLIST	MEB 
	.ENDM	NCKP$ 


	NCKP$ 
	.PAGE 
;	CKP$	MACRO TO ALLOW CHECKPOINTING OF THE CALLING TASK
	.MACRO	CKP$
	.LIST	MEB 
	EMT	CKPE$
	.NLIST	MEB 
	.ENDM	CKP$


	CKP$
	.PAGE 
;	SGLD$	LOAD TASK SEGMENT 
	.MACRO	SGLD$	SGNM,CLER,ERES
	SPM$	SGNM
	SPD$	ERES
	EMT 
	ERRM	CLER
	.NLIST	MEB 
	.ENDM	SGLD$ 

	SGLD$	SG11,ERR2,ERR3
SG11:	.ASCII	/SEGNAM/
	.PAGE 
;	MOVE	N	ARGUMENTS FROM THE CALLING TASKS ADDRESS SPACE INTO	BUF 
	.MACRO	GETA	CLER,BUF,NN O GE BUFFERS
        .IFL    $ABMES          ; $ABMES MUST BE  => 0. 
        XXXXXX                  ;                                       ABRT
        .ENDC 
;                                                                       PSTP
;                THE SYSGEN PARAMETER '$PST CONTROLS THE EXECUTION PATH*PSTP
;                DURING A TASK ERROR.                                   PSTP
;                    = -1 ROS + USER ROUTINES                           PSTP
;                    =  0 ROS     P CL+$BUF     ; SET COMPLETE MESSAGE
        MOV     #45,COIOCL+$NB          ;   ADDRESS AND SIZE
CMPR50: 
        MOV     #CODCL,-(SP)    ; OPEN
        JSR     PC,OPN          ;    THE CONSOLE
        MOV     #COIOCL,-(SP)           ; PRINT COMPRS
        JSR     PC,QIO                  ;   MESSAGE 
        MOV     #CODCL,-(SP)    ; CLOSE 
        JSR     PC,CLS          ;    THE CONSOLE
CMPR60: 
        JSR     PC,EXIT         ; EXIT
        .PAGE 
;*******************************************Q  QSCL$	LS2,S,4,2,4,5,6,2,1,4,26,243
	.PAGE 
;	DQSC$	DEQUEUE SCHEDULER MACRO 

	.MACRO	DQSC$	LIST,ERR
	.LIST	MEB 
	.IF NB	LIST
	MOV	 #LIST,-(SP)	 ; PLACE LIST ADDRESS ON STACK 
	.IFF
	# ;	LIST ADDRESS MUST BE SPECIFIED
	.ENDC 
	EMT	 DQSE$ 
	TST	 (SP)+	; TEST FOR ERROR
	.IF NB	ERR 
	BNE	 ERR	 ; BRANCH TO ERROR PROCESSOR 
	.IFF
	# ;	ERROR BRANCH LOCATION MUST BE SPECIFIED 
	.ENDC 
	.NLIST	MEB 
	.ENDM	DQSC$ 



S6:	 DQSC$	LS2,ER2 

	.PAGE 
;	NCKP$	MACRO TO PROHIBIT CHECKPOINTING OF TR 
	SPM$	NN
	EMT	GETE$
	ERRM	CLER
	.NLIST	MEB 
	.ENDM	GETA

	GETA	ERR2,BU,2 

ERR2:	NOP 
ERR3:	NOP 
	.PAGE 
;	MOVE	N	ARGUMENTS FROM THE	BUF	INTO THE CALLING TASKS RECEIVING ADDRE
	.MACRO	PUTA	CLER,BUF,NN 
	SPM$	NN
	SPD$	BUF 
	EMT	PUTE$
	ERRM	CLER
	.NLIST	MEB 
	.ENDM	PUTA

	PUTA	ERR2,BU,2 
	.PAGE 

 .MACRO IOCL$	IOCL,LUN,BLUN,ERES,NRES,NWD,BUF,EXT,TMD,FUNC,PRIR 
	.LIST	MEB 
	.BOUND
	.IF NB	IOCL
IOCL:	.WORD	1	; THREAD WORD 
	.IFF		; 
	# ;	THE I/O CONTROL LIST SYMBOL MUST BE DEFINES                                       PSTP
;                    = +1 USER                                          PSTP
;                                                                       PSTP
$PST    =       0               ;                                       PSTP
;                                                                       PSTP
        .PAGE 
$CLOCK  =       1               ; TYPE OF CLOCK IN SYSTEM.
;                               ; 0=DEC LINE FREQUENCY(KW11-2)
;             T ******************************
;*                                                                      **
;*      OPINT - OPERATOR INTERFACE ROUTINE                              **
;*                                                                      **
;*      INPUT                                                           **
;*              R0 = DESIGNATED AREA NUMBER                             **
;*                                                                      **
;*      CALL FORMAT   U HE CALLING TASK 
	.MACRO	NCKP$ 
	.LIST	MEB 
	EMT	NCKE$
	.NLIST	MEB 
	.ENDM	NCKP$ 


	NCKP$ 
	.PAGE 
;	CKP$	MACRO TO ALLOW CHECKPOINTING OF THE CALLING TASK
	.MACRO	CKP$
	.LIST	MEB 
	EMT	CKPE$
	.NLIST	MEB 
	.ENDM	CKP$


	CKP$
	.PAGE 
;	SGLD$	LOAD TASK SEGMENT 
	.MACRO	SGLD$	SGNM,CLER,ERES
	.LIST	MEB 
	.IF NB	SGNM
	MOV	 #SGNM,-(SP) 
	.IFF
;	SEGMENT TITLE MUST BE SPECIFIED 
	.ENDC 
	.IF NB	ERES
	MOV	 #ERES,-(SP) 
	.IFF
;	I/O ERROR RETURN LOCATION MUST BE SPECIFIED 
	.ENDC 
	EV D 
	.ENDC 
	.WORD	0	; CALLING TASK'S NUMBER 
	.IF NB	LUN 
	.WORD	LUN	 ; LOGICAL DEVICE NUMBER OR FILE NUMBER
	.IFF
	#;	LOGICAL UNIT NUMBER MUST BE DEFINED AND BE A POSITIVE NUMBER
	.ENDC 
	.BYTE	PRIR	; CALL PRIORITY 
	.BYTE	EXT	 ; EXIT TYPE 
	.WORD	0	; CALL ERROR CODE 
	.WORD	NRES	; POINTER TO NORMAL RESUME LOCATION AFTER I/O 
	.WORD	ERES	; POINTER TO RESUME LOCATION AFTER I/O ERROR
	.BYTE	TMD	 ; TRANSFER MODE 
	.BYTE	FUNC	; FUNCTION
	.WORD	NWD	 ; NUMBER OF WORDS TO BE TRANSMITTED 
	.WORD	W                   ; 1=DDS CLOCKSX 
;FOLLOWING ARE SYSGEN PARAMETERS FOR THE TIMER AND CALENDAR ROUTINES
;  NORMALLY THE BASE PERIOD FOR THE TIMERS IS THE INTERRUPT PERIOD, AND 
;  IF THAT PERIOD IS DESIRED FOR USE BY ANY TIMER MODULE, "RESO" MUST BE
;  SET TO 1, AND THAT RESOLUTION (ZERO) SPECIFIED BY THOSE MODULES. 
;  IF IT IS DESIRED TO MAKE THE BASE PERIOD COARSER THAN THE INTERRUPT
;  PERIOD, "$TMBAS" MUST BE SET TO THE DESIRED RATIO OF BASE PERIOD TO
;  INTERRUPT PERIOD.
$TMBAS  =       0   X                                                   **
;*      JSR     PC,OPINT                                                **
;*      BR      ERROR           ; ERROR RETURN                          **
;*                              ; NORMAL RETURN                         **
;*                                                                      **
;*************************************************************************
OPINT:  MOV     R0,AREAN        ; SAVE PASSED ARGUEMENT 
        MOV     #CY MT 
	ERRM	CLER
	.NLIST	MEB 
	.ENDM	SGLD$ 

	SGLD$	SG11,ERR2,ERR3
SG11:	.ASCII	/SEGNAM/
	.PAGE 
;	MOVE	N	ARGUMENTS FROM THE CALLING TASKS ADDRESS SPACE INTO	BUF 
	.MACRO	GETA	CLER,BUF,NN 
	.LIST	MEB 
	.IF NB	NN
	MOV	 #NN,-(SP)	; PLACE NUMBER OF ARG ON STACK
	.IFF
	# ;	NUMBER OF ARGUMENTS MUST BE SPECIFIED 
	.ENDC 
	.IF NB	BUF 
	MOV	 #BUF,-(SP)	; PLACE BUFFER ADDRESS ON STACK 
	.IFF
	# ;	BUFFER ADDRESS IS A REQUIRED PARAMETER
	.ENDC 
	EMT	GETE$
	ERRM	CLER
	.NLIST	MEB 
	.ENDM	GETA

Z 0	; ACTUAL NUMBER OF WORDS TRANSMITTED
	.WORD	BUF	 ; POINTER TO I/O BUFFER 
	.WORD	0	; SYSTEM VIRTUAL ADDRESS OF I/O BUFFER
	.WORD	0	; KPAR6 STORAGE 
	.BYTE	0	; ACCESS CONTROL
	.BYTE	0	; AREA NUMBER 
	.IF NB	BLUN
	.WORD	BLUN	; BACKUP LOGICAL DEVICE NUMBER OR FILE NUMBER 
	.IFF
	#;	BACKUP LOGICAL UNIT NUMBER MUST BE DEFINED AND BE A POSITIVE NUMBER 
	.ENDC 
	.NLIST	MEB 
	.ENDM	IOCL$ 

AA:	 IOCL$	TD,3,4,EA,NA,10,BU,2

	.PAGE 
;	I/O CONTROL LIST MACRO FOR ROS3.1 

 .MACRO IOCLF$	IOCL,LUN,B[             ;DE-SELECT ALTERNATE BASE PERIOD OPTION 
;  THE FOLLOWING PARAMETERS SPECIFY THE MULTIPLIERS THAT WILL BE LOADED 
;  INTO THE RESOLUTION COUNTER TABLES FOR DETERMINING THE PERIOD OF EACH
;  RESOULTION.  THE PERIOD OF A GIVEN RESOLUTION LEVEL DEPENDS ON ALL 
;  THE PRECEDING LEVELS (WITH LOWER NUMBERS), WHICH ACT AS SUCCESSIVE 
;  MULTIPLIERS IN COUNTING TO THE GIVEN RESOLUTION LEVEL. 
;  THUS, FOR "RES4", ITS PERIOD WOULD BE: 
;  RES4*RES3*RES2*RES1*RES0     ---  IN UNITS OF THE BASE PE\ PMG10,COIOCL+$BUF     ; SET ERROR MESSAGE 
        MOV     #36,COIOCL+$NB          ;   ADDRESS AND SIZE
        TST     R0              ; TEST INPUT PARAMETER
        BLT     OPIN20          ;  TO SEE IF IT IS
        CMP     R0,#$ARMAX      ;    A DEFINED
        BGT     OPIN20          ;      AREA 
        MOV     #CPMG20,COIOCL+$BUF     ; SET ERROR MESSAGE 
        MOV     #46,COIOCL+$NB          ;   ADDRESS AND SIZE
        MOV     #NCTAB,R1       ; GET ADDRESS OF TABLE
        MOV     (R1)+,] 	GETA	ERR2,BU,2 

ERR2:	NOP 
ERR3:	NOP 
	.PAGE 
;	MOVE	N	ARGUMENTS FROM THE	BUF	INTO THE CALLING TASKS RECEIVING ADDRE
	.MACRO	PUTA	CLER,BUF,NN 
	.LIST	MEB 
	.IF NB	NN
	MOV	 #NN,-(SP)	; PLACE NUMBER OF ARG ON STACK
	.IFF
	# ;	NUMBER OF ARGUMENTS MUST BE SPECIFIED 
	.ENDC 
	.IF NB	BUF 
	MOV	 #BUF,-(SP)
	.IFF
	# ;	BUFFER ADDRESS IS A REQUIRED PARAMETER
	.ENDC 
	EMT	PUTE$
	ERRM	CLER
	.NLIST	MEB 
	.ENDM	PUTA

	PUTA	ERR2,BU,2 
	.PAGE 

 .MACRO IOCL$	IOCL,LUN,BLUN,ERES,NRES,NWD,BUF,EXT^ LUN,ERES,NRES,NWD,BUF,EXT,TMD,FUNC,PRIR,REC 
	.LIST	MEB 
	.BOUND
	.IF NB	IOCL
IOCL:	.WORD	1	; THREAD WORD 
	.IFF		; 
	# ;	THE I/O CONTROL LIST SYMBOL MUST BE DEFINED 
	.ENDC 
	.WORD	0	; CALLING TASK'S NUMBER 
	.IF NB	LUN 
	.WORD	LUN	 ; LOGICAL DEVICE NUMBER OR FILE NUMBER
	.IFF
	#;	LOGICAL UNIT NUMBER MUST BE DEFINED AND BE A POSITIVE NUMBER
	.ENDC 
	.BYTE	PRIR	; CALL PRIORITY 
	.BYTE	EXT	 ; EXIT TYPE 
	.WORD	0	; CALL ERROR CODE 
	.WORD	NRES	; POINTER TO NORMAL RESUME LOCATION AFTER I/O _ RIOD
RES0    =       1               ; 0.01   SEC
RES1    =       10.             ; 0.1 SEC 
RES2    =       2               ; 0.2 SEC 
RES3    =       5               ; 1.0 SEC 
RES4    =       5               ; 5.0 SEC 
RES5    =       12.             ; 60 SEC
;  IN SYSTEMS WHERE THE BASE PERIOD IS GREATER THAN ONE MILLISECOND,
;  "MSECR" WILL NECESSARILY HAVE A PERIOD GREATER THAN ONE MILLISECOND. 
MSECR   =       0               ;MAX RESOLUTION: #0 AT 10 MILLISECONDS
SECR    =       3       ` R2        ; GET # OF ENTRIES IN TABLE 
OPIN10: CMP     R0,(R1)+        ; COMPARE AREA MUMBERS
        BEQ     OPIN20          ; ERROR BRANCH IF AREA IS NOT COMPRESSABLE
        SOB     R2,OPIN10       ; BRANCH IF NOT DONE
        ADD     #2,(SP)         ; INC RETURN POINTER TO BY PASS ERROR RETURN
OPIN20: 
        RTS     PC              ; RETURN
        .PAGE 
;*************************************************************************
;*                                                            a ,TMD,FUNC,PRIR 
	.LIST	MEB 
	.BOUND
	.IF NB	IOCL
IOCL:	.WORD	1	; THREAD WORD 
	.IFF		; 
	# ;	THE I/O CONTROL LIST SYMBOL MUST BE DEFINED 
	.ENDC 
	.WORD	0	; CALLING TASK'S NUMBER 
	.IF NB	LUN 
	.WORD	LUN	 ; LOGICAL DEVICE NUMBER OR FILE NUMBER
	.IFF
	#;	LOGICAL UNIT NUMBER MUST BE DEFINED AND BE A POSITIVE NUMBER
	.ENDC 
	.BYTE	PRIR	; CALL PRIORITY 
	.BYTE	EXT	 ; EXIT TYPE 
	.WORD	0	; CALL ERROR CODE 
	.WORD	NRES	; POINTER TO NORMAL RESUME LOCATION AFTER I/O 
	.WORD	ERES	; POINTER TO RESb 
	.WORD	ERES	; POINTER TO RESUME LOCATION AFTER I/O ERROR
	.BYTE	TMD	 ; TRANSFER MODE 
	.BYTE	FUNC	; FUNCTION
	.WORD	NWD	 ; NUMBER OF WORDS TO BE TRANSMITTED 
	.WORD	0	; ACTUAL NUMBER OF WORDS TRANSMITTED
	.WORD	BUF	 ; POINTER TO I/O BUFFER 
	.WORD	0	; SYSTEM VIRTUAL ADDRESS OF I/O BUFFER
	.WORD	0	; KPAR6 STORAGE 
	.IF NB	BLUN
	.WORD	BLUN	; BACKUP LOGICAL DEVICE NUMBER OR FILE NUMBER 
	.IFF
	#;	BACKUP LOGICAL UNIT NUMBER MUST BE DEFINED AND BE A POSITIVE NUMBER 
	.ENDC 
	.WORD	REC	 ; LOGICAL c         ; 1 SECOND RESOULUTION
$5SECR  =       4               ; 5 SEC RESOLUTION
TRES    =       SECR            ; FOR TIME-SLICE WATCH-DOG IN RPOM
$NRES   =       6               ; NUMBER OF RESOLUTIONS IN SYSTEM 
        .IFLE   $NRES 
        XXXXXXXX                ;$NRES MUST BE FROM 1 TO 16 
        .ENDC 
        .IFG    $NRES-16. 
        XXXXXXXX                ;COME ON! MUST BE LESS THAN 17
        .ENDC 
;  THE BASE PERIOD FOR THE TIME-OF-DAY CLOCK, ABORT, AND TIME-SLICE IS
; NORMALd           **
;*      SCFDE - SCAN FILE DIRECTORY ENTRIES                             **
;*                                                                      **
;*      THIS ROUTINE WILL SCAN ALL FILE DIRECTORY ENTRIES IN THE FILE   **
;*      SYSTEM AND BUILD THE FILE MOVE TABLE                            **
;*                                                                      **
;*      INPUT                                                           **
;*              R0 = DESIGNATED AREA NUMe UME LOCATION AFTER I/O ERROR
	.BYTE	TMD	 ; TRANSFER MODE 
	.BYTE	FUNC	; FUNCTION
	.WORD	NWD	 ; NUMBER OF WORDS TO BE TRANSMITTED 
	.WORD	0	; ACTUAL NUMBER OF WORDS TRANSMITTED
	.WORD	BUF	 ; POINTER TO I/O BUFFER 
	.WORD	0	; SYSTEM VIRTUAL ADDRESS OF I/O BUFFER
	.WORD	0	; KPAR6 STORAGE 
	.BYTE	0	; ACCESS CONTROL
	.BYTE	0	; AREA NUMBER 
	.IF NB	BLUN
	.WORD	BLUN	; BACKUP LOGICAL DEVICE NUMBER OR FILE NUMBER 
	.IFF
	#;	BACKUP LOGICAL UNIT NUMBER MUST BE DEFINED AND BE A POSITIVE NUMBER 
	.ENDC f RECORD NUMBER 
	.BYTE	0	; AREA NUMBER 
	.BYTE	0	; NUMBER OF LOGICAL RECORDS TO BE TRANSFERRED 
	.WORD	0	; CURRENT RECORD BLOCK NUMBER 
	.WORD	0	; CURRENT RECORD LENGTH 
	.WORD	0	; PREVIOUS RECORD BLOCK NUMBER
	.WORD	0	; PREVIOUS RECORD LENGTH
	.WORD	0	; NEXT RECORD BLOCK NUMBER
	.WORD	0	; NEXT RECORD LENGTH
	.NLIST	MEB 
	.ENDM	IOCLF$

	IOCLF$	TA,3,4,EA,NA,10,BU,2,3,4,24 
	.PAGE 
;	OPEN CALL MACRO FOR ROS3.1
 .MACRO OPN$	IOCL,CLER,ERES,NRES,ACCS
	.LIST	MEB 
	.IF NB	IOCL
	.IF NB	CLER
	.IFg LY THE INTERRUPT PERIOD, AS SPECIFIED BY "TICRES".
;  IF A MULTIPLIER FOR THIS INTERRUPT IS DESIRED TO PRODUCE A COARSER 
;  BASE PERIOD, USE THE PARAMETER "$ABMPL" TO SPECIFY THE RATIO DESIRED.
TICRES  =       10.             ;T-O-D CLOCK TICKS-PER-SECOND 
$ABMPL  =       0               ;NO T-O-D CLOCK BASE MULTIPLIER 
$GTICS  =       0               ; IF 0, GTIME RETURNS HOURS, MIN., SEC. 
                                ; IF 1, ALSO RETURNS # MILLSECONDS
TIMINT  =       160             ; INTERRh BER                             **
;*                                                                      **
;*      CALL FORMAT                                                     **
;*      JSR     PC,SCFDE                                                **
;*      BR      ERROR           ; ERROR RETURN                          **
;*                              ; NORMAL RETURN                         **
;*                                                                      **
;*****************i 
	.NLIST	MEB 
	.ENDM	IOCL$ 

AA:	 IOCL$	TD,3,4,EA,NA,10,BU,2

	.PAGE 
;	I/O CONTROL LIST MACRO FOR ROS3.1 

 .MACRO IOCLF$	IOCL,LUN,BLUN,ERES,NRES,NWD,BUF,EXT,TMD,FUNC,PRIR,REC 
	.LIST	MEB 
	.BOUND
	.IF NB	IOCL
IOCL:	.WORD	1	; THREAD WORD 
	.IFF		; 
	# ;	THE I/O CONTROL LIST SYMBOL MUST BE DEFINED 
	.ENDC 
	.WORD	0	; CALLING TASK'S NUMBER 
	.IF NB	LUN 
	.WORD	LUN	 ; LOGICAL DEVICE NUMBER OR FILE NUMBER
	.IFF
	#;	LOGICAL UNIT NUMBER MUST BE DEFINED AND BE A POSITIVE NUMBER
	.ENDC 
	.Bj  NB	NRES
	MOV	 #NRES,IOCL+$NR	; SET NORMAL RESUME LOCATION
	.ENDC 
	.IF NB	ERES
	MOV	 #ERES,IOCL+$ER	; SET ERROR RESUME LOCATION 
	.ENDC 
	.IF NB	ACCS
	MOV	 #ACCS,IOCL+$ACC ; SET ACCESS REQUESTED
	.ENDC 
	MOV	 #2,IOCL+$EX	 ; SET CALL TYPE TO SEQUENTIAL 
	MOV	 #IOCL,-(SP) 
	EMT	 OPNE$ 
	MOV	 (SP)+,IOCL+$ERWD	; SAVE RETURNED CODE IN LIST
	BEQ	 . + 4 
	JMP	 CLER	; JUMP TO ERROR ROUTINE 
	.IFF
	# ;	THE FIRST TWO MACRO PARAMETERS MUST BE DEFINED
	.ENDC 
	.IFF
	# ;	THE FIRST TWO MACRO PARAMETk UPT FOR THE HIGH SPEED CLOCK. 
TODINT  =       164             ; INTERRUPT FOR THE TIME OF DAY CLOCK.
STLINT  =       170             ; INTERRUPT FOR THE STALL ALARM.
STLREG  =       167000          ;ADDRESS FOR STALL ALARM RESET
        .IFNZ   $CLOCK
CLKENB  =       167002          ;ADDRESS FOR ENABLE OF CLOCKS 
TIMBIT  =       4               ; BIT TO TUN ON THE HIGH SPEED CLOCK. 
TODBIT  =       10              ; BIT TO TURN ON THE TIME OF DAY CLOCK
STLBIT  =       0               ;BIT TO ENABl ********************************************************
SCFDE:  CLR     OVFLW           ; CLEAR OVERFLOW FLAG 
        MOV     #$FMTSZ,R1      ; GET # OF ENTRIES IN FILE MOVE TABLE 
        MOV     #FMOVT,R2       ; GET ADDRESS OF FILE MOVE TABLE
SCFD10: CLR     (R2)+           ; CLEAR FILE ID 
        MOV     #177777,(R2)+   ; INITIALIZE STARTING SECTOR NUMBER 
        SOB     R1,SCFD10       ; BRANCH IF NOT DONE
        MOV     #SCFD90,DCDCL+$ER       ; SET FILE I/O ERROR
        MOV     #SCFD9m YTE	PRIR	; CALL PRIORITY 
	.BYTE	EXT	 ; EXIT TYPE 
	.WORD	0	; CALL ERROR CODE 
	.WORD	NRES	; POINTER TO NORMAL RESUME LOCATION AFTER I/O 
	.WORD	ERES	; POINTER TO RESUME LOCATION AFTER I/O ERROR
	.BYTE	TMD	 ; TRANSFER MODE 
	.BYTE	FUNC	; FUNCTION
	.WORD	NWD	 ; NUMBER OF WORDS TO BE TRANSMITTED 
	.WORD	0	; ACTUAL NUMBER OF WORDS TRANSMITTED
	.WORD	BUF	 ; POINTER TO I/O BUFFER 
	.WORD	0	; SYSTEM VIRTUAL ADDRESS OF I/O BUFFER
	.WORD	0	; KPAR6 STORAGE 
	.IF NB	BLUN
	.WORD	BLUN	; BACKUP LOGICAL DEn ERS MUST BE DEFINED
	.ENDC 
	.NLIST	MEB 
	.ENDM	OPN$

START:	OPN$	TA,CALER,EORS,NRRS,3

	.PAGE 
;	CLOSE CALL MACRO FOR ROS3.1 
 .MACRO CLS$	IOCL,CLER,ERES,NRES 
	.LIST	MEB 
	.IF NB	IOCL
	.IF NB	CLER
	.IF NB	NRES
	MOV	 #NRES,IOCL+$NR	; SET NORMAL RESUME LOCATION
	.ENDC 
	.IF NB	ERES
	MOV	 #ERES,IOCL+$ER	; SET ERROR RESUME LOCATION 
	.ENDC 
	MOV	 #IOCL,-(SP)	 ; PLACE LIST ADDRESS ON STACK 
	EMT	 CLSE$ 
	MOV	 (SP)+,IOCL+$ERWD	; SAVE RETURNED CODE IN LIST
	BEQ	 . + 4 
	JMP	 CLER	; JUMP o LE STALL ALARM INTERRUPT
        .ENDC 
        .IFZ    $CLOCK
CLKENB  =       177546          ; ADDRESS OF DEC LINE CLOCK             4/8/73
TODBIT  =       0               ; 
TIMBIT  =       100             ;CLOCK ENABLE BIT 
STLBIT  =       0               ; 
TIMINT  =       100             ; DEC LINE CLOCK TRANSFER VECTOR ADD. 
        .ENDC 
$TMSLC  =       0               ; 1 IFF TIME SLICING IN SYSTEM
        .PAGE 
$MTAPE  =       1               ; IF = 1, MAGTAPES IN SYSTEM
        .Ip 0,DCIOCL+$ER      ;   RETURN ADDRESS
        MOV     #DCDCL,-(SP)    ; OPEN THE FDE
        JSR     PC,OPN          ;   FILE
        MOV     #SCFD80,DCDCL+$ER       ; SET FILE I/O ERROR
        MOV     #SCFD80,DCIOCL+$ER      ;   RETURN ADDRESS
        CLR     R1              ; CLEAR RECORD NUMBER 
SCFD20: INC     R1              ; INC RECORD NUMBER 
        CMP     R1,$MXDID-$LUNMX; HAVE ALL FDE IN SYSTEM BEEN CHECKED 
        BGT     SCFD80          ; BRANCH IF THEY HAVE 
        MOV     R1,R3 q VICE NUMBER OR FILE NUMBER 
	.IFF
	#;	BACKUP LOGICAL UNIT NUMBER MUST BE DEFINED AND BE A POSITIVE NUMBER 
	.ENDC 
	.WORD	REC	 ; LOGICAL RECORD NUMBER 
	.BYTE	0	; AREA NUMBER 
	.BYTE	0	; NUMBER OF LOGICAL RECORDS TO BE TRANSFERRED 
	.WORD	0	; CURRENT RECORD BLOCK NUMBER 
	.WORD	0	; CURRENT RECORD LENGTH 
	.WORD	0	; PREVIOUS RECORD BLOCK NUMBER
	.WORD	0	; PREVIOUS RECORD LENGTH
	.WORD	0	; NEXT RECORD BLOCK NUMBER
	.WORD	0	; NEXT RECORD LENGTH
	.NLIST	MEB 
	.ENDM	IOCLF$

	IOCLF$	TA,3,4,EA,NAr TO ERROR ROUTINE 
	.IFF
	# ;	THE FIRST TWO MACRO PARAMETERS MUST BE DEFINED
	.ENDC 
	.IFF
	# ;	THE FIRST TWO MACRO PARAMETERS MUST BE DEFINED
	.ENDC 
	.NLIST	MEB 
	.ENDM	CLS$

AJ:	 CLS$	TA,CALER,EORS,NRRS
	.PAGE 
;	INPUT CALL MACRO FOR ROS3.1 
 .MACRO INP$	IOCL,CLER,LUN,BLUN,ERES,NRES,NWD,BUF,EXT,MOD,PRI,REC
	.LIST	MEB 
	.IF NB	IOCL
	.IF NB	CLER
	.IF NB	LUN 
	MOV	 #LUN,IOCL+$LUN	; SET LOGICAL UNIT NUMBER 
	.ENDC 
	.IF NB BLUN 
	MOV	 #BLUN,IOCL+$BLU ; SET BACKUP LOGICAL UNIT NUMBER
	.s F NZ  $MTAPE          ; ONLY IF HAVE MAGTAPES 
$DATUM  =       0               ; TYPE OF MAGTAPE CONTROLLER
                                ; IF 0, PEC DRIVES (800 BPI.) 
                                ; IF 1, DATUM DRIVES (1600 BPI.)
        .ENDC 
; 
$DTAPE  =       0               ; DECTAPE OPTION (0 IF NOT IN SYS.) 
; 
NDISCS  =       6               ; NUMBER OF DISCS IN SYSTEM 
; 
$DDSDC  =       1               ; USE DDS DICS
; 
ACTSIZ  =       1               ; MAX. NO. OF ENTRIES IN At           ; COPY FILE ID
        CLR     R2              ; CLEAR FOR DIVIDE
        SUB     #$LUNMX+1,R3    ; SUBTRACT OFF DEVICE NUMBER
        DIV     #16.,R2         ; R2 = OFFSET, R3 = BIT NUMBER
        ASL     R2              ; MAKE R2 A WORD INDEX
        CLR     R4              ; SET BIT 0 
        INC     R4              ;   OF R4 
        ASH     R3,R4           ; LEFT SHIFT BIT0 OF R4 BY BIT NUMBER 
        BIT     R4,CFBITM(R2)   ; DOES THE FILE EXIST 
        BEQ     SCFD20          u ,10,BU,2,3,4,24 
	.PAGE 
;	OPEN CALL MACRO FOR ROS3.1
 .MACRO OPN$	IOCL,CLER,ERES,NRES,ACCS
	.LIST	MEB 
	.IF NB	IOCL
	.IF NB	CLER
	.IF NB	NRES
	MOV	 #NRES,IOCL+$NR	; SET NORMAL RESUME LOCATION
	.ENDC 
	.IF NB	ERES
	MOV	 #ERES,IOCL+$ER	; SET ERROR RESUME LOCATION 
	.ENDC 
	.IF NB	ACCS
	MOV	 #ACCS,IOCL+$ACC ; SET ACCESS REQUESTED
	.ENDC 
	MOV	 #2,IOCL+$EX	 ; SET CALL TYPE TO SEQUENTIAL 
	MOV	 #IOCL,-(SP) 
	EMT	 OPNE$ 
	MOV	 (SP)+,IOCL+$ERWD	; SAVE RETURNED CODE IN LIST
	BEQ	 . + 4 
	JMP