.TITLE GETTIM .IDENT /V1.0/ ; Measure the time it takes to do a GETTIM on a VAX. ; ; B. Z. Lederman ;;;; .PSECT RODATA, NOWRT, NOEXE TTNAME: .ASCID /SYS$OUTPUT:/ MSG1: .ASCID " Date is !%D" MSG2: .ASCID " Minutes = !UW, Seconds = !UW.!UW" MSG3: .ASCID " Longword values = !XL !XL" ERRSTR: .ASCID "!/System Service Error at APP. !XL RO=!XL" ;;;; .PSECT RWDATA, RD, WRT, NOEXE TTCHAN: .BLKW 1 ; channel TTIOSB: .BLKW 1 ; I/O Status TTLEN: .BLKW 1 ; I/O length .BLKL 1 ; device char. SAVEPC: .BLKL 1 ; space to save PC for error messages DTBUF: .BLKW 4 ; space for NUMTIM buffer DTMIN: .BLKW 1 ; minutes DTSEC: .BLKW 1 ; seconds DTHUN: .BLKW 1 ; hundreths of second FAODSC: .LONG 80 ; FAO descriptor .ADDRESS FAOBUF ; address of buffer FAOBUF: .BLKB 80 ; FAO buffer FAOLEN: .WORD 0 ; length of initial string .WORD 0 ; need quad value for $QIOW STRTIM: .BLKQ 1 ; starting time ENDTIM: .BLKQ 1 ; ending time ;;; .PSECT T, EXE, NOWRT .ENTRY TEST, ^M ; entry mask CODE:: $ASSIGN_S - DEVNAM = TTNAME, - CHAN = TTCHAN BLBS R0, 10$ ; continue if O.K. RET ; otherwise exit with status in R0 10$: $FAO_S CTRSTR = MSG1, - ; format startup message OUTLEN = FAOLEN, - OUTBUF = FAODSC $QIOW_S CHAN = TTCHAN, - FUNC = #IO$_WRITEVBLK, - P1 = FAOBUF, - P2 = FAOLEN, - P4 = #32 BSBW ERROR MOVL #1000, R4 $GETTIM_S - TIMADR = STRTIM ; get NOW from system BSBW ERROR 100$: $GETTIM_S - TIMADR = ENDTIM ; get NOW from system BSBW ERROR SOBGTR R4, 100$ MOVL STRTIM, R5 MOVL STRTIM+4, R6 JSB DSPTIM MOVL ENDTIM, R5 MOVL ENDTIM+4, R6 JSB DSPTIM SUBL ENDTIM, STRTIM ; get difference (in reverse order SBWC ENDTIM+4, STRTIM+4 ; as negative indicates delta time) MOVL STRTIM, R5 MOVL STRTIM+4, R6 JSB DSPTIM $NUMTIM_S - ; convert to binary values TIMBUF = DTBUF, - TIMADR = STRTIM BSBW ERROR $FAO_S CTRSTR = MSG2, - ; format time message OUTLEN = FAOLEN, - OUTBUF = FAODSC, - P1 = DTMIN, - P2 = DTSEC, - P3 = DTHUN BSBW ERROR $QIOW_S CHAN = TTCHAN, - FUNC = #IO$_WRITEVBLK, - P1 = FAOBUF, - P2 = FAOLEN, - P4 = #32 RET ; Error Checking Routine ERROR: BLBC R0, 10$ ; if error, branch RSB ; otherwise, continue 10$: MOVL (SP), SAVEPC $FAO_S CTRSTR = ERRSTR, - ; format error message OUTLEN = FAOLEN, - OUTBUF = FAODSC, - P1 = SAVEPC, - P2 = R0 BLBC R0, END $QIOW_S CHAN = TTCHAN, - FUNC = #IO$_WRITEVBLK, - P1 = FAOBUF, - P2 = FAOLEN, - P4 = #32 END:: RET DSPTIM: $FAO_S CTRSTR = MSG3, - ; format quadword time OUTLEN = FAOLEN, - OUTBUF = FAODSC, - P1 = R5, - P2 = R6 BSBW ERROR $QIOW_S CHAN = TTCHAN, - FUNC = #IO$_WRITEVBLK, - P1 = FAOBUF, - P2 = FAOLEN, - P4 = #32 BSBW ERROR RSB .END TEST