€€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 ; PREVIOUCT = $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)+ .IFLENGTH $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 $LNDC 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 ; THREAUNMX + 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,5D 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 OF3PRESSABLE 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 4DED 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 5GU 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 ** ;* GBLOCK ; $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 DYNEN .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 ; QUEUFRRM 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ˆˆˆ€ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ€ˆˆˆADD7B €B Cf}.Á›kQPiğ*²›|(a {zú›ër@Î8zqÓ›%ãf{Ö¶)Ì›$Dÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿»›™ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅaå €Í‹æÄ,L ƒÖ B8w&Ä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Š ¶&IE 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 .MACKAMIC 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 MESSALPC,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,COIOMOR 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: NRO 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 OGE 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 PCL+$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 UHE 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 EVD .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 #CYMT 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 Z0 ; 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 NUMeUME 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 fRECORD 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 .IFgLY 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 ; INTERRhBER ** ;* ** ;* 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 PARAMETkUPT 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 #SCFD9mYTE 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 DEnERS 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 oLE 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 .Ip0,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 qVICE 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,NArTO 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 .sF 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