-45,,/;EJC001/ ; e.j. cetron 24-feb-84 ; added functionality... ; ; ; -69,,/;EJC001/ ef2 = 2 -83,83,/;EJC001/ .MCALL ISTAT$,STATE$,TRAN$,cnct$ ; PB296 -120,,/;EJC001/ r$1a: .word 0 ; name save for flyins r$1b: .word 0 ; -139,,/;EJC001/ mov r1,r$1a ; save command name clr r1 call $cat5 ; get next three letters mov r1,r$1b ; and save for later mov r$1a,r1 -200,200,/;EJC001/ ; JMP ERR2 ; SORRY, NO POLICY ESTABLISHED ; PB296 jmp flyins ; do a flying install anyway -430,430,/;EJC001/ INS0: .ASCIZ "RUN " ; PB296 -441,,/;EJC001/ mov r$1b,r1 ; second three characters call $c5ta ; and convert -687,,/;EJC001/ comand prq ; same as shq comand exe ; @lb:[1,1]execute.cmd command comand lgo ; @lb:[1,1]lgo.cmd command comand hey ; connect to task -700,700,/;EJC001/ TDXIDS: .ASCII <15><12>"TDX -- Version 10.ejc <24-FEB-84)"<15><12> ; PB333 -745,747,/;EJC001/ ; CHD -- ISSUE SET /UIC=XXX COMMAND by using @lb:[1,1]chd ; CHD -- CHANGE CURRENT UFD with accounting audit trail or show current uic CHDM1: .ASCIZ \@lb:[1,1]chd.cmd \ -766,766,/;EJC001/ -784,,/;EJC001/ prq: -810,811,/;EJC001/ PURM2: .ASCIZ "/PU/ld" ; PB296 DELM2: .ASCIZ "/DE/ld" ; PB296 -837,837,/;EJC001/ .PAGE ; exe -- ISSUE @lb:[1,1]execute.cmd COMMAND ; exe - start execute.cmd command file to compile and link f77 programs exeM1: .ASCIZ /@lb:[1,1]execute.cmd/ .EVEN exe: MOV #BIGBUF,R1 ; SPAWN BUFFER MOV #exeM1,R0 ; FIRST PART OF SPAWN COMMAND MVZ R0,R1 ; MOVE ASCIZ STRING TO SPAWN BUFFER mov param,r0 ; move parameter string address to r0 mvz r0,r1 ; and move it into the spawn buffer SUB #BIGBUF,R1 ; R1 MUST HAVE LENGTH OF COMMAND TO SPAWN JMP SPNMCR ; GIVE IT TO MCR .PAGE ; lgo -- ISSUE @lb:[1,1]lgo.cmd COMMAND ; lgo - start lgo.cmd file to compile multiple f77 prog. sections and link them lgoM1: .ASCIZ \@lb:[1,1]lgo.cmd\ .EVEN lgo: MOV #BIGBUF,R1 ; SPAWN BUFFER MOV #lgoM1,R0 ; FIRST PART OF SPAWN COMMAND MVZ R0,R1 ; MOVE ASCIZ STRING TO SPAWN BUFFER mov param,r0 ; move parameter string address to r0 mvz r0,r1 ; and move it into the spawn buffer SUB #BIGBUF,R1 ; R1 MUST HAVE LENGTH OF COMMAND TO SPAWN JMP SPNMCR ; GIVE IT TO MCR .PAGE .SBTTL HEY ; ; HEY ; BUFFER: .BLKW 40. EXTBLK: .WORD -1 ISB: .WORD 0,0 SPA=40 ; CODE FOR SPACE COMMA=054 ; CODE FOR A COMMA ESC=33 ; CODE FOR ESCAPE CR=15 ; CODE FOR CARRIAGE RETURN BELL=7 ; CODE FOR 'BELL' ef1 = 1 CNNECT: CNCT$ ,EF1,,EXTBLK ; CONNECT DPB FOR "HEY" COMMAND QIO: QIOW$ IO.WVB,LUN5,EF2,,ISB,, ; CODES: .WORD E2 .WORD E3 .WORD E4 .WORD FUNNY ; BECAUSE EXIT STATUS IS 0, 1, 2, OR 4 .WORD E5 ERRS: .WORD FUNNY ; 0 - INTERNAL CONSISTENCY ERROR .WORD CMLINE ; 2 - COMMAND LINE IO ERROR .WORD SYNTAX ; 4 - SYNTAX ERROR .WORD TSKCLI ; 6 - TASK A CLI .WORD NSTASK ; 8 - NO SUCH ACTIVE TASK .NLIST BEX MESS1: .ASCIZ /HEY -- TASK / MESS2: .ASCIZ / EXITED WITH STATUS = / ERRMES: .ASCIZ /HEY -- / E2: .ASCIZ /WARNING/ E3: .ASCIZ /SUCCESS/ E4: .ASCIZ /ERROR/ E5: .ASCIZ /SEVERE ERROR/ NSTASK: .ASCIZ /TASK NOT ACTIVE/ TSKCLI: .ASCIZ /BAD TASK/ SYNTAX: .ASCIZ /INVALID SYNTAX/ CMLINE: .ASCIZ /BAD COMMAND LINE/ FUNNY: .ASCIZ /FUNNY -- INTERNAL CONSISTENCY ERROR/ .LIST BEX .EVEN HEY: MOV #CNNECT+C.NCTN,R3 ; GET ADDRESS TO PUT TASKNAME mov param,r5 ; get param buffer pointer MOV R5,R0 ; COPY BUFFER POINTER CLR R5 ; ZERO ERROR INDICATOR CMPB (R0),#SPA ; SPACE? BNE 20$ ; IF NE NO TSTB (R0)+ ; YES, SKIP IT 20$: ; REF LABEL CALL $CAT5 ; CONVERT ASCII TASKNAME TO RAD50 BCS 30$ ; IF CS LESS THAN 3 CHARACTERS IN TASKNAME MOV R1,(R3)+ ; 1ST PART OF TASKNAME IN CONNECT DPB CALL $CAT5 ; CONVERT MORE TASKNAME TO RAD50 BCS 40$ ; IF CS TERMINATING CHARACTER IN R2 30$: ; MOVB (R0),R2 ; GET TERMINATING CHARACTER 40$: ; MOV R1,(R3) ; TASKNAME IN CONNECT DPB CMPB R2,#ESC ; ESCAPE? BEQ 50$ ; IF EQ YES, OK CMPB R2,#CR ; CARRIAGE RETURN? BNE ERROR2 ; IF NE INVALID TERMINATOR .PAGE DIR$ #CNNECT ; CONNECT TO THE SPECIFIED TASK CMP $DSW,#IS.SUC ; SUCCESSFUL CONNECTION? BEQ 50$ ; IF EQ YES CMPB $DSW,#IE.INS ; WAS SPECIFIED TASK A CLI? BEQ ERROR3 ; IF EQ YES CMPB $DSW,#IE.ACT ; WAS TASK INACTIVE? BEQ ERROR4 ; IF EQ YES BR ERROR0 ; NO, FUNNY ERROR 50$: ; STSE$S #EF1 ; WAIT FOR CONNECTED TASK TO EXIT MOV #BUFFER,R0 ; GET OUTPUT BUFFER ADDRESS MOVB #BELL,(R0)+ ; PUT IN A BELL MOV #MESS1,R1 ; GET ADDRESS OF 1ST PART OF MESSAGE CALL MOVE ; PUT IT IN OUTPUT BUFFER MOV CNNECT+C.NCTN,R1 ; GET 1ST PART OF TASKNAME CALL $C5TA ; CONVERT TASK NAME TO RAD50 MOV CNNECT+C.NCTN+2,R1 ; GET 2ND PART OF TASKNAME CALL $C5TA ; CONVERT TASKNAME TO RAD50 MOV #MESS2,R1 ; GET ADDRESS OF 2ND PART OF MESSAGE CALL MOVE ; MOVE IT INTO OUTPUT BUFFER MOV EXTBLK,R1 ; GET EXIT STATUS CMP #5,R1 ; KNOWN RETURN CODE? BHI 60$ ; IF HI YES CLR R2 ; SUPPRESS LEADING ZEROES CALL $CBOMG ; CONVERT TO OCTAL BR 70$ ; 60$: ; REF LABEL ASL R1 ; GET WORD INDEX MOV CODES(R1),R1 ; GET ADDRESS OF EXIT CODE MESSAGE CALL MOVE ; MOVE IT INTO BUFFER 70$: ; REF LABEL SUB #BUFFER,R0 ; GET LENGTH OF MESSAGE MOV R0,QIO+Q.IOPL+2 ; MOVE LENGTH OF BUFFER INTO QIO DIR$ #QIO ; PRINT MESSAGE BR ENDHEY ; FINISH UP .PAGE ERROR4: INC R5 ; TASK NOT ACTIVE ERROR3: INC R5 ; TASK A CLI ERROR2: INC R5 ; INVALID SYNTAX ERROR1: INC R5 ; NO COMMAND LINE ERROR0: ; FUNNY INTERNAL ERROR ASL R5 ; GET WORD INDEX MOV #BUFFER,R0 ; GET ADDRESS OF OUTPUT BUFFER MOV #ERRMES,R1 ; GET 1ST PART OF ERROR MESSAGE CALL MOVE ; MOVE INTO OUTPUT BUFFER MOV ERRS(R5),R1 ; GET ADDRESS OF ERROR MESSAGE CALL MOVE ; MOVE MESSAGE INTO OUTPUT BUFFER SUB #BUFFER,R0 ; GET LENGTH OF MESSAGE MOV R0,QIO+Q.IOPL+2 ; PUT IT IN DPB DIR$ #QIO ; PRINT ERROR MESSAGE ENDHEY: EXST$S #EX$SUC ; EXIT SUCCESSFULLY .PAGE ; PB296 /