mirror of
https://github.com/PDP-10/its.git
synced 2026-04-02 12:19:14 +00:00
1462 lines
21 KiB
Plaintext
1462 lines
21 KiB
Plaintext
|
||
TITLE SALVATION
|
||
|
||
TS==0 ;NZ RUN IN TS FOR DEBUGGING
|
||
|
||
ZR=0
|
||
A=1
|
||
B=2
|
||
C=3
|
||
D=4
|
||
N=5
|
||
I=6
|
||
Q=7
|
||
H=10
|
||
TT=11
|
||
T=12
|
||
W=13
|
||
U=14
|
||
J=15
|
||
K=16
|
||
P=17
|
||
|
||
MEMSIZ=1000000
|
||
SA==100*2000
|
||
|
||
.INSRT MFSDFS >
|
||
.INSRT MDSK >
|
||
NUNITS==2
|
||
|
||
IFN TS,[
|
||
NUNITS==2
|
||
TYIC==1
|
||
TYOC==2
|
||
LPTC==3
|
||
QIN==4
|
||
]
|
||
DEFINE CONC A,B
|
||
A!B!TERMIN
|
||
|
||
DEFINE STRA C/
|
||
MOVE A,[440600,,[SIXBIT "C!!"]]
|
||
TERMIN
|
||
|
||
DEFINE TYP B/
|
||
PUSH P,A
|
||
STRA B
|
||
PUSHJ P,STYP
|
||
POP P,A
|
||
TERMIN
|
||
|
||
DEFINE LPR B/
|
||
PUSH P,A
|
||
STRA B
|
||
PUSHJ P,SLPT
|
||
POP P,A
|
||
TERMIN
|
||
|
||
ZZ=.
|
||
LOC 60
|
||
ICWA: .+2
|
||
0
|
||
0
|
||
XICWA: -4,,RXWDS
|
||
-174,,0 ;SKIP OVER REST OF SECTOR (OR WRITE GARBAGE ...)
|
||
0
|
||
LOC ZZ
|
||
|
||
IFE TS,[
|
||
LOC SA ;SO IT CAN BE LOADED WITH THE SYSTEM
|
||
JRST GOGO ;START WITH ALL DEFAULT OPTIONS
|
||
|
||
COPY: JSR INIT
|
||
PUSHJ P,CRR
|
||
TYP COPY BLOCK FROM UNIT #
|
||
PUSHJ P,NTYI
|
||
JRST COPY
|
||
CAIL A,NUNITS
|
||
JRST COPY
|
||
MOVEM A,FROM
|
||
MOVE I,A
|
||
PUSHJ P,RESET
|
||
CP1: PUSHJ P,CRR
|
||
TYP BLOCK #
|
||
PUSHJ P,OTYI
|
||
CAIL A,NBLKS+XBLKS
|
||
JRST CP1
|
||
MOVEM A,FMBLK'
|
||
CP2: PUSHJ P,CRR
|
||
TYP ONTO UNIT #
|
||
PUSHJ P,NTYI
|
||
JRST CP2
|
||
CAIL A,NUNITS
|
||
JRST CP2
|
||
MOVEM A,TOU
|
||
MOVE I,A
|
||
PUSHJ P,RESET
|
||
PUSHJ P,CRR
|
||
CP3: TYP BLOCK #
|
||
PUSHJ P,OTYI
|
||
CAIL A,NBLKS+XBLKS
|
||
JRST CP3
|
||
MOVEM A,TOBLK'
|
||
MOVEI A,TUT
|
||
MOVE J,FMBLK
|
||
MOVE I,FROM
|
||
PUSHJ P,READ
|
||
JUMPL T,CPERR
|
||
JUMPL TT,CPERR
|
||
MOVEI A,TUT
|
||
MOVE J,TOBLK
|
||
PUSHJ P,WRITT
|
||
JRST DDT
|
||
]
|
||
OTYI: CLEARB A,B
|
||
OTY1: ADD B,A
|
||
LSH B,3
|
||
PUSHJ P,NTYI
|
||
JRST .+2
|
||
JRST OTY1
|
||
LSH B,-3
|
||
MOVE A,B
|
||
POPJ P,
|
||
|
||
CPERR: TYP READ ERROR
|
||
PUSHJ P,CRR
|
||
JRST DDT
|
||
|
||
DUP1: PUSHJ P,CRR
|
||
PUSHJ P,STYP
|
||
PUSHJ P,NTYI
|
||
JRST DUP1
|
||
CAIL A,NUNITS
|
||
JRST DUP1
|
||
MOVE I,A
|
||
PUSHJ P,RESET
|
||
DUP2: MOVEM A,FROM
|
||
TO: PUSHJ P,CRR
|
||
TYP ONTO DRIVE #
|
||
PUSHJ P,NTYI
|
||
JRST TO
|
||
CAIL A,NUNITS
|
||
JRST TO
|
||
MOVE I,A
|
||
PUSHJ P,RESET
|
||
MOVEM A,TOU
|
||
PUSHJ P,CRR
|
||
POPJ P,
|
||
IFE TS,[
|
||
DUP: JSR INIT
|
||
STRA DUPLICATE DISK FROM DRIVE #
|
||
PUSHJ P,DUP1
|
||
MOVE I,FROM
|
||
DPB I,[DUNFLD CYLRIR]
|
||
MOVE I,TOU
|
||
DPB I,[DUNFLD CYLRIW]
|
||
MOVEI J,NCYLS+XCYLS-1
|
||
MOVEI A,CYLBUF
|
||
DLUP: MOVE I,FROM
|
||
PUSHJ P,READCY
|
||
MOVE I,TOU
|
||
PUSHJ P,WRITCY
|
||
SOJGE J,DLUP
|
||
JRST DDT
|
||
|
||
READCY: SKIPA T,[CYLRIR]
|
||
WRITCY: MOVEI T,CYLRIW
|
||
MOVEM T,DGO
|
||
DPB I,[DUNFLD (T)]
|
||
DPB J,[DCYL (T)]
|
||
MOVNI T,NCBLKS*2200
|
||
HRLM T,@ICWA
|
||
JRST RW0
|
||
CYLRIR: DREADC+ICWA
|
||
CYLRIW: DWRITC+ICWA
|
||
]
|
||
|
||
IFE TS,[
|
||
UCOP: JSR INIT
|
||
STRA COPY DIRS FROM DRIVE #
|
||
PUSHJ P,DUP1
|
||
MOVEI A,D0
|
||
MOVEI J,MFDBLK
|
||
PUSHJ P,READFN
|
||
PUSHJ P,WRITT
|
||
MOVEI Q,2000
|
||
UCOPL: SUBI Q,LMNBLK
|
||
CAMGE Q,D0+MDNAMP
|
||
JRST DDT
|
||
SKIPN B,D0(Q)
|
||
JRST UCOPL
|
||
MOVEI J,2*NUDSL-2000(Q)
|
||
LSH J,-1
|
||
MOVEI A,USRD
|
||
PUSHJ P,READFN
|
||
CAME B,USRD+UDNAME
|
||
JRST 4,.
|
||
PUSHJ P,WRITT
|
||
JRST UCOPL
|
||
]
|
||
|
||
READFN: SKIPA I,FROM
|
||
READT: MOVE I,TO
|
||
PUSHJ P,READ
|
||
JUMPL TT,[JRST 4,.]
|
||
JUMPL T,[JRST 4,.]
|
||
CPOPJ: POPJ P,
|
||
|
||
ZAP: JSR INIT
|
||
PUSHJ P,ZAP1
|
||
TYP INIT PACK ON DRIVE #
|
||
PUSHJ P,NTYI
|
||
JRST ZAP+1
|
||
CAIL A,NUNITS
|
||
JRST ZAP+1
|
||
PUSHJ P,CRR
|
||
MOVEM A,TOU
|
||
MOVE I,A
|
||
PUSHJ P,RESET
|
||
MOVE A,[WXWDS-1,,WXWDS]
|
||
BLT A,WXWDS+NXWDS-1
|
||
MOVSI J,-NBLKS-XBLKS ;INIT RETRIEVAL ON WHOLE DISK
|
||
MOVEI A,MFD
|
||
ZAPL: PUSHJ P,WRITE
|
||
JUMPL T,ZAPLUZ
|
||
AOBJN J,ZAPL
|
||
JRST ZAP2
|
||
ZAPLUZ: TYP LOSE
|
||
PUSHJ P,CRR
|
||
JRST DDT
|
||
|
||
ZAP1: MOVE A,[MFD,,MFD+1]
|
||
SETZM MFD
|
||
BLT A,MFD+1777
|
||
PUSHJ P,TUTINI
|
||
PUSHJ P,CRR
|
||
POPJ P,
|
||
|
||
ZAP2: TYP PACK ID =
|
||
PUSHJ P,6TYI
|
||
PUSHJ P,CRR
|
||
MOVEM B,TUT+QPKID
|
||
TYP PACK # =
|
||
PUSHJ P,OTYI
|
||
MOVEM A,TUT+QPKNUM
|
||
PUSHJ P,CRR
|
||
TYP SWAPPING ALLOC =
|
||
PUSHJ P,OTYI
|
||
PUSHJ P,CRR
|
||
MOVEM A,TUT+QSWAPA
|
||
MOVEI A,2000
|
||
MOVEM A,MFD+MDNAMP
|
||
MOVEI A,MFD
|
||
MOVEI J,MFDBLK
|
||
PUSHJ P,WRITT
|
||
MOVEI A,TUTLK
|
||
MOVE B,[440000+TUTBYT_6,,TUT]
|
||
MOVEI C,NUDSL
|
||
IDPB A,B
|
||
SOJG C,.-1
|
||
MOVE D,[-LSBTAB,,SBTAB] ;MARK OUT SPECIALLY RESERVED BLOCKS (MFD, TUT)
|
||
ZAP3: MOVE B,(D)
|
||
IDIVI B,36./TUTBYT
|
||
ADD B,QTTBL(C)
|
||
DPB A,B
|
||
AOBJN D,ZAP3
|
||
MOVE A,TUT+QSWAPA
|
||
CAIGE A,NUDSL
|
||
MOVEI A,NUDSL
|
||
IDIVI A,NCBLKS
|
||
IMULI A,NCBLKS
|
||
MOVEM A,TUT+QTUTP
|
||
MOVEI A,TUT
|
||
MOVEI J,TUTBLK
|
||
PUSHJ P,WRITT
|
||
JRST DDT
|
||
6TYI: MOVE C,[440600,,B]
|
||
MOVEI B,0
|
||
6TYL: PUSHJ P,TYI
|
||
SUBI A,40
|
||
JUMPLE A,CPOPJ
|
||
TLNE C,770000
|
||
IDPB A,C
|
||
JRST 6TYL
|
||
|
||
|
||
CONSTA
|
||
|
||
|
||
IFE TS,[
|
||
GOGO: SETOM GOGOX'
|
||
SKIPA
|
||
CHKR: SETZM GOGOX
|
||
JSR INIT
|
||
SETOM PRINTF
|
||
PUSHJ P,CRR
|
||
TYP SALVATION
|
||
MOVE A,[.FNAM2]
|
||
PUSHJ P,T6B
|
||
PUSHJ P,CRR
|
||
MOVEI A,NUNITS-1
|
||
INIUNT: SKIPN GOGOX
|
||
CLEARM QACT(A)
|
||
SKIPE GOGOX
|
||
SETOM QACT(A)
|
||
SOJGE A,INIUNT
|
||
SKIPE GOGOX
|
||
JRST CFIN1
|
||
CFIN11: TYP ACTIVE UNITS ARE:
|
||
CFIN2: PUSHJ P,NTYI
|
||
JRST CFIN1
|
||
CAIG A,NUNITS
|
||
SETOM QACT(A)
|
||
JRST CFIN2
|
||
|
||
CFIN1: PUSHJ P,CRR
|
||
MOVEI U,NUNITS-1
|
||
SKIPGE QACT(U)
|
||
PUSHJ P,DUINIT
|
||
SOJGE U,.-2
|
||
SKIPN GOGOX
|
||
JRST CFIN3
|
||
MOVEI A,0
|
||
JRST CFIN7
|
||
CFIN3: TYP USE MFD FROM UNIT:
|
||
PUSHJ P,NTYI
|
||
JRST CFIN8
|
||
CAIG A,NUNITS
|
||
SKIPL QACT(A)
|
||
JRST CFIN3
|
||
JRST CFIN7
|
||
|
||
CFIN8: MOVEI A,0
|
||
MOVEI U,NUNITS-1
|
||
CFIN5: SKIPL QACT(U)
|
||
JRST CFIN4
|
||
MOVE I,QMDRO(U)
|
||
MOVE B,MDNUM(I)
|
||
CAML A,B
|
||
JRST CFIN4
|
||
MOVE C,U
|
||
MOVE A,B
|
||
CFIN4: SOJGE U,CFIN5
|
||
MOVE A,C
|
||
ADDI A,"0
|
||
PUSHJ P,TYO
|
||
SKIPA U,C
|
||
CFIN7: MOVE U,A
|
||
MOVEM U,MDSK
|
||
MOVS A,QMDRO(U)
|
||
HRRI A,MFD
|
||
BLT A,MFD+2000-1
|
||
CLEARM GUDFMD ;GET USER DIRS FROM MASTER DISK
|
||
CLEARM PRINTF
|
||
CLEARM CKFLSW
|
||
SKIPN GOGOX
|
||
JRST CFIN10
|
||
SETOM GUDFMD
|
||
JRST CFIN9
|
||
CFIN10: SETZM UDPSW
|
||
PUSHJ P,CRR
|
||
TYP CHECK FILES FOR CLOBBERED BLOCKS?
|
||
PUSHJ P,TYI
|
||
CAIE A,"Y
|
||
JRST CFIN12
|
||
PUSHJ P,CRR
|
||
TYP UPDATE POINTERS?
|
||
PUSHJ P,TYI
|
||
CAIN A,"Y
|
||
SETOM UDPSW'
|
||
SETOM CKFLSW
|
||
CFIN12: PUSHJ P,CRR
|
||
TYP GET USR DIRS FROM MASTER DPC?
|
||
PUSHJ P,TYI
|
||
CAIN A,"Y
|
||
SETOM GUDFMD
|
||
PUSHJ P,CRR
|
||
TYP PRINT ALL DIRS?
|
||
PUSHJ P,TYI
|
||
CAIN A,"Y
|
||
SETOM PRINTF
|
||
CFIN9: MOVE A,[440700,,PBUF]
|
||
MOVEM A,PBUFP
|
||
CLEARM BNDFC ;BLOCK # DFRS CNT
|
||
CLEARM LOSTC
|
||
SKIPN GOGOX
|
||
JRST TUTF
|
||
JRST TUTF4
|
||
|
||
DUINIT: TYP UNIT #
|
||
MOVE A,U
|
||
PUSHJ P,DPT
|
||
PUSHJ P,TSPAC
|
||
MOVE I,U
|
||
PUSHJ P,RESET
|
||
MOVE A,QMDRO(U)
|
||
MOVE I,U
|
||
MOVEI J,MFDBLK
|
||
PUSHJ P,READ
|
||
JUMPL T,DUINI1
|
||
JUMPL TT,DUINI2
|
||
MOVE A,QTUTO(U)
|
||
MOVEI J,TUTBLK
|
||
PUSHJ P,READ
|
||
JUMPL T,DUINI3
|
||
JUMPL TT,DUINI4
|
||
TYP ID IS
|
||
MOVE I,QTUTO(U)
|
||
MOVE A,QPKID(I)
|
||
PUSHJ P,T6B
|
||
PUSHJ P,TSPAC
|
||
MOVE A,QPKNUM(I)
|
||
TYP DISK #
|
||
PUSHJ P,DPT
|
||
PUSHJ P,CRR
|
||
POPJ P,
|
||
|
||
DUINI1: TYP MFD PARITY ERRORS
|
||
PUSHJ P,CRR
|
||
JRST DDT
|
||
|
||
DUINI2: TYP MFD BLK # DFRS
|
||
PUSHJ P,CRR
|
||
JRST DDT
|
||
|
||
DUINI3: TYP TUT PARITY ERRORS
|
||
PUSHJ P,CRR
|
||
JRST DDT
|
||
|
||
DUINI4: TYP TUT BLK # DFRS
|
||
PUSHJ P,CRR
|
||
JRST DDT
|
||
|
||
|
||
|
||
TUTF1: CAIE A,"A
|
||
JRST TUTF
|
||
TUTF4: SETOM ALLDSK
|
||
CLEARB A,DRNO
|
||
TUTF3: SKIPGE QACT(A)
|
||
JRST TUTF2
|
||
AOS A,DRNO
|
||
CAIGE A,NUNITS
|
||
JRST TUTF3
|
||
JRST DDT
|
||
|
||
TUTF: CLEARM ALLDSK
|
||
PUSHJ P,CRR
|
||
TYP TUT FOR DRIVE # (A FOR ALL)
|
||
PUSHJ P,NTYI
|
||
JRST TUTF1
|
||
CAIGE A,NUNITS
|
||
SKIPL QACT(A)
|
||
JRST TUTF
|
||
TUTF2: CLEARM TBLKTD ;TOTAL USER BLOCKS THIS DISK (ALL USERS)
|
||
CLEARM TBLKAD ;TOTAL USER BLOCKS ALL DISKS ALL USERS
|
||
MOVEM A,TUTU
|
||
MOVE A,QTUTO(A)
|
||
MOVE A,QPKNUM(A)
|
||
MOVEM A,TUTI
|
||
PUSHJ P,LFORM
|
||
LPR TUT FOR DISK #
|
||
ADDI A,"0
|
||
PUSHJ P,LPTR
|
||
PUSHJ P,LCRR
|
||
PUSHJ P,CRR
|
||
PUSHJ P,TUTINI
|
||
MOVE Q,MFD+MDNAMP
|
||
ADDI Q,MFD
|
||
CLEARM USRCNT
|
||
MFDLUP: CAIL Q,MFD+2000
|
||
JRST MFDFIN
|
||
SKIPE A,MNUNAM(Q)
|
||
PUSHJ P,USRLUP
|
||
SKIPN LFILES
|
||
PUSHJ P,DELUSR
|
||
ADDI Q,LMNBLK
|
||
JRST MFDLUP
|
||
]
|
||
TUTINI: CLEARM TUT
|
||
MOVE A,[TUT,,TUT+1]
|
||
BLT A,TUT+1777
|
||
MOVEI A,TUTLK
|
||
MOVEI B,NUDSL
|
||
MOVE D,[440000+TUTBYT_6,,TUT]
|
||
TUTI1: IDPB A,D ;MARK OUT USER DIR AREA
|
||
SOJG B,TUTI1
|
||
MOVSI D,-LSBTAB
|
||
TUTI2: MOVE A,SBTAB(D)
|
||
IDIVI A,36./TUTBYT
|
||
ADD A,QTTBL(B)
|
||
MOVEI B,TUTLK
|
||
DPB B,A ;MARK OUT BLOCK
|
||
AOBJN D,TUTI2
|
||
POPJ P,
|
||
IFE TS,[
|
||
|
||
DELUSR: SKIPN MNUNAM(Q)
|
||
POPJ P,
|
||
SOS USRCNT
|
||
CLEARM MNUNAM(Q)
|
||
LPR NO FILES, USER DIRECTORY DELETED
|
||
JRST LCRR
|
||
|
||
USRLUP: MOVE K,[440700,,PBUF]
|
||
MOVEM K,PBUFP'
|
||
AOS USRCNT
|
||
PUSHJ P,LFORM
|
||
CLEARM UFDLOS
|
||
CLEARM LFILES
|
||
CLEARM LBLOCKS
|
||
CLEARM TLBLOCKS
|
||
PUSH P,Q
|
||
LPR USER:
|
||
PUSHJ P,LTAB
|
||
MOVEM A,USRNAM'
|
||
PUSHJ P,SIXLPT
|
||
PUSHJ P,LTAB
|
||
LPR BLOCK:
|
||
PUSHJ P,LTAB
|
||
MOVE J,Q
|
||
SUBI J,MFD
|
||
SUBI J,2000-LMNBLK*NUDSL
|
||
IDIVI J,LMNBLK
|
||
MOVE A,J
|
||
MOVEM A,DBLK ;SAVE DIRECTORY BLOCK
|
||
PUSHJ P,LOCT
|
||
PUSHJ P,LCRR
|
||
PUSHJ P,LCRR
|
||
MOVEI A,USRD
|
||
MOVE I,TUTU
|
||
SKIPGE GUDFMD
|
||
MOVE I,MDSK ;USE UFDS FROM MASTER DISK
|
||
TCHK4: PUSHJ P,READ
|
||
JUMPL T,TCHK2
|
||
TCHK6: JUMPL TT,TCHK3
|
||
TCHK8: MOVE Q,USRD+UDNAME
|
||
CAME Q,USRNAM
|
||
JRST TCHK5
|
||
TCHK1: MOVE Q,[USRD,,DUSRD]
|
||
BLT Q,DUSRD+1777 ;DUPLICATE USER DIRECTORY
|
||
MOVEI Q,2000-5+USRD
|
||
MOVEI J,USRD
|
||
ADD J,UDNAMP(J)
|
||
PUSH P,J
|
||
|
||
DIRL1: CAMGE Q,J
|
||
JRST USRFIN
|
||
PUSH P,Q
|
||
SKIPE A,UNFN1(Q)
|
||
JRST .+3
|
||
SKIPN UNFN2(Q)
|
||
JRST DIRLUP
|
||
AOS LFILES
|
||
PUSHJ P,LTAB
|
||
PUSHJ P,SIXLPT
|
||
PUSHJ P,LSPAC
|
||
MOVE A,UNFN2(Q)
|
||
PUSHJ P,SIXLPT
|
||
PUSHJ P,LSPAC
|
||
LDB C,[UNPKN UNRNDM(Q)]
|
||
LPR DIR CHAR ADR:
|
||
PUSHJ P,LTAB
|
||
LDB A,[UNDSCP UNRNDM(Q)]
|
||
PUSHJ P,LOCT
|
||
CAML A,USRD
|
||
JRST BADA1
|
||
IDIVI A,6
|
||
ADDI A,USRD+UDDESC
|
||
HLL A,QBTBLI(B)
|
||
TLNE A,400000
|
||
SUB A,[440000,,1]
|
||
MOVEI ZR,0
|
||
LDB B,A
|
||
JUMPE B,BADA4
|
||
LPR ******* FILE NOT PRECEEDED BY ZERO ******
|
||
BADA4: MOVE N,A
|
||
MOVEI J,0
|
||
ILDB B,A
|
||
JUMPE B,BADA2
|
||
BADA3: MOVE TT,UNRNDM(Q)
|
||
TLNE TT,UNLINK
|
||
JRST LINK1
|
||
CAME C,TUTI
|
||
JRST OTLUP ;ON OTHER DISK
|
||
SETZM LSTBLK'
|
||
TRLUP: MOVE TT,N
|
||
ADDI TT,DUSRD-USRD
|
||
IDPB ZR,TT
|
||
ILDB B,N
|
||
PUSHJ P,LCRR
|
||
PUSHJ P,LTAB
|
||
PUSHJ P,LTAB
|
||
MOVE A,B
|
||
PUSHJ P,LOCT
|
||
JUMPE B,LINK
|
||
CAIN B,UDWPH
|
||
JRST TRLUP
|
||
CAIL B,UDWPH
|
||
JRST LOAD
|
||
CAILE B,UDTKMX
|
||
JRST SKIPF
|
||
|
||
TLUP: AOS Q
|
||
TLUP1: MOVE A,Q
|
||
PUSHJ P,LSPAC
|
||
PUSHJ P,LOCT
|
||
SKIPGE CKFLSW
|
||
JRST CKFL1
|
||
CKFL2: MOVEM A,LSTBLK
|
||
ILDB C,J
|
||
SKIPE C
|
||
JRST LOST
|
||
LOSTR: CAIGE C,TUTLK-1
|
||
AOS C
|
||
DPB C,J
|
||
AOS LBLOCKS
|
||
SOJG B,TLUP
|
||
JRST TRLUP
|
||
BADA1: LPR ******* BAD CHR ADR *******
|
||
JRST LINK
|
||
|
||
BADA2: LPR ******** POINTS TO 0 *********
|
||
JRST BADA3
|
||
|
||
CKFL1: PUSH P,J
|
||
PUSH P,Q
|
||
PUSH P,B
|
||
PUSH P,ZR
|
||
PUSH P,N
|
||
MOVE I,TUTU
|
||
MOVE J,A
|
||
MOVEI A,FDBUF
|
||
PUSHJ P,READ
|
||
JUMPL T,CHKFL4
|
||
CHKFL5: JUMPGE TT,CKFL3
|
||
LPR *** BLK # DFRS ****
|
||
AOS BNDFC
|
||
SETOM UFDLOS
|
||
CKFL3: MOVE A,RXWDS+XWSYSN
|
||
CAME A,USRNAM
|
||
JRST CKFL4
|
||
CKFL5: LDB A,[XWBLK RXWDS]
|
||
CAME A,LSTBLK
|
||
JRST CKFL6
|
||
CKFL7: SKIPL UDPSW
|
||
JRST CKFL8
|
||
SETZM WXWDS
|
||
LDB A,[XWAWC RXWDS]
|
||
DPB A,[XWAWC WXWDS]
|
||
MOVE A,LSTBLK
|
||
DPB A,[XWBLK WXWDS]
|
||
MOVE A,USRNAM
|
||
MOVEM A,WXWDS+XWSYSN
|
||
MOVE Q,-5(P) ;FILE NAME BLOCK IN UFD
|
||
MOVE A,UNFN1(Q)
|
||
MOVEM A,WXWDS+XWFN1
|
||
MOVE A,UNFN2(Q)
|
||
MOVEM A,WXWDS+XWFN2
|
||
MOVEI A,FDBUF
|
||
PUSHJ P,WRITE
|
||
MOVE A,[WXWDS-1,,WXWDS]
|
||
BLT A,WXWDS+NXWDS-1
|
||
CKFL8: POP P,N
|
||
POP P,ZR
|
||
POP P,B
|
||
POP P,Q
|
||
POP P,J
|
||
JRST CKFL2
|
||
|
||
CHKFL4: LPR *** BAD BLOCK PARITY ***
|
||
JRST CHKFL5
|
||
|
||
CKFL4: LPR *** USER NAME DIFFERS ***
|
||
SETOM UFDLOS
|
||
JRST CKFL5
|
||
|
||
CKFL6: LPR *** CHAIN POINTER DIFFERS ***
|
||
SETOM UFDLOS
|
||
JRST CKFL7
|
||
|
||
|
||
TCHK2: PUSH P,TT
|
||
TYP USER DIR PARITY ERROR
|
||
PUSHJ P,CRR
|
||
MOVE A,USRNAM
|
||
PUSHJ P,T6B
|
||
PUSHJ P,TSPAC
|
||
TYP PROCEED?
|
||
PUSHJ P,TYI
|
||
POP P,TT
|
||
CAIN A,"Y
|
||
JRST TCHK6
|
||
PUSHJ P,CRR
|
||
TCHK7: TYP TRY UFD FROM UNIT #
|
||
PUSHJ P,NTYI
|
||
JRST DDT
|
||
PUSHJ P,CRR
|
||
CAIL A,NUNITS
|
||
JRST TCHK7
|
||
SKIPL QACT(A)
|
||
JRST TCHK7
|
||
MOVE I,A
|
||
MOVEI A,USRD
|
||
JRST TCHK4
|
||
|
||
TCHK3: TYP USER DIR BLK # DFRS
|
||
PUSHJ P,CRR
|
||
MOVE A,USRNAM
|
||
PUSHJ P,T6B
|
||
PUSHJ P,TSPAC
|
||
TYP PROCEED?
|
||
PUSHJ P,TYI
|
||
PUSHJ P,CRR
|
||
CAIN A,"Y
|
||
JRST TCHK8
|
||
JRST TCHK7
|
||
|
||
TCHK5: TYP USER NAME IN DIR DIFFERS
|
||
PUSHJ P,CRR
|
||
MOVE A,USRNAM
|
||
PUSHJ P,T6B
|
||
PUSHJ P,TSPAC
|
||
MOVE A,Q
|
||
PUSHJ P,T6B
|
||
PUSHJ P,CRR
|
||
TYP PROCEED?
|
||
PUSHJ P,TYI
|
||
PUSHJ P,CRR
|
||
CAIN A,"Y
|
||
JRST TCHK1
|
||
JRST TCHK7
|
||
|
||
|
||
LINK1: PUSHJ P,LSPAC
|
||
LPR LINK
|
||
;FOLLOWED BY SPACE
|
||
MOVE TT,N
|
||
ADDI TT,2000
|
||
PUSHJ P,LTYPE
|
||
PUSHJ P,LTYPE
|
||
PUSHJ P,LTYPE
|
||
ILDB B,N
|
||
JUMPE B,LINK
|
||
LPR *** NOT FOLLOWED BY 0 ***
|
||
JRST LINK
|
||
|
||
LTYPE: MOVEI C,6
|
||
LTYPE2: IDPB ZR,TT
|
||
ILDB A,N
|
||
ADDI A,40
|
||
CAIN A,":
|
||
JRST LTYPE4
|
||
CAIN A,";
|
||
JRST LTYPE1
|
||
LTYPE3: PUSHJ P,LPTR
|
||
SOJG C,LTYPE2
|
||
LTYPE1: JRST LSPAC
|
||
|
||
LTYPE4: ILDB A,N
|
||
IDPB ZR,TT
|
||
JRST LTYPE3
|
||
|
||
LOAD: MOVEI J,-UDWPH-1(B)
|
||
MOVEI K,NXLBYT
|
||
LOAD1: MOVE TT,N
|
||
ADDI TT,DUSRD-USRD
|
||
IDPB ZR,TT
|
||
ILDB B,N
|
||
PUSHJ P,LSPAC
|
||
MOVE A,B
|
||
PUSHJ P,LOCT
|
||
LSH J,6
|
||
ADD J,B
|
||
SOJG K,LOAD1
|
||
MOVE Q,J
|
||
IDIVI J,36./TUTBYT
|
||
ADD J,QTTBLI(K)
|
||
MOVEI B,1
|
||
JRST TLUP1
|
||
|
||
OTLUP: ILDB B,N
|
||
MOVE TT,N
|
||
ADDI TT,DUSRD-USRD
|
||
DPB ZR,TT
|
||
JUMPE B,LINK
|
||
CAIN B,UDWPH
|
||
JRST OTLUP
|
||
CAILE B,UDTKMX
|
||
JRST OTLUP1
|
||
ADDM B,TLBLOCKS
|
||
JRST OTLUP
|
||
OTLUP1: AOS TLBLOCKS
|
||
CAIG B,UDWPH
|
||
JRST OTLUP
|
||
MOVEI K,NXLBYT
|
||
OTLUP2: ILDB B,N
|
||
MOVE TT,N
|
||
ADDI TT,DUSRD-USRD
|
||
DPB ZR,TT
|
||
SOJG K,OTLUP2
|
||
JRST OTLUP
|
||
|
||
SKIPF: SUBI B,UDTKMX
|
||
IBP J
|
||
AOS Q
|
||
SOJG B,.-2
|
||
MOVEI B,1
|
||
JRST TLUP
|
||
|
||
LINK: PUSHJ P,LCRR
|
||
DIRLUP: POP P,Q
|
||
MOVE J,(P)
|
||
SUBI Q,LUNBLK
|
||
JRST DIRL1
|
||
|
||
USRFIN: CLEARM GARBF
|
||
CLEARB ZR,J
|
||
MOVE Q,[440600,,DUSRD+UDDESC]
|
||
GARB2: CAML J,USRD
|
||
JRST USRFN2
|
||
GARB4: ILDB B,Q
|
||
JUMPN B,GARB1
|
||
GARB3: AOJA J,GARB2
|
||
|
||
USRFN2: TLNE Q,770000
|
||
JRST GARB4
|
||
MOVEI Q,-DUSRD+1(Q)
|
||
GARB6: CAML Q,DUSRD+1
|
||
JRST GARB5
|
||
SKIPN DUSRD(Q)
|
||
AOJA Q,GARB6
|
||
LPR ******** GARBAGE IN FREE AREA ********
|
||
MOVE A,Q
|
||
PUSHJ P,LOCT
|
||
PUSHJ P,LSPAC
|
||
MOVE A,DUSRD(Q)
|
||
ANDCAM A,USRD(Q)
|
||
PUSHJ P,LOCT
|
||
PUSHJ P,LCRR
|
||
CLEARM DUSRD(Q)
|
||
SETOM GARBF
|
||
AOJA Q,GARB6
|
||
|
||
GARB5: SKIPL UFDLOS
|
||
JRST URFN2
|
||
LPR ******* THIS DIRECTORY WAS A LOSER ********
|
||
URFN2: SKIPN GARBF
|
||
JRST USRFN4
|
||
LPR ******* EXTRA GARBAGE IN UFD *******
|
||
PUSHJ P,LCRR
|
||
USRFN4: LPR USER FILES
|
||
PUSHJ P,LSPAC
|
||
MOVE A,LFILES
|
||
PUSHJ P,LOCT
|
||
PUSHJ P,LSPAC
|
||
LPR USER BLOCKS THIS DISK
|
||
PUSHJ P,LSPAC
|
||
MOVE A,LBLOCKS
|
||
ADDM A,TBLKTD
|
||
PUSHJ P,LOCT
|
||
PUSHJ P,LSPAC
|
||
LPR TOTAL ALL DISKS
|
||
PUSHJ P,LSPAC
|
||
MOVE A,LBLOCKS
|
||
ADD A,TLBLOCKS
|
||
ADDM A,TBLKAD
|
||
PUSHJ P,LOCT
|
||
PUSHJ P,LCRR
|
||
SKIPGE UFDLOS
|
||
JRST USRFN6
|
||
SKIPN GARBF
|
||
JRST USRFN3
|
||
USRFN6: TYP BAD:
|
||
MOVE A,USRNAM
|
||
PUSHJ P,T6B
|
||
PUSHJ P,TSPAC
|
||
MOVE A,DBLK
|
||
PUSHJ P,DPT
|
||
PUSHJ P,CRR
|
||
SKIPN PRINTF'
|
||
JRST PDIR
|
||
USRFN5: TYP DIR REFRESHED
|
||
PUSHJ P,CRR
|
||
TYP WRITE?
|
||
PUSHJ P,TYI
|
||
PUSHJ P,CRR
|
||
CAIE A,"Y
|
||
JRST USRFN3
|
||
USRFN7: MOVEI A,USRD
|
||
MOVE I,TUTU
|
||
SKIPGE GUDFMD
|
||
MOVE I,MDSK ;UFD CAME FROM MDSK
|
||
MOVE J,DBLK
|
||
PUSHJ P,WRITE ;WRITE BACK UFD
|
||
USRFN3: POP P,J
|
||
POP P,Q
|
||
POPJ P,
|
||
|
||
PDIR: MOVE B,[440700,,PBUF]
|
||
PDIR1: ILDB A,B
|
||
PUSHJ P,LPTR1
|
||
CAMN B,PBUFP
|
||
JRST USRFN5
|
||
JRST PDIR1
|
||
|
||
GARB1: SETOM GARBF
|
||
LPR CHAR ADR
|
||
PUSHJ P,LSPAC
|
||
MOVE A,J
|
||
PUSHJ P,LOCT
|
||
PUSHJ P,LTAB
|
||
MOVE A,B
|
||
PUSHJ P,LOCT
|
||
PUSHJ P,LCRR
|
||
MOVE TT,Q
|
||
SUBI TT,DUSRD-USRD
|
||
DPB ZR,TT
|
||
JRST GARB3
|
||
|
||
MFDFIN: MOVNI A,1
|
||
EXCH A,PRINTF
|
||
MOVEM A,OPNTF'
|
||
PUSHJ P,LFORM
|
||
LPR Y FILE COUNT
|
||
MOVE A,LOSTC
|
||
PUSHJ P,LOCT
|
||
PUSHJ P,LTAB
|
||
LPR BLK # DFRS COUNT
|
||
MOVE A,BNDFC
|
||
PUSHJ P,LOCT
|
||
PUSHJ P,LTAB
|
||
LPR USER COUNT
|
||
MOVE A,USRCNT
|
||
PUSHJ P,LOCT
|
||
PUSHJ P,LCRR
|
||
MOVEI TT,0 ;CHECK NEW TUT AGAINST OLD AND PRINT DIFFERENCES
|
||
MOVE Q,QTTBLI
|
||
MOVE J,Q
|
||
SUBI J,TUT
|
||
MOVE B,TUTU
|
||
ADD J,QTUTO(B)
|
||
CLEARM 1T0C
|
||
;DROPS THRU
|
||
;DROPS IN
|
||
TUTC1: ILDB C,Q
|
||
ILDB D,J
|
||
CAME C,D
|
||
JRST TUTDF1
|
||
TUTC2: CAIGE TT,NBLKS-1
|
||
AOJA TT,TUTC1
|
||
SKIPN 1T0C
|
||
JRST TUTC4
|
||
LPR 1_0 COUNT
|
||
MOVE A,1T0C
|
||
PUSHJ P,LDPT
|
||
PUSHJ P,LCRR
|
||
TUTC4: LPR TOTAL USER BLOCKS THIS DISK
|
||
MOVE A,TBLKTD
|
||
PUSHJ P,LDPT
|
||
PUSHJ P,LCRR
|
||
LPR TOTAL USER BLOCKS ALL DISKS
|
||
MOVE A,TBLKAD
|
||
PUSHJ P,LDPT
|
||
PUSHJ P,LFORM
|
||
PUSHJ P,LCRR
|
||
PUSHJ P,CRR
|
||
TYP DISK REFRESHED
|
||
MOVE J,TUTU
|
||
MOVE Q,QTUTO(J)
|
||
IRP AA,,[QTUTP,QPKNUM,QPKID,QSWAPA]
|
||
MOVE A,AA(Q)
|
||
MOVEM A,TUT+AA
|
||
TERMIN
|
||
PUSHJ P,CRR
|
||
TYP WRITE?
|
||
PUSHJ P,TYI
|
||
CAIE A,"Y
|
||
JRST TUTC3
|
||
MOVEI A,TUT
|
||
MOVEI J,TUTBLK
|
||
MOVE I,TUTU
|
||
PUSHJ P,WRITE
|
||
MOVEI A,MFD
|
||
MOVEI J,MFDBLK
|
||
PUSHJ P,WRITE
|
||
TUTC3: SKIPL ALLDSK
|
||
JRST DDT
|
||
MOVE A,OPNTF
|
||
MOVEM A,PRINTF
|
||
AOS A,DRNO
|
||
JRST TUTF3
|
||
|
||
LOST: AOS LOSTC
|
||
LPR *****
|
||
SETOM UFDLOS
|
||
JRST LOSTR
|
||
|
||
|
||
TUTDF1: CAIN D,1
|
||
JUMPE C,TUTDF2 ;1_0
|
||
MOVE A,TT
|
||
PUSHJ P,LOCT
|
||
PUSHJ P,LSPAC
|
||
MOVE A,D
|
||
PUSHJ P,LOCT
|
||
MOVEI A,"_
|
||
PUSHJ P,LPTR
|
||
MOVE A,C
|
||
PUSHJ P,LOCT
|
||
PUSHJ P,LCRR
|
||
JRST TUTC2
|
||
|
||
TUTDF2: AOS 1T0C
|
||
JRST TUTC2
|
||
|
||
LOCT: PUSH P,A
|
||
PUSH P,B
|
||
LSHC A,-35.
|
||
LSH B,-1
|
||
DIVI A,8
|
||
PUSH P,B
|
||
SKIPE A
|
||
PUSHJ P,LOCT
|
||
POP P,A
|
||
ADDI A,"0
|
||
PUSHJ P,LPTR
|
||
POPBAJ: POP P,B
|
||
POP P,A
|
||
POPJ P,
|
||
]
|
||
INIT: 0
|
||
CONO 675550
|
||
CONO PI,710000
|
||
MOVEI P,PDL
|
||
IFN TS,[
|
||
.OPEN TYIC,[SIXBIT / $TTY/]
|
||
.VALUE
|
||
.OPEN TYOC,[SIXBIT / !TTY/]
|
||
.VALUE
|
||
SETZM LPTO'
|
||
.CORE <THEEND-1>_-10.+1
|
||
.VALUE
|
||
] JRST @INIT
|
||
|
||
LDPT: IDIVI A,10.
|
||
HRLM B,(P)
|
||
SKIPE A
|
||
PUSHJ P,LDPT
|
||
HLRZ A,(P)
|
||
ADDI A,"0
|
||
;DROPS IN
|
||
LPTR: SKIPN PRINTF'
|
||
JRST STORE
|
||
LPTR1: CAIN A,12
|
||
POPJ P,
|
||
JRST TYLPT
|
||
IFN TS,[
|
||
SKIPE LPTO
|
||
JRST LPTR2
|
||
.OPEN LPTC,[SIXBIT / !LPT/]
|
||
POPJ P,
|
||
SETOM LPTO
|
||
LPTR2: .IOT LPTC,A
|
||
CAIN A,15
|
||
.IOT LPTC,[12]
|
||
] POPJ P,
|
||
|
||
TYLPT: CAIN A,14
|
||
POPJ P,
|
||
PUSHJ P,TYO
|
||
CAIE A,15
|
||
POPJ P,
|
||
PUSH P,A
|
||
MOVEI A,12
|
||
PUSHJ P,TYO
|
||
JRST POPAJ
|
||
|
||
STORE: IDPB A,PBUFP'
|
||
POPJ P,
|
||
|
||
T6B: PUSH P,B
|
||
PUSH P,C
|
||
MOVE C,A
|
||
MOVE B,[440600,,C]
|
||
T6B1: ILDB A,B
|
||
JUMPE A,T6B2
|
||
ADDI A,40
|
||
PUSHJ P,TYO
|
||
TLNE B,770000
|
||
JRST T6B1
|
||
T6B2: MOVE A,C
|
||
POP P,C
|
||
POPBJ: POP P,B
|
||
POPJ P,
|
||
|
||
SIXLPT: PUSH P,B
|
||
PUSH P,C
|
||
MOVE C,A
|
||
MOVE B,[440600,,C]
|
||
SLX1: ILDB A,B
|
||
PUSHJ P,LPTRS
|
||
TLNE B,770000
|
||
JRST SLX1
|
||
MOVE A,C
|
||
POP P,C
|
||
POP P,B
|
||
POPJ P,
|
||
|
||
LPTRS: ADDI A,40
|
||
JRST LPTR
|
||
|
||
STYP: PUSH P,B
|
||
MOVE B,A
|
||
ST1: ILDB A,B
|
||
CAIN A,'!
|
||
JRST POPBJ
|
||
ADDI A,40
|
||
PUSHJ P,TYO
|
||
JRST ST1
|
||
|
||
SLPT: PUSH P,B
|
||
MOVE B,A
|
||
SL1: ILDB A,B
|
||
CAIN A,'!
|
||
JRST POPBJ
|
||
PUSHJ P,LPTRS
|
||
JRST SL1
|
||
|
||
LTAB: PUSH P,A
|
||
MOVEI A,11
|
||
JRST LCR1
|
||
|
||
LCRR: SETOM LFRMSW'
|
||
PUSH P,A
|
||
MOVEI A,15
|
||
LCR1: PUSHJ P,LPTR
|
||
POPAJ: POP P,A
|
||
POPJ P,
|
||
|
||
LSPAC: PUSH P,A
|
||
MOVEI A,40
|
||
L1: PUSHJ P,LPTR
|
||
POP P,A
|
||
POPJ P,
|
||
|
||
LFORM: AOSE LFRMSW
|
||
POPJ P,
|
||
PUSH P,A
|
||
MOVEI A,14
|
||
JRST LCR1
|
||
DPT: PUSH P,A
|
||
PUSH P,B
|
||
IDIVI A,8
|
||
PUSH P,B
|
||
SKIPE A
|
||
PUSHJ P,DPT
|
||
POP P,A
|
||
ADDI A,"0
|
||
PUSHJ P,TYO
|
||
JRST POPBAJ
|
||
|
||
CRR: PUSH P,A
|
||
PUSHJ P,CRR1
|
||
POP P,A
|
||
POPJ P,
|
||
|
||
DDT: TYP DDT
|
||
IFE TS, JRST MEMSIZ-4000
|
||
IFN TS, .VALUE 69
|
||
|
||
CRR1: MOVEI A,15
|
||
PUSHJ P,TYO
|
||
SKIPA A,[12]
|
||
TSPAC: MOVEI A,40
|
||
TYO: IFE TS,[
|
||
PUSH P,B
|
||
PUSH P,A
|
||
IMULI A,200401
|
||
AND A,[11111111]
|
||
MUL A,[11111111]
|
||
POP P,A
|
||
TLNE B,10
|
||
TRO A,200
|
||
POP P,B
|
||
CONSZ TTY,20
|
||
JRST .-1
|
||
DATAO TTY,A
|
||
TRZ A,200
|
||
CAIE A,11
|
||
JRST .+4
|
||
CONSZ TTY,20
|
||
JRST .-1
|
||
DATAO TTY,[177]
|
||
]IFN TS, .IOT TYOC,A
|
||
POPJ P,
|
||
|
||
NTYI: PUSHJ P,TYI
|
||
CAIL A,"0
|
||
CAILE A,"9
|
||
POPJ P,
|
||
SUBI A,"0
|
||
POPJ1: AOS (P)
|
||
POPJ P,
|
||
IFN TS,[
|
||
TYI: .IOT TYIC,A
|
||
JRST TYO
|
||
|
||
READ: MOVEM J,63
|
||
SETZB T,TT
|
||
POPJ P,
|
||
|
||
WRITT: MOVE I,TOU
|
||
WRITE: POPJ P,
|
||
]IFE TS,[
|
||
TYI: CONSO TTY,40
|
||
JRST .-1
|
||
DATAI TTY,A
|
||
ANDI A,177
|
||
CAIN A,32
|
||
JRST CRDDT
|
||
CAILE A,140
|
||
SUBI A,40
|
||
JRST TYO
|
||
|
||
RESET: CONSZ DPC,BUSY
|
||
JRST .-1
|
||
DATAO DPC,[DEASEC 776] ;CLEAR ALL ATTNS
|
||
DPB I,[DUNFLD DRST]
|
||
DATAO DPC,DRST
|
||
DATAI DPC,T
|
||
TRNN T,776
|
||
JRST .-2
|
||
DATAO DPC,[DEASEC 776]
|
||
POPJ P,
|
||
|
||
|
||
DRST: DRCALC
|
||
|
||
|
||
SEEK: MOVEI TT,10.
|
||
MOVEM TT,SEEKC'
|
||
SEEK1: CONSZ DPC,BUSY
|
||
JRST .-1
|
||
DATAO DPC,[DEASEC 776]
|
||
MOVE TT,@DGO
|
||
TLZ TT,700000
|
||
TLO TT,(DSEEKC)
|
||
DATAO 4,TT
|
||
DATAO DPC,TT
|
||
DATAI DPC,TT
|
||
TRNN TT,776
|
||
JRST .-2
|
||
DATAO DPC,[DEASEC 776]
|
||
TLNE TT,(ONCYL)
|
||
POPJ P,
|
||
SOSL TT,SEEKC
|
||
JRST SEEK2
|
||
POP P,(P)
|
||
POPJ P,
|
||
|
||
SEEK2: PUSH P,I
|
||
PUSH P,T
|
||
LDB I,[DUNFLD @DGO]
|
||
PUSHJ P,RESET
|
||
POP P,T
|
||
POP P,I
|
||
JRST SEEK1
|
||
|
||
WRITT: MOVE I,TOU
|
||
WRITE: SKIPA T,[DWR]
|
||
READ: MOVEI T,DRD
|
||
HRRM T,DGO
|
||
MOVEI TT,RXWDS
|
||
CAIE T,DRD
|
||
MOVEI TT,WXWDS
|
||
HRRM TT,XICWA ;EXTRA WDS
|
||
DPB I,[DUNFLD (T)]
|
||
MOVNI TT,2000
|
||
HRLM TT,@ICWA
|
||
HRRZ TT,J
|
||
CAIL TT,NBLKS+XBLKS
|
||
JRST 4,.
|
||
IDIVI TT,NCBLKS ;FORMS CYL - BLOCK WITHIN CYL
|
||
DPB TT,[DCYL @DGO]
|
||
MOVE TT,T
|
||
IMULI TT,NSSECS
|
||
IDIVI TT,NHSECS ;FORMS HEAD - SECTOR
|
||
DPB TT,[DSURF @DGO]
|
||
DPB T,[DSECT @DGO]
|
||
RW0: SUBI A,1
|
||
HRRM A,@ICWA
|
||
ADDI A,1
|
||
SETZM ICWA+1
|
||
PUSHJ P,SEEK
|
||
RW1: MOVEI T,30.
|
||
RW2: CONO DPC,DCLEAR
|
||
DATAO PI,@DGO ;FLASH LITES FOR LOSER
|
||
DATAO DPC,@DGO
|
||
CONSO DPC,DONE
|
||
JRST .-1
|
||
CONSO DPC,ALLER
|
||
POPJ P,
|
||
CONI DPC,TT
|
||
TLNE TT,12
|
||
JRST RWPAR
|
||
TRNE TT,HRDER
|
||
JRST RWHRD
|
||
TRNE TT,PROER
|
||
JRST RWPRO
|
||
TRNE TT,WRTER
|
||
JRST RWWRT
|
||
TRNE TT,SRCER
|
||
SKIPA TT,[-1]
|
||
SOJGE T,RW2
|
||
POPJ P,
|
||
|
||
|
||
RXWDS: BLOCK NXWDS
|
||
|
||
0 ;FOR BLT TO CLEAR WXWDS
|
||
WXWDS: BLOCK NXWDS
|
||
DGO: .
|
||
|
||
DRD: DREADC+ICWA
|
||
DWR: DWRITC+ICWA
|
||
|
||
FROM: 0
|
||
TOU: 0
|
||
|
||
SBTAB: MFDBLK ;SPECIAL RESERVED BLKS
|
||
TUTBLK
|
||
LSBTAB==.-SBTAB
|
||
RWHRD: TYP FATAL HARDWARE ERROR
|
||
JRST CRDDT
|
||
|
||
RWPAR: TYP CHANNEL PARITY ERROR
|
||
JRST CRDDT
|
||
|
||
RWPRO: TYP DISK ROUTINE ERROR
|
||
JRST CRDDT
|
||
|
||
RWWRT: TYP DISK WRITE PROTECTED
|
||
CRDDT: PUSHJ P,CRR
|
||
JRST DDT
|
||
]
|
||
|
||
|
||
MFDR: MOVEI P,PDL
|
||
PUSHJ P,CRR ;RECONSTRUCT MFR BY GETTING NAMES FROM UFD'S
|
||
TYP RECONSTRUCT MFD FROM UNIT #
|
||
PUSHJ P,NTYI
|
||
JRST MFDR
|
||
MOVE I,A
|
||
PUSHJ P,MFDINN
|
||
SETOM IMNFLG
|
||
MOVEI J,0
|
||
MFDR1: MOVEI A,TUT
|
||
PUSHJ P,READ
|
||
JUMPL T,MFDRL
|
||
JUMPL TT,MFDRL
|
||
MOVE B,TUT ;LOOK LIKE LEGIT UFD?
|
||
TLNE B,-1
|
||
JRST MRUFDL ;SHOULD BE F.S. PNTR
|
||
CAIL B,<2000.-11.>*6
|
||
JRST MRUFDL
|
||
MOVE B,TUT+1
|
||
SKIPE TUT+2
|
||
TLNE B,-1
|
||
JRST MRUFDL ;PNTR TO BEG OF NAME AREA
|
||
MOVEI B,(J)
|
||
LSH B,1
|
||
ADDI B,2000-LMNBLK*NUDSL
|
||
MOVE C,TUT+2 ;USER NAME
|
||
MOVEM C,MFD(B)
|
||
AOSN IMNFLG
|
||
MOVEM B,MFD+1
|
||
JRST MRUFDW
|
||
|
||
|
||
MFDRL: JRST 4,.+1
|
||
MRUFDL: JFCL
|
||
MRUFDW: CAIGE J,NUDSL-1
|
||
AOJA J,MFDR1
|
||
TYP WRITE?
|
||
PUSHJ P,TYI
|
||
CAIE A,"Y
|
||
JRST DDT
|
||
MFDWR: MOVEI A,MFD
|
||
MOVEI J,MFDBLK
|
||
PUSHJ P,WRITE
|
||
JRST DDT
|
||
|
||
IMNFLG: 0
|
||
|
||
MFDINN: CLEARM MFD
|
||
MOVE A,[MFD,,MFD+1]
|
||
BLT A,MFD+1777
|
||
MOVE A,[SIXBIT /M.F.D./]
|
||
MOVEM A,MFD+MDCHK
|
||
POPJ P,
|
||
|
||
|
||
CONSTA
|
||
VARIAB
|
||
|
||
BNDFC: 0 ;COUNT OF BLOCKS WHOSE #'S DIFFER
|
||
CKFLSW: 0 ;-1 VERIFY THAT BLOCKS THAT MAKE UP FILE ARE IN RIGHT PLACE
|
||
;IE XTRAWD HAS RIGHT THING WHEN BLOCK READ
|
||
|
||
PDL: BLOCK 200
|
||
POS: BLOCK NUNITS
|
||
LOSTC: 0
|
||
TUTU: 0
|
||
TUTI: 0
|
||
QBTBLI: 440600,,
|
||
QBTBL: 360600,,
|
||
300600,,
|
||
220600,,
|
||
140600,,
|
||
60600,,
|
||
600,,
|
||
|
||
QTTBLI: REPEAT 36./TUTBYT+1, 440000+TUTBYT_6-TUTBYT_12.*.RPCNT,,TUT
|
||
QTTBL=QTTBLI+1
|
||
|
||
1T0C: 0 ;COUNT 1_0
|
||
ALLDSK: 0
|
||
DRNO: 0
|
||
GUDFMD: 0 ;-1 GET UFDS FROM MASTER DPC
|
||
CLNSSW: 0
|
||
GARBF: 0
|
||
DBLK: 0
|
||
LFILES: 0 ;FILES LOSER HAS
|
||
LBLOCKS: 0 ;BLOCKS LOSER USES THIS DISK
|
||
TLBLOCKS: 0 ;TOTAL ON ALL DISKS
|
||
TBLKTD: 0 ;TOTAL BLOCKS THIS DISK ALL USERS
|
||
TBLKAD: 0 ;TOTAL BLOCKS ALL DISKS ALL USERS
|
||
UFDLOS: 0 ;-1 IF DIR HAS CLOBBERED BLOCKS
|
||
USRCNT: 0 ;COUNT OF DISK USERS
|
||
QACT: BLOCK NUNITS
|
||
MDSK: 0
|
||
|
||
IRP A,,[MDR,TUT]B,,[D,T]
|
||
Q!A!O: REPEAT NUNITS,CONC B,\.RPCNT,<2C>
|
||
TERMIN
|
||
PAT:
|
||
PATCH: BLOCK 100
|
||
|
||
IFE TS,LOC <.+1777>&776000
|
||
CYLBUF:
|
||
FDBUF: BLOCK 2000
|
||
USRD: BLOCK 2000
|
||
DUSRD: BLOCK 2000 ;MUST FOLLOW USRD
|
||
IRPC A,,DT
|
||
REPEAT NUNITS,CONC A,\.RPCNT,: BLOCK 2000
|
||
TERMIN
|
||
TUT: BLOCK 2000
|
||
MFD: BLOCK 2000
|
||
PBUF: BLOCK 2000
|
||
IFE TS,IFL .-CYLBUF-NCBLKS*NSSECS*200,LOC CYLBUF+NCBLKS*NSSECS*200
|
||
THEEND:END
|
||
|