mirror of
https://github.com/PDP-10/stacken.git
synced 2026-03-02 17:45:26 +00:00
7277 lines
226 KiB
Plaintext
7277 lines
226 KiB
Plaintext
TITLE PIP V.033D(546)
|
||
SUBTTL VJC/PMH/AK-DAG/DMN/JHT/DLC/MD/LCR/MHK/CGN/RL/MRB/KMR 15-AUG-85
|
||
|
||
;PERIPHERAL INTERCHANGE PROGRAM
|
||
|
||
|
||
|
||
;COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1968,1969,1970,1971,1972,1973,1974,1975,1976,1977,1980,1984,1985,1986.
|
||
;ALL RIGHTS RESERVED.
|
||
;
|
||
;
|
||
;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
|
||
;ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE
|
||
;INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER
|
||
;COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
|
||
;OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY
|
||
;TRANSFERRED.
|
||
;
|
||
;THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE
|
||
;AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
|
||
;CORPORATION.
|
||
;
|
||
;DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
|
||
;SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
|
||
|
||
|
||
VPIP==33 ;VERSION NUMBER
|
||
VUPDATE==4 ;DEC UPDATE LEVEL
|
||
VEDIT==546 ;EDIT NUMBER
|
||
VCUSTOM==0 ;NON-DEC UPDATE LEVEL
|
||
|
||
SUBTTL REVISION HISTORY
|
||
;
|
||
;
|
||
; EDIT # FUNCTION
|
||
; ==== ========
|
||
;
|
||
; 124 IMPLEMENTES (DX) FACILITY
|
||
; 125 ALLOWS USER TO CLEAR DECTAPE ID
|
||
; 126 FIXES LOSE OF 662ND. CHAR IN LINE WHEN USING /T
|
||
; 127 CORRECTS RETURN ADDRESS FROM DERR5A WHEN NO UFD
|
||
; 130 CORRECTS THE PROTECTION CODE ERROR WHEN UFD IS
|
||
; PROTECTED BUT FILE ISN'T AND USER EXPLICITLY TYPES
|
||
; FILE NAME (I.E. */X_DSK:FILE.MAC[10,1])
|
||
; 131 STOPS TEMPORARY PPN FROM BECOMING PERMANENT
|
||
;
|
||
;VERSION 33A
|
||
;
|
||
; 132 DATE75 HACK (BY DAVE NIXON)
|
||
; 133 PREVENTS "?NO FILE NAMED" FROM BEING TYPED 4
|
||
; TIMES. FIX EXTRACTED FROM 33A WHERE IT WAS
|
||
; ALREADY IMPLEMENTED.
|
||
; 134 MAKE PIP UNDERSTAND AND USE DEVICES 'OLD',
|
||
; 'NEW' AND 'LIB
|
||
; 135 PREVENTS TRANSLATION OF CHARACTERS TO ^CHAR+100
|
||
; IF OUTPUT TO TTY
|
||
; 136 HELPS PREVENTION OF LINE SEQUENCE NUMBER
|
||
; WHEN LAST CHARACTER OF A BLOCK
|
||
;
|
||
; 137 ACCOMMODATES FOR POSSIBLE SKIP RETURN AT
|
||
; DSKDIR+2 FOR THE MONITOR CALL GETPPN
|
||
;
|
||
; 140 ALLOWS MULTIPLE FILES TO BE SEQUENCED CORRECTLY
|
||
; IF A NON-SEQUENCED FILE FOLLOWS A SEQUENCED FILE(SPR #12349)
|
||
;
|
||
; 141 PREVENT PRIV'D JOB FROM ZEROING SYS: UNINTENTIONALLY
|
||
; SPRS 12984,13318
|
||
; AREAS AFFECTED: OMOD1, DTCLR, DSKDIR
|
||
;
|
||
; 142 CLEAR TAB SEEN FLAG BEFORE GOING TO GET FOR THE FIRST TIME.
|
||
; OTHERWISE IF THE FIRST TAB OF A FILE IS AT A TAB STOP,
|
||
; AND THE /W SWITCH IS USED, THE TAB WOULD NOT BE REPLACED
|
||
; WITH A BLANK.
|
||
; SPRS 12238,13123
|
||
; AREA AFFECTED: GETT8
|
||
;
|
||
;
|
||
; 143 FIX TO EDIT 142. EDIT 142 CLEARED THE WRONG
|
||
; BITS SO MOST SWITCHES WOULDN'T WORK.
|
||
; AREA AFFECTED: GETT8
|
||
;
|
||
; 144 PREVENTS PIP FROM LOOPING ON CCL ENTRY IF
|
||
; NO CMD FILE EXISTS
|
||
;
|
||
; 145 MAKES PIP LOOK IN CORRECT UFD WHEN THERE IS A
|
||
; PPN ON OUTPUT SIDE OF FILE SPEC
|
||
;
|
||
; 146 MAKES PIP ABLE TO COPY FROM TMPCOR TO TMPCOR
|
||
;
|
||
; 147 PREVENTS PIP FROM RENAMING OR DELETING FROM
|
||
; ANOTHER PPN UNLESS EXPLICITLY SPECIFIED
|
||
; (PREVENTS ?AMBIGUOUS MESSAGE WHEN FILES WITH
|
||
; SAME NAME.EXT ARE IN USER'S PPN AND LIB.)
|
||
;
|
||
; 150 MAKES PIP DO PHYSICAL-ONLY OPEN SO THERE IS NO
|
||
; AMBIGUITY BETWEEN PHYS & LOG FILE STRUCTURES
|
||
;
|
||
; 151 FIX EDIT 150. DO A PHYSICAL-ONLY OPEN ONLY WHEN
|
||
; THE DEVICE IS GENERIC DISK. THIS MAKES /L FIND ALL
|
||
; FILES PROPERLY AND PREVENTS ?AMBIGUOUS FOR /D AND /R
|
||
; IF WE HAVE .AS DSKA DSKB. CORRECTION TO SPR 13541.
|
||
; 28-SEP-74, JNT.
|
||
;
|
||
; 152 CHECK FOR SOURCE DEVICE SPECIFICATION ON A DELETE
|
||
; OR RENAME AND PRINT ERROR IF THERE IS. SPR 13939.
|
||
; 26-SEP-74, JNT.
|
||
;
|
||
; 153 KEEP THE FILE NAME AND EXTENSION UNDER CONTROL.
|
||
; DON'T ALLOW ".FOO" TO FIND A FILE "FOO".
|
||
; DON'T ALLOW "UFD[P,PN]" TO FIND "[P,PN].UFD".
|
||
; NO SPR. 29-SEP-74, JNT.
|
||
;
|
||
; 154 MAKE /C COUNT LOWER CASE CHARACTERS AND ESCAPES COUNT
|
||
; AS PRINTING CHARACTERS, INSTEAD OF JUST SPACE THRU ^.
|
||
; SPR'S 14,285 & 14,308. 09-OCT-74, JNT.
|
||
;
|
||
; 155 CORRECT 133 TO ELIMINATE LOOP ON /D OR /R WHEN
|
||
; FILENAME AND EXTENSION ARE NULL, E.G. DSK:/D=
|
||
; NO SPR. 10-OCT-74, JNT.
|
||
;
|
||
; 156 CHECK FOR DEVICES WHICH CARE WHAT MODE THEY ARE
|
||
; INITED IN, AND REOPEN THEM IF THE NEW MODE IS
|
||
; DIFFERENT, I.E. CHANGE PTP: TO /B IF PUNCHING
|
||
; A REL FILE. SPR 14,310. 10-OCT-74, JNT.
|
||
;
|
||
; 157 FIX NEW:, SYS:, OLD:, AND LIB: A LITTLE MORE SO THAT
|
||
; LOGICAL ASSIGNMENTS WILL NOT FOOL PIP. NO SPR.
|
||
; 13-OCT-74, JNT.
|
||
;
|
||
; 160 WHEN CONCATENATING FILES, MAKE PIP TREAT THE LAST
|
||
; FILE THE SAME AS THE OTHERS, I.E. NOT CHANGE FROM ASCII
|
||
; LINE MODE TO BINARY. NO SPR. 13-OCT-74, JNT.
|
||
;
|
||
; 161 REMOVE EDIT 145 SO THAT PPN'S DON'T ALL BECOME STICKY.
|
||
; REPLACE DELETED INSTRUCTIONS. SER FROM CO'T.
|
||
; 19-OCT-74, JNT.
|
||
;
|
||
; 162 REMOVE EDIT 131. I DON'T KNOW WHAT IT WAS SUPPOSED
|
||
; TO DO, BUT IT BREAKS TOO MANY THINGS: E.G.
|
||
; TTY:/L=[#,#].UFD
|
||
; TTY:/L=FOO[#,#] WHERE #,# IS NOT YOUR PPN
|
||
; NO SPR. 19-OCT-74, JNT.
|
||
;
|
||
;VERSION 33B
|
||
;
|
||
; 163 WHOLESALE CHANGES TO ERSATZ DEVICE HANDLING, EDIT 134.
|
||
; THIS EDIT IS MOSTLY COURTESY OF JAEDGECOMBE.
|
||
; MANY SPR'S, 11,988. 20-OCT-74, JNT.
|
||
;
|
||
; 164 CORRECTION TO EDIT 151 TO CLEAR THE UU.PHS BIT
|
||
; EACH TIME ININIT IS CALLED.
|
||
; NO SPR. 21-OCT-74, JNT.
|
||
;
|
||
; 165 EDIT 163 CAUSES @ CONSTRUCTIONS TO FAIL SINCE WHEN
|
||
; THE @ IS SEEN, DEVICE IS NOW 0 FOR DEFAULT TRAPPING.
|
||
; NO SPR. 21-OCT-74, JNT.
|
||
;
|
||
; 166 ALLOW [-] OR [#,], [,#], [,] AS PPN SPEC.
|
||
; NO SPR. 21-OCT-74, JNT.
|
||
;
|
||
; 167 REMOVED BY EDIT 224.
|
||
;
|
||
; 170 ON SEQUENCING A FILE WITH /O OR /S, ANY LINES WHICH
|
||
; CONSIST OF JUST END OF LINE CHARACTERS, ADD A TAB
|
||
; INSTEAD OF ANOTHER CARRIAGE RETURN.
|
||
; SPR 14408. 23-OCT-74, JNT.
|
||
;
|
||
; 171 SKIP THE CLOSE BETWEEN THE LOOKUP AND RENAME IF
|
||
; RUNNING LEVEL D, SO FUNNY PATHS WON'T BE LOST.
|
||
; SPRS ?/?. 25-OCT-74, JNT.
|
||
;
|
||
; 172 CLOSE THE /L/F DEVICE BEFORE PRINTING "NO FILES NAMED",
|
||
; SO THAT ANY LEFT OVER UFD STUFF WILL PRINT.
|
||
; SPR 12533,?. 25-OCT-74, JNT.
|
||
;
|
||
; 173 FIX THE FIND THE NEXT EXISTING FILE ROUTINE SO THAT
|
||
; AN EXISTING FILE FOLLOWED BY A NON-EXISTING FILE
|
||
; WILL NOTICE THE NON-EXISTING FILE.
|
||
; SPRS 12533,+?. 25-OCT-74, JNT.
|
||
;
|
||
; 174 FIX PROBLEM WITH RUBBISH IN THE MIDDLE OF FILES
|
||
; WHICH HAVE BEEN MERGED WITH WILD CARD SPECS.
|
||
; SPRS 12900,9527,???. 26-OCT-74, JNT.
|
||
;
|
||
; 175 FIX PROBELM WITH I/O ERROR MESSAGES DESTROYING
|
||
; OUTPUT TO TTY.
|
||
; SPR 12256. 26-OCT-74, JNT.
|
||
;
|
||
; 176 FIX PROBLEM WITH FILE NOT FOUND MESSAGES DURING
|
||
; WILD CARD INPUT DESTROYING OUTPUT TO TTY.
|
||
; NO SPR. 26-OCT-74, JNT.
|
||
;
|
||
; 177 FIX PROBLEM WITH MISSING DIRECTORIES AFTER NOT FOUND
|
||
; FILES, AND PRINT THE NAMES OF THE FILES NOT FOUND.
|
||
; NO SPR. 26-OCT-74, JNT.
|
||
;
|
||
; 200 MAKE LOGICAL ASSIGNMENTS AND ALL: WORK BETTER.
|
||
; NO SPR. 26-OCT-74, JNT.
|
||
;
|
||
; 201 MAKE NUL: WORK BETTER.
|
||
; NO SPR. 27-OCT-74, JNT.
|
||
;
|
||
; 202 HACK TO ALLOW UFD PROTECTION CHANGES AGAIN.!!!
|
||
; PROBLEM IS SOMEWHERE IN NON-ZERO PPN FOOLISHNESS.
|
||
; NO SPR. 28-OCT-74, JNT.
|
||
;
|
||
; 203 CHANGE INITFS TO DETERMINE SEARCH LIST TO USE
|
||
; BY DOING A PATH. INSTEAD OF COMPARING DEVPPN TO
|
||
; OUR PPN.
|
||
; NO SPR. 31-OCT-74, JNT.
|
||
;
|
||
; 204 MAKE /Z SAVE THE TYPED FILE NAME, INSTEAD OF USING
|
||
; THE LAST FILE NAME THE ZEROED DIRECTORY.
|
||
; NO SPR. 01-NOV-74, JNT.
|
||
;
|
||
; 205 FIX EDIT 163 TO NOT LOOSE THE DEFAULT OUTPUT DEVICE.
|
||
; NO SPR. 01-NOV-74, JNT.
|
||
;
|
||
; 206 REDO WHAT WAS ORIGINALLY EDIT 117 FROM SPR 8069.
|
||
; IF WILD CARDS ARE USED IN THE OUTPUT SPEC OF A COPY
|
||
; WITHOUT /X, MAKE THAT ILLEGAL.
|
||
; SPR'S 11041, 11633, 12332. 01-NOV-74, JNT.
|
||
;
|
||
; 207 WORK ON STRAIGHTENING OUT PATH USAGE. USE FLAG BITS
|
||
; TO DETERMINE WHAT PPN OR PATH TO USE.
|
||
; SPR'S MANY. 03-NOV-74, JNT.
|
||
;
|
||
; 210 CORRECT EDIT 156 TO DO CLOSE-OPEN INSTEAD OF SETSTS AND
|
||
; DO THESE ONLY ON CDP: AND PTP:. SETSTS DOESN'T PUNCH
|
||
; BLANK TAPE AND FOOLS PTPSER.
|
||
; SPR 14310. 07-NOV-74, JNT.
|
||
;
|
||
; 211 MORE OF 207, WORK ON PATHS AND PPN'S.
|
||
; MANY SPR'S. 14-NOV-74, JNT.
|
||
;
|
||
; 212 ADD CODE TO THE SETPTH ROUTINE TO MAKE SURE THAT NON-SFD
|
||
; MONITORS DO NOT GET PATH POINTERS IN LOOKUP BLOCKS.
|
||
; NO SPR. 17-NOV-74, JNT.
|
||
;
|
||
; 213 FIX EDIT 211 SO THAT DIRECTORIES OF ERSATZ DEVICES AND
|
||
; DEFAULT PPN'S WORK AGAIN.
|
||
; NO SPR. 17-NOV-74, JNT.
|
||
;
|
||
; 214 FIX EDIT 203 TO LOOK AT THE RIGHT WORD FOR THE DEVICE'S
|
||
; SEARCH LIST CODE AFTER THE PATH. UUO.
|
||
; NO SPR. 17-NOV-74, JNT.
|
||
;
|
||
; 215 FIX EDIT 211 TO ALLOW TMP: AGAIN.
|
||
; NO SPR. 18-NOV-74, JNT.
|
||
;
|
||
; 216 FIX EDIT 207 TO SAVE THE PPN FOR /X COPIES SO
|
||
; THAT DEFAULT PATHS AND OTHER PPNS WILL WORK AGAIN.
|
||
; QAR MD. 21-NOV-74, JNT.
|
||
;
|
||
; 217 FIX EDIT 211 TO ALLOW MULTIPLE DELETES TO DEFAULT
|
||
; PPN'S AND POSSIBLY OTHER THINGS.
|
||
; MY QAR. 21-NOV-74, JNT.
|
||
;
|
||
; 220 CORRECT THE MEANING OF THE DEFAULT PPN IN [,] TO BE
|
||
; THE JOB'S UFD, NOT THE DEFAULT PATH.
|
||
; MY QAR. 25-NOV-74, JNT.
|
||
;
|
||
; 221 CLEAR OUT THE OUTPUT PATH BEFORE SCANNING THE INPUT.
|
||
; NEEDED NOW DUE TO CHANGES FOR EDIT 211.
|
||
; MD QAR. 25-NOV-74, JNT.
|
||
;
|
||
; 222 MAKE UP FOR MONITOR DEFICIENCY WITH RENAMES AND SFD'S,
|
||
; AND MAKE RENAME SUPER DEFENSIVE FOR OLD MONITORS.
|
||
; TH SER. 26-NOV-74, JNT.
|
||
;
|
||
; 223 PUT THE /N AND /S PATH SCANNING SWITCH UNDER A NORMALLY
|
||
; OFF CONDITIONAL. THESE WERE SPECIFIED IN THE MANNER:
|
||
; [1,2,SFD,SFD/S] OR [-/N] OR ETC.
|
||
; HOWEVER THIS IS INCOMPATIBLE WITH SCAN AND WAS REMOVED
|
||
; FOR THIS REASON. THEY ARE UNSUPPORTED.
|
||
; AGREEMENT. 26-NOV-74, JNT.
|
||
;
|
||
; 224 REMOVE EDIT 167, IT WAS A BAD IDEA.
|
||
; NO SPR. 26-NOV-74, JNT.
|
||
;
|
||
; 225 FIX FILE SPECIFICATIONS TO FOLLOW DIRECT STANDARDS.
|
||
; NO SPR. 26-NOV-74, JNT.
|
||
;
|
||
; 226 FIX PART OF EDIT 211, CHANGE HRLZ TO HLRZ TO MAKE WILD
|
||
; UFD DIRECTORY PRINTOUTS CORRECT.
|
||
; MY QAR. 27-NOV-74, JNT.
|
||
;
|
||
; 227 ALLOW EQUAL SOURCE AND OBJECT DEVICES FOR /R/D
|
||
; SEER. 02-DEC-74, JNT.
|
||
;
|
||
; 230 FIX THE /Q SWITCH TO CHECK BOTH SYS: AND HLP:
|
||
; NO SPR. 02-DEC-74, JNT.
|
||
;
|
||
; 231 FIX RENAMES TO NOT CHANGE UFD FROM ERSATZ TO JOB'S
|
||
; DEFAULT PATH!!!!
|
||
; JMF SER. 07-DEC-74, JNT.
|
||
;
|
||
; 232 WHEN DOING FILE STRUCTURE SCANNING IN AN SFD, ALLOW
|
||
; LOOKUP ERROR 1 ALSO SINCE THAT MEANS THERE IS NOT
|
||
; EVEN A UFD FOR THE STRUCTURE.
|
||
; TC QAR. 09-DEC-74, JNT.
|
||
;
|
||
; 233 FIX PART OF EDIT 211 TO MAKE [30,] WORK AGAIN.
|
||
; MY SER. 29-DEC-74, JNT.
|
||
;
|
||
; 234 FIX SETPATH FOR NON-PATHING MONITORS.
|
||
; MY SER. 01-JAN-75, JNT.
|
||
;
|
||
; 235 CORRECT DEVICE NAME FOR NON-DISK ERROR MESSAGES FROM
|
||
; DELETE OR RENAME.
|
||
; MY SER. 01-JAN-75, JNT.
|
||
;
|
||
; 236 FIX ERROR NUMBER MESSAGE DURING /R OR /D WHEN THE MONITOR
|
||
; RETURNS THE WRONG PPN ON A PATH.
|
||
; MY SER. 11-JAN-75, JNT.
|
||
;
|
||
; 237 TREAT SYS: THE SAME WAY WILD DOES, I.E. USE A PATH. UUO
|
||
; INSTEAD OF A DEVPPN. WHEN THE MONITOR IS FIXED, THEN
|
||
; PIP WILL STILL ACT THE SAME WAY AS WILD.
|
||
; QAR, GRIPES, COMMENTS. 11-JAN-75, JNT.
|
||
;
|
||
; 240 MOVE EDIT 235 UP SO THAT IT WILL FIX TMP: MESSAGES TOO.
|
||
; MY SER. 12-JAN-75, JNT.
|
||
;
|
||
; 241 CHANGE EDIT 135 TO BE A CONDITIONAL ASSEMBLY PARAMETER.
|
||
; WJF,CLR,JMF SER. 12-JAN-75, JNT.
|
||
;
|
||
; 242 CHANGE THE /L/F NO UFD ERROR MESSAGE TO SAY EXISTS INSTEAD
|
||
; OF CREATED.
|
||
; WJF QAR. 12-JAN-75, JNT.
|
||
;
|
||
; 243 MAKE EDIT 232 CLEANER.
|
||
; WJF QAR. 12-JAN-75, JNT.
|
||
;
|
||
; 244 CHANGE EDIT 206 TO ASSUME /X IF WILD CARDS ARE GIVEN IN A
|
||
; COPY COMMAND OUTPUT SPEC. THIS MAKES PIP'S OPERATION
|
||
; COMPATIBLE WITH COMPIL, USING THE LEAST CONFUSION PRINCIPLE.
|
||
; WJF QAR. 12-JAN-75, JNT.
|
||
;
|
||
; 245 FINISH FIXING 235 AND 240.
|
||
; OPR SER. 18-JAN-75, JNT.
|
||
;
|
||
; 246 PUT IN LOST FIX FROM SPR 10-7752.
|
||
; SPR 7752. 18-JAN-75, JNT.
|
||
;
|
||
; 247 PRESERVE MODE OF FILES COPIED TO DISK OR DECTAPE FROM DISK OR DECTAPE
|
||
; REGARDLESS OF /B/I/H.
|
||
; SPR 7863,... 18-JAN-75, JNT.
|
||
;
|
||
; 250 PUT WHAT WAS EDIT 116 BACK IN, ERROR MESSAGES ON FILES
|
||
; FOUND BUT NOT VALID IN /R/D (I.E. RIB ERROR).
|
||
; SPR 8285, 8231. 18-JAN-75, JNT.
|
||
;
|
||
; 251 CHANGE EDIT 241 TO DEFAULT TO SENDING ACTUAL CHARACTERS TO A
|
||
; TTY UNLESS /J SWITCH IS USED, WHERE THEY WILL ECHO AS ^C
|
||
; PFC SUGGESTION. 19-JAN-75, JNT.
|
||
;
|
||
; 252 ACCEPT SWITCHES, PPN'S, AND PROTECTIONS AFTER OCTAL FILE
|
||
; NAME SPECIFICATIONS, #12/X=FOO.
|
||
; WJF QAR. 19-JAN-75, JNT.
|
||
;
|
||
; 253 FIX /T/C TO CHECK CORRECTLY FOR NULL LINES.
|
||
; WJF QAR. 19-JAN-75, JNT.
|
||
;
|
||
; 254 MAKE /Z WORK WHEN USED WITH COPYING.
|
||
; MY SER. 20-JAN-75, JNT.
|
||
;
|
||
; 255 MOVE EDITS 142 AND 143 TO FIX MAG TAPE SWITCHES AND TO GET
|
||
; RID OF ONE INSTRUCTION.
|
||
; SPR 15194. 01-FEB-75, JNT.
|
||
;
|
||
; 256 REFORMAT THE LISTING AND ADD SUBTITLES.
|
||
; 15-FEB-75, JNT.
|
||
;
|
||
; 257 FIX IO TO UNASSIGNED CHANNEL (DTA ONLY, WHEN FILE NOT FOUND).
|
||
; MY SER. 15-FEB-75, JNT.
|
||
;
|
||
; 260 REMOVE EDIT 237. IT WAS A BAD IDEA. IT MADE PIP INCONSISTENT
|
||
; AND POINTED OUT A NEW MONITOR BUG.
|
||
; MY SER. 15-FEB-75, JNT.
|
||
;
|
||
; START OF VERSION 33C
|
||
;
|
||
; 261 MAKE REN OLDN:=SYSN: WORK.
|
||
; MT SER. 15-APR-75, JNT.
|
||
;
|
||
; 262 FIX BUG ON FTSFD==0 MONITORS DURING RENAME
|
||
; AC SER. 18-APR-75, JNT.
|
||
;
|
||
; 263 CHECK FOR A DECTAPE DEVICE BY CHECKING DTA BIT INSTEAD
|
||
; OF ASSUMING IF DIRECTORY DEVICE AND NOT DISK THEN IS
|
||
; DECTAPE. SPR #10-16560 17-JUN-75 ILG
|
||
;
|
||
; 264 SKIP REST OF CCL LINE ON COMMAND ERROR.
|
||
; JMF SER. 29-JUL-75, JNT.
|
||
;
|
||
; 265 BYPASS COMMENTS CORRECTLY.
|
||
; SPR 16840. 30-JUL-75, JNT.
|
||
;
|
||
; 266 DON'T LOOK ON WRONG STRUCTURE FOR WILD CARDS TO BE DELETED
|
||
; MY QAR. 17-AUG-75, JNT.
|
||
;
|
||
; 267 DON'T I/O TO UNASSIGNED CHANNEL WHEN /X TO TMP:
|
||
; SPR 17327. 11-SEP-75, JNT.
|
||
;
|
||
; 270 HANDLE LOOKUP ERRORS BETTER IN DELETE AND RENAME
|
||
; JNG SER. 13-SEP-75, JNT.
|
||
;
|
||
; 271 DON'T ZERO SYS UNINTENTIONALLY (I THOUGHT WE FIXED THAT)
|
||
; MY SER. 14-SEP-75, JNT.
|
||
;
|
||
; 272 FOLLOW MONITOR STANDARD OF EXITING ON A ^Z IN TTY: COMMAND STRING
|
||
; * SER. 14-SEP-75, JNT.
|
||
;
|
||
; 273 USE EXTENDED LOOKUP'S, ETC. WHEREEVER POSSIBLE.
|
||
; SPR 17316. 14-SEP-75, JNT.
|
||
;
|
||
; 274 RECOGNIZE THAT ERSATZ DEVICES CAN HAVE SFD'S TOO.
|
||
; SPR 17383. 19-SEP-75, JNT.
|
||
;
|
||
; 275 DON'T PUT JUNK IN .RBEST ON COPY FROM DTA TO DSK.
|
||
; * SER. 17-OCT-75, JNT (IN ABSTENTIA).
|
||
;
|
||
; 276 DON'T FORGET STICKY PPNS WHEN A DEVICE IS ENCOUNTERED.
|
||
; SPR 17516. 17-OCT-75, JNTia
|
||
;
|
||
; 277 DON'T EXIT WHEN TMP:PIP CONTAINS "FOO@".
|
||
; JNG SER. 9-NOV-75, JNTia
|
||
;
|
||
; 300 /W DOES NOT CONVERT ALL TABS TO SPACES WHEN
|
||
; FILE HAS SEQUENCE NUMBERS.
|
||
; SPR 17485, MD, 7-JAN-76
|
||
;
|
||
; 301 IF THE DEFAULT PATH IS AN SFD, PIP WILL NOT FIND
|
||
; COMMAND FILES. (STILL WORKING ON EXPLICIT PROBLEM).
|
||
; SPR 17577, 19-Jan-76, JNTia
|
||
;
|
||
; 302 DON'T TYPE ## BLOCKS FREED AFTER ?AMBIGUOUS MESSAGE.
|
||
; * SER. 19-Jan-76, JNTia
|
||
;
|
||
; 303 DON'T LOSE TABS TO SPACE CONVERSION WHEN THE LINE
|
||
; BUFFER OVERFLOWS (AT THE 662'nd CHARACTER).
|
||
; SPR 10-18878. 02-Apr-76, JNTir.
|
||
;
|
||
; 304 CREATE FILES NAMED FXX001 INSTEAD OF F 001 WHEN MAKING
|
||
; UP FILE NAMES.
|
||
; SPR 18757. 04-Apr-76, JNTir.
|
||
;
|
||
; 305 Lessen the amount of buffer space PIP tries to allocate
|
||
; for the output device when a large blocksize is used.
|
||
; SPR 18024. 04-Apr-76, JNTir.
|
||
;
|
||
; 306 Make RENAME code defensive about monitor bug causing
|
||
; junk to appear in .RBSTS.
|
||
; TW SER. 04-Apr-76, JNTir.
|
||
;
|
||
; 307 Fix edit 275 to work with TSK:, also.
|
||
; * SER. 05-Apr-76, JNTir.
|
||
;
|
||
; 310 Make [11,$ work as a PPN spec.
|
||
; MY SER. 05-Apr-76, JNTir.
|
||
;
|
||
; 311 Get rid of the last INIT.
|
||
; MY SER. 05-Apr-76, JNTir.
|
||
;
|
||
; 312 Don't put anything into SFD's we have been
|
||
; asked to copy.
|
||
; Also (by mistake) handle device TSK.
|
||
; * SER. 05-Apr-76, JNTir.
|
||
;
|
||
; 313 Make RENAME FOO.* and DELETE ALL:FOO.BAR
|
||
; work where FOO or FOO.BAR exist on more than
|
||
; one structure.
|
||
; * SER. 11-Apr-76, JNTir.
|
||
;
|
||
; 314 Make non-wild DELETEs and RENAMEs not read the
|
||
; user's directory (e.g. DELETE FOO.BAR).
|
||
; SPR 18184. JNTir, 11-Apr-76.
|
||
;
|
||
; 315 Fix edit 313.
|
||
; * SER. JNTia, 14-Apr-76.
|
||
;
|
||
; 316 Eliminate (0) Illegal file name message.
|
||
; JNG SER. JNTia, 14-Apr-76.
|
||
;
|
||
; 317 Print full error number when monitor goofs
|
||
; (e.g. Rename between SFD's on different structures.
|
||
; My SER. JNTia, 24-Apr-76.
|
||
;
|
||
; 320 Make file name printers print internal spaces.
|
||
; My SER. JNTia, 24-Apr-76.
|
||
;
|
||
; 321 Fix 314 to handle PPN's right for /R and
|
||
; /D of specific files. Clean up PPN defaulter.
|
||
; My SER. JNTia, 25-Apr-76.
|
||
;
|
||
; 322 Finish adding IFN LEVELC conditionals.
|
||
; My SER. JNTia, 30-Apr-76.
|
||
;
|
||
; 323 Fix /R to handle disks properly, i.e. allow
|
||
; source and destination devices to be specified and
|
||
; then do the right thing with them. In the
|
||
; process, SEARCH MACTEN and UUOSYM and change
|
||
; a bunch of symbols to standard.
|
||
; * SER. JNTia, 04-May-76.
|
||
;
|
||
; 324 On copying a file with a requested output protection
|
||
; of <000>, do the initial ENTER with a protection
|
||
; of <100> in case the user will not be able to do the
|
||
; RENAME from <057> to <000>.
|
||
; SPR 19758. JNTia, 18-May-76.
|
||
;
|
||
; 325 When removing sequence numbers, the character after
|
||
; the sequence number is thrown away without checking
|
||
; to see if it is actually a TAB.
|
||
; SPR 19753. JNTia, 18-May-76.
|
||
;
|
||
; 326 Finish edit 265 by making ; work at TTY level again.
|
||
; My SER. JNTia, 25-May-76.
|
||
;
|
||
; 327 Make renames work from one ersatz device to
|
||
; another again when there are wild cards.
|
||
; My SER. JNTia, 08-Jun-76.
|
||
;
|
||
; 330 Fix DSK:/D=FOO[,,1],BAR looking for BAR in [,,1].
|
||
; My SER. JNTia, 09-Jun-76.
|
||
;
|
||
; 331 Fix TMP: output routine to ignore nulls. Only ASCII
|
||
; files can be in TMP anyway, so use the space wisely.
|
||
; My SER. JNTia, 08-Jul-76.
|
||
;
|
||
; 332 Edit 330 broke sticky PPN's. It also pointed out
|
||
; a potential sticky PPN bug.
|
||
; My SER. JNTia, 08-Jul-76.
|
||
;
|
||
; 333 Fix RENAMEs on DECtape, broken by 323.
|
||
; My SER. JNTia, 16-Jul-76.
|
||
;
|
||
; 334 Fix /X/D, broken by 323.
|
||
; My SER. JNTia, 28-Jul-76.
|
||
;
|
||
; 335 Change 312 to correspond to my PCM as put into 603.
|
||
; My SER. JNTir, 17-Aug-76.
|
||
;
|
||
; 336 273 provided the opportunity for some big files to be
|
||
; shortened when copied to a protection of <000> due to a
|
||
; small value of .RBALC being returned.
|
||
; SPR 10-19582. JNTir, 18-Aug-76.
|
||
;
|
||
; 337 Fix NXTFS to understand private structures.
|
||
; JNG SER. JNTir, 18-Aug-76.
|
||
;
|
||
;
|
||
; 340 Fix the switch processor to accept only M
|
||
; switches after the first input file spec.
|
||
; This fixes foo=bar,oof/b and is the way it
|
||
; was supposed to work.
|
||
; SPR 10-20556 LCR/JNTIA 27-DEC-77.
|
||
;
|
||
; 341 /X/D copies the output device across
|
||
; the equal sign.
|
||
; My SER. JNTIA/LCR 27-DEC-77.
|
||
;
|
||
; 342 OUTPUTTING BINARY FILES MISTAKENLY IN ASCII MODE
|
||
; CAN GENERATE ?ILL MEM REF OR ?ADDRESS CHECK FOR ...
|
||
; SPR 10-20557 LCR/JNTIA 27-DEC-77.
|
||
;
|
||
; 343 /W does not correctly process a line with
|
||
; carriage returns without line feeds.
|
||
; SPR # 10-21013 LCR/JNTIA 28-DEC-77.
|
||
;
|
||
; 344 Make NUL: work as an input file spec
|
||
; for copy commands.
|
||
; SPR # 10-20718 LCR/JNTIA 28-DEC-77.
|
||
;
|
||
; 346 Make things presentable for MACRO 52.
|
||
; LCR/JNTia 28-dec-77.
|
||
;
|
||
; 351 Make PIP look for .CCL before . if no extension
|
||
; is typed for an indirect file.
|
||
;
|
||
; SPR 10-21081. JNITIA/MHK 28-DEC-77
|
||
;
|
||
; 352 Give a reasonable error message when wild
|
||
; devices are tried.
|
||
; SPR # 10-21448 LCR/JNTIA 28-DEC-77.
|
||
;
|
||
; 353 Fix a problem pointed out by 603. When
|
||
; multiple input files are given and the second
|
||
; or following are found by searching(either LIB
|
||
; or up the Path), they aren't found.
|
||
; SPR # * LCR/JNTIA 28-DEC-77.
|
||
;
|
||
; 354 Wait until the EOF is finished on MTA
|
||
; before checking status.
|
||
; SPR 10-21710 JNTIA/MHK 29-Dec-77
|
||
;
|
||
; 355 Make the command DSK:[1,2]/D=FOO,BAR
|
||
; look for FOO BAR in [1,2]
|
||
; SPR# 10-22585 JNITA/MHK 29-DEC-77
|
||
;
|
||
; 356 REALIZE THAT BACKSPACES BACKSPACE
|
||
; WHEN FIGURING TAB STOPS FOR /C
|
||
; SPR# 10-24932 MHK 2-MAR-78
|
||
;
|
||
; 357 DON'T ASSUME A TAB AFTER A LSN, AND DON'T
|
||
; RESET TABCT.
|
||
; SPR# 10-23544 MHK 6-MAR-78
|
||
;
|
||
; RETRACT EDIT 337 DEALING WITH PRIVATE STRUCTURES.
|
||
; MONITOR VERSION 7.01 HANDLES THEM DIFFERENTLY NOW.
|
||
; DMN SER. MHK, 30-JUN-78
|
||
;
|
||
; 360 FIX /S SWITCH BROKEN BY EDIT 342
|
||
; MHK SER MHK 10-JUL-78
|
||
;
|
||
; 361 WHEN USING LSN'S, USE PAGE MARKS TOO.
|
||
; SPR# 10-25713 MHK 10-JUL-78
|
||
;
|
||
; 362 MAKE WILD-CARD RENAMES/DELETES WORK IN
|
||
; SFD'S. BROAKEN BY EDIT 353.
|
||
; MHK SER MHK 23-AUG-78
|
||
;
|
||
; 363 MAKE WILD-CARD RENAMES/DELETES WORK FOR
|
||
; UFD'S.
|
||
; SPR 10-26449
|
||
; AREA AFFECTED: NM6C
|
||
; CGN 28-AUG-78
|
||
;
|
||
; 364 MAKE RENAMES TO IDENTICAL RB??? VALUES WORK
|
||
; CORRECTLY INSTEAD OF RETURNING A PROTECTION
|
||
; FAILURE.
|
||
; SPR 10-26760
|
||
; AREA AFFECTED: DSKR4A
|
||
; CGN 7-NOV-78
|
||
;
|
||
; 365 MAKE DELETION WITH ERSATZ DEVICES WORK CORRECTLY;
|
||
; (SOMEBODY BROKE IT SINCE EDIT 344).
|
||
; NO SPR
|
||
; AREA AFFECTED: LOOK7B
|
||
; CGN 8-NOV-78
|
||
;
|
||
; 366 PRINT DEVICE USED FOR OPEN ALONG WITH FILENAME
|
||
; COPIED/RENAMED/DELETED.
|
||
; NO SPR
|
||
; AREA AFFECTED: INFO3
|
||
; CGN 10-NOV-78
|
||
;
|
||
; 367 MAKE PIP MORE CONSISTENT WHEN COPYING /X FROM
|
||
; GENERIC DSK: TO NON-DIRECTORY DEVICES.
|
||
; SPR 10-26984
|
||
; AREAS AFFECTED: DTCOPY, CAL6
|
||
; CGN 10-NOV-78
|
||
;
|
||
; 370 PREVENT PIP FROM CARRYING THE PPN ACROSS THE
|
||
; EQUALS-SIGN AS A STICKY DEFAULT ON RENAMES.
|
||
; SPR 10-26819
|
||
; AREAS AFFECTED: DSKDR0 AND FOLLOWING
|
||
; CGN 10-NOV-78
|
||
;
|
||
; 371 MORE OF EDIT 366.
|
||
; NO SPR
|
||
; AREAS AFFECTED: AUXFLG, DSKDRG, INFO3
|
||
; CGN 13-NOV-78
|
||
;
|
||
; 372 MORE OF EDIT 366
|
||
; NO SPR
|
||
; AREAS AFFECTED: INFO3, DSKDR7
|
||
; CGN 15-NOV-78
|
||
;
|
||
; 373 FIX /W, BROKEN BY EDIT 361.
|
||
; NO SPR, BUT LOTS OF GARBAGED FILES.
|
||
; AREA AFFECTED: GET1
|
||
; CGN 02-DEC-78
|
||
;
|
||
; 374 FIX "PROTECT FOO.BAR[,,SFD]<123>", BROKEN WHEN
|
||
; STICKY PPN'S WERE REMOVED.
|
||
; AREA AFFECTED: DSKR4A
|
||
; CGN 06-DEC-78
|
||
;
|
||
; 375 FIX A PROBLEM WITH RENAME MESSAGES.
|
||
; AREAS AFFECTED: DSKDR7, DSKDR9
|
||
; CGN 07-DEC-78
|
||
;
|
||
; 376 DISCARD A CREATED FILE IF A FATAL ERROR OCCURS DURING
|
||
; DISK OUTPUT, TO PRESERVE FILE BEING SUPERCEDED.
|
||
; SPR 10-27235
|
||
; AREA AFFECTED: IOERRN
|
||
; CGN 11-DEC-78
|
||
;
|
||
; 377 IF A SHR OR EXE FILE IS BEING RENAMED, AND NOTHING IN
|
||
; THE RIB IS CHANGING, DO A RENAME ANYWAY IF THE OWNER
|
||
; ACCESS PROTECTION IS 0, 1, OR 4 IN ORDER TO RELEASE
|
||
; ANY DORMANT HIGH SEGMENT.
|
||
; IF THE OWNER ACCESS PROTECTION IS 2, 3, 5, 6, OR 7,
|
||
; PRINT A WARNING MESSAGE WHEN THE RENAME IS BYPASSED
|
||
; SO USER WILL KNOW THAT ANY DORMANT HIGH SEGMENT WAS
|
||
; NOT RELEASED.
|
||
; NO SPR; CGN/ER/TW/JMF CONSENSUS
|
||
; AREA AFFECTED: DSKDR9
|
||
; CGN 11-DEC-78
|
||
;
|
||
; 400 IF DOING SINGLE-FILE ALL: RENAME/DELETE, RESTORE
|
||
; .RBPPN AFTER THE LOOKUP, BUT DON'T POP IT.
|
||
; NO SPR
|
||
; AREA AFFECTED: DSKDR3
|
||
; CGN 11-DEC-78
|
||
;
|
||
; 401 CLEAN UP FOR FIELD TEST.
|
||
; CGN 12-DEC-78
|
||
;
|
||
;
|
||
; 402 CORRECT RENAME ACROSS DIRECTORIES USING ERSATZ DEVICES.
|
||
; CGN 17-JAN-79
|
||
;
|
||
; 403 INCREASE SIZE OF TMPCOR BUFFERS FOR SERIES 7 MONITORS.
|
||
; CGN 18-JAN-79
|
||
;
|
||
; 404 FIX MAGTAPE EOF OPERATION.
|
||
; CGN 29-JAN-79
|
||
;
|
||
; 405 FIX FILE PROTECTION IN SFD'S THAT ARE NOT THE DEFAULT
|
||
; PATH.
|
||
; AREA AFFECTED: DSKR4A
|
||
; CGN 1-FEB-79
|
||
;
|
||
; 500 CHANGE EDIT NUMBER TO 500 TO ALLOW MAINTENANCE OF
|
||
; VERSION 33B DURING FIELD-TEST.
|
||
; CGN 01-FEB-79
|
||
;
|
||
; 501 MAKE FILENAMES LIKE "FO*BAR.FOO" ILLEGAL
|
||
; AREAS AFFECTED: NM3A, NM4A, NM10, NMSTAR
|
||
; RL 30-OCT-80
|
||
;
|
||
; 502 MAKE PIP COPY TMPCOR FILES IN BINARY TO DISK,
|
||
; MAGTAPE, &DECTAPE, ASCII TO OTHER DEVICES.
|
||
; AREA AFFECTED: TMPIN
|
||
; RL 31-OCT-80
|
||
;
|
||
; 503 DEFINE NEW LOOKUP/ENTER/RENAME ERROR CODES
|
||
; AREA AFFECTED: TABLE
|
||
; RL 31-OCT-80
|
||
;
|
||
; 504 FINISH 501 BY CLEARING "*"-SEEN FLAG (SPLAT1) UPON
|
||
; SEEING PUNCTUATION OF SOME SORT.
|
||
; AREA AFFECTED: NM5
|
||
; RL 4-NOV-80
|
||
;
|
||
; 505 MAKE THE INPUT PATH STICKY ON A RENAME WITH NO EXPLICIT
|
||
; OUTPUT PATH.
|
||
; AREA AFFECTED: DSKDR0, RENTST
|
||
; RL 25-NOV-80
|
||
; NO SPR
|
||
;
|
||
; 506 ALLOW "/X=NUL:FILE.EXT" TO CREATE EMPTY "FILE.EXT".
|
||
; AREA AFFECTED: LOOK6
|
||
; RL 23-FEB-81
|
||
; QAR #:10-05579
|
||
;
|
||
; 507 MAKE ERROR MESSAGE FOR WILDCARD SFD SPECIFICATION
|
||
; AREAS AFFECTED: GTPTH1, ERR2B
|
||
; RL 24-FEB-81
|
||
; NO SPR
|
||
;
|
||
; 510 ALLOW SETTING 1600 AND 6250 BPI FOR TAPE
|
||
; AREAS AFFECTED: DISPTB,MTC1,INMTA,SETBPI,BPIERR,BPIARG
|
||
; RL 4-MAR-81
|
||
; NO SPR
|
||
;
|
||
; 511 MAKE PROGRAM OUTPUT LINE SEQUENCE NUMBERS WITH
|
||
; WORD-ALIGNED LSN'S, BIT 35 SET.
|
||
; AREAS AFFECTED: ALL OVER
|
||
; RL 13-MAR-81
|
||
; NO SPR
|
||
;
|
||
; 512 MAKE [-] WORK IN SFD'S BY POINTING TO PATH WHEN "-" IS SEEN
|
||
; AREAS AFFECTED: GETMY1
|
||
; RL 8-APR-81
|
||
; NO SPR
|
||
;
|
||
; 513 ADD FTSMP SWITCH FOR USE WITH /P FUNCTION TO PREVENT TRASH
|
||
; AREAS AFFECTED: GETPC4
|
||
; RL 5-JUN-81
|
||
; SPR: 10-31129
|
||
;
|
||
; 514 FINISH EDIT 364 SO UFD RENAMES WHICH DO NOT CHANGE ANYTHING
|
||
; DO NOT CAUSE FATAL ERRORS.
|
||
; AREAS AFFECTED: DSKR4C
|
||
; RL 11-JUN-81
|
||
; QAR: 10-06089
|
||
;
|
||
; 515 BYPASS OWNER PROTECTION CODE CHECKING WHEN USER PPN
|
||
; IS [1,2].
|
||
; AREAS AFFECTED: PIP1, DSKDR9
|
||
; RL 12-JUN-81
|
||
; QAR: 10-06012
|
||
;
|
||
; 516 CLEAR MTFLAG WHEN END OF MAGTAPE SWITCH IS SEEN
|
||
; AREAS AFFECTED: GETT3
|
||
; RL 1-JUL-81
|
||
; QAR: 10-06122
|
||
;
|
||
; 517 COPY .RBNCA WORD OF ENTER BLOCK
|
||
; AREAS AFFECTED: CPYRI1
|
||
; RL 2-OCT-81
|
||
; SPR: 10-31474
|
||
;
|
||
; 520 LENGTHEN LOOKUP/ENTER BLOCKS AND COPY .RBPCA
|
||
; AREAS AFFECTED: CPYRI1
|
||
; RL 7-JAN-82
|
||
; SPR: 10-31474, continued
|
||
;
|
||
; 521 IN DELETES AND RENAMES, CHECK THAT THE FILE
|
||
; FOUND MATCHES THE PPN OR PATH SPECIFIED, OR THE
|
||
; DEFAULT PATH IF NONE WAS GIVEN.
|
||
; AREAS AFFECTED: DSKDR3, CHKFIL
|
||
; RL 8-JAN-82
|
||
; SPR: NONE
|
||
;
|
||
; 522 WHEN COPYING FROM DTA: TO AN EXISTING FILE ON DSK:,
|
||
; THE FILEMODE OF THE EXISTING FILE GETS ZEROED.
|
||
; THIS AFFECTS EDIT 247 WHICH DID NOT ALLOW THAT
|
||
; DTA: HAS NO FILEMODE.
|
||
; AREAS AFFECTED: EXTEN0
|
||
; RL 28-JAN-82
|
||
; SPR: 10-31878
|
||
;
|
||
; 523 MAKE ROUTINE IOERR WORK.
|
||
; COURTESY OF WESTERN AUSTRALIA INSTITUTE OF TECHNOLOGY
|
||
; AREAS AFFECTED: IOERR
|
||
; RL 28-JAN-82
|
||
; SPR: 10-31916
|
||
;
|
||
; 524 DONT DELETE NONEXISTANT DTA: FILES. PRINT
|
||
; ERROR MESSAGE "NO FILE NAMED XXXXXX.XXX".
|
||
; AREAS AFFECTED: LOOK
|
||
; MRB 08-APR-82
|
||
; SPR: 10-32271
|
||
;
|
||
; 525 MAKE ^P THROUGH ^T PRINT OUT AS UPARROW-CHARACTER
|
||
; WHEN THE /J SWITCH IS USED TO A TTY:
|
||
; KMR 11-JAN-83
|
||
; SPR: 10-32655
|
||
;
|
||
; 526 MAKE COPY FROM TSK TO DSK COPY LOOKUP/ENTER
|
||
; BLOCKS CORRECTLY
|
||
; KMR 29-MAR-83
|
||
; SPR: 10-33080
|
||
;
|
||
; 527 MAKE NON-RECOVERABLE FATAL ERRORS SUCH AS DISK
|
||
; QUOTA EXCEEDED DELETE THE OUTPUT FILE ON ERROR.
|
||
; FIX TO EDIT 376 TO KEEP FILE CONCATENATION ON
|
||
; COPY WORKING.
|
||
; KMR 12-MAY-83
|
||
; SPR: 10-33251,10-32831
|
||
;
|
||
; 530 MAKE A BLANK LINE STAY A BLANK LINE WHEN
|
||
; /C AND /T USED TO DROP SPACES AND CONVERT
|
||
; TABS.
|
||
; KMR 22-JUN-83
|
||
; SPR: 10-33839
|
||
;
|
||
; 531 FIX EDIT 357 SO THAT TABS AFTER LSN'S ARE DONE
|
||
; CORRECTLY.
|
||
; KMR 29-JUN-83
|
||
; SPR: 10-33818
|
||
;
|
||
; 532 FIX EDIT 151 SO THAT LOGICAL NAMES WORK ON
|
||
; DELETION OF FILES
|
||
; KMR 29-FEB-84
|
||
; SPR: 10-34483
|
||
;
|
||
; 533 DON'T SEARCH LIB: OR SYS: WHEN DELETING FILES.
|
||
; DRB 29-Jan-85
|
||
; SPR 10-33508
|
||
;
|
||
; 534 357 BROKE /W, 531 BROKE /C. FIX THEM BOTH BY
|
||
; RE-IMPLEMENTING CODE FROM 357, AND CLEARING
|
||
; THE "TAB SEEN" FLAG AFTER THE LSN, INSTEAD OF
|
||
; INCREMENTING THE TAB COUNTER.
|
||
; DRB 31-Jan-85
|
||
; SPR 10-34733
|
||
;
|
||
; 535 WILDCARD PROTECT COMMANDS WHERE THE SAME FILE NAME
|
||
; EXISTS ON TWO STRUCTURES RESULTS IN BOTH FILES BEING
|
||
; RENAMED TWICE EACH. DON'T LOOK FOR A FILE ON ALL
|
||
; STRUCTURES WHEN DOING WILDCARD RENAME, JUST LOOK FOR
|
||
; THE FILE ON THE STRUCTURE THAT THE DIRECTORY SAYS
|
||
; IT'S ON.
|
||
; DRB 31-Jan-85
|
||
; SPR 10-35079
|
||
;
|
||
; 536 532 BROKE DELETING A LIST OF FILES. ALL FILES LISTED AFTER
|
||
; A WILDCARDED FILE SPECIFICATION WOULD NOT GET DELETED, AND
|
||
; A PIP COMMAND ERROR MESSAGE WOULD BE ISSUED. AS PER THE
|
||
; SPR RESPONSE CARD SENT BY THE CUSTOMER OF 532, SAVE AND
|
||
; RESTORE GENERI AROUND THE CALL TO ININIT.
|
||
; DRB 13-Feb-85
|
||
; No SPR
|
||
;
|
||
; 537 ADD SOME CONSISTENCY CHECKS IN THE CODE THAT READS LINE
|
||
; SEQUENCE NUMBERS TO WATCH FOR A FILE THAT'S REALLY BINARY
|
||
; AND NOT LINE SEQUENCED ASCII.
|
||
; DRB 25-Feb-85
|
||
; SPR 10-33544
|
||
;
|
||
; 540 FIX A DATE75 BUG WHEN CREATING FILES WITH A PROTECTION OF
|
||
; <000>. THIS NORMALLY HAPPENS WHEN CONCATENATING INPUT FILES.
|
||
; DRB 27-Mar-85
|
||
; SPR 10-35149
|
||
;
|
||
; 541 MAKE SURE NON-WILDCARDED DELETES ON A SPECIFIC STRUCTURE DON'T
|
||
; SEARCH LIB:. ALSO, LITE RB.DSL SO WE DON'T GET PROTECTION
|
||
; FAILURE ON FILES FROM /SYS OR /LIB.
|
||
; DRB 30-Apr-85
|
||
; SPR 10-31791
|
||
;
|
||
; 542 541 DIDN'T KNOW THAT CHKFIL ASSUMES THAT A PPN IS PUSHED BEFORE
|
||
; THE CALL. NOW WE KNOW.
|
||
; DRB 06-May-85
|
||
; No SPR
|
||
;
|
||
; 543 EDIT 306 ALLOWS FILES TO BE CREATED WITH A COPY COMMAND THAT
|
||
; HAVE RP.DIR SET. ONLY COPY RP.DIR IF A RENAME IS IN PROGRESS.
|
||
; CREATION OF .SFD AND .UFD FILES GET RP.DIR SET AUTOMAGICALLY.
|
||
; DRB 24-JUL-85
|
||
; SPR 10-32940
|
||
|
||
; 544 DO COPYRIGHTS.
|
||
; LEO 15-AUG-85
|
||
;
|
||
; 545 COPY THE QUOTA WORDS WHEN RENAMING DIRECTORIES.
|
||
; DRB 05-Nov-85
|
||
; QAR 868386
|
||
;
|
||
; 546 EDIT 537 IS SO SMART, THAT YOU CAN'T TYPE AN .EXE FILE ANYMORE
|
||
; TO SEE THE NEAT COPYRIGHT NOTICE. IT JUST SAYS THAT IT'S A
|
||
; BINARY FILE, AND TO USE /X. THAT DOESN'T WORK, SINCE /X USES
|
||
; A MODE THAT'S ILLEGAL ON A TTY.
|
||
; DRB 13-Nov-85
|
||
; NO SPR
|
||
;
|
||
;[END OF REVISION HISTORY]
|
||
|
||
SUBTTL CONDITIONAL ASSEMBLY SWITCHES
|
||
|
||
LOC 124
|
||
PIP1 ;SET REENTER ADDRESS
|
||
RELOC
|
||
LOC 137
|
||
<VCUSTOM>B2+<VPIP>B11+<VUPDATE>B17+VEDIT
|
||
RELOC
|
||
|
||
SEARCH MACTEN,UUOSYM ;[323]
|
||
|
||
;RIMSW==0 /Y SWITCH OPTION UNAVAILABLE.
|
||
;RIMSW==1 /Y SWITCH OPTION AVAILABLE.
|
||
|
||
;CCLSW==0 PIP WILL NOT PROCESS CCL COMMANDS.
|
||
;CCLSW==1 PIP WILL EXECUTE CCL COMMANDS FROM DISK.
|
||
|
||
;TEMP==1 PIP WILL GET CCL COMMANDS FROM CORE (TMPCOR UUO)
|
||
|
||
;REENT==1 PIP IS REENTRANT (AK-DAG)
|
||
|
||
;FTDSK==0 NON-DSK SYSTEM
|
||
;FTDSK==1 DSK SYSTEM
|
||
|
||
;LEVELC==0 LEVEL C SUPPORT ELIMINATED (GETTAB'S, CLOSE-RENAME, ETC)
|
||
;LEVELC==1 INCLUDE LEVEL C SUPPORT (AND ALL SMALL MONITOR CODE)
|
||
|
||
;SCANSW==0 NO /N & /S SCAN SWITCH ALLOWED IN PPN SPEC
|
||
;SCANSW==1 ALLOW /N & /S
|
||
|
||
;CTLTTY==0 SEND CONTROL CHARACTERS TO TTY
|
||
;CTLTTY==1 TRANSLATE CONTROL CHARACTERS TO ^CH TO TTY IF /J SWITCH IS USED
|
||
|
||
;**;[513] Insert assembly switch description RLUSK 5-Jun-81
|
||
;[513] The FTSMP is a temporary assembly switch for those installations which
|
||
;[513] run 7.01 SMP and have significant use of PIP's /P switch (invoking
|
||
;[513] conversion of printer carriage control characters to ASCII control
|
||
;[513] characters). The code compiled when this switch is set is
|
||
;[513] dependent on the hardware algorithm for cache use, and as such is
|
||
;[513] only suitable for a temporary patch. This code and all code related
|
||
;[513] to edit 513 may be changed in the future.
|
||
|
||
;[513] FTSMP==0 PROCEED WITH NORMAL INPUT
|
||
;[513] FTSMP==1 FLUSH CACHE AFTER TOUCHING INPUT BUFFER AT GETPC4+1
|
||
|
||
;CONDITIONAL ASSEMBLY SWITCH SETUP (DEC CONFIGURATION)
|
||
;---------------------------------
|
||
|
||
IFNDEF FTDSK, <FTDSK==1>
|
||
IFE FTDSK, <CCLSW==0>
|
||
IFNDEF CCLSW, <CCLSW==1>
|
||
IFE CCLSW, <TEMP==0>
|
||
IFNDEF TEMP, <TEMP==1>
|
||
IFNDEF REENT, <REENT==1>
|
||
IFNDEF RIMSW, <RIMSW==1>
|
||
IFNDEF LEVELC, <LEVELC==0>
|
||
IFNDEF SCANSW, <SCANSW==0>
|
||
IFNDEF CTLTTY, <CTLTTY==1>
|
||
;**;[513] Add default FTSMP setting RLUSK 5-Jun-81
|
||
IFNDEF FTSMP, <FTSMP==0> ;[513] DEFAULT FOR FTSMP IS OFF
|
||
|
||
|
||
|
||
|
||
IFN REENT,< TWOSEGMENTS
|
||
RELOC 400000>
|
||
|
||
COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1968,1986. ALL RIGHTS RESERVED.
|
||
\;END COPYRIGHT MACRO
|
||
|
||
MLON
|
||
SALL
|
||
|
||
SUBTTL REGISTER BIT DEFINITIONS
|
||
;FLAG ASSIGNMENTS (RIGHT HALF)
|
||
|
||
LINE==1 ;ASCII LINE MODE PROCESSING
|
||
BMOD==2 ;BINARY PROCESSING
|
||
TBMOD==4 ;SUPPRESS TRAILING SP, CHANGE MULTIPLE SP TO TABS
|
||
DFLG==10 ;DELETE FILES MODE
|
||
LFLG==20 ;LIST DIRECTORY
|
||
NSMOD==40 ;IGNORE INPUT SEQUENCE NUMBERS
|
||
RFLG==100 ;RENAME FILE MODE
|
||
SQMOD==200 ;GENERATE SEQUENCE NUMBERS
|
||
STS==400 ;END OF LINE SEEN, OUTPUT SEQUENCE NUMBER NEXT
|
||
SPMOD==1000 ;SUPPRESS TRAILING SPACES
|
||
XFLG==2000 ;COPY DECTAPE MODE
|
||
ZFLG==4000 ;CLEAR DECTAPE DIRECTORY
|
||
SUS==10000 ;SEQUENCE NUMBER GENERATION IN PROGRESS
|
||
SPOK==20000 ;SPACE WAS LAST CHARACTER
|
||
ESQ==40000 ;STOP OUTPUTTING SEQ NUM, RESUME OUTPUTTING DATA
|
||
SNI==100000 ;DO NOT INCREMENT SEQUENCE NUMBER
|
||
MTFLG==200000 ;MTA REQUEST RECEIVED
|
||
OSFLG==400000 ;GENERATE SEQ. NOS. INCR. BY ONE
|
||
|
||
;FLAG ASSIGNMENTS (LEFT HALF)
|
||
|
||
OFLG==1 ;BLOCK 0 COPY
|
||
RIMFLG==2 ;RIM FORMAT INPUT /OUT TO DTA. ILLEG IF RIMSW==0
|
||
PFLG==4 ;FORTRAN PROGRAM OUTPUT FORMAT CONVERSION
|
||
PCONV==10 ;COLUMN 1 CONVERSION IN PROGRESS
|
||
NEWFIL==20 ;NEW FILE JUST INITIATED
|
||
CHKFLG==40 ;PARENTHESES CHECK MODE
|
||
IFLG==100 ;SELECT IMAGE MODE
|
||
GFLG==200 ;KEEP GOING IF THERE ARE I/O ERRORS
|
||
IBFLG==400 ;SELECT IMAGE BINARY MODE
|
||
JFLG==1000 ;NON-STANDARD MODE
|
||
WFLG==2000 ;/W CONVERT TABS TO SPACES
|
||
TBSN==4000 ;TAB ALREADY SEEN DURING /W
|
||
TID==10000 ;[125] TAPE ID TO BE ALTERED
|
||
;**;[530] AT FLAG ASSIGNMENTS (LEFT HALF) +13L, INSERT 1L, KMR, 22-JUN-83
|
||
SPCNV==20000 ;[530] SPACE ALREADY DROPPED FROM LINE
|
||
DSKDBC==40000 ;[130] DSKDIR BEEN CALLED
|
||
;AUXFLG ASSIGNMENTS (LEFT HALF)
|
||
|
||
QFLG==1 ;PLEASE PRINT SWITCH SET
|
||
NSPROT==2 ;NON-STANDARD DISK OUTPUT PROTECTION
|
||
SBIN==4 ;36-BIT PR. ON REL. ETC. FILES
|
||
NOMORE==20 ;IGNORE ANY SWITCHES BUT MTA FROM NOW ON
|
||
CDRFLG==40 ;CONVERT COLS 73-80 TO SPACES + /C
|
||
INFOFL==100 ;FLAG USED BY ERR3A:
|
||
RSDCFL==200 ;USED FOR MERGING FILES, ==1 IF FILE HAS EXTENSION
|
||
;REL,SAV,DMP,CHN OR OTHERWISE == 0
|
||
FRSTIN==400 ;THIS IS THE FIRST INPUT FILE (USED IN FILE
|
||
;MERGE COMMAND) == 0 FOR FIRST INPUT
|
||
AMBIGU==1000 ;[371] AMBIGUOUS ERROR SENSED.
|
||
|
||
;MTAREQ ASSIGNMENTS (RIGHT HALF)
|
||
|
||
MTAFLG==1 ;MTA ADVANCE ONE FILE
|
||
MTBFLG==2 ;MTA BACKSPACE ONE FILE
|
||
MTTFLG==4 ;MTA SKIP TP LOGICAL EOT
|
||
MTWFLG==10 ;MTA REWIND
|
||
MTFFLG==20 ;MTA MARK EOF
|
||
MTUFLG==40 ;MTA REWIND AND UNLOAD
|
||
MTDFLG==100 ;MTA ADVANCE ONE RECORD
|
||
MTPFLG==200 ;MTA BACKSPACE ONE RECORD
|
||
;**;[510] Insert 2 lines after "MTAREQ ASSIGNMENTS" RLUSK 25-Feb-81
|
||
MT62FL==10000 ;[510] MTA SET 6250 B.P.I.
|
||
MT16FL==20000 ;[510] MTA SET 1600 B.P.I.
|
||
MT8FLG==400 ;MTA SET 800 B.P.I.
|
||
MT5FLG==1000 ;MTA SET 556 B.P.I.
|
||
MT2FLG==2000 ;MTA SET 200 B.P.I.
|
||
MTEFLG==4000 ;MTA SELECT EVEN PARITY
|
||
|
||
;AUXFLG ASSIGNMENTS (RIGHT HALF)
|
||
|
||
REDFLG==1 ;==1 IF ANY FILES ARE INPUT (OTHER THAN DIRECTORIES)
|
||
SYSFLG==2 ;[163] USE SYSSTR FOR SEARCH LIST, IE ALL:
|
||
NULIN==4 ;[211] NUL: IS THE INPUT DEVICE
|
||
LPTOUT==10 ;LPT OUTPUT
|
||
FFLG==20 ;LIST SHORT DISK DIRECTORY
|
||
ONEOUT==40 ;ONE OUTPUT FILE INITIALIZED
|
||
CDRIN==100 ;CARDS IN
|
||
MTAOUT==200 ;OUTPUT TO MTA
|
||
MTAIN==400 ;INPUT FROM MTA
|
||
TTYIN==1000 ;INPUT FROM TTY
|
||
READ1==2000 ;LOOK FOUND NEW INPUT FILE, NO READ YET.
|
||
DTAOUT==4000 ;OUTPUT TO DTA
|
||
DSKOUT==10000 ;OUTPUT TO DSK
|
||
DTAIN==20000 ;INPUT FROM DTA
|
||
DSKIN==40000 ;INPUT FROM DSK
|
||
TTYOUT==100000 ;OUTPUT TO TTY
|
||
PPTIN==200000 ;INPUT FROM PTR
|
||
PPTOUT==400000 ;OUTPUT TO PTP
|
||
;CALFLG ASSIGNMENTS (RIGHT HALF) FOR DESCRIBING A BLOCK OF INFORMATION
|
||
;FOUND BY THE COMMAND SCANNER.
|
||
|
||
FNEX==1 ;==1 WHEN FN.EX==*.*, *.EXT, FN.* (WHEN MORE
|
||
;THAN ONE FN.EX IS IMPLIED).
|
||
MATEX==2 ;FILE EXTENSIONS MUST MATCH
|
||
MATFN==4 ;FILE NAMES MUST MATCH
|
||
NEWDEV==10 ;A NEW INPUT DEVICE WAS GIVEN
|
||
NEWPP==20 ;A NEW #P-P WAS GIVEN
|
||
ASTFLG==40 ;FLAG SET WHEN FILE NAMED IN CS FOUND
|
||
;BY LOOK ROUTINE EVEN IF FN OR EXT =*
|
||
DEV==100 ;DEVICE NAME INDICATOR
|
||
DVSWTH==200 ;OUTPUT DEVICE SEEN
|
||
NSWTCH==400 ;INDICATES NULL NAME
|
||
SSWTCH==1000 ;LEFT ARROW SEEN (TEMPORARY SWITCH)
|
||
LISTTY==2000 ;LIST TO TTY
|
||
TMPI==4000 ;INPUT DEVICE TMPCOR SEEN
|
||
TMPO==10000 ;OUTPUT DEVICE TMPCOR
|
||
RXFLG==20000 ;(RX) SEEN
|
||
RTRNFL==40000 ;RETURN (POPJ ) FROM ERROR PRINTER (PTEXT)
|
||
ARWSW==100000 ;LEFT ARROW SEEN IN THIS LINE
|
||
SQNSN==200000 ;A SEQUENCE NUMBER HAS BEEN SEEN FOR THIS LINE
|
||
COMAFL==400000 ;A COMMA SEEN ON INPUT SIDE OF SPECIFICATIONS
|
||
|
||
ALLCLF==FNEX!MATEX!MATFN!NEWDEV!NEWPP
|
||
;MORE FLAGS IN LEFT HALF
|
||
MFLG==1 ;A WILD CHAR MASK HAS BEEN SET UP FOR ??????.???
|
||
LDVFLG==2 ;WE HAVE A DEVICE TO OUTPUT (DIR COMMAND)
|
||
LPPFLG==4 ;WE HAVE A PPN TO OUTPUT (DIR)
|
||
OSPLFL==10 ;OUTPUT DEVICE IS SPOOLED
|
||
SDEVSN==20 ;[152] SOURCE DEVICE SEEN IN SCAN
|
||
FNSEEN==40 ;[153] FILE NAME NOT SEEN IN SCAN
|
||
DDEVSN==100 ;[323] DESTINATION DEVICE SEEN IN SCAN
|
||
TSKOUT==1000 ;[312] OUTPUT DEVICE IS A TASK
|
||
TSKIN==2000 ;[312] INPUT DEVICE IS A TASK
|
||
|
||
SUBTTL MISCELLANEOUS DEFINITIONS
|
||
;DEVICE CHANNEL ASSIGNMENTS
|
||
|
||
IFN CCLSW,<
|
||
COM==0 ;STORED COMMAND INPUT CHANNEL>
|
||
CON==1 ;COMMAND INPUT CHANNEL
|
||
OUT==2 ;OUTPUT DEVICE
|
||
IN==3 ;INPUT DEVICE
|
||
TAPE==4 ;MTA POSITIONING
|
||
DIR==5 ;DISK DIR. READ
|
||
DD==6 ;DUMP MODE CHANNEL FOR DTA DIR (TAPE ID ONLY)
|
||
|
||
;ACCUMULATOR ASSIGNMENTS
|
||
|
||
T1=1 ;GENERAL PURPOSE
|
||
T2=2 ;G.P.
|
||
T3=3 ;G.P.
|
||
CHR=4 ;INPUT CHARACTER
|
||
FL=5 ;MORE FLAGS
|
||
FLAG=6 ;FLAG REGISTER
|
||
T4=7 ;G.P.
|
||
IOS=10 ;IO STATUS BITS
|
||
T5=11 ;G.P.
|
||
T6=12 ; G.P.
|
||
AUXFLG=13 ;AUXILIARY FLAG REGISTER
|
||
T7=14 ;G.P.
|
||
DOUT=15 ;DIVIDED NO. FOR OUTPUT
|
||
DOUT1=16 ;REMAINDER, DOUT+1
|
||
P=17 ;PUSHDOWN POINTER
|
||
|
||
CALFLG==FL ;OLD NAME - TOO LONG TO TYPE
|
||
|
||
;MISCELLANEOUS PARAMETERS
|
||
|
||
;**;[510] Insert 1 line at "MISCELLANEOUS PARAMETERS" RLUSK 25-Feb-81
|
||
DENS0==INSVL. (0,IO.DEN);[510] SET 1600, 6250 USING TAPOP. UUO
|
||
DENS2==INSVL. (1,IO.DEN);MTA 200 BPI
|
||
DENS5==INSVL. (2,IO.DEN);MTA 556 BPI
|
||
DENS8==INSVL. (3,IO.DEN);MTA 800 BPI
|
||
PARE==INSVL. (1,IO.PAR) ;MTA EVEN PARITY
|
||
|
||
PTHLEN==6 ;NUMBER OF SFD'S ALLOWED (1 MORE THAN 5.04)
|
||
|
||
;ASCII CHARACTERS
|
||
|
||
TABSP==10 ;SPACES PER TAB
|
||
|
||
CR==15 ;CARRIAGE RETURN
|
||
LF==12 ;LINE FEED
|
||
FF==14 ;FORM-FEED
|
||
HPAGE==20 ;HALF PAGE
|
||
ALTMOD==33 ;NEWEST ALTMODE
|
||
ALT175==175 ;OLDEST ALTMODE
|
||
ALT176==176 ;OLDER ALTMODE
|
||
LA==137 ;LEFT ARROW
|
||
CZ==32 ;CONTROL Z
|
||
XON==21 ;^Q,START TTY PTR
|
||
XOFF==23 ;^S,STOP TTY PTR MODE
|
||
COMMA==54
|
||
PERIOD==56 ;PERIOD
|
||
COLON==72
|
||
SPACE==40
|
||
DEL==177 ;DELETE,RUBOUT,REPEAT MOD.35
|
||
TAB==11 ;TAB
|
||
|
||
SUBTTL MACRO DEFINITIONS
|
||
|
||
DEFINE SKIP (J)<JRST .+1+'J>
|
||
|
||
DEFINE LSTLIN (Z),<
|
||
MOVEI T1,Z
|
||
PUSHJ P,LISTIT>
|
||
|
||
DEFINE ERRPNT (X),<
|
||
JSP T1,PTEXT
|
||
XLIST
|
||
ASCIZ X
|
||
LIST>
|
||
DEFINE ERRPN2 (X),<
|
||
JSP T1,PTEXT2
|
||
XLIST
|
||
ASCIZ X
|
||
LIST>
|
||
|
||
;MACRO TO THROW AWAY CURRENT LINE BEFORE PRINTING ERROR MESSAGE
|
||
DEFINE ERRPNX (X)<
|
||
JSP T1,PRETXT
|
||
XLIST
|
||
ASCIZ X
|
||
LIST>
|
||
|
||
DEFINE SWSEG <
|
||
IFN REENT, <RELOC>>
|
||
|
||
SUBTTL INITIALIZE AND FIND TMP FILES IF CCL ENTRY
|
||
|
||
PIP1: IFN CCLSW,<
|
||
TDZA FLAG,FLAG ;NORMAL ENTRY TO ACCEPT COMMANDS FROM TTY
|
||
SETO FLAG, ;CCL ENTRY TO READ COMMANDS FROM DISK FILE>
|
||
MOVE 0,[LOW,,LOW+1] ;XWD FOR BLT TO
|
||
SETZM LOW ;CLEAR DATA AREA
|
||
BLT 0,LOWTOP-1 ;TO ZERO
|
||
MOVSI 'TTY' ;TEST TTY TO SEE IF NOT A REAL TTY
|
||
DEVCHR
|
||
TXNE 0,DV.TTY ;WELL IS IT
|
||
SKIP 2 ;YES
|
||
OUTSTR [ASCIZ /?Logical TTY must be physical TTY/]
|
||
EXIT 1, ;NO, DO MONRET
|
||
MOVEI P,PDL-1 ;[144] INIT PDL
|
||
|
||
IFN FTDSK,<
|
||
MOVE [PTHLEN+3,,JOBPTH]
|
||
SETOM JOBPTH ;FIND JOB'S DEFAULT PATH
|
||
PATH. ;GET PATH
|
||
SETZM JOBPTH ;FAILED NOT SFD'S
|
||
IFN LEVELC,< ;[322]
|
||
MOVE [XWD 17,11] ;STATES WORD
|
||
GETTAB ;GET IT
|
||
SETZ ;ERROR RETURN
|
||
TLNN (7B9) ;TEST FOR LEVEL D
|
||
TDZA ;NOT LEVEL D
|
||
>;[322] END IFN LEVELC
|
||
HRROI -2 ;THIS IS LEVEL D
|
||
MOVEM LEVEL ;SAVE
|
||
GETPPN 0, ;[163] GET OUR PPN
|
||
JFCL ;[163] ALLOW FOR PRIVILEDGED
|
||
MOVEM 0,JOBPPN ;[163] AND SAVE IT
|
||
SKIPN JOBPTH ;[211] SEE IF PATH WORKED
|
||
MOVEM 0,JOBPTH+2 ;[211] NO, SAVE OUR PPN AS DEFAULT PATH
|
||
MOVX 0,%LDSYS ;[163] GET PPN OF SYS:
|
||
GETTAB 0, ;[163]
|
||
MOVE 0,[XWD 1,1] ;[163] LEVEL C
|
||
MOVEM 0,SYSPPN ;[163] AND SAVE IT
|
||
MOVX 0,%LDMFD ;[163] GET PPN OF MFD:
|
||
GETTAB 0, ;[163]
|
||
MOVE 0,[XWD 1,1] ;[163] LEVEL C
|
||
MOVEM 0,MFDPPN ;[163] AND SAVE IT
|
||
;**;[514] Insert 4 lines at PIP1+40L RLUSK 12-June-81
|
||
MOVX 0,%LDFFA ;[514] GET PPN OF FFA:
|
||
GETTAB 0, ;[514]
|
||
MOVE 0,[XWD 1,1] ;[514] LEVEL C
|
||
MOVEM 0,FFAPPN ;[514] AND SAVE IT
|
||
>;[163] END IFN FTDSK
|
||
IFE REENT,<
|
||
IFE FTDSK,<HLRZ T1,.JBSA ;NO DSK SO USE JOBFF>
|
||
IFN FTDSK,<MOVEI T1,DSKDR0 ;ASSUME NO DISK FOR TEST, LOC OF DSK RTNS
|
||
MOVSI 0,'DSK'
|
||
DEVCHR ;DEVCHR REQUEST: IS THERE A DSK
|
||
JUMPE 0,P1 ;0 IF NO DISK: USE DSKDR
|
||
MOVE T1,.JBFF ;DISK: PREPARE TO SAVE C(JOBFF)
|
||
HRRZ T2,.JBREL ;HIGHEST REL LOC AVAILABLE TO USER
|
||
CAIL T2,6000 ;CURRENT SIZE 4K
|
||
JRST P1 ;YES
|
||
MOVEI T2,7777 ;NO. EXPAND TO 4K
|
||
HRRZM T1,SVJBFF ;SAVE JOBFF SO BUFFERS CAN BE CREATED
|
||
CORE T2, ;CORE UUO
|
||
JRST CERR7 ;CORE UNAVAILABLE>
|
||
>
|
||
IFN REENT,<
|
||
HLRZ T1,.JBSA ;GET JOBFF>
|
||
P1: HRRZM T1,SVJBFF ;SAVE JOBFF SO BUFFERS CAN BE CREATED
|
||
RESET ;RESET. MOVES JOBSA (LH) TO C (JOBFF)
|
||
IFE CCLSW,<JRST PIP>
|
||
IFN CCLSW,<JUMPE FLAG,PIP ;ENTER PIP IF NO COMMAND FILE
|
||
MOVEI PIP1 ;GET STARTING ADDRESS
|
||
HRRM .JBSA ;RESET IT SO ^C START WILL WORK
|
||
|
||
;THIS IS MODIFICATION FOR USING TMPCOR WITH CCL
|
||
|
||
IFN TEMP,< ;[167]
|
||
|
||
MOVE T1,[XWD 1,TMPFIL];SET BLOCK POINTER FOR TMPCOR UUO
|
||
;1=READ ONLY, LOC OF FILENAME
|
||
MOVSI T2,'PIP'
|
||
MOVEM T2,TMPFIL
|
||
MOVSI T2,-1000 ;[403]
|
||
HRR T2,SVJBFF ;CALCULATE TMPFIL ADDRESS FOR BUFFER
|
||
HRRZ T5,.JBREL ;GET TOP OF CORE
|
||
CAIGE T5,1000(T2) ;[403] WILL BUFFER FIT IN AVAILABLE CORE?
|
||
JRST [ADDI T5,1000 ;[403] NO, TRY FOR ONE MORE K
|
||
CORE T5,
|
||
JRST OMODER ;FAILED, GIVE UP
|
||
JRST .+1] ;WILL BE OK NOW
|
||
MOVEM T2,TMPFIL+1 ;STORE IN TMPFIL+1
|
||
SOS TMPFIL+1 ;MAKE IT AN IOWD
|
||
TMPCOR T1, ;READ AND DELETE PIP FILE
|
||
;T1 ON RETURN=NOWDS IN CS
|
||
JRST P11 ;NO PIP FILE IN CORE TRY DSK
|
||
HRLI T2,440700 ;SET UP BYTE POINTR FOR COMMANDS
|
||
MOVEM T2,TMPPNT ;USE LATER IN GETSC
|
||
SETOM TMPFLG ;SIGNAL THAT TMPCOR WAS USED
|
||
MOVNI 0,(T1) ;GET NUMBER OF WORDS
|
||
HRLM 0,TMPFIL+1 ;IN CASE COMMAND FAILS
|
||
ADDB T1,SVJBFF ;CALCULATE END OF TMPCOR BUFFER
|
||
MOVEM T1,TMPEND ;STORE FOR LATER USE
|
||
SETOM COMFLG ;MARK THAT CCL IS IN ACTION
|
||
JRST PIP2A ;START PIP
|
||
P11:>
|
||
PJOB T1, ;GET JOB NBR.
|
||
MOVEI 0,3 ;SET TO GENER. 3 DIGIT JOB NO
|
||
IDIVI T1,^D10 ;DIVIDE BY 10
|
||
ADDI T2,"0"-40 ;REMAINDER MAKE SIXBIT
|
||
LSHC T2,-6 ;SHIFT T2 RIGHT INTO T3
|
||
SOJG 0,.-3 ;DECREMENT AND LOOP
|
||
HRRI T3,'PIP'
|
||
MOVEM T3,CFILE ;INSERT JOB NBR IN CCL INIT
|
||
MOVSI T3,'DSK'
|
||
MOVEM T3,CCLINI+1 ;DEFAULT DEVICE
|
||
MOVSI T3,'TMP'
|
||
SETZM CFILE+3
|
||
P12: MOVEM T3,CFILE+1
|
||
SETZM CCLINI ;CLEAR MODE
|
||
MOVEI T3,CFI ;COMMAND FILE BUFFER HEADER
|
||
MOVEM T3,CCLINI+2
|
||
MOVE T1,CFILE+3 ;[301] SAVE PPN IN CASE OF ERROR
|
||
OPEN COM,CCLINI ;INIT DEVICE FOR CCL OR @
|
||
JRST CER1 ;CAN'T INIT
|
||
LOOKUP COM,CFILE ;LOOKUP COMMAND FILE
|
||
JRST [TRNN FL,NSWTCH ;[351] UNLESS A DOT WAS TYPED
|
||
SKIPN CFILE+1 ;[351] IF CCL FILE NOT FOUND
|
||
JRST CER2 ;NO, REAL FILE NOT FOUND
|
||
SETZM CFILE+1 ;[351] TRY AGAIN WITH NO EXTENSION
|
||
JRST .-1]
|
||
INBUF COM,1 ;1 BUFFER ONLY
|
||
MOVE 0,.JBFF ;SAVE JOBFF NOW
|
||
HRRZM 0,SVJBFF ;TO LEAVE COMMANDS INTACT WHEN BUFFERS RECREATED
|
||
SETOM COMFLG ;SUCCESS: COMMAND FILE REQUESTED
|
||
JRST PIP2A
|
||
|
||
CER1: ERRPNT </?File />
|
||
PUSHJ P,P6BIT
|
||
CFILE
|
||
ERRPN2 </.TMP init failure!/>
|
||
|
||
CER2: SETOM COMEOF ;FORCE EXIT AFTER MESSAGE
|
||
ERRPNT </?Command file />
|
||
MOVEI T3,CFILE ;ADDRESS OF FILE NAME
|
||
PUSHJ P,FN.EX ;PUT IT IN MESSAGE
|
||
ERRPN2 </ not found!/>
|
||
|
||
PIP2: TLNE FLAG,TID;[125] NEED TO SET TAPE ID?
|
||
PUSHJ P,WRTID ;YES
|
||
SKIPE COMFLG ;LAST COMMAND CCL?
|
||
SKIPN COMEOF ;ANY MORE CCL COMMAND?
|
||
JRST PIP2A ;YES,GET NEXT PIP COMMAND
|
||
CLOSE CON, ;FORCE OUTPUT OF ERROR MESSAGE
|
||
EXIT 1, ;NO,CAN EXIT
|
||
SETZM COMFLG ;CLEAR FLAG NOW
|
||
JRST PIP2A ;JUST INCASE MONITOR RETURNS>
|
||
|
||
IFE REENT,<IFN FTDSK,<
|
||
CERR7: ERRPNT </?4K needed/>
|
||
EXIT ;EXIT TO MONITOR>>
|
||
|
||
SUBTTL SCAN COMMAND STRING
|
||
|
||
PIP:
|
||
;NEW COMMAND STRING SCAN STARTS HERE
|
||
IFE CCLSW,<PIP2: >
|
||
PIP2A: JSP T5,INICN1 ;INITIALIZE THE TTY AND PDL
|
||
IFN CCLSW,<SKIPE COMFLG ;ACCEPT NEW PIP COMMAND?
|
||
JRST PIP2B ;NOT PIP (TTY) COMMD, BUT CCL>
|
||
MOVEI 0,"*" ;TYPE ASTERISK******
|
||
IDPB 0,TFO+1 ;READY TO ACCEPT
|
||
OUTPUT CON, ;COMMAND FROM TTY
|
||
PIP2B: SETZM TOTBRK ;CLEAR PAREN COUNTER
|
||
MOVEI 0,TABSP ;SPACES PER TAB
|
||
MOVEM 0,TABCT ;INITIALIZE TAB COUNT
|
||
MOVE 0,ZRO ;ASCII /00000/
|
||
MOVEM 0,SQNUM ;INITIALIZE SEQUENCE NUMBERS
|
||
RELEAS CON, ;RELEASE TTY FOR USE AS IN-OUT DEVICE
|
||
|
||
MAINA1: SETZB FLAG,FZERO ;INITIALIZE FOR FIRST/NEXT COMMAND STRING
|
||
SETZB AUXFLG,DEVICE
|
||
IFN FTDSK,<HRRZI 0,'SYS' ;SYSTEM DIRECT DEV, DSK/DTA
|
||
HRLZM 0,ADSK ;PUT IN SYSTEM DEVICE>
|
||
MOVE 0,[XWD FZERO,FZERO+1]
|
||
BLT 0,LZERO ;CLEAR STORAGE AREA
|
||
SETZ CALFLG, ;CLEAR OTHER FLAGS
|
||
;**;[520] Change 1 line at MAINA1+7L RLUSK 7-January-1982
|
||
MOVEI 0,.RBPCA ;[520] [273] SET UP EXTENDED BLOCKS
|
||
MOVEM 0,ZRFEX+.RBCNT ;[273]
|
||
MOVEM 0,DTONEX+.RBCNT ;[273]
|
||
IFN CCLSW,<SKIPE COMFLG ;CCL COMMAND?
|
||
JRST COMPRO ;YES, GET FROM CORE OR DSK>
|
||
MOVE T3,.JBFF ;FREE CORE POINTER
|
||
HRLI T3,(POINT 7) ;FORM BYTE POINTER
|
||
MOVEM T3,COMPTR ; FOR STORING CS IN CORE
|
||
|
||
;ACCUMULATE CS CHARS IN CORE
|
||
|
||
COMSTO: PUSHJ P,GETTA ;GET CS CHAR
|
||
AOS COMCNT ;COUNT CHARS
|
||
MOVEI T4,1(T3) ;GET BYTE POINTER ADDRESS PLUS SOME
|
||
CAMGE T4,.JBREL ;SEE IF IT WILL BE IN BOUNDS
|
||
JRST .+3 ;YES, ALL IS WELL
|
||
CORE T4, ;GET WHAT WE NEED
|
||
JRST OMODER ;FAILED, UNLIKELY TO HAPPEN
|
||
CAIN 0,CZ ;CHECK FOR ^Z
|
||
COMASK: PUSHJ P,GETEN2 ;SET ^Z IN 0
|
||
IDPB 0,T3 ;STORE IN COMBUF
|
||
SKIPE COMEOF ;END-OF-FILE SET?
|
||
AOJA T3,COMSTD ;YES, PROCESS CS IN COMBUF
|
||
CAIG 0,CR ;NOT EOF
|
||
CAIGE 0,LF ;LF,VT,FF,CR?
|
||
CAIN 0,ALTMODE ;NO, $?
|
||
JRST COMASK ;YES
|
||
JRST COMSTO ;NO, KEEP STORING
|
||
|
||
COMSTD: HRRM T3,.JBFF ;RESET JOBFF TO RETAIN STORED COMMAND
|
||
HRRM T3,DTJBFF ;ALSO JOBFF AFTER 2 TTY BUFFERS (PLUS COMMAND)
|
||
; AND FALL INTO COMPRO
|
||
;********************************************************************
|
||
;BEGIN SCAN OF DESTINATION PORTION OF COMMAND STRING
|
||
COMPRO:
|
||
SETZM DEVICE ;[163] ENSURE THAT WE GET DEFAULT
|
||
|
||
COMPRP: RELEASE CON, ;RELEASE TTY
|
||
PUSHJ P,NAME ;GO SCAN DESTINATION PORTION OF COMMAND STRING
|
||
SKIPE XNAME ;NO SCAN OVERSHOOT ALLOWED
|
||
JRST ERR6A
|
||
SKIPL ESWTCH ;11/25/69 END OF CS ?
|
||
JRST MAINC ;NO
|
||
IFN CCLSW,<SKIPE COMFLG ;STILL IN CCL
|
||
JRST PIP2 ;YES>
|
||
TLNE AUXFLG,QFLG ;PERHAPS JUST /Q?
|
||
JRST MAINQ ;YES IT WAS
|
||
TRNN CALFLG,NSWTCH ;NON-NULL DESTINATION
|
||
TRNE CALFLG,SSWTCH ;_ NOT SEEN?
|
||
SKIPE FILNAM ;OR ANYTHING IN FILENAME
|
||
JRST ERR6A ;YES, ERROR
|
||
JRST PIP2 ;NO, ALL OK
|
||
|
||
MAINQ: MOVSI 0,'TTY' ;[163] /Q DEFAULT IS TTY
|
||
SKIPE DEVICE ;[163] SO USE IT IF NOTHING TYPED
|
||
MAINC: MOVE 0,DEVICE ;[163] SEE IF ANYTHING TYPED
|
||
SKIPN 0 ;[163]
|
||
MOVSI 0,'DSK' ;[163] NOTHING TYPED, USE DSK:
|
||
IFN FTDSK,< ;[240]
|
||
MOVEM 0,ADSK ;[240] SAVE FOR ERROR TYPEOUT
|
||
>;[240] END IFN FTDSK
|
||
|
||
MOVEM 0,DEVICE ;[205] IF DEFAULT, SAVE IT
|
||
MOVEM 0,ODEV ;SAVE DEVICE NAME FOR LATER USAGE
|
||
PUSHJ P,DEVTST ;SAVE DEVICE TYPE, SET XXXOUT.E.G. DTAOUT
|
||
PUSHJ P,ABCHK ;CHECK MTA BACKSPACE/ADV VALUES
|
||
PUSHJ P,PROTK ;CHECK PROTECTION
|
||
MOVE 0,AB ;MTA VALUE SWITCHES
|
||
MOVEM 0,ABOUT ;GET MTA CONTROL NUMBERS FO R OUT
|
||
MOVE 0,AUX
|
||
MOVEM 0,AUXOUT
|
||
MOVE 0,[FILNAM,,DTON]
|
||
BLT 0,DTON+3 ;SAVE DESTINATION FILE NAME
|
||
IFN FTDSK,<TRNN AUXFLG,DSKOUT ;DISK OUTPUT?>
|
||
SETZM DTON+3 ;ZERO 4TH WD OF DIRECTORY ENTRY
|
||
|
||
IFN FTDSK,< ;[211]
|
||
MOVE 0,DTON+3 ;[273] GET PPN FROM OLD PLACE
|
||
MOVEM 0,DTONEX+.RBPPN ;[273] AND SAVE IT EXTENDED
|
||
SKIPN PP ;[323] SEE IF EXPLICIT PPN GIVEN
|
||
JRST M3 ;[211] NO, SKIP COPY
|
||
MOVE 0,[PTHADD,,PTHOUT]
|
||
HRRZM 0,DTON+3 ;[323] ALSO CHANGE OLD PLACE
|
||
HRRZM 0,DTONEX+.RBPPN ;[273] SAVE PATH ADDRESS EXTENDED
|
||
BLT 0,PTHOUT+PTHLEN+3
|
||
>
|
||
M3: TRZ CALFLG,SSWTCH ;TERMINATE DESTINATION FILE SCAN
|
||
IFE FTDSK,<SETZM DEVICE ;DONT CARRY OVER INPUT DEVICE>
|
||
IFN FTDSK,<SETZM PPP ;CLEAR OUTPUT PPN
|
||
SETZM DEVPP ;[163] AND ERSATZ DEVICE PPN
|
||
SETZM PP ;JUST IN CASE
|
||
SETZM PTHADD ;AND FULL PATH JUNK
|
||
MOVE 0,[XWD PTHADD,PTHADD+1] ;[221] CLEAR ALL OF PATH SPEC
|
||
BLT 0,PTHADD+PTHLEN+3 ;[221]
|
||
SETZM DEFPTH ;AND ITS DEFAULT
|
||
MOVE 0,[XWD DEFPTH,DEFPTH+1] ;[211] CLEAR ALL OF PATH SPEC
|
||
BLT 0,DEFPTH+PTHLEN+3 ;[221]
|
||
MOVSI 0,'DSK' ;DEFAULT CASE DSK
|
||
TRNN FLAG,XFLG ;[341] CLEAR OUTPUT FOR /X/D
|
||
TRNN FLAG,RFLG!DFLG ;[163] FORCE CONSTANT DEV: FOR /D & /R
|
||
MOVEM 0,DEVICE ;MUST NOT LET O/DEV. CARRY OVER AS I/DEV.>
|
||
M3A: PUSHJ P,DESCRP ;GET A UNIT DESCRIPTOR (INPUT).
|
||
TLNN AUXFLG,QFLG ;[230] /Q?
|
||
JRST M2 ;NO
|
||
HRRZI 0,'SYS' ;YES MAKE INPUT DEVICE SYS
|
||
HRLZM 0,DEVICE
|
||
HRLZM DEVA ;SAVE COPY OF INPUT DEVICE
|
||
MOVE 0,['PIPHLP'] ;NAME.EXT FOR HELP TEXT
|
||
HLLZM 0,FILNAM
|
||
HRLZM 0,FILEX
|
||
TDZ FLAG,[XWD -1-GFLG-WFLG-TID,-1-SPMOD-TBMOD-BMOD-SQMOD-MTFLG-ZFLG];[230]
|
||
TDZ FL,[XWD MFLG,FNEX+TMPI+NSWTCH];[230] CLEAR ANY EXTRA
|
||
TRO FL,DEV+NEWDEV+MATEX+MATFN ;[230] SET WHAT WE WANT
|
||
SETZM PP ;[163] CLEAR PPN FOR SYS:
|
||
SOS ESWTCH ;NO MORE COMMAND STRING
|
||
PUSHJ P,CHECK1 ;CHECK INPUT DEVICE
|
||
|
||
M2: TLO AUXFLG,NOMORE ;NO MORE SWITCHES BUT MTA ALLOWED
|
||
TLNE FLAG,OFLG ;BLOCK 0 COPY?
|
||
JRST BLOCK0 ;YES
|
||
|
||
;CHECK TO SEE IF IN COPY MODE WITH WILD CARD OUTPUT BUT /X WASN'T GIVEN
|
||
TRNN FLAG,RFLG!DFLG ;[244] DON'T FORCE /X FOR /R/D
|
||
TRNN AUXFLG,DTAOUT!DSKOUT ;[244] SEE IF DIRECTORY OUTPUT
|
||
JRST M2B ;[244] NO
|
||
SKIPN OQMASK ;[244] YES, SEE IF WILD CARDS
|
||
SKIPE OQMASK+1 ;[244] IN NAME OR EXTENSION
|
||
SKIPA ;[244] YES
|
||
JRST M2B ;[244] NO
|
||
TRNN FLAG,LFLG ;[244] YES, SEE IF /L OR /F
|
||
TRNE AUXFLG,FFLG ;[244] CAUSE THAT WON'T WORK
|
||
JRST ERR13 ;[244] THAT'S A NONO
|
||
TLNE FL,TSKOUT ;[312] BUT IS THE OUTPUT DEVICE TSK:?
|
||
JRST ERR14 ;[312] YES, WELL THAT WON'T WORK
|
||
TRO FLAG,XFLG ;[244] OK, SWITCH TO /X
|
||
M2B: ;[244]
|
||
TRNN FLAG,XFLG ;/X ?
|
||
JRST M2A ;NO
|
||
TRNE FLAG,RFLG ;(RX)?
|
||
JRST M5 ;YES, (RX)
|
||
MOVE 0,DTON ;GET FILE NAME
|
||
JUMPN 0,M5 ;BELIEVE ANYTHING BUT ZERO
|
||
HLRZ 0,DTON+1 ;SAME FOR EXT
|
||
JUMPN 0,M5
|
||
M2A: IFN RIMSW,<
|
||
TLNN FLAG,RIMFLG ;RIM OUTPUT?
|
||
JRST M1 ;NO
|
||
TRNE AUXFLG,PPTOUT ;RIM IS ONLY DTA TO PTP
|
||
TRNN AUXFLG,DTAIN!DSKIN!MTAIN
|
||
JRST ERR5B>
|
||
|
||
M1: MOVEI T4,1 ;ASCII LINE MODE ASSUMED
|
||
PUSHJ P,OUTLOOK ;SEE IF OUTPUT DEV MTA
|
||
PUSHJ P,M4 ;NOT MTA
|
||
TLNE FLAG,JFLG ;NON STARDARD MODE ?
|
||
TRO T4,IO.D29 ;TO PUNCH 029 ON CDP
|
||
TRNN AUXFLG,TTYOUT ;[251] SEE IF OUTPUT TO TTY
|
||
TRZ T4,IO.D29 ;[251] YES, THEN DON'T SET /J IO.SEM
|
||
HRRZM T4,OMOD ;SET MODE OF OUTPUT DEV
|
||
MOVEI T4,1
|
||
PUSHJ P,INLOOK ;SEE IF INPUT DEV MTA
|
||
PUSHJ P,M4 ;NOT MTA
|
||
HRRZM T4,ININI1 ;SET MODE OF INPUT DEV
|
||
PUSHJ P,FNSET ;NOW DEVICE, DEVA CORRECT FOR START
|
||
JRST OMOD1 ;INIT OUTPUT DEVICE
|
||
|
||
SUBTTL INITIALIZE INPUT AND OUTPUT DEVICES
|
||
|
||
;SET MODE IF /I,/B,/H,
|
||
|
||
M4: TRNN FLAG,BMOD ;BINARY MODE?
|
||
JRST .+3 ;NO
|
||
TXZ T4,IO.MOD ;CLEAR ALL MODES
|
||
TXO T4,.IOBIN ;BIN. MODE
|
||
|
||
TLNN FLAG,IFLG ;IMAGE BINARY MODE?
|
||
JRST .+3 ;NO
|
||
TXZ T4,IO.MOD ;CLEAR ALL MODES
|
||
TXO T4,.IOIMG ;IM. MODE
|
||
|
||
TLNN FLAG,IBFLG ;IMAGE BINARY MODE?
|
||
JRST .+3 ;NO
|
||
TXZ T4,IO.MOD ;CLEAR ALL MODES
|
||
TXO T4,.IOIBN ;YES
|
||
TRNE FLAG,XFLG ;COPY MODE?
|
||
POPJ P, ;YES, DON'T ALTER DATA MODE
|
||
|
||
TRNE FLAG,DFLG+RFLG ;DELETE OR RENAME?
|
||
TXO T4,IO.UWC ;DIRECTORY WILL BE WRITTEN, DON'T
|
||
POPJ P, ;COMPUTE WORD COUNT MODE NEEDED.
|
||
;FORCE MONITOR TO USE WORD COUNT
|
||
;IN FIRST DATA WORD OF BUFFER
|
||
|
||
M5: TRZ FLAG,RFLG ;CLEAR /R FLAG
|
||
TRO CALFLG,RXFLG ;SET (RX) FLAG
|
||
MOVE 0,[DTON,,MATCH]
|
||
BLT 0,MATCH+1 ;SAVE NAME AND EXT
|
||
JRST M2A ;RETURN
|
||
;IF OUTPUT DEVICE IS MTA PERFORM ALL PRE-TRANSFER REQUESTS
|
||
;SUCH AS REWIND. IF OUTPUT DEVICE IS MTA, AND THERE IS NO
|
||
;INPUT DEVICE, EXIT. FOR OTHER MTA OUTPUT, PREPARE INIT
|
||
;DENSITY AND PARITY.
|
||
|
||
OUTLOOK:
|
||
MOVE T3,ABOUT ;AB FOR OUTPUT DEV
|
||
MOVE T1,AUXOUT ;AUX FOR OUTPUT DEV
|
||
MOVEI T6,INOMTA ;SET TO INIT
|
||
JRST MT1 ;MTA FOR OUTPUT
|
||
|
||
|
||
|
||
|
||
;SAME FOR INPUT DEVICE.
|
||
|
||
INLOOK: SKIPE T3,FILNAM ;IF NO FILENAME
|
||
TRNN FLAG,XFLG ;OR NOT /X
|
||
JRST INLUK1 ;CONTINUE
|
||
SKIPE DTON ;IF OUTPUT NAME SET UP
|
||
JRST INLUK1 ;CONTINUE
|
||
HLRZ T1,FILEX ;GET EXT
|
||
MOVEM T3,DTON ;SET OUT NAME
|
||
HRLZM T1,DTON+1 ;AND EXTENSION
|
||
INLUK1: MOVE T3,AB ;ADV OR BKSPACE
|
||
MOVE T1,AUX ;AUX FOR INPUT DEV
|
||
MOVEI T6,INIMTA ;SET TO INIT
|
||
JRST MT1 ;MTA FOR INPUT
|
||
;ROUTINE TO INITIALIZE OUTPUT DEVICE
|
||
|
||
OMODE: IFN TEMP,<
|
||
TRNE CALFLG,TMPO ;TMPCOR OUTPUT DEVICE?
|
||
JRST OMOD2 ;YES, NO OUTBUFS>
|
||
TRNN FLAG,RFLG!DFLG ;[334][323] IF DOING DELETE OR RENAME
|
||
JRST OMODE3 ;[334] NO
|
||
TRNN FLAG,XFLG ;[334] EXCEPT FOR /X/D
|
||
TRNE AUXFLG,DTAIN!DTAOUT ;[333] OR DECTAPE
|
||
JRST OMODE3 ;[334][333] WHICH USE OUT
|
||
JRST OMOD2 ;[323] DON'T WASTE THE EFFORT
|
||
OMODE3: MOVE T1,[XWD OBF,IBF] ;[334]
|
||
MOVEM T1,ODEV+1
|
||
MOVE T1,DTJBFF ;JOBFF AFTER 2 TTY BUFS
|
||
MOVEM T1,.JBFF ;SET UP
|
||
|
||
OPEN OUT,OMOD ;INITIALIZE OUTPUT DEVICE
|
||
JRST ERR1 ;UNAVAILABLE ERROR
|
||
OUTBUF OUT,1 ;TRY ONE OUTBUFFER FOR SIZE
|
||
EXCH T1,.JBFF ;JOBFF_DTJBFF+BUFSZ
|
||
;NOTE JOBFF RESET TO DTJBFF
|
||
SUB T1,DTJBFF ;T1=BUFSZ
|
||
HRRZ 0,.JBREL ;HIGHEST CORE AVAILABLE
|
||
SUB 0,DTJBFF ;0=TOTAL CORE AVAILABLE
|
||
IDIVM 0,T1 ;FIT IN HALF THE AVAILABLE SPACE
|
||
CAILE T1,2 ;[305] DID WE GET MORE THAN 2 TO FIT?
|
||
ASH T1,-1 ;[305] YES, THEN DIVIDE NUMBER BY 2
|
||
MOVEI T4,OMODE ;SET RETURN FROM CORCHK
|
||
PUSHJ P,CORCHK ;LOOP BACK OR ERROR IF NOT ENOUGH CORE
|
||
OUTBUF OUT,(T1) ;SET UP OUTPUT BUFFERS
|
||
MOVE 0,OBF+1
|
||
MOVEM 0,SVOBF ;SAVE ORIGINAL MODE SETTING
|
||
OMOD2: MOVE 0,.JBFF
|
||
HRRZM 0,SVJBF1 ;PREPARE TO RECLAIM INBUFFER SPACE
|
||
POPJ P,
|
||
|
||
OMOD1: PUSHJ P,OMODE ;GO INITIALIZE OUTPUT DEVICE
|
||
TRZN FLAG,ZFLG ;[163] /Z IN COMMAND STRING
|
||
JRST MAINA2 ;NO,
|
||
PUSH P,DTON ;[204] SAVE TYPED FILE NAME WHICH GETS CLOBBERED
|
||
PUSHJ P,DTCLR ;[204] YES, GO CLEAR DIRECTORY
|
||
POP P,DTON ;[204] RESTORE CLOBBERED OUTPUT FILE NAME
|
||
MOVE 0,DEVICE ;[254] RESTORE ADSK
|
||
MOVEM 0,ADSK ;[254] SINCE DISK ZERO CLOBBERED IT
|
||
RELEASE OUT,
|
||
RELEASE DIR,
|
||
TRNN CALFLG,NSWTCH ;SEE IF DEVICE WAS TYPED
|
||
JRST OMOD1 ;YES
|
||
JRST PIP2 ;GET NEXT COMMAND
|
||
;ROUTINE TO CHECK FOR ENOUGH CORE FOR I/O BUFFERS
|
||
;ENTER T1: COMPUTED NUMBER OF BUFFERS WE WANT
|
||
; T4: WHERE TO GO IF WE EXPAND CORE
|
||
CORCHK: CAIL T1,2 ;ROOM NOW FOR AT LEAST 2 BUFFERS?
|
||
POPJ P, ;YES, RETURN OK
|
||
JUMPLE T1,MORCOR ;HAVE TO GET MORE ROOM IF NONE
|
||
HRRZ 0,.JBREL ;WANTED 1, SEE IF WE CAN GET 2
|
||
ADDI 0,1000 ;TRY 1/2K MORE
|
||
CORE 0,
|
||
POPJ P, ;NO, LIVE WITH 1 BUFFER
|
||
POP P,0 ;YES, POP OFF PUSHJ CALL
|
||
JRST (T4) ;AND RECOMPUTE
|
||
|
||
MORCOR: HRRZ 0,.JBREL ;TRY TO GET
|
||
ADDI 0,2000 ;1K MORE OF CORE
|
||
CORE ;ASK MONITOR FOR 1K CORE
|
||
JRST OMODER ;NOT AVAILABLE
|
||
JRST (T4) ;GOT IT
|
||
|
||
OMODER: ERRPNT</?Not enough core/>
|
||
EXIT
|
||
|
||
SUBTTL PROCESS INPUT COMMAND STRING
|
||
|
||
MAINA2: TRNE FLAG,RFLG+DFLG ;RENAME OR DELETE FILE MODE?
|
||
JRST DTDELE ;YES./D,/X,OR(DX)
|
||
IFN RIMSW,<
|
||
TLNE FLAG,RIMFLG ;RIM?
|
||
JRST RIMTB ;YES./Y
|
||
>
|
||
TRNE FLAG,XFLG ;TRANSFER EVERYTHING MODE?
|
||
JRST PRECOP ;YES./X
|
||
;LOOP TO COPY ALL FILES BEGINS HERE FROM MAIN2
|
||
MAINA3: TRNN AUXFLG,FFLG ;LIST DSK DIR SHORT?
|
||
TRNE FLAG,LFLG ;LIST DIRECTORY?
|
||
JRST DTPDIR ;YES./F OR /L
|
||
IFN TEMP,<
|
||
TRNE CALFLG,TMPI ;TEMCOR:
|
||
JRST TMPIN ;YES THIS IS SPECIAL>
|
||
MANA3A: ;[206]
|
||
PUSHJ P,ININIT ;INITIALIZE INPUT FILE
|
||
TRNN AUXFLG,NULIN ;[344] NUL: INPUT OR
|
||
TRNN CALFLG,FNEX ;SINGLE FILE SPECIFICATION?
|
||
JRST [MOVE 0,[FILNAM,,ZRF] ;YES, DON'T READ DIRECTORY
|
||
BLT 0,ZRF+3 ;SET UP FILE NAME,EXT, AND PPN
|
||
MOVE 0,ZRF+3 ;[273] GET PPN BACK
|
||
MOVEM 0,ZRFEX+.RBPPN ;[273] AND SAVE EXTENDED
|
||
SETZM GENERI ;JUST IN CASE
|
||
JRST MANA42] ;[211]
|
||
TRNE AUXFLG,DTAIN ;DEC TAPE INPUT?
|
||
PUSHJ P,DTADIR ;INIT DTA DIR
|
||
|
||
IFN FTDSK,<TRNN AUXFLG,DSKIN ;NO, DISK INPUT?
|
||
JRST MAINA4 ;NO
|
||
PUSHJ P,INITFS ;INIT SEARCH LIST IF LEVEL D
|
||
JRST MANA41 ;[211] NOT GENERIC "DSK"
|
||
MAINAD: PUSHJ P,NXTFSU ;GET NEXT F/S
|
||
JRST [TRNN AUXFLG,REDFLG ;WAS FILE FOUND?
|
||
PUSHJ P,ERR3A ;NO
|
||
JRST MAINA7] ;NO MORE F/S
|
||
TROA CALFLG,FNEX ;KEEP THE FLAG FLYING
|
||
|
||
MANA41: ;[211]
|
||
PUSHJ P,DSKDIR ;INIT DSK UFD CHANNEL>
|
||
MAINA4: PUSHJ P,LOOK ;GET A FILE TO COPY
|
||
JRST MAINA5 ;NO MORE
|
||
|
||
MANA42: ;[211]
|
||
IFN FTDSK,<PUSHJ P,SETPTH ;SEE IF FULL PATH
|
||
MOVEM 0,ZRFEX+.RBPPN ;[273] NON-SKIP RETURN, USE IT
|
||
MOVE T1,LEVEL ;[273] GET -2 FOR LEVELD
|
||
TRNN AUXFLG,DSKIN ;[273] SEE IF DISK INPUT FOR EXTENDED LOOKUP
|
||
>;[273] END IFN FTDSK
|
||
SETZ T1, ;[273] CLEAR INDEX IF NOT DISK
|
||
LOOKUP IN,ZRF(T1) ;[273] DO EXTENDED LOOKUP FOR DISK
|
||
JRST MAINQ1 ;[230] LOOKUP FAILURE, GO SEE IF /Q
|
||
IFN TEMP,<TRNE CALFLG,TMPO
|
||
JRST TMPOUT ;OUTPUT TO TMPCOR>
|
||
TLO FLAG,NEWFIL
|
||
PUSHJ P,FILTYP
|
||
TRNE AUXFLG,ONEOUT
|
||
JRST PSCANA ;OUT HAS BEEN INITIALIZED
|
||
PUSHJ P,EXTENT ;[273] GO DO ENTER OF RIGHT FLAVOR
|
||
JRST PSCANA
|
||
|
||
MAINQ1: TLZN AUXFLG,QFLG ;[230] SEE IF /Q, FIRST TIME THRU
|
||
JRST ERR3 ;[230] NO, ERROR
|
||
MOVSI 0,'HLP' ;[230] YES, TRY HLP: AFTER SYS:
|
||
MOVEM 0,DEVICE ;[230]
|
||
JRST MANA3A ;[230] GO DO LOOKUP AGAIN
|
||
|
||
MAINA5:
|
||
IFN FTDSK,<TRNE AUXFLG,DSKIN ;DSK INPUT
|
||
JRST MAINAD ;YES, GET NEXT F/S>
|
||
|
||
MAINA7: TRZE AUXFLG,REDFLG ;[257] SEE IF READ ANYTHING
|
||
JRST MAIN1 ;[257] YES, CONTINUE
|
||
TRNE AUXFLG,DTAIN ;[257] NO, IF DECTAPE IN, THEN
|
||
PUSHJ P,ERR3A ;[257] PRINT FILE NOT FOUND MESSAGE
|
||
JRST IOERRN ;[257] AND RELEASE EVERYTHING
|
||
|
||
PSCANB: TRNE AUXFLG,MTAIN!CDRIN!TTYIN!PPTIN ;ON NON-DIR DEVICE?
|
||
TRZ CALFLG,ALLCLF ;END OF THE ONE OR MANY FILES SPECIFIED
|
||
TRON AUXFLG,ONEOUT ;HAS OUT JUST BEEN INIT?
|
||
OUTPUT OUT, ;YES, AND FIRST FILE IS EOF ONLY, INIT OUT IN
|
||
;CASE NO MORE SOURCE FILES
|
||
JRST PSCAN5 ;EMPTY FILE, CLOSE INPUT, RETURN FOR MORE
|
||
|
||
SUBTTL FILE COPYING ROUTINES
|
||
|
||
PSCANA: TRO AUXFLG,REDFLG ;SET FLAG FOR INPUT FILE READ
|
||
PUSHJ P,INP ;GO READ INPUT FILE
|
||
TRZ AUXFLG,READ1
|
||
PUSHJ P,TTYZ ;CHECK IF INPUT IS TTY
|
||
TXNE IOS,IO.EOF ;EOF FIRST DATA?
|
||
JRST PSCANB
|
||
SKIPN IBF+2
|
||
JRST PSCANA
|
||
|
||
PSCAN: TRO AUXFLG,ONEOUT ;INDICATE ONE OUTPUT FILE INITED
|
||
TDNN FLAG,[XWD IFLG+IBFLG,BMOD] ;BIN. OR NO CHAR. PROCESSING
|
||
TLNE AUXFLG,SBIN
|
||
JRST PSCAN3 ;YES
|
||
MOVE 0,OPTRA ;PRESCAN A LINE, INITIALIZE LINE BUFFER PTR
|
||
MOVEM 0,OPTR
|
||
SETZM CDRCNT
|
||
PUSHJ P,CLRBUF ;CLEAR LINE BUFFER
|
||
TRO FLAG,STS ;START A FRESH LINE
|
||
PSCAN2: PUSHJ P,GET ;GET CHARACTER
|
||
JRST PSCAN1 ;END OF FILE RETURN
|
||
CAIN CHR,DEL ;VJC 4/16/69
|
||
JRST PSCAN2 ;GET NEXT CHAR
|
||
HRRZ T1,OPTR ;GET DEPOSIT ADDRESS
|
||
CAIL T1,LBUFE
|
||
PUSHJ P,PSCLNG ;LINE TOO LONG
|
||
IDPB CHR,OPTR ;DEPOSIT CHAR. IN LINE BUFFER
|
||
CAIG CHR,24
|
||
CAIGE CHR,20 ;LINE PRINTERR CONTROL CHAR
|
||
;**;[525] REPLACE 1 LINE WITH TWO AT PSCAN2: + 10 L, 11-JAN-83, KMR
|
||
SKIP 2 ;[525] NO
|
||
TRNE AUXFLG,LPTOUT ;[525] CHECK TO MAKE SURE IT ISN'T A LPT
|
||
JRST PSCAN4 ;YES, TREAT AS END OF LINE
|
||
CAIG CHR,14
|
||
CAIGE CHR,12 ;END OF LINE CHARACTER?
|
||
SKIP 1 ;NO
|
||
JRST PSCAN4 ;YES
|
||
CAIGE CHR," " ;TEST FOR CONTROL CHARS.
|
||
CAIN CHR,CR ;BUT ALLOW CR
|
||
JRST PSCAN2 ;NONE, SO CONTINUE
|
||
CAIE CHR,TAB ;TAB IS O.K. THOUGH
|
||
TRNN AUXFLG,LPTOUT!IFN CTLTTY,<TTYOUT> ;[241] LPT? OR <TTY?>
|
||
JRST PSCAN2 ;[135] NO, DON'T CONVERT CHARACTER
|
||
IFN CTLTTY,< ;[251]
|
||
TRNN AUXFLG,LPTOUT ;[251] SEE IF TTY
|
||
TLNE FLAG,JFLG ;[251] YES, SEE IF /J
|
||
SKIPA ;[251] LPT OR /J TO TTY
|
||
JRST PSCAN2 ;[251] NOT /J TO TTY
|
||
>;[251] END IFN CTLTTY
|
||
PUSH P,CHR ;IT WAS, SO SAVE IT
|
||
MOVEI CHR,"^" ;STANDARD UP ARROW
|
||
DPB CHR,OPTR;WIPE OUT BAD CHAR
|
||
POP P,CHR ;GET IT BACK
|
||
TRC CHR,100 ;MAKE IT VISIBLE
|
||
IDPB CHR,OPTR
|
||
JRST PSCAN2 ;AND CONTINUE
|
||
|
||
PSCAN4: TRNN FLAG,TBMOD!SPMOD;REMOVED TRAILING SPACES?
|
||
JRST PSCAN7 ;NO
|
||
HLRZ T2,LBUF ;[253] GET FIRST TWO CHARACTERS
|
||
ANDI T2,(BYTE (7)-1,-1) ;[253] CLEAR RIGHT BITS
|
||
CAIE T2,(BYTE (7)CR,LF) ;[253] BLANK LINE?
|
||
JRST PSCAN7 ;NOT A BLANK LINE
|
||
;**;[530] AT PSCAN4: + 6L, INSERT 2 LINES, KMR, 22-JUN-83
|
||
TLNN FLAG,SPCNV ;[530]ALREADY DUMPED SPACES?
|
||
JRST PSCAN7 ;[530] NO, SO DON'T LEAVE A SPACE BEHIND
|
||
MOVE T2,[BYTE (7) 40,15,12,40,40]
|
||
MOVEM T2,LBUF ;GUARENTEE ONE SPACE
|
||
IBP OPTR ;DON'T FORGET THE LINE BUFFER
|
||
;**;[530] AT PSCAN7:, INSERT 1L, KMR, 22-JUN-83
|
||
PSCAN7: TLZ FLAG,SPCNV ;[530]RESET THE FLAG
|
||
PUSHJ P,OUTLBF ;YES, SO DUMP THE LINE BUFFER
|
||
JRST PSCAN ;SCAN THE NEXT LINE
|
||
|
||
PSCAN1: TRZ CALFLG,SQNSN ;[140-12349] CLEAR SEQ. NO. FOUND THIS LINE
|
||
LDB CHR,OPTR ;PICK UP LAST CHAR.
|
||
CAIN CHR,CZ ;IS IT ^Z
|
||
TRNN AUXFLG,TTYIN ;FROM TTY?
|
||
JRST PSCAN6 ;NO
|
||
SETZ CHR, ;YES,CLEAR CHAR.
|
||
DPB CHR,OPTR ;AND REMOVE FROM BUFFER
|
||
PSCAN6: PUSHJ P,OUTLBF ;DUMP THE REMAINING BUFFER
|
||
TRNE FLAG,XFLG ;COPY MODE?
|
||
JRST COPY2A ;YES, GO COPY THE NEXT FILE
|
||
PSCAN5: CLOSE IN,
|
||
JRST MAINA4
|
||
;[273] ROUTINE TO DO ENTER FOR OUTPUT FILE(S), CHECKING ON MODE OF FILE
|
||
;[273] AND DOING EXTENDED ENTER FOR DISK WITH .RBVER AND .RBSPL RIGHT
|
||
|
||
EXTENT: PUSHJ P,OKBLKS
|
||
IFN FTDSK,<
|
||
SKIPE T3,LEVEL ;[273] LOADLEVELER AND CHECK ON D
|
||
TLNN AUXFLG,NSPROT ;AND NON-STANDARD PROTECTION
|
||
JRST EXTEN0 ;[324] NOT BOTH TRUE
|
||
LDB 0,PRPTL ;GET PROTECTION CODE
|
||
SKIPN 0 ;[324] REQUESTING <000>?
|
||
MOVEI 0,100 ;[324] YES, MAKE IT <100> FOR NOW
|
||
DPB 0,PRPTD ;INTO ENTER BLOCK
|
||
EXTEN0: MOVE 0,DTONEX+.RBPPN ;[324][273][207] SAVE PPN FOR RENAME
|
||
PUSHJ P,CPYRIB ;[247] GO SET UP NEW RIB
|
||
SETO T2, ;[247] SET FLAG FOR AFTER ENTER
|
||
;**;[522] At EXTEN0+3 change 2 lines RLUSK 28-JAN-82
|
||
TRNE AUXFLG,DSKIN ;[522] [247] IF DTA OR DISK INPUT
|
||
TRNN AUXFLG,DSKOUT ;[522] [247] AND DTA OR DISK OUTPUT
|
||
JRST MANA43 ;[247] NOPE
|
||
TLNE FL,TSKOUT ;[312] BUT NOT FOR TASKS (NO DUMP MODE)
|
||
JRST MANA43 ;[312] HOPE RECEIVER WILL GET IT RIGHT
|
||
GETSTS OUT,T1 ;[247] GET CURRENT STATUS
|
||
LDB T2,[POINT 4,ZRF+2,12] ;[247] GET ORIGINAL STATUS
|
||
SETSTS OUT,(T2) ;[247] MAKE NEW FILE THE SAME
|
||
MANA43: ;[247]
|
||
TRNN AUXFLG,DSKOUT ;[273] SKIP ZEROING T3 FOR DISK OUTPUT
|
||
>;[273] END IFN FTDSK
|
||
SETZ T3, ;[273] EXCEPT FOR DISK, DO SHORT ENTER
|
||
ENTER OUT,DTON(T3) ;[273] CREATE OUTPUT FILE
|
||
JRST ERR4 ;DIR. FULL OR 0 FILE NAME
|
||
SKIPL T2 ;[247] SEE IF MODE CHANGED
|
||
SETSTS OUT,(T1) ;[247] YES, RESTORE PROCESSING MODE
|
||
MOVEM 0,DTONEX+.RBPPN ;[273][207] RESTORE PPN
|
||
POPJ P, ;[273]
|
||
|
||
;COPY RIB INFO FROM ZRF TO DTON
|
||
|
||
CPYRIB: MOVE T1,[XWD DTONEX+.RBSIZ,DTONEX+.RBSIZ+1];[273]
|
||
SETZM DTONEX+.RBSIZ ;[273] CLEAR EXTENDED AREA
|
||
;**;[520] Change 1 line at CPYRIB+2 RLUSK 7-January-1982
|
||
BLT T1,DTONEX+.RBPCA ;[520] [273] OF ANY JUNK
|
||
TRC AUXFLG,DSKIN!DSKOUT ;[307] ANYTHING BUT DISK INVOLVED?
|
||
TRCE AUXFLG,DSKIN!DSKOUT ;[307] SKIP IF DISK
|
||
JRST CPOPJ ;[275] YUP, FORGET IT
|
||
;**:[526] Insert 2 lines at CPYRIB:+ 6L, 29-MAR-83, KMR
|
||
TLNE FL,TSKIN!TSKOUT ;[526] ANY TSK DEVICES INVOLVED?
|
||
JRST CPOPJ ;[526] YES, ALL DONE
|
||
TRNE FLAG,XFLG!RFLG ;[273] /X/R?
|
||
JRST CPYRI1 ;[273] YES, ALWAYS COPY .RBSPL,.RBVER
|
||
SKIPE ESWTCH ;[273] NO, ARE WE AT END OF LINE?
|
||
TLNE FL,MFLG ;[273] WITHOUT ANY WILD CARDS?
|
||
JRST CPOPJ ;[273] NO, CONCATENATE, DON'T COPY
|
||
CPYRI1: MOVE T1,ZRFEX+.RBSPL ;[273] COPY .RBSPL
|
||
MOVEM T1,DTONEX+.RBSPL ;[273]
|
||
MOVE T1,ZRFEX+.RBVER ;[273] COPY .RBVER
|
||
MOVEM T1,DTONEX+.RBVER ;[273]
|
||
;**;[517] Add 2 lines at CPYRI1+3 RLUSK 30-October-1981
|
||
MOVE T1,ZRFEX+.RBNCA ;[517] COPY .RBNCA
|
||
MOVEM T1,DTONEX+.RBNCA ;[517]
|
||
;**;[520] Add 2 lines at CPYRI1+5 RLUSK 7-January-1982
|
||
MOVE T1,ZRFEX+.RBPCA ;[520] COPY .RBPCA
|
||
MOVEM T1,DTONEX+.RBPCA ;[520]
|
||
;**;[545] Add 6 lines at CPYRI1+7 DRB 5-November-1985
|
||
HLRZ T1,DTONEX+.RBEXT;[545] GET THE EXTENSION
|
||
TRNE FLAG,RFLG ;[545] IS THIS A RENAME?
|
||
CAIE T1,'UFD' ;[545] YES, IS THIS A UFD?
|
||
JRST CPYRI2 ;[545] NO, DON'T BOTHER WITH THE QUOTA WORDS
|
||
MOVE T1,[ZRFEX+.RBQTF,,DTONEX+.RBQTF] ;[545] SETUP BLT POINTER
|
||
BLT T1,DTONEX+.RBUSD ;[545] TO COPY THE QUOTA WORDS
|
||
CPYRI2: MOVE T1,ZRFEX+.RBSTS ;[306] GET STATUS WORD
|
||
;**;[543] Replace one line at CPYRI1+11 DRB 24-July-1985
|
||
TRNE FLAG,RFLG ;[543] IS THIS A RENAME?
|
||
TRNN T1,RP.DIR ;[306,543] YES, IS THIS A DIRECTORY?
|
||
SKIPA ;[543] NO, DON'T STORE STATUS BITS
|
||
MOVEM T1,DTONEX+.RBSTS;[306] YES, THEN MAKE SURE DATA STAYS AROUND
|
||
TRNE FLAG,RFLG ;[273] IS IT RENAME?
|
||
POPJ P, ;[273] YES, WE'RE DONE
|
||
MOVE T1,ZRFEX+.RBSIZ ;[273] NO, COPY - GET SIZE OF FILE
|
||
ADDI T1,177 ;[273] HALF ADJUST TO CHANGE TO BLOCKS
|
||
LSH T1,-7 ;[273] DIVIDE BY ^D128
|
||
MOVEM T1,DTONEX+.RBEST ;[273] AND PUT IN OUTPUT SIZE
|
||
POPJ P, ;[273]
|
||
;HERE IF LINE IS TOO LONG FOR LINE BUFFER
|
||
|
||
PSCLNG: TRNE FLAG,LINE ;FATAL IF /A LINE BLOCKING
|
||
JRST ERR10 ;SINCE WE DON'T KNOW HOW TO
|
||
PUSH P,CHR ;[511][303] SAVE CHARACTER (MAY HAVE BEEN CHANGED FROM BUFFER)
|
||
PUSHJ P,OUTLBF ;DUMP THE LINE
|
||
MOVE 0,OPTRA ;FIX UP LINE BUFFER AGAIN
|
||
MOVEM 0,OPTR
|
||
POP P,CHR ;[303] RESTORE (MAY BE TAB IN BUFFER)
|
||
JRST CLRBUF ;CLEAR LINE BUFFER AND RETURN
|
||
|
||
;HERE FOR BINARY TRANSFER
|
||
|
||
PSCAN3: SETZB T3,T4 ;SAVES TIME LATER
|
||
TLNN FLAG,PFLG ;FORTRAN BINARY DATA (BP) ?
|
||
JRST PSCAN8 ;NO
|
||
ILDB T3,IBF+1 ;GET DATA COUNT
|
||
TRZE T3,-1 ;INCASE ONLY ONE BLOCK
|
||
SETO T4, ;IT WAS, SO FLAG THAT FACT
|
||
SOS IBF+2 ;COUNT ONE LESS
|
||
PSCAN8: SKIPG IBF+2 ;[511] BUFFER EMPTY?
|
||
JRST [PUSHJ P,INP ;YES, INPUT A BUFFER
|
||
TXNE IOS,IO.EOF ;END OF FILE?
|
||
JRST PSCAN6+1 ;YES, RETURN
|
||
TLNN FLAG,PFLG ;FORTRAN BINARY?
|
||
JRST .+1 ;NO
|
||
ILDB CHR,IBF+1 ;GET FIRST DATA WORD
|
||
TRZE CHR,-1 ;INCASE LAST BLOCK
|
||
HRLI T4,-1 ;FLAG IT WAS
|
||
ADD T3,CHR ;ADD TO WORD COUNT
|
||
SOS IBF+2 ;DECREMENT WORD COUNT
|
||
JRST .+1] ;BUFFER FULL NOW
|
||
SKIPG OBF+2 ;ANY ROOM IN OUTPUT BUFFER?
|
||
JRST [PUSHJ P,OUTP ;OUTPUT FULL BUFFER
|
||
TLNN FLAG,PFLG ;FORTRAN BINARY?
|
||
JRST .+1 ;NO
|
||
SOS CHR,OBF+2 ;GET WORD COUNT-1
|
||
HRLZS CHR ;PUT COUNT IN LEFT HALF
|
||
SUB T3,CHR ;ACCOUNT FOR LAST BLOCK OUTPUT
|
||
IDPB CHR,OBF+1 ;STORE AS FIRST WORD
|
||
ADDI T3,1 ;INCREMENT BLOCK COUNT
|
||
HRR T4,OBF+1 ;SAVE INITIAL ADDRESS
|
||
JRST .+1] ;CONTINUE
|
||
MOVE T1,IBF+2 ;NUMBER OF WORDS TO GO
|
||
CAMLE T1,OBF+2 ;WILL THEY FIT?
|
||
MOVE T1,OBF+2 ;NO, SO FILL BUFFER ONLY
|
||
HRLZ T2,IBF+1 ;BLT FROM INPUT
|
||
HRR T2,OBF+1 ;TO OUTPUT
|
||
AOBJP T2,.+1 ;BUT START ON DATA WORDS
|
||
ADDM T1,IBF+1 ;ADJUST BYTE POINTER
|
||
ADDM T1,OBF+1
|
||
MOVNS T1 ;NEGATE WORDS TO GO
|
||
ADDM T1,IBF+2 ;ADJUST WORD COUNT
|
||
ADDM T1,OBF+2
|
||
BLT T2,@OBF+1 ;MOVE WORDS
|
||
JUMPGE T4,PSCAN8 ;NOT FORTRAN BINARY, OR NOT LAST BLOCK
|
||
SKIPE IBF+2 ;FINISHED WITH THIS BUFFER?
|
||
JRST PSCAN8 ;NO, WILL FIX WORD COUNT NEXT TIME
|
||
ADDM T3,(T4) ;SET FINAL WORD COUNT
|
||
SETZB T3,T4 ;JUST IN CASE
|
||
SETZM OBF+2 ;FORCE OUTPUT
|
||
JRST PSCAN8 ;GET MORE
|
||
|
||
SUBTTL FINISHED AN OUTPUT FILE, SEE IF MORE
|
||
;COME HERE AFTER /L,/D,/R ON DISK OR THROUGH COPYING
|
||
|
||
MAIN1: RELEAS DIR, ;RELEASE THE DIRECTORY DEVICE
|
||
RELEAS IN,CL.OUT ;RELEASE THE INPUT DEVICE
|
||
SKIPL T4,ESWTCH ;MORE COMMAND STRING TO PROCESS?
|
||
JRST MAIN2 ;YES
|
||
|
||
;COME HERE AFTER /D,/R ON DTA. ALSO FROM ABOVE
|
||
|
||
MAINB: ;[207]
|
||
IFN LEVELC,< ;[207]
|
||
SKIPL LEVEL ;[207] SEE IF LEVEL C
|
||
CLOSE OUT, ;[207] YES, THEN CLOSE FIRST
|
||
>;[207] END IFN LEVELC
|
||
IFN FTDSK,<TLNE AUXFLG,NSPROT ;NON-ST. PROT?
|
||
TRNN AUXFLG,DSKOUT ;DISK OUT/
|
||
JRST MAINB1 ;NO
|
||
LDB 0,PRPTL
|
||
IFN LEVELC,< ;[322]
|
||
SKIPE LEVEL ;IF LEVEL D
|
||
>;[322] END IFN LEVEL C
|
||
JUMPN 0,MAINB1 ;ALREADY SET UNLESS 0
|
||
DPB 0,PRPTD
|
||
;**;[540] Insert four lines at MAINB+14 DRB 27-Mar-85
|
||
MOVX 0,RB.CRX ;[540] CLEAR THE
|
||
ANDCAM 0,DTONEX+.RBEXT ;[540] CREATION DATE
|
||
MOVX 0,RB.CRD ;[540] TO ENSURE
|
||
ANDCAM 0,DTONEX+.RBPRV ;[540] TODAY'S DATE
|
||
SETZM DTONEX+.RBPPN ;[273][207] CLEAR OUT PPN
|
||
SETZM DTONEX+.RBALC ;[336] DON'T SHORTEN THE FILE
|
||
RENAME OUT,DTONEX ;[273] SET UP RENAME REQUEST
|
||
JRST DERR6 ;DISK ERROR
|
||
SKIPA ;[207] SKIP CLOSE
|
||
MAINB1:>
|
||
CLOSE OUT, ;[207] FINISH THE OUTPUT FILE
|
||
TRNN FL,TMPO ;[207] DON'T CHECK STATUS IF TMPCOR
|
||
PUSHJ P,OUTP1 ;[207] CHECK FINAL ERROR BITS
|
||
RELEAS OUT, ;RELEASE THE OUTPUT DEVICE
|
||
JRST PIP2 ;PROCESS THE NEXT COMMAND
|
||
|
||
MAIN2: PUSHJ P,DESCRP ;GET THE NEXT INPUT FILE TO PROCESS
|
||
PUSHJ P,INLOOK
|
||
PUSHJ P,M4
|
||
HRRZM T4,ININI1
|
||
JRST MAINA3
|
||
;END OF LOOP BEGINNING AT MAINA3
|
||
|
||
SUBTTL INITIALIZE THE INPUT FILE
|
||
|
||
ININIT: IFN TEMP,<
|
||
TRNE CALFLG,TMPI ;IF DEV IS TMPCOR:
|
||
POPJ P, ;RETURN>
|
||
|
||
|
||
HRRZ 0,ININI1 ;[164] GET THE PREVIOUS MODE (OR FIRST)
|
||
SKIPE GENERI ;[164] SEE IF GENERIC DISK
|
||
TXO 0,UU.PHS ;[164] YES, SET PHYSICAL ONLY TO GET REAL STRUCTURES
|
||
MOVEM 0,ININI1 ;[164] SAVE OLD MODE AND UU.PHS
|
||
|
||
MOVE T1,SVJBF1 ;SVJBF1=END OF OUTPUT BUFFERS
|
||
MOVEM T1,.JBFF ;COMPARE OMODE CODE
|
||
MOVEI 0,IBF
|
||
MOVEM 0,DEVICE+1
|
||
OPENIT: OPEN IN,ININI1
|
||
JRST ERR1A ;NOT AVAILABLE ERROR
|
||
INBUF IN,1 ;TRY ONE INPUT BUFFER FOR SIZE
|
||
EXCH T1,.JBFF ;HOW MANY INBUFFERS WILL FIT?
|
||
SUB T1,SVJBF1
|
||
HRRZ 0,.JBREL
|
||
SUB 0,.JBFF ;JOBREL-SVJBF1=TOTAL SPACE LEFT
|
||
IDIVM 0,T1
|
||
MOVEI T4,ININIT ;RETURN FROM CORCHK IS ININIT
|
||
PUSHJ P,CORCHK ;LOOP BACK OR ERROR IF NOT ENOUGH CORE
|
||
INBUF IN,(T1) ;SET UP AS MANY BUFFS AS FIT
|
||
MOVE 0,IBF+1 ;SAVE ORIGINAL MODE
|
||
MOVEM 0,SVIBF
|
||
POPJ P,
|
||
|
||
SUBTTL READ AN INPUT FILE SPEC AND POSITION TAPE
|
||
|
||
;THIS ROUTINE GETS AN INPUT UNIT DESCRIPTOR AND, FOR
|
||
;ADVANCE FILE AND BSPF ON MTA, ENSURES THE VALUE 1 IF NO
|
||
;NUMBER WAS GIVEN.
|
||
|
||
DESCRP: SETZM AUX ;WILL GET ANY MTA REQ. GOING TO AUXFLG.
|
||
SETZM AB ;MTA VALUE SWITCHES
|
||
SETZM PR ;PROTECTION
|
||
IFN FTDSK,<SETZM PP ;PROJ-PROG NUMBER
|
||
STORE 0,PTHADD,PTHADD+PTHLEN+3,0 ;[330] CLEAR PATH BLOCK ALSO
|
||
>;END IFN FTDSK
|
||
PUSHJ P,NAME ;GO SCAN INPUT SIDE OF COMMAND STRING
|
||
HLLZS PR ;[211] IGNORE PROTECT BIT IN RH ON INPUT
|
||
PUSHJ P,CHECK1 ;CHECK UNIT, AND FOR _
|
||
DESCR1: SKIPE XNAME ;NO OVERSHOOT ALLOWED
|
||
JRST ERR6A
|
||
|
||
ABCHK: HLRZ T2,AB ;NO RECS/FILES TO BACKSPACE
|
||
JUMPN T2,.+2 ;IF 0
|
||
MOVEI T2,1 ;GUARANTEE ONE
|
||
HRLM T2,AB ;SET AB LH
|
||
|
||
HRRZ T2,AB ;NO RECS/FILES TO ADV
|
||
JUMPN T2,FNSET ;IF 0
|
||
AOS AB ;GUARANTEE 1
|
||
JRST FNSET ;FIND OUT DETAILS OF FILENAME
|
||
|
||
;IF A NON-STANDARD OUTPUT PROTECTION IS REQUESTED, SAVE FOR RENAME.
|
||
|
||
PROTK: MOVE T1,PR
|
||
TRNN T1,1
|
||
JRST PROTK1
|
||
HLLZM T1,PROTS
|
||
HLLZM T1,PR
|
||
TLOA AUXFLG,NSPROT
|
||
PROTK1: SETZB T1,PR
|
||
POPJ P,
|
||
|
||
SUBTTL DETERMINE OUTPUT DEVICE TYPE
|
||
|
||
;TEST "DEVICE" TO SEE IF DESTINATION DEVICE IS DTA, DSK, PTP, LPT, TTY, MTA
|
||
;IF ANY IS TRUE, SET RELEVANT BIT IN AUXFLG. "0" CONTAINS
|
||
;"DEVICE" ON ENTRY.
|
||
|
||
DEVTST: DEVCHR ;GET DEVICE CHARACTERISTICS
|
||
IFN FTDSK,<TXNN 0,DV.DSK ;IS OUTPUT DEV DSK?
|
||
JRST DEVTSU ;NO
|
||
TRO AUXFLG,DSKOUT ;YES, SET BIT
|
||
POPJ P, ;[211] RETURN, DON'T CARE WHAT DEVPPN IS
|
||
DEVTSU:>;[163] END IFN FTDSK
|
||
JUMPE 0,DEVER2 ;NON-EXISTENT DEVICE
|
||
TXNN 0,DV.OUT ;CAN DEV DO OUTPUT?
|
||
JRST ERR6A ;NO
|
||
TXNE 0,DV.DTA ;DECTAPE?
|
||
TRO AUXFLG,DTAOUT ;YES
|
||
TXNE 0,DV.PTP ;PAPER TAPE PUNCH?
|
||
TRO AUXFLG,PPTOUT
|
||
TXNE 0,DV.LPT ;LINE PRINTER?
|
||
TRO AUXFLG,LPTOUT
|
||
TXNE 0,DV.TTY ;TELETYPE?
|
||
TRO AUXFLG,TTYOUT
|
||
TXNE 0,DV.MTA ;MAGTAPE?
|
||
TRO AUXFLG,MTAOUT
|
||
MOVE 0,ODEV ;GET OUTPUT DEVICE AGAIN
|
||
DEVTYP 0, ;NEED TO FIND OUT ABOUT SPOOLING
|
||
SETZ 0, ;NEED 5.03 TO SPOOL
|
||
TXNE 0,TY.SPL ;IS DEVICE SPOOLED
|
||
TLOA CALFLG,OSPLFL ;YES
|
||
TLZ CALFLG,OSPLFL ;NO
|
||
TXZ 0,<-1-TY.DEV> ;[312] CLEAR ALL BUT DEVICE CODE
|
||
HRRZ 0,0 ;[312] AND LEFT HALF
|
||
CAIN 0,.TYTSK ;[312] IS THIS TSK:?
|
||
TLOA FL,TSKOUT ;[312] YES, SAY IT'S TASK, BUT ALSO DISK
|
||
POPJ P,
|
||
TRO AUXFLG,DSKOUT ;[312] TSK: IS A DISK EXCEPT FOR ERRORS
|
||
POPJ P, ;[312]
|
||
|
||
SUBTTL SET UP THE ERSATZ DEVICE PPN IF NECESSARY
|
||
|
||
;ROUTINE TO CHECK IF DEVICE SYS,OLD,LIB,NEW AND SET [P,PN] IF NONE GIVEN
|
||
IFN FTDSK,<
|
||
;[163] CHANGE ROUTINE TO GET PPN OF ANY ERSATZ DEVICE
|
||
PSYSP: SETZM DEVPP ;[211] CLEAR ERSATZ DEVICE PPN
|
||
DEVPPN 0, ;[163] GET PPN FOR DEVICE IN 0
|
||
|
||
IFE LEVELC,< ;[211]
|
||
SETZ 0, ;[322][211] IGNORE ERRORS
|
||
>;[211] END IFE LEVELC
|
||
IFN LEVELC,< ;[211]
|
||
PUSHJ P,TRYSYS ;[163] UNSUPPORTED, DO IT THE HARD WAY
|
||
>;[211] END IFN LEVELC
|
||
CAME 0,JOBPTH+2 ;[211] UNLESS DEVICE DIFFERENT FROM OUR DEFAULT
|
||
;[211] PATH PPN, IT'S NOT ERSATZ
|
||
MOVEM 0,DEVPP ;[163] AND ERSATZ DEVICE PPN
|
||
POPJ P, ;[163]
|
||
IFN LEVELC,< ;[211]
|
||
TRYSYS: DEVNAM 0, ;[163] NO DEVPPN, SEE IF WAS LOGICAL NAME
|
||
JFCL ;[163]
|
||
CAMN 0,['SYS '] ;[163] SEE IF SYS:
|
||
SKIPA T1,SYSPPN ;[163] YES, USE SYS'S PPN
|
||
MOVE T1,JOBPPN ;[163] NO, USE OURS
|
||
MOVE 0,T1 ;[163] COPY FOR PSYSP
|
||
POPJ P, ;[163] AND GO BACK
|
||
>;[211] END IFN LEVELC
|
||
>;[163] END IFN FTDSK
|
||
|
||
SUBTTL NON-EXISTANT DEVICE, INIT P & CTY
|
||
|
||
DEVER1: IFN TEMP,<
|
||
TROA CALFLG,TMPI>
|
||
DEVER2: IFN TEMP,<
|
||
TRO CALFLG,TMPO>
|
||
IFN TEMP,< ;[211]
|
||
MOVE T1,DEVICE ;[211] GET NON-EXISTANT DEVICE NAME
|
||
DEVNAM T1, ;[211] IN CASE LOGICAL
|
||
MOVE T1,DEVICE ;[215] RESTORE DEVICE NAME SINCE TMP: GONE
|
||
HLRZ T1,T1 ;[211] SWITCH FOR COMPARE
|
||
CAIN T1,'TMP'
|
||
POPJ P, ;ALLOW DEVICE TMPCOR:
|
||
TRZ CALFLG,TMPI!TMPO ;JUST IN CASE>
|
||
MOVE T1,DEVICE
|
||
DEVER: MOVEM T1,DEVERR
|
||
ERRPNT </?Device />
|
||
PUSHJ P,P6BIT
|
||
DEVERR
|
||
ERRPN2 </ does not exist!/>
|
||
;ROUTINE TO INIT PDL POINTER AND TTY
|
||
|
||
INICN1: MOVEI P,PDL-1 ;INITIALIZE PUSHDOWN POINTER
|
||
SETZM DTJBFF ;ALWAYS REINITIALIZE IF * OUTPUT
|
||
INICN2: MOVE 0,SVJBFF ;IS INITIALIZED AT PIP1
|
||
MOVEM 0,.JBFF ;SET JOBFF TO BEGINNING OF BUFFER AREA
|
||
PUSHJ P,INICON ;INITIALIZE THE TTY
|
||
INBUF CON,1 ;ONE INBUFFER
|
||
OUTBUF CON,1 ;ONE OUTBUFFER
|
||
MOVE 0,DTJBFF ;SEE IF THIS IS FIRST TIME HERE
|
||
JUMPN 0,[MOVEM 0,.JBFF ;NO, SO SAVE POSSIBLE STORED COMMAND
|
||
JRST INICN3]
|
||
MOVE 0,.JBFF
|
||
HRRZM 0,DTJBFF ;JOBFF AFTER 2 TTY BUFFERS SET
|
||
INICN3: OUTPUT CON, ;INITIALIZE BUFFER POINTERS
|
||
JRST (T5)
|
||
|
||
;ROUTINE TO CLEAR LINE BUFFER
|
||
|
||
CLRBUF: SETZM LBUF ;SUBR. TO CLEAR LINE BUFFER
|
||
MOVE 0,[LBUF,,LBUF+1]
|
||
BLT 0,LBUFE
|
||
POPJ P,
|
||
|
||
|
||
SUBTTL TRADITIONAL COMMAND SCANNER
|
||
|
||
;COMMAND SCANNER ROUTINE
|
||
|
||
NAME: TRNN CALFLG,SSWTCH ;RETURN NULL IF _ OR END-OF-LINE SEEN
|
||
SKIPGE ESWTCH
|
||
JRST NM13 ;
|
||
TLZ FL,FNSEEN ;[323][153,207] CLEAR SINGLE SPEC FLAGS
|
||
TRZ CALFLG,NSWTCH
|
||
SKIPE T1,XNAME ;IF COMMAND SCAN OVERSHOOT PICKED UP
|
||
;DEVICE NAME, USE IT NOW
|
||
JRST NM7
|
||
TRZ CALFLG,DEV
|
||
;LOOK FOR FILE NAME, EXT
|
||
NM1: SETZM FILEX
|
||
SETZM QMASK+1 ;CLEAR WILD CHAR. MASK
|
||
TLZ CALFLG,MFLG ;AND FLAG
|
||
;[160] THIS FLAG IS USED ONLY TO TELL FILTYP THAT WE'RE DOING
|
||
;[160] CONCATENATION, AND SHOULD NOT BE CLEARED FOR THE LAST FILE
|
||
;[160] IN THE STRING. CLEARING IT MAKES PIP CHANGE TO BINARY FOR
|
||
;[160] THE LAST FILE ONLY, WASTING SPACE.
|
||
NM2: SETZM FILNAM
|
||
SETZM QMASK
|
||
SKIPA T1,NM15
|
||
IDFIN: POP P,T1 ;RESTORE OLD POINTER
|
||
;LOOP TO PICK OFF FILENAME, EXT
|
||
NM3: PUSHJ P,GETCOM ;GO GET 7 BIT ASCII CHAR. FROM COMMAND STRING
|
||
NM3A: CAIN 0,"*" ;TO ALLOW FN.EX = *.*
|
||
JRST NMSTAR ;GO SET MASK
|
||
CAIL 0,"A" ;ALPHABETIC CHARACTER?
|
||
CAILE 0,"Z"
|
||
JRST NM4A ;NO
|
||
;**;[501] Insert at NM3A+5 RLUSK 30-Oct-80
|
||
SKIPE SPLAT1 ;[501] HAVE WE SEEN A "*" IN THIS PART OF
|
||
;[501] THE FILESPEC ALREADY?
|
||
;[501] IF SO, NO A-Z ALLOWED
|
||
JRST ERR501 ;[501] YES, SIGNAL AN ERROR
|
||
NM4: SUBI 0,40 ;CONVERT TO SIXBIT
|
||
TLNE T1,770000 ;6 CHARS. YET?
|
||
IDPB 0,T1 ;NO
|
||
JRST NM3 ;GET NEXT CHAR.
|
||
|
||
NM4A: CAIL 0,"0" ;NUMERIC?
|
||
CAILE 0,"9"
|
||
JRST NM5 ;NO
|
||
;**;[501] Insert at NM4A+3 RLUSK 30-Oct-80
|
||
SKIPE SPLAT1 ;[501] HAVE WE SEEN A "*" IN THIS PART OF
|
||
;[501] THE FILESPEC ALREADY?
|
||
;[501] IF SO, NO 0-9 ALLOWED
|
||
JRST ERR501 ;[501] YES, SIGNAL AN ERROR
|
||
JRST NM4
|
||
|
||
NMBIN: TLC T1,500 ;MAKE BYTE SIZE 3
|
||
NMBIN1: PUSHJ P,GETBUF ;GET A CHARACTER
|
||
CAIL 0,"0" ;MUST BE OIT
|
||
CAILE 0,"7"
|
||
JRST NMBIN2 ;NOT NUMERIC
|
||
SUBI 0,"0" ;MAKE BINARY
|
||
TLNE T1,770000 ;STILL ROOM?
|
||
IDPB 0,T1 ;YES
|
||
JRST NMBIN1 ;GET NEXT
|
||
NMBIN2: TLNE T1,010000 ;ODD NUMBER OF 3 BIT BYTES?
|
||
IBP T1 ;YES, MAKE EVEN
|
||
TLC T1,500 ;BACK TO SIXBIT BYTES
|
||
PUSHJ P,GETCM1 ;[251] GO SEE IF A SPEC CHAR (/[<>
|
||
JRST NM3A ;PROCESS THIS CHAR.
|
||
|
||
;CHARACTER NOT *,0-9,A-Z
|
||
;**;[504] Insert 1 line at NM5 RLUSK 4-Nov-80
|
||
NM5: SETZM SPLAT1 ;[504] CLEAR FLAG INDICATING A "*" SEEN
|
||
CAIG 0,CR ;CARRIAGE RETURN
|
||
CAIGE 0,LF ;LINE FEED
|
||
CAIN 0,ALTMOD ;ALTMODE
|
||
JRST NM5A ;YES
|
||
CAIN 0,CZ ;END-OF-FILE(CCL)?
|
||
NM5A: JRST NM5C ;YES, OR EOF
|
||
CAIN 0,COMMA ;COMMA
|
||
JRST NM6 ;YES
|
||
CAIN 0,PERIOD ;PERIOD
|
||
JRST NM10 ;YES
|
||
CAIN 0,COLON ;COLON
|
||
JRST NM9 ;YES
|
||
CAIN 0,";" ;IS THE REST A COMMENT?
|
||
JRST NM16 ;YES
|
||
IFN CCLSW,<CAIN 0,"@" ;INDIRECT COMMAND
|
||
JRST INDRCT ;YES
|
||
CAIN 0,"!" ;RUN COMMAND?
|
||
JRST RUNIT ;YES>
|
||
CAIN 0,"?" ;WILD CHAR.?
|
||
JRST WLDCH ;YES, SET UP MASK
|
||
CAIN 0,"^" ;TAPE ID ?
|
||
JRST ID ;YES
|
||
CAIN 0,"#" ;SPECIAL OCTAL FILE NAME ?
|
||
JRST NMBIN ;YES
|
||
CAIE 0,LA ;LEFT ARROW
|
||
CAIN 0,"=" ;OR EQUALS
|
||
SKIP 1 ;YES
|
||
JRST NM5B ;NO
|
||
TRNE CALFLG,DEV ;HAS A DEVICE BEEN SEEN?
|
||
TRO CALFLG,DVSWTH ;YES-NEEDED FOR /Z/,/D
|
||
TROA CALFLG,SSWTCH!ARWSW ;SET LEFT ARROW SWITCHES
|
||
NM5C: SOS ESWTCH ;END OF LINE OR FILE
|
||
JRST NM6A ;BUT NOT COMMA
|
||
|
||
NM6: TRNN CALFLG,ARWSW ;COMMA'S ILLEGAL BEFORE "_"
|
||
JRST ERR6A ;GIVE MESSAGE
|
||
TRO CALFLG,COMAFL ;MARK COMMA SEEN, MORE TO COME
|
||
NM6A:
|
||
IFN FTDSK,< ;[332]
|
||
SKIPN T1,PP ;[332] SEE IF A PPN GIVEN
|
||
SKIPN T1,PPP ;[332] NO, SEE IF A STICKY ONE IS AROUND
|
||
JRST NM6C ;[332] NO, NO CHANGE (ZERO OR AS IS)
|
||
TLNE T1,-1 ;[332] IS STICKY PATH SPEC?
|
||
JRST NM6B ;[332] NO, SAVE PPN
|
||
MOVSS T1 ;[332] YES, COPY PATH TO PTHADD
|
||
HRRI T1,PTHADD ;[332]
|
||
BLT T1,PTHADD+PTHLEN+3 ;[332]
|
||
MOVEI T1,PTHADD ;[332] AND POINT TO IT
|
||
NM6B: MOVEM T1,PP ;[332] UPDATE PPN
|
||
>;[332] END IFN FTDSK
|
||
NM6C: SKIPN T1,FILEX ;[332] COMMA ROUTINE - FIGURE OUT WHAT WE HAVE
|
||
JRST NM17 ;NO FILE NAME TEMPORARILY IN FILEX
|
||
EXCH T1,FILNAM ;PUT THE FILE NAME WHERE IT BELONGS
|
||
HLLZM T1,FILEX ;PUT THE EXTENSION WHERE IT BELONGS
|
||
MOVE T1,QMASK+1 ;GET FILE NAME MASK
|
||
EXCH T1,QMASK ;INTO RIGHT PLACE
|
||
HLR T1,T1 ;PUT MASK IN BOTH HALVES
|
||
MOVEM T1,QMASK+1 ;SINCE NEEDED IN EITHER HALF
|
||
MOVE T1,[QMASK,,OQMASK] ;PUT MASK ON OUTPUT SIDE
|
||
TRNE CALFLG,SSWTCH ;SEEN LEFT ARROW YET?
|
||
BLT T1,OQMASK+1 ;SINCE IT MAY DIFFER FROM INPUT MASK
|
||
MOVS T1,FILEX ;[363] GET FILE EXTENSION
|
||
MOVE T2,MFDPPN ;[363] GET MFD PPN
|
||
CAIN T1,(SIXBIT 'UFD') ;[363] IS IT A .UFD?
|
||
CAMN T2,PP ;[363] AND ALSO NOT SPECIFYING THE MFD?
|
||
POPJ P, ;[363] NO, SO NO SPECIAL CASE NEEDED.
|
||
MOVEM T2,PP ;[363] SET P-P TO THE MFD
|
||
MOVEI T1,DEFPTH ;[363] DEFAULT PATH...
|
||
MOVEM T1,PPP ;[363] . .
|
||
MOVE T1,JOBPTH+2 ;[363] MAKE THE UFD THE FILENAME
|
||
MOVEM T1,FILNAM ;[363] . .
|
||
SETZM QMASK ;[363] SO FILENAME'S NO LONGER WILD.
|
||
TLZ FL,MFLG ;[363] . .
|
||
POPJ P,
|
||
|
||
NM7: SETZM XNAME ;USE XNAME ONLY ONCE
|
||
CAIN T1,1 ;1 FLAGS A NULL OVERSHOOT
|
||
JRST NM13 ;RETURN NULL NAME
|
||
NM8: MOVEM T1,DEVICE ;NEW DEVICE
|
||
SKIPE QMASK ;[352] ANYTHING WILD?
|
||
JRST ERR22 ;[352] YES, ERROR
|
||
SETZM FILNAM ;FILE NAME OUT OF DATE BY NOW
|
||
TRO CALFLG,DEV
|
||
TRNE FL,ARWSW ;[152] IF LEFT ARROW SEEN,
|
||
TLOA FL,SDEVSN ;[323][152] SAY WE'VE SEEN A SOURCE DEVICE
|
||
TLO FL,DDEVSN ;[323] SAY WE'VE SEEN A DESTINATION DEVICE
|
||
JRST NM1 ;LOOK FOR A FILE NAME AND EXTENSION
|
||
|
||
NM9: TRNN CALFLG,DEV ;COLON ROUTINE - IS DEVICE NAME IN YET?
|
||
JRST NM12 ;NO
|
||
SKIPN T1,FILNAM ;SCAN OVERSHOOT - NULL OVERSHOOT?
|
||
MOVEI T1,1 ;YES - FLAG NULL OVERSHOOT WITH A 1
|
||
MOVEM T1,XNAME ;XNAME = OVERSHOOT NAME
|
||
JRST NM14
|
||
|
||
ID: PUSH P,T1 ;SAVE BYTE POINTER
|
||
TLO FLAG,TID ;[125] SET FLAG TO CHANGE TAPEID
|
||
MOVE T1,[POINT 6,TAPEID]
|
||
ID1: PUSHJ P,GETBUF ;ALLOW ALL 6 BIT CHARS.
|
||
CAIN 0,"^" ;END OF TAPE ID?
|
||
JRST IDFIN ;YES
|
||
SUBI 0,40 ;MAKE SIXBIT
|
||
JUMPL 0,ERR6 ;MUST BE SIXBIT
|
||
TLNN T1,770000 ;TOO MANY CHAR.?
|
||
JRST ERR6 ;YES, GIVE ERROR
|
||
IDPB 0,T1 ;STORE CHAR.
|
||
JRST ID1 ;GET MORE
|
||
|
||
NM10: SKIPE FILEX ;FILENAME SEEN ALREADY?
|
||
JRST ERR6 ;YES, GIVE COMMAND ERROR
|
||
;**;[501] Insert at NM10+2 RLUSK 10-Oct-80
|
||
SETZM SPLAT1 ;[501] CLEAR FLAG WHICH TELLS IF "*"
|
||
;[501] APPEARED IN FILNAM, SO WE CAN
|
||
;[501] SEE IF A CHARACTER FOLLOWS A "*"
|
||
;[501] IN THE .EXT
|
||
MOVE 0,FILNAM ;PERIOD ROUTINE - SAVE FILE NAME
|
||
MOVEM 0,FILEX ;TEMPORARILY IN FILEX
|
||
SKIPN 0 ;[153] SEE IF ANY FILE NAME THERE
|
||
TLO FL,FNSEEN ;[153] NO, SET FNSEEN FOR NM17 TO CHECK
|
||
MOVE 0,QMASK ;GET WILD CHAR. MASK
|
||
MOVEM 0,QMASK+1 ;SAVE IT ALSO
|
||
JRST NM2 ;LOOK FOR EXTENSION
|
||
|
||
NM11: SKIPN FILNAM ;WAS A FILE NAME SPECIFIED?
|
||
TRNE CALFLG,DEV ;WAS ANYTHING SPECIFIED?
|
||
POPJ P, ;YES
|
||
NM12: SKIPE T1,FILNAM ;NULL NAME SPECIFIED?
|
||
JRST NM8 ;NO - SO REMEMBER AND LOOK FOR FILE NAME
|
||
|
||
NM13: TRO CALFLG,NSWTCH ;RETURN A NULL NAME
|
||
SETZM FILEX
|
||
NM14: SETZM FILNAM
|
||
POPJ P,
|
||
|
||
NM15: POINT 6,FILNAM
|
||
NM5B: CAIE 0,TAB ;IGNORE TAB
|
||
CAIN 0,SPACE ;SPACES IGNORED
|
||
JRST NM3 ;IGNORE NOT LEGAL SIXBIT
|
||
PUSH P,0 ;SAVE CHARACTER
|
||
ERRPNX </?Illegal character />
|
||
POP P,0 ;RECOVER CHAR.
|
||
CAIL 0,SPACE ;INVISIBLE CHAR.?
|
||
JRST .+4 ;NO
|
||
MOVEI CHR,"^" ;USUAL UP ARROW MARKER
|
||
PUSHJ P,PUTCON ;OUTPUT TO TTY
|
||
TRC 0,100 ;MAKE CHAR. VISIBLE
|
||
MOVE CHR,0 ;NOW FOR THE CHAR.
|
||
PUSHJ P,PUTCON
|
||
ERRPN2 </ in command!/>
|
||
|
||
NM16: SKIPN COMFLG ;[326] CHECK FOR END OF LINE AT THIS LEVEL,
|
||
SKIPE COMCNT ;[326] SINCE TO DO SO AT ANY OTHER LEVEL
|
||
SKIP 1 ;[326] WILL BREAK LOTS
|
||
JRST NM5C ;[326] END OF LINE AFTER ; FROM TTY
|
||
PUSHJ P,GETBUF ;[326] GET NEXT ASCII CHAR.
|
||
CAIE 0,ALTMOD ;[265] RETURN IF ALTMOD
|
||
CAIN 0,CZ ;OR ^Z
|
||
JRST NM5A
|
||
CAIL 0,LF ;[265] OR END OF LINE CHARACTER
|
||
CAIL 0,CR ;[265] BUT BYPASS <CR>
|
||
JRST NM16 ;GET NEXT CHARACTER
|
||
JRST NM5A ;[265] CARRY ON
|
||
|
||
IFE FTDSK,<SYN NM11,NM17>
|
||
IFN FTDSK,<
|
||
NM17: MOVE T1,[QMASK,,OQMASK] ;PUT MASK ON OUTPUT SIDE
|
||
TRNE CALFLG,SSWTCH ;SEEN LEFT ARROW YET?
|
||
BLT T1,OQMASK+1 ;SINCE IT MAY DIFFER FROM INPUT MASK
|
||
TLZN FL,FNSEEN ;[153] SEE IF WE SAW A DOT
|
||
JRST NM11 ;[153] NO, WE MAY HAVE LEGIT FILE NAME
|
||
MOVS T1,FILNAM ;GET EXT
|
||
CAIN T1,(SIXBIT 'UFD') ;CHECK FOR .UFD
|
||
SKIPN PP ;AND [PPN]
|
||
JRST ERR12 ;[153] ONLY LEGAL EXTENSION ONLY IS
|
||
;[153] [P,PN].UFD, NOT .FOO
|
||
MOVSM T1,FILEX ;EXT IN CORRECT PLACE
|
||
SKIPN T1,PP ;[211] GET PPN TYPED
|
||
MOVE T1,JOBPTH+2 ;[211] IF NONE, USE DEFAULT PATH
|
||
MOVEM T1,FILNAM ;INTO FILNAM
|
||
MOVE T1,MFDPPN ;[163] GET PPN OF MFD
|
||
MOVEM T1,PP ;FOR DSK LOOKUP
|
||
POPJ P,>
|
||
|
||
IFN CCLSW,<
|
||
INDRCT: SKIPN T3,DEVICE ;[165] GET TYPED DEVICE
|
||
MOVSI T3,'DSK' ;[165] NONE, USE DEFAULT DSK:
|
||
MOVEM T3,CCLINI+1 ;SET IT UP FOR OPEN
|
||
SKIPN T3,PP ;SOMEONE ELSES AREA
|
||
SETZ T3, ;NO, USE OWN
|
||
MOVEM T3,CFILE+3 ;STORE PPN
|
||
MOVE T1,FILNAM ;[351] GET FILE NAME (MAYBIE)
|
||
SKIPN T3,FILEX ;[351] AND EXTENSION
|
||
TLNE FL,FNSEEN ;[351] SKIP IF NO DOT-NOT IF DOT
|
||
;[351] BUT NO NAME
|
||
EXCH T1,T3 ;[351] A DOT WAS SEEN, SWAP NAME
|
||
;[351] AND EXIT.
|
||
JUMPE T1,ERR12 ;[351] IF BOTH NULL, ERROR
|
||
SKIPE FILEX ;[351] SKIP IF NO "." TYPED
|
||
TROA FL,NSWTCH ;[351] . TYPED, ONLY LOOKUP ONCE
|
||
SKIPE T3 ;[351] ANY EXTENSION?
|
||
SKIP 1 ;[351] YES OR JUST .
|
||
MOVSI T3,'CCL' ;[351] NO, LOOK FOR CCL
|
||
MOVEM T1,CFILE ;[351] SAVE NAME
|
||
JRST P12 ;STORE EXT
|
||
|
||
RUNIT: TRNE CALFLG,DEV ;USE SYS IF NO DEVICE SEEN
|
||
SKIPN T3,DEVICE ;GET DEVICE IF SPECIFIED
|
||
MOVSI T3,'SYS'
|
||
MOVEM T3,RUNDEV
|
||
MOVE T3,FILNAM ;GET FILE NAME
|
||
MOVEM T3,RUNFIL ;SAVE IT
|
||
PUSHJ P,GETEND ;DELETE COMMAND FILE
|
||
SKIPN T3,PP ;SOMEONE ELSES AREA?
|
||
SETZ T3, ;NO, SO USE OWN
|
||
MOVEM T3,RUNPP
|
||
MOVEI 16,RUNDEV ;XWD 0,RUNDEV
|
||
SKIPE COMFLG ;CCL IN PROGRESS?
|
||
HRLI 16,1 ;YES START AT C(JOBSA)+1
|
||
RUN 16,
|
||
HALT ;SHOULD NOT RETURN
|
||
>
|
||
|
||
;HERE IF A "?" SEEN IN FILE NAME OR EXTENSION
|
||
WLDCH: TLO CALFLG,MFLG ;SET FLAG
|
||
TLNN T1,770000 ;6 CHAR. YET?
|
||
JRST NM3 ;YES, NO MORE
|
||
IDPB 0,T1 ;DEPOSIT IN NAME
|
||
HRRI T1,QMASK ;MASK BYTE POINTER
|
||
DPB 0,T1 ;PUT IN MASK ALSO
|
||
HRRI T1,FILNAM ;BACK AS IT WAS
|
||
JRST NM3 ;RETURN FOR MORE
|
||
|
||
;HERE IF "*" SEEN IN FILE NAME OR EXTENSION
|
||
;**;[501] Insert at NMSTAR RLUSK 30-Oct-80
|
||
NMSTAR: SETOM SPLAT1 ;[501] REMEMBER "*" WAS SEEN
|
||
SKIPE (T1) ;NAME BETTER BE ZERO
|
||
JRST NMSTR1 ;[225] NO, ADD ?????
|
||
SETOM QMASK ;MASK ALL CHARACTERS
|
||
SETOM (T1) ;AND NAME OF ??????
|
||
TLZ T1,770000 ;MAKE SURE NOTHING ELSE GETS HERE
|
||
TLO FL,MFLG ;SET FLAG
|
||
JRST NM3 ;BACK FOR MORE
|
||
|
||
NMSTR1: MOVEI 0,"?" ;[225] SET WILD CHARACTER
|
||
NMSTR2: TLNN T1,770000 ;[225] SEE IF ANY MORE CHARS TO FILL
|
||
JRST NM3 ;[225] NO, DONE
|
||
TLO FL,MFLG ;[225] YES, SET WILD BIT, (ONLY IF SOME GENERATED)
|
||
IDPB 0,T1 ;[225] DEPOSIT ? IN FILENAME
|
||
HRRI T1,QMASK ;[225] CHANGE TO MASK WORD
|
||
DPB 0,T1 ;[225] AND DEPOSIT ? IN MASK WORD
|
||
HRRI T1,FILNAM ;[225] RESTORE TO FILE NAME
|
||
JRST NMSTR2 ;[225] AND GO SEE IF MORE TO DO
|
||
|
||
SUBTTL COPY BY CHARACTER OUTPUT ROUTINES
|
||
|
||
;ROUTINE TO OUTPUT ONE LINE FROM LBUF
|
||
|
||
;**;[511] Change 1 line at OUTLBF RLUSK 13-Mar-81
|
||
OUTLBF: TRNE FLAG,LINE+SQNSN ;[511] LINE-BY-LINE OUTPUT
|
||
;[511] IF SEQUENCED OR BLOCKED
|
||
JRST OUTLBA ;OUTPUT LINE-BY-LINE
|
||
OUTCH1: MOVE T2,OPTRA ;OUTPUT CHARACTER-BY-CHARACTER
|
||
OUTLB1: CAMN T2,OPTR ;ARE ALL CHARACTERS OUT?
|
||
POPJ P, ;YES
|
||
ILDB CHR,T2 ;NO
|
||
PUSHJ P,PUT ;GO OUTPUT CHARACTER
|
||
JRST OUTLB1
|
||
OUTLBA: TLNE FLAG,CHKFLG;PAREN COUNTING?
|
||
JRST OUTCHK ;YES, SO DO IT
|
||
TRNE AUXFLG,TTYOUT+LPTOUT
|
||
JRST OUTCH1 ;IF OUTPUT TO TTY OR LPT DO CHR BY CHR
|
||
MOVEI T1,4 ;CLEAR UNUSED PORTION OF LAST WORD USED IN LBUF
|
||
MOVEI T2,0
|
||
MOVE T3,OPTR
|
||
IDPB T2,T3
|
||
SOJG T1,.-1
|
||
MOVEI T2,5
|
||
HRRZ T1,OPTR ;COMPUTE NUMBER OF WORDS FILLED
|
||
SUBI T1,LBUF-1
|
||
JUMPE T1,OUTLB3 ;DO NOTHING IF BUFFER EMPTY
|
||
IMULM T1,T2 ;COMPUTE CHARACTER COUNT=5 TIMES WORD CT
|
||
;THIS IS WHERE OLD FORTRAN MODE WAS TESTED.
|
||
CAMG T2,OBF+2 ;WILL LINE FIT IN THE OUTBUFFER?
|
||
JRST OUTLB2 ;YES
|
||
PUSHJ P,OUTP ;NO, SO DUMP BUFFER AND CHECK ERROR BITS
|
||
MOVEI T6 ,1
|
||
TDNE T6,LBUF ;SEQUENCED?
|
||
TRNN AUXFLG,DTAOUT ;YES, ON DTA?
|
||
SKIP 1 ;NO
|
||
ADDI T2,40*5 ;LEAVE EDITING ROOM
|
||
OUTLB2: MOVNS T2
|
||
ADDM T2,OBF+2 ;UPDATE OUTBUFFER CHARACTER COUNT
|
||
HRLI T2,LBUF
|
||
HRR T2,OBF+1
|
||
ADDI T2,1
|
||
ADDB T1,OBF+1 ;UPDATE OUTBUFFER BYTE POINTER
|
||
BLT T2,(T1) ;MOVE DATA TO OUTBUFFER
|
||
OUTLB3: POPJ P,
|
||
;ROUTINE TO PUT ONE CHAR INTO OUT BUFFER
|
||
|
||
TABOUT: MOVEI CHR,TAB ;OUTPUT A TAB
|
||
PUT: SOSG OBF+2 ;SUBR. TO OUTPUT ONE CHARACTER IN AC CHR
|
||
PUSHJ P,OUTP ;IF BUFFER FULL, DUMP AND CHECK ERR BITS
|
||
IDPB CHR,OBF+1 ;PUT CHARACTER IN BUFFER
|
||
POPJ P,
|
||
|
||
LISTIT: TLOA T1,(POINT 7) ;FORM BYTE POINTER
|
||
PUSHJ P,PUT ;OUTPUT CHAR
|
||
ILDB CHR,T1 ;GET CHAR.
|
||
JUMPN CHR,.-2 ;BACK FOR MORE
|
||
POPJ P, ;DONE
|
||
|
||
;ROUTINE TO DUMP OUT BUFFER WHEN FULL
|
||
|
||
OUTP: OUT OUT, ;SUBR. TO DUMP OUTBUFFER AND CHECK ERR BITS
|
||
JRST CPOPJZ ;NO ERRERS,BUT CLEAR IOS JUST IN CASE
|
||
OUTP1: GETSTS OUT,IOS ;HERE FOR BIT CHECKING ONLY
|
||
PUSHJ P,OUTP4
|
||
SETSTS OUT,(IOS);ERRORS WERE DETECTED
|
||
POPJ P, ;NO ERRORS
|
||
|
||
OUTP4: TRNN AUXFLG,MTAOUT
|
||
JRST .+3
|
||
OUTP3: TXNE IOS,IO.EOT ;EOT?
|
||
JRST .+3 ;YES
|
||
TXNN IOS,IO.ERR ;ANY ERROR BITS ON?
|
||
JRST CPOPJ1 ;NO
|
||
PUSHJ P,COMERR ;YES
|
||
|
||
JSP T5,INICN2 ;INIT TTY
|
||
PUSHJ P,QUEST
|
||
ERRPN2 </Output device />
|
||
PUSHJ P,P6BIT
|
||
ODEV
|
||
SKIPN DTON ;ONLY IF THERE IS A FILE NAME
|
||
JRST .+4 ;DON'T PRINT IF NOT
|
||
ERRPN2 </: file />
|
||
MOVEI T3,DTON ;OUTPUT FILE NAME LOC
|
||
PUSHJ P,FN.EX ;PRINT FILE NAME EXT
|
||
MOVE T2,AUXFLG
|
||
ANDI T2,MTAOUT+DSKOUT+DTAOUT
|
||
|
||
;AND FALL INTO IOERR
|
||
|
||
SUBTTL COPYING I/O ERRORS
|
||
|
||
IOERR: PUSHJ P,TCRLF ;[523] TYPE A CRLF
|
||
ERRPN2 </Status bits /> ;[523]
|
||
MOVE T1,IOS ;[523] GET ERROR STATUS
|
||
PUSHJ P,.TGSTS ;[523] SHOW THE ERROR BITS
|
||
TXNN IOS,IO.BKT!IO.IMP ;[523] IS ERROR POSSIBLY RECOVERABLE?
|
||
;**;[527] @IOERR: + 5L, change one line, 11-May-83, KMR
|
||
JRST IOERN0 ;[523][527] NO
|
||
JRST IOERRG ;[523] YES -- SEE IF /G SPECIFIED
|
||
;[523]
|
||
;[523] .TGSTS prints out the error status bits and an
|
||
;[523] appropriate message, if possible, before returning.
|
||
;[523]
|
||
.TGSTS: PUSH P,T1 ;[523] SAVE STATUS BITS
|
||
MOVEM T1,DOUT ;[523] STORE VALUE TO BE TYPED
|
||
MOVEI T2,PUTCON ;[523] ADDRESS OF OUTPUT ROUTINE
|
||
PUSHJ P,OUTOCT ;[523] TYPE BITS
|
||
OUTPUT CON, ;[523] FLUSH OUT BEGINNING OF MESSAGE
|
||
POP P,T2 ;[523] RESTORE STATUS TO T2
|
||
ANDI T2,IO.ERR!IO.EOT ;[523] USE ONLY ERROR BITS AND EOT
|
||
MOVSI T4,-.TGSLN ;[523] MAKE AOBJN POINTER TO BIT TABLE
|
||
TGSSTL: HRRZ T3,TGSERR(T4) ;[523] GET NEXT ERROR BIT
|
||
TDZN T2,T3 ;[523] MATCH?
|
||
JRST TGSAOB ;[523] NO -- TRY NEXT ONE
|
||
HLRZ T1,TGSERR(T4) ;[523] YES -- GET ADDRESS OF ERROR MESSAGE
|
||
OUTSTR (T1) ;[523] TYPE TO TTY:
|
||
TGSAOB: SKIPE T2 ;[523] END OF ERROR BITS?
|
||
AOBJN T4,TGSSTL ;[523] NO -- STILL SOME LEFT
|
||
POPJ P, ;[523] YES -- RETURN
|
||
TGSERR: [ASCIZ\
|
||
(Hardware device error)\],,IO.DER ;[523]
|
||
[ASCIZ\
|
||
(Device write-locked or 7-9 punch not found on binary card)\],,IO.IMP;[523]
|
||
[ASCIZ\
|
||
(Hard data parity error)\],,IO.DTE ;[523]
|
||
[ASCIZ\
|
||
(Quota exceeded or block too large)\],,IO.BKT ;[523]
|
||
[ASCIZ\
|
||
(Physical end of tape encountered)\],,IO.EOT ;[523]
|
||
.TGSLN==.-TGSERR ;[523] ERROR MESSAGE TABLE LENGTH
|
||
|
||
;**;[527] @IOERRN: move 2 lines and add new tag, 11-May-83, KMR
|
||
IOERN0: TRNE AUXFLG,DSKOUT ;[376][527] ERROR WHILST DOING DISK OUTPUT?
|
||
CLOSE OUT,CL.RST ;[376][527] YES - DISCARD NEW FILE.
|
||
IOERRN: PUSHJ P,TCRLF ;OUTPUT A CR-LF ON TTY
|
||
RELEAS TAPE, ;NO RECOVERY ERRORS EXIT HERE
|
||
RELEAS DIR,
|
||
RELEAS OUT,
|
||
RELEAS IN,
|
||
TLZ FLAG,TID;[125] CLEAR REQUEST TO WRITE TAPE ID
|
||
IFN CCLSW,< ;[264]
|
||
SKIPE COMFLG ;[264] IF FROM CCL, EAT REST OF LINE
|
||
SKIPE COMEOF ;[264] AND NOT END OF FILE
|
||
>;[264] END IFN CCLSW
|
||
JRST PIP2 ;GET NEXT COMMAND
|
||
IFN CCLSW,< ;[264]
|
||
LDB 0,CFI+1 ;[264] GET LAST CHARACTER
|
||
IFN TEMP,< ;[264]
|
||
SKIPE TMPFLG ;[264] IF FROM TMPCOR
|
||
LDB 0,TMPPNT ;[264] GET IT FROM THERE
|
||
>;[264] END OF IFN TEMP
|
||
IOERRA: CAIL 0,LF ;[264] SEE IF ALREADY AT END OF LINE
|
||
CAIL 0,CR ;[264] (GO PAST <CR>)
|
||
CAIN 0,ALTMOD ;[264]
|
||
JRST PIP2 ;[264] GOT END OF LINE
|
||
PUSHJ P,GETSC ;[264] EAT ANOTHER CHARACTER
|
||
SKIPN COMEOF ;[264] UNLESS END OF FILE
|
||
JRST IOERRA ;[264] TRY AGAIN
|
||
JRST PIP2 ;[264] LOST
|
||
>;[264] END IFN CCLSW
|
||
|
||
IFN FTDSK,<
|
||
TXTD3: ASCIZ /monitor detected software error/>
|
||
|
||
;TEST IF /G FLAG(IGNORE ERRORS) SET
|
||
|
||
IOERRG: TLNN FLAG,GFLG ;PRINTED CURRENT MESSAGE
|
||
JRST IOERRN ;NO RECOVERY
|
||
|
||
ERRPN2</
|
||
/> ;PRINT CR, LF DON'T MOVE>
|
||
|
||
RELEAS CON,
|
||
TRNE AUXFLG,TTYOUT ;TTY OUTPUT DEVICE?
|
||
PUSHJ P,OMODE ;YES, INIT OUTPUT DEVICE
|
||
TRNE AUXFLG,TTYIN ;REINIT TTYIN,TTYOUT
|
||
PUSHJ P,ININIT
|
||
TXZ IOS,IO.ERR ;CLEAR FILE STATUS, I/O ERRORS
|
||
TRNE T2,MTAIN+MTAOUT
|
||
TXZ IOS,IO.EOT ;CLEAR PHYSICAL EOT I/O ERROR
|
||
MOVS 0,[XWD 1,SAVAC]
|
||
BLT 0,3
|
||
MOVE T5,SAVAC+3
|
||
MOVE T6,SAVAC+4
|
||
POPJ P,
|
||
|
||
COMERR: MOVE 0,[XWD 1,SAVAC] ;SAVE ACS T1,T2,T3,T5,T6
|
||
BLT 0,SAVAC+2
|
||
MOVEM T5,SAVAC+3
|
||
MOVEM T6,SAVAC+4
|
||
TRNE AUXFLG,TTYOUT ;RELEASE ANY TTYIO
|
||
RELEAS OUT,
|
||
TRNE AUXFLG,TTYIN
|
||
RELEAS IN,
|
||
POPJ P,
|
||
;PRINT FILE NAME AND EXTENSION FROM (T3), 1(T3).
|
||
|
||
FN.EX: MOVE T1,(T3) ;T1=FILENAME
|
||
HLRZ T6,1(T3) ;T6=FILE EXT
|
||
MOVEM T1,DERR2 ;STORE FILE NAME
|
||
JUMPE T6,DERR2A ;FILE EXT=0?
|
||
JUMPL T1,DERR2B ;MUST BE SIXBIT, SIGN BIT ON
|
||
CAIE T6,'UFD'
|
||
JRST DERR2B ;NO
|
||
|
||
SETZB T1,DERR2 ;CLEAR FILE NAME IF 'UFD'
|
||
HLRZ DOUT,(T3) ;YES, GET PROJ. NO.
|
||
MOVEI T2,PUTCON ;PRINT PROJ-PROG. NO.
|
||
MOVEI CHR,"[" ;BETWEEN SQUARE BRACKETS
|
||
PUSHJ P,PUTCON
|
||
PUSHJ P,OUTOCT ;CONVERT TO ASCII
|
||
|
||
MOVEI CHR,COMMA
|
||
PUSHJ P,PUTCON
|
||
|
||
HRRZ DOUT,(T3) ;GET PROG. NO.
|
||
PUSHJ P,OUTOCT ;CONVERT TO ASCII
|
||
MOVEI CHR,"]"
|
||
PUSHJ P,PUTCON
|
||
|
||
DERR2B: TLO T6,"."-40 ;PUT SIXBIT PERIOD
|
||
LSH T6,14 ;[320] POSITION SO SPACES WON'T PRINT
|
||
DERR2A: MOVEM T6,DERR2+1 ;INTO EXTENSION
|
||
PUSHJ P,P6BIT
|
||
DERR2
|
||
PUSHJ P,P6BIT
|
||
DERR2+1
|
||
MOVEI CHR," "
|
||
JRST PUTCON
|
||
|
||
|
||
|
||
|
||
|
||
SUBTTL COMMAND STRING CHARACTER GETTER WITHOUT /[]<>
|
||
|
||
;THIS ROUTINE GETS A 7 BIT ASCII CHARACTER FROM THE COMMAND STRING
|
||
;AND RETURNS IT TO THE COMMAND SCANNER ROUTINE (NAME) IN AC0
|
||
|
||
GETCOM: PUSHJ P,GETBUF
|
||
GETCM1: ;[252] ENTRY AFTER # PROCESSED
|
||
CAIN 0,"/" ;SINGLE CHARACTER SWITCH
|
||
JRST GETT6
|
||
CAIN 0,"(" ;LOOK FOR (MULTI-CHAR.) SWITCH
|
||
JRST GETT3
|
||
CAIN 0,"<" ;GO LOOK FOR PROTECTION
|
||
JRST GETT9
|
||
CAIE 0,"["
|
||
POPJ P,
|
||
|
||
GETT10: ;[211]
|
||
IFN FTDSK,< ;[211]
|
||
SETZM PTHADD ;[211]
|
||
MOVE T7,[XWD PTHADD,PTHADD+1] ;[211] CLEAR PATH
|
||
BLT T7,PTHADD+PTHLEN+3 ;[211]
|
||
>;[211] END IFN FTDSK
|
||
PUSHJ P,GETNUM ;[211] GO GET PPN
|
||
|
||
IFN FTDSK,< ;[211]
|
||
CAIN 0,"-" ;[166] SEE IF [-] PPN SPEC
|
||
JRST GETMYP ;[166] YES, EXPLICITLY USE OURS
|
||
>;[211] END IFN FTDSK
|
||
|
||
CAILE T7,-1 ;[211] GREATER THAN HALF WORD?
|
||
JRST ERR2A ;[211] YES, ERROR
|
||
IFN FTDSK,< ;[211]
|
||
SKIPN T7 ;[166] SEE IF PROJECT SPECIFIED
|
||
MOVS T7,JOBPPN ;[220] NO, USE JOB'S UFD
|
||
>;[211] END IFN FTDSK
|
||
MOVSM T7,PP ;[211] SAVE PPN, BOTH HALVES ([] WORKS)
|
||
CAIE 0,"," ;SEPARATOR?
|
||
JRST GETT11 ;OR TERMINATOR (NON-NUMERIC)
|
||
PUSHJ P,GETNUM ;GET RIGHT HALF
|
||
IFN FTDSK,< ;[240]
|
||
SKIPN T7 ;[233] SEE IF ANY PROGRAMMER NUMBER
|
||
HRRZ T7,JOBPPN ;[233] NO, USE OURS
|
||
>;[240] END IFN FTDSK
|
||
CAILE T7,-1 ;GREATER THAN HALF WORD
|
||
JRST ERR2A ;YES, ERROR
|
||
HRRM T7,PP ;STORE RIGHT HALF
|
||
GETT12: ;[211]
|
||
IFN FTDSK,< ;[211]
|
||
SKIPE T7,PP ;[211] GET WHATEVER WAS TYPED
|
||
MOVEM T7,PTHPPN ;[211] AND PUT INTO PATH
|
||
CAIE 0,"," ;[211] SEE IF SFD SPECIFIED
|
||
JRST GETT11 ;NO
|
||
PUSHJ P,GETPTH ;GET FULL PATH
|
||
>;[211] END IFN FTDSK
|
||
|
||
GETT11: ;[211]
|
||
IFN FTDSK,< ;[211]
|
||
|
||
IFN SCANSW,< ;[223]
|
||
CAIN 0,"/" ;[211] SEE IF SCAN SWITCH SPECIFIED
|
||
PUSHJ P,GTPTH4 ;[211] YES, GO DECODE IT
|
||
>;[223] END IFN SCANSW
|
||
>;[211] END IFN FTDSK
|
||
CAIE 0,ALTMOD ;[310] THIS IS ALSO END OF LINE
|
||
CAIG 0,CR ;[211] ALLOW END OF LINE
|
||
CAIGE 0,LF ;TO TERMINATE PPN
|
||
JRST .+3 ;NOT CR/LF
|
||
AOS COMCNT ;ALLOW FOR EXTRA CHAR READ
|
||
JRST .+3 ;AND SKIP TEST
|
||
CAIE 0,"]" ;FORCE CORRECT TERMINATOR
|
||
JRST ERR2
|
||
IFN FTDSK,<
|
||
SKIPN FILNAM ;[211] IF FILE SPEC SEEN ALREADY
|
||
SKIPE FILEX ;[211] IF PPN IS IN MIDDLE, FORCE NO DEFAULT
|
||
;[211] I.E. FILE.[PPN]EXT
|
||
JRST GETCOM ;[161] THEN NOT DEFAULT PPN
|
||
MOVE T7,[XWD PTHADD,DEFPTH] ;[211] COPY PATH TO DEFAULT
|
||
HRRZM T7,PPP ;[211] AND POINT PERMANENT TO IT
|
||
BLT T7,DEFPTH+PTHLEN+3 ;[211]
|
||
MOVE T7,PP ;[211] IF NO PATHING
|
||
SKIPN JOBPTH ;[211] ON THIS SYSTEM
|
||
MOVEM T7,PPP ;[211] SAVE ACTUAL PPN
|
||
>;[211] END IFN FTDSK
|
||
JRST GETCOM ;CONTINUE SCAN
|
||
IFN FTDSK,< ;[211]
|
||
GETMYP: JUMPN T7,ERR2A ;[166] IF ANY NUMBERS WITH [-], ERROR
|
||
MOVE T7,[XWD JOBPTH,PTHADD] ;[207] COPY TO PATH AREA
|
||
BLT T7,PTHADD+PTHLEN+3 ;[207] COPY IT
|
||
GETMY1: PUSHJ P,GETBUF ;[166] SKIP - AND ANY BLANKS
|
||
CAIN 0," " ;[166]
|
||
JRST GETMY1 ;[166]
|
||
;**;[512] At GETMY1+3 change 1 line RLUSK 8-Apr-81
|
||
MOVEI T7,PTHADD ;[512] GET THE PATH ADDRESS
|
||
MOVEM T7,PP ;[211] AND SAVE IT FOR REFERENCE
|
||
JRST GETT11 ;[166] FORCE ] OR CRLF
|
||
>;[211] END IFN FTDSK
|
||
|
||
GETT9: PUSHJ P,GETNUM
|
||
CAIN 0,">" ;TERMINATE ON RIGHT BRKT ONLY
|
||
CAILE T7,777 ;PR. IN RANGE?
|
||
JRST ERR2A
|
||
ROT T7,-11
|
||
HLLOM T7,PR ;RHS=1'S MEANS <> SEEN (PR MAY BE 0)
|
||
JRST GETCOM
|
||
|
||
GETNUM: MOVEI T7,0 ;TO PICK UP P-P NUMBER
|
||
GETN1: PUSHJ P,GETBUF ;AND PROTECTION
|
||
CAIN 0," " ;IGNORE SPACES
|
||
JRST GETN1
|
||
CAIL 0,"0"
|
||
CAILE 0,"7"
|
||
POPJ P, ;GOT A NON-NUMERIC
|
||
MOVE T5,0
|
||
LSH T7,3
|
||
ADDI T7,-60(T5) ;PROCESS TO BINARY
|
||
JRST GETN1
|
||
GETT3: PUSHJ P,GETT5 ;PROCESS SWITCH CHARACTER
|
||
;**;[516] Change after GETT3 RLUSK 1-July-1981
|
||
CAIE 0,")" ;[516] CLOSING PAREN?
|
||
JRST GTT3.. ;[516] NO
|
||
TRZ FLAG,MTFLG ;[516] CLEAR MAGTAPE FLAG
|
||
JRST GETCOM ;YES
|
||
GTT3..: CAIN 0,"M" ;[516] MTA FLAG?
|
||
TRO FLAG,MTFLG ;SET MTA, LOOK FOR MULTI CHAR. SWITCH
|
||
CAIE 0,"#" ;MTA#
|
||
JRST GETT3 ;NO
|
||
TRNN FLAG,MTFLG ;ONLY LOOK AFTER # IF MTFLG IS ON.
|
||
JRST ERR6A ;I.E. IF MT SWITCH IS IN PROGRESS.
|
||
PUSHJ P,GETNUD ;GET A NUMBER
|
||
SKIPN T7 ;SKIP IF NOT EXPLICIT ZERO
|
||
SETO T7, ;MAKE IT DIFFERENT FROM DEFAULT ZERO
|
||
CAIE 0,"D" ;TERMINATED BY D?
|
||
CAIN 0,"A" ;TERMINATED BY A?
|
||
JRST GETT3A ;YES, MARK AB UPPER
|
||
CAIE 0,"P" ;ONLY A,D,P AND B CAN BE
|
||
CAIN 0,"B" ;PRECEDED BY #.
|
||
SKIP 1
|
||
JRST ERR6A
|
||
HRRM T7,AB ;NO. FILES/RECS TO ADVANCE
|
||
;GOES IN AB (RH)
|
||
GETT3B: PUSHJ P,GETT5A
|
||
JRST GETT3
|
||
|
||
GETT3A: HRLM T7,AB ;NO. FILES/RECS TO BACK SPACE
|
||
JRST GETT3B ;GOES IN AB (LH)
|
||
|
||
GETT6: PUSHJ P,GETT5 ;PROCESS ONE SWITCH CHAR
|
||
CAIE 0,"M"
|
||
CAIN 0,")" ;THESE ARE ILLEGAL 1-SWITCH CHARS.
|
||
JRST ERR6A
|
||
JRST GETCOM
|
||
|
||
GETNUD: MOVEI T7,0 ;GET A DECIMAL NUMBER
|
||
GETN2: PUSHJ P,GETBUF ;GET CHAR FROM COMMAND STRING
|
||
CAIN 0,SPACE ;SPACE?
|
||
JRST GETN2 ;YES, IGNORE
|
||
CAIL 0,"0" ;NUMBER?
|
||
CAILE 0,"9"
|
||
POPJ P, ;NO
|
||
IMULI T7,^D10 ;T7*10
|
||
ANDI 0,17 ;ADD ON LAST DIGIT
|
||
ADD T7,0 ;+ LOW 4 BITS
|
||
JRST GETN2
|
||
|
||
;GET NEXT COMMAND STRING CHAR(SWITCH),CHECK WITH TABLE,SET FLAGS
|
||
|
||
GETT5: PUSHJ P,GETBUF ;GET CHAR FROM COMMAND STRING
|
||
TRNN FLAG,MTFLG ;[340] IS THIS A MAG-TAPE SWITCH
|
||
TLNN AUXFLG,NOMORE ;[340] OR THE FIRST INPUT SPEC?
|
||
JRST GETT5A ;[340] YES
|
||
CAIE 0,"M" ;[340] NO, THEN ALL WE'LL TAKE
|
||
;[340] IS AN "M".
|
||
JRST ERR6C ;[340] BAD NEWS.
|
||
GETT5A: MOVE T2,[POINT 7,DISPTB,6] ;SET DISPTB NEXT SEARCH
|
||
MOVEI T6,MTAREQ ;SET MTAREQ NEXT SEARCH
|
||
|
||
TRNN FLAG,MTFLG ;SET UP TABLE TO SEARCH AND FLAG TO SET.
|
||
HRRI T2,DISPTA ;PUT IN BYTE POINTER, NOT MTA REQUEST
|
||
|
||
;SET TO LOOK AT NON-MTA LETTERS FIRST
|
||
|
||
TRNN FLAG,MTFLG ;IF MTFLG SET, START AT DISPTB AND STORE RESULT IN
|
||
MOVEI T6,AUXFLG ;MTAREQ, ELSE START AT DISPTA AND STORE RESULT IN
|
||
;AUXFLG OR FLAG
|
||
;GET FIRST CHAR DISPTA OR DISPTB, LOOK FOR MATCH, SET SWITCH FLAGS.
|
||
|
||
GETT7: LDB T3,T2 ;COMPARE WITH LEFT 7 BITS OF
|
||
JUMPE T3,ERR6A ;[340] IF END OF TABLE, IT'S AN ERROR.
|
||
|
||
GETT8: CAIN T3,1 ;END OF DISPTA 1ST HALF?
|
||
MOVEI T6,FLAG ;YES, SEARCH DISPTA 2ND HALF FROM NOW ON
|
||
CAIN T3,2 ;END OF DISPTA 2ND HALF?
|
||
JRST ERR6A ;SEARCHED TABLE 3, ERROR EXIT
|
||
CAME T3,0 ;MATCHING CHARACTER?
|
||
AOJA T2,GETT7 ;NO, GET NEXT SWITCH IN TABLE.
|
||
|
||
MOVE T5,(T2) ;YES, SET FLAG OR AUXFLG OR MTAREQ
|
||
TLZ T5,774000 ;[255] CLEAR THE SWITCH CHARACTER
|
||
ORM T5,(T6) ;FLAG OR AUXFLG
|
||
TRNE FLAG,MTFLG
|
||
ORM T5,AUX ;MTA REQUESTS SAVED IN AUX
|
||
IFE RIMSW,<
|
||
TLNE FLAG,RIMFLG
|
||
JRST RIMTB ;NO RIM IF RIMSW=0
|
||
> ;PRINT ERROR MESSAGE
|
||
POPJ P, ;EXIT ON MATCHING CHAR
|
||
|
||
;ROUTINE TO GET ONE TTY OR CCL COMMAND STRING CHAR INTO AC 0
|
||
|
||
GETTA:
|
||
IFN CCLSW,<
|
||
SKIPE COMFLG ;STORED COMMANDS?
|
||
JRST GETSC ;YES>
|
||
|
||
SOSLE TFI+2 ;SUBR TO GET ONE TTY CHAR IN AC 0
|
||
JRST GETT2 ;BUFFER NOT EMPTY
|
||
MOVE 0,TFI ;BUFFER EMPTY, SAVE
|
||
MOVE T5,TFO ;CURRENT BUFFER LOCS
|
||
PUSHJ P,INICON ;BUFFER EMPTY SO RE-ATTACH TTY
|
||
HRROM 0,TFI ;RESTORE OLD BUFFER LOCS
|
||
HRROM T5,TFO ;USE PREVIOUSLY ASSIGNED I/O BUF. FOR TTY
|
||
INPUT CON, ;GET THE NEXT LINE
|
||
MOVE T5,TFI+2 ;SAVE CHAR COUNT
|
||
RELEAS CON, ;LET GO OF TTY FOR USE AS IN-OUT DEVICE
|
||
MOVEM T5,TFI+2 ;RESTORE CHAR COUNT LOST DURING RELEASE
|
||
GETT2: ILDB 0,TFI+1 ;FETCH CHAR
|
||
GETT4: CAIE 0,ALT175 ;OLD ALTMODE?
|
||
CAIN 0,ALT176
|
||
MOVEI 0,ALTMOD ;YES,MAKE NEW ALTMOD
|
||
JUMPE 0,GETTA ;IGNORE NULL CHARS
|
||
CAIL 0,140 ;LOWER CASE?
|
||
TRZ 0,40 ;YES MAKE UPPER CASE?
|
||
CAIE 0,XON ;IGNORE XON,XOFF ONLY FOR
|
||
CAIN 0,XOFF ;TTY SERVICE TO SIGNAL TTY
|
||
JRST GETTA ;PTR READ IN MODE
|
||
CAIE 0,CZ ;[272] ^Z SHOULD EXIT PRONTO
|
||
POPJ P,
|
||
EXIT 1, ;[272] GO RIGHT AWAY
|
||
JRST PIP1 ;[272] BUT RESTART IF HE CONTINUES
|
||
|
||
;ROUTINE TO GET ONE TTY CHAR FROM COMBUF INTO AC0
|
||
|
||
GETBUF: IFN CCLSW,<
|
||
SKIPE COMFLG ;CCL COMMAND?
|
||
JRST GETSC ;YES, GET CHARS FROM DSK, CORE>
|
||
SOSGE COMCNT ;ANY CHARS LEFT?
|
||
JRST ERR6B ;NO, COMMAND ERROR
|
||
ILDB 0,COMPTR ;PICK UP CHAR FROM COMBUF
|
||
POPJ P,
|
||
|
||
;ROUTINE TO INITIALIZE THE TTY, ASCII LINE MODE
|
||
|
||
INICON: OPEN CON,[ ;[311] SUBR TO INITIALIZE THE TTY
|
||
EXP .IOASL ;[311]
|
||
SIXBIT /TTY/ ;[311]
|
||
XWD TFO,TFI];[311] TTY OUT/IN BUFFER HEADERS
|
||
EXIT ;IF TTY NOT AVAILABLE,FATAL.JOB DET?
|
||
POPJ P,
|
||
;GET 7 BIT ASCII CHARACTER - INPUT FROM CCL COMMAND FILE
|
||
|
||
IFN CCLSW,<GETSC:
|
||
IFN TEMP,<SKIPN TMPFLG ;IS TMPCOR UUO IN ACTION?
|
||
JRST GETTM1 ;NO CONTINUE AS USUAL
|
||
GETTM2: ILDB 0,TMPPNT ;PICK UP NEXT CHARACTER
|
||
HRRZ DOUT1,TMPPNT ;GET BYTE POINTER POISITION
|
||
CAML DOUT1,TMPEND ;HAS THE COMMAND FINISHED YET
|
||
JRST GETEND ;YES, EXIT
|
||
JRST GETT4 ;CHECK FOR ALTMODE,NULL,LOWER CASE
|
||
GETTM1: >
|
||
SOSLE CFI+2 ;ANY REMAINING?
|
||
JRST GETSC0 ;YES
|
||
IN COM,
|
||
JRST GETSC0 ;NO ERRORS
|
||
STATZ COM,IO.EOF ;END-OF-FILE
|
||
JRST GETEND ;YES
|
||
ERRPNT </Read error-CCL command file!/>
|
||
GETSC0: ILDB 0,CFI+1 ;GET A CHARACTER
|
||
MOVE DOUT1,@CFI+1 ;GET PRESENT WORD
|
||
TRNN DOUT1,1 ;IS IT A SEQUENCE NUMBER?
|
||
JRST GETT4 ;NO - CONTINUE
|
||
AOS CFI+1 ;YES - ADD 1 TO BYTE POINTER
|
||
MOVNI DOUT1,5 ;I.E. IGNORE SEQ. NO.
|
||
ADDM DOUT1,CFI+2 ;SUBTRACT 5 FROM COUNT FOR SEQ. NO.
|
||
JRST GETSC ;CONTINUE
|
||
|
||
GETEND:
|
||
IFN TEMP,<SKIPE TMPFLG ;TMPCOR
|
||
JRST GETEN3 ;YES>
|
||
SKIPN COMFLG ;CCL END OF CS?
|
||
JRST GETEN2 ;NO
|
||
GETEN1: CLOSE COM, ;NO, DSK FILE CCL
|
||
SETZ 0, ;DIRECTORY ENTRY FOR RENAME
|
||
HLRZ 1,CFILE+1 ;GET EXT
|
||
CAIN 1,'TMP' ;IF EXT IS TMP
|
||
RENAME COM,0 ;WIPE OUT COMMAND FILE
|
||
JFCL
|
||
RELEASE COM,0 >
|
||
GETEN2: SETOM COMEOF ;INDICATE END OF FILE
|
||
MOVEI 0,CZ ;NEEDED TO TERM CCL CS SCAN
|
||
POPJ P,
|
||
IFN TEMP,<
|
||
GETEN3: MOVE 1,[XWD .TCRDF,TMPFIL]
|
||
TMPCOR 1, ;READ AND DELETE
|
||
JFCL ;NOT FOUND
|
||
JRST GETEN2 ;CONTINUE>
|
||
;TABLE OF RECOGNIZED COMMAND LETTERS AND CORRESPONDING FLAG BITS
|
||
DEFINE DISP (A,B)
|
||
< XWD <"A">*4000,B>
|
||
;MAGTAPE SWITCHES AND FLAG BITS. TABLE 1 (MTAREQ)
|
||
DISPTB: DISP A,MTAFLG
|
||
DISP B,MTBFLG
|
||
DISP T,MTTFLG
|
||
DISP W,MTWFLG
|
||
;**;[510] Insert 2 lines after DISPTB+3 RLUSK 25-Feb-81
|
||
DISP 6,MT62FL ;[510] 6250 B.P.I. FLAG
|
||
DISP 1,MT16FL ;[510] 1600 B.P.I. FLAG
|
||
DISP 8,MT8FLG
|
||
DISP 5,MT5FLG
|
||
DISP 2,MT2FLG
|
||
DISP E,MTEFLG
|
||
DISP U,MTUFLG
|
||
DISP F,MTFFLG
|
||
DISP D,MTDFLG
|
||
DISP P,MTPFLG
|
||
DISP <)>,0 ;[340] END OF MAG-TAPE SWITCH.
|
||
DISP #,0
|
||
OCT 000000000000
|
||
;1ST BYTE 0=END OF DISPTB
|
||
;------------------------
|
||
;COMMAND STRING LETTERS AND FLAG BITS. TABLE 2 (AUXFLG)
|
||
DISPTA: XWD <"Q">*4000+QFLG,0
|
||
XWD <"E">*4000+CDRFLG,0
|
||
DISP F,FFLG
|
||
OCT 004000000000
|
||
;1ST BYTE 1=END OF DISPTA 1ST HALF
|
||
;------------------------
|
||
;COMMAND STRING LETTERS AND FLAG BITS. TABLE 3 (FLAG)
|
||
DISP A,LINE
|
||
DISP B,BMOD
|
||
DISP C,TBMOD
|
||
DISP D,DFLG
|
||
DISP L,LFLG
|
||
DISP M,0
|
||
DISP <)>,0
|
||
DISP N,NSMOD
|
||
DISP O,SQMOD+NSMOD+STS+OSFLG
|
||
XWD <"P">*4000+PFLG+PCONV,0
|
||
DISP R,RFLG
|
||
DISP S,SQMOD+NSMOD+STS+LINE ;[360]
|
||
DISP T,SPMOD
|
||
XWD <"V">*4000+CHKFLG,LINE
|
||
XWD <"W">*4000+WFLG,0
|
||
DISP X,XFLG
|
||
DISP Z,ZFLG
|
||
XWD <"U">*4000+OFLG,0
|
||
XWD <"Y">*4000+IBFLG+RIMFLG,0
|
||
XWD <"J">*4000+JFLG,0
|
||
XWD <"I">*4000+IFLG,0
|
||
XWD <"H">*4000+IBFLG,0
|
||
XWD <"G">*4000+GFLG,0
|
||
OCT 010000000000
|
||
;FIRST BYTE 2=END OF DISPTA 2ND HALF
|
||
SUBTTL COPYING INPUT A CHARACTER CHECKING LSN
|
||
|
||
;SUBR TO GET NEXT CHAR INTO AC CHR
|
||
;NO SKIP RETURN IS END OF FILE, SINGLE SKIP IS NORMAL RETURN
|
||
|
||
GET: TLNN FLAG,NEWFIL ;NEW FILE?
|
||
TLZN FLAG,PCONV+NEWFIL ;NO,CONVERT THIS CHAR?
|
||
JRST GETPC1 ;YES
|
||
LDB CHR,IBF+1 ;GET CHAR
|
||
CAIN CHR," " ;SPACE?
|
||
JRST GETPC2 ;YES, CONVERT TO LINE FEED
|
||
CAIG CHR,"3" ;IS THE CHAR A PROPER FORMAT CONTROL CHAR?
|
||
CAIGE CHR,"*"
|
||
JRST GETPC3 ;NO, SO OUTPUT LINE FEED FOLLOWED BY BAD CHAR
|
||
CAIG CHR,"." ;USE LEFT HALF OF TABLE?
|
||
SKIPA CHR,PCHTAB-<"*">(CHR)
|
||
MOVS CHR,PCHTAB-<"/">(CHR)
|
||
GETPC4: DPB CHR,IBF+1 ;CLOBBER OLD CHAR, USUALLY BECOMES NULL
|
||
;**;[513] At GETPC4+1 insert conditional code RLUSK 5-Jun-81
|
||
;[513] *** THIS PATCH IS HARDWARE DEPENDENT! ***
|
||
;[513] *** *** TEMPORARY PATCH ONLY! *** *** ***
|
||
IFN FTSMP,< ;[513] WE TOUCHED THE INPUT BUFFER AND
|
||
;[513] WE'RE RUNNING SMP. CLEAR THE WORD
|
||
;[513] OUT OF THE CACHE SO THE INPUT BUFFER
|
||
;[513] WON'T BE FOULED BY A CACHE SWEEP.
|
||
PUSH P,T1 ;[513] SAVE AN INPUT BUFFER
|
||
MOVE T1,IBF+1 ;[513] GET THE ADDRESS OF THE WORD WE TOUCHED
|
||
ANDI T1,777 ;[513] REDUCE ADDRESS TO OFFSET OF WORD IN PAGE
|
||
|
||
;[513] AT THIS POINT, WE ASSUME THAT THE WORD WE CHANGED IS IN THE CACHE.
|
||
;[513] THERE IS A POSSIBILITY THAT THE OTHER CPU MAY HAVE PUT NEW DATA
|
||
;[513] INTO THE INPUT BUFFER WE THINK WE'RE REFERENCING (IT'S REALLY IN
|
||
;[513] CACHE). IF A CACHE SWEEP OCCURRED, THE WORD WE TOUCHED WITH THE
|
||
;[513] "DPB" ABOVE WOULD BE WRITTEN BACK INTO A NEW BUFFER, TRASHING THE
|
||
;[513] DATA IN THE NEW BUFFER. THIS WILL BE CURED IN THE FUTURE BY REWRITING
|
||
;[513] THIS ROUTINE SO THAT IT DOES NOT WRITE INTO THE INPUT BUFFER, BUT NOW
|
||
;[513] WE FIX IT BY FLUSHING THE CHANGED WORD OUT OF THE CACHE.
|
||
;[513] THIS METHOD DEPENDS ON THE CACHE HOLDING ONLY 4 QUADWORDS
|
||
;[513] OF DATA HASHED BY THE LAST 9 BITS OF AN ADDRESS. IF WE GET FOUR OTHER
|
||
;[513] QUADWORDS WHICH HASH TO THIS LOCATION, WE CAN GUARANTEE THAT THE
|
||
;[513] LATEST DATA IS THROWN OUT OF THE CACHE. THUS, TO PREVENT TRASH,
|
||
;[513] WE INVOKE CACHE HASH CLASH.
|
||
|
||
CAM 400000(T1) ;[513] REFERENCE A WORD WITH SAME HASH
|
||
CAM 401000(T1) ;[513] AND ANOTHER
|
||
CAM 402000(T1) ;[513] AND ANOTHER
|
||
CAM 403000(T1) ;[513] AND ANOTHER
|
||
POP P,T1 ;[513] CACHE FLUSHED, RESTORE REGISTER>
|
||
|
||
LSH CHR,-7 ;BUT OTHERWISE BECOMES ANOTHER FORMAT CHAR
|
||
ANDI CHR,377 ;EXTRACT THE CHAR TO BE OUTPUT
|
||
TRZE CHR,200 ;=1 FOR GENERATING MULTIPLE LINE FEEDS
|
||
TLO FLAG,PCONV ;CONTINUE TO CONVERT
|
||
JUMPN CHR,CPOPJ1;OUTPUT THE GENERATED CHAR UNLESS NULL
|
||
POP P,(P) ;IGNORE NULL CHARS
|
||
JRST PSCAN4 ;DUMP THE LINE BUFFER
|
||
|
||
GETPC1: TRNN FLAG,SUS ;SUPPLYING SEQ. NUM. NOW?
|
||
JRST GET2 ;NO
|
||
ILDB CHR,PTRPT ;YES, SO GET CHAR OF SEQ NUM
|
||
JUMPN CHR,CPOPJ1 ;0 MARKS LAST CHAR
|
||
AOS LBUF ;[360] MAKE SURE THE BIT IS ON
|
||
LDB CHR,IBF+1 ;GET FIRST CHAR OF THIS LINE
|
||
CAIG CHR,15 ;PREPARE TO OUTPUT A CR,LF
|
||
CAIGE CHR,12 ;IS FIRST CHAR OF LINE AN END OF LINE CHAR?
|
||
JRST [TRNE CALFLG,SQNSN ;REPLACING OLD SQ. NUM.?
|
||
TRZA FLAG,ESQ ;YES, SO DON'T REPEAT CHAR.
|
||
MOVEI CHR,TAB ;NO, SO OUTPUT A TAB
|
||
JRST .+4] ;[361] SKIP RETURN
|
||
|
||
CAIN CHR,14 ;[361] FORM FEED?
|
||
JRST GETPM ;[361] THEN PUT A PAGE MARK
|
||
MOVEI CHR,TAB ;[170] ADD A TAB TO A NULL LINE
|
||
TRZ FLAG,SUS ;TURN OFF SUS SUPPLY
|
||
CAIE CHR,TAB ;[531][357] TAB?
|
||
;**;[534] Replace five lines at GETPC1+18 DRB 30-Jan-85
|
||
JRST [MOVNI 0,6 ;[534] NO, ACCOUNT FOR THE
|
||
ADDM 0,TABCT ;[534] LSN AND WHAREVER FOLLOWED
|
||
JRST CPOPJ1] ;[534] AND RETURN WITH THIS CHARACTER
|
||
TLZ FLAG,TBSN ;[534] SAY WE HAVEN'T SEEN THIS TAB BEFORE
|
||
JRST GETA5 ;[534] RESET THE TAB COUNTER AND RETURN
|
||
|
||
GET5: AOS IBF+1 ;HERE IF A SEQ NUM FOUND IN INBUFFER
|
||
TRO CALFLG,SQNSN ;SIGNAL SQ. NUM. SEEN
|
||
;**;[537] Insert at GET5+2 DRB 25-Feb-85
|
||
TLNE T2,(177B6) ;[537] ARE THERE LEADING
|
||
TLNN T2,(177B13) ;[537] NULLS IN THE SEQUENCE NUMBER?
|
||
;**;[546] Insert at GET5+4 DRB 13-Nov-85
|
||
TRNE AUXFLG,TTYOUT ;[546] YES, ARE WE OUTPUTTING TO A TERMINAL?
|
||
SKIPA ;[546] NO, YES - GO AHEAD
|
||
JRST ERR537 ;[537] YES. COMPLAIN LOUDLY
|
||
MOVNI T1,5 ;IGNORE SEQ NUM, AND DECREMENT CHAR COUNT
|
||
ADDB T1,IBF+2
|
||
SKIPL T1,IBF+2 ;[136] END OF BLOCK?
|
||
;**;[537] Replace 1 at GETJ-8 DRB 25-Feb-85
|
||
JRST [MOVE T1,@IBF+1 ;[537] NO. GET THE NEXT WORD
|
||
;**;[546] Insert at GETJ-10 DRB 13-nov-85
|
||
TRNN AUXFLG,TTYOUT ;[546] DON'T WORRY ABOUT IT IF TTY:
|
||
TRNN T1,1 ;[537] DOES IT LOOK LIKE AN LSN TOO?
|
||
JRST GETJ ;[537] NO. GO ON WITH IT THEN
|
||
JRST ERR537] ;[537] YES. REPORT AN ERROR
|
||
PUSHJ P,INP ;[136] YES, DO INPUT
|
||
TXNE IOS,IO.EOF ;[136] EOF?
|
||
POPJ P, ;[136] YES
|
||
TRNN FLAG,NSMOD ;[136] ARE WE REMOVING SEQ NUMS
|
||
JRST GETJ ;[136] NO
|
||
SOS T1,IBF+2 ;[136] STEP
|
||
ILDB CHR,IBF+1 ;[136]
|
||
GETJ: TRNE FLAG,NSMOD ;[136] REMOVE SEQ NUMS MODE?
|
||
JRST GET2A ;YES, SO GET NEXT CHAR
|
||
MOVEM T2,SQNUM ;SEQ NUM FROM BUFFER BECOMES NEW SEQ NUM
|
||
PUSHJ P,OUTLBF ;DUMP THE LINE BUFFER (IF REQUIRED)
|
||
TRON FLAG,STS+SNI ;TURN ON START OF LINE
|
||
;AND NO-INCREMENT SEQ NUM FLAG
|
||
PUSHJ P,CLRBUF ;CLEAR LBUF IF IN THE MIDDLE OF A LINE
|
||
|
||
JRST GET1 ;GET CHAR. AFTER SEQ. NUMBER
|
||
|
||
GET2A: LDB CHR,IBF+1 ;[325] GET THE CHARACTER FOLLOWING THE SEQ N
|
||
TRNN FLAG,SQMOD ;[325] IF RESEQUENCING COPY FIRST CHAR.
|
||
CAIE CHR,TAB ;[325] OR IF TAB DOESN'T FOLLOW SEQ N
|
||
JRST GET1 ;[325] COPY THE NEXT CHARACTER
|
||
GET2: TRZE FLAG,ESQ ;REPROCESS LAST CHAR?
|
||
JRST GET1 ;YES
|
||
SOSL T1,IBF+2 ;CHARS REMAINING IN INBUFFER?
|
||
JRST GET4 ;YES
|
||
PUSHJ P,INP ;NO, SO REFILL AND CHECK ERR BITS
|
||
TXNE IOS,IO.EOF ;END OF FILE? IOS HAS STATUS BITS
|
||
POPJ P, ;YES
|
||
JRST GET2 ;NO, SO PROCESS INBUFFER
|
||
|
||
GETPC3: TRO FLAG,ESQ ;REPROCESS BAD CHAR
|
||
TROA CHR,12*200 ;PRECEED BAD CHAR WITH LINE FEED
|
||
GETPC2: MOVEI CHR,12*200;CHANGE SPACE TO LINE FEED
|
||
JRST GETPC4
|
||
|
||
PCHTAB: XWD 24*200,23*200+"." ;/ *
|
||
XWD 212*200+" ",177*200 ;0 + VJC 4/16/49
|
||
XWD 14*200,21*200 ;1 ,
|
||
XWD 20*200,212*200+"0" ;2 -
|
||
XWD 13*200,22*200 ;3 .
|
||
|
||
GET4: ILDB CHR,IBF+1 ;FETCH CHAR FROM INBUFFER
|
||
TDNN FLAG,[XWD IFLG+IBFLG,BMOD] ;BIN, IB, I OR SBIN MODE?
|
||
TLNE AUXFLG,SBIN
|
||
JRST CPOPJ1 ;YES, SO NO PROCESSING REQUIRED
|
||
GET1: LDB CHR,IBF+1 ;AFTER SEQ NUM, HERE FOR 1ST CHAR
|
||
JUMPE CHR,GET2 ;IGNORE NULL CHARS
|
||
TLNE FLAG,WFLG ;CONVERTING TABS TO SPACES?
|
||
CAIE CHR,11 ;A TAB?
|
||
JRST GET1D ;NO
|
||
MOVEI CHR,40 ;YES, PREPARE A SPACE INSTEAD
|
||
TLZN FLAG,TBSN ;SEEN THIS TAB BEFORE?
|
||
JRST GET1B ;NO, THIS SPACE OUTPUT UNCONDITIONALLY
|
||
SKIPE T2,TABCT ;[343] YES, AT A TAB STOP
|
||
CAIN T2,TABSP ;[343] (AT EITHER END)?
|
||
JRST GET2 ;[343] YES, STOP CONVERSION & GET NEXT CHR.
|
||
JRST GET1B ;[373] NO, GO HANDLE NORMALLY.
|
||
GETPM: MOVE 0,[<BYTE(7) 40,40,40,40,40>+1] ;[361]
|
||
MOVEM 0,LBUF ;[361] USE A PAGE MARK INSTEAD OF A LSN
|
||
MOVEI CHR,15 ;[361] AND ADD A CR
|
||
TRO FLAG,SNI ;[361] DON'T SKIP A NUMBER
|
||
TRZ FLAG,SUS ;[361] DONE WITH THIS LSN
|
||
JRST CPOPJ1 ;[361] AND RETURN
|
||
GET1B: TDOA FLAG,[XWD TBSN,ESQ] ;[300] NO, SIGNAL REPROCESS THIS TAB
|
||
GET1D: TLZ FLAG,TBSN ;[300] WE HAVE SEEN SOMETHING ELSE THAN A TAB
|
||
CAIN CHR,LF ;IGNORE LINE FEED IN FORTRAN OUTPUT
|
||
TLNN FLAG,PFLG ;/P SWITCH IN EFFECT?
|
||
JRST GET1A ;NO
|
||
TLO FLAG,PCONV ;CONVERT THE NEXT LIVE CHAR
|
||
JRST GET2 ;GET NEXT CHAR
|
||
GET1A: MOVE T2,@IBF+1 ;BIT 35 OF BUFFER SET?
|
||
TRZE T2,1
|
||
JRST GET5 ;YES, THIS IS A SEQ NUM
|
||
TRZE FLAG,STS ;START SEQ (NEW LINE) FLAG ON?
|
||
TRNN FLAG,SQMOD+SNI ;YES, SEQ MODE OR SEQ COPY?
|
||
JRST GET7 ;NO, SO PROCESS CHAR
|
||
;**;[511] Insert one line after GET1A+5 RLUSK 13-MAR-81
|
||
TRO FLAG,LINE ;[511] SET LINE BLOCKING MODE FOR LSN'S
|
||
MOVE T2,SQNUM ;NO, SO ADD 10. TO SEQ NUM
|
||
MOVE T1,K1
|
||
TRNE FLAG,OSFLG ;TEST FOR INCR. BY ONE
|
||
MOVE T1,K4
|
||
ADD T2,T1 ;ASCII INCREMENT
|
||
AND T2,K3 ;MASK SIGNIFICANT DIGITS
|
||
MOVE T1,T2
|
||
AND T1,ZRO ;MASK CARRY BITS
|
||
ASH T1,-3
|
||
SUB T2,T1 ;ADJUST CARRIES
|
||
IOR T2,ZRO
|
||
TRZN FLAG,SNI ;NON-INCREMENT SEQ NUM FLAG ON?
|
||
MOVEM T2,SQNUM ;NO, SO SAVE THE RESULT
|
||
TRO FLAG,SUS+ESQ ;[342] TURN ON SUPPLY SEQ, REPROCESS
|
||
;LAST CHAR.
|
||
AOS LBUF ;SET BIT 35 IN LBUF TO MARK SEQ NUM
|
||
MOVE T1,[POINT 7,SQNUM]
|
||
MOVEM T1,PTRPT ;INITIALIZE SEQ NUM PICK-UP POINTER
|
||
PUSHJ P,OUTLBF ;[360] OUTPUT LINE AND
|
||
PUSHJ P,CLRBUF ;[360] CLEAR LINE SO LSN STARTS ON WORD
|
||
JRST GET ;GO OUTPUT FIRST CHAR OF SEQ NUM
|
||
|
||
SUBTTL INPUT
|
||
;ROUTINE TO INPUT INPUT FILE
|
||
|
||
INP: IN IN, ;INPUT DATA
|
||
JRST CPOPJZ ;NO ERRORS ,BUT CLEAR IOS JUST IN CASE
|
||
GETSTS IN,IOS ;CHECK INPUT ERR BITS
|
||
TRNN AUXFLG,MTAIN ;MTA INPUT?
|
||
TXNE IOS,IO.ERR ;ANY ERROR BITS SET?
|
||
TXNN IOS,IO.ERR+IO.EOT ;EOT FOR MTA?
|
||
POPJ P, ;NO
|
||
|
||
PUSHJ P,COMERR ;SAVE AC'S RELEASE TTY
|
||
JSP T5,INICN2 ;YES SO PRINT OUT COMPLETE FILE DESCRIPTOR
|
||
PUSHJ P,QUEST
|
||
ERRPN2 </Input device />
|
||
PUSHJ P,P6BIT
|
||
DEVICE
|
||
SKIPN ZRF ;IS THERE A FILE NAME
|
||
JRST .+4 ;NO,SO DON'T PRINT
|
||
ERRPN2 </: file />
|
||
MOVEI T3,ZRF ;LOC OF INPUT FILE NAME TO T3
|
||
PUSHJ P,FN.EX ;DEPOSIT FILE NAME, EXT INTO TTY OUT BUFFER
|
||
MOVE T2,AUXFLG
|
||
ANDI T2,CDRIN+DTAIN+DSKIN+MTAIN
|
||
PUSHJ P,IOERR ;GO PRINT ERROR DESCRIPTOR
|
||
SETSTS IN,(IOS)
|
||
POPJ P,
|
||
|
||
;ROUTINE TO TEST IF BLOCK TOO LARGE, OR WRITE LOCKED
|
||
|
||
QUEST: MOVEI CHR,"?" ;DEPOSIT "?" IN ERROR MSG
|
||
TLNN FLAG,GFLG ;ONLY IF /G NOT ON
|
||
JRST PUTCON ;/G NOT ON, PRINT ?(FATAL) BEFORE ERR MSG
|
||
|
||
TXNN IOS,IO.BKT ;BLOCK NO. TOO LARGE?
|
||
JRST QUEST2 ;NO
|
||
TRNN AUXFLG,DTAIN+DTAOUT ;YES
|
||
POPJ P, ;BLOCK TOO LARGE
|
||
|
||
JRST PUTCON ;DEPOSIT "?" FATAL EVEN IF /G ON
|
||
|
||
QUEST2: TXNE IOS,IO.IMP ;WRITE LOCKED?
|
||
TRNN AUXFLG,DTAIN+DTAOUT+MTAIN+MTAOUT+DSKOUT
|
||
POPJ P, ;NO
|
||
JRST PUTCON ;DEPOSIT "?" FATAL EVEN IF /G ON
|
||
|
||
SUBTTL TAB AND SPACE HANDLER
|
||
|
||
GET7: TLNE FLAG,PCONV ;CONVERTING FORTRAN CARRAIGE CONTROL CHAR?
|
||
JRST GET+1 ;YES, GO DO IT
|
||
AOS T1,CDRCNT
|
||
CAIN CHR,SPACE ;SPACE?
|
||
JRST GETA2 ;YES
|
||
CAIN CHR,CR ;CAR. RET.?
|
||
JRST GETA3 ;YES
|
||
TLNE AUXFLG,CDRFLG
|
||
JRST GET7B ;CARD READER INPUT
|
||
GET7C: TRZ FLAG,SPOK ;CHAR NOT A SPACE STOP COUNTING CONSEC. SPACES
|
||
CAIN CHR,TAB ;TAB?
|
||
JRST GETA5 ;KEEP TRACK OF TAB STOPS
|
||
CAIN CHR,10 ;BACKSPACE?
|
||
AOS TABCT ;YES, FIX THE COUNTER.
|
||
|
||
CAIG CHR,176 ;[154] ALLOW LOWER CASE & ESC TO COUNT
|
||
;[154] IN ADDITION TO NUMBERS, UPPER, ETC
|
||
CAIGE CHR,SPACE ;NON-SPACING CHARACTER?
|
||
JRST CPOPJ1 ;YES, SO RETURN IMMEDIATELY
|
||
SOSG TABCT ;COUNT DOWN THE TAB STOP COUNTER
|
||
JRST GETA5 ;RESET THE COUNTER IF TAB STOP IS PASSED
|
||
CPOPJ1: AOSA (P) ;SKIP RETURN
|
||
CPOPJZ: SETZ IOS, ;CLEAR IOS JUST IN CASE
|
||
CPOPJ: POPJ P,
|
||
|
||
|
||
GETA3: TRZE FLAG,SPOK ;CAR. RET. SEEN, ANY TRAILING SPACES?
|
||
TRNN FLAG,SPMOD+TBMOD ;YES, ARE WE FLUSHING TRAILING SPACES
|
||
JRST GETA5 ;NO, RESET TAB COUNTER ONLY
|
||
MOVE 0,SVPTR1
|
||
MOVEM 0,OPTR ;CLOBBER THE OUTPUT POINTER TO LBUF
|
||
;**;[530] AT GETA3: + 4L, INSERT 1L, KMR, 22-JUN-83
|
||
TLO FLAG,SPCNV ;[530]YES, WE JUST DUMPED A SPACE ON THE LINE
|
||
GETA5: MOVEI 0,TABSP
|
||
MOVEM 0,TABCT ;RESET THE TAB COUNTER
|
||
JRST CPOPJ1
|
||
GET7B: CAIG CHR,SPACE
|
||
JRST GET7C ;DON'T CONSIDER CONTROL CHARS.
|
||
CAIL T1,^D73 ;LT COL 73?
|
||
CAILE T1,^D80 ;NO, LE COL 80?
|
||
JRST GET7C ;CAN'T BE A CARD SEQUENCE NUMBER
|
||
MOVEI CHR,SPACE ;REPLACE CARD SEQUENCE NOS. BY SPACE
|
||
GETA2: TROE FLAG,SPOK ;SPACE WAS SEEN, IS THIS ONE OF A SEQUENCE?
|
||
JRST GETA7 ;YES
|
||
MOVE 0,OPTR ;THIS IS THE FIRST SPACE SEEN, SAVE LBUF
|
||
;POINTER IN CASE THIS SPACE MUST BE FLUSHED
|
||
MOVEM 0,SVPTR1 ;THIS POINTER FOR FLUSHING FINAL SPACES
|
||
MOVEM 0,SVPTR2 ;THIS POINTER FOR CHANGING MULT. SPACES TO TABS
|
||
SETZM SPCT ;INITIALIZE THE SPACE COUNTER
|
||
GETA7: AOS T1,SPCT
|
||
SOSLE TABCT ;ARE WE AT THE NEXT TAB STOP?
|
||
JRST CPOPJ1 ;NO
|
||
CAIL T1,2 ;DONT BOTHER CHANGING ONE SPACE TO A TAB
|
||
TRNN FLAG,TBMOD ;TAB GENERATING MODE?
|
||
JRST GETA5A ;NO, GO RESET TAB COUNTER
|
||
MOVE 0,SVPTR2
|
||
MOVEM 0,OPTR ;BACK UP THE OUTPUT POINTER OVER THE LAST
|
||
;GROUP OF SPACES
|
||
MOVEI CHR,TAB ;OUTPUT A TAB
|
||
SETZM SPCT ;RESET THE SPACE COUNTER
|
||
GETA5A: IBP SVPTR2 ;UPDATE THE CHANGE-SPACES-TO-TABS POINTER
|
||
JRST GETA5 ;RESET THE TAB COUNTER
|
||
|
||
SUBTTL ERROR MESSAGES (GENERAL)
|
||
;ERROR ROUTINES
|
||
|
||
IFN RIMSW,<
|
||
ERR8A: MOVEI T4,ERR382
|
||
JRST E10B
|
||
ERR3B: MOVEI T4,ERR381
|
||
JRST E10B>
|
||
|
||
ERR10: MOVEI T4,E10A
|
||
E10B: SKIPN ZRF
|
||
SKIP 3
|
||
ERRPNT </?File />
|
||
MOVEI T3,ZRF
|
||
PUSHJ P,FN.EX
|
||
JRST (T4)
|
||
|
||
IFN RIMSW,<
|
||
ERR381: ERRPN2 </illegal extension!/>
|
||
|
||
ERR382: ERRPN2 </illegal format!/>
|
||
|
||
ERR5B: ERRPN2 </? DTA to PTP only!/>>
|
||
|
||
ERR9: MOVEI T3,DTON
|
||
IFN FTDSK,<MOVEI T7,4 ;REALLY ERROR TYPE 4
|
||
SKIPE DTON ;UNLESS FILE NAME IS ZERO
|
||
JRST DERR4 ;NOT, SO USE DSK ERROR ROUTINES>
|
||
ERRPNT </?/>
|
||
PUSHJ P,FN.EX
|
||
IFE FTDSK,<SKIPN DTON ;SKIP IF NON-ZERO FILE NAME>
|
||
JRST ERR12 ;[316]
|
||
IFE FTDSK<ERRPNT </(4) rename file name already exists!/>>
|
||
ERR11: ;[211]
|
||
MOVE 0,DEVICE ;[227] GET SOURCE DEVICE NAME
|
||
CAMN 0,ODEV ;[227] ALLOW EXACTLY THE SAME
|
||
JRST DELE2 ;[227] EQUAL, CONTINUE /R/D
|
||
IFN FTDSK,< ;[211]
|
||
TLNN FL,DDEVSN ;[323] WAS THERE A DESTINATION DEVICE?
|
||
JRST [MOVEM 0,ODEV ;[323] NO, THEN JUST USE SOURCE
|
||
JRST DELE2] ;[323] AND OK IT
|
||
TRC AUXFLG,DSKIN!DSKOUT ;[323] ARE BOTH DEVICES DISK?
|
||
TRCE AUXFLG,DSKIN!DSKOUT ;[323]
|
||
JRST ERR11Z ;[323] NO, YOU LOSE
|
||
|
||
MOVE T1,DEVICE ;[323] DO DSKCHR'S ON BOTH DEVICES
|
||
MOVEM T1,INDCHR ;[323] TO FIND OUT WHETHER THEY ARE
|
||
MOVE T1,[XWD .DCUPN+1,INDCHR];[323] GENERIC AND TO SEE
|
||
DSKCHR T1, ;[323] WHAT STRUCTURE THEY ARE PART OF
|
||
JRST ERR11Z ;[323]
|
||
|
||
MOVE T2,ODEV ;[323] *NOTE* THIS MAKES LOGICAL NAMES,
|
||
MOVEM T2,OUDCHR ;[323] PHYSICAL NAMES, AND ANY OTHER
|
||
MOVE T2,[XWD .DCUPN+1,OUDCHR];[323] FALL RIGHT THROUGH
|
||
DSKCHR T2, ;[323] WELL, WOULD YOU BELIEVE
|
||
JRST ERR11Z ;[323] ALMOST?
|
||
|
||
LDB T1,[POINTR (T1,DC.TYP)];[323] ISOLATE ARGUMENT
|
||
LDB T2,[POINTR (T2,DC.TYP)];[323] TYPE BYTES
|
||
|
||
JUMPE T1,ERR11F ;[323] IF INPUT GENERIC, GO CHECK OUTPUT
|
||
CAIE T1,.DCTCN ;[323] IF INPUT IS CONTROLLER TYPE
|
||
CAIN T1,.DCTCC ;[323] OR CONTROLLER
|
||
JRST ERR11N ;[323] THEN CHECK SPECIALLY
|
||
JUMPE T2,DELE2 ;[323] IF OUTPUT ALSO GENERIC, THEN USE
|
||
;[323] INPUT DEVICE FOR OPENS
|
||
|
||
MOVE T1,T2 ;[323] COPY OUTPUT TYPE FOR ERR11P
|
||
CAIE T2,.DCTCN ;[323] IF OUTPUT IS DP OR DPA
|
||
CAIN T2,.DCTCC ;[323] THEN USE INPUT IF CONTROLLER MATCHES
|
||
JRST ERR11P ;[323] GO CHECK
|
||
|
||
MOVE T1,INDCHR+.DCSNM;[323] BOTH ARE SPECIFIC
|
||
CAME T1,OUDCHR+.DCSNM;[323] ARE THEY THE SAME STRUCTURE?
|
||
JRST ERR11Z ;[323] NO, LOSE
|
||
JRST DELE2 ;[323] OK, LET IT THROUGH USING INPUT DEVICE
|
||
|
||
ERR11F: JUMPE T2,DELE2 ;[323] INPUT IS GENERIC, IF OUTPUT
|
||
;[323] IS ALSO, USE INPUT
|
||
|
||
;HERE IF INPUT IS GENERIC AND OUTPUT IS NOT (OR NOT VERY IN THE CASE
|
||
; OF .DCTCN AND .DCTCC). WE WANT TO USE THE INPUT DEVICE'S SEARCH
|
||
; LIST (e.g. SYS) WHEN WE ARE DOING FILE STRUCTURE STUFF,
|
||
; BUT ONLY WANT TO FIND THE FILE ON THE DEVICE SPECIFIED BY THE
|
||
; NON-GENERIC OUTPUT SPEC. THIS CATCHES SUCH ABOMINATIONS AS:
|
||
; RPA:/R=SYS:FOO
|
||
; BTSS:/R=SYS:FOO
|
||
; CRC:/R=D:FOO
|
||
; OLDB:/R=ALL:FOO
|
||
|
||
MOVEI T1,.DCUPN ;[323] ASSUME .DCTCN OR .DCTCC AND
|
||
;[323] INDEX OFF PHYSICAL NAME
|
||
CAIN T2,.DCTCN ;[323] IF CONTROLLER TYPE
|
||
JRST [HRLOI T2,77 ;[323] COMPARE CONTROLLER TYPE
|
||
JRST ERR11G] ;[323]
|
||
CAIN T2,.DCTCC ;[323] IF CONTROLLER
|
||
JRST [HRLOI T2,0 ;[323] COMPARE CONTROLLER NAME
|
||
JRST ERR11G] ;[323]
|
||
MOVEI T1,.DCSNM ;[323] IT'S NEITHER, USE STRUCTURE NAME
|
||
SETZ T2, ;[323] AND COMPARE IT ALL
|
||
|
||
ERR11G: MOVE 0,OUDCHR(T1) ;[323] GET NAME TO COMPARE AGAINST
|
||
ANDCM 0,T2 ;[323] CLEAR UNWANTED CHARACTERS
|
||
MOVEM 0,RENDCH ;[323] SAVE NAME
|
||
MOVEM T1,RENDCH+1 ;[323] AND INDEX
|
||
MOVEM T2,RENDCH+2 ;[323] AND MASK
|
||
MOVE 0,DEVICE ;[323] RESTORE INPUT DEVICE FOR USE
|
||
JRST DELE2 ;[323] AND OK IT
|
||
|
||
; HERE WHEN INPUT DEVICE IS SEMI-GENERIC (.DCTCN OR .DCTCC)
|
||
; HAVE TO SPECIAL CASE THIS TO SEE IF DEVICES MATCH
|
||
|
||
ERR11N: JUMPE T2,DELE2 ;[323] IF OUTPUT GENERIC, USE INPUT
|
||
CAIN T2,.DCTCN ;[323] IF OUTPUT IS CONTROLLER TYPE
|
||
CAIE T1,.DCTCC ;[323] AND INPUT IS CONTROLLER
|
||
JRST ERR11O ;[323] NO
|
||
HLLZ T1,INDCHR+.DCUPN;[323] YES, THEN IF THEY ARE THE SAME
|
||
HLLZ T2,OUDCHR+.DCUPN;[323] TYPE, USE INPUT, IT'S MORE SPECIFIC
|
||
CAME T1,T2 ;[323] WELL?
|
||
JRST ERR11Z ;[323] NOT THE SAME, YOU LOSE
|
||
JRST DELE2 ;[323] THE SAME, YOU WIN WITH INPUT
|
||
|
||
ERR11O: MOVE 0,ODEV ;[323] USE OUTPUT DEVICE IF CONTROLLER MATCHES
|
||
;[323] NOTE, NO PROBLEM WITH SEARCH LISTS
|
||
;[323] SINCE ONLY GOT HERE WITH =DPA: OR =DP:
|
||
ERR11P: HLLZ T2,OUDCHR+.DCUPN;[323] OUTPUT IS SPECIFC OR .DCTCC
|
||
CAIN T1,.DCTCN ;[323] THEN THEY MUST MATCH TO
|
||
TLZ T2,77 ;[323] 2
|
||
HLLZ T1,INDCHR+.DCUPN;[323] OR
|
||
TLNN T2,77 ;[323] 3
|
||
TLZ T1,77 ;[323] CHARACTERS
|
||
CAME T1,T2 ;[323] DO THEY?
|
||
JRST ERR11Z ;[323] NO, LOSE
|
||
JRST DELE2 ;[323]
|
||
|
||
ERR11Z: ;[323] HERE FOR ERRORS
|
||
>;[211] END IFN FTDSK
|
||
ERRPNT </?Different source device specification not allowed!/> ;[227] /R OR /D
|
||
ERR12: ERRPNT </?Null file name illegal!/> ;[153] FIX .FOO
|
||
ERR13: ERRPNT <%?Wild card not allowed for /L or /F!%> ;[244]
|
||
ERR14: ERRPNT </?Wild cards not allowed for TSK:!/> ;[312]
|
||
ERR15: ERRPNT </?No directories on TSK:!/> ;[312]
|
||
ERR16: ERRPNT </?No DELETEs or RENAMEs on TSK:!/> ;[312]
|
||
ERR22: ERRPNT </?Wild Devices Illegal!/> ;[352]
|
||
ERR1: SKIPA T2,ODEV ;OUTPUT UNAVAILABLE
|
||
ERR1A: MOVE T2,DEVICE ;INPUT UNAVAILABLE
|
||
ERR1B: ERRPNT </?Device />
|
||
PUSHJ P,P6BIT
|
||
T2
|
||
ERRPN2 </ not available!/>
|
||
ERR3:
|
||
IFN FTDSK,<TRNE AUXFLG,DSKIN
|
||
JRST DERR5 ;ERR ON DSK>
|
||
PUSHJ P,ERR3A
|
||
JRST IOERRN ;EXIT
|
||
ERR3A: TLO AUXFLG,INFOFL ;SIGNAL RETURN TO ERR3AA
|
||
TRNE AUXFLG,TTYOUT ;[176] SEE IF OUTPUT IS TO TTY
|
||
CLOSE OUT, ;[176] YES, THEN PRINT BEFORE NEW INIT
|
||
JRST INFO
|
||
|
||
ERR3AA: TRNE FLAG,DFLG ;DELETING?
|
||
JRST ERR3AD ;YES, GIVE NON-FATAL MESSAGE
|
||
ERRPN2 </? /> ;NO, FATAL
|
||
ERR3AB: ERRPN2 </No file named />
|
||
ERR3AC: ;[177] LABEL FOR /L/F TO USE FOR NOT FOUND
|
||
IFN FTDSK,< ;[240]
|
||
PUSHJ P,P6BIT ;[211] GO PRINT DEVICE NAME
|
||
ADSK ;[211] FROM ADSK
|
||
MOVEI CHR,":" ;[211] WITH COLON
|
||
PUSHJ P,PUTCON ;[211]
|
||
>;[240] END IFN FTDSK
|
||
SKIPN T3,QMASK ;USING WILD CHAR. ?
|
||
JRST ERR3AX ;NO
|
||
ANDCAM T3,FILNAM ;CLEAR GARBAGE CHARS.
|
||
AND T3,['??????'] ;CREATE MASK OF ??S
|
||
IORB T3,FILNAM ;FILL IN FILE NAME
|
||
CAME T3,['??????'] ;BUT IF ALL CHARS ARE WILD
|
||
JRST ERR3AX ;NOT
|
||
MOVSI T3,'* ' ;USE *
|
||
MOVEM T3,FILNAM
|
||
ERR3AX: SKIPN T3,QMASK+1 ;SAME FOR EXT
|
||
JRST ERR3AY
|
||
ANDCAM T3,FILNAM+1
|
||
AND T3,['??????']
|
||
IORB T3,FILNAM+1
|
||
CAME T3,['??????'] ;BUT IF ALL CHARS ARE WILD
|
||
JRST ERR3AY ;NOT
|
||
MOVSI T3,'* ' ;USE *
|
||
MOVEM T3,FILNAM+1
|
||
ERR3AY: MOVEI T3,FILNAM
|
||
PUSHJ P,FN.EX ;PRINT NAME OF FILE THAT CANNOT BE FOUND
|
||
PUSHJ P,INFO2 ;OUTPUT MESS. WITH CR-LF
|
||
TRNN AUXFLG,TTYIN!TTYOUT ;WAS TTY IN USE?
|
||
POPJ P, ;NO
|
||
TRNE AUXFLG,TTYIN ;INPUT DEVICE?
|
||
JRST ININIT ;YES ,RE-INIT
|
||
JRST OMODE ;MUST BE OUTPUT
|
||
|
||
ERR3AD: ERRPN2 </% /> ;NON-FATAL
|
||
JRST ERR3AB ;AND COMMON MESSAGE
|
||
|
||
ERR4: SKIPN DTON
|
||
JRST ERR12 ;[316]
|
||
IFN FTDSK,<TRNE AUXFLG,DSKOUT ;ERR ON DSK
|
||
JRST DERR6>
|
||
ERRPNT </? Directory full!/>
|
||
|
||
ERR6: TLZ FLAG,TID ;[125] CLEAR ID REQUEST TO PREVENT LOOP
|
||
ERR6A: ERRPNX </?PIP command error!/>
|
||
|
||
ERR6B: ERRPNT </?PIP command too long!/>
|
||
|
||
ERR6C: PUSH P,0 ;[340] SAVE SWITCH
|
||
ERRPNX <\?/\> ;[340] START THE ERROR MESSAGE.
|
||
POP P,CHR ;[340] GET SWITCH BACK
|
||
PUSHJ P,PUTCON ;[340] TYPE THE SWITCH OUT
|
||
ERRPN2 </ TOO LATE IN COMMAND STRING!/> ;[340]
|
||
E10A: ERRPN2 </ line too long!/>
|
||
ERR5A: ERRPNT </?Too many input devices!/>
|
||
;FILE MANIPULATION COMMANDS TO NON-DIRECTORY DEVICES COME HERE
|
||
|
||
ERR5: ERRPNT </?Disk or DECtape input required!/>
|
||
ERR2: ERRPNX </?Incorrect Project-Programmer number!/>
|
||
ERR2A: ERRPNX </?Illegal protection!/>
|
||
;**;[507] Insert 1 line after ERR2A RLUSK 24-Feb-81
|
||
ERR2B: ERRPNX </?Wildcard SFDs are not supported!/> ;[507]
|
||
ERR7A: ERRPNT <Z?DECtape I/O only!Z>
|
||
|
||
ERR8: ERRPNT </?Explicit output device required!/>
|
||
;**;[501] Insert at ERR8+1 RLUSK 30-Oct-80
|
||
ERR501: PUSH P,0 ;[501] SAVE CHARACTER
|
||
ERRPNX </?Illegal character "/> ;[501]
|
||
POP P,0 ;[501] RECOVER CHAR.
|
||
MOVE CHR,0 ;[501] CHARACTER MUST BE IN CHR
|
||
PUSHJ P,PUTCON ;[501] PUT OUT THE CHARACTER
|
||
ERRPN2 </" following "*" in command!/> ;[501]
|
||
;**;[537] Insert at ERR501+6 DRB 25-Feb-85
|
||
ERR537: ERRPNT <\?Illegally formatted sequence number or binary file (use /B)!\>
|
||
|
||
|
||
SUBTTL DETERMINE INPUT DEVICE TYPE
|
||
|
||
;ROUTINE TO CHECK INPUT DEV, SET XXXIN.E.G.DTAIN
|
||
|
||
CHECK1: TRZ AUXFLG,DTAIN+DSKIN+CDRIN+PPTIN+TTYIN+MTAIN+NULIN ;[211]
|
||
TLZ FL,TSKIN ;[312] ALSO CLEAR TASK INPUT
|
||
MOVE 0,DEVICE ;INPUT DEVICE NAME TO AC 0
|
||
JUMPE 0,CHECK ;IGNORE IF NO INPUT DEVICE
|
||
IFN FTDSK,< ;[245]
|
||
MOVEM 0,ADSK ;[245] SAVE DEVICE FOR INIT AND ERRORS
|
||
>;[245] END IFN FTDSK
|
||
DEVCHR ;GET INPUT DEVCHR
|
||
IFN FTDSK,<TXNN 0,DV.DSK ;INPUT DEVICE DISK?
|
||
JRST CHECK2 ;NO
|
||
TRO AUXFLG,DSKIN;INPUT DEVICE IS DSK, SET BIT
|
||
TLC 0,-1-<(DV.TTA)> ;[211] CHECK FOR NULL
|
||
TLCN 0,-1-<(DV.TTA)> ;[211] BY LOOKING FOR ALL BITS ON
|
||
TRO AUXFLG,NULIN ;[211] IT IS NUL:
|
||
MOVE 0,DEVICE ;[163] GET DEVICE INTO 0 FOR PSYSP
|
||
PUSHJ P,PSYSP ;[163] GO CHECK ERSATZ
|
||
JRST CHECK
|
||
>;[163] END IFN FTDSK
|
||
|
||
CHECK2: JUMPE 0,DEVER1 ;NON-EX. DEVICE
|
||
|
||
TXNN 0,DV.IN ;CAN DEVICE DO INPUT?
|
||
JRST ERR6A ;NO, COMMD ERROR
|
||
|
||
TXNE 0,DV.PTR ;PAPER TAPE READER?
|
||
TRO AUXFLG,PPTIN;YES
|
||
|
||
TXNE 0,DV.DTA ;DECTAPE?
|
||
TRO AUXFLG,DTAIN
|
||
|
||
TXNE 0,DV.MTA ;MAGTAPE?
|
||
TRO AUXFLG, MTAIN
|
||
|
||
TXNE 0,DV.CDR ;CARD READER?
|
||
TRO AUXFLG,CDRIN
|
||
|
||
TXNE 0,DV.TTY ;TELETYPE?
|
||
TRO AUXFLG,TTYIN
|
||
|
||
CHECK: TRNE CALFLG,SSWTCH ;_FLAG STILL ON?
|
||
JRST ERR6A ; YES ,COMMAND ERROR
|
||
TRNE AUXFLG,DTAIN+DSKIN+CDRIN+PPTIN+TTYIN+MTAIN+TTYIN ;[312]
|
||
POPJ P, ; NO, RETURN
|
||
MOVE 0,DEVICE ;[312] GET INPUT DEVICE NAME
|
||
DEVTYP 0, ;[312] SEE IF IT IS TSK:
|
||
SETZ 0, ;[312]
|
||
TXZ 0,<-1-TY.DEV> ;[312] CLEAR RIGHT BITS
|
||
HRRZ 0,0 ;[312] AND LEFT
|
||
CAIN 0,.TYTSK ;[312] WELL, IS IT?
|
||
TLOA FL,TSKIN ;[312] YES
|
||
POPJ P, ;[312]
|
||
TRO AUXFLG,DSKIN ;[312] TSK:, SAY IT IS DISK ALSO
|
||
POPJ P, ;[312]
|
||
|
||
SUBTTL ERROR MESSAGE PRINTERS
|
||
;SUBR TO PRINT ERROR MESSAGES
|
||
;! MARKS THE END OF MESSAGE & SIGNALS GO TO PIP2
|
||
;NULL IS A FLAG TO RETURN TO THE NEXT LOCATION
|
||
|
||
PRETXT: IFN CCLSW,<
|
||
SKIPN COMFLG ;IN CCL MODE
|
||
JRST PTEXT ;NO, SO DON'T BOTHER
|
||
PRTXT1: PUSHJ P,GETBUF ;GET A CHAR.
|
||
CAIG 0,FF ;TEST FOR LF, VT, FF
|
||
CAIGE 0,LF
|
||
JRST PRTXT1 ;NOT A LINE TERMINATOR>
|
||
|
||
PTEXT: TRNE AUXFLG,TTYOUT ;[175] SEE IF OUTPUT DEVICE IS TTY
|
||
CLOSE OUT, ;[175] YES, THEN OUTPUT LAST BUFFER
|
||
JSP T5,INICN2 ;[175] GO INIT TTY ON CON
|
||
PUSHJ P,TCRLF ;OUTPUT A CR-LF
|
||
PTEXT2: HRLI T1,440700 ;GET SET TO SCAN 7-BIT DATA
|
||
PTEXT1: ILDB 0,T1 ;GET CHAR OF ERR MESSAGE
|
||
JUMPE 0,1(T1) ;RETURN ON ZERO
|
||
CAIN 0,"!" ;!?
|
||
JRST [TRZN CALFLG,RTRNFL ;FATAL
|
||
JRST IOERRN ;YES, END OF MESSAGE, APPEND CAR.RET., LF
|
||
JRST TCRLF] ;RETURN TO CALLING ROUTINE
|
||
IDPB 0,TFO+1 ;DEPOSIT CHAR IN OUTBUFFER
|
||
JRST PTEXT1 ;GET NEXT CHAR
|
||
|
||
;ROUTINE TO DEPOSIT CHARACTER IN TTY OUT BUFFER
|
||
|
||
PUTCON: SOSG TFO+2 ;STORED MORE THAN BUFFER HOLDS?
|
||
OUTPUT CON, ;YES
|
||
IDPB CHR,TFO+1
|
||
POPJ P,
|
||
|
||
;ROUTINE TO CONVERT ONE WORD OF SIXBIT
|
||
;FROM ADDRESS IN LOCATION AFTER CALL AND DEPOSIT INTO TTY OUT BUFFER
|
||
|
||
P6BIT: MOVE T1,@(P) ;PICK UP WORD OF 6-BIT
|
||
MOVE 0,(T1) ;[320] GET ACTUAL WORD
|
||
MOVSI T1,(POINT 6,0,5);[320] SET UP BYTE POINTER
|
||
P6BIT1: JUMPE 0,CPOPJ1 ;[320] EXIT WHEN NOTHING LEFT
|
||
LDB CHR,T1 ;[320] GET LEFT MOST BYTE
|
||
ADDI CHR,SPACE ;[320] CONVERT IT TO ASCII
|
||
PUSHJ P,PUTCON ;[320] TYPE IT OUT
|
||
LSH 0,6 ;[320] ON TO NEXT BYTE
|
||
JRST P6BIT1 ;[320]
|
||
|
||
SUBTTL DTA /Z AND ^^
|
||
;ROUTINE TO CLEAR DSK OR DTA DIRECTORY (/Z SWITCH)
|
||
|
||
DTCLR: TRNN CALFLG,DVSWTH ;HAS A DEVICE BEEN SEEN?
|
||
JRST ERR8 ;NO,SO DON'T SCREW USER
|
||
IFN FTDSK,<TRNE AUXFLG,DSKOUT ;CLEAR DSK OR DTA DIR.
|
||
JRST DSKZRO>
|
||
IFN TEMP,<TRNE CALFLG,TMPO ;TMPCOR
|
||
JRST TMPZRO>
|
||
TRNN AUXFLG,DTAOUT ;MUST BE DTA
|
||
JRST ERR5
|
||
UTPCLR OUT, ;CLEAR DIRECTORY
|
||
POPJ P,
|
||
|
||
;ROUTINE TO WRITE ID IN DTA
|
||
|
||
SYN QMASK,DDIOW ;SAVE SPACE
|
||
WRTID: MOVX 0,IO.NSD+.IODMP ;NON-STANDARD DUMP MODE
|
||
MOVEM 0,OMOD ;IN OPEN DATA
|
||
SETZM OMOD+2 ;NO BUFFERS
|
||
OPEN DD,OMOD ;INIT DEVICE
|
||
JRST ERR1 ;NOT AVAILABLE
|
||
USETI DD,144 ;SET ON DIRECTORY
|
||
HRRZ T1,.JBFF ;GET CURRENT TOP OF FREE CORE
|
||
ADDI T1,200 ;DIRECTORY BUFFER
|
||
CAMLE T1,.JBREL ;WILL IT FIT
|
||
JSP T4,MORCOR ;NO, GET SOME
|
||
SUBI T1,201 ;IOWD ADDRESS
|
||
HRLI T1,-200 ;NUMBER OF WORDS
|
||
MOVEM T1,DDIOW ;STORE I/O WORD
|
||
SETZM DDIOW+1 ;TERMINATE LIST
|
||
INPUT DD,DDIOW ;DO INPUT
|
||
MOVE 0,TAPEID ;GET ID
|
||
MOVEM 0,200(T1) ;PUT IT IN DIRECTORY
|
||
USETO DD,144 ;SET TO WRITE IT OUT
|
||
OUTPUT DD,DDIOW ;OUT IT GOES
|
||
RELEAS DD,0 ;CLEAR DIRECTORY IN CORE BIT
|
||
TLZ FLAG,TID ;[125] SO WE DON'T COME BACK TOO OFTEN
|
||
POPJ P,
|
||
|
||
SUBTTL /X COPY ROUTINES
|
||
;ROUTINE TO SET UP TO COPY EVERYTHING
|
||
|
||
PRECOP:IFN TEMP,<
|
||
TRNE CALFLG,TMPI!TMPO;[267] IS ANYTHING TMPCOR?
|
||
SKIPGE ESWTCH ;[267] IS THERE MORE THAN ONE FILE?
|
||
JRST .+2 ;[267] NO, IT'S OK
|
||
JRST TMPERR ;[267] OOPS
|
||
TRNE CALFLG,TMPI ;INPUT DEV. IS TMPCOR?
|
||
JRST TMPIN ;YES>
|
||
TRO CALFLG,FNEX ;/X IMPLIES MANY FILES
|
||
PUSHJ P,ININIT ;INIT INPUT FILE
|
||
TRNN AUXFLG,DTAIN ;DECTAPE INPUT
|
||
SKIP 2 ;NO
|
||
PUSHJ P,DTCH2 ;YES, GET DIRECT, SET POINTERS TO DIRECT
|
||
|
||
DTCOPY: PUSHJ P,DTADI1 ;START (T5)
|
||
IFN FTDSK,<
|
||
TRNN AUXFLG,NULIN ;[344] SKIP DIRECTORY READS FOR NUL:
|
||
TLNN FL,MFLG ;[130] NO NEED TO CALL DSKDIR IF
|
||
JRST COPY1A ;[130] EXPLICIT FILE NAME TYPED
|
||
TRNE FL,TSKIN ;[312] WAS THIS TASK INPUT?
|
||
JRST ERR14 ;[312] YES, NO WILD CARDS ALLOWED
|
||
TRNN AUXFLG,DSKIN ;DSK INPUT. ENTER HERE FROM DTD2
|
||
JRST COPY1A ;[367] NOT DISK INPUT, BE STRAIGHTFORWARD
|
||
TRNN AUXFLG,DSKOUT+DTAOUT ;[367] DIRECTORY OUTPUT?
|
||
PUSHJ P,INITFS ;[367] NO, INIT FILE STRUCTURES
|
||
JRST DTCOP2 ;[367] YES, BE SOMEWHAT STRAIGHTFORWARD
|
||
DTCOP1: PUSHJ P,NXTFSU ;[367] GET NEXT FS
|
||
JRST [TRNN AUXFLG,REDFLG ;[367] FOUND A FILE?
|
||
TLNN FL,MFLG ;[367] YES - EXPLICIT FILE?
|
||
SKIPA ;[367] YES
|
||
PUSHJ P,ERR3A ;[367] NO - ERROR
|
||
JRST MAIN1 ;[367] DONE
|
||
]
|
||
TROA CALFLG,FNEX ;[367] FLAG, AND SKIP DSKDIR
|
||
DTCOP2: PUSHJ P,DSKDIR ;YES, PREPARE TO LOOKUP FILES>
|
||
COPY1A: MOVEI T2,6 ;FILL 0 CHARS. IN DEST-FILE
|
||
MOVE T1,[POINT 6,DTON] ;NAME WITH X'S. THIS IS
|
||
TRNN FL,RXFLG ;TWO NAMES GIVEN?
|
||
JRST .+3 ;NO
|
||
MOVE 0,[FILNAM,,DTON] ;GET INPUT FILE NAME
|
||
BLT 0,DTON+1 ;AS OUTPUT
|
||
MOVE 0,QMASK ;GET INPUT MASK
|
||
ANDCAM 0,DTON ;AND CLEAR WILD CHARACTERS
|
||
HLLZ 0,QMASK+1 ;SAME FOR EXT
|
||
ANDCAM 0,DTON+1
|
||
XSS: ILDB 0,T1 ;THEN THE BASE FOR GENERATED
|
||
JUMPN 0,.+2 ;DESTINATION FILES FROM
|
||
MOVEI 0,"X"-40 ;NON-DIR. DEVICES IN /X
|
||
DPB 0,T1
|
||
SOJG T2,XSS ;DON'T YET KNOW IF ONE
|
||
;OF THE INPUT DEV. WILL BE NON-DIR
|
||
MOVE 0,[DTON,,DTONSV]
|
||
BLT 0,DTONSV+1
|
||
|
||
COPY1: PUSHJ P,SR2 ;SET INIT. COPYING MODE
|
||
PUSHJ P,LOOK ;GET A FILE TO COPY
|
||
JRST CAL6 ;NO MORE
|
||
IFN FTDSK<PUSHJ P,XDDSK ;GOT ONE, CHECK (XD) FROM DSK, NAMTAB
|
||
JRST COPY1 ;IN LIST, DON'T COPY>
|
||
TRNN AUXFLG,MTAIN+PPTIN+CDRIN+TTYIN ;OK, COPY FILE
|
||
JRST COPY6A ;MUST BE DIRECTORY DEVICE
|
||
PUSHJ P,MTPTCR ;SET UP A DEST. FN.
|
||
JRST COPY6
|
||
COPY6A:
|
||
IFN FTDSK,<PUSHJ P,SETPTH ;SEE IF FULL PATH
|
||
MOVEM 0,ZRFEX+.RBPPN ;[273] YES, USE IT>
|
||
MOVE T1,LEVEL ;[273] GET INDEX FOR LOOKUP
|
||
TRNN AUXFLG,DSKIN ;[273] IS THIS DISK
|
||
SETZ T1, ;[273] NO, DON'T DO EXTENDED
|
||
LOOKUP IN,ZRF(T1) ;[273] LOOKUP INPUT FILE NAME
|
||
JRST CAL5 ;INPUT FILE FILE PROTECTED
|
||
COPY6: TRO AUXFLG,REDFLG ;[367] FLAG READ-A-FILE
|
||
PUSHJ P,FILTYP ;CHECK FOR DMP,SAV,REL,CHN
|
||
TRNE CALFLG,TMPO ;[267] IS THIS TMP: OUTPUT?
|
||
JRST TMPOCK ;[267] YES, GO CHECK WILD CARDS
|
||
TRNN AUXFLG,DSKIN!DTAIN ;ALLOW NULL FILE ON DIRECTORY DEVICES
|
||
PUSHJ P,COPY3 ;INPUT FIRST BLOCK AND CHECK FOR EOF
|
||
COPY6B: MOVE 0,ZRF ;INPUT FILE NAME
|
||
MOVEM 0,DTON ;IS OUTPUT FILE NAME
|
||
HLLZ 0,ZRF+1 ;LIKEWISE EXT
|
||
HLLZM 0,DTON+1
|
||
|
||
;THIS CODE OPERATES AS FOLLOWS - FOR E+2, SET = 0
|
||
;TO START (ASSUMING /X)
|
||
;DSK TO DSK IF EDIT SWITCHES PUT E+2 = 0 IF NO EDITS TRANSFER
|
||
; DATE, TIME, BITS 13-35
|
||
;DSK TO DTA FOR EDITS E+2 = 0, NO EDITS TRANSFER 24-35 FOR
|
||
;DATE, FOR"SAV" FILES TRANSLATE NO. 1K BLOCKS
|
||
;DTA TO DSK FOR NO EDITS XFER BITS 24-35, ELSE E+2 = 0
|
||
;DTA TO DTA ALWAYS XFER 18-23, (1K BLOCK) NO EDITS XFER 24-35(DATE)
|
||
|
||
SETZM DTON+2 ;CLEAR DATE. OUTPUT FILE, DSK/DTA
|
||
LDB 0,DATE ;GET DSK/DTA DATE CREATED
|
||
TDNN FLAG,[XWD PFLG+WFLG,LINE+TBMOD+NSMOD+SQMOD+SPMOD]
|
||
TLNE AUXFLG,CDRFLG
|
||
JRST COPY6C
|
||
DPB 0,DATED ;DEPOSIT IF NO EDITS
|
||
LDB 0,XDATE ;[132] HIGH ORDER BITS OF DATE
|
||
DPB 0,XDATED ;[132] MUST BE COPIED ALSO
|
||
IFN FTDSK,<LDB 0,TIME
|
||
TRC AUXFLG,DSKIN+DSKOUT
|
||
TRCN AUXFLG,DSKIN+DSKOUT
|
||
DPB 0,TIMED ;DSK TO DSK TIME>
|
||
COPY6C: PUSHJ P,EXTENT ;[273] GO DO RIGHT KIND OF ENTER
|
||
HLRZ 0,ZRF+1 ;[312] GET FILE'S EXTENSION
|
||
CAIE 0,'UFD' ;[312] IS IT A UFD?
|
||
CAIN 0,'SFD' ;[312] OR AN SFD?
|
||
JRST COPY2A ;[312] YES, DON'T PUT ANY DATA IN IT
|
||
MOVE 0,ZRO ;GET ASCII/00000/AND
|
||
MOVEM 0,SQNUM ;RESET SEQUENCE NO.
|
||
TLO FLAG,NEWFIL ;SET NEW FILE FLAG
|
||
SETZM TOTBRK ;CLEAR PAREN COUNTER
|
||
TLNN AUXFLG,CDRFLG+SBIN ;SPECIAL PROCESSING?
|
||
TDNE FLAG,[XWD PFLG+WFLG+IFLG+IBFLG,LINE+BMOD+TBMOD+NSMOD+SQMOD+SPMOD]
|
||
JRST PSCAN ;YES, DO IT
|
||
TRNE AUXFLG,LPTOUT!TTYOUT
|
||
TLNE CALFLG,OSPLFL ;IS IT HARD COPY BUT NOT SPOOLED
|
||
JRST COPY5 ;NO
|
||
JRST PSCAN ;YES, MAKE SURE CONTROL CHARS. ARE HANDLED
|
||
|
||
COPY5: SOSGE IBF+2 ;INPUT BUFFER EMPTY?
|
||
JRST COPY4 ;YES
|
||
ILDB CHR,IBF+1 ;GET NEXT WORD AND
|
||
PUSHJ P,PUT ;OUTPUT IT
|
||
JRST COPY5
|
||
COPY4: PUSHJ P,COPY3 ;GET NEXT FULL SOURCE BLOCK
|
||
PUSHJ P,OUTP ;OUTPUT PREV. BLOCK-DONT ALTER DATA
|
||
AOS OBF+2 ;MAKE PUT HAPPY BECAUSE OF
|
||
JRST COPY5 ;OUTPUT HERE.
|
||
COPY2A: CLOSE IN,
|
||
IFN LEVELC,< ;[207]
|
||
SKIPL LEVEL ;[207] SEE IF LEVEL C
|
||
CLOSE OUT, ;[207] ONLY DO CLOSE IF LEVEL C
|
||
>;[207] END IFN LEVELC
|
||
IFN FTDSK,<TLNE AUXFLG,NSPROT ;NON-STANDARD PROTECTION?
|
||
TRNN AUXFLG,DSKOUT ;RENAME ALL OUTPUT FILES IF
|
||
JRST COPY2B ;NON-STANDARD PROTECTION
|
||
LDB 0,PRPTL ;GET NEW PROTECTION
|
||
IFN LEVELC,< ;[322]
|
||
SKIPE LEVEL ;IF LEVEL D
|
||
>;[322] END IFN LEVELC
|
||
JUMPN 0,COPY2B ;AND NOT ZERO, DONE ALREADY
|
||
DPB 0,PRPTD
|
||
IFE LEVELC,< ;[207]
|
||
SETZM DTONEX+.RBPPN ;[273][207] CLEAR PPN FOR LEVEL D
|
||
SETZM DTONEX+.RBALC ;[336] JUST IN CASE
|
||
>;[207] END IFE LEVELC
|
||
RENAME OUT,DTONEX ;[273] RENAME OUTPUT FILE
|
||
JRST DERR6
|
||
IFE LEVELC,< ;[207]
|
||
SKIPA ;[207] SKIP CLOSE
|
||
>;[207] END IFE LEVELC
|
||
>;[207] END IFN FTDSK
|
||
COPY2B: ;[207]
|
||
IFE LEVELC,< ;[207]
|
||
CLOSE OUT, ;[207] CLOSE OUT IF NO RENAME
|
||
>;[207] END IFE LEVELC
|
||
PUSHJ P,OUTP1 ;[207]
|
||
JRST COPY1 ;GO GET NEXT FILE
|
||
|
||
IFE FTDSK,<SYN COPY1,CAL5>
|
||
IFN FTDSK,<
|
||
CAL5: PUSHJ P,DERR5R ;PRINT DSK ERROR TYPE
|
||
JRST COPY1 ;COUNT READ FAILURES>
|
||
|
||
;NO MORE FILES TO COPY
|
||
|
||
CAL6:
|
||
IFN FTDSK,< ;[367]
|
||
TRNE AUXFLG,DSKIN ;[367] DISK INPUT?
|
||
TRNE AUXFLG,DSKOUT+DTAOUT ;[367] AND NON-DIR OUTPUT?
|
||
SKIPA ;[367] NO
|
||
JRST DTCOP1 ;[367] YES - GO DO MORE STRUCTURES
|
||
>
|
||
TLZ AUXFLG,NSPROT
|
||
JRST MAIN1
|
||
|
||
COPY3B: SKIPE IBF+2 ;EMPTY BLOCK?
|
||
POPJ P, ;NO, RETURN
|
||
|
||
COPY3: PUSHJ P,INP ;READ NEXT BLOCK
|
||
TRZE AUXFLG,READ1
|
||
PUSHJ P,TTYZ ;END OF FILE FROM TTY?
|
||
TXNN IOS,IO.EOF ;END OF FILE? IOS HAS STATUS BITS
|
||
JRST COPY3B ;NO.
|
||
POP P,0 ;CLEAR ITEM FROM STACK
|
||
HRRZS 0 ;ADDRESS ONLY
|
||
TRNN AUXFLG,DSKIN!DTAIN ;ALLOW NULL FILE FOR THESE ONLY
|
||
CAIE 0,COPY6B ;DID WE COME FROM COPY6B-1?
|
||
JRST COPY2A ;NO, CLOSE OUT FILES
|
||
TRZ CALFLG,ALLCLF ;YES, END OF INFO ON NON-DIR DEVICE
|
||
JRST COPY1
|
||
|
||
;CREATE DESTINATION FILE NAME. RANGE IS ...001 TO ...999
|
||
|
||
MTPTCR: TRNN FL,RXFLG ;[304] OUTPUT NAME SEEN?
|
||
JRST MPC1 ;[304] NO, GENERATE XXXnnn
|
||
HLRZ T1,MATCH ;[304] YES, GET LEFT PART OF OUTPUT NAME
|
||
TRNN T1,7700 ;[304] ONE CHARACTER?
|
||
TLOA T1,7700 ;[304] YES, CHANGE MASK TO USE xXX
|
||
TRNN T1,77 ;[304] TWO CHARACTERS?
|
||
TLO T1,77 ;[304] YES, CHANGE MASK TO USE xxX
|
||
IOR T1,OQMASK ;[304] OR IN ANY WILD CHARS FROM MASK - X'S IN RESULT
|
||
HLLOM T1,OQMASK ;[304] UPDATE MASK
|
||
MPC1: ;[304]
|
||
AOS T1,NO.
|
||
CAILE T1,^D999
|
||
JRST MPC2
|
||
PUSHJ P,MTPTC1
|
||
MOVE 0,[DTONSV,,ZRF] ;FILNAM=DTON IS ONLY WAY TO IDENTIFY
|
||
BLT 0,ZRF+1 ;INPUT FILE
|
||
POPJ P,
|
||
|
||
MPC2: ERRPNT <Z?Terminate /X, max. of 999 files processed!Z>
|
||
|
||
MTPTC1: MOVEI DOUT,^D1000(T1)
|
||
MOVE T1,[POINT 6,DTONSV,17]
|
||
JSP T2,OUTDC1
|
||
AOJA T2,CPOPJ
|
||
SUBI CHR,40
|
||
IDPB CHR,T1
|
||
POPJ P,
|
||
|
||
;ROUTINE TO RESTORE BYTE POINTERS TO INITED MODE
|
||
;FOR INPUT AND OUTPUT DEVICES
|
||
|
||
SR2: MOVE 0,SVIBF
|
||
HLLM 0,IBF+1
|
||
MOVE 0,SVOBF
|
||
HLLM 0,OBF+1
|
||
POPJ P,
|
||
|
||
;ROUTINE TO SEE IF ^Z FIRST CHAR ON TTY
|
||
|
||
TTYZ: TRNN AUXFLG,TTYIN ;SEE IF FIRST CHAR. IS ^Z
|
||
POPJ P, ;NOT TTY INPUT
|
||
HRRZ T1,IBF+1 ;ON TTY
|
||
HLRZ 0,1(T1) ;GET FIRST CHARACTER
|
||
TRZ 0,3777 ;CLEAR ANY OTHER CHAR.
|
||
CAIN 0,(<CZ>B6) ;IS IT ^Z?
|
||
TXOA IOS,IO.EOF ;YES,SET END OF FILE
|
||
CAIE 0,(<XON>B6) ;IS IT XON "^Q"
|
||
POPJ P, ;NO
|
||
MOVSI 0,(<DEL>B6) ;A RUBOUT
|
||
IORM 1(T1) ;CLEAR "^Q" FROM BUFFER
|
||
POPJ P, ;AND RETURN
|
||
|
||
;DTA TO DTA MAINTAIN BITS 18-23 OF E+2 IF SET
|
||
;DSK TO DSK NO TRANSLATION (E+2)
|
||
;DSK TO DTA TRANSLATE E+3 (LHS) INTO E+2 (18-23)
|
||
;DTA TO DSK NO TRANSLATION (E+2)
|
||
;THIS ROUTINE ENSURES "SAVE" FILES MAINTAIN
|
||
;CORRECT DATA FOR LOADING. FOR DSK INPUT
|
||
;A "SAVE" FILE IS ONE WITH THE EXTENSION
|
||
;"SAV". E+3 = (-[(200XN)+NO. WDS IN LAST BLOCK]
|
||
;IN LHS TRANSLATE TO NO. 1K BLOCKS NEEDED
|
||
;TO LOAD FILE - BEFORE IT IS EXPANDED IN CORE.
|
||
|
||
OKBLKS: TRNN CALFLG,RXFLG ;(RX)?
|
||
JRST OKBLK0 ;NO
|
||
MOVE 0,MATCH ;GET FILE NAME
|
||
HLRZ T1,MATCH+1 ;AND EXT.
|
||
MOVEM 0,DTON ;REPLACE NAME
|
||
HRLM T1,DTON+1
|
||
SKIPN T1,OQMASK ;WILD CARD OUTPUT
|
||
JRST .+4 ;NO
|
||
ANDCAM T1,DTON ;CLEAR OUT MASK CHARS
|
||
AND T1,ZRF ;GET SUBSTITUTE ONES
|
||
ORM T1,DTON ;PUT THEM IN
|
||
HLLZ T1,OQMASK+1 ;TRY EXT
|
||
JUMPE T1,.+4 ;NO
|
||
ANDCAM T1,DTON+1 ;SAME AS ABOVE
|
||
AND T1,ZRF+1
|
||
ORM T1,DTON+1
|
||
OKBLK0: MOVE 0,DTON ;GET OUTPUT FILE NAME
|
||
HLRZ T1,DTON+1 ;AND EXT
|
||
CAIE T1,'SAV' ;SAV FILE?
|
||
CAIN T1,'SVE' ;OR SVE (SPMON) FILE?
|
||
TRNN AUXFLG,DTAOUT ;AND OUTPUT TO DTA?
|
||
SKIP 1 ;NO
|
||
UGETF OUT,0 ;SET TO FIRST FREE BLOCK
|
||
|
||
IFN FTDSK,<TRC AUXFLG,DSKIN+DSKOUT ;DSK I/O
|
||
TRCN AUXFLG,DSKIN+DSKOUT
|
||
POPJ P, ;YES, EXIT
|
||
TRC AUXFLG,DTAIN+DTAOUT ;NO
|
||
TRCE AUXFLG,DTAIN+DTAOUT ;DTA I/O
|
||
JRST OKBLK1 ;NO>
|
||
LDB 0,OKB ;DTA I/O - 1K BLKS
|
||
DPB 0,OKBD ;DEPOSIT IN DTON
|
||
POPJ P,
|
||
|
||
|
||
IFN FTDSK,<
|
||
OKBLK1: TRC AUXFLG,DTAIN+DSKOUT ;DTA-TO-DSK
|
||
TRCN AUXFLG,DTAIN+DSKOUT
|
||
POPJ P, ;YES
|
||
TRC AUXFLG,DSKIN+DTAOUT ;NO,DSK-TO-DTA?
|
||
TRCE AUXFLG,DSKIN+DTAOUT ;NO
|
||
POPJ P,
|
||
HLRZ 0,ZRF+1 ;YES DSK-TO-DTA
|
||
CAIE 0,'SAV' ;GET LOOKED UP EXT,(INPUT).
|
||
CAIN 0,'SVE'
|
||
SKIP 1
|
||
POPJ P,
|
||
HLRO T1,ZRF+3 ;EXTENSION=SAV
|
||
MOVNS T1 ;WORD COUNT
|
||
IDIVI T1,2000 ;DIVIDE BY 1K CORE(OCTAL LOCS.)
|
||
JUMPN T2,.+2
|
||
SOJ T1, ;N-1
|
||
DPB T1,OKBD
|
||
POPJ P,>
|
||
|
||
SUBTTL /X/D COPY EXCEPT ROUTINE
|
||
|
||
IFN FTDSK,<
|
||
;ARE WE DOING (XD) FROM DSK? IF NOT, EXIT.
|
||
;SEE IF CURRENT FILE SELECTED IN ZRF IS IN THE
|
||
;LIST OF FILES NOT TO BE COPIED. (POPJ IF IT IS)
|
||
|
||
XDDSK: TRC FLAG,XFLG+DFLG ;COMPLEMENT
|
||
TRCN FLAG,XFLG+DFLG ;RESET AND TEST
|
||
TRNN AUXFLG,DSKIN ;/X AND /D WERE SET
|
||
JRST CPOPJ1 ;NOT DSKIN SO COPY FILE
|
||
HRROI T1,-12 ;SET TO LOOP NAMTAB
|
||
XDDSK2: MOVE T2,ZRF ;GET FILE NAME
|
||
SKIPN T3,NAMTAB+12(T1) ;END OF TABLE ENTRIES?
|
||
JRST CPOPJ1 ;YES, EXIT
|
||
IOR T2,NAMASK+12(T1) ;[124] MASK OUT WILD CHARS
|
||
CAME T2,T3 ;FN IS * OR MATCH?
|
||
JRST XDDSK1 ;NO MATCH
|
||
HLLZ T2,ZRF+1 ;GET EXT
|
||
SKIPN T3,NAMTAB+24(T1) ;NO EXT MATCH WANTED
|
||
POPJ P, ;EXIT THEN
|
||
IOR T2,NAMASK+24(T1) ;[124] MASK OUT WILD CHARS
|
||
CAMN T2,T3 ;EXT IS * OR MATCH?
|
||
POPJ P, ;FN EX MATCH, NO COPY
|
||
|
||
XDDSK1: AOJL T1,XDDSK2 ;TRY ANOTHER FOR MATCH
|
||
JRST CPOPJ1 ;SEARCHED TABLE, NO MATCH>
|
||
|
||
SUBTTL SET UP THE MULTIPLE NAME MATCHING TABLE
|
||
|
||
;ROUTINE TO DELETE OR RENAME FILES ON DTA OR DSK OR SET UP NAMTAB
|
||
;FOR (DX) (DISK ONLY)
|
||
|
||
DTDELE: IFN TEMP,<
|
||
TRNE CALFLG,TMPO ;TMPCOR
|
||
JRST TMPDEL ;YES>
|
||
TRNE FLAG,XFLG ;/X
|
||
JRST DELE1 ;YES
|
||
TRNN FLAG,DFLG ;/D NEED EXPLICIT DEVICE
|
||
SKIP 2
|
||
TRNN CALFLG,DVSWTH ;-1 IF DEVICE SEEN
|
||
JRST ERR8 ;NO, ERROR
|
||
TLZE FL,SDEVSN ;[152] SEE IF WE SAW A SOURCE DEVICE
|
||
JRST ERR11 ;[152] YES, DON'T ALLOW THAT
|
||
MOVE 0,ODEV ;OUTPUT DEVICE
|
||
|
||
DELE2: ;[211] RETURN IF =SYS:
|
||
MOVEM 0,DEVICE ;NO,SET DEVICE FOR INPUT
|
||
MOVEM 0,DEVA
|
||
DELE1: PUSHJ P,CHECK1 ;RESET INPUT DEVICE DESCRP
|
||
MOVE 0,[DTON,,NAMTAB] ;FOR /R GET NEW NAME
|
||
;SET TO BLT OUTPUT DIRECT ENTRY
|
||
BLT 0,NAMTAB+3 ;TO NAMTAB
|
||
|
||
TRNN AUXFLG,DTAIN+DSKIN
|
||
JRST ERR5 ;NOT DTA OR DSK
|
||
PUSHJ P,FNSET ;SET UP CALFLG CORRECTLY
|
||
TRNE FLAG,XFLG ;/X?
|
||
JRST DTD1 ;YES, (DX). RX ILLEGAL
|
||
IFN FTDSK,<TRNE AUXFLG,DSKOUT ;NO, HAS TO BE /D OR /R
|
||
JRST DSKDR0 ;ON DSK>
|
||
JRST DTADR ;OR DTA
|
||
|
||
DTD1:
|
||
IFN FTDSK,<TRNE AUXFLG,DSKIN ;DSK INPUT?
|
||
JRST DTD1A ;YES>
|
||
PUSHJ P,DTCHECK ;NO, HAS TO BE DTA, GET DIR
|
||
JRST DELE3 ;DELETE, FILES FROM DIR
|
||
IFN FTDSK,<
|
||
DTD1A: SETZM NAMTAB ;COLLECT NAMES FOR DX, DSK SOURCE
|
||
MOVE T1,[XWD NAMTAB,NAMTAB+1]
|
||
HLRZM T1,LOCNAM ;[124] SAVE TABLE LOCATION
|
||
BLT T1,NAMTAB+23 ;[124] FIRST CLEAR TABLE
|
||
SETZM NAMASK ;[124]
|
||
MOVE T1,[NAMASK,,NAMASK+1] ;[124]
|
||
HLRZM T1,LOCMSK ;[124]
|
||
BLT T1,NAMASK+23 ;[124] AND MASK TABLE
|
||
DTD4: MOVE 0,FILNAM
|
||
JUMPE 0,DTD4A ;FN=0 ILLEGAL
|
||
MOVE T1,LOCNAM
|
||
MOVEM 0,(T1) ;STORE FILENAME FROM CS
|
||
MOVE 0,FILEX ;STORE FILE EXT
|
||
MOVEM 0,12(T1) ;TABLE FULL?
|
||
MOVE 0,QMASK ;[124]
|
||
MOVE T2,LOCMSK ;[124] CORRESPONDING MASK
|
||
MOVEM 0,(T2) ;[124] FOR FILENAME
|
||
HLLZ 0,QMASK+1 ;[124]
|
||
MOVEM 0,12(T2) ;[124] FOR EXTENSION
|
||
MOVEI T2,NAMTAB+11
|
||
CAMN T2,T1
|
||
SOS ESWTCH ;YES
|
||
SKIPE ESWTCH ;NO, END OF CS SCAN?
|
||
JRST DTD2 ;END OF NAME PROCESSING
|
||
AOS LOCMSK ;[124] POINT TO NEXT MASK ENTRY
|
||
AOSA T1,LOCNAM ;SET TO STORE IN NEXT SLOT NAMTAB
|
||
DTD4A: PUSHJ P,ERR3A
|
||
DTD4B: PUSHJ P,DESCRP ;NO, GET NEXT FILENAME FROM CS
|
||
TRNE CALFLG,NEWPP!NEWDEV
|
||
JRST ERR5A ;ERROR, NEW DEV OR# PP
|
||
JRST DTD4
|
||
|
||
;END OF CS OR NAMTAB FULL
|
||
DTD2: PUSHJ P,ININIT ;INIT INPUT FILE
|
||
MOVEI T1,1 ;SET TO RETURN DTCOPY+1
|
||
JRST DTD5>
|
||
|
||
SUBTTL DELETE OR RENAME FOR DECTAPE
|
||
|
||
;ROUTINE TO DELETE OR RENAME FILES ON DTA
|
||
|
||
DTADR: PUSHJ P,DTCHECK ;GO GET DTA DIRECTORY
|
||
MOVE T1,IBF ;CURRENT INPUT BUFFER
|
||
USETO OUT,144 ;THIS SHOULD GIVE ERROR MSG
|
||
OUTPUT OUT,(T1) ;IF DTA WRITE LOCKED
|
||
PUSHJ P,DTCHECK ;GO GET DTA DIRECTORY
|
||
|
||
PUSHJ P,INFO ;WRITE "FILES DELETED/RENAME
|
||
|
||
;*********************************************************************
|
||
|
||
|
||
;LOOP TO DELETE/RENAME. FOR (DX) DELETE FILES FROM DTA DIR
|
||
;THEN USE REVISED DIRECTORY TO COPY ALL REMAINING FILES
|
||
|
||
|
||
DELE3: PUSHJ P,LOOK ;GET FILE TO DELETE OR RENAME FROM CS
|
||
JRST DELE5 ;NO MORE FILES
|
||
TRNN FLAG,XFLG ;/X?
|
||
PUSHJ P,INFO3 ;PRINT FILENAME-EXT
|
||
MOVE T1,DIRST ;GOT A MATCH - PROCESS IT
|
||
TRNE FLAG,RFLG ;AND IT IS AT (T5) IN (DTA) DIR
|
||
JRST DTRNAM ;RENAME
|
||
SETZM (T1) ;DELETE FILENAME IN CORE DIRECT
|
||
SETZM 26(T1) ;DELETE EXT
|
||
TRNE FLAG,XFLG ;(DX)?
|
||
JRST DELE3 ;YES, DON'T ACTUALLY DELETE FILE FROM TAPE
|
||
LOOKUP OUT,ZRF ;DO LOOKUP
|
||
JRST DELE3 ;SHOULD NEVER FAIL
|
||
SETZM DTON ;SET NAME TO ZERO
|
||
DELE4: RENAME OUT,DTON ;GET RID OF IT
|
||
JRST ERR9 ;SHOULD NEVER HAPPEN EITHER
|
||
JRST DELE3 ;GET NEXT FILE NAME
|
||
|
||
DELE5: MOVE T1,IBF ;LOC OF INPUT BUFFER
|
||
TRNE FLAG,XFLG ;DX SWITCH?
|
||
JRST DTD6 ;YES, NOW MUST COPY REMAINING FILES
|
||
RELEAS CON, ;OUTPUT DELETE OR RENAME INFO TO TTY
|
||
JRST MAINB
|
||
|
||
;ROUTINE TO RENAME FILE ON DECTAPE
|
||
|
||
DTRNAM: PUSHJ P,RENAME ;SET UP FILE NAME
|
||
SETZM DTON+3 ;
|
||
SKIPE DTON ;JUST INCASE 0 FILE NAME
|
||
LOOKUP OUT,ZRF ;LOOK UP FILENAME-EXT ON OUTPUT DEV
|
||
JRST DELE3 ;SHOULD NEVER FAIL
|
||
JRST DELE4 ;RENAME TO NEW NAME
|
||
|
||
;END OF LOOP
|
||
;*********************************************************************
|
||
;DX SWITCH ON, COPY ALL BUT SPECIFIED FILES. I.E. THOSE NOT DELETED
|
||
|
||
DTD6: MOVEI T1,0 ;SET TO RETURN TO DTCOPY
|
||
DTD5: SETOB 0,FILNAM ;FORCE COPY-ALL
|
||
HLLZM 0,FILEX ;BY MAKING FILE-EXT=*.*
|
||
SETOM QMASK ;AND MASKS
|
||
HLLZM 0,QMASK+1
|
||
SETOM OQMASK ;SAME FOR OUTPUT SIDE
|
||
HLLZM 0,OQMASK+1
|
||
TLO FL,MFLG ;SET FLAG ALSO
|
||
PUSHJ P,FNSET ;FIND DETAILS OF FILE-EXT
|
||
TRNE AUXFLG,DTAIN ;DTA INPUT
|
||
PUSHJ P,DTCH1 ;INIT DIRST,DIRST1
|
||
IFN RIMSW, <
|
||
TLNE FLAG,RIMFLG ;NO
|
||
JRST RIMTB
|
||
>
|
||
JRST DTCOPY(T1)
|
||
|
||
|
||
|
||
SUBTTL SET UP BLOCK FOR RENAME
|
||
|
||
;SET UP OUTPUT DIRECTORY ENTRY FOR RENAME
|
||
;ONLY ONE FILE NAME ALLOWED, BUT MAY BE *.EXT OR FN.*
|
||
;ALSO MUST HANDLE WILD CARD MASK
|
||
|
||
RENAME: SKIPL ESWTCH ;SKIP IF CR,LF SEEN IN C.S.
|
||
JRST ERR6A ;ONLY 1 SOURCE FILE DESCRIPTOR ALLOWED
|
||
SKIPN T2,NAMTAB ;AN OUTPUT NAME SPECIFIED?
|
||
JRST RENAM0 ;NO, USE INPUT
|
||
MOVEM T2,DTON ;STORE IT
|
||
MOVE 0,OQMASK ;WILD CHARS.
|
||
JUMPE 0,.+4 ;NO
|
||
ANDCAM 0,DTON ;YES, CLEAR FROM OUTPUT NAME
|
||
AND 0,ZRF ;PICKUP FROM INPUT NAME
|
||
ORM 0,DTON ;PUT IN OUTPUT
|
||
HLLZ 0,NAMTAB+1 ;USER SUPPLIED EXT
|
||
MOVEM 0,DTON+1
|
||
HLLZ 0,OQMASK+1 ;SAME FOR EXT
|
||
JUMPE 0,.+4 ;NO CHARS.
|
||
ANDCAM 0,DTON+1
|
||
AND 0,ZRF+1
|
||
ORM 0,DTON+1
|
||
SETZM DTON+2 ;LET MONITOR SUPPLY
|
||
POPJ P,
|
||
|
||
RENAM0: MOVE 0,[XWD ZRF,DTON];NO NAME SET SO USE LOOKUP NAME
|
||
BLT 0,DTON+2 ;AND EXT SO FILE NOT DELETED
|
||
POPJ P,
|
||
|
||
|
||
|
||
SUBTTL GET INPUT FILE SPEC AND MATCH IT TO DIRECTORY
|
||
|
||
;THIS ROUTINE GETS NEXT FILENAME.EXT FROM CS
|
||
;THEN SEES IF ONE IN DIRECTORY MATCHES
|
||
;IF IT DOES - EXIT IS CPOPJ1
|
||
;NO-MORE-FN.EX-TO-HANDLE-EXIT IS POPJ
|
||
;PREPARE ZRF FOR A "LOOKUP" ON THE NEXT REQUESTED FILE.
|
||
|
||
LOOK: TRNE CALFLG,NSWTCH ;NULL NAME?
|
||
TLNN FLAG,TID ;[125] AND TAPE ID SEEN?
|
||
JRST LOOK0 ;NO
|
||
SETZM GENERI ;YES, SAVES TIME
|
||
TRO AUXFLG,REDFLG ;FAKE SO COMMAND WILL BE ERROR FREE
|
||
TRO CALFLG,ASTFLG ;SAME AGAIN
|
||
POPJ P, ;RETURN TO WRITE ID
|
||
|
||
LOOK0: TRNE CALFLG,FNEX ;DOES FILNAM, FILEX CONTAIN
|
||
JRST LOOK6 ;A FILE TO THINK ABOUT? YES
|
||
TRZ FL,ASTFLG ;[173] CLEAR THAT WE'VE SEEN ONE
|
||
LOOK01: PUSHJ P,LOOKA ;GET ONE (NOTE: DEVICE MAY ALTER)
|
||
POPJ P, ;NONE, END OF CS
|
||
;RETURN SKIP FROM LOOKA
|
||
LOOK6: TRNN AUXFLG,NULIN ;[344] GOT ENOUGH INFO IF IT'S NUL
|
||
;**;[506] Change at LOOK6+1 RLUSK 23-Feb-81
|
||
JRST L6..A ;[344] [506] NOT NUL:
|
||
TRZ FL,FNEX ;[344] USED UP THIS FILE SPEC
|
||
TRNN FLAG,XFLG ;[506] "/X"? -- IS OK
|
||
JRST CPOPJ1 ;[344] AND IT IS NUL:
|
||
L6..A: MOVE T2,FILEX ;[506] GET FILE EXT INTO T2
|
||
SKIPN T1,FILNAM ;FILNAME AND EXT=0?
|
||
JUMPE T2,LOOK7C ;FN.EX=0, ONE FILE COPY
|
||
TLNE CALFLG,MFLG ;WILD CHAR. MASKING?
|
||
JRST LOOK1 ;YES, ALLOW FOR MANY FILES
|
||
|
||
TRNE AUXFLG,DTAIN+DSKIN ;DONT REQUIRE FILENAME
|
||
JUMPE T1,LOOK6C ;HERE FOR 0.EX,FN.EX OR FN.0,0.EX ILLEGAL
|
||
LOOK7B: TRZ CALFLG,FNEX ;IF HERE, ONLY ONE FILE WAS ENTAILED IN REQUEST.
|
||
TRNN AUXFLG,DTAIN+DSKIN
|
||
JRST LOOK4 ;GOT A FILE TO HANDLE
|
||
MOVE T1,[FILNAM,,ZRF] ;SET UP NAME AND EXT
|
||
BLT T1,ZRF+1 ;IN LOOKUP BLOCK
|
||
PUSHJ P,DSKPPS ;[365] GET A DIRECTORY
|
||
MOVEM T1,ZRFEX+.RBPPN ;[273] ALSO
|
||
;**;[524] Add 1 line at LOOK7B+6 MRB 8-Apr-82
|
||
IFN FTDSK,<TRNE AUXFLG,DSKIN> ;[524] SKIP IF NOT DSK
|
||
JRST CPOPJ1 ;OK RETURN
|
||
|
||
LOOK8: PUSHJ P,PICUP ;GET A FILE (ANY) FROM DIRECTORY
|
||
JRST LOOK2 ;[133 COR] WE GOT A FILE, DOES IT MATCH?
|
||
TRZ CALFLG,FNEX ;[133 COR] SEE IF A PARTIC. FILE WAS REQUESTED?
|
||
|
||
LOOK6D:
|
||
IFN FTDSK,<SKIPE GENERI ;SEARCHING F/S ?
|
||
POPJ P, ;YES, WAIT TIL END OF F/S SEARCH LIST>
|
||
TRZN CALFLG,ASTFLG ;DID WE FIND AT LEAST ONE
|
||
PUSHJ P,ERR3A ;NO, PRINT MSG.
|
||
JRST LOOK ;GET NEXT FILE FROM CS
|
||
|
||
;CHECK IF FILE.EXT IN DIRECTORY MATCHES FILE TO /D,/R
|
||
;NOTE WE MAY HAVE *.EXT,FIL.*, OR *.*
|
||
|
||
|
||
MLOOK2: XOR T1,FILNAM ;XOR TOGETHER
|
||
ANDCM T1,QMASK ;MASK
|
||
JUMPN T1,LOOK8 ;NO MATCH
|
||
MOVE T1,ZRF ;GET GOOD FILENAME
|
||
MOVEM T1,FILNAM ;WHERE IT BELONGS
|
||
JRST LOOK3
|
||
|
||
MLOOK3: XOR T1,FILEX
|
||
ANDCM T1,QMASK+1
|
||
JUMPN T1,LOOK8
|
||
MOVE T1,ZRF+1
|
||
MOVEM T1,FILEX
|
||
JRST LOOK5
|
||
|
||
LOOK2: TRNN CALFLG,MATFN ;SHOULD FILENAMES MATCH
|
||
JRST LOOK3 ;NO
|
||
MOVE T1,ZRF ;YES
|
||
TLNE CALFLG,MFLG ;MASKING NEEDED?
|
||
JRST MLOOK2 ;YES
|
||
CAME T1,FILNAM
|
||
JRST LOOK8 ;NO MATCH
|
||
|
||
LOOK3: TRNN CALFLG,MATEX ;SHOULD EXTENSIONS MATCH
|
||
JRST LOOK5 ;NO
|
||
MOVE T1,ZRF+1 ;YES
|
||
TLNE CALFLG,MFLG ;MASKING?
|
||
JRST MLOOK3 ;YES
|
||
CAME T1,FILEX
|
||
JRST LOOK8 ;NO MATCH
|
||
LOOK5:
|
||
LOOK4: TRO AUXFLG,READ1 ;READY FOR FIRST READ
|
||
TRO CALFLG,ASTFLG ;FOUND A FILE *.EXT, F.*,*.*
|
||
JRST CPOPJ1 ;MATCH OR NO CARES
|
||
|
||
LOOK7C: TRNE AUXFLG,DSKIN+DTAIN
|
||
JRST LOOK6C ;0.0 ON DIR DEVICE
|
||
SETZM ZRF
|
||
SETZM ZRF+1
|
||
JRST LOOK7B ;0.0 ON NON-DIR. DEV.
|
||
LOOK6C: TRNE FLAG,XFLG+DFLG+RFLG ;[217] ONLY PRINT MESSAGE IF /X/R/D
|
||
PUSHJ P,ERR3A ;[211] NON /X WILL PRINT LATER
|
||
POPJ P, ;[211] GIVE ERROR RETURN IMMEDIATELY
|
||
|
||
LOOK1: TRNE AUXFLG,DTAIN+DSKIN
|
||
JRST LOOK8
|
||
SETZM ZRF
|
||
SETZM ZRF+1
|
||
JRST LOOK4
|
||
|
||
SUBTTL GET A FILE NAME FROM DTA OR DSK DIRECTORY
|
||
|
||
;ROUTINE TO GET NEXT FILE NAME FROM DIRECTORY
|
||
;FILNAM, FILEX CONTAIN THE FILE NAME. EXT TO BE
|
||
;MATCHED WITH DIR. NAMES. PUT SUGGESTED FILE
|
||
;NAME EXT IN ZRF, ZRF+1 AND #P-P IN ZRF+3
|
||
;NOTE THAT WE HAVE TO HANDLE *.EXT,FILE.*
|
||
|
||
PICUP:
|
||
IFN FTDSK,<TRNN AUXFLG,DSKIN ;DSK INPUT?
|
||
JRST PICUP2 ;[130] NO - DTA
|
||
TLON FLAG,DSKDBC ;[130COR]HAS DSKIDR BEEN CALLED?
|
||
PUSHJ P,DSKDIR ;[130] NO - LOOKUP UFD
|
||
SOSLE UFDIN+2 ;[130]
|
||
JRST .+3
|
||
PICUP1: PUSHJ P,UIN ;INPUT USER'S FILE DIRECTORY
|
||
JRST CPOPJ1 ;EOF ON DSK
|
||
ILDB 0,UFDIN+1 ;PICK UP FILENAME
|
||
JUMPE 0,PICUP1 ;IGNORE NULL
|
||
MOVEM 0,ZRF ;SET FILE NAME
|
||
MOVE 0,FNPPN
|
||
MOVEM 0,ZRFEX+.RBPPN ;[273] SET DSK #P-P
|
||
SOS UFDIN+2 ;COUNT DOWN FOR NEXT TIME
|
||
ILDB 0,UFDIN+1 ;SET FILE EX
|
||
HLLZM 0,ZRF+1
|
||
POPJ P,>
|
||
|
||
PICUP2: MOVE T3,DIRST1 ;SETUP TO CHECK ALL FILENAME SLOTS
|
||
ADDI T3,26 ;IN DIRECTORY (22 FILE NAMES)
|
||
MOVE T5,DIRST ;LOC OF FIRST/NEXT FILE
|
||
PICUP4: ADDI T5,1 ;
|
||
CAMLE T5,T3 ;END OF FILE SLOTS?
|
||
JRST CPOPJ1 ;END OF FILE NAMES
|
||
MOVEM T5,DIRST ;NEXT SLOT TO LOOK AT
|
||
MOVE 0,(T5) ;GOT FILE NAME FROM DIRECT
|
||
JUMPE 0,PICUP4 ;IGNORE IF 0
|
||
MOVEM 0,ZRF
|
||
MOVE 0,26(T5) ;GET EXT ETC
|
||
HLLZM 0,ZRF+1
|
||
POPJ P,
|
||
|
||
;READ DTA DIR. AND PREPARE T5 TO PICK UP FIRST ENTRY.
|
||
|
||
DTADIR: PUSHJ P,DTCH2 ;READ DTA DIR INTO INPUT BUF
|
||
DTADI1: MOVEI T3,DBUF ;SET BLT FROM INBUF TO DBUF
|
||
HRL T3,T5 ;FIRST DATA WORD OF DIRECTORY IN T5
|
||
BLT T3,DBUF+176 ;MOVE FROM INBUF TO DBUF
|
||
MOVEI T5,DBUF+123-1 ;LOC OF FIRST FILE NAME
|
||
MOVEM T5,DIRST ;T5 POINTS TO FILNAME JUST HANDLED
|
||
MOVEM T5,DIRST1 ;TO RESTORE DIRST
|
||
POPJ P, ;(IE NONE BUT NEXT WILL BE FIRST)
|
||
|
||
|
||
SUBTTL ROUTINE TO OUTPUT FILENAMES THAT WERE DELETED OR RENAMED
|
||
;PRINT "FILES DELETED:" OR "FILES RENAMED:"
|
||
;ALSO USED TO PRINT "NO FILE NAMED XXX.XXX"
|
||
|
||
|
||
INFO: MOVE T1,TFO ;SETUP TTY FOR OUTPUT
|
||
MOVE T2,TFI ;SAVE BUFFER LOCS
|
||
PUSHJ P,INICON ;INIT TTY
|
||
HRROM T2,TFI ;SET BUFFER LOCS
|
||
HRROM T1,TFO
|
||
OUTPUT CON,
|
||
TLZE AUXFLG,INFOFL ;ERROR PRINT ONLY?
|
||
JRST ERR3AA ;YES
|
||
TRNN FLAG,DFLG ;DELETE?
|
||
JRST INFO1 ;NO, MUST BE RENAME
|
||
IFN CCLSW,<SKIPE COMFLG
|
||
SKIPG RENSN
|
||
SKIP 1
|
||
POPJ P,
|
||
HRRZM T1,RENSN ;SET POSITIVE>
|
||
ERRPN2 </Files deleted:/>
|
||
IFN FTDSK,<SETZM BLKSUM ;SET TOTAL TO ZERO>
|
||
JRST INFO2
|
||
INFO1: IFN CCLSW,<
|
||
SKIPE COMFLG ;IF NOT CCL
|
||
SKIPL RENSN ;OR FIRST TIME
|
||
SKIP 1
|
||
POPJ P, ;ONLY PRINT ONCE IF CCL
|
||
SETOM RENSN ;DON'T PRINT IT TWICE>
|
||
ERRPN2 </Files renamed:/> ;RENAME (/R)
|
||
TCRLF:
|
||
INFO2: MOVEI CHR,CR ;OUTPUT CR/LF
|
||
PUSHJ P,PUTCON ;ON TTY
|
||
MOVEI CHR,LF
|
||
PUSHJ P,PUTCON
|
||
OUTPUT CON,
|
||
POPJ P,
|
||
|
||
|
||
;**********************************************************************
|
||
;PRINT FILENAME.EXT OR [P,P].UFD OF FILE DELETED
|
||
INFO3: TLZN AUXFLG,AMBIGU ;[366] UNAMBIGUOUS SPEC?
|
||
SKIPN DSCARG+.DCSNM ;[372] ANY F/S IN DSKCHR BLOCK?
|
||
JRST INFO3B ;[366] NO
|
||
PUSHJ P,P6BIT ;[366] PRINT THE DEVICE NAME
|
||
DSCARG+.DCSNM ;[372] FROM THE DSKCHR BLOCK
|
||
SETZM DSCARG+.DCSNM ;[372] CLEAR AFTER PRINT
|
||
MOVEI CHR,":" ;[372] PRINT COLON
|
||
PUSHJ P,PUTCON ;[372]
|
||
INFO3B: MOVEI T3,ZRF ;LOCATION OF FILENAME
|
||
PUSHJ P,FN.EX
|
||
IFN FTDSK,<TRNE FLAG,DFLG ;SKIP IF /D
|
||
TRNN AUXFLG,DSKIN ;AND INPUT DEVICE IS DSK>
|
||
JRST INFO2 ;NO
|
||
IFN FTDSK,<MOVN DOUT,ZRFEX+.RBSIZ ;[273] GET BLOCK SIZE
|
||
PUSHJ P,BLKSD ;STORE BLOCK SIZE
|
||
JRST INFO2 ;AND CR-LF>
|
||
|
||
SUBTTL /X OR /D. FIND OUT DETAILS OF FILE NAME AND
|
||
;EXTENSION (0 FN.EX=*.*) AND ANY CHANGE IN
|
||
;SOURCE DEV. SET BITS IN CALFLG.
|
||
|
||
FNSET: TRZ CALFLG,ALLCLF ;CLEAR FLAGS ON ENTRY
|
||
SKIPN FILNAM
|
||
TROA CALFLG,FNEX ;FILENAME = * OR 0
|
||
TRO CALFLG,MATFN ;FILENAME MUST BE MATCHED
|
||
SKIPN FILEX ;EXT=0?
|
||
TRNN AUXFLG, MTAIN+CDRIN+PPTIN+TTYIN ;YES
|
||
TROA CALFLG,MATEX ;FILE EXTENSION MUST BE MATCHED
|
||
TRO CALFLG,FNEX ;YES
|
||
IFN FTDSK,<TRNN AUXFLG,DSKIN
|
||
JRST FNSET1
|
||
MOVE T2,[XWD JOBPTH,COMPTH] ;[211] FOR 1ST TIME WITH NO PPN USE DEFAULT
|
||
SKIPN PP ;[323] SEE A PPN TYPED?
|
||
SKIPE COMPTH ;[211] AND 1ST TIME THROUGH
|
||
SKIPA ;[211] NO
|
||
JRST FNSET6 ;[211] YES, SET FOR DEFAULT PATH
|
||
SKIPN COMPTH ;[211] SEE IF NOT HERE BEFORE & HAVE PPN
|
||
JRST FNSET5 ;[211] YES, SET UP WITH FIRST PPN
|
||
MOVEI T2,.PTPPN ;[211] START AT PPN FOR COMPARES
|
||
FNSET3: MOVE 0,PTHADD(T2) ;[211] GET A PPN OR SFD NAME
|
||
CAME 0,COMPTH(T2) ;[211] SEE IF SAME AS PREVIOUS
|
||
JRST FNSET4 ;[211] NO, SET NEW PPN FLAG
|
||
JUMPE 0,FNSET1 ;[211] YES, SEE IF END OF LIST
|
||
AOJA T2,FNSET3 ;[211] NO, MORE TO COMPARE
|
||
|
||
FNSET4: TRO FL,NEWPP ;[211] SAY WE SAW NEW ONE FOR /XD /R
|
||
FNSET5: MOVE T2,[XWD PTHADD,COMPTH] ;[211] COPY SPECIFIED INTO
|
||
FNSET6: BLT T2,COMPTH+PTHLEN+3 ;[211] COMPARE AREA FOR NEXT TIME
|
||
|
||
FNSET2: SETOM COMPTH ;[211] MAKE SURE WE KNOW WE HAVE ONE
|
||
>;[211] END IFN FTDSK
|
||
|
||
FNSET1: MOVE T2,DEVICE
|
||
CAME T2,DEVA
|
||
TRO CALFLG,NEWDEV ;CHANGE IN SOURCE DEV.
|
||
MOVEM T2,DEVA ;SET DEVA=DEVICE
|
||
TRNN FLAG,XFLG!RFLG!DFLG ;NEED MULTIPLE FILES FOR THESE
|
||
TLNE CALFLG,MFLG ;WILD CHAR.?
|
||
TRO CALFLG,FNEX ;YES, SET FOR MULTIPLE FILES
|
||
POPJ P,
|
||
|
||
;POPJ EXIT IF END OF COMMAND STRING, OTHERWISE RESET
|
||
;POINTER TO START OF DIRECTORY, READING IN NEW DIR.
|
||
;IF DEV OR #P-P CHANGED (EXIT CPOPJ1)
|
||
;IF DIR. IS ON DSK RESET BY REINIT.
|
||
|
||
LOOKA: SKIPE T4,ESWTCH ;MORE C.S.?
|
||
POPJ P, ;NO
|
||
PUSHJ P,DESCRP ;YES, GET NEXT FN.EX FROM CS
|
||
PUSHJ P,INLOOK ;CHECK FOR MTA REQUESTS, MODE
|
||
PUSHJ P,M4 ;CHECK FOR /I,/B,/H
|
||
HRRZM T4,ININI1 ;SET MODE
|
||
RELEAS DIR,
|
||
TRNN FLAG,DFLG ;FOR DELETE, ONE SOURCE FILE
|
||
JRST LOOKB ;...
|
||
|
||
TRNE CALFLG,NEWDEV ;ONLY IS PERMITTED
|
||
JRST ERR5A
|
||
|
||
LOOKB: TRNN CALFLG,NEWDEV!NEWPP ;PREPARE TO LOOK FOR NEW FILE
|
||
JRST LOOKC ;NAME AT HEAD OF DIRECTORY
|
||
|
||
PUSHJ P,ININIT ;INIT INPUT FILE
|
||
TRNN AUXFLG,NULIN ;[344] IF NUL:, NO DIRECTORIES NEEDED.
|
||
TRNN AUXFLG,DTAIN+DSKIN
|
||
JRST CPOPJ1
|
||
IFN FTDSK,<TRNN AUXFLG,DTAIN ;DTA INPUT?
|
||
JRST LOOKD ;NO, MUST BE DSK>
|
||
PUSHJ P,DTADIR ;YES, READ IN DTA DIRECT
|
||
|
||
LOOKC:
|
||
IFN FTDSK,<TRNE AUXFLG,DSKIN ;DSK INPUT?
|
||
JRST LOOKD ;YES>
|
||
MOVE T5,DIRST1 ;NO, RESET DIRECTORY START
|
||
MOVEM T5,DIRST
|
||
JRST CPOPJ1
|
||
|
||
IFN FTDSK,<
|
||
LOOKD: TRNE FLAG,DFLG!RFLG ;[314] IF DELETE OR RENAME
|
||
TLNE FL,MFLG ;[314] AND NOT WILD, NO DSKDIR
|
||
PUSHJ P,DSKDIR ;GET USER'S FILE DIRECTORY
|
||
SETZM UFDIN+2 ;DSK DIR BUF EMPTY
|
||
JRST CPOPJ1>
|
||
|
||
SUBTTL ROUTINE TO LIST DTA OR DSK DIRECTORIES
|
||
|
||
DEFINE P6 (A,B)<
|
||
MOVEI T2,A ;;NUMBER OF CHARACTERS
|
||
MOVE 0,[POINT 6,B] ;;BYTE POINTER TO SIXBIT STRING
|
||
PUSHJ P,PDIR2 ;;OUTPUT THE STRING
|
||
>
|
||
|
||
DTPDIR: TROE AUXFLG,ONEOUT ;ONLY DO ENTRY ONCE
|
||
JRST DTPDN ;SO MULTIPLE LISTINGS DON'T LOSE
|
||
ENTER OUT,DTON ;OUTPUT DEV ENTRY
|
||
JRST ERR4 ;DIRECTORY FULL
|
||
DTPDN: IFN FTDSK,<
|
||
TRNE AUXFLG,FFLG ;/F? SHORT FORM?
|
||
SKIPE DEVICE ;INPUT DEVICE SPECIFIED?
|
||
JRST PDIR1A ;YES
|
||
HRRZI 0,'DSK' ;ASSUME DSK IF NO DEVICE GIVEN
|
||
HRLZM 0,DEVICE
|
||
TROA AUXFLG,DSKIN ;SET DSK INPUT
|
||
PDIR1A: TRNE AUXFLG,DSKIN ;DSK INPUT?
|
||
JRST DSKLST ;YES, GO AND TRY TO LIST DSK>
|
||
IFN TEMP,<
|
||
TRNE CALFLG,TMPI ;LIST TMPCOR DIRECTORY?
|
||
JRST TMPLST ;YES>
|
||
TRNN AUXFLG,DTAIN ;DECTAPE INPUT?
|
||
JRST ERR5 ;NOT DSK OR DTA. ERROR
|
||
|
||
;ROUTINE TO LIST DTA DIRECTORY. /L OR /F SWITCH
|
||
|
||
DTALST: PUSHJ P,DTCHECK ;CHECK FOR DTA INPUT-MUST BE DECTAPE AND
|
||
;GET DIRECTORY
|
||
PUSHJ P,CRLF ;PRINT NO. OF FREE BLOCKS LEFT
|
||
MOVE T1,IBF ;START OF BUFFER
|
||
MOVE DOUT,200(T1) ;GET POSSIBLE TAPE ID
|
||
JUMPE DOUT,NOTPID ;NOT IF ZERO
|
||
CAMN DOUT,[-1] ;OR -1
|
||
JRST NOTPID ;JUST GARBAGE
|
||
P6 9,[SIXBIT /TAPE ID: /]
|
||
P6 6,DOUT
|
||
PUSHJ P,CRLF ;NEW LINE
|
||
NOTPID: SETZ DOUT, ;CLEAR NO. FREE BLOCKS
|
||
MOVEI T4,1102 ;OCTAL NO. OF BLOCKS ON DECTAPE
|
||
MOVSI T1,(POINT 5,0) ;5 BIT BYTES
|
||
HRRZ T5,IBF ;CURRENT INPUT BUFFER
|
||
ADDI T1,1(T5) ;POINTER TO 1ST DATA WORD IN DIRECT
|
||
|
||
PDIR8: SOJLE T4,PDIR1 ;ALL THROUGH?
|
||
ILDB T3,T1 ;CALCULATE NO. OF FREE BLOCKS
|
||
JUMPN T3,PDIR8
|
||
|
||
;THIS BLOCK FULL
|
||
AOJA DOUT,PDIR8 ;COUNT NO. WITH ZERO IN
|
||
PDIR1: P6 6,['FREE: ']
|
||
PUSHJ P,OUTDC3 ;PRINT RESULT
|
||
P6 6,<[' BLKS,']>
|
||
PUSHJ P,DTCH1 ;FIX T5, TO POINT AT BEGIN OF DIR
|
||
MOVE T4,T5 ;ANOTHER COPY
|
||
MOVEI T2,26 ;NUMBER OF POSSIBLE FILES
|
||
MOVEI DOUT,26
|
||
SKIPE 123(T4) ;SKIP IF NO FILE THERE
|
||
SUBI DOUT,1 ;ONE LESS FREE
|
||
ADDI T4,1 ;SET FOR NEXT FILE
|
||
SOJG T2,.-3 ;LOOP FOR ALL FILES
|
||
PUSHJ P,OUTDC3 ;OUTPUT NUMBER FREE
|
||
P6 6,[' FILES']
|
||
PUSHJ P,CRLF ;CARRIAGE RET, LINEFEED
|
||
|
||
SUBTTL LOOP TO EXAMINE FILE NAMES DTA DIRECTORY
|
||
PDIR4:
|
||
SKIPN 123(T5) ;NULL (=0) FILE NAME?
|
||
JRST PDIR6 ;YES SO LOOK FOR ANOTHER
|
||
MOVEI T2,6 ;TRANSMIT UP TO 6 CHARACTERS
|
||
MOVSI 0,440600+T5 ;SET UP SOURCE BYTE POINTER
|
||
HRRI 0,123 ;SET TO PICK UP FILE NAME
|
||
SETZ T4,
|
||
;FOLLOWING CODE TO OUTPUT PROJ, PROG FILENAME
|
||
HLRZ CHR,151(T5) ;GET EXT
|
||
CAIE CHR,'UFD' ;UFD?
|
||
JRST PDIR4A ;NO
|
||
|
||
HLRZ DOUT,123(T5) ;PROJ NO.
|
||
MOVEI T2,PUT
|
||
PUSHJ P,OUTOCT
|
||
|
||
MOVEI CHR,COMMA ;COMMA
|
||
PUSHJ P,PUT
|
||
|
||
HRRZ DOUT,123(T5) ;PROG NO.
|
||
PUSHJ P,OUTOCT
|
||
JRST PDIR4B
|
||
|
||
PDIR4A: PUSHJ P,PDIR2 ;OUTPUT 6-BIT DATA AND INCR DIRECTORY PTR
|
||
PDIR4B: HLLZ CHR,151(T5) ;PICK UP EXTENSION
|
||
MOVSI 0,440600+T5 ;SET BYTE POINTER
|
||
HRRI 0,151 ;PICK UP EXTENSION
|
||
MOVEI T2,4 ;PRINT UP TO 4 CHRS. (PERIOD+3*EXT)
|
||
JUMPN CHR,.+3 ;EXTENSION NULL?
|
||
PUSHJ P,PDIR2A+1 ;YES
|
||
SKIP 2 ;NO
|
||
MOVEI CHR,PERIOD-40 ;NO, SO PRINT A PERIOD
|
||
PDIR3: PUSHJ P,PDIR2A ;OUTPT 6 BIT OR INCR T5
|
||
MOVEI CHR,SPACE ;OUTPUT 2 SPACES
|
||
PUSHJ P,PUT
|
||
PUSHJ P,PUT
|
||
TRNE AUXFLG,FFLG ;SHORT FORM DIRECT ?
|
||
JRST PDIR3A ;YES VJC 4/16/69
|
||
|
||
SETZ DOUT, ;CALCULATE NBR OF BLOCKS PER FILE
|
||
MOVEI T4,1101
|
||
MOVSI 0,(POINT 5,0)
|
||
HRRZ T2,IBF
|
||
ADDI 0,1(T2)
|
||
HRRZ T7,T5
|
||
|
||
SUBI T7,(T2)
|
||
ILDB T6,0 ;LOAD CONTENTS OF S.A.T. BLOCK
|
||
CAMN T6,T7 ;COMPARE WITH FILE SLOT NBR
|
||
ADDI DOUT,1 ;ADD 1 TO COUNT IF EQUAL
|
||
SOJG T4,.-3
|
||
PUSHJ P,OUTDC3 ;OUTPUT NBR OF BLOCKS PER FILE
|
||
MOVEI CHR,TAB
|
||
PUSHJ P,PUT
|
||
MOVE 0,151(T5) ;GET ENTRY DATE
|
||
ANDI 0,7777 ;LEFT BITS ARE IRRELEVENT
|
||
MOVEI T2,1 ;[132] SET UP TO TEST FOR HIGH ORDER BITS
|
||
TDNE T2,0(T5) ;[132] WHICH ARE LOW ORDER BITS IN DIR.
|
||
IORI 0,1B23 ;[132] ON SO SET BIT IN DATE
|
||
TDNE T2,^D22(T5) ;[132] REPEAT FOR EACH BIT
|
||
IORI 0,1B22 ;[132] ...
|
||
TDNE T2,^D44(T5) ;[132] ...
|
||
IORI 0,1B21 ;[132] ...
|
||
PUSHJ P,DATOUT ;OUTPUT THE DATE
|
||
PDIR3A: PUSHJ P,CRLF ;GIVE CR,LF 4/16/69
|
||
PDIR6: HRRZ T1,IBF ;PROCESS NEXT ENTRY
|
||
SUBM T5,T1
|
||
CAIL T1,26 ;FILE "NUMBER" OK?
|
||
JRST MAIN1 ;NO, END OF ENTRIES
|
||
AOJA T5,PDIR4 ;END OF LOOP, GET NEXT FILENAME
|
||
|
||
IFN FTDSK,<
|
||
CLRF: SOS LIN>
|
||
CRLF: MOVEI CHR,CR ;OUTPUT CAR. RET.
|
||
PUSHJ P,PUT
|
||
MOVEI CHR,LF ;LINE FEED
|
||
JRST PUT
|
||
|
||
PDIR2: ILDB CHR,0 ;ROUTINE TO OUTPUT 6-BIT DATA
|
||
TRNN 0,-1 ;PRINT SPACES WHEN PRINTING THE FREE BLOCKS
|
||
PDIR2A: JUMPE CHR,PDIR21 ;TERMINATE ON SPACE
|
||
ADDI CHR,40 ;CONVERT TO 7 BIT
|
||
PUSHJ P,PUT ;OUTPUT CHARACTER
|
||
ADDI T4,1
|
||
SOJG T2,PDIR2 ;COUNT DOWN MAX-CHARS COUNTER
|
||
PDIR21: POPJ P, ;CONTINUE
|
||
|
||
SUBTTL DATE OUTPUT FOR DIRECTORY
|
||
|
||
;OUTPUT THE DATE FOUND IN AC 0.
|
||
|
||
DATOUT: MOVEI T2,PUT ;PUT CHAR IN OUT
|
||
IDIVI 0,^D31
|
||
MOVEI T3,1(1)
|
||
IDIVI 0,^D12
|
||
MOVE DOUT,T3 ;DOUT=DAY
|
||
PUSHJ P,OUTDC1 ;PRINT DAY
|
||
PUSHJ P,DATO2 ;PRINT -MONTH-
|
||
MOVE DOUT,0
|
||
ADDI DOUT,^D64 ;DOUT=YEAR
|
||
CAIL DOUT,^D100 ;[132] AFTER YEAR 2000?
|
||
SUBI DOUT,^D100 ;[132] YES, KEEP IT CORRECT FOR NEXT 100 YEARS
|
||
OUTDC1: SKIPA DOUT+1,TWL ;RADIX 10
|
||
;*******************************************************************
|
||
;ROUTINE TO CONVERT OCTAL TO ASCII
|
||
;DOUT CONTAINS OCTAL VALUE ON ENTRY
|
||
|
||
OUTOCT: MOVEI DOUT+1,10 ;RADIX 8
|
||
PRNUMA: HRRZM DOUT+1,T4
|
||
MOVEI CHR,"0"
|
||
CAMGE DOUT,DOUT+1 ;PRINT AT LEAST 2 DIGITS
|
||
PUSHJ P,(T2) ;PUT OR PUTCON
|
||
PRN: IDIVI DOUT,(T4) ;DIVIDE BY RADIX
|
||
HRLM DOUT+1,(P) ;SAVE NO. FOR PRINT
|
||
JUMPE DOUT,.+2 ;ENUF DIGITS?
|
||
PUSHJ P,PRN ;NO, GET MORE
|
||
HLRZ CHR,(P) ;YES, GET LEFTMOST
|
||
ADDI CHR,60 ;CONVERT TO ASCII
|
||
JRST (T2) ;PUT OR PUTCON
|
||
|
||
OUTDE4: MOVEI CHR," " ;SET UP FOR SPACES
|
||
CAIL DOUT,^D1000 ;PRINT 4 CHAR.
|
||
JRST OUTDC1 ;AT LEAST 4 SEEN
|
||
PUSHJ P,(T2) ;OUTPUT ONE SPACE
|
||
CAIGE DOUT,^D100 ;3 CHAR.?
|
||
PUSHJ P,(T2) ;NO,SO ANOTHER SPACE
|
||
JRST OUTDC1
|
||
|
||
OUTDC3: MOVEI CHR," " ;GET A SPACE READY
|
||
CAIGE DOUT,^D100 ;LESS THAN 3 CHAR.
|
||
PUSHJ P,PUT ;YES, COMPENSATE WITH A SPACE
|
||
OUTDEC: MOVEI T2,PUT ;PUT CHAR IN OUT BUF
|
||
JRST OUTDC1
|
||
|
||
DATO2: MOVEI T4,5
|
||
MOVE T6,MNPT
|
||
ADDM 1,T6
|
||
ILDB CHR,T6
|
||
PUSHJ P,(T2) ;PUT OR PUTCON
|
||
SOJG T4,.-2
|
||
POPJ P,
|
||
|
||
SUBTTL DTA DIRECTORY READ
|
||
;READ DTA DIRECTORY AND INITIALIZE DIRST AND DIRST1
|
||
|
||
DTCHECK:PUSHJ P,ININIT ;INITIALIZE INPUT DEVICE
|
||
DTCH2:
|
||
USETI IN,144 ;GET DTA DIR
|
||
PUSHJ P,INP ;INPUT DIRECTORY
|
||
CLOSE IN, ;FINISHED WITH CHAN FOR NOW
|
||
DTCH1: HRRZ T5,IBF ;LOC. OF CURRENT BUF, 2ND WORD
|
||
MOVEI 0,123(T5) ;83 WORDS,7, FIVE-BIT BYTES
|
||
ADDI T5,1 ;COMPUTE ADD. OF DIR. START
|
||
MOVEM 0,DIRST ;FIRST FILE NAME LOC
|
||
MOVEM 0,DIRST1 ;TO RESTORE DIRST
|
||
POPJ P,
|
||
|
||
;ROUTINE TO CHECK BRACKET COUNT/MATCHING
|
||
|
||
OUTCHK: SETZB T3,TLBRKT ;COUNT <> ON THIS LINE, CLEAR THINGS
|
||
MOVE T1,OPTRA ;BYTE POINTER FOR READING OUT THE LINE
|
||
OUTCH2: CAMN T1,OPTR ;LINE DONE?
|
||
JRST OUTCH3 ;YES, SO DECIDE WHETHER TO PRINT
|
||
ILDB T2,T1 ;GET CHAR
|
||
CAIN T2,"<" ;LEFT BRACKET?
|
||
AOS TLBRKT ;YES, SO INCREMENT BRACKET COUNT
|
||
CAIN T2,">" ;RIGHT BRACKET?
|
||
SOSL TLBRKT ;YES, SUBTRACT BRACKET COUNT, GONE NEG?
|
||
JRST OUTCH2 ;NO, SO DO NEXT CHAR
|
||
AOJA T3,OUTCH2 ;YES, SO FLAG COUNT GONE NEG.
|
||
|
||
OUTCH3: SKIPN T2,TLBRKT ;BRACKET COUNT OFF THIS LINE?
|
||
JUMPE T3,CPOPJ ;NO, WENT NEG.?
|
||
ADDM T2,TOTBRK ;YES, SO ADD INTO CUMULATIVE COUNT
|
||
MOVEI CHR,"-" ;PRINT MINUS FOR NEG TOTAL
|
||
SKIPGE TOTBRK
|
||
PUSHJ P,PUT
|
||
MOVM DOUT,TOTBRK;PRINT MAGNITUDE OF TOTAL
|
||
PUSHJ P,OUTDEC
|
||
MOVEI CHR,TAB ;FOLLOW WITH TAB
|
||
PUSHJ P,PUT
|
||
JRST OUTCH1 ;AND PRINT THE LINE
|
||
|
||
SUBTTL ROUTINE TO FIND FILE TYPE AND SET MODE
|
||
|
||
FILTYP: TDNE FLAG,[XWD IFLG+IBFLG,BMOD]
|
||
POPJ P, ;BIN MODE DON'T CARE IF DMP, ETC
|
||
TLZ AUXFLG,SBIN ;CLEAR BINARY FLAG
|
||
TDNN FLAG,[XWD PFLG!WFLG,LINE!TBMOD!NSMOD!SQMOD!SPMOD]
|
||
TLNE AUXFLG,CDRFLG ;/E FROM DSK IS NOT BINARY
|
||
JRST FIL2 ;SO TURN OFF SBIN
|
||
TRNN FLAG,XFLG ;NO CONCATENATION ALLOWED
|
||
TRNN CALFLG,COMAFL ;CONCATENATION, SO TAKE IT SLOWLY
|
||
TRNN AUXFLG,DSKIN!DTAIN!MTAIN ;BINARY INPUT POSSIBLE?
|
||
JRST FIL11 ;NO
|
||
TRNE AUXFLG,DSKOUT!DTAOUT!MTAOUT ;BINARY OUTPUT?
|
||
JRST FIL3 ;YES, USE BINARY MODE
|
||
FIL11: HLLZS ZRF+1 ;CLEAR RIGHT HALF
|
||
MOVE T1,[-TYTLEN,,TYPTAB]
|
||
FIL11A: HLLZ 0,(T1) ;GET AN EXT
|
||
CAMN 0,ZRF+1 ;MATCH?
|
||
JRST FIL3 ;YES, USE BINARY
|
||
HRLZ 0,(T1) ;TRY OTHER
|
||
CAMN 0,ZRF+1
|
||
JRST FIL3
|
||
AOBJN T1,FIL11A ;NO, KEEP TRYING
|
||
HLLZS DTON+1 ;CLEAR RIGHT HALF INCASE NOT ZERO
|
||
MOVE T1,[-TYTLEN,,TYPTAB]
|
||
FIL11B: HLLZ 0,(T1) ;GET AN EXT
|
||
CAMN 0,DTON+1 ;MATCH?
|
||
JRST FIL3 ;YES, USE BINARY
|
||
HRLZ 0,(T1) ;TRY OTHER
|
||
CAMN 0,DTON+1
|
||
JRST FIL3
|
||
AOBJN T1,FIL11B ;NO, KEEP TRYING
|
||
TRNN FLAG,XFLG ;DO NORMAL PROCESSING ON ALL
|
||
JRST FIL2 ;BUT DMP ETC FILES IF NOT /X
|
||
POPJ P, ;NO SIGNIFICANT SWITCHES
|
||
|
||
TYPTAB: 'SHR',,'HGH'
|
||
'SAV',,'LOW'
|
||
'XPN',,'SVE'
|
||
'REL',,'CHN'
|
||
'DMP',,'BIN'
|
||
'RIM',,'RTB'
|
||
'RMT',,'BAC'
|
||
'BUG',,'CAL'
|
||
'DAE',,'DCR'
|
||
'MSB',,'OVR'
|
||
'QUC',,'QUE'
|
||
'QUF',,'SFD'
|
||
'SYS',,'UFD'
|
||
'EXE',,'UNV'
|
||
TYTLEN==.-TYPTAB
|
||
|
||
|
||
FIL4: TLO AUXFLG,RSDCFL ;SET REL,SAV,DMP,CHN FLAG
|
||
FIL1: HRLZI 0,004400 ;FORCE 36-BIT.
|
||
HLLM 0,IBF+1 ;INPUT BYTE POINTER
|
||
HLLM 0,OBF+1 ;OUTPUT BYTE POINTER
|
||
TRNE AUXFLG,DSKOUT!DTAOUT!TTYOUT!MTAOUT ;[210] CDP OR PTP?
|
||
POPJ P, ;CHANGE TO FORCED BINARY
|
||
CLOSE OUT, ;[210] PUNCH BLANK TAPE OR CARD
|
||
MOVEI 0,.IOBIN ;[210] CHANGE TO BINARY MODE
|
||
HRRM 0,OMOD ;[210] PUT IN OPEN BLOCK
|
||
OPEN OUT,OMOD ;[210] REOPEN
|
||
OUTPUT OUT, ;[210] DUMMY OUTPUT
|
||
POPJ P, ;[156]
|
||
|
||
FIL3: TLO AUXFLG,SBIN ;INPUT EXT = DMP,SAV,CHN,REL
|
||
TRNE FLAG,XFLG
|
||
JRST FIL1
|
||
TLON AUXFLG,FRSTIN ;NOT /X TEST FURTHER
|
||
JRST FIL4 ;IS THIS FIRST SOURCE, YES
|
||
TLOE AUXFLG,RSDCFL ;NOT FIRST, WAS PREVIOS FILE RSCD?
|
||
JRST FIL1 ;ENSURE BINARY AT ALL TIMES
|
||
OUTPUT OUT, ;NO CHANGE TO 36-BIT
|
||
MOVE 0,OBF+2 ;CURRENTLY 7-BIT I/O, MUST CHANGE TO 36-BIT
|
||
;OUTPUT CURRENT BUFFER
|
||
IDIVI 0,5 ;DIVIDE OBF+2 BY 5 (CHAR. COUNT)
|
||
MOVEM 0,OBF+2
|
||
JRST FIL1
|
||
|
||
FIL2: TLOE AUXFLG,FRSTIN ;NOT A RSCD FILE
|
||
TLZN AUXFLG,RSDCFL ;NO, WAS PREV. FILE RSCD?
|
||
POPJ P, ;NO, NO CHANGE
|
||
OUTPUT OUT, ;YES, CHANGE 36-BIT TO 7-BIT
|
||
MOVEI 0,5
|
||
IMULM 0,OBF+2
|
||
MOVE 0,SVIBF ;RESTORE 7-BIT
|
||
HLLM 0,IBF+1
|
||
MOVE 0,SVOBF
|
||
HLLM 0,OBF+1
|
||
TRNE AUXFLG,DSKOUT!DTAOUT!TTYOUT!MTAOUT ;[210] CDP OR PTR?
|
||
POPJ P,
|
||
CLOSE OUT, ;[210] PUNCH BLANK TAPE OR CARD
|
||
SETZM OMOD ;[210] CHANGE MODE TO ASCII
|
||
OPEN OUT,OMOD ;[210] REOPEN AS ASCII
|
||
OUTPUT OUT, ;[210] DUMMY OUTPUT
|
||
POPJ P, ;[156]
|
||
|
||
SUBTTL ROUTINES TO HANDLE DEVICE TMPCOR:
|
||
IFN TEMP,<
|
||
|
||
;ZERO TMPCOR DIRECTORY
|
||
TMPZRO: MOVE T1,[XWD .TCRDD,TMPNAM]
|
||
PUSHJ P,TMPXCT
|
||
JRST TMPNAV ;ONLY GETS HERE IF NO TMPCOR
|
||
JRST PIP2 ;GET NEXT COMMAND
|
||
|
||
;LIST TMPCOR DIRECTORY
|
||
TMPLST: SETZ T1, ;0 TO GET FREE SPACE
|
||
TMPCOR T1, ;GET IT
|
||
JRST TMPNAV ;NO TMPCOR IN THIS MONITOR
|
||
MOVE 0,T1 ;GET WORD COUNT
|
||
PUSHJ P,OCTLS2 ;OUTPUT IT
|
||
LSTLIN TMPHDR ;AND MESSAGE
|
||
MOVE T1,[XWD .TCRRD,TMPNAM]
|
||
PUSHJ P,TMPXCT
|
||
JRST MAIN1 ;SHOULD NEVER HAPPEN
|
||
JUMPLE T1,MAIN1 ;DIRECTORY EMPTY
|
||
MOVNS T1 ;GET - WORD COUNT
|
||
HRL T5,T1 ;MAKE AOBJN WORD
|
||
TMPLS2: HLLZ 0,(T5) ;GET NAME
|
||
PUSHJ P,SIXOUT ;OUTPUT IT
|
||
PUSHJ P,TABOUT ;AND A TAB
|
||
HRRZ 0,(T5) ;GET WORD COUNT
|
||
PUSHJ P,OCTLS2 ;OUTPUT IN OCTAL
|
||
PUSHJ P,CRLF ;NEW LINE
|
||
AOBJN T5,TMPLS2
|
||
JRST MAIN1 ;END OF DIRECTORY
|
||
|
||
|
||
;INPUT ONE FILE FROM TMPCOR
|
||
TMPIN: SKIPL ESWTCH ;MORE COMMAND
|
||
JRST TMPERR ;YES
|
||
MOVE T1,[XWD .TCRRF,TMPNAM]
|
||
PUSHJ P,TMPXCQ
|
||
JRST [PUSHJ P,ERR3A ;ERROR
|
||
PUSHJ P,GETEND;DELETE CCL FILE
|
||
JRST PIP2]
|
||
TROE AUXFLG,ONEOUT ;ONLY DO ENTRY ONCE
|
||
JRST TMPIN1 ;DONE ALREADY
|
||
TRNE CALFLG,TMPO ;[146] TMP:-TO-TMP: XFER?
|
||
JRST TMITMO ;[146] YES -- DO TMPCOR OUTPUT
|
||
ENTER OUT,DTON ;ENTER FILE IN CASE DIRECTORY DEV.
|
||
JRST ERR4 ;FAILURE
|
||
;**;[502] Insert at TMPIN1 before "HRLI ..." RLUSK 31-Oct-80
|
||
TMPIN1: TRNE AUXFLG,MTAOUT!DTAOUT!DSKOUT ;[502] FULLWORD OUTPUT?
|
||
JRST TMPINB ;[502] YES -- USE BINARY ROUTINE
|
||
HRLI T5,440700 ;MAKE A BYTE POINTER
|
||
IMULI T1,5 ;WORD COUNT
|
||
ADDI T1,1 ;BONUS FOR SOSGE
|
||
SOJLE T1,MAIN1 ;JUMP WHEN DONE
|
||
ILDB CHR,T5 ;GET CHARACTER
|
||
PUSHJ P,PUT ;OUTPUT IT
|
||
JRST .-3 ;LOOP 'TIL DONE
|
||
|
||
;**;[502] Insert 6 lines before TMITMO RLUSK 31-Oct-80
|
||
TMPINB: HRLI T5,444400 ;[502] MAKE 36-BIT BYTE POINTER
|
||
HLLM T5,OBF+1 ;[502] PUT IT IN BUFFER HEADER
|
||
SOJL T1,MAIN1 ;[502] RETURN WHEN DONE
|
||
ILDB CHR,T5 ;[502] GET A WORD
|
||
PUSHJ P,PUT ;[502] OUTPUT IT
|
||
JRST .-3 ;[502] LOOP UNTIL DONE
|
||
|
||
|
||
;[146] ROUTINE TO WRITE TMPCOR FILE FROM TMPCOR FILE
|
||
TMITMO: MOVE T2,DTON ;[146] GET OUTPUT FILE NAME
|
||
MOVEM T2,TMPNAM ;[146] PUT IN TMPCOR BLOCK
|
||
MOVN T2,T1 ;[146] GET NEGATIVE NO. OF WORDS READ
|
||
HRLZS T2,T2 ;[146] PUT IN LH
|
||
HRRM T5,T2 ;[146] GET BEGINNING ADDR OF FILE READ
|
||
SUBI T2,1 ;[146] MAKE IT AN IOWD
|
||
MOVEM T2,TMPNAM+1 ;[146] SET UP TMPCOR BLOCK
|
||
MOVE T1,[XWD .TCRWF,TMPNAM] ;[146] SET UP TO WRITE FILE
|
||
TMPCOR T1, ;[146] DO IT
|
||
JRST TMPFUL ;[146] NO TMPCOR UUO
|
||
JRST MAIN1 ;[146] RETURN
|
||
|
||
|
||
;DELETE ONE FILE FROM TMPCOR
|
||
TMPDEL: TRNE FLAG,RFLG!XFLG
|
||
JRST TMPERR
|
||
MOVE T1,[XWD .TCRDF,TMPNAM]
|
||
PUSHJ P,TMPXCQ
|
||
JRST [PUSHJ P,ERR3A
|
||
PUSHJ P,GETEND
|
||
JRST PIP2]
|
||
ERRPNT </File deleted: />
|
||
PUSHJ P,P6BIT ;OUTPUT FILE NAME
|
||
FILNAM
|
||
PUSHJ P,TCRLF ;OUTPUT CR-LF
|
||
JRST PIP2
|
||
|
||
;OUTPUT ONE FILE TO TMPCOR
|
||
TMPOCK: SKIPN OQMASK ;[267] ANY OUTPUT WILDS?
|
||
TLNE FL,MFLG ;[267] ANY WILD CARDS?
|
||
JRST TMPERR ;[267] YES, BOMB OUT
|
||
SKIPN T1,MATCH ;[267] OUTPUT NAME GIVEN?
|
||
MOVE T1,ZRF ;[267] NO, USE INPUT
|
||
JRST .+2 ;[267]
|
||
TMPOUT: MOVE T1,DTON ;OUTPUT FILE NAME
|
||
MOVEM T1,TMPNAM ;FOR TMPCOR
|
||
SETZ T1, ;GET FREE WORD
|
||
PUSHJ P,TMPXCT ;DO IT
|
||
JRST TMPNAV ;NO TEMPCOR
|
||
MOVEM T5,TMPNAM+1 ;SAVE START
|
||
HLL T5,IBF+1 ;FORM BYTE POINTER
|
||
HRRZ T2,.JBFF ;TOP OF BUFFER
|
||
INPTMP: PUSHJ P,INP ;GET A BUFFER FULL
|
||
PUSHJ P,TTYZ ;CHECK TTY FOR EOF
|
||
TXNE IOS,IO.EOF ;CHECK FOR EOF ON ALL DEVICES
|
||
JRST TMPEOF ;YES IT WAS
|
||
TMPILP: SOSGE IBF+2 ;ANYTHING IN BUFFER?
|
||
JRST INPTMP ;NO, GET MORE
|
||
ILDB T1,IBF+1 ;GET A CHARACTER
|
||
JUMPE T1,TMPILP ;[331] IGNORE NULLS
|
||
CAIGE T2,(T5) ;TOO MANY CHARS.?
|
||
JRST TMPFUL ;YES, ERROR
|
||
IDPB T1,T5 ;DEPOSIT CHAR
|
||
JRST TMPILP ;LOOP
|
||
|
||
TMPEOF: HRRZ T5 ;CLEAR OUT BYTE POSITION
|
||
SUB T5,TMPNAM+1 ;TOTAL NO OF WORDS
|
||
MOVNS T5 ;NEGATE IT
|
||
HRLM T5,TMPNAM+1 ;MAKE IOWD
|
||
MOVE T1,[XWD .TCRWF,TMPNAM] ;SET TO WRITE
|
||
TMPCOR T1, ;DO IT
|
||
JRST TMPFUL ;FAILED, NOT ENOUGH ROOM
|
||
JRST PIP2 ;ONLY ONE BUFFER ALLOWED
|
||
|
||
;SET UP AND XCT TMPCOR UUO
|
||
TMPXCQ: MOVE T2,FILNAM ;GET FILE NAME
|
||
SKIPE QMASK ;CANN'T HANDLE WILD CHARS. YET
|
||
JRST TMPERR ;YES
|
||
MOVEM T2,TMPNAM ;PUT IN LOOKUP BLOCK
|
||
TMPXCT: MOVSI T2,-1000 ;[403] ALLOW 1000 WORDS
|
||
HRR T2,.JBFF ;WHERE TO PUT CHARS.
|
||
HRRZ T5,.JBREL ;GET TOP OF CORE
|
||
CAIGE T5,1000(T2) ;[403] WILL BUFFER FIT IN
|
||
JRST [ADDI T5,1000 ;[403] ASK FOR ENUF CORE
|
||
CORE T5, ;TRY TO GET IT
|
||
JRST OMODER ;FAILED
|
||
JRST .+1] ;OK NOW
|
||
MOVEM T2,TMPNAM+1 ;STORE IN LOOKUP BLOCK
|
||
SOS TMPNAM+1 ;MAKE AN IOWD
|
||
TMPCOR T1, ;THIS IS IT
|
||
POPJ P, ;ERROR RETURN
|
||
MOVE T5,T1 ;NUMBER OF WORDS
|
||
ADD T5,.JBFF ;FIX UP JOBFF JUST IN CASE
|
||
EXCH T5,.JBFF ;PUT START OF BUFFER IN T5
|
||
JRST CPOPJ1 ;AND SKIP RETURN
|
||
|
||
TMPERR: ERRPNT </?Command not yet supported for TMPCOR!/>
|
||
|
||
TMPFUL: ERRPNT </?Not enough room in TMPCOR:!/>
|
||
|
||
TMPHDR: ASCIZ / TMPCOR words free
|
||
/
|
||
TMPNAV: ERRPNT </?TMPCOR not available!/>
|
||
>
|
||
|
||
|
||
|
||
SUBTTL BLOCK 0 CODE
|
||
|
||
;THIS CODE COPIES BLOCK 0,1,2 ONLY. I/O MUST BE DECTAPE.
|
||
;MODE SELECTED MUST BE BIT 100, 20 AND NOT DUMP MODE (134).
|
||
|
||
BLOCK0: TRC AUXFLG,DTAIN+DTAOUT
|
||
TRCE AUXFLG,DTAIN+DTAOUT;FORCE DTA I/O
|
||
JRST ERR7A
|
||
MOVX 0,IO.NSD+IO.UWC+.IOBIN
|
||
MOVEM 0,OMOD
|
||
MOVEM 0,ININI1
|
||
MOVSI 0,OBF
|
||
MOVEM 0,ODEV+1
|
||
MOVEI 0,IBF
|
||
MOVEM 0,DEVICE+1
|
||
OPEN OUT,OMOD
|
||
JRST ERR1 ;UNAVAILABLE
|
||
OUTBUF OUT,1
|
||
OUTPUT OUT,
|
||
OPEN IN,ININI1
|
||
JRST ERR1A
|
||
INBUF IN,1
|
||
SETZB T1,BL0CNT
|
||
BL4: USETI IN,(T1)
|
||
INPUT IN, ;READ
|
||
GETSTS IN,IOS
|
||
TXNN IOS,IO.ERR ;ANY ERRORS
|
||
JRST BL1 ;NO
|
||
JSP T5,INICN2
|
||
PUSHJ P,QUEST
|
||
ERRPN2 </Input device />
|
||
PUSHJ P,P6BIT
|
||
DEVICE
|
||
ERRPN2 </: />
|
||
MOVE T2,AUXFLG ;DECTAPE FOR ERROR MESSAGE
|
||
ANDI T2,DTAIN
|
||
PUSHJ P,IOERR ;PRINT ERROR TYPE
|
||
BL1: HRLZ T5,IBF+1
|
||
HRR T5,OBF+1
|
||
MOVEI T4,177(T5)
|
||
BLT T5,(T4) ;SHIFT DATA TO OUTPUT BUFFER
|
||
USETO OUT,@BL0CNT
|
||
OUTPUT OUT, ;WRITE BLOCK
|
||
PUSHJ P, OUTP1 ;CHECK ERRORS
|
||
AOS T1,BL0CNT
|
||
CAIGE T1,3
|
||
JRST BL4
|
||
BL3: RELEASE OUT, ;IF ANY, PDL IS RESET
|
||
JRST PIP2
|
||
|
||
|
||
SUBTTL MAGTAPE ROUTINES
|
||
|
||
;TEST TO SEE IF MORE THAN ONE OF THE LOWEST EIGHT MTA FLAGS
|
||
;HAVE BEEN SELECTED. IF SO ERROR. OTHERWISE, IMPLEMENT
|
||
;REQUEST. T1, T3, T6 SET AT ENTRY BY INLOOK OR OUTLOOK
|
||
;TO EQUAL AUX/AUXOUT, AB/ABOUT,INIMTA/INOMTA
|
||
|
||
MT1: HRRZ T2,T1 ;T1 CONTAINS REQUEST
|
||
ANDI T2,-1(T2) ;KNOCK OFF RIGHT MOST 1
|
||
TRNE T2,377
|
||
JRST MTR1 ;PRINT ERROR MESSAGE
|
||
|
||
TRNN T1,MTAFLG+MTBFLG+MTWFLG+MTTFLG+MTFFLG+MTUFLG+MTDFLG+MTPFLG
|
||
JRST MTC1
|
||
CAIN T6,INOMTA ;OUTPUT DEVICE?
|
||
TRNE CALFLG,DVSWTH ;YES, AN EXPLICIT DEVICE?
|
||
JRST .+2 ;INPUT DEVICE, OR EXPLICIT OUTPUT ONE
|
||
JRST ERR8 ;NOT OUTPUT DEVICE SEEN
|
||
PUSHJ P,(T6) ;THERE IS A REQUEST
|
||
;GO TO INIMTA/INOMTA
|
||
|
||
;PERFORM POSITIONING REQUESTS
|
||
TRNE T1,MTUFLG
|
||
JRST UNLOAD
|
||
|
||
TRNE T1,MTWFLG
|
||
JRST REWIND
|
||
|
||
TRNE T1,MTFFLG
|
||
JRST MARKEF
|
||
|
||
TRNE T1,MTTFLG
|
||
JRST SLEOT
|
||
|
||
TRNE T1,MTBFLG+MTPFLG ;MULTIPLE REQUESTS ALLOWED
|
||
JRST BSPF
|
||
|
||
TRNE T1,MTAFLG+MTDFLG ;MULTIPLE REQUESTS ALLOWED
|
||
JRST ADVF
|
||
|
||
|
||
;T1=AUX,AUXOUT. T3=AB,ABOUT. T6=INIMTA,INOMTA.
|
||
|
||
MTCONT: RELEAS TAPE,
|
||
TRNN T1,MTUFLG ;UNLOAD?
|
||
TRNE CALFLG,NSWTCH ;IS THERE AN INPUT DEVICE?
|
||
CAIE T6,INOMTA ;OUTPUT TAPE?
|
||
POPJ P, ;NO
|
||
JRST PIP2 ;YES, END OF COMMAND
|
||
|
||
;ROUTINE TO CHECK AND SET DENSITY FOR NEW DEVICE
|
||
|
||
MTC1: MOVE T4,T1 ;GET AUX/AUXOUT
|
||
;**;[510] Change 1 line at MTC1+1 RLUSK 25-Feb-81
|
||
ANDI T4,MT2FLG+MT5FLG+MT8FLG+MT16FL+MT62FL ;[510] CHECK # OF REQ'S
|
||
ANDI T4,-1(T4) ;REMOVE RIGHT MOST 1
|
||
JUMPN T4,MTR1 ;MORE THAN 1 REQ, ERROR
|
||
|
||
MOVX T4,.IOASL ;ASCII LINE STANDARD MODE
|
||
|
||
TRNE T1,MT2FLG
|
||
TXO T4,DENS2 ;SET 200 BPI
|
||
|
||
TRNE T1,MT5FLG
|
||
TXO T4,DENS5 ;SET 556 BPI
|
||
|
||
TRNE T1,MT8FLG
|
||
TXO T4,DENS8 ;SET 800 BPI
|
||
|
||
;**;[510] Insert 4 instructions after MTC1+10 RLUSK 25-Feb-81
|
||
TRNE T1,MT16FL ;[510]
|
||
TXO T4,DENS0 ;[510] SET 1600 BPI USING TAPOP. AFTER OPEN
|
||
|
||
TRNE T1,MT62FL ;[510]
|
||
TXO T4,DENS0 ;[510] SET 6250 USING TAPOP. AFTER OPEN
|
||
|
||
TRNE T1,MTEFLG
|
||
TXO T4,PARE ;EVEN PARITY
|
||
|
||
POPJ P,
|
||
|
||
|
||
;REWIND AND UNLOAD
|
||
|
||
UNLOAD: MTUNL. TAPE,
|
||
JRST MTCONT
|
||
|
||
;REWIND ONLY
|
||
|
||
REWIND: MTREW. TAPE,
|
||
MTWAIT: MTWAT. TAPE,
|
||
JRST MTCONT
|
||
|
||
|
||
|
||
|
||
;MARK END OF FILE
|
||
|
||
MARKEF: MOVE T5,MTANAM
|
||
EXCH T5,ODEV
|
||
MTEOF. TAPE,
|
||
MTWAT. TAPE, ;[404] WAIT FOR THE I/O TO FINISH
|
||
GETSTS TAPE,IOS
|
||
PUSHJ P,OUTP3
|
||
SETSTS TAPE,(IOS)
|
||
MOVEM T5,ODEV
|
||
JRST MTCONT
|
||
|
||
|
||
|
||
|
||
;SKIP TO LOGICAL END OF TAPE.
|
||
|
||
SLEOT: MTEOT. TAPE,
|
||
JRST MTWAIT
|
||
|
||
;BACKSPACE MTA 1 FILE, T3=AB OR ABOUT
|
||
;AB/ABOUT = INPUT/OUTPUT DEVICE
|
||
|
||
BSPF: HRRE T3,T3 ;T3=NO. OF FILES/RECORDS TO BACK
|
||
MOVEI T5,7 ;BSPR
|
||
TRNN T1,MTPFLG ;BSPR?
|
||
MOVEI T5,17 ;BSPF
|
||
BSPF2: MTWAT. TAPE, ;WAIT
|
||
STATO TAPE,IO.BOT ;AT LOAD POINT?
|
||
JRST BSPF3 ;NOT LDP
|
||
ERRPNT </?Load point before end of backspace request!/>
|
||
|
||
BSPF3: MTAPE TAPE,(T5) ;BACKSPACE FILE/RECORD
|
||
SOJGE T3,BSPF2 ;MORE FILES/RECORDS TO BSP?
|
||
;NO, END OF LOOP
|
||
MTWAT. TAPE,
|
||
GETSTS TAPE,IOS
|
||
TRNN T1,MTBFLG ;BACKSPACE FILE?
|
||
JRST MTCONT ;NO
|
||
TXNN IOS,IO.BOT ;IF AT LOAD POINT
|
||
MTSKF. TAPE, ;(MOVE FWD. OVER EOF)
|
||
JRST MTCONT ;DON'T SKIP A RECORD
|
||
|
||
|
||
|
||
;ADVANCE MTA 1 FILE, T3=AB OR ABOUT
|
||
;AB/ABOUT = INPUT/OUTPUT DEVICE
|
||
|
||
ADVF: HLRE T3,T3 ;T3=NO. FILES (OR REC) TO ADVANCE
|
||
MOVEI T5,6 ;ADVR
|
||
TRNN T1,MTDFLG ;ADVR ?
|
||
MOVEI T5,16 ;ADVF
|
||
MTAPE TAPE,(T5) ;ADVANCE FILE/RECORD
|
||
SOJG T3,.-1 ;MORE FILES/RECORDS TO ADV?
|
||
;NO, END OF LOOP
|
||
SKIPGE T3 ;WAS ITEXPLICIT ZERO
|
||
MTBSR. TAPE, ;YES , POSITION BEFORE EOF MARK
|
||
MTWAT. TAPE, ;WAIT...
|
||
GETSTS TAPE,IOS
|
||
TXZE IOS,IO.EOF
|
||
SETSTS TAPE,(IOS) ;END OF FILE
|
||
JRST MTCONT
|
||
|
||
;ROUTINE TO INITIALIZE MAGTAPE FOR INPUT OR OUTPUT
|
||
|
||
INOMTA: SKIPA T2,ODEV ;INIT OUTPUT DEVICE
|
||
INIMTA: MOVE T2,DEVICE ;INIT INPUT DEVICE
|
||
SETZM MTANAM+1
|
||
MOVEM T2,MTANAM
|
||
TRNN CALFLG,NEWDEV
|
||
JRST INMTA ;SAME DEVICE
|
||
PUSHJ P,MTC1 ;NEW DEVICE
|
||
HRRZM T4,INMTA1 ;SET MODE,DENSITY,PARITY
|
||
|
||
INMTA: OPEN TAPE,INMTA1
|
||
JRST ERR1B
|
||
;**;[510] Insert 2 lines after INMTA+1 RLUSK 25-Feb-81
|
||
TRNE T1,MT16FL!MT62FL ;[510] DO WE NEED TO SET DENSITY NOW?
|
||
PUSHJ P,SETBPI ;[510] YES, GO DO TAPOP.
|
||
POPJ P,
|
||
|
||
;**;[510] Insert routine after INMTA+2 RLUSK 25-Feb-81
|
||
;[510] ROUTINE TO SET TAPE DENSITY TO 1600 BPI OR 6250 BPI
|
||
|
||
SETBPI: PUSH P,T2 ;[510] SAVE AN AC
|
||
MOVE T2,[EXP .TFDEN+.TFSET] ;[510] SET UP TAPOP. BLOCK
|
||
MOVEM T2,BPIARG ;[510] TO SET DENSITY
|
||
MOVEI T2,TAPE ;[510] FOR THE TAPE CHANNEL
|
||
MOVEM T2,BPIARG+1 ;[510]
|
||
MOVE T2,[EXP .TFD16] ;[510] ASSUME 1600 BPI
|
||
TRNE T1,MT62FL ;[510] IS IT REALLY 6250?
|
||
MOVE T2,[EXP .TFD62] ;[510] YES -- SET FOR 6250 BPI
|
||
MOVEM T2,BPIARG+2 ;[510] PUT VALUE IN ARG BLOCK
|
||
MOVE T2,[XWD BPILEN,BPIARG] ;[510] SET UP FOR TAPOP. UUO
|
||
TAPOP. T2, ;[510] SET THE DENSITY
|
||
JRST BPIERR ;[510] SOMETHING WENT WRONG
|
||
POP P,T2 ;[510] RESTORE THE AC
|
||
POPJ P, ;[510] RETURN
|
||
|
||
;[510] PRINT ERROR MESSAGE AND DIE
|
||
BPIERR: ERRPNT <\?TAPOP. to set MTA: density failed!\> ;[510]
|
||
|
||
;ROUTINE TO PRINT ERROR MSG IF MORE THAN 1/8 FLAGS SET
|
||
|
||
MTR1: MOVE T4,DEVICE ;TENTATIVELY SET I/DEV
|
||
CAIE T6,INIMTA ;INPUT DEVICE?
|
||
MOVE T4,ODEV ;NO, SET O/DEV
|
||
ERRPNT </?Too many requests for />
|
||
PUSHJ P,P6BIT
|
||
T4
|
||
JRST PIP2
|
||
|
||
SUBTTL CONSTANTS/STORAGE/VARIABLES
|
||
|
||
;CONSTANTS
|
||
|
||
OKBD: POINT 6,DTON+2,23 ;FOR NO. 1K BLOCKS
|
||
OKB: POINT 6,ZRF+2,23
|
||
DATE: POINTR ZRF+2,RB.CRD
|
||
DATED: POINTR DTON+2,RB.CRD ;CREATION DATE /X
|
||
XDATE: POINTR ZRF+1,RB.CRX ;[132] HIGH ORDER PART
|
||
XDATED: POINTR DTON+1,RB.CRX ;[132] ...
|
||
ZRO: ASCII /00000/
|
||
OPTRA: XWD 700,LBUF-1 ;INITIAL POINTER TO LINE BUFFER
|
||
K1: 432150643240 ;MAGIC ASCII INCREMENT BY 10
|
||
K3: 375767737576 ;CHARACTER MASK 077
|
||
K4: 432150643216 ;MAGIC ASCII INCREMENT BY 1
|
||
TWL: OCT 12
|
||
IFN FTDSK,<
|
||
PRPTL: POINTR PROTS,RB.PRV ;PROTECTION FOR RENAME
|
||
PRPTD: POINTR DTON+2,RB.PRV
|
||
PRNM: POINTR ZRF+2,RB.PRV ;PROT FOR /R
|
||
TIME: POINTR ZRF+2,RB.CRT ;CREATE TIME /X
|
||
TIMED: POINTR DTON+2,RB.CRT ;DEPOSIT CREATE TIME
|
||
ADATE: POINTR FILNAM+1,RB.ACD ;[132] 15 BIT ACCESS DATE
|
||
CTIME: POINTR FILNAM+2,RB.CRT ;CREATION TIME
|
||
CDATE: POINTR FILNAM+2,RB.CRD ;CREATION DATE
|
||
XCDATE: POINTR FILNAM+1,RB.CRX ;[132] HIGH ORDER BIT
|
||
PROT: POINTR FILNAM+2,RB.PRV ;PROTECTION
|
||
MODE: POINTR FILNAM+2,RB.MOD ;RECORDING MODE
|
||
>
|
||
MONTH: ASCII /-Jan-/
|
||
ASCII /-Feb-/
|
||
ASCII /-Mar-/
|
||
ASCII /-Apr-/
|
||
ASCII /-May-/
|
||
ASCII /-Jun-/
|
||
ASCII /-Jul-/
|
||
ASCII /-Aug-/
|
||
ASCII /-Sep-/
|
||
ASCII /-Oct-/
|
||
ASCII /-Nov-/
|
||
ASCII /-Dec-/
|
||
|
||
MNPT: POINT 7,MONTH
|
||
|
||
|
||
;PROGRAM STORAGE AREA
|
||
SWSEG
|
||
LOW:
|
||
IFN TEMP,<
|
||
TMPPNT: BLOCK 1
|
||
TMPFLG: BLOCK 1
|
||
TMPEND: BLOCK 1
|
||
TMPFIL: BLOCK 2
|
||
TMPNAM: BLOCK 2 >
|
||
BL0CNT: BLOCK 1 ;COUNT
|
||
IFN CCLSW,<
|
||
CFI: BLOCK 3 ;STORED COMMAND INPUT HEADER
|
||
CFILE: BLOCK 4 ;NAME OF STORED CCL COMMAND FILE
|
||
COMFLG: BLOCK 1 ;-1 IF STORED COMMANDS,0 IF TTY>
|
||
SVIBF: BLOCK 1 ;SAVE INIT MODE (INPUT)
|
||
SVOBF: BLOCK 1 ;SAVE INIT MODE (OUTPUT)
|
||
IBF: BLOCK 3 ;INPUT BUFFER HEADER
|
||
OBF: BLOCK 3 ;OUTPUT BUFFER HEADER
|
||
OBI: BLOCK 3 ;OUTPUT BUFFER INPUT HEADER FOR DSK /Z
|
||
TFI: BLOCK 3 ;CONSOLE INPUT HEADER
|
||
TFO: BLOCK 3 ;CONSOLE OUTPUT HEADER
|
||
SAVAC: BLOCK 5 ;SAVE SOME ACS
|
||
NAMTAB: BLOCK 24 ;FOR (XD) ON DSK OR RENAME
|
||
NAMASK: BLOCK 24 ;[124] CORRESPONDING NAMTAB MASK
|
||
IFN FTDSK,<
|
||
JOBPPN: BLOCK 1 ;[163] OUR PPN
|
||
SYSPPN: BLOCK 1 ;[163] PPN OF SYS:
|
||
MFDPPN: BLOCK 1 ;[163] PPN OF MFD
|
||
;**;[514] Insert FFAPPN after MFDPPN: RLUSK 12-June-81
|
||
FFAPPN: BLOCK 1 ;[514] PPN OF FFA: (FREE FILE ACCESS)
|
||
DEVPP: BLOCK 1 ;[163] PPN OF CURRENT ERSATZ
|
||
TDSK: BLOCK 1 ;[163] LAST DEV: RETURNED IN STR SEARCH
|
||
LOCNAM: BLOCK 1 ;POINTER FOR NAMTAB
|
||
>;[163] END IFN FTDSK
|
||
LOCMSK: BLOCK 1 ;[124] LOC OF MASK TABLE
|
||
DIRST: BLOCK 1 ;LOC. OF LAST DIR. FILE NAME REFERENCED
|
||
DIRST1: BLOCK 1 ;SAVE INITIAL DIRST
|
||
SQNUM: BLOCK 1 ;CURRENT SEQUENCE NUMBER
|
||
DTJBFF: BLOCK 1 ;VALUE OF JOBFF AFTER CONSOLE I/O BUFFERS
|
||
SVJBFF: BLOCK 1 ;INITIAL VALUE OF JOBFF
|
||
SVJBF1: BLOCK 1 ;VALUE OF JOBFF AFTER OUTBUF UUO
|
||
OPTR: BLOCK 1 ;CURRENT POINTER FOR LINE PRESCAN
|
||
DTONSV: BLOCK 2 ;OUTPUT DIRECTORY ENTRY COPY
|
||
SVPTR1: BLOCK 1 ;POINTER TO LAST PRINTING CHARACTER
|
||
SVPTR2: BLOCK 1 ;POINTER TO LAST GENERATED TAB
|
||
TLBRKT: BLOCK 1 ;TOTAL PARENS ON THIS LINE
|
||
TOTBRK: BLOCK 1 ;TOTAL CUMULATIVE PARENS
|
||
TABCT: BLOCK 1 ;SPACES TO NEXT TAB STOP
|
||
SPCT: BLOCK 1 ;CONSECUTIVE SPACES COUNTER
|
||
ABOUT: BLOCK 1 ;AB FOR OUTPUT UNIT
|
||
AUXOUT: BLOCK 1 ;AUX FOR OUTPUT UNIT
|
||
PROTS: BLOCK 1 ;SAVE PROTECTION
|
||
CDRCNT: BLOCK 1 ;COUNT CARD COLS.
|
||
PTRPT: BLOCK 1 ;STORE SEQ. NO. POINTER
|
||
|
||
|
||
;THIS IS A BLOCK OF VARIABLE LOCATIONS, ZEROED AT THE START OF EACH
|
||
;PIP RUN, I.E EACH TIME PIP TYPES *.
|
||
|
||
FZERO==.
|
||
;***** DO NOT SPLIT THIS BLOCK *****
|
||
IFN FTDSK,<
|
||
RIBFIR: BLOCK 1 ;NUMBER OF WORDS IN LOOKUP
|
||
PPN: BLOCK 1 ;PROJ-PROG FOR EXTENDED LOOKUP>
|
||
FILNAM: BLOCK 1 ;FILE NAME FROM COMMAND SCANNER
|
||
FILEX: BLOCK 1 ;EXTENSION
|
||
PR: BLOCK 1 ;PROTECTION
|
||
PP: BLOCK 1 ;P-P NUMBER TYPED BY USER
|
||
;**;[520] Change at PP+1L RLUSK 7-January-1982
|
||
IFN FTDSK,<BLOCK .RBPCA+1+RIBFIR-.> ;[520] TOTAL LENGTH OF LOOKUP BLOCK
|
||
;***** END OF BLOCK *****
|
||
;**;[520] Change at DTON+1L RLUSK 7-January-1982
|
||
DTONEX: BLOCK 2 ;[273] EXTENDED BLOCK FOR DISK
|
||
DTON: BLOCK 4 ;OUTPUT DIR. ENTRY
|
||
BLOCK .RBPCA-5 ;[520] [273] REST OF BLOCK
|
||
DEVA: BLOCK 1 ;SAVE INPUT DEV. NAME
|
||
NO.: BLOCK 1 ;GENERATE FILE NAMES
|
||
;**;[520] Change at ZRF+1L RLUSK 7-January-1982
|
||
ZRFEX: BLOCK 2 ;[273] EXTENDED BLOCK FOR DISK
|
||
ZRF: BLOCK 4 ;LOOKUP FILE NAMES
|
||
BLOCK .RBPCA-5 ;[520] [273] REST OF BLOCK
|
||
MTAREQ: BLOCK 1 ;STORE MTA REQUESTS
|
||
|
||
COMEOF: BLOCK 1 ;EOF INDICATOR
|
||
COMCNT: BLOCK 1 ;COMBUF CHARS COUNT
|
||
COMPTR: BLOCK 1 ;POINTER FOR STORING/EXTRACTING CS
|
||
|
||
|
||
;**;[501] Insert at COMPTR+1 RLUSK 30-Oct-80
|
||
SPLAT1: BLOCK 1 ;[501] SET WHEN "*" SEEN IN FILNAM OR
|
||
;[501] EXT, SO NO EMBEDDED "*" ALLOWED
|
||
AUX: BLOCK 1 ;COPT AUXFLG (MTA)
|
||
IFN FTDSK,<
|
||
PPP: BLOCK 1 ;PERMANENT PPN
|
||
FNPPN: BLOCK 1 ;RESERVE #P-P
|
||
UFDPPN: BLOCK 1 ;[211] PPN FOR LSTU8 TO PRINT FROM, MAY BE PATH
|
||
ESWTCH: BLOCK 1 ;-1 INDICATES END OF LINE
|
||
XNAME: BLOCK 1 ;-1 INDICATES SCAN OVERSHOOT WITH A NULL NAME
|
||
;0 INDICATES NO SCAN OVERSHOOT
|
||
;CONTAINS OVERSHOOT NAME IF NOT NULL
|
||
AB: BLOCK 1 ;MTA VALUE SWITCHES
|
||
|
||
PTHADD: BLOCK 1 ;FIRST ADDRESS OF FULL PATH
|
||
PTHSCN: BLOCK 1 ;SCAN SWITCH
|
||
PTHPPN: BLOCK 1 ;PATH PPN
|
||
PTHSFD: BLOCK PTHLEN+1 ;SFD LIST + 0
|
||
|
||
DEFPTH: BLOCK PTHLEN+4 ;DEFAULT PATH
|
||
PTHOUT: BLOCK PTHLEN+4 ;OUTPUT PATH
|
||
WRKPTH: BLOCK PTHLEN+4 ;[207] WORK AREA FOR PATHING
|
||
COMPTH: BLOCK PTHLEN+4 ;[211] COMPARE SAVE AREA TO SEE IF NEW PPN TYPED
|
||
SAVPTH: BLOCK PTHLEN+4 ;[211] INPUT PATH SAVE AREA FOR /Z
|
||
|
||
INDCHR: BLOCK .DCUPN+1 ;[323] BLOCK FOR INPUT DSKCHR FOR /R
|
||
OUDCHR: BLOCK .DCUPN+1 ;[323] BLOCK FOR OUTPUT DSKCHR FOR /R
|
||
RENDCH: BLOCK 3 ;[323] BLOCK FOR STRUCTURE ACCEPTANCE TESTS
|
||
;[323] FOR /R/D
|
||
|
||
;**;[521] Change at CHKPTH RLUSK 8-Jan-82
|
||
CHKPTH: BLOCK .PTMAX+1 ;[521][147] TO CHECK REAL PATH OF FILE
|
||
MATCH: BLOCK 2 ;NAME AND EXT FOR /L OR (RX)
|
||
TAPEID: BLOCK 1 ;TAPE ID IN SIXBIT
|
||
QMASK: BLOCK 2 ;MASK FOR MATCHING FILE NAME AND EXT
|
||
OQMASK: BLOCK 2 ;SAME BUT FOR OUTPUT
|
||
STRARG: BLOCK 3 ;ARGUMENTS FOR GOBSTR UUO
|
||
DSCARG: BLOCK .DCSNM+1 ;[372] DSKCHR ARG BLOCK
|
||
GENERI=STRARG+2 ;FILE STRUCTURE NAMES IF GENERIC DSK
|
||
LZERO==.-1 ;THIS IS THE END OF THE INIT. ZEROED BLOCK.
|
||
|
||
PDL: BLOCK 20 ;PUSHDOWN LIST
|
||
|
||
LBUF: BLOCK 204 ;LINE BUFFER. ALLOW FOR FORTRAN DATA
|
||
LBUFE: BLOCK 1 ;ALLOW FOR OVERFLOW
|
||
|
||
DBUF: BLOCK 204 ;DIRECTORY BUFFER
|
||
|
||
OMOD: BLOCK 1 ;OUTPUT DEVICE MODE, STATUS
|
||
ODEV: BLOCK 2 ;OUTPUT DEVICE NAME
|
||
;BUFFER HEADER(S) LOC
|
||
|
||
ININI1: BLOCK 1 ;INPUT DEVICE
|
||
DEVICE: BLOCK 2
|
||
|
||
IFN CCLSW,<
|
||
RENSN: BLOCK 1 ;-1 IF RENAME MESSAGE SEEN
|
||
RUNDEV: BLOCK 1 ;RUN UUO DEVICE
|
||
RUNFIL: BLOCK 3 ;FILE NAME
|
||
RUNPP: BLOCK 2
|
||
CCLINI: BLOCK 3 ;CCL INPUT DEVICE OPEN BLOCK>
|
||
|
||
DEVERR: BLOCK 1
|
||
DERR2: BLOCK 2
|
||
|
||
INMTA1: BLOCK 1
|
||
MTANAM: BLOCK 2
|
||
|
||
|
||
;**;[510] After MTANAM insert 2 lines RLUSK 4-Mar-81
|
||
BPIARG: BLOCK 3 ;[510] ARGBLK FOR TAPOP. IN SETBPI
|
||
BPILEN==.-BPIARG ;[510] ARGUMENT BLOCK LENGTH
|
||
|
||
IFN FTDSK,<
|
||
ADSK1: BLOCK 1 ;OPEN DIRECTORY, MODE
|
||
ADSK: BLOCK 2 ;FILENAME, EXT
|
||
LIN: BLOCK 1 ;COUNT FOR DSK DIR LIST
|
||
PGCNT: BLOCK 1 ;COUNT OF PAGES FOR DSK DIR
|
||
UFDIN: BLOCK 3 ;HEADER FOR READING DISK DIRECTORY
|
||
UFD: BLOCK 4 ;[P,P] OR *FD*
|
||
;UFD OR SYS
|
||
BLKSUM: BLOCK 1 ;TOTAL NBR BLOCKS PER PROJ. PROG NBR
|
||
LEVEL: BLOCK 1 ;-2 IF LEVEL D DISK SERVICE
|
||
JOBPTH: BLOCK PTHLEN+4 ;DEFAULT JOB PATH
|
||
DEVPTH: BLOCK 3 ;[203] AREA FOR DOING PATH. ON DEVICE
|
||
>
|
||
IFN RIMSW,<
|
||
CHKSM: BLOCK 1 ;CHECKSUM ACCUMULATED (RIM10B)
|
||
POINTA: BLOCK 1 ;SAVE POINTER FOR RIM10B BLOCK
|
||
LENGTH: BLOCK 1 ;CALC. LENGTH OF RIM10 FILE
|
||
ZERO: BLOCK 1 ;NO OF 0'S NEEDED TO FILL SPACES IN
|
||
COUNT: BLOCK 1 ;RIM10B COUNT WORDS OUT
|
||
XFERWD: BLOCK 1 ;RIM-10-B XFER WD. ;FILE.
|
||
>
|
||
|
||
VAR ;JUST IN CASE
|
||
LOWTOP: ;LAST DATA LOCATION PLUS ONE
|
||
SWSEG
|
||
|
||
SUBTTL RIM LOADER
|
||
IFE RIMSW,<
|
||
RIMTB: ERRPNT <Z? /Y switch option not available this assembly!Z>
|
||
XLIST>
|
||
IFN RIMSW,<
|
||
LODAL==16 ;LENGTH OF RIM LOADER
|
||
HLTBIT==200 ;CHANGES JRST TO HALT
|
||
BLKSZ==17 ;NORMAL BLOCK LENGTH IN RIM10B
|
||
.JBDA==140 ;START OF USER AREA
|
||
|
||
RIMTB: TRNN AUXFLG,DTAIN!DSKIN!MTAIN
|
||
JRST ERR5B
|
||
PUSHJ P,ININIT
|
||
OUTPUT OUT,
|
||
PUSHJ P,FNSET ;SEE WHAT WE HAVE FOR FILNAM.EXT
|
||
TRNN CALFLG,FNEX ;SINGLE FILE SPECIFICATION?
|
||
JRST [MOVE 0,[FILNAM,,ZRF] ;YES, DON'T READ DIRECTORY
|
||
BLT 0,ZRF+3 ;SET UP FILE NAME,EXT, AND PPN
|
||
MOVE 0,ZRF+3 ;[273] GET PPN
|
||
MOVEM 0,ZRFEX+.RBPPN ;[273] FOR EXTENDED
|
||
SETZM GENERI ;JUST IN CASE
|
||
JRST RIMTB0+2]
|
||
TRNE AUXFLG,DTAIN
|
||
PUSHJ P,DTADIR
|
||
IFN FTDSK,<
|
||
TRNE AUXFLG,DSKIN
|
||
PUSHJ P,DSKDIR>
|
||
RIMTB0: PUSHJ P,LOOK ;GET FILE TO CONVERT
|
||
JRST MAIN1 ;NONE LEFT
|
||
IFN FTDSK,<PUSHJ P,SETPTH ;SEE IF FULL PATH
|
||
MOVEM 0,ZRFEX+.RBPPN ;[273] NON-SKIP RETURN, USE IT
|
||
MOVE T1,LEVEL ;[273] GET EXTENDED INDEX
|
||
TRNN AUXFLG,DSKIN ;[273] USE IF DISK
|
||
>;[273] END IFN FTDSK
|
||
SETZ T1, ;[273] IF NOT DISK, DO SHORT LOOKUP
|
||
LOOKUP IN,ZRF(T1) ;[273]
|
||
JRST ERR3
|
||
MOVEI 0,254000
|
||
HRLM 0,XFERWD ;ASSUME JRST
|
||
HLRZ 0,ZRF+1
|
||
CAIN 0,'RTB'
|
||
JRST RIMTB1
|
||
CAIE 0,'SAV'
|
||
CAIN 0,'RMT'
|
||
JRST RIMTB2
|
||
JRST ERR3B ;NO LEGAL EXTENSION - SAVE JOBFF TOO
|
||
|
||
RIMTB1: MOVE T1,OBF+1 ;PUNCH RIM10B LOADER
|
||
HRLI T1,RMLODA
|
||
AOS T2,T1 ;XFER IT TO OUTPUT BUFFER
|
||
BLT T1,LODAL(T2)
|
||
ADDI T2,LODAL
|
||
HRRM T2,OBF+1 ;FIX BUFFER POINTER
|
||
MOVNI T2,LODAL
|
||
ADDM T2,OBF+2 ;AND COUNTER
|
||
CLOSE OUT, ;BLANK TAPE
|
||
RIMTB2: PUSHJ P,RINP ;GET FIRST BUFFER
|
||
JRST ERR8A ;FILE OF ZERO LENGTH
|
||
JUMPGE CHR,ERR8A ;FIRST WORD MUST BE POINTER
|
||
HLRZ 0,ZRF+1
|
||
CAIN 0,'SAV'
|
||
JRST RIMTB4 ;"SAV" FILE
|
||
MOVEI T2,^D126(CHR) ;FIND VALUE OF .JBSA
|
||
MOVEI T3,.JBDA-1
|
||
CAMGE T2,T3 ;(JOBDA) IS FIRST LOC. OF USER PROF,
|
||
JRST ERR8A ;NO, ERROR
|
||
MOVE T1,IBF+1
|
||
MOVEI T3,.JBSA
|
||
PUSHJ P,RMS1
|
||
HRRM CHR,XFERWD ;SAVE TRANSFER WORD
|
||
MOVEI T3,.JBFF
|
||
MOVE T1,IBF+1
|
||
PUSHJ P,RMS1
|
||
HRRZM CHR,LENGTH ;SAVE (JOBFF)
|
||
HLRZ 0,ZRF+1
|
||
CAIN 0,'RTB' ;RIM 10B CONVERSION
|
||
JRST RIMTB4
|
||
|
||
;RIM10 1ST WD IS -N,X X IS 1ST WORD IN DATA BLOCK
|
||
;CONTAINING FIRST NON-ZERO WORD AFTER END
|
||
;OF JOBDATA AREA, FROM THERE TO JOBFF GIVES
|
||
;VALUE OF N. XFER ADD. COMES FROM JOBSA.
|
||
|
||
RMT1: MOVEI T1,.JBDA ;FIRST LOC. AVAILABLE TO USER
|
||
LDB CHR,IBF+1
|
||
SUBI T1,1(CHR)
|
||
JUMPLE T1,RMT2 ;CURRENT "X" GT OR EQ JOBDA
|
||
HLRO T2,CHR
|
||
MOVNS T2 ;GET "N"
|
||
AOJ T1, ;GET REL. LOC. OF JOBDA IN BLOCK
|
||
CAMG T1,T2
|
||
JRST RMT2
|
||
AOJ T2, ;NOT IN BLOCK, TRY NEXT
|
||
ADDM T2,IBF+1
|
||
MOVNS T2
|
||
ADDM T2,IBF+2 ;READY TO GET NEXT POINTER
|
||
JRST RMT1
|
||
RMT2: LDB CHR,IBF+1 ;POINTS TO FIRST USEFUL I/O WORD
|
||
MOVNI T1,(CHR)
|
||
ADDB T1,LENGTH
|
||
MOVNS T1 ; -N
|
||
HRLM T1,POINTA
|
||
HRRM CHR,POINTA ;(-N,X) IN POINTA
|
||
SETZM ZERO
|
||
|
||
;NOW OUTPUT RIM10 FILE. IBF+1 POINTS TO FIRST I/O WORD. POINTA HAS I/O
|
||
;WORD FOR FILE. LENGTH = NO. WDS TO GO OUT INCLUDING XFER WD.
|
||
;COUNT COUNTS NO. WDS IN CURRENT LOGICAL BLOCK
|
||
;ZERO COUNTS ZERO FILL
|
||
|
||
MOVE CHR,POINTA
|
||
PUSHJ P,PUT ;PUNCH I/O WORD
|
||
RMT8: LDB CHR,IBF+1 ;-N,X
|
||
MOVEM CHR,POINTA
|
||
HLRO T1,CHR
|
||
MOVNM T1,COUNT
|
||
RMT6: SETZ CHR, ;PUNCH ZERO IF NECESSARY
|
||
SOSL ZERO
|
||
JRST RMT4 ;DEPOSIT ZERO
|
||
SOSGE COUNT
|
||
JRST RMT5 ;GET NEW LOGICAL BLOCK
|
||
PUSHJ P,RINP1
|
||
JRST ERR8A
|
||
RMT4: SOSG LENGTH
|
||
JRST RIMTB8
|
||
PUSHJ P,PUT
|
||
JRST RMT6
|
||
RMT5: HRRZ T1,POINTA
|
||
HLRO T2,POINTA
|
||
SUBM T1,T2
|
||
PUSHJ P,RINP1
|
||
JRST RMT9
|
||
JUMPGE CHR,RIMTB8
|
||
HRRZ CHR,CHR
|
||
SUB CHR,T2
|
||
JUMPL CHR,ERR8A
|
||
MOVEM CHR,ZERO
|
||
JRST RMT8
|
||
RMT9: MOVE CHR,LENGTH
|
||
SOJ CHR,
|
||
MOVEM CHR,ZERO
|
||
SETZ CHR,
|
||
RMT10: SOSGE ZERO
|
||
JRST RIMTB8
|
||
PUSHJ P,PUT
|
||
JRST RMT10
|
||
|
||
;RIM10B: COMES FROM RTB AND SAV FILES. SAV=RTB EXCEPT IT HAS NO
|
||
;RIM LOADER AND NO TRANSFER WORD
|
||
|
||
RIMTB3: PUSHJ P,RINP1 ;NONE, GET NEW POINTER
|
||
JRST RIMTB8 ;EOF
|
||
JUMPL CHR,RIMTB4 ;POINTER WORD
|
||
CAME CHR,XFERWD ;IS IT FINAL JRST XXX
|
||
JRST ERR8A ;NO,ERROR
|
||
JRST RIMTB8 ;YES,OUTPUT IT
|
||
|
||
RIMTB4: LDB CHR,IBF+1
|
||
HRRZM CHR,POINTA ;LOAD WORDS HERE
|
||
HLROM CHR,COUNT
|
||
MOVNS COUNT ;NO. WDS IN THIS BLOCK
|
||
RIMTB7: SKIPN T1,COUNT ;ANY WORDS LEFT IN BLOCK?
|
||
JRST RIMTB3 ;NONE
|
||
SETZM CHKSM ;INITIALIZE CHECKSUM
|
||
CAIL T1,BLKSZ
|
||
MOVEI T1,17
|
||
MOVN T2,T1 ;T1 HAS NO. OF WDS TO GO OUT
|
||
ADDM T2,COUNT ;ADJUST COUNT
|
||
HRL CHR,T2
|
||
HRR CHR,POINTA ;I/O WD IN CHR
|
||
ADDM T1,POINTA ;SET POINTA FOR NEXT TIME
|
||
ADDM CHR,CHKSM ;ADD I/O WD TO CHECKSUM
|
||
RIMTB5: PUSHJ P,PUT ;PUTPUT I/O WORD
|
||
SOJL T1,RIMTB6 ;FINISHED THIS BLOCK
|
||
PUSHJ P,RINP1 ;GET DATA
|
||
JRST ERR8A ;EOF (ILLEGAL)
|
||
ADDM CHR,CHKSM ;CHECKSUM
|
||
JRST RIMTB5
|
||
RIMTB6: MOVE CHR,CHKSM
|
||
PUSHJ P,PUT
|
||
OUTPUT OUT,
|
||
JRST RIMTB7
|
||
RIMTB8: MOVE CHR,XFERWD ;EOF HERE, XFERWD=JOBSA
|
||
TRNN CHR,-1
|
||
TLO CHR,HLTBIT
|
||
HLRZ 0,ZRF+1
|
||
CAIN 0,'SAV' ;NO XFER WD FOR "SAV" FILES
|
||
JRST RIMA
|
||
PUSHJ P,PUT
|
||
SETZ CHR,
|
||
PUSHJ P,PUT ;TRAILING ZERO
|
||
OUTPUT OUT,
|
||
RIMA: CLOSE IN,
|
||
TRNN FLAG,XFLG
|
||
JRST MAIN1 ;END OF SINGLE FILE
|
||
CLOSE OUT,
|
||
JRST RIMTB0
|
||
|
||
|
||
;THIS IS THE I/O SECTION
|
||
|
||
RINP: PUSHJ P,INP
|
||
TXNE IOS,IO.EOF ;EOF?
|
||
POPJ P, ;EOF EXIT
|
||
RINP1: SOSGE IBF+2
|
||
JRST RINP
|
||
ILDB CHR,IBF+1
|
||
JRST CPOPJ1
|
||
|
||
RMS2: SUB T1,T4 ;(IBF+1)+N
|
||
AOJ T1,
|
||
RMS1: LDB CHR,T1 ;GET POINTER
|
||
HRRZ T2,CHR ;X
|
||
HLRO T4,CHR ;-N
|
||
SUB T2,T4 ;X+N IN T2
|
||
CAMGE T2,T3
|
||
JRST RMS2
|
||
SUBI T3,(CHR) ;HOW FAR FROM POINTER?
|
||
ADD T1,T3 ;INCREMENT POINTER
|
||
LDB CHR,T1 ;(JOBSA/FF)
|
||
POPJ P,
|
||
|
||
;THIS IS THE RIM LOADER FOR THE PDP-10
|
||
|
||
RMLODA: PHASE 0
|
||
|
||
XWD -16,0
|
||
ST:! CONO PTR,60
|
||
ST1:! HRRI A,RD+1
|
||
RD:! CONSO PTR,10
|
||
JRST .-1
|
||
DATAI PTR,@TBL1-RD+1(A)
|
||
XCT TBL1-RD+1(A)
|
||
XCT TBL2-RD+1(A)
|
||
A:! SOJA A,
|
||
TBL1:! CAME CKSM,ADR
|
||
ADD CKSM,1(ADR)
|
||
SKIPL CKSM,ADR
|
||
TBL2:! HALT ST
|
||
AOBJN ADR,RD
|
||
ADR:! JRST ST1
|
||
CKSM:! BLOCK 0
|
||
|
||
DEPHASE>
|
||
LIST
|
||
|
||
IFE FTDSK,< END PIP1>
|
||
|
||
SUBTTL DISK DELETE AND RENAME ROUTINES
|
||
;* * * ALL THE FOLLOWING ARE DISK ROUTINES * * *
|
||
|
||
;DISK DELETE AND RENAME ROUTINES
|
||
|
||
SYN AB,STRCNT ;SOMEWHERE TO COUNT NO. OF F/S SEEN
|
||
SYN MTAREQ,SAVSTR ;FIRST F/S NAME SEEN
|
||
|
||
DSKDR0: TLNE FL,TSKOUT ;[312] IS THIS ON TSK:?
|
||
JRST ERR16 ;[312] YES, WELL THAT DOESN'T WORK
|
||
;**;[505] Change one line at DSKDR0+2 RLUSK 25-Nov-80
|
||
TRNN FLAG,DFLG ;[505][370] DELETING?
|
||
;**;[505] Insert 3 lines after DSKDR0+3 RLUSK 25-Nov-80
|
||
JRST RENTST ;[505] NO -- MUST BE A RENAME
|
||
;[505] GO SET UP THE PATHS
|
||
;[505] FOR INPUT AND OUTPUT,
|
||
;[505] RETURN TO DSKDRE
|
||
|
||
DSKDRD: SKIPN T1,DTON+3 ;[355] YES - WAS AN OUTPUT PPN GIVEN?
|
||
JRST DSKDRE ;[355] NO
|
||
TLNN T1,-1 ;[355] YES - IS IT A PATH?
|
||
MOVEI T1,DEFPTH ;[355] YES, POINT IT WHERE IT WILL BE
|
||
MOVEM T1,PPP ;[355] MAKE THE PPN PERMANEN
|
||
MOVE T1,[XWD PTHADD,DEFPTH] ;[355] COPY THE PATH
|
||
BLT T1,DEFPTH+PTHLEN+3 ;[355]
|
||
|
||
DSKDRE: ;[211]
|
||
PUSHJ P,ININIT ;GET DSK AS INPUT DEVICE
|
||
PUSHJ P,INFO ;PRINT FILES DELETED:/RENAMED:
|
||
DSKDR5: PUSHJ P,LOOK ;PREPARE FOR LOOKUP/ENTER
|
||
;OF FILE TO /D OR /R
|
||
JRST DSKDR1 ;ALL THROUGH WITH UFD
|
||
MOVE 0,DEVICE ;[327] GET INPUT DEVICE AND
|
||
PUSHJ P,PSYSP ;[327] RESET DEVPP FOR WILD CARDING
|
||
TRNN FLAG,DFLG ;ONLY MAKE NON-AMBIGUITY CHECK FOR /D
|
||
;**;[535] Replace one line at DSKDR5:+6 DRB 31-Jan-85
|
||
JRST [TLNE FL,MFLG ;[535] /R - WILDCARD?
|
||
TRNN AUXFLG,DSKIN ;[535] YES. ARE WE A DISK?
|
||
JRST DSKDR ;[535] NO, DO THE NORMAL THING
|
||
JRST RENPHY] ;[535] YES. USE EXPLICIT STRUCTURE NAMES
|
||
TRC CALFLG,MATEX!MATFN
|
||
TRCE CALFLG,MATEX!MATFN
|
||
JRST DSKDR+1 ;YES MUST NOT BE AMBIGUOUS
|
||
TLNN CALFLG,MFLG ;TEST FOR ???
|
||
DSKDR: PUSHJ P,INITFS ;INITIALIZE THE F/S SEARCH LIST
|
||
JRST RENFI0 ;[315][261] LEVEL C, OR NOT GENERIC "DSK"
|
||
SETOM STRCNT ;START WITH -1
|
||
PUSH P,DEVICE ;SAVE DSK DEVICE
|
||
|
||
DSKDR3: PUSHJ P,NXTFS ;GET NEXT F/S
|
||
JRST RENFIN ;NO MORE
|
||
PUSH P,ZRFEX+.RBPPN ;[273] SAVE PPN
|
||
PUSHJ P,SETPTH ;SEE IF FULL PATH
|
||
MOVEM 0,ZRFEX+.RBPPN ;[273] NON-SKIP RETURN, USE IT
|
||
MOVX 0,RB.DSL ;[533] GET THE "DON'T SEARCH LIB:" BIT
|
||
IORM 0,ZRFEX+.RBCNT ;[533] TURN IT ON IN OUR LOOKUP BLOCK
|
||
HLLZS ZRFEX+.RBEXT ;[323] CLEAR ANY PREVIOUS ERROR CODES
|
||
;[323] 6.02 CAN RETURN ERROR CODES IN .RBCNT
|
||
LOOKUP IN,ZRFEX ;[273] TRY THIS F/S
|
||
JRST [MOVE T7,(P) ;[400] GET SAVED PPN
|
||
TLNN FL,MFLG ;[400] SINGLE FILE?
|
||
TRNN AUXFLG,SYSFLG;[400] AND ALL:?
|
||
SKIPA ;[400] NO
|
||
MOVEM T7,ZRFEX+.RBPPN;[400] FIX UP ZRFEX
|
||
HRRZ T7,ZRFEX+.RBEXT;[270][250] GET ERROR CODE FROM LOOKUP
|
||
CAILE T7,ERIPP% ;[270][250] FILE NOT FOUND, DON'T PRINT ERROR
|
||
CAIN T7,ERSNF% ;[270][250] SFD NOT FOUND, DON'T PRINT ERROR
|
||
JRST DSKDRF ;[270][250] 0,1,23
|
||
PUSHJ P,DERR5R;[270][250] SOMETHING ELSE, PRINT ERROR
|
||
JRST DSKDRG] ;[270] BUT COUNT FILE AS FOUND
|
||
TLNN FL,MFLG ;[400] SINGLE FILE?
|
||
TRNN AUXFLG,SYSFLG ;[400] AND ALL?
|
||
SKIP 2 ;[400] NO.
|
||
MOVE T7,(P) ;[400] GET SAVED PPN
|
||
MOVEM T7,ZRFEX+.RBPPN;[400] AND FIX UP ZRFEX.
|
||
;**;[521] Change at DSKDR3+25L RLUSK 6-Jan-81
|
||
PUSHJ P,CHKFIL ;[521][147] SEE IF FILE'S PATH IS OK
|
||
JRST DSKDRF ;[521][147] WRONG PATH -- DON'T TOUCH
|
||
SKIPN T1,RENDCH+1 ;[323] ARE WE CHECKING FOR PARTICULAR DEVICES?
|
||
JRST DSKR3A ;[323] NO, SKIP FOLLOWING
|
||
MOVE T2,ZRFEX+.RBDEV ;[323] YES, GET DEVICE FILE WAS FOUND ON
|
||
MOVEM T2,INDCHR+.DCNAM;[323] INTO DSKCHR BLOCK
|
||
MOVE T2,[XWD .DCUPN+1,INDCHR] ;[323] SET POINTER
|
||
DSKCHR T2, ;[323] FIND OUT ABOUT DISK
|
||
JRST DSKR3A ;[323] SOMEHOW DSKCHR HAS GONE AWAY?
|
||
MOVE 0,INDCHR(T1) ;[323] GET STRUCTURE OR PHYSICAL NAME
|
||
ANDCM 0,RENDCH+2 ;[323] AND WITH MASK
|
||
CAME 0,RENDCH ;[323] AND SEE IF SAME STRUCTURE
|
||
JRST DSKDRF ;[323] NO, WE DIDN'T SEE IT THEN
|
||
DSKR3A: ;[323]
|
||
TLNN FL,MFLG ;[313] IF HERE WITH WILD /R
|
||
TRNE AUXFLG,SYSFLG ;[313] OR WITH DEVICE ALL:
|
||
SKIP 1 ;[313] DON'T AMBIGUOUS IT
|
||
JRST DSKDRG ;[313] NEITHER, CHECK AMBIGUITY
|
||
PUSHJ P,DSKR6S ;[315] FIX ANY SYS: RENAMES
|
||
PUSHJ P,ININIT ;[313] OPEN DEVICE
|
||
PUSHJ P,DSKDR6 ;[313] DELETE OR RENAME FILE
|
||
SETZ 0, ;[313] SET STRCNT SPECIALLY
|
||
HLLOM 0,STRCNT ;[313] SO RENFIN WON'T COMPLAIN
|
||
JRST DSKDRF ;[313] AND CONTINUE WITH NEXT STRUCTURE
|
||
DSKDRG: MOVE 0,STRCNT ;[270] GET COUNT
|
||
AOS STRCNT ;INCREMENT COUNT
|
||
JUMPL 0,[MOVE 0,GENERI
|
||
MOVEM 0,SAVSTR ;SAVE FIRST F/S
|
||
JRST DSKDRF] ;AND CONTINUE
|
||
JUMPG 0,DSKDRA ;NOT FIRST TIME
|
||
ERRPN2 </?Ambiguous /> ;GIVE MESSAGE
|
||
PUSHJ P,P6BIT ;PRINT
|
||
SAVSTR ;FIRST F/S
|
||
PUSHJ P,TYPSTR ;AND :
|
||
TLO AUXFLG,AMBIGU ;[371] SET AMBIGUOUS FLAG
|
||
DSKDRA: PUSHJ P,P6BIT ;PRINT THIS F/S
|
||
GENERI
|
||
PUSHJ P,TYPSTR ;FOLLOWED BY COLON SPACE
|
||
DSKDRF: POP P,ZRFEX+.RBPPN ;[273] PUT PPN BACK
|
||
JRST DSKDR3 ;TRY NEXT F/S
|
||
|
||
TYPSTR: MOVEI CHR,":" ;FOLLOW WITH COLON
|
||
PUSHJ P,PUTCON
|
||
MOVEI CHR," " ;AND A SPACE
|
||
JRST PUTCON ;POPJ RETURN
|
||
|
||
;**;[521] Change routine CHKPPN to CHKFIL RLUSK 6-Jan-82
|
||
;[521] THIS ROUTINE NOW CHECKS THE FILE'S PATH AGAINST THE PATH
|
||
;[521] OF THE USER OR SPECIFIED BY THE USER
|
||
|
||
CHKFIL: MOVEI 0,IN ;[521][147] SET UP TO GET PATH OF FILE
|
||
MOVEM 0,CHKPTH ;[521][147] TO COMPARE WITH PATH IN LOOKUP BLK
|
||
MOVE 0,[XWD .PTMAX+1,CHKPTH];[521][147] JUST NEED WHOLE BLOCK
|
||
PATH.
|
||
JRST CPOPJ1 ;[521][147] CAN'T PATH.: ASSUME PPN OK
|
||
MOVE 0,-1(P) ;[521][147] GET PPN SPECIFIED BY LOOKUP
|
||
JUMPE 0,CHKDPT ;[521] IF NO DIRECTORY, CHECK DEFAULT PATH
|
||
TLNE 0,-1 ;[521] IS A PATH ADDRESS GIVEN?
|
||
JRST CHKPPN ;[521] NO -- USER GAVE ONLY A PPN
|
||
JRST CHKPAT ;[521] YES -- USER GAVE A PATH
|
||
|
||
CHKDPT: ;[521] COMPARE FILE'S PATH WITH JOB'S PATH
|
||
MOVE T1,[IOWD .PTMAX-.PTPPN,.PTPPN+1] ;[521] START AT PPN COMPARISON
|
||
CHKDPL: MOVE T2,CHKPTH(T1) ;[521] GET A WORD FROM FILE'S PATH
|
||
CAME T2,JOBPTH(T1) ;[521] COMPARE WITH JOB'S PATH
|
||
JRST CHKBAD ;[521] FILE IS IN WRONG DIRECTORY
|
||
AOBJN T1,CHKDPL ;[521] GO AROUND AGAIN
|
||
JRST CHKOK ;[521] WE MADE IT, TAKE GOOD RETURN
|
||
|
||
CHKPAT: ;[521] COMPARE FILE'S PATH WITH GIVEN PATH
|
||
MOVE T1,[IOWD .PTMAX-.PTPPN,.PTPPN+1] ;[521] START WITH PPNS
|
||
CHKPTL: MOVE T2,CHKPTH(T1) ;[521] GET A WORD FROM FILE'S PATH
|
||
CAME T2,WRKPTH(T1) ;[521] COMPARE WITH PATH GIVEN BY USER
|
||
JRST CHKBAD ;[521] FILE IS IN WRONG DIRECTORY
|
||
AOBJN T1,CHKPTL ;[521] GO AROUND AGAIN
|
||
JRST CHKOK ;[521] WE MADE IT, TAKE GOOD RETURN
|
||
|
||
CHKPPN: CAME 0,CHKPTH+.PTPPN ;[521] COMPARE GIVEN PPN WITH FILE'S PPN
|
||
JRST CHKBAD ;[521] NOT EQUAL, SO TAKE BAD RETURN
|
||
JRST CHKOK ;[521] EQUAL PPNS, SO LEAVE HAPPILY
|
||
|
||
CHKOK: JRST CPOPJ1 ;[521][236] WIN
|
||
CHKBAD: HLLZS ZRF+1 ;[521][236] NO, CLEAR DATE TO FILE NOT FOUND CODE
|
||
SETZM ZRF+2 ;[521][236] TO BE SUPER SURE FOR DATE75
|
||
POPJ P, ;[521][236] ERROR RETURN
|
||
|
||
DSKR6S: MOVE T1,ZRFEX+.RBDEV ;[323] GET DEVICE FILE FOUND ON
|
||
MOVEM T1,SAVSTR ;[323] AND SAVE IN SAVSTR
|
||
;[323] THIS ELIMINATES PROBLEMS WITH
|
||
;[323] OPENING SYS: AND THEN TRYING
|
||
;[323] A RENAME TO SOMEWHERE ELSE
|
||
POPJ P, ;[323]
|
||
|
||
DSKR6I: MOVE 0,SAVSTR ;[163] USE SAVED STRUCTURE
|
||
PUSH P,DEVICE ;[163] SAVE FOR LATER
|
||
MOVEM 0,DEVICE ;[163] FOR SPEED AND TO ALLOW RENAMES
|
||
;**;[536] Insert 1 line at DSKR6I: +3L, 13-Feb-85, DRB
|
||
PUSH P,GENERI ;[536] SAVE PHYSICAL ONLY FLAG
|
||
;**:[532] Insert 1 line at DSKR6I: +3L, 29-Feb-84, KMR
|
||
SETOM GENERI ;[532] GET PHYSICAL ONLY SET ON OPEN
|
||
PUSHJ P,ININIT ;[163] GO INIT INPUT
|
||
;**;[536] Insert 1 line at DSKR6I: +8L, 13-Feb-85, DRB
|
||
POP P,GENERI ;[536] RESTORE THE PHYSICAL ONLY SPECIFIER
|
||
POP P,DEVICE ;[163] GET IT BACK
|
||
|
||
DSKDR6: PUSHJ P,SETPTH ;SEE IF FULL PATH
|
||
MOVEM 0,ZRFEX+.RBPPN ;[273] NON-SKIP RETURN, USE IT
|
||
MOVE 0,ZRFEX+.RBPPN ;[273][217] GET WHATEVER IS BEING USED
|
||
MOVEM 0,DTONEX+.RBPPN ;[273][217] AND SAVE IT FOR DELETE (RENAME IS DIFF)
|
||
LOOKUP IN,ZRFEX ;[273] IS SOURCE FILE THERE?
|
||
JRST [PUSHJ P,DERR5R;[270] IT MOVED, PRINT ERROR
|
||
POPJ P,] ;[313][270] BUT CONTINUE WITH COMMAND
|
||
|
||
IFN LEVELC,< ;[207]
|
||
SKIPL LEVEL ;[171] DON'T DO CLOSE IF LEVEL D
|
||
CLOSE IN, ;YES
|
||
>;[207] END IFN LEVELC
|
||
TRNN FLAG,DFLG ;DELETE?
|
||
JRST DSKDR4 ;NO, RENAME
|
||
SETZM DTON ;YES
|
||
JRST DSKDR7
|
||
|
||
;**;[535] Insert before RENFIN:+0 DRB 31-Jan-85
|
||
|
||
RENPHY: MOVEI 0,DIR ;[535] GET OUR DIRECTORY CHANNEL NUMBER
|
||
MOVEM 0,WRKPTH ;[535] STORE IN AN EMPTY PATH BLOCK
|
||
MOVE 0,[.PTMAX,,WRKPTH] ;[535] POINT TO THE BLOCK
|
||
PATH. 0, ;[535] FIND OUT WHAT STRUCTURE THIS FILE IS ON
|
||
SKIPA T7,[SIXBIT \DSK\] ;[535] ERROR, JUST GET GENERIC NAME
|
||
MOVE T7,WRKPTH ;[535] GET THE STRUCTURE THIS FILE LIVES ON
|
||
MOVEM T7,DEVICE ;[535] STORE THE NEW DEVICE NAME
|
||
JRST RENFI0 ;[535] AND JOIN THE COMMON CODE BELOW
|
||
|
||
RENFIN: POP P,DEVICE ;GET DSK DEVICE BACK
|
||
MOVE 0,STRCNT ;GET COUNT
|
||
JUMPL 0,RENFI2 ;[314] NOT EVEN ONE FOUND
|
||
CAIL 0,-1 ;[313] HAVE WE ALREADY DONE THE WORK?
|
||
JRST DSKDR5 ;[315][313] YES, DON'T TRY AGAIN
|
||
JUMPE 0,RENFI1 ;[313] UNIQUE, DO RENAME/DELETE
|
||
SETZM ZRFEX+.RBPPN ;[273] CLEAR PPN IN LOOKUP BLOCK
|
||
SETZM ZRFEX+.RBSIZ ;[302] PREVENT NNN BLOCKS FREED MSG
|
||
PUSHJ P,INFO3 ;[313] PRINT BAD FILE NAME
|
||
JRST DSKDR5 ;[313] SINCE TOO MANY F/S
|
||
|
||
RENFI0: PUSHJ P,ININIT ;[323] SET UP INPUT CHANNEL
|
||
PUSH P,ZRFEX+.RBPPN ;[323] SAVE PPN FIRST
|
||
PUSHJ P,SETPTH ;[323] AND PPN
|
||
MOVEM 0,ZRFEX+.RBPPN ;[323]
|
||
MOVX 0,RB.DSL ;[541] GET THE "DON'T SEARCH LIB:" BIT
|
||
IORM 0,ZRFEX+.RBCNT ;[541] SO NO PROTECTION FAILURE FROM /SYS/LIB
|
||
LOOKUP IN,ZRFEX ;[323] FIND FILE FOR DSKR6S
|
||
JRST [POP P,ZRFEX+.RBPPN ;[323] RESTORE
|
||
HRRZ T7,ZRFEX+.RBEXT ;[323] GET ERROR CODE
|
||
CAILE T7,ERIPP% ;[323] IF NOT FOUND
|
||
CAIN T7,ERSNF% ;[323] BECAUSE 0,1,23
|
||
JRST RENFI2 ;[323] THEN %not found
|
||
PUSHJ P,DERR5R ;[323] ELSE PRINT ERROR
|
||
JRST DSKDR5] ;[323] AND TRY NEXT FILE SPEC
|
||
PUSHJ P,CHKFIL ;[541] MAKE SURE THIS CAME FROM THE RIGHT PLACE
|
||
JRST [POP P,ZRFEX+.RBPPN ;[542] RESTORE PPN
|
||
JRST RENFI2] ;[541] NOPE, PRETEND NO SUCH FILE
|
||
POP P,ZRFEX+.RBPPN ;[323] RESTORE PPN
|
||
PUSHJ P,DSKR6S ;[315] GO CHECK FOR SYS
|
||
RENFI1: PUSHJ P,DSKR6I ;[313] DELETE OR RENAME THE FILE
|
||
JRST DSKDR5 ;[313] AND CONTINUE WITH COMMAND
|
||
|
||
RENFI2: PUSHJ P,ERR3A ;[314] PRINT %No files ....
|
||
JRST DSKDR5 ;[314] AND CONTINUE
|
||
|
||
DSKDR4: PUSHJ P,RENAME
|
||
MOVE 0,ZRF+2 ;GET DATE,MODE,PROT ETC.
|
||
MOVEM 0,DTON+2 ;SAVE AS BEFORE
|
||
LDB 0,XDATE ;[132] HIGH ORDER BIT
|
||
DPB 0,XDATED ;[132] ...
|
||
LDB 0,[POINTR (NAMTAB+2,RB.PRV)]
|
||
TLNE AUXFLG,NSPROT ;USE THE CURRENT PROTECTION
|
||
DPB 0,PRPTD ;UNLESS NEW PROT. SPECIFIED
|
||
PUSHJ P,CPYRIB ;[273] GO CLEAR AND COPY RIB STUFF
|
||
MOVE 0,ODEV ;[231] CHECK FOR ERSATZ DEVICES
|
||
PUSHJ P,PSYSP ;[231] USING ERSATZ DEVICE ROUTINE
|
||
MOVE T1,NAMTAB+3 ;[323] GET ANY SPECIFIED PPN (IN CASE OF SFD'S)
|
||
PUSHJ P,DSKPPZ ;[323] AND INTEGRATE DEVPPN INTO ANY PATHS
|
||
SKIPN T1 ;[323] IF NOTHING, IT MUST BE US
|
||
MOVEI T1,PTHOUT ;[323] AND MONITOR WILL NOT MOVE W/O SOMETHING
|
||
TLNN T1,-1 ;[222] SEE IF WE HAVE A PATH POINTER
|
||
SKIPE JOBPTH ;[222] YES, SEE IF SMALL MONITOR
|
||
JRST DSKR4A ;[323][222] NO, LEAVE ALL ALONE
|
||
SKIPN T1,.PTPPN(T1) ;[323][222] YES, USE PPN WITHOUT PATH BLOCK
|
||
MOVE T1,JOBPTH+.PTPPN;[323] UNLESS NONE, THEN USE JOB'S
|
||
DSKR4A: ;[262]
|
||
MOVEM T1,DTONEX+.RBPPN ;[273][222] AND SAVE IT ALL IN RENAME BLOCK
|
||
MOVE 0,[XWD JOBPTH,PTHOUT] ;[222] SINCE THE CURRENT MONITOR
|
||
SKIPN PTHOUT+.PTPPN ;[222] CANNOT HANDLE A RENAME WITH A ZERO
|
||
SKIPE PTHOUT+.PTPPN+1 ;[222] PATH BLOCK, WE MUST CHECK FOR THAT
|
||
JRST DSKR4G ;[222] AND COPY IN THE DEFAULT PATH IF
|
||
TDNN CALFLG,[DVSWTH!DDEVSN] ;[405] ANY OUTPUT DEVICE?
|
||
SKIPE NAMTAB ;[374] ANY OUTPUT NAME?
|
||
JRST DSKR4F ;[374] YES - GO USE DEFAULT PATH
|
||
MOVE T1,ZRFEX+.RBPPN ;[374] NO - USE INPUT PATH
|
||
TLNN T1,-1 ;[374] INPUT PATH A PPN?
|
||
SKIP 2 ;[374] NO
|
||
MOVEM T1,DTONEX+.RBPPN;[374] YES - SAVE IT
|
||
JRST DSKR4G ;[374] THAT'S ALL WE NEED.
|
||
HRLM T1,0 ;[374] PATH - WE NEED TO BLT I-TO-O
|
||
DSKR4F: BLT 0,PTHOUT+PTHLEN+3 ;[222] THIS IS THE CASE.
|
||
DSKR4G: HRR T1,ZRFEX+.RBEXT ;[364] DATES DON'T CHANGE.
|
||
HRRM T1,DTONEX+.RBEXT ;[364]
|
||
HRRZI T1,.RBPRV-.RBPPN ;[364] SET UP COUNTER FOR COMPARING
|
||
DSKR4B: ;[364] LOOKUP AND RENAME BLOCKS.
|
||
MOVE T2,.RBPPN+ZRFEX(T1) ;[364] GET NEXT LOOKUP BLOCK WORD
|
||
CAME T2,.RBPPN+DTONEX(T1) ;[364] SAME AS RENAME BLOCK?
|
||
JRST DSKR4E ;[364] NO - THEN GO AHEAD AND RENAME.
|
||
SOJG T1,DSKR4B ;[364] MOVE POINTER AND CHECK MORE IF ANY.
|
||
MOVE T1,DTONEX+.RBPPN ;[364] GET RENAME .RBPPN
|
||
TLNE T1,-1 ;[364] IS IT A PATH POINTER?
|
||
JRST DSKR4D ;[364] NO - GO HANDLE PPN'S.
|
||
HRRZI T1,IN ;[364] PREPARE TO DO A PATH CHECK ON
|
||
HRRZM T1,WRKPTH ;[364] THE LOOKUP CHANNEL.
|
||
HRRI T1,WRKPTH ;[364] BLOCK ADDR.
|
||
HRLI T1,PTHLEN+4 ;[364] BLOCK LEN.
|
||
PATH. T1, ;[364] CHECK THE CHANNEL PATH
|
||
JRST DSKR4E ;[364] LOSE - GO TRY RENAMING.
|
||
ADDI T1,.PTPPN ;[364] POINT T1 TO THE PATH PPN
|
||
MOVE T2,DTONEX+.RBPPN ;[364] GET RENAME PATH BLOCK ADDR
|
||
ADDI T2,.PTPPN ;[364] AND POINT TO PATH PPN
|
||
;**;[514] Insert 3 lines after DSK4RB+16L RLUSK 11-June-81
|
||
MOVE T3,(T1) ;[514] GET FILE'S PPN
|
||
CAMN T3,MFDPPN ;[514] IS THIS A UFD?
|
||
JRST DSKDR9 ;[514] THEN ONLY PRETEND TO RENAME IT
|
||
DSKR4C: MOVE T3,(T1) ;[364] GET CHANNEL PATH BLOCK WORD
|
||
CAME T3,(T2) ;[364] SAME AS RENAME PATH BLOCK?
|
||
JRST DSKR4E ;[364] NO - GO DO RENAME
|
||
JUMPE T3,DSKDR9 ;[364] IF GOT TO END, DON'T RENAME
|
||
AOJ T1, ;[364] INCREMENT CHANNEL POINTER
|
||
AOJA T2,DSKR4C ;[364] INCREMENT RENAME POINTER, LOOP
|
||
DSKR4D: CAMN T1,ZRFEX+.RBPPN ;[364] NO PATH - PPN'S SAME?
|
||
JRST DSKDR9 ;[364] YES - DON'T RENAME
|
||
DSKR4E: HLRZ T1,DTON+1 ;[202] HACK HACK HACK HACK
|
||
CAIN T1,'UFD' ;[202] HACK TO CHECK FOR UFD RENAME
|
||
SETZM DTONEX+.RBPPN ;[273][202] IT IS, ZERO PPN
|
||
|
||
DSKDR7: RENAME IN,DTONEX ;[273]
|
||
JRST [PUSHJ P,DERR7 ;OUTPUT ERROR CODE
|
||
POPJ P,] ;[313] AND CONTINUE
|
||
DSKDR8: MOVE T1,ZRFEX+.RBDEV ;[377] GET THE UNIT LOOKED ON
|
||
MOVEM T1,DSCARG ;[375] PUT IN ARG BLOCK
|
||
MOVE T1,[.DCSNM+1,,DSCARG] ;[375] SET UP FOR DSKCHR
|
||
DSKCHR T1, ;[375] DSKCHR TO GET F/S FOR UNIT
|
||
SETZM DSCARG+.DCSNM ;[375] LOSE - ZERO F/S
|
||
PUSHJ P,INFO3 ;PRINT FILENAME DELETED/RENAMED
|
||
POPJ P, ;[313]
|
||
|
||
DSKDR1: TLZ AUXFLG,NSPROT ;NON-ST. PROT FIXED
|
||
SOS ESWTCH ;ENSURE ESWTCH NEGATIVE
|
||
SKIPE DOUT,BLKSUM ;GET TOTAL FREED BLOCKS
|
||
TRNN FLAG,DFLG ;BUT ONLY IF /D
|
||
JRST DSKDR2 ;BOTH NOT TRUE
|
||
MOVEI T2,PUTCON ;ON TTY
|
||
PUSHJ P,OUTDC1 ;OUTPUT IN DECIMAL
|
||
ERRPN2 </ Blocks freed/>
|
||
PUSHJ P,TCRLF ;FINISH WITH CR-LF
|
||
SETZM BLKSUM ;CLEAR RUNNING TOTAL
|
||
DSKDR2: RELEAS CON,
|
||
RELEAS DIR, ;[323] CLEAR CHANNELS
|
||
RELEAS IN, ;[323]
|
||
JRST PIP2 ;[323] AND START NEW COMMAND
|
||
|
||
|
||
|
||
; WE GET HERE IF NOTHING IN THE RIB IS CHANGING,
|
||
; E.G. A "PROTECTION NOP".
|
||
|
||
DSKDR9: HLRZ T1,DTONEX+.RBEXT ;[377] GET FILE EXTENSION
|
||
CAIE T1,'EXE' ;[377] EXE EXTENSION?
|
||
CAIN T1,'SHR' ;[377] OR SHARE?
|
||
SKIPA ;[377]
|
||
JRST DSKDR8 ;[377] NO - BYPASS RENAME.
|
||
;**;[514] Insert 3 lines at DSKDR9+5L RLUSK 12-June-81
|
||
MOVE T1,JOBPPN ;[514] CHECK OUR PPN
|
||
CAMN T1,FFAPPN ;[514] DO WE HAVE FREE FILE ACCESS?
|
||
JRST DSKR4E ;[514] YES INDEED -- GO DO RENAME
|
||
LDB T1,PRPTD ;[377] GET ACCESS PROTECT
|
||
LSH T1,-6 ;[377] SHIFT OUT ALL BUT OWNER
|
||
TRNN T1,2 ;[377] IS IT 2, 3, 6, OR 7?
|
||
CAIN T1,5 ;[377] OR 5?
|
||
SKIPA T3,[ZRFEX+.RBNAM] ;[377] YES - MUST WARN USER
|
||
JRST DSKR4E ;[377] ELSE GO REALLY RENAME.
|
||
MOVEI CHR,"%" ;[377] WARNING MESSAGE.....
|
||
PUSHJ P,PUTCON ;[377]
|
||
PUSHJ P,FN.EX ;[377] PRINT NAME.EXT
|
||
ERRPN2 </any dormant high-seg not removed due to file protection/>
|
||
PUSHJ P,TCRLF ;[377] DO CRLF
|
||
JRST DSKDR8 ;[377] GO BACK TO MAINLINE.
|
||
|
||
|
||
SUBTTL DISK /Z
|
||
;ZERO DSK DIRECTORY OF ALL POSSIBLE FILES. IF ANY ARE PROTECTED, GIVE
|
||
;A MESSAGE AND DO NOT PROCESS ANY OTHER SWITCHES.
|
||
|
||
DSKZRO: TLNE FL,TSKOUT ;[312] TRYING TO ZERO TSK:?
|
||
JRST ERR16 ;[312] NO YOU CAN'T
|
||
SKIPE T1,ODEV ;GET REAL DSK
|
||
MOVEM T1,ADSK ;SO AS TO INIT CORRECT F/S
|
||
MOVE 0,[XWD PTHADD,SAVPTH] ;[211] SAVE INPUT PATH
|
||
BLT 0,SAVPTH+PTHLEN+3 ;[211]
|
||
MOVS 0,[XWD PTHADD,PTHOUT] ;[211] AND COPY OUTPUT OVER TO
|
||
BLT 0,PTHADD+PTHLEN+3 ;[211] INPUT FOR ALL LOOKUPS
|
||
PUSHJ P,DIRSK1
|
||
INBUF OUT,1 ;FOR LOOKUPS ON OUT
|
||
DSKZ1: SOSLE UFDIN+2
|
||
SKIP 2
|
||
DSKZ3: PUSHJ P,UIN
|
||
JRST DSKZ4 ;[211] GO COPY INPUT PATH BACK
|
||
ILDB 0,UFDIN+1
|
||
JUMPE 0,DSKZ3
|
||
MOVEM 0,ZRF
|
||
MOVEM 0,DTON ;INCASE OF FAILURE
|
||
SOS UFDIN+2
|
||
ILDB 0,UFDIN+1
|
||
HLLZM 0,ZRF+1 ;EXTENSION
|
||
MOVE 0,FNPPN
|
||
MOVEM 0,ZRFEX+.RBPPN ;[273]
|
||
PUSHJ P,SETPTH ;SEE IF FULL PATH
|
||
MOVEM 0,ZRFEX+.RBPPN ;[273] NON-SKIP RETURN, USE IT
|
||
LOOKUP OUT,ZRFEX ;[273]
|
||
JRST [PUSHJ P,DERR5R ;ERROR
|
||
JRST DSKZ1] ;IGNORE RENAME TO ZERO
|
||
IFN LEVELC,< ;[211]
|
||
SKIPL LEVEL ;[211] SKIP CLOSE FOR LEVEL D
|
||
CLOSE OUT,
|
||
>;[211] END IFN LEVELC
|
||
SETZM ZRF
|
||
MOVE 0,FNPPN
|
||
MOVEM 0,ZRFEX+.RBPPN ;[273]
|
||
PUSHJ P,SETPTH ;SEE IF FULL PATH
|
||
MOVEM 0,ZRFEX+.RBPPN ;[273] NON-SKIP RETURN, USE IT
|
||
RENAME OUT,ZRFEX ;[273]
|
||
PUSHJ P,DERR7Z
|
||
JRST DSKZ1 ;REPEAT
|
||
|
||
DSKZ4: MOVS 0,[XWD PTHADD,SAVPTH] ;[211] COPY INPUT PATH BACK
|
||
BLT 0,PTHADD+PTHLEN+3 ;[211] WHERE IT BELONGS
|
||
POPJ P, ;[211] AND CONTINUE
|
||
|
||
SUBTTL LEVEL D FILE STRUCTURES AND ERSATZ STRUCTURES
|
||
|
||
;ROUTINES TO HANDLE LEVEL D FILE STRUCTURES
|
||
|
||
;TO INITIALIZE THE SEARCH LIST
|
||
INITFS:
|
||
IFN LEVELC,< ;[322]
|
||
SKIPN LEVEL ;ONLY IF LEVEL D
|
||
POPJ P, ;LEVEL C - NON-SKIP RETURN
|
||
>;[322] END IFN LEVELC
|
||
SETZM GENERI ;CLEAR INCASE OF ERROR RETURN
|
||
TRZ AUXFLG,SYSFLG ;[163] CLEAR ALL: BIT
|
||
MOVEI 0,ADSK ;ADDRESS OF DEVICE
|
||
DSKCHR 0, ;SEE IF DSK
|
||
POPJ P, ;NOT LEVEL D DSK
|
||
TXNE 0,DC.TYP ;GENERIC DEVICE DSK
|
||
POPJ P, ;NO
|
||
PUSH P,T1 ;[163]
|
||
MOVE T1,ADSK ;[200] GET THE GENERIC DEVICE NAME
|
||
MOVEM T1,TDSK ;[200] SAVE THE ORIGINAL
|
||
DEVNAM T1, ;[200] CONVERT ANY LOGICALS FOR ALL:
|
||
JFCL ;[200] IN CASE
|
||
MOVS T1,T1 ;[200] SWAP FOR COMPARE
|
||
CAIN T1,'NUL' ;[201] CHECK ON NUL:
|
||
JRST ININUL ;[201] YUP, DO IT W/O SEARCH
|
||
MOVSM T1,DEVPTH ;[203] PUT DEVICE IN PATH BLOCK
|
||
MOVE 0,[XWD .PTPPN+1,DEVPTH];[203] SET FOR PATH
|
||
PATH. 0, ;[203] GET DEVICE'S SEARCH LIST
|
||
JRST INIFSO ;[203] NO PATH., CHECK PPN
|
||
LDB T1,[POINTR (DEVPTH+1,PT.SLT)];[214] GET SEARCH LIST BITS
|
||
JRST @[INIFS1 ;[203] SET PROPER LIST - 0=NON-STANDARD
|
||
INIFS1 ;[203] 1=JOB'S
|
||
INIALL ;[203] 2=ALL:
|
||
INISUS ;[203] 3=SYS:
|
||
INIFS1 ;[203] 4=NOT DEFINED
|
||
INIFS1 ;[203] 5=NOT DEFINED
|
||
INIFS1](T1) ;[203] 6=NOT DEFINED
|
||
INIFSO: ;[203] PATH. FAILED, TRY AN OLDER WAY
|
||
MOVE 0,DEVPP ;[163] GET ITS PPN
|
||
CAME 0,JOBPPN ;[163] SEE IF IT'S OURS
|
||
JRST INISYS ;[163] NO, GO SEE IF SYS: SEARCH LIST
|
||
CAIN T1,'ALL' ;[163] YES, SEE IF IT'S ALL:
|
||
INIALL: ;[203] SET FOR ALL: FROM PATH.
|
||
TROA AUXFLG,SYSFLG ;[163] YES, SET SPECIAL SEARCH FLAG
|
||
|
||
INIFS1: SETOM GENERI ;[163] SET FOR INITIAL STRUCTURE
|
||
SETOM STRARG ;[163] AND OUR SEARCH LIST
|
||
|
||
INIFS2: SETOM STRARG+1 ;[163] USE OUR SEARCH LIST (UNLESS STRARG=0)
|
||
POP P,T1 ;[163] RESTORE SAVED AC
|
||
|
||
|
||
JRST CPOPJ1 ;GIVE SKIP RETURN
|
||
|
||
ININUL: POP P,T1 ;[201] DEVICE NUL:, GET T1 BACK
|
||
POPJ P, ;[201] AND GIVE NON SEARCH RETURN
|
||
|
||
;TO INITIALIZE SYSTEM SEARCH LIST
|
||
|
||
|
||
INISYS: CAIN T1,'LIB' ;[163] HERE WHEN DEVPP DOESN'T MATCH OUR
|
||
JRST INIFS1 ;[163] PPN, BUT LIB: USES OUR SEARCH LIST
|
||
CAIN T1,'ALL' ;[200] SEE IF ALL: FOR SOMEONE ELSE
|
||
TROA AUXFLG,SYSFLG ;[200] YES, SAY SO AND LEAVE GENERI 0
|
||
INISUS: ;[203] SET SYS: SEARCH LIST FROM PATH.
|
||
SETOM GENERI ;[163] FOR INITIAL FILE
|
||
SETZM STRARG ;[163] ON SYSTEM SEARCH LIST
|
||
JRST INIFS2 ;[163]
|
||
|
||
;TO FIND NEXT F/S IN SEARCH LIST
|
||
|
||
NXTFS: TRNE AUXFLG,SYSFLG ;[163] SEE IF DOING ALL:
|
||
JRST NXTSYS ;[163] YES, IT'S DIFFERENT
|
||
MOVEI 0,STRARG ;[163] SET ADDRESS OF STR LIST, LENGTH 3
|
||
SKIPE GENERI ;FINISHED IF IT IS ZERO
|
||
GOBSTR 0, ;GET FILE STRUCTURE
|
||
TDZA 0,0 ;ERROR
|
||
MOVE 0,GENERI ;GET DEVICE
|
||
CAMN 0,[-1] ;MIGHT BE MISSING FENCE, CHECK FOR END
|
||
JRST NOFNCE ;IT WAS
|
||
NXTFS1:
|
||
JUMPE 0,ENDFS ;FINISHED
|
||
MOVEM 0,DEVICE ;FOR RETRIEVAL INFO
|
||
PUSHJ P,ININIT ; INIT
|
||
JRST CPOPJ1 ;GIVE SKIP RETURN
|
||
|
||
NXTSYS: MOVE 0,GENERI ;[163] GET LAST ALL: SYSSTR VALUE
|
||
SYSSTR 0, ;[163] GET NEXT ALL: STRUCTURE
|
||
TDZ 0,0 ;[163] CLEAR IF ERROR
|
||
MOVEM 0,GENERI ;[163] SAVE NEXT STRUCTURE
|
||
JRST NXTFS1 ;[163] CONTINUE
|
||
|
||
;TO INIT NEXT UFD
|
||
|
||
NXTFSU: PUSHJ P,NXTFS ;GET NEXT F/S
|
||
POPJ P, ;SIMPLE SKIP RETURN
|
||
MOVE 0,DEVICE ;OTHERWISE GET IT
|
||
MOVEM 0,ADSK ;FOR DIR INIT
|
||
AOS (P) ;SET FOR SKIP RETURN
|
||
JRST DSKDIR ;INIT NEW UFD AND RETURN TO USER
|
||
|
||
NOFNCE: AOS GENERI ;SIGNAL END OF F/S
|
||
|
||
ENDFS: MOVE 0,TDSK ;[163] GET SAVED ORIGINAL DEVICE
|
||
MOVEM 0,ADSK ;[163] AND RESTORE IT IN CASE
|
||
MOVEM 0,DEVICE ;INPUT TO PROCESS
|
||
POPJ P, ;RETURN
|
||
|
||
|
||
SUBTTL SFD SPECIFICATIONS AND PATH BLOCK SETUPS
|
||
|
||
;ROUTINES TO HANDLE SFD'S
|
||
GETPTH: SETOM PTHADD ;SIGNAL FULL PATH TO BE USED
|
||
MOVEI T7,PTHADD ;[274] ADDRESS OF PATH
|
||
MOVEM T7,PP ;[274] SAVE AS NEW PPN
|
||
MOVEI T7,PTHSFD ;ADDRESS OF SFD LIST
|
||
GTPTH1: HRLI T7,(POINT 6,,) ;ILDP LOOP
|
||
PUSHJ P,GETBUF ;GET A CHARACTER
|
||
;**;[507] Insert 3 lines after GTPTH1+1 RLUSK 24-Feb-81
|
||
CAIE 0,"*" ;[507] NO WILDCARD CHARACTERS ALLOWED
|
||
CAIN 0,"?" ;[507] IN SFD SPECIFICATION
|
||
JRST ERR2B ;[507] PRINT ERROR MESSAGE AND END
|
||
CAIL 0,"A" ;ALPHABETIC
|
||
CAILE 0,"Z"
|
||
JRST .+2 ;NO
|
||
JRST GTPTH2 ;YES , FOUND ONE
|
||
CAIL 0,"0" ;NUMERIC
|
||
CAILE 0,"9"
|
||
JRST GTPTH3 ;NO
|
||
GTPTH2: SUBI 0,40 ;MAKE SIXBIT
|
||
TLNE T7,770000 ;SIX CHAR. YET?
|
||
IDPB 0,T7 ;NO DEPOSIT
|
||
JRST GTPTH1+1 ;LOOP
|
||
|
||
GTPTH3: MOVE T5,JOBPTH-PTHADD(T7) ;[211] GET DEFAULT SFD NAME
|
||
SKIPN (T7) ;[211] SEE IF HE SPECIFIED ANYTHING
|
||
MOVEM T5,(T7) ;[211] NO, USE DEFAULT
|
||
CAIE 0,"," ;[211] SEE IF ANY MORE
|
||
JRST GTPTH4 ;NO
|
||
MOVEI T7,1(T7) ;ADVANCE BYTE POINTER
|
||
CAIGE T7,PTHSFD+PTHLEN-1 ;TOO MANY SFD'S
|
||
JRST GTPTH1 ;NO, GET NEXT SFD
|
||
ERRPNX </?SFD list too long!/>
|
||
|
||
GTPTH4: ;[223]
|
||
IFN SCANSW,< ;[223]
|
||
CAIE 0,"/" ;[223] SEE IF IT'S A SCAN SWITCH
|
||
POPJ P, ;[211] NO
|
||
PUSHJ P,GETBUF ;[211] YES, GET NEXT CHARACTER
|
||
MOVEI T5,.PTSCN ;[211] SET NO SCAN
|
||
CAIN 0,"N" ;[211] IF /N
|
||
MOVEM T5,PTHADD+.PTSWT;[211] SET NO SCAN SWITCH
|
||
MOVEI T5,.PTSCY ;[211] SET SCAN
|
||
CAIN 0,"S" ;[211] IF /S
|
||
MOVEM T5,PTHADD+.PTSWT;[211] SET SCAN SWITCH
|
||
PUSHJ P,GETBUF ;[211] BYPASS SWITCH
|
||
>;[223] END IFN SCANSW
|
||
POPJ P,
|
||
|
||
;PUT PATH ADDRESS IN AC0
|
||
;SKIP IF ZER0, NON-SKIP IF FULL PATH IN USE
|
||
|
||
SETPTH: MOVE 0,@(P) ;[353] GET THE ADDRESS OF THE PPN IN QUESTION
|
||
MOVE 0,@0 ;[353] GET THE PPN OR PATH POINTER
|
||
JUMPE 0,CPOPJ1 ;[353] NO PROBLEM IF NONE
|
||
TLNE 0,-1 ;[353] OR IF A REAL PPN
|
||
JRST CPOPJ1 ;[353]
|
||
SKIPN JOBPTH ;[353] DOES THIS MONITOR HAVE PATHS?
|
||
JRST STPTH1 ;[353] NO, FIX UP
|
||
MOVS 0,0 ;[353] YES, COPY FROM WHERE IT IS
|
||
HRRI 0,WRKPTH ;[353] TO THE WORK AREA
|
||
BLT 0,WRKPTH+PTHLEN+3 ;[353]
|
||
MOVEI 0,WRKPTH ;[353] POINT TO THE PATH BLOCK
|
||
POPJ P, ;[353]
|
||
STPTH1: ADDI 0,2 ;[353] [212] YES, GET PPN SO NON-PATHING
|
||
MOVE 0,@0 ;[353] MONITORS DO NOT LOSE
|
||
MOVE 0,@0 ;[212] MONITORS DO NOT LOSE
|
||
POPJ P, ;[212] AND LET NORMAL RETURN STORE IT
|
||
|
||
;HERE TO FIGURE OUT WHAT PPN TO USE FOR LOOKUPS OR UFD READS
|
||
;USE ANY SPECIFIED PPN'S, OVERRIDDEN BY ANY ERSATZ DEVICES.
|
||
;ALLOW ERSATZ DEVICES WITH SFD SPECS.
|
||
;CALL PUSHJ P,DSKPPS ;[321] (OR DSKPPZ FOR /Z)
|
||
; ALWAYS RETURN, PPN OR PATH POINTER OR 0 IN T1
|
||
|
||
DSKPPS: SKIPN T1,PP ;[321] IS THERE A SPECIFIC PPN?
|
||
MOVE T1,PPP ;[321] OR A STICKY ONE?
|
||
DSKPPZ: ;[321] ENTRY FOR /Z
|
||
SKIPN T2,DEVPP ;[321] IS THIS AN ERSATZ DEVICE?
|
||
POPJ P, ;[321] NO, RETURN PPN IN T1
|
||
SKIPE T1 ;[321] IF NO GIVEN PPN, RETURN ERSATZ
|
||
TLNE T1,-1 ;[321] IF PATH GIVEN, PUT ERSATZ IN PATH BLOCK
|
||
SKIPA T1,T2 ;[321] NO PPN OR ONE NEEDING OVERRIDDING
|
||
MOVEM T2,.PTPPN(T1) ;[321] PATH BLOCK, PUT ERSATZ THERE
|
||
POPJ P, ;[321] AND RETURN
|
||
|
||
SUBTTL READ DIRECTORY FOR WILD CARDS AND /L/F/R/D
|
||
|
||
;PREPARE TO LOOKUP FILES IN PARTICULAR DISK DIRECTORY
|
||
|
||
DIRSK1: MOVE T1,DTONEX+.RBPPN ;[274][273][271] ENTRY FOR /Z.... BE CAREFUL
|
||
PUSH P,DEVPP ;[274][271] SAVE INPUT ERSATZ PPN
|
||
MOVE 0,ODEV ;[271] GET OUTPUT DEVICE NAME
|
||
PUSHJ P,PSYSP ;[271] AND SEE IF IT HAS ANY PPN
|
||
PUSHJ P,DSKPPZ ;[321] GO DO ANY ERSATZ PPN'S
|
||
POP P,DEVPP ;[321] RESTORE INPUT, IF ANY
|
||
SKIPA ;[321] FALL INTO DSKDIR
|
||
|
||
DSKDIR: PUSHJ P,DSKPPS ;[321] FIGURE OUT WHAT PPN TO USE
|
||
JUMPN T1,DSKDRB ;[163] SEE IF ANY SPECIFIED
|
||
MOVE T1,[XWD JOBPTH,PTHADD] ;[211] GET DEFAULT PATH
|
||
BLT T1,PTHADD+PTHLEN+3 ;[211] AS PATH TO USE
|
||
MOVEI T1,PTHADD ;[353] POINT AT PATH BLOCK
|
||
DSKDRB: MOVEM T1,FNPPN ;[134] NO
|
||
MOVEM T1,UFDPPN ;[211] SAVE PPN FOR PRINTOUT
|
||
TLNN T1,-1 ;[211] SEE IF REALLY PATH POINTER
|
||
MOVE T1,.PTPPN(T1) ;[211] YES, GET PPN IN CASE NO SFD'S
|
||
MOVE 0,[XWD FILNAM,UFD]
|
||
BLT 0,UFD+3 ;SAVE LOOKUP BLOCK
|
||
MOVEM T1,FILNAM ;[P,P] TO UFD
|
||
MOVSI 0,'UFD'
|
||
MOVEM 0,FILEX ;USER HAS SPECIFIED [P,P]
|
||
MOVE 0,MFDPPN ;[163] GET PPN OF MFD'S
|
||
IFN LEVELC,< ;[211]
|
||
MOVEM 0,PP ;[211] SAVE PP IN SHORT LOOKUP FOR C
|
||
>;[211] END IFN LEVELC
|
||
MOVEM 0,PPN ;SAVE FOR EXTENDED LOOKUP
|
||
PUSHJ P,DSKDST ;INIT TO READ DIRECTORY
|
||
;**;[520] Change 1 line at DSKDRB+15L RLUSK 7-January-1982
|
||
MOVEI T1,.RBPCA ;[520] [273] LENGTH FOR EXTENDED LOOKUP
|
||
MOVEM T1,RIBFIR
|
||
SKIPE PTHSFD ;[211] ANY SFD SPECIFIED
|
||
JRST SFDDIR ;YES, LOOKUP PATH
|
||
IFN LEVELC,< ;[322]
|
||
MOVE T1,LEVEL ;LEVEL D = -2
|
||
LOOKUP DIR,FILNAM(T1) ;GET USERS FILE DIRECTORY
|
||
JRST DERR5A ;ONE OF MANY LOOKUP ERRORS
|
||
>;[322] END IFN LEVELC
|
||
IFE LEVELC,< ;[322]
|
||
LOOKUP DIR,RIBFIR ;[322] GET USERS FILE DIRECTORY
|
||
JRST DERR5A ;[322] ONE OF MANY LOOKUP ERRORS
|
||
>;[322] END IFE LEVELC
|
||
DIRSK2: MOVS T1,[XWD FILNAM,UFD]
|
||
BLT T1,PP ;RESTORE LOOKUP BLOCK
|
||
POPJ P, ;LOOKUP OK
|
||
|
||
;HERE TO DO LOOKUP ON SPECIFIED PATH
|
||
|
||
SFDDIR: MOVSI 0,'SFD' ;CHANGE EXTENSION
|
||
MOVEM 0,FILEX ;TO EXPECTED
|
||
MOVEI 0,PTHADD ;ADDRESS OF FULL PATH
|
||
MOVEM 0,PPN ;THIS IS THE DIRECTORY REQUIRED
|
||
MOVEM 0,UFDPPN ;[211] SAVE POINTER FOR PRINTOUT
|
||
MOVEI T1,PTHSFD+PTHLEN ;LOOP FOR ALL SFD'S
|
||
MOVE T2,(T1) ;[211] GET A POSSIBLE SFD NAME
|
||
SKIPN T2 ;[211] END LOOP WHEN NON-ZERO
|
||
SOJA T1,.-2 ;NOT YET
|
||
SETZM (T1) ;BACKUP PATH ONE SFD
|
||
MOVEM T2,FILNAM ;[211] THIS IS NAME OF FILE WE WANT TO LOOK UP
|
||
PUSHJ P,SETPTH ;[211] GO MOVE PATH TO WORK AREA
|
||
MOVEM 0,PPN ;[211] AND SAVE POINTER
|
||
LOOKUP DIR,RIBFIR ;GIVE IT A TRY
|
||
JRST DERR5S ;[211] .SFD FAILED, ERROR DIFF FROM UFD
|
||
MOVEM T2,(T1) ;[211] RESTORE FULL PATH SPEC
|
||
JRST DIRSK2 ;[322] AND RETURN TO COMMON CODE
|
||
|
||
SUBTTL DISK DIRECTORY LISTS
|
||
|
||
;ROUTINE TO LIST DISK DIRECTORY. /L OR /F SWITCH
|
||
|
||
SYN AB,FILCNT ;COUNT OF NUMBER OF FILES FOUND
|
||
SYN MTAREQ,FILERR ;ERROR BIT IN FILE
|
||
DSKLST: TLNE FL,TSKIN ;[312] NO DIRECTORIES FOR TSK:
|
||
JRST ERR15 ;[312] YOU LOSE
|
||
PUSHJ P,ININIT ;[312] ASSIGN "IN" FOR RETRIEVAL INFO
|
||
SETZM BLKSUM ;CLEAR TOTAL BLOCKS FOR ALL FILES
|
||
SETZM FILCNT ;START AT ZERO
|
||
SETZM LIN ;SET UP APPROPRIATE CONTROLS
|
||
MOVS T1,ODEV ;FOR THIS LISTING DEVICE
|
||
CAIN T1,'TTY' ;IF ODEV IS TTY
|
||
TRO CALFLG,LISTTY ;SET LISTTY=1 (TTY)
|
||
SKIPN FILNAM ;IF NO FILNAM GIVEN
|
||
TRZ CALFLG,MATFN!MATEX ;LIST ALL OF DIRECTORY
|
||
MOVE T1,FILNAM
|
||
MOVEM T1,MATCH
|
||
HLRZ T1,FILEX
|
||
MOVEM T1,MATCH+1
|
||
PUSHJ P,DSKDIR
|
||
PUSHJ P,CRLF ;GIVE A BLANK LINE
|
||
TRNN AUXFLG,FFLG ;SHORT LISTING
|
||
PUSHJ P,HEADER ;PUT OUT HEADER LINES
|
||
TLO CALFLG,LPPFLG ;OUTPUT PPN LATER
|
||
PUSHJ P,INITFS ;INIT F/S SEARCH LIST
|
||
JRST LSTU0A ;NOT GENERIC "DSK"
|
||
LSTU0: PUSHJ P,NXTFSU ;GET NEXT F/S IN LIST
|
||
JRST DIRFIN ;NO MORE
|
||
LSTU0A: TLO CALFLG,LDVFLG ;SIGNAL NEW DEVICE TO OUTPUT
|
||
LSTU1: SOSLE UFDIN+2
|
||
SKIP 2
|
||
LSTU2: PUSHJ P,UIN ;GO READ DIRECTORY
|
||
JRST BLKLST ;(EOF) - OUTPUT BLOCKS USED
|
||
ILDB 0,UFDIN+1
|
||
JUMPE 0,LSTU2
|
||
MOVEM 0,FILNAM ;PREPARE TO GET RETRIEVAL INFO
|
||
MOVE T1,FNPPN ;EACH LOOKUP DESTROYS P-P NO.
|
||
MOVEM T1,PPN ;[353] RESTORE PPN NO.
|
||
MOVEM T1,FILNAM+3 ;RESTORE P-P NO.
|
||
SKIPG LIN
|
||
PUSHJ P,HEDR3 ;YES, PUT OUT HEADER LINES
|
||
SOS UFDIN+2
|
||
ILDB DOUT,UFDIN+1 ;PICK UP EXTENSION
|
||
HLRZS DOUT ;CLEAR RIGHT HALF
|
||
HRLZM DOUT,FILNAM+1 ;KEEP FOR LOOKUP
|
||
TLNE CALFLG,MFLG ;NEED TO MASK?
|
||
JRST MLSTU ;YES
|
||
TRNN CALFLG,MATEX ;MATCH EXTENSIONS?
|
||
SKIP 2 ;NO,TRY MATFN
|
||
CAME DOUT,MATCH+1 ;MATCH?
|
||
JRST LSTU1 ;NO,GET NEXT FILE
|
||
TRNN CALFLG,MATFN ;MATCH FILENAME?
|
||
JRST LSTU2A ;NO
|
||
CAME 0,MATCH ;FILNAM MATCH?
|
||
JRST LSTU1 ;NO
|
||
LSTU2A: CAIE DOUT,'UFD' ;IS FILE MFD
|
||
JRST LSTU3 ;GO PRINT NAME HELD IN 0.
|
||
HLRZ DOUT,FILNAM ;HERE FOR MFD ONLY
|
||
MOVEI T2,PUT
|
||
PUSHJ P,OUTOCT ;PRINT #,#. PROJ. NO.
|
||
MOVEI CHR,COMMA ;","
|
||
PUSHJ P,PUT ;...
|
||
HRRZ DOUT,FILNAM ;PROG. NO.
|
||
PUSHJ P,OUTOCT
|
||
JRST LSTU3A ;...
|
||
LSTU3: MOVE 0,FILNAM
|
||
PUSHJ P,SIXOUT ;OUPUT FILENAME
|
||
LSTU3A: MOVEI T4,5 ;SET LOOP FOR OUTPT EXT
|
||
MOVE 0,FILEX
|
||
JUMPE 0,LSTU4
|
||
PUSHJ P,TABOUT
|
||
PUSHJ P,SIXOUT ;OUTPUT EXTENSION
|
||
LSTU4: AOS FILCNT ;COUNT ONE MORE FILE SEEN
|
||
TRNN AUXFLG,FFLG ;SHORTEST LISTING?
|
||
SKIP 2
|
||
PUSHJ P,CLRF ;YES
|
||
JRST LSTU1
|
||
SKIPN FILEX
|
||
PUSHJ P,TABOUT ;ACCOUNT FOR LACK OF EXTENSION
|
||
PUSHJ P,SPACES
|
||
PUSHJ P,SETPTH ;[211] GO SET UP PATH
|
||
MOVEM 0,PPN ;[211] AND SET POINTER
|
||
IFN LEVELC,< ;[322]
|
||
MOVE T4,LEVEL ;-2 IF LEVEL D,0 IF LEVEL C
|
||
LOOKUP IN,FILNAM(T4) ;GET RETRIEVAL INFO.
|
||
JRST LSTU5 ;NOT AVAILABLE
|
||
JUMPE T4,LSTU4A ;LEVEL C OR NO UFD ERRORS
|
||
>;[322] END IFN LEVELC
|
||
IFE LEVELC,< ;[322]
|
||
LOOKUP IN,RIBFIR ;[322] GET RETRIEVAL INFO
|
||
JRST LSTU5 ;[322] NOT AVAILABLE
|
||
>;[322] END IFE LEVELC
|
||
HRRZ DOUT,RIBFIR+.RBSTS ;[273] FILE ERROR STATUS
|
||
ANDI DOUT,777 ;ONLY ERROR BITS
|
||
MOVEM DOUT,FILERR ;STORE ERROR BIT OR ZERO
|
||
LSTU4A: PUSHJ P,BLKS ;DETERMINE NO. BLK IN FILE
|
||
;AND TOTAL FOR UFD
|
||
|
||
LDB 0,PROT ;GET PROTECTION BITS
|
||
PUSHJ P,PROTO ;PRINT OCTAL NUMBERS
|
||
TRNE CALFLG,LISTTY ;OUTPUT DEVICE A TTY?
|
||
JRST LSTU7 ;YES, SKIP LONG DIRECTORY
|
||
LDB 0,ADATE ;PRINT ACCESS DATE
|
||
PUSHJ P,DATOUT
|
||
PUSHJ P,TABOUT
|
||
LDB 0,CTIME ;PRINT CREATION TIME
|
||
PUSHJ P,TIMOUT
|
||
LDB 0,CDATE
|
||
LDB T1,XCDATE ;[132] HIGH ORDER BITS
|
||
DPB T1,[POINT 3,0,23] ;[132] MERGE
|
||
PUSHJ P,DATOUT ;PRINT CREATION DATE
|
||
PUSHJ P,SPACE2
|
||
LDB 0,MODE ;PRINT MODE
|
||
PUSHJ P,OCTLS2
|
||
JRST LSTU8
|
||
|
||
LSTU5: PUSHJ P,TABOUT ;THE FILE WAS PROTECTED
|
||
HRRZ T7,FILEX ;GET PARTICULAR ERROR TYPE
|
||
CAIL T7,TABLND-TABLE ;IS IT LEGAL ERROR
|
||
PUSHJ P,DERRQ ;NO,PICK UP CATCH ALL MESSAGE
|
||
MOVE T1,TABLE(T7) ;PICK UP POINTER FOR ERROR MSG
|
||
LSTU6: ILDB CHR,T1 ;PICK UP CHAR FROM ERROR MSG
|
||
JUMPE CHR,LSTU8 ;PRINT ERROR MESSAGE, END SEEN
|
||
CAIN CHR,"!"
|
||
JRST LSTU8 ;ALTERNATE END SEEN (!)
|
||
IFE REENT,<
|
||
PUSHJ P,CCASE> ;DEPOSIT CHARACTER
|
||
PUSHJ P,PUT
|
||
JRST LSTU6
|
||
|
||
LSTU7: LDB 0,CDATE
|
||
LDB T1,XCDATE ;[132] HIGH ORDER BITS
|
||
DPB T1,[POINT 3,0,23] ;[132] MERGE
|
||
PUSHJ P,DATOUT ;PRINT CREATION DATE ONLY FOR TTY
|
||
LSTU8: CLOSE IN,
|
||
SKIPE DOUT,FILERR ;ANY FILE ERRORS
|
||
PUSHJ P,ERROUT ;YES, LIST CODE INSIDE PARENS.
|
||
PUSHJ P,LSTU8A ;COMMON ROUTINE TO OUTPUT "DEV:[PPN]"
|
||
JRST LSTU1
|
||
|
||
LSTU8A: TLZN CALFLG,LDVFLG ;DEVICE TO OUTPUT?
|
||
JRST LSTU9 ;NO
|
||
PUSHJ P,SPACE2
|
||
MOVE 0,ADSK ;GET F/S NAME
|
||
PUSHJ P,SIXOUT ;PRINT IT
|
||
MOVEI CHR,":" ;FOLLOW WITH COLON
|
||
PUSHJ P,PUT
|
||
LSTU9: TLZN CALFLG,LPPFLG ;PPN TO LIST?
|
||
JRST LSTU9A ;NO
|
||
PUSHJ P,SPACE2
|
||
MOVEI CHR,"[" ;FORM PPN
|
||
PUSHJ P,PUT
|
||
MOVE T5,UFDPPN ;[211] GET PPN OR POINTER TO PATH
|
||
TLNN T5,-1 ;[211] SEE IF PATH
|
||
MOVE T5,.PTPPN(T5) ;[211] YES, GET PPN FROM PATH
|
||
HLRZ 0,T5 ;[211] PUT PROJECT NUMBER IN 0
|
||
PUSHJ P,OCTLST
|
||
MOVEI CHR,","
|
||
PUSHJ P,PUT
|
||
HRRZ 0,T5 ;[211] GET PROGRAMMER NUMBER
|
||
PUSHJ P,OCTLST
|
||
MOVE T5,UFDPPN ;[211] GET PPN
|
||
TLNE T5,-1 ;[211] SEE IF IT IS POINTER TO PATH
|
||
JRST LSTU9B ;[211] NO, SKIP SFD PRINT
|
||
MOVEI T5,.PTPPN+1(T5) ;[211] START AT FIRST SFD
|
||
LSTU9C: MOVE 0,(T5) ;[211] GET SFD NAME
|
||
JUMPE 0,LSTU9B ;[211] 0 ENDS LIST
|
||
MOVEI CHR,"," ;[211] PUT COMMA'S BETWEEN
|
||
PUSHJ P,PUT ;[211] OUTPUT ,
|
||
PUSHJ P,SIXOUT ;[211] OUTPUT SFD NAME
|
||
AOJA T5,LSTU9C ;[211] LOOP TILL NULL SFD NAME
|
||
LSTU9B: ;[211]
|
||
MOVEI CHR,"]"
|
||
PUSHJ P,PUT
|
||
LSTU9A: JRST CLRF ;PRINT CR-LF AND RETURN
|
||
|
||
ERROUT: PUSHJ P,SPACE2 ;SEPARATE BY SOME SPACES
|
||
MOVEI CHR,"(" ;PUT ERROR CODE IN PARENS
|
||
PUSHJ P,PUT
|
||
SKIPA T4,[POINT 7,[ASCII /a*cm**rwf*/]]
|
||
LSH DOUT,-1 ;SHIFT ERROR BIT TOWARDS BIT 35
|
||
ILDB CHR,T4 ;GET AN ERROR CHARACTER
|
||
TRNN DOUT,1 ;IS IT THIS ERROR?
|
||
JRST .-3 ;NO
|
||
PUSHJ P,PUT ;YES,OUT IT GOES
|
||
MOVEI CHR,")"
|
||
JRST PUT ;RETURN
|
||
|
||
DIRFIN: SKIPE FILCNT ;HAVE WE SEEN ANY FILES?
|
||
JRST MAIN1 ;YES, EXIT
|
||
;[177] TELL USER HE DOESN'T HAVE ANY OF THOSE, AND TELL HIM WHICH
|
||
ERRPNT </Directory has no such files as />;[177]
|
||
MOVE 0,MATCH ;[177] MOVE NAME AND EXTENSION TO
|
||
MOVEM 0,FILNAM ;[177] FILNAM FOR FN.EX TO PRINT OUT
|
||
HRLZ 0,MATCH+1 ;[177] AFTER ERR3AC FIGURES OUT ANY
|
||
MOVEM 0,FILNAM+1 ;[177] WILD CARD STUFF
|
||
PUSHJ P,ERR3AC ;[177] GO PRINT FILNAM, IF OUTPUT IS TTY
|
||
;[177] IT WILL BE REOPENED HERE
|
||
JRST MAIN1 ;[177] GO SEE IF ANY MORE TO DO
|
||
|
||
|
||
;**;[505] Insert a page after DIRFIN routine RLUSK 25-Nov-80
|
||
|
||
COMMENT ~
|
||
RENTST IS ENTERED ON RENAMES (AND PROTECTS) AND SETS UP THE
|
||
INPUT AND OUTPUT PATH SPECIFICATIONS AS FOLLOWS:
|
||
|
||
OUTPUT PATH SPECIFIED?
|
||
|
||
YES NO
|
||
-------------------------------------------------
|
||
! USE OUTPUT PATH ! USE INPUT PATH !
|
||
! AS SPECIFIED ! FOR OUTPUT PATH !
|
||
YES ! ! !
|
||
! USE INPUT PATH ! USE INPUT PATH !
|
||
! AS SPECIFIED ! AS SPECIFIED !
|
||
INPUT PATH !-----------------------------------------------!
|
||
SPECIFIED? !-----------------------------------------------!
|
||
! USE OUTPUT PATH ! USE DEFAULT PATH !
|
||
! AS SPECIFIED ! FOR OUTPUT PATH !
|
||
NO ! ! !
|
||
! USE DEFAULT PATH ! USE DEFAULT PATH !
|
||
! FOR INPUT PATH ! FOR INPUT PATH !
|
||
-------------------------------------------------
|
||
~
|
||
|
||
RENTST: ;[505]
|
||
;[505]
|
||
;[505] WAS AN OUTPUT PATH (OR PPN) GIVEN?
|
||
;[505]
|
||
SKIPN DTON+3 ;[505] IF DTON+3 IS ZERO, NO OUTPUT
|
||
;[505] PATH HAS BEEN GIVEN
|
||
JRST RENTT3 ;[505] NO OUTPUT PATH SPECIFIED
|
||
|
||
RENTT1: SKIPE PP ;[505] HAS AN INPUT PATH (OR PPN) BEEN GIVEN?
|
||
JRST RENTT2 ;[505] YES -- AN INPUT PATH EXISTS
|
||
|
||
;[505]
|
||
;[505] THIS CODE IS REACHED WHEN AN OUTPUT PATH EXISTS AND NO INPUT PATH
|
||
;[505] HAS BEEN GIVEN. THIS JUMPS TO THE END OF RENTST ROUTINE
|
||
;[505]
|
||
JRST RENEND ;[505] NO INPUT PATH SPECIFIED, RETURN
|
||
|
||
RENTT2: ;[505]
|
||
;[505]
|
||
;[505] THIS CODE IS ENTERED WHEN AN OUTPUT PATH AND INPUT PATH BOTH EXIST
|
||
;[505] THIS ALSO JUMPS TO THE END OF RENTST ROUTINE.
|
||
;[505]
|
||
JRST RENEND ;[505] RETURN
|
||
|
||
RENTT3: ;[505]
|
||
;[505]
|
||
;[505] NO OUTPUT PATH EXISTS
|
||
;[505]
|
||
SKIPN PP ;[505] IS THERE AN INPUT PATH?
|
||
JRST RENEND ;[505] NO -- RETURN AND USE DEFAULTS
|
||
RENTT4: ;[505]
|
||
;[505]
|
||
;[505] NO OUTPUT PATH EXISTS, BUT AN EXPLICIT INPUT PATH HAS BEEN GIVEN.
|
||
;[505] THEREFORE, COPY THE INPUT PATH INTO THE OUTPUT PATH
|
||
;[505]
|
||
MOVE T1,[XWD PTHADD,PTHOUT] ;[505] SET UP FOR COPY OF PATH
|
||
HRRZM T1,DTON+3 ;[505] AND SET POINTER TO OUTPUT PATH
|
||
BLT T1,PTHOUT+PTHLEN+3 ;[505] COPY THE PATH
|
||
JRST RENEND ;[505] RETURN
|
||
|
||
|
||
;[505]
|
||
;[505] A COMMON RETURN IS USED TO KEEP THIS MAINTAINABLE
|
||
;[505]
|
||
RENEND: JRST DSKDRE ;[505] RETURN
|
||
|
||
|
||
|
||
MLSTU: TRNN CALFLG,MATFN ;MATCH FILE NAME
|
||
JRST MLSTU1 ;NO, TRY EXT
|
||
XOR 0,MATCH
|
||
ANDCM 0,QMASK
|
||
JUMPN 0,LSTU1 ;MATCH FAILED
|
||
MLSTU1: TRNN CALFLG,MATEX ;MATCH EXT
|
||
JRST LSTU2A ;NO
|
||
XOR DOUT,MATCH+1
|
||
ANDCM DOUT,QMASK+1
|
||
JUMPN DOUT,LSTU1 ;FAILED
|
||
HLRZ DOUT,FILNAM+1 ;[226] RESTORE EXTENSION (I.E. 'UFD')
|
||
JRST LSTU2A ;MATCH FOUND
|
||
|
||
|
||
;ROUTINE TO OUTPUT SPACES, T4=NO. TO OUTPUT
|
||
|
||
SPACE2: MOVEI T4,2 ;SET FOR 2 SPACES
|
||
SPACES: MOVEI CHR,SPACE
|
||
PUSHJ P,PUT
|
||
SOJG T4,.-1
|
||
POPJ P,
|
||
|
||
;ROUTINE TO DEPOSIT SIXBIT CHARACTERS
|
||
;FROM AC0 INTO OUTPUT BUFFER
|
||
;DECREMENTING COUNT IN T4
|
||
SIXOUT: MOVSI T2,(POINT 6,0,5);[320] SET UP BYTE POINTER
|
||
SIXO1: JUMPE 0,CPOPJ ;[320] DONE IF NOTHING LEFT
|
||
LDB CHR,T2 ;[320] GET LEFT MOST CHARACTER
|
||
ADDI CHR,SPACE ;[320] MAKE IT ASCII
|
||
PUSHJ P,PUT ;[320] ADD TO BUFFER
|
||
LSH 0,6 ;[320] ON TO NEXT BYTE
|
||
SOJA T4,SIXO1 ;[320] COUNTING THIS ONE
|
||
|
||
;DETERMINE NUMBER OF BLOCKS PER FILE AND TOTAL NUMBER OF
|
||
;BLOCKS USED BY USERS PROJECT,PROGRAMMER NUMBER
|
||
|
||
BLKS: MOVEI T2,PUT ;SET OUTPUT
|
||
MOVE DOUT,RIBFIR+.RBSIZ ;[273]
|
||
IFE LEVELC,< ;[322]
|
||
JRST BLKSE ;[322] CONVERT TO BLOCKS
|
||
>;[322] END IFE LEVELC
|
||
IFN LEVELC,< ;[322]
|
||
SKIPE LEVEL ;SKIP IF LEVEL C
|
||
SKIP 3 ;LEVEL D WORD COUNT
|
||
HLRE DOUT,PP ;GET WORD COUNT OF FILE
|
||
>;[322] END IFN LEVELC
|
||
BLKSD: JUMPGE DOUT,BLKADD ;IF POS = NO. OF BLOCKS
|
||
MOVNS DOUT ;MAKE POSITIVE
|
||
BLKSE: TRZE DOUT,177 ;[322] TAKE CARE OF PARTIAL BLOCKS
|
||
ADDI DOUT,200
|
||
IDIVI DOUT,200 ;CALCULATE BLOCK COUNT
|
||
BLKADD: ADDM DOUT,BLKSUM ;CALCULATE TOTAL FOR ALL FILES
|
||
TRNE FLAG,DFLG ;IF /D
|
||
POPJ P, ;JUST RETURN
|
||
PUSHJ P,OUTDE4 ;OUTPUT NUMBER OF BLOCKS IN DECIMAL
|
||
JRST SPACE2 ;RETURN WITH 2 SPACES
|
||
|
||
;END OF FILE ON UFD OUTPUT TOTAL BLOCKS XXX
|
||
|
||
BLKLST: SKIPN BLKSUM ;ANY INFORMATION TO OUTPUT
|
||
JRST BLKLS1 ;NO - FINISHED
|
||
LSTLIN TOTAL ;OUTPUT CR,LF "TOTAL BLOCKS"
|
||
MOVE DOUT,BLKSUM
|
||
MOVEI T2,PUT ;SET OUTPUT
|
||
PUSHJ P,OUTDE4 ;PRINT TOTALS
|
||
PUSHJ P,CRLF ;BONUS CR-LF
|
||
BLKLS1: SKIPN GENERI ;MORE FILE STRUCTURES?
|
||
JRST MAIN1 ; FINISHED
|
||
SETZM BLKSUM ;START AFFRESH
|
||
MOVE T1,UFDPPN ;[211] RESTORE PP
|
||
MOVEM T1,PP
|
||
JRST LSTU0 ;YES
|
||
|
||
TOTAL: ASCIZ /
|
||
Total Blocks /
|
||
|
||
IFE REENT,<
|
||
CCASE: CAIL CHR,"a" ;FLUSH LOWER CASE LETTERS
|
||
CAILE CHR,"z" ;FROM OUTPUT IN CASE PDP-6 LPT
|
||
POPJ P,
|
||
SUBI CHR,40
|
||
POPJ P,>
|
||
|
||
SUBTTL SET UP DIRECTORY CHANNEL
|
||
|
||
;INPUT USERS FILE DIRECTORY
|
||
|
||
UIN: SETZ IOS, ;JUST IN CASE
|
||
IN DIR,
|
||
JRST CPOPJ1 ;NO ERRORS
|
||
STATUS DIR,IOS
|
||
TXZN IOS,IO.EOF
|
||
JRST UIN2 ;ERROR PRINT
|
||
POPJ P,
|
||
|
||
;INIT DIRECTORY DEVICE
|
||
|
||
DSKDST: MOVE T2,.JBFF ;SAVE JOBFF IN T2
|
||
|
||
MOVEI T1,DBUF
|
||
MOVEM T1,.JBFF ;MAKE MONITOR USE DBUF FOR DISK DIR.
|
||
|
||
MOVX T1,.IOBIN ;BINARY MODE
|
||
SKIPE GENERI ;[151] SEE IF IT WAS A GENERIC SPEC
|
||
TXO T1,UU.PHS ;[151] YES, SET PHYSICAL-ONLY TO AVOID AMBIGUITY
|
||
MOVEM T1,ADSK1
|
||
|
||
MOVEI T1,UFDIN ;LOC OF DIRECTORY ENTRY
|
||
MOVEM T1,ADSK+1 ;FOR UFD
|
||
|
||
OPEN DIR,ADSK1
|
||
JRST ERR1A
|
||
INBUF DIR,1 ;RESET JOBFF SAME AS ENTRY
|
||
MOVEM T2,.JBFF
|
||
POPJ P,
|
||
|
||
SUBTTL MISCELLANEOUS DIRECTORY LIST ROUTINES
|
||
|
||
;OUTPUT THE DIRECTORY LISTING HEADER
|
||
|
||
HEDR3: TRNN AUXFLG,FFLG ;POP BACK IF SHORT LISTING
|
||
TRNE CALFLG,LISTTY
|
||
POPJ P,
|
||
|
||
HEADER: PUSHJ P,HEDR4
|
||
HEDR1: LSTLIN HEDL1
|
||
DATE ;DATE REQ.
|
||
PUSHJ P,DATOUT
|
||
PUSHJ P,TABOUT
|
||
PUSHJ P,NOWOUT ;PRINT CURRENT TIME, DATE
|
||
AOS PGCNT ;INCREMENT PAGE COUNT
|
||
LSTLIN HEDPG
|
||
MOVE 0,PGCNT ;GET PAGQ NUMBER
|
||
IDIVI 0,^D10 ;DECIMAL PAGES
|
||
JUMPE 0,.+4
|
||
MOVE CHR,0
|
||
ADDI CHR,"0" ;[246] CONVERT TO ASCII
|
||
PUSHJ P,PUT
|
||
MOVEI CHR,"0"(1)
|
||
PUSHJ P,PUT
|
||
SOS LIN
|
||
LSTLIN HEDLIN
|
||
HEDR2: JRST CLRF
|
||
|
||
|
||
HEDLIN: ASCIZ /
|
||
Name Extension Len Prot Access ---Creation--- Mode
|
||
/
|
||
HEDL1: ASCIZ / Directory listing /
|
||
HEDPG: ASCIZ / Page /
|
||
|
||
|
||
UIN2: PUSHJ P,COMERR
|
||
JSP T5,INICN2
|
||
ERRPN2 </?Disk directory read />
|
||
MOVEI T3,UFD ;LOCATION OF FILENAME(AND EXT)
|
||
PUSHJ P,FN.EX ;PRINT FILE NAME EXTENSION
|
||
MOVE T2,AUXFLG
|
||
ANDI T2,DSKIN
|
||
PUSHJ P,IOERR
|
||
SETSTS DIR,(IOS)
|
||
JRST CPOPJ1
|
||
|
||
;OUTPUT THE TIME FOUND IN AC 0
|
||
|
||
NOWOUT: MSTIME ;CALL MILLISEC TIMER
|
||
IDIVI 0,^D60000 ;CONVERT TO MINUTES
|
||
TIMOUT: IDIVI 0,^D60
|
||
MOVE DOUT,0
|
||
PUSHJ P,OUTDEC
|
||
MOVEI CHR,":" ;SEPARATE BY A COLON
|
||
PUSHJ P,PUT
|
||
MOVE DOUT,1
|
||
PUSHJ P,OUTDEC
|
||
JRST TABOUT
|
||
;SKIP TO HEAD OF FORM OR NEXT HALF PAGE, RESET COUNT
|
||
|
||
|
||
HEDR4: TRNE CALFLG,LISTTY
|
||
JRST [POP P,(P) ;BACKUP ONE LEVEL
|
||
POPJ P,] ;AND EXIT IF TTY
|
||
SKIPLE LIN
|
||
JRST HEDR6 ;ANYTHING ON THIS PAGE?
|
||
HEDR5: MOVEI CHR,FF ;FORM FEED IF FULL OR
|
||
MOVEI T2,^D50
|
||
HEDR5A: MOVEM T2,LIN ;ALMOST FULL
|
||
PUSHJ P,PUT
|
||
MOVEI CHR,LF
|
||
PUSHJ P,PUT
|
||
PUSHJ P,PUT
|
||
JRST PUT ;PRINT LINEFEEDS AND EXIT
|
||
HEDR6: CAIGE T2,^D25
|
||
JRST HEDR5
|
||
MOVEI CHR,HPAGE
|
||
MOVEI T2,^D16
|
||
JRST HEDR5A
|
||
|
||
;OUTPUT OCTAL WORD FOUND IN AC 0
|
||
|
||
OCTLS2: MOVEI CHR," "
|
||
CAIGE 0,10 ;AT LEAST 2 CHAR.?
|
||
PUSHJ P,PUT ;NO,SO OUTPUT A BLANK
|
||
OCTLST: MOVSI T1,(POINT 3,0)
|
||
ILDB CHR,T1
|
||
TLNE T1,770000 ;ALLOW UPTO 12 OCTAL NOS
|
||
JUMPE CHR,.-2 ;GET MOST SIG. NUMBER
|
||
OCTL1: ADDI CHR,60 ;CONVERT TO ASCII
|
||
PUSHJ P,PUT ;OUTPUT CHAR
|
||
ILDB CHR,T1 ;GET SUCCEEDING CHARS
|
||
TLNN T1,400000 ;WAIT TILL POINTING TO NEW
|
||
JRST OCTL1 ;WORD, THEN EXIT. MEAN WHILE
|
||
POPJ P, ;PRINT OCTAL NUMBERS
|
||
|
||
;OUTPUT PROTECTION BITS FOUND IN AC 0
|
||
|
||
PROTO: MOVEI CHR,"<"
|
||
MOVSI T1,(POINT 3,,26)
|
||
PUSHJ P,OCTL1+1
|
||
MOVEI CHR,">"
|
||
PUSHJ P,PUT
|
||
MOVEI T4,3 ;SET FOR THREE SPACES
|
||
JRST SPACES ;AND EXIT
|
||
|
||
SUBTTL DISK ENTER/LOOKUP/RENAME ERROR PRINTER
|
||
|
||
;THIS IS THE DISK ERROR ROUTINE. CALL DERR4 WITH T3=FIRST WORD ADDRESS
|
||
;OF LOOKUP OR ENTER. USE T7 FOR SAVING THE ERROR CODE.
|
||
|
||
DERR5A: MOVEI T3,FILNAM ;LOCATION OF FILENAME
|
||
HRRZ T7,1(T3) ;GET ERROR CODE
|
||
SKIPE GENERI ;FATAL IF NOT GENERIC "DSK"
|
||
CAILE T7,ERIPP% ;NO UFD IF 0 OR 1
|
||
JRST DERR4 ;ANY OTHER ERROR
|
||
|
||
TRNN AUXFLG,FFLG ;[174] ONLY OUTPUT %NO UFD IF DOING
|
||
TRNE FLAG,LFLG ;[174] /L OR /F
|
||
SKIPN STRARG ;[163] IF DOING SYS: SEARCH LIST
|
||
JRST DERR5B ;[163] THEN IGNORE MISSING UFD'S
|
||
LSTLIN NOUFD
|
||
TLO CALFLG,LDVFLG!LPPFLG ;PRINT "DEV:[PPN]"
|
||
PUSHJ P,LSTU8A
|
||
TLO FL,LDVFLG!LPPFLG ;[163] RESET TO PRINT DEV AND PP AGAIN
|
||
DERR5B: ;[163]
|
||
SOS (P) ;[127] CORRECT RETURN ADDRESS
|
||
SOS (P) ;[127] TO MAINAD OR LSTU0
|
||
JRST DIRSK2 ;GET NEXT FILE STRUCTURE
|
||
|
||
NOUFD: ASCIZ /%No UFD exists for / ;[242]
|
||
|
||
;HERE IF THE SFD LOOKUP FAILED
|
||
|
||
DERR5S: MOVEI T3,FILNAM ;[211] GET ADDRESS OF LOOKUP BLOCK
|
||
HRRZ T7,1(T3) ;[211] GET LOOKUP ERROR CODE
|
||
CAIE T7,ERSNF% ;[211] ONLY ACCEPT ERROR 23
|
||
CAIG T7,ERIPP% ;[243] OR 0 OR 1
|
||
SKIPN GENERI ;[211] AND ONLY ON NON-GENERIC
|
||
JRST DERR4 ;[211] FATAL ERROR
|
||
MOVEM T2,(T1) ;[211] RESTORE SFD NAME
|
||
JRST DERR5B ;[211] AND BACKWARDS SKIP RETURN
|
||
|
||
DERR7Z: MOVE T3,DTON ;RECOVER NAME
|
||
MOVEM T3,ZRF
|
||
JRST DERR5R ;PRINT AND RETURN
|
||
|
||
DERR6R: TRO CALFLG,RTRNFL
|
||
DERR6: MOVEI T3,DTON ;LOCATION OF FILENAME (OUTPUT)
|
||
JRST DERTYP
|
||
DERR7: HRRZ T3,DTON+1 ;GET ERROR CODE
|
||
CAIN T3,ERAEF% ;IF RENAME ERROR =4
|
||
JRST DERR6R ;USE OUTPUT NAME
|
||
HRRM T3,ZRF+1 ;PUT IT IN EXPECTED PLACE
|
||
DERR5R: TRO CALFLG,RTRNFL ;SET TO RETURN FROM ERROR PRINTER
|
||
DERR5: MOVEI T3,ZRF ;LOCATION OF FILENAME (INPUT)
|
||
DERTYP: HRRZ T7,1(T3) ;ERROR TYPE
|
||
DERR4: ERRPNT </? />
|
||
PUSHJ P,FN.EX ;PRINT FILE NAME .EXT
|
||
CAIL T7,TABLND-TABLE ;LEGAL ERROR?
|
||
PUSHJ P,DERRQ ;NO USE CATCHALL MESSAGE
|
||
MOVE T1,TABLE(T7) ;PICK UP BYTE POINTER
|
||
JRST PTEXT1 ;AND PRINT MESSAGE
|
||
|
||
DERRQ: MOVEI CHR,"(" ;ENCLOSE ERROR NUMBER IN PARENS.
|
||
PUSHJ P,PUTCON ;OUTPUT IT
|
||
MOVE 0,T7 ;GET ERROR NUMBER
|
||
MOVEI T7,TABLND-TABLE ;SETUP MESSAGE
|
||
DERRQ1: IDIVI 0,10 ;[317] GET RIGHTMOST DIGIT
|
||
HRLM 1,(P) ;[317] SAVE IT ON STACK
|
||
SKIPE 0 ;[317] ENOUGH ALREADY?
|
||
PUSHJ P,DERRQ1 ;[317] NOT YET
|
||
HLRZ CHR,(P) ;[317] GET NEXT DIGIT BACK
|
||
ADDI CHR,"0" ;[317] MAKE IT ASCII
|
||
JRST PUTCON ;PRINT REMAINDER AND RETURN
|
||
|
||
TABLE: POINT 7,[ASCII /(0) file was not found!/]
|
||
POINT 7,[ASCII /(1) no directory for project-programmer number!/]
|
||
POINT 7,[ASCII /(2) protection failure!/]
|
||
POINT 7,[ASCII /(3) file was being modified!/]
|
||
POINT 7,[ASCII /(4) rename file name already exists!/]
|
||
POINT 7,[ASCII /(5) illegal sequence of UUOs!/]
|
||
POINT 7,[ASCII /(6) bad UFD or bad RIB!/]
|
||
POINT 7,[ASCII /(7) not a SAV file!/]
|
||
POINT 7,[ASCII /(10) not enough core!/]
|
||
POINT 7,[ASCII /(11) device not available!/]
|
||
POINT 7,[ASCII /(12) no such device!/]
|
||
POINT 7,[ASCII /(13) not two reloc reg. capability!/]
|
||
POINT 7,[ASCII /(14) no room or quota exceeded!/]
|
||
POINT 7,[ASCII /(15) write lock error!/]
|
||
POINT 7,[ASCII /(16) not enough monitor table space!/]
|
||
POINT 7,[ASCII /(17) partial allocation only!/]
|
||
POINT 7,[ASCII /(20) block not free on allocation!/]
|
||
POINT 7,[ASCII /(21) can't supersede (enter) an existing directory!/]
|
||
POINT 7,[ASCII /(22) can't delete (rename) a non-empty directory!/]
|
||
POINT 7,[ASCII /(23) SFD not found!/]
|
||
POINT 7,[ASCII /(24) search list empty!/]
|
||
POINT 7,[ASCII /(25) SFD nested too deeply!/]
|
||
POINT 7,[ASCII /(26) no-create on for specified SFD path!/]
|
||
POINT 7,[ASCII /(27) segment not on swap space!/]
|
||
POINT 7,[ASCII /(30) cannot update file!/]
|
||
POINT 7,[ASCII /(31) LOW segment overlaps HIGH segment!/]
|
||
POINT 7,[ASCII /(32) not logged in!/]
|
||
POINT 7,[ASCII /(33) file has outstanding locks!/] ;[335]
|
||
POINT 7,[ASCII /(34) bad EXE directory!/] ;[335]
|
||
POINT 7,[ASCII /(35) bad extension for EXE file!/] ;[335]
|
||
POINT 7,[ASCII /(36) EXE directory too big!/] ;[335]
|
||
POINT 7,[ASCII /(37) network capacity exceeded!/] ;[335]
|
||
POINT 7,[ASCII /(40) task not available!/] ;[335]
|
||
POINT 7,[ASCII /(41) undefined network node!/] ;[335]
|
||
;**;[503] Insert 4 lines at TABLE+33 RLUSK 31-Oct-80
|
||
POINT 7,[ASCII /(42) RENAME - SFD is in use by another job!/] ;[503]
|
||
POINT 7,[ASCII /(43) DELETE - file has an NDR lock!/] ;[503]
|
||
POINT 7,[ASCII /(44) too many readers!/] ;[503]
|
||
POINT 7,[ASCII /(45) RENAME - SFD to lower level!/] ;[503]
|
||
|
||
TABLND: POINT 7,[ASCII /) lookup,enter,or rename error!/]
|
||
|
||
END PIP1
|