1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-17 00:33:22 +00:00
PDP-10.its/src/syseng/dmpcpy.11
Lars Brinkhoff af68014cfa Remove some duplicated files.
SYSENG;FDDEFS (already in SYSTEM), SYSENG;NETWRK (already in SYSNET),
and SYSTEM;DMPCPY (already in SYSENG).
2016-11-21 21:39:40 +01:00

154 lines
2.9 KiB
Plaintext
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

; -*- MIDAS -*-
TITLE DMPCPY - COPY DUMPS FROM SWAP AREA TO FILE AREA
A=1
B=2
C=3
D=4
E=5
T=6
TT=7
P=17
CHDIRI=10
CHDSKI=11
CHDSKO=12
.INSRT SYSTEM;FSDEFS >
PDL: -20,,.
BLOCK 20
;DIRECTORIES WHERE STUFF MIGHT GET DUMPED OUT OF TIMESHARING
DIRLST: SIXBIT/./
SIXBIT/CRASH/
SIXBIT/CRASH2/
NDIRS==.-DIRLST
DIR: BLOCK 2000
BUF: BLOCK 2000
USRVAR: SIXBIT /OPTION/ ? TLO %OPINT\%OPOPC
SIXBIT /MASK/ ? MOVE [%PIIOC\%PIPDL]
LUSRVAR==:.-USRVAR
GO: .CLOSE 1, ;RUNS AS DAEMON
MOVE P,PDL
MOVE TT,[-LUSRVAR,,USRVAR]
.CALL [ SETZ ? SIXBIT /USRVAR/
MOVEI %JSELF
SETZ TT ]
.LOSE %LSSYS
CHKTIM: .CALL [ SETZ ? SIXBIT /RQDATE/ ; don't frob with files
SETZM A ] ; if system doesn't know the time
.LOSE %LSSYS
AOJN A,KNOTIM
MOVEI A,30.*15. ; 15 seconds
.SLEEP A,
JRST CHKTIM
KNOTIM: MOVSI E,-NDIRS
CHKDIR: .CALL [ SETZ ? SIXBIT/OPEN/
[.BII,,CHDIRI]
[SIXBIT/DSK/]
[SIXBIT/.FILE./]
[SIXBIT/(DIR)/]
SETZ DIRLST(E)]
JRST NXTDIR ; Hey, there might not -be- such a directory!
MOVE TT,[-2000,,DIR]
.IOT CHDIRI,TT
.CLOSE CHDIRI,
MOVE D,UDNAMP+DIR
CHKFIL: CAIL D,2000
JRST NXTDIR
MOVE TT,UNRNDM+DIR(D)
SKIPGE UNDATE+DIR(D)
TLNE TT,UNDUMP\UNIGFL\UNREAP\UNLINK ; Don't screw with files
JRST NXTFIL ; you don't understand.
;HERE WE HAVE FOUND A FILE WRITTEN OUT OF TIMESHARING
;COPY IT SO AS TO (1) SET THE FILE DATE AND (2) GET IT OUT
; OF THE SWAPPING AREA. NTS FILES ARE WRITTEN IN THE SWAPPING
; AREA TO DECREASE THE PROBABILITY OF CLOBBERING SOME OTHER FILE.
.CALL [ SETZ ? SIXBIT/OPEN/
MOVES TT
[.BII,,CHDSKI]
[SIXBIT/DSK/]
UNFN1+DIR(D)
UNFN2+DIR(D)
SETZ DIRLST(E) ]
JSP T,[ CAIE TT,%ENSFL ; perhaps a hacker deleted it
CAIN TT,%ENAPK ; perhaps that pack had to go offline
JRST NXTFIL
JRST LOSE ]
.CALL [ SETZ ? SIXBIT/OPEN/
MOVES TT
[.BIO,,CHDSKO]
[SIXBIT/DSK/]
[SIXBIT/_DMPCP/]
[SIXBIT/OUTPUT/]
SETZ DIRLST(E) ]
JSP T,[ CAIE TT,%EFLDR
JRST LOSE
MOVEI TT,30.*60.*5 ; 5 minutes
.SLEEP TT,
JRST .-1 ]
CPYFIL: MOVE TT,[-2000,,BUF]
.IOT CHDSKI,TT
MOVEI T,-BUF(TT)
JUMPE T,ENDFIL
MOVNS T
MOVSS T
HRRI T,BUF
.IOT CHDSKO,T
JRST CPYFIL
ENDFIL: .CLOSE CHDSKI,
.CALL [ SETZ ? 'RENMWO
MOVEI CHDSKO
UNFN1+DIR(D)
SETZ UNFN2+DIR(D) ]
.LOSE %LSSYS
.CLOSE CHDSKO,
NXTFIL: ADDI D,LUNBLK
JRST CHKFIL
NXTDIR: AOBJN E,CHKDIR
.LOGOUT 1,
.VALUE
; JSP T,LOSE is like .LOSE %LSFIL(TT)
LOSE: .CALL [ SETZ ? SIXBIT /LOSE/
MOVEI %LSFIL(TT)
SETZI -2(T) ]
.LOSE %LSSYS
TSINT:
LOC 42
-LTSINT,,TSINT
LOC TSINT
P
%PIIOC ? 0 ? %PIIOC ? 0 ? IOCINT
LTSINT==:.-TSINT
; If there is a disk or directory full problem, wait for someone to notice.
IOCINT: PUSH P,T
.SUSET [.RBCHN,,T]
CAIE T,CHDSKO
.LOSE
.STATUS CHDSKO,T
LDB T,[330500,,T]
CAIE T,11 ; DEVICE FULL
CAIN T,14 ; DIRECTORY FULL
JRST WAIT
.VALUE
WAIT: MOVEI T,30.*60.*5 ; 5 minutes
.SLEEP T,
POP P,T
.CALL [ SETZ ? SIXBIT /DISMIS/
SETZ P ]
.LOSE %LSSYS
END GO