.TITLE CLK - SWITCH REGISTER CLOCK UTILITY ;----------------------------------------------------------------------; ; MODULE: CLK ; ; LANGUAGE: DEC PDP-11/34 MACRO ASSEMBLY LANGUAGE (V3.2) ; ; SYSTEM: DEC PDP-11/34 RUNNING UNDER RSX-11M V3.2 ; ; MOSTEK CORPORATION ; ; COMPUTER AIDS TO DESIGN DIVISION ; ; 1215 WEST CROSBY ROAD ; ; CARROLLTON, TEXAS 75006 ; ; (214) 323-8813 ; ;----------------------------------------------------------------------; ; PROGRAMMER: KEVIN KLUGHART ; ;----------------------------------------------------------------------; ; DATE: 09-04-81 @ 12:00 CDST ; ;----------------------------------------------------------------------; ; PURPOSE: THIS UTILITY SERVES AS A SWITCH REGISTER CLOCK ; ; BY DISPLAYING THE CURRENT SYSTEM TIME TO THE ; ; SWITCH REGISTER AT PERIODIC INTERVALS. THE ; ; FORMAT FOR THE DISPLAY IS AS FOLLOWS: ; ; ; ; HH MM SS ; ; ; ; WHERE THE HOUR, MINUTE, AND SECOND ARE OCTAL. ; ;----------------------------------------------------------------------; .IDENT /V01.00/ ; CURRENT RELEASE .SBTTL EXTERNAL MACROS ;----------------------------------------------------------------------; ; ; ; EXTERNAL MACROS ; ; ; ;----------------------------------------------------------------------; ; EXECUTIVE DIRECTIVE MACROS ; ;----------------------------------------------------------------------; .MCALL EXIT$S ; EXIT TASK .MCALL GTIM$S ; GET TIME PARAMETERS .MCALL MRKT$S ; MARK TIME (DELAY) .MCALL WTSE$S ; WAIT ON SINGLE EVENT FLAG .SBTTL DATA BUFFERS ;----------------------------------------------------------------------; ; ; ; DATA BUFFERS ; ; ; ;----------------------------------------------------------------------; ; DEFINE GET TIME PARAMETERS BUFFER ; ;----------------------------------------------------------------------; .EVEN TIMBUF: .BLKW 10 ; DEFINE 8 WORD TIME BUFFER .SBTTL CLK - MAIN SWITCH REGISTER CLOCK UTILITY ;----------------------------------------------------------------------; ; ; ; CLK - MAIN SWITCH REGISTER CLOCK UTILITY ; ; ; ;----------------------------------------------------------------------; ; START OF MAIN PROCESSING LOOP - GET CURRENT TIME ; ;----------------------------------------------------------------------; .EVEN START: GTIM$S #TIMBUF ; GET CURRENT TIME PARAMETERS BCS EXIT ; ABORT UTILITY ON ERROR ;----------------------------------------------------------------------; ; LOAD CURRENT HOUR ; ;----------------------------------------------------------------------; CLR R2 ; CLEAR SWITCH REGISTER TIME ACCUMULATOR MOV #TIMBUF,R5 ; LOAD OFFSET ADDRESS FOR TIME BUFFER MOV G.TIHR(R5),R0 ; GET CURRENT HOUR MOV #14,R1 ; SHIFT HOUR 4 OCTAL DIGITS ADD #-12.,R0 ; SUBTRACT OUT 12 HOURS (NOT MILITARY TIME) BGT 10$ ; IF > 0 THEN TIME IS CORRECT ADD #12.,R0 ; IF <=0 THEN ADD BACK 12 HOURS 10$: ASL R0 ; SHIFT HOUR 1 BIT LEFT DEC R1 ; DECREMENT SHIFT COUNT BNE 10$ ; AND SHIFT AGAIN IF NECESSARY BIS R0,R2 ; AND SET BITS IN TIME ACCUMULATOR ;----------------------------------------------------------------------; ; LOAD CURRENT MINUTE ; ;----------------------------------------------------------------------; MOV G.TIMI(R5),R0 ; GET CURRENT MINUTE MOV #6,R1 ; SHIFT MINUTE 2 OCTAL DIGITS 20$: ASL R0 ; SHIFT MINUTE 1 BIT LEFT DEC R1 ; DECREMENT SHIFT COUNT BNE 20$ ; AND SHIFT AGAIN IF NECESSARY BIS R0,R2 ; AND SET BITS IN TIME ACCUMULATOR ;----------------------------------------------------------------------; ; LOAD CURRENT SECOND ; ;----------------------------------------------------------------------; BIS G.TISC(R5),R2 ; GET CURRENT SECOND AND SET IN TIME ACCUMULATOR ;----------------------------------------------------------------------; ; SET CURRENT TIME IN SWITCH REGISTER AND DELAY ONE SECOND ; ;----------------------------------------------------------------------; MOV R2,SWR ; SET TIME IN SWITCH REGISTER MRKT$S #1,#1,#2 ; DELAY ONE SECOND BCS EXIT ; ABORT EXECUTION ON ERROR WTSE$S #1 ; WAIT FOR EVENT COMPLETION BCC START ; CONTINUE IF NO ERROR .SBTTL TASK EXIT DUE TO FATAL DIRECTIVE EXECUTION ERROR ;----------------------------------------------------------------------; ; ; ; TASK EXIT DUE TO FATAL DIRECTIVE EXECUTION ERROR ; ; ; ;----------------------------------------------------------------------; EXIT: EXIT$S ; EXIT TASK .END START ; END OF MAIN PROGRAM