LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 TABLE OF CONTENTS 8- 342 LOW CORE -- TRAP VECTORS 9- 456 LOW CORE -- COMMON GLOBAL DATA 10- 596 LOW CORE -- KLINIK DATA BASE 11- 630 LOW CORE -- COMMIUNICATIONS REGION DATA BASE 12- 665 LOW CORE -- QUEUED PROTOCOL DATA BASE 13- 771 LOW CORE -- KEEP-ALIVE DATA BASE 14- 785 LOW CORE -- CORE MANAGER DATA BASE 15- 821 LOW CORE -- CLOCK REQUEST LIST 17- 862 LOW CORE -- TERMINAL SERVICE DATA BASE 18- 920 LOW CORE -- PDP-11 CTY SERVICE DATA BASE 19- 935 LOW CORE -- TERMINAL DRIVER DATA BASE 20- 955 LOW CORE -- DATA LINE SCANNER DATA BASE 21- 985 LOW CORE -- DH-11 DATA BASE 30- 1041 LOW CORE -- DECTAPE DRIVER DATA BASE 32- 1074 LOW CORE -- DISC DRIVER DATA BASE 33- 1095 LOW CORE -- FE DRIVER DATA BASE 34- 1134 LOW CORE -- CD-11 DRIVER DATA BASE 35- 1179 LOW CORE -- LP-20 DRIVER DATA BASE 36- 1266 LOW CORE -- STD (SYSTEM TASK DIRECTORY) 37- 1388 LOW CORE -- ATL (ACTIVE TASK LIST) 38- 1460 LOW CORE -- TPD (TASK PARTITION DIRECTORY) 39- 1521 LOW CORE -- DEVICE QUEUE POINTERS 40- 1574 LOW CORE -- LOGICAL UNIT TABLES 41- 1688 LOW CORE -- KL10 HARDWARE ENVIRONMENT DATA 42- 1746 LOW CORE -- INITLM (INITIALIZATION) 43- 1775 LOW CORE -- TRAP SERVICE FOR COMMON PROGRAM TRAPS 44- 1896 LOW CORE -- CRASH ROUTINE 45- 2001 LOW CORE -- I/O PAGE SNAPSHOT 46- 2052 EXEC MODULE ONE -- TITLE PAGE 47- 2114 EXEC MODULE ONE -- SYSTEM NOTES 48- 2169 EXEC MODULE ONE -- GLOSSARY 48- 2194 MACRO CALLS (MCALL) 49- 2206 EXEC MODULE ONE -- SYMBOLIC DEFINITIONS 65- 2788 EXEC MODULE ONE -- NUL TASK 67- 2893 EXEC MODULE TWO -- SERVICE FOR "EMT" & "TRAP" INSTRUCTIONS 68- 3159 EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST 75- 3550 EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM 80- 3963 SECONDARY PROTOCOL -- COPYRIGHT STATEMENT 81- 4026 SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE 82- 4300 POWERFAIL HANDLER -- COPYRIGHT STATEMENT 83- 4351 POWERFAIL -- POWER DOWN 84- 4437 POWERFAIL -- POWER UP ENTRY 85- 4486 POWERFAIL -- POWER FAIL RESTART 86- 4558 DTE DIRECTIVES -- COPYRIGHT STATEMENT 87- 4619 DTE20 EMT DISPATCH DECODER 88- 4698 $DORBL -- RING THE KL-10 DOORBELL 89- 4729 $DTEOF -- TURN THE DTE20 OFF 90- 4765 $DTEON -- TURN THE DTE20 ON 91- 4896 $DPMYG -- DEPOSIT INTO MY GENERAL SECTION 92- 4943 $EXMYG -- EXAMINE MY GENERAL SECTION 93- 4979 $EXMYN -- EXAMINE MY SECTION FOR PROCESSOR N 94- 5013 $DPMYN -- DEPOSIT INTO MY SECTION FOR COMM WITH PROCESSOR N 95- 5047 $EXHSG -- EXAMINE HIS GENERAL COMMUNICATION SECTION 96- 5082 $EXHSM -- EXAMINE HIS SECTION FOR COMMUNICATING WITH ME 97- 5116 $KLDFX -- EXECUTE A DIAGNOSTIC FUNCTION 98- 5213 $PRVDP -- PRIVILEDGED DEPOSIT 99- 5244 $PRVEX -- PRIVILEDGED EXAMINE DMDTE - DTE DIRECTIVES MODULE MACRO M1113 03-APR-86 20:41 TABLE OF CONTENTS 100- 5283 $RWDRG -- READ/WRITE DIAGNOSTIC REGISTER 101- 5322 CESCHK -- CHECK FOR CLOCK ERROR STOP 102- 5345 ASIGN LUN -- COPYRIGHT STATEMENT 103- 5382 DIRECTIVE -- ASSIGN LUN 104- 5488 GET LUN INFO -- COPYRIGHT STATEMENT 105- 5524 DIRECTIVE -- GET LUN INFORMATION 106- 5593 GET TIME PARAMETERS -- COPYRIGHT STATEMENT 107- 5629 DIRECTIVE -- GET TIME PARAMETERS 108- 5702 SIGNIFICANT EVENT DIRECTIVES -- COPYRIGHT STATEMENT 109- 5744 DIRECTIVE -- CLEAR EVENT FLAG 110- 5794 DIRECTIVE -- SET EVENT FLAG 111- 5844 DIRECTIVE -- DECLARE SIGNIFICANT EVENT 112- 5905 DIRECTIVE -- READ EVENT FLAG 113- 5953 DIRECTIVE -- READ ALL EVENT FLAGS 114- 5996 DIRECTIVE -- WAITFOR SINGLE EVENT FLAG 115- 6059 DIRECTIVE -- WAITFOR LOGICAL 'OR' OF FLAGS 116- 6151 DIRECTIVE -- WAITFOR NEXT SIGNIFICANT EVENT 117- 6189 MARK TIME -- COPYRIGHT STATEMENT 118- 6225 DIRECTIVE -- MARK TIME 119- 6326 CANCEL MARK TIME -- COPYRIGHT STATEMENT 120- 6363 DIRECTIVE -- CANCEL MARK-TIME REQUESTS 121- 6424 EXIT -- COPYRIGHT STATEMENT 122- 6461 DIRECTIVE -- TASK EXIT 123- 6506 QUEUE I/O -- COPYRIGHT STATEMENT 124- 6544 DIRECTIVE -- QUEUE I/O 125- 6872 SEND AND RECEIVE -- COPYRIGT STATEMENT 126- 6913 DIRECTIVE -- SEND DATA 127- 6969 DIRECTIVE -- SEND AND REQUEST OR RESUME 129- 7190 DIRECTIVE -- RECEIVE DATA 130- 7227 DIRECTIVE -- RECEIVE DATA OR EXIT 131- 7268 DIRECTIVE -- RECEIVE DATA OR SUSPEND 132- 7410 SPECIFY SST TABLE -- COPYRIGHT STATEMENT 133- 7446 DIRECTIVE -- SPECIFY SST VECTOR TABLE FOR TASK 134- 7501 SPECIFY AST SERVICE -- COPYRIGHT STATEMENT 135- 7537 DIRECTIVE -- SPECIFY POWER FAIL AST 136- 7595 REQUEST AND EXECUTE -- COPYRIGHT STATEMENT 137- 7631 DIRECTIVE -- TASK SCHEDULING -- REQUEST 138- 7757 GET TASK PARAMETERS -- COPYRIGHT STATEMENT 139- 7793 DIRECTIVE -- GET TASK PARAMETERS 140- 7882 GET PARTITION PARAMETERS -- COPYRIGHT STATEMENT 141- 7919 DIRECTIVE -- GET PARTITION PARAMETERS 142- 8019 CLOCK HANDLER -- COPYRIGHT STATEMENT 143- 8061 CLOCK TICK RECOGNITION 144- 8127 QUEUED PROTOCOL DRIVER -- COPYRIGHT STATEMENT 147- 8344 QUEUED PROTOCOL DRIVER -- PROTOCOL PACKET SERVICE DISPATCH 148- 8383 QUEUED PROTOCOL DRIVER -- DISPATCH TABLE 149- 8421 QUEUED PROTOCOL DRIVER -- UNRECOGNIZED FUNCTION 150- 8431 QUEUED PROTOCOL DRIVER -- ENABLE/DISABLE REMOTE TERMINALS 151- 8442 QUEUED PROTOCOL DRIVER -- ENABLE/DISABLE SENDALL AND XOFF PROCESSING 152- 8455 QUEUED PROTOCOL DRIVER -- ENABLE/DISABLE SENDALLS 153- 8479 QUEUED PROTOCOL -- DIALUP 154- 8499 QUEUED PROTOCOL DRIVER -- HANGUP 155- 8550 QUEUED PROTOCOL DRIVER -- ACKNOWLEDGE DEVICE 156- 8562 QUEUED PROTOCOL DRIVER -- SET LINE ALLOCATION 157- 8576 QUEUED PROTOCOL DRIVER -- SET LINE SPEED 158- 8633 QUEUED PROTOCOL DRIVER -- STOP LINE INPUT 159- 8664 QUEUED PROTOCOL DRIVER -- BREAK-THROUGH WRITE QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 TABLE OF CONTENTS 160- 8681 QUEUED PROTOCOL DRIVER -- XOFF 161- 8709 QUEUED PROTOCOL DRIVER -- XON 162- 8741 QUEUED PROTOCOL DRIVER -- HERE IS INITIAL STATUS 163- 8792 QUEUED PROTOCOL DRIVER -- RETURN TIME OF DAY 164- 8807 QUEUED PROTOCOL DRIVER -- STRING DATA 165- 8840 QUEUED PROTOCOL DRIVER -- LINE NUMBER - CHARACTER 166- 8885 QUEUED PROTOCOL DRIVER -- RETURN TIME OF DAY 167- 8909 QUEUED PROTOCOL DRIVER -- FLUSH DEVICE OUTPUT QUEUE 168- 8928 QUEUED PROTOCOL DRIVER -- RECIEVE KLINIK PARAMETERS 169- 8948 QUEUED PROTOCOL DRIVER -- SET/CLEAR HOST DEBUG MODE 170- 8963 QUEUED PROTOCOL DRIVER -- SENDALL 171- 9112 QUEUED PROTOCOL DRIVER -- COPY BUFFER 172- 9156 QUEUED PROTOCOL DRIVER -- MAP DH-11 TO DM-11 173- 9185 QUEUED PROTOCOL DRIVER -- FIND LINE SPEED 174- 9218 QUEUED PROTOCOL DRIVER -- FIND DEVICE NAME 175- 9253 QUEUED PROTOCOL DRIVER -- FIND DEVICE NAME 176- 9343 DTE-20 DRIVER -- COPYRIGHT STATEMENT 177- 9387 DTE-20 DRIVER -- DTE-20 INTERRUPT HEAD 178- 9463 DTE-20 DRIVER -- TO-10 DONE SERVICE 179- 9567 DTE-20 DRIVER -- TO-11 DONE SERVICE 180- 9683 DTE-20 DRIVER -- DOORBELL SERVICE 181- 9820 DTE-20 DRIVER -- START TO ELEVEN DIRECT TRANSFER 182- 9888 DTE-20 DRIVER -- START TO ELEVEN INDIRECT TRANSFER 183- 9958 DTE-20 DRIVER -- UPDATE AND TRANSMIT FRONT-END KEEP-ALIVE COUNT 184- 9993 DTE-20 DRIVER -- START TO TEN QUEUE 185-10054 DTE-20 DRIVER -- SEND STATUS TO TEN 186-10089 DTE-20 DRIVER -- GET A BUFFER FOR INCOMING TRANSFER 187-10140 DTE-20 DRIVER -- START BYTE TRANSFER 188-10166 DTE-20 DRIVER -- LOAD TO-11 QUEUE NODE 189-10193 TERMINAL DRIVER -- COPYRIGHT STATEMENT 190-10381 TERMINAL DRIVER -- DEFINITIONS 193-10652 TERMINAL DRIVER -- TTINI (TTY QUEUE SERVICE) 194-10692 TERMINAL DRIVER -- TIMEOUT SERVICE 195-10711 TERMINAL DRIVER -- ACK ALL SERVICE 196-10728 TERMINAL DRIVER -- QUEUED PROTOCOL KEEP-ALIVE SERVICE 197-10818 TERMINAL DRIVER -- GENERAL ERROR LOGGING 198-10831 TERMINAL DRIVER -- CTY SERVICE 199-10879 TERMINAL DRIVER -- CTY I/O DONE SERVICE 200-10893 TERMINAL DRIVER -- CTY INPUT SERVICE 201-10910 TERMINAL DRIVER -- CTY OUTPUT SERVICE 202-10939 TERMINAL DRIVER -- $DHOUT (DH-11 OUTPUT INTERRUPT) 203-10982 TERMINAL DRIVER -- STTYDN (REMOVE PROCESSED OUTPUT NODE) 205-11053 TERMINAL DRIVER -- STNXT (START NEXT OUTPUT OPERATION) 206-11100 TERMINAL DRIVER -- .DHSTO (START DH-11 OUTPUT) 207-11129 TERMINAL DRIVER -- $TTOUT (DL11 OUTPUT INTERRUPT) 208-11160 TERMINAL DRIVER -- .DLSTO (START DL-11 OUTPUT) 209-11187 TERMINAL DRIVER -- .TTACK (ACKNOWLEDGE A TTY LINE) 210-11234 TERMINAL DRIVER -- OUTPT3 (PDP-11 CTY OUTPUT ROUTINES) 211-11312 TERMINAL DRIVER -- INPTT (PDP-11 CTY INPUT ROUTINES) 212-11347 TERMINAL DRIVER -- ECHOB (PDP-11 CTY ECHO ROUTINES) 213-11463 TERMINAL DRIVER -- .KW11S (KW11 LINE CLOCK INTERRUPT) 214-11525 TERMINAL DRIVER -- $DHINP (DH-11 INPUT INTERRUPT) 216-11748 TERMINAL DRIVER -- $TTINP (DL-11 INPUT INTERRUPT) 217-11781 TERMINAL DRIVER -- TTSTCH (STORE CHARACTER IN TO10Q) 218-11886 TERMINAL DRIVER -- .DLINT (DL-11E DATASET INTERRUPT SERVICE) 219-11952 TERMINAL DRIVER -- TTCTY (CTY SERVICE) 220-12099 TERMINAL DRIVER -- DHSAV (DH-11 REGISTER SAVE/RESTORE CO-ROUTINE) TTYDRR - GENERAL TERMINAL HAND MACRO M1113 03-APR-86 20:41 TABLE OF CONTENTS 221-12158 TERMINAL DRIVER -- .STDHL (SET UP DH-11 LINE NUMBER IN CONTROLLER) 222-12192 TERMINAL DRIVER -- .DHSPZ (ZERO INPUT SPEED OF A LINE) 223-12220 TERMINAL DRIVER -- .DHSPR (RESET TO DEFAULT AUTO-BAUD SPEED) 224-12267 TERMINAL DRIVER -- .DHSPF (FLAG AUTO-BAUD REPORT) 225-12296 TERMINAL DRIVER -- .DHSPD (SET LINE SPEED) 226-12338 TERMINAL DRIVER -- $DMINT (DM-11/BB MODEM CONTROL INTERRUPT) 227-12448 TERMINAL DRIVER -- .STTYD (DIALUP/HANGUP SERVICE) 228-12492 TERMINAL DRIVER -- .DMHUP (DM-11 HANGUP) 229-12521 TTY DRIVER -- .DMUHU (UN-HANGUP DM11) 230-12548 TERMINAL DRIVER -- .STPDM (STOP DM-11/BB SCAN) 231-12577 TERMINAL DRIVER -- .DLHUP (DL-11E HANGUP) 232-12629 TERMINAL DRIVER -- .DLTMO (DL-11E MODEM CONTROL TIMEOUT) 233-12765 TERMINAL DRIVER -- .DHTMO (DH-11 CONTROLLER TIMEOUT) 234-12952 TERMINAL DRIVER -- .DMTMO (DM-11/BB MODEM CONTROL TIMEOUT) 235-13047 TERMINAL DRIVER -- .TTFDI (INPUT CONTROL SERVICE) 236-13085 TERMINAL DRIVER -- .TTERL (TERMINAL ERROR LOGGING) 237-13142 TERMINAL DRIVER -- .TTXOF (DEVICE DEPENDENT XOFF PROCESSING) 238-13194 TERMINAL DRIVER -- .TTSTP (STOP TERMINAL OUTPUT) 239-13219 TERMINAL DRIVER -- .TTXON (DEVICE DEPENDENT XON PROCESSING) 240-13286 TERMINAL DRIVER -- .TTRST (RESET A TERMINAL LINE) 241-13343 TERMINAL DRIVER -- CHECK INPUT XOFF DELAY 242-13371 TERMINAL DRIVER -- .TTICK (INPUT BUFFER CHECKS) 243-13406 TERMINAL DRIVER -- .TTQDS (QUEUED PROTOCOL INPUT DISABLE SERVICE) 244-13451 TERMINAL DRIVER -- .TTIXC (INPUT CONTROL CHECKS) 245-13484 TERMINAL DRIVER -- .TTDIS (DISABLE INPUT FROM LINE) 246-13567 TERMINAL DRIVER -- .TTENB (ENABLE INPUT FOR LINE) 247-13642 TERMINAL DRIVER -- .TTBTW (BREAK-THROUGH WRITE FUNCTION) 248-13698 TERMINAL DRIVER -- BLDPKT (BUILD A TERMINAL PACKET) 249-13734 TERMINAL DRIVER -- .TTSW2 (FIND OFFSET INTO "STSW2" TABLE) 250-13756 TERMINAL DRIVER -- .TFXON (FORCE AN XON FOR A LINE) 252-13801 SYSTEM COMMON SUBROUTINES -- COPYRIGHT STATEMENT 254-13887 SCOMM MODULE -- BITTBL (ASH/BIC/BIS SIMULATION) 255-13907 SCOMM MODULE -- .CEFN (CONVERT EFN) 256-13978 SCOMM MODULE -- .CKDEL (CLOCK DELETE) 258-14060 SCOMM MODULE -- ..ERLG (ERROR LOGGING) 259-14114 SCOMM MODULE -- ..IODN (SUBROUTINE TO COMPLETE I/O) 260-14170 SCOMM MODULE -- ..DQRN (DEQUEUE A NORMAL REQUEST) 261-14288 SCOMM MODULE -- ..SEFN (SET EVENT FLAG) 262-14329 SCOMM MODULE -- ..DSEV (DECLARE SIGNIFICANT EVENT) 263-14347 SCOMM MODULE -- DIV216 (DIV R2 BY 16) 264-14375 SCOMM MODULE -- ..NDEL (NODE DELETE) 265-14402 SCOMM MODULE -- ..IPRI (INSERT NODE BY PRIORITY) 266-14441 SCOMM MODULE -- ..NADD (NODE ADD) 267-14470 SCOMM MODULE -- ..PICK (PICK A NODE) 268-14515 SCOMM MODULE -- ..ENB0 (ENABLE TASK SWITCHING) 269-14558 SCOMM MODULE -- ..FSTD (FIND STD ENTRY) 270-14609 SCOMM MODULE -- ..ALCB/..ALC2 (ALLOCATE CORE) 271-14701 SCOMM MODULE -- ..DECB/..DECN/..DEC2 (DEALLOCATE CORE) 272-14798 SCOMM MODULE -- ..ALOW (ALLOCATE OR WAIT) 273-14819 SCOMM MODULE -- ..STTY (START TERMINAL OUTPUT) 274-14950 SCOMM MODULE -- ..STPT (STOP TTY) 275-15028 SCOMM MODULE -- ..STCH (STORE CHARACTER IN TO 10 QUEUE) 276-15069 SCOMM MODULE -- ..SACK (SEND ACKNOWLEDGEMENT) 277-15116 SCOMM MODULE -- ..STFC (STORE FUNCTION) 278-15172 SCOMM MODULE -- ..STIN (START INDIRECT FUNCTION) 279-15253 SCOMM MODULE -- ..STQ (STORE IN TO 10 QUEUE) 280-15319 SCOMM MODULE -- ..WFED (WAIT FOR EXAMINE/DEPOSIT) SCOMM - COMMON DATA AND SUBRO MACRO M1113 03-APR-86 20:41 TABLE OF CONTENTS 282-15556 SCOMM MODULE -- ..SWED (START AND WAIT FOR EXAMINE/DEPOSIT) 283-15609 SCOMM MODULE -- ..DTSP (STOP DTE PROTOCOLS) 284-15634 SCOMM MODULE -- ..DTP2 (START SECONDARY PROTOCOL) 285-15661 SCOMM MODULE -- ..DTP1 (START PRIMARY PROTOCOL) 286-15687 SCOMM MODULE -- ..VXFR (VALADATE TRANSFER) 287-15841 SCOMM MODULE -- ..BLXO (BLOCK OUTPUT) ..BLXI (BLOCK INPUT) 288-15938 SCOMM MODULE -- ..VTOL (MAP VIRTUAL TO LOGICAL BLOCK, EXTERNAL) 289-16023 SCOMM MODULE -- ..VVLL (MAP VIRTUAL TO LOGICAL BLOCK, INTERNAL) 291-16125 END RSXFC -- RSX20F PARAMETER FIL MACRO M1113 03-APR-86 20:41 PAGE 1 1 .TITLE RSXFC -- RSX20F PARAMETER FILE (TOPS-10 SYSTEM DEFINITION) 2 .IDENT /013100/ 3 ; 4 ; COPYRIGHT (C) 1977, 1978, 1985 BY 5 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS. 6 ; ALL RIGHTS RESERVED 7 ; 8 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED 9 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION 10 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE- 11 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. 12 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED. 13 ; 14 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT 15 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT 16 ; CORPORATION. 17 ; 18 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS 19 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL. 20 ; 21 ; VERSION 13-10 22 ; 23 ; ALAN D. PECKHAM 19-APR-77 24 ; 25 ; MODIFIED BY: 26 ; 27 ; R. BELANGER -- ELIMINATE 1090T "ARPA" CONFIGURATTION 28 ; R. BELANGER -- ADD 1091 CONFIGURATION 29 ; 30 ; FUNCTION: THIS MODULE PROVIDES THE PARAMETERS FOR ASSEMBLY OF RSX20F FOR 31 ; THE TOPS-10 SYSTEM. 32 ; 33 ; EQUATED SYMBOLS 34 ; 35 000001 $TOP10 =1 ; DEFINE TOPS-10 OPTION 36 37 000001 $LP20 =1 ; INCLUDE LP20 DRIVER 38 000002 L$$P20 =2 ; INCLUDE 2 LP-20'S 39 000001 $CD11 =1 ; INCLUDE CD11 CARD READER DRIVER 40 000001 $RP04 =1 ; INCLUDE RP04 DISK DRIVER 41 000001 $FE =1 ; INCLUDE FE PSEUDO-DEVICE DRIVER 42 000001 $F11 =1 ; INCLUDE FILES-11 ACP 43 000001 $DH11 =1 ; INCLUDE DH11 DRIVER 44 000010 D$$H11 =8. ; INCLUDE 8 DH-11'S 45 000001 $DBDTE =1 ; INCLUDE DTE20 DEBUGGING CODE 46 000001 $DTE =1 ; INCLUDE DTE20 DTE DRIVER 47 000001 R$$11D =1 ; RSX-11D BASE 48 49 .IF DF $T1091 50 $TOP10 =1 ; DEFINE TOPS-10 BASE FOR 1091 51 .ENDC ; $T1091 52 53 .IF DF $TOP10 54 .IF NDF $T1091 55 000001 $DTA =1 ; INCLUDE DECTAPE DRIVER FOR TOPS-10 56 .IFF 57 $RX11 =1 ; INCLUDE FLOPPY DRIVER FOR TOPS-10/1091 RSXFC -- RSX20F PARAMETER FIL MACRO M1113 03-APR-86 20:41 PAGE 1-1 58 .ENDC ; $T1091 59 .ENDC ; $TOP10 60 61 .IF DF $TOP20 62 $RX11 =1 ; INCLUDE FLOPPY DRIVER 63 .ENDC ; $TOP20 RSXFC -- RSX20F PARAMETER FIL MACRO M1113 03-APR-86 20:41 PAGE 2 65 66 .TITLE RSX20F -- RESIDENT EXECUTIVE (SYSTEM DEFINITION) 67 .IDENT /015500/ 68 .ENABL AMA 69 .LIST MEB 70 .NLIST CND 71 ; 72 ; COPYRIGHT (C) 1975, 1984, 1985 BY 73 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS. 74 ; ALL RIGHTS RESERVED 75 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED 76 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION 77 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE- 78 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. 79 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED. 80 ; 81 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT 82 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT 83 ; CORPORATION. 84 ; 85 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS 86 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL. 87 ; 88 ; R. MCLEAN 19-MAR-75 89 ; 90 ; VERSION 15-50 91 ; 92 ; MODIFIED BY: 93 ; 94 ; 95 ; RSX20F -- RESIDENT EXECUTIVE ( MACRO M1113 03-APR-86 20:41 PAGE 3 97 ; 98 ; SET VERSION OF RSX20F EXEC HERE 99 ; 100 000015 RSX$$V = 15 ; VERSION 15 101 000050 RSX$$E = 50 ; EDIT 50 102 ; 103 ; RELEASE VERSION 104 ; 105 000126 RSX$$K = 'V ; KEY FOR RELEASE-TYPE 106 ; "X" -- EXPERIMENTAL 107 ; "Y" -- FIELD/LOAD TEST 108 ; "V" -- RELEASE 109 000000 RSX$$F = 0 ; DEFINE FORM AS NULL 112 000101 RSX$$F = 'A ; TOPS-10 FORM OF THE EXEC. 123 ; 124 ; DTE-20 REGISTER OFFSETS 125 ; 126 000036 DAG3 =36 127 000034 STATD =34 128 000032 DAG2 =32 129 000030 DAG1 =30 130 000022 T11AD =22 131 000020 T10AD =20 132 000016 T11BC =16 133 000010 TNAD1 =10 134 000012 TNAD2 =12 135 000006 DXWD1 =6 136 000004 DXWD2 =4 137 000002 DXWD3 =2 RSX20F -- RESIDENT EXECUTIVE ( MACRO M1113 03-APR-86 20:41 PAGE 4 139 ;+ 140 ; MACRO TO SET IDENT FOR EXEC MODULES. 141 ; FORMAT OF CALL IS: 142 ; IDENT$ VERSION,EDIT 143 ; OR 144 ; IDENT$ VERSION,EDIT,RSX$$F 145 ; IF MODULE CODING CHANGES WITH DIFFERENT FORMS 146 ;- 147 148 .MACRO IDENT$ VER,EDT,FRM,NUM 149 .IF B,NUM 150 .IF B,FRM 151 IDENT$ \VER,\EDT,0,0 152 .IFF 153 .IF EQ, 154 IDENT$ \VER,\EDT,A,0 155 .IFF 156 .IF EQ, 157 IDENT$ \VER,\EDT,B,0 158 .IFF 159 IDENT$ \VER,\EDT,E,0 160 .ENDC 161 .ENDC 162 .ENDC 163 .MEXIT 164 .IFF 165 .IF GE,VER-10 166 .IF GE,EDT-10 167 .LIST 168 .IDENT /'FRM'VER'EDT'0/ 169 .NLIST 170 .IFF 171 .LIST 172 .IDENT /'FRM'VER'0'EDT'0/ 173 .NLIST 174 .ENDC 175 .IFF 176 .IF GE,EDT-10 177 .LIST 178 .IDENT /'FRM'0'VER'EDT'0/ 179 .NLIST 180 .IFF 181 .LIST 182 .IDENT /'FRM'0'VER'0'EDT'0/ 183 .NLIST 184 .ENDC 185 .ENDC 186 .ENDC 187 .ENDM IDENT$ RSX20F -- RESIDENT EXECUTIVE ( MACRO M1113 03-APR-86 20:41 PAGE 6 190 191 .TITLE LC -- LOW CORE FOR RSX20F 192 000000 IDENT$ 15,05,RSX$$F .IDENT /A15050/ 193 ; 194 ; 195 ; COPYRIGHT (C) 1975, 1984, 1985 BY 196 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS. 197 ; ALL RIGHTS RESERVED. 198 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED 199 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION 200 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE- 201 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. 202 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED. 203 ; 204 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT 205 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT 206 ; CORPORATION. 207 ; 208 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS 209 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL. 210 ; 211 ; MODULE: LOW CORE 212 ; 213 ; VERSION: 15-05 214 ; 215 ; AUTHOR: R. MCLEAN 216 ; 217 ; DATE: 19 JUL 75 218 ; 219 ; 220 ; THIS MODULE CONTAINS: 221 ; 222 ; 1 -- CODE TO SERVICE LOW CORE TRAPS AND ERRORS 223 ; 2 -- TRAP VECTORS 224 ; 3 -- SYSTEM COMMON DATABASE 225 ; 4 -- INITIALIZATION CODE 226 ; 5 -- PATCH SPACE 227 ; 228 ; MODIFICATIONS: 229 ; 230 ; NO. DATE PROGRAMMER PURPOSE 231 ; --- ---- ---------- ------- 232 ; 001 03-FEB-77 R. BELANGER ADD DL11E INTERRUPT VECTORS 233 ; 002 15-MAR-77 R. BELANGER LIMIT SIZE OF PATCH SPACE 234 ; TO 40 BYTES AND DEFINE SYMBOL .PAT.. 235 ; 003 18-AUG-77 R. BELANGER DIFFERENTIATE BETWEEN DTE-20 236 ; BUS TIMEOUTS AND OTHERS 237 ; 004 28-AUG-77 R. BELANGER LOAD CRASH CODE INTO 0 AND 2 238 ; TCO 4.2212 08-MAR-79 R. BELANGER INTEGRATE SYTEM COMMON DATABASE 239 ; TCO 4.2217 19-MAR-79 R. BELANGER SNAPSHOT EBUS PARITY ERRORS 240 ; TCO 4.2245 10-APR-79 R. BELANGER ADD FRAMING ERROR LOGGING 241 ; TCO 4.2263 29-MAY-79 R. BELANGER PAD DECTAPE DRIVER DATABASE 242 ; TCO 4.2309 25-JUN-79 R. BELANGER ADD BELL 212A MODEM SUPPORT 243 ; TCO 4.2314 29-JUN-79 R. BELANGER SNAPSHOT I/O PAGE ON CRASH 244 ; TCO 4.2333 16-JUL-79 R. BELANGER ADD KL10 HARDWARE DATA 245 ; TCO 5.1004 12-SEP-79 R. BELANGER ADD NON-CONTIGUOUS DEVICE SUPPORT LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 6-1 246 ; TCO 5.1008 11-OCT-79 R. BELANGER ADD EBUS PARITY ERROR AND DEX ERROR LOGGING 247 ; TCO 5.1009 15-0CT-79 R. BELANGER ADD RH-11 ERROR LOGGING 248 ; TCO 5.1015 25-OCT-79 R. BELANGER ADD TERMINAL INPUT CONTROL TABLE 249 ; TCO 4.1.1035 16-NOV-79 R. BELANGER ADD QUEUE ARBITRATION 250 ; TCO 4.1.1066 10-JAN-80 R. BELANGER ROUND-ROBIN DEFERRED ACKS 251 ; TCO 4.1.1091 12-FEB-80 R. BELANGER FIX MISSING DM-11/BB'S 252 ; TCO 4.1.1092 25-FEB-80 R. BELANGER LOCAL INPUT CONTROL 253 ; TCO 4.1.1104 05-MAR-80 R. BELANGER CHANGE KEEP-ALIVE 254 ; TCO 4.1.1121 19-MAR-80 R. BELANGER SUPPORT BLOCKED DTE-20 255 ; TCO 4.1.1137 -5-APR-80 R. BELANGER REDEFINE PATCH SPACE TO UNUSED VECTORS 256 ; REMOVE DEFERRED ACK SUPPORT 257 ; 258 ;17-DEC-82 TCO 6.1509 D. WEAVER 259 ; FIX CONDITIONAL GENERATION OF ATL SO THAT A NODE'S BACKWARD POINTER 260 ; DOESN'T POINT TO ITSELF. 261 ;19-JAN-83 TCO 6.1508 D. WEAVER 262 ; ADD WORD .KLCPU TO GET THE CPU NUMBER OF THE KL WE ARE RUNNING ON 263 ; SO WE CAN DO WARM RESTART ON SMP SYSTEMS (USED BY KLINIT) 264 ;15-MAR-83 TCO 6.1543 D.WEAVER 265 ; ADD TABLE .KLMF2 WHICH IS A TABLE OF RETRY COUNTERS FOR EACH 266 ; MF20 CONTROLLER. MEMCON WILL NOW TRY TO FORCE THE CONTROLLER 267 ; FOR N RETRIES BEFORE DELETING IT. 268 ;22-MAR-83 TCO 6.1657 D. WEAVER 269 ; ADD WORD ABCHAR TO GET THE LAST AUTOBAUD CHARACTER TYPED (DEBUGGING) 270 ;09-JUN-83 TCO 6.1675 D. WEAVER 271 ; MOVE .ERCOD FROM KLINIT INTO THE FRONT-END STATUS BLOCK FOR WARM 272 ; RESTART AND RENAME IT TO .ERRCD. ALSO MOVE KLPCRG FROM KLINIT TO 273 ; THE STATUS BLOCK AND RENAME IT TO BE .ERRPC. 274 ; REMOVE AUTO-TAKE FLAG AS IT IS NOT LONGER VALID. 275 ;12-JUN-83 TCO 6.1724 D. WEAVER 276 ; ADD COPYRIGHT TO LOW CORE AFTER THE FE STATUS BLOCK. 277 ; LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 7 279 ; 280 ; 281 ; MACRO LIBRARY CALLS 282 ; 283 .MCALL .CRASH,MFPS,CALL 284 .MCALL .PUDEN,.STDEN,.ATLEN 285 .MCALL $DEF,F11DF$ 286 .MCALL .TPDEN,.PUDEN,.DQPEN 287 288 000000 $DEF 289 000000 F11DF$ 290 291 .MACRO RSXVR$ KEY,FRM,VER,EDT,NUM 292 .IF B,NUM 293 .IF NB,FRM 294 RSXVR$ \KEY,\FRM,\VER,\EDT,0 295 .IFF 296 RSXVR$ \KEY,200,\VER,\EDT,0 297 .ENDC 298 .MEXIT 299 .IFF 300 .IF GE,VER-10 301 .IF GE,EDT-10 302 .ASCIZ \'VER'-'EDT'\<200> 303 .IFF 304 .ASCIZ \'VER'-0'EDT'\<200> 305 .ENDC 306 .IFF 307 .IF GE,EDT-10 308 .ASCIZ \0'VER'-'EDT'\<200> 309 .IFF 310 .ASCIZ \0'VER'-0'EDT'\<200> 311 .ENDC 312 .ENDC 313 .ENDC 314 .ENDM RSXVR$ 315 ; 316 ; MACRO FOR GENERATING LOW CORE 317 ; 318 .MACRO PSW PRI,TRPADR,UNIT 319 .IF B, 320 .WORD .-LOWCOD+1 321 .IFF 322 .WORD TRPADR 323 .ENDC ; IFB 324 .IF B, 325 .WORD 0+<40*PRI>+4000 326 .IFF 327 .WORD UNIT+<40*PRI>+4000 328 .ENDC ; IFB 329 .ENDM ; PSW 330 ; 331 .MACRO DHPSW U 332 .WORD $DMINT ; DM-11/BB #'U INTERRUPT 333 .WORD U+<40*6>+4000 334 .WORD .-LOWCOD+1 ; ILLEGAL INTERRUPT 335 .WORD <40*6>+4000 LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 7-1 336 .WORD $DHINP ; DH-11 #'U INPUT INTERRUPT 337 .WORD U+<40*6>+4000 338 .WORD $DHOUT ; DH-11 #'U OUTPUT INTERRUPT 339 .WORD U+<40*6>+4000 340 .ENDM LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 8 LOW CORE -- TRAP VECTORS 342 .SBTTL LOW CORE -- TRAP VECTORS 343 344 000000' LOWCOD==. 345 000000 PSW 6 ; ILLEGAL INTERRUPT 000000 000001 .WORD .-LOWCOD+1 000002 004300 .WORD 0+<40*6>+4000 346 ; 347 000004 PSW 7,COMTRP,0 ; TRAP TO 4 (TIMEOUT) 000004 011562' .WORD COMTRP 000006 004340 .WORD 0+<40*7>+4000 348 ; 349 000010 PSW 7,COMTRP,2 ; RESERVED INSTRUCTION 000010 011562' .WORD COMTRP 000012 004342 .WORD 2+<40*7>+4000 350 ; 351 000014 PSW 6,COMTRP,4 ; T BIT OR BPT TRAP 000014 011562' .WORD COMTRP 000016 004304 .WORD 4+<40*6>+4000 352 ; 353 000020 PSW 6,COMTRP,6 ; IOT TRAP 000020 011562' .WORD COMTRP 000022 004306 .WORD 6+<40*6>+4000 354 ; 355 000024 PSW 7,.PWRDN ; POWER FAIL (POWER DOWN) 000024 020164' .WORD .PWRDN 000026 004340 .WORD 0+<40*7>+4000 356 ; 357 000030 PSW 7,EMTTRP,STXDX ; EMT TRAP 000030 013266' .WORD EMTTRP 000032 004340 .WORD STXDX+<40*7>+4000 358 ; 359 000034 PSW 6,.DRSRN ; TRAP TRAP 000034 013602' .WORD .DRSRN 000036 004300 .WORD 0+<40*6>+4000 360 ; 361 000040 .PAT1.:: ; [4.1.1137] PATCH SPACE -- 20 BYTES 362 000004 .REPT 4 363 PSW 6 ; ILLEGAL INTERRUPTS 364 .ENDR 000040 000041 .WORD .-LOWCOD+1 000042 004300 .WORD 0+<40*6>+4000 000044 000045 .WORD .-LOWCOD+1 000046 004300 .WORD 0+<40*6>+4000 000050 000051 .WORD .-LOWCOD+1 000052 004300 .WORD 0+<40*6>+4000 000054 000055 .WORD .-LOWCOD+1 000056 004300 .WORD 0+<40*6>+4000 365 ; 366 000060 PSW 6,$TTINP,0 ; TTY LINE 0 INPUT (CTY) 000060 037220' .WORD $TTINP 000062 004300 .WORD 0+<40*6>+4000 367 000064 PSW 6,$TTOUT,0 ; TTY LINE 0 OUTPUT (CTY) 000064 035074' .WORD $TTOUT 000066 004300 .WORD 0+<40*6>+4000 368 ; 369 000002 .REPT 2. 370 PSW 6 ; ILLEGAL TRAPS LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 8-1 LOW CORE -- TRAP VECTORS 371 .ENDR 000070 000071 .WORD .-LOWCOD+1 000072 004300 .WORD 0+<40*6>+4000 000074 000075 .WORD .-LOWCOD+1 000076 004300 .WORD 0+<40*6>+4000 372 ; 373 000100 PSW 6,.KW11S ; CLOCK INTERRUPT 000100 036236' .WORD .KW11S 000102 004300 .WORD 0+<40*6>+4000 374 ; 375 000002 .REPT 2 376 PSW 6 ; ILLEGAL INTERRUPT 377 .ENDR 000104 000105 .WORD .-LOWCOD+1 000106 004300 .WORD 0+<40*6>+4000 000110 000111 .WORD .-LOWCOD+1 000112 004300 .WORD 0+<40*6>+4000 378 ; 379 000114 PSW 7,.PARER ; PARITY ERROR 000114 012040' .WORD .PARER 000116 004340 .WORD 0+<40*7>+4000 380 ; 381 000120 .PAT2.:: ; [4.1.1137] PATCH SPACE -- 74 BYTES 382 000017 .REPT 15. 383 PSW 6 ; ILLEGAL INTERRUPT 384 .ENDR 000120 000121 .WORD .-LOWCOD+1 000122 004300 .WORD 0+<40*6>+4000 000124 000125 .WORD .-LOWCOD+1 000126 004300 .WORD 0+<40*6>+4000 000130 000131 .WORD .-LOWCOD+1 000132 004300 .WORD 0+<40*6>+4000 000134 000135 .WORD .-LOWCOD+1 000136 004300 .WORD 0+<40*6>+4000 000140 000141 .WORD .-LOWCOD+1 000142 004300 .WORD 0+<40*6>+4000 000144 000145 .WORD .-LOWCOD+1 000146 004300 .WORD 0+<40*6>+4000 000150 000151 .WORD .-LOWCOD+1 000152 004300 .WORD 0+<40*6>+4000 000154 000155 .WORD .-LOWCOD+1 000156 004300 .WORD 0+<40*6>+4000 000160 000161 .WORD .-LOWCOD+1 000162 004300 .WORD 0+<40*6>+4000 000164 000165 .WORD .-LOWCOD+1 000166 004300 .WORD 0+<40*6>+4000 000170 000171 .WORD .-LOWCOD+1 000172 004300 .WORD 0+<40*6>+4000 000174 000175 .WORD .-LOWCOD+1 000176 004300 .WORD 0+<40*6>+4000 000200 000201 .WORD .-LOWCOD+1 000202 004300 .WORD 0+<40*6>+4000 000204 000205 .WORD .-LOWCOD+1 000206 004300 .WORD 0+<40*6>+4000 000210 000211 .WORD .-LOWCOD+1 000212 004300 .WORD 0+<40*6>+4000 385 ; LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 8-2 LOW CORE -- TRAP VECTORS 387 000214 PSW 6,$DTINT ; DECTAPE INTERRUPT 000214 000000G .WORD $DTINT 000216 004300 .WORD 0+<40*6>+4000 391 ; 392 000002 .REPT 2. 393 PSW 6 ; ILLEGAL INTERRUPT 394 .ENDR 000220 000221 .WORD .-LOWCOD+1 000222 004300 .WORD 0+<40*6>+4000 000224 000225 .WORD .-LOWCOD+1 000226 004300 .WORD 0+<40*6>+4000 395 ; 396 000230 PSW 4,$CDINT ; CARD READER INTERRUPT 000230 000000G .WORD $CDINT 000232 004200 .WORD 0+<40*4>+4000 397 ; 398 000234 .PAT3.:: ; [4.1.1137] PATCH SPACE -- 20 BYTES 399 000004 .REPT 4. 400 PSW 6 ; ILLEGAL INTERRUPT 401 .ENDR 000234 000235 .WORD .-LOWCOD+1 000236 004300 .WORD 0+<40*6>+4000 000240 000241 .WORD .-LOWCOD+1 000242 004300 .WORD 0+<40*6>+4000 000244 000245 .WORD .-LOWCOD+1 000246 004300 .WORD 0+<40*6>+4000 000250 000251 .WORD .-LOWCOD+1 000252 004300 .WORD 0+<40*6>+4000 402 ; 403 000254 PSW 4,.DBINT ; RH-11 (RP04/RP06) INTERRUPT 000254 000000G .WORD .DBINT 000256 004200 .WORD 0+<40*4>+4000 404 ; 405 000260 PSW 6 ; ILLEGAL INTERRUPT 000260 000261 .WORD .-LOWCOD+1 000262 004300 .WORD 0+<40*6>+4000 406 ; 410 000264 PSW 6 ; RX-11 INTERRUPT 000264 000265 .WORD .-LOWCOD+1 000266 004300 .WORD 0+<40*6>+4000 412 ; 413 000270 PSW 6 ; ILLEGAL INTERRUPT 000270 000271 .WORD .-LOWCOD+1 000272 004300 .WORD 0+<40*6>+4000 414 000274 PSW 6 ; ILLEGAL INTERRUPT 000274 000275 .WORD .-LOWCOD+1 000276 004300 .WORD 0+<40*6>+4000 415 ; 416 000300 PSW 6,$TTINP,1 ; DL-11E # 0 INPUT (KLINIK) INTERRUPT 000300 037220' .WORD $TTINP 000302 004301 .WORD 1+<40*6>+4000 417 000304 PSW 6,$TTOUT,1 ; DL-11E # 0 OUTPUT (KLINIK) INTERRUPT 000304 035074' .WORD $TTOUT 000306 004301 .WORD 1+<40*6>+4000 418 ; 419 000310 PSW 6 ; ILLEGAL INTERRUPT 000310 000311 .WORD .-LOWCOD+1 LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 8-3 LOW CORE -- TRAP VECTORS 000312 004300 .WORD 0+<40*6>+4000 420 000314 PSW 6 ; ILLEGAL INTERRUPT 000314 000315 .WORD .-LOWCOD+1 000316 004300 .WORD 0+<40*6>+4000 421 ; 422 000000 U=0 423 .IRP U,<0,1,2,3,4,5,6,7> 424 DHPSW U 425 ; 426 .ENDR 000320 040766' .WORD $DMINT ; DM-11/BB #0 INTERRUPT 000322 004300 .WORD 0+<40*6>+4000 000324 000325 .WORD .-LOWCOD+1 ; ILLEGAL INTERRUPT 000326 004300 .WORD <40*6>+4000 000330 036400' .WORD $DHINP ; DH-11 #0 INPUT INTERRUPT 000332 004300 .WORD 0+<40*6>+4000 000334 034422' .WORD $DHOUT ; DH-11 #0 OUTPUT INTERRUPT 000336 004300 .WORD 0+<40*6>+4000 000340 040766' .WORD $DMINT ; DM-11/BB #1 INTERRUPT 000342 004301 .WORD 1+<40*6>+4000 000344 000345 .WORD .-LOWCOD+1 ; ILLEGAL INTERRUPT 000346 004300 .WORD <40*6>+4000 000350 036400' .WORD $DHINP ; DH-11 #1 INPUT INTERRUPT 000352 004301 .WORD 1+<40*6>+4000 000354 034422' .WORD $DHOUT ; DH-11 #1 OUTPUT INTERRUPT 000356 004301 .WORD 1+<40*6>+4000 000360 040766' .WORD $DMINT ; DM-11/BB #2 INTERRUPT 000362 004302 .WORD 2+<40*6>+4000 000364 000365 .WORD .-LOWCOD+1 ; ILLEGAL INTERRUPT 000366 004300 .WORD <40*6>+4000 000370 036400' .WORD $DHINP ; DH-11 #2 INPUT INTERRUPT 000372 004302 .WORD 2+<40*6>+4000 000374 034422' .WORD $DHOUT ; DH-11 #2 OUTPUT INTERRUPT 000376 004302 .WORD 2+<40*6>+4000 000400 040766' .WORD $DMINT ; DM-11/BB #3 INTERRUPT 000402 004303 .WORD 3+<40*6>+4000 000404 000405 .WORD .-LOWCOD+1 ; ILLEGAL INTERRUPT 000406 004300 .WORD <40*6>+4000 000410 036400' .WORD $DHINP ; DH-11 #3 INPUT INTERRUPT 000412 004303 .WORD 3+<40*6>+4000 000414 034422' .WORD $DHOUT ; DH-11 #3 OUTPUT INTERRUPT 000416 004303 .WORD 3+<40*6>+4000 000420 040766' .WORD $DMINT ; DM-11/BB #4 INTERRUPT 000422 004304 .WORD 4+<40*6>+4000 000424 000425 .WORD .-LOWCOD+1 ; ILLEGAL INTERRUPT 000426 004300 .WORD <40*6>+4000 000430 036400' .WORD $DHINP ; DH-11 #4 INPUT INTERRUPT 000432 004304 .WORD 4+<40*6>+4000 000434 034422' .WORD $DHOUT ; DH-11 #4 OUTPUT INTERRUPT 000436 004304 .WORD 4+<40*6>+4000 000440 040766' .WORD $DMINT ; DM-11/BB #5 INTERRUPT 000442 004305 .WORD 5+<40*6>+4000 000444 000445 .WORD .-LOWCOD+1 ; ILLEGAL INTERRUPT 000446 004300 .WORD <40*6>+4000 000450 036400' .WORD $DHINP ; DH-11 #5 INPUT INTERRUPT 000452 004305 .WORD 5+<40*6>+4000 000454 034422' .WORD $DHOUT ; DH-11 #5 OUTPUT INTERRUPT LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 8-4 LOW CORE -- TRAP VECTORS 000456 004305 .WORD 5+<40*6>+4000 000460 040766' .WORD $DMINT ; DM-11/BB #6 INTERRUPT 000462 004306 .WORD 6+<40*6>+4000 000464 000465 .WORD .-LOWCOD+1 ; ILLEGAL INTERRUPT 000466 004300 .WORD <40*6>+4000 000470 036400' .WORD $DHINP ; DH-11 #6 INPUT INTERRUPT 000472 004306 .WORD 6+<40*6>+4000 000474 034422' .WORD $DHOUT ; DH-11 #6 OUTPUT INTERRUPT 000476 004306 .WORD 6+<40*6>+4000 000500 040766' .WORD $DMINT ; DM-11/BB #7 INTERRUPT 000502 004307 .WORD 7+<40*6>+4000 000504 000505 .WORD .-LOWCOD+1 ; ILLEGAL INTERRUPT 000506 004300 .WORD <40*6>+4000 000510 036400' .WORD $DHINP ; DH-11 #7 INPUT INTERRUPT 000512 004307 .WORD 7+<40*6>+4000 000514 034422' .WORD $DHOUT ; DH-11 #7 OUTPUT INTERRUPT 000516 004307 .WORD 7+<40*6>+4000 427 000040 U=<20-D$$H11>*4 428 ; 429 000520 .PAT4.:: ; [4.1.1137] PATCH SPACE -- 200 BYTES 430 000040 .REPT U 431 PSW 6 ; ILLEGAL INTERRUPT 432 .ENDR 000520 000521 .WORD .-LOWCOD+1 000522 004300 .WORD 0+<40*6>+4000 000524 000525 .WORD .-LOWCOD+1 000526 004300 .WORD 0+<40*6>+4000 000530 000531 .WORD .-LOWCOD+1 000532 004300 .WORD 0+<40*6>+4000 000534 000535 .WORD .-LOWCOD+1 000536 004300 .WORD 0+<40*6>+4000 000540 000541 .WORD .-LOWCOD+1 000542 004300 .WORD 0+<40*6>+4000 000544 000545 .WORD .-LOWCOD+1 000546 004300 .WORD 0+<40*6>+4000 000550 000551 .WORD .-LOWCOD+1 000552 004300 .WORD 0+<40*6>+4000 000554 000555 .WORD .-LOWCOD+1 000556 004300 .WORD 0+<40*6>+4000 000560 000561 .WORD .-LOWCOD+1 000562 004300 .WORD 0+<40*6>+4000 000564 000565 .WORD .-LOWCOD+1 000566 004300 .WORD 0+<40*6>+4000 000570 000571 .WORD .-LOWCOD+1 000572 004300 .WORD 0+<40*6>+4000 000574 000575 .WORD .-LOWCOD+1 000576 004300 .WORD 0+<40*6>+4000 000600 000601 .WORD .-LOWCOD+1 000602 004300 .WORD 0+<40*6>+4000 000604 000605 .WORD .-LOWCOD+1 000606 004300 .WORD 0+<40*6>+4000 000610 000611 .WORD .-LOWCOD+1 000612 004300 .WORD 0+<40*6>+4000 000614 000615 .WORD .-LOWCOD+1 000616 004300 .WORD 0+<40*6>+4000 000620 000621 .WORD .-LOWCOD+1 000622 004300 .WORD 0+<40*6>+4000 LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 8-5 LOW CORE -- TRAP VECTORS 000624 000625 .WORD .-LOWCOD+1 000626 004300 .WORD 0+<40*6>+4000 000630 000631 .WORD .-LOWCOD+1 000632 004300 .WORD 0+<40*6>+4000 000634 000635 .WORD .-LOWCOD+1 000636 004300 .WORD 0+<40*6>+4000 000640 000641 .WORD .-LOWCOD+1 000642 004300 .WORD 0+<40*6>+4000 000644 000645 .WORD .-LOWCOD+1 000646 004300 .WORD 0+<40*6>+4000 000650 000651 .WORD .-LOWCOD+1 000652 004300 .WORD 0+<40*6>+4000 000654 000655 .WORD .-LOWCOD+1 000656 004300 .WORD 0+<40*6>+4000 000660 000661 .WORD .-LOWCOD+1 000662 004300 .WORD 0+<40*6>+4000 000664 000665 .WORD .-LOWCOD+1 000666 004300 .WORD 0+<40*6>+4000 000670 000671 .WORD .-LOWCOD+1 000672 004300 .WORD 0+<40*6>+4000 000674 000675 .WORD .-LOWCOD+1 000676 004300 .WORD 0+<40*6>+4000 000700 000701 .WORD .-LOWCOD+1 000702 004300 .WORD 0+<40*6>+4000 000704 000705 .WORD .-LOWCOD+1 000706 004300 .WORD 0+<40*6>+4000 000710 000711 .WORD .-LOWCOD+1 000712 004300 .WORD 0+<40*6>+4000 000714 000715 .WORD .-LOWCOD+1 000716 004300 .WORD 0+<40*6>+4000 433 ; 434 000720 PSW 6,$TTINP,4 ; DL-11E # 3 INPUT (DN20 #2) 000720 037220' .WORD $TTINP 000722 004304 .WORD 4+<40*6>+4000 435 000724 PSW 6,$TTOUT,4 ; DL-11E # 3 OUTPUT (DN20 #2) 000724 035074' .WORD $TTOUT 000726 004304 .WORD 4+<40*6>+4000 436 ; 437 000730 PSW 6,$TTINP,3 ; DL-11E # 2 INPUT (DN20 #1) 000730 037220' .WORD $TTINP 000732 004303 .WORD 3+<40*6>+4000 438 000734 PSW 6,$TTOUT,3 ; DL-11E # 2 OUTPUT (DN20 #1) 000734 035074' .WORD $TTOUT 000736 004303 .WORD 3+<40*6>+4000 439 ; 440 000740 PSW 6,$TTINP,2 ; DL-11E # 1 INPUT (DN20 #0) 000740 037220' .WORD $TTINP 000742 004302 .WORD 2+<40*6>+4000 441 000744 PSW 6,$TTOUT,2 ; DL-11E # 1 OUTPUT (DN20 #0) 000744 035074' .WORD $TTOUT 000746 004302 .WORD 2+<40*6>+4000 442 ; 444 000750 PSW 4,$LPINT,1 ; LP-20 #1 INTERRUPT 000750 000000G .WORD $LPINT 000752 004201 .WORD 1+<40*4>+4000 445 000754 PSW 4,$LPINT,0 ; LP-20 #0 INTERRUPT 000754 000000G .WORD $LPINT LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 8-6 LOW CORE -- TRAP VECTORS 000756 004200 .WORD 0+<40*4>+4000 450 ; 451 000004 .REPT 4 452 PSW 7,.DTINT ; DTE-20 # 0 INTERRUPT VECTORS 453 .ENDR 000760 030442' .WORD .DTINT 000762 004340 .WORD 0+<40*7>+4000 000764 030442' .WORD .DTINT 000766 004340 .WORD 0+<40*7>+4000 000770 030442' .WORD .DTINT 000772 004340 .WORD 0+<40*7>+4000 000774 030442' .WORD .DTINT 000776 004340 .WORD 0+<40*7>+4000 454 ; LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 9 LOW CORE -- COMMON GLOBAL DATA 456 .SBTTL LOW CORE -- COMMON GLOBAL DATA 457 458 001000 .FESTB:: 459 001000 004176 .WORD <.LCEND-.FESTB>/2 ; [4.2333] WORD SIZE OF THIS STATUS BLOCK 460 001002 .EXEND:: 461 001002 000000 000000 .LIMIT ; DEFINE LIMITS OF THE FRONT-END 462 ; FIRST WORD LOW LIMIT 463 ; SECOND WORD IS HIGH LIMIT 464 ; 465 ; CURRENT TASK POINTER (POINTS TO ACTIVE TASK LIST NODE OF CURRENT TASK 466 ; 467 468 001006 .CRTSK:: 469 001006 000000 .WORD 0 470 471 001010 .COMEF:: 472 001010 000000 000000 .WORD 0,0 ; COMMON EVENT FLAGS 473 474 001014 .SERFG:: 475 001014 000000 .WORD 0 ; SIG EVENT FLAG 476 001016 .SEWFL:: 477 001016 000000 .WORD 0 ; SIG EVENT WAIT FLAG 478 001020 SPSAV:: 479 001020 000000 .WORD 0 ; SAVE AREA FOR STACK 480 ; 481 001022 PARSAV:: 482 001022 .BLKW 2 ; SAVE AREA FOR PARITY ERROR REGISTERS 483 ; (USED BY LC) 484 ; 485 ; .PFAIL INDICATES POWER FAIL IN PROGRESS 486 ; IT IS USED ONLY TO INDICATE TO PRI7 TASKS THAT 487 ; POWER FAIL UNDERWAY AND A RETURN TO THE PROGRAM 488 ; SHOULD NOT OCCUR 489 ; 490 001026 .PFAIL:: 491 001026 000000 .WORD 0 492 001030 .PFIOW:: 493 001030 000000 .WORD 0 ; POWER FAIL RECOVERY FLAG 494 001032 PWRXSP:: 495 001032 000000 .WORD 0 ; BUFFER FOR STACK POINTER 496 001034 CROBAR:: 497 001034 000000 .WORD 0 ; POWER-UP CROBAR TIMER 498 001036 .VERNO:: 499 001036 RSXVR$ RSX$$K,RSX$$F,RSX$$V,RSX$$E ; RSX20F VERSION NUMBER. 001036 126 101 061 .ASCIZ <126><101>\15-50\<200> 001041 065 055 065 001044 060 200 000 500 .EVEN 501 001050 .CKASS:: 502 001050 000000 .WORD 0 ; AST ADDRESS FOR CURRENT TASK (CLOCK) 503 001052 .PFASS:: 504 001052 000000 .WORD 0 ; AST ADDRESS FOR CURRENT TASK (POWER FAIL) 505 506 001054 .BLKW 20 507 ; 508 001114 .MSIZE:: 509 001114 001600 .WORD 1600 ; MEMORY SIZE LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 9-1 LOW CORE -- COMMON GLOBAL DATA 510 001116 EMTSTK:: 511 001116 000000 .WORD 0 ; EMT SAVED DURING EMT STACK 512 001120 TRPASV:: 513 001120 000000 .WORD 0 ; SAVED PS OF EMT/TRAP 514 515 ; 516 ; THE NEXT TWO BYTES MUST BE KEPT TOGETHER IN THEIR CURRENT ORDER !!!! 517 ; 518 519 001122 .NOERR:: 520 001122 000401 .WORD 401 ; DO NOT RECOGNIZE KL ERROR IF NON-ZERO 521 001123' .NOHLT == .NOERR+1 ; DO NOT PANIC IF KL HALTS IF NON-ZERO 522 523 001124 .TKTN:: 524 001124 000000 .WORD 0 ; NON ZERO IF TKTN REQUIRED 525 001126 .KLITK:: 526 001126 000000 .WORD 0 ; KL ATTENTION REQUEST 527 528 001130 .KLERQ:: 529 001130 000000 .WORD 0 ; KLERR SNAPSHOT INTERLOCK 530 531 001132 .KLIWD:: 532 001132 000000 .WORD 0 ; KL WORD TO DETERMINE BOOT PARAMETERS 533 534 001134 .TICKS:: 535 001134 000000 .WORD 0 ; CLOCK TICK COUNTER 536 001136 .CLKSW:: 537 001136 000000 .WORD 0 ; CLOCK OVERFLOW SWITCH 538 001140 .DATE:: 539 001140 .DATE3:: 540 001140 000000 .WORD 0 ; FRONT-END DATE VALID FLAG 541 ; FRONT-END DATE IS VALID IF .NE. 0 542 001142 .YEAR:: 543 001142 003673 .WORD 1979. ; DECIMAL YEAR 544 001144 .DAY:: 545 001144 000 .BYTE 0. ; DAY OF MONTH 546 001145 .MON:: 547 001145 000 .BYTE 0. ; MONTH OF YEAR 548 001146 .DST:: 549 001146 000 .BYTE 0 ; DAYLIGHT SAVING TIME FLAG 550 001147 .DOW:: 551 001147 000 .BYTE 0 ; DAY OF WEEK INDEX 552 001150 .SSM:: 553 001150 000000 000400 .WORD 0,400 ; ELAPSED TIME IN SECONDS SINCE MIDNIGHT 554 001154 .TKPS:: 555 001154 000074 .WORD .CYLTM ; CLOCK RATE IN JIFFIES 556 557 001156 .SYUIC:: 558 001156 002405 .WORD 5.*400+5. ; SYSTEM UIC [5,5] 559 001160 .BTPRM:: 560 001160 000000 .WORD 0 ; BOOT PARAMETER 561 001162 .BTSCH:: 562 001162 000000 .WORD 0 ; CHARACTER SAVED -- FOR SECONDARY PROTOCOL 563 001164 .ACKAL:: 564 001164 000001 .WORD 1 ; ACK ALL SWITCH 565 001166 .KLERW:: 566 001166 000000 .WORD 0 ; KL WORD FOR ERROR REPORTING BY SETSPD LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 9-2 LOW CORE -- COMMON GLOBAL DATA 567 001170 .FEMOD:: 568 001170 000001 .WORD 1 ; FRONT END CONSOLE MODE FLAG 569 001172 .KLRLD:: 570 001172 000 .BYTE 0 ;KL RELOAD FLAG 571 001173 .KLFCF:: 572 001173 001 .BYTE 1 ;KL FAULT CONTINUATION FLAG 573 001174 .KLFLG:: 574 001174 000000 .WORD 0 ; FLAG FOR PARSER TO INDICATE STATE OF KL10 575 001176 .KLCPU:: 576 001176 000 .BYTE 0 ;CPU NUMBER FOR WARM RESTART 577 001177 .KLMON:: 578 001177 000 .BYTE 0 ;CODE FOR MONITOR THAT IS RUNNING (NOT USED) 579 580 ; THESE ARE THE CODES FOR DIFFERENT MONITORS: (SAME AS GETTAB) 581 582 000001 .MNT10=1 ;TOPS10 583 000002 .MNITS=2 ;ITS 584 000003 .MNTNX=3 ;TENEX 585 000004 .MNT20=4 ;TOPS20 586 587 000001 MF2RTY=1 ;RETRY EACH CONTROLLER ONCE 588 000004 MF2NUM==4. ;NUMBER OF MF20 CONTROLLERS 589 590 001200 .KLMF2:: ;RETRY COUNTERS FOR MF20 CONTROLLERS 591 000004 .REPT MF2NUM 592 .BYTE MF2RTY ;RETRY COUNT BEFORE WE GIVE UP ON MF20 593 .ENDR 001200 001 .BYTE MF2RTY ;RETRY COUNT BEFORE WE GIVE UP ON MF20 001201 001 .BYTE MF2RTY ;RETRY COUNT BEFORE WE GIVE UP ON MF20 001202 001 .BYTE MF2RTY ;RETRY COUNT BEFORE WE GIVE UP ON MF20 001203 001 .BYTE MF2RTY ;RETRY COUNT BEFORE WE GIVE UP ON MF20 594 .EVEN ;BACK TO A WORD BOUNDRY LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 10 LOW CORE -- KLINIK DATA BASE 596 .SBTTL LOW CORE -- KLINIK DATA BASE 597 ; 598 ; NOTE -- 599 ; THE NEXT 32 BYTES MUST REMAIN CONTIGUOUS AND IN THE SAME ORDER 600 ; 601 602 001204 .KLNPB:: 603 001204 000026 .WORD KLNPLN ; KLINIK PARAMETER BLOCK LENGTH 604 ; BUFFER FOR PARAMETER SAVE STARTS HERE 605 001206 .KLNLB:: ; 606 001206 .KLNBC:: 607 001206 000024 .WORD KLNPLN-2 ; BYTE COUNT FOR TRANSFER 608 001210 .KLNFT:: 609 001210 000000 .WORD 0 ; KLINIK ENABLE START TIME -- 610 ; SECONDS SINCE MIDNIGHT 611 001212 .KLNFD:: 612 001212 000 000 000 .BYTE 0,0,0,0 ; KLINIK ENABLE START DATE 001215 000 613 001216 .KLNTT:: 614 001216 000000 .WORD 0 ; KLINIK ENABLE END TIME -- 615 ; SECONDS SINCE MIDNIGHT 616 001220 .KLNTD:: 617 001220 000 000 000 .BYTE 0,0,0,0 ; KLINIK ENABLE END DATE 001223 000 618 001224 .KLNMD:: 619 001224 000 000 .BYTE 0,0 ; KLINIK MODE FLAGS 620 .EVEN ; 621 000016 KLNLGL==.-.KLNFT ; KLINIK EVENT LOG BUFFER LENGTH IN BYTES 622 001226' .KLNPE==. 623 001226 .KLNPW:: 624 001226 000000 000000 000000 .WORD 0,0,0 ; ASCII PASSWORD FOR KLINIK 625 .EVEN 626 000026 KLNPLN==.-.KLNBC ; SAVE BUFFER LENGTH IN BYTES 627 001234 .KLNSW:: 628 001234 000 000 .BYTE 0,0 ; KLINIK LINE STATUS BYTES LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 11 LOW CORE -- COMMIUNICATIONS REGION DATA BASE 630 .SBTTL LOW CORE -- COMMIUNICATIONS REGION DATA BASE 631 632 ; 633 ; POINTERS TO COMMUNICATIONS AREA 634 ; 635 001236 COMBSE:: 636 001236 000000 .WORD 0 ; BASE OF COMMUNICATION AREA 637 001240 PRMEMN:: 638 001240 000000 .WORD 0 ; MY PROCESSOR NUMBER 639 001242 DEPOF:: 640 001242 000000 .WORD 0 ; DEPOSIT OFFSET FROM EXAMINE 641 ; 642 ; 643 ; PROCESSOR IDENTIFICATION TABLE 644 ; 645 ; PROTBL FORMAT: 646 ; 647 ; DTENM -- ADDRESS OF DTE-20 TO ACCESS THIS PROCESSOR 648 000000 DTENM=0 649 ; EMYN -- ADDRESS TO COMMUNICATE TO PROCESSOR 0 650 000002 EMYN==2 651 ; DMYN -- ADDRESS TO COMMUNICATE TO PROCESSOR 0 (WRITE) 652 000004 DMYN==4 653 ; EHSG -- ADDRESS FROM GENERAL 654 000006 EHSG==6 655 ; EHSM -- ADDRESS FROM SPECIFIC 656 000010 EHSM==10 657 658 001244 PROTBL:: 659 001244 174400 .WORD 174400 ; DTENM 660 001246 000000 .WORD 0 ; EMYN 661 001250 000000 .WORD 0 ; DMYN 662 001252 000000 .WORD 0 ; EHSG 663 001254 000000 .WORD 0 ; EHSM LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 12 LOW CORE -- QUEUED PROTOCOL DATA BASE 665 .SBTTL LOW CORE -- QUEUED PROTOCOL DATA BASE 666 667 001256 .CRQZ:: 668 001256 000000 .WORD 0 ; CURRENT QUEUE SIZE 669 001260 .CPFN:: 670 001260 000000 .WORD 0 ; CURRENT FUNCTION IN TO 10 QUEUE 671 001262 .CPDV:: 672 001262 000000 .WORD 0 ; CURRENT DEVICE IN TO 10 QUEUE 673 001264 .CRSZ:: 674 001264 000000 .WORD 0 ; CURRENT SIZE OF TO10 QUEUE 675 001266 .CRPB:: 676 001266 000000 .WORD 0 ; CURRENT BUFFER POINTER IN TO10 QUEUE 677 001270 .CRHD:: 678 001270 000000 .WORD 0 ; HEAD OF CURRENT TO10 QUEUE 679 001272 .CRSB:: 680 001272 000000 .WORD 0 ; POINTER TO CURRENT FUNCTION SIZE 681 682 001274 DTEMSK:: 683 001274 000000 .WORD 0 ; DTE DEVICE EVENT FLAG MASK 684 001276 DTEADR:: 685 001276 000000 .WORD 0 ; DTE DEVICE INDIRECT FLAG ADDRESS 686 687 001300 TO11NP:: 688 001300 000000 .WORD 0 ; NODE POINTER FOR NODE 689 001302 TO11HD:: 690 001302 000000 .WORD 0 ; COUNT OF BYTES IN THIS QUEUE 691 001304 TO11FN:: 692 001304 000000 .WORD 0 ; TO ELEVEN FUNCTION CODE 693 001306 TO11DV:: 694 001306 000000 .WORD 0 ; TO ELEVEN DEVICE NUMBER 695 001310 TO11SP:: 696 001310 000000 .WORD 0 ; SPACE 697 001312 TO11FW:: 698 001312 000000 .WORD 0 ; FIRST WORD OF FUNCTION 700 001314 TO11GW:: 701 001314 177777 .WORD -1 ; GUARD WORD FOR DTE20 702 001316 TO11AS:: 703 001316 000000 .WORD 0 ; ADDRESS SAVE 704 001320 TO11BS:: 705 001320 000000 .WORD 0 ; BYTE COUNT SAVE 706 001322 TO10SZ:: 707 001322 000000 .WORD 0 ; BYTE COUNT OF XFER 708 001324 TO10AS:: 709 001324 000000 .WORD 0 711 712 001326 STSTT:: 713 001326 000001 000000 000000 .WORD 1,0,0 ; TO 10 STATUS 714 715 001332' TO10QC==STSTT+4 ; TO 10 QUEUE COUNT 716 001333' TO11QC==STSTT+5 ; TO 11 QUEUE COUNT 717 718 001334 001334' TO10Q:: .WORD . ; LISTHEAD FOR TO 10 QUEUE 719 001336 001334' .WORD .-2 720 721 001340 EQSZ:: 722 001340 000000 .WORD 0 ; ELEVEN QUEUE SIZE 723 LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 12-1 LOW CORE -- QUEUED PROTOCOL DATA BASE 724 001342 TO11Q:: 725 001342 000000 .WORD 0 ; TO 11 QUEUE 726 001344 STATI:: 727 001344 .BLKW 3 ; STATUS/SCRATCH WORD FOR EXAMINES/DEPOSITS 728 001352 DEXST:: 729 001352 000000 .WORD 0 ; DEXDONE TIMEOUT 730 001354 DEXTM3:: 731 001354 000000 .WORD 0 ; EXAMINE WORD 3 (TEMP STORAGE) TO BE 732 001356 DEXTM2:: 733 001356 000000 .WORD 0 ; EXAMINE WORD 2 -USED ONLY BECAUSE EXAMINE 734 001360 DEXTM1:: 735 001360 000000 .WORD 0 ; EXAMINE WORD 1 - OR DEPOSIT MAY FAIL AND MUST BE REDONE 736 001362 .PRADR:: 737 001362 000000 .WORD 0 ; ADDRESS OF PRIV OFFSET TABLE ENTRY 738 001364 .PRSTA:: 739 001364 174434 .WORD 174434 ; PRIVILEDGED DTE20 STATUS WORD 740 001366 .PRDTE:: 741 001366 174400 .WORD 174400 ; FIRST DTE ADDRESS OF PRIVILEDGED DTE20 742 001370 .PRDCT:: 743 001370 000000 .WORD 0 ; DOORBELL COUNTER FOR KLINIT. 744 ; 745 ; THE NEXT TWO BYTES MUST REMAIN CONTIGUOUS AND IN THE SAME ORDER 746 ; 747 001372 .DXRTY:: 748 001372 001 .BYTE 1 ; [5.1008] DEX ERROR PROCESSING FLAG (SEE BELOW) 749 001373 .EBRTY:: 750 001373 001 .BYTE 1 ; [5.1008] EBUS PARITY ERROR PROCESSING FLAG 751 ; +1 -- NO EBUS PARITY ERROR 752 ; 0 -- RETRY SUCCEEDED 753 ; -1 -- RETRY FAILED 754 ; 755 ; THE NEXT TWO WORDS MUST REMAIN CONTIGUOUS AND IN THE SAME ORDER 756 ; 757 001374 .EBPEQ:: 758 001374 000000 .WORD 0 ; [4.2217] CONTAINS POINTER TO DTE-20 EBUS PARITY 759 ; SNAPSHOT IF ALLOCATION WAS SUCCESSFUL 760 001376 .EBPEC:: 761 001376 000000 .WORD 0 ; [5.1008] COUNT OF NODES IN THIS QUEUE (MAX = 2) 762 763 001400 .PRPSE:: 764 001400 000 .BYTE 0 ; PROTOCOL PAUSE FLAG 765 001401 TOXQIP:: 766 001401 000 .BYTE 0 ; [4.1.1035] TO 10 QUEUE IN PROGRESS FLAG 767 .EVEN 768 001402 .DTBLK:: 769 001402 000000 .WORD 0 ; [4.1.1121] HOLDS RE-ENTRY POINT TO START BLOCKED TRANSFER LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 13 LOW CORE -- KEEP-ALIVE DATA BASE 771 .SBTTL LOW CORE -- KEEP-ALIVE DATA BASE 772 773 001404 KPAL0:: 774 001404 000000 000000 000000 .WORD 0,0,0 ; 10 KEEP ALIVE 775 001412 OKPAL0:: 776 001412 000000 .WORD 0 ; SAVED KEEP ALIVE 777 001414 KPAL1:: 778 001414 000000 .WORD 0 ; [4.1.1104] 11 KEEP ALIVE 779 001416 .KPAC:: 780 001416 000005 .WORD 5 ; COUNTER FOR KEEP-ALIVE. 781 001420 .KACFL:: 782 001420 000001 .WORD 1 ; [4.2107] FLAG TO ALLOW XCT 71 783 ; [4.2107] OR DUMP/RELOAD ON KEEP-ALIVE CEASE LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 14 LOW CORE -- CORE MANAGER DATA BASE 785 .SBTTL LOW CORE -- CORE MANAGER DATA BASE 786 787 076000 .BGBST==76000 ; START OF BIG BUFFER 788 002000 .BGLEN==2000 ; LENGTH OF BIG BUFFER 789 790 ; 791 ; POOL FREE CORE AREA 792 ; 793 001422 .BGBUF:: 794 001422 076000 .WORD .BGBST ; BIG BUFFER SPACE (1000 EACH) 795 001424 002000 .WORD .BGLEN 796 797 001426 .FREPL:: 798 001426 000000 .WORD 0 ; FREE POOL BASE ADDRESS 799 001430 000000 .WORD 0 ; FREE POOL SIZE IN BYTES 800 801 001432 .POLLH:: 802 001432 001436' .WORD .POLST ; HEAD OF POOL 803 001434 002336' .WORD .POLND ; END OF POOL 804 805 001436 .POLST:: 806 001436 001476' .WORD .+40 807 001440 001432' .WORD .POLLH 808 001442 .BLKW 14. 809 810 000015 .REPT 15 811 .WORD .+40 812 .WORD .-40 813 .BLKW 14. 814 .ENDR 001476 001536' .WORD .+40 001500 001440' .WORD .-40 001536 001576' .WORD .+40 001540 001500' .WORD .-40 001576 001636' .WORD .+40 001600 001540' .WORD .-40 001636 001676' .WORD .+40 001640 001600' .WORD .-40 001676 001736' .WORD .+40 001700 001640' .WORD .-40 001736 001776' .WORD .+40 001740 001700' .WORD .-40 001776 002036' .WORD .+40 002000 001740' .WORD .-40 002036 002076' .WORD .+40 002040 002000' .WORD .-40 002076 002136' .WORD .+40 002100 002040' .WORD .-40 002136 002176' .WORD .+40 002140 002100' .WORD .-40 002176 002236' .WORD .+40 002200 002140' .WORD .-40 002236 002276' .WORD .+40 002240 002200' .WORD .-40 002276 002336' .WORD .+40 002300 002240' .WORD .-40 815 LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 14-1 LOW CORE -- CORE MANAGER DATA BASE 816 002336 .POLND:: 817 002336 001432' .WORD .POLLH 818 002340 002300' .WORD .-40 819 002342 .BLKW 14. LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 15 LOW CORE -- CLOCK REQUEST LIST 821 .SBTTL LOW CORE -- CLOCK REQUEST LIST 822 823 ; 824 ; CLOCK LIST (LIST OF ENTRIES IN THE CLOCK QUEUE TO RECEIVE 825 ; EVENT FLAGS SET ON COMPLETION OF CLOCK TIMER 826 ; 827 000007 .CLKSZ==7. ; CLOCK QUEUE SIZE 828 000014 C.SZ=14 ; CLOCK ENTRY SIZE LOCAL DEFINITION (NOTE: IS A GLOBAL VAR.) 829 830 002376 .CLKBA:: 831 002376 007202' .WORD TTYTSK 832 002400 000000 .WORD 0 833 002402 000074 .WORD .CYLTM 834 002404 000074 .WORD .CYLTM 835 002406 000100 .WORD EF.TMO 836 002410 007222' .WORD TTYTSK+A.EF 837 000074 .REPT .CLKSZ-2*C.SZ 838 .WORD 0 839 .ENDR 002412 000000 .WORD 0 002414 000000 .WORD 0 002416 000000 .WORD 0 002420 000000 .WORD 0 002422 000000 .WORD 0 002424 000000 .WORD 0 002426 000000 .WORD 0 002430 000000 .WORD 0 002432 000000 .WORD 0 002434 000000 .WORD 0 002436 000000 .WORD 0 002440 000000 .WORD 0 002442 000000 .WORD 0 002444 000000 .WORD 0 002446 000000 .WORD 0 002450 000000 .WORD 0 002452 000000 .WORD 0 002454 000000 .WORD 0 002456 000000 .WORD 0 002460 000000 .WORD 0 002462 000000 .WORD 0 002464 000000 .WORD 0 002466 000000 .WORD 0 002470 000000 .WORD 0 002472 000000 .WORD 0 002474 000000 .WORD 0 002476 000000 .WORD 0 002500 000000 .WORD 0 002502 000000 .WORD 0 002504 000000 .WORD 0 002506 000000 .WORD 0 002510 000000 .WORD 0 002512 000000 .WORD 0 002514 000000 .WORD 0 002516 000000 .WORD 0 002520 000000 .WORD 0 002522 000000 .WORD 0 002524 000000 .WORD 0 LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 15-1 LOW CORE -- CLOCK REQUEST LIST 002526 000000 .WORD 0 002530 000000 .WORD 0 002532 000000 .WORD 0 002534 000000 .WORD 0 002536 000000 .WORD 0 002540 000000 .WORD 0 002542 000000 .WORD 0 002544 000000 .WORD 0 002546 000000 .WORD 0 002550 000000 .WORD 0 002552 000000 .WORD 0 002554 000000 .WORD 0 002556 000000 .WORD 0 002560 000000 .WORD 0 002562 000000 .WORD 0 002564 000000 .WORD 0 002566 000000 .WORD 0 002570 000000 .WORD 0 002572 000000 .WORD 0 002574 000000 .WORD 0 002576 000000 .WORD 0 002600 000000 .WORD 0 840 002602 .CLKEA:: 841 002602 000000 .WORD 0 ; END OF CLOCK LIST 842 LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 17 LOW CORE -- TERMINAL SERVICE DATA BASE 862 .SBTTL LOW CORE -- TERMINAL SERVICE DATA BASE 863 864 002604 .INHDM:: 865 002604 000001 .WORD 1 ; INBIBIT/ENABLE REMOTE LINES (0)=ENABLE 866 002606 .ABCNT:: 867 002606 000000 .WORD 0 ; COUNT OF AUTO BAUDED LINES 868 002610 .ABFLG:: 869 002610 000000 .WORD 0 ; FLAG FOR "SETSPD" 870 ; 871 ; SENDALL MESSAGE POINTERS 872 ; 873 002612 .SNDLP:: 874 002612 000000 .WORD 0 ; POINTER TO SENDALL BUFFER IN USE 875 002614 .SNDBF:: 876 002614 000000 000000 000000 .WORD 0,0,0,0 ; SENDALL BUFFER RING 002622 000000 877 002624 .SNDCN:: 878 002624 000000 000000 000000 .WORD 0,0,0,0 ; SENDALL TTY COUNT (THIS AND ABOVE MUST BE TOGETHER) 002632 000000 879 002634 .CRSND:: 880 002634 000000 .WORD 0 ; CURRENT SENDALL NODE POINTER -- USED BY ..STTY 881 002636 .BRKCH:: 882 002636 000034 .WORD '\-100 ; BREAK CHARACTER (^\) 883 002640 .TTP11:: 884 002640 000000 .WORD 0 ; TTY PDP11 INPUT IN PROGRESS 885 002642 .CTYPT:: 886 002642 CTYPTR:: 887 002642 003004' .WORD DLTBL ; CONSOLE TTY TABLE POINTER 888 002644 .KLNPT:: 889 002644 KLNPTR:: 890 002644 003014' .WORD DLETBL ; KLINIK LINE POINTER 891 002646 $UNIT:: 892 002646 000000 .WORD 0 ; DH-11 UNIT NUMBER IF CTY 893 002650 $BTMSK:: 894 002650 000000 .WORD 0 ; MASK TO START CONSOLE TTY (DH-11) 895 002652 DMTMP:: 896 002652 000000 .WORD 0 ; TEMPORARY STORAGE FOR DM-11/BB CONTROLLER NUMBER 897 002654 DHTMP:: 898 002654 000000 .WORD 0 ; TEMPORARY STORAGE FOR DH-11 CONTROLLER NUMBER 899 002656 DLTMP:: 900 002656 000000 .WORD 0 ; TEMPORARY STORAGE FOR DL-11 CONTROLLER NUMBER 901 002660 DHSTSV:: 902 002660 000000 .WORD 0 ; DH-11 TABLE POINTER SAVE 903 002662 .TTELQ:: 904 002662 000000 .WORD 0 ; [4.2245] TERMINAL ERROR LOGGING QUEUE POINTER 905 ; 906 ; THE NEXT TWO WORDS MUST REMAIN CONTIGUOUS AND IN THE SAME ORDER 907 ; 908 002664 .TTELC:: 909 002664 000000 .WORD 0 ; [5.1008] COUNT OF NODES IN THIS QUEUE 910 002666 .TTELB:: 911 002666 000000 .WORD 0 ; [4.2245] TEMPORARY BUFFER FOR ERROR LOGGING 912 ; 913 ; THE NEXT TWO BYTES MUST REMAIN CONTIGUOUS AND IN THE SAME ORDER 914 ; 915 002670 TMOCNT:: 916 002670 012 .BYTE ^D10 ; [4.2309] TERMINAL TIMEOUT COUNTER LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 17-1 LOW CORE -- TERMINAL SERVICE DATA BASE 917 002671 026 .BYTE ^D22 ; [4.2309] MODEM TIMEOUT COUNTER 918 .EVEN LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 18 LOW CORE -- PDP-11 CTY SERVICE DATA BASE 920 .SBTTL LOW CORE -- PDP-11 CTY SERVICE DATA BASE 921 922 002672 CTYSTS:: 923 000020 .REPT 16. ; CONSOLE TTY STATUS BLOCK 924 .WORD 0 925 .ENDR 002672 000000 .WORD 0 002674 000000 .WORD 0 002676 000000 .WORD 0 002700 000000 .WORD 0 002702 000000 .WORD 0 002704 000000 .WORD 0 002706 000000 .WORD 0 002710 000000 .WORD 0 002712 000000 .WORD 0 002714 000000 .WORD 0 002716 000000 .WORD 0 002720 000000 .WORD 0 002722 000000 .WORD 0 002724 000000 .WORD 0 002726 000000 .WORD 0 002730 000000 .WORD 0 926 002732 CNT:: 927 002732 000000 .WORD 0 928 002734 BYCNT:: 929 002734 000000 .WORD 0 930 002736 CRADR:: 931 002736 000000 .WORD 0 932 002740 TTPKT:: 933 002740 000000 .WORD 0 ; I/O PACKET ADDRESS LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 19 LOW CORE -- TERMINAL DRIVER DATA BASE 935 .SBTTL LOW CORE -- TERMINAL DRIVER DATA BASE 936 937 ; 938 ; TTY TABLES 939 ; 940 ; CONTROLLER IMPURE DATA TABLES (INDEXED BY CONTROLLER (UNIT) NUMBER) 941 ; 942 943 002742 DMTBL:: 944 002742 170500 003054' .WORD 170500,DHTBL ; DM11BB TABLE 945 002746 170510 003254' .WORD 170510,16.*8.+DHTBL 946 002752 170520 003454' .WORD 170520,16.*8.*2.+DHTBL 947 002756 170530 003654' .WORD 170530,16.*8.*3.+DHTBL 948 002762 170540 004054' .WORD 170540,16.*8.*4.+DHTBL 949 002766 170550 004254' .WORD 170550,16.*8.*5.+DHTBL 950 002772 170560 004454' .WORD 170560,16.*8.*6.+DHTBL 951 002776 170570 004654' .WORD 170570,16.*8.*7.+DHTBL 952 003002 000000 .WORD 0 ; [5.1004] END OF TABLE MARKER 953 003004' DMTBE==. LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 20 LOW CORE -- DATA LINE SCANNER DATA BASE 955 .SBTTL LOW CORE -- DATA LINE SCANNER DATA BASE 956 957 ; THE DATA LINE SCANNER TABLE IS ORGANIZED AS FOLLOWS: 958 ; THE DL-11'S ARE FIRST IN THE TABLE AND THE DL-11C (CTY) IS UNIT 0, 959 ; THE DL-11E(S) FOLLOW AND BEGIN AT UNIT 1. THE DH-11'S FOLLOW THE 960 ; DL-11E'S 961 ; 962 ; ALL TERMINALS HAVE A FOUR WORD ENTRY IN THE FOLLOWING FORMAT: 963 ; 964 ; +----------------------------------+ 965 ; ! OUTPUT THREAD LIST POINTER ! 966 ; +----------------------------------+ 967 ; ! EXTERNAL PAGE POINTER ! 968 ; +----------------------------------+ 969 ; ! TERMINAL SPEED WORD ! 970 ; +----------------------------------+ 971 ; ! TERMINAL STATUS WORD ! 972 ; +----------------------------------+ 973 974 003004 TTTBL:: ; START OF DATA LINE SCANNER TABLE 975 003004 DLTBL:: 976 003004 000000 177560 000000 .WORD 0,177560,0,TT.CTY ; TERMINAL STATUS FOR DL-11C 003012 000002 977 003014 DLETBL:: ; DL-11E TABLE 978 003014 000000 175610 000000 .WORD 0,175610,0,TT.RMT ; DL-11E # 0 (KLINIK) 003022 000100 979 003024 000000 175630 000000 .WORD 0,175630,0,TT.RMT ; DL-11E # 1 003032 000100 980 003034 000000 175640 000000 .WORD 0,175640,0,TT.RMT ; DL-11E # 2 003042 000100 981 003044 000000 175650 000000 .WORD 0,175650,0,TT.RMT ; DL-11E # 3 003052 000100 982 000005 DLCNT ==.-DLTBL/8. ; NUMBER OF DL-11'S 983 000004 DLECNT ==.-DLETBL/8. ; NUMBER OF DL-11E'S LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 21 LOW CORE -- DH-11 DATA BASE 985 .SBTTL LOW CORE -- DH-11 DATA BASE 986 987 003054 DHTBL:: 988 000020 .REPT 16. 989 .WORD 0,160020,16003,0 ; DH-11 MUX CONRTOLLER 0 990 .ENDR 003054 000000 160020 016003 .WORD 0,160020,16003,0 ; DH-11 MUX CONRTOLLER 0 003062 000000 003064 000000 160020 016003 .WORD 0,160020,16003,0 ; DH-11 MUX CONRTOLLER 0 003072 000000 003074 000000 160020 016003 .WORD 0,160020,16003,0 ; DH-11 MUX CONRTOLLER 0 003102 000000 003104 000000 160020 016003 .WORD 0,160020,16003,0 ; DH-11 MUX CONRTOLLER 0 003112 000000 003114 000000 160020 016003 .WORD 0,160020,16003,0 ; DH-11 MUX CONRTOLLER 0 003122 000000 003124 000000 160020 016003 .WORD 0,160020,16003,0 ; DH-11 MUX CONRTOLLER 0 003132 000000 003134 000000 160020 016003 .WORD 0,160020,16003,0 ; DH-11 MUX CONRTOLLER 0 003142 000000 003144 000000 160020 016003 .WORD 0,160020,16003,0 ; DH-11 MUX CONRTOLLER 0 003152 000000 003154 000000 160020 016003 .WORD 0,160020,16003,0 ; DH-11 MUX CONRTOLLER 0 003162 000000 003164 000000 160020 016003 .WORD 0,160020,16003,0 ; DH-11 MUX CONRTOLLER 0 003172 000000 003174 000000 160020 016003 .WORD 0,160020,16003,0 ; DH-11 MUX CONRTOLLER 0 003202 000000 003204 000000 160020 016003 .WORD 0,160020,16003,0 ; DH-11 MUX CONRTOLLER 0 003212 000000 003214 000000 160020 016003 .WORD 0,160020,16003,0 ; DH-11 MUX CONRTOLLER 0 003222 000000 003224 000000 160020 016003 .WORD 0,160020,16003,0 ; DH-11 MUX CONRTOLLER 0 003232 000000 003234 000000 160020 016003 .WORD 0,160020,16003,0 ; DH-11 MUX CONRTOLLER 0 003242 000000 003244 000000 160020 016003 .WORD 0,160020,16003,0 ; DH-11 MUX CONRTOLLER 0 003252 000000 LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 22 LOW CORE -- DH-11 DATA BASE 992 000020 .REPT 16. 993 .WORD 0,160040,16003,0 ; DH-11 MUX CONTROLLER 1 994 .ENDR 003254 000000 160040 016003 .WORD 0,160040,16003,0 ; DH-11 MUX CONTROLLER 1 003262 000000 003264 000000 160040 016003 .WORD 0,160040,16003,0 ; DH-11 MUX CONTROLLER 1 003272 000000 003274 000000 160040 016003 .WORD 0,160040,16003,0 ; DH-11 MUX CONTROLLER 1 003302 000000 003304 000000 160040 016003 .WORD 0,160040,16003,0 ; DH-11 MUX CONTROLLER 1 003312 000000 003314 000000 160040 016003 .WORD 0,160040,16003,0 ; DH-11 MUX CONTROLLER 1 003322 000000 003324 000000 160040 016003 .WORD 0,160040,16003,0 ; DH-11 MUX CONTROLLER 1 003332 000000 003334 000000 160040 016003 .WORD 0,160040,16003,0 ; DH-11 MUX CONTROLLER 1 003342 000000 003344 000000 160040 016003 .WORD 0,160040,16003,0 ; DH-11 MUX CONTROLLER 1 003352 000000 003354 000000 160040 016003 .WORD 0,160040,16003,0 ; DH-11 MUX CONTROLLER 1 003362 000000 003364 000000 160040 016003 .WORD 0,160040,16003,0 ; DH-11 MUX CONTROLLER 1 003372 000000 003374 000000 160040 016003 .WORD 0,160040,16003,0 ; DH-11 MUX CONTROLLER 1 003402 000000 003404 000000 160040 016003 .WORD 0,160040,16003,0 ; DH-11 MUX CONTROLLER 1 003412 000000 003414 000000 160040 016003 .WORD 0,160040,16003,0 ; DH-11 MUX CONTROLLER 1 003422 000000 003424 000000 160040 016003 .WORD 0,160040,16003,0 ; DH-11 MUX CONTROLLER 1 003432 000000 003434 000000 160040 016003 .WORD 0,160040,16003,0 ; DH-11 MUX CONTROLLER 1 003442 000000 003444 000000 160040 016003 .WORD 0,160040,16003,0 ; DH-11 MUX CONTROLLER 1 003452 000000 LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 23 LOW CORE -- DH-11 DATA BASE 996 000020 .REPT 16. 997 .WORD 0,160060,16003,0 ; DH-11 MUX CONTROLLER 2 998 .ENDR 003454 000000 160060 016003 .WORD 0,160060,16003,0 ; DH-11 MUX CONTROLLER 2 003462 000000 003464 000000 160060 016003 .WORD 0,160060,16003,0 ; DH-11 MUX CONTROLLER 2 003472 000000 003474 000000 160060 016003 .WORD 0,160060,16003,0 ; DH-11 MUX CONTROLLER 2 003502 000000 003504 000000 160060 016003 .WORD 0,160060,16003,0 ; DH-11 MUX CONTROLLER 2 003512 000000 003514 000000 160060 016003 .WORD 0,160060,16003,0 ; DH-11 MUX CONTROLLER 2 003522 000000 003524 000000 160060 016003 .WORD 0,160060,16003,0 ; DH-11 MUX CONTROLLER 2 003532 000000 003534 000000 160060 016003 .WORD 0,160060,16003,0 ; DH-11 MUX CONTROLLER 2 003542 000000 003544 000000 160060 016003 .WORD 0,160060,16003,0 ; DH-11 MUX CONTROLLER 2 003552 000000 003554 000000 160060 016003 .WORD 0,160060,16003,0 ; DH-11 MUX CONTROLLER 2 003562 000000 003564 000000 160060 016003 .WORD 0,160060,16003,0 ; DH-11 MUX CONTROLLER 2 003572 000000 003574 000000 160060 016003 .WORD 0,160060,16003,0 ; DH-11 MUX CONTROLLER 2 003602 000000 003604 000000 160060 016003 .WORD 0,160060,16003,0 ; DH-11 MUX CONTROLLER 2 003612 000000 003614 000000 160060 016003 .WORD 0,160060,16003,0 ; DH-11 MUX CONTROLLER 2 003622 000000 003624 000000 160060 016003 .WORD 0,160060,16003,0 ; DH-11 MUX CONTROLLER 2 003632 000000 003634 000000 160060 016003 .WORD 0,160060,16003,0 ; DH-11 MUX CONTROLLER 2 003642 000000 003644 000000 160060 016003 .WORD 0,160060,16003,0 ; DH-11 MUX CONTROLLER 2 003652 000000 LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 24 LOW CORE -- DH-11 DATA BASE 1000 000020 .REPT 16. 1001 .WORD 0,160100,16003,0 ; DH-11 MUX CONTROLLER 3 1002 .ENDR 003654 000000 160100 016003 .WORD 0,160100,16003,0 ; DH-11 MUX CONTROLLER 3 003662 000000 003664 000000 160100 016003 .WORD 0,160100,16003,0 ; DH-11 MUX CONTROLLER 3 003672 000000 003674 000000 160100 016003 .WORD 0,160100,16003,0 ; DH-11 MUX CONTROLLER 3 003702 000000 003704 000000 160100 016003 .WORD 0,160100,16003,0 ; DH-11 MUX CONTROLLER 3 003712 000000 003714 000000 160100 016003 .WORD 0,160100,16003,0 ; DH-11 MUX CONTROLLER 3 003722 000000 003724 000000 160100 016003 .WORD 0,160100,16003,0 ; DH-11 MUX CONTROLLER 3 003732 000000 003734 000000 160100 016003 .WORD 0,160100,16003,0 ; DH-11 MUX CONTROLLER 3 003742 000000 003744 000000 160100 016003 .WORD 0,160100,16003,0 ; DH-11 MUX CONTROLLER 3 003752 000000 003754 000000 160100 016003 .WORD 0,160100,16003,0 ; DH-11 MUX CONTROLLER 3 003762 000000 003764 000000 160100 016003 .WORD 0,160100,16003,0 ; DH-11 MUX CONTROLLER 3 003772 000000 003774 000000 160100 016003 .WORD 0,160100,16003,0 ; DH-11 MUX CONTROLLER 3 004002 000000 004004 000000 160100 016003 .WORD 0,160100,16003,0 ; DH-11 MUX CONTROLLER 3 004012 000000 004014 000000 160100 016003 .WORD 0,160100,16003,0 ; DH-11 MUX CONTROLLER 3 004022 000000 004024 000000 160100 016003 .WORD 0,160100,16003,0 ; DH-11 MUX CONTROLLER 3 004032 000000 004034 000000 160100 016003 .WORD 0,160100,16003,0 ; DH-11 MUX CONTROLLER 3 004042 000000 004044 000000 160100 016003 .WORD 0,160100,16003,0 ; DH-11 MUX CONTROLLER 3 004052 000000 LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 25 LOW CORE -- DH-11 DATA BASE 1004 000020 .REPT 16. 1005 .WORD 0,160120,16003,0 ; DH-11 MUX CONTROLLER 4 1006 .ENDR 004054 000000 160120 016003 .WORD 0,160120,16003,0 ; DH-11 MUX CONTROLLER 4 004062 000000 004064 000000 160120 016003 .WORD 0,160120,16003,0 ; DH-11 MUX CONTROLLER 4 004072 000000 004074 000000 160120 016003 .WORD 0,160120,16003,0 ; DH-11 MUX CONTROLLER 4 004102 000000 004104 000000 160120 016003 .WORD 0,160120,16003,0 ; DH-11 MUX CONTROLLER 4 004112 000000 004114 000000 160120 016003 .WORD 0,160120,16003,0 ; DH-11 MUX CONTROLLER 4 004122 000000 004124 000000 160120 016003 .WORD 0,160120,16003,0 ; DH-11 MUX CONTROLLER 4 004132 000000 004134 000000 160120 016003 .WORD 0,160120,16003,0 ; DH-11 MUX CONTROLLER 4 004142 000000 004144 000000 160120 016003 .WORD 0,160120,16003,0 ; DH-11 MUX CONTROLLER 4 004152 000000 004154 000000 160120 016003 .WORD 0,160120,16003,0 ; DH-11 MUX CONTROLLER 4 004162 000000 004164 000000 160120 016003 .WORD 0,160120,16003,0 ; DH-11 MUX CONTROLLER 4 004172 000000 004174 000000 160120 016003 .WORD 0,160120,16003,0 ; DH-11 MUX CONTROLLER 4 004202 000000 004204 000000 160120 016003 .WORD 0,160120,16003,0 ; DH-11 MUX CONTROLLER 4 004212 000000 004214 000000 160120 016003 .WORD 0,160120,16003,0 ; DH-11 MUX CONTROLLER 4 004222 000000 004224 000000 160120 016003 .WORD 0,160120,16003,0 ; DH-11 MUX CONTROLLER 4 004232 000000 004234 000000 160120 016003 .WORD 0,160120,16003,0 ; DH-11 MUX CONTROLLER 4 004242 000000 004244 000000 160120 016003 .WORD 0,160120,16003,0 ; DH-11 MUX CONTROLLER 4 004252 000000 LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 26 LOW CORE -- DH-11 DATA BASE 1008 000020 .REPT 16. 1009 .WORD 0,160140,16003,0 ; DH-11 MUX CONTROLLER 5 1010 .ENDR 004254 000000 160140 016003 .WORD 0,160140,16003,0 ; DH-11 MUX CONTROLLER 5 004262 000000 004264 000000 160140 016003 .WORD 0,160140,16003,0 ; DH-11 MUX CONTROLLER 5 004272 000000 004274 000000 160140 016003 .WORD 0,160140,16003,0 ; DH-11 MUX CONTROLLER 5 004302 000000 004304 000000 160140 016003 .WORD 0,160140,16003,0 ; DH-11 MUX CONTROLLER 5 004312 000000 004314 000000 160140 016003 .WORD 0,160140,16003,0 ; DH-11 MUX CONTROLLER 5 004322 000000 004324 000000 160140 016003 .WORD 0,160140,16003,0 ; DH-11 MUX CONTROLLER 5 004332 000000 004334 000000 160140 016003 .WORD 0,160140,16003,0 ; DH-11 MUX CONTROLLER 5 004342 000000 004344 000000 160140 016003 .WORD 0,160140,16003,0 ; DH-11 MUX CONTROLLER 5 004352 000000 004354 000000 160140 016003 .WORD 0,160140,16003,0 ; DH-11 MUX CONTROLLER 5 004362 000000 004364 000000 160140 016003 .WORD 0,160140,16003,0 ; DH-11 MUX CONTROLLER 5 004372 000000 004374 000000 160140 016003 .WORD 0,160140,16003,0 ; DH-11 MUX CONTROLLER 5 004402 000000 004404 000000 160140 016003 .WORD 0,160140,16003,0 ; DH-11 MUX CONTROLLER 5 004412 000000 004414 000000 160140 016003 .WORD 0,160140,16003,0 ; DH-11 MUX CONTROLLER 5 004422 000000 004424 000000 160140 016003 .WORD 0,160140,16003,0 ; DH-11 MUX CONTROLLER 5 004432 000000 004434 000000 160140 016003 .WORD 0,160140,16003,0 ; DH-11 MUX CONTROLLER 5 004442 000000 004444 000000 160140 016003 .WORD 0,160140,16003,0 ; DH-11 MUX CONTROLLER 5 004452 000000 LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 27 LOW CORE -- DH-11 DATA BASE 1012 000020 .REPT 16. 1013 .WORD 0,160160,16003,0 ; DH-11 MUX CONTROLLER 6 1014 .ENDR 004454 000000 160160 016003 .WORD 0,160160,16003,0 ; DH-11 MUX CONTROLLER 6 004462 000000 004464 000000 160160 016003 .WORD 0,160160,16003,0 ; DH-11 MUX CONTROLLER 6 004472 000000 004474 000000 160160 016003 .WORD 0,160160,16003,0 ; DH-11 MUX CONTROLLER 6 004502 000000 004504 000000 160160 016003 .WORD 0,160160,16003,0 ; DH-11 MUX CONTROLLER 6 004512 000000 004514 000000 160160 016003 .WORD 0,160160,16003,0 ; DH-11 MUX CONTROLLER 6 004522 000000 004524 000000 160160 016003 .WORD 0,160160,16003,0 ; DH-11 MUX CONTROLLER 6 004532 000000 004534 000000 160160 016003 .WORD 0,160160,16003,0 ; DH-11 MUX CONTROLLER 6 004542 000000 004544 000000 160160 016003 .WORD 0,160160,16003,0 ; DH-11 MUX CONTROLLER 6 004552 000000 004554 000000 160160 016003 .WORD 0,160160,16003,0 ; DH-11 MUX CONTROLLER 6 004562 000000 004564 000000 160160 016003 .WORD 0,160160,16003,0 ; DH-11 MUX CONTROLLER 6 004572 000000 004574 000000 160160 016003 .WORD 0,160160,16003,0 ; DH-11 MUX CONTROLLER 6 004602 000000 004604 000000 160160 016003 .WORD 0,160160,16003,0 ; DH-11 MUX CONTROLLER 6 004612 000000 004614 000000 160160 016003 .WORD 0,160160,16003,0 ; DH-11 MUX CONTROLLER 6 004622 000000 004624 000000 160160 016003 .WORD 0,160160,16003,0 ; DH-11 MUX CONTROLLER 6 004632 000000 004634 000000 160160 016003 .WORD 0,160160,16003,0 ; DH-11 MUX CONTROLLER 6 004642 000000 004644 000000 160160 016003 .WORD 0,160160,16003,0 ; DH-11 MUX CONTROLLER 6 004652 000000 LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 28 LOW CORE -- DH-11 DATA BASE 1016 000020 .REPT 16. 1017 .WORD 0,160200,16003,0 ; DH-11 MUX CONTROLLER 7 1018 .ENDR 004654 000000 160200 016003 .WORD 0,160200,16003,0 ; DH-11 MUX CONTROLLER 7 004662 000000 004664 000000 160200 016003 .WORD 0,160200,16003,0 ; DH-11 MUX CONTROLLER 7 004672 000000 004674 000000 160200 016003 .WORD 0,160200,16003,0 ; DH-11 MUX CONTROLLER 7 004702 000000 004704 000000 160200 016003 .WORD 0,160200,16003,0 ; DH-11 MUX CONTROLLER 7 004712 000000 004714 000000 160200 016003 .WORD 0,160200,16003,0 ; DH-11 MUX CONTROLLER 7 004722 000000 004724 000000 160200 016003 .WORD 0,160200,16003,0 ; DH-11 MUX CONTROLLER 7 004732 000000 004734 000000 160200 016003 .WORD 0,160200,16003,0 ; DH-11 MUX CONTROLLER 7 004742 000000 004744 000000 160200 016003 .WORD 0,160200,16003,0 ; DH-11 MUX CONTROLLER 7 004752 000000 004754 000000 160200 016003 .WORD 0,160200,16003,0 ; DH-11 MUX CONTROLLER 7 004762 000000 004764 000000 160200 016003 .WORD 0,160200,16003,0 ; DH-11 MUX CONTROLLER 7 004772 000000 004774 000000 160200 016003 .WORD 0,160200,16003,0 ; DH-11 MUX CONTROLLER 7 005002 000000 005004 000000 160200 016003 .WORD 0,160200,16003,0 ; DH-11 MUX CONTROLLER 7 005012 000000 005014 000000 160200 016003 .WORD 0,160200,16003,0 ; DH-11 MUX CONTROLLER 7 005022 000000 005024 000000 160200 016003 .WORD 0,160200,16003,0 ; DH-11 MUX CONTROLLER 7 005032 000000 005034 000000 160200 016003 .WORD 0,160200,16003,0 ; DH-11 MUX CONTROLLER 7 005042 000000 005044 000000 160200 016003 .WORD 0,160200,16003,0 ; DH-11 MUX CONTROLLER 7 005052 000000 1019 1020 000200 DHCNT ==.-DHTBL/8. ; COUNT OF DH-11'S 1021 000205 TTCNT ==.-TTTBL/8. ; NUMBER OF ENTRIES OF DATA LINE SCANNER TABLE 1022 005054' TTYEND==. LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 29 LOW CORE -- DH-11 DATA BASE 1024 ; 1025 ; TERMINAL INPUT CONTROL TABLE, ONE WORD PER LINE 1026 ; 1027 005054 .TTS2F:: 1028 005054 000000 .WORD 0 ; [5.1015] FLAG FOR CLOCK SERVICE 1029 005056 .S2IDC:: 1030 005056 000000 .WORD 0 ; [4.1.1092] CURRENT COUNT OF LOCALLY DISABLED LINES 1031 005060 .S2ITP:: 1032 005060 003004' .WORD TTTBL ; [4.1.1092] TABLE POSITION OF LAST LOCALLY ENABLED LINE 1033 005062 .IBFLO:: 1034 005062 001600 .WORD 1600 ; [4.1.1092] INPUT BUFFER LOW THRESHOLD 1035 005064 .IBFOK:: 1036 005064 002000 .WORD 2000 ; [4.1.1092] INPUT BUFFER OK THRESHOLD 1037 005066 STSW2:: 1038 005066 .BLKW TTCNT ; [5.1015] STATUS BLOCK FOR EACH LINE LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 30 LOW CORE -- DECTAPE DRIVER DATA BASE 1041 .SBTTL LOW CORE -- DECTAPE DRIVER DATA BASE 1042 005500 DTRTC:: 1043 005500 000000 .WORD 0 ; ERROR RETRY COUNT AND DRIVE RESET FLAG 1044 005502 DTRNA:: 1045 005502 000000 .WORD 0 ; REQUEST NODE ADDRESS 1046 005504 DTBUF:: 1047 005504 000000 000000 .WORD 0,0 ; DECTAPE BUFFER 1048 005510 DTCNT:: 1049 005510 000000 .WORD 0 ; BUFFER SIZE 1050 005512 DTCW2:: 1051 005512 000000 .WORD 0 1052 005514 DTCW3:: 1053 005514 000000 .WORD 0 1054 005516 .BLKB 10 ; [4.2263] PADDING LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 32 LOW CORE -- DISC DRIVER DATA BASE 1074 .SBTTL LOW CORE -- DISC DRIVER DATA BASE 1075 1076 005526 RPRTC:: 1077 005526 000000 .WORD 0 ; RETRY COUNT FOR CURRENT OPERATION 1078 005530 RPRNA:: 1079 005530 000000 .WORD 0 ; ADDRESS OF RNA 1080 005532 RPBUF:: 1081 005532 000000 000000 .WORD 0,0 ; BUFFER ADDRESS 1082 005536 RPCNT:: 1083 005536 000000 .WORD 0 ; SIZE 1084 005540 RPUNIT:: 1085 005540 000000 .WORD 0 ; CURRENT UNIT 1086 005542 RPCW2:: 1087 005542 000000 .WORD 0 1088 005544 .RPELQ:: 1089 005544 000000 .WORD 0 ; [5.1009] RH-11 ERROR LOGGING QUEUE LISTHEAD 1090 005546 .RPELC:: 1091 005546 000000 .WORD 0 ; [5.1009] RH-11 ERROR LOGGING QUEUE COUNT 1092 005550 000020 .RHPB:: .WORD 20 1093 005552 .RHSN:: .BLKW 10 LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 33 LOW CORE -- FE DRIVER DATA BASE 1095 .SBTTL LOW CORE -- FE DRIVER DATA BASE 1096 1097 005572 FETBL:: 1098 005572 000000 .WORD 0 ; ENTRY FOR FE0: 1099 005574 000000 .WORD 0 ; ENTRY FOR FE1: 1100 005576 000000 .WORD 0 ; ENTRY FOR FE2: 1101 005600 000000 .WORD 0 ; ENTRY FOR FE3: 1102 005602 NODADR:: 1103 005602 000000 .WORD 0 1104 005604 ADRSAV:: 1105 005604 000000 .WORD 0 ; ADDRESS SAVED 1106 005606 BYTESA:: 1107 005606 000000 .WORD 0 ; COUNT 1108 005610 STSWD:: 1109 005610 000000 000000 .WORD 0,0 ; STATUS WORDS 1110 005614 TO10PK:: 1111 005614 000000 .WORD 0 ; -11 REQUEST TO -10 1112 005616 .BLKB 20 1113 005636 DNBLK:: 1114 005636 000000 .WORD 0 ; RESPONSE TO -10 REQUEST 1115 005640 DNFCN:: 1116 005640 000000 .WORD 0 1117 005642 000000 000000 .WORD 0,0 1118 005646 DNSTS:: 1119 005646 000000 000000 .WORD 0,0 1120 005652 000000 .WORD 0 1121 005654 BLKTT:: 1122 005654 .BLKW 20 1123 005714 .RPUNT:: 1124 005714 000000 .WORD 0 ; RP UNIT NUMBER FOR RPADR ETC. 1125 005716 .FEACT:: 1126 005716 000000 .WORD 0 ; FE DEVICE AVAILABLE FOR DB ACCESS WHEN .NE. 0 1127 005720 .RPADR:: 1128 005720 000000 000000 .WORD 0,0 ; !!!!RPADR AND RPSIZ MUST BE IN THIS ORDER 1129 005724 .RPSIZ:: 1130 005724 000000 000000 .WORD 0,0 ; !!! 1131 LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 34 LOW CORE -- CD-11 DRIVER DATA BASE 1134 .SBTTL LOW CORE -- CD-11 DRIVER DATA BASE 1135 1136 177160 CDST==177160 ; CONTROL AND STATUS REGISTER ADDRESS 1137 177162 CDCC==177162 ; COLUMN COUNT REGISTER ADDRESS 1138 177164 CDBA==177164 ; BUS ADDRESS REGISTER ADDRESS 1139 177166 CDDB==177166 ; DATA BUFFER REGISTER ADDRESS 1140 1141 005730 CREVFG:: 1142 005730 005732' .WORD CRCEVF ; ADDRESS OF CR TASK'S EVENT FLAGS 1143 005732 CRCEVF:: 1144 005732 .BLKW 1 ; CURRENT EVENT FLAGS 1145 005734 CRHUNG:: 1146 005734 000000 .WORD 0 ; # TIMES CR WAS CAUGHT SNOOZING 1147 005736 .CRPFL:: 1148 005736 000000 .WORD 0 ; POWER FAIL FLAG FOR CARD READER 1149 ; 1150 005740 CRSTBH:: 1151 005740 .BLKW 1 ; HEADER WORD (UNIT/BYTE COUNT) OF STATUS BLOCK 1152 005742 CRSTBK:: 1153 005742 .BLKW 2+1+</2> ; STATUS RETURN BLOCK TO -10 1154 000016 CRSTLN==.-CRSTBK 1155 ; 1156 005760 CRBUFH:: 1157 005760 .BLKW 1 ; HEADER WORD (UNIT/BYTE COUNT) OF DATA BUFFER 1158 005762 CRBUFF:: 1159 005762 .BLKW 80. ; DATA BUFFER FROM CD-11 1160 000240 CRBFLN==.-CRBUFF 1161 006222 000000 .WORD 0 ; FOR OVERRUN 1162 ; 1163 ; CR DEVICE STATUS TABLE 1164 ; 1165 006224 CRTBL:: 1166 006224' CRTHD==. ; THREADED LIST POINTER (FOR ..STCR) 1167 006224 000000 .WORD 0 1168 006226' CREXP==. ; EXTERNAL PAGE ADDR OF CD-11 1169 006226 177160 .WORD CDST 1170 006230' CRSTS==. ; STATUS BITS 1171 006230 000000 .WORD 0 1172 006232 000000 .WORD 0 ; (NOT USED) 1173 ; 1174 000010 CRSIZE==.-CRTBL 1175 LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 35 LOW CORE -- LP-20 DRIVER DATA BASE 1179 .SBTTL LOW CORE -- LP-20 DRIVER DATA BASE 1180 1181 175400 LPEXPA==175400 ; EXTERNAL PAGE ADDRESS OF LPCSRA 1182 000020 LPEXPZ==20 ; SIZE OF EXTERNAL PAGE ADDRESSES IN BYTES 1183 1184 ; 1185 ; MISCELLANEOUS VARIABLES 1186 ; 1187 006234 LPUNIT:: 1188 006234 .BLKW 1 ; LP UNIT # FROM PS ON INTERRUPT 1189 ; 1190 006236 LPEVFG:: 1191 006236 006240' .WORD LPCEVF ; ADDRESS OF WHERE TO SET EVENT FLAGS FOR LP TASK 1192 ; 1193 006240 LPCEVF:: 1194 006240 .BLKW 1 ; CURRENT EVENT FLAGS 1195 ; 1196 006242 LPHUNG:: 1197 006242 000000 .WORD 0 ; COUNT OF # TIMES LP WAS HUNG 1198 ; 1199 006244 .LPPFL:: 1200 006244 000000 .WORD 0 ; POWER FAIL FLAG 1201 ; 1202 006246 LPSTBH:: 1203 006246 .BLKW 1 ; HEADER WORD (UNIT/BYTE COUNT) 1204 006250 LPSTBK:: 1205 006250 .BLKB 4+2+2+LPEXPZ ; STATUS RETURN BLOCK TO -10 1206 .EVEN 1207 000030 LPSTLN==.-LPSTBK 1208 ; 1209 ; 1210 ; LP DEVICE STATUS TABLE 1211 ; ONE ENTRY FOR EVERY LP, SIZE= LPSIZE 1212 ; 1213 006300 LPTBL:: 1214 000000 $$$UNI=0 ; START WITH UNIT 0 1215 000002 .REPT L$$P20 ; MAKE ONE FOR EACH LP 1216 ; 1217 LPSTS== 0 ; MISC STATUS BITS: *** MUST BE ZERO *** 1218 .WORD $$$UNI 1219 LPCSA== 2 ; EXTERNAL PAGE ADDRESS FOR THIS LP 1220 .WORD LPEXPA+<20*$$$UNI> 1221 LPTHD== 4 ; POINTER TO THREADED OUTPUT QUEUE 1222 ; ZERO IF NO QUEUE 1223 .WORD 0 1224 LPITH== 6 ; INTERRUPT-LEVEL THREAD POINTER 1225 ; POINTS TO CURRENT BUFFER BEING 1226 ; OUTPUT AT INTERRUPT LEVEL 1227 .WORD 0 1228 ; 1229 $$$UNI=$$$UNI+1 1230 .ENDR 006300 000000 .WORD $$$UNI 006302 175400 .WORD LPEXPA+<20*$$$UNI> 006304 000000 .WORD 0 006306 000000 .WORD 0 006310 000001 .WORD $$$UNI LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 35-1 LOW CORE -- LP-20 DRIVER DATA BASE 006312 175420 .WORD LPEXPA+<20*$$$UNI> 006314 000000 .WORD 0 006316 000000 .WORD 0 1231 000010 LPSIZE==<.-LPTBL>/L$$P20 ; SIZE OF EACH ENTRY 1232 ; 1233 ; SECOND (PARALLEL) LP TABLE-- INDEXES ARE FROM LPTBL 1234 ; 1235 006320 LPTBL2:: 1236 000010 .REPT LPSIZE*L$$P20/2 ; MAKE SPACE 1237 .WORD 0 1238 .ENDR 006320 000000 .WORD 0 006322 000000 .WORD 0 006324 000000 .WORD 0 006326 000000 .WORD 0 006330 000000 .WORD 0 006332 000000 .WORD 0 006334 000000 .WORD 0 006336 000000 .WORD 0 1239 ; 1240 000020 LPMCB== 0+LPTBL2-LPTBL ; MULTI-CHARACTER BUFFER (TWO BYTES) 1241 000022 LPCSM== 2+LPTBL2-LPTBL ; ACCUMULATED CHECKSUM (LOW BYTE IS TRASH) 1242 000024 LPRTY== 4+LPTBL2-LPTBL ; RETRY COUNTER 1243 ; 1244 ; THIRD (PARALLEL) LP TABLE-- INDEXES ARE ALSO FROM LPTBL 1245 ; 1246 006340 LPTBL3:: 1247 000010 .REPT LPSIZE*L$$P20/2 ; MAKE SPACE 1248 .WORD 0 1249 .ENDR 006340 000000 .WORD 0 006342 000000 .WORD 0 006344 000000 .WORD 0 006346 000000 .WORD 0 006350 000000 .WORD 0 006352 000000 .WORD 0 006354 000000 .WORD 0 006356 000000 .WORD 0 1250 ; 1251 000040 LPRMA== 0+LPTBL3-LPTBL ; RAM/VFU DATA ADDRESS 1252 000042 LPRMZ== 2+LPTBL3-LPTBL ; RAM/VFU DATA BUFFER SIZE 1253 000044 LPRMC== 4+LPTBL3-LPTBL ; CURRENT POINTER INTO RAM/VFU DATA 1254 ; 1255 ; POINTERS TO LPTBL BY UNIT NUMBER 1256 ; 1257 006360 LPUTBL:: 1258 000000 $$$UNI=0 1259 000002 .REPT L$$P20 ; ONE PER LP 1260 .WORD LPTBL+<$$$UNI*LPSIZE> 1261 $$$UNI=$$$UNI+1 1262 .ENDR 006360 006300' .WORD LPTBL+<$$$UNI*LPSIZE> 006362 006310' .WORD LPTBL+<$$$UNI*LPSIZE> 1263 LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 36 LOW CORE -- STD (SYSTEM TASK DIRECTORY) 1266 .SBTTL LOW CORE -- STD (SYSTEM TASK DIRECTORY) 1267 1268 ; 1269 ; SYSTEM TASK DIRECTORY 1270 ; 1271 006364 .STDTA:: 1272 006364 006372' .WORD .STDTB ; STD ALPHA TABLE ADDRESS 1273 006366 .STDTC:: 1274 006366 000044 .WORD 36. ; STD ALPHA TABLE MAX SIZE *2 1275 006370 .STDTZ:: 1276 006370 000024 .WORD 24 ; STD "SIZE" (2N-2) 1277 ; 1278 006372 .STDTB:: 1280 006372 006776' .WORD STDCDR ; CARD READER ENTRY 1282 006374 006436' .WORD STDDTE ; DTE CLOCK ENTRY 1284 006376 006536' .WORD STDDTP ; DECTAPE 1287 006400 006476' .WORD STDFED ; FE DRIVER 1293 006402 006576' .WORD STDF11 ; F11ACP 1296 006404 006736' .WORD STDLPT ; LP20 1298 006406 007076' .WORD STDQPR ; QUEUE'D PROTOCOL 1300 006410 006636' .WORD STDRPT ; RP04 ENTRY 1302 006412 007036' .WORD STDTTY ; TTY ENTRY 1304 006414 006676' .WORD STDINS ; INSTALL 1306 006416 000000 000000 000000 .WORD 0,0,0,0,0,0,0 006424 000000 000000 000000 006432 000000 1320 006434 000000 .WORD 0 1328 ; 1329 ; 1330 ; 1331 006436 STDDTE:: 1332 006436 .STDEN DTE20,DTETPD,SF.TA!SF.FX!SF.ST,200,0,DTEHD,0,0,0,0,0,0 006436 016045 146260 .RAD50 "DTE20" 006442 007622' .WORD DTETPD 006444 100003 .WORD SF.TA!SF.FX!SF.ST 006446 200 000 .BYTE 200,0 006450 025304' .WORD DTEHD 006452 000000 .WORD 0 006454 000000 .WORD 0 006456 000000 .WORD 0 006460 000000 .WORD 0 006462 006462' .WORD . 006464 006462' .WORD .-2 006466 000000 .WORD 0 006470 000000 .WORD 0 006472 000000 .WORD 0 006474 000000 .WORD 0 1334 ; 1335 006476 STDFED:: 1336 006476 .STDEN FE....,FETPD,SF.TA!SF.FX!SF.ST,176,0,FEHD,0,0,0,0,0,0 006476 023144 131574 .RAD50 "FE...." 006502 007642' .WORD FETPD 006504 100003 .WORD SF.TA!SF.FX!SF.ST 006506 176 000 .BYTE 176,0 006510 000000G .WORD FEHD 006512 000000 .WORD 0 006514 000000 .WORD 0 LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 36-1 LOW CORE -- STD (SYSTEM TASK DIRECTORY) 006516 000000 .WORD 0 006520 000000 .WORD 0 006522 006522' .WORD . 006524 006522' .WORD .-2 006526 000000 .WORD 0 006530 000000 .WORD 0 006532 000000 .WORD 0 006534 000000 .WORD 0 1339 ; 1340 006536 STDDTP:: 1341 006536 .STDEN DT....,DTTPD,SF.TA!SF.FX!SF.ST,176,0,DTHD,0,0,0,0,0,0 006536 016074 131574 .RAD50 "DT...." 006542 007762' .WORD DTTPD 006544 100003 .WORD SF.TA!SF.FX!SF.ST 006546 176 000 .BYTE 176,0 006550 000000G .WORD DTHD 006552 000000 .WORD 0 006554 000000 .WORD 0 006556 000000 .WORD 0 006560 000000 .WORD 0 006562 006562' .WORD . 006564 006562' .WORD .-2 006566 000000 .WORD 0 006570 000000 .WORD 0 006572 000000 .WORD 0 006574 000000 .WORD 0 1349 ; 1350 006576 STDF11:: 1355 006576 .STDEN F11ACP,F11TPD,SF.ST,220,</U.SZ>,145400,7700,0,145400,145400,0,5 006576 025167 003310 .RAD50 "F11ACP" 006602 010022' .WORD F11TPD 006604 100000 .WORD SF.ST 006606 220 011 .BYTE 220,/U.SZ 006610 145400 .WORD 145400 006612 007700 .WORD 7700 006614 000000 .WORD 0 006616 145400 .WORD 145400 006620 145400 .WORD 145400 006622 006622' .WORD . 006624 006622' .WORD .-2 006626 000000 .WORD 0 006630 000000 .WORD 0 006632 000005 .WORD 5 006634 000000 .WORD 0 1362 ; 1363 006636 STDRPT:: 1364 006636 .STDEN RP....,RPTPD,SF.TA!SF.FX!SF.ST,176,0,RPHD,0,0,0,0,0,0 006636 071434 131574 .RAD50 "RP...." 006642 010002' .WORD RPTPD 006644 100003 .WORD SF.TA!SF.FX!SF.ST 006646 176 000 .BYTE 176,0 006650 000000G .WORD RPHD 006652 000000 .WORD 0 006654 000000 .WORD 0 006656 000000 .WORD 0 006660 000000 .WORD 0 006662 006662' .WORD . LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 36-2 LOW CORE -- STD (SYSTEM TASK DIRECTORY) 006664 006662' .WORD .-2 006666 000000 .WORD 0 006670 000000 .WORD 0 006672 000000 .WORD 0 006674 000000 .WORD 0 1367 ; 1368 006676 STDINS:: 1369 006676 .STDEN .INST.,INSTPD,SF.FX!SF.ST,200,0,INSHD,0,0,INSTAL,INSTK-16,0,0 006676 130166 074774 .RAD50 ".INST." 006702 007602' .WORD INSTPD 006704 100002 .WORD SF.FX!SF.ST 006706 200 000 .BYTE 200,0 006710 000000G .WORD INSHD 006712 000000 .WORD 0 006714 000000 .WORD 0 006716 000000G .WORD INSTAL 006720 177762G .WORD INSTK-16 006722 006722' .WORD . 006724 006722' .WORD .-2 006726 000000 .WORD 0 006730 000000 .WORD 0 006732 000000 .WORD 0 006734 000000 .WORD 0 1372 ; 1373 006736 STDLPT:: 1374 006736 .STDEN LPDRV,LPTPD,SF.TA!SF.FX!SF.ST,176,0,LPHD,0,0,0,0,0,0 006736 046604 071760 .RAD50 "LPDRV" 006742 007702' .WORD LPTPD 006744 100003 .WORD SF.TA!SF.FX!SF.ST 006746 176 000 .BYTE 176,0 006750 000000G .WORD LPHD 006752 000000 .WORD 0 006754 000000 .WORD 0 006756 000000 .WORD 0 006760 000000 .WORD 0 006762 006762' .WORD . 006764 006762' .WORD .-2 006766 000000 .WORD 0 006770 000000 .WORD 0 006772 000000 .WORD 0 006774 000000 .WORD 0 1377 ; 1378 006776 STDCDR:: 1379 006776 .STDEN CDDRV,CDRTPD,SF.TA!SF.FX!SF.ST,210,0,CRHD,0,0,57252,55130-16,0,0 006776 011544 071760 .RAD50 "CDDRV" 007002 007722' .WORD CDRTPD 007004 100003 .WORD SF.TA!SF.FX!SF.ST 007006 210 000 .BYTE 210,0 007010 000000G .WORD CRHD 007012 000000 .WORD 0 007014 000000 .WORD 0 007016 057252 .WORD 57252 007020 055112 .WORD 55130-16 007022 007022' .WORD . 007024 007022' .WORD .-2 007026 000000 .WORD 0 007030 000000 .WORD 0 LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 36-3 LOW CORE -- STD (SYSTEM TASK DIRECTORY) 007032 000000 .WORD 0 007034 000000 .WORD 0 1381 ; 1382 007036 STDTTY:: 1383 007036 .STDEN TTYDRV,TTYTPD,SF.TA!SF.FX!SF.ST,177,0,TTYHD,0,0,0,0,0,0 007036 100071 015746 .RAD50 "TTYDRV" 007042 007662' .WORD TTYTPD 007044 100003 .WORD SF.TA!SF.FX!SF.ST 007046 177 000 .BYTE 177,0 007050 032554' .WORD TTYHD 007052 000000 .WORD 0 007054 000000 .WORD 0 007056 000000 .WORD 0 007060 000000 .WORD 0 007062 007062' .WORD . 007064 007062' .WORD .-2 007066 000000 .WORD 0 007070 000000 .WORD 0 007072 000000 .WORD 0 007074 000000 .WORD 0 1384 ; 1385 007076 STDQPR:: 1386 007076 .STDEN QDPROT,QPRTPD,SF.TA!SF.FX!SF.ST,176,0,BTPHD,0,0,0,0,0,0 007076 065360 071354 .RAD50 "QDPROT" 007102 007742' .WORD QPRTPD 007104 100003 .WORD SF.TA!SF.FX!SF.ST 007106 176 000 .BYTE 176,0 007110 016262' .WORD BTPHD 007112 000000 .WORD 0 007114 000000 .WORD 0 007116 000000 .WORD 0 007120 000000 .WORD 0 007122 007122' .WORD . 007124 007122' .WORD .-2 007126 000000 .WORD 0 007130 000000 .WORD 0 007132 000000 .WORD 0 007134 000000 .WORD 0 LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 37 LOW CORE -- ATL (ACTIVE TASK LIST) 1388 .SBTTL LOW CORE -- ATL (ACTIVE TASK LIST) 1389 1390 ; 1391 ; ACTIVE TASK LISTHEAD 1392 ; 1393 007136 .ATLLH:: 1394 007136 007142' .WORD DTETSK ; FORWARD POINTER IN ACTIVE TASK LIST 1395 007140 007542' .WORD NULTSK ; NULL TASK 1396 ; 1397 ; 1398 007142 DTETSK:: 1399 007142 .ATLEN TTYTSK,.ATLLH,DTESP,0,200,DTEHD,TS.RUN,0,STDDTE,0,0,0,0,0,0,0 007142 007202' .WORD TTYTSK 007144 007136' .WORD .ATLLH 007146 025564' .WORD DTESP 007150 000000 .WORD 0 007152 000200 .WORD 200 007154 025304' .WORD DTEHD 007156 010 000 .BYTE TS.RUN,0 007160 006436' .WORD STDDTE 007162 000000 000000 .WORD 0,0 007166 000000 000000 000000 .WORD 0,0,0,0 007174 000000 007176 000000 .WORD 0 007200 000000 .WORD 0 1400 007142' PRVTSK==DTETSK 1401 ; 1402 007202 TTYTSK:: 1403 007202 .ATLEN RPTSK,PRVTSK,TTYSP,0,177,TTYHD,TS.RUN,0,STDTTY,0,0,0,0,0,0,0 007202 007242' .WORD RPTSK 007204 007142' .WORD PRVTSK 007206 033034' .WORD TTYSP 007210 000000 .WORD 0 007212 000177 .WORD 177 007214 032554' .WORD TTYHD 007216 010 000 .BYTE TS.RUN,0 007220 007036' .WORD STDTTY 007222 000000 000000 .WORD 0,0 007226 000000 000000 000000 .WORD 0,0,0,0 007234 000000 007236 000000 .WORD 0 007240 000000 .WORD 0 1404 007202' PRVTSK==TTYTSK 1405 ; 1407 007242 RPTSK:: 1408 007242 .ATLEN LPTSK,PRVTSK,RPSTK,0,176,RPHD,TS.RUN,0,STDRPT,0,0,0,0,0,0,0 007242 007302' .WORD LPTSK 007244 007202' .WORD PRVTSK 007246 000000G .WORD RPSTK 007250 000000 .WORD 0 007252 000176 .WORD 176 007254 000000G .WORD RPHD 007256 010 000 .BYTE TS.RUN,0 007260 006636' .WORD STDRPT 007262 000000 000000 .WORD 0,0 007266 000000 000000 000000 .WORD 0,0,0,0 007274 000000 LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 37-1 LOW CORE -- ATL (ACTIVE TASK LIST) 007276 000000 .WORD 0 007300 000000 .WORD 0 1409 007242' PRVTSK==RPTSK 1413 ; 1415 007302 LPTSK:: 1416 007302 .ATLEN CDTSK,PRVTSK,LPSTK,0,176,LPHD,TS.RUN,0,STDLPT,0,0,0,0,0,0,0 007302 007342' .WORD CDTSK 007304 007242' .WORD PRVTSK 007306 000000G .WORD LPSTK 007310 000000 .WORD 0 007312 000176 .WORD 176 007314 000000G .WORD LPHD 007316 010 000 .BYTE TS.RUN,0 007320 006736' .WORD STDLPT 007322 000000 000000 .WORD 0,0 007326 000000 000000 000000 .WORD 0,0,0,0 007334 000000 007336 000000 .WORD 0 007340 000000 .WORD 0 1417 007302' PRVTSK==LPTSK 1422 007342 CDTSK:: 1423 007342 .ATLEN DTTSK,PRVTSK,CRSTK,CDRTPD,176,CRHD,TS.RUN,0,STDCDR,0,0,0,0,0,0,0 007342 007402' .WORD DTTSK 007344 007302' .WORD PRVTSK 007346 000000G .WORD CRSTK 007350 007722' .WORD CDRTPD 007352 000176 .WORD 176 007354 000000G .WORD CRHD 007356 010 000 .BYTE TS.RUN,0 007360 006776' .WORD STDCDR 007362 000000 000000 .WORD 0,0 007366 000000 000000 000000 .WORD 0,0,0,0 007374 000000 007376 000000 .WORD 0 007400 000000 .WORD 0 1424 007342' PRVTSK==CDTSK 1428 ; 1430 007402 DTTSK:: 1431 007402 .ATLEN FETSK,PRVTSK,DTSTK,0,176,DTHD,TS.RUN,0,STDDTP,0,0,0,0,0,0,0 007402 007442' .WORD FETSK 007404 007342' .WORD PRVTSK 007406 000000G .WORD DTSTK 007410 000000 .WORD 0 007412 000176 .WORD 176 007414 000000G .WORD DTHD 007416 010 000 .BYTE TS.RUN,0 007420 006536' .WORD STDDTP 007422 000000 000000 .WORD 0,0 007426 000000 000000 000000 .WORD 0,0,0,0 007434 000000 007436 000000 .WORD 0 007440 000000 .WORD 0 1432 007402' PRVTSK==DTTSK 1436 ; 1438 007442 FETSK:: 1439 007442 .ATLEN DXTSK,PRVTSK,FESTK,0,176,FEHD,TS.RUN,0,STDFED,0,0,0,0,0,0,0 007442 007502' .WORD DXTSK LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 37-2 LOW CORE -- ATL (ACTIVE TASK LIST) 007444 007402' .WORD PRVTSK 007446 000000G .WORD FESTK 007450 000000 .WORD 0 007452 000176 .WORD 176 007454 000000G .WORD FEHD 007456 010 000 .BYTE TS.RUN,0 007460 006476' .WORD STDFED 007462 000000 000000 .WORD 0,0 007466 000000 000000 000000 .WORD 0,0,0,0 007474 000000 007476 000000 .WORD 0 007500 000000 .WORD 0 1440 007442' PRVTSK==FETSK 1444 ; 1450 007502 DXTSK:: 1452 ; 1453 007502 QPRTSK:: 1454 007502 .ATLEN NULTSK,PRVTSK,.BTSTK,0,1,BTPHD,TS.RUN,0,STDQPR,0,0,0,0,0,0,0 007502 007542' .WORD NULTSK 007504 007442' .WORD PRVTSK 007506 016542' .WORD .BTSTK 007510 000000 .WORD 0 007512 000001 .WORD 1 007514 016262' .WORD BTPHD 007516 010 000 .BYTE TS.RUN,0 007520 007076' .WORD STDQPR 007522 000000 000000 .WORD 0,0 007526 000000 000000 000000 .WORD 0,0,0,0 007534 000000 007536 000000 .WORD 0 007540 000000 .WORD 0 1455 007502' PRVTSK==QPRTSK 1456 ; 1457 007542 NULTSK:: 1458 007542 .ATLEN .ATLLH,PRVTSK,NTKXSP,0,0,NULHD,TS.RUN,0,0,0,0,0,0,0,0,0 007542 007136' .WORD .ATLLH 007544 007502' .WORD PRVTSK 007546 012752' .WORD NTKXSP 007550 000000 .WORD 0 007552 000000 .WORD 0 007554 012472' .WORD NULHD 007556 010 000 .BYTE TS.RUN,0 007560 000000 .WORD 0 007562 000000 000000 .WORD 0,0 007566 000000 000000 000000 .WORD 0,0,0,0 007574 000000 007576 000000 .WORD 0 007600 000000 .WORD 0 LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 38 LOW CORE -- TPD (TASK PARTITION DIRECTORY) 1460 .SBTTL LOW CORE -- TPD (TASK PARTITION DIRECTORY) 1461 1462 ; 1463 ; TASK PARTITION DIRECTORY 1464 ; 1465 007602 .TPDBA:: 1467 ; 1468 007602 INSTPD:: 1469 007602 .TPDEN INSTPD,INSHD,0,0,TF.OU 007602 000000 000000 .WORD 0,0 007602 035203 077604 .RAD50 "INSTPD" 007606 000000G .WORD INSHD 007610 000000 .WORD 0 007612 000000 .WORD 0 007614 000002 .WORD TF.OU 007616 007616' .WORD . 007620 007616' .WORD .-2 1471 ; 1472 007622 DTETPD:: 1473 007622 .TPDEN DTETPD,DTEHD,0,0,TF.OU 007622 000000 000000 .WORD 0,0 007622 016045 077604 .RAD50 "DTETPD" 007626 025304' .WORD DTEHD 007630 000000 .WORD 0 007632 000000 .WORD 0 007634 000002 .WORD TF.OU 007636 007636' .WORD . 007640 007636' .WORD .-2 1475 ; 1476 007642 FETPD:: 1477 007642 .TPDEN FETPD,FEHD,0,0,TF.OU 007642 000000 000000 .WORD 0,0 007642 023134 062240 .RAD50 "FETPD" 007646 000000G .WORD FEHD 007650 000000 .WORD 0 007652 000000 .WORD 0 007654 000002 .WORD TF.OU 007656 007656' .WORD . 007660 007656' .WORD .-2 1479 ; 1480 007662 TTYTPD:: 1481 007662 .TPDEN TTYTPD,TTYHD,0,0,TF.OU 007662 000000 000000 .WORD 0,0 007662 100071 077604 .RAD50 "TTYTPD" 007666 032554' .WORD TTYHD 007670 000000 .WORD 0 007672 000000 .WORD 0 007674 000002 .WORD TF.OU 007676 007676' .WORD . 007700 007676' .WORD .-2 1483 ; 1484 007702 LPTPD:: 1485 007702 .TPDEN LPTPD,LPHD,0,0,TF.OU 007702 000000 000000 .WORD 0,0 007702 046624 062240 .RAD50 "LPTPD" 007706 000000G .WORD LPHD 007710 000000 .WORD 0 LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 38-1 LOW CORE -- TPD (TASK PARTITION DIRECTORY) 007712 000000 .WORD 0 007714 000002 .WORD TF.OU 007716 007716' .WORD . 007720 007716' .WORD .-2 1488 ; 1489 007722 CDRTPD:: 1490 007722 .TPDEN CDRTPD,CRHD,0,0,TF.OU 007722 000000 000000 .WORD 0,0 007722 011562 077604 .RAD50 "CDRTPD" 007726 000000G .WORD CRHD 007730 000000 .WORD 0 007732 000000 .WORD 0 007734 000002 .WORD TF.OU 007736 007736' .WORD . 007740 007736' .WORD .-2 1492 ; 1493 007742 QPRTPD:: 1494 007742 .TPDEN QPRTPD,BTPHD,0,0,TF.OU 007742 000000 000000 .WORD 0,0 007742 066322 077604 .RAD50 "QPRTPD" 007746 016262' .WORD BTPHD 007750 000000 .WORD 0 007752 000000 .WORD 0 007754 000002 .WORD TF.OU 007756 007756' .WORD . 007760 007756' .WORD .-2 1496 ; 1497 007762 DTTPD:: 1498 007762 .TPDEN DTTPD,DTHD,0,0,TF.OU 007762 000000 000000 .WORD 0,0 007762 016064 062240 .RAD50 "DTTPD" 007766 000000G .WORD DTHD 007770 000000 .WORD 0 007772 000000 .WORD 0 007774 000002 .WORD TF.OU 007776 007776' .WORD . 010000 007776' .WORD .-2 1506 ; 1507 010002 RPTPD:: 1508 010002 .TPDEN RPTPD,RPHD,0,0,TF.OU 010002 000000 000000 .WORD 0,0 010002 071424 062240 .RAD50 "RPTPD" 010006 000000G .WORD RPHD 010010 000000 .WORD 0 010012 000000 .WORD 0 010014 000002 .WORD TF.OU 010016 010016' .WORD . 010020 010016' .WORD .-2 1511 ; 1512 010022 F11TPD:: 1513 010022 .TPDEN F11TPD,145400,12400,0,0 010022 000000 000000 .WORD 0,0 010022 025167 077604 .RAD50 "F11TPD" 010026 145400 .WORD 145400 010030 012400 .WORD 12400 010032 000000 .WORD 0 010034 000000 .WORD 0 LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 38-2 LOW CORE -- TPD (TASK PARTITION DIRECTORY) 010036 010036' .WORD . 010040 010036' .WORD .-2 1515 ; 1516 010042 GENTPD:: 1517 010042 .TPDEN GEN,100000,45400,0,0 010042 000000 000000 .WORD 0,0 010042 026226 .RAD50 "GEN" 010046 100000 .WORD 100000 010050 045400 .WORD 45400 010052 000000 .WORD 0 010054 000000 .WORD 0 010056 010056' .WORD . 010060 010056' .WORD .-2 1518 ; 1519 010062 .TPDEA:: ;END OF TPD LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 39 LOW CORE -- DEVICE QUEUE POINTERS 1521 .SBTTL LOW CORE -- DEVICE QUEUE POINTERS 1522 1523 ; 1524 ; DEVICE QUEUE POINTERS 1525 ; 1526 000020 Q.SZ=20 ; QUEUE ENTRY SIZE (NOTE:IS A GLOBAL VAR.) 1527 1528 000001 D.CCTY==1 ; DEVICE CODE FOR CTY 1529 010062 .DQPBA:: 1530 010062 .DQPEN TTTBL,8.,..STTY,..STPT,IGNO,IGNO,0,TTCNT 010062 003004' .WORD TTTBL 010064 000010 .WORD 8. 010066 046164' .WORD ..STTY 010070 046400' .WORD ..STPT 010072 012364' .WORD IGNO 010074 012364' .WORD IGNO 010076 000000 .WORD 0 010100 000205 .WORD TTCNT 1531 1532 000002 D.CDL1==2 ; DEVICE CODE FOR DL-11 1533 010102 .DQDL1:: 1534 010102 .DQPEN DLTBL,8.,..STTY,..STPT,IGNO,IGNO,0,DLCNT 010102 003004' .WORD DLTBL 010104 000010 .WORD 8. 010106 046164' .WORD ..STTY 010110 046400' .WORD ..STPT 010112 012364' .WORD IGNO 010114 012364' .WORD IGNO 010116 000000 .WORD 0 010120 000005 .WORD DLCNT 1535 1536 000003 D.CDH1==3 ; DEVICE CODE FOR DH-11 (1) 1537 010122 .DQDH0:: 1538 010122 .DQPEN DHTBL,8.,..STTY,..STPT,IGNO,IGNO,0,DHCNT 010122 003054' .WORD DHTBL 010124 000010 .WORD 8. 010126 046164' .WORD ..STTY 010130 046400' .WORD ..STPT 010132 012364' .WORD IGNO 010134 012364' .WORD IGNO 010136 000000 .WORD 0 010140 000200 .WORD DHCNT 1539 1540 000004 D.CDLS==4 ; DEVICE CODE FOR DATA LINE SCANNER (1) 1541 010142 .DQDLS:: 1542 010142 .DQPEN TTTBL,8.,..STTY,..STPT,IGNO,IGNO,0,TTCNT 010142 003004' .WORD TTTBL 010144 000010 .WORD 8. 010146 046164' .WORD ..STTY 010150 046400' .WORD ..STPT 010152 012364' .WORD IGNO 010154 012364' .WORD IGNO 010156 000000 .WORD 0 010160 000205 .WORD TTCNT 1543 1544 000005 D.CLPT==5 ; DEVICE CODE FOR LPT 1545 010162 .DQLPT:: LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 39-1 LOW CORE -- DEVICE QUEUE POINTERS 1546 010162 .DQPEN LPTBL,8.,..STLP,..SPLP,IGNO,..AKLP,0,2 010162 006300' .WORD LPTBL 010164 000010 .WORD 8. 010166 000000G .WORD ..STLP 010170 000000G .WORD ..SPLP 010172 012364' .WORD IGNO 010174 000000G .WORD ..AKLP 010176 000000 .WORD 0 010200 000002 .WORD 2 1547 1548 000006 D.CCDR==6 ; DEVICE CODE FOR CDR 1549 010202 .DQCDR:: 1550 010202 .DQPEN CRTBL,8.,..STCR,IGNO,IGNO,..AKCR,0,1 010202 006224' .WORD CRTBL 010204 000010 .WORD 8. 010206 000000G .WORD ..STCR 010210 012364' .WORD IGNO 010212 012364' .WORD IGNO 010214 000000G .WORD ..AKCR 010216 000000 .WORD 0 010220 000001 .WORD 1 1551 1552 000007 D.CCLK==7 ; DEVICE CODE FOR CLOCK 1553 010222 .DQPEN 0,0,IGNO,IGNO,IGNO,IGNO,0,1 010222 000000 .WORD 0 010224 000000 .WORD 0 010226 012364' .WORD IGNO 010230 012364' .WORD IGNO 010232 012364' .WORD IGNO 010234 012364' .WORD IGNO 010236 000000 .WORD 0 010240 000001 .WORD 1 1554 1555 000010 D.FEPD==10 ; PSEUDO DEVICE FOR FE 1556 010242 .DQPEN FETBL,2.,.FEST,IGNO,IGNO,.FEACK,0,4 010242 005572' .WORD FETBL 010244 000002 .WORD 2. 010246 000000G .WORD .FEST 010250 012364' .WORD IGNO 010252 012364' .WORD IGNO 010254 000000G .WORD .FEACK 010256 000000 .WORD 0 010260 000004 .WORD 4 1557 1558 1559 010262 .DQPEA:: ; END OF DEVICE QUEUE POINTER TABLE 1560 000010 .DQPSZ==.DQPEA-.DQPBA/Q.SZ ; SIZE OF DEVICE QUEUE POINTER TABLE 1561 1562 ; 1563 ; NOTE -- THESE PSUEDO-DEVICES ARE OUTPUT-ONLY AND 1564 ; ARE ASSOCIATED WITH ERROR LOGGING 1565 ; 1566 000200 D.CCPU==200 ; PSEUDO DEVICE PDP10 CPU 1567 000201 D.CKLE==201 ; KL ERROR PSEUDO DEVICE 1568 000202 D.CDTE==202 ; [5.1008] DTE-20 PSEUDO DEVICE CODE 1569 000203 D.CRJP==203 ; [5.1009] RH-11/RJP-04/06 PSEUDO DEVICE CODE 1570 000204 D.CDMB==204 ; [4.1.1091] DM-11/BB CONFIGURATION CODE LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 39-2 LOW CORE -- DEVICE QUEUE POINTERS 1571 000205 D.CLOG==205 ; ASCII 'PARSER.LOG' 1572 000210 D.CKLN==210 ; KLINIK PSEUDO-DEVICE LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 40 LOW CORE -- LOGICAL UNIT TABLES 1574 .SBTTL LOW CORE -- LOGICAL UNIT TABLES 1575 1576 ; 1577 ; LOGICAL UNIT TABLE 1578 ; 1579 010262 .PUDBA:: ; START OF LOGICAL UNIT TABLE 1580 ; 1581 000001 L.TTY==1 ; LOGICAL UNIT 1 1582 010262 TTPEN:: 1583 010262 .PUDEN TT,0,0,UC.REC!UC.CCL!UC.TTY,0,0,80.,TTPEN,TTYTSK,0,0,0 010262 124 124 .ASCII "TT" 010264 000 .BYTE 0 010265 000 .BYTE 0 010266 000007 .WORD UC.REC!UC.CCL!UC.TTY 010270 000000 .WORD 0 010272 000000 .WORD 0 010274 000120 .WORD 80. 010276 000000 .WORD 0 010300 010262' .WORD TTPEN 010302 007202' .WORD TTYTSK 010304 010304' .WORD . 010306 010304' .WORD .-2 010310 000000 .WORD 0 010312 005 005 .BYTE 5,5 010314 000000 .WORD 0 010316 177777 .WORD -1 010320 135600 .RAD50 /0/ 010322 000000 .WORD 0 010324 000000 .WORD 0 010326 000000 .WORD 0 010330 000000 .WORD 0 1584 ; 1585 000002 L.RP4==2 1586 ;DVCH=CH.OFF+CH.NAT*400+CH.OFF+CH.NAT 1587 110220 DVCH=110220 1588 ;FW=UF.TL!UF.RH 1589 000300 FW=300 1590 ;C1=UC.MNT!UC.F11!UC.DIR 1591 140010 C1=140010 1592 ;C1DB=UC.MNT!UC.F11!UC.DIR!UC.ETB 1593 140110 C1DB=140110 1594 ; 1596 010332 RPPEN:: 1597 010332 .PUDEN DB,0,FW,C1DB,0,0,512.,RPPEN,RPTSK,DVCH,F11,0 010332 104 102 .ASCII "DB" 010334 000 .BYTE 0 010335 300 .BYTE FW 010336 140110 .WORD C1DB 010340 000000 .WORD 0 010342 000000 .WORD 0 010344 001000 .WORD 512. 010346 000000 .WORD 0 010350 010332' .WORD RPPEN 010352 007242' .WORD RPTSK 010354 010354' .WORD . 010356 010354' .WORD .-2 010360 000000 .WORD 0 LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 40-1 LOW CORE -- LOGICAL UNIT TABLES 010362 005 005 .BYTE 5,5 010364 110220 .WORD DVCH 010366 177777 .WORD -1 010370 025167 .RAD50 /F11/ 010372 000000 .WORD 0 010374 000000 .WORD 0 010376 000000 .WORD 0 010400 000000 .WORD 0 1598 ; THIS IS DONE TO KEEP .PUDEN MACROS SHORTER THAN 80 CHARS 1599 010376' .=.-4 1600 010376 000002 .WORD 2 1601 010400 050700 .WORD 50700 ; RP SIZE IS 140000. BLOCKS 1602 010402 .RP1PE:: 1603 010402 .PUDEN DB,1,FW,C1DB,0,0,512.,.RP1PE,RPTSK,DVCH,F11,0 010402 104 102 .ASCII "DB" 010404 001 .BYTE 1 010405 300 .BYTE FW 010406 140110 .WORD C1DB 010410 000000 .WORD 0 010412 000000 .WORD 0 010414 001000 .WORD 512. 010416 000000 .WORD 0 010420 010402' .WORD .RP1PE 010422 007242' .WORD RPTSK 010424 010424' .WORD . 010426 010424' .WORD .-2 010430 000000 .WORD 0 010432 005 005 .BYTE 5,5 010434 110220 .WORD DVCH 010436 177777 .WORD -1 010440 025167 .RAD50 /F11/ 010442 000000 .WORD 0 010444 000000 .WORD 0 010446 000000 .WORD 0 010450 000000 .WORD 0 1604 010446' .=.-4 1605 010446 000002 .WORD 2 1606 010450 050700 .WORD 50700 1607 010452 .RP2PE:: 1608 010452 .PUDEN DB,2,FW,C1DB,0,0,512.,.RP2PE,RPTSK,DVCH,F11,0 010452 104 102 .ASCII "DB" 010454 002 .BYTE 2 010455 300 .BYTE FW 010456 140110 .WORD C1DB 010460 000000 .WORD 0 010462 000000 .WORD 0 010464 001000 .WORD 512. 010466 000000 .WORD 0 010470 010452' .WORD .RP2PE 010472 007242' .WORD RPTSK 010474 010474' .WORD . 010476 010474' .WORD .-2 010500 000000 .WORD 0 010502 005 005 .BYTE 5,5 010504 110220 .WORD DVCH 010506 177777 .WORD -1 010510 025167 .RAD50 /F11/ LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 40-2 LOW CORE -- LOGICAL UNIT TABLES 010512 000000 .WORD 0 010514 000000 .WORD 0 010516 000000 .WORD 0 010520 000000 .WORD 0 1609 010516' .=.-4 1610 010516 000002 .WORD 2 1611 010520 050700 .WORD 50700 1612 010522 .RP3PE:: 1613 010522 .PUDEN DB,3,FW,C1DB,0,0,512.,.RP3PE,RPTSK,DVCH,F11,0 010522 104 102 .ASCII "DB" 010524 003 .BYTE 3 010525 300 .BYTE FW 010526 140110 .WORD C1DB 010530 000000 .WORD 0 010532 000000 .WORD 0 010534 001000 .WORD 512. 010536 000000 .WORD 0 010540 010522' .WORD .RP3PE 010542 007242' .WORD RPTSK 010544 010544' .WORD . 010546 010544' .WORD .-2 010550 000000 .WORD 0 010552 005 005 .BYTE 5,5 010554 110220 .WORD DVCH 010556 177777 .WORD -1 010560 025167 .RAD50 /F11/ 010562 000000 .WORD 0 010564 000000 .WORD 0 010566 000000 .WORD 0 010570 000000 .WORD 0 1614 010566' .=.-4 1615 010566 000002 .WORD 2 1616 010570 050700 .WORD 50700 1617 010572 .RP4PE:: 1618 010572 .PUDEN DB,4,FW,C1DB,0,0,512.,.RP4PE,RPTSK,DVCH,F11,0 010572 104 102 .ASCII "DB" 010574 004 .BYTE 4 010575 300 .BYTE FW 010576 140110 .WORD C1DB 010600 000000 .WORD 0 010602 000000 .WORD 0 010604 001000 .WORD 512. 010606 000000 .WORD 0 010610 010572' .WORD .RP4PE 010612 007242' .WORD RPTSK 010614 010614' .WORD . 010616 010614' .WORD .-2 010620 000000 .WORD 0 010622 005 005 .BYTE 5,5 010624 110220 .WORD DVCH 010626 177777 .WORD -1 010630 025167 .RAD50 /F11/ 010632 000000 .WORD 0 010634 000000 .WORD 0 010636 000000 .WORD 0 010640 000000 .WORD 0 1619 010636' .=.-4 LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 40-3 LOW CORE -- LOGICAL UNIT TABLES 1620 010636 000002 .WORD 2 1621 010640 050700 .WORD 50700 1622 010642 .RP5PE:: 1623 010642 .PUDEN DB,5,FW,C1DB,0,0,512.,.RP5PE,RPTSK,DVCH,F11,0 010642 104 102 .ASCII "DB" 010644 005 .BYTE 5 010645 300 .BYTE FW 010646 140110 .WORD C1DB 010650 000000 .WORD 0 010652 000000 .WORD 0 010654 001000 .WORD 512. 010656 000000 .WORD 0 010660 010642' .WORD .RP5PE 010662 007242' .WORD RPTSK 010664 010664' .WORD . 010666 010664' .WORD .-2 010670 000000 .WORD 0 010672 005 005 .BYTE 5,5 010674 110220 .WORD DVCH 010676 177777 .WORD -1 010700 025167 .RAD50 /F11/ 010702 000000 .WORD 0 010704 000000 .WORD 0 010706 000000 .WORD 0 010710 000000 .WORD 0 1624 010706' .=.-4 1625 010706 000002 .WORD 2 1626 010710 050700 .WORD 50700 1627 010712 .RP6PE:: 1628 010712 .PUDEN DB,6,FW,C1DB,0,0,512.,.RP6PE,RPTSK,DVCH,F11,0 010712 104 102 .ASCII "DB" 010714 006 .BYTE 6 010715 300 .BYTE FW 010716 140110 .WORD C1DB 010720 000000 .WORD 0 010722 000000 .WORD 0 010724 001000 .WORD 512. 010726 000000 .WORD 0 010730 010712' .WORD .RP6PE 010732 007242' .WORD RPTSK 010734 010734' .WORD . 010736 010734' .WORD .-2 010740 000000 .WORD 0 010742 005 005 .BYTE 5,5 010744 110220 .WORD DVCH 010746 177777 .WORD -1 010750 025167 .RAD50 /F11/ 010752 000000 .WORD 0 010754 000000 .WORD 0 010756 000000 .WORD 0 010760 000000 .WORD 0 1629 010756' .=.-4 1630 010756 000002 .WORD 2 1631 010760 050700 .WORD 50700 1632 010762 .RP7PE:: 1633 010762 .PUDEN DB,7,FW,C1DB,0,0,512.,.RP7PE,RPTSK,DVCH,F11,0 010762 104 102 .ASCII "DB" LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 40-4 LOW CORE -- LOGICAL UNIT TABLES 010764 007 .BYTE 7 010765 300 .BYTE FW 010766 140110 .WORD C1DB 010770 000000 .WORD 0 010772 000000 .WORD 0 010774 001000 .WORD 512. 010776 000000 .WORD 0 011000 010762' .WORD .RP7PE 011002 007242' .WORD RPTSK 011004 011004' .WORD . 011006 011004' .WORD .-2 011010 000000 .WORD 0 011012 005 005 .BYTE 5,5 011014 110220 .WORD DVCH 011016 177777 .WORD -1 011020 025167 .RAD50 /F11/ 011022 000000 .WORD 0 011024 000000 .WORD 0 011026 000000 .WORD 0 011030 000000 .WORD 0 1634 011026' .=.-4 1635 011026 000002 .WORD 2 1636 011030 050700 .WORD 50700 1638 000003 L.DT0==3 1640 011032 DT0PEN:: 1641 011032 .PUDEN DT,0,FW,C1,0,0,512.,DT0PEN,DTTSK,DVCH,F11,0 011032 104 124 .ASCII "DT" 011034 000 .BYTE 0 011035 300 .BYTE FW 011036 140010 .WORD C1 011040 000000 .WORD 0 011042 000000 .WORD 0 011044 001000 .WORD 512. 011046 000000 .WORD 0 011050 011032' .WORD DT0PEN 011052 007402' .WORD DTTSK 011054 011054' .WORD . 011056 011054' .WORD .-2 011060 000000 .WORD 0 011062 005 005 .BYTE 5,5 011064 110220 .WORD DVCH 011066 177777 .WORD -1 011070 025167 .RAD50 /F11/ 011072 000000 .WORD 0 011074 000000 .WORD 0 011076 000000 .WORD 0 011100 000000 .WORD 0 1642 011100' .=.-2 1643 011100 001102 .WORD 1102 1644 011102 DT1PEN:: 1645 011102 .PUDEN DT,1,FW,C1,0,0,512.,DT1PEN,DTTSK,DVCH,F11,0 011102 104 124 .ASCII "DT" 011104 001 .BYTE 1 011105 300 .BYTE FW 011106 140010 .WORD C1 011110 000000 .WORD 0 011112 000000 .WORD 0 LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 40-5 LOW CORE -- LOGICAL UNIT TABLES 011114 001000 .WORD 512. 011116 000000 .WORD 0 011120 011102' .WORD DT1PEN 011122 007402' .WORD DTTSK 011124 011124' .WORD . 011126 011124' .WORD .-2 011130 000000 .WORD 0 011132 005 005 .BYTE 5,5 011134 110220 .WORD DVCH 011136 177777 .WORD -1 011140 025167 .RAD50 /F11/ 011142 000000 .WORD 0 011144 000000 .WORD 0 011146 000000 .WORD 0 011150 000000 .WORD 0 1646 011150' .=.-2 1647 011150 001102 .WORD 1102 1663 ; 1664 011152 LP0PUD:: 1665 011152 .PUDEN LP,0,0,UC.REC!UC.CCL,0,0,132.,LP0PUD,LPTSK,0,0,0 011152 114 120 .ASCII "LP" 011154 000 .BYTE 0 011155 000 .BYTE 0 011156 000003 .WORD UC.REC!UC.CCL 011160 000000 .WORD 0 011162 000000 .WORD 0 011164 000204 .WORD 132. 011166 000000 .WORD 0 011170 011152' .WORD LP0PUD 011172 007302' .WORD LPTSK 011174 011174' .WORD . 011176 011174' .WORD .-2 011200 000000 .WORD 0 011202 005 005 .BYTE 5,5 011204 000000 .WORD 0 011206 177777 .WORD -1 011210 135600 .RAD50 /0/ 011212 000000 .WORD 0 011214 000000 .WORD 0 011216 000000 .WORD 0 011220 000000 .WORD 0 1668 ; 1669 011222 FE0PUD:: 1670 011222 .PUDEN FE,0,UF.RH,C1,0,0,512.,FE0PUD,FETSK,DVCH,T20,0 011222 106 105 .ASCII "FE" 011224 000 .BYTE 0 011225 200 .BYTE UF.RH 011226 140010 .WORD C1 011230 000000 .WORD 0 011232 000000 .WORD 0 011234 001000 .WORD 512. 011236 000000 .WORD 0 011240 011222' .WORD FE0PUD 011242 007442' .WORD FETSK 011244 011244' .WORD . 011246 011244' .WORD .-2 011250 000000 .WORD 0 LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 40-6 LOW CORE -- LOGICAL UNIT TABLES 011252 005 005 .BYTE 5,5 011254 110220 .WORD DVCH 011256 177777 .WORD -1 011260 101036 .RAD50 /T20/ 011262 000000 .WORD 0 011264 000000 .WORD 0 011266 000000 .WORD 0 011270 000000 .WORD 0 1672 ; 1673 011272 SY0PUD:: 1677 1680 011272 .PUDEN SY,0,0,0,0,0,0,DT0PEN,0,0,0,0 011272 123 131 .ASCII "SY" 011274 000 .BYTE 0 011275 000 .BYTE 0 011276 000000 .WORD 0 011300 000000 .WORD 0 011302 000000 .WORD 0 011304 000000 .WORD 0 011306 000000 .WORD 0 011310 011032' .WORD DT0PEN 011312 000000 .WORD 0 011314 011314' .WORD . 011316 011314' .WORD .-2 011320 000000 .WORD 0 011322 005 005 .BYTE 5,5 011324 000000 .WORD 0 011326 177777 .WORD -1 011330 135600 .RAD50 /0/ 011332 000000 .WORD 0 011334 000000 .WORD 0 011336 000000 .WORD 0 011340 000000 .WORD 0 1685 011342 .PUDEA:: 1686 ; END OF LOGICAL UNIT ABLE LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 41 LOW CORE -- KL10 HARDWARE ENVIRONMENT DATA 1688 .SBTTL LOW CORE -- KL10 HARDWARE ENVIRONMENT DATA 1689 1690 1691 011342 .CPUSN:: 1692 011342 000000 .WORD 0 ; [4.2333] KL10 CPU SERIAL NUMBER 1693 ; [4.2333] .EQ. 0 ==> MUST BE READ 1694 ; [4.2333] .LT. 0 ==> CAN'T BE READ 1695 ; [4.2333] .GT. 0 ==> ALREADY READ 1696 011344 .HRDWR:: 1697 011344 000000 .WORD 0 ; [4.2333] HARDWARE OPTION BIT MASK 1698 1699 000001 H.KUDF==BIT0 ; [4.2333] UNDEFINED 1700 000002 H.KMOS==BIT1 ; [4.2333] MOS MASTER OSCILLATOR 1701 000004 H.KEXT==BIT2 ; [4.2333] EXTENDED ADDRESING 1702 000010 H.KCHN==BIT3 ; [4.2333] INTERNAL CHANNELS 1703 000020 H.KCAC==BIT4 ; [4.2333] CACHE 1704 000040 H.KPWR==BIT5 ; [4.2333] LINE FREQUENCY 1705 ; [4.2333] .EQ. 0 ==> 60 HZ. 1706 ; [4.2333] .NE. 0 ==> 50 HZ. 1707 ; 1708 ; LOCATIONS TO STORE PC AND FLAGS FOR WARM RESTART VIA "SAVE PC" COMMAND 1709 ; TO PARSER 1710 ; 1711 011346 .ERRPC:: 1712 011346 000000 000000 000000 .WORD 0,0,0 ; KL PC REGISTER GOES HERE 1713 011354 .ERRCD:: 1714 011354 000000 000000 000000 .WORD 0,0,0 ; KL FLAGS AND ERRCOD GO HERE 1715 ; 1716 ; WARM RESTART (FAULT CONTINUATION) ERROR CODES 1717 ; 1718 000001 ERRCES==1 ; CLOCK ERROR STOP 1719 000002 ERREPE==2 ; EBUS PARITY ERROR 1720 000003 ERRDEX==3 ; DEPOSIT EXAMINE ERROR 1721 000004 ERRCST==4 ; KEEP ALIVE STOPPED 1722 000005 ERRPTO==5 ; PROTOCOL TIMEOUT 1723 000006 ERRFME==6 ; FAST MEMORY PARITY ERROR 1724 000007 ERRCPE==7 ; CRAM PARITY ERROR 1725 000010 ERRDPE==10 ; DRAM PARITY ERROR 1726 000011 ERRTSP==11 ; KL HALTED 1727 000012 ERRTRR==12 ; TEN REQUESTED REBOOT 1728 1729 011362 .MISC:: 1730 011362 000 .BYTE 0 ; MISC. , SEE BELOW FOR BIT DEFINETIONS 1731 1732 000002 M.PARQ==BIT1 ; USED IN TTYDRR WHEN PARSER IS REQUESTED 1733 .EVEN 1734 011364 ABCHAR:: 1735 011364 000000 .WORD 0 ; [6.1567] LAST AUTO BAUD CHARACTER 1736 011366 000000 .RHPD:: .WORD 0 1737 011370 .PFDBG:: 1738 011370 000000 .WORD 0 ;[**] 1739 011372 .IODBG:: 1740 011372 000000 .WORD 0 ;[**] 1741 011374' .LCEND==. ; [4.2333] DEFINE THE END OF THE STATUS BLOCK 1742 011374 CPYRGT:: 1743 011374 103 117 120 .ASCII /COPYRIGHT (C) 1984 DIGITAL EQUIPMENT CORPORATION/ 011377 131 122 111 LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 41-1 LOW CORE -- KL10 HARDWARE ENVIRONMENT DATA 011402 107 110 124 011405 040 050 103 011410 051 040 061 011413 071 070 064 011416 040 104 111 011421 107 111 124 011424 101 114 040 011427 105 121 125 011432 111 120 115 011435 105 116 124 011440 040 103 117 011443 122 120 117 011446 122 101 124 011451 111 117 116 1744 .EVEN LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 42 LOW CORE -- INITLM (INITIALIZATION) 1746 .SBTTL LOW CORE -- INITLM (INITIALIZATION) 1747 1748 ; 1749 ; INITIALIZATION CODE ALSO DOUBLES AS 1750 ; EMERGENCY STACK AREA FOR CRASH 1751 ; 1752 011454 INITLM:: 1753 011454 013700 001004' MOV .EXEND+2,R0 ; GET ABSOLUTE EXEC LIMIT 1754 011460 062700 000003 ADD #3,R0 ; ROUND UP TO NEXT 4 BYTES 1755 011464 042700 000003 BIC #3,R0 ; SO 1756 011470 010037 001426' MOV R0,.FREPL ; SET BASE OF FREE POOL 1757 011474 012701 075774 MOV #.BGBST-4,R1 ; END OF FREE POOL MINUS 10 BYTES 1758 011500 160001 SUB R0,R1 ; COMPUTE SIZE OF FREE POOL 1759 011502 005020 CLR (R0)+ ; INDICATE NO LINKS 1760 011504 010110 MOV R1,@R0 ; SET FREE POOL SIZE 1761 011506 010137 001430' MOV R1,.FREPL+2 ; HERE TOO 1762 011512 013700 001422' MOV .BGBUF,R0 1763 011516 005020 CLR (R0)+ 1764 011520 012710 002000 MOV #.BGLEN,@R0 1765 011524 105237 001123' INCB .NOERR+1 ; SET FORCED STOP 1766 011530 010706 MOV PC,SP ; SET UP THE STACK 1767 011532 012737 000200 001014' MOV #EV.PF,.SERFG+0 ; SET POWER FAIL 1768 011540 012737 004000 177776 MOV #4000,@#PS ; ENABLE INTERRUPTS 1769 011546 012746 014040' MOV #ASXE1,-(SP) 1770 011552 162706 000006 SUB #6,SP ; SET UP INITIAL TO TEN Q 1771 011556 000137 047366' JMP INIAN ; GO DO IT 1772 ; 1773 011562 EMGSTK:: ; EMERGENCY STACK AREA LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 43 LOW CORE -- TRAP SERVICE FOR COMMON PROGRAM TRAPS 1775 .SBTTL LOW CORE -- TRAP SERVICE FOR COMMON PROGRAM TRAPS 1776 ; 1777 ; TRAPS HANDLED HERE ARE: 1778 ; 1779 ; TRAP TO 4 (DEVICE OR MEMORY TIMEOUT AND 11 CATCH ALL) 1780 ; TRAP TO 10 (ILLEGAL INSTRUCTION) 1781 ; T-BIT AND BPT TRAPS 1782 ; IOT INSTRUCTION 1783 ; TRAP INSTRUCTION 1784 ; 1785 ; ILLEGAL INTERRUPTS TRAP HERE. THEY ARE DETERMINED 1786 ; BY PLACING AN ODD ADDRESS IN UNUSED TRAP VECTORS 1787 ; WHEN THE PROCESSOR TRAPS TO AN ILLEGAL TRAP VECTOR IT WIL 1788 ; PUT THE ILLEGAL (ODD) ADDRESS IN THE PC AND TRAP TO 4 1789 ; THIS WILL THEN ALLOW THE FIELD SERVICE PEOPLE TO 1790 ; DETERMINE WHAT LOCATION THE PROCESSOR HAS PICKED 1791 ; TO DO AN ILLEGAL TRAP 1792 ; 1793 ; 1794 ; GENERALLY THESE TRAPS LIKE THE OTHERS THAT TRAP TO UN ATTACHED 1795 ; TRAP VECTORS ARE FATAL. THESE HAVE BEEN SEPARATED OUT 1796 ; BECAUSE THEY ARE PROBABLY PROGRAM ERRORS AND NOT 1797 ; HARDWARE ERRORS. IT IS POSSIBLE THAT IF THESE ARE 1798 ; SEPARATED FROM HARDWARE TRAPS THAT IT WILL BE POSSIBLE 1799 ; TO PROVIDE SOME PROGRAM DEBUGGING BY IDENTIFICATION OF 1800 ; THESE SPECIFIC TYPES. 1801 ; 1802 ; HARDWARE/SOFTWARE ERROR TRAPS HANDLED HERE ARE: 1803 ; 1804 ; 1. TRAP TO UNASSIGNED TRAP VECTOR 1805 ; 2. PARITY ERROR 1806 ; 3. RESERVED INSTRUCTION TRAP 1807 ; 4. IOT TRAP 1808 ; 1809 ; STACK SUMMARY: 1810 ; 0(SP) -- TRAP PC 1811 ; 2(SP) -- TRAP PS 1812 ; 1813 .ENABL LSB 1814 011562 COMTRP: 1815 011562 013737 177776 001120' MOV PS,TRPASV ; SAVE THE COMTRP PS 1816 011570 042737 177760 001120' BIC #177760,TRPASV ; MASK OFF PRIORITY BITS 1817 011576 022706 001000 CMP #1000,SP ; LEGAL STACK? 1818 011602 103403 BLO 10$ ; YES -- NOT RED VIOLATION 1819 011604 012706 011562' MOV #EMGSTK,SP ; NO -- BETTER RESCUE STACK 1820 011610 000451 BR 30$ ; THEN CRASH SYSTEM 1821 ; 1822 011612 10$: 1823 011612 010546 MOV R5,-(SP) 1824 011614 032766 000340 000004 BIT #340,4(SP) ; EXEC? 1825 011622 001044 BNE 30$ ; YES -- CRASH 1826 ; FIND THE TRAP VECTOR 1827 011624 013705 001006' MOV .CRTSK,R5 ; FIND THE CURRENT TASK 1828 011630 001441 BEQ 30$ ; [DSW-DEBUG] NONE, JUST CRASH 1829 011632 016505 000016 MOV A.TD(R5),R5 ; FIND STD POINTER 1830 011636 016505 000030 MOV S.SS(R5),R5 ; FIND THE SST VECTOR 1831 011642 001410 BEQ CMNABO ; NONE -- CRASH LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 43-1 LOW CORE -- TRAP SERVICE FOR COMMON PROGRAM TRAPS 1832 011644 063705 001120' ADD TRPASV,R5 ; FIND WHICH VECTOR 1833 011650 MFPS @R5,R5 ; FIND THE ADDRESS 011650 011505 MOV @R5,R5 1834 011652 001404 BEQ CMNABO ; NONE FOUND -QUIT 1835 011654 012637 001116' MOV (SP)+,EMTSTK ; SAVE R5 FOR COMMON TRAP 1836 011660 000137 013556' JMP .SSTCO 1837 ; 1838 011664 CMNABO:: 1839 011664 013705 001006' MOV .CRTSK,R5 ; FIND THE CURRENT TASK 1840 011670 013765 001120' 000024 MOV TRPASV,A.FM+0(R5) ;SET THE REASON FOR ABORT 1841 011676 112765 000004 000014 MOVB #TS.TKN,A.TS(R5) ;SET TASK STATUS TO ABORT 1842 011704 005237 001124' INC .TKTN ; SET TKTN FLAG 1843 011710 026527 000006 010022' CMP A.PD(R5),#F11TPD ;FILES 11 TPD? 1844 011716 001003 BNE 20$ ; NO -- TKTN WILL WORK 1845 011720 .CRASH FTA ; YES -- CAN'T GET TKTN IN 011720 000004 IOT 011722 106 124 101 .ASCIZ /FTA/ 011725 000 1846 ; 1847 011726 TRPXIT: 1848 011726 20$: 1849 011726 012605 MOV (SP)+,R5 ; RESTORE R5 1850 011730 000137 015062' JMP ..INTX ; RETURN 1851 ; 1852 011734 30$: 1853 011734 013705 001120' MOV TRPASV,R5 ; DO COMMON CRASH PROCEDURE 1854 011740 000175 011744' JMP @CRSTB(R5) ; CRASH 1855 .DSABL LSB 1856 ; 1857 011744 CRSTB: 1858 011744 011754' .WORD TRP4 1859 011746 012024' .WORD RESERV 1860 011750 012032' .WORD BPTTRP 1861 011752 012070' .WORD IOTTRP 1862 ; 1863 011754 TRP4: 1864 011754 012705 000004 MOV #4,R5 ; POINT TO TRAP VECTOR 1865 011760 011546 MOV (R5),-(SP) ; SAVE IT 1866 011762 012715 012002' MOV #10$,(R5) ; SET UP TEMPORARY VECTOR 1867 011766 005777 167372 TST @.PRSTA ; WAS IT THE DTE20?? 1868 011772 012615 MOV (SP)+,(R5) ; NO -- OTHER BUS TIMEOUT 1869 011774 .CRASH T04 011774 000004 IOT 011776 124 060 064 .ASCIZ /T04/ 012001 000 1870 ; 1871 012002 10$: ; HERE ON DTE-20 BUS TIMEOUT 1872 012002 022626 CMP (SP)+,(SP)+ ; GET RID OF SECOND TRAP PS, PC 1873 012004 012615 MOV (SP)+,(R5) ; RESTORE TRAP VECTOR 1874 012006 032737 004000 001012' BIT #EF.PFR,.COMEF+2 ; POWERFAIL IN PROGRESS?? 1875 012014 001344 BNE TRPXIT ; YES -- IGNORE TRAP 1876 012016 .CRASH DTD ; NO -- DTE20 IS DEAD 012016 000004 IOT 012020 104 124 104 .ASCIZ /DTD/ 012023 000 1877 ; 1878 012024 RESERV: LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 43-2 LOW CORE -- TRAP SERVICE FOR COMMON PROGRAM TRAPS 1879 012024 .CRASH RES 012024 000004 IOT 012026 122 105 123 .ASCIZ /RES/ 012031 000 1880 ; 1881 012032 BPTTRP: 1882 012032 .CRASH TBT 012032 000004 IOT 012034 124 102 124 .ASCIZ /TBT/ 012037 000 1883 ; 1884 012040 .PARER: 1885 012040 012700 172100 MOV #.PARRG,R0 ; SET UP POINTER TO REGISTERS 1886 012044 012737 012062' 000004 MOV #20$,@#4 ; SET UP TO POINT TO CRASH MESSAGE ON NXM 1887 012052 012701 001022' MOV #PARSAV,R1 ; SET UP SAVE AREA POINTER 1888 012056 10$: 1889 012056 012021 MOV (R0)+,(R1)+ 1890 012060 000776 BR 10$ 1891 ; 1892 012062 20$: 1893 012062 .CRASH MPE ; MEMORY PARITY ERROR 012062 000004 IOT 012064 115 120 105 .ASCIZ /MPE/ 012067 000 1894 ; LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 44 LOW CORE -- CRASH ROUTINE 1896 .SBTTL LOW CORE -- CRASH ROUTINE 1897 ; 1898 ; CRASH -- SUBROUTINE THAT WILL NOT RETURN TO SAVE THE 1899 ; INFORMATION NECESSARY WHEN THE MACHINE ENTERS AN UNRECOVERABLE 1900 ; STATE THAT REQUIRES RE-LOAD. CRASH ATTEMPTS TO SAVE ALL THE 1901 ; VOLATILE REGISTERS THAT MIGHT BE NECESSARY TO DEBUG 1902 ; THE SOFTWARE OR HARDWARE WHEN THE PDP-11 SYSTEM CRASHES. 1903 ; 1904 ; STACK SUMMARY: 1905 ; 1906 ; 0(SP) -- IOT TRAP PC 1907 ; 2(SP) -- IOT TRAP PS 1908 ; 1909 012070 IOTTRP: 1910 012070 005737 011372' TST .IODBG ;[**] 1911 012074 001413 BEQ 5$ ;[**] 1912 012076 010546 MOV R5,-(SP) ;[**] 1913 012100 012705 012366' MOV #CMSG,R5 ;[**] 1914 012104 CALL 20$ ;[**] 012104 004737 012276' JSR PC,20$ 1915 012110 012705 012402' MOV #TTTMSG,R5 ;[**] 1916 012114 CALL 20$ ;[**] 012114 004737 012276' JSR PC,20$ 1917 012120 012605 MOV (SP)+,R5 ;[**] 1918 012122 000442 BR 10$ ;[**] 1919 012124 005237 011372' 5$: INC .IODBG ;[**] 1920 012130 016605 000002 MOV 2(SP),R5 ; TRAP PC POINTS TO THE CRASH CODE TEXT 1921 012134 010637 001020' MOV SP,SPSAV ; SAVE SP 1922 012140 012706 011562' MOV #EMGSTK,SP ; SET UP THE EMERGENCY STACK POINTER 1923 012144 CALL .IOSNP ; [4.2314] SNAPSHOT THE I/O PAGE 012144 004737 012406' JSR PC,.IOSNP 1924 012150 010546 MOV R5,-(SP) 1925 012152 012705 012366' MOV #CMSG,R5 ; SET UP THE CRASH MESSAGE POINTER 1926 012156 CALL 20$ ; PRINT THE MESSAGE 012156 004737 012276' JSR PC,20$ 1927 012162 011605 MOV (SP),R5 ; CRASH CODE POINTER TO R5 1928 012164 010446 MOV R4,-(SP) ; SAVE R4 1929 012166 005004 CLR R4 ; CLEAR R4 1930 012170 012524 MOV (R5)+,(R4)+ ; SAVE THE CRASH CODE 1931 012172 011524 MOV (R5),(R4)+ ; 1932 012174 013705 001022' MOV PARSAV,R5 ; GET PARITY ERROR DATA 1933 012200 006205 ASR R5 ; POSITION IT 1934 012202 006205 ASR R5 ; 1935 012204 006205 ASR R5 ; 1936 012206 006205 ASR R5 ; 1937 012210 006205 ASR R5 ; 1938 012212 150544 BISB R5,-(R4) ; SAVE IT IN HIGH BYTE 1939 012214 012604 MOV (SP)+,R4 ; RESTORE REGISTERS 1940 012216 012605 MOV (SP)+,R5 ; CRASH CODE POINTER TO R5 1941 012220 CALL 20$ ; PRINT THE CRASH CODE 012220 004737 012276' JSR PC,20$ 1942 ; 1943 ; CLOSED LOOP TO RING THE KL DOORBELL AND REQUEST A RELOAD. IN RESPONSE TO 1944 ; THIS REQUEST, THE KL10 WILL "PUSH THE ELECTRONIC SWITCH" IN THE BM873 ROM. 1945 ; THIS WILL: 1946 ; 1947 ; 1. FORCE A "POWERFAIL" TRAP LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 44-1 LOW CORE -- CRASH ROUTINE 1948 ; 2. DUMP AN RELOAD THE FRONT-END 1949 ; 1950 ; NOTE THAT THE FRONT-END CPU MUST BE RUNNING FOR THE CONTEXT SAVE OF THE 1951 ; POWERFAIL TRAP TO COMPLETE PROPERLY. 1952 ; 1953 012224 005037 011372' CLR .IODBG ;[**] 1954 012230 10$: 1955 012230 012737 000006 000004 MOV #6,@#4 ; FORCE AN EARLY HALT IF NXM 1956 012236 005037 000006 CLR @#6 1957 012242 013705 001366' MOV .PRDTE,R5 ; FIND DTE20 1958 012246 062705 000006 ADD #6,R5 ; POINT TO DEXWD1 1959 012252 012725 000004 MOV #LOAD11,(R5)+ 1960 012256 012725 010000 MOV #DEP,(R5)+ 1961 012262 012725 000022 MOV #22,(R5)+ ; REQUEST RELOAD 1962 012266 012777 000400 167070 MOV #TO10DB,@.PRSTA ; RING BELL 1963 012274 000755 BR 10$ 1964 ; 1965 012276 20$: ; 1966 012276 105737 001234' TSTB .KLNSW+0 ; IS KLINIK ACTIVE?? 1967 012302 003402 BLE 30$ ; NOT THAT WE CARE... 1968 012304 111537 175616 MOVB (R5),@#PRB1 ; YES -- PRINT A CHARACTER ON KLINIK LINE 1969 012310 30$: ; 1970 012310 112537 177566 MOVB (R5)+,@#PRB0 ; PRINT THE SAME CHARACTER ON THE CTY 1971 012314 40$: ; 1972 012314 105737 177564 TSTB @#PRS0 ; IS THE CTY DONE??? 1973 012320 100375 BPL 40$ ; NO -- WAIT SOME MORE 1974 012322 105737 001234' TSTB .KLNSW+0 ; YES -- IS KLINIK ACTIVE?? 1975 012326 003403 BLE 50$ ; NO -- NOT THAT WE CARE... 1976 012330 105737 175614 TSTB @#PRS1 ; YES -- IS THE KLINIK LINE FINISHED?? 1977 012334 100367 BPL 40$ ; NO -- WAIT SOME MORE 1978 012336 50$: ; 1979 012336 105715 TSTB (R5) ; MESSAGE DONE?? 1980 012340 001356 BNE 20$ ; NO -- CONTINUE THE MESSAGE 1981 012342 005737 011370' TST .PFDBG ; [**] 1982 012346 001406 BEQ IGNO ;[**] 1983 012350 112737 000120 177566 MOVB #'P,@#PRB0 ;[**] 1984 012356 105737 177564 60$: TSTB @#PRS0 ;[**] 1985 012362 100375 BPL 60$ ;[**] 1986 012364 IGNO:: 1987 012364 RETURN ; YES -- RETURN TO CALLER 012364 000207 RTS PC 1988 ; 1989 ; 1990 ; 1991 ; AFTER THE SYSTEM HALTS THE PDP-10 WILL EVENTUALLY REALIZE 1992 ; THAT THE PDP11 HAS CRASHED AND ATTEMPT TO 1993 ; RELOAD IT. 1994 ; 1995 012366 CMSG: 1996 012366 015 012 061 .ASCIZ <15><12>"11-HALT"<15><12> 012371 061 055 110 012374 101 114 124 012377 015 012 000 1997 012402 TTTMSG: 1998 012402 124 124 124 .ASCIZ /TTT/ ;[**] 012405 000 1999 .EVEN LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 45 LOW CORE -- I/O PAGE SNAPSHOT 2001 .SBTTL LOW CORE -- I/O PAGE SNAPSHOT 2002 2003 ;+ 2004 ; .IOSNP -- SNAPHOT THE I/O PAGE INTO THE GEN PARTITION 2005 ; 2006 ; THIS SUBROUTINE IS INVOKED WHENEVER RSX-20F REQUESTS A RELOAD. 2007 ; THE CONTENT OF ALL REGISTERS IN THE I/O PAGE (160000 - 177776) ARE 2008 ; LOADED INTO THE GEN PARTITION (100000 - 107776). NON-EXISTENT REGISTERS 2009 ; CONTAIN "123456" IN THE DUMP. 2010 ; 2011 ; INPUTS: 2012 ; 2013 ; NONE. 2014 ; 2015 ; OUTPUTS: 2016 ; 2017 ; THE I/O PAGE IS LOADED INTO 100000 THRU 107776. 2018 ; 2019 ; NOTE: 2020 ; 2021 ; THIS ROUTINE MUST BE CALLED AT BR6, OR HIGHER. 2022 ;- 2023 2024 007777 IOPSIZ = <177776-160000>/2 2025 2026 012406 .IOSNP: 2027 012406 010046 MOV R0,-(SP) ;;; [4.2314] SAVE REGISTERS 2028 012410 010146 MOV R1,-(SP) 2029 012412 010246 MOV R2,-(SP) 2030 012414 013746 000004 MOV @#4,-(SP) ;;; [4.2314] SAVE TRAP-AT-4 VECTOR 2031 012420 012737 012462' 000004 MOV #30$,@#4 ;;; [4.2314] SET ALTERNATE VECTOR 2032 012426 012700 160000 MOV #160000,R0 ;;; [4.2314] BASE OF I/O PAGE 2033 012432 012701 100000 MOV #100000,R1 ;;; [4.2314] BASE OF GEN PARTITION 2034 012436 012702 007777 MOV #IOPSIZ,R2 ;;; [4.2314] I/O PAGE SIZE 2035 012442 10$: 2036 012442 012021 MOV (R0)+,(R1)+ ;;; [4.2314] SAVE THE I/O PAGE 2037 012444 20$: 2038 012444 077202 SOB R2,10$ ;;; [4.2314] LOOP TILL DONE 2039 012446 012637 000004 MOV (SP)+,@#4 ;;; [4.2314] RESTORE VECTOR 2040 012452 012602 MOV (SP)+,R2 ;;; [4.2314] AND REGISTERS 2041 012454 012601 MOV (SP)+,R1 2042 012456 012600 MOV (SP)+,R0 2043 012460 RETURN ;;; [4.2314] TO CALLER 012460 000207 RTS PC 2044 012462 30$: 2045 012462 012721 123456 MOV #123456,(R1)+ ;;; [4.2314] MARK NON-EXISTENT REGISTER 2046 012466 032626 BIT (SP)+,(SP)+ ;;; [4.2314] RESET STACK 2047 012470 000765 BR 20$ ;;; [4.2314] AND CONTINUE 2048 ; LC -- LOW CORE FOR RSX20F MACRO M1113 03-APR-86 20:41 PAGE 46 LOW CORE -- I/O PAGE SNAPSHOT 2050 2051 .TITLE SCH - TASK SCHEDULER & GLOBAL DEFS 2052 .SBTTL EXEC MODULE ONE -- TITLE PAGE 2053 012472 IDENT$ 15,05,RSX$$F .IDENT /A15050/ 2054 ; 2055 ; COPYRIGHT (C) 1975, 1984, 1985 BY 2056 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS. 2057 ; ALL RIGHTS RESERVED. 2058 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED 2059 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION 2060 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE- 2061 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. 2062 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED. 2063 ; 2064 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT 2065 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT 2066 ; CORPORATION. 2067 ; 2068 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS 2069 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL. 2070 ; 2071 ; 2072 ; MODULE: EXEC MODULE ONE 2073 ; 2074 ; VERSION: 15-05 2075 ; 2076 ; AUTHOR: R. MCLEAN 2077 ; 2078 ; DATE: 19 MAR 75 2079 ; 2080 ; 2081 ; THIS MODULE CONTAINS: 2082 ; 2083 ; 1 -- SYSTEM NOTES, 2084 ; 2 -- GLOSSARY, 2085 ; 3 -- SYMBOLIC DEFINITIONS, 2086 ; 4 -- NUL TASK. 2087 ; 2088 ; MODIFICATIONS: 2089 ; 2090 ; NO. DATE PROGRAMMER PURPOSE 2091 ; --- ---- ---------- ------- 2092 ; 001 18-OCT-76 A. PECKHAM ADDITIONAL .KLIWD FLAGS 2093 ; 002 20-OCT-76 A. PECKHAM FIX FOR F11 PARTITION 2094 ; LOAD REQUEST FAILURE. 2095 ; 003 03-FEB-77 R. BELANGER CHANGED KLR EVENT FLAG 2096 ; ADDED KLD EVENT FLAG 2097 ; 004 04-MAR-77 R. BELANGER ADDED CODE IN NULL TASK 2098 ; TO INVOKE TIME OF DAY TASK 2099 ; 005 07-MAR-77 A. PECKHAM REMOVE BUG FROM DOWN MESSAGE CODE. 2100 ; 006 01-JUL-77 R. BELANGER ADD KLINIK EVENT LOGGING CODES. 2101 ; 007 18-AUG-77 R. BELANGER ADD POWER RESTART IN PROGRESS FLAG 2102 ; 008 05-OCT-77 R. BELANGER ADD COMM REGION INVALID FLAG 2103 ; 009 27-MAY-78 R. BELANGER DEFINE PROTOCOL TIMEOUT FLAG FOR "TKTN" 2104 ; TCO 4.1.1035 16-NOV-79 R. BELANGER CHANGES TO SUPPORT QUEUE ARBITRATION 2105 ; TCO 4.1.1105 11-MAR-80 R. BELANGER CHANGE "EF.PR1" RECOGNITION SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 46-1 EXEC MODULE ONE -- TITLE PAGE 2106 ; TCO 5.1127 08-AUG-80 S. LEAPLINE MAKE SNDMSG GLOBAL FOR HOST DEBUG 2107 ; 010 27-MAR-81 S. LEAPLINE REMOVE "RSUM" AND "SPND" 2108 ; 2109 ;11-JUL-83 TCO 6.1721 D.WEAVER 2110 ; CHANGE THE %DECSYSTEM-XX NOT RUNNING MESSAGES TO EVEN PARITY AND AT 2111 ; THE SAME TIME MAKE THEM UPPER AND LOWER CASE. 2112 ; SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 47 EXEC MODULE ONE -- SYSTEM NOTES 2114 .SBTTL EXEC MODULE ONE -- SYSTEM NOTES 2115 ;+ 2116 ; PROCESSOR PRIORITIES 2117 ; 2118 ; PERIPHERIAL DEVICE INTERRUPT SERVICE ROUTINES RUN AT PROCESSOR PRIORITY 2119 ; LEVELS FOUR THRU SEVEN (4-7). ALSO, PARTS OF THE SOFTWARE THAT CANNOT BE 2120 ; INTERRUPTED ARE ALSO RUN AT PRIORITY SEVEN (PRI=7). THESE UNINTERRUPTABLE 2121 ; PERIODS ARE AS SHORT AS POSSIBLE. 2122 ; 2123 ; PRIORITY LEVELS ZERO THRU THREE (0-3) ARE USED BY THE SYSTEM AS OPERATION 2124 ; INDICATORS. I.E., THERE ARE NO "SOFTWARE INTERRUPTS", AND THEREFORE, THERE 2125 ; IS NO PRECEDENCE IMPLIED (OR ENVOKED) BY LEVELS ZERO THRU THREE. 2126 ; 2127 ; LEVEL ZERO (PRI=0) IS USED EXCLUSIVELY FOR TASK EXECUTION. 2128 ; 2129 ; LEVELS ONE, TWO, AND THREE ARE USED FOR "SYSTEM LEVEL" EXECUTION. 2130 ; 2131 ; LEVEL TWO (PRI=2) IS USED FOR THE RECOGNITION OF "SYSTEM EVENTS". 2132 ; THESE EVENTS ARE INDICATED IN THE "SYSTEM EVENT RECOGNITION" FLAG 2133 ; '.SERFG' AND ARE RECOGNIZED (SERVICED) ONLY WHEN RETURNING TO 2134 ; TASK EXECUTION (VIZ., FROM AN INTERRUPT, OR FROM A DIRECTIVE). 2135 ; SYSTEM EVENTS ARE (1) SIGNIFICANT EVENT DECLARATIONS, (2) CLOCK 2136 ; TICKS, AND (3) POWER FAILURE RECOVERIES. 2137 ; 2138 ; LEVEL THREE (PRI=3) IS USED FOR EXECUTION OF ROUTINES WHICH CANNOT BE 2139 ; INTERRUPTED BY SIGNIFICANT-EVENT OR CLOCK-TICK RECOGNITION, BUT CAN BE 2140 ; INTERRUPTED BY PERIPHERIAL DEVICE INTERRUPTS 2141 ; IN THESE CASES, THE LEVEL 2142 ; MAY BE SET TO THREE BY ANY MEANS, BUT MUST BE LOWERED TO ZERO BY 2143 ; TRANSFERRING CONTROL TO '..INTX' TO ALLOW RECOGNITION OF "SYSTEM 2144 ; EVENTS THAT MIGHT HAVE OCCURED WHILE RUNNING AT PRI=3. 2145 ; THE SYSTEM TRACE (DEBUGGING) ROUTINE RUNS AT PRI=7. 2146 ; 2147 ; 2148 ; 2149 ; FORMAT OF PROCESSOR STATUS (PS) WORD 2150 ; 2151 ; C CPP RXX XLL LTN ZVC 2152 ; 2153 ; CC CURRENT MODE (00:KERNEL, 11:USER) 2154 ; PP PREVIOUS MODE (00:KERNEL, 11:USER) 2155 ; R REGISTER CLEAR (BIT ALWAYS CLEAR) 2156 ; XXX UNUSED BITS 2157 ; LLL PROCESSOR PRIORITY LEVEL 2158 ; T TRACE BIT 2159 ; N CONDITION CODE -- NEGATIVE 2160 ; Z CONDITION CODE -- ZERO 2161 ; V CONDITION CODE -- OVERFLOW 2162 ; C CONDITION CODE -- CARRY 2163 ; 2164 ; KEY TEXT IN THIS LISTING IS DELIMITED BY LINES CONATINING A ";+" AND A ";-" 2165 ; AS THE FIRST TWO CHARACTERS OF A SOURCE LINE. A ";+" LINE DEFINES THE 2166 ; BEGINNING OF A BLOCK OF KEY TEXT, AND A ";-" LINE DEFINES THE END. 2167 ;- SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 48 EXEC MODULE ONE -- GLOSSARY 2169 .SBTTL EXEC MODULE ONE -- GLOSSARY 2170 ;+ 2171 ; 2172 ; 2173 ; ATL -- ACTIVE TASK LIST 2174 ; 2175 ; CKL -- CLOCK LIST 2176 ; 2177 ; DTL -- DTE20 LIST 2178 ; 2179 ; MRL -- MEMORY REQUEST LIST 2180 ; 2181 ; PUD -- PHYSICAL UNIT DEVICE TABLE 2182 ; 2183 ; DEQUE -- DOUBLE ENDED QUEUE. FORWARD AND BACKWARD CIRCULAR LINKAGES. 2184 ; 2185 ; EXTERNAL PAGE -- 4K PAGE OF REAL MEMORY SPACE (760000-777776) CONTAINING 2186 ; CPU & PERIPHERIAL DEVICE CONTROL & STATUS REGISTERS (THE DEVICE PAGE). 2187 ; 2188 ; ISR -- INTERRUPT SERVICE ROUTINE 2189 ; 2190 ; 2191 ; STD -- SYSTEM TASK DIRECTORY 2192 ;- 2193 2194 .SBTTL MACRO CALLS (MCALL) 2195 2199 .MCALL .ENB0,.INH0,.ENB6,.INH6,.INH,.ENB,.INH5,.ENB5,.CRASH,RQST$ 2200 .MCALL DIR$,CLEF$S,QIOW$,WTSE$,WTSE$S,.STKM,$DEF 2201 .MCALL CALL,RETURN,DTON$S,MFPS,MTPS,MTPI,MFPI,.DQPEN,DECL$S,CMKT$S 2202 .MCALL MRKT$,WTLO$,WSIG$S,WTLO$C,CLEF$C,QIOSY$,MRKT$S 2203 012472 QIOSY$ 2204 012472 $DEF SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 49 EXEC MODULE ONE -- SYMBOLIC DEFINITIONS 2206 .SBTTL EXEC MODULE ONE -- SYMBOLIC DEFINITIONS 2207 ; 2208 ; EXTERNAL PAGE DEFINITIONS 2209 ; 2210 177776 PS==177776 ;PROCESSOR STATUS WORD 2211 177546 LKS==177546 ;KW11L CLOCK 2212 177560 KBS0==177560 ;CTY TTY 2213 177562 KBB0==177562 ;CTY BUFFER (INPUT) 2214 177564 PRS0==177564 ;CTY OUTPUT STATUS 2215 177566 PRB0==177566 ;CTY OUTPUT BUFFER 2216 175610 KBS1==175610 2217 175612 KBB1==175612 2218 175614 PRS1==175614 2219 175616 PRB1==175616 2220 173000 .BM873==173000 ;START OF BOOTSTRAP 2221 172100 .PARRG==172100 ;PARITY ERROR REGISTER 0 2222 ; 2223 000340 PR7==340 ;PRIORITY 7 2224 000340 PRI7==340 2225 000100 .INTEN==000100 ;INTERRUPT ENABLE BIT 2226 ; 2227 172360 KPAR0=172360 ;KERNEL PAGE ADDRESS REG 0 2228 172362 KPAR1=172362 ;REG 1 2229 172364 KPAR2=172364 ;REG 2 2230 172366 KPAR3=172366 ;REG 3 2231 172370 KPAR4=172370 ;REG 4 2232 172372 KPAR5=172372 ;REG 5 2233 172374 KPAR6=172374 ;REG 6 2234 172376 KPAR7=172376 ;REG 7 2235 ; 2236 172300 KPDR0=172300 ;KERNEL PAGE DESCRIPTOR REGISTER 0 2237 172302 KPDR1=172302 ;REG 1 2238 172304 KPDR2=172304 ;REG 2 2239 172306 KPDR3=172306 ;REG 6 2240 172310 KPDR4=172310 ;REG 4 2241 172312 KPDR5=172312 ;REG 5 2242 172314 KPDR6=172314 ;REG 6 2243 172316 KPDR7=172316 ;REG 7 2244 ; 2245 177640 UPAR0=177640 ;USER PAGE ADDRESS REG 0 2246 177642 UPAR1=177642 ;REG 1 2247 177644 UPAR2=177644 ;REG 2 2248 177646 UPAR3=177646 ;REG 3 2249 177650 UPAR4=177650 ;REG 4 2250 177652 UPAR5=177652 ;RRG 5 2251 177654 UPAR6=177654 ;REG 6 2252 177656 UPAR7=177656 ;REG 7 2253 ; 2254 177600 UPDR0=177600 ;USER PAGE DESCRIPTOR REG 0 2255 177602 UPDR1=177602 ;REG 1 2256 177604 UPDR2=177604 ;REG 2 2257 177606 UPDR3=177606 ;REG 3 2258 177610 UPDR4=177610 ;REG 4 2259 177612 UPDR5=177612 ;REG 5 2260 177614 UPDR6=177614 ;REG 6 2261 177616 UPDR7=177616 ;REG 7 2262 ; SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 49-1 EXEC MODULE ONE -- SYMBOLIC DEFINITIONS 2263 000046 $DSW==46 ;DIRECTIVE STATUS WORD 2264 000050 .FSRPT==50 ;FCS POINTER 2265 000054 N.OVPT==54 ;FCP OVERLAY POINTER 2266 ; 2267 ; 2268 ; SYSTEM TRACE (T-BIT) DEBUGGING AID CONDITIONAL DEFINITIONS 2269 ; 2270 000020 TBIT==20 ;TRACE BIT IN PS 2271 ; 2272 000000 STXAS==0 ;SIGNIFICANT EVENT RECOGNITION (ATL SCAN) TRACE SWITCH 2273 000000 STXCS==0 ;CLOCK TICK RECOGNITION TRACE SWITCH 2274 000000 STXDX==0 ;DIRECTIVE EXECUTION TRACE SWITCH 2275 ; 2276 ; PRIVLEDGED TASK EVENT FLAG BIT MASKS 2277 ; 2278 000001 EF.DTE==1 ;EVENT FLAG FOR DTE20 DOORBELL (UNUSED) 2279 000001 E.DTE==1. 2280 000002 EF.CLK==2 ;EVENT FLAG FOR CLOCK (UNUSED) 2281 000002 E.CLK==2. 2282 000004 EF.TTY==4 ;EVENT FLAG FOR TTY INPUT COMPLETE (UNUSED) 2283 000003 E.TTY==3. 2284 000010 EF.NIR==10 ;EVENT FLAG TO SIGNAL QIO REQUEST ENTERED (DRIVERS) 2285 000004 E.NIR==4. 2286 000020 EF.IOD==20 ;EVENT FLAG TO SIGNAL QIO REQUEST DONE (DRIVERS) 2287 000005 E.IOD==5. 2288 000040 EF.BOV==40 ;EVENT FLAG TO SIGNAL NOT ENOUGH NODE SPACE (UNUSED) 2289 000006 E.BOV==6. 2290 000100 EF.TMO==100 ;EVENT FLAG TO SIGNAL TIMOUT REQUEST FOR TTY (TTYDRR & SCOMM) 2291 000007 E.TMO==7. 2292 000200 EF.RQM==200 ;REQUEST MCR (TTYDRR) 2293 000010 E.RQM==8. 2294 000400 EF.WFM==400 ;WAIT FOR MARK TIME (UNUSED) 2295 000011 E.WFM==9. 2296 001000 EF.RKR==1000 ; +++003 REQUEST KLINIK RING SERVICE (TTYDRR) 2297 000012 E.RKR==10. ; +++003 2298 002000 EF.RKH==2000 ; +++003 REQUEST KLINIK HANG-UP SERVICE (TTYDRR) 2299 000013 E.RKH==11. ; +++003 2300 004000 EF.RSS==4000 ; +++009 REQUEST SETSPD FOR AUTOBAUD (TTYDRR) 2301 000014 E.RSS==12. ; +++009 2302 ; 2303 ; RESERVED LOCAL EVENT FLAG BIT MASKS (25. - 32.) 2304 ; 2305 100000 EF.SND==100000 ;SEND ALL FINISHED 2306 000040 E.FSND==32. 2307 ; 2308 ; RESERVED GLOBAL EVENT FLAG BIT MASKS (57. - 64.) 2309 ; 2310 100000 EF.PR1==100000 ; [4.1.1105] PRIMARY PROTOCOL RUNNING FLAG 2311 000100 E.FPR1==64. 2312 040000 EF.CTC==040000 ; [4.1.1105] ^C FLAG 2313 000077 E.FCTC==63. 2314 020000 EF.PR2==020000 ;SECONDARY PROTOCOL RUNNING FLAG 2315 000076 E.FPR2==62. 2316 010000 EF.RKP==010000 ; +++003 KLINIK PARAMETERS RECIEVED (QPRDTE, SAVE) 2317 000075 E.FRKP==61. 2318 004000 EF.PFR==004000 ; +++007 POWER FAIL RESTART IN PROGRESS (SCOMM, KLINIT) 2319 000074 E.FPFR==60. SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 49-2 EXEC MODULE ONE -- SYMBOLIC DEFINITIONS 2320 002000 EF.CRI==002000 ; +++008 COMM REGION IS INVALID (BOOT, TKTN) 2321 000073 E.FCRI==59. 2322 001000 EF.FCP==001000 ; FAULT CONTINUATION IN PROGRESS (BOOT) 2323 000072 E.FFCP==58. 2324 ; 2325 ; COMMON NODE DEFINITONS 2326 ; 2327 000000 N.FP==0 ;FORWARD POINTER 2328 000002 N.BP==2 ;BACKWARD POINTER 2329 000010 N.PR==10 ;PRIORITY BYTE SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 50 EXEC MODULE ONE -- SYMBOLIC DEFINITIONS 2331 ; TPD -- TASK PARTITION DIRECTORY 2332 ; 2333 ; THE "TPD" IS A FIXED LIST OF ENTRIES DESCRIBING EACH PARTITION IN A 2334 ; SYSTEM. 2335 ; CONSISTING OF ENTRIES OF THE FOLLOWING FORMAT: 2336 ; 2337 000000 T.PN==00 ; WD. 00 (B 00) -- PARTITION NAME (FIRST HALF) 2338 ; WD. 01 (B 02) -- PARTITION NAME (SECOND HALF) 2339 000004 T.BA==04 ; WD. 02 (B 04) -- BASE ADDRESS OF PARTITION (IN BYTES) 2340 000006 T.PZ==06 ; WD. 03 (B 06) -- SIZE OF PARTITION (IN BYTES) 2341 000010 T.FW==10 ; WD. 04 (B 10) -- PARTITION FLAGS WORD 2342 000012 T.HP==12 ; WD. 05 (B 12) -- 1/64 TH OF BASE ADR OF FIRST HOLE, OR ZERO IF NO HOLES. 2343 000014 T.RF==14 ; WD. 06 (B 14) -- MRL LISTHEAD (FORWARD LINKAGE) 2344 000016 T.RB==16 ; WD. 07 (B 16) -- MRL LISTHEAD (BACKWARD LINKAGE) 2345 ; 2346 000020 T.SZ==20 ;SIZE (IN BYTES) OF TPD ENTRIES 2347 ; 2348 ; 2349 ; FLAGS WORD BIT DEFINITIONS: 2350 ; 2351 000002 TF.OU==000002 ;[01] SET IF OCCUPIED USER CONTROLLED PARTITION. 2352 ; SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 51 EXEC MODULE ONE -- SYMBOLIC DEFINITIONS 2354 ; 2355 ; TASK HEADER DEFINITIONS 2356 ; 2357 000000 H.CSP==0 ;CURRENT STACK POINTER (UNUSED) 2358 000002 H.HSZ==2 ;LENGTH OF HEADER 2359 000046 H.DSW==46 ;DIRECTIVE STATUS WORD SAVE AREA 2360 000050 H.FCP==50 ;FCP SAVE AREA 2361 000052 H.FOR==52 ;FORTRAN SAVE AREA 2362 000054 H.OVL==54 ;OVERLAY SAVE AREA 2363 000074 H.IPS==74 ;INITIAL PS 2364 000076 H.IPC==76 ;INITIAL PC 2365 000100 H.ISP==100 ;INITIAL SP 2366 000106 H.TKVA==106 ;TASK SST VECTOR ADDRESS 2367 000130 H.LUT==130 ;LOGICAL UNIT TABLE SIZE 2368 ; SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 52 EXEC MODULE ONE -- SYMBOLIC DEFINITIONS 2370 ; 2371 ; STD -- SYSTEM TASK DIRECTORY 2372 ; 2373 ; THE SYSTEM TASK DIRECTORY IS A MEMORY RESIDENT DIRECTORY OF ALL TASKS 2374 ; THAT HAVE BEEN INSTALLED INTO A SYSTEM THAT ARE NOT PREMANENTLY RESIDENT. 2375 ; THIS DIRECTORY CONSISTS OF TWO 2376 ; PARTS: (1) A FIXED SIZE AREA OF ONE WORD FOR EACH TASK THAT COULD 2377 ; BE INSTALLED AT ANY TIME, AND (2) AN STD ENTRY FOR EACH TASK THAT IS 2378 ; INSTALLED. THE FIXED SIZED AREA IS CALLED THE "ALPHA TABLE AREA", AND 2379 ; PROVIDES SPACE FOR AN ALPHABETICALLY ORDERED CONTIGUOUS LIST POINTERS 2380 ; TO STD ENTRIES (TO FACILLATE BINARY SEARCH FOR STD ENTRY BY TASK NAME). 2381 ; EACH STD ENTRY IS OF THE FOLLOWING FORMAT: 2382 ; 2383 000000 S.TN==00 ; WD. 00 (B 00) -- TASK NAME (6 CHAR IN RADIX-50, 2 WORDS) 2384 ; WD. 01 (B 02) -- (SECOND HALF OF TASK NAME) 2385 000004 S.TD==04 ; WD. 02 (B 04) -- DEFAULT TASK PARTITION (TPD ADDRESS) 2386 000006 S.FW==06 ; WD. 03 (B 06) -- FLAGS WORD 2387 000010 S.DP==10 ; WD. 04 (B 10) -- DEFAULT PRIORITY (BYTE) 2388 000011 S.DI==11 ; (B 11) -- SYSTEM DISK INDICATOR (BYTE) 2389 000012 S.BA==12 ; WD. 05 (B 12) -- 1/64 TH OF BASE ADDRESS OF LOAD IMAGE 2390 000014 S.LZ==14 ; WD. 06 (B 14) -- SIZE OF LOAD IMAGE 2391 000016 S.TZ==16 ; WD. 07 (B 16) -- MAX TASK SIZE 2392 000020 S.PC==20 ; WD. 10 (B 20) -- INITIAL PC OF TASK 2393 000022 S.SP==22 ; WD. 11 (B 22) -- INITIAL SP OF TASK 2394 000024 S.RF==24 ; WD. 12 (B 24) -- SEND AND REQUEST QUEUE FORWARD PTR 2395 000026 S.RB==26 ; WD. 13 (B 26) -- SEND AND REQUEST QUEUE BACKWARD PTR 2396 000030 S.SS==30 ; WD. 14 (B 30) -- SST VECTOR TABLE ADDRESS 2397 000032 S.DL==32 ; WD. 15 (B 32) -- LOAD IMAGE FIRST BLOCK NUMBER (32-BITS) 2398 ; WD. 16 (B 34) (SECOND HALF OF DISK ADDRESS) 2399 ; 2400 000036 S.SZ==36 ;SIZE OF STD ENTRY 2401 ; 2402 ; 2403 ; 2404 ; FLAGS WORD BIT DEFINITIONS: 2405 ; 2406 000001 SF.TA==000001 ;[00] SET WHEN TASK IS ACTIVE 2407 000001 SF.PT==000001 ;[00] SET WHEN TASK IS PRIVILEDGED (ACTIVE FOR NOW) 2408 000002 SF.FX==000002 ;[01] SET WHEN TASK IS FIXED IN MEMORY 2409 000004 SF.EX==000004 ;[02] SET WHEN TASK IS TO BE REMOVED ON EXIT 2410 040000 SF.IR==040000 ;[14] SET WHEN INSTALL IS REQUESTED 2411 100000 SF.ST==100000 ;[15] SET WHEN TASK IS SYSTEM TASK 2412 ; SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 53 EXEC MODULE ONE -- SYMBOLIC DEFINITIONS 2414 ; 2415 ; ATL -- ACTIVE TASK LIST 2416 ; 2417 ; THE "ATL" IS A PRIORITY ORDERED DEQUE OF "ATL" NODES FOR ACTIVE TASKS 2418 ; THAT HAVE MEMORY ALLOCATED FOR THEIR EXECUTION. THE TASKS REPRESENTED 2419 ; BY ENTRIES IN THE ATL ARE EITHER MEMORY RESIDENT, OR A REQUEST FOR THEIR 2420 ; LOADING HAS BEEN QUEUED. THE LISTHEAD FOR THIS DEQUE IS IN THE SYSTEM 2421 ; COMMUNICATIONS AREA (SCOM), AND THE NODES ARE OF THE FOLLOWING FORMAT: 2422 ; 2423 ; WD. 00 (B 00) -- FORWARD LINKAGE 2424 ; WD. 01 (B 02) -- BACKWARD LINKAGE 2425 000004 A.SP==04 ; WD. 02 (B 04) -- STACK POINTER (R6) OF RUNNING TASK 2426 ; WHEN TASK IS NOT CURRENT TASK 2427 000006 A.PD==06 ; WD. 03 (B 06) -- TASK'S RUN PARTITION (TPD ADDRESS) 2428 000010 A.RP==10 ; WD. 04 (B 10) -- TASK'S RUN PRIORITY (BYTE) 2429 000012 A.HA==12 ; WD. 05 (B 12) -- 1/64TH REAL ADR OF LOAD IMAGE 2430 000014 A.TS==14 ; WD. 06 (B 14) -- TASK STATUS (BYTE) 2431 000015 A.FB==15 ; WD. 06 (B 15) -- TASK FLAGS BYTE 2432 000016 A.TD==16 ; WD. 07 (B 16) -- SYSTEM TASK DIRECTORY (STD) ENTRY ADDRESS 2433 000020 A.EF==20 ; WD. 10 (B 20) -- TASK'S EVENT FLAGS (1-32) 2434 ; WD. 11 (B 22) -- (SECOND HALF OF TASK'S EVENT FLAGS) 2435 000024 A.FM==24 ; WD. 12 (B 24) -- TASK'S EVENT FLAGS MASKS (64-BITS) 2436 ; WD. 13 (B 26) -- (SECOND WORD OF FLAGS MASK) 2437 ; WD. 14 (B 30) -- (THIRD WORD OF FLAGS MASK) 2438 ; WD. 15 (B 32) -- (FOURTH WORD OF FLAGS MASK) 2439 000034 A.PF==34 ; WD. 16 (B 34) -- POWER FAIL AST TRAP ADDRESS 2440 ; 2441 000036 A.SZ==36 ;SIZE OF ATL 2442 ; 2443 ; TASK STATUS VALUES ARE DESCRIBED AT 'ASXDT' 2444 ; 2445 ; BEFORE EXECUTION , THE FIRST THREE 2446 ; FLAGS MASK WORDS ARE USED AS FOLLOWS: 2447 ; 2448 ; A.FM+0 -- ADDRESS OF TASK LOAD I/O REQUEST DEQUE LISTHEAD, 2449 ; A.FM+2 -- ADDRESS OF TASK LOAD I/O REQUEST NODE, 2450 ; 2451 ; MRL -- MEMORY REQUIRED LIST 2452 ; 2453 ; THE "MRL" IS A PRIORITY ORDERED DEQUE OF "ATL" NODES FOR ACTIVE TASKS 2454 ; THAT REQUIRE MEMORY IN A PARTITION. EACH PARTITION HAS ITS OWN MRL. 2455 ; WHENEVER A NON-FIXED TASK RUNNING IN A PARTITION EXITS, AN 2456 ; ATTEMPT IS MADE TO ASSIGN MEMORY TO THE FIRST (HIGHEST PRIORITY) 2457 ; TASK IN THE LIST. IF MEMORY IS FOUND, THE TASK'S NODE IS 2458 ; MOVED FROM THE "MRL" TO THE "ATL" DEQUE. THE MRL LISTHEAD IS IN 2459 ; THE TPD ENTRY FOR THE CORRESPONDING PARTITION. 2460 ; 2461 ; 2462 ; FLAGS BYTE BIT DEFINITIONS 2463 ; 2464 000200 AF.PP==200 ;[07] SET WHEN TASK IS PRIMARY PROTOCOL TASK 2465 ; SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 54 EXEC MODULE ONE -- SYMBOLIC DEFINITIONS 2467 ; 2468 ; CKL -- CLOCK TABLE 2469 ; 2470 ; THE CLOCK LIST IS A TABLE CONSISTING OF ONE ENTRY FOR EACH OPERATION 2471 ; SCHEDULED TO BE PERFORMED AT SOME FUTURE TIME. A "SCHEDULE DELTA- 2472 ; TIME" EACH ENTRY (IF ANY) OF THE CLOCK QUEUE IS DECREMENTED 2473 ; AT EACH CLOCK TICK UNTIL THE ENTRY "COMES DUE", AT WHICH TIME THE 2474 ; INDICATED OPERATION IS PERFORMED. CLOCK TABLE ENTRIES ARE OF 2475 ; FOLLOWING FORMAT. 2476 ; 2477 000000 C.AT==00 ; WD. 00 -- ATL NODE ADDRESS OF REQUESTOR 2478 000002 C.AS==02 ; WD. 02 -- AST TRAP ADDRESS OF REQUESTOR 2479 000004 C.SD==04 ; WD. 02 -- SCHEDULE DELTA IN TICKS (16-BITS) 2480 000006 C.RS==06 ; WD. 03 -- RESCHEDULE DELTA IN TICKS (16-BITS) 2481 000010 C.FM==10 ; WD. 04 -- FLAG MASK (BIS SRC) 2482 000012 C.FA==12 ; WD. 05 -- FLAGS WORD ADR (BIS DST ADR) 2483 ; 2484 000014 C.SZ==14 ; SIZE OF CLOCK TABLE ENTRY 2485 ; 2486 ; 2487 000074 .CYLTM==60. ;CYCLE TIME OF CLOCK 2488 ; 2489 000005 .KALSC==5 ;TIMEOUT INTERVAL FOR KL10 2490 ; SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 55 EXEC MODULE ONE -- SYMBOLIC DEFINITIONS 2492 ; 2493 ; DTE -- DTE TABLE 2494 ; 2495 ; THE DTE LIST IS A TABLE CONSISTING OF ONE ENTRY FOR EACH OPERATION 2496 ; SCHEDULED TO BE PERFORMED AT SOME FUTURE TIME WHEN THE DTE20 2497 ; INTERRUPTS. THE DTE20 TABLE ENTRIES ARE OF THE FOLLOWING 2498 ; FORMAT. 2499 ; 2500 000000 D.AT==00 ; WD. 00 -- ATL NODE ADDRESS OF REQUESTOR 2501 000002 D.FM==02 ; WD. 01 -- FLAG MASK (BIS SRC) 2502 000004 D.FA==04 ; WD. 02 -- FLAGS WORD ADR (BIS DIST ADR) 2503 ; 2504 000006 D.SZ==06 ; SIZE OF DTE20 TABLE ENTRY 2505 ; SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 56 EXEC MODULE ONE -- SYMBOLIC DEFINITIONS 2507 ; 2508 ; KLI PARAMETER WORD DEFINITIONS (.KLIWD) 2509 ; 2510 000001 KL.LRM==1 ;LOAD RAMS 2511 000002 KL.CFM==2 ;CONFIGURE MEMORY 2512 000004 KL.LVB==4 ;LOAD VBOOT 2513 000010 KL.VBN==10 ;VBOOT START AT START+1 2514 000020 KL.VBD==20 ;DUMP MONITOR 2515 000040 KL.SPF==40 ;START AT LOC 70 (AFTER POWER FAIL) 2516 000100 KL.LCA==100 ; +001 LOAD CACHE 2518 000200 KL.SSC==200 ; +001 START AT LOCATION 407 (AFTER SYSTEM CRASH) 2520 000400 KL.CFL==400 ; +001 IF = 0, CONFIGURE FROM FILE 2521 001000 KL.KAC==1000 ; [4.2107] KEEP-ALIVE-CEASED ERROR 2522 002000 KL.DEF==2000 ; OPERATOR ACTUATED REBOOT 2523 004000 KL.REQ==4000 ; KLINIT REQUESTED 2524 010000 KL.ABO==10000 ; KLINIT CANCELED 2525 ; 2526 ; ALL BITS 0 IMPLIES ASK QUESTIONS TO CONTROL LOADING 2527 ; 2528 ; 2529 ; PARAMETER DEFINITIONS FOR KL ERROR WORD 2530 ; 2531 000001 KS.TSP==1 ;TEN STOPPED (HALTED) 2532 000002 KS.CES==2 ;CLOCK ERROR STOP 2533 000004 KS.EPE==4 ;E BOX PARITY ERROR 2534 000010 KS.DEX==10 ;DEPOSIT EXAMINE ERROR 2535 000020 KS.CST==20 ;KEEP ALIVE STOPPED 2536 000040 KS.TRR==40 ;TEN REQUEST'S RE-BOOT 2537 000100 KS.PFT==100 ;POWER FAIL RESTART 2538 000200 KS.PTO==200 ; +++012 PROTOCOL TIMEOUT 2539 000400 KS.FME==400 ;FAST MEMORY PARITY ERROR 2540 001000 KS.CPE==1000 ;CRAM PARITY ERROR 2541 002000 KS.DPE==2000 ;DRAM PARITY ERROR 2542 004000 KS.FCF==4000 ;FAULT-CONTNUATION FAILED 2543 ; SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 57 EXEC MODULE ONE -- SYMBOLIC DEFINITIONS 2545 ; 2546 ; PUD -- PHYSICAL UNIT DEVICE TABLE 2547 ; 2548 ; THE "PUD" IS A FIXED LIST OF ENTRIES DESCRIBING EACH PHYSICAL DEVICE- 2549 ; UNIT IN A SYSTEM. 2550 ; CONSISTS OF ENTRIES OF THE FOLLOWING FORMAT: 2551 ; 2552 000000 U.DN==00 ; WD. 00 (B 00) -- DEVICE NAME (2 ASCII CHARS) 2553 000002 U.UN==02 ; WD. 01 (B 02) -- UNIT NUMBER (BYTE) 2554 000003 U.FB==03 ; (B 03) -- FLAGS (BYTE) 2555 000004 U.C1==04 ; WD. 02 (B 04) -- CHARACTERISTICS WORD ONE (DEVICE INDEPENDENT INDICATORS) 2556 000006 U.C2==06 ; WD. 03 (B 06) -- CHARACTERISTICS WORD TWO (DEVICE DEPENDENT INDICATORS 2557 000010 U.C3==10 ; WD. 04 (B 10) -- CHARACTERISTICS WORD THREE (DEVICE DEPENDENT INDICATORS) 2558 000012 U.C4==12 ; WD. 05 (B 12) -- CHARACTERISTICS WORD FOUR (SIZE OF BLOCK, BUFFER, LINE) 2559 000014 U.AF==14 ; WD. 06 (B 14) -- ATTACH FLAG (ATL NODE ADDRESS OF ATTAC HING TASK 2560 000016 U.RP==16 ; WD. 07 (B 16) -- REDIRECT POINTER 2561 000020 U.HA==20 ; WD. 10 (B 20) -- HANDLER TASK ATL NODE ADDRESS 2562 000022 U.RF==22 ; WD. 11 (B 22) -- UNIT REQUEST DEQUE LISTHEAD (FWD PNTR) 2563 000024 U.RB==24 ; WD. 12 (B 24) -- UNIT REQUEST DEQUE LISTHEAD (BKG PNTR) 2564 ; 2565 ; PHYSICAL UITS ARE CONSIDERED "VOLUMES" BY THE FILES SYSTEM, AND THE 2566 ; REMAINDER OF THE PUD ENTRY IS A "VOLUME CONTROL BLOCK". 2567 ; 2568 000026 U.VA==26 ; WD. 13 (B 26) -- ADDRESS OF VOLUME CONTROL BLOCK EXTENSION 2569 000030 U.UI==30 ; WD. 14 (B 30) -- USER IDENTIFICATION CODE (UIC) 2570 000030 U.PC==30 ; (B 30) -- UIC PROGRAMMER CODE 2571 000031 U.GC==31 ; (B 31) -- UIC GROUP CODE 2572 000032 U.VP==32 ; WD. 15 (B 32) -- VOLUME PROTECTION WORD 2573 000032 U.CH==32 ; (B 32) -- CHARACTERISTICS FLAGS 2574 ; (B 33) -- RESERVED BYTE 2575 000034 U.AR==34 ; WD. 16 (B 34) -- ACCESS RIGHTS FLAGS WORD 2576 000036 U.DACP==36;WD. 20 (B 36) -- DEFAULT ACP NAME, RAD50 (FIRST WORD) 2577 000040 U.ACP==40 ; WD. 20 (B 40) -- STD ENTRY ADDRESS OF CURRENT ACP 2578 000042 U.TF==42 ; WD. 21 (B 42) -- TERMINAL FLAGS WORD 2579 000042 U.PR==42 ; (B 42) -- TERMINAL PRIVILEDGE WORD 2580 000043 U.FO==43 ; (B 43) -- TERMINAL FORMS BYTE 2581 000044 U.LBH==44 ; WD. 22 (B 44) -- HIGH ORDER - TOTAL # OF BLOCKS FOR DEVICE 2582 000046 U.LBN==46 ; WD. 24 (B46) -- LOW ORDER TOTAL # OF BLOCKS FOR DEVICE 2583 000050 U.SZ==50 ;SIZE (IN BYTES OF PUD ENTRIES 2584 ; 2585 ; FLAGS BYTE DEFINITIONS 2586 ; 2587 000040 UF.RD==040 ; **************TEMP********* 2588 000200 UF.RH==200 ; [7] SET WHEN HANDLER TASK IS DECLARED RESIDENT 2589 000100 UF.TL==100 ; [6] SET WHEN HANDLER TASK RECOGNIZES LOAD AND RECORD 2590 000040 UF.OFL==040 ; [5] SET WHEN DEVICE IS OFFLINE 2591 ; 2592 ; BIT DEFINITIONS FOR CHARACTERISTICS WORD ONE 2593 ; 2594 000001 UC.REC==000001 ;[00] SET IF RECORD ORIENTED DEVICE (VIZ., TT,LP, CR) 2595 000002 UC.CCL==000002 ;[01] SET IF CARRIAGE CONTROL DEVICE (VIZ., TT LP) 2596 000004 UC.TTY==000004 ;[02] SET IF TTY DEVICE (VIZ., KSR, LA30) 2597 000010 UC.DIR==000010 ;[03] SET IF DEVICE IS A DIRECTORY DEVICE 2598 000020 UC.SDI==000020 ;[04] SET IF DEVICE IS A SINGLE DIRECTORY DEVICE 2599 000040 UC.SQD==000040 ;[05] SET IF DEVICE IS A SEQUENTIAL DEVICE 2600 000100 UC.ETB==000100 ;[06] SET IF DEVICE IS EIGHTEEN BIT MODE 2601 000400 UC.INB==000400 ;+003 [08] SET IF THE DEVICE IS INTERMEDIATE BUFFERED SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 57-1 EXEC MODULE ONE -- SYMBOLIC DEFINITIONS 2602 001000 UC.SWL==001000 ;[09] SET IF THE DEVICE IS SOFTWARE WRITE LOCKED 2603 002000 UC.ISP==002000 ;[10] SET IF DEVICE IS INPUT SPOOLED 2604 004000 UC.0SP==004000 ;[11] SET IF DEVICE IS OUTPUT SPOOLED 2605 010000 UC.PSE==010000 ;[12] SET IF DEVICE IS PSEUDO DEVICE 2606 020000 UC.COM==020000 ;[13] SET IF DEVICE IS COMMUNICATIONS CHANNEL 2607 040000 UC.F11==040000 ;[14] SET IF DEVICE IS FILES-11 2608 100000 UC.MNT==100000 ;[15] SET IF DEVICE IS MOUNTABLE 2609 ; 2610 ; BIT DEFINITIONS FOR CHARACTERISTICS WORD TWO 2611 ; 2612 000200 CH.OFF==200 ;VOLUME IS OFF-LINE 2613 000100 CH.FOR==100 ;VOLUME IS FOREIGN 2614 000040 CH.UNL==40 ;DISMOUNT PENDING 2615 000020 CH.NAT==20 ;ATTACH/DETACH NOT PERMITTED 2616 000010 CH.NDC==10 ;DEVICE CONTROL FUNCTIONS NOT PERMITTED 2617 000001 CH.LAB==1 ;VOLUME IS LABELED TAPE 2618 ; 2619 ; BIT DEFINITIONS FOR TERMINAL PRIVILEDGE BYTE 2620 ; 2621 000001 UT.PR==1 ;SET IF TY ID PRIVILEDGED 2622 000002 UT.SL==2 ;SET IF TTY IS SLAVED 2623 000004 UT.LG==4 ;SET IF TERMINAL IS LOGGED ON 2624 ; SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 58 EXEC MODULE ONE -- SYMBOLIC DEFINITIONS 2626 ; 2627 ; TASK TERMINATION NOTICE ERROR CODES FOR A.FM+0 2628 ; 2629 000012 TN.EMT==12 ;NON-RSX EMT 2630 000014 TN.TRP==14 ;TRAP INSTRUCTION 2631 000040 TN.LRF==40 ;LOAD FAILURE 2632 ; 2633 ; SEND AND REQUEST QUEUE ENTRY 2634 ; 2635 000004 Q.SI==04 ; WD. 02 (B 04) -- SYSTEM TASK LIST ADDRESS 2636 000006 Q.D1==06 ; WD. 03 (B 06) -- FIRST DATA WORD 2637 ; SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 59 EXEC MODULE ONE -- SYMBOLIC DEFINITIONS 2639 ; 2640 ; DEVICE QUEUE POINTER TABLE (TO 11 QUEUE ENTRIES) 2641 ; 2642 000000 Q.DA==0 ; WD. 00 (B 00) -- ADDRESS OF DEVICE TABLE LIST 2643 000002 Q.TS==02 ; WD. 01 (B 02) -- SIZE OF AN ENTRY IN THE DEVICE TABLE LIST 2644 000004 Q.ST==04 ; WD. 02 (B 04) -- ADDRESS OF DEVICE START SUBROUTINE 2645 000006 Q.SP==06 ; WD. 03 (B 06) -- ADDRESS OF DEVICE STOP SUBROUTINE 2646 ; WD. 04 (B 10) -- SPARE 2647 000012 Q.AK==12 ; WD. 05 (B 12) -- ACKNOWLEDGE ROUTINE 2648 ; WD. 06 (B 14) -- SPARE 2649 000016 Q.DZ==16 ; WD. 07 (B 16) -- DEVICE COUNT 2650 000020 Q.SZ==20 ; SIZE OF TABLE ENTRY 2651 ; SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 60 EXEC MODULE ONE -- SYMBOLIC DEFINITIONS 2653 ; 2654 ; DEVICE ERROR LOGGING INFORMATION AND STATUS BLOCK DEFINITONS 2655 ; 2656 ; WORD 0 -- STANDARD STATUS BITS (DV.XXX) 2657 ; 2658 ; 1 DEVICE-DEPENDENT BITS 2659 ; 2 ........... 2660 ; N 2661 ; 2662 ; DEVICE ERROR LOGGING BITS (FIRST WORD BITS ONLY) 2663 ; 2664 000001 DV.NXD==1 ;NON-EX DEVICE 2665 000002 DV.OFL==2 ;OFF-LINE 2666 000004 DV.OIR==4 ;HARDWARE ERROR. OPERATOR INTERVENTION REQ'D 2667 000010 DV.SCN==10 ;SOFTWARE CONDITION. ACKNOWLEDGE REQUIRED 2668 000020 DV.IOP==20 ;I/O IN PROGRESS 2669 000040 DV.EOF==40 ;END-OF-FILE ENCOUNTERED 2670 000100 DV.LOG==100 ;ERROR LOGGING REQUIRED 2671 000200 DV.URE==200 ;UN-RECOVERABLE ERROR 2672 000400 DV.F11==400 ;ERROR ON FROM -11 REQUEST 2673 001000 DV.HNG==1000 ;DEVICE HUNG 2674 002000 DV.LIN==2000 ;DEVICE LOST INTERRUPT ENABLE 2675 004000 DV.CFG==4000 ; CONFIGURATION INFORMATION 2676 ; SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 61 EXEC MODULE ONE -- SYMBOLIC DEFINITIONS 2678 ; 2679 ; KLINIK EVENT LOGGING CODES 2680 ; 2681 2682 000000 K.LUND==0 ; UNDEFINED CODE 2683 2684 000001 K.LSCK==1 ; SET/CLEAR KLINIK COMMAND 2685 000001 K.LSKL==1 ; SET KLINIK 2686 177777 K.LCKL==-1 ; CLEAR KLINIK 2687 2688 000002 K.LRNG==2 ; KLINIK RING 2689 000001 K.LRAC==1 ; ACCEPTED (WINDOW OPEN) 2690 177777 K.LRRJ==-1 ; REJECTED (WINDOW CLOSED) 2691 2692 000003 K.LDSC==3 ; KLINIK LINE DISCONNECT 2693 000001 K.LDCM==1 ; DIRECTED DISCONNECT (COMMAND) 2694 177777 K.LDRP==-1 ; CARRIER DROP 2695 2696 000004 K.LCON==4 ; KLINIK LINE CONNECT 2697 000001 K.LROP==1 ; REMOTE -- OPERATOR MODE 2698 000002 K.LRPR==2 ; REMOTE -- PROGRAMMER MODE 2699 000003 K.LRMN==3 ; REMOTE -- MAINTENANCE MODE 2700 177777 K.LUSR==-1 ; USER MODE 2701 2702 000005 K.LBPW==5 ; BAD PASSWORD 2703 2704 000006 K.LLTO==6 ; LOGON TIMEOUT 2705 2706 000007 K.LRBA==7 ; KLINIK ACTIVE ON REBOOT SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 62 EXEC MODULE ONE -- SYMBOLIC DEFINITIONS 2708 ; 2709 ; OFFSETS FOR SST TRAPS TABLE IN USER'S AREA 2710 ; 2711 000000 T.RAP4==0 ;TRAP AT 4 2712 000002 T.RAPM==2 ;MEMORY PROTECT VIOLATOION 2713 000004 T.RAPB==4 ;T BIT OR BPT TRAP 2714 000006 T.RAPI==6 ;IOT TRAP 2715 000010 T.RAPR==10 ;RESERVED INSTRUCTION TRAP 2716 000012 T.RAPE==12 ;EMT TRAP (NON RSX) 2717 000014 T.RAPT==14 ;TRAP TRAP 2718 000016 T.RAPF==16 ;FLOATING POINT TRAP 2719 ; SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 63 EXEC MODULE ONE -- SYMBOLIC DEFINITIONS 2721 ; 2722 ; IRQ -- I/O REQUEST QUEUE 2723 ; 2724 ; THE "IRQ" IS A PRIORITY ORDERED DEQUE OF I/O REQUEST NODES WITH ITS 2725 ; LISTHEAD IN THE PUD ENTRY OF THE PHYSICAL UNIT FOR WHICH THE I/O 2726 ; REQUEST WAS QUEUED. EACH PHYSICAL UNIT HAS ITS OWN I/O REQUEST QUEUE. 2727 ; I/O REQUEST NODES ARE CREATED AND QUEUED PRIMARILY BY THE "QUEUE I/O" 2728 ; DIRECTIVE. HOWEVER, THE EXEC ALSO CREATES I/O REQUESTS TO: 2729 ; (1) LOAD A TASK IMAGE, 2730 ; I/O REQUEST NODES ARE 2731 ; THE FOLLOWING FORMAT. 2732 ; 2733 ; WD. 00 (B 00) -- FORWARD LINKAGE 2734 ; WD. 01 (B 02) -- BACKWARD LINKAGE 2735 000004 R.TD==04 ; WD. 02 (B 04) -- STD NODE OF REQUESTOR 2736 000006 R.AT==06 ; WD. 03 (B 06) -- ATL NODE OF REQUESTOR *** 2737 000010 R.PR==10 ; WD. 04 (B 10) -- PRIORITY (BYTE) 2738 000011 R.DP==11 ; (B 11) -- DPB SIZE (BYTE) *** 2739 000012 R.LU==12 ; WD. 05 (B 12) -- LOGICAL UNIT NUMBER (BYTE) 2740 000013 R.FN==13 ; (B 13) -- EVENT FLAG NUMBER (BYTE) 2741 000014 R.FC==14 ; WD. 06 (B 14) -- I/O FUNCTION CODE 2742 000016 R.SB==16 ; WD. 07 (B 16) -- ADDRESS OF STATUS BLOCK 2743 000020 R.AS==20 ; WD. 10 (B 20) -- AST ADDRESS 2744 000022 R.UI==22 ; WD. 11 (B 22) -- UIC (UNUSED) 2745 000024 R.PB==24 ; WD. 12 (B 24) -- PARAMETER #1 2746 ; WD. 13 (B 26) -- PARAMETER #2 2747 ; WD. 14 (B 30) -- PARAMETER #3 2748 ; WD. 15 (B 32) -- PARAMETER #4 2749 ; WD. 16 (B 34) -- PARAMETER #5 2750 ; WD. 17 (B 36) -- PARAMETER #6 2751 ; 2752 ; THE LOW ORDER THREE-BITS OF THE I/O FUNCTION CODE ARE USED BY THE SYSTEM 2753 ; AS FOLLOWS: 2754 ; 2755 ;[0] -- RESERVED FOR FUTURE USE 2756 000002 RF.XR==000002 ;RESERVED 2757 ;[2] -- RESERVED FOR FUTURE USE 2758 ; 2759 ; *** WHENEVER AN I/O REQUEST IS QUEUED BY THE "QUEUE I/O" DIRECTIVE, THE 2760 ; DPB SIZE AND THE REQUESTOR'S ATL NODE ADDRESS ARE RECORDED IN THE I/O 2761 ; REQUEST NODE. WHENEVER AN I/O REQUEST IS QUEUED AS A RESULT OF ANOTHER 2762 ; DIRECTIVE (VIZ., "REQUEST" CAUSING A TASK IMAGE TO BE LOADED), THE DPB 2763 ; SIZE AND THE REQUESTOR'S ATL NODE ADDRESS ARE SET TO ZERO. THUS, BOTH 2764 ; BOTH THE DPB SIZE AND THE ATL NODE ADDRESS ARE ALSO "EXEC REQUEST" 2765 ; INDICATORS. 2766 ; SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 64 EXEC MODULE ONE -- SYMBOLIC DEFINITIONS 2768 ;+ 2769 ; SIGNIFICANT EVENT FLAG DEFINITIONS 2770 ; 2771 ; 2772 ; THE HIGH-ORDER BYTE '.SERFG+1' IS INCREMENTED WHENEVER A CLOCK 2773 ; TICK OCCURS (WHENEVER THE CLOCK INTERRUPT SERVICE ROUTINE RUNS). 2774 ; HENCE, '.SERFG+1' IS A BYTE CONTAINING A COUNT OF UNRECOGNIZED 2775 ; CLOCK TICKS. 2776 ; 2777 ; THE BITS OF THE LOW-ORDER BYTE '.SERFG+0' ARE USED TO FLAG THE 2778 ; FOLLOWING EVENTS: 2779 ; 2780 000001 EV.SE==001 ; [0] SET WHENEVER A SIGNIFICANT EVENT IS TO BE 2781 ; RECOGNIZED, 2782 ; 2783 000002 EV.AS==002 ; [1] SET WHEN POWER FAIL IS REQUIRED 2784 000200 EV.PF==200 ; [7] SET WHEN POWER DOWN HAS OCCURRED AND MUST BE RECOGNIZED 2785 ; ** MUST BE SIGN BIT ** 2786 ;- SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 65 EXEC MODULE ONE -- NUL TASK 2788 .SBTTL EXEC MODULE ONE -- NUL TASK 2789 ; 2790 ; THE NUL TASK EXISTS TO ELIMINATE EXCEPTION TESTING WHEN SCANNING THE 2791 ; ACTIVE TASK LIST, AND WHEN PROCESSING DIRECTIVES THAT CAUSE AN 2792 ; ATL SCAN TO CONTINUE FROM THE NEXT TASK OF LOWER PRIORITY THAN THE 2793 ; DIRECTIVE ISSUING TASK. 2794 ; 2795 ; THE NUL TASK IS THE LOWEST PRIORITY TASK IN A SYSTEM. 2796 ; 2797 ; THE NUL TASK HAS AN ATL NODE WITH STATUS OF "RUNNING", BUT HAS NO STD 2798 ; ENTRY. 2799 ; 2800 ; THE NUL TASK DOES NOT RESIDE IN A PARTITION. 2801 ; 2802 ; THE NUL TASK EXECUTION CONSISTS OF "WAIT" INSTRUCTIONS (TO INCREASE 2803 ; UNIBUS THROUGHPUT). HOWEVER, THE NUL TASK DOES HAVE CONTEXT, AND CAN 2804 ; EXECUTE PDP-11 INSTRUCTIONS 2805 ; 2806 ; 2807 012472 NULHD:: .STKM 170017,0,0,0,0,0,0,NTKXEP,174000,NTKXSP 012540 000000 000000 000000 .WORD 0,0,0,0 012546 000000 012566 174000 012776' 012752' .WORD 174000,NTKXEP,NTKXSP 012622 000005 .WORD 5 012624 010262' .WORD TTPEN 012626 000000 .WORD 0 012630 000000 .WORD 0 012632 000000 .WORD 0 012634 000000 .WORD 0 012636 000000 .WORD 0 012640 000000 .WORD 0 012642 000000 .WORD 0 012644 000000 .WORD 0 012646 000000 .WORD 0 012650 000000 .WORD 0 012752 170017 .WORD 170017 012754 000000 .WORD 0 012756 000000 .WORD 0 012760 000000 .WORD 0 012762 000000 .WORD 0 012764 000000 .WORD 0 012766 012776' .WORD NTKXEP 012770 174000 .WORD 174000 SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 66 EXEC MODULE ONE -- NUL TASK 2809 012772 NTKXEN: 2810 012772 .ENB6 ; ENABLE INTERRUPTS 012772 012637 177776 MOV (SP)+,@#PS 2811 012776 NTKXEP: 2812 012776 000001 WAIT 2813 013000 000001 WAIT 2814 013002 005200 INC R0 2815 013004 .INH6 ; [4.1.1035] DISALLOW INTERRUPTS 013004 013746 177776 MOV @#PS,-(SP) 013010 112737 000300 177776 MOVB #300,@#PS 2816 013016 005737 001012' TST .COMEF+2 ;;; [4.1.1105] IF PRIMARY PROTOCOL IS DEAD 2817 013022 100033 BPL 40$ ;;; [4.1.1105] THEN SEND DOWN MESSAGE 2818 013024 005737 001164' TST .ACKAL ;;; IF ACKAL HAS NOT BEEN SENT 2819 013030 001002 BNE 20$ ;;; THEN KL MAY STILL BE SHAKY 2820 013032 105037 013264' CLRB SNDMSG ;;; OTHERWISE RESET MSG FLAG 2821 013036 20$: 2822 013036 005737 001124' TST .TKTN ;;; CHECK FOR TASK TERMINATION REQUIRED 2823 013042 001410 BEQ 30$ ;;; NO -- LOOK AT TIME OF DAY FLAG 2824 013044 005037 001124' CLR .TKTN ;;; CLEAR REQUEST FOR TASK TERMINTATION 2826 013050 .ENB6 ;;; ENABLE INTERRUPTS 013050 012637 177776 MOV (SP)+,@#PS 2827 013054 DIR$ #.TKTN. ; REQUEST TASK TERMINATION 013054 012746 013170' MOV #.TKTN.,-(SP) 013060 104375 EMT 375 2828 013062 000745 BR NTKXEP ; AND CONTINUE 2829 ; 2833 013064 30$: 2834 013064 005737 001136' TST .CLKSW ;;; NEED TIME CHANGE? 2835 013070 100340 BPL NTKXEN ;;; [4.1.1035] NO -- JUST GO ON 2836 013072 005037 001136' CLR .CLKSW ;;; YES -- RESET CLOCK SWITCH 2837 013076 .ENB6 ;;; ENABLE INTERRUPTS 013076 012637 177776 MOV (SP)+,@#PS 2838 013102 DIR$ #.TOD. ; REQUEST TIME OF DAY TASK 013102 012746 013152' MOV #.TOD.,-(SP) 013106 104375 EMT 375 2839 013110 000732 BR NTKXEP ; AND CONTINUE IDLE LOOP 2840 ; 2841 013112 40$: 2842 013112 105737 001400' TSTB .PRPSE ;;; ARE WE JUST PAUSING?? 2843 013116 001347 BNE 20$ ;;; YES -- BACK TO MAIN LOOP 2844 013120 005737 013264' TST SNDMSG ;;; HAVE WE INFORMED THE TTYS ? 2845 013124 001344 BNE 20$ ;;; YES -- DON'T RE-SEND 2846 013126 012704 013206' MOV #DWNMSG,R4 ;;; SEND DOWN MESSAGE 2847 013132 CALL COPBUF ;;; COPY BUFFER TO FREE SPACE 013132 004737 030130' JSR PC,COPBUF 2848 013136 010004 MOV R0,R4 ;;; SET UP TO SEND IT 2849 013140 CALL .SNDAL ;;; SEND MESSAGE 013140 004737 027624' JSR PC,.SNDAL 2850 013144 105237 013264' INCB SNDMSG ;;; SYSTEM DOWN MESSAGE HAS BEEN SENT. 2851 013150 000732 BR 20$ ;;; CHECK FOR TERMINATION NOTIFICATION 2852 ; 2853 013152 .TOD.: 2854 013152 RQST$ MIDNIT 013152 013 007 .BYTE 11.,7 013154 051254 054374 .RAD50 /MIDNIT/ 013160 000000 000000 .WORD 0,0 013164 000000 .WORD SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 66-1 EXEC MODULE ONE -- NUL TASK 013166 000 000 .BYTE , 2855 2857 013170 .TKTN.: 2858 013170 RQST$ TKTN 013170 013 007 .BYTE 11.,7 013172 077314 053600 .RAD50 /TKTN/ 013176 000000 000000 .WORD 0,0 013202 000000 .WORD 013204 000 000 .BYTE , 2860 2861 ;A MACRO TO ASSEMBLE AN EVEN PARITY ASCII STRING 2862 .MACRO EPASCI STR 2863 .IRPC CHR, 2864 PB==0 ;;PARITY BIT INITIALLY ZERO 2865 CH==''CHR ;;GET THE VALUE OF THE CHAR 2866 .REPT 8. ;;FOR ALL EIGHT BITS 2867 PB==200& ;;XOR THE TOP BIT INTO PB 2868 CH==CH*2 ;; AND SHIFT TO THE NEXT BIT 2869 .ENDR 2870 .BYTE PB+''CHR ;;STORE THE BYTE WITH THE PARITY BIT 2871 .ENDM ;;END THE IRPC 2872 .ENDM ;;END THE MACRO 2873 2874 013206 DWNMSG: 2875 013206 000000 000060 013220' .WORD 0,60,DWNMS,DWNMSZ,DWNMSZ*400 013214 000043 021400 2876 2877 013220 DWNMS: 2878 013220 215 012 207 .ASCII <215><12><207><207><207> 013223 207 207 2879 .ENABL LC 2883 013225 EPASCI <%DECsystem-10 not running> 013225 245 .BYTE PB+'% ;;STORE THE BYTE WITH THE PARITY BIT 013226 104 .BYTE PB+'D ;;STORE THE BYTE WITH THE PARITY BIT 013227 305 .BYTE PB+'E ;;STORE THE BYTE WITH THE PARITY BIT 013230 303 .BYTE PB+'C ;;STORE THE BYTE WITH THE PARITY BIT 013231 363 .BYTE PB+'s ;;STORE THE BYTE WITH THE PARITY BIT 013232 371 .BYTE PB+'y ;;STORE THE BYTE WITH THE PARITY BIT 013233 363 .BYTE PB+'s ;;STORE THE BYTE WITH THE PARITY BIT 013234 164 .BYTE PB+'t ;;STORE THE BYTE WITH THE PARITY BIT 013235 145 .BYTE PB+'e ;;STORE THE BYTE WITH THE PARITY BIT 013236 355 .BYTE PB+'m ;;STORE THE BYTE WITH THE PARITY BIT 013237 055 .BYTE PB+'- ;;STORE THE BYTE WITH THE PARITY BIT 013240 261 .BYTE PB+'1 ;;STORE THE BYTE WITH THE PARITY BIT 013241 060 .BYTE PB+'0 ;;STORE THE BYTE WITH THE PARITY BIT 013242 240 .BYTE PB+' ;;STORE THE BYTE WITH THE PARITY BIT 013243 356 .BYTE PB+'n ;;STORE THE BYTE WITH THE PARITY BIT 013244 157 .BYTE PB+'o ;;STORE THE BYTE WITH THE PARITY BIT 013245 164 .BYTE PB+'t ;;STORE THE BYTE WITH THE PARITY BIT 013246 240 .BYTE PB+' ;;STORE THE BYTE WITH THE PARITY BIT 013247 162 .BYTE PB+'r ;;STORE THE BYTE WITH THE PARITY BIT 013250 365 .BYTE PB+'u ;;STORE THE BYTE WITH THE PARITY BIT 013251 356 .BYTE PB+'n ;;STORE THE BYTE WITH THE PARITY BIT 013252 356 .BYTE PB+'n ;;STORE THE BYTE WITH THE PARITY BIT 013253 151 .BYTE PB+'i ;;STORE THE BYTE WITH THE PARITY BIT 013254 356 .BYTE PB+'n ;;STORE THE BYTE WITH THE PARITY BIT 013255 347 .BYTE PB+'g ;;STORE THE BYTE WITH THE PARITY BIT SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 66-2 EXEC MODULE ONE -- NUL TASK 2885 .DSABL LC 2886 013256 215 012 207 .ASCII <215><12><207><207><207> 013261 207 207 2887 000043 DWNMSZ=.-DWNMS 2888 .EVEN 2889 013264 SNDMSG:: 2890 013264 001 .BYTE 1 ; +++005 A SYSTEM DOWN MSG HAS BEEN SENT 2891 013265 000 .BYTE 0 ; [5.1127] HOST DEBUG NO MESSAGE FLAG SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 67 EXEC MODULE TWO -- SERVICE FOR "EMT" & "TRAP" INSTRUCTIONS 2893 .SBTTL EXEC MODULE TWO -- SERVICE FOR "EMT" & "TRAP" INSTRUCTIONS 2894 ; 2895 ; 2896 ; EMT INSTRUCTIONS ARE ONLY EXECUTED BY NON-INTERRUPT SERVICE ROUTINES 2897 ; 2898 ; DIRECTIVE DISPATCH -- CONTROL IS TRANSFERRED TO A DIRECTIVE SERVICE 2899 ; ROUTINE PER DIRECTIVE IDENTIFICATION CODE (DIC) 2900 ; 2901 ; REGISTER DEFINITIONS ON EXIT: 2902 ; R0 -- PC OF EMT INSTRUCTION 2903 ; R1 -- POINTER TO WORD FOLLOWING DIC & SIZE 2904 ; R2 -- DPB SIZE 2905 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE) 2906 ; R5 -- CURRENT TASK POINTER 2907 ; 2908 000020 EM.DRO==20 ;OFFSET TO DPB OR DPB POINTER ON STACK 2909 ; 2910 ; 2911 ; 2912 013266 010546 EMTTRP::MOV R5,-(SP) ;SAVE R5 INCASE OF TRAP(SST) 2913 013270 016605 000002 MOV 2(SP),R5 ;=PC+2 OF EMT INSTRUCTION 2914 013274 024527 CMP -(R5),(PC)+ ;WAS IT A 2915 013276 104375 EMT 375 ; DIRECTIVE ? 2916 013300 001421 BEQ 10$ ;YES -- LEGAL DIRECTIVE REQUEST 2917 013302 011637 001116' MOV @SP,EMTSTK ;SAVE R5 2918 013306 111516 MOVB @R5,@SP ;NO -- MUST SET IT UP FOR SST 2919 013310 013705 001006' MOV .CRTSK,R5 ;FIND THE CURRENT TASK POINTER 2920 013314 016505 000016 MOV A.TD(R5),R5 ;FIND STD ADDRESS 2921 013320 016505 000030 MOV S.SS(R5),R5 ;FIND THE SST TABLE 2922 013324 001403 BEQ 5$ ;NONE -- FORGET IT 2923 013326 MFPS T.RAPE(R5),R5 ;IS THERE AN ENTRY IN THE TABLE? 013326 016505 000012 MOV T.RAPE(R5),R5 2924 013332 001106 BNE .SSTET ;DO SST SERVICE 2925 2926 013334 012737 000012 001120' 5$: MOV #TN.EMT,TRPASV ;SAVE THE TERMINATION TYPE 2927 013342 000513 BR CMNABT ;AND GO TO COMMON ABORT 2928 2929 013344 10$: ;REMOVE THE SAVED R0 -- NOT NEEDED NOW 2930 ;SAVE REGISTERS 2931 013344 010446 MOV R4,-(SP) 2932 013346 010346 MOV R3,-(SP) 2933 013350 010246 MOV R2,-(SP) 2934 013352 010146 MOV R1,-(SP) 2935 013354 010046 MOV R0,-(SP) 2936 013356 010637 001116' MOV SP,EMTSTK ;SAVE EMT STACK POINTER 2938 013362 016601 000020 MOV EM.DRO(SP),R1 ;FIND THE DIRECTIVE OR DIRECTIVE POINTER 2944 ; 2945 ; IF R1 IS EVEN, IT IS ASSUMED TO BE A DPB POINTER 2946 ; IF R1 IS ODD, IT IS ASSUMED TO BE THE FIRST WORD OF A DPB THAT 2947 ; HAS BEEN PUSHED ONTO THE STACK. 2948 ; 2949 ; 2950 ; TEST FOR ODD OR EVEN 2951 ; 2952 013366 032701 000001 BIT #1,R1 2953 013372 001003 BNE 20$ 2954 ; SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 67-1 EXEC MODULE TWO -- SERVICE FOR "EMT" & "TRAP" INSTRUCTIONS 2955 ; EVEN -- R1 CONTAINS A DPB POINTER (ADDRESS). 2956 ; 2957 013374 MFPS @R1,R2 ;FIND THE FIRST DPB WORD 013374 011102 MOV @R1,R2 2958 013376 010203 MOV R2,R3 ;FIND THE DIRECTIVE IDENTIFICATION CODE 2959 013400 000405 BR 30$ ;EXECUTE DIRECTIVE 2960 ; 2961 ; ODD WORD ON STACK -- DPB IS ON THE ISSUING 2962 ; TASK'S STACK, AND R1 CONTAINS THE FIRST DPB WORD. 2963 ; 2964 ; SET R1 TO THE DPB ADDRESS, R2 TO THE DPB SIZE (IN WORDS), 2965 ; R3 TO THE DIRECTIVE IDENTIFICATION CODE. 2966 ; 2967 013402 010102 20$: MOV R1,R2 ;SET DPB SIZE IN R2 2968 013404 010103 MOV R1,R3 ;SET DIRECTIVE CODE 2969 013406 010601 MOV SP,R1 ;FIND THE ADDRESS OF THE DPB 2970 013410 062701 000020 ADD #EM.DRO,R1 ;POINT PAST SAVED STACK 2971 013414 042703 177400 30$: BIC #177400,R3 2972 013420 105002 CLRB R2 2973 013422 000302 SWAB R2 ;SET SIZE IN LOW ORDER 2974 ; 2975 ; R3 CONTAINS THE DIRECTIVE IDENTIFICATION CODE. 2976 ; THE DIC IS AN ODD QUANTITY AND SHOULD BE IN THE RANGE 2977 ; 001-127.(MAX RANGE) 2978 ; 2979 013424 005721 TST (R1)+ ;ADVANCE R1 TO POINT TO THE WORD FOLLOWING 2980 ;THE FIRST WORD DPB WORD. 2981 013426 013705 001006' MOV .CRTSK,R5 ;SET UP CURRENT TASK POINTER 2982 013432 022703 000102 CMP #DIRMAX,R3 ;CHECK TO SEE IF LEGAL DIRECTIVE 2983 013436 103001 BHIS DIROK ;OK -- LEGAL RANGE 2984 013440 104635 DS.99: TRAP DE.99 ;ILLEGAL DIRECTIVE 2985 013442 000173 013445' DIROK: JMP @DIRDPT-1(R3) ;DISPATCH TO APPROPRIATE DIRECTIVE SERVICE CODE. 2986 ; 2987 013446 023170' DIRDPT: .WORD .D.QIO ;001. -- QIO 2988 013450 023170' .WORD .D.QIO ;003. -- QIO AND WAIT 2989 013452 022316' .WORD .D.GLI ;005. -- GET LUN INFORMATION 2990 013454 022212' .WORD .D.ASS ;007. -- ASSIGN LUN 2991 013456 020746' .WORD .D.DTE ;009. -- DTE20 FUNCTIONS 2992 013460 024310' .WORD .D.REQ ;011. -- REQUEST 2993 013462 023640' .WORD .D.SEN ;013. -- SEND 2994 013464 023654' .WORD .D.SAR ;015. -- SEND AND REQUEST 2995 013466 024106' .WORD .D.REC ;017. -- RECEIVE 2996 013470 024106' .WORD .D.ROE ;019. -- RECEIVE OR EXIT 2997 013472 024106' .WORD .D.ROS ;021. -- RECEIVE OR SUSPEND 2998 013474 022776' .WORD .D.MKT ;023. -- MARK TIME 2999 013476 024266' .WORD .D.PUT ;025. -- POWER UP AST 3000 013500 023100' .WORD .D.CMT ;027. -- CANCEL MARK TIME REQUESTS 3001 013502 013440' .WORD DS.99 ; 029. -- ILLEGAL DIRECTIVE 3002 013504 022462' .WORD .D.CEF ;031. -- CLEAR EVENT FLAG 3003 013506 022500' .WORD .D.SEF ;033. -- SET EVENT FLAG 3004 013510 022516' .WORD .D.DSE ;035. -- DECLARE SIGNIFICANT EVENT 3005 013512 022540' .WORD .D.REF ;037. -- READ EVENT FLAG 3006 013514 022554' .WORD .D.RAF ;039. -- READ ALL EVENT FLAGS 3007 013516 022600' .WORD .D.WFS ;041. -- WAIT FOR SINGLE EVENT FLAG 3008 013520 022656' .WORD .D.WFL ;043. -- WAIT FOR LOGICAL "OR" OF EVENT FLAGS 3009 013522 013440' .WORD DS.99 ;045. -- SUSPEND EXECUTION -- 010 REMOVED -- ILLEGAL 3010 013524 013440' .WORD DS.99 ;047. -- RESUME TASK EXECUTION -- 010 REMOVED -- ILLEGAL SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 67-2 EXEC MODULE TWO -- SERVICE FOR "EMT" & "TRAP" INSTRUCTIONS 3011 013526 022764' .WORD .D.WSE ;049. -- WAIT FOR NEXT SIGNIFICANT EVENT 3012 013530 023146' .WORD .D.EXT ;051. -- TASK EXIT 3017 013532 013440' .WORD DS.99 ; 053. -- ILLEGAL DIRECTIVE 3018 013534 013440' .WORD DS.99 ; 055. -- ILLEGAL DIRECTIVE 3020 013536 024254' .WORD .D.STV ;057. -- SPECIFY SST VECTOR 3021 013540 022346' .WORD .D.GTP ;059. -- GET TIME PARAMETERS 3022 013542 013440' .WORD DS.99 ;061. -- ILLEGAL 3023 013544 024536' .WORD .D.GPP ;063. -- GET TASK PARAMETERS 3024 013546 024660' .WORD .D.GMP ;065. -- GET PARTITION PARAMETERS 3025 000102 DIRMAX=.-DIRDPT ;LEGAL NUMBER OF DIRECTIVES 3026 ; 3027 ; .SSTET -- SST FOR TRAP AND EMT'S 3028 ; 3029 013550 .SSTET:: 3030 013550 105066 000001 CLRB 1(SP) ;CLEAR HIGH BYTE 3031 013554 006316 ASL @SP ;MULTIPLY BY 2 3032 013556 .SSTCO:: 3034 013556 012746 004000 MOV #004000,-(SP) ;SET PS 3038 013562 010546 MOV R5,-(SP) ;SET TRAP ADDRESS 3039 013564 013705 001116' MOV EMTSTK,R5 ;RESTORE R5 3040 013570 000002 RTI ;RETURN TO USER 3041 ; 3042 013572 013705 001116' CMNABT: MOV EMTSTK,R5 ;RESTORE R5 3043 013576 000137 011664' JMP CMNABO ;AND GO TO COMMON ABORT 3044 ; 3045 ; CONTROL IS RETUNRED TO ".DR.NS" TO EXIT DIRECTIVE SERVICE WITHOUT ALTERING 3046 ; AN ISSUING TASK'S DIRECTIVE STATUS OR CONDITION CODES. 3047 ; 3048 ; DIRECTIVE RETURN STATUSES 3049 ; 3050 000000 DR.00==0 ;DIRECTIVE RETURN 00 3051 000001 DR.01==1 ;DIRECTIVE RETURN 01 3052 000002 DR.02==2 ;DIRECTIVE RETURN 02 3053 000003 DR.03==3 ;DIRECTIVE RETURN 03 3054 ; 3055 ; DIRECTIVE ERROR RETURNS 3056 ; 3057 000377 DE.01==-1&377 ;ERR 01 3058 000376 DE.02==-2&377 ;ERR 02 3059 000375 DE.03==-3&377 ;ERR 03 3060 000374 DE.04==-4&377 ;ERR 04 3061 000373 DE.05==-5&377 ;ERR 05 3062 000372 DE.06==-6&377 ;ERR 06 3063 000371 DE.07==-7&377 ;ERR 07 3064 000370 DE.08==-8.&377 ;ERR 08 3065 000367 DE.09==-9.&377 ;ERR 09 3066 000366 DE.10==-10.&377 ;ERR 10 3067 000365 DE.11==-11.&377 ;ERR 11 3068 000260 DE.80==-80.&377 ;ERR 80 3069 000257 DE.81==-81.&377 ;ERR 81 3070 000246 DE.90==-90.&377 ;ERR 90 3071 000245 DE.91==-91.&377 ;ERR 91 3072 000244 DE.92==-92.&377 ;ERR 92 3073 000243 DE.93==-93.&377 ;ERR 93 3074 000242 DE.94==-94.&377 ;ERR 94 3075 000241 DE.95==-95.&377 ;ERR 95 3076 000240 DE.96==-96.&377 ;ERR 96 SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 67-3 EXEC MODULE TWO -- SERVICE FOR "EMT" & "TRAP" INSTRUCTIONS 3077 000237 DE.97==-97.&377 ;ERR 97 3078 000236 DE.98==-98.&377 ;ERR 98 3079 000235 DE.99==-99.&377 ;ERR 99 3080 ; 3081 013602 132766 000340 000002 .DRSRN::BITB #340,2(SP) ;FROM EXEC? 3082 013610 001025 BNE 20$ ;YES -- CONTIUE 3083 013612 011646 MOV @SP,-(SP) ;PUT IT ON STACK TWICE 3084 013614 162716 000002 SUB #2,@SP 3085 013620 117616 000000 MOVB @(SP),@SP 3086 013624 010537 001116' MOV R5,EMTSTK 3087 013630 013705 001006' MOV .CRTSK,R5 ;FIND THE CURRENT TASK 3088 013634 016505 000016 MOV A.TD(R5),R5 ;FIND STD ADDRESS 3089 013640 016505 000030 MOV S.SS(R5),R5 ;IS THERE AN SST VECTOR? 3090 013644 001403 BEQ 10$ ;NO -- CRASH 3091 013646 MFPS T.RAPT(R5),R5 ;FIND THE ADDRESS 013646 016505 000014 MOV T.RAPT(R5),R5 3092 013652 001336 BNE .SSTET ;NONE -- CRASH 3093 013654 012737 000014 001120' 10$: MOV #TN.TRP,TRPASV ;SET TRAP TYPE 3094 013662 000743 BR CMNABT ;AND GO TO COMMON ABORT 3095 ; 3096 ; 3097 013664 162716 000002 20$: SUB #2,@SP ;FIND THE TRAP VALUE 3098 013670 113600 MOVB @(SP)+,R0 3099 013672 100006 BPL DRXCOM ;BRANCH IF THE DIRECTIVE SUCCEEDED 3100 013674 013706 001116' DEXCOM: MOV EMTSTK,SP ;RESTORE STACK FOR REGISTER SAVE 3101 013700 052766 000001 000016 BIS #1,EM.DRO-2(SP) ;SET CC-C -2(ISSUING TASK'S PS) 3102 013706 000405 BR DRXRR ;--- 3103 ; 3104 013710 .DR.NS:: ;RETURN NO STATUS 3105 013710 013706 001116' DRXCOM: MOV EMTSTK,SP ;RESTORE STACK FOR REGISTER SAVE 3106 013714 042766 000001 000016 BIC #1,EM.DRO-2(SP) ;CLEAR CC-C -2(ISSUING TASK'S PS) 3107 013722 DRXRR: ;----- 3108 013722 010037 000046 MOV R0,$DSW ;SAVE THE DSW 3109 013726 012600 MOV (SP)+,R0 ;POP (RESORE) R0 3110 013730 012601 MOV (SP)+,R1 ;POP (RESTORE) R1 3111 013732 012602 MOV (SP)+,R2 ;POP (RESTORE) R2 3112 013734 012603 MOV (SP)+,R3 ;POP (RESTORE) R3 3114 013736 016604 000010 MOV 10(SP),R4 ;FIND DPB OR DPB ADDRESS 3119 013742 106004 RORB R4 ;ADDRESS OR DPB? 3120 013744 103402 BCS 10$ ;DPB -- FOUND SIZE REQ'D 3121 013746 012704 000400 MOV #400,R4 ;SET UP TO POP ONLY 1 WORD 3122 013752 105004 10$: CLRB R4 3123 013754 000304 SWAB R4 ;PUT SIZE IN LOW ORDER 3124 013756 006304 ASL R4 ;MAKE +2 FOR COUNT 3126 013760 062704 000020 ADD #EM.DRO,R4 ;POINT TO USER STACK LOCATION 3127 013764 063704 001116' ADD EMTSTK,R4 3133 013770 016644 000006 MOV 6(SP),-(R4) ;RESET STACK 3134 013774 016644 000004 MOV 4(SP),-(R4) 3135 014000 016644 000002 MOV 2(SP),-(R4) 3136 014004 011644 MOV @SP,-(R4) 3137 014006 010406 MOV R4,SP ;SET STACK POINTER 3138 ; 3139 ; A DIRECTIVE HAS BEEN PROCESSED -- IF A TASK IS CURRENT (THE ISSUING 3140 ; TASK) ITS PS, PC, R5, & R4 ARE ON THE KERNEL STACK, AND '.CRTSK' POINTS 3141 ; TO THE ATL NODE OF THAT TASK. IF A TASK IS NOT CURRENT (ISSUING 3142 ; TASK EXIT'ED), '.CRTSK' IS SET TO ZERO. 3143 ; SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 67-4 EXEC MODULE TWO -- SERVICE FOR "EMT" & "TRAP" INSTRUCTIONS 3144 ; R0 CONTAINS THE ADDRESS OF THE NEXT ATL NODE TO BE EXAMINED. 3145 ; 3146 014010 032766 000340 000006 BIT #PRI7,+6(SP) ;IS PROCESSOR PRIORITY OF DIRECTIVE ISSUING TASK ZERO? 3147 014016 001403 BEQ 20$ ;YES -- SCAN ATL FROM ENTRY POINTED TO BY R5. 3148 014020 012604 MOV (SP)+,R4 ;NO -- TASK SWITCHING HAS BEEN INHIBITED BY ISSUING TASK, 3149 014022 012605 MOV (SP)+,R5 ;RESTORE R4, R5, PC, & PS, AND RETURN TO ISSUING TASK. 3150 014024 000002 RTI ;(PRIORITY IS ZEROED IF TASK EXIT'ED.) 3151 ; 3152 ; TRANSFER CONTROL TO THE SCAN ATL ROUTINE AT PRIORITY TWO, 3153 ; PREVIOUS MODE: USER, CURRENT MODE: KERNEL, AND CC'S ZERO. 3154 ; 3155 014026 012746 034100 20$: MOV #034100+STXAS,-(SP) 3156 014032 012746 014054' MOV #ASXE2,-(SP) 3157 014036 000002 RTI SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 68 EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST 3159 .SBTTL EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST 3160 ;+ 3161 ; THE ACTIVE TASK LIST (ATL) IS A PRIORITY ORDERED LIST OF TASKS THAT 3162 ; HAVE BEEN ASSIGNED MEMORY SPACE FOR EXECUTION, AND HAVE NOT EXIT'ED. 3163 ; 3164 ; THE SYSTEM IS DRIVEN BY SCANNING THE ATL FROM THE TOP (HIGH PRIORITY) 3165 ; WHETHER A TASK IS CAPABLE OF EXECUTION IS INDICATED BY THE 'A.TS'TH 3166 ; BYTE OF EACH ATL NODE (ENTRY). 3167 ; 3168 ; THE ATL IS SCANNED DOWNWARD FROM A TASK WHENEVER THAT TASK VOLUNTARILY 3169 ; STOPS EXECUTION (VIZ., WAITFOR, EXIT) AND A SIGNIFICANT 3170 ; EVENT HAS NOT BEEN DECLARED. 3171 ; 3172 ; SIGNIFICANT EVENTS ARE DECLARED BY TASKS (PRI=0) VIA SYSTEM DIRECTIVES, 3173 ; AND BY INTERRUPT SERVICE ROUTINES (PRI 4,5,6,7) VIA SYSTEM SUBROUTINES. 3174 ; A DECLARATION OF A SIGNIFICANT EVENT IS INDICATED BY THE SOFTWARE FLAG 3175 ; (BYTE) '.SERFG+0'. 3176 ; 3177 ; CONTROL IS TRANSFERRED TO THE ATL SCAN ROUTINE UNDER TWO CONDITIONS: 3178 ; (1) WHEN CONTROL IS RETURNED TO A TASK (PRI 0) VIA THE "COMMON RETURN TO 3179 ; INTERRUPTED PROGRAM" AND A SIGNIFICANT EVENT HAS BEEN DECLARED (NON-ZERO 3180 ; '.SERFG+0'), AND (2) WHEN CONTROL IS RETURNED FROM A DIRECTIVE SERVICE 3181 ; ROUTINE. 3182 ; 3183 ; THERE ARE TWO ENTRY POINTS TO THE ATL SCAN ROUTINE: 3184 ; ASXE1 -- TO SCAN THE ATL DOWNWARD FROM THE TOP. I.E., TO EFFECT A 3185 ; DECLARATION OF A SIGNIFICANT EVENT. 3186 ; 3187 ; CONTROL IS TRANSFERRED TO 'ASXE1' FROM THE 'COMMON RETURN TO INTERRUPTED 3188 ; PROGRAM', OR FROM ATL SCAN TASK STATUS SERVICE, WHENEVER A SIGNIFICANT 3189 ; EVENT DECLARATION IS TO BE EFFECTED. 3190 ; 3191 ; ASXE2 -- TO SERVICE THE STATUS OF THE TASK WHOSE ATL NODE ADDRESS 3192 ; IS IN R5, AND THEN TO EITHER: (1) RETURN CONTROL TO THAT TASK, 3193 ; (2) SCAN THE ATL FROM THAT TASK THRU LOWER PRIORITY TASKS, OR 3194 ; (3) TO SCAN THE ATL FROM THE TOP. 3195 ; 3196 ; CONTROL IS TRANSFERRED TO 'ASXE2' FROM THE COMMON EXIT FOR DIRECTIVE 3197 ; (EMT 375) SERVICE CODE. 3198 ; 3199 ; IF A SIGNIFICANT EVENT HAS BEEN DECLARED (EITHER COINCIDENTLY OR AS 3200 ; A RESULT OF DIRECTIVE EXECUTION) CONTROL IS TRANSFERRED TO 'ASXE1'. 3201 ; HOWEVER, THE DECISION TO TRANSFER TO 'ASXE1' IS NOT MADE UNTIL THE 3202 ; "TASK STATUS SERVICE" FOR THE DIRECTIVE ISSUING TASK HAS BEEN PERFORMED. 3203 ; 3204 ; WHENEVER CONTROL IS TRANSFERRED TO THE ATL SCAN ROUTINE AND A TASK IS 3205 ; CURRENT, THE PS, PC, R5, & R4 OF THE CURRENT TASK HAVE BEEN PUSHED 3206 ; ONTO THE STACK. 3207 ;- SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 69 EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST 3209 014040 142737 000001 001014' ASXE1:: BICB #EV.SE,.SERFG+0 ;CLEAR SIGNIFICANT EVENT FLAG, AND SET 3210 014046 012705 007136' MOV #.ATLLH,R5 ;R5 TO THE ADDRESS OF THE FIRST ATL NODE. 3211 ;DISPATCH PER TASK STATUS 3212 ; 3213 ; SCAN LOOP -- AFTER PROCESSING AN ATL ENTRY, CONTROL IS TRANSFERRED EITHER: 3214 ; (1) TO 'ASXSCN' TO PROCESS THE NEXT ATL NODE, OR (2) TO 'ASXTE' TO 3215 ; TERMINATE THE ATL SCAN (A RUNABLE TASK HAS BEEN FOUND). 3216 ; 3217 ; CONTROL IS TRANSFERRED HERE FROM A ATL SCAN SERVICE ROUTINE, WITH THE 3218 ; STACK AND R5 UNCHANGED FROM THE DISPATCH TO THAT SERVICE ROUTINE. 3219 ; 3220 014052 011505 ASXSCN: MOV @R5,R5 ;ADVANCE R5 TO THE NEXT ATL NODE, 3221 014054 116504 000014 ASXE2: MOVB A.TS(R5),R4 ;DISPATCH PER ACTIVE TASK STATUS, WITH 3222 014060 000174 014062' JMP @ASXDT-02(R4) ;R0 = ATL NODE ADR & R4 = STATUS. 3223 ; 3224 014064 ASXDT: ;STATUS DEFINITIONS & DISPATCH ADDRESS TABLE. 3225 ; 3226 ;THE DISPATCH ROUTINE AT 'ASXE2' EXPECTS THE DISPATCH TABLE 3227 ;TO BEGIN WITH STATUS "02" AND INCREASE SEQUENTIALLY BY TWOS. 3228 ; 3229 ; 3230 000002 TS.LRQ==02 ;TASK LOAD REQEUST QUEUED 3231 014064 014262' ASXLRQ 3232 000004 TS.TKN==04 ;TASK WAITING FOR TERMINATION NOTICE 3233 014066 014052' ASXSCN 3234 000006 TS.LRF==06 ;TASK LOAD REQUEST FAILED 3235 014070 014224' ASXLRF 3236 000010 TS.RUN==10 ;** TASK IS RUNNING 3237 014072 014672' ASXTE 3238 000012 TS.SUS==12 ;** TASK IS SUSPENDED 3239 014074 014052' ASXSCN 3240 000014 TS.WF0==14 ;** TASK WAITING FOR AN EVENT FLAG 1-14 3241 ;** ('TS.WF0'-'TS.WS4' ARE EXPECTED IN SEQUENCE 3242 ;** BY THE WAITFOR DIRECTIVES.) 3243 014076 014112' ASXWR0 3244 000016 TS.WF1==16 ;** TASK WAITING FOR AN EVENT FLAG 17-32 3245 014100 014122' ASXWR1 3246 000020 TS.WF2==20 ;** TASK WAITING FOR AN EVENT FLAG 33-48 3247 014102 014132' ASXWR2 3248 000022 TS.WF3==22 ;** TASK WAITING FOR AN EVENT FLAG 49-64 3249 014104 014142' ASXWR3 3250 000024 TS.WF4==24 ;** TASK WAITING FOR AN EVENT FLAG 1-64 3251 014106 014152' ASXWR4 3252 000026 TS.EXT==26 ;TASK EXITED 3253 014110 014400' ASXEXT SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 70 EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST 3255 ; 3256 ; SERVICE FOR "WAITFOR" TASK STATUSES 3257 ; 3258 ; A TASK (THE TASK WHOSE ATL NODE IS POINTED TO BY R5) HAS ISSUED A 3259 ; WAITFOR DIRECTIVE. IF ANY INDICATED EVENT FLAG IS SET, CHANGE TASK'S 3260 ; TO "RUNNING", AND TERMINATE ATL SCAN TO RUN THE TASK. 3261 ; 3262 ; TASK IS WAITING FOR INDICATED FLAG(S) IN RANGE ZERO (FLAGS 1-16) 3263 ; 3264 014112 036565 000024 000020 ASXWR0: BIT A.FM+0(R5),A.EF+0(R5) 3265 014120 000433 BR ASXCMN 3266 ; 3267 ; TASK IS WAITING FOR INDICATED FLAG(S) IN RANGE ONE (FLAGS 17-32) 3268 ; 3269 014122 036565 000024 000022 ASXWR1: BIT A.FM+0(R5),A.EF+2(R5) 3270 014130 000427 BR ASXCMN 3271 ; 3272 ; TASK IS WAITING FOR INDICATED FLAG(S) IN RANGE TWO (FLAGS 33-48) 3273 ; 3274 014132 036537 000024 001010' ASXWR2: BIT A.FM+0(R5),.COMEF+0 3275 014140 000423 BR ASXCMN 3276 ; 3277 ; TASK IS WAITING FOR INDICATED FLAG(S) IN RANGE THREE (FLAGS 49-64) 3278 ; 3279 014142 036537 000024 001012' ASXWR3: BIT A.FM+0(R5),.COMEF+2 3280 014150 000417 BR ASXCMN 3281 ; 3282 ; TASK IS WAITING FOR INDICATED FLAG(S) IN RANGE FOUR (FLAGS 1-64) 3283 ; 3284 014152 036565 000024 000020 ASXWR4: BIT A.FM+0(R5),A.EF+0(R5) 3285 014160 001014 BNE WFXSET 3286 014162 036565 000026 000022 BIT A.FM+2(R5),A.EF+2(R5) 3287 014170 001010 BNE WFXSET 3288 014172 036537 000030 001010' BIT A.FM+4(R5),.COMEF+0 3289 014200 001004 BNE WFXSET 3290 014202 036537 000032 001012' BIT A.FM+6(R5),.COMEF+2 3291 014210 001720 ASXCMN: BEQ ASXSCN 3292 014212 WFXSET: 3293 014212 112765 000010 000014 MOVB #TS.RUN,A.TS(R5) 3294 014220 000137 014672' JMP ASXTE SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 71 EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST 3296 ; 3297 ; SERVICE FOR TASK STATUS: LOAD REQUEST FAILED 3298 ; 3299 014224 012765 000040 000024 ASXLRF: MOV #TN.LRF,A.FM+0(R5) ;SET LOAD REQUEST FAILURE 3300 014232 112765 000004 000014 MOVB #TS.TKN,A.TS(R5) ;SET TERMINATION NOTICE REQUESTED 3301 014240 005237 001124' INC .TKTN ;REQUEST TASK TERMINATION 3302 014244 026527 000006 010022' CMP A.PD(R5),#F11TPD ;F11 TPD PARTITION? 3303 014252 001300 BNE ASXE2 ;NO -- CONTINUE 3304 014254 .CRASH LRF ;LOAD REQUEST FAILURE 014254 000004 IOT 014256 114 122 106 .ASCIZ /LRF/ 014261 000 SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 72 EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST 3306 ; 3307 ; SERVICE FOR TASK REQUEST QUEUE'D SERVICE 3308 ; 3309 014262 006265 000020 ASXLRQ: ASR A.EF+0(R5) ;CHECK FOR REQUEST TO LOAD DONE 3310 014266 103271 BCC ASXSCN ;NO -- CONTINUE TO WAIT 3311 014270 105765 000030 TSTB A.FM+4(R5) ;DID THE I/O SUCCEED? 3312 014274 100753 BMI ASXLRF ;NO -- COMPLAIN 3313 014276 112765 000010 000014 MOVB #TS.RUN,A.TS(R5) ;SET THE TASK STATUS TO RUNNING 3314 014304 016504 000012 MOV A.HA(R5),R4 ;FIND THE HEADER ADDRESS 3321 014310 016446 000106 MOV H.TKVA(R4),-(SP) ;SAVE THE SST ADDRESS 3322 014314 016446 000076 MOV H.IPC(R4),-(SP) ;SAVE INITIAL PC 3323 014320 016446 000074 MOV H.IPS(R4),-(SP) ;SAVE INITIAL PS 3324 014324 016446 000130 MOV H.LUT(R4),-(SP) ;FIND OVERLAY LUN 3325 014330 006316 ASL @SP ;MAKE OFFSET 3326 014332 006316 ASL @SP 3327 014334 062716 000126 ADD #H.LUT-2,@SP ;POINT TO START OF LUT 3328 014340 060416 ADD R4,@SP ;POINT TO CORRECT LUT 3329 014342 016536 000022 MOV A.EF+2(R5),@(SP)+ ;SET LUT 3330 014346 016404 000100 MOV H.ISP(R4),R4 ;FIND INITIAL STACK 3331 014352 012644 MOV (SP)+,-(R4) ;STORE THE PS 3332 014354 012644 MOV (SP)+,-(R4) ;STORE THE PC 3333 014356 162704 000014 SUB #14,R4 ;INCLUDE REGISTER SAVE 3334 014362 010465 000004 MOV R4,A.SP(R5) ;SET STACK VALUE 3335 014366 016504 000016 MOV A.TD(R5),R4 ;FIND THE STD ADDRESS 3336 014372 012664 000030 MOV (SP)+,S.SS(R4) ;SET SST ADDRESS 3337 014376 000535 BR ASXTE ;GO TO START THE TASK SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 73 EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST 3339 ; 3340 ; SERVICE FOR TASK STATUS: EXIT 3341 ; 3342 014400 010446 ASXEXT: MOV R4,-(SP) 3343 014402 010346 MOV R3,-(SP) 3344 014404 010246 MOV R2,-(SP) 3345 014406 010146 MOV R1,-(SP) 3346 014410 010046 MOV R0,-(SP) 3347 014412 016502 000016 MOV A.TD(R5),R2 ;FIND THE STD ADDRESS 3348 014416 016500 000006 MOV A.PD(R5),R0 ;FIND THE TPD ADDRESS 3349 014422 042762 000001 000006 BIC #SF.TA,S.FW(R2) ;CLEAR ACTIVE FLAG IN STD 3350 014430 10$: 3351 014430 032762 000002 000006 BIT #SF.FX,S.FW(R2) ;CHECK TO SEE IF TASK FIXED 3352 014436 001003 BNE 20$ ;YES -- DON'T FREE CORE 3353 ; 3354 ; 3355 ; FREE MEMORY (AND POSSIBLY START TASK WAITING FOR MEMORY) AND RETURN 3356 ; ATL NODE TO POOL. 3357 ; 3358 014440 042760 000002 000010 BIC #TF.OU,T.FW(R0) ;RELEASE PARTITION 3359 ; 3360 ; 3361 014446 010504 20$: MOV R5,R4 ;POINT R5 TO THE NEXT LOWEST PRIORITY TASK'S 3362 014450 010501 MOV R5,R1 ;ATL NODE, DELETE NODE FROM ATL, AND RETURN 3363 014452 011505 MOV @R5,R5 ;IT TO THE POOL. 3364 014454 CALL ..NDEL 014454 004737 045320' JSR PC,..NDEL 3365 014460 012704 001432' MOV #.POLLH,R4 ;RETURN THE NODE TO THE POOL 3366 014464 CALL ..NADD 014464 004737 045434' JSR PC,..NADD 3367 014470 032762 000004 000006 BIT #SF.EX,S.FW(R2) ;HAS THE TASK BEEN REQUESTED TO EXIT? 3368 014476 001426 BEQ 50$ ;NO -- JUST CONTINUE 3369 014500 010046 MOV R0,-(SP) ;SAVE R0 (TPD ADDRESS) 3370 014502 013700 006364' MOV .STDTA,R0 ;FIND THE HEAD OF THE STD LIST 3371 014506 013703 006370' MOV .STDTZ,R3 ;FIND THE SIZE OF THE LIST 3372 014512 162737 000002 006370' SUB #2,.STDTZ ;RESET THE SIZE FOR NOW IT IS SMALLER 3373 014520 006203 ASR R3 ;DIVIDE BY 2 3374 014522 005203 INC R3 ;MAKE 1 LARGER BECAUSE IT IS 2*N-2 3375 014524 020210 30$: CMP R2,@R0 ;THE CORRECT ENTRY? 3376 014526 001403 BEQ 40$ ;YES -- FOUND IT 3377 014530 005720 TST (R0)+ ;NO -- CONTINUE SEARCH 3378 014532 005303 DEC R3 ;CONTINUE SCAN 3379 014534 000773 BR 30$ 3380 ; 3381 014536 016020 000002 40$: MOV 2(R0),(R0)+ ;MOVE ENTRIES BACK 3382 014542 077303 SOB R3,40$ ;UNTIL DONE 3383 014544 010201 MOV R2,R1 ;RETURN NODE TO POOL 3384 ;NOTE -- R4 STILL POINTS TO .POLLH 3385 ;FROM ABOVE RETURN OF ATL!!!!! 3386 014546 CALL ..NADD ;RETURN NODE 014546 004737 045434' JSR PC,..NADD 3387 014552 012600 MOV (SP)+,R0 ;RESTORE R0 3388 014554 032760 000002 000010 50$: BIT #TF.OU,T.FW(R0) ;CHECK FOR PARTITION OCCUPIED 3389 014562 001025 BNE 60$ ;YES -- DON'T TRY TO START TASK 3390 014564 010004 MOV R0,R4 ;SET UP TO PICL A NODE FROM MRL 3391 014566 062704 000014 ADD #T.RF,R4 ;POINT TO MRL 3392 014572 CALL ..PICK ;PICK NODE SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 73-1 EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST 014572 004737 045476' JSR PC,..PICK 3393 014576 103417 BCS 60$ ;NONE FOUND -- DON'T ATTEMPT TO START 3394 014600 010401 MOV R4,R1 ;SAVE THE NODE ADDRESS FOUND 3395 014602 022424 CMP (R4)+,(R4)+ ;POINT TO THE ENTRIES IN THE NDOE 3396 014604 012402 MOV (R4)+,R2 ;SET UP TO CALL .REQS 3397 014606 012403 MOV (R4)+,R3 3398 014610 012446 MOV (R4)+,-(SP) ;PUSH PRI 3399 014612 012704 001432' MOV #.POLLH,R4 ;RETURN THE NODE TO THE POOL 3400 014616 CALL ..NADD ;RETURN NODE 014616 004737 045434' JSR PC,..NADD 3401 014622 012604 MOV (SP)+,R4 ;GET THE PRIORITY 3402 014624 042762 000001 000006 BIC #SF.TA,S.FW(R2) ;CLEAR TASK ACTIVE FLAGS 3403 014632 CALL .REQS ;REQUEST THE TASK 014632 004737 015276' JSR PC,.REQS 3404 ; 3405 014636 012600 60$: MOV (SP)+,R0 ;POP (RESTORE) R0,R2,R1 3406 014640 012601 MOV (SP)+,R1 3407 014642 012602 MOV (SP)+,R2 3408 014644 012603 MOV (SP)+,R3 3409 014646 012604 MOV (SP)+,R4 3410 ; 3411 ; IF EXITING TASK IS NOT "CURRENT", ITS CONTEXT IS STORED IN ITS STACK. 3412 ; IF EXITING TASK IS "CURRENT", ITS PS, PC, R5, & R4 ARE STORED ON THE 3413 ; STACK AND THE REMAINDER OF ITS CONTEXT IS LOADED. 3414 ; 3415 ; R1 CONTAINS THE ADDRESS OF THE ATL NODE (WHICH HAS BEEN RETURNED TO THE 3416 ; POOL) OF THE EXITING TASK. 3417 ; 3418 014650 020537 001006' CMP R5,.CRTSK ;IF EXITING TASK IS "CURRENT", REMOVE (POP) 3419 014654 001004 BNE 70$ ;ITS R4, R5, PC, & PS FROM THE STACK 3420 014656 062706 000010 ADD #8.,SP ;(POP) 3421 014662 005037 001006' CLR .CRTSK 3422 014666 70$: 3423 014666 000137 014054' JMP ASXE2 ;DISPATCH PER STATUS OF TASK POINTED TO BY R5. SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 74 EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST 3425 ; 3426 ; TERMINATION OF ATL SCAN -- A TASK THAT CAN BE RUN HAS BEEN FOUND 3427 ; 3428 ; CONTROL IS TRANSFERRED HERE WITH THE PS, PC, R5, & R4 OF THE CURRENT 3429 ; TASK PUSHED ONTO THE STACK. 3430 ; 3431 ; CONTROL IS TRANSFERRED HERE EITHER BY DIRECT DISPATCH, OR FROM AN ATL 3432 ; SCAN SERVICE ROUTINE. IN EITHER CASE, THE STACK AND R5 ARE 3433 ; UNCHANGED FROM THE LAST ATL SCAN DISPATCH. 3434 014672 020537 001006' ASXTE: CMP R5,.CRTSK ;IS CONTROL RETURNING TO CURRENT TASK? 3435 014676 001461 BEQ CSDONE ;YES -- RESTORE R5, R4, PS, & PC FROM STACK 3436 014700 132737 000001 001014' BITB #EV.SE,.SERFG+0 ;NO -- HAS A SIGNIFICANT EVENT OCCURRED? 3437 014706 001402 BEQ 10$ 3438 014710 000137 014040' JMP ASXE1 ;YES -- RESTART ATL SCAN 3439 3440 014714 112737 000340 177776 10$: MOVB #340,@#PS ;INHIBIT INTERRUPTS WHILE CONTEXT SWITCHING 3441 014722 013704 001006' MOV .CRTSK,R4 ;NO -- IS THERE A CURRENT TASK? 3442 014726 001420 BEQ 40$ ;NO -- (CURRENT TASK EXITED) NO CONTEXT TO SAVE 3443 ;YES -- SAVE CONTEXT OF OLD CURRENT TASK, AND 3444 ;LOAD CONTEXT OF NEW CURRENT TASK. 3445 3447 014730 010346 MOV R3,-(SP) ;PUSH R3 3448 014732 010246 MOV R2,-(SP) ;PUSH R2 3449 014734 010146 MOV R1,-(SP) ;PUSH R1 3450 014736 010046 MOV R0,-(SP) ;PUSH R0 3451 014740 016400 000012 MOV A.HA(R4),R0 ;FIND THE HEADER ADDRESS 3458 014744 062700 000046 ADD #H.DSW,R0 ;POINT TO DSW 3459 014750 012701 000046 MOV #$DSW,R1 ;POINT TO DSW 3460 014754 012120 MOV (R1)+,(R0)+ ;SAVE THE CONTEXT OF LOW CORE 3461 014756 012120 MOV (R1)+,(R0)+ 3462 014760 012120 MOV (R1)+,(R0)+ 3463 014762 011110 MOV @R1,@R0 3464 014764 010664 000004 MOV SP,A.SP(R4) ;SAVE OLD PS 3465 014770 016506 000004 40$: MOV A.SP(R5),SP ;SET UP NEW STACK 3466 014774 016500 000012 MOV A.HA(R5),R0 ;RESTORE CONTEXT 3473 015000 062700 000054 ADD #H.DSW+6,R0 ;POINT TO DSW SAVE 3474 015004 012701 000054 MOV #$DSW+6,R1 3475 015010 011011 MOV @R0,@R1 3476 015012 014041 MOV -(R0),-(R1) 3477 015014 014041 MOV -(R0),-(R1) 3478 015016 014041 MOV -(R0),-(R1) 3479 015020 012600 MOV (SP)+,R0 ;RESTORE REGISTERS FROM THE IS TASK 3480 015022 012601 MOV (SP)+,R1 3481 015024 012602 MOV (SP)+,R2 3482 015026 012603 MOV (SP)+,R3 3484 3521 3522 015030 010537 001006' MOV R5,.CRTSK ;SET NEW '.CRTSK' (ATL NODE ADR OF CURRENT TASK). 3523 015034 142737 000300 177776 BICB #300,@#PS ;LOWER TO PRI 1 AFTER CONTEXT SWITCH 3524 3525 015042 CSDONE: ;CONTEXT SWITCH (IF REQUIRED) IS DONE. 3527 015042 052766 004000 000006 BIS #4000,6(SP) ;SET REG SET 1 3528 015050 042766 170000 000006 BIC #170000,6(SP) ;CLEAR OFF MODE BITS 3530 ; 3531 ; A TASK'S PS, PC, R5, & R4 ARE ON THE STACK, AND THE TASK'S ATL 3532 ; NODE ADDRESS IS IN R5. I.E., CONDITIONS ARE CORRECT FOR AN ATL SCAN 3533 ; SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 74-1 EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST 3534 ; 3535 ; IF THE TASK'S STATUS IS "RUNNING", CONTROL IS RETURNED TO THE TASK 3536 ; (UNLESS A SIGNIFICANT EVENT HAS BEEN DECLARED, IN WHICH CASE, CONTROL 3537 ; WILL BE RETURNED LATER). 3538 ; 3539 ; 3540 015056 012604 MOV (SP)+,R4 ;POP (RESTORE) R4 3541 015060 012605 MOV (SP)+,R5 ;POP (RESTORE) R5 3542 ; 3543 ; TRANSFER CONTROL TO TASK VIA COMMON "RETURN TO INTERRUPTED PROGRAM" 3544 ; ROUTINE (CLOCK AND/OR EVENT RECOGNITION MAY CAUSE ACTUAL TRANSFER TO 3545 ; OCCUR LATER IN REAL TIME). 3546 ; 3547 ; BR ..INTX 3548 ; SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 75 EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM 3550 .SBTTL EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM 3551 ; 3552 ; MOST INTERRUPT SERVICE ROUTINES ARE CONTAINED WITHIN I/O HANDLER TASKS 3553 ; CONTROL IS TRANSFERRED TO A TASK CONTAINED INTERRUPT SERVICE ROUTINE, 3554 ; WHEN THE INTERRUPT SERVICE ROUTINE WAS "CONNECTED" TO THE INTERRUPT. 3555 ; 3556 ; CONTROL IS TRANSFERRED TO A TASK CONTAINED INTERRUPT SERVICE ROUTINE 3557 ; WITH THE INTERRUPTED PROGRAM'S PS & PC, 3558 ; 3559 ; ALL TASK CONTAINED INTERRUPT SERVICE ROUTINES EXIT VIA "JMP ..INTX" WITH 3560 ; PS & PC OF THE INTERRUPTED PROGRAM 3561 ; 3562 ; THE '..INTX' ROUTINE EFFECTS A RETURN OF CONTROL 3563 ; TO THE INTERRUPTED PROGRAM. 3564 ; 3565 ; WITH THE PS & PC OF THE INTERRUPTED PROGRAM ON THE STACK. 3566 ; 3567 ; THE 'EXINTX' ROUTINE EFFECTS A RETURN TO THE INTERRUPTED PROGRAM. 3568 ; 3569 ; WHENEVER CONTROL IS RETURNED TO OTHER THAN A TASK (NON-ZERO PRI), 3570 ; CONTROL IS TRANSFERRED DIRECTLY TO THE INTERRUPTED PROGRAM. HOWEVER, 3571 ; WHEN CONTROL IS BEING RETURNED TO A TASK (PRI=0), THE "SYSTEM 3572 ; EVENT RECOGNITION FLAG" IN THE SYSTEM COMMUNICANTIONS AREA (SCOM) IS 3573 ; EXAMINED, AND IF FOUND NON-ZERO, THE INDICATED EVENTS ARE RECOGNIZED 3574 ; BEFORE CONTROL IS RETURNED TO THE INTERRUPTED TASK. 3575 ; 3576 3577 015062 ..INTX:: ;NORMAL ISR EXIT 3578 015062 052737 000340 177776 BIS #000340,@#PS ;;;INHIBIT INTERRUPTS (RAISE PRIORITY TO 7) 3579 015070 032766 000340 000002 BIT #000340,+2(SP) ;;;IS CONTROL RETURNING TO A TASK (PRI=0)? 3580 015076 001010 BNE CRTNXA ;;;YES -- EXAMINE SYSTEM EVENT RECOGNITION FLAG 3581 3582 015100 005737 001026' TST .PFAIL ;;;POWER FAIL SERVICE? 3583 015104 001402 BEQ CRTNX1 ;;;NO -- JUST RETURN 3584 015106 000137 020164' JMP .PWRDN ;;;YES -- POWER DOWN 3585 3586 015112 005737 001014' CRTNX1: TST .SERFG ;;;** ANY UNRECOGNIZED "SYSTEM EVENTS"? 3587 015116 001001 BNE CRTNX3 ;;;** YES -- TRANSFER CONTROL TO APPROPRIATE 3588 ;;;** EVENT RECOGNITON ROUTINE. 3589 015120 CRTNXA: 3590 ; CMP .DBRTT,SP ;;;** ## NO -- IS CONTROL RETURNING FROM SYSTEM 3591 ; BNE 10$ ;;;** ## TRACE DEBUGGING ROUTINE? 3592 ; CLR .DBRTT ;;;** ## YES -- RETURN VIA "RTT" INSTEAD OF "RTI" 3593 ; RTT ;;;** ## 3594 015120 10$: ;;;** ## 3595 015120 000002 CRTNX2: RTI ;;;** NO -- RETURN CONTROL TO TASK 3596 3597 ;** A RACE CONDITION EXISTS WHENEVER A 3598 ;POWER FAILURE OCCURS WHILE EXECUTING 3599 ;BETWEEN 'CRTNX1' AND 'CRTNX2'. TO 3600 ;AVOID THIS CONDITION, THE POWER FAIL 3601 ;TRAP SERVICE ROUTINE SETS THE PC TO 3602 ;'CRTNX1' WHENEVER IT INTERRUPTS EXECUTION 3603 ;IN THE RANGE 'CRTNX1' THRU 'CRTNX2'. 3604 ; 3605 ; A SYSTEM EVENT IS TO BE RECOGNIZED (NON-ZERO '.SERFG'), CONTROL IS 3606 ; TRANSFERRED TO SERVICE ROUTINE PER '.SERFG' SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 75-1 EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM 3607 ; PRI=2, CONDITION CODES CLEARED, AND THE 3608 ; INTERRUPTED TASK'S PS, PC, R5 & R4 PUSHED ONTO THE STACK. 3609 ; 3610 015122 010546 CRTNX3: MOV R5,-(SP) ;;;PUSH R5 3611 015124 010446 MOV R4,-(SP) ;;;PUSH R4 3612 3613 015126 012746 034100 MOV #034100,-(SP) 3614 015132 105737 001015' TSTB .SERFG+1 ;;;UN-RECOGNIZED CLOCK TICK(S)? 3615 015136 001403 BEQ 10$ ;;; 3616 ;;;YES -- RECOGNIZE CLOCK TICKS (NORMALLY 3617 015140 012746 025012' MOV #.TICK,-(SP) ;;;ONLY ONE) 3618 015144 000002 RTI ;;; 3619 015146 132737 000201 001014' 10$: BITB #EV.SE!EV.PF,.SERFG+0 ;;;NO -- SIGNIFICANT EVENT RECOGNITION? 3620 015154 100437 BMI 60$ ;;;OR POWER FAIL 3621 015156 001403 BEQ 30$ ;;; 3622 ;;;YES -- SCAN ATL FROM THE TOP 3623 015160 012746 014040' 20$: MOV #ASXE1,-(SP) ;;; 3624 015164 000002 RTI ;;; 3625 3626 015166 132737 000002 001014' 30$: BITB #EV.AS,.SERFG+0 ;;;AST? 3627 015174 001435 BEQ 70$ ;;;YIPES -- GOOFED AND SYSTEM BROKEN 3628 015176 010316 MOV R3,@SP ;;;SAVE CONTEXT 3629 015200 010246 MOV R2,-(SP) 3630 015202 010146 MOV R1,-(SP) 3631 015204 010046 MOV R0,-(SP) 3635 015206 012746 004000 MOV #004000,-(SP) 3637 015212 013746 001050' MOV .CKASS,-(SP) ;;;SET AST ADDRESS 3638 015216 001411 BEQ 50$ ;;;NOT THIS TYPE 3639 015220 005037 001050' CLR .CKASS ;;;CLEAR THIS FOR NEXT TIME 3640 015224 005737 001052' TST .PFASS ;;;POWER FAIL ALSO? 3641 015230 001334 BNE CRTNX3 ;;;YES -- BETTER DO IT TOO 3642 015232 142737 000002 001014' 40$: BICB #EV.AS,.SERFG+0 ;;;CLEAR THIS FLAG 3643 015240 000002 RTI ;;;RETURN TO USER 3644 3645 015242 013716 001052' 50$: MOV .PFASS,@SP ;;;SET UP POWER FAIL AST 3646 015246 005037 001052' CLR .PFASS ;;;CLEAR POWER FAIL AST ADDRESS 3647 015252 000767 BR 40$ ;;;AND RETURN TO USER 3648 3649 015254 142737 000200 001014' 60$: BICB #EV.PF,.SERFG+0 ;;;CLEAR POWER FAIL FLAG 3650 015262 CALL .PFRST ;;;POWER FAIL RESTART 015262 004737 020522' JSR PC,.PFRST 3651 015266 000734 BR 20$ ;;;RETURN 3652 3653 015270 70$: .CRASH IAS ;;;CRASH SYSTEM UNKNOWN SIG EVENT 015270 000004 IOT 015272 111 101 123 .ASCIZ /IAS/ 015275 000 SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 76 EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM 3655 ; 3656 ; .REQS -- SUBROUTINE TO ATTEMPT TO MAKE A TASK ACTIVE 3657 ; 3658 ; ENTRY CONDITIONS: 3659 ; 3660 ; R2 -- STD ENTRY ADDRESS (TASK ID ) OF REQUESTED TASK 3661 ; R3 -- TPD ENTRY ADDRESS, OR ZERO (DEFAULT PARTITION) , FOR REQUESTED TASK 3662 ; R4 -- RUN PRIORITY, OR ZERO (DEFAULT PRIORITY), FOR REQUESTED TASK 3663 ; 3664 ; CALLING SEQUENCE: 3665 ; 3666 ; CALL .REQS 3667 ; 3668 ; EXIT CONDITIONS: 3669 ; 3670 ; R2=00 -- TASK MADE ACTIVE 3671 ; R2=02 -- TASK NOT MADE ACTIVE, TASK ALREADY ACTIVE 3672 ; R2=06 -- TASK NOT MADE ACTIVE, INSUFFICIENT POOL NODE(S) 3673 ; 3674 ; REGISTERS ALTERED: 3675 ; R0,R1,R2,R3,R4 3676 ; 3677 ; 3678 015276 032762 000001 000006 .REQS:: BIT #SF.TA,S.FW(R2) ;IS TASK ACTIVE? 3679 015304 001403 BEQ 10$ ;NO -- IT IS LEGAL TO ACTIVATE IT 3680 015306 012702 000002 MOV #2,R2 ;YES -- RETURN +2 3681 015312 RETURN 015312 000207 RTS PC 3682 3683 015314 005703 10$: TST R3 ;CHECK THE PARTITION 3684 015316 001002 BNE 20$ ;PARTITION SPECIFIED 3685 015320 016203 000004 MOV S.TD(R2),R3 ;PARTITION NOT SPECIFIED -- USE DEFAULT 3686 015324 005704 20$: TST R4 ;PRIORITY? 3687 015326 001002 BNE 30$ ;YES -- DON'T USE DEFAULT 3688 015330 156204 000010 BISB S.DP(R2),R4 ;FIND THE DEFAULT PRIORITY 3689 015334 010446 30$: MOV R4,-(SP) ;SAVE PRI 3690 015336 010346 MOV R3,-(SP) ;SAVE TPD 3691 015340 012704 001432' MOV #.POLLH,R4 ;PICK AN ATL NODE 3692 015344 CALL ..PICK 015344 004737 045476' JSR PC,..PICK 3693 015350 103004 BCC 50$ ;GOT NODE 3694 015352 022626 40$: CMP (SP)+,(SP)+ ;REMOVE SAVED TPD AND PRI 3695 015354 012702 000006 MOV #6,R2 ;COMPLAIN NO NODES AVAILABLE 3696 015360 RETURN ;RETURN TO CALLER 015360 000207 RTS PC 3697 3698 015362 032762 000002 000006 50$: BIT #SF.FX,S.FW(R2) ;FIXED IN CORE? 3699 015370 001436 BEQ 70$ ;NO -- MUST READ THE TASK IN 3700 015372 010401 MOV R4,R1 ;SAVE NODE ADDRESS 3701 015374 016204 000022 MOV S.SP(R2),R4 ;SET UP STACK 3702 015400 062704 000014 ADD #14,R4 ;SET POINTER TO PC 3703 015404 016224 000020 MOV S.PC(R2),(R4)+ ;SET PC 3704 015410 012724 174000 MOV #174000,(R4)+ ;SET UP PS 3705 015414 012703 000010 MOV #TS.RUN,R3 ;SET UP TO START TASK 3706 015420 010104 60$: MOV R1,R4 ;SAVE THE ATL NODE ADDRESS 3707 015422 022424 CMP (R4)+,(R4)+ ;MOVE OVER LISTHEAD 3708 015424 016224 000022 MOV S.SP(R2),(R4)+ ;SET INITIAL STACK POINTER SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 76-1 EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM 3709 015430 012624 MOV (SP)+,(R4)+ ;SET UP TPD AND PRI 3710 015432 012624 MOV (SP)+,(R4)+ 3711 015434 016224 000012 MOV S.BA(R2),(R4)+ ;SET BASE ADDRESS 3712 015440 010324 MOV R3,(R4)+ ;SET RUN STATE 3713 015442 010224 MOV R2,(R4)+ ;SET STD NODE ADDRESS 3714 015444 005024 CLR (R4)+ 3715 015446 005064 000012 CLR A.PF-A.EF-2(R4) ;CLEAR POWER FAIL AST ADDRESS 3716 015452 052762 000001 000006 BIS #SF.TA,S.FW(R2) ;SET TASK ACTIVE 3717 015460 012702 007136' MOV #.ATLLH,R2 ;INSERT NODE INTO ATL 3718 015464 000535 BR 120$ 3719 3720 015466 032763 000002 000010 70$: BIT #TF.OU,T.FW(R3) ;PARTITION BUSY? 3721 015474 001116 BNE 110$ ;YES -- BETER PUT IN MRL 3722 015476 010446 MOV R4,-(SP) ;SAVE NODE ADDRESS OF ATL NODE 3723 015500 012701 000040 MOV #32.,R1 ;PICK AN I/O NODE 3724 015504 CALL ..ALCB 015504 004737 045654' JSR PC,..ALCB 3725 015510 010004 MOV R0,R4 ;SET CORRECT NODE ADDRESS 3726 015512 103006 BCC 80$ ;GOT ONE 3727 015514 012601 MOV (SP)+,R1 ;NONE AVAILABLE -- RETURN ATL NODE 3728 015516 012704 001432' MOV #.POLLH,R4 3729 015522 CALL ..NADD ;ADD NODE BACK TO ATL 015522 004737 045434' JSR PC,..NADD 3730 015526 000711 BR 40$ ;RETURN +6 3731 3732 015530 010446 80$: MOV R4,-(SP) ;SAVE NODE ADDRESS 3733 015532 022424 CMP (R4)+,(R4)+ ;MOVE OVER LISTHEAD 3734 015534 010224 MOV R2,(R4)+ ;SET UP STD ADDRESS 3735 015536 016624 000002 MOV 2(SP),(R4)+ ;SET UP ATL NODE ADDRESS 3736 015542 012724 175014 MOV #250.*400+12.,(R4)+ ;SET UP PRI/DPB SIZE 3737 015546 012724 000400 MOV #400,(R4)+ ;SET EFN 3738 015552 012724 000050 MOV #IO.LTK,(R4)+ ;CLAIM THIS IS A READ 3739 015556 005024 CLR (R4)+ ;NO I/O STATUS 3740 015560 005024 CLR (R4)+ ;NO AST ADDRESS 3741 015562 022424 CMP (R4)+,(R4)+ ;ADDRESS IS NOT SPECIFIED HERE 3742 015564 016224 000014 MOV S.LZ(R2),(R4)+ ;SET UP INITIAL SIZE 3743 015570 005024 CLR (R4)+ ;SKIP THIS PARAMETER 3744 015572 016224 000032 MOV S.DL(R2),(R4)+ ;SET UP DISK ADDRESS 3745 015576 016224 000034 MOV S.DL+2(R2),(R4)+ ;LOW ORDER DISK ADDRESS 3746 015602 012601 MOV (SP)+,R1 ;RESTORE R1 3747 015604 016603 000002 MOV 2(SP),R3 ;RESTORE THE TPD ADDRESS 3748 015610 032763 000002 000010 BIT #TF.OU,T.FW(R3) ;PARTITON OCCUPIED? 3749 015616 001407 BEQ 90$ ;NO -- MUST BE OK TO LOAD 3750 015620 012603 MOV (SP)+,R3 ;YES -- BETTER ADD IT TO MRL 3751 015622 012601 MOV (SP)+,R1 ;RESTORE ATL ADDRESS 3752 015624 010361 000030 MOV R3,A.FM+4(R1) ;SET THE NODE ADDRESS IN FLAGS MASK WORD TO PRESERVE IT 3753 015630 012703 100002 MOV #TS.LRQ+100000,R3 ;SET LOAD REQUEST QUEUE'D AND PARTITION BUSY 3754 015634 000671 BR 60$ ;SET UP ATL 3755 3756 015636 010246 90$: MOV R2,-(SP) ;SAVE STD ADDRESS 3757 015640 052763 000002 000010 BIS #TF.OU,T.FW(R3) ;DECLARE THE PARTITION OCCUPIED 3758 015646 005003 CLR R3 ;FIND PUD ENTRY 3759 015650 156203 000011 BISB S.DI(R2),R3 ;SET DISK INDICATOR 3760 015654 012702 010262' MOV #.PUDBA,R2 ;SET UP FOR ..IPRI 3761 015660 062702 000050 100$: ADD #U.SZ,R2 ;POINT TO AN ENTRY 3762 015664 077303 SOB R3,100$ ;LOOP UNTIL CORRECT ENTRY FOUND 3763 015666 010203 MOV R2,R3 ;SAVE THE LOGICAL UNIT NUMBER SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 76-2 EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM 3764 015670 062702 000022 ADD #U.RF,R2 ;POINT TO LISTHEAD 3765 015674 CALL ..IPRI ;ENTER IN LIST 015674 004737 045360' JSR PC,..IPRI 3766 015700 014202 MOV -(R2),R2 ;FIND ATL NODE ADDRESS OF HANDLER TASK 3767 015702 052762 000010 000020 BIS #EF.NIR,A.EF(R2) ;START HANDLER 3768 015710 CALL ..DSEV ;DECLARE SIG EVENT 015710 004737 045264' JSR PC,..DSEV 3769 015714 012602 MOV (SP)+,R2 ;RESTORE STD ADDRESS 3770 015716 012601 MOV (SP)+,R1 ;RESTORE R1 (ATL NODE ADDRESS) 3771 015720 010361 000022 MOV R3,A.EF+2(R1) ;SAVE THE OVERLAY PUD ADDRESS 3772 015724 012703 000002 MOV #TS.LRQ,R3 ;SET UP TO INDICATE LOAD REQUEST QUEUE'D 3773 015730 000633 BR 60$ ;AND START TASK 3774 3775 015732 010401 110$: MOV R4,R1 ;SAVE THE NODE ADDRESS 3776 015734 052762 000001 000006 BIS #SF.TA,S.FW(R2) ;SET TASK ACTIVE 3777 015742 022424 CMP (R4)+,(R4)+ 3778 015744 010224 MOV R2,(R4)+ ;SAVE THE ATTRIBUTES OF THIS CALL 3779 015746 012624 MOV (SP)+,(R4)+ 3780 015750 012624 MOV (SP)+,(R4)+ 3781 015752 010302 MOV R3,R2 ;FIND THE MRL 3782 015754 062702 000014 ADD #T.RF,R2 ;POINT TO IT IN TPD 3783 015760 120$: CALL ..IPRI ;INSERT THIS NODE IN MRL BY PRI 015760 004737 045360' JSR PC,..IPRI 3784 015764 005002 CLR R2 ;DECLARE TASK ACTIVE 3785 015766 RETURN ;RETURN TO CALLER 015766 000207 RTS PC 3786 3787 015770 104401 .RQESD::TRAP DR.01 ;RETURN +1 3788 015772 104771 TRAP DE.07 ;RETURN -7 3789 015774 104401 TRAP DR.01 ;RETURN+1 (CURRENTLY UNUSED) 3790 015776 104777 TRAP DE.01 ;RETURN -1 SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 77 EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM 3792 ; 3793 ; .FEPPU -- SUBROUTINE TO FETCH PARTITION AND PRIORITY 3794 ; 3795 ; ENTRY CONDITIONS: 3796 ; 3797 ; R1 -- DPB PLUS SIX -- POINTING TO FOLLOWING DATA IN PREVIOUS SPACE 3798 ; [PARTITION NAME (FIRST HALF), 3799 ; [PARTITION NAME (SECOND HALF), 3800 ; [PRIORITY], 3801 ; [UNUSED]. 3802 ; 3803 ; IT IS ASSUMED THAT THESE WORDS CAN BE FETCHED WITHOUT SEGMENT FAULT. 3804 ; 3805 ; R2 -- STD ENTRY OF TASK TO FIT IN PARTITION 3806 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK 3807 ; 3808 ; CALLING SEQUENCE: 3809 ; 3810 ; CALL .FEPPU 3811 ; 3812 ; EXIT CONDITIONS: 3813 ; 3814 ; R1 -- ADVANCED BY 8 (4 WORDS) 3815 ; R3 -- TPD ENTRY ADDRESS, OR ZERO (DEFAULT PARTITION) 3816 ; R4 -- RUN PRIORITY, OR ZERO (DEFAULT PRIORITY) 3817 ; 3818 ; REGISTERS ALTERED R1,R3,R4 3819 ; 3820 016000 .FEPPU::MFPI (R1)+ ;PUSH 2-WORD PARTITION NAME ONTO STACK 016000 012146 MOV (R1)+,-(SP) 3821 016002 MFPI (R1)+ 016002 012146 MOV (R1)+,-(SP) 3822 016004 005003 CLR R3 ;CLEAR R3 (TPD ADDRESS 3823 016006 005766 000002 TST 2(SP) ;WAS A PARTITION NAME SPECIFIED? 3824 016012 001423 BEQ 20$ ;NO -- RETURN WITH ZERO IN R3 3825 016014 012703 007602' MOV #.TPDBA,R3 ;YES -- SET UP TO SCAN TPD FOR PARTITION 3826 016020 020327 007602' 10$: CMP R3,#.TPDBA ;END OF TPD? 3827 016024 001425 BEQ X.X94 ;YES -- RETURN STS=-94. 3828 016026 162703 000020 SUB #T.SZ,R3 ;NO -- SET UP R3 TO EXAMINE ENTRY 3829 016032 021366 000002 CMP @R3,2(SP) ;PARTITION NAME MATCH? 3830 016036 001370 BNE 10$ ;NO -- CHECK NEXT TPD 3831 016040 026316 000002 CMP 2(R3),@SP ;MAYBE -- CHECK SECOND HALF OF NAME 3832 016044 001365 BNE 10$ ;NO -- CHECK NEXT TPD 3833 016046 016204 000016 MOV S.TZ(R2),R4 ;SET R4 TO THE NUMBER OF 32-WORD BLOCKS 3834 ;REQUIRED FOR THE TASK INDICATED BY R2. 3835 016052 020463 000006 CMP R4,T.PZ(R3) ;IS PARTITION LARG ENOUGH FOR TASK? 3836 016056 101401 BLOS 20$ ;YES -- SET R4 PER PRIORITY SPECIFIED 3837 016060 104775 TRAP DE.03 ;NO -- RETURN STS=-03 3838 3839 016062 022626 20$: CMP (SP)+,(SP)+ ;REMOVE PARTITION NAME FROM STACK 3840 016064 MFPS (R1)+,R4 ;SET R4 TO PRIORITY INDICATOR 016064 012104 MOV (R1)+,R4 3841 016066 020427 000372 CMP R4,#250. ;IS PRIORITY GREATER THAN 250? 3842 016072 101003 BHI X.X95 ;YES -- RETURN STS=-95. 3843 016074 005721 TST (R1)+ ;MOVE OVER UNUSED WORD 3844 016076 RETURN ;RETURN TO CALLER 016076 000207 RTS PC SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 77-1 EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM 3845 3846 016100 104642 X.X94: TRAP DE.94 ;RETURN STS=94. 3847 016102 104641 X.X95: TRAP DE.95 ;RETURN STS=95. SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 78 EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM 3849 ; 3850 ; .VCLUN -- VERIFY & CONVER LOGICAL UNIT NUMBER 3851 ; 3852 ; ENTRY CONDITIONS: 3853 ; 3854 ; R5 -- ATL NODE ADR OF DIRECTIVE ISSUING TASK 3855 ; TOP OF STACK -- LOGICAL UNIT NUMBER 3856 ; 3857 ; CALLING SEQUENCE: 3858 ; 3859 ; CALL .VCLUN 3860 ; 3861 ; EXIT CONDITIONS: 3862 ; 3863 ; R4 -- POINTS TO FIRST LUT ENTRY 3864 ; CC-C SET IF TASK NOT FOUND 3865 ; 3866 ; IF LUN IS ASSIGNED TO A PHYSICAL UNIT, THE LUN (ON TOP OF 3867 ; STACK) IS REPLACED BY THE ADDRESS OF THE CORRESPONDING PUD 3868 ; ENTRY. 3869 ; 3870 ; IF AN INVALID LUN, RETURN STS-96. 3871 ; 3872 ; IF THE LUN IS NOT ASSIGNED, IT IS REPLACED BY A ZERO. 3873 ; 3874 ; 3875 ; REGISTERS ALTERED: 3876 ; 3877 ; NONE 3878 ; 3879 016104 010046 .VCLUN::MOV R0,-(SP) ;PUSH (SAVE) R0 3880 016106 016600 000004 MOV 4(SP),R0 ;LUN MINUS ONE TO R0 3881 016112 005300 DEC R0 3882 3887 016114 016504 000012 MOV A.HA(R5),R4 ;POINT TO HEADER ADDRESS 3894 016120 062704 000130 ADD #H.LUT,R4 3896 3897 016124 020024 CMP R0,(R4)+ ;IS LUN <1, OR >MAX FOR TASK? 3898 016126 103013 BHIS X9X96 ;YES -- RETURN STS=-96 3899 016130 006300 ASL R0 ;NO -- SET LUT CONTENTS (PER LUN) IN R0 3900 016132 006300 ASL R0 3901 016134 060400 ADD R4,R0 3902 016136 011000 MOV @R0,R0 ;(PUD ENT ADR OR ZERO IN R0) 3903 016140 001402 BEQ 10$ ;IF ASSIGNED, EFFECT REDIRECTION (IF ANY) 3904 016142 016000 000016 MOV U.RP(R0),R0 3905 016146 10$: 3906 016146 010066 000004 MOV R0,4(SP) ;REPLACE LUN (ON STACK) BY PUD 3907 ;ENTRY ADDRESS (OR ZERO). 3908 3909 016152 012600 MOV (SP)+,R0 ;POP (RESTORE) R0 3910 016154 RETURN ;EXIT SUBROUTINE 016154 000207 RTS PC 3911 ; 3912 ; COMMON JMP'S TO DIRECTIVE EXITS 3913 ; 3914 016156 104640 X9X96: TRAP DE.96 SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 79 EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM 3916 ; 3917 ; .STAST -- SUBROUTINE TO SET AN AST IN A TASK 3918 ; 3919 ; ENTRY CONDITONS: 3920 ; 3921 ; R5 -- ACTIVE TASK LIST POINTER 3922 ; R4 -- ENTRY ADDRESS 3923 ; 3924 ; CALLING SEQUENCE: 3925 ; 3926 ; CALL .STAST 3927 ; 3928 ; EXIT CONDITIONS: 3929 ; 3930 ; CC-C CLEAR -- AST SET AND ALL OK 3931 ; CC-C SET -- THE TASK IS CURRENT AND CAN'T SET AST 3932 ; 3933 016160 010246 .STAST::MOV R2,-(SP) ;SAVE REGISTERS 3934 016162 010346 MOV R3,-(SP) 3935 016164 CALL ..DSEV ;DECLARE A SIG EVENT 016164 004737 045264' JSR PC,..DSEV 3936 016170 012702 000006 MOV #6,R2 ;SET UP TO SAVE REGISTERS 3937 016174 000241 CLC ;ASSUME SUCCESS 3938 016176 .INH0 ;;INHIBIT INTERRUPTS 016176 013746 177776 MOV @#PS,-(SP) 016202 112737 000140 177776 MOVB #140,@#PS 3939 016210 020537 001006' CMP R5,.CRTSK ;;CURRENT TASK? 3940 016214 001415 BEQ 30$ ;;YES 0-- BETTER SET CARRY 3941 016216 016503 000004 MOV A.SP(R5),R3 ;;SET UP A POINTER TO THE TASK'S STACK 3942 016222 010443 MOV R4,-(R3) ;;SET UP NEW PC 3946 016224 012743 004000 MOV #004000,-(R3) 3948 016230 016343 000016 10$: MOV 16(R3),-(R3) ;SET UP NEW STACK SAVE 3949 016234 077203 SOB R2,10$ ;;CONTINUE TIL DONE 3950 016236 20$: .ENB0 ;ENABLE INTERRUPTS 016236 004737 045540' JSR PC,..ENB0 3951 016242 012603 MOV (SP)+,R3 ;RESTORE 3952 016244 012602 MOV (SP)+,R2 3953 016246 RETURN ;RETURN TO CALLER 016246 000207 RTS PC 3954 3955 016250 005216 30$: INC @SP ;ENABLE INTERRUPTS 3956 016252 152737 000002 001014' BISB #EV.AS,.SERFG+0 ;SET AST REQUIRED 3957 016260 000766 BR 20$ ;AND RETURN 3958 ; SCH - TASK SCHEDULER & GLOB MACRO M1113 03-APR-86 20:41 PAGE 80 EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM 3960 3961 3962 .TITLE BOOT -- BOOT PROTOCOL HANDLER 3963 .SBTTL SECONDARY PROTOCOL -- COPYRIGHT STATEMENT 3964 016262 IDENT$ 15,00 .IDENT /015000/ 3965 3966 ; 3967 ; COPYRIGHT (C) 1975, 1984, 1985 BY 3968 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS. 3969 ; ALL RIGHTS RESERVED. 3970 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED 3971 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION 3972 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE- 3973 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. 3974 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED. 3975 ; 3976 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT 3977 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT 3978 ; CORPORATION. 3979 ; 3980 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS 3981 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL. 3982 ; 3983 ; MODULE: "BOOT PROTOCOL HANDLER" 3984 ; 3985 ; VERSION: 14-37 3986 ; 3987 ; AUTHOR: R. MCLEAN 3988 ; 3989 ; DATE: 12 OCT 76 3990 ; 3991 ; THIS MODULE CONTAINS: 3992 ; 3993 ; 1 -- CODE TO SERVICE BOOT PROTOCOL ETC. 3994 ; 3995 ; MODIFIED: 3996 ; NO. DATE PROGRAMMER PURPOSE 3997 ; --- ---- ---------- ------- 3998 ; 001 12-OCT-76 R. BELANGER CHANGED PHYSICAL EXAMINES & 3999 ; DEPOSITS TO EPT RELATIVE 4000 ; 002 21-OCT-76 A. PECKHAM ADDITION OF CODE TO COUNT 4001 ; DOORBELLS. 4002 ; 4003 ; 003 04-NOV-76 R. BELANGER ADDED CODE TO DELETE 4004 ; ENTRIES FROM TO10Q ON 4005 ; PRIMARY PROTOCOL RESTART. 4006 ; 004 29-NOV-76 A. PECKHAM CHANGES TOO NUMEROUS TO MENTION. 4007 ; 005 07-MAR-77 A. PECKHAM ADDED CHANGE TO AVOID RESETTING TO -10 Q. 4008 ; 006 21-MAR-77 A. PECKHAM FIXED BUG IN ACKNOWLEGE 4009 ; 007 28-AUG-77 R. BELANGER RESET POWERFAIL FLAG ON 4010 ; PRIMARY PROTOCOL START 4011 ; 008 07-OCT-77 R. BELANGER IGNORE COMM REGION IF SO DIRECTED BY "TKTN" 4012 ; 4013 ; 009 27-MAY-78 R. BELANGER ADD PROTOCOL TIMEOUT 4014 ; TCO 4.2207 08-MAR-79 R. BELANGER FIX BUG WHICH CAN CAUSE 4015 ; PROTOCOL PAUSE LOOPS BOOT -- BOOT PROTOCOL HANDLER MACRO M1113 03-APR-86 20:41 PAGE 80-1 SECONDARY PROTOCOL -- COPYRIGHT STATEMENT 4016 ; TCO 4.1.1035 16-NOV-79 R. BELANGER ADD QUEUE ARBITRATION 4017 ; TCO 4.1.1121 19-MAR-80 R. BELANGER SUPPORT BLOCKED DTE-20 4018 ; TCO 4.1.1137 05-APR-80 R. BELANGER REMOVE SUPPORT FOR RESTRICTED DTE-20 4019 ; 4020 ; MACRO CALLS 4021 ; 4022 .MCALL CALL,RETURN,.STKM,CLEF$S,WTSE$S,QIOW$,DTON$S,.CRASH 4023 .MCALL WSIG$S,.ENB0,.INH6,.ENB6,$DEF 4024 016262 $DEF BOOT -- BOOT PROTOCOL HANDLER MACRO M1113 03-APR-86 20:41 PAGE 81 SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE 4026 .SBTTL SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE 4027 ; 4028 ; BTPRO -- ROUTINE TO HANDLE THE PROTOCOL TRANSITION INTO 4029 ; SECONDARY PROTOCOL. 4030 ; IT IS ASSUMED THAT THIS PROTOCOL WILL BE USED 4031 ; DURING INITALIZATION AND IN CASE OF MONITOR CRASHED ETC 4032 ; WHEN THE NORMAL MEANS OF COMMUNICATIONS THRU THE COMM REGION ARE DESTROYED 4033 ; 4034 ; "EF.CRI" INDICATES THAT THE FRONT-END BELEIVES THE COMM-REGION TO BE 4035 ; INVALID. THIS BIT IS SET ON POWERFAIL AND BY "KLI" ON A KL RELOAD. 4036 ; IF THE COMM REGION INVALID FLAG IS NOT SET, THE TRANSITION INTO SECONDARY 4037 ; PROTOCOL IS TIMED-OUT FOR 30 SECONDS. IF NO TRANSITION IS MADE WITHIN 4038 ; THAT PERIOD, THE KL IS RELOADED. 4039 ; 4040 ; NOTE -- IF THE COMM-REGION IS FOUND TO BE VALID DURING A NORMAL PROTOCOL 4041 ; TRANSITION, PRIMARY PROTOCOL IS IS IMMEDIATELY RE-ENTERED. 4042 ; 4043 ; IF SUCCESS IN COMMUNICATION WITH THE KL IT WILL ENTER SECONDARY 4044 ; PROTOCOL (OR RE-ENTER PRIMARY PROTOCOL) 4045 ; 4046 4047 016262 BTPHD:: 4048 016262 .STKM 0,1,2,3,4,5,0,BTPRO,174000,.BTSTK 016330 000000 000000 000000 .WORD 0,0,0,0 016336 000000 016356 174000 016562' 016542' .WORD 174000,BTPRO,.BTSTK 016412 000005 .WORD 5 016414 010262' .WORD TTPEN 016416 000000 .WORD 0 016420 000000 .WORD 0 016422 000000 .WORD 0 016424 000000 .WORD 0 016426 000000 .WORD 0 016430 000000 .WORD 0 016432 000000 .WORD 0 016434 000000 .WORD 0 016436 000000 .WORD 0 016440 000000 .WORD 0 016542 000000 .WORD 0 016544 000001 .WORD 1 016546 000002 .WORD 2 016550 000003 .WORD 3 016552 000004 .WORD 4 016554 000005 .WORD 5 016556 016562' .WORD BTPRO 016560 174000 .WORD 174000 4049 4050 016562 BTPRO: 4051 016562 105037 001400' CLRB .PRPSE ; RESET THE PAUSE FLAG 4052 016566 WTSE$S #E.FPR2 ;WAIT FOR ACTIVATION. 016566 012746 000076 MOV #E.FPR2,-(SP) 016572 012746 MOV (PC)+,-(SP) 016574 051 002 .BYTE 41.,2 016576 104375 EMT 375 4053 016600 052737 100000 007462' BIS #BIT15,FETSK+A.EF ;SET SECONDARY PROTOCOL FLAG FOR FETSK 4054 016606 013700 001154' MOV .TKPS,R0 ; +++009 TICKS PER SECOND TO R0 4055 016612 012701 000036 MOV #^D30,R1 ; +++009 30. SECONDS BOOT -- BOOT PROTOCOL HANDLER MACRO M1113 03-APR-86 20:41 PAGE 81-1 SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE 4056 016616 5$: 4057 016616 CALL $MUL ; +++009 CALCULATE PAUSE PERIOD 016616 004737 000000G JSR PC,$MUL 4058 016622 010104 MOV R1,R4 ; +++009 SAVE IT IN R4 4059 016624 013700 001366' MOV .PRDTE,R0 ;FIND ADDRESS OF PRIVILEDGED DTE 4060 016630 013705 001364' MOV .PRSTA,R5 4061 016634 012715 000010 MOV #INTROF,@R5 ;CLEAR THE STATUS 4062 016640 000405 BR 20$ ;GO LOOK FOR CHANGE TO BOOT PROTOCOL 4063 ; 4064 016642 10$: 4065 016642 .ENB6 ;;;ENABLE INTERRUPTS 016642 012637 177776 MOV (SP)+,@#PS 4066 016646 WSIG$S ;WAIT FOR SIG EVENT 016646 012746 MOV (PC)+,-(SP) 016650 061 001 .BYTE 49.,1 016652 104375 EMT 375 4067 016654 20$: 4068 016654 .INH6 ;INHIBIT INTERRUPTS 016654 013746 177776 MOV @#PS,-(SP) 016660 112737 000300 177776 MOVB #300,@#PS 4069 016666 032737 002000 001012' BIT #EF.CRI,.COMEF+2 ;;; +++008 IS THE COMM REGION VALID?? 4070 016674 001020 BNE 30$ ;;; +++008 NO -- GO ON 4071 016676 112737 177777 001400' MOVB #-1,.PRPSE ;;; +++009 MARK THAT WE ARE PAUSING 4072 016704 005060 000010 CLR TNAD1(R0) ;;; MAYBE -- LOOK FOR PROTOCOL CHANGE 4073 016710 005060 000012 CLR TNAD2(R0) ;;;BY TESTING RELATIVE ADDR WORD 4074 016714 CALL ..WFED ;;; [4.1.1121] WAIT FOR EXAMINE 016714 004737 047454' JSR PC,..WFED 4075 016720 103453 BCS 47$ ;;;KL HAS BEEN LOST.. 4076 016722 005760 000002 TST DXWD3(R0) ;;;IF NON-ZERO 4077 016726 001403 BEQ 30$ ;;;THEN EXAMINE VALID, SO 4078 016730 010702 MOV PC,R2 ;;; +++006 SAY NO ACKNOWLEGE NEEDED 4079 016732 000137 020024' JMP 120$ ;;; +++005 RETURN TO PRIMARY PROTOCOL. 4080 ; 4081 016736 30$: 4082 016736 032760 004000 000030 BIT #DS04,DAG1(R0) ;;;CHECK FOR CLOCK ERROR STOP 4083 016744 001174 BNE 86$ ;;;STOP ALL PROTOCOLS IF SO 4084 016746 31$: 4085 016746 032715 004000 BIT #TO11DB,@R5 ;;;WAIT OR A DOORBELL INTERRUPT 4086 016752 001021 BNE 40$ ;;; +++009 GOT ONE -- PROCESS IT 4087 016754 032737 002000 001012' BIT #EF.CRI,.COMEF+2 ;;; +++009 IS THIS A PAUSE?? 4088 016762 001327 BNE 10$ ;;; +++009 YES -- WAIT FOR SECONDARY PROTOCOL 4089 016764 077452 SOB R4,10$ ;;; +++009 NO -- DID WE TIME OUT?? 4090 016766 105237 001124' INCB .TKTN ;;; +++009 YES -- SAY GOODNIGHT.... 4091 016772 105237 001122' INCB .NOERR ;;; +++009 DON'T CARE ABOUT ERRORS NOW 4092 016776 052737 000200 001126' BIS #KS.PTO,.KLITK ;;; +++009 FLAG PROTOCOL TIMEOUT 4093 017004 CALL ..DTSP ;;; [4.2207] STOP ALL PROTOCOLS 017004 004737 050226' JSR PC,..DTSP 4094 017010 .ENB6 ;;; +++009 ALLOW INTERRUPTS 017010 012637 177776 MOV (SP)+,@#PS 4095 017014 000662 BR BTPRO ; +++009 AND GO BACK TO SLEEP 4096 ; 4097 017016 40$: 4098 017016 042737 001000 001012' BIC #EF.FCP,.COMEF+2 ;;;CLEAR FAULT CONTINUATION IN PROGRESS IN CASE 4099 017024 005237 001370' INC .PRDCT ;;; +002 ONE MORE DOORBELL.... 4100 017030 012760 004000 000010 MOV #PRTOFF!EPTR,TNAD1(R0) ;;; +001 PROTECT OFF 4101 017036 012760 000451 000012 MOV #DTECMD,TNAD2(R0) ;;;READ THE COMMAND PASSED 4102 017044 CALL ..WFED ;;; [4.1.1121] WAIT FOR EXAMINE DEPOSIT BOOT -- BOOT PROTOCOL HANDLER MACRO M1113 03-APR-86 20:41 PAGE 81-2 SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE 017044 004737 047454' JSR PC,..WFED 4103 017050 47$: 4104 017050 103534 BCS 87$ 4105 017052 012715 002000 MOV #INT11C,@R5 ;;;ALLOW MORE DOORBEL INTERRUPTS 4106 017056 122760 000011 000003 CMPB #11,DXWD3+1(R0) ;;;LOOK AT THE COMMAND WORD 4107 017064 001266 BNE 10$ ;;;NOT WHAT WE WANT... 4108 ; 4109 ; CHANGE PROTOCOL TO SECONDARY (FUNCTION 11) 4110 ; 4111 017066 50$: 4112 017066 105037 001400' CLRB .PRPSE ;;; +++009 RESET PAUSE FLAG 4113 017072 012760 177776 000002 55$: MOV #-2,DXWD3(R0) ;;;ACKNOWLEDGE THE COMMAND 4114 017100 052760 014000 000010 BIS #DEP!EPTR!PRTOFF,TNAD1(R0) ;;; +001 SET DEPOSIT IN TEN MEMORY FLAG 4115 017106 012760 000444 000012 MOV #DTEFLG,TNAD2(R0) ;;;START TRANSFER TO DTE FLAG WORD 4116 017114 CALL ..WFED ;;; [4.1.1121] WAIT FOR EXAMINE DEPOSIT 017114 004737 047454' JSR PC,..WFED 4117 017120 103510 BCS 87$ ;;;TEN STOPPED 4118 017122 012715 000400 MOV #TO10DB,@R5 ;;;SET 10'S DOORBELL 4119 017126 005037 001162' CLR .BTSCH ;;;CLEAR ANY SAVED CHARACTERS 4120 ; 4121 ; AT THIS POINT WE ARE OFFICIALLY IN SECONDARY PROTOCOL 4122 ; 4123 ; THIS IS THE MAIN COMMAND LOOP WHICH PROCESSES THE SECONDARY 4124 ; PROTOCOL COMMANDS AND PASSES CTY CHARACTERS TO THE -10. 4125 ; 4126 017132 60$: 4127 017132 .ENB6 ;;;ENABLE INTERRUPTS 017132 012637 177776 MOV (SP)+,@#PS 4128 017136 WSIG$S ;WAIT FOR SIG EVENT 017136 012746 MOV (PC)+,-(SP) 017140 061 001 .BYTE 49.,1 017142 104375 EMT 375 4129 017144 .INH6 ;INHIBIT INTERRUPTS 017144 013746 177776 MOV @#PS,-(SP) 017150 112737 000300 177776 MOVB #300,@#PS 4130 017156 032715 004000 BIT #TO11DB,@R5 ;;;WAIT FOR ANOTHER DOORBELL 4131 017162 001073 BNE 90$ ;;;FOUND IT -- CHECK THE COMMAND 4132 017164 032760 004000 000030 BIT #DS04,DAG1(R0) ;;;CHECK FOR CLOCK ERROR STOP 4133 017172 001061 BNE 86$ ;;;YES -- STOP PROTOCOL 4134 017174 70$: 4135 017174 113701 001162' MOVB .BTSCH,R1 ;;;CHECK FOR CTY CHARACTER 4136 017200 001754 BEQ 60$ 4137 ; 4138 ; TRANSFER CTY CHARACTER TO -10 4139 ; 4140 017202 80$: 4141 017202 012760 004000 000010 MOV #PRTOFF!EPTR,TNAD1(R0) ;;; +001 SET PROTECT OFF 4142 017210 012760 000456 000012 MOV #DTEMTI,TNAD2(R0) ;;;PICK UP THE INPUT BUSY FLAG 4143 017216 81$: 4144 017216 CALL ..WFED ;;; [4.1.1121] WAIT FOR EXAMINE DEPOSIT 017216 004737 047454' JSR PC,..WFED 4145 017222 103447 BCS 87$ ;;;TEN STOPPED 4146 017224 005760 000004 TST DXWD2(R0) 4147 017230 001340 BNE 60$ ;;;TEN CAN'T ACCEPT ANOTHER CHARACTER YET 4148 017232 042701 177600 BIC #^C177,R1 ;;;MASK OFF JUNK 4149 017236 010160 000002 MOV R1,DXWD3(R0) ;;;PUT THE WORD IN THE DTE 4150 017242 005060 000004 CLR DXWD2(R0) BOOT -- BOOT PROTOCOL HANDLER MACRO M1113 03-APR-86 20:41 PAGE 81-3 SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE 4151 017246 005060 000006 CLR DXWD1(R0) 4152 017252 012760 014000 000010 MOV #DEP!PRTOFF!EPTR,TNAD1(R0) ;;; +001 SET DEP!PRTOFF!EPTR DEPOSIT FLAG 4153 017260 012760 000450 000012 MOV #DTEF11,TNAD2(R0) ;;;STORE THE CHARACTER IN THE 10 4154 017266 CALL ..WFED ;;; [4.1.1121] WAIT FOR EXAMINE/DEPOSIT 017266 004737 047454' JSR PC,..WFED 4155 017272 103423 BCS 87$ ;;;TEN STOPPED 4156 017274 105037 001162' CLRB .BTSCH ;;;CHARACTER HAS NOW BEEN SENT 4157 017300 012760 177776 000002 MOV #-2,DXWD3(R0) ;;;SET CHARACTER IN BUFFER FLAG 4158 017306 012760 014000 000010 MOV #DEP!PRTOFF!EPTR,TNAD1(R0) ;;; +001 SET DEP!PRTOFF!EPTR DEPOSIT FLAG 4159 017314 012760 000456 000012 MOV #DTEMTI,TNAD2(R0) ;;;TRANSFER TO 10 MEMORY 4160 017322 CALL ..WFED ;;; [4.1.1121] WAIT FOR TRANSFER 017322 004737 047454' JSR PC,..WFED 4161 017326 103405 BCS 87$ ;;;TEN STOPPED 4162 017330 012715 000400 MOV #TO10DB,@R5 ;;;SET THE 10'S DOORBELL 4163 017334 000676 BR 60$ ;;;CONTINUE POLLING 4164 ; 4165 ; AN ERROR ON EXAMINE / DEPOSIT TURNS OFF BOOT PROTOCOL 4166 ; 4167 017336 86$: 4168 017336 CALL ..WFED ;;; [4.1.1121] RECOGNIZE ERROR, THEN 017336 004737 047454' JSR PC,..WFED 4169 017342 87$: 4170 017342 .ENB0 ;;; +++006 ENABLE INTERRUPTS 017342 004737 045540' JSR PC,..ENB0 4171 017346 000137 016562' JMP BTPRO ;AND GO TO WAIT FOR REACTIVATION. 4172 ; 4173 ; RECIEVE A COMMAND FROM THE -10 4174 ; 4175 017352 90$: 4176 017352 005237 001370' INC .PRDCT ;;; +002 ONE MORE DOORBELL... 4177 017356 012760 004000 000010 MOV #PRTOFF!EPTR,TNAD1(R0) ;;; +001 SET PROTECT OFF 4178 017364 012760 000451 000012 MOV #DTECMD,TNAD2(R0) ;;;READ THE COMMAND WORD 4179 017372 CALL ..WFED ;;; [4.1.1121] WAIT FOR EXAMINE DEPOSIT 017372 004737 047454' JSR PC,..WFED 4180 017376 012715 002000 MOV #INT11C,@R5 ;;;WARNING !!!!!DON'T MOVE THIS INSTRUCTION!!!!!!! 4181 ;;;DOORBELL MUST NOT BE CLEARED BEFORE THE 4182 ;;;10 FINISHES THE SET DOORBELL!!!!!! 4183 ;;;IT IS GUARANTEED TO BE SAFE AFTER ..WFED 4184 017402 103757 BCS 87$ ;;;TEN STOPPED 4185 017404 122760 000013 000003 CMPB #13,DXWD3+1(R0) ;;; [**] 4186 017412 001447 BEQ 97$ ;;; [**] 4187 017414 122760 000012 000003 CMPB #12,DXWD3+1(R0) ;;;MONITOR MODE CONTROL OFF? 4188 017422 001515 BEQ 100$ ;;;YES -- RE-ENTER RSX20F 4189 017424 122760 000011 000003 CMPB #11,DXWD3+1(R0) ;;;MONITOR MODE CONTROL ON? 4190 017432 001003 BNE 95$ ;;;NO -- MUST BE CTY CHARACTER 4191 017434 012715 002000 MOV #INT11C,@R5 ;;;ALLOW MORE DOORBELLS AND 4192 017440 000612 BR 50$ ;;;ACKNOWLEDGE THE COMMAND. 4193 ; 4194 ; OUTPUT A CHARACTER TO THE CTY (FUNCTION 10) 4195 ; 4196 017442 95$: 4197 017442 116037 000002 020162' MOVB DXWD3(R0),QPROAD ;;;OUTPUT A CHARACTER 4198 017450 .ENB6 ;;;ENABLE INTERRUPTS 017450 012637 177776 MOV (SP)+,@#PS 4199 017454 DIR$ #QPROMS ;OUTPUT CHARACTER 017454 012746 020140' MOV #QPROMS,-(SP) 017460 104375 EMT 375 BOOT -- BOOT PROTOCOL HANDLER MACRO M1113 03-APR-86 20:41 PAGE 81-4 SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE 4200 017462 .INH6 ;INHIBIT INTERRUPTS 017462 013746 177776 MOV @#PS,-(SP) 017466 112737 000300 177776 MOVB #300,@#PS 4201 017474 012760 177776 000002 MOV #-2,DXWD3(R0) ;;;ACKNOWLEDGE CHARACTER OUTPUT 4202 017502 012760 014000 000010 MOV #DEP!PRTOFF!EPTR,TNAD1(R0) ;;; +001 SET DEPOSIT 4203 017510 012760 000455 000012 MOV #DTEMTD,TNAD2(R0) ;;;START TRANSFER TO INDICATE CHARACTER OUTPUT 4204 017516 CALL ..WFED ;;; [4.1.1121] WAIT FOR EXAMINE DEPOSIT 017516 004737 047454' JSR PC,..WFED 4205 017522 103707 BCS 87$ ;;;WHOOPS ! 4206 017524 012715 000400 MOV #TO10DB,@R5 ;;;CLEAR THE 11 DOORBELL AND SET THE 10'S DOORBELL 4207 017530 000621 BR 70$ ;;;CONTINUE POLLING 4208 4209 ; 4210 ; SEND DATE/TIME INFO (FUNCTION 13) 4211 ; 4212 017532 97$: 4213 017532 005060 000006 CLR DXWD1(R0) ;;; [**] 4214 017536 016001 000004 MOV DXWD2(R0),R1 ;;; [**] 4215 017542 013760 001140' 000004 MOV .DATE,DXWD2(R0) ;;; [**] 4216 017550 013760 001142' 000002 MOV .YEAR,DXWD3(R0) ;;; [**] 4217 017556 CALL 98$ ;;; [**] 017556 004737 017634' JSR PC,98$ 4218 017562 103667 BCS 87$ ;;; [**] 4219 017564 013760 001144' 000004 MOV .DAY,DXWD2(R0) ;;; [**] 4220 017572 013760 001146' 000002 MOV .DST,DXWD3(R0) ;;; [**] 4221 017600 CALL 98$ ;;; [**] 017600 004737 017634' JSR PC,98$ 4222 017604 103656 BCS 87$ ;;; [**] 4223 017606 013760 001150' 000004 MOV .SSM,DXWD2(R0) ;;; [**] 4224 017614 013760 001152' 000002 MOV .SSM+2,DXWD3(R0) ;;; [**] 4225 017622 CALL 98$ ;;; [**] 017622 004737 017634' JSR PC,98$ 4226 017626 103645 BCS 87$ ;;; [**] 4227 017630 000137 017072' JMP 55$ ;;; [**] 4228 017634 98$: 4229 017634 012760 014000 000010 MOV #DEP!EPTR!PRTOFF,TNAD1(R0) ;;; [**] 4230 017642 010160 000012 MOV R1,TNAD2(R0) ;;; [**] 4231 017646 CALL ..WFED ;;; [**] 017646 004737 047454' JSR PC,..WFED 4232 017652 005201 INC R1 ;;; [**] 4233 017654 RETURN ;;; [**] 017654 000207 RTS PC 4234 4235 ; 4236 ; CHANGE PROTOCOL TO PRIMARY (FUNCTION 12) 4237 ; 4238 017656 100$: 4239 017656 005037 001402' CLR .DTBLK ;;; [4.1.1121] DTE-20 IS NO LONGER BLOCKED 4240 017662 005002 CLR R2 ;;; +++006 NEED ACKNOWLEGE 4241 017664 042737 006000 001012' BIC #EF.PFR!EF.CRI,.COMEF+2 ;;; +++007 GUARD AGAINST SPURIOUS POWERFAIL 4242 ;;; +++008 DECLARE COMM REGION VALID 4243 017672 032760 000001 000002 BIT #1,DXWD3(R0) ;;;CHECK FOR RE-INIT 4244 017700 001451 BEQ 120$ ;;; +++006 NO 4245 017702 110$: 4246 017702 010046 MOV R0,-(SP) 4247 017704 113$: 4248 017704 013704 001334' MOV TO10Q,R4 ;;; +003 Q LISTHEAD TO R4 BOOT -- BOOT PROTOCOL HANDLER MACRO M1113 03-APR-86 20:41 PAGE 81-5 SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE 4249 017710 022704 001334' CMP #TO10Q,R4 ;;; +003 DONE? 4250 017714 001416 BEQ 112$ ;;; +003 YES -- LEAVE 4251 017716 CALL ..NDEL ;;; +003 NO -- REMOVE THIS ENTRY FROM Q 017716 004737 045320' JSR PC,..NDEL 4252 017722 005764 000012 TST 12(R4) ;;; +003 TEST INDIRECT INDICATOR 4253 017726 003003 BGT 111$ ;;; +003 NOT INDIRECT -- GO ON 4254 017730 056474 000024 000026 BIS 24(R4),@26(R4) ;;; +003 INDIRECT -- DECLARE XFER COMPLETE 4255 017736 111$: 4256 017736 010400 MOV R4,R0 ;;; +003 SET UP TO 4257 017740 016001 000004 MOV 4(R0),R1 ;;; +003 RETURN CORE BLOCK 4258 017744 CALL ..DECB ;;; +003 RETURN IT 017744 004737 046010' JSR PC,..DECB 4259 017750 000755 BR 113$ ;;; +003 DO NEXT ENTRY IN Q 4260 ; 4261 017752 112$: 4262 017752 005037 001332' CLR TO10QC ;;; +003 DONE -- CLEAR CURRENT COUNTS 4263 017756 005037 001262' CLR .CPDV ;;; CLEAR CURRENT TO-10 DEVICE 4264 017762 013700 001270' MOV .CRHD,R0 ;;; GET CURRENT NODE 4265 017766 062700 000010 ADD #10,R0 ;;; POINT TO DATA AREA 4266 017772 010037 001266' MOV R0,.CRPB ;;; AND SET BUFFER POINTER. 4267 017776 005060 177776 CLR -2(R0) ;;; CLEAR ENTRY COUNT 4268 020002 016000 177774 MOV -4(R0),R0 ;;; GET LENGTH OF NODE 4269 020006 162700 000012 SUB #10.,R0 ;;; ADJUST, 4270 020012 010037 001264' MOV R0,.CRSZ ;;; AND SET BUFFER SIZE. 4271 020016 005037 001256' CLR .CRQZ ;;; NOTHING ENTERED YET. 4272 020022 012600 MOV (SP)+,R0 4273 020024 120$: ;;; +++005 4274 020024 105037 001401' CLRB TOXQIP ;;; [4.1.1035] RESET THE QUEUE INTERLOCK 4275 020030 CLEF$S #E.FPR2 ;;;TURN SECONDARY PROTOCOL OFF 020030 012746 000076 MOV #E.FPR2,-(SP) 020034 012746 MOV (PC)+,-(SP) 020036 037 002 .BYTE 31.,2 020040 104375 EMT 375 4276 020042 DTON$S ;;;ENABLE DTE20 020042 012746 000003 MOV #DF.ON,-(SP) 020046 012746 001011 MOV #400*2.+DR.DTE,-(SP) 020052 104375 EMT 375 4277 020054 103002 BCC 125$ ;;; [**] 4278 020056 000137 017342' JMP 87$ ;;; +++006 LOST COMM REGION 4279 020062 125$: 4280 020062 005702 TST R2 ;;; +++006 ACKNOWLEGE?? 4281 020064 001013 BNE 130$ ;;; +++006 NO -- GO ON 4282 020066 012760 177776 000002 MOV #-2,DXWD3(R0) ;;; +++006 ACK THE COMMAND 4283 020074 012760 014000 000010 MOV #DEP!EPTR!PRTOFF,TNAD1(R0) ;;; +++001 SET DEPOSIT 4284 020102 012760 000444 000012 MOV #DTEFLG,TNAD2(R0) ;;; +++006 START IT 4285 020110 CALL ..WFED ;;; [4.1.1121] WAIT FOR IT 020110 004737 047454' JSR PC,..WFED 4286 020114 130$: ;;; +++006 4287 020114 012715 000440 MOV #INTRON!TO10DB,@R5 ;;;ENABLE INTERRUPTS 4288 020120 .ENB0 ;;;ENABLE INTERRUPTS 020120 004737 045540' JSR PC,..ENB0 4289 020124 005237 001164' INC .ACKAL ;SEND ACK ALL 4290 020130 005037 005716' CLR .FEACT ;FE IS NOW AVAILABLE 4291 020134 000137 016562' JMP BTPRO ;WAIT FOR PROTOCOL REACTIVICATION. 4292 ; 4293 020140 QPROMS: 4294 020140 QIOW$ IO.WLB,1,2,0,0,0, BOOT -- BOOT PROTOCOL HANDLER MACRO M1113 03-APR-86 20:41 PAGE 81-6 SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE 020140 003 011 .BYTE 3,$$$ARG 020142 000400 .WORD IO.WLB 020144 000001 .WORD 1 020146 002 000 .BYTE 2,0 020150 000000 .WORD 0 020152 000000 .WORD 0 020154 020162' .WORD QPROAD 020156 000001 .WORD 1 020160 000000 .WORD 0 4295 020162 QPROAD: 4296 020162 000000 .WORD 0 BOOT -- BOOT PROTOCOL HANDLER MACRO M1113 03-APR-86 20:41 PAGE 82 SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE 4298 4299 .TITLE PF -- POWER FAIL HANDLER 4300 .SBTTL POWERFAIL HANDLER -- COPYRIGHT STATEMENT 4301 020164 IDENT$ 14,05 .IDENT /014050/ 4302 ; 4303 ; COPYRIGHT (C) 1975, 1984, 1985 BY 4304 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS. 4305 ; ALL RIGHTS RESERVED. 4306 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED 4307 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION 4308 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE- 4309 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. 4310 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED. 4311 ; 4312 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT 4313 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT 4314 ; CORPORATION. 4315 ; 4316 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS 4317 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL. 4318 ; 4319 ; MODULE: "POWER FAIL" 4320 ; 4321 ; VERSION: 14-05 4322 ; 4323 ; AUTHOR: R. MCLEAN 4324 ; 4325 ; DATE: 19 JUL 75 4326 ; 4327 ; 4328 ; THIS MODULE CONTAINS: 4329 ; 4330 ; 1 -- CODE TO SUPPORT POWER FAIL 4331 ; 4332 ; MODIFICATIONS: 4333 ; 4334 ; NO. DATE PROGRAMMER REASON 4335 ; --- ---- ---------- ------ 4336 ; 001 10-AUG-77 R. BELANGER WAIT FOR KL CROBAR TO 4337 ; SETTLE ON POWER RESTART 4338 ; 002 18-AUG-77 R. BELANGER FLAG POWER RESTART 4339 ; TCO 4.2205 08-MAR-79 R. BELANGER RESET SENADALL DATABASE 4340 ; ON POWER UP 4341 ; TCO 4.2249 09-MAY-79 R. BELANGER ALLOW POWER FAIL RECOVERY 4342 ; TO COMPLETE BEFORE NOTIFYING KL10 4343 ; MODIFY PARITY REGISTER INITIALIZATION 4344 ; NOT NOT ALTER CPU PRIORITY ON TRAP 4345 4347 .MCALL CALL,$DEF,.CRASH 4348 020164 $DEF PF -- POWER FAIL HANDLER MACRO M1113 03-APR-86 20:41 PAGE 83 POWERFAIL -- POWER DOWN 4351 .SBTTL POWERFAIL -- POWER DOWN 4352 4353 ;+ 4354 ; POWER FAILURE AND RECOVERY SERVICE 4355 ; 4356 ; WHEN A POWER FAILURE TRAP OCCURS, THE VOLATILE REGISTERS 4357 ; ARE SAVED AND THE TRAP VEECTOR FOR POWER UP IS SET. 4358 ; 4359 ; IF POWER FAIL INTERRUPTS A PRI 7 (I/O INITALIZE OR DTE 4360 ; EXAMINE/DEPOSIT) THEN .PFAIL IS SET AND RTI 4361 ; IS EXECUTED. ROUTINES WHICH BREAK DOWN FROM PRI7 4362 ; MUST CHECK TO SEE IF .PFAIL IS SET AND JUMP TO 4363 ; .PFRTN -- THIS WILL ALLOW THEM TO FINISH AND 4364 ; STILL PROTECT POWERFAIL FROM FAILING 4365 ; 4366 ; 4367 ; NOTE: POWERFAIL TRAP CANNOT BE INHIBITED. 4368 ; POWER FAIL TRAP SERVICE CAN NOT USE ROUTINES THAT INHIBIT 4369 ; INTERRUPTS TO AVOID RACE CONDITIONS 4370 ; 4371 ; NOTE: ALL MEMORY IS ASSUMED TO BE NON-VOLATILE (IT CANNOT BE 4372 ; SAVED IN THE TIME PERMITTED FOR POWER FAIL SAVE) 4373 ; 4374 ; NOTE: A KL10 INITIATED FRONT-END RELOAD SIMULATES A POWER-FAIL 4375 ; TRAP TO STOP THE FRONT-END 4376 ; 4377 ; POWER DOWN ENTRY -- CONTROL IS TRANSFERRED HERE (VIA POWER 4378 ; FAIL TRAP VECTOR) AT PRIORITY SEVEN. 4379 ; 4380 ; STACK SUMMARY: 4381 ; 4382 ; 0(SP) -- POWERFAIL TRAP PC 4383 ; 2(SP) -- POWERFAIL TRAP PS 4384 ; 4(SP) -- BEGINNING OF INTERRUPTED PROCESS STACK 4385 ;- 4386 4387 020164 .PWRDN:: 4388 020164 052737 006000 001012' BIS #EF.PFR!EF.CRI,.COMEF+2 ; +++002 ALWAYS FLAG POWER FAIL (ALWAYS!) 4389 020172 005237 011370' INC .PFDBG ;[**] 4390 020176 016646 000002 MOV 2(SP),-(SP) ;FIND THE PS 4391 020202 042716 177437 BIC #177437,@SP ;MASK OFF ALL BUT PRI 4392 020206 022726 000340 CMP #340,(SP)+ ;IS IT PRI 7? 4393 020212 001005 BNE 10$ ;NO -- THEN ACCEPT POWER FAIL 4394 020214 005237 001026' INC .PFAIL ;SET POWER FAIL ERROR 4395 020220 105237 001014' INCB .SERFG+0 ; +++001 LEST WE FORGET... 4396 020224 000006 RTT ;RETURN TO CALLER 4397 4398 020226 013746 000006 10$: MOV @#6,-(SP) ;SAVE LOW CORE 4399 020232 013746 000004 MOV @#4,-(SP) 4400 020236 012737 020312' 000004 MOV #20$,@#4 ;SET UP TO HALT IF FAKE POWER FAIL 4401 020244 012737 000340 000006 MOV #340,@#6 ;SET PRIORITY 7 IN ODD ADDRESS TRAP ADDRESS 4402 ; 4403 ; STACK SUMMARY: 4404 ; 4405 ; 0(SP) -- SAVED ABSOLUTE 4 4406 ; 2(SP) -- SAVED ABSOLUTE 6 4407 ; 4(SP) -- POWERFAIL TRAP PC PF -- POWER FAIL HANDLER MACRO M1113 03-APR-86 20:41 PAGE 83-1 POWERFAIL -- POWER DOWN 4408 ; 6(SP) -- POWERFAIL TRAP PS 4409 ; 10(SP) -- INTERRUPTED PROCESS STACK 4410 ; 4411 020252 005737 173000 TST .BM873 ;IF NOT POWER FAIL THIS WILL TRAP TO 4 4412 ; AND IMMEDIATELY HALT AT "20$" BELOW, 4413 ; IN WHICH CASE THE TRAP PS/PC WILL BE ON STACK 4414 020256 010046 MOV R0,-(SP) ;SAVE REGISTERS 4415 020260 010146 MOV R1,-(SP) 4416 020262 010246 MOV R2,-(SP) 4417 020264 010346 MOV R3,-(SP) 4418 020266 010446 MOV R4,-(SP) 4419 020270 010546 MOV R5,-(SP) 4420 020272 010637 001032' MOV SP,PWRXSP ;SAVE STACK REGISTER 4421 020276 012737 020314' 000024 MOV #PWR.UP,@#24 ;SET UP POWER UP TRAP VECTOR ADDRESS 4422 020304 012737 000006 001034' MOV #6,CROBAR ; +++001 SET UP CROBAR COUNTER 4423 020312 000000 20$: HALT 4424 ; 4425 ; CRASH (NON-POWERFAIL) STACK SUMMARY: 4426 ; 4427 ; 0(SP) -- BM873 ROM TRAP PC 4428 ; 2(SP) -- BM873 ROM TRAP PS 4429 ; 4(SP) -- SAVED ABSOLUTE 4 4430 ; 6(SP) -- SAVED ABSOLUTE 6 4431 ; 10(SP) -- POWERFAIL TRAP PC 4432 ; 12(SP) -- POWERFAIL TRAP PS 4433 ; 14(SP) -- INTERRUPTED PROCESS STACK 4434 ; 4435 ; THE TOP OF THIS STACK IS POINTED TO BY LOCATION 54 IN THE CRASH DUMP PF -- POWER FAIL HANDLER MACRO M1113 03-APR-86 20:41 PAGE 84 POWERFAIL -- POWER UP ENTRY 4437 .SBTTL POWERFAIL -- POWER UP ENTRY 4438 4439 ; 4440 ; 4441 ; POWER UP ENTRY 4442 ; 4443 020314 PWR.UP:: 4444 020314 013706 001032' MOV PWRXSP,SP ;RESTORE STACK POINTER 4445 020320 012737 020314' 000004 MOV #PWR.UP,@#4 ; +++001 MAKE BUS TIMEOUT TRAP TO "PWR.UP" 4446 020326 012737 004340 000006 MOV #4340,@#6 4447 020334 005337 001034' DEC CROBAR ; +++001 COUNT THIS ATTEMPT 4448 020340 003003 BGT 10$ ; +++001 ALL OK IF STILL .GT. 0 4449 020342 .CRASH CBR ; +++001 CRASH IF MORE THAN ONE MINUTE 020342 000004 IOT 020344 103 102 122 .ASCIZ /CBR/ 020347 000 4450 ; 4451 020350 10$: 4452 020350 013701 001366' MOV .PRDTE,R1 ; +++001 ADDRESS OF DTE20 TO R1 4453 020354 CALL 20$ ; +++001 WAIT FOR KL CROBAR 020354 004737 020474' JSR PC,20$ 4454 020360 CALL 20$ ; +++001 AND BE VERY SURE OF IT 020360 004737 020474' JSR PC,20$ 4455 020364 012761 000100 000032 MOV #DRESET,DAG2(R1) ; +++001 RESET THE DTE20 4456 020372 005037 001026' CLR .PFAIL ;CLEAR POWER FAIL FLAG 4457 020376 012737 177777 001030' MOV #-1,.PFIOW ;SET POWER FAIL BITS TO INTERRUPT ROUTINES 4458 020404 012605 MOV (SP)+,R5 ;RESTORE REGISTERS 4459 020406 012604 MOV (SP)+,R4 4460 020410 012603 MOV (SP)+,R3 4461 020412 012602 MOV (SP)+,R2 4462 020414 012601 MOV (SP)+,R1 4463 020416 012600 MOV (SP)+,R0 4464 020420 012637 000004 MOV (SP)+,@#4 ;RESTORE LOW CORE 4465 020424 012637 000006 MOV (SP)+,@#6 4466 020430 012737 020164' 000024 MOV #.PWRDN,@#24 ;SET UP POWER DOWN TRAP AGAIN 4467 020436 052737 000100 001126' BIS #KS.PFT,.KLITK ;FORCE POWER RESTART 4468 020444 012737 000401 001122' MOV #401,.NOERR ;SET NO ERROR OR HALT 4469 020452 CALL ..DTSP ;TURN OFF PROTOCOL TASKS 020452 004737 050226' JSR PC,..DTSP 4470 020456 105237 001124' INCB .TKTN ;TASK TERMINATION REQUEST 4471 020462 152737 000200 001014' BISB #EV.PF,.SERFG+0 ;INDICATE POWER FAIL & SIG EVENT 4472 020470 000137 015062' JMP ..INTX ;RETURN TO INTERRUPTED ROUTINE 4473 ; 4474 020474 20$: ; +++001 4475 020474 012700 000454 MOV #^D<5*60>,R0 ; +++001 WAIT FOR CROWBAR TO SETTLE (5 SECONDS) 4476 020500 30$: ; +++001 4477 020500 105737 177546 TSTB @#LKS ; +++001 CHECK WITH CLOCK 4478 020504 100375 BPL 30$ ; +++001 WAIT FOR TICK 4479 020506 105037 177546 CLRB @#LKS ; +++001 CLEAR CLOCK FLAG 4480 020512 077006 SOB R0,30$ ; +++001 WAIT THE FULL COUNT 4481 020514 005777 160644 TST @.PRSTA ; +++001 LOOK AT DTE20 STATUS REGISTER 4482 ; +++001 IF NOT THERE (CROBAR TRUE) TRAP 4483 ; +++001 TO "PWR.UP", ELSE GO ON 4484 020520 RETURN ; +++001 MADE IT -- RETURN 020520 000207 RTS PC PF -- POWER FAIL HANDLER MACRO M1113 03-APR-86 20:41 PAGE 85 POWERFAIL -- POWER FAIL RESTART 4486 .SBTTL POWERFAIL -- POWER FAIL RESTART 4487 4488 ; .PFAIL INDICATES POWER FAIL IN PROGRESS 4489 ; .PFIOW IS BIT ENCODED TO INDICATE POWER FAIL 4490 ; OCCURED AND POWER UP RECOVERY IS NECESSARY 4491 4492 020522 .PFRST:: 4493 020522 000005 RESET ; [**] DO A UNIBUS INIT 4494 020524 013746 000004 MOV @#4,-(SP) ; SAVE ABSOLUTE 4 (NEXM STOP) 4495 020530 010046 MOV R0,-(SP) ; SAVE REGISTERS 4496 020532 010146 MOV R1,-(SP) 4497 020534 010246 MOV R2,-(SP) 4498 020536 010346 MOV R3,-(SP) 4499 020540 010446 MOV R4,-(SP) 4500 020542 010546 MOV R5,-(SP) 4501 020544 012737 177777 001030' MOV #-1,.PFIOW ; INDICATE POWER/FAIL TTY ENABLE 4502 020552 012702 002612' MOV #.SNDLP,R2 ; [4.2205] INIT SENDALL POINTER 4503 020556 012703 000004 MOV #4,R3 ; [4.2205] INIT SENDALL COUNTER 4504 020562 005022 CLR (R2)+ ; [4.2205] CLEAR SENDALL INDEX 4505 020564 10$: 4506 020564 005062 000010 CLR 10(R2) ; [4.2205] CLEAR SENDALL COUNT 4507 020570 012200 MOV (R2)+,R0 ; [4.2205] GET BUFFER POINTER 4508 020572 001402 BEQ 20$ ; [4.2205] GO ON IF NULL 4509 020574 CALL ..DECN ; [4.2205] DEALLOCATE THE BUFFER 020574 004737 046004' JSR PC,..DECN 4510 020600 20$: 4511 020600 077307 SOB R3,10$ ; [4.2205] LOOP THROUGH ALL 4 NODES 4512 020602 CALL .DHTMO ; [4.2205] DO TIMEOUT 020602 004737 042030' JSR PC,.DHTMO 4513 020606 CALL .DLTMO 020606 004737 041520' JSR PC,.DLTMO 4514 020612 CALL .DMTMO 020612 004737 042336' JSR PC,.DMTMO 4515 020616 005237 006244' INC .LPPFL 4516 020622 005237 005736' INC .CRPFL 4517 020626 005037 002606' CLR .ABCNT 4518 020632 005037 002610' CLR .ABFLG 4519 020636 105037 001400' CLRB .PRPSE 4520 020642 005037 001030' CLR .PFIOW ; CLEAR POWER FAIL FLAG 4521 020646 005037 011370' CLR .PFDBG ;[**] 4522 020652 012704 000020 MOV #16.,R4 ; SET UP TO RESTORE PARITY ERROR REGISTERS 4523 020656 012705 172100 MOV #.PARRG,R5 ; SET UP THE ADDRESS OF THE REGISTERS 4524 020662 012737 020742' 000004 MOV #PARLOT,@#4 ; [4.2249] SET UP 4 TO TRAP TO "PARLOT" 4525 4526 .ENABL LSB 4527 4528 020670 PARLOA: 4529 020670 012725 000001 MOV #1,(R5)+ ; [4.2249] ENABLE PARITY CHECKING 4530 020674 10$: 4531 020674 077403 SOB R4,PARLOA ; [4.2249] LOOP THROUGH ALL REGISTERS 4532 020676 012605 MOV (SP)+,R5 ; [4.2249] DONE -- RESTORE REGISTERS 4533 020700 012604 MOV (SP)+,R4 4534 020702 012603 MOV (SP)+,R3 4535 020704 012602 MOV (SP)+,R2 4536 020706 012601 MOV (SP)+,R1 4537 020710 012600 MOV (SP)+,R0 4538 020712 012637 000004 MOV (SP)+,@#4 ; [4.2249] RESTORE LOW CORE PF -- POWER FAIL HANDLER MACRO M1113 03-APR-86 20:41 PAGE 85-1 POWERFAIL -- POWER FAIL RESTART 4539 020716 042737 004000 001012' BIC #EF.PFR,.COMEF+2 ; [4.2249] CLEAR POWERFAIL IN PROGRESS FLAG 4540 020724 012737 000100 177546 MOV #.INTEN,@#LKS ; [4.2249] ENABLE CLOCK 4542 020732 012777 000400 160424 MOV #TO10DB,@.PRSTA ; [4.2249] RING THE DOORBELL TO TELL 10 WE ARE HERE AND READY 4544 020740 RETURN ; [4.2249] RETURN TO CALLER 020740 000207 RTS PC 4545 ; 4546 ; HERE ON A TRAP FROM A NON-EXISTENT PARITY REGISTER 4547 ; 4548 020742 PARLOT: 4549 020742 032626 BIT (SP)+,(SP)+ ; [4.2249] FLUSH THE TRAP PS/PC 4550 020744 000753 BR 10$ ; [4.2249] AND CONTINUE THROUGH ALL REGISTERS 4551 ; 4552 4553 .DSABL LSB PF -- POWER FAIL HANDLER MACRO M1113 03-APR-86 20:41 PAGE 86 POWERFAIL -- POWER FAIL RESTART 4555 4556 4557 .TITLE DMDTE - DTE DIRECTIVES MODULE 4558 .SBTTL DTE DIRECTIVES -- COPYRIGHT STATEMENT 4559 020746 IDENT$ RSX$$V,RSX$$E,RSX$$F .IDENT /A15500/ 4560 ; 4561 ; COPYRIGHT (C) 1975, 1984, 1985 BY 4562 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS. 4563 ; ALL RIGHTS RESERVED. 4564 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED 4565 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION 4566 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE- 4567 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. 4568 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED. 4569 ; 4570 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT 4571 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT 4572 ; CORPORATION. 4573 ; 4574 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS 4575 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL. 4576 ; 4577 ; MODULE: "DTE20" DIRECTIVE 4578 ; 4579 ; VERSION: 14-45 4580 ; 4581 ; AUTHOR: R. MCLEAN 4582 ; 4583 ; DATE: 19 MAR 75 4584 ; 4585 ; 4586 ; THIS MODULE CONTAINS: 4587 ; 4588 ; 1 -- CODE TO SERVICE THE DTE20 EMT SERVICE 4589 ; 4590 ; MODIFICATIONS: 4591 ; 4592 ; NO. DATE PROGRAMMER PURPOSE 4593 ; --- ---- ---------- ------- 4594 ; 001 14-MAR-77 R. BELANGER CONDITIONALLY REMOVE UNUSED 4595 ; DTE-20 EMT SERVICES 4596 ; 002 01-APR-77 A. PECKHAM FIX BUG IN "$DTEON" 4597 ; 003 18-AUG-77 R. BELANGER FIX "$DTEON" TO RETURN CORRECT STATUS 4598 ; AND NOT START PRIMARY PROTOCOL IF 4599 ; "..SWED" FAILS. 4600 ; 004 21-FEB-78 R. BELANGER FIX "$DTEON" TO SET UP 4601 ; "PROTBL" PROPERLY. 4602 ; TCO 4.2107 06-DEC-78 R. BELANGER INITIALIZE KEEP-ALIVE DATA-BASE 4603 ; IN "$DTEON". 4604 ; TCO 4.1.1105 11-MAR-80 R. BELANGER CHANGE "EF.PR1" RECOGNITION 4605 ; TCO 4.1.1121 19-MAR-80 R. BELANGER SUPPORT BLOCKED DTE-20 4606 ; TCO 4.1.1137 05-APR-80 R. BELANGER REMOVE RESTRICTED DTE-20 SUPPORT 4607 ; 4608 ;19-JAN-83 TCO 6.1508 D. WEAVER 4609 ; GET THE CPU NUMBER OF THE KL WE ARE RUNNING AND STORE IN .KLCPU 4610 ; SO WE CAN DO WARM RESTART ON SMP SYSTEMS (USED BY KLINIT) DMDTE - DTE DIRECTIVES MODULE MACRO M1113 03-APR-86 20:41 PAGE 86-1 DTE DIRECTIVES -- COPYRIGHT STATEMENT 4611 ; 4612 4613 ; MACRO CALLS 4614 4615 .MCALL CALL,RETURN,MFPI,MTPI,MFPS,MTPS,.CRASH,.INH,.ENB,$DEF 4616 4617 020746 $DEF DMDTE - DTE DIRECTIVES MODULE MACRO M1113 03-APR-86 20:41 PAGE 87 DTE20 EMT DISPATCH DECODER 4619 .SBTTL DTE20 EMT DISPATCH DECODER 4620 ; 4621 ; CALLED BY EMT DISPATCH 4622 ; THIS ROUTINE DECODES THE SPECIFIC DTE FUNCTION CODE 4623 ; AND DISPATCHES TO THE CORRECT FUNCTION 4624 ; 4625 ; ENTRY CONDITIONS: 4626 ; 4627 ; R1 -- ADDRESS OF DPB 4628 ; R2 -- SIZE OF DPB 4629 ; R3 -- DIRECTIVE IDENTIFICATION CODE 4630 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK) 4631 ; 4632 ; REGISTERS SAVED AND RESTORED BY EMT SERVICE 4633 ; 4634 ; R0,R1,R2,R3,R4,R5 4635 ; 4636 ; REGISTERS FOR USER AND DOES NOT REQUIRE EMT SERVICE 4637 ; ROUTINES TO SAVE EMT'S REGISTERS. 4638 ; 4639 ; EXIT TO DTE EMT SERVICE ROUTINE CONDITIONS: 4640 ; 4641 ; 3(SP) -- FUNCTION CODE PLUS HIGH ORDER BYTE OF SECOND WORD OF DPB 4642 ; R0 -- POINTER TO EXAMINE/DEPOSIT ADDRESSES 4643 ; R1 -- WORD 5 OF DPB 4644 ; R2 -- WORD 3 OF DPB 4645 ; R3 -- WORD 4 OF DPB 4646 ; R4 -- ADDRESS OF DPB 4647 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK) 4648 ; 4649 ; 4650 ; 4651 020746 .D.DTE:: 4652 020746 005046 CLR -(SP) 4653 020750 005046 CLR -(SP) 4654 020752 010146 MOV R1,-(SP) ;SAVE POINTER TO DPB FOR R4 4655 020754 MFPS (R1)+,R0 ;PUT THE FUNCTION CODE IN R0 020754 012100 MOV (R1)+,R0 4656 020756 150066 000002 BISB R0,2(SP) 4657 020762 105000 CLRB R0 4658 020764 010066 000004 MOV R0,4(SP) 4659 020770 010204 MOV R2,R4 ;SAVE SIZE OF DPB 4660 020772 005046 CLR -(SP) ;SET DEFAULT PROCESSOR NUMBER 4661 020774 162704 000002 SUB #2,R4 ;CHECK COUNT OF PARAMETERS 4662 021000 001407 BEQ 10$ ;IF ZERO REGISTERS DON'T NEED BE SET UP (NO PARAMS) 4663 021002 MFPS (R1)+,R2 ;MOVE THE CPU ADDRESS 021002 012102 MOV (R1)+,R2 4664 021004 MFPS (R1)+,R3 ;MOVE IN OFFSET ADDRESS TO COMM AREA 021004 012103 MOV (R1)+,R3 4665 021006 162704 000002 SUB #2,R4 ;CHECK TO SEE IF CPU PARAMETER 4666 021012 001402 BEQ 10$ ;NO -- DON'T ATTEMPT TO SET REGISTER 4667 021014 MFPS (R1)+,@SP ;YES -- SET CPU NUMBER 021014 012116 MOV (R1)+,@SP 4668 021016 001031 BNE CPUERR ; [4.1.1137] ERROR IF NOT CPU 0 4669 021020 10$: 4670 021020 012601 MOV (SP)+,R1 ;SET CPU NUMBER 4671 021022 012604 MOV (SP)+,R4 DMDTE - DTE DIRECTIVES MODULE MACRO M1113 03-APR-86 20:41 PAGE 87-1 DTE20 EMT DISPATCH DECODER 4672 021024 012700 001244' MOV #PROTBL,R0 ; [4.1.1137] FIND PROCESSOR BLOCK 4673 021030 006316 ASL @SP ;MULTIPLY FUNCTION CODE BY 2 TO FORM OFFSET 4674 021032 062716 021042' ADD #DTEDSP-2,@SP ;POINT INTO DISPATCH TABLE 4675 021036 017616 000000 MOV @(SP),@SP 4676 021042 000136 JMP @(SP)+ ;GO TO ROUTINE AND REMOVE ELEMENTFROM STACK 4677 ; 4678 021044 021104' DTEDSP: .WORD $DORBL ;RING DORBELL (FUNCTION CODE 1) 4679 021046 021106' .WORD $DTEOF ;TURN OFF DTE20 (FUNCTION CODE 2) 4680 021050 021114' .WORD $DTEON ;TURN ON DTE20 (FUNCTION CODE 3) 4681 021052 021536' .WORD $DPMYG ;DEPOSIT MY GENERAL SECTION (FUNCTION CODE 4) 4682 021054 021570' .WORD $EXMYG ;EXAMINE MY GENERAL SECTION (FUNCTION CODE 5) 4683 021056 021600' .WORD $EXMYN ;EXAMINE MY SECTION FOR CPU N (FUNCTION CODE 6) 4684 021060 021606' .WORD $DPMYN ;DEPOSIT MY SECTION FOR CPU N (FUNCTION CODE 7) 4685 021062 021614' .WORD $EXHSG ;EXAMINE HIS GENERAL COMM (FUNCTION CODE 10) 4686 021064 021622' .WORD $EXHSM ;EXAMINE HIS SECTION FOR ME (FUNCTION CODE 11) 4687 021066 021630' .WORD $KLDFR ;START KL10 DIAGNOSTIC FUNCTION READ 4688 021070 021770' .WORD $KLDFW ;START KL10 DIAGNOSTIC FUNCTION WRITE 4689 021072 021746' .WORD $KLDFX ;START KL10 DIAGNOSTIC FUNCTION (FUNCTION CODE 12) 4690 021074 022102' .WORD $PRVEX ;PRIVILEDGED EXAMINE (FUNCTION 13) 4691 021076 022066' .WORD $PRVDP ;PRIVILEDGED DEPOSIT (FUNCTION 14) 4692 021100 022136' .WORD $RWDRG ;READ/WRITE DIAGNOSTIC REGISTER (FUNCTION 15) 4693 ; 4694 021102 CPUERR: 4695 021102 104776 TRAP DE.02 ; ILLEGAL CPU 4696 ; DMDTE - DTE DIRECTIVES MODULE MACRO M1113 03-APR-86 20:41 PAGE 88 $DORBL -- RING THE KL-10 DOORBELL 4698 .SBTTL $DORBL -- RING THE KL-10 DOORBELL 4699 4700 ;+ 4701 ; $DORBL -- RING THE DOORBELL OF THE KL-10 SPECIFIED 4702 ; 4703 ; * * * U N S U P P O R T E D F U N C T I O N * * * 4704 ; 4705 ;- 4706 4707 021104 $DORBL:: 4724 4725 021104 104635 TRAP DE.99 ; +++001 THIS ISN'T HERE 4726 ; DMDTE - DTE DIRECTIVES MODULE MACRO M1113 03-APR-86 20:41 PAGE 89 $DTEOF -- TURN THE DTE20 OFF 4729 .SBTTL $DTEOF -- TURN THE DTE20 OFF 4730 4731 ;+ 4732 ; $DTEOF -- TURN OFF THE DTE20 4733 ; 4734 ; CALLING SEQUENCE: 4735 ; 4736 ; JMP $DTEOF 4737 ; 4738 ; EXIT CONDITIONS: 4739 ; 4740 ; R0 --1 TO INDICATE SUCCESS 4741 ; CC-C CLEAR TO INDICATE SUCCESS 4742 ; 4743 ; ERROR CONDITIONS: NONE 4744 ; 4745 ; REGISTERS SAVED AND RESTORED BY EMT SERVICE 4746 ;- 4747 4748 021106 $DTEOF:: 4761 021106 CALL ..DTP2 ;+ START UP SECONDARY PROTOCOL. 021106 004737 050244' JSR PC,..DTP2 4762 021112 104401 TRAP DR.01 ;RETURN STATUS OK 4763 ; DMDTE - DTE DIRECTIVES MODULE MACRO M1113 03-APR-86 20:41 PAGE 90 $DTEON -- TURN THE DTE20 ON 4765 .SBTTL $DTEON -- TURN THE DTE20 ON 4766 4767 ;+ 4768 ; $DTEON -- TURN ON THE DTE20 4769 ; THIS ROUTINE WILL SET UP THE TABLES NECESSARY TO 4770 ; INITALIZE THE COMMUNICATON BETWEEN THE PDP10 AND PDP11'S 4771 ; 4772 ; CALLING SEQUENCE: 4773 ; 4774 ; JMP $DTEON 4775 ; 4776 ; EXIT CONDITIONS: 4777 ; 4778 ; R0 --1 TO INDICATE SUCCESS 4779 ; CC-C CLEAR TO INDICATE SUCCESS 4780 ; 4781 ; ERROR CONDITIONS: 4782 ; 4783 ; R0 -2 -- E BOX STOPPED 4784 ; CC-C SET 4785 ; 4786 ; REGISTERS SAVED AND RESTORED BY EMT SERVICE 4787 ;- 4788 4789 021114 $DTEON:: 4790 021114 010546 MOV R5,-(SP) 4791 021116 011000 MOV (R0),R0 ;;; [4.1.1137] FIND THE COMMON DTE20 4792 021120 005001 CLR R1 ;;;SET UP TO FIND PROCESSOR NUMBER 4793 021122 005002 CLR R2 ;;;START TRANSFER OF ABS WORD 0 OF EPT (MY PROCESSOR NUMBER 4794 021124 012703 001354' MOV #DEXTM3,R3 ;;;SET UP ADDRESS TO STORE WORDS 4795 021130 CALL ..SWED ;;; [4.1.1121] WAIT FOR EXAMINE/DEPOSIT 021130 004737 050126' JSR PC,..SWED 4796 021134 103417 BCS 1$ ;;;E BOX STOP 4797 021136 011304 MOV @R3,R4 ;;;YES --FIND OFFSET TO MY R/W AREA 4798 021140 113702 001357' MOVB @#DEXTM2+1,R2 ;;;FIND THE PROCESSOR NUMBER 4799 ;;; PROCESSOR NUMBER TO LOW ORDER BITS 4800 021144 042702 177740 BIC #^C37,R2 ;;;MASK OFF JUNK(0.-31. LEGAL) 4801 021150 010237 001240' MOV R2,PRMEMN ;;;SAVE PROCESSOR NUMBER 4802 021154 005202 INC R2 ;;;FIND COMMUNICATIONS VIRTUAL 2 4803 021156 010237 001236' MOV R2,COMBSE ;;;SAVE BASE OF COMMUNICATIONS AREA 4804 021162 060402 ADD R4,R2 ;;;ADD OFFSET TO BASE OF COMM AREA 4805 021164 010237 001242' MOV R2,DEPOF ;;;SET CORRECT OFFSETT 4806 021170 CALL ..SWED ;;; [4.1.1121] WAIT FOR TRANSFER 021170 004737 050126' JSR PC,..SWED 4807 021174 1$: 4808 021174 103555 BCS 80$ ;;; +++003 4809 021176 2$: 4810 021176 013705 001356' MOV @#DEXTM2,R5 ;;;PICK UP THE NUMBER OF 8 TM BLOCKS 4811 021202 042705 177770 BIC #177770,R5 ;;;FIND THE NUMBER OF 8 WORD BLOCKS IN MY AREA 4812 021206 162705 000002 SUB #2,R5 ;;;ACCOUNT FOR MY GENERAL SECTION 4813 021212 010246 MOV R2,-(SP) 4814 021214 010546 MOV R5,-(SP) ;;;SAVE COUNT OF BLOCKS 4815 021216 062702 000002 ADD #CPUNUM,R2 ;;;[TCO?] GET THE CPU # OF OUR KL 4816 021222 CALL ..SWED ;;;WAIT FOR TRANSFER 021222 004737 050126' JSR PC,..SWED 4817 021226 113737 001354' 001176' MOVB DEXTM3,.KLCPU ;;;SAVE CPU NUMBER FOR KLINIT 4818 021234 113737 001360' 001177' MOVB DEXTM1,.KLMON ;;;SAVE MONITOR TYPE (FOR FUTURE) DMDTE - DTE DIRECTIVES MODULE MACRO M1113 03-APR-86 20:41 PAGE 90-1 $DTEON -- TURN THE DTE20 ON 4819 021242 16$: 4820 ;;; +++002 4821 021242 062766 000020 000002 ADD #FORPRO,2(SP) ;;;LOOK AT A COMMUNICATIONS AREA TO ANOTHER PROCESSOR 4822 021250 016602 000002 MOV 2(SP),R2 4823 021254 CALL ..SWED ;;; [4.1.1121] WAIT FOR TRANSFER 021254 004737 050126' JSR PC,..SWED 4824 021260 103523 BCS 80$ ;;; +++003 E BOX STOPPED 4825 021262 011304 MOV @R3,R4 ;;;FIND PROCESSOR NUMBER 4826 021264 012705 001244' MOV #PROTBL,R5 ;SET INITIAL POINTER 4827 021270 042704 177770 BIC #177770,R4 ;;;MASK OFF JUNK 4828 4835 4836 021274 19$: 4837 021274 013704 001356' MOV @#DEXTM2,R4 ;;;FIND NUMBER OF 8 WORD BLOCS 4838 021300 042704 177770 BIC #177770,R4 ;;;MASK OFF POSSIBLE GARBAGE 4839 021304 160416 SUB R4,@SP ;;;UPDATE COUNT OF BLOCKS 4840 021306 005015 CLR @R5 ;;;SET UP TO CLEAR TABLE IF NO DTE 4841 021310 013704 001360' MOV @#DEXTM1,R4 ;;;PICK UP DTE NUMBER 4842 021314 032704 000004 BIT #4,R4 ;;;DTE HERE? 4843 021320 001422 BEQ 20$ ;;;NO -- DON'T ENTER IN TABLE 4844 021322 000304 SWAB R4 ;;;MAKE MOD 40 (8) 4845 021324 006004 ROR R4 4846 021326 006004 ROR R4 4847 021330 006004 ROR R4 4848 021332 042704 177637 BIC #177637,R4 ;;;MASKOFF JUNK 4849 021336 062704 174400 ADD #174400,R4 ;;;POINT TO FIRST BLOCK OF DTE'S 4850 021342 020437 001366' CMP R4,.PRDTE ;;;PRIMARY DTE? 4851 021346 001002 BNE 10$ ;;;NO -- DON'T SET TABLE POINTER 4852 021350 010537 001362' MOV R5,.PRADR ;;;SAVE TABLE OFFSET 4853 021354 10$: 4854 021354 010415 MOV R4,@R5 ;;;SET DTE ADDRESS IN TABLE 4855 021356 005014 CLR @R4 ;;; [4.1.1105] SET UP DELAY COUNTER 4856 021360 012764 000040 000034 MOV #INTRON,STATD(R4) ;;;YES -- ENABLE INTERRUPT ON IT 4857 021366 20$: 4858 021366 010265 000002 MOV R2,EMYN(R5) ;;;SET THE ADDRESS OF EXAMINE MY AREA FOR N 4859 ;;;MAKE ADDRESS OF THE ADDRESS OF DEPOSIT MY AREA FOR N 4860 021372 010265 000004 MOV R2,DMYN(R5) ;;;STORE IT 4861 021376 163765 001242' 000004 SUB DEPOF,DMYN(R5) ;;;RESTORE ADDRESS FOR EXAMINE OF THIS BLOCK 4862 021404 062702 000001 ADD #PROPNT-FORPRO,R2 ;;;READ POINTER TO HIS COMM AREA 4863 021410 CALL ..SWED ;;; [4.1.1121] WAIT FOR EXAMINE/DEPOSIT 021410 004737 050126' JSR PC,..SWED 4864 021414 103445 BCS 80$ ;;; +++003 E BOX STOPPED 4865 021416 011302 MOV @R3,R2 ;;;FIND THE EXAMINE ADDRESS 4866 021420 063702 001236' ADD COMBSE,R2 ;;;ADD OFFSET TO COMMON AREA 4867 021424 010265 000006 MOV R2,EHSG(R5) ;;;SET EHSG ADDRESS IN TABLE 4868 021430 062702 000020 ADD #FORPRO,R2 ;;;POINT TO HIS FIRST TABLE FOR OTHER PROCESSORS 4869 021434 50$: 4870 021434 CALL ..SWED ;;; [4.1.1121] WAIT FOR EXAMINE/DEPOSIT 021434 004737 050126' JSR PC,..SWED 4871 021440 103433 BCS 80$ ;;; +++003 4872 021442 123713 001240' CMPB PRMEMN,@R3 ;;;SAME PROCESSOR NUMBER? 4873 021446 001411 BEQ 60$ ;;;YES -- FOUND MY ENTRY 4874 021450 013704 001356' MOV @#DEXTM2,R4 ;;;NO -- FIND NEXT ENTRY IN LIST 4875 021454 042704 177770 BIC #177770,R4 ;;;IT IS IN 8 WORD INCREMENTS 4876 021460 006304 ASL R4 ;;;SO IT MUST BE SHIFTED LEFT 3 BITS 4877 021462 006304 ASL R4 ;;; 4878 021464 006304 ASL R4 ;;; DMDTE - DTE DIRECTIVES MODULE MACRO M1113 03-APR-86 20:41 PAGE 90-2 $DTEON -- TURN THE DTE20 ON 4879 021466 060402 ADD R4,R2 ;;;READ NEXT BLOCK 4880 021470 000761 BR 50$ ;;;AND TRY AGAIN 4881 ; 4882 021472 60$: 4883 021472 010265 000010 MOV R2,EHSM(R5) ;;;STORE EHSM ADDRESS 4884 021476 011605 MOV @SP,R5 ;;;DONE ALL BLOCKS?? 4885 021500 101260 BHI 16$ ;;; +++002 NO -- TRY NEXT BLOCK 4886 021502 70$: 4887 021502 112737 000005 001416' MOVB #.KALSC,.KPAC+0 ;;; [4.2107] INIT KEEP-ALIVE TIMER 4888 021510 112737 000001 001417' MOVB #1,.KPAC+1 ;;; [4.2107] AND RETRY COUNTER 4889 021516 013737 001404' 001412' MOV KPAL0,OKPAL0 ;;; [4.2107] INIT LAST KEEP ALIVE COUNT 4890 021524 CALL ..DTP1 ;;;START THE PRIMARY PROTOCOL TASK 021524 004737 050274' JSR PC,..DTP1 4891 021530 80$: ;;; +++003 4892 021530 012605 MOV (SP)+,R5 ;;; +++003 RESTORE R5 4893 021532 000137 013710' JMP .DR.NS ;RETURN STATUS IN R0 4894 ; DMDTE - DTE DIRECTIVES MODULE MACRO M1113 03-APR-86 20:41 PAGE 91 $DPMYG -- DEPOSIT INTO MY GENERAL SECTION 4896 .SBTTL $DPMYG -- DEPOSIT INTO MY GENERAL SECTION 4897 4898 ;+ 4899 ; $DPMYG -- DEPOSIT INTO MY GENERAL SECTION WITH PROCESSOR N 4900 ; 4901 ; ENTRY CONDITIONS: 4902 ; 4903 ; R2 -- ADDRESS OF PDP-10 LOCATION TO TRANSFER RELATIVE TO MY GEN REGION 4904 ; R3 -- ADDRESS OF PDP-11 CORE ADDRESS TO WRITE FROM 4905 ; CALLING SEQUENCE: 4906 ; 4907 ; JMP $DPMYG 4908 ; 4909 ; EXIT CONDITIONS: 4910 ; 4911 ; R0 -- +1 TRANSFER COMPLETED 4912 ; CC-C CLEAR -- TRANSFER COMPLETED 4913 ; 4914 ; ERROR CONDITIONS: 4915 ; 4916 ; CC-C SET 4917 ; 4918 ; R0 -2 -- E BOX STOPPED 4919 ; R0 -3 -- SECONDARY PROTOCOL IN USE 4920 ; 4921 ; REGISTERS SAVED AND RESTORED BY EMT SERVICE 4922 ;- 4923 4924 021536 $DPMYG:: 4925 021536 005001 CLR R1 4926 021540 DPCMN: 4927 021540 052701 010000 BIS #DEP,R1 ;;;SET DEPOSIT BIT IN ADDRESS WORD 4928 021544 CMEDP: 4929 021544 005737 001012' TST .COMEF+2 ;;; [4.1.1105] PRIMARY PROTOCOL RUNNING? 4930 021550 100006 BPL DPMSEP ;;; [4.1.1105] NO -- ERROR 4931 021552 011000 MOV @R0,R0 ;;;FIND DTE20 ADDRESS 4932 021554 CALL ..SWED ;;; [4.1.1121] WAIT FOR EXAMINE/DEPOSIT 021554 004737 050126' JSR PC,..SWED 4933 021560 103401 BCS DPSEC ;;;ERROR -2 4934 021562 104401 TRAP DR.01 4935 ; 4936 021564 DPSEC: 4937 021564 104776 TRAP DE.02 ;E BOX STOPPED 4938 ; 4939 021566 DPMSEP: 4940 021566 104775 TRAP DE.03 ;SECONDARY PROTOCOL IN USE 4941 ; DMDTE - DTE DIRECTIVES MODULE MACRO M1113 03-APR-86 20:41 PAGE 92 $EXMYG -- EXAMINE MY GENERAL SECTION 4943 .SBTTL $EXMYG -- EXAMINE MY GENERAL SECTION 4944 4945 ;+ 4946 ; $EXMYG -- EXAMINE MY (PDP-11) GENERAL SECTION 4947 ; 4948 ; ENTRY CONDITIONS: 4949 ; 4950 ; R2 -- ADDRESS OF A PDP10 ADDRESS TO EXAMINE RELATIVE TO THE BASE OF MY GENERAL SECTION 4951 ; R3 -- ADDRESS OF THE THREE WORD BLOCK TO TRANSFER TO 4952 ; 4953 ; CALLING SEQUENCE: 4954 ; 4955 ; JMP $EXMYG 4956 ; 4957 ; EXIT CONDITIONS: 4958 ; 4959 ; R0 -- +1 SUCCESS 4960 ; CC-C CLEAR -- SUCCESS 4961 ; 4962 ; ERROR CONDITIONS: 4963 ; 4964 ; CC-C SET 4965 ; 4966 ; R0 -2 -- E BOX STOPPED 4967 ; R0 -3 -- SECONDARY PROTOCOL IN USE 4968 ; 4969 ; REGISTERS SAVED AND RESTORED BY EMT SERVICE 4970 ;- 4971 4972 021570 $EXMYG:: 4973 021570 063702 001242' ADD DEPOF,R2 ;ADD DEPOSIT OFFSET TO EXAMINE ADDRESS 4974 021574 EXCMN: 4975 021574 005001 CLR R1 ;;;CLEAR HIGH ORDER 10 ADDRESS (FORCES EXAMINE) 4976 021576 000762 BR CMEDP 4977 ; DMDTE - DTE DIRECTIVES MODULE MACRO M1113 03-APR-86 20:41 PAGE 93 $EXMYN -- EXAMINE MY SECTION FOR PROCESSOR N 4979 .SBTTL $EXMYN -- EXAMINE MY SECTION FOR PROCESSOR N 4980 4981 ;+ 4982 ; $EXMYN -- EXAMINE MY SECTION FOR COMMUNICATING WITH PROCESSOR N 4983 ; 4984 ; ENTRY CONDITIONS: 4985 ; 4986 ; R2 -- ADDRESS WORD WITHIN REGION TO EXAMINE 4987 ; R3 -- PDP-11 CORE ADDRESS 4988 ; 4989 ; CALLING SEQUENCE: 4990 ; 4991 ; JMP $EXMYN 4992 ; 4993 ; EXIT CONDITIONS: 4994 ; 4995 ; R0 -- +1 - SUCCESS 4996 ; CC-C CLEAR -- SUCCESS 4997 ; 4998 ; ERROR CONDITIONS: 4999 ; 5000 ; CC-C SET 5001 ; R0 -1 -- ILLEGAL CPU NUMBER 5002 ; R0 -2 -- E BOX STOPPED 5003 ; R0 -3 -- SECONDARY PROTOCOL IN USE 5004 ; 5005 ; REGISTERS SAVED AND RESTORED BY EMT SERVICE 5006 ;- 5007 5008 021600 $EXMYN:: 5009 021600 066002 000002 ADD EMYN(R0),R2 ;SET CALCULATED ADDRESS TO COMM AREA 5010 021604 000773 BR EXCMN ;GO TO COMMON AREA 5011 ; DMDTE - DTE DIRECTIVES MODULE MACRO M1113 03-APR-86 20:41 PAGE 94 $DPMYN -- DEPOSIT INTO MY SECTION FOR COMM WITH PROCESSOR N 5013 .SBTTL $DPMYN -- DEPOSIT INTO MY SECTION FOR COMM WITH PROCESSOR N 5014 5015 ;+ 5016 ; $DPMYN -- DEPOSIT INTO MY SECTION FOR COMMUNICATING WITH PROCESSOR N 5017 ; 5018 ; ENTRY CONDITIONS: 5019 ; 5020 ; R2 -- ADDRESS WORD WITHIN REGION TO DEPOSIT 5021 ; R3 -- ADDRESS IN PDP-11 TO TRANSFER FROM 5022 ; 5023 ; CALLING SEQUENCE: 5024 ; 5025 ; JMP $DPMYN 5026 ; 5027 ; EXIT CONDITIONS: 5028 ; 5029 ; R0 -- +1 -SUCCESS 5030 ; CC-C CLEAR - SUCCESS 5031 ; 5032 ; ERROR CONDITIONS: 5033 ; 5034 ; CC-C SET 5035 ; R0 -1 -- ILLEGAL CPU NUMBER 5036 ; R0 -2 -- E BOX STOPPED 5037 ; R0 -3 -- SECONDARY PROTOCOL IN USE 5038 ; 5039 ; REGISTERS SAVED AND RESTORED BY EMT SERVICE 5040 ;- 5041 5042 021606 $DPMYN:: 5043 021606 066002 000004 ADD DMYN(R0),R2 ;FIND CORRECT ADDRESS IN COMMON AREA 5044 021612 000752 BR DPCMN ;DEPOSIT IN COMMON AREA 5045 ; DMDTE - DTE DIRECTIVES MODULE MACRO M1113 03-APR-86 20:41 PAGE 95 $EXHSG -- EXAMINE HIS GENERAL COMMUNICATION SECTION 5047 .SBTTL $EXHSG -- EXAMINE HIS GENERAL COMMUNICATION SECTION 5048 5049 ;+ 5050 ; $EXHSG -- EXAMINE HIS GENERAL COMMUNICATION SECTION 5051 ; 5052 ; ENTRY CONDITIONS: 5053 ; 5054 ; R2 -- WORD NUMBER IN HIS GENERAL SECTION 5055 ; R3 -- ADDRESS TO STORE EXAMINE 5056 ; 5057 ; CALLING SEQUENCE: 5058 ; 5059 ; JMP $EXHSG 5060 ; 5061 ; EXIT CONDITIONS: 5062 ; 5063 ; R0 -- +1 - SUCCESS 5064 ; CC-C CLEAR - SUCCESS 5065 ; 5066 ; ERROR CONDITIONS: 5067 ; 5068 ; R0 -1 -- ILLEGAL CPU NUMBER 5069 ; R0 -2 -- EBOX STOPPED 5070 ; R0 -3 -- SECONDARY PROTOCOL IN USE 5071 ; 5072 ; CC-C SET 5073 ; 5074 ; REGISTERS SAVED AND RESTORED BY EMT SERVICE 5075 ;- 5076 5077 021614 $EXHSG:: 5078 021614 066002 000006 ADD EHSG(R0),R2 ;FIND OFFSET TO COMMUNICATIONS AREA 5079 021620 000765 BR EXCMN ;GO TO COMMON EXAMINE 5080 ; DMDTE - DTE DIRECTIVES MODULE MACRO M1113 03-APR-86 20:41 PAGE 96 $EXHSM -- EXAMINE HIS SECTION FOR COMMUNICATING WITH ME 5082 .SBTTL $EXHSM -- EXAMINE HIS SECTION FOR COMMUNICATING WITH ME 5083 5084 ;+ 5085 ; $EXHSM -- EXAMINE HIS SECTION FOR COMMUNICATING WITH ME 5086 ; 5087 ; ENTRY CONDITIONS: 5088 ; 5089 ; R2 -- ADDRESS OF WORD WITHIN REGION TO EXAMINE 5090 ; R3 -- ADDRESS TO STORE PDP-10 WORD 5091 ; 5092 ; CALLING SEQUENCE: 5093 ; 5094 ; JMP $EXHSM 5095 ; 5096 ; EXIT CONDITIONS: 5097 ; 5098 ; R0 -- +1 - SUCCESS 5099 ; CC-C CLEAR - SUCCESS 5100 ; 5101 ; ERROR CONDITIONS: 5102 ; 5103 ; CC-C SET 5104 ; R0 -1 -- ILLEGAL CPU NUMBER 5105 ; R0 -2 -- E BOX STOPPED 5106 ; R0 -3 -- SECONDARY PROTOCOL IN USE 5107 ; 5108 ; REGISTERS SAVED AND RESTORED BY EMT SERVICE 5109 ;- 5110 5111 021622 $EXHSM:: 5112 021622 066002 000010 ADD EHSM(R0),R2 ;FIND OFFSET INTO COMM AREA 5113 021626 000762 BR EXCMN ;GO TO EXAMINE 5114 ; DMDTE - DTE DIRECTIVES MODULE MACRO M1113 03-APR-86 20:41 PAGE 97 $KLDFX -- EXECUTE A DIAGNOSTIC FUNCTION 5116 .SBTTL $KLDFX -- EXECUTE A DIAGNOSTIC FUNCTION 5117 5118 ;+ 5119 ; $KLDFX -- EXECUTE A DIAGNOSTIC FUNCTION 5120 ; 5121 ; THIS FUNCTION WILL LOAD AND READ THE EBUS. 5122 ; IT DOES A DATA SEND OPERATION IF IT IS A WRITE FUNCTION 5123 ; AND IT ALWAYS RETURNS THE STATUS OF THE DIAGNOSTIC REGISTERS 5124 ; AND EBUS (DEXWD1-3) AFTER EACH FUNCTION. 5125 ; 5126 ; ENTRY CONDITIONS: 5127 ; 5128 ; 00(SP) -- FUNCTION TO BE EXECUTED (BITS 15-9) 5129 ; R3 -- ADDRESS OF FOUR WORD BLOCK TO STORE DIAG1-3 5130 ; R2 -- PDP11 6 WORD BLOCK THE FIRST 3 WORDS ARE 5131 ; USED TO STORE THE CONTENTS IN THE E BUS THE SECOND 3 WORDS 5132 ; ARE USED TO STORE THE RESULTS OF THE DIAGNOSTIC FUNCTION E BUS 5133 ; 5134 ; CALL $KLDFX 5135 ; 5136 ; EXIT CONDITIONS: 5137 ; 5138 ; CC-C CLEAR 5139 ; R0 -- +1 -- SUCCESS 5140 ; 5141 ; ERROR CONDITIONS: 5142 ; 5143 ; -2 -- FUNCTION FAILED 5144 ; 5145 ; REGISTERS SAVED AND RESTORED BY EMT SERVICE 5146 ; 5147 ;- 5148 5149 021630 $KLDFR:: 5150 021630 011001 MOV (R0),R1 ; [4.1.1137] POINT TO THE DTE-20 5151 021632 012600 MOV (SP)+,R0 ;RESTORE FUNCTION 5152 021634 CALL CESCHK ;RESET DTE-20 IF CLOCK ERROR STOP 021634 004737 022166' JSR PC,CESCHK 5153 021640 042700 000777 BIC #777,R0 ;MASK OFF FUNCTION CODE 5154 021644 052700 000211 BIS #DIKL10!DCOMST!DFUNC,R0 ;SET DIAGNOSTIC FUNCTION START BITS 5155 021650 062702 000006 ADD #6,R2 ;DON'T DO THE E BUS WRITE 5156 021654 KLCST: 5157 021654 010061 000030 MOV R0,DAG1(R1) ;START FUNCTION 5158 021660 012737 003000 001352' MOV #3000,DEXST ;TIME OUT FUNCTION 5159 021666 10$: 5160 021666 032761 000001 000030 BIT #DCOMST,DAG1(R1) ;WAIT FOR THE FUNCTION TO COMPLETE 5161 021674 001404 BEQ 22$ 5162 021676 005337 001352' DEC DEXST ;COUNT DOWN 5163 021702 100371 BPL 10$ 5164 021704 104776 TRAP DE.02 ;TRAP ERROR 5165 ; 5166 021706 22$: 5167 021706 MTPS DXWD3(R1),(R2)+ ;STORE THE FOUND WORD IN PDP11 021706 016122 000002 MOV DXWD3(R1),(R2)+ 5168 021712 MTPS DXWD2(R1),(R2)+ 021712 016122 000004 MOV DXWD2(R1),(R2)+ 5169 021716 MTPS DXWD1(R1),(R2)+ DMDTE - DTE DIRECTIVES MODULE MACRO M1113 03-APR-86 20:41 PAGE 97-1 $KLDFX -- EXECUTE A DIAGNOSTIC FUNCTION 021716 016122 000006 MOV DXWD1(R1),(R2)+ 5170 021722 005703 TST R3 ;ANYWHERE TO STORE? 5171 021724 001407 BEQ 20$ ;NO -- FORGET IT 5172 021726 010104 MOV R1,R4 ; YES -- POINT TO THE DTE-20 5173 021730 062704 000030 ADD #DAG1,R4 ; DIAGNOSTIC REGISTERS 5174 021734 MTPS (R4)+,(R3)+ ;STORE DIAGNOSITC REGISTERS 021734 012423 MOV (R4)+,(R3)+ 5175 021736 MTPS (R4)+,(R3)+ 021736 012423 MOV (R4)+,(R3)+ 5176 021740 MTPS (R4)+,(R3)+ 021740 012423 MOV (R4)+,(R3)+ 5177 021742 MTPS (R4)+,(R3)+ 021742 012423 MOV (R4)+,(R3)+ 5178 021744 20$: 5179 021744 104401 TRAP DR.01 ;SET OK RETURN TO CALLER 5180 ; 5181 021746 $KLDFX:: 5182 021746 011001 MOV (R0),R1 ; [4.1.1137] POINT TO THE DTE-20 5183 021750 012600 MOV (SP)+,R0 ;FIND FUNCTION BITS 5184 021752 CALL CESCHK ;RESET DTE-20 IF CLOCK ERROR STOP 021752 004737 022166' JSR PC,CESCHK 5185 021756 042700 000777 BIC #777,R0 ;CLEAR OFF LOW ORDER FUNCTION CODE 5186 021762 052700 000201 BIS #DCOMST!DFUNC,R0 ;SET DIAG FUNCTION EXECUTE 5187 021766 000410 BR $KLDFC ;ENTER COMMON CODE 5188 ; 5189 021770 $KLDFW:: 5190 021770 011001 MOV (R0),R1 ; [4.1.1137] POINT TO THE DTE-20 5191 021772 012600 MOV (SP)+,R0 ;FIND FUNCTION BITS 5192 021774 CALL CESCHK ;RESET DTE-20 IF CLOCK ERROR STOP 021774 004737 022166' JSR PC,CESCHK 5193 022000 042700 000777 BIC #777,R0 ;MASK OFF LOW ORDER FUNCTION CODE 5194 022004 052700 000215 BIS #DCOMST!DSEND!DIKL10!DFUNC,R0 5195 022010 $KLDFC:: 5196 022010 MFPS (R2)+,DXWD3(R1) ;STORE THE OUTPUT FOR THE EBUS 022010 012261 000002 MOV (R2)+,DXWD3(R1) 5197 022014 MFPS (R2)+,DXWD2(R1) 022014 012261 000004 MOV (R2)+,DXWD2(R1) 5198 022020 MFPS (R2)+,DXWD1(R1) 022020 012261 000006 MOV (R2)+,DXWD1(R1) 5199 022024 032700 000004 BIT #DSEND,R0 ;DIAG WRITE? 5200 022030 001711 BEQ KLCST ;GO TO COMMON OUTPUT EQOUTINE 5201 022032 10$: 5202 022032 012761 000014 000030 MOV #DIKL10!DSEND,DAG1(R1) ;WRITE 5203 022040 012761 010000 000010 MOV #DEP,TNAD1(R1) ;SIMULATE DEPOSIT 5204 022046 005061 000012 CLR TNAD2(R1) 5205 022052 20$: 5206 022052 010046 MOV R0,-(SP) ;SAVE R0 5207 022054 010100 MOV R1,R0 5208 022056 CALL ..WFED ; [4.1.1121] WAIT FOR DEX DONE 022056 004737 047454' JSR PC,..WFED 5209 022062 012600 MOV (SP)+,R0 5210 022064 000673 BR KLCST 5211 ; DMDTE - DTE DIRECTIVES MODULE MACRO M1113 03-APR-86 20:41 PAGE 98 $PRVDP -- PRIVILEDGED DEPOSIT 5213 .SBTTL $PRVDP -- PRIVILEDGED DEPOSIT 5214 5215 ;+ 5216 ; $PRVDP -- PRIVILEDGED DEPOSIT OF THE KL10 MEMORY 5217 ; 5218 ; 5219 ; ENTRY CONDITIONS: 5220 ; 5221 ; R0 -- PROCESSOR TABLE POINTER 5222 ; R1 -- WORD 5 OF DPB 5223 ; R2 -- WORD 3 OF DPB 5224 ; R3 -- WORD 4 OF DPB 5225 ; R4 -- ADDRESS OF DPB 5226 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK 5227 ; 5228 ; CALLING SEQUENCE: 5229 ; 5230 ; JMP $PRVDP 5231 ; 5232 ; ERROR CONDITIONS: 5233 ; 5234 ; REGISTERS SAVED AND RESTORED BY EMT SERVICE 5235 ;- 5236 5237 022066 $PRVDP:: 5238 022066 MFPS 2(R2),R1 ;SET UP THE INTERNAL ADDRESS 2(PDP11 ADDRESS 022066 016201 000002 MOV 2(R2),R1 5239 022072 052601 BIS (SP)+,R1 ;SET HIGH ORDER OF PRIVILEDGE 5240 022074 052701 010000 BIS #DEP,R1 ;SET PRIVILEDGED DEPOSIT 5241 022100 000405 BR PRVCM 5242 ; DMDTE - DTE DIRECTIVES MODULE MACRO M1113 03-APR-86 20:41 PAGE 99 $PRVEX -- PRIVILEDGED EXAMINE 5244 .SBTTL $PRVEX -- PRIVILEDGED EXAMINE 5245 5246 ;+ 5247 ; $PRVEX -- PRIVILEDGED EXAMINE OF THE KL10 MEMORY 5248 ; 5249 ; ENTRY CONDITIONS: 5250 ; 5251 ; R0 -- PROCESSOR TABLE POINTER 5252 ; R1 -- WORD 5 OF DPB 5253 ; R2 -- WORD 3 OF DPB 5254 ; R3 -- WORD 4 OF DPB 5255 ; R4 -- ADDRESS OF DPB 5256 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK 5257 ; 5258 ; CALLING SEQUENCE: 5259 ; 5260 ; JMP $PRVEX 5261 ; 5262 ; ERROR CONDITIONS: 5263 ; 5264 ; REGISTERS SAVED AND RESTORED BY EMT SERVICE 5265 ;- 5266 5267 022102 $PRVEX:: 5268 022102 MFPS 2(R2),R1 ;SET UP THE INTERNAL ADDRESS 2(PDP11 ADDRESS 022102 016201 000002 MOV 2(R2),R1 5269 022106 052601 BIS (SP)+,R1 ;SET HIGH ORDER OF PRIVILEDGE 5270 022110 042701 010000 BIC #DEP,R1 ;INSURE THAT IT IS AN EXAMINE 5271 022114 PRVCM: 5272 022114 052701 004000 BIS #PRTOFF,R1 ;SET PRIVILEDGED EXAMINE/DEPOSIT 5273 022120 MFPS @R2,R2 ;LOWER ORDER HALF 022120 011202 MOV @R2,R2 5274 022122 011000 MOV (R0),R0 ; [4.1.1137] POINT TO THE DTE-20 5275 022124 CALL ..SWED ; [4.1.1121] START-WAIT FOR EXAMINE/DEPOSIT 022124 004737 050126' JSR PC,..SWED 5276 022130 103401 BCS 20$ ;E BOX STOPPED ERROR 5277 022132 104401 TRAP DR.01 ;MUST BE OK -- RETURN TO USER 5278 ; 5279 022134 20$: 5280 022134 104776 TRAP DE.02 ;RETURN EBOX STOPPED ERROR 5281 ; DMDTE - DTE DIRECTIVES MODULE MACRO M1113 03-APR-86 20:41 PAGE 100 $RWDRG -- READ/WRITE DIAGNOSTIC REGISTER 5283 .SBTTL $RWDRG -- READ/WRITE DIAGNOSTIC REGISTER 5284 5285 ;+ 5286 ; 5287 ; $RWDRG -- PRIVILEDGED READ/WRITE OF DIAGNOSTIC DTE20 REGISTERS 5288 ; 5289 ; ENTRY CONDITIONS: 5290 ; 5291 ; R0 -- PROCESSOR TABLE POINTER 5292 ; R1 -- WORD 5 OF DPB 5293 ; R2 -- WORD 3 OF DPB 5294 ; R3 -- WORD 4 OF DPB 5295 ; R4 -- ADDRESS OF DPB 5296 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK 5297 ; 5298 ; CALLING SEQUENCE: 5299 ; 5300 ; JMP $RWDRG 5301 ; 5302 ; ERROR CONDITIONS: 5303 ; 5304 ; REGISTERS SAVED AND RESTORED BY EMT SERVICE 5305 ;- 5306 5307 022136 $RWDRG:: 5308 022136 011001 MOV (R0),R1 ; [4.1.1137] POINT TO THE DTE-20 5309 022140 000316 SWAB @SP ;FIND THE REGISTER NUMBER 5310 022142 062601 ADD (SP)+,R1 ;MAKE EXTERNAL PAGE OFFSET 5311 022144 005702 TST R2 ;IS IT WRITE? 5312 022146 001402 BEQ 10$ ;NO -- DON'T SET IT 5313 022150 MFPS @R2,DAG1(R1) ;YES -- SET REGISTER 022150 011261 000030 MOV @R2,DAG1(R1) 5314 022154 10$: 5315 022154 005703 TST R3 ;RETURN ADDRESS SPECIFIED? 5316 022156 001402 BEQ 20$ ;NO -- THEN RETURN ALL OK 5317 022160 MTPS DAG1(R1),@R3 ;SET IN USER SPACE 022160 016113 000030 MOV DAG1(R1),@R3 5318 022164 20$: 5319 022164 104401 TRAP DR.01 ;MUST BE OK -- RETURN TO USER 5320 ; DMDTE - DTE DIRECTIVES MODULE MACRO M1113 03-APR-86 20:41 PAGE 101 CESCHK -- CHECK FOR CLOCK ERROR STOP 5322 .SBTTL CESCHK -- CHECK FOR CLOCK ERROR STOP 5323 5324 ;+ 5325 ; CESCHK -- CHECK FOR CLOCK ERROR STOP 5326 ; 5327 ; ENTRY CONDITIONS: 5328 ; 5329 ; R1 -- ADDRESS OF CURRENT DTE-20 5330 ; 5331 ; NO REGISTERS MODIFIED 5332 ;- 5333 5334 022166 CESCHK: 5335 022166 005061 000030 CLR DAG1(R1) ;CLEAR ALL FLAGS 5336 022172 032761 004000 000030 BIT #DS04,DAG1(R1) ;CLOCK ERROR STOP UP? 5337 022200 001403 BEQ 10$ ;NO-- JUST RETURN 5338 022202 012761 000100 000032 MOV #DRESET,DAG2(R1) ;YES-- RESET DTE-20 5339 022210 10$: 5340 022210 RETURN ;FROM CESCHK 022210 000207 RTS PC DMDTE - DTE DIRECTIVES MODULE MACRO M1113 03-APR-86 20:41 PAGE 102 CESCHK -- CHECK FOR CLOCK ERROR STOP 5342 5343 5344 .TITLE DMASS - "ASSIGN LUN" DIRECTIVE MODULE 5345 .SBTTL ASIGN LUN -- COPYRIGHT STATEMENT 5346 022212 IDENT$ 1,0 .IDENT /001000/ 5347 ; 5348 ; COPYRIGHT (C) 1975, 1984, 1985 BY 5349 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS. 5350 ; ALL RIGHTS RESERVED. 5351 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED 5352 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION 5353 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE- 5354 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. 5355 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED. 5356 ; 5357 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT 5358 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT 5359 ; CORPORATION. 5360 ; 5361 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS 5362 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL. 5363 ; 5364 ; MODULE: "ASSIGN LUN" DIRECTIVE 5365 ; 5366 ; VERSION: 01-00 5367 ; 5368 ; AUTHOR: R. MCLEAN 5369 ; 5370 ; DATE: 19 JUL 75 5371 ; 5372 ; 5373 ; THIS MODULE CONTAINS: 5374 ; 5375 ; 1 -- CODE TO SERVICE THE "ASSIGN LUN" DIRECTIVE. 5376 ; 5377 ; MACRO DEFINITIONS 5378 ; 5379 .MCALL CALL,RETURN 5380 .MCALL MFPI,MFPS DMASS - "ASSIGN LUN" DIRECTIV MACRO M1113 03-APR-86 20:41 PAGE 103 DIRECTIVE -- ASSIGN LUN 5382 .SBTTL DIRECTIVE -- ASSIGN LUN 5383 ;+ 5384 ; THE "ASSIGN LUN" DIRECTIVE 5385 ; 5386 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO ASSIGN A LOGICAL UNIT NUMBER (LUN) 5387 ; TO A PHYSICAL DEVICE-UNIT. 5388 ; 5389 ; A FOUR-WORD DPB OF THE FOLLOWING FORMAT IS USED TO ASSIGN A LUN 5390 ; TO A PHYSICAL DEVICE: 5391 ; 5392 ; WD. 00 -- DIC (07.) & DPB SIZE (4.), 5393 ; WD. 01 -- LOGICAL UNIT NUMBER, 5394 ; WD. 02 -- PHYSICAL DEVICE NAME, 5395 ; WD. 03 -- PHYSICAL DEVICE UNIT NUMBER. 5396 ; 5397 ; A TWO-WORD DPB OF THE FOLLOWING FORMAT IS USED TO DEASSIGN (ASSIGN 5398 ; TO "NONE") A LUN: 5399 ; 5400 ; WD. 00 -- DIC (07.) & DPB SIZE (2.), 5401 ; WD. 01 -- LOGICAL UNIT NUMBER. 5402 ; 5403 ; THE FOLLOWING STATUS IS RETURNED: 5404 ; 5405 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS 5406 ; OF ONE (+1). 5407 ; 5408 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF: 5409 ; 5410 ; -90 -- LUN USAGE INTERLOCKED (VIZ., FILE OPEN), 5411 ; -92 -- INVALID DEVICE AND/OR UNIT, 5412 ; -96 -- INVALID LOGICAL UNIT NUMBER, 5413 ; -98 -- PART OF DPB IS OUT OF ISSUING TASK'S ADDRESS SPACE, 5414 ; -99 -- DIC OR DPB SIZE IS INVALID. 5415 ;- 5416 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE 5417 ; DIRECTIVE ISSUING TASK'S PS, PC, & R1-R5 PUSHED ONTO THE 5418 ; STACK, AND R0-R5 SET AS FOLLOWS: 5419 ; R0 -- PC OF EMT INSTRUCTION 5420 ; R1 -- POINTER TO WORD FOLLOWING DIC & SIZE 5421 ; R2 -- DPB SIZE 5422 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE) 5423 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK ('.CRTSK') 5424 ; 5425 ; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE). 5426 ; 5427 ; 5428 ; LUN ASSIGNMENT -- CHECK FOR VALIDITY OF LUN & DEVICE-UNIT AND ASSIGN 5429 ; IF NOT INTERLOCKED. 5430 ; 5431 022212 .D.ASS::MFPI @R1 ;VALIDATE LUN, AND SETUP TO ACCESS TASK 022212 011146 MOV @R1,-(SP) 5432 ;HEADER, BY PUSHING LUN AND CALLING 5433 ;SUBROUTINE TO CONVERT & VERIFY. 5434 022214 CALL .VCLUN ;IF INVALID LUN, RETURN STS=-96. 022214 004737 016104' JSR PC,.VCLUN 5435 022220 010416 MOV R4,@SP ;PUD ENTRY ADR ON STACK REPLACED BY LUT ADDRESS 5436 ; DMASS - "ASSIGN LUN" DIRECTIV MACRO M1113 03-APR-86 20:41 PAGE 103-1 DIRECTIVE -- ASSIGN LUN 5437 022222 005003 CLR R3 ;SET UP INCASE OF DEASSIGNMENT 5438 022224 020227 000002 CMP R2,#2 ;IS THIS LUN DEASSIGNMENT? 5439 022230 001422 BEQ 60$ ;YES -- DEASSIGN LUN 5445 ; 5446 022232 45$: MFPI (R1)+ ;PUSH LUN, AND LEAVE R1 POINTING TO DEV NAME 022232 012146 MOV (R1)+,-(SP) 5447 ; 5448 022234 MFPS (R1)+,R4 ;SET R4 TO DEVICE NAME. 022234 012104 MOV (R1)+,R4 5449 ;R0 CONTAINS DEVICE UNIT NUMBER 5450 022236 MFPS @R1,R0 022236 011100 MOV @R1,R0 5451 ; 5452 ; SCAN PUD FOR DEVICE-UNIT IN R4-R0. 5453 ; 5454 022240 012703 010262' MOV #.PUDBA,R3 ;USE R3 TO SCAN PUD 5455 022244 20$: 5456 022244 020327 011342' CMP R3,#.PUDEA ;END OF PUD? 5457 022250 001001 BNE 30$ 5458 022252 104644 TRAP DE.92 ;YES -- DEVICE-UNIT NOT FOUND 5459 022254 021304 30$: CMP @R3,R4 ;NO -- DEVICE NAME MATCH? 5460 022256 001003 BNE 40$ ;NO -- CHECK NEXT ENTRY 5461 022260 126300 000002 CMPB U.UN(R3),R0 ;YES -- UNIT NUMBER MATCH? 5462 022264 001403 BEQ 50$ ;YES -- DEVICE-UNIT FOUND 5463 ;NO -- CHECK NEXT ENTRY 5464 022266 40$: 5465 022266 062703 000050 ADD #U.SZ,R3 ;ADVANCE R3 TO NEXT PUD ENTRY (IF ANY), AND 5466 022272 000764 BR 20$ ;CHECK FOR DEVICE-UNIT MATCH. 5467 ; 5468 ; INDICATED DEVICE-UNIT FOUND IN PUD -- PUD ENTRY ADDRESS IS IN R3 5469 ; 5470 022274 012600 50$: MOV (SP)+,R0 ;SET R0 TO LUN 5471 ; 5472 ; R3 CONTAINS A VALUE (PUD ENTRY ADDRESS OR ZERO) TO BE SET IN THE 5473 ; THE FIRST WORD OF THE LUT PER LUN IN R0. 5474 ; 5475 022276 60$: 5476 022276 006300 ASL R0 ;SET R0 TO FOUR TIMES THE LUN 5477 022300 006300 ASL R0 5478 022302 062600 ADD (SP)+,R0 ;POINT TO LUT AS SAVED 5479 ; 5480 022304 005740 TST -(R0) ;IS LUN LOCKED IN USE? 5481 022306 001401 BEQ 70$ 5482 022310 104646 TRAP DE.90 ;YES -- RETURN STS=-90. 5483 022312 010340 70$: MOV R3,-(R0) ;NO -- MAKE ASSIGNMENT, AND 5484 022314 104401 TRAP DR.01 ;RETURN STS=+1 DMASS - "ASSIGN LUN" DIRECTIV MACRO M1113 03-APR-86 20:41 PAGE 104 DIRECTIVE -- ASSIGN LUN 5486 5487 .TITLE DMGLI - "GET LUN INFO" DIRECTIVE MODULE 5488 .SBTTL GET LUN INFO -- COPYRIGHT STATEMENT 5489 022316 IDENT$ 1,0 .IDENT /001000/ 5490 ; 5491 ; COPYRIGHT (C) 1975, 1984,1985 BY 5492 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS. 5493 ; ALL RIGHTS RESERVED. 5494 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED 5495 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION 5496 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE- 5497 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. 5498 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED. 5499 ; 5500 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT 5501 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT 5502 ; CORPORATION. 5503 ; 5504 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS 5505 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL. 5506 ; 5507 ; MODULE: "GET LUN INFO" DIRECTIVE 5508 ; 5509 ; VERSION: 01-00 5510 ; 5511 ; AUTHOR: R. MCLEAN 5512 ; 5513 ; DATE: 19 JUL 75 5514 ; 5515 ; 5516 ; THIS MODULE CONTAINS: 5517 ; 5518 ; 1 -- CODE TO SERVICE THE "GET LUN INFO" DIRECTIVE. 5519 ; 5520 ; MACROS 5521 ; 5522 .MCALL CALL,RETURN,MTPI,MFPI,MFPS DMGLI - "GET LUN INFO" DIRECT MACRO M1113 03-APR-86 20:41 PAGE 105 DIRECTIVE -- GET LUN INFORMATION 5524 .SBTTL DIRECTIVE -- GET LUN INFORMATION 5525 ;+ 5526 ; THE "GET LUN INFORMATION" DIRECTIVE 5527 ; 5528 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO FILL A SIX WORD BUFFER 5529 ; WITH INFORMATION ABOUT A PHYSICAL UNIT TO WHICH IT IS ASSIGNED. 5530 ; IF REQUESTS TO THE PHYSICAL UNIT HAVE BEEN RE-DIRECTED TO ANOTHER 5531 ; UNIT, THE INFORMATION RETURNED WILL DESCRIBE THE EFFECTIVE ASSIGNMENT. 5532 ; 5533 ; A THREE WORD DPB OF THE FOLLOWING FORMAT IS USED: 5534 ; 5535 ; WD. 00 -- DIC (05.) & DPB SIZE (3.), 5536 ; WD. 01 -- LUN, 5537 ; WD. 02 -- ADDRESS OF SIX-WORD BUFFER. 5538 ; 5539 ; 5540 ; THE SIX WORD BUFFER IS FILLED WITH THE FIRST SIX WORDS OF THE 5541 ; CORRESPONDING PUD ENTRY AS FOLLOWS: 5542 ; 5543 ; WD. 00 -- NAME OF ASSIGNED DEVICE, 5544 ; WD. 01 -- UNIT NUMBER OF ASSIGNED DEVICE & FLAGS BYTE, 5545 ; WD. 02 -- DEVICE CHARACTERISTICS WD. #1, 5546 ; WD. 03 -- DEVICE CHARACTERISTICS WD. #2, 5547 ; WD. 04 -- DEVICE CHARACTERISTICS WD. #3, 5548 ; WD. 05 -- DEVICE CHARACTERISTICS WD. #4. 5549 ; 5550 ; THE FOLLOWING STATUS IS RETURNED: 5551 ; 5552 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS 5553 ; OF ONE (+1). 5554 ; 5555 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF: 5556 ; 5557 ; -05 -- UNASSIGNED LUN, 5558 ; 5559 ; -95 -- INVALID BUFFER SIZE ( 1> OR >U.SZ) 5560 ; -96 -- INVALID LOGICAL UNIT NUMBER, 5561 ; -98 -- PART OF DPB OR BUFFER IS OUT OF TASK'S ADDRESS SPACE, 5562 ; -99 -- DIC OR DPB SIZE IS INVALID. 5563 ;- 5564 ;R0 CONTAINS BUFFER ADDRESS (LAST DPB WORD) 5565 ; 5566 022316 006302 .D.GLI::ASL R2 ;MULTIPLY THE DPB SIZE BY 2 5572 ; 5573 ; 5574 022320 10$: MFPI (R1)+ ;PUSH LUN, AND CONVERT TO PUD ENTRY ADR 022320 012146 MOV (R1)+,-(SP) 5575 022322 CALL .VCLUN ;IF INVALID LUN, RETURN STS=-96. 022322 004737 016104' JSR PC,.VCLUN 5576 022326 012604 MOV (SP)+,R4 ;SET R4 TO PUD ENTRY ADR IF LUN ASSIGNED 5577 022330 001001 BNE 20$ ;IF UN-ASSIGNED LUN, RETURN STS=-05. 5578 022332 104773 TRAP DE.05 5579 ; 5580 ; FILL BUFFER -- IF SEGMENT FAULT, RETURN STS=-98. 5581 ; 5582 022334 20$: MFPS (R1),R0 022334 011100 MOV (R1),R0 DMGLI - "GET LUN INFO" DIRECT MACRO M1113 03-APR-86 20:41 PAGE 105-1 DIRECTIVE -- GET LUN INFORMATION 5583 022336 012446 30$: MOV (R4)+,-(SP) 5584 022340 MTPI (R0)+ 022340 012620 MOV (SP)+,(R0)+ 5585 022342 077203 SOB R2,30$ 5586 ; 5587 022344 104401 TRAP DR.01 ;RETURN STS=+1 5588 ; DMGLI - "GET LUN INFO" DIRECT MACRO M1113 03-APR-86 20:41 PAGE 106 DIRECTIVE -- GET LUN INFORMATION 5590 5591 5592 .TITLE DMGTP - "GET TIME PARAMETERS" DIRECTIVE MODULE 5593 .SBTTL GET TIME PARAMETERS -- COPYRIGHT STATEMENT 5594 022346 IDENT$ 1,0 .IDENT /001000/ 5595 ; 5596 ; COPYRIGHT (C) 1975, 1984. 1985 BY 5597 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS. 5598 ; ALL RIGHTS RESERVED. 5599 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED 5600 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION 5601 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE- 5602 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. 5603 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED. 5604 ; 5605 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT 5606 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT 5607 ; CORPORATION. 5608 ; 5609 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS 5610 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL. 5611 ; 5612 ; MODULE: "GET TIME PARAMETERS" DIRECTIVE 5613 ; 5614 ; VERSION: 01-00 5615 ; 5616 ; AUTHOR: R. MCLEAN 5617 ; 5618 ; DATE: 19 JUL 75 5619 ; 5620 ; 5621 ; THIS MODULE CONTAINS: 5622 ; 5623 ; 1 -- CODE TO SERVICE THE "GET TIME PARAMETERS" DIRECTIVE. 5624 ; 5625 ; MACROS 5626 ; 5627 .MCALL CALL,RETURN,MTPI,MFPS DMGTP - "GET TIME PARAMETERS" MACRO M1113 03-APR-86 20:41 PAGE 107 DIRECTIVE -- GET TIME PARAMETERS 5629 .SBTTL DIRECTIVE -- GET TIME PARAMETERS 5630 ;+ 5631 ; THE "GET TIME PARAMETERS" DIRECTIVE 5632 ; 5633 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO FILL AN INDICATED EIGHT WORD BUFFER 5634 ; WITH CURRENT TIME PARAMETERS. 5635 ; 5636 ; A TWO WORD DPB OF THE FOLLOWING FORMAT IS USED: 5637 ; 5638 ; WD. 00 -- DIC (59.) & DPB SIZE (2.), 5639 ; WD. 01 -- ADDRESS OF 8-WORD BUFFER. 5640 ; 5641 ; THE 8-WORD BUFFER IS FILLED AS FOLLOWS: 5642 ; 5643 ; WD. 0 -- YEAR (SINCE 1900), 5644 ; WD. 1 -- MONTH OF YEAR, 5645 ; WD. 2 -- DAY OF MONTH, 5646 ; WD. 3 -- HOUR OF DAY, 5647 ; WD. 4 -- MINUTE OF HOUR, 5648 ; WD. 5 -- SECOND OF MINUTE, 5649 ; WD, 6 -- TICK OF SECOND, 5650 ; WD. 7 -- TICKS PER SECOND. 5651 ; 5652 ; THE FOLLOWING STATUS IS RETURNED: 5653 ; 5654 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS 5655 ; OF ONE (+1). 5656 ; 5657 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF: 5658 ; 5659 ; -98 -- PART OF DPB OR BUFFER IS OUT OF TASK'S ADDRESS SPACE, 5660 ; -99 -- DIC OR DPB SIZE IS INVALID. 5661 ; 5662 022346 013746 001154' .D.GTP::MOV .TKPS,-(SP) ;PUSH TICKS-PER-SECOND 5663 022352 010104 MOV R1,R4 ;SAVE DPB POINTER 5664 022354 013700 001150' MOV .SSM,R0 ;FIND HOURS 5665 022360 012701 003410 MOV #60.*30.,R1 5666 022364 CALL $DIV ;DIVIDE 022364 004737 000000G JSR PC,$DIV 5667 022370 010003 MOV R0,R3 ;SAVE ANSWER 5668 022372 010100 MOV R1,R0 ;SET UP REMAINDER FOR NEXT DIVIDE 5669 022374 012701 000036 MOV #30.,R1 5670 022400 CALL $DIV ;FIND MIN 022400 004737 000000G JSR PC,$DIV 5671 022404 005046 CLR -(SP) ;TICKS NOT RETURNED 5672 022406 006301 ASL R1 5673 022410 010146 MOV R1,-(SP) ;SAVE SECONDS 5674 022412 010046 MOV R0,-(SP) 5675 022414 010346 MOV R3,-(SP) ;HOURS 5676 022416 005046 CLR -(SP) 5677 022420 113716 001144' MOVB .DAY,@SP 5678 022424 005216 INC @SP ; [**] 5679 022426 005046 CLR -(SP) 5680 022430 113716 001145' MOVB .MON,@SP 5681 022434 005216 INC @SP ; [**] 5682 022436 013746 001142' MOV .YEAR,-(SP) 5683 022442 162716 003554 SUB #1900.,@SP DMGTP - "GET TIME PARAMETERS" MACRO M1113 03-APR-86 20:41 PAGE 107-1 DIRECTIVE -- GET TIME PARAMETERS 5684 ; 5685 ; 5686 ; MOVE TIME PARAMETERS FROM KERNEL STACK TO 8-WORD BUFFER IN USER SPACE 5687 ; 5688 ; 5689 022446 012703 000010 MOV #8.,R3 5690 ; 5691 022452 MFPS (R4),R4 ;FIND BUFFER ADDRESS 022452 011404 MOV (R4),R4 5692 022454 10$: 5693 022454 MTPI (R4)+ ;MOVE WORD 022454 012624 MOV (SP)+,(R4)+ 5694 022456 077302 SOB R3,10$ ;LOOP 8 TIMES 5695 ; 5696 022460 104401 TRAP DR.01 ;RETURN STS=+1 5697 ; DMGTP - "GET TIME PARAMETERS" MACRO M1113 03-APR-86 20:41 PAGE 108 DIRECTIVE -- GET TIME PARAMETERS 5699 5700 5701 .TITLE DMSED - SIGNIFICANT EVENT DIRECTIVES MODULE 5702 .SBTTL SIGNIFICANT EVENT DIRECTIVES -- COPYRIGHT STATEMENT 5703 022462 IDENT$ 1,0 .IDENT /001000/ 5704 ; 5705 ; COPYRIGHT (C) 1975, 1984, 1985 BY 5706 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS. 5707 ; ALL RIGHTS RESERVED. 5708 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED 5709 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION 5710 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE- 5711 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. 5712 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED. 5713 ; 5714 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT 5715 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT 5716 ; CORPORATION. 5717 ; 5718 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS 5719 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL. 5720 ; 5721 ; MODULE: SIGNIFICANT EVENT DIRECTIVES 5722 ; 5723 ; VERSION: 01-00 5724 ; 5725 ; AUTHOR: R. MCLEAN 5726 ; 5727 ; DATE: 19 MAR 75 5728 ; 5729 ; 5730 ; THIS MODULE CONTAINS: 5731 ; 5732 ; 1 -- CODE TO SERVICE THE "WAITFOR SINGLE EVENT FLAG" DIRECTIVE, 5733 ; 2 -- CODE TO SERVICE THE "WAITFOR LOGICAL 'OR' OF FLAGS" DIRECTIVE, 5734 ; 3 -- CODE TO SERVICE THE "WAIT FOR NEXT SIGNIFICANT EVENT" DIRECTIVE. 5735 ; 4 -- CODE TO SERVICE THE "CLEAR EVENT FLAG" DIRECTIVE, 5736 ; 5 -- CODE TO SERVICE THE "SET EVENT FLAG" DIRECTIVE, 5737 ; 6 -- CODE TO SERVICE THE "DECLARE SIG EVENT" DIRECTIVE, 5738 ; 7 -- CODE TO SERVICE THE "READ EVENT FLAGS" DIRECTIVE 5739 ; 5740 ; MACROS 5741 5742 .MCALL CALL,RETURN,MTPS,MFPS,MFPI,MTPI DMSED - SIGNIFICANT EVENT DIR MACRO M1113 03-APR-86 20:41 PAGE 109 DIRECTIVE -- CLEAR EVENT FLAG 5744 .SBTTL DIRECTIVE -- CLEAR EVENT FLAG 5745 ;+ 5746 ; THE "CLEAR EVENT FLAG" DIRECTIVE 5747 ; 5748 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO CLEAR AND INDICATE 5749 ; EVENT FLAG AND REPORT THE FLAG'S POLARITY BEFORE CLEARING. 5750 ; 5751 ; A TWO WORD DPB OF THE FOLLOWING FORMAT IS USED; 5752 ; 5753 ; WD. 00 -- DIC (31.) & DPB SIZE (2.) 5754 ; WD. 01 -- EVENT FLAG NUMBER (EFN) 5755 ; 5756 ; THE FOLLOWING STATUS IS RETURNED: 5757 ; 5758 ; 5759 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS OF: 5760 ; 5761 ; R0 -- +0 -- FLAG WAS ALREADY RESET, 5762 ; R0 -- +2 -- FLAG WAS SET. 5763 ; 5764 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF: 5765 ; 5766 ; R0 -- -97 -- EFN>64 OR EFN<1, 5767 ; R0 -- -99 -- DIC OR DPB SIZE IS INVALID. 5768 ;- 5769 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE 5770 ; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE 5771 ; STACK, AND R0-R5 SET AS FOLLOWS: 5772 ; R0 -- PC OF EMT INSTRUCTION 5773 ; R1 -- WORD FOLLOWING THE DIC & SIZE 5774 ; R2 -- SIZE OF DPB (IN WORDS), 5775 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE ) 5776 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK) 5777 ; 5778 ; 5779 ; 5780 022462 .D.CEF::CALL .CEFN ;CONVERT EFN TO: (1) FLAG WORD ADDRESS 022462 004737 044320' JSR PC,.CEFN 5781 ;IN R2, AND (2) FLAG MASK IN R3 (R2 IS 5782 ;POINTING TO EFN). IF EFN<0, OR EFN>64., 5783 ;RETURN STS=-97. IF EFN=0 (NO EVENT FLAG 5784 ;SPECIFIED), RETURN WITH R2=R3=00. 5785 ;CONDITION CODES ARE SET PER "TST R3". 5786 ; 5787 ;EVENT FLAG SPECIFIED? 5788 022466 001443 BEQ SEX97 ;NO -- RETURN STS=-97 5789 022470 030312 BIT R3,@R2 ;YES -- IS FLAG CLEARED? 5790 022472 001410 BEQ SEXP0 ;YES -- RETURN STS=+0 5791 022474 040312 BIC R3,@R2 ;NO -- CLEAR FLAG & RETURN STS=+2 5792 022476 104402 SEXP2: TRAP DR.02 ;COMMON RETURN -- STS=+2 DMSED - SIGNIFICANT EVENT DIR MACRO M1113 03-APR-86 20:41 PAGE 110 DIRECTIVE -- SET EVENT FLAG 5794 .SBTTL DIRECTIVE -- SET EVENT FLAG 5795 ;+ 5796 ; THE "SET EVENT FLAG" DIRECTIVE 5797 ; 5798 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO SET AND INDICATED EVENT FLAG 5799 ; AND REPORT THE FLAG'S POLARITY BEFORE SETTING. 5800 ; 5801 ; A TWO WORD DPB OF THE FOLLOWING FORMAT IS USED: 5802 ; 5803 ; WD. 00 -- DIC (33.) & DPB SIZE (2.), 5804 ; WD. 01 -- EVENT FLAG NUMBER (EFN). 5805 ; 5806 ; THE FOLLOWING STATUS IS RETURNED: 5807 ; 5808 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS OF: 5809 ; 5810 ; R0 -- +0 -- FLAG WAS CLEARED, 5811 ; R0 --+2 -- FLAG WAS SET. 5812 ; 5813 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF: 5814 ; 5815 ; R0 -- -97 -- EFN>64 OR EFN<1, 5816 ; R0 -- -99 -- DIC OR DPB SIZE IS INVALID. 5817 ;- 5818 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE 5819 ; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE 5820 ; STACK, AND R0-R5 SET AS FOLLOWS: 5821 ; R0 -- PC OF EMT INSTRUCTION 5822 ; R1 -- WORD FOLLOWING DIC % SIZE 5823 ; R2 -- DPB SIZE 5824 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE) 5825 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK) 5826 ; 5827 ; 5828 ;R1 IS POINTING TO EFN IN DPB 5829 ; 5830 022500 .D.SEF::CALL .CEFN ;CONVERT EFN TO: (1) FLAG WORD ADDRESS 022500 004737 044320' JSR PC,.CEFN 5831 ;IN R2, AND (2) FLAG MASK IN R3 (R2 IS 5832 ;POINTING TO EFN). IF EFN<0, OR EFN>64., 5833 ;RETURN STS=-97. IF EFN=0 (NO EVENT FLAG 5834 ;SPECIFIED), RETURN WITH R2=R3=00. 5835 ;CONDITION CODES ARE SET PER "TST R3". 5836 ; 5837 ;EVENT FLAG SPECIFIED? 5838 022504 001434 BEQ SEX97 ;NO -- RETURN STS=-97 5839 022506 030312 SEXCM: BIT R3,@R2 ;YES -- IS FLAG ALREADY SET? 5840 022510 001372 BNE SEXP2 ;YES -- RETURN STS=+2 5841 022512 050312 BIS R3,@R2 ;NO -- SET FLAG & RETURN STS=+0 5842 022514 104400 SEXP0: TRAP DR.00 ;COMMON RETURN -- STS=+0 DMSED - SIGNIFICANT EVENT DIR MACRO M1113 03-APR-86 20:41 PAGE 111 DIRECTIVE -- DECLARE SIGNIFICANT EVENT 5844 .SBTTL DIRECTIVE -- DECLARE SIGNIFICANT EVENT 5845 ;+ 5846 ; THE "DECLARE SIGNIFICANT EVENT" DIRECTIVE 5847 ; 5848 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO DECLARE A SIGNIFICANT EVENT 5849 ; AND OPTIONALLY SET AN EVENT FLAG & AND REPORT ITS POLARITY BEFORE 5850 ; IT WAS SET. 5851 ; 5852 ; A TWO WORD DBP OF THE FOLLOWING FORMAT IS USED TO (1) READ AN EVENT 5853 ; FLAG, (2) SET THE EVENT FLAG, (3) DECLARE A SIGNIFICANT EVENT, AND 5854 ; (4) REPORT THE PRE-EVENT FLAG POLARITY: 5855 ; 5856 ; WD. 00 -- DIC (35.) & DPB SIZE (2.), 5857 ; WD. 01 -- EVENT FLAG NUMBER (EFN). 5858 ; 5859 ; A ONE WORD DPB OF THE FOLLOWING FORMAT IS USED TO (1) DECLARE A 5860 ; SIGNIFICANT EVENT: 5861 ; 5862 ; WD. 00 -- DIC (07.) & DPB SIZE (2.). 5863 ; WD. 01 -- NO EVENT FLAG SPECIFIED 5864 ; 5865 ; THE FOLLOWING STATUS IS RETURNED: 5866 ; 5867 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS OF: 5868 ; 5869 ; R0 -- +1 -- NO EVENT FLAG SPECIFIED, 5870 ; R0 -- +0 -- SPECIFIED FLAG WAS CLEARED, 5871 ; R0 --+2 -- SPECIFIED FLAG WAS SET. 5872 ; 5873 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF: 5874 ; 5875 ; R0 -- -97 -- EFN<1 OR EFN>64., 5876 ; R0 -- -99 -- DIC OR DPB SIZE IS INVALID. 5877 ;- 5878 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE 5879 ; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE 5880 ; KERNEL STACK, AND R0-R5 SET AS FOLLOWS: 5881 ; R0 -- PC OF EMT INSTRUCTION 5882 ; R1 -- WORD FOLLOWING DIC & SIZE 5883 ; R2 -- DPB SIZE 5884 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE) 5885 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK) 5886 ; 5887 ; 5888 ; 5889 022516 .D.DSE::CALL ..DSEV ;SET SIGNIFICANT EVENT FLAG 022516 004737 045264' JSR PC,..DSEV 5890 022522 005302 DEC R2 5891 022524 001401 BEQ 5$ 5892 022526 104400 TRAP DR.00 5893 022530 5$: CALL .CEFN ;YES -- R1 IS POINTING TO EFN IN DPB. 022530 004737 044320' JSR PC,.CEFN 5894 ;CONVERT EFN TO: (1) FLAG WORD ADDRESS 5895 ;IN R2, AND (2) FLAG MASK IN R3 (R2 IS 5896 ;POINTING TO EFN). IF EFN<0, OR EFN>64., 5897 ;RETURN STS=-97. IF EFN=0 (NO EVENT FLAG 5898 ;SPECIFIED), RETURN WITH R2=R3=00. DMSED - SIGNIFICANT EVENT DIR MACRO M1113 03-APR-86 20:41 PAGE 111-1 DIRECTIVE -- DECLARE SIGNIFICANT EVENT 5899 ;CONDITION CODES ARE SET PER "TST R3". 5900 ; 5901 ;EVENT FLAG SPECIFIED? 5902 022534 001417 BEQ SEXP1 ;NO -- RETURN STS=1. 5903 022536 000763 BR SEXCM ;GO TO COMMON TEST DMSED - SIGNIFICANT EVENT DIR MACRO M1113 03-APR-86 20:41 PAGE 112 DIRECTIVE -- READ EVENT FLAG 5905 .SBTTL DIRECTIVE -- READ EVENT FLAG 5906 ;+ 5907 ; THE "READ EVENT FLAG" DIRECTIVE 5908 ; 5909 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO READ AND INDICATED EVENT FLAG. 5910 ; 5911 ; A TWO WORD DPB OF THE FOLLOWING FORMAT IS USED: 5912 ; 5913 ; WD. 00 -- DIC (37.) & DPB SIZE (2.), 5914 ; WD. 01 -- EVENT FLAG NUMBER (EFN). 5915 ; 5916 ; THE FOLLOWING STATUS IS RETURNED: 5917 ; 5918 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS OF: 5919 ; 5920 ; R0 -- +0 -- FLAG WAS CLEARED, 5921 ; R0 -- +2 -- FLAG WAS SET. 5922 ; 5923 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF: 5924 ; 5925 ; R0 -- -97 -- EFN>64 OR EFN<1, 5926 ; R0 -- -99 -- DIC OR DPB SIZE IS INVALID. 5927 ;- 5928 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE 5929 ; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE 5930 ; STACK, AND R0-R5 SET AS FOLLOWS: 5931 ; R0 -- PC OF EMT INSTRUCTION 5932 ; R1 -- WORD FOLLOWING DIC & SIZE 5933 ; R2 -- DPB SIZE 5934 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE) 5935 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK) 5936 ; 5937 ; 5938 ;R1 IS POINTING TO EFN IN DPB. 5939 ; 5940 022540 .D.REF::CALL .CEFN ;CONVERT EFN TO: (1) FLAG WORD ADDRESS 022540 004737 044320' JSR PC,.CEFN 5941 ;IN R2, AND (2) FLAG MASK IN R3 (R2 IS 5942 ;POINTING TO EFN). IF EFN<0, OR EFN>64., 5943 ;RETURN STS=-97. IF EFN=0 (NO EVENT FLAG 5944 ;SPECIFIED), RETURN WITH R2=R3=00. 5945 ;CONDITION CODES ARE SET PER "TST R3". 5946 ; 5947 ;EVENT FLAG SPECIFIED? 5948 022544 001414 BEQ SEX97 ;NO -- RETURN STS=-97 5949 022546 030312 BIT R3,@R2 ;YES -- IS FLAG SET? 5950 022550 001352 BNE SEXP2 ;YES -- RETURN STS=+2 5951 022552 104400 TRAP DR.00 ;NO -- RETURN STS=+0 DMSED - SIGNIFICANT EVENT DIR MACRO M1113 03-APR-86 20:41 PAGE 113 DIRECTIVE -- READ ALL EVENT FLAGS 5953 .SBTTL DIRECTIVE -- READ ALL EVENT FLAGS 5954 ;+ 5955 ; THE "READ ALL FLAGS" DIRECTIVE 5956 ; 5957 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO READ ALL SIXTY-FOUR 5958 ; EVENT FLAGS FOR THE ISSUING TASK AND RECORD THEIR POLARITIES 5959 ; IN A SIXTY-FOUR BIT (4-WORD) BUFFER. 5960 ; 5961 ; A TWO WORD DPB OF THE FOLLOWING FORMAT IS USED: 5962 ; 5963 ; WD. 00 -- DIC (39.) & DPB SIZE (2.), 5964 ; WD. 01 -- ADDRESS OF 64-BIT BUFFER. 5965 ; 5966 ; THE FOLLOWING STATUS IS RETURNED: 5967 ; 5968 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS 5969 ; OF ONE (+1). 5970 ; 5971 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF: 5972 ; 5973 ; R0 -- -99 -- DIC OR DPB SIZE IS INVALID. 5974 ;- 5975 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE 5976 ; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE 5977 ; STACK, AND R0-R5 SET AS FOLLOWS: 5978 ; R0 -- PC OF EMT INSTRUCTION 5979 ; R1 -- WORD FOLLOWING DIC & SIZE 5980 ; R2 -- DPB SIZE 5981 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE) 5982 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK) 5983 ; 5984 ; 5985 ; FILL FOUR WORD BUFFER 5986 ; 5987 022554 .D.RAF::MTPS A.EF+0(R5),(R1)+ ;FLAGS 1-16 TO BUF+0 022554 016521 000020 MOV A.EF+0(R5),(R1)+ 5988 022560 MTPS A.EF+2(R5),(R1)+ ;FLAGS 17-32 TO BUF+2 022560 016521 000022 MOV A.EF+2(R5),(R1)+ 5989 022564 MTPS .COMEF+0,(R1)+ ;FLAGS 33-48 TO BUF+4 022564 013721 001010' MOV .COMEF+0,(R1)+ 5990 022570 MTPS .COMEF+2,(R1)+ ;FLAGS 49-64 TO BUF+6 022570 013721 001012' MOV .COMEF+2,(R1)+ 5991 ; 5992 022574 104401 SEXP1: TRAP DR.01 ;RETURN STS=+1 5993 ; 5994 022576 104637 SEX97: TRAP DE.97 DMSED - SIGNIFICANT EVENT DIR MACRO M1113 03-APR-86 20:41 PAGE 114 DIRECTIVE -- WAITFOR SINGLE EVENT FLAG 5996 .SBTTL DIRECTIVE -- WAITFOR SINGLE EVENT FLAG 5997 ;+ 5998 ; THE "WAIT FOR SINGLE EVENT FLAG" DIRECTIVE 5999 ; 6000 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO SUSPEND THE EXECUTION OF THE 6001 ; ISSUING TASK UNTIL AN INDICATED EVENT FLAG IS SET. IF THE FLAG IS SET 6002 ; AT ISSUANCE, TASK EXECUTION IS EFFECTIVELY NOT SUSPENDED. (ACTUALLY, THE 6003 ; TASK IS ALWAYS SUSPENDED, BUT R0 IS LEFT POINTING TO THE ISSUING TASK'S 6004 ; ATL NODE; AND THEREFORE, A CHECK IS ALWAYS MADE BY THE ATL SCAN ROUTINE.) 6005 ; 6006 ; A TWO WORD DPB OF THE FOLLOWING FORMAT IS USED: 6007 ; 6008 ; WD. 00 -- DIC (41.) & DPB SIZE (2.), 6009 ; WD. 01 -- EVENT FLAG NUMBER (EFN). 6010 ; 6011 ; THE FOLLOWING STATUS IS RETURNED: 6012 ; 6013 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS 6014 ; OF ONE (+1). 6015 ; 6016 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF: 6017 ; 6018 ; R0 -- -97 -- INVALID EVENT FLAG NUMBER (<1 OR >64.), 6019 ; R0 -- -99 -- DIC OR DPB SIZE IS INVALID. 6020 ;- 6021 ; 6022 ; 6023 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE 6024 ; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE 6025 ; STACK, AND R0-R5 SET AS FOLLOWS: 6026 ; R0 -- PC OF EMT INSTRUCTION 6027 ; R1 -- WORD FOLLOWING DIC & SIZE 6028 ; R2 -- DPB SIZE 6029 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE) 6030 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK) 6031 ; 6032 ; 6033 022600 011103 .D.WFS::MOV @R1,R3 ;SET R3 TO EFN 6034 ;IS AN EVENT FLAG SPECIFIED (NON-ZERO EFN)? 6035 022602 .D.WFO:: ;SPECIAL ENTRY POINT FOR QIO AND WAIT 6036 022602 001775 BEQ SEX97 ;NO -- RETURN STS=-97. 6037 022604 020327 000100 CMP R3,#64. ;YES -- IS EFN IN RANGE: 0-64.? 6038 022610 101372 BHI SEX97 ;NO -- RETURN STS=-97. 6039 ; 6040 022612 005303 DEC R3 ;YES -- CONVERT EFN TO FLAG SET NUMBER (R2), 6041 022614 005002 CLR R2 ;AND FLAG MASK (R1) 6042 022616 CALL DIV216 ;DIVIDE R2 BY 16. 022616 004737 045274' JSR PC,DIV216 6043 022622 012701 000001 MOV #1,R1 6044 022626 005303 10$: DEC R3 ;DO AN ASH R3,R1 6045 022630 100402 BMI 20$ 6046 022632 006301 ASL R1 6047 022634 000774 BR 10$ 6048 022636 20$: 6049 ; 6050 ; 6051 022636 006302 ASL R2 ;CONVERT SET NUMBER (0,1,2,3) TO TASK DMSED - SIGNIFICANT EVENT DIR MACRO M1113 03-APR-86 20:41 PAGE 114-1 DIRECTIVE -- WAITFOR SINGLE EVENT FLAG 6052 022640 062702 000014 ADD #TS.WF0,R2 ;STATUS FOR ATL NODE. 6053 ; 6054 022644 010165 000024 MOV R1,A.FM+0(R5) ;SET MASK AND STATUS IN ATL NODE 6055 022650 110265 000014 MOVB R2,A.TS(R5) 6056 ; 6057 022654 104401 TRAP DR.01 ;RETURN STS=+1 DMSED - SIGNIFICANT EVENT DIR MACRO M1113 03-APR-86 20:41 PAGE 115 DIRECTIVE -- WAITFOR LOGICAL 'OR' OF FLAGS 6059 .SBTTL DIRECTIVE -- WAITFOR LOGICAL 'OR' OF FLAGS 6060 ;+ 6061 ; THE "WAITFOR LOGICAL 'OR' OF FLAGS" DIRECTIVE 6062 ; 6063 ; 6064 ; IF THE INDICATED CONDITION IS MET AT ISSUANCE, TASK EXECUTION IS 6065 ; EFFECTIVELY NOT SUSPENDED. (ACTUALLY, THE TASK IS ALWAYS SUSPENDED, 6066 ; 6067 ; 6068 ; A THREE WORD DPB OF THE FOLLOWING FORMAT IS USED TO WAIT FOR EVENT FLAGS OF A GIVEN SET 6069 ; 6070 ; WD. 00 -- DIC (43.) & DPB SIZE (3.) 6071 ; WD. 01 -- SET NUMBER 6072 ; WD. 02 -- FLAGS MASK FOR THIS SET 6073 ; 6074 ; 6075 ; A FIVE-WORD DPB OF THE FOLLOWING FORMAT IS USED TO WAITFOR EVENT FLAGS 6076 ; OF SET FOUR: 6077 ; 6078 ; WD. 00 -- DIC (15.) & DPB SIZE (5.), 6079 ; WD. 01 -- MASK WORD FOR FLAGS 1-16, 6080 ; WD. 02 -- MASK WORD FOR FLAGS 17-32, 6081 ; WD. 03 -- MASK WORD FOR FLAGS 33-48, 6082 ; WD. 04 -- MASK WORD FOR FLAGS 49-64. 6083 ; 6084 ; MASK WORD BITS FROM RIGHT-TO-LEFT REPRESENT INCREASING EVENT FLAG 6085 ; NUMBERS, AND A SET MASK WORD BIT INDICATES "WAITFOR THE CORRESPONDING 6086 ; EVENT FLAG". 6087 ; 6088 ; THE FOLLOWING STATUS IS RETURNED. 6089 ; 6090 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS 6091 ; OF ONE (+1). 6092 ; 6093 ; CC-C SET TO INDICATE REJECTION, AND DIRECTIVE STATUS OF: 6094 ; 6095 ; R0 -- -97 -- NO EVENT FLAG SPECIFIED IN MASK WORD(S), 6096 ; R0 -- -99 -- DIC OR DPB SIZE IS INVALID. 6097 ;- 6098 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE 6099 ; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE 6100 ; KERNEL STACK, AND R0-R5 SET AS FOLLOWS: 6101 ; R0 -- PC OF EMT INSTRUCTION 6102 ; R1 -- WORD FOLLOWING DIC & SIZE 6103 ; R2 -- DPB SIZE 6104 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE) 6105 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK) 6106 ; 6107 ; 6108 ; 6109 ; EVEN FLAG SET IS FOUR. I.E., WAIT FOR ANY OF SIXTY-FOUR EVENT FLAGS. 6110 ; 6111 ; SET 64-BIT FLAGS MASK IN ATL NODE AND ACCUMULATE 'OR' OF MASK WORDS 6112 ; IN R2. THE 64-BIT MASK IS SET BY MOVING FOUR WORDS FROM THE DPB TO 6113 ; THE ATL NODE. 6114 ; 6115 ; IF NO FLAG INDICATED (ALL 64 BITS ARE ZERO), RETURN STS=-97. DMSED - SIGNIFICANT EVENT DIR MACRO M1113 03-APR-86 20:41 PAGE 115-1 DIRECTIVE -- WAITFOR LOGICAL 'OR' OF FLAGS 6116 ; 6117 022656 022702 000005 .D.WFL::CMP #5,R2 ;THREE OR 5 WORD DPB? 6118 022662 001020 BNE 10$ ;THREE WORD DPB (WAIT FOR ONE SET) 6119 022664 010502 MOV R5,R2 ;SETUP R2 TO FILL ATL NODE 6120 022666 062702 000024 ADD #A.FM,R2 6121 022672 MFPS (R1)+,@R2 ;MASK FOR FLAGS 1-16 022672 012112 MOV (R1)+,@R2 6122 022674 012203 MOV (R2)+,R3 6123 ;MASK FOR FLAGS 17-32 6124 022676 MFPS (R1)+,@R2 022676 012112 MOV (R1)+,@R2 6125 022700 052203 BIS (R2)+,R3 6126 ;MASK FOR FLAGS 33-48 6127 022702 MFPS (R1)+,@R2 022702 012112 MOV (R1)+,@R2 6128 022704 052203 BIS (R2)+,R3 6129 022706 MFPS @R1,@R2 ;MASK FOR FLAGS 49-64 (LAST DPB WORD) 022706 011112 MOV @R1,@R2 6130 022710 051203 BIS @R2,R3 6131 022712 001731 BEQ SEX97 ;RETURN STS=-97 IF NO FLAG INDICATED 6132 ; 6133 022714 112765 000024 000014 MOVB #TS.WF4,A.TS(R5) ;SET WAITFOR-SET-FOUR TASK STATUS 6134 ; 6135 022722 104401 TRAP DR.01 ;RETURN DIRECTIVE STS=+1 6136 ; 6137 022724 10$: MFPS (R1)+,R2 ;FIND THE SET NUMBER 022724 012102 MOV (R1)+,R2 6138 022726 001415 BEQ 30$ ;ILLEGAL SET NUMBER 6139 022730 MFPS (R1)+,R3 ;FIND THE FLAGS TO WAIT FOR 022730 012103 MOV (R1)+,R3 6140 022732 020227 000004 CMP R2,#4 ;LEGAL SET NUMBER? 6141 022736 101011 BHI 30$ ;NO -- ILLEGAL SET TO WAIT FOR 6142 022740 005302 DEC R2 ;DECREMENT SO SET1 IS 0 6143 022742 006302 ASL R2 ;MULTIPLY BY 2 6144 022744 062702 000014 ADD #TS.WF0,R2 ;POINT TO THE CORRECT ATL STATUS 6145 022750 110265 000014 MOVB R2,A.TS(R5) ;SET THE CORRECT STATUS IN THE ATL NODE 6146 022754 010365 000024 MOV R3,A.FM(R5) ;SET UP THE FLAGS MASK WORD FOR THESE EVENT FLAGS 6147 022760 104401 TRAP DR.01 ;RETURN STS +1 6148 ; 6149 022762 104636 30$: TRAP DE.98 ;ILLEGAL SET NUMBER DMSED - SIGNIFICANT EVENT DIR MACRO M1113 03-APR-86 20:41 PAGE 116 DIRECTIVE -- WAITFOR NEXT SIGNIFICANT EVENT 6151 .SBTTL DIRECTIVE -- WAITFOR NEXT SIGNIFICANT EVENT 6152 ;+ 6153 ; THE "WAIT FOR NEXT SIGNIFICANT EVENT" DIRECTIVE 6154 ; 6155 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO SUSPEND THE EXECUTION OF THE 6156 ; ISSUING TASK UNTIL THE NEXT SIGNIFICANT EVENT HAS BEEN DECLARED. 6157 ; 6158 ; A ONE WORD DPB OF THE FOLLOWING FORMAT IS USED: 6159 ; 6160 ; WD. 00 -- DIC (49.) & DPB SIZE (1.). 6161 ; 6162 ; THE FOLLOWING STATUS IS RETURNED: 6163 ; 6164 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS 6165 ; OF ONE (+1). 6166 ; 6167 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF: 6168 ; 6169 ; R0 -- -99 -- DIC OR DPB SIZE IS INVALID. 6170 ;- 6171 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE 6172 ; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE 6173 ; KERNEL STACK, AND R0-R5 SET AS FOLLOWS: 6174 ; R0 -- PC OF EMT INSTRUCTION 6175 ; R1 -- WORD FOLLOWING DIC & SIZE 6176 ; R2 -- DPB SIZE 6177 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE) 6178 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK) 6179 ; 6180 ; 6181 022764 011505 .D.WSE::MOV @R5,R5 ;ADVANCE R5 (ATL NODE POINTER) 6182 022766 012737 000001 001016' MOV #EV.SE,.SEWFL 6183 022774 104401 TRAP DR.01 ;RETURN STS=+1. 6184 ; DMSED - SIGNIFICANT EVENT DIR MACRO M1113 03-APR-86 20:41 PAGE 117 DIRECTIVE -- WAITFOR NEXT SIGNIFICANT EVENT 6186 6187 6188 .TITLE DMMKT - "MARK TIME" DIRECTIVE MODULE 6189 .SBTTL MARK TIME -- COPYRIGHT STATEMENT 6190 022776 IDENT$ 1,0 .IDENT /001000/ 6191 ; 6192 ; COPYRIGHT (C) 1975, 1984, 1985 BY 6193 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS. 6194 ; ALL RIGHTS RESERVED. 6195 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED 6196 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION 6197 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE- 6198 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. 6199 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED. 6200 ; 6201 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT 6202 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT 6203 ; CORPORATION. 6204 ; 6205 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS 6206 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL. 6207 ; 6208 ; MODULE: "MARK TIME" DIRECTIVE 6209 ; 6210 ; VERSION: 01-00 6211 ; 6212 ; AUTHOR: R. MCLEAN 6213 ; 6214 ; DATE: 19 APR 75 6215 ; 6216 ; 6217 ; THIS MODULE CONTAINS: 6218 ; 6219 ; 1 -- CODE TO SERVICE THE "MARK TIME" DIRECTIVE. 6220 ; 6221 ; MACROS 6222 6223 .MCALL CALL,RETURN,MFPI,MTPI,MTPS,MFPS DMMKT - "MARK TIME" DIRECTIVE MACRO M1113 03-APR-86 20:41 PAGE 118 DIRECTIVE -- MARK TIME 6225 .SBTTL DIRECTIVE -- MARK TIME 6226 ;+ 6227 ; THE "MARK TIME" DIRECTIVE 6228 ; 6229 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO DECLARE A SIGNIFICANT EVENT 6230 ; IN AN INDICATED TIME INTERVAL FROM ISSUANCE. 6231 ; 6232 ; IF AN EVENT FLAG IS SPECIFIED, IT IS CLEARED AT ISSUANCE AND SET 6233 ; AT THE TIME OF THE SIGNIFICANT EVENT. 6234 ; 6235 ; 6236 ; IF AN EVENT FLAG NUMBER 6237 ; IS SPECIFIED, THE SIGNIFICANT EVENT WILL STILL OCCUR AFTER 6238 ; THE INDICATED TIME INTERVAL. 6239 ; 6240 ; A FOUR WORD DPB OF THE FOLLOWING FORMAT IS USED: 6241 ; 6242 ; WD. 00 -- DIC (23.) & DPB SIZE (5.), 6243 ; WD. 01 -- EVENT FLAG NUMBER (EFN), 6244 ; WD. 02 -- TIME INTERVAL MAGNITUDE, ( IN TICS) 6245 ; WD. 03 -- RESCHEDULE INTERVAL (IN TICS) 6246 ; WD. 04 -- AST TRAP ADDRESS 6247 ; 6248 ; THE FOLLOWING STATUS IS RETURNED: 6249 ; 6250 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS 6251 ; OF ONE (+1). 6252 ; 6253 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF: 6254 ; 6255 ; -01 -- UNAVAILABLE ENTRY (FOR CLOCK LIST), 6256 ; 6257 ; -97 -- INVALID EVENT FLAG NUMBER (EFN<0 OR EFN>64), 6258 ; -99 -- DIC OR DPB SIZE IS INVALID. 6259 ;- 6260 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE 6261 ; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE 6262 ; STACK, AND R0-R5 SET AS FOLLOWS: 6263 ; 6264 ; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE). 6265 ; 6266 ; 6267 ;R1 IS POINTING TO EFN IN DPB 6268 ; 6269 ; 6270 022776 .D.MKT::CALL .CEFN ;CONVERT EFN TO: (1) FLAG WORD ADDRESS 022776 004737 044320' JSR PC,.CEFN 6271 ;IN R2, AND (2) FLAG MASK IN R3 (R2 IS 6272 ;POINTING TO EFN). IF EFN<0, OR EFN>64., 6273 ;RETURN STS=-97. IF EFN=0 (NO EVENT FLAG 6274 ;SPECIFIED), RETURN WITH R2=R3=00. 6275 ;CONDITION CODES ARE SET PER "TST R3". 6276 ; 6277 023002 001001 BNE 10$ ;ALL OK WITH EFN 6278 023004 104637 TRAP DE.97 ;RETURN STS=-97 6279 023006 062701 000004 10$: ADD #4,R1 ;R1 IS POINTING TO THE EFN, ADVANCE TO THE 6280 ;FIRST WORD (MAGNITUDE) OF TIME INTERVAL. DMMKT - "MARK TIME" DIRECTIVE MACRO M1113 03-APR-86 20:41 PAGE 118-1 DIRECTIVE -- MARK TIME 6281 ; 6282 023012 010246 MOV R2,-(SP) ;PUSH EFN WORD ADDRESS 6283 023014 010346 MOV R3,-(SP) ;PUSH EFN MASK 6284 ; 6285 023016 MFPI (R1) ;PUSH THE RESCHED INTERVAL 023016 011146 MOV (R1),-(SP) 6286 023020 MFPI -(R1) ;PUSH TIME INTERVAL MAGNITUED MAGNITUDE 023020 014146 MOV -(R1),-(SP) 6287 023022 MFPI 4(R1) ;PUSH AST TRAP ADDRES 023022 016146 000004 MOV 4(R1),-(SP) 6288 ; 6289 ; 6290 ; STACK & REGISTER SUMMARY: 6291 ; 6292 ; SP+10 -- FLAG WORD ADDRESS (OR ZERO) 6293 ; SP+06 -- FLAG MASK (OR ZERO) 6294 ; SP+04 -- TIME RESCHEDULE INTERVAL 6295 ; SP+02 -- TIME INTERVAL 6296 ; SP+00 -- AST TRAP ADDRESS 6297 ; 6298 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK 6299 ; R1 -- ADDRESS OF NODE FOR CLOCK QUEUE 6300 ; 6301 023026 046676 000006 000010 BIC +6(SP),@+10(SP) ;CLEAR INDICATED EVENT FLAG 6302 ; 6303 023034 012700 002376' MOV #.CLKBA,R0 ;POINT TO BEGINNING OF CLOCK LIST 6304 023040 022700 002602' 20$: CMP #.CLKEA,R0 ;END OF LIST? 6305 023044 001001 BNE 30$ ;NO -- MUST BE OK 6306 023046 104777 TRAP DE.01 ;YES -- RAN OUT OF CLOCK ENTRIES 6307 023050 005710 30$: TST @R0 ;LOOK FOR A FREE ENTRY 6308 023052 001403 BEQ 40$ ;FOUND ONE 6309 023054 062700 000014 ADD #C.SZ,R0 ;NOT HERE -- TRYNEXT ENTRY 6310 023060 000767 BR 20$ 6311 ; 6312 ; 6313 023062 010520 40$: MOV R5,(R0)+ ;ATL NODE OF ISSUING TASK 6314 023064 012620 MOV (SP)+,(R0)+ ;AST ADDRESS 6315 023066 012620 MOV (SP)+,(R0)+ ;(POP) SCHEDULE INTERVAL 6316 023070 012620 MOV (SP)+,(R0)+ ;(POP) RESCHEDULE INTERVAL 6317 023072 012620 MOV (SP)+,(R0)+ ;(POP) EVENT FLAG MASK 6318 023074 012620 MOV (SP)+,(R0)+ ;(POP) EVENT FLAG WORD ADDRESS 6319 ; 6320 023076 104401 TRAP DR.01 ;RETURN STS=+1 6321 ; DMMKT - "MARK TIME" DIRECTIVE MACRO M1113 03-APR-86 20:41 PAGE 119 DIRECTIVE -- MARK TIME 6323 6324 6325 .TITLE DMCMT - "CANCEL MARK TIME" DIRECTIVE MODULE 6326 .SBTTL CANCEL MARK TIME -- COPYRIGHT STATEMENT 6327 023100 IDENT$ 1,0 .IDENT /001000/ 6328 ; 6329 ; COPYRIGHT (C) 1975, 1984, 1985 BY 6330 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS. 6331 ; ALL RIGHTS RESERVED. 6332 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED 6333 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION 6334 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE- 6335 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. 6336 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED. 6337 ; 6338 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT 6339 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT 6340 ; CORPORATION. 6341 ; 6342 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS 6343 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL. 6344 ; 6345 ; MODULE: "CANCEL MARK TIME" DIRECTIVE 6346 ; 6347 ; VERSION: 01-00 6348 ; 6349 ; AUTHOR: R. MCLEAN 6350 ; 6351 ; DATE: 19 MAR 75 6352 ; 6353 ; 6354 ; THIS MODULE CONTAINS: 6355 ; 6356 ; 1 -- CODE TO SERVICE THE "CANCEL MARK TIME" DIRECTIVE. 6357 ; 6358 ; MACROS 6359 ; 6360 6361 .MCALL CALL,RETURN DMCMT - "CANCEL MARK TIME" DI MACRO M1113 03-APR-86 20:41 PAGE 120 DIRECTIVE -- CANCEL MARK-TIME REQUESTS 6363 .SBTTL DIRECTIVE -- CANCEL MARK-TIME REQUESTS 6364 ;+ 6365 ; THE "CANCEL MARK-TIME REQUESTS" DIRECTIVE 6366 ; 6367 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO CANCEL MARK-TIME REQUESTS 6368 ; THAT HAVE BEEN MADE BY THE ISSUING TASK. 6369 ; 6370 ; A ONE WORD DPB OF THE FOLLOWING FORMAT IS USED TO CANCEL ALL MARK-TIME 6371 ; REQUESTS THAT HAVE BEEN MADE BY THE ISSUING TASK: 6372 ; 6373 ; WD. 00 -- DIC (21.) & DPB SIZE (1.). 6374 ; 6375 ; 6376 ; THE FOLLOWING STATUS IS RETURNED: 6377 ; 6378 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS 6379 ; OF ONE (R0 - +1). 6380 ; 6381 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF: 6382 ; 6383 ; R0 -- -97 -- INVALID EVENT FLAG NUMBER (EFN<0 OR EFN>64), 6384 ; R0 -- -99 -- DIC OR DPB SIZE IS INVALID. 6385 ;- 6386 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE 6387 ; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE 6388 ; STACK, AND R0-R5 SET AS FOLLOWS: 6389 ; R0 -- PC OF EMT INSTRUCTION 6390 ; R1 -- WORD FOLLOWING DIC & SIZE 6391 ; R2 -- DPB SIZE 6392 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE) 6393 ; 6394 ; 6395 ; ALL MARK-TIME REQUESTS BY THE ISSUING TASK ARE TO BE DELETED 6396 ; FROM THE CLOCK QUEUE. 6397 ; 6398 ; 6399 023100 010546 .D.CMT::MOV R5,-(SP) ;SAVE CURRENT TASK POINTER 6400 023102 012704 002376' MOV #.CLKBA,R4 ;USE R4 TO SCAN DEQUE 6401 ; 6402 023106 020427 002602' 50$: CMP R4,#.CLKEA ;END OF SCAN (END OF DEQUE)? 6403 023112 001002 BNE 60$ 6404 023114 012605 MOV (SP)+,R5 ;RESTORE CURRENT TASK POINTER 6405 023116 104401 TRAP DR.01 ;YES -- RETURN STS=+1. 6406 ;NO -- CHECK NODE POINTED TO BY R4 6407 023120 026405 000000 60$: CMP C.AT(R4),R5 ;YES -- WAS REQUEST MADE BY ISSUING TASK? 6408 023124 001005 BNE 45$ ;NO -- NEXT NODE 6409 ;DELETE NODE (PER R4) FROM CLOCK QUEUE, AND 6410 023126 CALL .CKDEL ;QUEUE NODE (R4 IS NOT ALTERED). 023126 004737 044406' JSR PC,.CKDEL 6411 ; 6412 ; 6413 023132 000765 BR 50$ ;TEST FOR END OF DEQUE 6414 ; 6415 023134 012605 90$: MOV (SP)+,R5 ;RESTORE CURRENT TASK POINTER 6416 023136 104637 TRAP DE.97 ;TO RETURN STS=-97. 6417 ; 6418 023140 062704 000014 45$: ADD #C.SZ,R4 ;UPDATE THE Q SIZE TO LOOK AT NEXT ENTRY DMCMT - "CANCEL MARK TIME" DI MACRO M1113 03-APR-86 20:41 PAGE 120-1 DIRECTIVE -- CANCEL MARK-TIME REQUESTS 6419 023144 000760 BR 50$ 6420 ; DMCMT - "CANCEL MARK TIME" DI MACRO M1113 03-APR-86 20:41 PAGE 121 DIRECTIVE -- CANCEL MARK-TIME REQUESTS 6422 6423 .TITLE DMEXT - "EXIT" DIRECTIVE MODULE 6424 .SBTTL EXIT -- COPYRIGHT STATEMENT 6425 023146 IDENT$ 1,0 .IDENT /001000/ 6426 ; 6427 ; COPYRIGHT (C) 1975, 1984, 1985 BY 6428 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS. 6429 ; ALL RIGHTS RESERVED. 6430 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED 6431 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION 6432 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE- 6433 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. 6434 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED. 6435 ; 6436 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT 6437 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT 6438 ; CORPORATION. 6439 ; 6440 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS 6441 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL. 6442 ; 6443 ; MODULE: "EXIT" DIRECTIVE 6444 ; 6445 ; VERSION: 01-00 6446 ; 6447 ; AUTHOR: R. MCLEAN 6448 ; 6449 ; DATE: 19 MAR 75 6450 ; 6451 ; 6452 ; THIS MODULE CONTAINS: 6453 ; 6454 ; 1 -- CODE TO SERVICE THE "EXIT" DIRECTIVE 6455 ; 6456 ; MACROS 6457 ; 6458 6459 .MCALL CALL,RETURN DMEXT - "EXIT" DIRECTIVE MODU MACRO M1113 03-APR-86 20:41 PAGE 122 DIRECTIVE -- TASK EXIT 6461 .SBTTL DIRECTIVE -- TASK EXIT 6462 ;+ 6463 ; THE "TASK EXIT" DIRECTIVE 6464 ; 6465 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO TERMINATE THE EXECUTION OF THE 6466 ; ISSUING TASK. 6467 ; 6468 ; A ONE WORD DPB OF THE FOLLOWING FORMAT IS USED: 6469 ; 6470 ; WD. 00 -- DIC (27.) & DPB SIZE (1.). 6471 ; 6472 ; THE FOLLOWING STATUS IS RETURNED: 6473 ; 6474 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS 6475 ; OF ONE (+1). 6476 ; 6477 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF: 6478 ; 6479 ; -99 -- DIC OR DPB SIZE IS INVALID. 6480 ;- 6481 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE 6482 ; DIRECTIVE ISSUING TASK'S PS, PC, & R1-R5 PUSHED ONTO THE 6483 ; STACK, AND R0-R5 SET AS FOLLOWS: 6484 ; R1 -- ADDRESS OF WORD FOLLOWING DIC & SIZE 6485 ; R2 -- DPB SIZE 6486 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE) 6487 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK) 6488 ; 6489 ; 6490 ; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE). 6491 ; 6492 ; R5 CONTAINS THE EXITING TASK'S ATL NODE ADDRESS. 6493 ; 6494 023146 042766 000340 000020 .D.EXT::BIC #000340,EM.DRO(SP) ;SET ISSUING TASK'S PROCESSRO PRIROITY TO ZERO TO 6495 ;PREVENT RETURN TO TASK IF EXIT DIRECTIVE HAS 6496 ;BEEN ISSUED FROM NON TASK LEVEL 6497 ; 6498 023154 112765 000026 000014 MOVB #TS.EXT,A.TS(R5) ;CHANGE STATUS TO "EXIT", INDICATE 6499 023162 005065 000024 CLR A.FM+0(R5) ;NO TERMINATION NOTIFICATION, AND 6500 023166 104401 TRAP DR.01 ;EXIT DIRECTIVE SERVICE (SET STS=+1) 6501 ; DMEXT - "EXIT" DIRECTIVE MODU MACRO M1113 03-APR-86 20:41 PAGE 123 DIRECTIVE -- TASK EXIT 6503 6504 6505 .TITLE DMQIO - "QUEUE I/O" DIRECTIVE MODULE 6506 .SBTTL QUEUE I/O -- COPYRIGHT STATEMENT 6507 023170 IDENT$ 1,0 .IDENT /001000/ 6508 ; 6509 ; COPYRIGHT (C) 1975, 1984, 1985 BY 6510 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS. 6511 ; ALL RIGHTS RESERVED. 6512 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED 6513 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION 6514 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE- 6515 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. 6516 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED. 6517 ; 6518 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT 6519 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT 6520 ; CORPORATION. 6521 ; 6522 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS 6523 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL. 6524 ; 6525 ; MODULE: "QUEUE I/O" DIRECTIVE 6526 ; 6527 ; VERSION: 01-00 6528 ; 6529 ; AUTHOR: R. MCLEAN 6530 ; 6531 ; DATE: 19 JUL 75 6532 ; 6533 ; 6534 ; THIS MODULE CONTAINS: 6535 ; 6536 ; 1 -- CODE TO SERVICE THE "QUEUE I/O" DIRECTIVE. 6537 ; 2 -- CODE TO SERVICE THE "QUEUE I/O AND WAIT" DIRECTIVE. 6538 ; 6539 ; MACROS 6540 ; 6541 6542 .MCALL CALL,RETURN,MFPI,MTPI,MTPS,MFPS DMQIO - "QUEUE I/O" DIRECTIVE MACRO M1113 03-APR-86 20:41 PAGE 124 DIRECTIVE -- QUEUE I/O 6544 .SBTTL DIRECTIVE -- QUEUE I/O 6545 ;+ 6546 ; THE "QUEUE I/O" DIRECITVE 6547 ; 6548 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO PLACE AN I/O REQUEST FOR AN 6549 ; INDICATED DEVICE IN A QUEUE OF PRIORITY ORDERED REQUESTS FOR THAT DEVICE- 6550 ; UNIT. THE DEVICE-UNIT IS SPECIFIED AS A LOGICAL UNIT NUMBER (LUN), WHICH 6551 ; IS MAPPED INTO A PHYSICAL UNIT SPECIFICATION PER LUN ASSIGNMENT. 6552 ; 6553 ; EACH LUN IS REPRESENTED BY AN ENTRY IN THE ISSUING TASK'S LUT (LOGICAL 6554 ; UNIT TABLE) IN THE TASK'S HEADER. EACH PHYSICAL UNIT IS REPRESENTED 6555 ; BY AN ENTRY IN THE PUD (PHYSICAL UNIT DIRECTORY). WHEN A LUN IS 6556 ; ASSIGNED TO A PHYSICAL UNIT, THE ADDRESS OF THE CORRESPONDING PUD 6557 ; ENTRY IS SET IN THE CORRESPONDING LUT ENTRY. WHEN A LUN IS NOT 6558 ; ASSIGNED TO A PHYSICAL UNIT ("DEASSIGNED" OR "ASSIGNED TO NONE"), THE 6559 ; CORRESPONDING LUT ENTRY IS SET TO ZERO. 6560 ; 6561 ; NORMALLY, A SIGNIFICANT EVENT IS DECLARED BY HANDLER TASKS (VIA SYSTEM 6562 ; SUBROUTINES) UPON I/O COMPLETION. 6563 ; 6564 ; IF AN EVENT FLAG IS SPECIFIED, IT IS CLEARED WHEN THE REQUEST 6565 ; IS QUEUED, AND SET AT THE SIGNIFICANT EVENT. 6566 ; 6567 ; IF AN AST SERVICE ENTRY POINT IS SPECIFIED, THE AST WILL OCCUR 6568 ; UPON I/O COMPLETION WITH THE TASK'S PS, PC, VIRTUAL ZERO (DIRECTIVE 6569 ; STATUS), AND [ADDRESS OF I/O STATUS BLOCK] PUSHED ONTO THE TASK'S 6570 ; (USER) STACK. 6571 ; 6572 ; A 6-12 WORD DPB OF THE FOLLOWING FORMAT IS USED: 6573 ; 6574 ; WD. 00 -- DIC (01.) & DPB SIZE (6-12), 6575 ; WD. 01 -- I/O FUNCTION CODE, 6576 ; WD. 02 -- LUN, 6577 ; WD. 03 -- [EFN] & [PRIORITY], 6578 ; WD. 04 -- [ADDRESS OF I/O STATUS BLOCK], 6579 ; WD. 05 -- [I/O DONE AST SERVICE ENTRY POINT], 6580 ; WD. 06 -- PARAMETER #1, 6581 ; WD. 07 -- PARAMETER #2, 6582 ; WD. 10 -- PARAMETER #3, 6583 ; WD. 11 -- PARAMETER #4, 6584 ; WD. 12 -- PARAMETER #5, 6585 ; WD. 13 -- PARAMETER #6. 6586 ; 6587 ; THE FORMAT OF THE I/O REQUEST NODE CREATED IS DESCRIBED 6588 ; UNDER "SYMBOLIC DEFINITIONS". 6589 ; 6590 ; THE FOLLOWING STATUS IS RETURNED: 6591 ; 6592 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS 6593 ; OF ONE (+1). 6594 ; 6595 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF: 6596 ; 6597 ; -01 -- UNAVAILABLE POOL NODE FOR REQUEST QUEUE, 6598 ; -05 -- UNASSIGNED LUN, 6599 ; 6600 ; -95 -- INVALID PRIORITY (>250.), DMQIO - "QUEUE I/O" DIRECTIVE MACRO M1113 03-APR-86 20:41 PAGE 124-1 DIRECTIVE -- QUEUE I/O 6601 ; -96 -- INVALID LUN, 6602 ; -97 -- INVALID EFN (>64.), 6603 ; -98 -- PART OF DPB IS OUT OF ISSUING TASK'S ADDRESS SPACE, 6604 ; -99 -- DIC OR DPB SIZE IS INVALID. 6605 ; THE "QUEUE I/O AND WAIT" DIRECITVE 6606 ; 6607 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO PLACE AN I/O REQUEST FOR AN 6608 ; INDICATED DEVICE IN A QUEUE OF PRIORITY ORDERED REQUESTS FOR THAT DEVICE- 6609 ; UNIT. THE DEVICE-UNIT IS SPECIFIED AS A LOGICAL UNIT NUMBER (LUN), WHICH 6610 ; IS MAPPED INTO A PHYSICAL UNIT SPECIFICATION PER LUN ASSIGNMENT. 6611 ; 6612 ; EACH LUN IS REPRESENTED BY AN ENTRY IN THE ISSUING TASK'S LUT (LOGICAL 6613 ; UNIT TABLE) IN THE TASK'S HEADER. EACH PHYSICAL UNIT IS REPRESENTED 6614 ; BY AN ENTRY IN THE PUD (PHYSICAL UNIT DIRECTORY). WHEN A LUN IS 6615 ; ASSIGNED TO A PHYSICAL UNIT, THE ADDRESS OF THE CORRESPONDING PUD 6616 ; ENTRY IS SET IN THE CORRESPONDING LUT ENTRY. WHEN A LUN IS NOT 6617 ; ASSIGNED TO A PHYSICAL UNIT ("DEASSIGNED" OR "ASSIGNED TO NONE"), THE 6618 ; CORRESPONDING LUT ENTRY IS SET TO ZERO. 6619 ; 6620 ; NORMALLY, A SIGNIFICANT EVENT IS DECLARED BY HANDLER TASKS (VIA SYSTEM 6621 ; SUBROUTINES) UPON I/O COMPLETION. 6622 ; 6623 ; IF AN EVENT FLAG IS SPECIFIED, IT IS CLEARED WHEN THE REQUEST 6624 ; IS QUEUED, AND SET AT THE SIGNIFICANT EVENT. 6625 ; IF AN EVENT FLAG IS SPECIFIED, A WAIT DIRECTIVE IS ALSO 6626 ; EXECUTED BEFORE TASK SWITCHING IS ENABLED. 6627 ; 6628 ; IF NO EVENT FLAG IS SPECIFIED THE I/O WILL BE QUEUE'D 6629 ; AND THE WAIT DIRECTIVE WILL BE REJECTED (STATUS -97.) 6630 ; 6631 ; 6632 ; IF AN AST SERVICE ENTRY POINT IS SPECIFIED, THE AST WILL OCCUR 6633 ; UPON I/O COMPLETION WITH THE TASK'S PS, PC, VIRTUAL ZERO (DIRECTIVE 6634 ; STATUS), AND [ADDRESS OF I/O STATUS BLOCK] PUSHED ONTO THE TASK'S 6635 ; (USER) STACK. 6636 ; 6637 ; A 6-12 WORD DPB OF THE FOLLOWING FORMAT IS USED: 6638 ; 6639 ; WD. 00 -- DIC (03.) & DPB SIZE (6-12), 6640 ; WD. 01 -- I/O FUNCTION CODE, 6641 ; WD. 02 -- LUN, 6642 ; WD. 03 -- [EFN] & [PRIORITY], 6643 ; WD. 04 -- [ADDRESS OF I/O STATUS BLOCK], 6644 ; WD. 05 -- [I/O DONE AST SERVICE ENTRY POINT], 6645 ; WD. 06 -- PARAMETER #1, 6646 ; WD. 07 -- PARAMETER #2, 6647 ; WD. 10 -- PARAMETER #3, 6648 ; WD. 11 -- PARAMETER #4, 6649 ; WD. 12 -- PARAMETER #5, 6650 ; WD. 13 -- PARAMETER #6. 6651 ; 6652 ; THE FORMAT OF THE I/O REQUEST NODE CREATED IS DESCRIBED 6653 ; UNDER "SYMBOLIC DEFINITIONS". 6654 ; 6655 ; THE FOLLOWING STATUS IS RETURNED: 6656 ; 6657 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS DMQIO - "QUEUE I/O" DIRECTIVE MACRO M1113 03-APR-86 20:41 PAGE 124-2 DIRECTIVE -- QUEUE I/O 6658 ; OF ONE (+1). 6659 ; 6660 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF: 6661 ; 6662 ; -01 -- UNAVAILABLE POOL NODE FOR REQUEST QUEUE, 6663 ; -05 -- UNASSIGNED LUN, 6664 ; -06 -- HANDLER TASK NOT DECLARED RESIDENT, 6665 ; 6666 ; -95 -- INVALID PRIORITY (>250.), 6667 ; -96 -- INVALID LUN, 6668 ; -97 -- INVALID EFN (>64.), OR 0 EVENT FLAG (I/O QUEUE'D BUT WAIT NOT EXECUTED), 6669 ; -98 -- PART OF DPB IS OUT OF ISSUING TASK'S ADDRESS SPACE, 6670 ; -99 -- DIC OR DPB SIZE IS INVALID. 6671 ;- 6672 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE 6673 ; DIRECTIVE ISSUING TASK'S PS, PC, & R5-R0 PUSHED ONTO THE 6674 ; KERNEL STACK, AND R5-R0 SET AS FOLLOWS: 6675 ; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE). 6676 ; 6677 023170 010346 .D.QIO::MOV R3,-(SP) ;SAVE THE DIC TO DETERMINE IF QIO& WAIT OR JUST QIO. 6678 ; 6679 023172 20$: MFPS (R1)+,R3 ;SET R3 TO FUNCTION CODE 023172 012103 MOV (R1)+,R3 6680 ;(LEAVE R1 POINTING TO LUN WORD) 6681 ; 6682 023174 MFPI (R1)+ ;PUSH LUN, AND CONVERT TO PUD ENTRY ADR 023174 012146 MOV (R1)+,-(SP) 6683 023176 CALL .VCLUN ;(LEAVE R1 POINTING TO EFN/PRI WORD) 023176 004737 016104' JSR PC,.VCLUN 6684 ;IF INVALID LUN, RETURN STS=-96. 6685 023202 011600 MOV @SP,R0 ;SET R0 TO PUD ENTRY ADR IF LUN ASSIGNED 6686 023204 001001 BNE 40$ ;IF UN-ASSIGNED LUN, RETURN STS=-05. 6687 023206 104773 TRAP DE.05 6688 023210 010246 40$: MOV R2,-(SP) ;PUSH DPB SIZE 6689 ; 6690 ;TO ACCESS REQUESTOR'S HEADER BY '.VCLUN'). 6691 ; 6692 023212 MFPI +4(R1) ;PUSH I/O DONE AST ENTRY PT (OR ZERO) 023212 016146 000004 MOV +4(R1),-(SP) 6693 ; 6694 023216 MFPI +02(R1) ;PUSH I/O STATUS BLOCK ADR (OR ZERO), 023216 016146 000002 MOV +02(R1),-(SP) 6695 023222 011602 MOV @SP,R2 ;AND CLEAR TWO-WORD STATUS BLOCK. 6696 023224 001404 BEQ 50$ ;(IF SPECIFIED). IF PART OF STATUS 6697 023226 005046 CLR -(SP) ;OUT OF ADDRESS SPACE, RETURN 6698 023230 MTPI (R2)+ 023230 012622 MOV (SP)+,(R2)+ 6699 023232 005046 CLR -(SP) 6700 023234 MTPI @R2 023234 012612 MOV (SP)+,@R2 6701 023236 50$: 6702 023236 010346 MOV R3,-(SP) ;PUSH I/O FUNCTION CODE WORD 6703 ; 6704 ;R1 IS POINTING TO [EFN] IN DPB. 6705 ; 6706 023240 CALL .CEFN ;CONVERT EFN TO: (1) FLAG WORD ADDRESS 023240 004737 044320' JSR PC,.CEFN DMQIO - "QUEUE I/O" DIRECTIVE MACRO M1113 03-APR-86 20:41 PAGE 124-3 DIRECTIVE -- QUEUE I/O 6707 ;IN R2, AND (2) FLAG MASK IN R3 (R2 IS 6708 ;POINTING TO EFN). IF EFN<0, OR EFN>64., 6709 ;RETURN STS=-97. IF EFN=0 (NO EVENT FLAG 6710 ;SPECIFIED), RETURN WITH R2=R3=00. 6711 ;CONDITION CODES ARE SET PER "TST R3". 6712 ; 6713 023244 MFPS @R1,R4 ;SET PRIORITY IN R4, EFN IN HIGH ORDER 023244 011104 MOV @R1,R4 6714 ;BYTE OF R0, AND ZERO IN LOW ORDER BYTE 6715 023246 010400 MOV R4,R0 ;OF R0 6716 023250 105004 CLRB R4 6717 023252 000304 SWAB R4 6718 023254 000300 SWAB R0 6719 023256 105000 CLRB R0 6720 ;IS A PRIORITY SPECIFIED? 6721 023260 001002 BNE 70$ ;YES -- CHECK ITS VALIDITY 6722 023262 156504 000010 BISB A.RP(R5),R4 ;NO -- USE RUN PARIORITY OF ISSUING TASK 6723 ;("BISB" INTO A CLEARED R4 EFFECTS A 6724 ;"MOVB" WITHOUT SIGN EXTENSION.) 6725 ; 6726 023266 70$: MFPI -(R1) ;PUSH LUN & FORM LUN/EFN WORD ON STACK. 023266 014146 MOV -(R1),-(SP) 6727 023270 050016 BIS R0,@SP ;(R1 IS LEFT POINTING TO LUN) 6728 ; 6729 023272 010446 MOV R4,-(SP) ;PUSH PRI/BYTE RESERVED FOR DPB SIZE 6730 ; 6731 ; STACK & REGISTER SUMMARY: 6732 ; 6733 ; SP+14 -- PUD ENTRY ADDRESS 6734 ; SP+12 -- DPB SIZE 6735 ; SP+10 -- AST ENTRY PT (OR ZERO) 6736 ; SP+06 -- I/O STATUS BUF ADR (OR ZERO) 6737 ; SP+04 -- I/O FUNCTION CODE 6738 ; SP+02 -- LUN/EFN WORD 6739 ; SP+00 -- PRI/RESERVED BYTE 6740 ; 6741 ; R5 -- ATL NODE ADR OF ISSUING TASK 6742 ; R2 & R3 SETUP TO CLEAR EVENT FLAG 6743 ; 6744 023274 116666 000012 000001 MOVB +12(SP),+1(SP) ;SET DPB SIZE IN "PRI/DPB-SIZE" WORD 6745 ; 6746 023302 010100 MOV R1,R0 ;SETUP R0 TO FETCH I/O PARAMETERS (FROM DPB) 6747 023304 062700 000010 ADD #10,R0 6748 023310 010046 MOV R0,-(SP) ;SAVE R0 6749 ; 6750 023312 012701 000040 MOV #32.,R1 ;SET UP TO PICK A NODE 6751 023316 CALL ..ALCB 023316 004737 045654' JSR PC,..ALCB 6752 023322 010001 MOV R0,R1 ;SET UP NODE ADDRESS 6753 023324 103001 BCC 79$ ;OK -- CHECK FUNCTION CODE 6754 023326 104777 TRAP DE.01 ;NO -- RETURN POOL EMPTY ERROR 6755 ; 6756 ; 6757 ; 6758 ; REQUEST CAN BE MADE -- STACK & REGISTER SUMMARY: 6759 ; 6760 ; SP+14 -- PUD ENTRY ADDRESS DMQIO - "QUEUE I/O" DIRECTIVE MACRO M1113 03-APR-86 20:41 PAGE 124-4 DIRECTIVE -- QUEUE I/O 6761 ; SP+12 -- DPB SIZE 6762 ; SP+10 -- AST ENTRY PT (OR ZERO) 6763 ; SP+06 -- I/O STATUS BUF ADR (OR ZERO) 6764 ; SP+04 -- I/O FUNCTION CODE 6765 ; SP+02 -- LUN/EFN WORD 6766 ; SP+00 -- PRI/DPB SIZE 6767 ; 6768 ; R5 -- ATL NODE ADR OF ISSUING TASK 6769 ; R1 -- I/O REQUEST NODE ADDRESS 6770 ; R2 & R3 SETUP TO CLEAR EVENT FLAG 6771 ; R0 -- POINTING TO FIRST PARAMETER WORD IN DPB 6772 ; 6773 023330 040312 79$: BIC R3,@R2 ;CLEAR EVENT FLAG, IFF SPECIFIED. 6774 ;NOTE -- IF NO EFN SPECIFIED, R3=R3=00. 6775 ;I.E., NO BITS IN LOCATION ZERO ARE CLEARED. 6776 023332 012600 MOV (SP)+,R0 ;RESTORE BUFFER ADDRESS 6777 ; 6778 ; FILL I/O REQUEST NODE 6779 ; 6780 023334 010104 MOV R1,R4 ;SETUP R4 TO FILL NODE 6781 023336 022424 CMP (R4)+,(R4)+ ;MOVE OVER LISTHEAD 6782 023340 016524 000016 MOV A.TD(R5),(R4)+ ;SET STD ADDRESS 6783 ; 6784 023344 010524 MOV R5,(R4)+ ;SET ATL NODE ADR OF REQUESTOR 6785 023346 012624 MOV (SP)+,(R4)+ ;(POP) SET PRI/DPB-SIZE WORD 6786 023350 011603 MOV @SP,R3 ;SAVE LUN/EFN 6787 023352 012624 MOV (SP)+,(R4)+ ;(POP) SET LUN/EFN WORD 6788 023354 012624 MOV (SP)+,(R4)+ ;(POP) SET I/O FUNCTION CODE 6789 023356 012624 MOV (SP)+,(R4)+ ;(POP) SET I/O STATUS BLK ADR (OR ZERO) 6790 023360 012624 MOV (SP)+,(R4)+ ;(POP) SET AST ENTRY PT (OR ZERO) 6791 023362 013724 001156' MOV .SYUIC,(R4)+ ;SET THE UIC 6792 ; 6793 023366 012602 MOV (SP)+,R2 ;(POP) SET DPB SIZE IN R2, CONVERT 6794 023370 162702 000006 SUB #6.,R2 ;TO NUMBER OF I/O PARAMETERS, AND 6795 023374 001402 BEQ 90$ ;MOVE PARAMETERS FROM DPB TO I/O 6796 023376 80$: ;REQUEST NODE. 6797 023376 MFPS (R0)+,(R4)+ 023376 012024 MOV (R0)+,(R4)+ 6798 023400 077202 SOB R2,80$ 6799 023402 90$: 6800 ; 6801 ; 6802 023402 012602 MOV (SP)+,R2 ;(POP) SET R2 TO PUD ENTRY ADDRESS, AND 6803 023404 016204 000020 MOV U.HA(R2),R4 ;SET R2 TO HANDLER TASK'S ATL NODE ADDRESS. 6804 ; 6805 ; IF FUNCTION CODE 'RF.XR' IS SET, THIS FUNCTION IS AN "EXPRESS" FUNCTION. 6806 ; EXPRESS REQUESTS ARE NORMALLY DE-QUEUED BEFORE NORMAL REQUESTS. VIZ., 6807 ; "KILL READ REQUEST", OR "RUNDOWN I/O ON TASK". 6808 ; 6809 023410 010137 023626' MOV R1,QNDSV ;SAVE THE QIO NODE ADDRESS 6810 023414 016100 000014 MOV R.FC(R1),R0 ;FIND THE FUNCTION CODE 6811 023420 020027 002500 CMP R0,#IO.STC ;CHECK TO SEE IF LEGAL 6812 023424 101457 BLOS 95$ ;YES -- DON'T NEED FCP 6813 023426 010246 MOV R2,-(SP) 6814 023430 010346 MOV R3,-(SP) 6815 023432 010203 MOV R2,R3 ;FIND THE PUD ADDRESS 6816 023434 016302 000040 MOV U.ACP(R3),R2 ;FIND THE STD ADDRESS OF THE ACP DMQIO - "QUEUE I/O" DIRECTIVE MACRO M1113 03-APR-86 20:41 PAGE 124-5 DIRECTIVE -- QUEUE I/O 6817 023440 001015 BNE 77$ ;FOUND ACP -- DON'T DIDDLE CODES 6818 023442 022700 011000 CMP #IO.WVB,R0 ;IS CODE WRITE VIRTUAL? 6819 023446 001003 BNE 74$ ;NO -- LOOK FOR READ 6820 023450 012761 000400 000014 MOV #IO.WLB,R.FC(R1) ;YES SET FUNCTON CODE 6821 023456 022700 010400 74$: CMP #IO.RVB,R0 ;IS FUNCTION CODE READ VIRTUAL? 6822 023462 001036 BNE 93$ ;NO -- FORGET IT 6823 023464 012761 001000 000014 MOV #IO.RLB,R.FC(R1) ;SET FUNCTION CODE 6824 023472 000432 BR 93$ 6825 023474 77$: 6829 023474 020027 010400 CMP R0,#IO.RVB ;CHECK FOR READ/WRITE VIRTUAL 6830 023500 001403 BEQ 71$ ;YES -- ATTEMPT TO MAP IT 6831 023502 020027 011000 CMP R0,#IO.WVB ;MAYBE TRY WRITE 6832 023506 001003 BNE 73$ ;NO -- CALL FCP 6833 023510 71$: CALL ..VTOL ;TRY AND MAP 023510 004737 050406' JSR PC,..VTOL 6834 023514 103021 BCC 93$ ;MADE IT -- DON'T CALL FCP 6835 023516 010337 023630' 73$: MOV R3,QNDSV+2 ;SET PUD ADDRESS 6836 023522 016137 000014 023632' MOV R.FC(R1),QNDSV+4 ;SET FUNCTION CODE 6837 023530 012701 023634' MOV #PRMBLK,R1 ;POINTER TO BUFFER ADDRESS AND EFN 6838 023534 CALL .SEND ;SEND BLOCK 023534 004737 024006' JSR PC,.SEND 6839 023540 005003 CLR R3 6840 023542 005004 CLR R4 ;SET DEFAULT PARTITION AND PRI FOR ACP 6841 023544 010102 MOV R1,R2 6842 023546 CALL .REQS ;REQ ACP 023546 004737 015276' JSR PC,.REQS 6843 023552 012603 MOV (SP)+,R3 6844 023554 012602 MOV (SP)+,R2 6845 023556 000413 BR 100$ 6846 ; 6847 023560 012603 93$: MOV (SP)+,R3 ;RESTORE 6848 023562 012602 MOV (SP)+,R2 6849 023564 95$: ;(R2 CONTAINS PUD ENTRY ADDRESS) 6850 023564 062702 000022 ADD #U.RF,R2 ;SET R2 TO I/O REQUEST DEQUE LISTHEAD ADR 6851 ;(R1 IS SET TO REQUEST NODE ADDRESS) 6852 023570 CALL ..IPRI ;AND INSERT REQUEST NODE BY PRIORITY. 023570 004737 045360' JSR PC,..IPRI 6853 023574 052764 000010 000020 BIS #EF.NIR,A.EF+0(R4) ;NO -- SET TRIGGER EVENT FLAG 'EF.NIR'. 6854 023602 CALL ..DSEV ;DECLARE SIGNIFICANT EVENT TO EFFECT "TRIGGER" 023602 004737 045264' JSR PC,..DSEV 6855 ; 6856 023606 022627 000003 100$: CMP (SP)+,#3 ;CHECK THE DIC TO SEE IF QIO AND WAIT 6857 023612 001401 BEQ 120$ ;YES -- ISSUE THE WAIT 6858 ; ;NO -- JUST RETURN 6859 023614 104401 TRAP DR.01 ;RETURN STS=+1 6860 ; 6861 023616 105003 120$: CLRB R3 ;SET UP FOR THE WAIT DIRECTIVE 6862 023620 000303 SWAB R3 6863 023622 000137 022602' JMP .D.WFO ;ISSUE WAIT DIRECTIVE 6864 ; 6865 023626 000000 000000 000000 QNDSV: .WORD 0,0,0 ;SAVE AREA FOR NODE 6866 ; 6867 023634 023626' PRMBLK: .WORD QNDSV ;POINTER TO SEND BUFFER 6868 023636 000000 .WORD 0 ;EFN (0) DMQIO - "QUEUE I/O" DIRECTIVE MACRO M1113 03-APR-86 20:41 PAGE 125 DIRECTIVE -- QUEUE I/O 6870 6871 .TITLE DMSAR - SEND & RECEIVE DIRECTIVES MODULE 6872 .SBTTL SEND AND RECEIVE -- COPYRIGT STATEMENT 6873 023640 IDENT$ 2,0 .IDENT /002000/ 6874 ; 6875 ; COPYRIGHT (C) 1975, 1984, 1985 BY 6876 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS. 6877 ; ALL RIGHTS RESERVED. 6878 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED 6879 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION 6880 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE- 6881 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. 6882 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED. 6883 ; 6884 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT 6885 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT 6886 ; CORPORATION. 6887 ; 6888 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS 6889 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL. 6890 ; 6891 ; 6892 ; MODULE: SEND & RECEIVE DIRECTIVES 6893 ; 6894 ; VERSION: 01-00 6895 ; 6896 ; AUTHOR: R. MCLEAN 6897 ; 6898 ; DATE: 19 MAY 75 6899 ; 6900 ; 6901 ; THIS MODULE CONTAINS: 6902 ; 6903 ; 1 -- CODE TO SERVICE THE "SEND DATA" DIRECTIVE, 6904 ; 2 -- CODE TO SERVICE THE "SEND AND REQUEST OR RESUME" DIRECTIVE, 6905 ; 3 -- CODE TO SERVICE THE "RECEIVE DATA" DIRECTIVE, 6906 ; 4 -- CODE TO SERVICE THE "RECEIVE OR EXIT" DIRECTIVE, 6907 ; 5 -- CODE TO SERVICE THE "RECEIVE OR SUSPEND" DIRECTIVE, 6908 ; 6909 ; MACROS 6910 ; 6911 .MCALL CALL,RETURN,MTPI,MTPS,MFPI,MFPS DMSAR - SEND & RECEIVE DIRECT MACRO M1113 03-APR-86 20:41 PAGE 126 DIRECTIVE -- SEND DATA 6913 .SBTTL DIRECTIVE -- SEND DATA 6914 ;+ 6915 ; THE "SEND DATA" DIRECTIVE 6916 ; 6917 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO QUEUE (FIFO) A THIRTEEN WORD 6918 ; BLOCK OF DATA FOR A TASK TO RECEIVE. 6919 ; 6920 ; A FIVE WORD DPB OF THE FOLLOWING FORMAT IS USED: 6921 ; 6922 ; WD. 00 -- DIC (13.) & DPB SIZE (5.), 6923 ; WD. 01 -- RECEIVER TASK NAME (FIRST HALF), 6924 ; WD. 02 -- RECEIVER TASK NAME (SECOND HALF), 6925 ; WD. 03 -- ADDRESS OF THIRTEEN WORD DATA BLOCK, 6926 ; WD. 04 -- [EVENT FLAG NUMBER (EFN)]. 6927 ; 6928 ; WHEN AN EVENT FLAG IS SPECIFIED, A SIGNIFICANT EVENT IS DECLARED 6929 ; (IF THE DIRECTIVE IS PERFORMED) AND THE INDICATED EVENT FLAG IS SET. 6930 ; 6931 ; THE FOLLOWING STATUS IS RETURNED: 6932 ; 6933 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS 6934 ; OF ONE (+1). 6935 ; 6936 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF: 6937 ; 6938 ; -02 -- RECEIVER TASK NOT INSTALLED (NO STD ENTRY FOUND), 6939 ; -04 -- INSUFFICIENT POOL NODES FOR "SEND", 6940 ; 6941 ; -97 -- INVALID EVENT FLAG NUMBER (EFN<0 OR EFN>64), 6942 ; -99 -- DIC OR DPB SIZE IS INVALID. 6943 ;- 6944 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE 6945 ; DIRECTIVE ISSUING TASK'S PS, PC, & R1-R5 PUSHED ONTO THE 6946 ; STACK, AND R0-R5 SET AS FOLLOWS: 6947 ; R0 -- PC OF EMT INSTRUCTION 6948 ; R1 -- POINTER TO WORD FOLLOWING DIC & SIZE 6949 ; R2 -- DPB SIZE 6950 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE) 6951 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK ('.CRTSK') 6952 ; 6953 ; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE). 6954 ; 6955 023640 .D.SEN::CALL ..FSTD ;SET R2 TO STD ENTRY ADDRESS, OR TO 023640 004737 045574' JSR PC,..FSTD 6956 ;ZERO IF TASK NAME NOT FOUND (AND SET 6957 ;CONDITION CODES PER "TST R2"). 6958 ; 6959 ;ADVANCE R1 BY FOUR (PAST TASK NAME). 6960 ; 6961 023644 001406 BEQ .X.02 ;IF TASK NOT INSTALLED, RETURN STS=-02. 6962 ; 6963 ; R1 IS POINTING TO DPB WD. 03, AND R2 CONTAINS STD NODE ADR OF RECEIVER. 6964 ; 6965 023646 10$: CALL .SEND ;SEND DATA & SET EVENT FLAG PER R1 & R2 023646 004737 024006' JSR PC,.SEND 6966 ; 6967 023652 104401 TRAP DR.01 ;RETURN STS=+1. DMSAR - SEND & RECEIVE DIRECT MACRO M1113 03-APR-86 20:41 PAGE 127 DIRECTIVE -- SEND AND REQUEST OR RESUME 6969 .SBTTL DIRECTIVE -- SEND AND REQUEST OR RESUME 6970 ;+ 6971 ; THE "SEND AND REQUEST OR RESUME" DIRECTIVE 6972 ; 6973 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO QUEUE (FIFO) A THIRTEEN WORD 6974 ; BLOCK OF DATA FOR A TASK TO RECEIVE, AND TO REQUEST OR RESUME THE 6975 ; EXECUTION OF THE RECEIVER TASK. 6976 ; 6977 ; THIS DIRECTIVE HAS THE EFFECT OF ISSUING A "SEND DATA" DIRECTIVE 6978 ; FOLLOWED BY A "REQUEST" OR "RESUME" DIRECTIVE, EXCEPT THAT (1) NO TASK 6979 ; SWITCHING CAN OCCUR BETWEEN THE SEND AND THE REQUEST OR RECEIVE, AND 6980 ; (2) IF THE SEND IS NOT PERFORMED, NEITHER THE REQEST NOR THE RESUME 6981 ; WILL BE ATTEMPTED. 6982 ; 6983 ; I.E., IF DATA IS SENT TO AN INACTIVE TASK, THAT TASK WILL BE REQUESTED; 6984 ; IF DATA IS SENT TO A SUSPENDED TASK, THAT TASK WILL BE RESUMED. 6985 ; 6986 ; A NINE WORD DPB OF THE FOLLOWING FORMAT IS USED: 6987 ; 6988 ; WD. 00 -- DIC (15.) & DPB SIZE (9.), 6989 ; WD. 01 -- RECEIVER TASK NAME (FIRST HALF), 6990 ; WD. 02 -- RECEIVER TASK NAME (SECOND HALF), 6991 ; WD. 03 -- [PARTITION NAME (FIRST HALF)], 6992 ; WD. 04 -- [PARTITION NAME (SECOND HALF)], 6993 ; WD. 05 -- [PRIORITY], 6994 ; WD. 06 -- 0, 6995 ; WD. 07 -- ADDRESS OF THIRTEEN WORD DATA BLOCK, 6996 ; WD. 10 -- [EVENT FLAG NUMBER (EFN)]. 6997 ; 6998 ; WHEN AN EVENT FLAG IS SPECIFIED, A SIGNIFICANT EVENT IS DECLARED 6999 ; (IF THE DIRECTIVE IS PERFORMED) AND THE INDICATED EVENT FLAG IS SET. 7000 ; 7001 ; THE FOLLOWING STATUS IS RETURNED: 7002 ; 7003 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE 7004 ; STATUS OF: 7005 ; 7006 ; +1 -- DATA SENT AND TASK REQUESTED, 7007 ; +2 -- DATA SEND AND TASK RESUMED, 7008 ; +3 -- DATA SENT TO AN NON-SUSPENDED ACTIVE TASK. 7009 ; 7010 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF: 7011 ; 7012 ; -01 -- [R] INSUFFICIENT POOL NODES AVAILABLE FOR "REQUEST", 7013 ; -02 -- [B] RECEIVER TASK NOT INSTALLED (NO STD ENTRY FOUND), 7014 ; -03 -- [R] PARTITION TOO SMALL FOR RECEIVER TASK, 7015 ; -04 -- [B] INSUFFICIENT POOL NODES FOR "SEND", 7016 ; -08 -- [R] RECEIVER TASK IS DISABLED, 7017 ; 7018 ; -80 -- [B] DIRECTIVE ISSUED BY "BACKGROUND" TASK, 7019 ; -94 -- [R] PARTITION NOT IN SYSTEM (NO TPD ENTRY FOUND), 7020 ; -95 -- [R] INVALID PRIORITY SPECIFIED (<0 OR >250.), 7021 ; -97 -- [B] INVALID EVENT FLAG NUMBER (EFN<0 OR EFN>64), 7022 ; -99 -- [B] DIC OR DPB SIZE IS INVALID. 7023 ; 7024 ; [R] -- REQUEST OR RESUME REJECTED 7025 ; [B] -- BOTH SEND & REQUEST OR RESUME REJECTED DMSAR - SEND & RECEIVE DIRECT MACRO M1113 03-APR-86 20:41 PAGE 127-1 DIRECTIVE -- SEND AND REQUEST OR RESUME 7026 ;- 7027 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE 7028 ; DIRECTIVE ISSUING TASK'S PS, PC, & R1-R5 PUSHED ONTO THE 7029 ; STACK, AND R0-R5 SET AS FOLLOWS: 7030 ; R0 -- PC OF EMT INSTRUCTION 7031 ; R1 -- POINTER TO WORD FOLLOWING DIC & SIZE 7032 ; R2 -- DPB SIZE 7033 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE) 7034 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK ('.CRTSK') 7035 ; 7036 ; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE). 7037 ; 7038 023654 .D.SAR::CALL ..FSTD ;SET R2 TO STD ENTRY ADDRESS, OR TO 023654 004737 045574' JSR PC,..FSTD 7039 ;ZERO IF TASK NAME NOT FOUND (AND SET 7040 ;CONDITION CODES PER "TST R2"). 7041 ; 7042 ;ADVANCE R1 BY FOUR (PAST TASK NAME). 7043 ; 7044 023660 001001 BNE SKX ;IF TASK NOT INSTALLED, RETURN STS=-02. 7045 023662 104776 .X.02: TRAP DE.02 7046 ; 7047 023664 010146 SKX: MOV R1,-(SP) ;PUSH (SAVE) R1 & R2, AND ADVANCE R1 TO POINT 7048 023666 010246 MOV R2,-(SP) ;TO DPB WD. 07. 7049 023670 062701 000010 ADD #8.,R1 7050 ; 7051 ; R1 IS POINTING TO DPB WD. 07, AND R2 CONTAINS STD ENTRY ADR OF RECEIVER. 7052 ; 7053 023674 CALL .SEND ;SEND DATA & SET EVENT FLAG PER R1 & R2 023674 004737 024006' JSR PC,.SEND 7054 ;(R1, R2, R3, R4, & R5 ARE ALTERED) 7055 ; 7056 023700 012602 MOV (SP)+,R2 ;POP (RESTORE) R2 & R1 7057 023702 012601 MOV (SP)+,R1 ;(R1 IS POINTING TO DPB WD. 03.) 7058 ; 7059 023704 CALL .FEPPU ;SET R3 TO TPD ADDRESS IF A PARTITION IS 023704 004737 016000' JSR PC,.FEPPU 7060 ;SPECIFIED, OR TO ZERO IF NOT SPECIFIED. 7061 ; 7062 ;SET R4 TO PRIORITY IF SPECIFIED, OR TO 7063 ;ZERO IF NOT SPECIFIED. 7064 ; 7065 ; 7066 ;ADVANCE R1 BY EIGHT (PAST PARTITION NAME, 7067 ;PRIORITY INDICATOR, AND UIC INDICATOR.). 7068 ; 7069 ;IF INVALID PRIORITY, RETURN STS=-95. 7070 ;IF PARTITION NOT IS SYSTEM, RETURN 7071 ;STS=-94. IF NON-PRIVILEGED TASK HAS 7072 ;SPECIFIED OTHER THAN OWN UIC, RETURN 7073 ;STS=-91. IF SPECIFIED PARTITION IS 7074 ;TOO SMALL FOR TASK, RETURN STS=-03. 7075 ; 7076 ; 7077 023710 012701 000001 MOV #1,R1 ;SET R1 TO INDICATE "MAKE TASK ACTIVE WHETHER 7078 ;MEMORY IS AVAILABLE OR NOT" 7079 ; DMSAR - SEND & RECEIVE DIRECT MACRO M1113 03-APR-86 20:41 PAGE 127-2 DIRECTIVE -- SEND AND REQUEST OR RESUME 7080 023714 016500 000016 MOV A.TD(R5),R0 ;SET R5 TO STD ADDRESS OF REQUESTOR 7081 ; 7082 023720 010246 MOV R2,-(SP) ;PUSH STD ENTRY ADDRESS (FOR ATL SCAN) 7083 ; 7084 023722 CALL .REQS ;MAKE A TASK ACTIVE PER R0, R1, R2, R3, R4 & R5. 023722 004737 015276' JSR PC,.REQS 7085 ;(R1, R2, R3, R4, & R5 ARE ALTERED) 7086 023726 012604 MOV (SP)+,R4 ;POP STD ENTRY ADDRESS INTO R4 7087 ; 7088 023730 020227 000002 CMP R2,#02 ;SPECIAL CASE -- IS TASK ACTIVE? 7089 023734 001402 BEQ 10$ ;YES -- RESUME IF SUSPENDED 7090 023736 000162 015770' JMP .RQESD(R2) ;NO -- RETURN DIRECTIVE STATUS PER SUBROUTINE 7091 ;STATUS IN R2. 7092 ; 7093 ; RECEIVER TASK IS ACTIVE: 7094 ; 7095 ; IF SUSPENDED, RESUME & RETURN STS=+2 7096 ; IF NOT SUSPENDED, RETURN STS=+3 7097 ; 7098 ; R4 CONTAINS THE STD ENTRY ADDRESS OF THE RECEIVER TASK. 7099 ; 7100 023742 012703 007136' 10$: MOV #.ATLLH,R3 ;SETUP FOR ATL SCAN 7101 023746 20$: 7102 023746 011303 MOV @R3,R3 ;SETUP R3 TO EXAMINE NEXT ENTRY 7103 023750 020337 007140' CMP R3,.ATLLH+2 ;IS R3 POINTING TO ENTRY FOR NUL TASK? 7104 023754 001413 BEQ 70$ ;YES -- ATL NODE IS NOT IN THE ATL (IT IS 7105 ;IN THE "MRL" FOR A PARTITION) RETURN STS=+3. 7106 023756 026304 000016 CMP A.TD(R3),R4 ;NO -- STD ADDRESS MATCH? 7107 023762 001371 BNE 20$ ;NO -- CHECK NEXT ATL NODE 7108 023764 126327 000014 000012 60$: CMPB A.TS(R3),#TS.SUS ;NO -- IS TASK SUSPENDED? 7109 023772 001004 BNE 70$ 7110 023774 112763 000010 000014 MOVB #TS.RUN,A.TS(R3) ;YES -- CHANGE STATUS TO RUNNING (A SIGNIFICANT 7111 ;EVENT HAS BEEN DECLARED AS A RESULT OF THE 7112 024002 104402 TRAP DR.02 ;SEND), AND RETURN STS=+2. 7113 ; 7114 024004 104403 70$: TRAP DR.03 ;STS +3 DMSAR - SEND & RECEIVE DIRECT MACRO M1113 03-APR-86 20:41 PAGE 128 DIRECTIVE -- SEND AND REQUEST OR RESUME 7116 ; SEND -- SUBROUTINE TO PERFORM "SEND" FOR "SEND DATA" AND "SEND DATA & 7117 ; REQUEST RECEIVER" DIRECTIVES. 7118 ; 7119 ; ENTRY CONDITIONS: 7120 ; 7121 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK 7122 ; R1 -- POINTING (IN DPB) TO ADR OF 13 WORD BLOCK OF DATA, 7123 ; WHICH IS FOLLOWED BY AN [EFN]. BOTH WORDS MUST BE FETCHABLE 7124 ; WITHOUT SEGMENT FAULT. 7125 ; R2 -- STD ENTRY ADDRESS OF RECEIVER TASK 7126 ; 7127 ; CALLING SEQUENCE: 7128 ; 7129 ; JSR PC,SEND 7130 ; 7131 ; EXIT CONDITIONS: 7132 ; 7133 ; IF NO POOL NODE AVAILABLE, RETURN AT 'DE.01' 7134 ; IF INVALID EFN, RETURN AT 'DE.97' 7135 ; IF PART OF DATA OUT OF TASK'S ADDRESS SPACE, RETURN AT 'DE.98' 7136 ; 7137 ; IF SUCCESSFUL, DATA IS QUEUED, EFN (IF SPECIFIED) IS SET, 7138 ; AND A SIGNIFICANT EVENT IS DECLARED. 7139 ; 7140 ; R1 -- STD OF RECEIVER TASK 7141 ; 7142 ; 7143 ; REGISTERS ALTERED: 7144 ; 7145 ; R1, R2, R3, R4, & R0 7146 ; 7147 024006 .SEND:: MFPI (R1)+ ;SET R5 TO ADDRESS OF DATA BLOCK, AND 024006 012146 MOV (R1)+,-(SP) 7148 024010 012600 MOV (SP)+,R0 ;LEAVE R1 POINTING TO [EFN]. 7149 ; 7150 024012 010246 MOV R2,-(SP) ;SAVE RECEIVER STD ENTRY ADR IN -(SP) 7151 ; 7152 ;R1 IS POINTING TO [EFN] IN DPB. 7153 ; 7154 024014 CALL .CEFN ;CONVERT EFN TO: (1) FLAG WORD ADDRESS 024014 004737 044320' JSR PC,.CEFN 7155 ;IN R2, AND (2) FLAG MASK IN R3 (R1 IS 7156 ;POINTING TO EFN). IF EFN<0, OR EFN>64., 7157 ;RETURN STS=-97. IF EFN=0 (NO EVENT FLAG 7158 ;SPECIFIED), RETURN WITH R2=R3=00. 7159 ;CONDITION CODES ARE SET PER "TST R3". 7160 ; 7161 024020 010246 MOV R2,-(SP) ;PUSH "BIS" ADDRESS WORD 7162 024022 010346 MOV R3,-(SP) ;PUSH "BIS" MASK WORD 7163 ; 7164 024024 012704 001432' MOV #.POLLH,R4 ;LISTHEAD 7165 024030 CALL ..PICK ;ISSUING TASK, AND SET R1 TO NODE ADR. 024030 004737 045476' JSR PC,..PICK 7166 024034 103001 BCC 10$ ;IF NONE AVAILABLE, RETURN STS=-04. 7167 024036 104774 TRAP DE.04 7168 ; 7169 024040 010401 10$: MOV R4,R1 ;SETUP R3 TO FILL NODE DMSAR - SEND & RECEIVE DIRECT MACRO M1113 03-APR-86 20:41 PAGE 128-1 DIRECTIVE -- SEND AND REQUEST OR RESUME 7170 024042 062704 000006 ADD #Q.D1,R4 7171 024046 012703 000015 MOV #13.,R3 7172 024052 20$: 7173 024052 MFPI (R0)+ ;MOVE WORD FROM DATA BLOCK TO NODE 024052 012046 MOV (R0)+,-(SP) 7174 024054 012624 MOV (SP)+,(R4)+ 7175 024056 077303 SOB R3,20$ 7176 024060 052636 BIS (SP)+,@(SP)+ ;SET EVENT FLAG IF SPECIFIED (IF NOT 7177 024062 011604 MOV @SP,R4 ;FIND RECEIVER'S STD ADDRESS 7178 024064 010461 000004 MOV R4,Q.SI(R1) ;SET SENDERS STD ADDRESS 7179 ; 7180 024070 016404 000026 MOV S.RB(R4),R4 ;SET R4 TO ADDRESS OF LAST NODE (OR LISTHEAD) 7181 024074 CALL ..NADD ;OF TASK'S RECEIVE DEQUE (LISTHEAD IN STD), 024074 004737 045434' JSR PC,..NADD 7182 ;AND ADD NODE AT END OF DEQUE. 7183 ; 7184 ;SPECIFIED, SET NO BITS IN WORD ZERO). 7185 ; 7186 024100 012601 MOV (SP)+,R1 ;SET RECEIVER STD ADDRESS 7187 024102 000137 045264' JMP ..DSEV ;DECLARE A SIGNIFICANT EVENT AND EXIT 7188 ; DMSAR - SEND & RECEIVE DIRECT MACRO M1113 03-APR-86 20:41 PAGE 129 DIRECTIVE -- RECEIVE DATA 7190 .SBTTL DIRECTIVE -- RECEIVE DATA 7191 ;+ 7192 ; THE "RECEIVE DATA" DIRECTIVE 7193 ; 7194 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO RECEIVE A THIRTEEN WORD 7195 ; DATA BLOCK THAT HAS BEEN QUEUED (FIFO) FOR IT (VIA "SEND DATA" OR 7196 ; "SEND DATA & REQUEST RECEIVER" DIRECTIVES). 7197 ; 7198 ; WHEN A SENDER TASK IS SPECIFIED, ONLY DATA SENT BY THE INDICATED 7199 ; TASK IS RECEIVED. 7200 ; 7201 ; A TWO-WORD SENDER TASK NAME, AND THE THIRTEEN-WORD DATA BLOCK, ARE 7202 ; RETURNED IN AN INDICATED FIFTEEN WORD BUFFER, WITH THE TASK NAME IN 7203 ; THE FIRST TWO WORDS. 7204 ; 7205 ; A FOUR WORD DPB OF THE FOLLOWING FORMAT IS USED: 7206 ; 7207 ; WD. 00 -- DIC (17.) & DPB SIZE (4.), 7208 ; WD. 01 -- [SENDER TASK NAME (FIRST HALF)], 7209 ; WD. 02 -- [SENDER TASK NAME (SECOND HALF)], 7210 ; WD. 03 -- ADDRESS OF FIFTEEN WORD BUFFER. 7211 ; 7212 ; THE FOLLOWING STATUS IS RETURNED: 7213 ; 7214 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS 7215 ; OF ONE (+1). 7216 ; 7217 ; 7218 ; CC-C SET TO INDICATE REJECTIONAND A DIRECTIVE STATUS OF: 7219 ; 7220 ; -02 -- SPECIFIED SENDER TASK NOT INSTALLED, 7221 ; -08 -- NO DATA QUEUED (SENT), 7222 ; 7223 ; -99 -- DIC OR DPB SIZE IS INVALID. 7224 ;- 7225 ; THIS DIRECTIVE SERVICE HAS A COMMON ENTRY WITH "RECEIVE DATA OR SUSPEND". DMSAR - SEND & RECEIVE DIRECT MACRO M1113 03-APR-86 20:41 PAGE 130 DIRECTIVE -- RECEIVE DATA OR EXIT 7227 .SBTTL DIRECTIVE -- RECEIVE DATA OR EXIT 7228 ;+ 7229 ; THE "RECEIVE DATA OR EXIT" DIRECTIVE 7230 ; 7231 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO RECEIVE A THIRTEEN WORD 7232 ; DATA BLOCK IF AT LEAST ONE IS CAN BE RECEIVED, OR TO EXIT IF NO 7233 ; THIRTEEN WORD DATA BLOCKS ARE CAN BE RECEIVED. 7234 ; 7235 ; DATA BLOCKS ARE QUEUED (FIFO) FOR THE TASK VIA THE "SEND DATA" OR 7236 ; THE "SEND DATA & REQUEST RECEIVER" DIRECTIVES. 7237 ; 7238 ; WHEN A SENDER TASK IS SPECIFIED, ONLY DATA SENT BY THE INDICATED 7239 ; TASK IS RECEIVED. 7240 ; 7241 ; A TWO-WORD SENDER TASK NAME, AND THE THIRTEEN-WORD DATA BLOCK, ARE 7242 ; RETURNED IN AN INDICATED FIFTEEN WORD BUFFER, WITH THE TASK NAME IN 7243 ; THE FIRST TWO WORDS. 7244 ; 7245 ; A FOUR WORD DPB OF THE FOLLOWING FORMAT IS USED: 7246 ; 7247 ; WD. 00 -- DIC (19.) & DPB SIZE (4.), 7248 ; WD. 01 -- [SENDER TASK NAME (FIRST HALF)], 7249 ; WD. 02 -- [SENDER TASK NAME (SECOND HALF)], 7250 ; WD. 03 -- ADDRESS OF FIFTEEN WORD BUFFER. 7251 ; 7252 ; THE FOLLOWING STATUS IS RETURNED: 7253 ; 7254 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS 7255 ; OF ONE (+1). 7256 ; 7257 ; 7258 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF: 7259 ; 7260 ; -02 -- SPECIFIED SENDER TASK NOT INSTALLED, 7261 ; 7262 ; -80 -- DIRECTIVE ISSUED BY "BACKGROUND" TASK, 7263 ; -98 -- PART OF DPB OR BUFFER IS OUT OF TASK'S ADDRESS SPACE, 7264 ; -99 -- DIC OR DPB SIZE IS INVALID. 7265 ;- 7266 ; THIS DIRECTIVE SERVICE HAS A COMMON ENTRY WITH "RECEIVE DATA OR SUSPEND". DMSAR - SEND & RECEIVE DIRECT MACRO M1113 03-APR-86 20:41 PAGE 131 DIRECTIVE -- RECEIVE DATA OR SUSPEND 7268 .SBTTL DIRECTIVE -- RECEIVE DATA OR SUSPEND 7269 ;+ 7270 ; THE "RECEIVE DATA OR SUSPEND" DIRECTIVE 7271 ; 7272 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO RECEIVE A THIRTEEN WORD 7273 ; DATA BLOCK IF AT LEAST ONE IS CAN BE RECEIVED, OR TO SUSPEND IF NO 7274 ; THIRTEEN WORD DATA BLOCKS ARE CAN BE RECEIVED. 7275 ; 7276 ; DATA BLOCKS ARE QUEUED (FIFO) FOR THE TASK VIA THE "SEND DATA" OR 7277 ; THE "SEND DATA & REQUEST RECEIVER" DIRECTIVES. 7278 ; 7279 ; WHEN A SENDER TASK IS SPECIFIED, ONLY DATA SENT BY THE INDICATED 7280 ; TASK IS RECEIVED. 7281 ; 7282 ; A TWO-WORD SENDER TASK NAME, AND THE THIRTEEN-WORD DATA BLOCK, ARE 7283 ; RETURNED IN AN INDICATED FIFTEEN WORD BUFFER, WITH THE TASK NAME IN 7284 ; THE FIRST TWO WORDS. 7285 ; 7286 ; A FOUR WORD DPB OF THE FOLLOWING FORMAT IS USED: 7287 ; 7288 ; WD. 00 -- DIC (21.) & DPB SIZE (4.), 7289 ; WD. 01 -- [SENDER TASK NAME (FIRST HALF)], 7290 ; WD. 02 -- [SENDER TASK NAME (SECOND HALF)], 7291 ; WD. 03 -- ADDRESS OF FIFTEEN WORD BUFFER. 7292 ; 7293 ; THE FOLLOWING STATUS IS RETURNED: 7294 ; 7295 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE 7296 ; STATUS OF: 7297 ; 7298 ; +1 -- IF DATA WAS RECEIVED, 7299 ; +2 -- IF TASK WAS SUSPENDED. 7300 ; 7301 ; CC-C SET TO INDICATE REJECTION AND A DIRECTIVE STATUS OF: 7302 ; 7303 ; -02 -- SPECIFIED SENDER TASK NOT INSTALLED, 7304 ; 7305 ; -80 -- DIRECTIVE ISSUED BY "BACKGROUND" TASK, 7306 ; -98 -- PART OF DPB OR BUFFER IS OUT OF TASK'S ADDRESS SPACE, 7307 ; -99 -- DIC OR DPB SIZE IS INVALID. 7308 ;- 7309 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE 7310 ; DIRECTIVE ISSUING TASK'S PS, PC, & R1-R5 PUSHED ONTO THE 7311 ; STACK, AND R0-R5 SET AS FOLLOWS: 7312 ; R0 -- PC OF EMT INSTRUCTION 7313 ; R1 -- POINTER TO WORD FOLLOWING DIC & SIZE 7314 ; R2 -- DPB SIZE 7315 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE) 7316 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK ('.CRTSK') 7317 ; 7318 ; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE). 7319 ; 7320 ;R5 IS POINTING TO 15-WORD BUFFER IN TASK. 7321 ; 7322 ;R4 IS SET TO STD NODE ADDRESS OF RECEIVER TASK. 7323 ; 7324 ; COMMON ENTRY POINT FOR "RECEIVE", "RECEIVE OR EXIT", & "RECEIVE OR SUSPEND". DMSAR - SEND & RECEIVE DIRECT MACRO M1113 03-APR-86 20:41 PAGE 131-1 DIRECTIVE -- RECEIVE DATA OR SUSPEND 7325 ; 7326 7327 024106 .D.REC:: 7328 024106 .D.ROE:: 7329 024106 .D.ROS:: 7330 024106 016504 000016 MOV A.TD(R5),R4 ;SET R4 TO RECEIVE DEQUE LISTHEAD (IN STD ENTRY). 7331 024112 062704 000024 ADD #S.RF,R4 7332 ; 7333 024116 MFPI (R1)+ ;IS A SENDER TASK SPECIFIED? 024116 012146 MOV (R1)+,-(SP) 7334 024120 MFPI (R1)+ ;MAYBE -- CHECK SECOND HALF OF TASK NAME 024120 012146 MOV (R1)+,-(SP) 7335 024122 052626 BIS (SP)+,(SP)+ 7336 024124 001004 BNE 10$ ;NO -- RECEIVE FROM ANY SENDER 7337 ;YES -- RECEIVE ONLY FROM INDICATED SENDER 7338 ;NO -- RECEIVE FROM ANY SENDER 7339 024126 CALL ..PICK ;PICK FIRST NODE FROM REC DEQUE, AND LEAVE NODE 024126 004737 045476' JSR PC,..PICK 7340 ;ADDRESS IN R4. 7341 ;NODE PICKED? 7342 024132 103017 BCC 40$ ;YES -- FILL BUFFER 7343 024134 000440 BR 70$ ;NO -- NO DATA BY ANY SENDER 7344 ; 7345 024136 024141 10$: CMP -(R1),-(R1) 7346 ; R1 IS POINTING TO SPECIFIED SENDER'S TASK NAME IN PREVIOUS SPACE. 7347 ; 7348 024140 CALL ..FSTD ;SET R2 TO STD ENTRY ADDRESS, OR TO 024140 004737 045574' JSR PC,..FSTD 7349 ;ZERO IF TASK NAME NOT FOUND (AND SET 7350 ;CONDITION CODES PER "TST R2"). 7351 ; 7352 ;ADVANCE R1 BY FOUR (PAST TASK NAME). 7353 ; 7354 024144 001001 BNE 20$ ;IF TASK NOT INSTALLED, RETURN STS=-02. 7355 024146 104776 TRAP DE.02 ;RETURN STS=-02. 7356 ; 7357 024150 010401 20$: MOV R4,R1 ;SAVE LISTHEAD ADDRESS IN R1, AND 7358 ;SCAN DEQUE FOR DATA SENT BY SENDER PER R2. 7359 024152 30$: 7360 024152 011404 MOV @R4,R4 ;ADVANCE R4 TO NEXT NODE 7361 024154 020401 CMP R4,R1 ;END OF DEQUE? 7362 024156 001427 BEQ 70$ ;YES -- NO DATA BY SPECIFIED SENDER 7363 024160 026402 000004 CMP Q.SI(R4),R2 ;NO -- IS DATA SENT BY SPECIFIED SENDER? 7364 024164 001372 BNE 30$ ;NO -- CHECK NEXT NODE 7365 024166 CALL ..NDEL ;YES -- DELETE NODE FROM DEQUE 024166 004737 045320' JSR PC,..NDEL 7366 ; 7367 ; DATA RECEIVED -- R4 CONTAINS NODE ADDRESS & R1 CONTAINS DATA BUFFER 7368 ; ADDRESS. FILL BUFFER (2-WORD TASK NAME & 13-WORD DATA BLOCK). 7369 ; 7370 024172 40$: 7371 024172 MFPS @R1,R0 ;FIND THE BUFFER ADDRESS 024172 011100 MOV @R1,R0 7372 024174 010401 MOV R4,R1 ;SAVE NODE ADR IN R1 FOR '..RNTP' 7373 024176 062704 000004 ADD #Q.SI,R4 ;ADVANCE R4 TO POINT TO SENDER ID WORD 7374 ; 7375 024202 012403 MOV (R4)+,R3 ;SET R3 TO SENDER STD NODE ADDRESS DMSAR - SEND & RECEIVE DIRECT MACRO M1113 03-APR-86 20:41 PAGE 131-2 DIRECTIVE -- RECEIVE DATA OR SUSPEND 7376 ; 7377 024204 50$: 7378 024204 MTPS S.TN+0(R3),(R0)+ ;SET SENDER TASK NAME IN FIRST TWO WORDS 024204 016320 000000 MOV S.TN+0(R3),(R0)+ 7379 024210 MTPS S.TN+2(R3),(R0)+ 024210 016320 000002 MOV S.TN+2(R3),(R0)+ 7380 ; 7381 024214 012703 000015 MOV #13.,R3 ;FILL REMAINING 13 WORDS FROM NODE. 7382 024220 60$: 7383 024220 MTPS (R4)+,(R0)+ 024220 012420 MOV (R4)+,(R0)+ 7384 024222 077302 SOB R3,60$ 7385 ; 7386 024224 012704 001432' MOV #.POLLH,R4 ;RETURN NODE TO POOL 7387 024230 CALL ..NADD ;RETURN NODE (PER R1) TO POOL 024230 004737 045434' JSR PC,..NADD 7388 ; 7389 024234 104401 TRAP DR.01 ;RETURN STS=+1. 7390 ; 7391 ; DATA NOT RECEIVED: 7392 ; IF "RECEIVE", RETURN STS=-08. 7393 ; IF "RECEIVE OR EXIT", EXIT. 7394 ; IF "RECEIVE OR SUSPEND", SUSPEND. 7395 ; 7396 ; R3 CONTAINS THE DIC SIZE. 7397 ; R0 CONTAINS THE ISSUING TASK'S ATL NODE ADDRESS 7398 ; 7399 024236 006303 70$: ASL R3 7400 024240 000173 024200' JMP @80$-2-<17.*2.>(R3) 7401 024244 024252' 80$: .WORD 90$ 7402 024246 023146' .WORD .D.EXT 7403 024250 024252' .WORD 90$ 7404 ; 7405 024252 104770 90$: TRAP DE.08 7406 ; DMSAR - SEND & RECEIVE DIRECT MACRO M1113 03-APR-86 20:41 PAGE 132 DIRECTIVE -- RECEIVE DATA OR SUSPEND 7408 7409 .TITLE DMSDV - SPECIFY SST TABLE DIRECTIVES MODULE 7410 .SBTTL SPECIFY SST TABLE -- COPYRIGHT STATEMENT 7411 024254 IDENT$ 1,0 .IDENT /001000/ 7412 ; 7413 ; COPYRIGHT (C) 1975, 1984, 1985 BY 7414 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS. 7415 ; ALL RIGHTS RESERVED. 7416 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED 7417 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION 7418 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE- 7419 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. 7420 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED. 7421 ; 7422 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT 7423 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT 7424 ; CORPORATION. 7425 ; 7426 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS 7427 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL. 7428 ; 7429 ; MODULE: SPECIFY SST TABLE DIRECTIVES 7430 ; 7431 ; VERSION: 01-00 7432 ; 7433 ; AUTHOR: R. MCLEAN 7434 ; 7435 ; DATE: 19 JUN 75 7436 ; 7437 ; 7438 ; THIS MODULE CONTAINS: 7439 ; 7440 ; 1 -- CODE TO SERVICE THE "SPECIFY SST VECTOR TABLE FOR TASK" DIRECTIVE. 7441 ; 7442 ; MACRO LIBRARY CALLS 7443 7444 .MCALL MTPS,MFPS,MFPI,MTPI,CALL,RETURN DMSDV - SPECIFY SST TABLE DIR MACRO M1113 03-APR-86 20:41 PAGE 133 DIRECTIVE -- SPECIFY SST VECTOR TABLE FOR TASK 7446 .SBTTL DIRECTIVE -- SPECIFY SST VECTOR TABLE FOR TASK 7447 ;+ 7448 ; THE "SPECIFY SST VECTOR TABLE FOR TASK" DIRECTIVE 7449 ; 7450 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO RECORD THE ADDRESS (VIRTUAL) OF 7451 ; A TABLE OF SYNCHRONOUS SYSTEM TRAP SERVICE ROUTINE ENTRY POINTS 7452 ; FOR USE BY THE ISSUING TASK. WHENEVER AN SST SERVICE ROUTINE ENTRY IS 7453 ; SPECIFIED IN BOTH THE TASK'S TABLE & DDT'S TABLE, THE TRAP OCCURS 7454 ; FOR THE DEBUGGING AID, AND NOT FOR THE TASK. 7455 ; 7456 ; 7457 ; WD. 00 -- "ODD ADDRESS" ERROR, 7458 ; WD. 01 -- SEGMENT FAULT, 7459 ; WD. 02 -- T-BIT TRAP OR EXECUTION OF A 'BPT' INSTRUCTION, 7460 ; WD. 03 -- EXECUTION OF AN 'IOT' INSTRUCTION, 7461 ; WD. 04 -- EXECUTION OF A "RESERVED" INSTRUCTION, 7462 ; WD. 05 -- EXECUTION OF "NON-RSX EMT", 7463 ; WD. 06 -- EXECUTION OF A 'TRAP' INSTRUCTION, 7464 ; WD. 07 -- PDP-11/40 FLOATING POINT EXCEPTION. 7465 ; 7466 ; THE TABLE IS OF THE FOLLOWING FORMAT: 7467 ; A THREE WORD DPB OF THE FOLLOWING FORMAT IS USED: 7468 ; 7469 ; WD. 00 -- DIC (43.) & DPB SIZE (3.), 7470 ; WD. 01 -- ADDRESS OF SST VECTOR TABLE, 7471 ; WD. 02 -- NUMBER OF TABLE ENTRIES (8). (MUST BE AT LEAST 8!) 7472 ; 7473 ; THE FOLLOWING STATUS IS RETURNED: 7474 ; 7475 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS 7476 ; OF ONE (+1). 7477 ; 7478 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF: 7479 ; 7480 ; -99 -- DIC OR DPB SIZE IS INVALID. 7481 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE 7482 ; DIRECTIVE ISSUING TASK'S PS, PC, & R1-R5 PUSHED ONTO THE 7483 ; STACK, AND R0-R5 SET AS FOLLOWS: 7484 ; R1 -- ADDRESS OF WORD FOLLOWING DIC & SIZE 7485 ; R2 -- DPB SIZE 7486 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE) 7487 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK) 7488 ; 7489 ; 7490 ; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE). 7491 ;R1 IS POINTING TO THE ADDRESS OF THE TABLE 7492 ;R5 CONTAINS THE TABLE SIZE 7493 ; 7494 024254 016502 000016 .D.STV::MOV A.TD(R5),R2 ;FIND THE STD ADDRESS OF THIS TASK 7495 024260 MFPS @R1,S.SS(R2) ;SET UP SST VECTOR ADDRESS 024260 011162 000030 MOV @R1,S.SS(R2) 7496 024264 104401 TRAP DR.01 ;VALID DIRECTIVE RETURN DMSDV - SPECIFY SST TABLE DIR MACRO M1113 03-APR-86 20:41 PAGE 134 DIRECTIVE -- SPECIFY SST VECTOR TABLE FOR TASK 7498 7499 7500 .TITLE DMAST - SPECIFY AST SERVICE DIRECTIVES 7501 .SBTTL SPECIFY AST SERVICE -- COPYRIGHT STATEMENT 7502 024266 IDENT$ 1,0 .IDENT /001000/ 7503 ; 7504 ; COPYRIGHT (C) 1975, 1984, 1985 BY 7505 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS. 7506 ; ALL RIGHTS RESERVED. 7507 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED 7508 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION 7509 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE- 7510 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. 7511 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED. 7512 ; 7513 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT 7514 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT 7515 ; CORPORATION. 7516 ; 7517 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS 7518 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL. 7519 ; 7520 ; MODULE: SPECIFY AST SERVICE DIRECTIVES 7521 ; 7522 ; VERSION: 01-00 7523 ; 7524 ; AUTHOR: R. MCLEAN 7525 ; 7526 ; DATE: 19 JUN 75 7527 ; 7528 ; 7529 ; THIS MODULE CONTAINS: 7530 ; 7531 ; 1 -- CODE TO SERVICE THE "SPECIFY POWER RECOVERY AST" DIRECTIVE, 7532 ; 7533 ; MACRO LIBRARY CALLS 7534 ; 7535 .MCALL CALL,RETURN,MTPS,MTPI,MFPI,MFPS DMAST - SPECIFY AST SERVICE D MACRO M1113 03-APR-86 20:41 PAGE 135 DIRECTIVE -- SPECIFY POWER FAIL AST 7537 .SBTTL DIRECTIVE -- SPECIFY POWER FAIL AST 7538 ;+ 7539 ; THE "SPECIFY POWER FAIL AST" DIRECTIVE 7540 ; 7541 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO RECORD EITHER (1) THAT POWER 7542 ; RECOVERY AST'S FOR THE ISSUING TASK ARE DESIRED, AND WHERE CONTROL 7543 ; IS TO BE TRANSFERRED WHEN A POWER FAIL AST OCCURS, OR (2) THAT 7544 ; POWER FAIL AST'S FOR THE ISSUING TASK ARE NO LONGER DESIRED. 7545 ; 7546 ; A TWO WORD DPB OF THE FOLLOWING FORMAT IS USED: 7547 ; 7548 ; WD. 00 -- DIC (45..) & DPB SIZE (2.), 7549 ; WD. 01 -- [AST SERVICE ENTRY POINT]. 7550 ; 7551 ; WHEN AN "AST SERVICE ENTRY POINT" IS SPECIFIED, FUTURE POWER FAIL 7552 ; AST'S WILL OCCUR FOR THE ISSUING TASK, AND CONTROL WILL BE TRANSFERRED 7553 ; TO THE INDICATED LOCATION WHENEVER A POWER FAIL AST OCCURS. 7554 ; 7555 ; WHEN AN "AST SERVICE ENTRY POINT" IS NOT SPECIFIED (ZERO SECOND DPB 7556 ; WORD), FUTURE POWER FAIL AST'S WILL NOT OCCUR (UNTIL AN AST ENTRY 7557 ; POINT IS SPECIFIED AGAIN). 7558 ; 7559 ; THE FOLLOWING STATUS IS RETURNED: 7560 ; 7561 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS 7562 ; 7563 ; OF ONE (+1). 7564 ; 7565 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF: 7566 ; 7567 ; -08 -- AST ENTRY ALREADY UN-SPECIFIED, 7568 ; 7569 ; -98 -- PART OF DPB IS OUT OF ISSUING TASK'S ADDRESS SPACE, 7570 ; -99 -- DIC OR DPB SIZE IS INVALID. 7571 ; 7572 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE 7573 ; DIRECTIVE ISSUING TASK'S PS, PC, & R1-R5 PUSHED ONTO THE 7574 ; STACK, AND R0-R5 SET AS FOLLOWS: 7575 ; R1 -- ADDRESS OF WORD FOLLOWING DIC & SIZE 7576 ; R2 -- DPB SIZE 7577 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE) 7578 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK) 7579 ; 7580 ; 7581 ; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE). 7582 ; 7583 024266 .D.PUT::MFPS @R1,R1 ;FIND THE LAST WORD OF THE DPB 024266 011101 MOV @R1,R1 7584 024270 001403 BEQ 20$ ;YES -- THEN CHECK IT OUT 7585 024272 010165 000034 10$: MOV R1,A.PF(R5) ;SPECIFY POWER FAIL AST 7586 024276 104401 TRAP DR.01 ;AND RETURN +1 7587 ; 7588 024300 005765 000034 20$: TST A.PF(R5) ;CHECK FOR ALREADY CLEAR 7589 024304 001372 BNE 10$ ;NO -- ALL OK 7590 024306 104770 TRAP DE.08 ;YES -- ERROR DMAST - SPECIFY AST SERVICE D MACRO M1113 03-APR-86 20:41 PAGE 136 DIRECTIVE -- SPECIFY POWER FAIL AST 7592 7593 7594 .TITLE DMREQ - "REQUEST AND EXECUTE" DIRECTIVES MODULE 7595 .SBTTL REQUEST AND EXECUTE -- COPYRIGHT STATEMENT 7596 024310 IDENT$ 1,0 .IDENT /001000/ 7597 ; 7598 ; COPYRIGHT (C) 1975, 1984, 1985 BY 7599 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS. 7600 ; ALL RIGHTS RESERVED. 7601 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED 7602 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION 7603 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE- 7604 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. 7605 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED. 7606 ; 7607 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT 7608 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT 7609 ; CORPORATION. 7610 ; 7611 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS 7612 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL. 7613 ; 7614 ; MODULE: "REQUEST" DIRECTIVE 7615 ; 7616 ; VERSION: 01-00 7617 ; 7618 ; AUTHOR: R. MCLEAN 7619 ; 7620 ; DATE: 1 JUL 75 7621 ; 7622 ; 7623 ; THIS MODULE CONTAINS: 7624 ; 7625 ; 1 -- CODE TO SERVICE THE "REQUEST" DIRECTIVE. 7626 ; 7627 ; MACROS 7628 ; 7629 .MCALL CALL,RETURN,MFPS DMREQ - "REQUEST AND EXECUTE" MACRO M1113 03-APR-86 20:41 PAGE 137 DIRECTIVE -- TASK SCHEDULING -- REQUEST 7631 .SBTTL DIRECTIVE -- TASK SCHEDULING -- REQUEST 7632 ;+ 7633 ; THE "REQUEST" DIRECTIVE 7634 ; 7635 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO MAKE A TASK ACTIVE. I.E., TO 7636 ; RUN CONTINGENT UPON PRIORITY AND MEMORY AVAILABILITY. 7637 ; 7638 ; A SEVEN WORD DPB OF THE FOLLOWING FORMAT IS USED: 7639 ; 7640 ; WD. 00 -- DIC (11.) & DPB SIZE (7.), 7641 ; WD. 01 -- TASK NAME (FIRST HALF), 7642 ; WD. 02 -- TASK NAME (SECOND HALF), 7643 ; WD. 03 -- [PARTITION NAME (FIRST HALF)], 7644 ; WD. 04 -- [PARTITION NAME (SECOND HALF)], 7645 ; WD. 05 -- [PRIORITY], 7646 ; WD. 06 -- [UIC]. 7647 ; 7648 ; THE FOLLOWING STATUS IS RETURNED: 7649 ; 7650 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS 7651 ; OF ONE (+1). 7652 ; 7653 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF: 7654 ; 7655 ; -01 -- INSUFFICIENT POOL NODES AVAILABLE, 7656 ; -03 -- PARTITION TOO SMALL FOR TASK, 7657 ; -06 -- HANDLER TASK NOT RESIDENT TO LOAD TASK, 7658 ; -07 -- TASK IS ACTIVE, 7659 ; 7660 ; -94 -- PARTITION NOT IN SYSTEM (NO TPD ENTRY FOUND), 7661 ; -95 -- INVALID PRIORITY SPECIFIED (<0 OR >250.), 7662 ; -99 -- DIC OR DPB SIZE IS INVALID. 7663 ; 7664 ;- 7665 024310 .D.REQ::CALL ..FSTD ;SET R2 TO STD ENTRY ADDRESS, OR TO 024310 004737 045574' JSR PC,..FSTD 7666 ;ZERO IF TASK NAME NOT FOUND (AND SET 7667 ;CONDITION CODES PER "TST R2"). 7668 ; 7669 ;ADVANCE R1 BY FOUR (PAST TASK NAME). 7670 ; 7671 ; 7672 024314 001406 BEQ 20$ ;IF TASK IS NOT INSTALLED TRY TO GET IT INSTALLED 7673 024316 CALL .FEPPU ;SET R3 TO TPD ADDRESS IF A PARTITION IS 024316 004737 016000' JSR PC,.FEPPU 7674 ;SPECIFIED, OR TO ZERO IF NOT SPECIFIED. 7675 ; 7676 ;SET R4 TO PRIORITY IF SPECIFIED, OR TO 7677 ;ZERO IF NOT SPECIFIED. 7678 ; 7679 ; 7680 ;ADVANCE R1 BY EIGHT (PAST PARTITION NAME, 7681 ;PRIORITY INDICATOR, AND UIC INDICATOR.). 7682 ; 7683 ;IF INVALID PRIORITY, RETURN STS=-95. 7684 ;IF PARTITION NOT IS SYSTEM, RETURN 7685 ;STS=-94. IF NON-PRIVILEGED TASK HAS DMREQ - "REQUEST AND EXECUTE" MACRO M1113 03-APR-86 20:41 PAGE 137-1 DIRECTIVE -- TASK SCHEDULING -- REQUEST 7686 ;SPECIFIED OTHER THAN OWN UIC, RETURN 7687 ;STS=-91. IF SPECIFIED PARTITION IS 7688 ;TOO SMALL FOR TASK, RETURN STS=-03. 7689 ; 7690 ; 7691 ; 7692 ; 7693 024322 10$: CALL .REQS ;MAKE A TASK ACTIVE PER R1, R2, R3, R4 & R5. 024322 004737 015276' JSR PC,.REQS 7694 ;(R1, R2, R3, R4, & R5 ARE ALTERED) 7695 ; 7696 024326 000162 015770' JMP .RQESD(R2) ;RETURN DIRECTIVE STATUS PER SUBROUTINE 7697 ;STATUS IN R2. 7698 ; 7699 024332 012704 024522' 20$: MOV #RQSPB,R4 ;SET UP TO INSERT PARAMETERS INTO SEND 7700 024336 024141 CMP -(R1),-(R1) ;BACKUP TO POINT TO TASK NAME 7701 024340 MFPS (R1)+,(R4)+ ;TASK NAME 024340 012124 MOV (R1)+,(R4)+ 7702 024342 MFPS (R1)+,(R4)+ 024342 012124 MOV (R1)+,(R4)+ 7703 024344 MFPS (R1)+,(R4)+ ;PARTITION NAME 024344 012124 MOV (R1)+,(R4)+ 7704 024346 MFPS (R1)+,(R4)+ 024346 012124 MOV (R1)+,(R4)+ 7705 024350 MFPS (R1)+,(R4)+ ;PRIORITY 024350 012124 MOV (R1)+,(R4)+ 7706 024352 012704 001432' MOV #.POLLH,R4 ;PICK A NODE FROM THE POOL 7707 024356 CALL ..PICK 024356 004737 045476' JSR PC,..PICK 7708 024362 103001 BCC 30$ ;GOT ONE 7709 024364 104777 TRAP DE.01 ;NONE RETURN -1 7710 ; 7711 024366 010401 30$: MOV R4,R1 ;SAVE THE NODE ADDRESS 7712 024370 012704 001432' MOV #.POLLH,R4 ;FIND THE LISTHEAD OF THE POOL 7713 024374 021404 CMP @R4,R4 ;ANY NODES? 7714 024376 001003 BNE 35$ ;YES -- PROCEED 7715 024400 CALL ..NADD ;NO RETURN NODE 024400 004737 045434' JSR PC,..NADD 7716 024404 104777 TRAP DE.01 ;NOT ENOUGH NODES 7717 ; 7718 024406 010137 024534' 35$: MOV R1,RQSTD ;SET UP THE STD ADDRESS 7719 024412 005743 TST -(R3) ;BACK UP TO POINT TO CORRECT ENTRY TO INSERT 7720 024414 012704 024522' MOV #RQSPB,R4 ;SET UP PARAMETERS IN STD 7721 024420 012421 MOV (R4)+,(R1)+ 7722 024422 012421 MOV (R4)+,(R1)+ 7723 024424 005021 CLR (R1)+ 7724 024426 012721 040005 MOV #SF.EX!SF.TA!SF.IR,(R1)+ ;DECLARE TASK ACTIVE 7725 024432 062701 000014 ADD #S.RF-S.DP,R1 ;POINT TO SEND LISTHEAD 7726 024436 010111 MOV R1,@R1 ;SET UP LISTHEAD 7727 024440 010161 000002 MOV R1,2(R1) 7728 024444 013704 024534' MOV RQSTD,R4 ;RESTORE STD ADDRESS 7729 024450 011301 40$: MOV @R3,R1 ;MAKE ENTRY IN STD 7730 024452 001403 BEQ 50$ ;END OF LIST 7731 024454 010423 MOV R4,(R3)+ ;MOVE LIST DOWN 7732 024456 010104 MOV R1,R4 ;SET NEXT ENTRY 7733 024460 000773 BR 40$ ;GO NEXT ENTRY 7734 ; DMREQ - "REQUEST AND EXECUTE" MACRO M1113 03-APR-86 20:41 PAGE 137-2 DIRECTIVE -- TASK SCHEDULING -- REQUEST 7735 024462 010413 50$: MOV R4,@R3 ;STORE LAST ENTRY 7736 024464 062737 000002 006370' ADD #2,.STDTZ ;UPDATE SIZE 7740 024472 012702 006676' MOV #STDINS,R2 ;SET UP STD NODE OF RECEIVER 7741 024476 012701 024516' MOV #RQSPT,R1 ;SET UP TO SEND TO INSTALL 7742 024502 CALL .SEND ;SEND DATA 024502 004737 024006' JSR PC,.SEND 7743 024506 005004 CLR R4 ;START AT DEFAULT PART & PRI 7744 024510 005003 CLR R3 7745 024512 010102 MOV R1,R2 ;SET UP STD OF INSTALL 7746 024514 000702 BR 10$ 7747 ; 7748 024516 024522' RQSPT:: .WORD RQSPB ;POINTER TO SEND BLOCK 7749 024520 000000 .WORD 0 ;EVENT FLAG (NONE) 7750 024522 RQSPB: .BLKW 5 ;DATA TO BE XMITTED 7751 024534 000000 RQSTD: .WORD 0 ;STD ADDRESS 7752 ; DMREQ - "REQUEST AND EXECUTE" MACRO M1113 03-APR-86 20:41 PAGE 138 DIRECTIVE -- TASK SCHEDULING -- REQUEST 7754 7755 7756 .TITLE DMGPP - "GET TASK PARAMETERS" DIRECTIVE MODULE 7757 .SBTTL GET TASK PARAMETERS -- COPYRIGHT STATEMENT 7758 024536 IDENT$ 1,0 .IDENT /001000/ 7759 ; 7760 ; COPYRIGHT (C) 1975, 1984, 1985 BY 7761 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS. 7762 ; ALL RIGHTS RESERVED. 7763 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED 7764 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION 7765 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE- 7766 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. 7767 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED. 7768 ; 7769 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT 7770 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT 7771 ; CORPORATION. 7772 ; 7773 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS 7774 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL. 7775 ; 7776 ; MODULE: "GET TASK PARAMETERS" DIRECTIVE 7777 ; 7778 ; VERSION: 01-00 7779 ; 7780 ; AUTHOR: R. MCLEAN 7781 ; 7782 ; DATE: 19 AUG 75 7783 ; 7784 ; 7785 ; THIS MODULE CONTAINS: 7786 ; 7787 ; 1 -- CODE TO SERVICE THE "GET TASK PARAMETERS" DIRECTIVE. 7788 ; 7789 ; MACRO CALLS 7790 7791 .MCALL MTPS,MFPS DMGPP - "GET TASK PARAMETERS" MACRO M1113 03-APR-86 20:41 PAGE 139 DIRECTIVE -- GET TASK PARAMETERS 7793 .SBTTL DIRECTIVE -- GET TASK PARAMETERS 7794 ;+ 7795 ; THE "GET TASK PARAMETERS" DIRECTIVE 7796 ; 7797 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO FILL AN INDICATED SIXTEEN WORD 7798 ; BUFFER WITH PARAMETERS RELATING TO THE ISSUING TASK. 7799 ; 7800 ; A TWO WORD DPB OF THE FOLLOWING FORMAT IS USED: 7801 ; 7802 ; WD. 00 -- DIC (63.) & DPB SIZE (2.), 7803 ; WD. 01 -- ADDRESS OF SIXTEEN WORD BUFFER. 7804 ; 7805 ; THE SIXTEEN WORD BUFFER IS FILLED AS FOLLOWS: 7806 ; 7807 ; WD. 00 -- ISSUING TASK'S NAME (FIRST HALF), 7808 ; WD. 01 -- ISSUING TASK'S NAME (SECOND HALF), 7809 ; WD. 02 -- PARTITION NAME (FIRST HALF), 7810 ; WD. 03 -- PARTITION NAME (SECOND HALF), 7811 ; WD. 04 -- TASK NAME OF REQUESTOR OF ISSUING TASK (FIRST HALF), 7812 ; WD. 05 -- TASK NAME OF REQUESTOR OF ISSUING TASK (SECOND HALF), 7813 ; WD. 06 -- RUN PRIORITY, 7814 ; WD. 07 -- USER IDENTIFICATION CODE (UIC FOR FILES SYSTEM), 7815 ; WD. 10 -- NUMBER OF LOGICAL I/O UNITS (LUN'S), 7816 ; WD. 11 -- MACHINE TYPE INDICATOR (VIZ., 45. FOR PDP-11/45), 7817 ; WD. 12 -- STD FLAGS WORD, 7818 ; WD. 13 -- [ADDRESS OF TASK SST VECTOR TABLE], 7819 ; WD. 14 -- [SIZE OF TASK SST VECTOR TABLE (IN WORDS)], 7820 ; WD. 15 -- TASK SIZE 7821 ; WD. 16 -- ZERO (RESERVED), 7822 ; WD. 17 -- ZERO (RESERVED). 7823 ; 7824 ; THE FOLLOWING STATUS IS RETURNED: 7825 ; 7826 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS 7827 ; OF ONE (+1). 7828 ; 7829 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF: 7830 ; 7831 ; -98 -- PART OF DPB OR BUFFER IS OUT OF TASK'S ADDRESS SPACE, 7832 ; -99 -- DIC OR DPB SIZE IS INVALID. 7833 ;- 7834 000050 .PDP11=40. ;PDP11/40 7835 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE 7836 ; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE 7837 ; KERNEL STACK, AND R0-R5 SET AS FOLLOWS: 7838 ; R0 -- ATL NODE ADDRESS OF ISSUING TASK ('.CRTSK'), 7839 ; R1 -- VIRTUAL ADDRESS OF DPB PLUS TWO, 7840 ; R2 -- SIZE OF DPB (IN WORDS), 7841 ; R3 -- TWICE THE DIRECTIVE IDENTIFICATION CODE (2*DIC), 7842 ; R4 -- STD ENTRY ADDRESS OF ISSUING TASK, AND 7843 ; R5 -- LAST WORD OF DPB. 7844 ; 7845 ; R0 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE). 7846 ; 7847 ; 7848 024536 005046 .D.GPP::CLR -(SP) ;PUSH ZERO 7849 024540 005046 CLR -(SP) ;PUSH ZERO DMGPP - "GET TASK PARAMETERS" MACRO M1113 03-APR-86 20:41 PAGE 139-1 DIRECTIVE -- GET TASK PARAMETERS 7850 024542 016504 000016 MOV A.TD(R5),R4 ;FIND STD ADDRESS 7851 024546 016502 000006 MOV A.PD(R5),R2 ;FIND THE TPD ADDRESS 7852 024552 016500 000012 MOV A.HA(R5),R0 ;FIND THE HEADER ADDRESS 7853 024556 016246 000006 MOV T.PZ(R2),-(SP) ;SET PARTITION SIZE (TASK SIZE) 7854 024562 012746 000010 MOV #8.,-(SP) ;PUSH VECTOR TBL SIZE 7855 024566 016046 000106 MOV H.TKVA(R0),-(SP) ;PUSH VECTOR TBL ADDRESS 7856 024572 016446 000006 MOV S.FW(R4),-(SP) ;PUSH STD FLAGS WORD 7857 024576 012746 000050 MOV #.PDP11,-(SP) ;PUSH MACHINE TYPE INDICATOR 7858 024602 016046 000130 MOV H.LUT(R0),-(SP) ;PUSH NUMBER OF LUN'S 7859 024606 013746 001156' MOV .SYUIC,-(SP) ;PUSH UIC 7860 024612 005046 CLR -(SP) ;PUSH RUN PRIORITY 7861 024614 116516 000010 MOVB A.RP(R5),@SP 7862 024620 005046 CLR -(SP) 7863 024622 005046 CLR -(SP) 7864 024624 016246 000002 MOV T.PN+2(R2),-(SP) 7865 024630 016246 000000 MOV T.PN+0(R2),-(SP) 7866 024634 016446 000002 MOV S.TN+2(R4),-(SP);PUSH TASK NAME 7867 024640 016446 000000 MOV S.TN+0(R4),-(SP) 7868 ; 7869 024644 012702 000020 MOV #16.,R2 ;POP SIXTEEN WORDS FROM STACK INTO BUFFER 7870 024650 MFPS @R1,R1 ;PICK UP HIS ADDRESS 024650 011101 MOV @R1,R1 7871 ;IN ISSUING TASK'S ADDRESS SPACE. 7872 ;R5 CONTAINS VIRTUAL ADDRESS OF BUFFER. 7873 024652 10$: 7874 024652 MTPS (SP)+,(R1)+ 024652 012621 MOV (SP)+,(R1)+ 7875 024654 077202 SOB R2,10$ 7876 ; 7877 024656 104401 TRAP DR.01 ;RETURN STS=+1. 7878 ; DMGPP - "GET TASK PARAMETERS" MACRO M1113 03-APR-86 20:41 PAGE 140 DIRECTIVE -- GET TASK PARAMETERS 7880 7881 .TITLE DMGMP - "GET PARTITION PARAMETERS" DIRECTIVE MODULE 7882 .SBTTL GET PARTITION PARAMETERS -- COPYRIGHT STATEMENT 7883 024660 IDENT$ 1,0 .IDENT /001000/ 7884 ; 7885 ; COPYRIGHT (C) 1975, 1984, 1985 BY 7886 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS. 7887 ; ALL RIGHTSS RESERVED. 7888 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED 7889 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION 7890 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE- 7891 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. 7892 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED. 7893 ; 7894 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT 7895 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT 7896 ; CORPORATION. 7897 ; 7898 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS 7899 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL. 7900 ; 7901 ; MODULE: "GET PARTITION PARAMETERS" DIRECTIVE 7902 ; 7903 ; VERSION: 01-00 7904 ; 7905 ; AUTHOR: R. MCLEAN 7906 ; 7907 ; DATE: 19 AUG 75 7908 ; 7909 ; 7910 ; THIS MODULE CONTAINS: 7911 ; 7912 ; 1 -- CODE TO SERVICE THE "GET PARTITION PARAMETERS" DIRECTIVE. 7913 ; 7914 ; MACRO CALLS 7915 ; 7916 7917 .MCALL MFPI,MTPI,MFPS,MTPS DMGMP - "GET PARTITION PARAME MACRO M1113 03-APR-86 20:41 PAGE 141 DIRECTIVE -- GET PARTITION PARAMETERS 7919 .SBTTL DIRECTIVE -- GET PARTITION PARAMETERS 7920 ;+ 7921 ; THE "GET PARTITION PARAMETERS" DIRECTIVE 7922 ; 7923 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO FILL AN INDICATED THREE WORD 7924 ; BUFFER WITH PARTITION PARAMETERS. 7925 ; 7926 ; A FOUR WORD DPB OF THE FOLLOWING FORMAT IS USED: 7927 ; 7928 ; WD. 00 -- DIC (65.) & DPB SIZE (4.), 7929 ; WD. 01 -- [PARTITION NAME (FIRST HALF)], 7930 ; WD. 02 -- [PARTITION NAME (SECOND HALF)], 7931 ; WD. 03 -- ADDRESS OF THREE WORD BUFFER. 7932 ; 7933 ; IF A PARTITION IS NOT SPECIFIED, THE PARTITION OF THE ISSUING TASK 7934 ; IS ASSUMED. 7935 ; 7936 ; THE THREE WORD BUFFER IS FILLED AS FOLLOWS: 7937 ; 7938 ; WD. 00 -- 1/64TH BASE ADDRESS OF PARTITION, 7939 ; WD. 01 -- 1/64TH SIZE OF PARTITION, 7940 ; WD. 02 -- PARTITION FLAGS WORD. 7941 ; 7942 ; THE FOLLOWING STATUS IS RETURNED: 7943 ; 7944 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS 7945 ; OF ONE (+0). 7946 ; 7947 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF: 7948 ; 7949 ; -02 -- INDICATED PARTITION NOT IS SYSTEM, 7950 ; 7951 ; -98 -- PART OF DPB OR BUFFER IS OUT OF TASK'S ADDRESS SPACE, 7952 ; -99 -- DIC OR DPB SIZE IS INVALID. 7953 ;- 7954 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE 7955 ; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE 7956 ; KERNEL STACK, AND R0-R5 SET AS FOLLOWS: 7957 ; R0 -- ATL NODE ADDRESS OF ISSUING TASK ('.CRTSK'), 7958 ; R1 -- VIRTUAL ADDRESS OF DPB PLUS TWO, 7959 ; R2 -- SIZE OF DPB (IN WORDS), 7960 ; R3 -- TWICE THE DIRECTIVE IDENTIFICATION CODE (2*DIC), 7961 ; R4 -- STD ENTRY ADDRESS OF ISSUING TASK, AND 7962 ; R5 -- LAST WORD OF DPB. 7963 ; 7964 ; R0 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE). 7965 ; 7966 ; R5 CONTAINS ADDRESS OF THREE WORD BUFFER. 7967 ; 7968 024660 .D.GMP::MFPI (R1)+ ;PUSH 2-WORD PARTITION NAME (OR TWO ZEROS) 024660 012146 MOV (R1)+,-(SP) 7969 024662 MFPI (R1)+ ;ONTO KERNEL STACK (IN REVERSE ORDER) 024662 012146 MOV (R1)+,-(SP) 7970 ;WAS A NAME SPECIFIED? 7971 024664 001011 BNE 10$ ;YES -- SCAN "TPD" FOR MATCH 7972 024666 005766 000002 TST +2(SP) ;MAYBE -- CHECK FIRST HALF OF NAME 7973 024672 001006 BNE 10$ ;YES -- SCAN "TPD" FOR MATCH DMGMP - "GET PARTITION PARAME MACRO M1113 03-APR-86 20:41 PAGE 141-1 DIRECTIVE -- GET PARTITION PARAMETERS 7974 024674 016504 000006 MOV A.PD(R5),R4 ;NO -- REPLACE TWO-ZEROS WITH NAME OF PARTITION 7975 024700 016446 000000 MOV T.PN+0(R4),-(SP) ;IN WHICH ISSUING TASK IS EXECUTING. 7976 024704 016446 000002 MOV T.PN+2(R4),-(SP) 7977 024710 10$: 7978 024710 012703 010062' MOV #.TPDEA,R3 ;SETUP R3 TO SCAN "TPD" 7979 024714 20$: 7980 024714 020327 007602' CMP R3,#.TPDBA ;END OF SCAN? 7981 024720 001001 BNE 30$ 7982 024722 104776 TRAP DE.02 ;YES -- RETURN STS=-02. 7983 ; 7984 024724 162703 000020 30$: SUB #T.SZ,R3 ;NO -- REDUCE R3 TO POINT TO TPD ENTRY 7985 024730 010304 MOV R3,R4 ;SETUP R4 TO INDEX THRU TPD ENTRY 7986 024732 022466 000002 CMP (R4)+,+2(SP) ;DOES NAME MATCH? 7987 024736 001366 BNE 20$ ;NO -- CONTINUE SCAN 7988 024740 022416 CMP (R4)+,@SP ;MAYBE -- CHECK SECOND HALF 7989 024742 001364 BNE 20$ ;NO -- CONTINUE SCAN 7990 ; 7991 024744 012703 000002 MOV #2.,R3 ;YES -- MOVE 2-WORDS TO BUF IN PREVIOUS SPACE 7992 024750 MFPS @R1,R1 ;FIND BUFFER 024750 011101 MOV @R1,R1 7993 024752 011400 MOV @R4,R0 ;FIND PARTITION START 7994 024754 40$: 7995 024754 012446 MOV (R4)+,-(SP) 7997 024756 006216 ASR @SP 7998 024760 006216 ASR @SP 7999 024762 006216 ASR @SP 8000 024764 006216 ASR @SP 8001 024766 006216 ASR @SP 8002 024770 006216 ASR @SP 8003 024772 042716 176000 BIC #176000,@SP ;MASK OFF CARRY FROM SHIFT 8005 024776 MTPI (R1)+ 024776 012621 MOV (SP)+,(R1)+ 8006 025000 077313 SOB R3,40$ 8007 025002 005724 TST (R4)+ ;RETURN FLAGS WORD 8008 025004 MTPS (R4)+,(R1)+ ;SET IN USER'S AREA 025004 012421 MOV (R4)+,(R1)+ 8009 ; 8013 025006 000137 013710' JMP .DR.NS ;RETURN R0 STATUS 8015 ; DMGMP - "GET PARTITION PARAME MACRO M1113 03-APR-86 20:41 PAGE 142 DIRECTIVE -- GET PARTITION PARAMETERS 8017 8018 .TITLE RUN - CLOCK HANDLER 8019 .SBTTL CLOCK HANDLER -- COPYRIGHT STATEMENT 8020 ; 8021 ; COPYRIGHT (C) 1975, 1984, 1985 BY 8022 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS. 8023 ; ALL RIGHTS RESERVED. 8024 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED 8025 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION 8026 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE- 8027 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. 8028 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED. 8029 ; 8030 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT 8031 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT 8032 ; CORPORATION. 8033 ; 8034 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS 8035 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL. 8036 ; 8037 ; MODULE: "CLOCK TICK RECOGNITION" 8038 ; 8039 ; VERSION: 07-00 8040 ; 8041 ; AUTHOR: R. MCLEAN 8042 ; 8043 ; DATE: 19 JUL 75 8044 ; 8045 ; 8046 ; THIS MODULE CONTAINS: 8047 ; 8048 ; 1 -- CODE TO SERVICE CLOCK TICK RECOGNITION 8049 ; 8050 ; 8051 ; MODIFICATIONS: 8052 ; 8053 ; NO. DATE PROGRAMMER PURPOSE 8054 ; --- ---- ---------- ------- 8055 ; 001 04-MAR-77 R. BELANGER CHANGE MIDNIGHT RECOGNITION 8056 ; 8057 ; MACROS 8058 ; 8059 .MCALL CALL,RETURN,DIR$,.CRASH,.STKM RUN - CLOCK HANDLER MACRO M1113 03-APR-86 20:41 PAGE 143 CLOCK TICK RECOGNITION 8061 .SBTTL CLOCK TICK RECOGNITION 8062 ; 8063 ; UPDATE TICKS 8064 ; 8065 025012 012704 001134' .TICK:: MOV #.TICKS,R4 ;POINT TO BASE OF TIME PARAMETERS 8066 025016 005214 INC @R4 ;UPDATE TICKS 8067 025020 023714 001154' CMP .TKPS,@R4 ;1 SEC YET? 8068 025024 101020 BHI 3$ ;NO DONE 8069 ; 8070 ; TICKS OVERFLOWED, UPDATE SECONDS 8071 ; 8072 025026 005024 CLR (R4)+ ;CLEAR FRACTIONS 8073 025030 000337 001152' SWAB .SSM+2 ;FIND IF TIME TO UPDATE SSM 8074 025034 001414 BEQ 3$ ;NO -- CONTINUE 8075 025036 005237 001150' INC .SSM ;UPDATE SECONDS SINCE MIDNIGHT 8076 025042 022737 124277 001150' CMP #30.*60.*24.-1,.SSM ;MIDNIGHT? 8077 025050 101006 BHI 3$ ;NO, CAN INCREMENT 8078 025052 006337 001136' ASL .CLKSW ;GIVE THE 10 TIME TO CHANGE IT'S DATE -- WE DON'T 8079 ; +++001 RREMOVED 10. INSTRUCTIONS 8080 025056 001003 BNE 3$ ; +++001 NO -- GO ON 8081 025060 012737 177777 001136' MOV #-1,.CLKSW ; +++001 YES -- FLAG NULL TASK TO REQUEST 8082 ; +++001 TIME-OF-DAY TASK 8083 ; 8084 ;INCREMENT IN NO OVERFLOW CASES - SECONDS OR MINUTES 8085 ; 8086 025066 3$: 8087 ; 8088 ; SET UP FOR LINE FREQ. SERVICE 8089 ; 8090 ; 8091 025066 012704 002376' 4$: MOV #.CLKBA,R4 ;DELETE THE ENTRY OR RESCHEDULE IT 8092 025072 012405 10$: MOV (R4)+,R5 ;NO -- AN ENTRY HERE? 8093 025074 001435 BEQ 40$ ;NO -- GO 8094 025076 005724 TST (R4)+ ;OVER AST ADDRESS 8095 025100 005324 DEC (R4)+ ;YES --DECREMENT THE COUNT 8096 025102 001403 BEQ 30$ ;END OF COUNT SET EVENT FLAG 8097 025104 062704 000006 20$: ADD #6,R4 ;NO -- LOOK AT NEXT ENTRY 8098 025110 000770 BR 10$ 8099 ; 8100 025112 30$: CALL ..DSEV ;DECLARE A SIG EVENT 025112 004737 045264' JSR PC,..DSEV 8101 025116 012464 177774 MOV (R4)+,-4(R4) ;RESET RESCHEDULE INTERVAL 8102 025122 052434 BIS (R4)+,@(R4)+ ;DO THE SETTING OF THE EVENT FLAG 8103 025124 010446 MOV R4,-(SP) ;SAVE R4 8104 025126 016404 177766 MOV -12(R4),R4 ;FIND AST ADDRESS 8105 025132 001405 BEQ 35$ ;NONE -- FORGET IT 8106 025134 CALL .STAST ;START AST 025134 004737 016160' JSR PC,.STAST 8107 025140 103002 BCC 35$ ;GOT IT -- CONTINUE 8108 025142 010437 001050' MOV R4,.CKASS ;NOT QUITE -- TASK IS CURRENT GET AT ..INTX 8109 025146 012604 35$: MOV (SP)+,R4 8110 025150 005764 177772 TST -6(R4) ;RESCHEDULE? 8111 025154 001346 BNE 10$ ;NO -- DO NEXT ENTRY 8112 025156 162704 000014 SUB #C.SZ,R4 ;BACK UP POINTER 8113 025162 CALL .CKDEL ;DELETE ENTRY 025162 004737 044406' JSR PC,.CKDEL 8114 025166 000741 BR 10$ ;AND TRY AGAIN RUN - CLOCK HANDLER MACRO M1113 03-APR-86 20:41 PAGE 143-1 CLOCK TICK RECOGNITION 8115 ; 8116 025170 105337 001015' 40$: DECB .SERFG+1 ;COUNT DOWN CLOCK COUNTER 8117 025174 001306 BNE .TICK ;AND GO DO ANOTHER IF WE MISSED ONE 8118 025176 012604 MOV (SP)+,R4 ;RESTORE REGISTERS 8119 025200 012605 MOV (SP)+,R5 8120 025202 053737 001016' 001014' BIS .SEWFL,.SERFG ;SET SIG EVENT FLAG IF NECESSARYH 8121 025210 005037 001016' CLR .SEWFL ;AND CLEAR FLAG 8122 025214 000137 015062' JMP ..INTX ;AND RETURN TO INTERRUPT EXIT RUN - CLOCK HANDLER MACRO M1113 03-APR-86 20:41 PAGE 144 CLOCK TICK RECOGNITION 8124 8125 8126 .TITLE QPRDRV -- QUEUED PROTOCOL DRIVER FOR RSX-20F 8127 .SBTTL QUEUED PROTOCOL DRIVER -- COPYRIGHT STATEMENT 8128 025220 IDENT$ 15,14,RSX$$F .IDENT /A15140/ 8129 8130 ; 8131 ; COPYRIGHT (C) 1975, 1984, 1985 BY 8132 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS. 8133 ; ALL RIGHTS RESERVED 8134 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED 8135 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION 8136 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE- 8137 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. 8138 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED. 8139 ; 8140 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT 8141 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT 8142 ; CORPORATION. 8143 ; 8144 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS 8145 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL. 8146 ; 8147 ; 8148 ; MODULE: QUEUED PROTOCOL DRIVER FOR RSX-20F 8149 ; 8150 ; VERSION: V15-14 8151 ; 8152 ; AUTHOR: R. MCLEAN 8153 ; 8154 ; DATE: 19 JUL 75 8155 ; 8156 ; THIS MODULE CONTAINS: 8157 ; 8158 ; 1 -- QUEUED PROTOCOL SERVICE 8159 ; 8160 ; MODIFICATIONS: 8161 ; 8162 ; NO. DATE PROGRAMMER PURPOSE 8163 ; --- ---- ---------- ------- 8164 ; 001 21-OCT-76 A. PECKHAM INSERT CODING TO COUNT 8165 ; DOORBELLS. 8166 ; 002 08-NOV-76 K. RETI ADD SUPPRESS SEND-ALL 8167 ; R. BELANGER CODE. 8168 ; 003 03-FEB-77 R. BELANGER ADDED GENERALIZED DL-11E 8169 ; SUPPORT 8170 ; 004 10-FEB-77 A. PECKHAM KEEP TO-11 QUEUE COUNT 8171 ; STRAIGHT 8172 ; 005 16-FEB-77 A. PECKHAM SET SPEED OF REMOTE LINES 8173 ; 006 07-MAR-77 A. PECKHAM REORGANIZE SENDALL 8174 ; 007 08-MAR-77 A. PECKHAM FIX "XOFF" FOR CTY 8175 ; 008 14-MAR-77 R. BELANGER CONDITIONALLY REMOVE 8176 ; SUPPORT FOR UNUSED DTE-20 8177 ; DIRECTIVES 8178 ; 009 31-MAY-77 R. BELANGER ADD SUPPORT FOR KLINIK 8179 ; PARAMETER PASSING QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 144-1 QUEUED PROTOCOL DRIVER -- COPYRIGHT STATEMENT 8180 ; 010 15-JUL-77 R. BELANGER ADD AUTO-BAUD SUPPORT 8181 ; 011 25-JUL-77 R. BELANGER FIX BUG IN INITIAL STATUS 8182 ; 012 25-AUG-77 R. BELANGER ADD KL POWERFAIL SUPPORT 8183 ; 013 02-SEP-77 R. BELANGER XON/XOFF BUG FIX 8184 ; TCO 4.2067 30-OCT-78 R. BELANGER FIX XON TO ACCOUNT FOR NULL 8185 ; BYTE IN THREAD PACKET 8186 ; TCO 4.2096 30-NOV-78 R. BELANGER REMOVE EXTRANEOUS CODE 8187 ; FROM "XON" PROCESSOR 8188 ; TCO 4.2181 01-FEB-79 R. BELANGER ADD ENABLE/DISABLE XON/XOFF 8189 ; MESSAGE. 8190 ; MOVE DEVICE DEPENDENT XON/XOFF 8191 ; PROCESSING TO TERMINAL DRIVER. 8192 ; TCO 4.2216 16-MAR-79 R. BELANGER ALLOW DTE-20 TO RUN AT FULL SPEED 8193 ; TCO 4.2246 16-MAY-79 R. BELANGER ELIMINATE RACE CONDITION IN SENDALL 8194 ; TCO 4.2284 25-MAY-79 R. BELANGER ADD NEW MODEM CONTROL SUPPORT 8195 ; TCO 4.2524 01-OCT-79 R. BELANGER FLUSH OUPUT QUEUE WHEN LINE SPEED SET TO 0 8196 ; TCO 5.1004 10-OCT-79 R. BELANGER ADD NON-CONTIGUOUS DEVICE SUPPORT 8197 ; TCO 5.1015 25-OCT-79 R. BELANGER ADD NEW TERMINAL INPUT CONTROL 8198 ; TCO 5.1016 01-NOV-79 R. BELANGER ADD BREAK-THROUGH WRITE 8199 ; TCO 4.1.1035 16-NOV-79 R. BELANGER ADD QUEUE ARBITRATION MECHANISM 8200 ; PROCESS PACKETS INIBITTED 8201 ; TCO 4.1.1091 12-FEB-80 R. BELANGER FIX MISSING DM-11/BB PROBLEM 8202 ; TCO 4.1.1092 25-FEB-80 R. BELANGER LOCAL TERMINAL INPUT CONTROL 8203 ; TCO 4.1.1104 05-MAR-80 R. BELANGER SEND KEEP-ALIVE FROM DTE SERVICE 8204 ; TCO 4.1.1105 11-MAR-80 R. BELANGER CHANGE "EF.PR1" RECOGNITION 8205 ; TCO 4.1.1121 19-MAR-80 R. BELANGER BREAK QUEUED PROTOCOL DRIVER AND 8206 ; DTE-20 DRIVER INTO SEPARATE MODULES 8207 ; TCO 4.1.1137 05-APR-80 R. BELANGER LIMIT TO-10 QUEUE NODE SIZE TO 60 BYTES 8208 ; TCO 5.1127 08-AUG-80 S. LEAPLINE ADD HOST DEBUG MODE MESSAGE 8209 ; TCO 5.1248 26-JAN-81 S. LEAPLINE SAVE R0 FOR XOFF/XON CODE 8210 ; TCO 5.1249 26-JAN-81 S. LEAPLINE FIX BUG IN SETSPD, HIT WHEN 8211 ; GIVEN AN INCORRECT LINE SPEED 8212 ; 014 18-AUG-81 S. LEAPLINE REMOVE WSIG$S IN SENDALL 8213 ; 8214 ; THE FOLLOWING CHANGES ARE POST V14-45 8215 ; 8216 ;18-NOV-82 TCO 6.1359 D. WEAVER 8217 ; XOFF BIT GETS CLEARED ON QUEUED PROTOCOL MESSAGE TO SET/RESET 8218 ; RECEIVE SYSTEM-MESSAGES BIT. 8219 ;29-MAR-83 TCO 6.1567 D. WEAVER 8220 ; WHEN SETTING A LINE TO AUTOBAUD, SET ITS INTITIAL SPEED TO 2400 BAUD 8221 ; RATHER THAN 300 BAUD FOR HIGH SPEED AUTO-BAUD. 8222 ;29-APR-83 TCO 6.1567 D. WEAVER 8223 ; WHEN SETTING A LINE TO AUTOBAUD, ALSO PUT IT IN AUTOBAUD WAIT. 8224 ;11-JUL-83 TCO 6.1723 D. WEAVER 8225 ; TIME OUT LOW SPEED AUTOBAUD DETECT. CHANGE REFERENCES OF TT.FER 8226 ; TO TT.BRK. 8227 ;12-AUG-83 TCO 6.1771 D. WEAVER 8228 ; SUPPORT QUEUED PROTOCOL FUNCTION DIALUP FOR AUTO-DIALERS. 8229 ;18-JUN-84 TCO ****** M. RUDENKO 8230 ; ADD DISK DRIVE SERIAL NUMBER REPORT 8231 ; QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 145 QUEUED PROTOCOL DRIVER -- COPYRIGHT STATEMENT 8233 ; 8234 ; MACRO DEFINITIONS 8235 ; 8236 8237 .MCALL RQST$,WTSE$S,$DEF,WSIG$S,.INH5,.ENB5 8238 .MCALL .DQPEN,MRKT$,WTLO$,WTSE$,.CRASH,CALL,RETURN,.STKM,DIR$,.INH6,.ENB6 8239 8240 025220 $DEF 8241 8242 ; 8243 ; LOCAL MACROS 8244 ; 8245 ; MACRO TO ENABLE TASK SWITCHING 8246 ; 8247 .MACRO .ENBT 8248 MOV @#PS,-(SP) 8249 BIC #PRI7,@#PS 8250 .ENDM 8251 ; 8252 ; MACRO TO DISABLE TASK SWITCHING 8253 ; 8254 .MACRO .INHT 8255 MOV (SP)+,@#PS 8256 .ENDM QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 146 QUEUED PROTOCOL DRIVER -- COPYRIGHT STATEMENT 8258 ; 8259 ; DATA AREAS 8260 ; 8261 000060 E.OPSZ==60 ; [4.1.1137] OPTIMAL SIZE FOR A TO 10 QUEUE 8262 ; 8263 ; LOCAL DEFINITIONS FOR DTE20 TASK 8264 ; 8265 000100 EF.TED==100 ; TO ELEVEN DONE EVENT FLAG 8266 ; 8267 ; TO ELEVEN QUEUE ENTRY 8268 ; 8269 000000 E.FP==0 ; FORWARD POINTER 8270 000002 E.LS==2 ; LIST SIZE 8271 000004 E.FN==4 ; FUNCTION CODE 8272 000006 E.DV==6 ; DEVICE CODE 8273 000010 E.FW==10 ; FUNCTION FIRST WORD 8274 ; 8275 ; FUNCTION CODE DEFINITIONS 8276 ; 8277 000001 BC.RQD==1 ; REQUEST DEVICES 8278 000002 BC.HAD==2 ; HERE ARE DEVICES 8279 000003 BC.STR==3 ; STRING DATA 8280 000004 BC.LNC==4 ; LINE/CHARACTER DATA 8281 000005 BC.RDS==5 ; RETURN DEVICE STATUS 8282 000006 BC.SDS==6 ; SET DEVICE STATUS 8283 000007 BC.HDS==7 ; HERE IS DEVICE STATUS 8284 000010 BC.DES==10 ; DEVICE ERROR STATUS 8285 000011 BC.RTD==11 ; RETURN TIME OF DAY 8286 000012 BC.HTD==12 ; HERE IS TIME OF DAY 8287 000013 BC.FOD==13 ; FLUSH OUTPUT DEVICE QUEUE 8288 000014 BC.SNA==14 ; SEND ALL 8289 000015 BC.TDU==15 ; DEVICE DIAL UP 8290 000016 BC.THU==16 ; DEVICE HANG UP 8291 000017 BC.SAK==17 ; ACKNOWLEDGE DEVICE DONE 8292 000020 BC.XOF==20 ; X-OFF (TTY ONLY) 8293 000021 BC.XON==21 ; X-ON (TTY ONLY) 8294 000022 BC.STS==22 ; SET TTY SPEED 8295 000023 BC.SLA==23 ; SET LINE ALLOCATION 8296 000024 BC.BTP==24 ; 11 REBOOT WORD 8297 000025 BC.AKA==25 ; ACK ALL 8298 000026 BC.SPT==26 ; START/STOP LINE 8299 000027 BC.EDR==27 ; ENABLE/DISABLE REMOTES 8300 000030 BC.LDR==30 ; LOAD LP RAM 8301 000031 BC.LDV==31 ; LOAD LP VFU 8302 000032 BC.NSA==32 ; SUPPRESS SEND-ALL FUNCTION (SET OR CLEAR BIT) 8303 000033 BC.SKP==33 ; SEND KLINIK PARAMETERS 8304 000034 BC.XEN==34 ; [4.2181] ENABLE/DISABLE XON/XOFF 8305 000035 BC.BTW==35 ; [5.1016] BREAK-THROUGH WRITE 8306 000036 BC.DEB==36 ; [5.1127] HOST DEBUG MODE 8307 000037 BC.NDM==37 ; [5.1127] CLEAR HOST DEBUG MODE 8308 000040 BC.HSN==40 ; [******] HERE ARE SERIAL NUMBERS 8309 000041 BC.FNM==41 ; [5.1016] 1 GREATER THAN MAX FUNCTION 8310 ; 8311 ; DPB'S 8312 ; 8313 8314 025220 WTLODT: QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 146-1 QUEUED PROTOCOL DRIVER -- COPYRIGHT STATEMENT 8315 025220 WTLO$ 1,EF.TED ; WAIT FOR TEN DONE 025220 053 003 .BYTE 43.,3 025222 000001 .WORD 1 025224 000100 .WORD EF.TED 8316 8317 025226 .RQSPD:: ; ALSO CALLED FROM "TTYDRR" 8318 025226 RQST$ SETSPD 025226 013 007 .BYTE 11.,7 025230 073634 074504 .RAD50 /SETSPD/ 025234 000000 000000 .WORD 0,0 025240 000000 .WORD 025242 000 000 .BYTE , 8319 8320 ; 8321 ; LOCAL DATA 8322 ; 8323 8324 025244 SPDTBL:: 8325 025244 000000 .WORD 0 ; ZERO BAUD 8326 025246 000062 .WORD 50. ; 50 BAUD 8327 025250 000113 .WORD 75. ; ETC ...... 8328 025252 000156 .WORD 110. 8329 025254 000206 .WORD 134. 8330 025256 000226 .WORD 150. 8331 025260 000310 .WORD 200. 8332 025262 000454 .WORD 300. 8333 025264 001130 .WORD 600. 8334 025266 002260 .WORD 1200. 8335 025270 003410 .WORD 1800. 8336 025272 004540 .WORD 2400. 8337 025274 011300 .WORD 4800. 8338 025276 022600 .WORD 9600. 8339 025300 000001 .WORD 1. 8340 025302 000002 .WORD 2. 8341 8342 000020 SPDTBZ=.-SPDTBL/2 QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 147 QUEUED PROTOCOL DRIVER -- PROTOCOL PACKET SERVICE DISPATCH 8344 .SBTTL QUEUED PROTOCOL DRIVER -- PROTOCOL PACKET SERVICE DISPATCH 8345 8346 025304 DTEHD:: 8347 025304 .STKM 0,0,0,0,0,0,0,QPRDTE,174000,DTESP 025352 000000 000000 000000 .WORD 0,0,0,0 025360 000000 025400 174000 025610' 025564' .WORD 174000,QPRDTE,DTESP 025434 000005 .WORD 5 025436 010262' .WORD TTPEN 025440 000000 .WORD 0 025442 000000 .WORD 0 025444 000000 .WORD 0 025446 000000 .WORD 0 025450 000000 .WORD 0 025452 000000 .WORD 0 025454 000000 .WORD 0 025456 000000 .WORD 0 025460 000000 .WORD 0 025462 000000 .WORD 0 025564 000000 .WORD 0 025566 000000 .WORD 0 025570 000000 .WORD 0 025572 000000 .WORD 0 025574 000000 .WORD 0 025576 000000 .WORD 0 025600 025610' .WORD QPRDTE 025602 174000 .WORD 174000 8348 8349 .ENABL LSB 8350 8351 025604 QPRDTC:: 8352 025604 .ENB6 ;;; [4.1.1035] ALLOW INTERRUPTS 025604 012637 177776 MOV (SP)+,@#PS 8353 025610 QPRDTE:: 8354 025610 DIR$ #WTLODT ; WAIT FOR TEN DONE 025610 012746 025220' MOV #WTLODT,-(SP) 025614 104375 EMT 375 8355 025616 10$: 8356 025616 .INH6 ; INHIBIT INTERRUPTS 025616 013746 177776 MOV @#PS,-(SP) 025622 112737 000300 177776 MOVB #300,@#PS 8357 025630 013700 001006' MOV .CRTSK,R0 ;;; POINT TO CURRENT TASK 8358 025634 005060 000020 CLR A.EF(R0) ;;; AND CLEAR THE EVENT FLAGS. 8359 025640 20$: 8360 025640 013704 001342' MOV TO11Q,R4 ;;; PICK IT FROM THE QUEUE 8361 025644 001757 BEQ QPRDTC ;;; NO QUEUE -- BACK TO SLEEP 8362 025646 011437 001342' MOV @R4,TO11Q ;;; SET UP THE NEXT LISTHEAD OR ZERO 8363 025652 010400 MOV R4,R0 ;;; SET IN R0 ALSO 8364 025654 116401 000004 MOVB E.FN(R4),R1 ;;; FIND THE FUNCTION CODE OF THE REQUEST 8365 025660 006301 ASL R1 ;;; MAKE IT 2* FUNCTION 8366 025662 000171 025732' JMP @DFTBL-2(R1) ;;; GO TO THE CORRECT ROUTINE 8367 ; 8368 025666 QPRDTL: 8369 025666 .ENB6 ;;; [4.1.1035] ALLOW INTERRUPTS 025666 012637 177776 MOV (SP)+,@#PS 8370 025672 000240 NOP ; [4.1.1035] LET AN INTERRUPT HAPPEN 8371 025674 005737 001012' TST .COMEF+2 ; [4.1.1105] ARE WE STILL IN PRIMARY PROTOCOL?? QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 147-1 QUEUED PROTOCOL DRIVER -- PROTOCOL PACKET SERVICE DISPATCH 8372 025700 100346 BPL 10$ ; [4.1.1105] NO -- CONTINUE EMPTYING TO 11 QUEUE 8373 025702 .INH6 ; [4.1.1035] YES -- DISALLOW INTERRUPTS 025702 013746 177776 MOV @#PS,-(SP) 025706 112737 000300 177776 MOVB #300,@#PS 8374 025714 013704 001334' MOV TO10Q,R4 ;;; [4.1.1035] POINT TO THE TO 10 QUEUE 8375 025720 022704 001334' CMP #TO10Q,R4 ;;; [4.1.1035] ANYTHING THERE?? 8376 025724 001745 BEQ 20$ ;;; [4.1.1035] NO -- GO ON 8377 025726 CALL .STTNF ;;; [4.1.1121] YES -- FORCE THE START 025726 004737 032206' JSR PC,.STTNF 8378 025732 000742 BR 20$ ;;; [4.1.1035] UNLOAD THE REST OF THE TO 11 QUEUE 8379 ; 8380 8381 .DSABL LSB QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 148 QUEUED PROTOCOL DRIVER -- DISPATCH TABLE 8383 .SBTTL QUEUED PROTOCOL DRIVER -- DISPATCH TABLE 8384 8385 025734 DFTBL:: 8386 025734 026766' HICTS ; (01) HERE IS INITIAL STATUS 8387 025736 026034' UNRGFN ; (02) UNRECGONIZED FUNCTION 8388 025740 027236' STRDAT ; (03) STRING DATA FOR DEVICE 8389 025742 027302' LINCHR ; (04) LINE NUMBER CHARACTER DATA FOR DEVICE 8390 025744 027236' RTDVST ; (05) RETURN DEVICE STATUS 8391 025746 027236' STDVST ; (06) SET DEVICE STATUS FOR DEVICE 8392 025750 027236' HIDVST ; (07) HERE IS DEVICE STATUS 8393 025752 026034' UNRGFN ; (10) ERROR DEVICE STATUS 8394 025754 027212' RTNTOD ; (11) RETURN TIME OF DAY 8395 025756 027444' RETTOD ; (12) SEND TIME OF DAY 8396 025760 027502' FLDVOT ; (13) FLUSH DEVICE OUTPUT QUEUE 8397 025762 027616' SNDALL ; (14) SEND ALL TTY'S 8398 025764 026130' DIALUP ; (15) DIAL UP 8399 025766 026176' HANGUP ; (16) HANG UP 8400 025770 026344' ACKNOW ; (17) ACKNOWLEDGE END OF DATA IN BUFFER 8401 025772 026730' XOFF ; (20) XOFF (TTY) 8402 025774 026744' XON ; (21) XON (TTY) 8403 025776 026376' SETSPD ; (22) SET TTY SPEED 8404 026000 026356' SETLIN ; (23) SET LINE ALLOCATION 8405 026002 026034' UNRGFN ; (24) SET RELOAD PARAMETERS 8406 026004 026762' DEAND1 ; (25) ACK ALL 8407 026006 026604' STPLIN ; (26) STOP LINE 8408 026010 026042' EDRMT ; (27) ENABLE/DISABLE REMOTE LINES 8409 026012 027236' LDLPR ; (30) LOAD LP RAM 8410 026014 027236' LDLPV ; (31) LOAD LP VFU 8411 026016 026060' NOSNDA ; (32) SET OR CLEAR "SUPPRESS SEND-ALL" BIT 8412 026020 027540' RCVKLP ; (33) RECIEVE KLINIK PARAMETERS FROM KL 8413 026022 026052' ENBXOF ; (34) ENABLE/DISABLE XOFF PROCESSING 8414 026024 026702' BTWCHR ; (35) BREAK-THROUGH WRITE 8415 026026 027600' SETDEB ; (36) HOST DEBUG MODE 8416 026030 027610' CLRDEB ; (37) CLEAR HOST DEBUG MODE 8417 026032 027120' HISN ; [**] (40) HERE IS SERIAL NUMBERS 8418 8419 000100 DFTSZ=.-DFTBL ; LEGAL FUNCTIONS COUNT *2 QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 149 QUEUED PROTOCOL DRIVER -- UNRECOGNIZED FUNCTION 8421 .SBTTL QUEUED PROTOCOL DRIVER -- UNRECOGNIZED FUNCTION 8422 8423 ; 8424 ; UNRGFN -- UNRECOGNIZED FUNCTION 8425 ; 8426 8427 026034 UNRGFN:: 8428 026034 .CRASH ILF ;;; ILF -- ILLEGAL FUNCTION 026034 000004 IOT 026036 111 114 106 .ASCIZ /ILF/ 026041 000 8429 ; QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 150 QUEUED PROTOCOL DRIVER -- ENABLE/DISABLE REMOTE TERMINALS 8431 .SBTTL QUEUED PROTOCOL DRIVER -- ENABLE/DISABLE REMOTE TERMINALS 8432 8433 ; 8434 ; ENABLE/DISABLE REMOTE TERMINALS -- FUNCTION 27 8435 ; 8436 8437 026042 EDRMT:: 8438 026042 016037 000010 002604' MOV E.FW(R0),.INHDM ;;; ENABLE/DISABLE DM-11/BB'S 8439 026050 000426 BR DEAND3 ;;; AND QUIT 8440 ; QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 151 QUEUED PROTOCOL DRIVER -- ENABLE/DISABLE SENDALL AND XOFF PROC 8442 .SBTTL QUEUED PROTOCOL DRIVER -- ENABLE/DISABLE SENDALL AND XOFF PROCESSING 8443 8444 ; 8445 ; ENBXOF FUNCTION (ENABLE/DISABLE XOFF PROCESSING) FUNCTION 34 8446 ; 8447 8448 .ENABL LSB 8449 8450 026052 ENBXOF:: 8451 026052 012705 000020 MOV #TT.XEN,R5 ; SET UP STATUS BIT 8452 026056 000402 BR 10$ ; DO COMMON CODE 8453 ; QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 152 QUEUED PROTOCOL DRIVER -- ENABLE/DISABLE SENDALLS 8455 .SBTTL QUEUED PROTOCOL DRIVER -- ENABLE/DISABLE SENDALLS 8456 8457 ; 8458 ; NOSNDA FUNCTION (SET/CLEAR SUPPRESS SEND-ALL BIT) FUNCTION 32 8459 ; 8460 8461 026060 NOSNDA:: ; SET OR CLEAR BIT TO SUPPRESS SEND-ALLS 8462 026060 012705 000400 MOV #TT.NSA,R5 ; SET UP STATUS BIT 8463 026064 10$: 8464 026064 000360 000010 SWAB E.FW(R0) ; SET UP DEVICE CODE FOR "FDVNMM" 8465 026070 CALL FDVNMM ; GET R2 TO POINT TO BLOCK FOR THIS LINE 026070 004737 030266' JSR PC,FDVNMM 8466 026074 040562 000006 BIC R5,STSW1(R2) ; ASSUME A CLEAR 8467 026100 033705 000020 BIT TT.XEN,R5 ; ARE WE ENABLING/DISABLING XOFF 8468 026104 001403 BEQ 20$ ; NO, 8469 026106 042762 000200 000006 BIC #TT.XOF,STSW1(R2) ; YES, ALWAYS CLEAR XOFF BIT 8470 026114 105760 000010 20$: TSTB E.FW(R0) ; TEST ARGUMENT BYTE 8471 026120 001525 BEQ DEAND2 ; IF .NE. 0, 8472 026122 050562 000006 BIS R5,STSW1(R2) ; THEN SET BIT. 8473 026126 DEAND3: 8474 026126 000522 BR DEAND2 ; FREE THE NODE 8475 ; 8476 8477 .DSABL LSB QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 153 QUEUED PROTOCOL -- DIALUP 8479 .SBTTL QUEUED PROTOCOL -- DIALUP 8480 8481 ; 8482 ; DIALUP -- FUNCTION 15 8483 ; 8484 8485 026130 DIALUP:: 8486 026130 CALL FDVNMM ; FIND DEVICE 026130 004737 030266' JSR PC,FDVNMM 8487 026134 010205 MOV R2,R5 ; SETUP TABLE ADDRESS 8488 026136 022705 003054' CMP #DHTBL,R5 ; IS IT A DH-11 8489 026142 101114 BHI DEAND2 ; NO -- IGNORE DL11 8490 026144 005001 CLR R1 ; YES -- FIND THE LINE NUMBER 8491 026146 156001 000011 BISB E.FW+1(R0),R1 ; SO 8492 026152 162701 000005 SUB #DLCNT,R1 ; REMOVE DL-11'S 8493 026156 042701 177760 BIC #177760,R1 ; MAKE IT A UNIT NUMBER 8494 026162 CALL FNDDM ; FIND THE DM-11/BB ADDRESS 026162 004737 030204' JSR PC,FNDDM 8495 026166 001502 BEQ DEAND2 ; NOT THERE -- IGNORE 8496 026170 CALL .DMUHU ; RAISE DTR 026170 004737 041326' JSR PC,.DMUHU 8497 026174 000477 BR DEAND2 ; FREE THE NODE QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 154 QUEUED PROTOCOL DRIVER -- HANGUP 8499 .SBTTL QUEUED PROTOCOL DRIVER -- HANGUP 8500 8501 ; 8502 ; HANGUP -- FUNCTION 16 8503 ; 8504 8505 026176 HANGUP:: 8506 026176 CALL FDVNMM ; FIND DEVICE 026176 004737 030266' JSR PC,FDVNMM 8507 026202 010205 MOV R2,R5 ; SET UP TABLE ADDRESS 8508 026204 032765 000002 000006 BIT #TT.CTY,STSW1(R5) ; IS THIS A CTY?? 8509 026212 001411 BEQ 10$ ; NO -- GO ON 8510 026214 105737 001234' TSTB .KLNSW+0 ; YES -- IS KLINIK ACTIVE?? 8511 026220 003406 BLE 10$ ; NOT THAT WE CARE 8512 026222 010546 MOV R5,-(SP) ; YES -- SAVE POINTER 8513 ; 8514 ; HERE TO HANG UP THE KLINIK LINE 8515 ; 8516 026224 013705 002644' MOV KLNPTR,R5 ; POINT TO KLINIK LINE 8517 026230 CALL .DLHUP ; HANG UP THE KLINIK LINE 026230 004737 041376' JSR PC,.DLHUP 8518 026234 012605 MOV (SP)+,R5 ; RESTORE POINTER 8519 026236 10$: 8520 026236 022705 003054' CMP #DHTBL,R5 ; IS THIS A DH-11?? 8521 026242 101035 BHI 20$ ; NO -- DL-11'S ARE A SPECIAL CASE 8522 ; 8523 ; HERE TO HANG UP A DM-11/BB 8524 ; 8525 026244 005001 CLR R1 ; YES -- FIND THE LINE NUMBER 8526 026246 156001 000011 BISB E.FW+1(R0),R1 ; SO 8527 026252 162701 000005 SUB #DLCNT,R1 ; REMOVE DL-11'S 8528 026256 042701 177760 BIC #177760,R1 ; MAKE IT A UNIT NUMBER 8529 026262 CALL FNDDM ; FIND THE DM-11/BB ADDRESS 026262 004737 030204' JSR PC,FNDDM 8530 026266 001442 BEQ DEAND2 ; NOT THERE -- IGNORE 8531 026270 CALL .DMHUP ; HANGUP 026270 004737 041276' JSR PC,.DMHUP 8532 026274 032765 000040 000006 BIT #TT.ABL,STSW1(R5) ; IS THIS AN AUTO-BAUD LINE? 8533 026302 001434 BEQ DEAND2 ; NO -- GO ON 8534 026304 042765 030000 000006 BIC #TT.LSP!TT.IGN,STSW1(R5) ; SET HIGH SPEED AUTOBAUD 8535 026312 032765 000100 000006 BIT #TT.RMT,STSW1(R5) ; REMOTE LINE? 8536 026320 001003 BNE 15$ ; YES, LET THE MODEM CODE SET AUTOBAUD 8537 026322 052765 000010 000006 BIS #TT.ABW,STSW1(R5) ; NO, PUT INTO AUTOBAUD WAIT. 8538 026330 15$: 8539 026330 CALL .DHSPR ; YES RESET LINE SPEED TO DEFAULT 026330 004737 040602' JSR PC,.DHSPR 8540 026334 000417 BR DEAND2 ; RETURN THE NODE 8541 ; 8542 ; 8543 ; HERE TO HANG UP A DL-11E 8544 ; 8545 026336 20$: 8546 026336 CALL .DLHUP ;;; HANG IT UP 026336 004737 041376' JSR PC,.DLHUP 8547 026342 000414 BR DEAND2 ;;; [4.1.1035] RETURN THE NODE 8548 ; QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 155 QUEUED PROTOCOL DRIVER -- ACKNOWLEDGE DEVICE 8550 .SBTTL QUEUED PROTOCOL DRIVER -- ACKNOWLEDGE DEVICE 8551 8552 ; 8553 ; ACKNOWLEDGE DEVICE -- FUNCTION 17 8554 ; 8555 8556 026344 ACKNOW:: 8557 026344 CALL FDVNMM ;;; FIND UNIT ETC 026344 004737 030266' JSR PC,FDVNMM 8558 026350 CALL @.DQPBA-20+Q.AK(R1) ;;; GO TO USER STATUS ROUTINE 026350 004771 010054' JSR PC,@.DQPBA-20+Q.AK(R1) 8559 026354 000407 BR DEAND2 ;;; [4.1.1092] RETURN NODE 8560 ; QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 156 QUEUED PROTOCOL DRIVER -- SET LINE ALLOCATION 8562 .SBTTL QUEUED PROTOCOL DRIVER -- SET LINE ALLOCATION 8563 8564 ; 8565 ; SET LINE ALLOCATION -- FUNCTION 23 8566 ; 8567 8568 026356 SETLIN:: 8569 026356 000360 000010 SWAB E.FW(R0) ;;; SWAP THE BYTES FOR "FDVNMM" 8570 026362 CALL FDVNMM ;;; FIND DEVICE 026362 004737 030266' JSR PC,FDVNMM 8571 026366 116461 000011 010056' MOVB E.FW+1(R4),.DQPBA-20+14(R1) ;;; SET IT IN THE TABLE 8572 026374 DEAND2: 8573 026374 000572 BR DEAND1 ;;; [4.1.1092] AND RETURN 8574 ; QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 157 QUEUED PROTOCOL DRIVER -- SET LINE SPEED 8576 .SBTTL QUEUED PROTOCOL DRIVER -- SET LINE SPEED 8577 8578 ; 8579 ; SETSPD -- SET SPEED OF TTY -- FUNCTION 22 8580 ; 8581 ; TCO 5.1249 CHANGES REFRENCES TO R4 TO R0 AND SAVES IN R4 INSTEAD OF SP 8582 8583 026376 SETSPD:: 8584 026376 016002 000012 MOV E.FW+2(R0),R2 ;;; FIND THE INPUT SPEED 8585 026402 CALL FNDSPD ;;; FIND THIS SPEED 026402 004737 030236' JSR PC,FNDSPD 8586 026406 006203 ASR R3 ;;; PUT IT IN THE CORRECT POSITION FOR DH-11 8587 026410 006203 ASR R3 ;;; SO 8588 026412 010304 MOV R3,R4 ;;; SAVE THE WORD 8589 026414 016002 000014 MOV E.FW+4(R0),R2 ;;; FIND THE OUTPUT SPEED 8590 026420 CALL FNDSPD ;;; FIND THIS SPEED 026420 004737 030236' JSR PC,FNDSPD 8591 026424 006303 ASL R3 ;;; PUT OUTPUT SPEED IN CORRECT POSITION 8592 026426 006303 ASL R3 ;;; IS THE OUPUT SPEED ZERO?? 8593 026430 001002 BNE 10$ ;;; NO -- DON'T ALTER IT 8594 026432 012703 016003 MOV #16003,R3 ;;; YES -- SET IT TO AN OUTPUT SPEED OF 300 8595 ;;; THIS IS DONE TO PREVENT PROBLEMS WHEN ZERO OUTPUT BAUD 8596 ;;; IS DONE AND THERE IS OUTPUT FOR THIS LINE 8597 026436 10$: 8598 026436 050403 BIS R4,R3 ;;; SET THE INPUT AND OUTPUT TOGETHER 8599 026440 016001 000016 MOV E.FW+6(R0),R1 ;;; GET THE STOP BIT PARAMETER 8600 026444 006301 ASL R1 ;;; 1 IS 1 STOP BIT 2 IS TWO STOP BITS 8601 026446 042701 177770 BIC #177770,R1 ;;; CLEAR OFF JUNK 8602 026452 050103 BIS R1,R3 ;;; SET IN STATUS WORD 8603 026454 20$: 8604 026454 052703 000003 BIS #3,R3 ;;; SET 8 BIT CHARACTER LENGTH 8605 026460 005005 CLR R5 ;;; FIND THE LINE NUMBER 8606 026462 156005 000010 BISB E.FW(R0),R5 ;;; FIND THE UNIT NUMBER 8607 026466 162705 000005 SUB #DLCNT,R5 ;;; SUBTRACT OUT DL-11'S 8608 026472 100533 BMI DEAND1 ;;; [4.1.1035] DL-11'S ARE NOT LEGAL 8609 026474 010304 MOV R3,R4 8610 026476 000360 000010 SWAB E.FW(R0) ;;; SWAP THE PLACE OF THE LINE NUMBER 8611 026502 CALL FDVNMM 026502 004737 030266' JSR PC,FDVNMM 8612 026506 010403 MOV R4,R3 8613 026510 010501 MOV R5,R1 ;;; SAVE UNIT NUMBER 8614 026512 010205 MOV R2,R5 8615 026514 005760 000016 TST E.FW+6(R0) ; CHECK FOR REMOTE FLAG 8616 026520 100012 BPL 30$ ; NO -- DON'T SET REMOTE FLAG 8617 026522 042701 177760 BIC #177760,R1 ; MASK UNIT NUMBER 8618 026526 CALL FNDDM ; FIND THE DM-11/BB ADDRESS 026526 004737 030204' JSR PC,FNDDM 8619 026532 001513 BEQ DEAND1 ; NOT THERE -- IGNORE 8620 026534 052765 000100 000006 BIS #TT.RMT,STSW1(R5) ; SET REMOTE FLAG 8621 026542 CALL .DMHUP ; HANGUP THE DEVICE 026542 004737 041276' JSR PC,.DMHUP 8622 026546 30$: 8623 026546 032760 040000 000016 BIT #BIT14,E.FW+6(R0) ; IS THIS AN AUTO-BAUD LINE?? 8624 026554 001410 BEQ 40$ ; NO -- GO ON 8625 026556 052765 000050 000006 BIS #TT.ABL!TT.ABW,STSW1(R5) ; SET THE FLAG 8626 026564 042765 034000 000006 BIC #TT.LSP!TT.IGN!TT.BRK,STSW1(R5) ; CLEAR SOME FLAGS 8627 026572 012703 027303 MOV #27303,R3 ; SET THE DEFAULT SPEED TO 2400 BAUD QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 157-1 QUEUED PROTOCOL DRIVER -- SET LINE SPEED 8628 026576 40$: 8629 026576 CALL .DHSPD ; SET DH-11 LINE SPEED 026576 004737 040714' JSR PC,.DHSPD 8630 026602 000467 BR DEAND1 ; DEALLOCATE NODE 8631 ; QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 158 QUEUED PROTOCOL DRIVER -- STOP LINE INPUT 8633 .SBTTL QUEUED PROTOCOL DRIVER -- STOP LINE INPUT 8634 8635 ; 8636 ; STOP INPUT FROM LINE -- FUNCTION 26 8637 ; 8638 026604 STPLIN:: 8639 026604 000360 000010 SWAB E.FW(R0) ;;; SWAP THE BYTES 8640 026610 CALL FDVNMM ;;; FIND DEVICE 026610 004737 030266' JSR PC,FDVNMM 8641 026614 010205 MOV R2,R5 ;;; [5.1015] DEVICE POINTER TO R5 8642 026616 032765 000002 000006 BIT #TT.CTY,STSW1(R5) ;;; [5.1015] IS THIS A CTY? 8643 026624 001411 BEQ 10$ ;;; NO -- GO ON 8644 026626 105737 001234' TSTB .KLNSW+0 ;;; YES -- IS KLINIK ACTIVE? 8645 026632 003406 BLE 10$ ;;; NOT THAT WE CARE -- GO ON 8646 026634 010546 MOV R5,-(SP) ;;; [5.1015] YES -- SAVE R5 8647 026636 013705 002644' MOV KLNPTR,R5 ;;; [5.1015] KLINIK POINTER TO R5 8648 026642 CALL 20$ ;;; [5.1015] STOP THE KLINIK LINE 026642 004737 026656' JSR PC,20$ 8649 026646 012605 MOV (SP)+,R5 ;;; [5.1015] RESTORE POINTER 8650 026650 10$: 8651 026650 CALL 20$ ;;; [5.1015] START OR STOP THE LINE 026650 004737 026656' JSR PC,20$ 8652 026654 000442 BR DEAND1 ;;; [5.1015] DEALLOCATE THE NODE AND EXIT 8653 ; 8654 026656 20$: 8655 026656 CALL .TTSW2 ;;; [5.1015] FIND OUR ".STSW2" ENTRY 026656 004737 044212' JSR PC,.TTSW2 8656 026662 012746 043412' MOV #.TTQDS,-(SP) ;;; [4.1.1092] ASSUME A STOP 8657 026666 105760 000010 TSTB E.FW(R0) ;;; [4.1.1092] IS THIS A START OR A STOP?? 8658 026672 001402 BEQ 30$ ;;; [4.1.1092] STOP -- GO ON 8659 026674 012716 043422' MOV #.TTQEN,(SP) ;;; [4.1.1092] SET UP FOR A START 8660 026700 30$: 8661 026700 000136 JMP @(SP)+ ;;; [4.1.1092] DO THE START OR STOP AND RETURN 8662 ; QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 159 QUEUED PROTOCOL DRIVER -- BREAK-THROUGH WRITE 8664 .SBTTL QUEUED PROTOCOL DRIVER -- BREAK-THROUGH WRITE 8665 8666 ; 8667 ; BTWCHR -- BREAK-TROUGH WRITE FOR CHARACTER -- FUNCTION 35 8668 ; 8669 8670 026702 BTWCHR:: 8671 026702 000360 000010 SWAB E.FW(R0) ;;; [5.1016] SWAP THE LINE NUMBER/FLAG 8672 026706 CALL FDVNMM ;;; [5.1016] FIND THE DEVICE 026706 004737 030266' JSR PC,FDVNMM 8673 ;;; [5.1016] DON'T RETURN IF IT DOESN'T EXIST 8674 026712 010205 MOV R2,R5 ;;; [5.1016] COPY DLS POINTER TO R5 8675 026714 116004 000010 MOVB E.FW(R0),R4 ;;; [5.1016] GET THE CHARACTER IN R4 8676 026720 001420 BEQ DEAND1 ;;; [4.1.1035] IGNORE IF NULL 8677 026722 CALL .TTBTW ;;; [5.1016] FORCE THE CHARACTER OUT 026722 004737 044042' JSR PC,.TTBTW 8678 026726 000415 BR DEAND1 ;;; [5.1016] DEALLOCATE AND EXIT 8679 ; QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 160 QUEUED PROTOCOL DRIVER -- XOFF 8681 .SBTTL QUEUED PROTOCOL DRIVER -- XOFF 8682 8683 ; 8684 ; XOFF -- FUNCTION 20 8685 ; 8686 ; THIS ROUTINE WILL INITIATE THE XOFF SEQUENCE FOR A TERMINAL LINE. 8687 ; THE "XOFF" STATUS BIT ("TT.XOF") IS SET IN THE LINE STATUS WORD WHICH 8688 ; BLOCKS ANY FURTHER OUTPUT FROM THE TERMINAL DRIVER. IF THE LINE IS 8689 ; A DH-11, THE OUTPUT IS NOT STOPPED IMMEDIATELY, BUT A RUNDOWN SEQUENCE 8690 ; IS INITATED SINCE EARLIER DH-11'S WILL "RUN AWAY" IF THE DEVICE BYTE 8691 ; COUNT IS SIMPLY CLEARED. THE TERMINAL INTERRUPT SERVICE WILL RESET THE 8692 ; PACKET ADDRESS AND BYTE COUNT AT OUTPUT DONE SO THAT THE XON CODE CAN 8693 ; DO A NORMAL LINE START. 8694 ; 8695 ; THIS MESSAGE IS IGNORED IF: 8696 ; 8697 ; 1. THE LINE IS ALREADY X'D OFF 8698 ; 2. THE LINE HAS NO OUTPUT PENDING (THREAD LIST EMPTY) 8699 ; 3. A SENDALL IS IN PROGRESS ON THIS LINE 8700 ; 4. THE CTY IS IN PDP-11 I/O WAIT AND THE CTY IS TO BE X'D OFF 8701 8702 026730 XOFF:: 8703 026730 CALL FDVNMM ;;; FIND THE DEVICE NAME 026730 004737 030266' JSR PC,FDVNMM 8704 026734 010205 MOV R2,R5 ;;; COPY DLS POINTER TO R5 8705 026736 CALL .TTXOF ;;; DO THE XOFF 026736 004737 042762' JSR PC,.TTXOF 8706 026742 000407 BR DEAND1 ;;; AND EXIT 8707 ; QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 161 QUEUED PROTOCOL DRIVER -- XON 8709 .SBTTL QUEUED PROTOCOL DRIVER -- XON 8710 8711 ; 8712 ; XON -- FUNCTION 21 8713 ; 8714 ; THIS ROUTINE WILL RESUME OUTPUT FOR A LINE WHICH WAS PREVIOUSLY 8715 ; X'D OFF. THE OUTPUT WILL BE RESUMED PER THE DATA IN THE CURRENT 8716 ; NODE IN THE THREAD LIST FOR THIS LINE. (T.HCBC AND T.HACD) THIS 8717 ; DATA IS SAVED AT OUTPUT INTERRUPT TIME FROM THE XOFF. 8718 ; 8719 ; THIS MESSAGE WILL BE IGNORED IF: 8720 ; 8721 ; 1. THE LINE HAS NOT BEEN PREVIOUSLY X'D OFF 8722 ; 2. A SENDALL IS CURRENTLY IN PROGRESS ON THIS LINE 8723 ; 8724 ; THE DEVICE WILL NOT BE RESTARTED IF: 8725 ; 8726 ; 1. OUTPUT IS ALREADY IN PROGRESS ON THIS LINE 8727 ; 2. THE OUTPUT THREAD LIST FOR THIS LINE IS EMPTY 8728 ; 3. THE DEVICE DOES NOT EXIST 8729 8730 8731 026744 XON:: 8732 026744 CALL FDVNMM ;;; [4.2181] FIND THIS DEVICE 026744 004737 030266' JSR PC,FDVNMM 8733 026750 010205 MOV R2,R5 ;;; [4.2181] COPY DLS POINTER TO R5 8734 026752 010046 MOV R0,-(SP) ;;; [5.1248] SAVE R0 8735 026754 CALL .TTXON ;;; [4.2181] PROCESS THE DIRECTIVE 026754 004737 043104' JSR PC,.TTXON 8736 026760 012600 MOV (SP)+,R0 ;;; [5.1248] RESTORE R0 8737 026762 DEAND1: 8738 026762 000137 027472' JMP DEANOD ;;; [4.2181] DEALLOCATE THE NODE 8739 ; QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 162 QUEUED PROTOCOL DRIVER -- HERE IS INITIAL STATUS 8741 .SBTTL QUEUED PROTOCOL DRIVER -- HERE IS INITIAL STATUS 8742 8743 ; 8744 ; HERE IS INITIAL STATUS -- FUNCTION 1 8745 ; FW IS ALLOCATED WITH LOW ORDER PART AS # OF TTY'S 8746 ; BIT 16 IS ALLOCATED TO INDICATE 50CPS 8747 ; 8748 8749 026766 HICTS:: 8750 026766 012737 000074 001154' MOV #60.,.TKPS ;;; SET UP THE CLOCK TO 60. CPS 8751 026774 105760 000010 TSTB E.FW+0(R0) ;;; CHECK FOR 50 CPS (BYTES ARE SWAPPED) 8752 027000 100003 BPL 10$ ;;; HIGH ORDER BIT SET IS 50CPS 8753 027002 162737 000012 001154' SUB #10.,.TKPS ;;; SET TO 50 HZ 8754 027010 10$: 8755 027010 012703 000001 MOV #D.CCTY,R3 ;;; SET DEVICE ID 8756 027014 012701 000002 MOV #BC.HAD,R1 ;;; SET HERE IS DEVICE STATUS 8757 027020 013704 002642' MOV CTYPTR,R4 ;;; FIND THE CTY NUMBER 8758 027024 162704 003004' SUB #TTTBL,R4 8759 027030 006204 ASR R4 ;;; MAKE NUMBER 8760 027032 006204 ASR R4 8761 027034 006204 ASR R4 8762 027036 CALL ..STFC ;;; START FUNCTION 027036 004737 046714' JSR PC,..STFC 8763 027042 105737 001224' TSTB .KLNMD+0 ;;; ANY KLINIK PARAMETERS TO SEND?? 8764 027046 001424 BEQ 20$ ;;; NO -- GO ON 8765 027050 010046 MOV R0,-(SP) ;;; YES -- SAVE R0 8766 027052 012700 001204' MOV #.KLNPB,R0 ;;; BUFFER POINTER TO R0 8767 027056 012710 000026 MOV #KLNPLN,(R0) ;;; BYTE COUNT TO BUFFER HEADER 8768 027062 012701 100033 MOV #BC.SKP+100000,R1 ;;; FUNCTION CODE TO R1 8769 027066 005002 CLR R2 ;;; DON'T WAIT FOR IT 8770 027070 012703 000200 MOV #D.CCPU,R3 ;;; DEVICE ID TO R3 8771 027074 .ENBT ;;; [4.1.1035] ALLOW TASK SWITCHING 027074 013746 177776 MOV @#PS,-(SP) 027100 042737 000340 177776 BIC #PRI7,@#PS 8772 027106 CALL ..STIN ; SEND THE KLINIK PARAMETERS 027106 004737 047104' JSR PC,..STIN 8773 027112 .INHT ; [4.1.1035] DISABLE TASK SWITCHING 027112 012637 177776 MOV (SP)+,@#PS 8774 027116 012600 MOV (SP)+,R0 ;;; RESTORE R0 8775 027120 20$: 8776 027120 123727 001037' 000102 HISN:: CMPB .VERNO+1,#'B 8777 027126 001022 BNE 30$ 8778 027130 010046 MOV R0,-(SP) ;;; [**] SAVE R0 8779 027132 012700 005550' MOV #.RHPB,R0 ;;; [**] FETCH BUFFER ADDRESS 8780 027136 012701 100040 MOV #BIT15!BC.HSN,R1 ;;; [**] SET UP FNC CODE (INDIRECT) 8781 027142 005002 CLR R2 ;;; [**] NO EVENT FLAG DESIRED 8782 027144 012703 000203 MOV #D.CRJP,R3 ;;; [**] RP DEVICE CODE 8783 027150 .ENBT ;;; [**] ENABLE TASK SWITCHING 027150 013746 177776 MOV @#PS,-(SP) 027154 042737 000340 177776 BIC #PRI7,@#PS 8784 027162 CALL ..STIN ; [**] SEND THE PACKET 027162 004737 047104' JSR PC,..STIN 8785 027166 .INHT ; [**] DISABLE TASK SWITCHING 027166 012637 177776 MOV (SP)+,@#PS 8786 027172 012600 MOV (SP)+,R0 ; [**] RESTORE R0 8787 027174 013704 001160' 30$: MOV .BTPRM,R4 ;;; SEND BOOT PARAMETERS 8788 027200 012701 000024 MOV #BC.BTP,R1 ;;; SET BOOT PARAMETERS QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 162-1 QUEUED PROTOCOL DRIVER -- HERE IS INITIAL STATUS 8789 027204 CALL ..STFC ;;; [5.1004] SEND BOOT PARAMETERS 027204 004737 046714' JSR PC,..STFC 8790 027210 000530 BR DEANOD ;;; [4.1.1035] DEALLOCATE NODE QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 163 QUEUED PROTOCOL DRIVER -- RETURN TIME OF DAY 8792 .SBTTL QUEUED PROTOCOL DRIVER -- RETURN TIME OF DAY 8793 8794 ; 8795 ; RTNTOD -- RETURN TIME OF DAY TO KL -- FUNCTION 11 8796 ; 8797 8798 027212 RTNTOD:: 8799 027212 005737 001140' TST .DATE3 ;;; [5.1004] IS OUR DATE VALID?? 8800 027216 001403 BEQ 10$ ;;; [5.1004] NO -- JUST REPORT CONFIGURATION 8801 027220 012737 177777 002610' MOV #-1,.ABFLG ;;; FLAG "SETSPD" TO REPORT ALL LINES 8802 027226 10$: 8803 027226 DIR$ #.RQSPD ;;; SET SPEED AND THEN RETURN TIME OF DAY 027226 012746 025226' MOV #.RQSPD,-(SP) 027232 104375 EMT 375 8804 027234 000516 BR DEANOD ;;; [4.1.1035] DEALLOCATE THIS NODE 8805 ; QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 164 QUEUED PROTOCOL DRIVER -- STRING DATA 8807 .SBTTL QUEUED PROTOCOL DRIVER -- STRING DATA 8808 8809 ; 8810 ; STRDAT -- ROUTINE TO HANDLE STRING DATA -- FUNCTION 3 8811 ; HIDVST -- ROUTINE TO RECIEVE DEVICE STATUS -- FUNCTION 7 8812 ; RTDVST -- ROUTINE TO RECEIVE REQUEST FOR DEVICE STATUS -- FUNCTION 5 8813 ; STDVST -- ROUTINE TOSET DEVICE STATUS -- FUNCTION 6 8814 ; LDLPR -- ROUTINE TO LOAD LP RAM -- FUNCTION 30 8815 ; LDLPV -- ROUTINE TO LOAD LP VFU -- FUNCTION 31 8816 ; 8817 8818 027236 HIDVST:: 8819 027236 LDLPR:: 8820 027236 LDLPV:: 8821 027236 STDVST:: 8822 027236 RTDVST:: 8823 027236 STRDAT:: 8824 027236 012702 000006 MOV #6,R2 ;;; MOVE OVER THE LISTHEAD AND COUNT 8825 027242 060204 ADD R2,R4 ;;; FIND THE DEVICE ADDRESS 8826 027244 012401 MOV (R4)+,R1 ;;; FIND THE DEVICE ADDRESS 8827 027246 012403 MOV (R4)+,R3 ;;; FIND THE FIRST WORD 8828 027250 160204 SUB R2,R4 ;;; BACKUP TO STORE IN THE HEADER 8829 027252 111464 000003 MOVB @R4,3(R4) ;;; SAVE FUNCTION CODE 8830 027256 010414 MOV R4,@R4 ;;; SAVE THE ADDRESS 8831 027260 060224 ADD R2,(R4)+ ;;; UPDATE ADDRESS 8832 027262 000303 SWAB R3 ;;; SET UP BYTES SWAPED 8833 027264 110314 MOVB R3,@R4 ;;; STORE BYTE COUNT 8834 027266 CALL FDVNM ;;; FIND DEVICE TABLE ENTRY 027266 004737 030302' JSR PC,FDVNM 8835 027272 103477 BCS DEANOD ;;; ILLEGAL DEVICE -- FORGET IT 8836 027274 CALL @.DQPBA+Q.ST-20(R1) ;;; START DEVICE 027274 004771 010046' JSR PC,@.DQPBA+Q.ST-20(R1) 8837 027300 000476 BR QPRDTF ;;; [4.1.1035] GO TO DO MORE WORK 8838 ; QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 165 QUEUED PROTOCOL DRIVER -- LINE NUMBER - CHARACTER 8840 .SBTTL QUEUED PROTOCOL DRIVER -- LINE NUMBER - CHARACTER 8841 8842 ; 8843 ; LINCHR --LINE NUMBER - CHARACTER -- FUNCTION 4 8844 ; 8845 8846 027302 LINCHR:: 8847 027302 010046 MOV R0,-(SP) ;;; SAVE THE NODE ADDRESS 8848 027304 005046 CLR -(SP) 8849 027306 116416 000005 MOVB E.FN+1(R4),@SP ;;; SAVE SIZE OF BLOCK 8850 027312 162716 000010 SUB #E.FW,@SP ;;; SUBTRACT THE SIZE OF THE HEADER 8851 027316 010405 MOV R4,R5 ;;; SET UP THE POINTER TO THE BUFFER 8852 027320 016404 000006 MOV E.DV(R4),R4 ;;; FIND THE DEVICE 8853 027324 062705 000010 ADD #E.FW,R5 ;;; POINT TO THE CHARACTER 8854 027330 10$: 8855 027330 012701 000014 MOV #T.HHDS+4,R1 ;;; SET UP THE BUFFER SIZE 8856 027334 .ENBT ;;; [4.1.1035] ENABLE TASK SWITCHING 027334 013746 177776 MOV @#PS,-(SP) 027340 042737 000340 177776 BIC #PRI7,@#PS 8857 027346 CALL ..ALOW ; ALLOCATE A BLOCK 027346 004737 046144' JSR PC,..ALOW 8858 027352 .INHT ; [4.1.1035] ALLOW TASK SWITCHING 027352 012637 177776 MOV (SP)+,@#PS 8859 027356 010002 MOV R0,R2 ;;; SAVE THE NODE ADDRESS 8860 027360 005722 TST (R2)+ ;;; MOVE OVER THE THREAD POINTER 8861 027362 010122 MOV R1,(R2)+ ;;; SET UP THE CHARACTER COUNT 8862 027364 010012 MOV R0,@R2 ;;; SET UP THE MEMORY ADDRESS 8863 027366 062722 000012 ADD #T.HHDS+2,(R2)+ ;;; POINT TO THE BUFFER 8864 027372 012722 000001 MOV #1,(R2)+ ;;; SET UP THE CURRENT COUNT POINTER 8865 027376 005722 TST (R2)+ 8866 027400 010401 MOV R4,R1 ;;; PICK UP THE DEVICE 8867 027402 112503 MOVB (R5)+,R3 8868 027404 112522 MOVB (R5)+,(R2)+ ;;; STORE THE CHARCTER 8869 027406 000303 SWAB R3 ;;; SET UP LINE NUMBER FOR FDVNM 8870 027410 CALL FDVNM ;;; FIND THE DEVICE NUMBER 027410 004737 030302' JSR PC,FDVNM 8871 027414 103410 BCS 30$ ;;; ILLEGAL LINE NUMBER 8872 027416 CALL @.DQPBA+Q.ST-20(R1) ;;; START TTY 027416 004771 010046' JSR PC,@.DQPBA+Q.ST-20(R1) 8873 027422 20$: 8874 027422 162716 000002 SUB #2,@SP ;;; POINT TO THE NEXT CHARACTER 8875 027426 001340 BNE 10$ ;;; DO AT LEAST ONE MORE 8876 027430 005726 TST (SP)+ ;;; REMOVE COUNT 8877 027432 012600 MOV (SP)+,R0 ;;; SET UP TO RETURN NODE 8878 027434 000416 BR DEANOD ;;; ALL DONE -- RETURN THE NODE 8879 ; 8880 027436 30$: 8881 027436 CALL ..DECN ;;; DEALLOCATE BUFFER 027436 004737 046004' JSR PC,..DECN 8882 027442 000767 BR 20$ ;;; AND TRY NEXT BLOCK 8883 ; QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 166 QUEUED PROTOCOL DRIVER -- RETURN TIME OF DAY 8885 .SBTTL QUEUED PROTOCOL DRIVER -- RETURN TIME OF DAY 8886 8887 ; 8888 ; RETTOD -- RETURN TIME OF DAY -- FUNCTION 12 8889 ; 8890 8891 027444 RETTOD:: 8892 027444 062704 000010 ADD #E.FW,R4 ;;; MOVE OVER THE HEADER 8893 027450 005724 TST (R4)+ ;;; MOVE OVER THE VALID BIT AND CHECK IT 8894 027452 001407 BEQ DEANOD ;;; TIME NOT VALID FORGET IT 8895 027454 012703 001140' MOV #.DATE,R3 ;;; SET UP TO SET DATE 8896 027460 012423 MOV (R4)+,(R3)+ ;;; SET UP VALIDITY BITS 8897 027462 012423 MOV (R4)+,(R3)+ ;;; SET UP YEAR 8898 027464 012423 MOV (R4)+,(R3)+ ;;; SET UP DAY 8899 ;;; SET UP MONTH 8900 027466 012423 MOV (R4)+,(R3)+ ;;; SAVE DAYLIGHT SAVINGS TIME INDICATOR (1=DST) 8901 ;;; SET UP DAY OF WEEK 8902 027470 012423 MOV (R4)+,(R3)+ ;;; SET SECONDS SINCE MIDNIGHT 8903 027472 DEANOD: 8904 027472 CALL ..DECN ;;; DEALLOCATE BUFFER 027472 004737 046004' JSR PC,..DECN 8905 027476 QPRDTF: 8906 027476 000137 025666' JMP QPRDTL ;;; GO TO NEXT FUNCTION 8907 ; QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 167 QUEUED PROTOCOL DRIVER -- FLUSH DEVICE OUTPUT QUEUE 8909 .SBTTL QUEUED PROTOCOL DRIVER -- FLUSH DEVICE OUTPUT QUEUE 8910 8911 ; 8912 ; FLDVOT -- FLUSH OUTPUT FOR THIS DEVICE -- FUNCTION 13 8913 ; 8914 8915 027502 FLDVOT:: 8916 027502 CALL FDVNMM ;;; FIND THE DEVICE POINTER 027502 004737 030266' JSR PC,FDVNMM 8917 027506 010146 MOV R1,-(SP) 8918 027510 CALL @.DQPBA+Q.SP-20(R1) ;;; STOP DEVICE 027510 004771 010050' JSR PC,@.DQPBA+Q.SP-20(R1) 8919 027514 012601 MOV (SP)+,R1 8920 027516 016100 010042' MOV .DQPBA+Q.DA-20(R1),R0 ;;; FIND DEVICE TABLE BASE ADDRESS 8921 027522 010205 MOV R2,R5 ;;; FIND THIS DEVICE ADDRESS 8922 027524 016403 000006 MOV E.DV(R4),R3 ;;; FIND DEVICE NUMBER 8923 027530 CALL ..SACK ;;; SEND ACKNOWLEDGEMENT 027530 004737 046630' JSR PC,..SACK 8924 027534 010400 MOV R4,R0 ;;; SET UP TO RETURN NODE 8925 027536 000755 BR DEANOD ;;; DEALLOCATE NODE 8926 ; QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 168 QUEUED PROTOCOL DRIVER -- RECIEVE KLINIK PARAMETERS 8928 .SBTTL QUEUED PROTOCOL DRIVER -- RECIEVE KLINIK PARAMETERS 8929 8930 ; 8931 ; RCVKLP -- RECIEVE KLINIK PARAMETERS -- FUNCTION 33 8932 ; 8933 8934 027540 RCVKLP:: 8935 027540 062704 000012 ADD #E.FW+2,R4 ;;; GET OVER THE INDIRECT HEADER 8936 027544 012402 MOV (R4)+,R2 ;;; BYTE COUNT TO R2 8937 027546 001751 BEQ DEANOD ;;; QUIT IF NULL 8938 027550 006202 ASR R2 ;;; MAKE A WORD COUNT 8939 027552 012703 001210' MOV #.KLNFT,R3 ;;; BUFFER POINTER TO R3 8940 027556 042737 010000 001012' BIC #EF.RKP,.COMEF+2 ;;; CLEAR THE FLAG 8941 027564 10$: 8942 027564 012423 MOV (R4)+,(R3)+ ;;; LOAD THE PARAMETERS 8943 027566 077202 SOB R2,10$ ;;; LOOP TILL DONE 8944 027570 052737 010000 001012' BIS #EF.RKP,.COMEF+2 ;;; SET THE EVENT FLAG 8945 027576 000735 BR DEANOD ;;; DEQUEUE THIS NODE AND EXIT 8946 ; QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 169 QUEUED PROTOCOL DRIVER -- SET/CLEAR HOST DEBUG MODE 8948 .SBTTL QUEUED PROTOCOL DRIVER -- SET/CLEAR HOST DEBUG MODE 8949 8950 ; 8951 ; SETDEB -- SET HOST DEBUG MODE (36) 8952 ; CLRDEB -- CLEAR HOST DEBUG MODE (37) 8953 ; 8954 8955 027600 SETDEB:: 8956 027600 112737 177777 013265' MOVB #-1,SNDMSG+1 ;;; [5.1127] SET HOST DEBUG MODE 8957 027606 000731 BR DEANOD ;;; [5.1127] AND RETURN 8958 8959 027610 CLRDEB:: 8960 027610 105037 013265' CLRB SNDMSG+1 ;;; [5.1127] CLEAR HOST DEBUG MODE 8961 027614 000726 BR DEANOD ;;; [5.1127] AND RETURN QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 170 QUEUED PROTOCOL DRIVER -- SENDALL 8963 .SBTTL QUEUED PROTOCOL DRIVER -- SENDALL 8964 8965 ; 8966 ; SNDALL -- SENDALL SERVICE -- FUNCTION 14 8967 ; 8968 8969 027616 SNDALL:: 8970 027616 CALL .SNDAL ;;; DO SENDALL 027616 004737 027624' JSR PC,.SNDAL 8971 027622 000725 BR QPRDTF ;;; AND RETURN 8972 ; 8973 ; 8974 ; .SNDAL -- SUBROUTINE TO DO A SENDALL 8975 ; 8976 ; CALLING SEQUENCE 8977 ; 8978 ; R0 & R4 -- POINTER TO BUFFER TO BE SENT (QUEUED PROTOCOL FORMAT) 8979 ; 8980 ; REGISTERS ALTERED 8981 ; 8982 ; R0,R1,R2,R3,R5 8983 ; 8984 ; THE SENDALL MESSAGES AND COUNTS ARE MAINTINED IN PARALLEL RING BUFFERS 8985 ; IN ".SNDBF" AND ".SNDCN" (Q.V.). ".SNDLP" POINTS THE THE NEXT FREE LOGICAL 8986 ; NODE IN THE SENDALL RING. EACH ENTRY IN THE DATA LINE SCANNER TABLE HAS 8987 ; AS SENDALL INDEX BYTE IN "STSW1" ("TT.SND") WHICH POINTS TO THE LAST NODE 8988 ; PROCESSED SENDALL RING. THE QUEUED PROTOCOL BUFFER IS DEALLOCATEED BY THE 8989 ; TERMINAL DRIVER WHEN THE LAST TERMINAL HAS PROCESSED THAT NODE. 8990 ; 8991 ; A SENDALL IS DEEMED TO BE PENDING FOR A LINE IF ITS SENDALL INDEX IS 8992 ; DIFFERENT FROM THAT IN ".SNDLP". THE SENDALL WILL BE INITIATED AT "..STTY" 8993 ; IF THE LINE IS IDLE, OR AT "STTYDN" IF THE LINE HAS ACTIVE OUTPUT. 8994 ; 8995 ; IN ORDER TO PREVENT PROBLEMS ASSOCIATED WITH LARGE SENDALLS (A LARGE 8996 ; SENDALL IS DEFINED AS ONE WHICH WILL FILL THE SENDALL RING), THE RING IS 8997 ; ACTUALLY MANAGED AS A CIRCULAR LIST, WITH A GUARANTEED NULL ENTRY IN THE 8998 ; LIST AT ALL TIMES. SHOULD A REQUEST BE MADE TO FILL AN EMPTY NODE IN THE 8999 ; RING WITHOUT THE FOLLOWING NODE BEING EMPTY, THAT MODE WILL NOT BE FILLED 9000 ; UNTIL THE FOLLOWING NODE BECOMES EMPTY (NULL). IN EFFECT, THE SENDALL 9001 ; PROCESS IS DRIVEN BY THE SLOWEST TERMINAL(S) IN THE DATA LINE SCANNER. 9002 ; 9003 ; TCO 4.2246 REMOVED SEVERAL INHIBIT AND ENABLE MACROS FROM THIS ROUTINE 9004 ; 014 -- REMOVED WSIG$S IF NO SPACE IN RING BUFFER 9005 9006 027624 .SNDAL:: 9007 027624 010004 MOV R0,R4 ;;; COPY SENDALL POINTER 9008 027626 022020 CMP (R0)+,(R0)+ ;;; GET OVER LISTHEAD 9009 027630 010010 MOV R0,(R0) ;;; SET UP CURRENT ADDRESS POINTER 9010 027632 062720 000006 ADD #6,(R0)+ ;;; CORRECT BUFFER POINTER 9011 027636 116010 000003 MOVB 3(R0),(R0) ;;; MOVE THE BYTE COUNT 9012 027642 10$: 9013 027642 013701 002612' MOV .SNDLP,R1 ;;; FIND THE CURRENT POINTER FOR SENDALL 9014 027646 010102 MOV R1,R2 ;;; COPY IT TO R2 9015 027650 006301 ASL R1 ;;; MAKE RING WORD INDEX 9016 027652 005202 INC R2 ;;; UPDATE THE POINTER TO NEXT NODE 9017 027654 042702 177774 BIC #^C3,R2 ;;; MODULO 4 9018 027660 010237 002612' MOV R2,.SNDLP ;;; SET THE POINTER TO THE NEXT RING BUFFER QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 170-1 QUEUED PROTOCOL DRIVER -- SENDALL 9019 027664 013761 010140' 002624' MOV .DQDH0+Q.DZ,.SNDCN(R1) ;;; SET UP THE TTY COUNT 9020 ; BEQ 15$ ;;; GO ON IF NO DH-11'S 9021 027672 010461 002614' MOV R4,.SNDBF(R1) ;;; SET PACKET IN THE CURRENT RING BUFFER 9022 027676 15$: 9023 027676 012702 003004' MOV #DLTBL,R2 ;;; DO THE DL-11W AND DL-11E'S 9024 027702 20$: 9025 027702 020237 002644' CMP R2,KLNPTR ;;; IS THIS THE KLINIK LINE?? 9026 027706 001003 BNE 25$ ;;; NO -- GO ON 9027 027710 105737 001234' TSTB .KLNSW+0 ;;; YES -- IS IT ACTIVE AS USER CONSOLE?? 9028 027714 002015 BGE 30$ ;;; NO -- FORGET IT 9029 027716 25$: 9030 027716 005762 000002 TST TTYEXP(R2) ;;; IS IT HERE?? 9031 027722 001412 BEQ 30$ ;;; NO -- FORGET IT 9032 027724 032762 000400 000006 BIT #TT.NSA,STSW1(R2) ;;; YES -- SUPPRESS SENDALLS?? 9033 027732 001006 BNE 30$ ;;; YES -- SO DO IT 9034 027734 010246 MOV R2,-(SP) ;;; SAVE R2 FROM "COPBUF" 9035 027736 CALL COPBUF ;;; COPY THE BUFFER 027736 004737 030130' JSR PC,COPBUF 9036 027742 012602 MOV (SP)+,R2 ;;; RESTORE R2 9037 027744 CALL ..STTY ;;; START THE LINE UP 027744 004737 046164' JSR PC,..STTY 9038 027750 30$: 9039 027750 062702 000010 ADD #^D8,R2 ;;; POINT TO THE NEXT LINE 9040 027754 022702 003054' CMP #DHTBL,R2 ;;; IS IT A DL-11?? 9041 027760 101350 BHI 20$ ;;; YES -- DO THIS LINE 9042 027762 010400 MOV R4,R0 ;;; NO -- SET UP POINTER TO TTY BUFFER FOR "..STTY" 9043 027764 010037 002634' MOV R0,.CRSND ;;; SET THAT THIS IS CURRENT SENDALL 9044 027770 35$: 9045 027770 032762 000410 000006 BIT #TT.NSA!TT.ABW,STSW1(R2) ;;; IGNORE SENDALL OR AUTO-BAUD WAIT?? 9046 027776 001033 BNE 70$ ;;; YES -- DON'T START THIS LINE BUT ACCOUNT FOR IT 9047 030000 032762 000002 000006 BIT #TT.CTY,STSW1(R2) ;;; NO -- IS THIS A CTY?? 9048 030006 001403 BEQ 45$ ;;; NO -- GO ON 9049 030010 005737 002640' TST .TTP11 ;;; YES -- IN -11 I/O WAIT?? 9050 030014 001014 BNE 50$ ;;; YES -- DON'T RESTART 9051 030016 45$: 9052 030016 032762 000001 000006 BIT #TT.OUT,STSW1(R2) ;;; ANY KIND OF OUTPUT PENDING?? 9053 030024 001010 BNE 50$ ;;; YES -- DON'T RESTART 9054 030026 005762 000002 TST TTYEXP(R2) ;;; [5.1004] DOES THE DEVICE EXIST?? 9055 030032 001415 BEQ 70$ ;;; [5.1004] NO -- ACCOUNT FOR SENDALL 9056 030034 CALL ..STTY ;;; YES -- START SENDALL FOR THIS TTY 030034 004737 046164' JSR PC,..STTY 9057 030040 052762 001000 000006 BIS #TT.SIP,STSW1(R2) ;;; MARK SENDALL IN PROGRESS 9058 030046 50$: 9059 030046 062702 000010 ADD #8.,R2 ;;; LOOK AT THE NEXT DH-11 9060 030052 022702 005054' CMP #TTYEND,R2 ;;; [5.1004] DONE ALL DH-11'S?? 9061 030056 101344 BHI 35$ ;;; [5.1004] NO -- DO NEXT LINE 9062 030060 55$: 9063 030060 005037 002634' CLR .CRSND ;;; YES -- CLEAR CURRENT SENDALL POINTER 9067 030064 RETURN ;;; RETURN TO CALLER 030064 000207 RTS PC 9068 ; 9095 9096 030066 70$: ;;; HERE TO PRETEND WE DID SENDALL ON LINE 9097 030066 013701 002612' MOV .SNDLP,R1 ;;; GET POINTER TO CURRENT SENDALL + 1 9098 030072 005301 DEC R1 ;;; MAKE IT POINTER TO CURRENT 9099 030074 042701 177774 BIC #177774,R1 ;;; WE ONLY WANT TWO BITS 9100 030100 006301 ASL R1 ;;; MAKE IT INTO A WORD INDEX QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 170-2 QUEUED PROTOCOL DRIVER -- SENDALL 9101 030102 005361 002624' DEC .SNDCN(R1) ;;; DECREMENT COUNT OF SENDALLS SENT 9102 030106 003004 BGT 80$ ;;; IF SOME LEFT, DON'T FREE MESSAGE 9103 ; 9104 030110 75$: 9105 030110 005061 002614' CLR .SNDBF(R1) ;;; INDICATE NONEXISTANT 9106 030114 CALL ..DECN ;;; DEALLOCATE THE NODE 030114 004737 046004' JSR PC,..DECN 9107 030120 80$: ;;; HERE TO FINISH DUMMY SENDALL 9108 030120 062762 040000 000006 ADD #TT.SNI,STSW1(R2);;; BUMP INDEX TO NEXT SENDALL 9109 030126 000747 BR 50$ ;;; AND DO THE NEXT LINE 9110 ; QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 171 QUEUED PROTOCOL DRIVER -- COPY BUFFER 9112 .SBTTL QUEUED PROTOCOL DRIVER -- COPY BUFFER 9113 9114 ; 9115 ; COPBUF -- ROUTINE TO COPY A TTY BUFFER AND CORRECT THE 9116 ; ADDRESS OF THE BUFFER IN THE CURRENT ADDRESS POINTER 9117 ; 9118 ; CALLING SEQUENCE: 9119 ; 9120 ; R4 -- ADDRESS OF BUFFER TO BE COPIED 9121 ; 9122 ; CALL COPBUF 9123 ; 9124 ; EXIT CONDITIONS: 9125 ; 9126 ; R0 -- NEW BUFFER ADDRESS 9127 ; 9128 ; REGISTERS ALTERED: 9129 ; 9130 ; R1,R2,R5 9131 ; 9132 9133 030130 COPBUF:: 9134 030130 016401 000002 MOV 2(R4),R1 ;;; SET UP THE BUFFER SIZE 9135 030134 .ENBT ;;; [4.1.1035] ENABLE TASK SWITCHING 030134 013746 177776 MOV @#PS,-(SP) 030140 042737 000340 177776 BIC #PRI7,@#PS 9136 030146 CALL ..ALOW ; ALLOCATE A BUFFER 030146 004737 046144' JSR PC,..ALOW 9137 030152 .INHT ; [4.1.1035] DISABLE TASK SWITCHING 030152 012637 177776 MOV (SP)+,@#PS 9138 030156 010405 MOV R4,R5 ;;; SAVE R5 BUFFER POINTER 9139 030160 010002 MOV R0,R2 ;;; SAVE TTY BUFFER POINTER 9140 030162 006201 ASR R1 ;;; MAKE WORD INDEX 9141 030164 10$: 9142 030164 012522 MOV (R5)+,(R2)+ ;;; COPY THE BUFFER 9143 030166 077102 SOB R1,10$ ;;; COPY UNTIL FINISHED 9144 030170 010060 000004 MOV R0,T.HCAD(R0) ;;; SET THE CURRENT ADDRESS 9145 030174 062760 000012 000004 ADD #T.HHDS+2,T.HCAD(R0) ;;; CORRECT IT TO POINT TO BUFFER 9146 030202 RETURN 030202 000207 RTS PC QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 172 QUEUED PROTOCOL DRIVER -- MAP DH-11 TO DM-11 9156 .SBTTL QUEUED PROTOCOL DRIVER -- MAP DH-11 TO DM-11 9157 9158 ;+ 9159 ; FNDDM -- LOCAL SUBROUTINE TO MAP A DH-11 LINE TO A DM-11/BB 9160 ; 9161 ; INPUTS: 9162 ; 9163 ; R5 -- POINTS TO DATA LINE SCANNER ENTRY FOR DH-11 LINE 9164 ; 9165 ; OUTPUTS: 9166 ; 9167 ; R4 -- POINTS TO ASSOCIATED DM-11/BB CSR 9168 ;- 9169 9170 030204 FNDDM: 9171 030204 010546 MOV R5,-(SP) ; [5.1004] SAVE R5 9172 030206 012704 002742' MOV #DMTBL,R4 ; [5.1004] POINT TO THE DM-11/BB TABLE 9173 030212 162705 003054' SUB #DHTBL,R5 ; [5.1004] GET OUR DISPLACMENT INTO "DHTBL" 9174 030216 10$: 9175 030216 162705 000200 SUB #200,R5 ; [5.1004] HAVE WE FOUND OUR DH-11?? 9176 030222 100402 BMI 20$ ; [5.1004] YES -- EXIT 9177 030224 032424 BIT (R4)+,(R4)+ ; [5.1004] NO -- TRY NEXT DM-11/BB 9178 030226 000773 BR 10$ ; [5.1004] SO 9179 ; 9180 030230 20$: 9181 030230 012605 MOV (SP)+,R5 ; [5.1004] RESTORE R5 9182 030232 011404 MOV (R4),R4 ; [5.1004] GET I/O PAGE ADDRESS OF DM-11/BB 9183 030234 RETURN ; [5.1004] TO CALLER 030234 000207 RTS PC QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 173 QUEUED PROTOCOL DRIVER -- FIND LINE SPEED 9185 .SBTTL QUEUED PROTOCOL DRIVER -- FIND LINE SPEED 9186 ;+ 9187 ; FNDSPD -- FIND LINE SPEED 9188 ; 9189 ; THIS SUBROUTINE WILL MAP THE DECIMAL LINE SPEED IN R2 TO A DH-11 LINE SPEED MASK 9190 ; 9191 ; INPUTS: 9192 ; 9193 ; R2 -- DECIMAL LINE SPEED 9194 ; 9195 ; OUTPUTS: 9196 ; 9197 ; R3 -- DH-11 LINE SPEED MASK 9198 ; 9199 ; IF A MATCH CANNOT BE FOUND, THE NODE IS DEALLOCATED AND CONTROL RETURNED 9200 ; TO THE NEXT HIGHER LEVEL. 9201 ;- 9202 9203 030236 FNDSPD: 9204 030236 012705 025244' MOV #SPDTBL,R5 ; FIND THE ADDRESS OF THE SPEED TABLE 9205 030242 012701 000020 MOV #SPDTBZ,R1 ; SET UP THE TABLE SIZE 9206 030246 005003 CLR R3 ; SET UP COUNTER 9207 030250 10$: 9208 030250 020225 CMP R2,(R5)+ ; COMPARE AGAINST TABLE 9209 030252 001403 BEQ 20$ ; FOUND CORRECT ENTRY -- R3 IS CORRECT WHEN FOUND 9210 030254 005203 INC R3 ; UPDATE R3 9211 030256 077104 SOB R1,10$ ; TRY NEXT ENTRY 9212 030260 000455 BR FDVNMF ; CAN'T FIND SPEED -- DEALLOCATE AND EXIT 9213 ; 9214 030262 20$: 9215 030262 000303 SWAB R3 ; SET IN HIGH BYTE 9216 030264 RETURN ; RETURN TO CALLER 030264 000207 RTS PC QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 174 QUEUED PROTOCOL DRIVER -- FIND DEVICE NAME 9218 .SBTTL QUEUED PROTOCOL DRIVER -- FIND DEVICE NAME 9219 9220 ;+ 9221 ; FDVNMM -- FIND DEVICE NAME 9222 ; 9223 ; THIS SUBROUTINE WILL RETURN A POINTER TO A DEVICE TABLE ENTRY IN R2 IF THE 9224 ; DEVICE EXISTS IN THE SYSTEM. 9225 ; 9226 ; INPUTS: 9227 ; 9228 ; R0 -- POINTS TO THE TO11Q PACKET 9229 ; R4 -- POINTS TO THE TO11Q PACKET 9230 ; 9231 ; OUTPUTS: 9232 ; 9233 ; R0 -- POINTS TO THE TO11Q PACKET 9234 ; R1 -- POINTS TO THE DEVICE (PUD) TABLE FOR THIS DEVICE 9235 ; R2 -- POINTS TO THE DRIVER TABLE ENTRY FOR THE DEVICE 9236 ; R4 -- POINTS TO THE TO11Q PACKET 9237 ; 9238 ; NOTE: 9239 ; 9240 ; IF THE DEVICE DOES NOT EXIST, "FDVNMM" ACKNOWLEGES THE PACKET 9241 ; AND IMMEDIATELY DEQUEUES IT WITHOUT RETURNING TO THE CALLING ROUTINE 9242 ;- 9243 9244 .ENABL LSB 9245 9246 030266 FDVNMM: 9247 030266 016001 000006 MOV E.DV(R0),R1 ;FIND DEVICE 9248 030272 016003 000010 MOV E.FW(R0),R3 ;FIND FIRST WORD 9249 030276 005046 CLR -(SP) ;SAVE ENTRY FLAG 9250 030300 000402 BR 10$ 9251 ; QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 175 QUEUED PROTOCOL DRIVER -- FIND DEVICE NAME 9253 .SBTTL QUEUED PROTOCOL DRIVER -- FIND DEVICE NAME 9254 9255 ;+ 9256 ; FDVNM -- FIND DEVICE NAME 9257 ; 9258 ; THIS ROUTINE PERFORMS EXACTLY THE SAME THE SAME FUNCTION AS "FDVNMM", 9259 ; ABOVE, EXCEPT THAT IT WILL RETURN WITH CC-C SET IF THE DEVICE DOES NOT EXIST. 9260 ; 9261 ; INPUTS: 9262 ; 9263 ; R0 -- POINTS TO THE TO11Q PACKET 9264 ; R1 -- CONTAINS THE DEVICE CODE FOR THE DEVICE 9265 ; R3 -- CONTAINS THE FIRST WORD FROM THE T011Q PACKET 9266 ; R4 -- POINTS TO THE TO11Q PACKET 9267 ; 9268 ; OUTPUTS: 9269 ; 9270 ; R0 -- POINTS TO THE TO11Q PACKET 9271 ; R1 -- CONTAINS THE DEVICE (PUD) OFFSET + 20 FOR THIS DEVICE 9272 ; R2 -- POINTS TO THE DRIVER TABLE ENTRY FOR THE DEVICE 9273 ; R4 -- POINTS TO THE TO11Q PACKET 9274 ; 9275 ; NOTE: 9276 ; 9277 ; IF THE DEVICE DOES NOT EXIST, THE T011Q PACKET IS ACKNOWLEDGED 9278 ; AND CC-C IS SET FOR THE RETURN. 9279 ;- 9280 9281 030302 FDVNM: 9282 030302 012746 177777 MOV #-1,-(SP) ; SAVE ENTRY FLAG 9283 030306 10$: 9284 030306 010546 MOV R5,-(SP) ; SAVE REGISTERS 9285 030310 010446 MOV R4,-(SP) 9286 030312 010146 MOV R1,-(SP) ; SAVE DEVICE 9287 030314 006301 ASL R1 ; FIND THE DEVICE ADDRESS 9288 030316 006301 ASL R1 9289 030320 006301 ASL R1 9290 030322 006301 ASL R1 9291 030324 116105 010044' MOVB .DQPBA-20+Q.TS(R1),R5 ; FIND THE SIZE OF A TABLE ENTRY 9292 030330 016102 010042' MOV .DQPBA-20+Q.DA(R1),R2 ; FIND THE TABLE HEAD ADDRESS 9293 030334 105003 CLRB R3 ; FIND THE LINE NUMBER 9294 030336 000303 SWAB R3 ; PUT IT IN LOWER ORDER OF BYTE 9295 030340 010346 MOV R3,-(SP) ; SAVE LINE NUMBER 9296 030342 126103 010060' CMPB .DQPBA-20+Q.DZ(R1),R3 ; IS THIS A LEGAL NUMBER? 9297 030346 101425 BLOS 80$ ; NO -- IGNORE IT -- NOTE THIS SETS C BIT 9298 030350 20$: 9299 030350 005303 DEC R3 ; ATTEMPT TO FIND THE ADDRESS OF THE HEAD OF THE LIST 9300 030352 100402 BMI 30$ ; FOUND IT -- QUIT -- NOTE THIS SHOULD CLEAR C 9301 030354 060502 ADD R5,R2 ; MULTIPLY BY TABLE ENTRY SIZE 9302 030356 000774 BR 20$ ; AND TRY AGAIN 9303 ; 9304 030360 30$: 9305 030360 026627 000002 000004 CMP 2(SP),#D.CDLS ; [5.1004] TERMINAL DEVICE?? 9306 030366 101003 BHI 40$ ; [5.1004] NO -- GO ON - (NOTE: CC-C CLEAR) 9307 030370 005762 000002 TST TTYEXP(R2) ; [5.1004] YES -- DOES THE TERMINAL EXIST?? 9308 030374 001412 BEQ 80$ ; [5.1004] NO -- SAY THAT IT DOES NOT 9309 030376 40$: QPRDRV -- QUEUED PROTOCOL DRIV MACRO M1113 03-APR-86 20:41 PAGE 175-1 QUEUED PROTOCOL DRIVER -- FIND DEVICE NAME 9310 030376 032626 BIT (SP)+,(SP)+ ; [5.1004] YES -- CLEAR STACK 9311 030400 50$: 9312 030400 012604 MOV (SP)+,R4 9313 030402 012605 MOV (SP)+,R5 ; RESTORE REGISTERS 9314 030404 005226 INC (SP)+ ; REMOVE THE ENTRY FLAG 9315 030406 103001 BCC 60$ ; [5.1004] JUST EXIT IF CC-C IS CLEAR 9316 030410 001001 BNE 70$ ; [5.1004] DEQUEUE IMMEDIATELY IF WE MUST 9317 030412 60$: 9318 030412 RETURN ; RETURN TO CALLER 030412 000207 RTS PC 9319 ; 9320 ; HERE TO SIMPLY DEALLOCATE TO11Q PACKET AND RETURN TO TOP OF TASK 9321 ; 9322 030414