.TITLE SPNMCR .IDENT /1.4XA/ .ENABL LC ; ; MODULE TO TAKE OUTPUT FROM CCL.MAC AS ADDR OF FIRST CHAR, ; LENGTH IN CHARACTERS, AND TO OUTPUT AN MCR COMMAND LINE ; USE THE SPAWN DIRECTIVE TO SEND MESSAGES TO MCR ; ; J. DOWNWARD 16-FEB-79 ; ; 18-MAY-79 EXIT WITH CORRECT STATUS ; WAIT FOR SPAWNED COMMAND TO COMPLETE ; UNLESS COMMAND TERMINATED WITH A %$% ; ; 15-JUN-79 CHANGE ...MCR TO MCR... FOR V3.2 .MCALL SPWN$,DIR$,STSE$S,EXST$S EFN1=1 ; EVENT FLAG FOR STOP ;MCRNM: .RAD50 /...MCR/ ; FOR COMPATABILITY WITH OLD NAMING(PRE V3.2) LEN: .WORD 0 ; Length of command to MCR EXSTAT: .WORD EX$SUC ; Exit status block (8. words long) .BLKW 7 SPNDPB: SPWN$ MCR...,,,,,EFN1,,,, PUTMCR:: ; External entry point TST (R5)+ ; BUMP POINTER F4P STYLE MOV @(R5)+,LEN ; GET LENGTH OF BUFFER FROM CCL CMP #79.,LEN ; NOW WE CAN'T HAVE A BUFFER >79 CHAR. BLT ERR ; OR ELSE ERROR MOV (R5),SPNDPB+S.PWCA ; INSERT COMMAND LINE ADDRESS MOV LEN,SPNDPB+S.PWCL ; INSERT COMMAND LINE LENGTH MOV #EXSTAT,SPNDPB+S.PWES ; INSERT EXIT STATUS BLOCK ADDRESS DIR$ #SPNDPB ; SPAWN COMMAND TO MCR ; BCC 2$ ; SKIP OVER IF SUCCESS ; MOV MCRNM,SPNDPB+S.PWTN ; SET IN FIRST HALF OF ...MCR ; MOV MCRNM+2,SPNDPB+S.PWTN+2 ; AND SECOND HALF OF NAME ; DIR$ #SPNDPB ; TRY TO SPAWN TO OLD NAME BCS ERR ; SHOW ERROR 2$: MOV #EX$SUC,EXSTAT ; ASSUME SUCCESS TST NOSTOP ; DID AN %$% TERMINATE THE LINE? BNE 10$ ; IF YES, DON'T WAIT FOR COMMAND TO COMPLETE STSE$S #EFN1 ; STOP UNTIL COMMAND DONE TST EXSTAT ; IF EQ 0,THEN WE HAVE SUCCESS BNE 10$ ; IF NE, THEN USE WHAT EVER IS RETURNED MOV #EX$SUC,EXSTAT ; SHOW SUCCESS 10$: MOV EXSTAT,R0 ; SAVE EXIT STATUS RETURN ; AND RETURN ERR: SEC ; SHOW SPAWN FAILED (CARRY SET) RETURN .END