.TITLE WATCH.MAC 80G07A 11-APR-80/07-JUL-80. ; AUTHOR: N. A. BOURGEOIS, JR. ; SYSTEMS ENGINEERING DIVISION 1738 ; SANDIA NATIONAL LABORATORIES ; PO BOX 5800 ; ALBUQUERQUE, NM 87185 ; 505-844-8088 ; FTS 844-8088 ; ; THIS SOFTWARE IS ISSUED BY SANDIA NATIONAL LABORATORIES, ; OPERATED FOR THE UNITED STATES DEPARTMENT OF ENERGY BY ; SANDIA CORPORATION. ; ; NOTICE ; ; THIS SOFTWARE WAS SPONSORED BY THE UNITED STATES ; GOVERNMENT. NEITHER THE UNITED STATES GOVERNMENT NOR ; THE UNITED STATES DEPARTMENT OF ENERGY, NOR ANY OF THEIR ; EMPLOYEES, NOR ANY OF THEIR CONTRACTORS, SUBCONTRACTORS, ; OR THEIR EMPLOYEES MAKES ANY WARRANTY, EXPRESS OR ; IMPLIED, OR ASSUMES ANY LEGAL LIABILITY OR ; RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS OR ; USEFULNESS OF ANY INFORMATION, APPARATUS, PRODUCT OR ; PROCESS DISCLOSED, OR REPRESENTS THAT ITS USE WOULD NOT ; INFRINGE PRIVATELY OWNED RIGHTS. ; ; THIS WORK WAS SPONSORED AND FUNDED BY: ; ; HEADQUARTERS, ESD / OCB / STOP 36 ; HANSCOM AIR FORCE BASE, MA 01731 ; ; .SBTTL **************** .SBTTL * * .SBTTL * UNCLASSIFIED * .SBTTL * * .SBTTL **************** .SBTTL DESCRIPTION 11-APR-80/07-JUL-80. ;THIS PROGRAM PERIODICALLY MONITORS A FLAG LOCATED IN THE FLOATING ;VECTOR AREA. IF THE FLAG DOES NOT CONTAIN THE PROPER CODE ON THE ;SECOND OF TWO SUCCESSIVE LOOKS THE CPU IS HALTED. ; ;APPLICATION PROGRAMS MUST LOAD THE CODE INTO THE FLAG AT OR NEAR ;START TIME AND CLEAR THE FLAG ON EXIT. THE PROGRAMMED REQUEST ;".DEVICE" OR THE SYSTEM LIBRARY SUBROUTINE "DEVICE" SHOULD BE ;USED TO CLEAR THE FLAG. ; ;THIS PROGRAM IS WRITTEN IN DEC'S MACRO-11 ASSEMBLY LANGUAGE AND IS ;DESIGNED TO EXECUTE ON ANY OF THE PDP-11 FAMILY OF COMPUTERS UNDER ;THE RT-11 OPERATING SYSTEM [1,2,3] *. THE PROGRAM MUST BE RUN AS ;THE FOREGROUND JOB USING THE FOREGROUND/BACKGROUND MONITOR. ; ; ; * DEC AND PDP ARE REGISTERED TRADEMARKS OF DIGITAL EQUIPMENT ; CORPORATION, MAYNARD, MA. .SBTTL DIRECTIVES 11-APR-80/07-JUL-80. .IDENT \80G07A\ ;TELL LINKER OUR VERSION .NLIST BEX ;BINARY EXTENSIONS .PSECT CODE,I ;PROGRAM CODE .PSECT DATA,D ;PROGRAM DATA .SBTTL ASSIGNMENTS AND LOCATIONS 11-APR-80/15-APR-80. BEL =7 ;ASCII BELL CHARACTER CLKVEC =100 ;REAL TIME CLOCK VECTOR CODE ==22134 ;ACCEPTABLE FLAG VALUE COUNT =FLAG-2 ;PERIOD COUNTER CR =15 ;ASCII CARRIAGE RETURN FLAG ==376 ;LOCATION JSW =44 ;JOB STATUS WORD LF =12 ;ASCII LINE FEED QUELEN =2 ;NUMBER OF EXTRA I/O QUE ELEMENTS SLEEP ==10. ;TIME IN SECONDS TTSPC =10100 ;TT: SPECIAL MODE BITS .SBTTL MEMORY ALLOCATIONS .PSECT DATA .SBTTL EMT AREAS 11-APR-80/14-APR-80. PRTBLK: .BYTE 0 ;.PROTECT ARGUMENTS .BYTE 31 ; EMT CODE .WORD COUNT,FLAG ; "VECTOR" LOCATION QUEBLK: .BLKW 7*QUELEN ;.QSET ELEMENTS SCABLK: .BYTE 0 ;.SCCA ARGUMENTS .BYTE 35 ; EMT CODE .WORD SCAWRD ; ADDRESS OF CONTROL-C INTERCEPT WORD SCAWRD: .WORD 0 ;CONTROL-C INTERCEPT WORD TIME:: .WORD 0,60.*SLEEP ;IN CLOCK TICKS TWTBLK: .BYTE 0 ;.TWAIT ARGUMENTS .BYTE 24 ; EMT CODE .WORD TIME ; SA TIME WORDS .SBTTL MESSAGES 11-APR-80/07-JUL-80. MSG01: .ASCIZ \WATCH: 80G07A\ MSG02: .ASCIZ \WATCH: HALT\ MSG03: .ASCIZ \.TWAIT: ERROR\ MSG04: .ASCIZ \.PROTECT: ERROR\ .EVEN .SBTTL CODE .PSECT CODE .SBTTL MACROS [4] 11-APR-80/14-APR-80. .MCALL .PRINT ;A MESSAGE ON THE CONSOLE TT: .MCALL .PROTECT ;A VECTOR .MCALL .QSET ;ADD EXTRA I/O QUE ELEMENTS .MCALL .SCCA ;INTERCEPT CONTROL-C .MCALL .SRESET ;SOFTWARE RESET .MCALL .TTINR ;INPUT CHARACTERS FROM THE CONSOLE TT: ; GO ON IF NONE AVAILABLE .MCALL .TWAIT ;TIMED SUSPENSION OF EXECUTION .SBTTL PROGRAM 11-APR-80/15-APR-80. ;INITIALIZE EVERYTHING. INTERCEPT CONTROL-C'S AND MONITOR THE FLAG. HALT ;ON EITHER ERROR, DOUBLE CONTROL-C OR WRONG CODE IN THE FLAG. START:: .SRESET ;SOFTWARE RESET .PRINT #MSG01 ;IDENTIFICATION .PROTECT #PRTBLK ;GRAB THE "VECTOR" BCC 1$ ; IF NO ERROR .PRINT #MSG04 ; IF ERROR BR 5$ 1$: CLR @#COUNT ;START WITH CLR @#FLAG ; ALL ZEROS .SCCA #SCABLK ;SET UP TO INTERCEPT BIS #TTSPC ,@#JSW ; CONTROL-C'S 2$: .TTINR ;EMPTY THE BCC 2$ ; TT: BUFFER TST SCAWRD ;DOES USER WISH TO "QUIT"? BNE 5$ ; YES .TWAIT #TWTBLK ;GO TO SLEEP FOR A SPELL BCC 3$ ; IF NO ERROR .PRINT #MSG03 ; IF ERROR BR 5$ 3$: CMP #CODE ,@#FLAG ;IS ALL OK? BNE 4$ ; NO CLR @#COUNT ; YES BR 2$ 4$: INC @#COUNT ;BUMP THE POINTER CMP #1 ,@#COUNT ;WAS IT OK LAST TIME? BEQ 2$ ; YES 5$: .PRINT #MSG02 ; NO .TWAIT #TWTBLK ;ALLOW SOME I/O TIME CLR @#CLKVEC ;FORCE SYSTEM HALT ON RESTART 6$: HALT ;END IT ALL NOW BR 6$ ; AND FOR SURE .SBTTL APPENDICES .SBTTL RT-11 COMMAND STRINGS [5] 11-APR-80/07-JUL-80. ;ASSEMBLER ; .RUN MACRO ; *WATCH[,LP:]