.TITLE SETTIM TASK TO SET SYSTEM TIME FROM TCU-100 .IDENT /31AUG7/ ;MK ;+ ; NAME: SETTIM ; ; PURPOSE: THIS PRIVILEGED TASK READS A TCU-100 CLOCK (MANUFACTURED ; BY DIGITAL PATHWAYS INC.) AND SETS THE SYSTEM DATE AND ; TIME FROM THE READING. ; ; MACHINE: PDP-11 ; ; SYSTEM: RSX-11D ; ; INTERFACE: THE TASK IS INVOKED BY THE MCR COMMAND 'RUN SETTIM'. ; ; INPUT: NONE ; ; OUTPUT: THE SYSTEM CLOCK IS SET TO THE CURRENT TIME ; READ FROM THE TCU-100. ; ; METHOD: THE MONTH, DAY, HOUR, MINUTE, AND SECOND ARE READ ON ; THE BUS FROM THE TCU-100 (THE HOUR AND MINUTE ARE READ ; TWICE TO MAKE SURE THERE IS NO ROLLOVER FROM SECONDS ; TO MINUTES). THEY ARE THEN CONVERTED INTO THE APPROP- ; RIATE FORMAT FOR THE SYSTEM, AND THE SYSTEM TIME PARAM- ; ETERS ARE SET. ; ; SINCE THE YEAR IS UNAVAILABLE FROM THE TCU-100, IT IS ; ASSUMED THAT A DATE HAS BEEN MANUALLY ENTERED INTO THE ; SYSTEM THAT IS LESS THAN ONE YEAR OLD. IF THE DAY AND ; MONTH READ ARE EARLIER THAN THE SYSTEM DATE, THE YEAR IS ; INCREMENTED. OTHERWISE, IT IS LEFT ALONE. ; ; RESTRICTIONS: A TCU-100 CLOCK MUST BE PRESENT ON THE BUS. ; A DATE MUST HAVE BEEN ENTERED THAT IS LESS THAN A YEAR ; OLD. ; ; REFERENCE: TIMING CONTROL UNIT TCU-100, DIGITAL PATHWAYS INC. ;- ; REVISIONS: ; 31-AUG-77 (MK) WRITTEN ; MACROS ; .MCALL EXIT$S .MACRO .INH0 MOV @#PS.EXP,-(SP) BIS #140,@#PS.EXP .ENDM .INH0 ; ; ADDRESS PARAMETERS ; TCU= 160770 ;ADDRESS OF TCU REGISTERS ; ; DATA ; MONTH: .WORD 0 DAY: .WORD 0 HOUR: .WORD 0 MINUTE: .WORD 0 SECOND: .WORD 0 ; ; CODE ; SETTIM: MOV #TCU,R0 ;GET TCU ADDRESS MOV (R0)+,R1 ;GET MONTH AND DAY MOV (R0)+,R2 ;GET HOUR AND MINUTE MOV (R0),R3 ;GET SECOND CMP -(R0),R2 ;CHECK FOR ROLLOVER BNE SETTIM ;YES - TRY AGAIN CMP -(R0),R1 ;CHECK FOR ROLLOVER BNE SETTIM ;YES - TRY AGAIN MOV R1,DAY ;STORE DAY BIC #177740,DAY ;CLEAN UP SWAB R1 BIC #177760,R1 ;CLEAN UP MONTH MOV R1,MONTH ;STORE MONTH MOV #60.,MINUTE SUB R2,MINUTE ;COMPUTE 60-MIN FOR SYSTEM BIC #177700,MINUTE ;CLEAN UP SWAB R2 BIC #177740,R2 ;CLEAN UP HOUR MOV #24.,HOUR SUB R2,HOUR ;COMPUTE 24-HOUR FOR SYSTEM BIC #177700,R3 ;CLEAN UP SECOND MOV #60.,SECOND SUB R3,SECOND ;COMPUTE 60-SEC FOR SYSTEM MOV #.YEAR,R1 ;POINT TO SYSTEM'S YEAR MOV #MONTH,R0 ;POINT TO TCU'S MONTH .INH0 ;INHIBIT TASK SWITCH TO FREEZE SYS TIME CMP MONTH,.MONTH ;IN MONTH EARLIER THAN SYSTEM'S? BLT 1$ ;YES BGT 2$ ;NO - LATER CMP DAY,.DAY ;IS DAY EARLIER THAN SYSTEM'S? BGE 2$ ;NO 1$: INC (R1) ;IT'S NEXT YEAR, ALREADY 2$: MOV (R0)+,-(R1) ;SET MONTH MOV (R0)+,-(R1) ;SET DAY MOV (R0)+,-(R1) ;SET HOUR MOV (R0)+,-(R1) ;SET MINUTE MOV (R0)+,-(R1) ;SET SECOND CALL ..ENB0 ;ENABLE TASK SWITCH EXIT$S .END SETTIM