.TITLE LLCMD - COMMAND PAGE FOR LOGICAL LINK .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 LOGICAL LINK DISPLAY ; ; ; ; DISTRIBUTED SYSTEMS SOFTWARE ENGINEERING ; ; IDENT HISTORY: ; ; 1.00 15-APR-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 LINEN: MESS < TO RETURN> .EVEN ERM: 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: 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 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 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 #'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 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,#7. ; LOGICAL LINK ADDRESS MORE THAN 3 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 40$: JMP IN .END