.SBTTL INTRODUCTION .TITLE RPU8M .IDENT /V003F/ ;**NEW** ; ;**-1 ; ; ; ; ; ; COPYRIGHT (C) 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASSACHUSETTS 01754. ; ; ; THE SOFTWARE DESCRIBED IN THIS DOCUMENT, INCLUDING BUT NOT LIMITED TO, IN- ; STRUCTION EXECUTION TIMES AND OPERATING SPEEDS IS FOR INFORMATION PURPOSES ; ONLY. ALL SUCH MATERIAL IS SUBJECT TO CHANGE WITHOUT NOTICE. ; CONSEQUENTLY DIGITAL MAKES NO CLAIM AND SHALL NOT BE LIABLE FOR ITS ACCU- ; RACY. ; ; THE SOFTWARE DESCRIBED IS FURNISHED TO THE PURCHASER UNDER A LICENSE FOR ; USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH THE INCLUSION OF ; DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT AS MAY ; OTHERWISE BE PROVIDED IN WRITING BY DIGITAL. ; ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL. ; ; ; UNLESS SPECIFIED OTHERWISE, THE TERMS "RSX" AND "RSX-11" IN THIS DOCUMENT ; IMPLY "RSX-11D". ; ; ; ; ; VERSION: VOO3E ; AUTHOR: R. KLEINMAN ; DATE: 5 FEB 74 ; ; UPDATED 7/7/74 BY RSM OF AII SYSTEMS TO CORRECT ;**NEW** ; PROBLEM OF CARRIAGE RETURN BEING ISSUED JUST BEFORE ;**NEW** ; PRINTING OF SOME NUMBERS SUCH AS THE NUMBER OF SNAPSHOTS ;**NEW** ; DURING WHICH THE TASK WAS ACTIVE ;**NEW** ; ; MODIFICATION: ; ; YCT001 DEC-18-78 YUNG-CHUN TSAU ; ; 1) WRITE THE OUTPUT TO DISC FILE ; 2) DO NOT OUTPUT THE PART (B) OF ; THE REPORT ; ; THIS MODULE CONTAINS ; 1-- CODE FOR EVALUATE ; ; .PAGE ;+ ;THIS OVERLAY TO EVALU8 WILL HANDLE REPORTING OF DATA TO LUN1 FROM ;TABLES LOCATED IN THE ROOT SEGMENT, AND UPDATED IN THE AST SEGMENT ;SUCH INFORMATION WILL BE PRESENTED IN THREE MAIN SECTIONS: ; ;A. GENERAL INFORMATION: TOTAL TIME SAMPLED, TOTAL # OF SAMPLES [RPU8A] ; ;B. PARTITION AND POOL BREAKDOWN: AVAILABILTY OF CORE, POOL NODES [RPU8B] ; ;C. TASK BREAKDOWN: STATE STATUS OF VARYING TASKS [RPU8C] ; ;- .PAGE .SBTTL MAIN BUFFERS ; .MCALL CALL .MCALL RETURN .MCALL ALTP$ .MCALL OPEN$,CLOSE$,PUT$,QIOW$S ;YCT001 .LIST MEB ; ;+ ;GENERAL COMPUTATIONAL TEXT BUFFERS ;- Q.IOPL=14 ;PARAMETER OFFSET IN QIO DPB ; TG1:: .ASCII /00.00/ ;DOUBLE PRECISION % .BYTE 40,40,40 TG2:: .BYTE 15,12,12,12,12 ;LF BUFFER TG3:: .BYTE 0,0,0,0,0, ;TEMP BUFF .BYTE 40,40,40 TG4: .EVEN TA3: .ASCII "00/00/00 " ;DATE ;**NEW** TA3B: .ASCII "00:00:00:00" ;TIME ;**NEW** TA4: .EVEN ;**NEW** ;+ ;PARAMETERS FOR OUTPUT BUFFERS ;- CTLC==40 ;1LF,1CR CTLLC==60 ;2LF,1CR CTFC==61 ;1FF,1CR CTC==53 ;0LF,1CR CTL==44 ;1LF,0CR CT ==0 ;0LF,0CR TG1P:: .WORD TG1,0,CT ;DOUBLE PRECISION TG2P:: .WORD TG2,0,CT ;CR LF BUFFER TG3P:: .WORD TG3,0,CT ;TEMP BUFFER, NO CR/LF ;**NEW** TA3P: .WORD TA3,TA4-TA3,CT ;DATE AND TIME POINTER ;**NEW** DPALT: ALTP$ ,130. ;CHANGE PRIORITY ON OUTPUT OF REPORT ;YCT001 .PAGE .SBTTL MAINLINE REPORT CODE ;+ ;THIS MAIN SECTION OF CODE WILL DIRECT REPORTS SECTIONS A,B,C ;AS WELL AS CONTAIN THE MAJOR SUBROUTINES FOR EACH SEGMENT ;- REPORT:: ;DATA COLLECTION DONE. NOW OUTPUT ;REPORT ; MOV #DPQATT,-(SP) ;ATTACH OUTPUT LUN ;YCT001 ; EMT 377 ;YCT001 OPEN$ #FDBOUT ;OPEN FILE ;YCT001 BCS OPNERR ;YCT001 MOV #DPALT,-(SP) ;CHANGE TASK PRIORITY EMT 377 ; CALL RPA ;WRITE OUT SEGMENT A ; CALL RPB ;WRITE OUT SEGMENT B ;YCT001 CALL RPC ;WRITE OUT SEGMENT C ; MOV #DPQDET,-(SP) ;DETACH FROM LUN ;YCT001 ; EMT 377 ;YCT001 ; MOV #DPWT4,-(SP) ;WAIT FOR COMPLETE DETACH ;YCT001 ; EMT 377 ;YCT001 CLOSE$ #FDBOUT ;CLOSE OUTPUT FILE ;YCT001 JMP IEXIT ;EXIT SYSTEM OPNERR: ;YCT001 QIOW$S #IO.WVB,#5,#5,,,,<#OPNMSG,#OPNLEN,#40> JMP IEXIT OPNMSG: .ASCII /<...EV8>-- OPEN OUTPUT FILE ERROR/ .BYTE 012,015 OPNLEN=.-OPNMSG .EVEN .PAGE .SBTTL REPORT SUBROUTINES: WLINE ;+ ;THIS SUBROUTINE OUTPUTS A LINE OF REPORT OUTPUT TO LUN "A" ; ;IT FIRST DOES A WAIT FOR [FOR THE PREVIOUS LINE], THEN TAKES INPUT CONDITION: ; ;R5=PTR TO 3 WORD LINE PARAMETER BUFFER [BUF ADR, SIZE, CARRIAGE CONTROL] ; ;AND INSERTS IT INTO THE WRITE PARAMETERS OF THE WRITE LUN DPB, AND ; ;EXECUTES THE WRITE Q I/O ; ;EXIT CONDITIONS: R5 POINTING PAST THE 3 WORD LINE PARAMETERS ;[POSSIBLY AT THE NEXT LINE PARAMETERS] ;- WLINE:: ;WRITE OUT NEXT LINE MOV R4,-(SP) ;SAVE NEEDED REGISTERS ; MOV #DPQWTV+Q.IOPL,R4 ;SET UP DPB PTR ;YCT001 ; MOV (R5)+,(R4)+ ;TRANSFER PARAMETERS ;YCT001 ; MOV (R5)+,(R4)+ ;YCT001 ; MOV (R5)+,(R4)+ ;YCT001 ; MOV #DPQWTV,-(SP) ;OUTPUT LINE ;YCT001 ; EMT 377 ;YCT001 ; MOV #DPWT4,-(SP) ;WAIT FOR IT ;YCT001 ; EMT 377 ;YCT001 MOV R3,-(SP) MOV R0,-(SP) MOV (R5)+,R4 ;GET STARTING ADDRESS ;YCT001 MOV (R5)+,R3 ;GET SIZE ;YCT001 PUT$ #FDBOUT,R4,R3 ;OUTPUT ;YCT001 TST (R5)+ ;YCT001 MOV (SP)+,R0 MOV (SP)+,R3 ;RESTORE ;YCT001 MOV (SP)+,R4 ;RESTORE NEEDED REGISTERS RETURN .PAGE .SBTTL REPORT SUBROUTINES: WTIME ;+ ;THIS SUBROUTINE CONVERTS A TIME BUFFER TO ASCII FORMATTED OUTPUT ;[USING ASCII BUFFER TA3A AS STORAGE] ;AND OUTPUTS IT TO LUN "A" ; ;INPUT CONDITIONS: R4 POINTS TO "GET TIME" SYSTEM DIRECTIVE BUFFER ; ;OUTPUT CONDITIONS: LINE OUTPUTTED, R2,R3,R4 ALTERED ;- WTIME:: MOV R5,-(SP) ;SAVE CURRENT OUTPUT BUFF PTR ;USE AS 2 WORD ASCII POINTER MOV #TA3+6,R3 CALL DEC2DG ;INSERT "YEAR" MOV #TA3,R3 CALL DEC2DG ;INSERT "MONTH" CALL DEC2DG ;INSERT "DAY" ; MOV #TA3B,R3 ;SET UP FOR TIME MOV #4,R2 ;"HOURS, MIN, SEC, TICS" 10$: CALL DEC2DG SOB R2,10$ ; MOV #TA3P,R5 ;OUTPUT TIME LINE CALL WLINE MOV (SP)+,R5 ;RESTORE OUTPUT BUFF PTR RETURN .PAGE ;+ ;THIS IS A SUBROUTINES SUBROUTINE[FOR WTIME] ;IT TAKES A #, POINTED TO BY R4, AND CONVERTS TO 2 DECIMAL DIGITS ;[THE NUMBER IS ASSUMED<100], WHICH ARE CONVERTED TO ASCII, ;AND STORED[BYTE BY BYTE] IN THE BUFFER IN R3. ;R3 IS THEN BUMPED ONE BYTE FOR GOOD MEASURE[TO PASS"/"OR ":"OR.] ;R4 IS ALSO BUMPED ONE WORD DEC2DG: MOV R0,-(SP) ;SAVE DIVISION REGISTERS MOV R1,-(SP) MOV (R4)+,R1 ;SET UP FOR DP DIVIDE CLR R0 DIV #10.,R0 ;10'S DIGIT IS IN R0, 1'S DIGIT IN R1 ADD #60,R0 ;STORE 2 DIGITS MOVB R0,(R3)+ ADD #60,R1 MOVB R1,(R3)+ TSTB (R3)+ ;BUMP R3 FOR GOOD MEASURE MOV (SP)+,R1 ;RESTORE REGISTERS MOV (SP)+,R0 RETURN .PAGE .SBTTL REPORT SUBROUTINE: DECCN ;+ ;THIS SUBROUTINE CONVERTS A POSITIVE # INTO 5 DECIMAL DIGITS ;[RIGHT JUSTIFIED, WITH THE INCLUSION OF SPACES], AND PLACES IT IN ASCII ;FORMAT IN AN INTERNAL BUFFER[AT TG3]. ; ;INPUT: R4=POSITIVE ". R2, R3, AND R4 ARE ALTERED, R5 SET TO OUPUT BUFF ;- DECCN:: MOV #TG3,R3 ;INITIALIZE ASCII BUFFER MOV #4,R2 10$: MOVB #40,(R3)+ SOB R2,10$ MOVB #60,(R3)+ ;BUFFER HAS SP, SP, SP, SP, 0 CALL DECCNA ;DO CONVERSION MOV #TG4-TG3,TG3P+2 ;SET 5 DIGIT VALUE MOV #TG3P,R5 ;SET UP FOR OUTPUT RETURN .PAGE ;+ ;THIS IS A SUBROUTINE'S SUBROUTINE[FOR DECCN] ;IT IS ALSO RECURSIVE [HOORAY] AND A BRILLIANT PIECE OF CODE!! ; ;INPUT: R4=POSITIVE # TO BE CONVERTED[<32K] ; R3=ONE PAST END OF 5 DIGIT ASCII BUFFER CONSISTING OF SP,SP,SP,SP,0 ;- DECCNA: ;SAVE INITIAL REGISTERS MOV R0,-(SP) MOV R1,-(SP) MOV R4,R0 ;INITIALIZE CALL 100$ ;DO CONVERSION 20$: MOV (SP)+,R1 ;POP REGISTERS, EXIT MOV (SP)+,R0 RETURN 100$: ;CONVERT NEXT DIGIT MOV R0,R1 ;HIGHER ORDER TO ISOLATE? BEQ 10$ ;NO. START ASCII CONVERSION CLR R0 ;YES. CLEAN OUT UPPER ORDER DIV #10.,R0 ;GET LOW DIGIT IN R1, HIGH DIGIT IN R0 MOVB R1,-(R3) ;SAVE LOW DIGIT IN BUFFER CALL 100$ ;** RECURSIVE CALL ** 5$: ;AT THIS POINT ALL DIGITS HAVE BEEN ISOLATED. R3 POINTS TO FIRST DIGIT ;WHICH MUST BE CONVERTED TO ASCII. STACK HAS 1 "5$" PC FOR EACH SUCH DIGIT BISB #60,(R3)+ 10$: RETURN .PAGE ;+ ;THIS SUBROUTINE DIVIDES A POSITIVE # IN R2 BY A GREATER POSITIVE # IN R4 ;AND CONVERTS THE ANSWER INTO A FORMATED ASCII % OF THE FORM ;XX.XX IN TIME BUFFER "TG1" ; ;REGISTERS ALTERED: R2, R5[SET TO OUTPUT BUFFER CONTROL TG1] ;- PCCAL:: MOV R3,-(SP) ;SAVE INITIAL REGISTERS MOV R1,-(SP) MOV #TG1,R1 MOVB #'.,2(R1) ;SET UP DECIMAL POINT ;YCT001 CMP R2,R4 ;IS TOP>OR=BOTTOM[100%] BLT 10$ ; ;IF YES, MAKE IT 99.99 ; MOVB #'9,R2 ; ; ; MOVB R2,(R1)+ ; MOVB R2,(R1)+ ; TSTB (R1)+ ; MOVB R2,(R1)+ ; MOVB R2,(R1)+ ;IF YES, MAKE IT 100.0 ;YCT001 MOVB #'1,(R1)+ MOVB #'0,(R1)+ MOVB #'0,(R1)+ MOVB #'.,(R1)+ MOVB #'0,(R1)+ BR 70$ ;GO TO FINALE 10$: ;TOP