.TITLE TTYDUM ; ;PROGRAM TO DUMP CURRENT CONTENTS OF TTY LOGGING COMMON AREA TO THE ;FILE LB:[1,100]TTYDUM.DAT ; ;DUMP WILL BE IN TWO RECORDS: ; ;FIRST RECORD TO CONTAIN 8-WORD STANDARD GTIM$ BUFFER, ;FOLLOWED BY 40. (DECIMAL) WORDS OF RUN TIME ;2ND RECORD WILL BE 40. (DECIMAL) WORDS OF SWAP TIME, FOLLOWED BY ;40. (DECIMAL) WORDS OF WAIT TIME ; .MCALL GTIM$,DIR$,EXIT$S,MRKT$S,WTSE$S .MCALL FDBDF$,FDAT$A,FDRC$A,FDOP$A,FSRSZ$ .MCALL OPEN$A,PUT$,CLOSE$,FINIT$,NMBLK$ START: DIR$ #GETTIM ;GET THE TIME FINIT$ ;SET UP FOR IO 99$: OPEN$A #FDBOUT ;OPEN THE FILE FOR APPEND BCC 98$ ;BRANCH IF OK MRKT$S #5,#2,#10. ;ELSE WAIT 10 SECONDS WTSE$S #5 ;FOR SOMEONE TO CLOSE FILE BR 99$ ;AND TRY AGAIN 98$: MOV #BUF+20,R0 ;POINT TO INTERNAL BUFFER MOV #RUN,R1 ;POINT TO RUN TIME IN TTYCOM MOV #40.,R2 ;SET FOR LOOP 1$: MOV (R1)+,(R0)+ ;TRANSFER 40. WORDS SOB R2,1$ ;TO OUTPUT BUFFER MOV #120+20,R1 ;SET LENGTH IN R1 PUT$ #FDBOUT,,R1 ;WRITE FIRST LINE MOV #BUF,R0 ;POINT TO INTERNAL BUFFER AGAIN MOV #SWAP,R1 ;POINT TO SWAP TIME IN TTYCOM MOV #120,R2 ;SET FOR LOOP 2$: MOV (R1)+,(R0)+ ;TRANSFER 120 OCTAL WORDS SOB R2,2$ MOV #240,R1 ;SET LENGTH IN R1 PUT$ #FDBOUT,,R1 ;WRITE SECOND LINE CLOSE$ #FDBOUT ;CLOSE THE FILE EXIT$S .SBTTL BUFFER AREAS ; ;BUFFER FOR I/O ; BUF: .BLKW 120 ;MAX IS 120 WORDS ; ;GETTIM DPB ; GETTIM: GTIM$ BUF ;PUT TIME IN FIRST 8 WORDS OF BUF ; ; FILE I/O STUFF ; FSRSZ$ 1 FDBOUT: FDBDF$ ;DEFINE OUTPUT FDB FDAT$A R.VAR,FD.CR ;VARIABLE LENGTH, CARRIAGE CONTROL FDRC$A ,BUF,240 ;BUFFER POINTER, SIZE FDOP$A 4,DATNAM,,FO.APD ;OPEN OUTNAM ON LUN 4 DATNAM: .WORD DEVLEN,DEV .WORD UICLEN,UIC .WORD NAMLEN,NAME DEV: .ASCII /LB:/ DEVLEN=.-DEV UIC: .ASCII /[1,100]/ UICLEN=.-UIC NAME: .ASCII /TTYLOG.DAT/ NAMLEN=.-NAME .EVEN .END START