.TITLE RMCMD - COMMAND PAGE FOR REMOTE NODES .IDENT /V01.00/ .NLIST BEX ; ; COPYRIGHT (C) 1979, 1980 BY ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. ; ; ; 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. ; ; ; MODULE DESCRIPTION: ; ; COMMAND ROUTINE FOR REMOTE NODE DISPLAY ; ; ; ; DISTRIBUTED SYSTEMS SOFTWARE ENGINEERING ; ; IDENT HISTORY: ; ; 1.00 19-MAR-80 ; .SBTTL MACROS ; ; MCALLS AND MACROS ; .MCALL QIOW$,DIR$ ; ; LOCAL MACROS ; .MACRO MESS,TXT ; CREATE ASCII STRING PRECEDED BY LENGTH .NCHR SYM, .WORD SYM .ASCII /TXT/ .ENDM .MACRO PRINT,TXT ; WRITE TEXT TO TERMINAL MOV #TXT+2,QIO+Q.IOPL MOV TXT,QIO+Q.IOPL+2 DIR$ #QIO .ENDM .MACRO SKIP,N ; WRITE N BLANK LINES TO TERMINAL MOV #LF,QIO+Q.IOPL MOV #N,QIO+Q.IOPL+2 DIR$ #QIO .ENDM .MACRO FLAG,DD ; FLAG CHARACTER AS NEW BISB #200,DD .ENDM .SBTTL SEGMENT DEFINITION .PSECT INIT,OVR,I,LCL .WORD CMD ; ENTRY POINT, FIRST WORD .SBTTL LOCAL DATA LF: .BYTE 40 ; FIRST BLANK LINE IS FREE FROM TTDRV .REPT 25. .BYTE 12 ; LINE FEED .ENDR .EVEN ; ; DPB'S USED FOR INITIAL COMMAND INPUT ; QIO: QIOW$ IO.WVB,$DLUN,$QIOF,,,,<,,40> PRMPT: QIOW$ IO.WVB,$DLUN,$QIOF,,,, READ: QIOW$ IO.RVB,$DLUN,$QIOF,,ISTAT,, ; ; TEXT LINES USED FOR INITIAL COMMAND INPUT ; .ENABL LC LINE1: MESS .EVEN LINE2: MESS .EVEN LINE3: MESS .EVEN LINE4: MESS .EVEN LINE5: MESS .EVEN LINEN: MESS < TO RETURN> .EVEN ERM: MESS .EVEN ERMNAM: MESS .EVEN ERMADD: MESS .EVEN ERMLNK: MESS .EVEN PROMPT: .ASCII /COMMAND > / .EVEN .DSABL LC ; ; COMMAND BUFFER AND GENERAL DATA FOR INITIAL COMMAND INPUT ; CMDBUF: .BLKW <42.+1>/2 ERSTAT: .WORD 0 ISTAT: .WORD 0,0 .SBTTL CMD - REMOTE NODE COMMAND PROCESSING ;+ ; ; CMD - REMOTE NODE DISPLAY COMMAND PROCESSING ; ; INPUTS: NONE ; ; OUTPUTS: ; ANY COMMAND SPECIFIED IS PROCESSED ; ;- CMD: CLR R3 ; NEW PAGE INIDCATOR (0 = NO NEW PAGE) CALL $CLEAR ; BLANK SCREEN PRINT LINE1 ; PRINT LINE 1 SKIP 2 ; SKIP 2 BLANK LINES PRINT LINE2 ; PRINT LINE 2 SKIP 1 PRINT LINE3 ; PRINT LINE 3 SKIP 1 PRINT LINE4 ; PRINT LINE 4 SKIP 1 PRINT LINE5 ; PRINT LINE 5 SKIP 1 PRINT LINEN SKIP 3 ; SKIP TO LOWER PART OF SCREEN IN: MOV #42,R0 MOV #CMDBUF,R1 1$: CLRB (R1)+ SOB R0,1$ DIR$ #PRMPT ; OUTPUT PROMPT DIR$ #READ ; READ COMMAND MOV #CMDBUF,R1 MOV R1,R2 ; SAVE TST ISTAT+2 ; BLANK LINE, RETURN BNE 10$ ; COMMAND GIVEN, PROCESS TST R3 ; DISPLAY NEW PAGE? BEQ 5$ ; BR IF NO MOV R3,$PAGE ; STORE PAGE PREFIX JMP $NPAGE ; DISPLAY NEW PAGE 5$: RETURN 10$: CMPB #40,(R2) ; DEBLANK LINE BEQ 30$ CMPB #141,(R2) ; ALSO CONVERT LOWER CASE TO UPPER BHI 20$ BICB #040,(R2) ; CONVERT 20$: MOVB (R2),(R1) INC R1 30$: INC R2 TSTB (R2) BNE 10$ ; STOP WHEN PAST CLRB (R1) ; FORCE ZERO AT END OF DEBLANKED LINE MOV #CMDBUF,R1 ; START AT BEGINNING AGAIN CMPB #'R,(R1) ; RATE=S COMMAND BEQ RATE CMPB #'N,(R1) ; NODE=N COMMAND BEQ NAME CMPB #'A,(R1) ; ADDRESS=A COMMAND BEQ ADDRES CMPB #'L,(R1) ; LLA=L COMMAND BEQ LLA CERR: PRINT ERM ; COMMAND ERROR BR IN ; READ ANOTHER COMMAND RATE: TSTB (R1) ; FIND '=' BEQ CERR ; DIDN'T FIND ONE CMPB #'=,(R1) BEQ 10$ INC R1 BR RATE 10$: INC R1 ; PAST '=' TSTB (R1) ; ANYTHING PAST IT BEQ CERR MOV R1,R0 CALL $CDTB TSTB (R0) ; NOTHING MUST BE PAST NUMBER BNE CERR MOV R1,$TMG ; STORE NEW RATE JMP IN NAME: TSTB (R1) ; FIND '=' BEQ CERR ; DIDN'T FIND ONE CMPB #'=,(R1) BEQ 10$ INC R1 BR NAME 10$: INC R1 ; PAST '=' TSTB (R1) ; ANYTHING PAST IT BEQ CERR CMP ISTAT+2,#11. ; NODE NAME MORE THAN 6 CHARACTERS? BLOS 20$ ; BR IF NO PRINT ERMNAM ; PRINT ERROR MESSAGE JMP IN 20$: MOV #$XCNOD,R0 ; POINT TO NODE NAME MOV #6,R2 ; MAXIMUM NUMBER OF CHARACTERS IN NODE NAME 30$: DEC R2 ; DECREMENT NUMBER OF CHARACTERS BLT 50$ ; BR IF 6 CHARACTERS MOVED IN MOVB (R1)+,(R0)+ ; STORE NODE NAME BNE 30$ ; ... MOVB #40,-1(R0) ; REPLACE NULL WITH SPACE 40$: DEC R2 ; PAD NODE NAME WITH SPACES BLT 50$ ; BR IF FINISHED MOVB #40,(R0)+ ; STORE SPACE BR 40$ ; 50$: BIC #FL$ADD,$XCFLG ; INDICATE NODE NAME SPECIFIED BIS #FL$NAM,$XCFLG ; JMP IN ADDRES: TSTB (R1) ; FIND '=' BEQ CERR ; DIDN'T FIND ONE CMPB #'=,(R1) BEQ 10$ INC R1 BR ADDRES 10$: INC R1 ; PAST '=' TSTB (R1) ; ANYTHING PAST IT BEQ CERR CMP ISTAT+2,#14. ; NODE ADDRESS MORE THAN 6 CHARACTERS? BLOS 20$ ; BR IF NO PRINT ERMADD ; PRINT ERROR MESSAGE BR 40$ 20$: MOV R1,R0 ; POINT TO NUMBER CALL $CDTB ; CONVERT IT TO BINARY TSTB (R0) ; NOTHING MUST BE PAST NUMBER BEQ 30$ ; BR IF OK PRINT ERMADD ; PRINT ERROR MESSAGE BR 40$ ; FINISHED 30$: BIC #FL$NAM,$XCFLG ; INDICATE NODE ADDRESS SPECIFIED BIS #FL$ADD,$XCFLG ; ... MOV R1,$XCADD ; STORE NODE ADDRESS 40$: JMP IN LLA: TSTB (R1) ; FIND '=' BNE 5$ ; BR IF FOUND ONE PRINT ERM ; DIDN'T FIND ONE JMP IN 5$: CMPB #'=,(R1) BEQ 10$ INC R1 BR LLA 10$: INC R1 ; PAST '=' TSTB (R1) ; ANYTHING PAST IT BNE 15$ ; BR IF FOUND ONE PRINT ERM ; DIDN'T FIND ONE JMP IN 15$: CMP ISTAT+2,#10. ; LOGICAL LINK ADDRESS MORE THAN 6 CHARACTERS? BLOS 20$ ; BR IF NO PRINT ERMLNK ; PRINT ERROR MESSAGE BR 40$ 20$: MOV R1,R0 ; POINT TO NUMBER CALL $CDTB ; CONVERT IT TO BINARY TSTB (R0) ; NOTHING MUST BE PAST NUMBER BEQ 30$ ; BR IF OK PRINT ERMLNK ; PRINT ERROR MESSAGE BR 40$ ; FINISHED 30$: MOV R1,$XCLLA ; STORE LOGICAL LINK ADDRESS MOV #"LL,R3 ; STORE LOCICAL LINK PAGE PREFIX 40$: JMP IN .END