;************************************************************************ ; SENDAM.M68 (Originally SEND25) ; send message to AM6? status line ; David F. Pallmann; 07-Jun-84 ; ; Modified 10/22/86 E. Oulashin, Portland Radio Supply ; Write messages to log file MESSAG.LOG in whatever ; PPN the message originated from. ; Modified 24/02/87 M. Clark, Sweetens Computer Services ; Semi-fettled for AM terminals ;************************************************************************ ; ; .SENDAM sends to ; .SENDAM ALL sends to all jobs using the following drivers: ; AM62? AM60 ; ; ;************************************************************************ ASMMSG "Link after assembly." ;UNIVERSALS SEARCH SYS SEARCH SYSSYM SEARCH TRM ;IMPURE AREA EXTERN $ODTIM .OFINI .OFDEF JOB,4 ;JOB NAME RAD50 .OFDEF TRM,D.DDB ;DDB FOR TERMINAL OUTPUT .OFDEF FILE,D.DDB ; FOR NEW FILE OUTPUT .OFSIZ MEMSIZ ;ASCII CHARACTERS BEL=7 CR=15 LF=12 ESC=33 XDL=177 ;MACROS DEFINE SEND CHAR MOVB CHAR,D1 FILOTB TRM(A5) ENDM DEFINE DEPACK ADDR IF NB,ADDR,LEA A1,ADDR SUB #4,SP MOV SP,A2 UNPACK CLRB @A2 TTYL @SP ADD #4,SP ENDM ;INITIALIZATION START: PHDR -1,0,PH$REE!PH$REU ;PROGRAM HEADER GETIMP MEMSIZ,A5 ;ALLOCATE IMPURE AREA ;GET JOB NAME OR GIVE HELP GETJOB: BYP ALF BEQ 10$ TTYL HELP JMP EXIT 10$: LEA A1,JOB(A5) PACK PACK CMM JOB(A5),#[ALL]_16. BEQ ALL ;LOOK-UP JOB NAME LOOKUP: MOV JOBTBL,A0 10$: MOV (A0)+,D0 BEQ 10$ BMI 20$ MOV D0,A1 CMM JOBNAM(A1),JOB(A5) BNE 10$ CALL XMIT BR 30$ 20$: TTYL BADJOB 30$: JMP EXIT ;SEND TO ALL JOBS WITH AM6? TERMINALS ALL: MOV JOBTBL,A4 ;A4 indexes job table 10$: MOV (A4)+,D0 ;get next job BEQ 10$ ;branch if de-allocated BMI 30$ ;branch if end of job table MOV D0,A1 ;A1 points to current job MOV JOBTRM(A1),D0 ;get terminal BEQ 10$ ;branch if detached MOV D0,A3 ;A3 contains terminal index MOV T.TDV(A3),A3 ;A3 points to terminal driver SUB #4,A3 ;A3 point to terminal driver name LEA A0,TDVTBL ;A0 indexed TDV table 20$: TST @A0 ;end of table? BEQ 10$ ; yes - bypass this job CMM (A0)+,@A3 ;TDV match? BNE 20$ ; no - continue scanning table SAVE A1,A2 DEPACK JOBNAM(A1) ;print job name DEPACK REST A1,A2 CRLF ;newline CALL XMIT ;send message BR 10$ ;continue 30$: ;EXIT EXIT: CRLF EXIT ;SEND MESSAGE TO TERMINAL XMIT: ;OPEN TERMINAL AS AN OUTPUT DEVICE OPEN: MOVW #[TRM],TRM+D.DEV(A5) CLRW TRM+D.DRV(A5) CLRW TRM+D.EXT(A5) CLRW TRM+D.PPN(A5) MOV JOBTRM(A1),A1 MOV -4(A1),TRM+D.FIL(A5) INIT TRM(A5) OPENO TRM(A5) ; ; OPEN LOG FILE 10/86 ENO ; PUSH A2 LEA A2,LOGFIL FSPEC FILE(A5),LOG INIT FILE(A5) LOOKUP FILE(A5) BEQ 10$ OPENO FILE(A5) BR BELLS 10$: OPENA FILE(A5) ;SEND CONTROL CHARACTERS TO REMOTE TERMINAL BELLS: LEA A2,FILE(A5) CLR D3 CLR D4 MOV #^B<1000010101001000>,D5 CALL $ODTIM MOVB #32.,D1 ; a couple of spaces FILOTB FILE(A5) FILOTB FILE(A5) POP A2 SEND #BEL ;send a CONTRL: SEND #ESC ;enable SEND #'z ; status line SEND #'! ;program SEND: MOV A2,A3 10$: MOVB (A3)+,D1 CMPB D1,#LF BEQ 20$ FILOTB TRM(A5) FILOTB FILE(A5) BR 10$ 20$: ;CLOSE OUTPUT TERMINAL AND FILE FILOTB TRM(A5) SEND #XDL CLOSE: CLOSE TRM(A5) MOVB #CR,D1 FILOTB FILE(A5) MOVB #LF,D1 FILOTB FILE(A5) CLOSE FILE(A5) RTN ; return from XMIT ;TEXT CONSTANTS HELP: ASCIZ /? usage: S / BADJOB: ASCIZ /? invalid job name/ ;AM6? TERMINAL DRIVER TABLE TDVTBL: RAD50 /AM62A / RAD50 /AM62 / RAD50 /AM60 / 0 LOGFIL: ASCIZ /MESSAG.LST/ EVEN END .