.TITLE SPNMCR .IDENT /1.4XB/ ; EDIT # 0006 12 Mar 1981 9:24:26 DR0:[344,60]SPWNMCR.MAC;11 ; PREVIOUS EDIT 12 Mar 1981 9:20:54 DR0:[344,60]SPWNMCR.MAC;10 .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 ; RAY VAN TASSLE 6 Feb 1981 RVT01 ; CHANGE TO RETURN WITH PROPER STATUS .MCALL SPWN$,DIR$,STSE$S,EXST$S EFN1=1 ; EVENT FLAG FOR STOP LEN: .WORD 0 ; Length of command to MCR EXBLKP:: .WORD 0 ; ADDR OF THE EXIT-STATUS BLOCK (OR ZERO) SPEFN:: .WORD 0 ; EVENT FLAG NUMBER 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 EXBLKP,SPNDPB+S.PWES ; INSERT EXIT STATUS BLOCK ADDRESS MOV SPEFN,SPNDPB+S.PWEF ; INSERT EVENT FLAG NUMBER DIR$ #SPNDPB ; SPAWN COMMAND TO MCR BCS ERR ; SHOW ERROR 2$: 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 10$: CLC RETURN ; AND RETURN ERR: SEC ; SHOW SPAWN FAILED (CARRY SET) RETURN .END