; TSKNTR.S12 ; TSKNTR.S11 ; TSKNTR.S10 8-AUG-73 ; TSKNTR.S09 6-AUG-73 ; TSKNTR.S08 2-AUG-73 ; TSKNTR.S07 ; TSKNTR.SO6 18-JUL-73 ; TSKNTR.S05 16-JUL-73 ; TSKNTR.S04 13-JUL-73 ; TSKNTR.S03 12-JUL-73 ; TSKNTR.S02 10-JUL-73 .TITLE TSKNTR TASK ENTER ;************************************************************************ ;* ; UPDATE 25 AUG 73 ROS3.SYS ; UPDATE 4 AUG 73 ROS3.SYS ; UPDATE 15 JUNE 73 ROS3.SYS ; UPDATE 12 JUN 73 ROS3.SYS ; UPDATE 11 JUN 73 ROS3.SYS ; UPDATE 14 MAY 73 ROS3.SYS ; UPDATE 5 MAY 73 ROS3.SYS ; UPDATE 9/29/72 ROS3.SYS ; UPDATE 09.20.72 ;ROS3.SYS ; UPDATE 8/23/72 ROS3.SYS ; UPDATE 8/17/72 ROS3.SYS ; UPDATE 8/15/72 ROS3.SYS ; ; TSKNTR.S13 2-SEPT-73 ; TSKNTR.S12 ; TSKNTR.S11 ; TSKNTR.S10 8-AUG-73 ; TSKNTR.S09 6-AUG-73 ; TSKNTR.S08 2-AUG-73 ; TSKNTR.S07 ; TSKNTR.SO6 18-JUL-73 ; TSKNTR.S05 16-JUL-73 ; TSKNTR.S04 13-JUL-73 ; TSKNTR.S03 12-JUL-73 ; TSKNTR.S02 10-JUL-73 .TITLE TSKNTR TASK ENTER ;************************************************************************ ;* * ;* T A S K E N T E R * ;* * ;* TASK ENTER WILL INSERT THE FOLLOWING ITEMS IN THE HEADER OF A * ;* LOAD MODULE * ;* 1 TASK NUMBER * ;* 2 PRIORITY * ;* 3 TASK AC UPDATE 8/1/72 ROS3.SYS ; UPDATE 7/31/72 ROS3.SYS ; UPDATE 7/28/72 ROS3.SYS ; UPDATE 07.21.72 ROS3.SYS .TITLE ROS3.SYS - ROS III SYSTEM 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 * ;* T A S K E N T E R * ;* * ;* TASK ENTER WILL INSERT THE FOLLOWING ITEMS IN THE HEADER OF A * ;* LOAD MODULE * ;* 1 TASK NUMBER * ;* 2 PRIORITY CESS STATUS * ;* 4 FILE NAME * ;* 5 FILE IDENTIFICATION NUMBER * ;* * ;* IN ADDITION TO THE ABOVE, THE FOLLOWING OPTIONAL ENTRIES MAY * ;* BE SET * ;* 1 MAXIMUM TASK RUN TIME * ;*  ;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 = 1 ;1 = ASSEMBLER IS IN SYSTEM .IFG $KT11C-1 XXXXXXXX .ENDC $DELAY = 2 ;INDICATES * ;* 2 TASK PRIORITY * ;* 3 TASK ACCESS STATUS * ;* 4 FILE NAME * ;* 5 FILE IDENTIFICATION NUMBER * ;* 6 FILE TYPE * ;* 7 TIME LIMIT * ;* 8 SET PAR7 & PDR7 T 2 TPDR7 & TPAR7 SET TO THE DEVICE PAGE * ;* * ;* AN EXAMPLE OF AN INPUT CARD IS * ;* ACC=BCH; DEV; NAM=LDFILE; PRI=2; TIM=180; TSK=12;END; * ;* THE 'END;' COMMAND MUST BE THE LAST COMMAND * ;* THE OTHER COMMANDS MAY BE IN ANY ORDER AND ON MORE THAN ONE CARD* ;********************************************************* 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 ; AC1 O DEVICE PAGE * ;* * ;* IN ADDITION TO THE ABOVE, THE FOLLOWING OPTIONAL ENTRIES MAY * ;* BE SET * ;* 1 MAXIMUM TASK RUN TIME * ;* 2 TPDR7 & TPAR7 SET TO THE DEVICE PAGE * ;* * ;* AN EXA*************** .REF PPTAB,TPRTY,TSTAT,IOSTAT,IFD,HEADER,TASKS,$TKFLS .REF BSIZE,BT1NO$ ; ; THE SWITCH REGISTER MUST BE SET AS FOLLOWS ; BATCH TASK = 0 ; BACKGROUND TASK = 1 ; FOREGROUND OR SYSTEM = 2 ; THE ABOVE ARE ONLY TEMPORARY UNTIL KEY SWITCHES ARE INSTALLED TMDEB = 1 ; TEMPORARY DEBUG PARAMETER ; ; ; ROSLNK ERROR CODES SET IN R3 BEFORE GOING TO RLKER ; ; CODE DEFINITION PRINTS ON  = %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 ; .ENDC PS MPLE OF AN INPUT CARD IS * ;* ACC=BCH; DEV; NAM=LDFILE; PRI=2; TIM=180; TSK=12;END; * ;* THE 'END;' COMMAND MUST BE THE LAST COMMAND * ;* THE OTHER COMMANDS MAY BE IN ANY ORDER AND ON MORE THAN ONE CARD* ;* * ;* PROGRAMMER 67 ;* * ;*******************************************TTY ; 60 SUCCESSFUL 0 ; 61 BAD COMMAND 1 ; 62 BAD ACCESS CODE 2 ; 63 NO END COMMAND 3 ; 64 DISC OR BFUP ERROR 4 ; 65 PROIRITY ERROR 5 ; 66 BAD TIME LIMIT 6 ; 67 BAD TASK NUMBER 7 ; 70 ILLEGAL SYS COMMAND 8 ; 71 MISSING DELIMITER 9 ; 101 ILLEGAL COM COMMAND A ; 102 DE = 177776 ; $DEBUG = 1 ; ROS DEBUG SWITCH $CORAL = 0 ; CORE ALLOCATION ; =0 SOFTWARE ; =1 HARDWARE .PAGE ; ; TASK CONTROL SYSGEN EQUATE CARDS ; NPRIOR = 10. ; NO. OF SOFTWARE PRIORITY LEVELS PRIBKG = NPRIOR ; PRIORITY OF BACKGROUND $BATCH = 1 ; BATCH OPTION .IFLE NPRIOR ; ***************************** .REF PPTAB,TPRTY,TSTAT,IOSTAT,IFD,HEADER,TASKS,$TKFLS .REF BSIZE,BT1NO$ .DEF TSKNHD ; ; THE SWITCH REGISTER MUST BE SET AS FOLLOWS ; BATCH TASK = 0 ; BACKGROUND TASK = 1 ; FOREGROUND OR SYSTEM = 2 ; THE ABOVE ARE ONLY TEMPORARY UNTIL KEY SWITCHES ARE INSTALLED TMDEB = 1 ; TEMPORARY DEBUG PARAMETER ; ; ; ROSLNK ERROR CODES SET IN R3 BEFORE GOING TO RLKER ; ; CODEVICE PAGE UNAVAILABLE B ; 103 PROGRAM SIZE TOO LARGE C ; 104 ILLEGAL FILE I.D. D ; 105 FILE ERROR E ; 106 BAD SYS COMMAND F ; 107 BAD COM COMMAND G ; ; ROS3 INPUT / OUTPUT CONTROL BLOCK MACRO .MACRO IOCBM DEV,EXTY,EXIT,ETSK,LEV,DATB .LIST MEB .WORD 1 .BYTE DEV ;LOGICAL DEVICE NUMBER .BYTE EXTY ;EXIT TYPE .WORD  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 ;FIRST OVERLAY TASK NUMBER OVRLAY = 1 ;SYSTEM OVERLAY OPTION (1 = OVERLAY) DEFINITION PRINTS ON TTY ; 60 SUCCESSFUL 0 ; 61 BAD COMMAND 1 ; 62 BAD ACCESS CODE 2 ; 63 NO END COMMAND 3 ; 64 DISC OR BFUP ERROR 4 ; 65 PROIRITY ERROR 5 ; 66 BAD TIME LIMIT 6 ; 67 BAD TASK NUMBER 7 ; 70 ILLEGAL SYS COMMAND 8 ; 71 MISSING DELIMITER 9 ; 101 ILLEGAL !EXIT ;I/O COMPLET .BYTE ETSK ;ERROR TASK .BYTE LEV ;PRIORITY LEVEL .WORD 0,0 ;ERROR PARA / SYSTEM .WORD DATB ;DATA BUFFER ADDRESS .WORD 0,0 ; SYSTEM .NLIST MEB .ENDM ; ; ROS 3 TASK HEADER EQUATES THRD = 0 ; THREAD WORD TASK = 2 ; TASK NUMBER TACC = 4 ; TASK ACCESS STATUS PRIR = 5 ; PRIORITY " ;0 = NO OVERLAY, 1 = OVERLAY .IFNZ OVRLAY ; MAXOVR = 140 ; 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 OVERLAYS .IFLE MXTASK ; XXXXXXXX ;MXTASK MUST BE GREATER#COM COMMAND A ; 102 DEVICE PAGE UNAVAILABLE B ; 103 PROGRAM SIZE TOO LARGE C ; 104 ILLEGAL FILE I.D. D ; 105 FILE ERROR E ; 106 BAD SYS COMMAND F ; 107 BAD COM COMMAND G ; ; ROS3 INPUT / OUTPUT CONTROL BLOCK MACRO .MACRO IOCBM DEV,EXTY,EXIT,ETSK,LEV,DATB .LIST MEB .WORD 1 .BYTE DEV ;LOGICAL DEVICE NUMBER .BYTE EXTY %ENTY = 6 ; ENTRY POINT MTIM = 10 ; MAXIMUM RUN TIME CTIM = 12 ; CURRENT TIME STSZ = 14 ; STACK SIZE STAT = 16 ; CPU STATUS STPT = 20 ; STACK POINTER ARG = 22 TPDR = 24 ; PAGE DESCRIPTOR REGISTER TPDR7 = 42 TPAR = 44 ; PAGE ADDRESS REGISTER TPAR7 = 62 PRGH = 64 ; PROGRAM HI BTCH = 66 ; BATCH DBUG = 70 ; DEBUG ; ; ROS 3 I/O CO& 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 SYSTEM TASK'S FILE NUMBERS. 6/15/73 ; $TMRNO = 2. ; TIMER QUEUE PROC' ;EXIT TYPE .WORD EXIT ;I/O COMPLET .BYTE ETSK ;ERROR TASK .BYTE LEV ;PRIORITY LEVEL .WORD 0,0 ;ERROR PARA / SYSTEM .WORD DATB ;DATA BUFFER ADDRESS .WORD 0,0 ; SYSTEM .NLIST MEB .ENDM ; ; ROS 3 TASK HEADER EQUATES THRD = 0 ; THREAD WORD TASK = 2 ; TASK NUMBER TACC = 4 ; TASK ACCESS STATUS)NTROL BLOCK EQUATES THRD = 0 ; THREAD WORD DEVN = 2 ; DEVICE NUMBER ETYP = 3 ; EXIT TYPE EXIT = 4 ; EXIT ADDRESS LEVL = 7 ; PRIORITY LEVEL EROR = 10 ; ERROR CODE DATA = 14 ; DATA BUFFER ; ; ASCII CHARACTER CODES EQSN =075 ; EQUAL SIGN SCOL =073 ; SEMI-COLON COMA =054 ; COMMA RPAR =051 ; RIGHT PARENTHESIS SPAC =040 *ESSOR $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 $RASNO = MXTASK+6. ; ROS ASSEMBLER TASK NUMBER $TKENO = MXTASK+7. ; ROS + PRIR = 5 ; PRIORITY ENTY = 6 ; ENTRY POINT MTIM = 10 ; MAXIMUM RUN TIME CTIM = 12 ; CURRENT TIME STSZ = 14 ; STACK SIZE STAT = 16 ; CPU STATUS STPT = 20 ; STACK POINTER ARG = 22 TPDR = 24 ; PAGE DESCRIPTOR REGISTER TPDR7 = 42 TPAR = 44 ; PAGE ADDRESS REGISTER TPAR7 = 62 PRGH = 64 ; PROGRAM HI BTCH = 66 ; BATCH DBUG = 70 - ; SPACE LPAR =050 ; LEFT PARENTHESIS DOLR = 44 ; DOLLAR SIGN CODE SWR = 177570 ; SWITCH REGISTER TIMLM = 2000 ; TIME LIMIT IN SECONDS ; ; ROS EMT NUMBERS TSKDEF = 10 ; DEFAULT OR BATCH TASK NUMBER ; FOLLOWING ARE EMT INDICES FOR THE "BFUP" ROUTINES BFINIT = 36 BFENTR = 37 BFOPEN = 40 BFCLOS = 41 ; FOLLOWING ARE MISCELLANEOUS DEFINITIONS UNSPND = 3 EXIT = 4 .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 $BT2NO = MXTASK+12. ; BATCH TASK (USER'S) 4/8/73 $CPTNO = MXTASK+13. ; FILE COMPRESSION $FLTNO = MXTASK+14. ; FILE DIRECTO/ ; DEBUG ; ; ROS 3 I/O CONTROL BLOCK EQUATES THRD = 0 ; THREAD WORD DEVN = 2 ; DEVICE NUMBER ETYP = 3 ; EXIT TYPE EXIT = 4 ; EXIT ADDRESS LEVL = 7 ; PRIORITY LEVEL EROR = 10 ; ERROR CODE DATA = 14 ; DATA BUFFER ; ; ASCII CHARACTER CODES EQSN =075 ; EQUAL SIGN SCOL =073 ; SEMI-COLON COMA =054 ; COMMA RPAR =051 ; RIGH1 ;EMT FOR CALL TO MONITOR EXIT TTYOUT = 13 ;EMT FOR CALL TO TELETYPE OUTPUT TTYIN = 14 ;EMT FOR TELETYPE INPUT BINASC = 16 ;EMT FOR BINARY-TO-ASCII ASCBIN = 17 DISCIO = 23 ;EMT FOR DISC I/O ROUTINE CREAD = 24 ;EMT FOR CARD READER LPRNTR = 25 ;EMT FOR LINE PRINTER CKPT = 27 NOCKPT = 30 ;EMT FOR NO CHECKPOINT ROUTINE GETIME = 2RY LISTER ; .PAGE ; ; NUMBER OF COMMON BLOCKS IN SYSTEM $COMAX = 1 .PAGE .IF NZ OVRLAY ; ; ; THESE EQUATES ARE USED ONLY FOR THOSE SYSTEMS CONTAINING THE TASK ; OVERLAY OPTION. ; $DYNSZ = 54000 ; MINIMUM DYNAMIC AREA REQUIRED. $NBLKS = $DYNSZ/512. ; NO. OF CORE BLOCKS IN MIN. AREA. ; ; ; THE MACRO 'DYTBGN' BUILDS ALL PARAMETERS NEEDED BY THE SYSTEM FOR ; OVERLAY & RPOM TABLES. THE ARGUMENTS ARE: ; 3T PARENTHESIS SPAC =040 ; SPACE LPAR =050 ; LEFT PARENTHESIS DOLR = 44 ; DOLLAR SIGN CODE SWR = 177570 ; SWITCH REGISTER TIMLM = 2000 ; TIME LIMIT IN SECONDS ; ; ROS EMT NUMBERS TSKDEF = 10 ; DEFAULT OR BATCH TASK NUMBER ; FOLLOWING ARE EMT INDICES FOR THE "BFUP" ROUTINES BFINIT = 36 BFENTR = 37 BFOPEN = 40 BFCLOS = 41 ; FOLLOWING ARE MISCELLANEOUS DEFINITIONS UNSPND5 31 ;EMT FOR GET TIME GEDATE = 32 ;EMT FOR GET DATE R50PAK = 46 ;EMT FOR RADIX-50 PACK ROUTINE R50UNP = 47 ;EMT FOR RADIX-50 UNPACK DEFINE = 51 ;EMT FOR "DEFINE FILE" DELETE = 52 ;EMT FOR "DELETE FILE" ROSGET = 56 ; EMT TO GET ACCESS TO ROS ADDRESS SPACE CORLOD = 74 ; EMT TO GET ADDRESS OF MONITOR REF TABLE SDRITE = 76 ; SP6XX - 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 BLOCK ; $PS0XX - NO. OF BLOCKS IN THIS PRIORITY (A MIN. FOR DYNAMIC 7 = 3 EXIT = 4 ;EMT FOR CALL TO MONITOR EXIT TTYOUT = 13 ;EMT FOR CALL TO TELETYPE OUTPUT TTYIN = 14 ;EMT FOR TELETYPE INPUT BINASC = 16 ;EMT FOR BINARY-TO-ASCII ASCBIN = 17 DISCIO = 23 ;EMT FOR DISC I/O ROUTINE CREAD = 24 ;EMT FOR CARD READER LPRNTR = 25 ;EMT FOR LINE PRINTER CKPT = 27 NOCKPT = 30 ;EMT FOREECIAL SYSTEM DISK FILE RITER .PAGE ; TASK HEADER FOR TSKNTR TSKHD: .WORD 1 ; THREAD .WORD $TKENO ; TASK NUMBER .BYTE 20 ; SYSTEM TASK .BYTE PRIBKG ; PRIORITY .WORD TSKNTR-TSKBG ; ENTRY POINT .WORD 0,0 ; MAX TIME / TIMER .WORD 200 ; STACK SIZE .WORD $OVTYP ; CUP STATUS .WORD 0,0 ; STACK POINTER / ARG F; 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 DYNAMIC PRIORITIES .IFF ; $PS0'XX = BSIZEX G NO CHECKPOINT ROUTINE GETIME = 31 ;EMT FOR GET TIME GEDATE = 32 ;EMT FOR GET DATE R50PAK = 46 ;EMT FOR RADIX-50 PACK ROUTINE R50UNP = 47 ;EMT FOR RADIX-50 UNPACK DEFINE = 51 ;EMT FOR "DEFINE FILE" DELETE = 52 ;EMT FOR "DELETE FILE" ROSGET = 56 ; EMT TO GET ACCESS TO ROS ADDRESS SPACE CORLOD = 74 ; EMT TO GET ADDRESS OF MONITOR REF TABLE """"""" """"""""""""""""""""""DDDDDDD@DDDDDDDDDDDDDDDDDDDDDDDDDDADDB CZ{ ;r@λz eCZ{ <$DLDDDa ͋,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 &I .BYTE 6 ; SET READ AND WRITE ACCESS .BYTE TSKND-TSKBG/100 ; TPDR 0 .WORD 0,0 ; TPDR 1-2 .WORD 0,0,0 ; TPDR 3-5 .WORD 0,0 ; TPDR 6-7 .WORD TSKBG,0,0 ; TPAR O-2 .WORD 0,0,0 ; TPAR 3-5 .WORD 0,0 ; TPAR 6-7 . = . + 14 .CSECT TSKNTC TSKBG: .WORD $TKEFL .BLKW 177 .ASCII / / FWASC: .WORD 0,0,0 ; TEMTORARJ ; SET NO. BLOCKS- FIXED OR TIME SLICED .ENDC ; .ENDM DYTBGE ; ; DYTBGE 01,-1, 10., 0 ; DYTBGE 02,-1, 10., 1 ; DYTBGE 03,+1, 10., 1, 4 ; DYTBGE 04,+1, 10., 1, 4 ; DYTBGE 05,-1, 10., 1 ; DYTBGE 06,-1, 10., 1 ; DYTBGE 07,-1, 10., 3 ; DYTBGE 08,-1, 10., 3 ; DYTBGE 09,-1, 10., 3 K SDRITE = 76 ; SPECIAL SYSTEM DISK FILE RITER .PAGE ; TASK HEADER FOR TSKNTR TSKNHD: .WORD 1 ; THREAD .WORD $TKENO ; TASK NUMBER .BYTE 20 ; SYSTEM TASK .BYTE PRIBKG ; PRIORITY .WORD TSKNTR-TSKBG ; ENTRY POINT .WORD 0,0 ; MAX TIME / TIMER .WORD 200 ; STACK SIZE .WORD $OVTYP ; CUP STATUS .WORD 0,0 MY ASCII BUFFER .WORD 0 LWASC = . FWRAD: .WORD 0,0,0 ; TEMTORARY RAD50 BUFFER LWRAD = . DACRD: .WORD 80. ; NUMBER OF CHARACTERS TO READ .WORD 0 ; NUMBER ACTUALLY READ FWCRD: .BLKW 40. ; BUFFER LWCRD: .WORD 0 ; LAST WORD OF INPUT TABLE ; SAVR0: .WORD 0 ; SAVE INPUT PASSED ARGUMENT TSKNO: .WORD TSKDEF ; TASK NUMBER FILID: .WORD 0 ; FILE IDENTIFICATION NUMBER FILTY: .WORD 5 N ; DYTBGE 10,-1, 10., 3 ; DYTBGE 11, 0, 10., 6, 4 ; DYTBGE 12,+1, 10., 6, 4 ; DYTBGE 13,-1, 10., 6 ; DYTBGE 14,-1, 10., 6 ; DYTBGE 15,-1, 10., 6 ; DYTBGE 16, 0, 10., 6, 4 ; ; .ENDC ; $ABMES = 3 ; NO. OF ABORT MESSAGE BUFFERS .IFL $ABMES ; $ABMES MUST BE => 0. XXXXXX O ; STACK POINTER / ARG .BYTE 6 ; SET READ AND WRITE ACCESS .BYTE TSKND-TSKBG/100 ; TPDR 0 .WORD 0,0 ; TPDR 1-2 .WORD 0,0,0 ; TPDR 3-5 .WORD 0,0 ; TPDR 6-7 .WORD TSKBG,0,0 ; TPAR O-2 .WORD 0,0,0 ; TPAR 3-5 .WORD 0,0 ; TPAR 6-7 . = . + 14 .CSECT TSKNTC TSKBG: .WORD $TKEFL .BLKW 177 .ASCII / / FWASQ ; FILE TYPE TSKAC: .BYTE 0 ; TASK ACCESS STATUS HPRIR: .BYTE 0 ; PRIORITY MAXTM: .WORD 0 ; MAXIMUM TIME DEVPG: .WORD 0 ; DEVICE PAGE FLAG COMTP: .WORD 0 ; COMMON FILE I.D. CSMTP: .WORD 0 ; COMMON SYMBOL FILE I.D. ; ; CARD READER LIST .BOUND CSIOB: IOCBM 2,2,0,0,3,DACRD .BOUND TYIOB: IOCBM 0,2,0,0,0,TYMES .BOUND TYMES: .WORD 16,0 .BYTR ; ABRT .ENDC ; PSTP ; THE SYSGEN PARAMETER '$PST CONTROLS THE EXECUTION PATH*PSTP ; DURING A TASK ERROR. PSTP ; = -1 ROS + USER ROUTINES PSTP ; = 0 ROS PSTP ; = +1 USER SC: .WORD 0,0,0 ; TEMTORARY ASCII BUFFER .WORD 0 LWASC = . FWRAD: .WORD 0,0,0 ; TEMTORARY RAD50 BUFFER LWRAD = . DACRD: .WORD 80. ; NUMBER OF CHARACTERS TO READ .WORD 0 ; NUMBER ACTUALLY READ FWCRD: .BLKW 40. ; BUFFER LWCRD: .WORD 0 ; LAST WORD OF INPUT TABLE ; SAVR0: .WORD 0 ; SAVE INPUT PASSED ARGUMENT TSKNO: .WORD TSKDEF ; TASK NUMBER FILID: .WORD 0 ; FILE IDENTIFUE 15,12 ; CR / LF .ASCII /TSKNTR MSG/ TYNUM: .BYTE 40,40 ; SET ERROR NUMBER CODE ; BATCH FILE COMMUNICATIONS BLOCK (BFUP) BFBLK1: .WORD 0 ; STATUS CODE .WORD $BCHID ; I D OF ROS FILE BFNAM: .WORD 0,0 ; ELEMENT NAME BFSTAT: .BYTE 0 BFTYPE: .BYTE 1 ; ELEMENT TYPE BFSECT: .WORD 0 ; RELATIVE START SECTOR BFSIZE: .WORD 0 ; LENGTH IN SECTORS .BOUND TXV PSTP ; PSTP $PST = 0 ; PSTP ; PSTP .PAGE $CLOCK = 0 ; INTERRUPTS SOURCE OFR MAINTAINING ; ; TIMERS AND DECKS ; ; 0=DEC LINE FREQUENCY(KW11-2) ; ; 1=DDS CLOCKSWICATION NUMBER FILTY: .WORD 5 ; FILE TYPE TSKAC: .BYTE 0 ; TASK ACCESS STATUS HPRIR: .BYTE 0 ; PRIORITY MAXTM: .WORD 0 ; MAXIMUM TIME DEVPG: .WORD 0 ; DEVICE PAGE FLAG COMTP: .WORD 0 ; COMMON FILE I.D. CSMTP: .WORD 0 ; COMMON SYMBOL FILE I.D. ; ; CARD READER LIST .BOUND CSIOB: IOCBM 2,2,0,0,3,DACRD .BOUND TYIOB: IOCBM 0,2,0,0,0,TYMES .BOUYTLST: .WORD 1 .BYTE 1,2 ; DISC / SUSPEND .WORD 0 ; EXIT .BYTE 0,3 ; ERROR / LEVEL TXTERR: .WORD 0,0 ; ERROR WORD / RESERVED .WORD TXTHED ; BUFFER HEADER ADDRESS .WORD 0,0 ; TXTHED: .WORD $BCHID ; FILE I D FOR BATCH FILE .BYTE 0 ; RELATIVE SECTOR TXTR.W: .BYTE 0 .WORD 0,0,0 TXTSEC: .WORD 0 ;RELATIVE SECTOR TO REZX ;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 ;DE-SELECT ALTERNATE[ND TYMES: .WORD 16,0 .BYTE 15,12 ; CR / LF .ASCII /TSKNTR MSG/ TYNUM: .BYTE 40,40 ; SET ERROR NUMBER CODE ; BATCH FILE COMMUNICATIONS BLOCK (BFUP) BFBLK1: .WORD 0 ; STATUS CODE .WORD $BCHID ; I D OF ROS FILE BFNAM: .WORD 0,0 ; ELEMENT NAME BFSTAT: .BYTE 0 BFTYPE: .BYTE 1 ; ELEMENT TYPE BFSECT: .WORD 0 ; RELATIVE START SECTOR BFSIZE: .WORD 0 ; ]AD OR WRITE TXTCNT: .WORD 100 ; # OF WORDS TO TRANSFER TXTBK1: .BLKW 100 ; BUFFER TXTBK2 =TXTBK1+6 ; .BOUND DFLIST: .WORD 1 ; "DEFINE FILE" LIST .BYTE 0,0 ; ERROR , ERRTSK .WORD 0 ; IFD .WORD 0 ; FILE I.D. DFLFT: .WORD 5 ; FILE TYPE .WORD 0 ; # SECTORS IN FILE ; ROSLNK COMMAND LIST RKLCL: .RAD50 /ACC/ ; ACCESS S^ 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 PERIOD RES0 = 1 _LENGTH IN SECTORS .BOUND TXTLST: .WORD 1 .BYTE 1,2 ; DISC / SUSPEND .WORD 0 ; EXIT .BYTE 0,3 ; ERROR / LEVEL TXTERR: .WORD 0,0 ; ERROR WORD / RESERVED .WORD TXTHED ; BUFFER HEADER ADDRESS .WORD 0,0 ; TXTHED: .WORD $BCHID ; FILE I D FOR BATCH FILE .BYTE 0 ; RELATIVE SECTOR TXTR.W: .BYTE 0 .WORD 0,0,0 TXTSEC: .WORD aTATUS .RAD50 /COM/ ; COMMON COMMAND .RAD50 /DEV/ ; DEVICE PAGE .RAD50 /END/ ; END .RAD50 /FID/ ; FILE I.D. .RAD50 /NAM/ ; NAME .RAD50 /PRI/ ; PRIORITY .RAD50 /SYS/ ; SYSTEM TASK .RAD50 /TIM/ ; TIME LIMIT IN SECONDS .RAD50 /TSK/ ; TASK NUMBER .RAD50 /TYP/ ; LOAD FILE TYPE .RAD50 /XIT/ b ; 0.01 SEC RES1 = 1 ; 0.01 SEC RES2 = 2 ; 0.02 SEC RES3 = 5 ; 0.1 SEC RES4 = 2 ; 0.2 SEC RES5 = 5 ; 1.0 SEC RES6 = 5 ; 5.0 SEC RES7 = 2 ; 10.0 SEC RES8 = 3 ; 30.0 SEC RES9 = 2 ; 60.0 SEC RES10 = 5 ; 5 MIN RES11 = 2 c0 ;RELATIVE SECTOR TO READ OR WRITE TXTCNT: .WORD 100 ; # OF WORDS TO TRANSFER TXTBK1: .BLKW 100 ; BUFFER TXTBK2 =TXTBK1+6 ; .BOUND DFLIST: .WORD 1 ; "DEFINE FILE" LIST .BYTE 0,0 ; ERROR , ERRTSK .WORD 0 ; IFD .WORD 0 ; FILE I.D. DFLFT: .WORD 5 ; FILE TYPE .WORD 0 ; # SECTORS IN FILE ; ROSLNK COMMAND LIST RKLCe ; EXIT FROM TSKNTR .WORD 0 ; ; ROSLNK COMMAND PROCESSOR JUMP TABLE RLKJT: .WORD RLACC ; ACCESS STATUS .WORD RLCOM ; COMMON COMMAND .WORD RLDEV ; DEVICE PAGE .WORD RLEND ; END .WORD RLFID ; FILE I.D. # .WORD RLNAM ; NAME .WORD RLPRI ; PRIORITY .WORD RLSYS ; SYSTEM TASK .WORD RLTIM ; TIME LIMIT .Wf ; 10 MIN RES12 = 3 ; 30 MIN RES13 = 2 ; 60 MIN RES14 = 2 ; 2 HRS RES15 = 6 ; 12 HRS ; 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 = 5 ;"RES5" IS THE ONE-SECOND RESOLUTION TRES = SECR gL: .RAD50 /ACC/ ; ACCESS STATUS .RAD50 /COM/ ; COMMON COMMAND .RAD50 /DEV/ ; DEVICE PAGE .RAD50 /END/ ; END .RAD50 /FID/ ; FILE I.D. .RAD50 /NAM/ ; NAME .RAD50 /PRI/ ; PRIORITY .RAD50 /SYS/ ; SYSTEM TASK .RAD50 /TIM/ ; TIME LIMIT IN SECONDS .RAD50 /TSK/ ; TASK NUMBER .RAD50 /TYP/ ; LOAD FILiORD RLTSK ; TASK NUMBER .WORD RLTYP ; LOAD FILE TYPE .WORD RLXIT ; EXIT FROM TSKNTR ; ; TASK ACCESS STATUS MNEMONICS AND ASSOCIATED BIT SETTINGS ACCTB: .RAD50 /BCH/ ; BATCH TASK .WORD 1 .RAD50 /BCF/ ; FLOATING POINT BATCH TASK .WORD 11 .RAD50 /BKG/ ; BACKGROUND TASK .WORD 2 .RAD50 /BKF/ ; FLOATING POINT BACKGROUND TASK .WORD 12 .RAD50 /FCD/ ; FOj ; FOR TIME-SLICE WATCH-DOG IN RPOM $NRES = 16. ;USE MAX # OF RESOLUTIONS .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 ; NORMALLY THE INTERRUPT PERIOD, AS SPECIFIED BY "TICRES". ; IF A MULTIPLIER FOR THIS INTERRUPT IS DESIRED TO PRODUCE A COkE TYPE .RAD50 /XIT/ ; EXIT FROM TSKNTR .WORD 0 ; ; ROSLNK COMMAND PROCESSOR JUMP TABLE RLKJT: .WORD RLACC ; ACCESS STATUS .WORD RLCOM ; COMMON COMMAND .WORD RLDEV ; DEVICE PAGE .WORD RLEND ; END .WORD RLFID ; FILE I.D. # .WORD RLNAM ; NAME .WORD RLPRI ; PRIORITY .WORD RLSYS ; SYSTEM TASK .WORD RLmREGROUND TASK .WORD 4 .RAD50 /FGF/ ; FLOATING POINT FOREGROUND TASK .WORD 14 .RAD50 /SYS/ ; SYSTEM TASK .WORD 20 .RAD50 /SYF/ ; FLOATING POINT SYSTEM TASK .WORD 30 ; .MACRO SYSTB NAM,TKNUM,FLNUM,FLTYP,PRIOR .RAD50 /NAM/ ; TASK NAME .WORD TKNUM ; TASK NUMBER .WORD FLNUM ; FILE NUMBER .BYTE FLTYP ; FILE TYPE .BYTnARSER ; 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 TODINT = 320 ;INTERRUPT VECTOR FOR T-O-D INTERRUPT TIMINT = TODINT+4 ;INTERRUPT VECTOR FOR INTERVAL TIMER STLINT = oTIM ; TIME LIMIT .WORD RLTSK ; TASK NUMBER .WORD RLTYP ; LOAD FILE TYPE .WORD RLXIT ; EXIT FROM TSKNTR ; ; TASK ACCESS STATUS MNEMONICS AND ASSOCIATED BIT SETTINGS ACCTB: .RAD50 /BCH/ ; BATCH TASK .WORD 1 .RAD50 /BCF/ ; FLOATING POINT BATCH TASK .WORD 11 .RAD50 /BKG/ ; BACKGROUND TASK .WORD 2 .RAD50 /BKF/ ; FLOATING POINT BACKGROUND TASK .WqE PRIOR ; PRIORITY .ENDM ; SYSTBL: SYSTB CMPRES,$CPTNO,$CPTFL,$OVTYP,PRIBKG SYSTB FLIST ,$FLTNO,$FLTFL,$OVTYP,PRIBKG SYSTB INPUT ,$INPNO,$INPFL,$OVTYP,PRIBKG SYSTB ROSLNK,$RLDNO,$RLDFL,$OVTYP,PRIBKG SYSTB RASM ,$RASNO,$RASFL,$OVTYP,PRIBKG SYSTB TSKNTR,$TKENO,$TKEFL,$OVTYP,PRIBKG SYSTB OBJNTR,$TKCNO,$TKCFL,$OVTYP,PRIBKG SYSTB PATCHR,$PCHNO,$PCHFL,$OVTYP,PRIBKG SYSTB TSBFUP,$BFPNO,$Br TIMINT+4 ;VECTOR FOR STALL ALARM INTERRUPT STLREG = 167000 ;ADDRESS FOR STALL ALARM RESET .IFNZ $CLOCK CLKENB = 167002 ;ADDRESS FOR ENABLE OF CLOCKS TODBIT = 4 ;BIT TO ENABLE TIME-OF-DAY INTERRUPT TIMBIT = 10 ;BIT TO ENABLE INTERVAL TIMER INTERRUPT STLBIT = 0 ;BIT TO ENABLE STALL ALARM INTERRUPT .ENDC .IFZ $CLOCK CLKENB = 177546 ; ADDRESS OF DEC LsORD 12 .RAD50 /FCD/ ; FOREGROUND TASK .WORD 4 .RAD50 /FGF/ ; FLOATING POINT FOREGROUND TASK .WORD 14 .RAD50 /SYS/ ; SYSTEM TASK .WORD 20 .RAD50 /SYF/ ; FLOATING POINT SYSTEM TASK .WORD 30 ; .MACRO SYSTB NAM,TKNUM,FLNUM,FLTYP,PRIOR .RAD50 /NAM/ ; TASK NAME .WORD TKNUM ; TASK NUMBER .WORD FLNUM ; FILE NUMBER .BYTE FLTYuFPFL,$OVTYP,PRIBKG SYSTB BATMAN,$BT1NO,$BT1FL,$OVTYP,PRIBKG .WORD 0 ; END OF TABLE FLAG ; BSZTAB: ;TABLE OF MAX ALLOWABLE BLOCK OR "PAGE SIZES FOR EACH PRIORITY ;THE SIGN BIT IS SET IF THE PRIORITY IS DYNAMIC, I.E. NOT FIXED ;NOR TIME-SLICE. .IRP ARG,<01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16> .LIST MEB .IIF LT NPRIOR - ARG'. .MEXIT .WORD PRIP'ARG&100000!$PS0'ARG vINE CLOCK 4/8/73 TODBIT = 0 ; TIMBIT = 100 ;CLOCK ENABLE BIT STLBIT = 0 ; TIMINT = 100 ; DEC LINE CLOCK TRANSFER VECTOR ADD. .ENDC $TMSLC = 1 ;SYSTEM OPTION FOR INCLUDING TIME-SLICING $SWATZ = 20. ;NUMBER OF ENTRIES IN SCHEDULER "WAIT" TABLE $TWATZ = 20. ;WORDS IN TIMER'S "WAIT" TABLE .PAGE $MTAPE = 1 ; IF = 1, MAGTAPES IN SYSTwP ; FILE TYPE .BYTE PRIOR ; PRIORITY .ENDM ; SYSTBL: SYSTB CMPRES,$CPTNO,$CPTFL,$OVTYP,PRIBKG SYSTB FLIST ,$FLTNO,$FLTFL,$OVTYP,PRIBKG SYSTB INPUT ,$INPNO,$INPFL,$OVTYP,PRIBKG SYSTB ROSLNK,$RLDNO,$RLDFL,$OVTYP,PRIBKG SYSTB RASM ,$RASNO,$RASFL,$OVTYP,PRIBKG SYSTB TSKNTR,$TKENO,$TKEFL,$OVTYP,PRIBKG SYSTB OBJNTR,$TKCNO,$TKCFL,$OVTYP,PRIBKG SYSTB PATCHR,$PCHNO,$PCHFL,$OVTYP,PRy.NLIST MEB .ENDR .PAGE TSKNTR: ; TASK ENTER MOV R0,SAVR0 RLKGA: MOV #LWCRD,R1 ; SET CHARACTER POINTER SO A CARD WILL BE READ MOV #$OVTYP,FILTY ; SET FILE TYPE CLR DEVPG ; CLEAR DEVICE PAGE FLAG MOVB #60,TYNUM+1 ; SET UP MESSAGE SUCCESSFUL RLKGC: JSR PC,GWORD ; GET NEXT COMMAND MOV #FWASC,-(SP) ; ASCII BUFFER ADDRESS MOV #FWRAD,-(SP) ; zEM .IF NZ $MTAPE ; ONLY IF HAVE MAGTAPES $DATUM = 1 ; TYPE OF MAGTAPES ; IF 0, PEC DRIVES (800 BPI.) ; IF 1, DATUM DRIVES (1600 BPI.) .ENDC ; $DTAPE = 1 ; DECTAPE OPTION ; NDISCS = 1 ;NO. OF DISC CONTROLLERS (0 = NO DISCS) ; $DDSDC = 1 ; USE DDS DICS ; ACTSIZ = 20. ; MAXIMUM NO. OF ENTRIES IN AU{IBKG SYSTB TSBFUP,$BFPNO,$BFPFL,$OVTYP,PRIBKG SYSTB BATMAN,$BT1NO,$BT1FL,$OVTYP,PRIBKG .WORD 0 ; END OF TABLE FLAG ; BSZTAB: ;TABLE OF MAX ALLOWABLE BLOCK OR "PAGE SIZES FOR EACH PRIORITY ;THE SIGN BIT IS SET IF THE PRIORITY IS DYNAMIC, I.E. NOT FIXED ;NOR TIME-SLICE. .IRP ARG,<01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16> .LIST MEB .IIF LT NPRIOR - ARG'. .MEXIT .WOR}RAD50 BUFFER ADDRESS EMT R50PAK MOV FWRAD,R2 MOV #RKLCL,R4 ; SET POINTER TO COMMAND LIST RLKA1: TST (R4) ; AT END OF LIST BEQ RLKA2 ; YES BRANCH CMP (R4)+,R2 ;NO, TEST COMMAND BNE RLKA1 ; BRANCH IF NOT A COMMAND SUB #RKLCL+2,R4 ; DETERMINE COMMAND INDEX JMP @RLKJT(R4) ; JUMP TO COMMAND PROCESSOR RLKA2: MOV #61,R3 ; SET ERRO~TH. CODE .IFL 20.-ACTSIZ XXXXXXXX ; ERROR-ALLOCATE MORE LOCATIONS XXXXXXXX ; FOR AUTHORIZATION CODES .ENDC .PAGE .IFNZ NDISCS ; $DSKER = 0 ; DISK ERROR SWITCH. IF 0 ROS DOES ALL ; IF 1 USER ALSO HAS A CHANCE. ; DRESDI = 1 ; DISC RESIDENT DIRECTORY OPTION .IFL 3-NDISCS XXXXXXXX ; PRESENTLY COD PRIP'ARG&100000!$PS0'ARG .NLIST MEB .ENDR .PAGE TSKNTR: ; TASK ENTER MOV R0,SAVR0 BGT RLKGA ; BR IF NOT BATCH MOVB R0,CSIOB+DEVN ; SET INPUT DEVICE AS DIRECTED BY BATCH MOVB SAVR0+1,R1 BIC #177700,R1 MOVB R1,TYIOB+DEVN ;SET OUTPUT DEVICE AS DIRECTED BY BATCH RLKGA: MOV #LWCRD,R1 ; SET CHARACTER POINTER SO A CARD WILL BE READ MOV #$R CODE RLKER: MOVB R3,TYNUM+1 ; SET ERROR CODE TO BE PRINTED MOV #TYIOB,-(SP) ; LIST ADDRESS EMT TTYOUT EMT EXIT .PAGE ; PROCESS TASK ACCESS STATUS RLACC: JSR PC,GWRAD ; GET NEXT WORD AND CONVERT TO RAD50 MOV FWRAD,R2 ; PLACE ACCESS CODE IN R2 MOV #ACCTB-2,R4 ; SET POINTER TO TABLE - 2 MOV #62,R3 ; SET ERROR CODE RLAC3: CMP #30,(R4)+ ; TEST FDED FOR MAX. OF 3 DISCS .ENDC ; NDPRT1 = 5 ; NO. OF PRIORITY LEVELS IN DISC 1 QUEUES .IFL NDPRT1-3 XXXXXXXX ; MUST BE AT LEAST THREE .ENDC MAXID1 = 500. ; MAXIMUM ID ON DISC 1 ; .IFG NDISCS-1 NDPRT2 = 7 ; NO. OF PRIORITY LEVELS IN DISC 2 QUEUES .IFL NDPRT2-3 XXXXXXXX ; MUST BE AT LEAST THREE .ENDC MAXID2 = 500. OVTYP,FILTY ; SET FILE TYPE CLR DEVPG ; CLEAR DEVICE PAGE FLAG MOVB #60,TYNUM+1 ; SET UP MESSAGE SUCCESSFUL RLKGC: JSR PC,GWORD ; GET NEXT COMMAND MOV #FWASC,-(SP) ; ASCII BUFFER ADDRESS MOV #FWRAD,-(SP) ; RAD50 BUFFER ADDRESS EMT R50PAK MOV FWRAD,R2 MOV #RKLCL,R4 ; SET POINTER TO COMMAND LIST RLKA1: TST (R4) ; AT END OF LIST BEQ RLKA2 OR END OF TABLE BEQ RLKER ; BR IF AT END OF TABLE CMP (R4)+,R2 ; COMPAIR INPUT COMMAND WITH TABLE ENTRY BNE RLAC3 ; TRY NEXT ENTRY IN TABLE MOVB (R4),TSKAC ; SAVE ACCESS CODE JMP RLKGC ; PROCESS NEXT COMMAND ; ; PROCESS DEVICE PAGE COMMAND RLDEV: CMP #1,R3 ; TEST FOR SEMI-COLON BEQ RLDEV1 MOV #71,R3 ; SET ERROR CODE BR RL ; MAXIMUM ID ON DISC 2 .ENDC ; .IFG NDISCS-2 NDPRT3 = 3 ; NO. OF PRIORITY LEVELS IN DISC 3 QUEUES .IFL NDPRT3-3 XXXXXXXX ; MUST BE AT LEAST THREE .ENDC MAXID3 = 500. ; MAXIMUM ID ON DISC 3 .ENDC $SYSFL = NDISCS+5 ; NO. OF SYSTEM FILE ID'S IN ROS ; ; COMPID,FTDIR,CDIMGE,CDIHDR,TTFILE $RESFL = 10 ; # OF ID'S ; YES BRANCH CMP (R4)+,R2 ;NO, TEST COMMAND BNE RLKA1 ; BRANCH IF NOT A COMMAND SUB #RKLCL+2,R4 ; DETERMINE COMMAND INDEX JMP @RLKJT(R4) ; JUMP TO COMMAND PROCESSOR RLKA2: MOV #61,R3 ; SET ERROR CODE RLKER: MOVB R3,TYNUM+1 ; SET ERROR CODE TO BE PRINTED MOV #TYIOB,-(SP) ; LIST ADDRESS EMT TTYOUT EMT EXIT .PAGE ; PROCESS TASK ACCESS STAKER RLDEV1: INC DEVPG ; SET DEVICE PAGE FLAG BR RLKGC ; GO PROCESS NEXT COMMAND ; ; PROCESS COMMON COMMAND RLCOM: JSR PC,GWBIN ; GET NEXT WORD AND CONVERT TO BINARY ADD $CSMTP,R5 MOV R5,CSMTP ; SAVE COMMON SYMBOL FILE I.D. MOV COMTP,FILID ; SET FILE I D NUMBER MOV $COMTP,FILTY ; SET FILE TYPE JSR PC,TRANS MOV CSMTP,FILID ; SET FILE I D NUMBERESERVED FOR NON-TASK SYS US6/15/73 .IF GT $COMAX ; ONLY NEED THESE IF HAVE DISK COMMON $RESFL = $RESFL + <2*$COMAX> ; BUMP RESERVED FILE IDS. $COMLD = $SYSFL ; BASE ID FOR COMMON FILE(S). $COMST = $COMLD + $COMAX ; BASE ID FOR COMMON SYMBOL TABLE(S). $COMTP = 6 ; FILE TYPES FOR COMMON $CSMTP = 6 ; & FOR SYMBOL TABLE(S) .ENDC .IFZ DRESDI NCFILE = $SYSFL+40. ; NO. OF CTUS RLACC: JSR PC,GWRAD ; GET NEXT WORD AND CONVERT TO RAD50 MOV FWRAD,R2 ; PLACE ACCESS CODE IN R2 MOV #ACCTB-2,R4 ; SET POINTER TO TABLE - 2 MOV #62,R3 ; SET ERROR CODE RLAC3: CMP #30,(R4)+ ; TEST FOR END OF TABLE BEQ RLKER ; BR IF AT END OF TABLE CMP (R4)+,R2 ; COMPAIR INPUT COMMAND WITH TABLE ENTRY BNE RLAC3 ; TRY NEXT ENTRY IN TABLE R MOV $CSMTP,FILTY ; SET FILE TYPE JSR PC,TRANS JMP RLKGA ; GO PROCESS NEXT FILE MOV COMTP,FILID ; SET FILE I.D. NUMBER MOV $COMTP,FILTY ; SET FILE TYPE JSR PC,TRANS MOV CSMTP,FILID ; SET FILE I.D. NUMBER MOV $CSMTP,FILTY ; SET FILE TYPE JSR PC,TRANS JMP RLKGA RCOM1: MOV #101,R3 ; ERROR CODE BR RLKER ; ERROR ORE RESIDENT FILE ID'S .ENDC .IFNZ DRESDI NCFILE = NDISCS+$SYSFL+40. ; NO. OF CORE RESIDENT ID'S ; ; INCLUDING DOD'S AND SYSTEM FILES NCRWDS = NCFILE*5 ; NO. OF CORE RESIDENT WORDS NEEDED ; ; FOR CORE DIRECTORY NCRLOC = NCRWDS+NCRWDS ; NO. OF LOCATIONS IN CORE RESIDENT ; ; DIRECTORY .ENDC ERRPRT = 1 ; MOVB (R4),TSKAC ; SAVE ACCESS CODE JMP RLKGC ; PROCESS NEXT COMMAND ; ; PROCESS DEVICE PAGE COMMAND RLDEV: CMP #1,R3 ; TEST FOR SEMI-COLON BEQ RLDEV1 MOV #71,R3 ; SET ERROR CODE BR RLKER RLDEV1: INC DEVPG ; SET DEVICE PAGE FLAG BR RLKGC ; GO PROCESS NEXT COMMAND ; ; PROCESS COMMON COMMAND RLCOM: JSR PC,GWBIN ; GET NEXT WORD AND COEXIT .PAGE ; PROCESS END COMMAND RLEND: CMP #1,R3 ; TEST FOR SEMI-COLON BEQ RLED2 RLED1: MOV #63,R3 ; SET ERROR CODE JMP RLKER ; BR TO ERROR ROUTINE RLED2: .IF Z TMDEB CMP TSKNO,TSKDEF ; IS THIS A BATCH TASK BEQ RLED3 ;******* CHANGE WHEN KEY SWITCH IS INSTALLED ********************** CMP @#SWR,#1 BEQ RLED3 CMP @#SWR,#2 BNE RLPRINT-OUT DISC ERROR MESSAGES OPTION CHKPTC = 1 ;1 = CHECKPOINTING ALLOWED .IFZ $KT11C .IFNZ CHKPTC XXXXXXXX .ENDC .ENDC FXPART = 1 ; FIXED PARTITION OPTION $SGMNT = 1 ; SEGMENT LOAD OPTION $FTMAX = 10. ; LARGEST FILE TYPE IN SYSTEM $IDMAX = 500. ; LARGEST FILE ID IN SYSTEM-- ; ; MUST BE >= MAXID1,2,3,..,N $FTDRNVERT TO BINARY ADD $CSMTP,R5 MOV R5,CSMTP ; SAVE COMMON SYMBOL FILE I.D. MOV COMTP,FILID ; SET FILE I D NUMBER MOV $COMTP,FILTY ; SET FILE TYPE JSR PC,TRANS MOV CSMTP,FILID ; SET FILE I D NUMBER MOV $CSMTP,FILTY ; SET FILE TYPE JSR PC,TRANS JMP RLKGA ; GO PROCESS NEXT FILE MOV COMTP,FILID ; SET FILE I.D. NUMBER MOV $COMTP,FED1 .ENDC RLED3: MOV #BFBLK1,-(SP) EMT ROSGET ; GET ACCESS TO ROS ADDRESS SPACE (ASR 4-6) EMT BFOPEN MOV BFSECT,TXTSEC ; SET TO READ IN TASK HEADER INFO CLRB TXTR.W ; SET READ FLAG JSR PC,TEXTIO MOV TSKNO,TXTBK2+TASK ; MOVE TASK NUMBER MOV TSKAC,TXTBK2+TACC ; MOV PRIOR AND TASK ACCESS STATUS MOV HPRIR,R2 TSTB PPTAB+$ROSM(R2) ; IS TL = $FTMAX*3/64.+1 ; NO. OF SECTORS IN FILE TYPE DIRECTORY $ROSFW = NDISCS+$SYSFL*5 ; NO. OF WORDS IN ROS FILES $CDISZ = NCRWDS-$ROSFW/64.+1 ; NO. OF SECTORS IN CORES ; ; DIRECTORY IMAGE $TKFLN = + <*3> +1/2+1+3 & 177774 ; 5/14/73 ; $TKFLN = # WORDS IN TASK TABLES + 1 FOR 'TASKS' + ROUND UP TO 5/14/73 ; XXXXXXXXXXXXXX00 FOR DISC CONTROLER. 5/14/73 ;ILTY ; SET FILE TYPE JSR PC,TRANS MOV CSMTP,FILID ; SET FILE I.D. NUMBER MOV $CSMTP,FILTY ; SET FILE TYPE JSR PC,TRANS JMP RLKGA RCOM1: MOV #101,R3 ; ERROR CODE BR RLKER ; ERROR EXIT .PAGE ; PROCESS END COMMAND RLEND: CMP #1,R3 ; TEST FOR SEMI-COLON BEQ RLED2 RLED1: MOV #63,R3 ; SET ERROR CODE JMP RLKER ; BR THIS A TIME-SLICING PRIORITY BLE RLD04 ; NO TST MAXTM ; YES EXECUTION TIME MUST BE SPECIFIED BLE RLKER RLD04: MOV MAXTM,TXTBK2+MTIM ; MOVE MAX TIME TST DEVPG BEQ RLED4 ; BR IF DEVICE PAGE NOT DESIRED MOV #102,R3 ; SET ERROR CODE TST TXTBK1+42 ; TEST TPDR 7 BNE RLKER1 ; BR IF IN USE MOV #177406,TXTBK2+TPDRM ; $TKFNS = $TKFLN/64.+1 ; NO. OF SECTORS IN TASK TABLE FILE ; $ROSIZE = 701 ; SIZE OF ROS BOOT FILE ; ; ; THE FOLLOWING IS FOR DISC RESIDENT DIRECTORIES ; DIRAD1 = $ROSIZ ; BASE ADD. OF DISK RES. DIRECTORY ON 5/14/73 ; SYSTEM DISK (UNIT #1) 5/14/73 ; ; LEAVES ROOM FOR 20K ROS BOOT .IFZ DRESDI DIRLN1 = 0 ; ZERO LENGTH O ERROR ROUTINE RLED2: .IF Z TMDEB CMP TSKNO,TSKDEF ; IS THIS A BATCH TASK BEQ RLED3 ;******* CHANGE WHEN KEY SWITCH IS INSTALLED ********************** CMP @#SWR,#1 BEQ RLED3 CMP @#SWR,#2 BNE RLED1 .ENDC RLED3: MOV #BFBLK1,-(SP) EMT ROSGET ; GET ACCESS TO ROS ADDRESS SPACE (ASR 4-6) EMT BFOPEN MOV BFSECT,TXTSEC ; SET TO READ IN TASSET TPDR7 MOV #7600,TXTBK2+TPAR7 ; SET TPAR7 RLED4: INCB TXTR.W ; SET WRITE FLAG JSR PC,TEXTIO MOVB HPRIR,R2 ; LOAD PRIORITY ASL R2 ; GET WORD INDEX MOV BSZTAB-2(R2),R4 ; GET MAX ALLOWED # OF PAGES WITH DYNAMIC BIT MOV R4,R5 ; SAVE DYNAMIC BIT BIC #100000,R4 ; LEAVE ONLY # OF PAGES MOV #103,R3 ; SET ERROR CODE CMP TX .ENDC .IFNZ DRESDI DIRLN1 = MAXID1-1/12.+1 ; DISC DIRECTORY 1 LENGTH .IFG NDISCS-1 DIRAD2 = 0 ; DISC RESIDENT DIRECTORY ADDRESS DISC 2 DIRLN2 = MAXID2-1/12.+1 ; DISC DIRECTORY 2 LENGTH .ENDC .IFG NDISCS-2 DIRAD3 = 0 ; DISC RESIDNET DIRECTORY ADDRESS DISC 3 DIRLN3 = MAXID3-1/12.+1 ; DISC DIRECTORY 3 LENGTH .ENDC .ENDC ; ; THE FOLLOWING CONTAINS THE FILEK HEADER INFO CLRB TXTR.W ; SET READ FLAG JSR PC,TEXTIO MOV TSKNO,TXTBK2+TASK ; MOVE TASK NUMBER MOV TSKAC,TXTBK2+TACC ; MOV PRIOR AND TASK ACCESS STATUS MOVB HPRIR,R2 TSTB PPTAB+$ROSM(R2) ; IS THIS A TIME-SLICING PRIORITY BLE RLD04 ; NO TST MAXTM ; YES EXECUTION TIME MUST BE SPECIFIED BLE RLKER RLD04: MOV MAXTM,TXTBK2+MTIM ; TBK2+ARG,R4 ; PROGRAM SIZE :: MAX ALLOWED BGT RLKER1 ; ERROR EXIT TST R5 ; IS THIS PRIORITY "DYNAMIC"? BMI RLED5 MOV R4,TXTBK2+ARG ; REPLACE WITH MAX SIZE FOR FIXED PARTITION RLED5: MOV FILID,R5 ; LOAD FILE I.D. MOV #104,R3 ; LOAD ERROR CODE FOR ILLEGAL FILE I.D. CMP R5,#NDISCS+$SYSFL ; MUST BE GREATER THAN SYSTEM RESERVED BLE RLKER1 ; ERROR EXIT TYPE STATUS DESCRIPTORS ; FOR EACH FILE TYPE. ; $FD000 = 41 ; FILE TYPE 0, LOG UNIT 1, NO COMPRESSION $FD001 = 1 ; FILE TYPE 1, LOG UNIT 1 $FD002 = 1 ; FILE TYPE 2, LOG UNIT 1 $FD003 = 1 ; FILE TYPE 3, LOG UNIT 1 $FD004 = 1 ; FILE TYPE 4, LOG UNIT 1 $FD005 = 101 ; FILE TYPE 5, LOG UNIT 1, CKSAVE REQUIRED $FD006 = 1 ; FILE TYPE 6, LOG UNIT 1MOVE MAX TIME TST DEVPG BEQ RLED4 ; BR IF DEVICE PAGE NOT DESIRED MOV #102,R3 ; SET ERROR CODE TST TXTBK2+TPDR7 ; TEST TPDR 7 BNE RLKER1 ; BR IF IN USE MOV #177406,TXTBK2+TPDR7 ; SET TPDR7 MOV #7600,TXTBK2+TPAR7 ; SET TPAR7 RLED4: MOVB HPRIR,R2 ; LOAD PRIORITY ASL R2 ; GET WORD INDEX MOV BSZTAB-2(R2),R4 ; GET MAX CMP R5,#MAXID1 ; I.S. MUST BE <= MAXIMUM ALLOWED BGT RLKER1 ; ERROR EXIT MOV R5,DFLIST+6 ; LOAD FILE I.D. INTO LIST ; READY TO "DEFINE" ROS FILE JSR PC,DEFIL ; DEFINE 'ROS' FILE ; NOW TRANSFER BATCH ELEMENT TO THE ROS FILE JSR PC,TRANS ; TRANSFER BATCH ELEMENT TO ROS FILE ; NOW INITIALIZE ALL RELEVANT TASK AND PRIORITY TABLES JSR PC,INTAB ; INITIALIZE TASK AND PRIORITY TABLES JMP $FD007 = 1 ; FILE TYPE 7, LOG UNIT 1 $FD008 = 1 ; FILE TYPE 8, LOG UNIT 1 $FD009 = 1 ; FILE TYPE 9, LOG UNIT 1 .IFL 10.-$FTMAX XXXXXXXX ; ONLY SET UP FOR 10. FILE TYPES .ENDC $OVTYP = 5. ; FILE TYPE FOR OVERLAY TASKS ; ; FILE TYPE SIZE TABLE - IN SECTORS ; $DSIZE = 32768. ; SIZE OF ROS/GULF DISK 5/14/73 ; .IFNZ ALLOWED # OF PAGES WITH DYNAMIC BIT MOV R4,R5 ; SAVE DYNAMIC BIT BIC #100000,R4 ; LEAVE ONLY # OF PAGES MOV #103,R3 ; SET ERROR CODE CMP TXTBK2+ARG,R4 ; PROGRAM SIZE :: MAX ALLOWED BGT RLKER1 ; ERROR EXIT TST R5 ; IS THIS PRIORITY "DYNAMIC"? BMI RLED5 MOV R4,TXTBK2+ARG ; REPLACE WITH MAX SIZE FOR FIXED PARTITION RLED5: MOV FILID,R5 ; LO RLKGA ; GO ENTER NEXT TASK ; RLKER1: JMP RLKER ; ERROR EXIT .PAGE ; PROCESS FILE IDENTIFICATION NUMBER RLFID: JSR PC,GWBIN ; GET NEXT WORD AND CONVERT TO BINARY MOV R4,FILID ; SAVE FILE ID # JMP RLKGC ; GO PROCESS NEXT COMMAND ; ; PROCESS NAME COMMAND RLNAM: JSR PC,GWRAD ; GET NEXT WORD AND CONVERT TO RAD50 MOV FWRAD,BFNAM ; SAVE NAME MOV FW DRESDI $FS000 = DIRAD1+DIRLN1+$FTDRL+$CDISZ+$TKFNS .ENDC .IFZ DRESDI $FS000 = $FTDRL+$CDISZ+$TKFNS .ENDC $FS001 = $ROSIZ $FS002 = 300. $FS003 = 300. $FS004 = 300. $FS005 = 2500. $FS006 = 1000. ; COMMON AREA. $FS007 = 5000. ; ROS BATCH AREA 5/14/73 $FS008 = 300. $FS009 = 300. ; $ALOD1 = $FS000+$FS001+$FS002+$FS003+$FS004 $ALOD2 = AD FILE I.D. MOV #104,R3 ; LOAD ERROR CODE FOR ILLEGAL FILE I.D. CMP R5,#NDISCS+$SYSFL ; MUST BE GREATER THAN SYSTEM RESERVED BLE RLKER1 ; ERROR EXIT CMP R5,#MAXID1 ; I.S. MUST BE <= MAXIMUM ALLOWED BGT RLKER1 ; ERROR EXIT MOV R5,DFLIST+6 ; LOAD FILE I.D. INTO LIST ; READY TO "DEFINE" ROS FILE JSR PC,DEFIL ; DEFINE 'ROS' FILE ; NOW TRANSFER BATCH ELEMENT TO THE ROS FILRAD+2,BFNAM+2 JMP RLKGC ; GO PROCESS NEXT COMMAND ; ; PROCESS PRIORITY RLPRI: JSR PC,GWBIN ; GET NEXT WORD AND CONVERT TO BINARY MOV R4,R2 BLT RLPR1 ; BRANCH IF NEGATIVE CMP R2,#NPRIOR BGT RLPR1 ; BR IF TOO HIGH MOVB R2,HPRIR ; SAVE PRIORITY JMP RLKGC ; GO TO PROCESS NEXT COMMAND RLPR1: MOV #65,R3 ; SET ERROR CODE JM $FS005+$FS006+$FS007+$FS008+$FS009 .IFL $DSIZE-$ALOD1-$ALOD2 XXXXXXXX ; ONLY 8192 SECTORS AVAIL.- 1/2 MEGAWORDS .ENDC ; .IFNZ $BATCH $BCHID = NDISCS+$SYSFL+1 ; FILE ID FOR BATCH FILE $BCHTP = 7. ; BATCH FILE TYPE $RASIZ = 200. ; NO. OF ENTRIES IN USERS SYMBOL TABLE ; ; IN RASM ; ; NOTE: 4 WORDS/ENTRY $LSDSZ = 1000. E JSR PC,TRANS ; TRANSFER BATCH ELEMENT TO ROS FILE ; NOW INITIALIZE ALL RELEVANT TASK AND PRIORITY TABLES JSR PC,INTAB ; INITIALIZE TASK AND PRIORITY TABLES JMP RLKGA ; GO ENTER NEXT TASK ; RLKER1: JMP RLKER ; ERROR EXIT .PAGE ; PROCESS FILE IDENTIFICATION NUMBER RLFID: JSR PC,GWBIN ; GET NEXT WORD AND CONVERT TO BINARY MOV R4,FILID ; SAVE FILE ID # JMP P RLKER ; ERROR EXIT ; ; PROCESS A SYSTEM TASK RLSYS: JSR PC,GWRAD ; GET NEXT WORD AND CONVERT TO RAD50 MOV #FWRAD,R4 ; ADDRESS OF TASK NAME MOV #SYSTBL,R5 ; FWA OF TABLE RLSY2: CMP (R4),(R5) ; COMPARE FIRST 3 CHAR BEQ RLSY4 ; BR IF SAME RLSY3: ADD #12,R5 ; ADDRESS OF NEXT ENTRY TST (R5) ; END OF TABLE BEQ RLSY1 ;YES, TAKE ERROR EXIT ; NO. OF WORDS RESERVED FOR LOADERS ; ; SYMBOL DIRECTORY (LSD) ; ; NOTE: $LSDSZ MUST BE >/= TO ; $MXOBJ*7/2 (5 WO-DS PE- SY4B6L#D $MXOBJ = 20. ; MAX NO. OF OBJECT MODULES TO BE ; ; LINKED INTO ANY GIVEN LOAD ; ; MODULE. PHDSZE = 28.*$KT11C+30. ; NO. LOCATIONS OF PARTION HEADER 6RLKGC ; GO PROCESS NEXT COMMAND ; ; PROCESS NAME COMMAND RLNAM: JSR PC,GWRAD ; GET NEXT WORD AND CONVERT TO RAD50 MOV FWRAD,BFNAM ; SAVE NAME MOV FWRAD+2,BFNAM+2 JMP RLKGC ; GO PROCESS NEXT COMMAND ; ; PROCESS PRIORITY RLPRI: JSR PC,GWBIN ; GET NEXT WORD AND CONVERT TO BINARY MOV R4,R2 BLT RLPR1 ; BRANCH IF NEGATIVE CMP R2,#NPRIOR BR RLSY2 RLSY4: CMP 2(R4),2(R5) ; CMP CHARACTERS 4 TO 6 BNE RLSY3 ; GO TEST NEXT ENTRY MOV (R5)+,BFNAM ; SET UP TASK MOV (R5)+,BFNAM+2 ; NAME MOV (R5)+,TSKNO ; TASK # MOV (R5)+,FILID ; FILE # MOVB (R5)+,FILTY ; FILE TYPE MOVB (R5)+,HPRIR ; PRIORITY MOV #20,TSKAC ; MAKE A SYSTEM TASK CLR MAXTM ; CLR MAXIMUM TIME /15/73 .ENDC ; FILE IDS FOR SYSTEM TASKS. 6/15/73 ; 6/15/73 $INPFL = $SYSFL + $RESFL - MXTASK + $INPNO ; 6/15/73 $CPTFL = $SYSFL + $RESFL - MXTASK + $CPTNO ; 6/15/73 $FLTFL = $SYSFL + $RESFL - MXTASK + $FLTNO ; 6/15/73 $RLDFL = $SYSFL + $RESFL - MXTASK + $RLDNO ; 6/1 BGT RLPR1 ; BR IF TOO HIGH MOVB R2,HPRIR ; SAVE PRIORITY JMP RLKGC ; GO TO PROCESS NEXT COMMAND RLPR1: MOV #65,R3 ; SET ERROR CODE JMP RLKER ; ERROR EXIT ; ; PROCESS A SYSTEM TASK RLSYS: JSR PC,GWRAD ; GET NEXT WORD AND CONVERT TO RAD50 MOV #FWRAD,R4 ; ADDRESS OF TASK NAME MOV #SYSTBL,R5 ; FWA OF TABLE RLSY2: CMP (R4),(R5) ; COMPARE FIRS INC DEVPG ; SET DEVICE PAGE FLAG JMP RLKGC ; GET NEXT COMMAND RLSY1: MOV #70,R3 ; ERROR CODE JMP RLKER ; ERROR EXIT .PAGE ; PROCESS TIME LIMIT COMMAND RLTIM: JSR PC,GWBIN ; GET NEXT WORD AND CONVERT TO BINARY .IF Z TMDEB TST R4 BEQ RTIM4 ; BR IF ZERO CMP R4,#TIMLM BPL RTIM5 ; BR IF OVER TIME LIMIT 5/73 $RASFL = $SYSFL + $RESFL - MXTASK + $RASNO ; 6/15/73 $TKCFL = $SYSFL + $RESFL - MXTASK + $TKCNO ; 6/15/73 $PCHFL = $SYSFL + $RESFL - MXTASK + $PCHNO ; 6/15/73 $BFPFL = $SYSFL + $RESFL - MXTASK + $BFPNO ; 6/15/73 $TKEFL = $SYSFL + $RESFL - MXTASK + $TKENO ; 4/8/73 $BT1FL = $SYSFL + $RESFL - MXTASK + $BT1NO ; 4/8/73 $BT2FL = T 3 CHAR BEQ RLSY4 ; BR IF SAME RLSY3: ADD #12,R5 ; ADDRESS OF NEXT ENTRY TST (R5) ; END OF TABLE BEQ RLSY1 ;YES, TAKE ERROR EXIT BR RLSY2 RLSY4: CMP 2(R4),2(R5) ; CMP CHARACTERS 4 TO 6 BNE RLSY3 ; GO TEST NEXT ENTRY MOV (R5)+,BFNAM ; SET UP TASK MOV (R5)+,BFNAM+2 ; NAME MOV (R5)+,TSKNO ; TASK # MOV (R5)+,FI.ENDC RTIM3: MOV R4,MAXTM ; SAVE TIME LIMIT JMP RLKGC ; GO PROCESS NEXT COMMAND .IF Z TMDEB RTIM4: CMP @#SWR,#2 ; FOREGROUND OR SYSTEM TASK BEQ RTIM3 ; BR IF YES RTIM5: MOV #66,R3 ; ERROR CODE .ENDC RTIM6: JMP RLKER ; ERROR EXIT ; PROCESS TASK NUMBER COMMAND RLTSK: JSR PC,GWBIN ; GET NEXT WORD AND CONVERT TO BINARY CMP R4,#TASMAX ; WI $SYSFL + $RESFL - MXTASK + $BT2NO ; 4/8/73 ; .ENDC ; MATCHES .IFNZ NDISCS .PAGE ; ; TTYIO SYSGEN PARAMETERS ; NTTYS = 1 ;NO. OF TELETYPES ;IN SYSTEM SYSTTY = 0 ;LOGICAL UNIT NO. OF SYSTEM ;TTY DEVICE MSGBUF = 0 ;MESSAGE BUFFERING OPTION: IF 1, ;DISC MESSAGE BUFFERINGLID ; FILE # MOVB (R5)+,FILTY ; FILE TYPE MOVB (R5)+,HPRIR ; PRIORITY MOV #20,TSKAC ; MAKE A SYSTEM TASK CLR MAXTM ; CLR MAXIMUM TIME INC DEVPG ; SET DEVICE PAGE FLAG JMP RLKGC ; GET NEXT COMMAND RLSY1: MOV #70,R3 ; ERROR CODE JMP RLKER ; ERROR EXIT .PAGE ; PROCESS TIME LIMIT COMMAND RLTIM: JSR PC,GWBIN ; GET NETHIN SYSTEM LIMITS BGT RTSK1 CMP R4,#OVTMIN BLT RTSK1 MOV R4,TSKNO ; SAVE TASK NUMBER JMP RLKGC ; PROCESS NEXT COMMAND RTSK1: MOV #67,R3 BR RTIM6 ; RLTYP: JSR PC,GWBIN ; GET NEXT WORD AND CONVERT TO BINARY MOV R4,FILTY ; SAVE FILE TYPE JMP RLKGC ; ; ; ; ; PROCESS EXIT COMMAND RLXIT: TST SAVR0 ; TEST INPUT ARGUM VERSION IS ;ASSEMBLED. IF 0, CORE VERSION IS ;ASSEMBLED. DISCUN = 1 ;LOGICAL UNIT NO. OF DISC TO BE USED ;FOR MESSAGE BUFFERING DBUFSZ = 1 ;NO. OF 64 WORD DISC SECTORS ALLOCATED ;FOR BUFFERING OF ONE MESSAGE ON DISC FILESZ = 20*DBUFSZ ;NO. OF SECTORS PER FILE NTRYS = 3 ;NO. OF TRYS TO OUTPUT XT WORD AND CONVERT TO BINARY .IF Z TMDEB TST R4 BEQ RTIM4 ; BR IF ZERO CMP R4,#TIMLM BPL RTIM5 ; BR IF OVER TIME LIMIT .ENDC RTIM3: MOV R4,MAXTM ; SAVE TIME LIMIT JMP RLKGC ; GO PROCESS NEXT COMMAND .IF Z TMDEB RTIM4: CMP @#SWR,#2 ; FOREGROUND OR SYSTEM TASK BEQ RTIM3 ; BR IF YES RTIM5: MOV #66,R3 ; ERROR COENT BGE RLXI1 ; BR IF NOT QUEUED BY BATCH EMT NOCKPT MOV BT1NO$,-(SP) CLR -(SP) EMT UNSPND RLXI1: EMT EXIT .PAGE ; GET NEXT WORD FROM ROSLNK 3 CONTROL CARDS ; ; INPUT: RO = FWA OF TASK HEADER ; R1 = CHARACTER POINTER ; ; R2 IS USED AS A CHARACTER POINTER TO THE ASCII BUFFER ; ; OUTPUT: THE WORD WILL BE PLACED IN (TMASC) AND R3 WILL INDICATE DELIMITER ; R3 = 0 EQUAL SIGN ; A CHARACTER ;TO TTY TTOTIM = 15. ;MILLISECOND COUNT FOR TTY ;OUTPUT TIMERS TTITIM = 15. ;SECOND COUNT FOR TTY INPUT/OPERATOR ;RESPONSE TIMERS TTWTIM = 240. ;SECOND COUNT FOR WAIT TIMER NWUCH = 5 ;NO. OF CHARS TO BE OUTPUT FOR ;WARMUP OF A TTY UNIT EOMCH = 33 ;ALTERNATE EODE .ENDC RTIM6: JMP RLKER ; ERROR EXIT ; PROCESS TASK NUMBER COMMAND RLTSK: JSR PC,GWBIN ; GET NEXT WORD AND CONVERT TO BINARY CMP R4,#TASMAX ; WITHIN SYSTEM LIMITS BGT RTSK1 CMP R4,#OVTMIN BLT RTSK1 MOV R4,TSKNO ; SAVE TASK NUMBER JMP RLKGC ; PROCESS NEXT COMMAND RTSK1: MOV #67,R3 BR RTIM6 ; RLTYP: JSR PC,GWBIN R3 = 1 SEMI-COLON ; GWORD: MOV R2,-(SP) MOV R4,-(SP) MOV #FWASC+6,R2 MOV #20040,R3 ; 2 SPACE CODES MOV R3,-(R2) MOV R3,-(R2) MOV R3,-(R2) GWD1: CMP #LWCRD,R1 ; IS CARD BUFFER EMPTY BEQ GWD3 ; BR IF AT END MOVB (R1)+,R4 ; GET CHARACTER CMP R4,#SPAC ; SPACE ? BEQ GWD1 ; YES BRANCH CLR R3 M CHAR (ALT KEY) EOMOPT = 0 ;EOM CHAR OPTION WHERE ; 1 = EOM IS FOLLOWED BY CR AND LF ; 0 = NOT FOLLOWED BY CR AND LF EOMPRT = 0 ;EOM PRINT OPTION WHERE ; 1 = EOM IS PRINTED ; 0 = EOM IS NOT PRINTED EOLCH = 013 ; CHAR BEING USED FOR END OF LINE ON ;TTY INPUT ECHOCH = ; GET NEXT WORD AND CONVERT TO BINARY MOV R4,FILTY ; SAVE FILE TYPE JMP RLKGC ; ; ; ; ; PROCESS EXIT COMMAND RLXIT: TST SAVR0 ; TEST INPUT ARGUMENT BGE RLXI1 ; BR IF NOT QUEUED BY BATCH EMT NOCKPT MOV BT1NO$,-(SP) CLR -(SP) EMT UNSPND RLXI1: EMT EXIT .PAGE ; GET NEXT WORD FROM ROSLNK 3 CONTROL CARDS ; ; INPUT: RO = FWA OF TASK HEADER ; R3 = 0 CMP R4,#EQSN ; = ? BEQ GWEX ; YES INC R3 ; R3 = 1 CMP R4,#SCOL ; ; ? BEQ GWEX ; YES CMP R4,#COMA ; , ? BNE GWD7 ; NO GWEX: MOV (SP)+,R4 MOV (SP)+,R2 RTS PC GWD7: MOVB R4,(R2)+ ; NO, PLACE CHARACTER IN TEMB CMP #LWASC,R2 ; COMPAIR CHAR POINTER WITH END OF TABLE 40 ;ECHO CHAR -- CHAR OUTPUT FOR NO ECHO MRCH = 25 ;MESSAGE RESTART CHAR (CONTROL U) LINELN = 72. ;LINE LENGTH: NO. OF CHARS TO BE ;TYPED IN A LINE ASR37 = 0 ; TYPE OF TELETYPE 11/6/73 ; IF = 0 THEN ASR 33'S 11/6/73 ; IF =1 THEN ASR 37'S 11/6/73 .PAGE ; R1 = CHARACTER POINTER ; ; R2 IS USED AS A CHARACTER POINTER TO THE ASCII BUFFER ; ; OUTPUT: THE WORD WILL BE PLACED IN (TMASC) AND R3 WILL INDICATE DELIMITER ; R3 = 0 EQUAL SIGN ; R3 = 1 SEMI-COLON ; GWORD: MOV R2,-(SP) MOV R4,-(SP) MOV #FWASC+6,R2 MOV #20040,R3 ; 2 SPACE CODES MOV R3,-(R2) MOV R3,-(R2) MOV R3,-(R2) GWD1: CMP #LWCRD,R1 ; IS CARD BNE GWD1 ; NO MOV #71,R3 ; SET ERROR CODE BR GWDER GWD3: MOV #CSIOB,-(SP) EMT CREAD ; READ A CARD MOV #FWCRD,R1 ; RESET CHARACTER POINTER CMP @R1,#DOLR ; ROS 3 CONTROL CARD BNE GWD1 MOV #63,R3 ; SET ERROR CODE GWDER: TST (SP)+ ; REMOVE R4 TST (SP)+ ; REMOVE R2 TST (SP)+ ;*********************************************************************** ;* ** ;* SEGMENT REGISTER ADDRESSES REQUIRED BY THE PROGRAMS WHEN ** ;* IMPLEMENTED ON AN 11/45 OR 11/25, EITHER WITH SEGMENTATION. ** ;* ** .IFNZ $KT11C ;* ;* K E R N E L S E G M E N T R E G I S T E R S ;* $KPAR0 = 772340 ; $KPAR1 = BUFFER EMPTY BEQ GWD3 ; BR IF AT END MOVB (R1)+,R4 ; GET CHARACTER CMP R4,#SPAC ; SPACE ? BEQ GWD1 ; YES BRANCH CLR R3 ; R3 = 0 CMP R4,#EQSN ; = ? BEQ GWEX ; YES INC R3 ; R3 = 1 CMP R4,#SCOL ; ; ? BEQ GWEX ; YES CMP R4,#COMA ; , ? BNE GWD7 ; REMOVE RETURN ADDRESS JMP RLKER .PAGE REGSAV: MOV R4,-(SP) ; RK PUSHED BY "JSR" MOV R3,-(SP) ; SAVE REST MOV R2,-(SP) MOV R1,-(SP) MOV R0,-(SP) JMP (R5) ; ; REGPOP: TST (SP)+ ; POP UNNEEDED R5 MOV (SP)+,R0 MOV (SP)+,R1 MOV (SP)+,R2 MOV (SP)+,R3 MOV (SP)+,R4 RTS R5 ; TEXTIO: MOV #TXT 772342 ; $KPAR2 = 772344 ;KERNEL $KPAR3 = 772346 ; PAGE $KPAR4 = 772350 ; ADDRESS $KPAR5 = 772352 ; REGISTERS $KPAR6 = 772354 ; $KPAR7 = 772356 ; ; $KPDR0 = 772300 ; $KPDR1 = 772302 ; $KPDR2 = 772304 ;KERNEL $KPDR3 = 772306 ; PAGE $KPDR4 = 772310 ; DESC ; NO GWEX: MOV (SP)+,R4 MOV (SP)+,R2 RTS PC GWD7: MOVB R4,(R2)+ ; NO, PLACE CHARACTER IN TEMB CMP #LWASC,R2 ; COMPAIR CHAR POINTER WITH END OF TABLE BNE GWD1 ; NO MOV #71,R3 ; SET ERROR CODE BR GWDER GWD3: MOV #CSIOB,-(SP) EMT CREAD ; READ A CARD MOV #FWCRD,R1 ; RESET CHARACTER POINTER CMP @R1,#DOLR ; LST,-(SP) EMT DISCIO ; READ OR WRITE TST TXTERR ; ANY ERRORS BNE LDR05 RTS PC LDR05: MOV #64,R3 ; ERROR CODE LDR06: TST (SP)+ ; REMOVE RETURN ADDRESS FROM STACK JMP RLKER ; GWRAD: TST R3 ; EQUAL SIGN DELIMITER BNE GWER1 JSR PC,GWORD ;GET TASK ACCESS STATUS CMP R3,#1 ; TEST FOR SEMI-COLON BNE RIPTOR $KPDR5 = 772312 ; REGISTERS $KPDR6 = 772314 ; $KPDR7 = 772316 ; ;* ;* U S E R S E G M E N T R E G I S T E R S ;* $UPAR0 = 777640 ; $UPAR1 = 777642 ; $UPAR2 = 777644 ;USER $UPAR3 = 777646 ; PAGE $UPAR4 = 777650 ; ADDRESS $UPAR5 = 777652 ; REGISTERS $UPAR6 = 777654 ; $UPAR7 = 777656 ROS 3 CONTROL CARD BNE GWD1 MOV #63,R3 ; SET ERROR CODE GWDER: TST (SP)+ ; REMOVE R4 TST (SP)+ ; REMOVE R2 TST (SP)+ ; REMOVE RETURN ADDRESS JMP RLKER .PAGE REGSAV: MOV R4,-(SP) ; RK PUSHED BY "JSR" MOV R3,-(SP) ; SAVE REST MOV R2,-(SP) MOV R1,-(SP) MOV R0,-(SP) JMP (R5) ; ; REGPOP: TS GWER1 MOV #FWASC,-(SP) MOV #FWRAD,-(SP) EMT R50PAK RTS PC GWER1: MOV #71,R3 BR LDR06 ; GWBIN: TST R3 ; EQUAL SIGN DELIMITER BNE GWER1 JSR PC,GWORD ; GET NUMBER CMP #1,R3 ; SEMI-COLON DELIMITER BNE GWER1 MOV #FWASC,-(SP) ; ASCII STRING ADDRESS EMT ASCBIN ; DECIMAL ASCII TO BINARY MOV ; ; $UPDR0 = 777600 ; $UPDR1 = 777602 ; $UPDR2 = 777604 ;USER $UPDR3 = 777606 ; PAGE $UPDR4 = 777610 ; DESCRIPTOR $UPDR5 = 777612 ; REGISTERS $UPDR6 = 777614 ; $UPDR7 = 777616 ; .ENDC .PAGE ;********************************************************************** ;* T (SP)+ ; POP UNNEEDED R5 MOV (SP)+,R0 MOV (SP)+,R1 MOV (SP)+,R2 MOV (SP)+,R3 MOV (SP)+,R4 RTS R5 ; TEXTIO: MOV #TXTLST,-(SP) EMT DISCIO ; READ OR WRITE TST TXTERR ; ANY ERRORS BNE LDR05 RTS PC LDR05: MOV #64,R3 ; ERROR CODE LDR06: TST (SP)+ ; REMOVE RETURN ADDRESS FROM STACK JMP RLKER ; (SP)+,R4 ; BINARY VALUE IN R4 TST (SP)+ ; TEST ERROR PARAMETER RTS PC .PAGE ; READY TO "DEFINE" ROS FILE DEFIL: MOV FILTY,DFLFT ; LOAD FILE TYPE MOV BFSIZE,DFLFT+DEVN ; NO OF SECTOR TO DEFINE MOV #DFLIST,-(SP) EMT DELETE ; FIRST TRY TO DELETE FILE MOVB DFLIST+2,R2 ; ERROR BYTE BEQ RLD24 ; O.K. MOV #64,R3 ; ERROR CODE ** ;* IN THE FOLLOWING EQUATES, A ZERO MEANS DO NOT INCLUDE ** ;* THE OPTION. ** ;* ** ;* C A R D R E A D E R E Q U A T E S ** ;* ** ;********************************************************************** NCR = 1 GWRAD: TST R3 ; EQUAL SIGN DELIMITER BNE GWER1 JSR PC,GWORD ;GET TASK ACCESS STATUS CMP R3,#1 ; TEST FOR SEMI-COLON BNE GWER1 MOV #FWASC,-(SP) MOV #FWRAD,-(SP) EMT R50PAK RTS PC GWER1: MOV #71,R3 BR LDR06 ; GWBIN: TST R3 ; EQUAL SIGN DELIMITER BNE GWER1 JSR PC,GWORD ; GET NU CMP #11,R2 ; THIS ERROR IS O.K. BNE RLKER2 RLD24: MOV #DFLIST,-(SP) EMT DEFINE ; DEFINE FILE TSTB DFLIST+2 ; ERROR BNE RLKER2 RTS PC RLKER2: TST (SP)+ ; REMOVE RETURN ADDRESS JMP RLKER ; NOW TRANSFER BATCH ELEMENT TO THE ROS FILE TRANS: JSR R5,REGSAV ; NEED TABLE POINTERS BELOW MOV BFSECT,R0 ; INIT RELATIVE READ SECTOR # ;NUMBER OF CARD READERS IN SYSTEM BIN = 0 ; DON'T INCLUDE BINARY MODE BCD = 1 ;1 = INCLUDE ALPHANUMERIC MODE, 0 = DONT TTYSW = 1 ; ALLOW CR BACKUP TO TTY IF = 1. INEBC = 0 ; 1=PROVIDE OFR INTERNAL EBCDIC CODE EXEBC = 0 ; 1=PROVIDE FOR EXTERNAL EBCDIC CODE ; (029 CARD CODE) $RES = 1 ; TIMER RES. FOR CREAD (=10.0 MSEC.) $10MBER CMP #1,R3 ; SEMI-COLON DELIMITER BNE GWER1 MOV #FWASC,-(SP) ; ASCII STRING ADDRESS EMT ASCBIN ; DECIMAL ASCII TO BINARY MOV (SP)+,R4 ; BINARY VALUE IN R4 TST (SP)+ ; TEST ERROR PARAMETER RTS PC .PAGE ; READY TO "DEFINE" ROS FILE DEFIL: MOV FILTY,DFLFT ; LOAD FILE TYPE MOV BFSIZE,DFLFT+DEVN ; NO OF SECTOR TO DEFINE CLR R1 ; INIT RELATIVE WRITE SECTOR MOV DFLIST+6,R2 ; WRITE FILE I.D. RLD30: CLRB TXTR.W ; SET TO READ MOV R0,TXTSEC ; SET UP READ SECTOR MOV #$BCHID,TXTHED ; SET UP READ I.D. JSR PC,TEXTIO ; GO READ OR WRITE WITH "TXTLST" MOV R1,TXTSEC ; SET UP WRITE SECTOR MOV R2,TXTHED ; WRITE FILE I.D. INCB TXTR.W ; SET TO WRITE JSR PC,TEX0MS = 10. ;MULTIPLE USING $RES FOR 100 MS $500MS = 50. ;MULTIPLE USING $RES FOR 1/2 SECOND $1SEC = 100. ;MULTIPLE USING $RES FOR 1 SECOND MXTIME = 180. ;MAX SECONDS TO WAIT FOR OPR RESPONSE ; ; NOTE: THE ABOVE TIMES DO NOT NEED TO BE EXACT. SELECT THE ; PROPER VALUES TO GET AS CLOSE AS POSSIBLE TO THE ; TIMES STATES. ; ; ; C / R V E C T O R I N F O R M A T I O N ;MOV #DFLIST,-(SP) EMT DELETE ; FIRST TRY TO DELETE FILE MOVB DFLIST+2,R2 ; ERROR BYTE BEQ RLD24 ; O.K. MOV #64,R3 ; ERROR CODE CMP #11,R2 ; THIS ERROR IS O.K. BNE RLKER2 RLD24: MOV #DFLIST,-(SP) EMT DEFINE ; DEFINE FILE TSTB DFLIST+2 ; ERROR BNE RLKER2 RTS PC RLKER2: TST (SP)+ ; REMOVE RETURN ADTIO ; GO READ OR WRITE WITH "TXTLST INC R0 ; INC SECTOR NUMBER INC R1 ; INC SECTOR NUMBER CMP R0,TXTBK2+ARG ; HAVE WE PASSED THE LAST SECTOR BLT RLD30 ; MORE SECTORS TO GO MOV R1,BFSIZE ; # OF SECTORS USED UP IN LOAD MODULE JSR R5,REGPOP ; RESTORE TABLE POINTERS RTS PC ; NOW INITIALIZE ALL RELEVANT TASK AND PRIORITY TABLES INTAB: ASR R2 ; CR1 = 2 ;LOGICAL UNIT NO. FOR CR # 1 CR2 = 2 ;LOGICAL UNIT NO. FOR CR # 2 CR3 = 0 ;LOGICAL UNIT NO. FOR C/R # 3 CR4 = 0 ;LOGICAL UNIT NO. FOR C/R # 4 ; ; C / R D E V I C E I / O A D D R E S S E S ; CRS.1 = 777160 ;CARD READER STATUS - C/R # 1 CRB1.1 = 777162 ;CARD READER BINARY DATA BUFFER CRB2.1 = 777164 ;CARD READER COMPRESSEDDRESS JMP RLKER ; NOW TRANSFER BATCH ELEMENT TO THE ROS FILE TRANS: JSR R5,REGSAV ; NEED TABLE POINTERS BELOW MOV BFSECT,R0 ; INIT RELATIVE READ SECTOR # CLR R1 ; INIT RELATIVE WRITE SECTOR MOV DFLIST+6,R2 ; WRITE FILE I.D. BR RLD40 RLD30: CLRB TXTR.W ; SET TO READ MOV R0,TXTSEC ; SET UP READ SECTOR MOV #$BCHID,TXTHED ; SET UP READ I.D. ; PRIORITY WAS SHIFTED ABOVE MOVB R2,TPRTY+$ROSM(R1) ; PRIORITY CLRB TSTAT+$ROSM(R1) ; TASK STATUS CLRB IOSTAT+$ROSM(R1); CLEAR IT'S I/O STATUS MOVB TXTBK2+ARG,BSIZE+$ROSM(R1) ; INIT # OF PAGES IN OVERLAY ASL R1 ; WORD INDEX MOV DFLIST+6,R0 ; INIT FILE I.D. TSTB DFLIST+10 ; WAS AN IFD REQUESTED BPL RLD25 ;NO LEAVE AS FILE I.D. MOV DFLIST+4,R DATA ADDRESS ; CRS.2 = 777160 ;CARD READER STATUS - C/O # 2 CRB1.2 = 777162 ;CARD READER BINARY DATA CRB2.2 = 777164 ;CARD READER COMPRESSED DATA ; CRS.3 = 0 ;CAR READER STATUS - C/R # 3 CRB1.3 = 0 ;CARD READER BINARY DATA BUFFER CRB2.3 = 0 ;CARD READER COMPRESSED DATA BUFFER ; CRS.4 = 0 ;CARD READER STATUS - C/R # 4 CRB1.4 = 0 ;CARD JSR PC,TEXTIO ; GO READ OR WRITE WITH "TXTLST" RLD40: MOV R1,TXTSEC ; SET UP WRITE SECTOR MOV R2,TXTHED ; WRITE FILE I.D. INCB TXTR.W ; SET TO WRITE JSR PC,TEXTIO ; GO READ OR WRITE WITH "TXTLST INC R0 ; INC SECTOR NUMBER INC R1 ; INC SECTOR NUMBER CMP R0,TXTBK2+ARG ; HAVE WE PASSED THE LAST SECTOR BLT RLD30 ; MORE SECTO0 ;YES REPLACE WITH IFD FOR CORE DIRECTORY BIS #100000,R0 ; FLAG AS AN IFD RLD25: MOV R0,IFD+$ROSM(R1); PUT ONE IN THE TABLE CLR HEADER+$ROSM(R1); SHOW TASK READY TO RUN ASR R1 ; RETURN TO BYTE INDEX CMP R1,@#TASKS+$ROSM; TASKS = MAX(TASKS,TASKNO) BLE RLD26 MOV R1,@#TASKS+$ROSM RLD26: MOV #$TKFLS+$ROSM,-(SP) ; MUST WRITE OUT CURRENT VERSION EMT SDRITE RTS PC TSKN READER BINARY DATA BUFFER CRB2.4 = 0 ;CARD READER COMPRESSED DATA BUFFER ; CRVC.1 = 230 ; C/R # 1 INTERRUPT VECTOR CRVC.2 = 230 ;C/R # 2 INTERRUPT VECTOR CRVC.3 = 0 ;C/R # 3 INTERRUPT VECTOR CRVC.4 = 0 ;C/R # 4 INTERRUPT VECTOR .PAGE ;********************************************************************** ;* ** ;* RS TO GO JSR R5,REGPOP ; RESTORE TABLE POINTERS RTS PC .BLKW 100 ; PATCH AREA ; NOW INITIALIZE ALL RELEVANT TASK AND PRIORITY TABLES INTAB: ASR R2 ; PRIORITY WAS SHIFTED ABOVE MOVB R2,TPRTY+$ROSM(R1) ; PRIORITY CLRB TSTAT+$ROSM(R1) ; TASK STATUS CLRB IOSTAT+$ROSM(R1); CLEAR IT'S I/O STATUS MOVB TXTBK2+ARG,BSIZE+$ROSM(R1) ; INIT # OF PAGES IN OVERLAY ASL D: .END L I N E P R I N T E R E Q U A T E C A R D S ** ;* ** ;********************************************************************** NLP = 1 ;NUMBER OF LINE PRINTERS IN SYSTEM $DIVA = 1 ; TYPE OF LINE PRINTER(S) 4/8/73 ; = 0 IF PERDATA 4/8/73 ; = 1 IF DIVA R1 ; WORD INDEX MOV DFLIST+6,R0 ; INIT FILE I.D. TSTB DFLIST+10 ; WAS AN IFD REQUESTED BPL RLD25 ;NO LEAVE AS FILE I.D. MOV DFLIST+4,R0 ;YES REPLACE WITH IFD FOR CORE DIRECTORY BIS #100000,R0 ; FLAG AS AN IFD RLD25: MOV R0,IFD+$ROSM(R1); PUT ONE IN THE TABLE CLR HEADER+$ROSM(R1); SHOW TASK READY TO RUN ASR R1 ; RETURN TO BYTE INDEX CMP R1,@ 4/8/73 NLPRTY = 3 ;NUMBER OF L/P PRIORITY LEVELS LPBACK = 1 ; ALLOW LP BACKUP TO TTY IF = 1. LPVC.1 = 200 ;L/P # 1 INTERRUPT VECTOR ADDRESS LPVC.2 = 200 ;L/P # 2 INTERRUPT VECTOR ADDRESS LPVC.3 = 000 ;L/P # 3 INTERRUPT VECTOR ADDRESS LPVC.4 = 000 ;L/P # 4 INTERRUPT VECTOR ADDRESS LPDT.1 = 765010 ;L/P # 1 DATA BUFFER I/O ADDRESS LPDT.2 = 765010 #TASKS+$ROSM; TASKS = MAX(TASKS,TASKNO) BLE RLD26 MOV R1,@#TASKS+$ROSM RLD26: MOV #$TKFLS+$ROSM,-(SP) ; MUST WRITE OUT CURRENT VERSION EMT SDRITE RTS PC TSKND: .END  ;L/P # 2 DATA BUFFER I/O ADDRESS LPDT.3 = 0 ;L/P # 3 DATA BUFFER I/O ADDRESS LPDT.4 = 0 ;L/P # 4 DATA BUFFER I/O ADDRESS LFRG.1 = 765012 ;L/P # 1 LINE FEED REGISTER LFRG.2 = 765012 ;L/P # 2 LINE FEED REGISTER LFRG.3 = 0 ;L/P # 3 LINE FEED REGISTER LFRG.4 = 0 ;L/P # 4 LINE FEED REGISTER CNT.1 = 765014 ;L/P # 1 WORD COUNT REGISTER CNT.2 = 765014  ;L/P # 2 WORD COUNT REGISTER CNT.3 = 0 ;L/P # 3 WORD COUNT REGISTER CNT.4 = 0 ;L/P # 4 WORD COUNT REGISTER CMD.1 = 765016 ;L/P # 1 COMMAND REGISTER CMD.2 = 765016 ;L/P # 2 COMMAND REGISTER CMD.3 = 0 ;L/P # 3 COMMAND REGISTER CMD.4 = 0 ;L/P # 4 COMMAND REGISTER STAT.1 = 765016 ;L/P # 1 STATUS REGISTER STAT.2 = 765016 ;L/P # 2 STATUS REGIS TER STAT.3 = 0 ;L/P # 3 STATUS REGISTER STAT.4 = 0 ;L/P # 4 STATUS REGISTER ; ; LPSIZE = 132. ;NUMBER OF CHARACTERS IN L/P BUFFER LPMXTM = 180. ;MAX NO SECONDS LPRNTR WAITS FOR OPER ACTION LPINH = 4 ;INTERRUPT LEVEL OF L/P $NLINE = 56. ; MAX LINES/PAGE (=CONTROL TAPE. $LPERR = 10. .PAGE ; ;  ; ; MACRO DEF. FOR QUEUES ; .MACRO .QUE A,B,C .BOUND .LIST MEB ; A = .-4 B = .-2 .REPT C .WORD 0 .IFZ $KT11C .WORD .-2 ; NOTE: PPA WHEN RESOLVED BY IPL .IFF .PACK .-2 .ENDC .ENDR .NLIST MEB ; .ENDM ; ; MACRO TO SET PRIORITY LEVEL 7 ; .MACRO .LOCK .LIST MEB  ; .IFZ $1145 BISB #340,@#PS .ENDC .IFNZ $1145 SPL 7 .ENDC .NLIST MEB .ENDM ; ; MACRO TO SIMULATE A 'SOB' INSTRUCTION IF NOT ON A /40 OR A /45. ; .IF Z $1140!$1145 ; .MACRO SOB REG,ADD ; .LIST MEB ; 10/8/73 DEC REG ; BNE ADD ; .NLIST MEB  ; 10/8/73 .ENDM SOB ; .ENDC ; ; ; MACROS FOR THE SAVING AND RESTORING OF THE KERNAL/ROS SCRATCH REGISTERS ; .MACRO SAV.56 .LIST MEB .IF NZ $KT11C MOV @#$KPAR5,-(SP) MOV @#$KPAR6,-(SP) .ENDC .NLIST MEB .ENDM SAV.56 ; .MACRO RST.56 .LIST MEB .IF NZ $KT11C MOV (SP)+,@#$KPAR6 MOV (SP)+,@#$KPAR5 .ENDC .NLIST MEB .ENDM RST.56 ;