/ / / FIRST PRINTING, FEBRUARY 1974 / / 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 RESPON- / SIBILITY FOR ANY ERRORS THAT MAY APPEAR IN THIS / DOCUMENT. / / THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FUR- / NISHED 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 PRO- / VIDED IN WRITING BY DIGITAL. / / DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY / FOR THE USE OR RELIABILITY OF ITS SOFTWARE ON EQUIP- / MENT THAT IS NOT SUPPLIED BY DIGITAL. / / COPYRIGHT (C) 1974, BY DIGITAL EQUIPMENT CORPORATION / / .EJECT / EDIT #9 / / COPYRIGHT 1970,1971 DIGITAL EQUIPMENT CORP., MAYNARD, MASS. / / MCR FUNCTION -- PHYSICAL DEVICES 26 MAR 71 R. MCLEAN / / TASK NAME "...DEV" TO REQUEST A LIST OF THE / PHYSICAL DEVICE LIST ON LUN 3. / / THE FIRST LINE OF COMMAND INPUT FOR ANY MCR / FUNCTION IS READ BY THE RESIDENT MCR TASK / ("...MCR"). FOR THE "DEV" FUNCTION, THE SYNTAX / OF THE FIRST LINE IS: / / SYNTAX = "DEV"$(/) / / = CAR RTN / = ALTMODE / $ -- ANY NUMBER OF " INCLUDING ZERO" / / / THE RESIDENT MCR READS A LINE, FETCHES THE / FIRST THREE CHARACTERS TO FORM THE MCR FUNCTION / TASK NAME ("...DEV"), FLUSHES CHARACTERS THRU / THE FIRST BREAK CHARACTER, REQUESTS "...DEV"., / AND EXITS. THE TASK "...DEV THEN DECODES THE / PHYSICAL DEVICE LIST AND LISTS THE LUN SLOTS ASSIGNED TO / EACH PHYSICAL DEVICE IN THE PHYSICAL DEVICE LIST. IF A ^C IS / TYPED WHILE "...DEV" IS RUNNING A MESSAGE IS PRINTED AND / "...DEV" EXITS / / IF THE COMMAND INPUT LINE IS TERMINATED BY A / CAR RTN, THE RESIDENT MCR TASK IS REQUESTED, / AND THE FUNCTION DEV EXITS. / / IF THE COMMAND INPUT LINE IS TERMINATED BY AN / ALTMODE, THE FUNCTION TASK EXITS WITHOUT / REQUESTING "...MCR" A ^C TYPEIN IS THEN NECESSARY / TO RE-ESTABLISH MCR DIALOGUE. .TITLE *** MCR FUNCTION 'PHYSICAL DEVICE LIST' / MCRRI=171 FAC=174 PVDL=252 LUN1=142 LUN2=143 X10=10 X11=11 X12=12 ECLA=641000 / DEV CAL ATLU2 /ATTACH TO TTY ON LUN3 LAC* (PVDL) /PICK UP PHYSICAL DEVICE POINTER PVDLP DAC* (X11) /SAVE POINTER IN XR11 DAC PVDLFD /SAVE POINTER TO FIND END OF LOOP LAC (PVDLMS+2) /SET UP MESSAGE POINTER DAC* (X10) /IN X10 DZM CNT /CLEAR UNIT COUNT ISZ* (X11) /INCREMENT XR11 DECOD2 LAC* X11 /GET A WORD AND SAVE IT IN MQ LMQ /GET FIRST WORD AND SAVE IT IN MQ LAW -2 DAC CNT1 DECOD1 ECLA!LLS 6 /PICK UP FIRST SIX BITS SNA /IS A NULL CHARACTER DETECTED? JMP IGNR /YES MAKE IT A BLANK AAC -40 SPA /IF GREATER THAN IT IS NOT ALPHA AAC 100 /MAKE 7 BIT ASCII IGNR AAC 40 /REPLACE 40 DAC* X10 /STORE IT IN MESSAGE ISZ CNT1 /FINISHED NAME? JMP DECOD1 /NO GET ANOTHER CHARACTER LAW -3 DAC CNT1 /SET UP FOR MAX THREE NUMBERS ISZ* (X11) ISZ* (X11) LAC* X11 /PICK UP UNIT NUMBER LMQ /PUT IT IN MQ LLS 11 NXT1 ECLA!LLS 3 /PICK UP A DIGIT SKPNXT SNA /ZERO SUPPRESS JMP NXT PAL LAC (JMP SKPZER) DAC SKPNXT /SUPPRESS LEADING ZERO'S ONLY PLA SKPZER ISZ CNT /KEEP COUNT OF NUMBER OF CHARACTERS FOUND AAC 60 /MAKE ASCII DAC* X10 /STORE IN MESSAGE NXT ISZ CNT1 /HAVE THREE CHARACTERS BEEN CHECKED JMP NXT1 /NO GET ANOTHER LAC CNT SZA /SKIP IF NO NUMBERS FOUND I.E. UNIT = 0 JMP OUTPB /UNIT NUMBER FOUND AAC 60 /INSERT 0 FOR UNIT NUMBER DAC* X10 AAC -57 /FILL IN TWO BLANKS OUTPB AAC -4 /INSERT BLANKS INPLACE OF LEADING ZEROES DAC CNT SNA /SKIP IF BLANKS REQUIRED JMP NOBLNK LAC (040) DAC* X10 ISZ CNT JMP .-2 LAC (SNA) /RESTORE SKIP INSTRUCTION DAC SKPNXT NOBLNK LAW -2 /SET UP FOR TWO PASSES THRU GET3 DAC CNT ISZ* (X11) /INCREMENT TO PICK UP BASE ADDRESS IN WORD 5 LAC (040) DAC* X10 /INSERT A SPACE LAW -1 DAC INFIR /SET UP CHARACTER COUNT DZM LUNNO /CLEAR LUN COUNT LAC* (LUN1) /PICK UP FIRST LUN SLOT DAC LUNCNT /SET UP LUN POINTER NXTLUN LAC* LUNCNT /PICK UP FIRST LUN POINTER TO PVDL NODE ISZ LUNNO SAD PVDLFD /IS THIS A LUN POINTING TO THE NODE WE ARE LOOKING AT? JMS INSRMS /YES GO INSERT ITS NUMBER IN MESSAGE LAC LUNCNT /LOOK FOR THE END OF THE LUN TABLE ISZ LUNCNT /INCREMENT LUN NUMBER FOR NEXT PASS SAD* (LUN2) /IS THIS THE END OF THE TABLE JMP PRNPVD /YES GO PRINT THE LUN SLOTS JMP NXTLUN /NO PICK UP NEXT LUN PRNPVD LAC (15) /INSERT A CAR RTN IN MESSAGE DAC* X10 AAC -3 DAC* X10 /INSERT A LINE FEED IN MESSAGE LAC INFIRA /IS THIS THE FIRST LINE? SZA JMP NOOUTP /YES DON'T OUTPUT A BLANK LINE DAC* X10 /INSERT A NULL TO MAKE WORD PAIR COUNT EVEN LAC PVDLMS+3 /CHECK FOR SECOND LINE BLANK SAD (040) SKP /IF BLANK LOOK TO SEE IF WHOLE LINE IS BLANK SKP!CLA /NON BLANK LINE PRINT IT LAC INFIR SPA /IN POSITIVE OR ZERO LINE IS NOT BLANK JMP NOOUTP LAC INFIR RAR!SPA /SET UP HEADER WORD PAIR DZM PVDLMS+10 /ONLY OUTPUT ONE SPACE SZL IAC AAC 6 SWHA AAC 3 /ADD MESSAGE TYPE DAC PVDLMS /STORE IN MESSAGE HEADER CAL TTYMSG /PRINT MESSAGE CAL WAITEV /WAIT FOR OUTPUT TO COMPLETE NOOUTP DZM INFIRA LAW -1 /CHECK TO SEE IF A DZM LUNNO SAD* (MCRRI) /^C HAS BEEN TYPED JMP ABTEXT /YES, EXIT AFTER PRINTING MESSAGE LAC* PVDLFD /GET PVDL FORWARD POINTER SAD (PVDL) /IS IT THE END OF THE LIST JMP NOTCR /YES EXIT JMP PVDLP /NO GO DO ANOTHER ONE NOTCR JMS* (FAC) /FLUSH OUT INPUT LINE TO FIND CAR RTN OR ALTMODE SAD (015) /IS CHARACTER A CAR RTN? JMP ABTXIT /YES EXIT SAD (175) /IS CHARACTER AN ALTMODE? JMP FNDEOF /YES EXIT JMP NOTCR /NO FETCH ANOTHER CHARACTER ABTXIT CAL REQMCR /YES -- REQUEST MCR JMP WTDET /IS BREAK CHARACTER AN ALTMODE FNDEOF DZM* (MCRRI) /YES, CLEAR ^C INHIBIT SWITCH WTDET CAL DETTTY / DETACH TELETYPE CAL (10) /EXIT / / ABTEXT -- EXITS IF USER TYPES A ^C / ABTEXT CAL XITMSG CAL WAITEV /WAIT FOR MESSAGE TO PRINT JMP ABTXIT /EXIT AND CALL MCR / / INSRMS INSERTS THE LUN NUMBER AND A COMMA IN THE OUTPUT MESSAGE / INSRMS 0 LAC (54 /COMMA ISZ INFIR /IS THIS THE FIRST TIME? SKP /NO INSERT A COMMA JMP COMMA /YES NO COMMA DAC* X10 COMMA LAC LUNNO CLL /PICK LUN SLOT NUMBER IDIV 12 /100 MAX NUMBER DECODED PAL /SAVE LOW ORDER NUMBER LACQ /PICK UP TENS POSITION SNA JMP ONENUM /IIT IS NOT GREATER THAN 10 AAC 60 /ADD 60 TO MAKE ASCII DAC* X10 /STORE IT IN MESSAGE ISZ INFIR /INCREMENT WORD COUNT ONENUM PLA /PICK UP UNITS POSITION AAC 60 /MAKE IT ASCII ISZ INFIR /INCRMENT CHARACTER COUNT DAC* X10 /STORE IN MESSAGE LAC INFIR /IS LINE FULL? AAC -41 SPA JMP* INSRMS /NO EXIT FOR NDXT LUN LAC INFIR /PICK UP CHARACTER COUNT ISZ INFIR /CLEAR CHARACTER COUNT RAR /DIVIDE BY 2 SZL IAC AAC 6 /ADD 6 TO ACCOUNT FOR FIRST TEN WORDSAND CR LF SWHA /PUT COUNT IN WORD COUNT AREA AAC 3 /ADD MODE DAC PVDLMS /STORE IN MESSAGE LAC (15) /STORE CAR RTN DAC* X10 AAC -3 /STORE LINE FEED DAC* X10 CLA DAC* X10 /INSERT A NULL TO MAKE WORD PAIR COUNT EVEN CAL TTYMSG /PRINT MESSAGE CAL WAITEV /WAIT FOR MESSAGE TO FINISH LAC (PVDLMS+1) /RESET MESSAGE POINTER TO TOP DAC* (X10) LAW -10 /CLEAR FIRST TEN WORDS DAC CNT LAW -1 /RESET CHARACTER COUNT DAC INFIR AAC 41 /STORE BLANKS BLANK DAC* X10 ISZ CNT /FILL FIRST EIGHT CHARACTERS WITH BLANK JMP BLANK JMP* INSRMS / / WAITEV 20 /WAIT FOR TTYEV /EVENT VARIABLE ADDRESS / ATLU2 2400 /ATTACH TO LUN 3 0 3 / DETTTY 2500 /DETACH FROM LUN3 TTYEV 3 / TTYMSG 2700 /OUTPUT MESSAGE TTYEV 3 3 PVDLMS / XITMSG 2700 /EXIT MESSAGE TTYEV 3 2 TTYABT / / REQMCR 1 /REQUEST "...MCR" CPB 0 .SIXBT "..." .SIXBT "MCR" 0 TTYABT PVDLMS-TTYABT/2*1000+2 0 .ASCII "^^^ DEV ^C EXIT"<15> PVDLMS 014003 /HEADER 0 .REPT 120 /BLANKS 40 15 /CAR RTN 12 /LF / CNT 0 INFIR 0 TEMP .BLOCK 3 INFIRA 0 LUNNO 0 LUNCNT 0 CNT1 0 TTYEV 0 PVDLFD 0 .END DEV