> SRLG uses a "source" and "target" register as well as #bits.
 
>       STCKE   MILLSECS
>       LG       R1,MILLSECS         # IGNORE SECOND DOUBLE WORD
>       SRLG     R1,R1,5             # SCOOT RIGHT 5 BITS
>       DSGF     R1,=F'1000000'      # DIVIDE BY A MILLION
>       CGHI     R0,500000           # COMPARE TO 1/2 MILLION
>       JL       NOADD               #DON'T ADD ONE TO RESULT
>       AGHI     R1,1                # ROUND UP
> NOADD DS 0H
>       STG      R1,DOUBLETIME 

Seems easier to divide by 32000000 instead of shift and divide.

Also, just add the 500000 before divide if you want rounding.

By the way, time() is Posix, not C/C++. 

(That is, it ins't part of the C standard, but a separate standard.)

Also, the usual epoch is different from the STCKE epoch, so add
another constant for that one.  (Before or after divide.)

-- glen

 

Reply via email to