4 /COPYRIGHT (C) 1979 BY DIGITAL EQUIPMENT CORPORATION
8 /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
9 /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
10 /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
11 /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT.
13 /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
14 /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
15 /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
16 /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
18 /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
19 /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
27 \f/4 CCL'S COMMAND DECODER
28 .EXTERNAL TABLES,FNAME1
31 /THE FOLLOWING DON'T HAVE TO BE ENTRY'S BECAUSE THEY ARE LINKED TO
32 /FROM THE EXTENSION MODULE (CCLCDX) THAT KNOWS CCLCD IS IN MEMORY
34 .EXTERNAL EQLPRM,POUND,DNUMB
35 MULTI=1 /SET TO 0 TO GET RID OF MULTIPLE CHARACTER SWITCHES
37 .GLOBAL BADEV,CDER2,DVICE /******
38 .GLOBAL ASADR,LNAME /*****
42 .EXTERNAL FLAG,MOVE,PRMESG
44 .EXTERNAL LBEGIN,DECODE
47 .ENTRY CD,ASSIGN,LOOKUP,ZEROCD,GLXR
48 .EXTERNAL OUTSW,OUTLIM
49 .ENTRY GCH,SETDEV,SETEXT
72 DEFALT=33 /POINTS TO DEFAULT EXTENSION LIST
81 TAD I (BEGDIF /DIFF BETWEEN INPUT & OUTPUT AREAS
84 JMS I (GETSPC /FAKE-OUT TO GETSPC CAN CAUSE EFFECTIVE BRANCH HERE
88 TAD I (LIMDIF /DIFF BETWEEN END OF OUTPUT & INPUT AREAS
89 TAD I (OUTLIM /END OF OUTPUT AREA
95 LKUPSW, JMP IN$ /ZEROED IF IN "SPECIAL DECODE" MODE
107 JMS PCLXR /STORE LENGTH AND DEV NUMBER
108 TAD I (LNAME /GET BLOCK
115 SPA CLA /FEATURE ENABLED?
118 JMP DLOOK /IN SPECIAL MODE OR ON OUTPUT SIDE
126 TAD (7600 /V1A NOW TAKES ARG IN AC
127 JMS I (NMOVE /MOVE NAME TO OUTPUT FILE NAMES
142 JMP I (FILLP /**** JUMPING INTO ROUTINE (IS THIS A BUG?)
147 JMP 5$ /BACK-ARROW (UNDERSCORE) MEANS SAME AS "<"
149 SZA CLA /SKIP ON AN EQUAL SIGN (=)
150 JMP I (CDER2 /BAD CHAR
154 STA /LINK=0 MEANS LETTER
155 TAD LXR /NOW LINK=1 MEANS LETTER
159 JMS I (EQLPRM /= MEANS = (NUMERIC PARAMETER)
162 5$: ISZ I (OUTSW /FOUND BACK-ARROW (<)
163 JMP I (CDER2 /TWO BACK-ARROWS
164 TAD LXR /GET PTR TO ARROW
165 DCA I (ARLOC /SAVE IT ('EDIT' MIGHT NEED IT)
174 DCA I (DONB /ZERO 1ST OUTPUT FILE
187 SMA SZA CLA /CHECK FOR OUTPUT OR FIRST INPUT
188 JMP ASNORM /IF DEVICE WAS SPECIFIC,
189 /OR IF WE ARE ON THE INPUT SIDE,
203 SNA CLA /DON'T LOAD HANDLER
204 /IF WE ARE ON OUTPUT SIDE OF "_"
206 SPKLG1, SNA CLA /OR THERE IS NO FILE NAME TO LOOK UP
207 TAD GETHND /GETHND=11 NORMALLY,
208 /0 IF IN "SPECIAL DECODE" MODE
211 TAD (HNDLR+1 /ALLOW TWO PAGE HANDLERS
224 GETHND, 11 /1+11=12 (1=FETCH, 12=INQUIRE)
230 JMP I GETL /NON-ALPHANUM IN CCL SWITCH
246 JMP I (CDER4 /CCL EXT ON OUTPUT FILE
250 JMP I (CDER44 /NON-ALPHANUMERIC CCL SWITCH
254 JMP 1$ /ONE CHAR CCL SWITCH
258 1$: SKP CLA /2 CHAR CCL SWITCH
259 JMP I (CDER44 /3 CHAR CCL-SWITCH
266 DCA G$ /GET PTR TO ARGUMENT PAIR
267 TAD I G$ /GET SUBROUTINE
270 TAD I G$ /GET ARGUMENT
272 JMS I H$ /CALL SUBR, ARG IN AC
278 \f/GETS A NAME FROM FIELD ZERO BUFFER VIA LXR
279 /RETURNS WITH DELIMETER IN AC
280 /GIVES ERROR MESSAGE IF NAME IS BAD
296 JMS I (NUMC /BUG IF MAKE COMMAND USES A # (OVERLAYS LOOP)
309 STARSW, JMP I (CDER6 /"JMP STARNM"
310 /IF "SPECIAL DECODE" MODE
317 STARNM, CLA /THIS CODE HANDLES *'S AND ?'S CORRECTLY
339 JMP I (CDER7 /NULL NAME OR DOUBLE EXTENSION
342 STL CLA RTL /2 (ALLOW 4 CHARACTER EXTENSION)
360 JMP CD6E /ERROR IF BATCH IS RUNNING
364 JMP CD6E /ONLY IF -LS WORKS
399 CLA IAC /FORCE NAMERM NON-0 IF . AND NO EXT
401 DCA NAMERM /REMEMBER TYPED EXTENSION
405 SNA /HAS AN EXTENSION BEEN SET?
407 SNA /DOES FILE HAVE EXTENSION?
408 JMP EXT2 /NO EXTENSION TYPED OR SET, DO SUCCESSIVE LOOK-UPS
409 JMS EXTLUK /LOOK FOR EXTENSION
410 SNA CLA /DID WE FIND IT?
411 JMP EXT3 /NO, FORCE NULL EXTENSION TO MATCH
416 JMP NEXTEXT /IGNORE -1'S
421 DCA NAME4 /SET NEW EXTENSION
433 ISZ DEF /POINT TO ASSOCIATED CUSP NAME
437 DCA I (DEFILE /SAVE IT AWAY
450 SNA CLA /WAS THERE AN EXPLICIT EXTENSION?
451 TAD I DEF /NO - WAS THERE A DEFAULT EXTENSION?
455 ISZ DEF /NO EXPLICIT EXT AND YES DEFAULT EXT
456 ISZ DEF /POINT TO NEXT POSSIBLE DEFAULT EXTENSION
457 JMP EXT2 /AND TRY FOR IT
474 ISZ DEF /POINT TO NEXT ENTRY
476 2$: TAD T /RETURN WITH IT IN AC
480 JMP I (CDER3 /NO DEFALT EXTENSION OR YES EXPLICIT EXTENSION
481 \fBADSYN, TEXT /#ILLEGAL SYNTAX/
482 TOOMAN, TEXT /#TOO MANY FILES/
483 /AMBIGY, TEXT /#AMBIGUOUS SWITCH/
489 JMP I (ONE /ONE-CHARACTER SWITCH
494 \f/TAKES A LETTER OR A DIGIT IN AC
495 /AND TURNS ON APPROPRIATE BIT IN OPTION TABLE
506 CMA STL /THE FOLLOWING TURNS
507 /ON THE CORRECT OPTION BIT
527 TAD (-42 /AC MAY BE NON-0
531 DCA I XR /ZERO THE COMMAND DECODER OUTPUT AREA
540 JMP GCH+1 /IGNORE SPACES
571 SLASH, CDF TABLES /POINT TO SWITCH TABLE POINTER
572 TAD I PTR /GET PTR TO SWITCH TABLE
577 \fOLENGT, TAD I (OUTSW
578 AND NAME1 /[N] IS ONLY LEGAL
579 /ON THE OUTPUT SIDE OF THE "_"
580 SNA CLA /AND ONLY AFTER A FILE NAME
593 TAD (-"] /IS THERE A CLOSING BRACKET?
595 /"DLOOK" ROUTINE WILL DETECT IT
605 5723 /PACKED ENCODING FOR 'DSK:'
606 DSKDEV, 0 /SET TO DEVICE NUMBER
613 MUNGC, TEXT /MUNG WILD,/
617 \fCCER1, TAD I (NAMPTR
637 JMP I (CDER2 /B DOES NOT EXIST
646 \fNF, TEXT / NOT FOUND/
647 DNE, TEXT / DOES NOT EXIST/
648 BADSW, TEXT /#SWITCH NOT ALLOWED HERE/
649 BADSW2, TEXT /#BAD CCL SWITCH/
650 CONTRA, TEXT /#CONTRADICTORY SWITCHES/
669 ISZ CLXR /= MEANS _ IF NOT FOLLOWED BY A DIGIT
675 SNL CLA /MAYBE A DIGIT
676 JMP I BKA /= FOLLOWED BY A NON-DIGIT MEANS _
677 JMP 1$ /IT'S AN =NNNN
681 BADEV, TEXT /#BAD DEVICE/
684 ISZ PTR /POINT TO SWITCH TABLE
686 13 /RESET ALL HANDLERS
691 SZA CLA /IS THIS A REQUEST FOR A
695 DCA I (OUTLIM /YES, SET UP THE PROPER LOCATIONS
697 DCA LIMDIF /TO GET 1 OUTPUT AND 5 INPUT FILES
699 DCA BEGDIF /ALL OF WHICH ARE
700 /5-WORD <DEVICE,NAME> ENTRIES
703 DCA I PSTARS /AND ALLOW *
704 /AS A FILE OR EXTENSION NAME
705 TAD L7600 /STOPS FETCHES IN SPECIAL MODE
706 DCA I PSPKG1 /NO HANDLER FETCHES NECESSARY EITHER
708 CDCONT, JMS I (BKA /SCAN AHEAD FOR <
709 STA /SKIP RETURN IF NOT FOUND
715 /CONSTANTS NECESSARY TO SUPPORT "SPECIAL DECODE" MODE
717 ALTDF1, MOFILE+5-MPARAM+5
723 BEGDIF, MIFILE-MOFILE
724 LIMDIF, MIFILE-MPARAM+2
725 \f/STARJM, RELOC STARNM /DUMP LITERALS AT LAST POSSIBLE MOMENT
728 STARJM, 5200+<STARNM&177>
729 \fSETDEV, 0 /V1A ARG NOW IN AC
734 1$: 0 /PTS TO DEVICE NAME
743 TAD T /NEG OF SWITCH REQUEST
745 JMP CCERA /CAN'T HAVE 2ND DEFAULT EXTENSION
748 DCA SETEXT /SET DEFAULT EXTENSION
749 TAD DEFALT /SEE IF IT'S IN COMMAND'S SEARCH LIST
753 SNA CLA /DID WE FIND IT?
756 / TAD I (JMSUB /ALLOW RECURSIVE CALL
761 JMS I (JMSUB /CALL ITS SUBR
763 /V1A RECURSIVE CALL NO LONGER THREATENS
767 SETEXT, 0 /EXT WHICH HAS BEEN SET BY A CCL SWITCH
768 \fCCERA, JMS I (PRMESG
783 \fBADSTR, TEXT /#ILLEGAL * OR ?/
784 SWNF, TEXT / OPTION UNKNOWN/
785 BADOPT, TEXT /#BAD SWITCH OPTION/
787 \fBADX, TEXT /#BAD EXTENSION/
789 /THIS GETS A DEV:NAME.EXT SPECIFICATION (USING LXR)
790 /PUTTING RESULT IN DEV1,DEV2, NAME1-4.
791 /IT GIVES A FATAL ERROR MESSAGE IF BAD.
798 TAD (-": /AC CONTAINED DELIM
800 JMP 3$ /IT'S A DEVICE NAME
807 FNAME1 /SAVE AWAY FILE NAME
809 3$: CLA IAC /PARSE FILENAME AFTER DEV:
813 JMP CDERA /. OR # IN DEVICE NAME
817 JMP CDERA /CATCHES A:B:
825 NUMC, 0 /USED AS FLAG INDICATING SAW #
829 DCA 2$ /V1A ARG IN AC
832 SMA CLA /FEATURE ENABLED?
836 JMP I (CCERB /ON OUTPUT SIDE
838 SNA CLA /DON'T CHANGE OUT DEV IF SPECIFIED
839 TAD I (FLAG /LOOK AT 'COPY EXT' BIT
842 JMP 1$ /IT WASN'T SET
843 TAD I (MIFILE /GET FIRST INPUT DEVICE
844 AND (17 /ISOLATE DEVICE BITS
845 DCA I (MOFILE /FORCE THIS TO BE FIRST OUTPUT DEVICE
848 JMS I (SETDSK /CHANGE TO 'IAC' TO ALWAYS USE SYS:
849 DCA I 2$ /SET DEVICE TO SYS IF NONE
851 TAD I 2$ /WAS THERE A SPECIFICATION THERE?
853 JMP I NMOVE /YES, DO NOTHING
855 AND (200 /GET 'COPY EXTENSION' BIT
856 SMA SZA CLA /'SMA' IS UNNECESSARY
857 STA /COPY 4 WORDS IF BIT 4 WAS ON
858 TAD (-3 /OTHERWISE ONLY COPY 3 WORDS
885 AMBIGY, TEXT / OPTION AMBIGUOUS/
896 JMP I SETOUT /HE'S SPECIFIED SOMETHING
902 JMP I (CCER2 /NO SUCH DEVICE
907 SNA CLA /USING 2ND OUT DEV?
915 OLOC, 7600 /INITIALLY 7600 OR 7605
917 \f/ TAD (PTR TO SWITCH TABLE ENTRY (IN FIELD 0)
919 / IT PARSES SWITCH, SETS BIT
920 / PARSES :VALUE, SETS = OPTION
921 / LEAVES DELIMETER IN DELIM
924 DCA SPTR /POINT INTO A SWITCH TABLE
925 JMS I (GNAME /GET A NAME
929 / HLT /EXTENSION ON A SWITCH
931 JMP I (NFOU /SWITCH NOT FOUND
934 DCA SSPTR /SAVE PTR INTO LONG NAME
935 JMS SRCH /SEARCH SOME MORE
936 SKP /SHOULDN'T FIND ANYTHING
937 JMP I (AMBIG /AMBIGUOUS SWITCH
939 L$: TAD I SSPTR /SCAN PAST END OF LONG NAME
946 SL, AND (377 /ISOLATE CORRESPONDING ONE-CHARACTER SWITCH
948 JMS I (SLSHCH /SET APPROPRIATE BIT
969 \f/RETURN 1 IF NAME NOT FOUND
970 /RETURN 2 IF NAME FOUND
982 JMP I SRCH /NOT FOUND
989 TAD (77 /MUST MATCH BOTH BYTES
990 TAD (7700 /NEED ONLY MATCH LEFT BYTE
997 JMP 1$ /THIS SWITCH AIN'T IT
1005 SRPTR, 0 /POINTS INTO LONG NAME TABLE
1007 NPTR, 0 /POINTS INTO NAME1-3