.TITLE WATCH ; Multiprocessor V5 ; DATACOMM. HELP-PROGRAM, Prints message and news at startup, then monitors ; for changes in news and message-for-you in the mailbox and JOB status. ; To be run on user-processor (satellite). ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++; ; COPYRIGHT (c) 1985 by ; ; H.H. Klin. Neuro. AZG ; ; ; ; This software is furnished under a LICENSE and may be USED ONLY IN ; ; ACCORDANCE WITH THE TERMS OF SUCH LICENSE. 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. ; ; ; ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++; MAIL=9. ;Block start address of messages in mailbox .MCALL .EXIT,.PRINT,.LOOKUP,.READW,.MRKT,.CLOSE,.SETTOP .MCALL .GTLIN,.RCTRLO,.DATE,.TTYIN,.DSTAT,.FETCH,.RELEAS .MCALL .SPND,.RSUM .ENABL LC START:: .DSTAT #STAT,#FIL0 TST STAT+4 ;Handler already loaded? BNE LOADED .PRINT #NOINST .EXIT ; ; Open channel ; LOADED: .LOOKUP #AREA,#0,#FIL0 ;get MAILBOX of host BCS LFAIL0 JMP OK ; ; Error returns: ; LFAIL0: .PRINT #NOLK0 .EXIT ;----------------------------------- FIL0: .RAD50 /HL / .WORD 0,0,0 ;----------------------------------- STAT: .BLKW 4 NOINST: .ASCIZ /?WATCH-F-HL: not LOADED!/ NOLK0: .ASCIZ /?WATCH-F-LOOKUP-Failure/ IOERR: .ASCIZ /?WATCH-W-IO error!/ ALLTXT: .ASCIZ /?WATCH-I-News changed to:/ YOUTXT: .ASCIZ /?WATCH-I-Message for you:/ .EVEN OK: .READW #AREA,#0,#BUFFER,#256.,#MAIL ;Read the news BCS HRDERR MOV #NEWBUF,R4 MOV #BUFFER,R5 ;Copy if new data. R4->NEWBUF/MSGBUF. MOV #240.,R2 ;Nr. of comparisions to do. CALL COPY ;Copy buffer to NEWBUF if new data BCS 1$ .PRINT #ALLTXT .PRINT #BUFFER 1$: CLR R1 MOVB JBSTAT,R1 ASL R1 ;Make block address INC R1 ; of message to us. ADD #MAIL,R1 .READW #AREA,#0,#BUFFER,#256.,R1 ;Read the message BCS HRDERR MOV #MSGBUF,R4 MOV #BUFFER,R5 ;Copy if new data. R4->NEWBUF/MSGBUF. MOV #240.,R2 ;Nr. of comparisions to do. CALL COPY ;Copy buffer to MSGBUF if new data BCS 2$ .PRINT #YOUTXT .PRINT #BUFFER 2$: .MRKT #AREA,#TIME,#TICMPL,#1 .SPND BR OK ; Terminate job: READY: .CLOSE #0 .RELEAS #FIL0 .EXIT TICMPL: .RSUM RETURN COPY: 1$: CMP (R5)+,(R4)+ BNE 2$ SOB R2,1$ SEC RETURN 2$: CMP -(R5),-(R4) ;Set R5,R4 1 word backwards. 3$: MOV (R5)+,(R4)+ ;Something is new, copy it and the rest. SOB R2,3$ CLC RETURN HRDERR: .PRINT #IOERR BR READY TIME: .WORD 0 TICKS: .WORD 500. ;10. SEC. AREA: .BLKW 5 BUFFER: .BLKW 240. IONRHI: .WORD 0 ; + 2 Nr IO's High word. IONRLO: .WORD 0 ; + 4 Nr IO's Low word. HERROR: .WORD 0 ; + 6 CHECKSUM ERROR COUNT. CERROR: .WORD 0 ; + 10 COMMUNIC. ERROR COUNT. BFSIZE: .WORD 0 ; + 12 Data buffer size in words. BUFBLK: .WORD 0 ; + 14 Nr. of available 256. word buffers CHSTAT: .WORD 0 ; + 16 Status "channels" open. RDSTAT: .WORD 0 ; + 20 READ PROTECT. status WTSTAT: .WORD 0 ; + 22 WRITE PROTECT. status. JBSTAT: .BYTE 0,0 ; + 24 Job/SPDIR/Boot indentifiers./JBNUM .BLKW 6 NEWBUF: .BLKW 240. MSGBUF: .BLKW 240. .END START