.TITLE JBDATE ; Multiprocessor V5 ; DATACOMM. HELP-PROGRAM, Fetches DATE&TIME from remote JOB and sets LOCAL. ; 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,.CLOSE,.SETTOP .MCALL .DATE,.DSTAT,.FETCH,.RELEAS,.GTIM,.SDTTM,.MRKT .MCALL .SPND,.RSUM,.ABTIO,.QSET,.READC .ENABL LC START:: .QSET #XQUE,#4 MOV @#50,R5 ;Load R5 with high program limit. TST (R5)+ ;Point to free memory .DSTAT #STAT,#FIL0 TST STAT+4 ;Handler already loaded? BNE LOADED MOV STAT+2,R0 ;Handler size! ADD R5,R0 ;New high limit needed! BCS MEMOVR MOV R0,-(SP) .SETTOP R0 ;Do limit request. BCC 1$ TST (SP)+ .PRINT #SETERR .EXIT 1$: CMP R0,(SP)+ ;Enough memory? BCS MEMOVR .FETCH R5,#FIL0 BCC LOADED .PRINT #NOINST .EXIT MEMOVR: .PRINT #NOMEM .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 ;----------------------------------- STAT: .BLKW 4 NOINST: .ASCIZ /?JBDATE-F-HL: not in SYSTEM/ NOMEM: .ASCIZ /?JBDATE-F-Not enough memory!/ SETERR: .ASCIZ /?JBDATE-F-.SETTOP error!/ NOLK0: .ASCIZ /?JBDATE-F-LOOKUP-Failure/ NODATE: .ASCIZ /?JBDATE-W-NO remote DATE&TIME, no setting!/ NORJOB: .ASCIZ /?JBDATE-W-NO remote JOB or remote system DOWN!/ NOQMRK: .ASCIZ /?JBDATE-F-NO Q-element for .MRKT!/ IOERR: .ASCIZ /?JBDATE-W-IO error, no setting DATE&TIME!/ .EVEN ; OK: CLR OKFLAG .READC #AREA,#0,#BUFFER,#256.,#IOCMPL,#MAIL ;Start reading data BCS HRDERR .MRKT #TAREA,#TIME,#TICMPL,#1 ;Set time-out BCS NOQUE .SPND TST OKFLAG BEQ NOJOB .READW #AREA,#0,#BUFFER,#256.,#MAIL ;Read JOBs actual DATE&TIME BCS HRDERR MOV #BUFFER+500.,R1 TST @R1 BEQ NODAT .SDTTM #AREA,R1 ;... and SET them. ; READY: .CLOSE #0 .RELEAS #FIL0 .EXIT NODAT: .PRINT #NODATE BR READY ; HRDERR: .PRINT #IOERR BR READY ; NOJOB: .ABTIO #0 ;Abort outstanding IO req. .PRINT #NORJOB BR READY ; NOQUE: .PRINT #NOQMRK BR READY ; ; READC/MRKT Completion routines: ; IOCMPL: MOV #1,OKFLAG .RSUM ; OK! -> Resume main. RETURN TICMPL: TST OKFLAG BNE 1$ ; NE -> IO READY! .RSUM 1$: RETURN ;--------------------------------------------------------------------; XQUE: .BLKW 10.*4 AREA: .BLKW 5 TAREA: .BLKW 5 TIME: .WORD 0 .WORD 50. ;1. SEC. for TIME-OUT OKFLAG: .WORD 0 BUFFER: .BLKW 256. ;--------------------------------------------------------------------; .END START