File CCLCD.MA (MACREL macro assembler source file)

Directory of image this file is from
This file as a plain text file

/
/
/
/COPYRIGHT  (C)  1979 BY DIGITAL EQUIPMENT CORPORATION
/
/
/
/THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
/AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
/CORPORATION.  DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
/FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT.
/
/THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
/UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
/(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
/SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
/
/DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
/OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
/DIGITAL.
/
/
/


/VERSION=V3A (D.H.)
/4 CCL'S COMMAND DECODER .EXTERNAL TABLES,FNAME1 .EXTERNAL SWTCHS .ENTRY GETSPC /THE FOLLOWING DON'T HAVE TO BE ENTRY'S BECAUSE THEY ARE LINKED TO /FROM THE EXTENSION MODULE (CCLCDX) THAT KNOWS CCLCD IS IN MEMORY .GLOBAL LV .EXTERNAL EQLPRM,POUND,DNUMB MULTI=1 /SET TO 0 TO GET RID OF MULTIPLE CHARACTER SWITCHES PTR=36 .GLOBAL BADEV,CDER2,DVICE /****** .GLOBAL ASADR,LNAME /***** .ENTRY CCER1 .RSECT CCLCD .GLOBAL UNKN .EXTERNAL FLAG,MOVE,PRMESG .EXTERNAL PRNAME,PRWD .EXTERNAL LBEGIN,DECODE .EXTERNAL ARLOC .EXTERNAL DEFILE .ENTRY CD,ASSIGN,LOOKUP,ZEROCD,GLXR .EXTERNAL OUTSW,OUTLIM .ENTRY GCH,SETDEV,SETEXT .ENTRY NMOVE .EXTERNAL DONB .EXTERNAL NAMPTR FIELD 1 MOFILE=7600 MIFILE=7617 MPARAM=7643 XR2=15 XR=16 T=20 TT=21 DEF=22 NAME1=23 NAME2=24 NAME3=25 NAME4=26 NAME5=27 NMBASE=37 DEV1=30 DEV2=31 DELIM=32 DEFALT=33 /POINTS TO DEFAULT EXTENSION LIST LXR=34 CLXR=35 BEGLN=1000 HNDLR=4400
CD, 0 JMS I (CDINIT BEGGRP, TAD I (OUTSW SNA CLA TAD I (BEGDIF /DIFF BETWEEN INPUT & OUTPUT AREAS TAD (MOFILE-1 DCA CLXR JMS I (GETSPC /FAKE-OUT TO GETSPC CAN CAUSE EFFECTIVE BRANCH HERE JMS I (ASSIGN TAD I (OUTSW SNA CLA TAD I (LIMDIF /DIFF BETWEEN END OF OUTPUT & INPUT AREAS TAD I (OUTLIM /END OF OUTPUT AREA TAD CLXR SMA CLA JMP I (CDER1 TAD I (OUTSW SNA CLA LKUPSW, JMP IN$ /ZEROED IF IN "SPECIAL DECODE" MODE TAD I (DVICE JMS PCLXR TAD NAME1 JMS PCLXR TAD NAME2 JMS PCLXR TAD NAME3 JMS PCLXR TAD NAME4 JMP 2$ IN$: JMS I (LOOKUP JMS PCLXR /STORE LENGTH AND DEV NUMBER TAD I (LNAME /GET BLOCK 2$: JMS PCLXR JMS I (CCLSWT TAD I (OUTSW SNA CLA TAD I (FLAG CLL RTL SPA CLA /FEATURE ENABLED? TAD LKUPSW SNA CLA JMP DLOOK /IN SPECIAL MODE OR ON OUTPUT SIDE TAD DELIM TAD (-"+ SNA CLA JMP NBS TAD DONB SZA CLA JMP NBS TAD (7600 /V1A NOW TAKES ARG IN AC JMS I (NMOVE /MOVE NAME TO OUTPUT FILE NAMES JMP DLOOK
NBS, JMS I (ZERR DLOOK, STA DCA I (DVFLAG TAD DELIM SNA JMP I CD TAD (-"[ SNA JMP I (OLENGT TAD ("[-"+ SZA TAD ("+-", SNA JMP I (FILLP /**** JUMPING INTO ROUTINE (IS THIS A BUG?) TAD (",-"< SZA TAD ("<-"_ SNA JMP 5$ /BACK-ARROW (UNDERSCORE) MEANS SAME AS "<" TAD ("_-"= SZA CLA /SKIP ON AN EQUAL SIGN (=) JMP I (CDER2 /BAD CHAR JMS I (GLXR JMS I (DECODE CLL STA /LINK=0 MEANS LETTER TAD LXR /NOW LINK=1 MEANS LETTER DCA LXR SZL JMP 5$ /= MEANS "<" JMS I (EQLPRM /= MEANS = (NUMERIC PARAMETER) DL2: JMS I (CCLSWT JMP DLOOK 5$: ISZ I (OUTSW /FOUND BACK-ARROW (<) JMP I (CDER2 /TWO BACK-ARROWS TAD LXR /GET PTR TO ARROW DCA I (ARLOC /SAVE IT ('EDIT' MIGHT NEED IT) JMP BEGGRP PCLXR, 0 ISZ CLXR DCA I CLXR JMP I PCLXR
PAGE
ZERR, 0 DCA I (DONB /ZERO 1ST OUTPUT FILE TAD (7577 DCA XR2 DCA I XR2 DCA I XR2 DCA I XR2 DCA I XR2 DCA I XR2 JMP I ZERR
ASSIGN, 0 TAD CLXR AND I (DVFLAG TAD I (OUTLIM SMA SZA CLA /CHECK FOR OUTPUT OR FIRST INPUT JMP ASNORM /IF DEVICE WAS SPECIFIC, /OR IF WE ARE ON THE INPUT SIDE, /PROCEED NORMALLY TAD NAME1 SNA CLA JMP ASGNST TAD DFLTNM+1 DCA DEV2 TAD DFLTNM DCA DEV1 ASNORM, TAD DEV1 DCA AS+1 TAD DEV2 DCA AS+2 TAD I (OUTSW SNA CLA /DON'T LOAD HANDLER /IF WE ARE ON OUTPUT SIDE OF "_" TAD NAME1 SPKLG1, SNA CLA /OR THERE IS NO FILE NAME TO LOOK UP TAD GETHND /GETHND=11 NORMALLY, /0 IF IN "SPECIAL DECODE" MODE IAC DCA AS TAD (HNDLR+1 /ALLOW TWO PAGE HANDLERS DCA ASADR CIF 10 JMS I (200 AS, 0 0 0 ASADR, HNDLR+1 JMP I (CDER0 TAD AS+2 ASGNST, DCA I (DVICE JMP I ASSIGN
DFLTNM, DEVICE DSK GETHND, 11 /1+11=12 (1=FETCH, 12=INQUIRE)
GETL, 0 JMS I (GCH DCA DELIM TAD DELIM JMS I (DECODE JMP I GETL /NON-ALPHANUM IN CCL SWITCH CLA TAD DELIM AND (77 ISZ GETL JMP I GETL
CCLSWT, 0 TAD DELIM TAD (-"/ SNA JMP I (SLASH TAD ("/-"- SZA CLA JMP I CCLSWT TAD I (OUTSW SZA CLA JMP I (CDER4 /CCL EXT ON OUTPUT FILE TAD (SWTCHS DCA DEF JMS GETL JMP I (CDER44 /NON-ALPHANUMERIC CCL SWITCH JMS I (ROTL DCA TN$ JMS GETL JMP 1$ /ONE CHAR CCL SWITCH TAD TN$ DCA TN$ JMS GETL 1$: SKP CLA /2 CHAR CCL SWITCH JMP I (CDER44 /3 CHAR CCL-SWITCH TAD TN$ JMS I (EXTLUK CLA ISZ DEF CDF 0 TAD I DEF DCA G$ /GET PTR TO ARGUMENT PAIR TAD I G$ /GET SUBROUTINE DCA H$ ISZ G$ TAD I G$ /GET ARGUMENT CDF 10 JMS I H$ /CALL SUBR, ARG IN AC JMP CCLSWT+1 G$: 0 H$: 0 TN$: 0 PAGE
/GETS A NAME FROM FIELD ZERO BUFFER VIA LXR /RETURNS WITH DELIMETER IN AC /GIVES ERROR MESSAGE IF NAME IS BAD GNAME, 0 DCA NAME1 DCA NAME2 DCA NAME3 DCA NAME4 DCA NAME5 TAD (NAME1 DCA NMBASE CLA CMA DCA PERDSW DCA NAMECT JMS I (GCH TAD (-"# SNA JMS I (NUMC /BUG IF MAKE COMMAND USES A # (OVERLAYS LOOP) TAD ("# SKP GTNMLP, JMS I (GCH P2, DCA DELIM TAD DELIM TAD (-"% SNA JMP PER TAD ("%-"? SZA TAD ("?-"* SNA STARSW, JMP I (CDER6 /"JMP STARNM" /IF "SPECIAL DECODE" MODE TAD ("*-". SNA CLA JMP PERIOD TAD DELIM JMS I (DECODE JMP LV STARNM, CLA /THIS CODE HANDLES *'S AND ?'S CORRECTLY TAD DELIM AND (77 DCA DELIM TAD NAMECT TAD (-6 SMA CLA JMP GTNMLP TAD NAMECT CLL RAR TAD NMBASE DCA TT TAD DELIM SNL JMS I (ROTL TAD I TT DCA I TT ISZ NAMECT JMP GTNMLP PERIOD, TAD NAME1 SZA CLA ISZ PERDSW JMP I (CDER7 /NULL NAME OR DOUBLE EXTENSION ISZ NMBASE ISZ NMBASE STL CLA RTL /2 (ALLOW 4 CHARACTER EXTENSION) DCA NAMECT JMP GTNMLP LV, CLA TAD DELIM JMP I GNAME PER, TAD ("? JMP P2
PERDSW, 0 NAMECT, 0
SOFSET=7747 CDER6, CDF 0 TAD I (7777 CDF 10 RAL SPA CLA JMP CD6E /ERROR IF BATCH IS RUNNING TAD I (FLAG RTL SMA CLA JMP CD6E /ONLY IF -LS WORKS TAD (-12 JMS I (MOVE CDF 10 MUNGC CDF 10 7600 TAD (-34 JMS I (MOVE CDF 0 1000 CDF 10 7612 DCA I (7646 /SAFETY CDF 0 TAD I (SOFSET CDF 10 DCA BLK JMS I (200 6 /CHAIN TO CCL.SV BLK, 0 CD6E, JMS I (PRMESG BADSTR PAGE
LOOKUP, 0 DCA LNAME TAD NAME1 SNA CLA JMP LKUPST TAD I (PERDSW TAD NAME4 SNA CLA CLA IAC /FORCE NAMERM NON-0 IF . AND NO EXT TAD NAME4 DCA NAMERM /REMEMBER TYPED EXTENSION TAD DEFALT DCA DEF TAD I (SETEXT SNA /HAS AN EXTENSION BEEN SET? TAD NAMERM /NO SNA /DOES FILE HAVE EXTENSION? JMP EXT2 /NO EXTENSION TYPED OR SET, DO SUCCESSIVE LOOK-UPS JMS EXTLUK /LOOK FOR EXTENSION SNA CLA /DID WE FIND IT? JMP EXT3 /NO, FORCE NULL EXTENSION TO MATCH EXT2, CDF 0 TAD I DEF IAC SNA CLA JMP NEXTEXT /IGNORE -1'S TAD NAMERM SZA CLA JMP EXT3 TAD I DEF DCA NAME4 /SET NEW EXTENSION EXT3, CDF 10 TAD (NAME1 DCA LNAME TAD I (AS+2 JMS I (200 2 LNAME, 0 /NAME1 LENGTH, 0 JMP LFAILD TAD NAME4 DCA I (SETEXT ISZ DEF /POINT TO ASSOCIATED CUSP NAME CDF 0 TAD I DEF CDF 10 DCA I (DEFILE /SAVE IT AWAY TAD LENGTH CLL TAD (400 SNL CLACON, 7600 /CLA CLL RTL RTL AND (7760 LKUPST, TAD DVICE JMP I LOOKUP
LFAILD, TAD NAMERM CDF 0 SNA CLA /WAS THERE AN EXPLICIT EXTENSION? TAD I DEF /NO - WAS THERE A DEFAULT EXTENSION? SNA CLA JMP XYZ NEXTEXT,CDF 10 ISZ DEF /NO EXPLICIT EXT AND YES DEFAULT EXT ISZ DEF /POINT TO NEXT POSSIBLE DEFAULT EXTENSION JMP EXT2 /AND TRY FOR IT NAMERM, 0 DVICE, 0 EXTLUK, 0 CIA DCA T 1$: CDF 0 TAD I DEF CDF 10 SNA /AT NULL? JMP I EXTLUK /YES TAD T /NO SNA CLA /MATCH? JMP 2$ /YES ISZ DEF /NO ISZ DEF /POINT TO NEXT ENTRY JMP 1$ /TRY AGAIN 2$: TAD T /RETURN WITH IT IN AC CIA JMP I EXTLUK XYZ, CDF 10 JMP I (CDER3 /NO DEFALT EXTENSION OR YES EXPLICIT EXTENSION
BADSYN, TEXT /#ILLEGAL SYNTAX/ TOOMAN, TEXT /#TOO MANY FILES/ /AMBIGY, TEXT /#AMBIGUOUS SWITCH/ CDER1, JMS I (PRMESG TOOMAN
NFOU, TAD NAME1 AND (77 SNA CLA JMP I (ONE /ONE-CHARACTER SWITCH JMS I (PRNAME JMS I (PRMESG SWNF PAGE
/TAKES A LETTER OR A DIGIT IN AC /AND TURNS ON APPROPRIATE BIT IN OPTION TABLE SLSHCH, 0 DCA DELIM TAD (MPARAM-1 DCA T TAD DELIM JMS I (DECODE JMP CDER8 SZL TAD (32 CMA STL /THE FOLLOWING TURNS /ON THE CORRECT OPTION BIT DCA TT L$: SZL ISZ T RAR SNL ISZ TT JMP L$ DCA TT TAD TT CMA AND I T TAD TT DCA I T JMP I SLSHCH CDER8, CLA JMS I (PRMESG BADOPT
ZEROCD, 0 TAD (-42 /AC MAY BE NON-0 DCA T TAD (MOFILE-1 DCA XR DCA I XR /ZERO THE COMMAND DECODER OUTPUT AREA ISZ T JMP .-2 JMP I ZEROCD GCH, 0 JMS GLXR TAD (-240 SNA JMP GCH+1 /IGNORE SPACES TAD (240-"( SNA JMP OPENP$ TAD ("( JMP I GCH JMP GCH+1 OPENP$: JMS GLXR TAD (-") SNA JMP GCH+1 TAD (") JMS SLSHCH JMP OPENP$ GLXR, 0 CDF 0 ISZ LXR TAD I LXR CDF 10 JMP I GLXR IFZERO MULTI < SLASH, JMS GLXR JMS SLSHCH JMS GLXR DCA DELIM JMP I (CCLSWT+1 > IFNZRO MULTI < SLASH, CDF TABLES /POINT TO SWITCH TABLE POINTER TAD I PTR /GET PTR TO SWITCH TABLE CDF 10 JMS I (TRANSL JMP I (CCLSWT+1 >
OLENGT, TAD I (OUTSW AND NAME1 /[N] IS ONLY LEGAL /ON THE OUTPUT SIDE OF THE "_" SNA CLA /AND ONLY AFTER A FILE NAME JMP I (CDER2 TAD (-4 TAD CLXR DCA NMBASE JMS I (DNUMB CLL RTL RTL AND (7760 TAD I NMBASE DCA I NMBASE CDF 0 TAD DELIM TAD (-"] /IS THERE A CLOSING BRACKET? SNA /IF NOT, /"DLOOK" ROUTINE WILL DETECT IT JMS GCH DCA DELIM JMP I (DL2
SETDSK, 0 TAD DSKDEV SZA JMP I SETDSK JMS I (200 12 /INQUIRE 5723 /PACKED ENCODING FOR 'DSK:' DSKDEV, 0 /SET TO DEVICE NUMBER 0 HLT /NO 'DSK' ! TAD DSKDEV JMP I SETDSK
.ENABLE ASCII .DISABLE FILL MUNGC, TEXT /MUNG WILD,/ .ENABLE SIXBIT .ENABLE FILL PAGE
CCER1, TAD I (NAMPTR DCA X$ TAD (-5 JMS I (MOVE CDF 10 X$: 0 CDF 10 NAME1 CDER3, TAD (4300 JMS I (PRWD /# JMS I (PRNAME JMS I (PRMESG NF CCER2, TAD I (DVNM1 DCA DEV1 TAD I (DVNM2 DCA DEV2 CDER0, TAD DEV1 SNA CLA JMP I (CDER2 /B DOES NOT EXIST TAD (4300 /# JMS I (PRWD TAD DEV1 JMS I (PRWD TAD DEV2 JMS I (PRWD JMS I (PRMESG DNE
NF, TEXT / NOT FOUND/ DNE, TEXT / DOES NOT EXIST/ BADSW, TEXT /#SWITCH NOT ALLOWED HERE/ BADSW2, TEXT /#BAD CCL SWITCH/ CONTRA, TEXT /#CONTRADICTORY SWITCHES/
BKA, 0 TAD I (LBEGIN DCA CLXR 1$: CDF 0 ISZ CLXR TAD I CLXR CDF 10 SNA JMP NOBKR$ TAD (-"< SNA JMP I BKA TAD ("<-"_ SNA JMP I BKA TAD ("_-"= SZA CLA JMP 1$ ISZ CLXR /= MEANS _ IF NOT FOLLOWED BY A DIGIT CDF 0 TAD I CLXR CDF 10 JMS I (DECODE SKP CLA /NOT A DIGIT SNL CLA /MAYBE A DIGIT JMP I BKA /= FOLLOWED BY A NON-DIGIT MEANS _ JMP 1$ /IT'S AN =NNNN NOBKR$: ISZ BKA JMP I BKA BADEV, TEXT /#BAD DEVICE/ PAGE
CDINIT, 0 ISZ PTR /POINT TO SWITCH TABLE JMS I (200 13 /RESET ALL HANDLERS CDF 0 TAD I DEFALT CDF 10 TAD (-5200 SZA CLA /IS THIS A REQUEST FOR A /"SPECIAL DECODE"? JMP CDCONT /NO TAD ALTLIM DCA I (OUTLIM /YES, SET UP THE PROPER LOCATIONS TAD ALTDF1 DCA LIMDIF /TO GET 1 OUTPUT AND 5 INPUT FILES TAD ALTDF2 DCA BEGDIF /ALL OF WHICH ARE /5-WORD <DEVICE,NAME> ENTRIES DCA I PLKUPS TAD STARJM DCA I PSTARS /AND ALLOW * /AS A FILE OR EXTENSION NAME TAD L7600 /STOPS FETCHES IN SPECIAL MODE DCA I PSPKG1 /NO HANDLER FETCHES NECESSARY EITHER /SINCE NO LOOKUPS CDCONT, JMS I (BKA /SCAN AHEAD FOR < STA /SKIP RETURN IF NOT FOUND DCA I (OUTSW JMS I (ZEROCD TAD I (LBEGIN DCA LXR JMP I CDINIT /CONSTANTS NECESSARY TO SUPPORT "SPECIAL DECODE" MODE ALTLIM, 1-MOFILE-5 ALTDF1, MOFILE+5-MPARAM+5 ALTDF2, 5 PLKUPS, LKUPSW PSTARS, STARSW PSPKG1, SPKLG1 BEGDIF, MIFILE-MOFILE LIMDIF, MIFILE-MPARAM+2
/STARJM, RELOC STARNM /DUMP LITERALS AT LAST POSSIBLE MOMENT / JMP STARNM / RELOC STARJM, 5200+<STARNM&177>
SETDEV, 0 /V1A ARG NOW IN AC DCA 1$ CLL STA RAL /-2 JMS I (MOVE CDF 0 1$: 0 /PTS TO DEVICE NAME CDF 10 DVNM1 JMS I (SETOUT JMP I SETDEV UNKN, 0 TAD SETEXT SZA TAD T /NEG OF SWITCH REQUEST SZA CLA JMP CCERA /CAN'T HAVE 2ND DEFAULT EXTENSION TAD T CIA DCA SETEXT /SET DEFAULT EXTENSION TAD DEFALT /SEE IF IT'S IN COMMAND'S SEARCH LIST DCA DEF TAD SETEXT JMS I (EXTLUK SNA CLA /DID WE FIND IT? JMP CDER4 /NO ISZ DEF /YES / TAD I (JMSUB /ALLOW RECURSIVE CALL / DCA HOLD CDF 0 TAD I DEF CDF 10 JMS I (JMSUB /CALL ITS SUBR / TAD HOLD /V1A RECURSIVE CALL NO LONGER THREATENS / DCA I (JMSUB JMP I UNKN SETEXT, 0 /EXT WHICH HAS BEEN SET BY A CCL SWITCH
CCERA, JMS I (PRMESG CONTRA CDER2, JMS PRMESG BADSYN L7600, CCERB, CDER4, 7600 /CLA JMS I (PRMESG BADSW CDER44, CLA JMS I (PRMESG BADSW2 CDER7, JMS I (PRMESG BADX
BADSTR, TEXT /#ILLEGAL * OR ?/ SWNF, TEXT / OPTION UNKNOWN/ BADOPT, TEXT /#BAD SWITCH OPTION/ PAGE
BADX, TEXT /#BAD EXTENSION/ /THIS GETS A DEV:NAME.EXT SPECIFICATION (USING LXR) /PUTTING RESULT IN DEV1,DEV2, NAME1-4. /IT GIVES A FATAL ERROR MESSAGE IF BAD. GETSPC, 0 STA DCA DVFLAG DCA DEV1 FILLP1, DCA DEV2 FILLP, JMS I (GNAME TAD (-": /AC CONTAINED DELIM SNA CLA JMP 3$ /IT'S A DEVICE NAME DCA NUMC TAD (-4 JMS I (MOVE CDF 10 NAME1 CDF 0 FNAME1 /SAVE AWAY FILE NAME JMP I GETSPC 3$: CLA IAC /PARSE FILENAME AFTER DEV: TAD I (PERDSW TAD NUMC SZA CLA JMP CDERA /. OR # IN DEVICE NAME TAD NAME1 DCA DEV1 ISZ DVFLAG JMP CDERA /CATCHES A:B: TAD NAME2 JMP FILLP1 DVFLAG, 0 CDERA, JMS I (PRMESG BADEV NUMC, 0 /USED AS FLAG INDICATING SAW # JMS I (POUND JMP I NUMC
NMOVE, 0 DCA 2$ /V1A ARG IN AC TAD I (FLAG RTL SMA CLA /FEATURE ENABLED? JMP I (CCERB /NO TAD I (OUTSW SZA CLA JMP I (CCERB /ON OUTPUT SIDE TAD I (MOFILE /V3C SNA CLA /DON'T CHANGE OUT DEV IF SPECIFIED TAD I (FLAG /LOOK AT 'COPY EXT' BIT AND (200 SNA CLA JMP 1$ /IT WASN'T SET TAD I (MIFILE /GET FIRST INPUT DEVICE AND (17 /ISOLATE DEVICE BITS DCA I (MOFILE /FORCE THIS TO BE FIRST OUTPUT DEVICE 1$: TAD I 2$ SNA JMS I (SETDSK /CHANGE TO 'IAC' TO ALWAYS USE SYS: DCA I 2$ /SET DEVICE TO SYS IF NONE ISZ 2$ TAD I 2$ /WAS THERE A SPECIFICATION THERE? SZA CLA JMP I NMOVE /YES, DO NOTHING TAD I (FLAG AND (200 /GET 'COPY EXTENSION' BIT SMA SZA CLA /'SMA' IS UNNECESSARY STA /COPY 4 WORDS IF BIT 4 WAS ON TAD (-3 /OTHERWISE ONLY COPY 3 WORDS JMS I (MOVE CDF 0 FNAME1 CDF 10 2$: 0 JMP I NMOVE
ROTL, 0 CLL RTL RTL RTL JMP I ROTL JMSUB, 0 SNA JMP I JMSUB DCA T$ JMS I T$ JMP I JMSUB T$: 0
AMBIG, TAD NAME1 AND (77 SNA CLA JMP I (ONE JMS I (PRNAME JMS I (PRMESG AMBIGY AMBIGY, TEXT / OPTION AMBIGUOUS/ PAGE
SETOUT, 0 TAD I (FLAG RTR SZL CLA TAD (5 TAD (7600 DCA OLOC TAD I OLOC SZA CLA JMP I SETOUT /HE'S SPECIFIED SOMETHING JMS I (200 12 /INQUIRE DVNM1, 0 DVNM2, 0 0 JMP I (CCER2 /NO SUCH DEVICE TAD DVNM2 DCA I OLOC TAD OLOC AND (5 SNA CLA /USING 2ND OUT DEV? JMP I SETOUT /NO ISZ OLOC /YES TAD (-4 JMS I (MOVE CDF 0 FNAME1 CDF 10 OLOC, 7600 /INITIALLY 7600 OR 7605 JMP I SETOUT
/ TAD (PTR TO SWITCH TABLE ENTRY (IN FIELD 0) / JMS TRANSL / IT PARSES SWITCH, SETS BIT / PARSES :VALUE, SETS = OPTION / LEAVES DELIMETER IN DELIM TRANSL, 0 DCA SPTR /POINT INTO A SWITCH TABLE JMS I (GNAME /GET A NAME DCA DEL / TAD NAME4 / SZA CLA / HLT /EXTENSION ON A SWITCH JMS SRCH JMP I (NFOU /SWITCH NOT FOUND STA TAD SRPTR DCA SSPTR /SAVE PTR INTO LONG NAME JMS SRCH /SEARCH SOME MORE SKP /SHOULDN'T FIND ANYTHING JMP I (AMBIG /AMBIGUOUS SWITCH CDF 0 L$: TAD I SSPTR /SCAN PAST END OF LONG NAME ISZ SSPTR AND (77 X240: SZA CLA JMP L$ TAD I SSPTR CDF 10 SL, AND (377 /ISOLATE CORRESPONDING ONE-CHARACTER SWITCH SZA JMS I (SLSHCH /SET APPROPRIATE BIT TAD DEL DCA DELIM TAD DELIM TAD (-": SNA CLA JMS I (EQLPRM JMP I TRANSL ONE, TAD NAME1 CLL RTR RTR RTR TAD X240 AND (77 TAD X240 JMP SL SPTR, 0 SSPTR, 0 DEL, 0
/RETURN 1 IF NAME NOT FOUND /RETURN 2 IF NAME FOUND SRCH, 0 1$: TAD (NAME1 DCA NPTR CLL STA RTL /-3 DCA NCNT CDF 0 TAD I SPTR CDF 10 ISZ SPTR SNA JMP I SRCH /NOT FOUND DCA SRPTR 2$: TAD I NPTR SNA JMP 3$ AND (77 SZA CLA TAD (77 /MUST MATCH BOTH BYTES TAD (7700 /NEED ONLY MATCH LEFT BYTE CDF 0 AND I SRPTR CDF 10 CIA TAD I NPTR SZA CLA JMP 1$ /THIS SWITCH AIN'T IT ISZ SRPTR ISZ NPTR ISZ NCNT JMP 2$ 3$: ISZ SRCH JMP I SRCH SRPTR, 0 /POINTS INTO LONG NAME TABLE NCNT, 0 NPTR, 0 /POINTS INTO NAME1-3 PAGE



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search