mirror of
https://github.com/PDP-10/its.git
synced 2026-03-24 01:27:33 +00:00
2280 lines
33 KiB
Groff
2280 lines
33 KiB
Groff
|
||
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
|
||
|
||
NLPT==464
|
||
|
||
;FILE SYSTEM PARAMETERS
|
||
|
||
;PHYSICAL CHARACTERISTICS
|
||
NCYLS==200. ;# CYLINDERS NORMALLY USED
|
||
XCYLS==3 ;# EXTRA CYLINDERS FOR SPARES, HACKS, ETC.
|
||
NHEDS==20. ;# TRACKS/CYLINDER
|
||
NSECS==2 ;# BLKS/TRK
|
||
NCBLKS==NHEDS*NSECS ;# BLKS/CYL
|
||
NBLKS==NCYLS*NHEDS*NSECS ;TOTAL # REG BLKS
|
||
XBLKS==XCYLS*NHEDS*NSECS ;# XTRA BLKS
|
||
|
||
;EXTRA 4 WORDS IN BLOCK
|
||
XWBWC==0 ;RANDOM #S
|
||
XWBLK==1700,, ;BP TO BLK # FLD
|
||
XWAWC==171200,, ;BP TO ACTIVE WD CNT
|
||
XWSYSN==1 ;SYSTEM NAME
|
||
XWFN1==2 ;FILE NAME
|
||
XWFN2==3 ;"
|
||
|
||
;MFD INFO
|
||
MFDBLK==NBLKS/2-1 ;LOC ON DISK
|
||
;RANDOM INFO
|
||
MDNUM==0 ;ASCENDING DIR NUM
|
||
MDNAMP==1 ;PNTR TO ORG OF NAME AREA
|
||
MDYEAR==2 ;CURRENT YEAR
|
||
MPDOFF==3 ;DE-CORIOLIS CLOCK OFFSET
|
||
MDCHK==5 ;THIS WORD MUST BE M.F.D. (FOR CHECKING)
|
||
LMIBLK==6 ;TOTAL STG USED BY HACKS LIKE THIS
|
||
;USER NAME BLKS FROM C(MDNAMP) TO END
|
||
LMNBLK==2 ;# WDS/BLK
|
||
MNUNAM==0 ;6BIT USER NAME
|
||
|
||
;TUT INFO
|
||
TUTBLK==MFDBLK-1 ;LOC ON DISK
|
||
TUTBYT==4 ;SIZE OF BYTES
|
||
TUTLK==1_<TUTBYT>-1 ;HIGHEST CODE MEANS LOCKED OUT
|
||
QTUTP==1777 ;ALLOC PNTR ADV BY CYLS
|
||
QPKNUM==1776 ;PACK #
|
||
QPKID==1775 ;PACK ID
|
||
QSWAPA==1774 ;SWAPPING ALLOCATION
|
||
LTIBLK==4 ;STG FOR RANDOM INFO ^
|
||
|
||
;UFD INFO
|
||
NUDSL==200. ;# UFDS SPACE RESERVED
|
||
;RANDOM INFO
|
||
UDESCP==0 ;FS PNTR TO DESC AREA
|
||
UDNAMP==1 ;PNTR TO ORG OF NAME AREA
|
||
UDNAME==2 ;USER NAME (FOR CHECKING)
|
||
UDDESC==11. ;FIRST LOC AVAIL FOR DESC
|
||
;UFD DESCRIPTORS
|
||
UDTKMX==12. ;HIGHEST "TAKE N" CODE
|
||
UDWPH==31. ;PLACE HOLDER ON WRITE (OR NULL FILE)
|
||
NXLBYT==2 ;# ADDITIONAL BYTES FOR LOAD ADDR
|
||
;NAME AREA DATA
|
||
LUNBLK==5 ;WDS/NAME BLK
|
||
UNFN1==0 ;FIRST FN
|
||
UNFN2==1 ;SECOND FN
|
||
UNRNDM==2 ;ALL KINDS OF RANDOM INFO
|
||
UNDSCP==1500,, ;PNTR TO DESC
|
||
UNPKN==150500,, ;PACK #
|
||
UNLINK==1 ;LINK BIT
|
||
UNWRIT==4 ;OPEN FOR WRITING
|
||
UNMARK==10 ;GC MARK BIT
|
||
UNCDEL==20 ;DEL WHEN CLOSED
|
||
UNPDEL==40 ;DEL FROM UNMOUNTED PACK
|
||
DELBTS==UNCDEL+UNPDEL ;DELETED -- IGNORE
|
||
UNIGFL==DELBTS+UNWRIT ;BITS TO IGNORE FILE
|
||
UNDBLK==301300,, ;BLK # DESC BLK (0 => NONE)
|
||
UNDUMP==400000 ;HAS BEEN DUMPED
|
||
UNDATE==3 ;DATE ETC.
|
||
UNYMD==1200,, ;COMPACTED TIME OF CREATION
|
||
UNREFT==121000,, ;DAYS SINCE CREATION LAST REF
|
||
|
||
IF1 [
|
||
IFG NUDSL*LMNBLK+LMIBLK-2000,[PRINTX /MFD LOSES
|
||
/]
|
||
IFG NBLKS/<36./TUTBYT>+LTIBLK-2000,[PRINTX /TUT LOSES
|
||
/]
|
||
]
|
||
|
||
.INSRT SYSENG;DSK >
|
||
|
||
DEFINE QCOPY A,B
|
||
DCOPY A(-B_2&37774)!TERMIN
|
||
|
||
NUNITS==3
|
||
|
||
IFN TS,[
|
||
NUNITS==3
|
||
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
|
||
|
||
IFE TS,[
|
||
LOC SA
|
||
JRST GOGO
|
||
|
||
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 A,PKNUM(I)
|
||
MOVE I,TOU
|
||
DPB I,[DUNFLD CYLRIW]
|
||
CAME A,PKNUM(I)
|
||
JRST DUPLUZ
|
||
MOVEI J,NCYLS+XCYLS-1
|
||
MOVEI A,CYLBUF
|
||
DLUP: MOVE I,FROM
|
||
PUSHJ P,READCY
|
||
MOVE I,TOU
|
||
PUSHJ P,WRITCY
|
||
SOJGE J,DLUP
|
||
MOVEI T,CYLRIR
|
||
PUSHJ P,RW0
|
||
JRST DDT
|
||
|
||
DUPLUZ: TYP PACK # DFRS
|
||
PUSHJ P,CRR
|
||
JRST DDT
|
||
|
||
READCY: SKIPA T,[DREADC+DUNENB]
|
||
WRITCY: MOVSI T,(DWRITC+DUNENB)
|
||
DPB I,[DUNFLD T]
|
||
DPB J,[DCYL T]
|
||
CYL1: SKIPLE TT,PKNUM(I)
|
||
JRST CYL2
|
||
PUSH P,T
|
||
PUSHJ P,RESET
|
||
POP P,T
|
||
JRST CYL1
|
||
CYL2: CAIL J,NCYLS
|
||
MOVEI TT,0
|
||
DPB TT,[DPKID T]
|
||
MOVEM T,CYLCOM
|
||
DPB A,[DCCA CYLCOM+2]
|
||
MOVEI T,CYLCOM
|
||
RW0: HRRM T,DGO
|
||
JRST RW1
|
||
|
||
CYLCOM: 0
|
||
DALU+DLDBWC+DLLB -2004*NCBLKS(3)
|
||
DCOPY .
|
||
DHLT
|
||
|
||
CYLRIR: DREAD+DUNENB
|
||
DCOPY CYLBUF(-LRIBLK_2&37774)
|
||
CYLRIW: DWRITE+DUNENB
|
||
DCOPY CYLBUF(-LRIBLK_2&37774)
|
||
DHLT
|
||
]
|
||
MAGOP: AOSE ITAPE
|
||
JRST MTR1
|
||
HRROI A,MAGHD
|
||
PUSHJ P,MREAD
|
||
MOVE A,MAGHD
|
||
TRNE A,-1
|
||
JRST MBDTHD
|
||
CAMGE A,[-LTHBLK,,]
|
||
JRST MBDTHD
|
||
ADD A,[1,,THBLK+1]
|
||
PUSHJ P,MREAD
|
||
TYP TAPE #
|
||
HLRZ A,THTPN
|
||
PUSHJ P,DPT
|
||
PUSHJ P,CRR
|
||
|
||
MTR1: HRROI A,MAGHD
|
||
PUSHJ P,MREAD
|
||
MOVE A,MAGHD
|
||
TRNE A,-1
|
||
JRST MBADHD
|
||
CAMGE A,[-LMHBLK,,0]
|
||
JRST MBADHD
|
||
ADD A,[1,,MHBLK+1]
|
||
PUSHJ P,MREAD
|
||
JRST POPJ1
|
||
|
||
MBADHD: LPR BAD HEADER
|
||
PUSHJ P,LCRR
|
||
PUSHJ P,IGFIL
|
||
JRST MTR1
|
||
|
||
MBDTHD: TYP BAD TAPE HEADER
|
||
JRST DDT
|
||
|
||
TRAN: PUSHJ P,REW
|
||
TRAN1: SETOM PRINTF
|
||
JSR INIT
|
||
PUSHJ P,CRR
|
||
MOVEI I,0
|
||
TRAN2: SKIPGE QACT(I)
|
||
PUSHJ P,RESET
|
||
CAIGE I,NUNITS-1
|
||
AOJA I,TRAN2
|
||
PUSHJ P,DUP2
|
||
IFE TS,[
|
||
MOVEI A,TUT
|
||
MOVEI J,TUTBLK
|
||
PUSHJ P,READT
|
||
MOVEI A,D1
|
||
MOVEI J,MFDBLK
|
||
PUSHJ P,READT
|
||
|
||
TNAML: PUSHJ P,MAGOP
|
||
JRST TMDON
|
||
MOVE A,MHSNM
|
||
PUSHJ P,SIXLPT
|
||
PUSHJ P,LSPAC
|
||
MOVE A,MHFN1
|
||
PUSHJ P,SIXLPT
|
||
PUSHJ P,LSPAC
|
||
MOVE A,MHFN2
|
||
PUSHJ P,SIXLPT
|
||
PUSHJ P,LSPAC
|
||
CLEARM FERRS
|
||
MOVE B,MHSNM
|
||
MOVE A,D1+MDNAMP
|
||
SETZM IBLK
|
||
TMLKP: CAIL A,2000
|
||
JRST TNEWU
|
||
SKIPN C,D1+MNUNAM(A)
|
||
JRST TMLKZ
|
||
CAMN B,C
|
||
JRST TOLDU
|
||
TMLKL: ADDI A,LMNBLK
|
||
JRST TMLKP
|
||
|
||
TMLKZ: MOVEM A,IBLK
|
||
JRST TMLKL
|
||
|
||
TOLDU: MOVEI J,2*NUDSL-2000(A)
|
||
LSH J,-1
|
||
MOVEM J,UFDTA
|
||
MOVEI A,DUSRD
|
||
IFN TS, .VALUE
|
||
PUSHJ P,READT
|
||
CAME B,DUSRD+UDNAME
|
||
JRST 4,.
|
||
JRST TOLDUR
|
||
|
||
TNEWU: MOVE A,[DUSRD,,DUSRD+1]
|
||
SETZM DUSRD
|
||
BLT A,DUSRD+1777
|
||
MOVEM B,DUSRD+UDNAME
|
||
MOVEI A,2000
|
||
MOVEM A,DUSRD+UDNAMP
|
||
SKIPE A,IBLK
|
||
JRST .+3
|
||
MOVNI A,LMNBLK
|
||
ADDB A,D1+MDNAMP
|
||
MOVEM B,D1+MNUNAM(A)
|
||
MOVEI J,2*NUDSL-2000(A)
|
||
LSH J,-1
|
||
MOVEM J,UFDTA
|
||
TOLDUR:
|
||
MOVE B,MHFN1
|
||
MOVE C,MHFN2
|
||
MOVE A,DUSRD+UDNAMP
|
||
SETZM IBLK
|
||
TULKP: CAIL A,2000
|
||
JRST TNEWF
|
||
MOVSI T,UNCDEL
|
||
TDNE T,DUSRD+UNRNDM(A)
|
||
JRST TULKD
|
||
SKIPN T,DUSRD+UNFN1(A)
|
||
JRST TULKZ
|
||
CAME B,T
|
||
JRST TULKL
|
||
CAMN C,DUSRD+UNFN2(A)
|
||
JRST TOLDF
|
||
TULKL: ADDI A,LUNBLK
|
||
JRST TULKP
|
||
|
||
TULKZ: SKIPN DUSRD+UNFN2(A)
|
||
TULKD: MOVEM A,IBLK
|
||
JRST TULKL
|
||
|
||
TOLDF: LPR EXISTS
|
||
PUSHJ P,LCRR
|
||
PUSHJ P,IGFIL
|
||
JRST TNAML
|
||
|
||
IGFIL: MOVE A,[-2000,,FDBUF]
|
||
PUSHJ P,MREAD
|
||
SKIPN EOUF
|
||
JRST IGFIL
|
||
CLEARM EOUF
|
||
POPJ P,
|
||
|
||
TNEWF: SKIPE A,IBLK
|
||
JRST TNEWCK
|
||
MOVNI A,LUNBLK
|
||
ADDB A,DUSRD+UDNAMP
|
||
TNEWCR: MOVE T,DUSRD+UDESCP
|
||
IDIVI T,6
|
||
CAIL T,-UDDESC(A)
|
||
JRST 4,.
|
||
MOVEM B,DUSRD+UNFN1(A)
|
||
MOVEM C,DUSRD+UNFN2(A)
|
||
MOVEM B,WXWDS+XWFN1
|
||
MOVEM C,WXWDS+XWFN2
|
||
MOVE B,DUSRD+UDNAME
|
||
MOVEM B,WXWDS+XWSYSN
|
||
SETZM WXWDS+XWBWC
|
||
MOVE B,DUSRD+UDESCP
|
||
DPB B,[UNDSCP DUSRD+UNRNDM(A)]
|
||
MOVE B,MHDATE
|
||
MOVEM B,DUSRD+UNDATE(A)
|
||
MOVE B,TUT+QPKNUM
|
||
DPB B,[UNPKN DUSRD+UNRNDM(A)]
|
||
SETZM CBYT'
|
||
SETZM OBLKS'
|
||
SETZM IBLK'
|
||
SETZM LBLK'
|
||
TBLKL:
|
||
TBLKL1: MOVE A,[-2000,,FDBUF]
|
||
PUSHJ P,MREAD
|
||
JUMPE T,TBLKL2
|
||
DPB T,[XWAWC WXWDS+XWBWC]
|
||
MOVE T,LBLK
|
||
DPB T,[XWBLK WXWDS+XWBWC]
|
||
AOS IBLK
|
||
PUSHJ P,WRBLK
|
||
TBLKL2: SKIPN EOUF
|
||
JRST TBLKL
|
||
SETZM EOUF
|
||
JRST TBDON
|
||
|
||
TNEWCK: SKIPN DUSRD+UNFN1(A)
|
||
SKIPE DUSRD+UNFN2(A)
|
||
JRST 4,.
|
||
JRST TNEWCR
|
||
|
||
TBDON: PUSHJ P,EBYT
|
||
MOVEI J,UDWPH
|
||
SKIPN LBLK
|
||
PUSHJ P,BYDEP
|
||
MOVEI J,0
|
||
PUSHJ P,BYDEP
|
||
JRST TMDON
|
||
|
||
|
||
READC: JUMPL T,[JRST 4,.]
|
||
POPJ P,
|
||
|
||
READFN: SKIPA I,FROM
|
||
READT: MOVE I,TOU
|
||
PUSHJ P,READ
|
||
JUMPL TT,[JRST 4,.]
|
||
JRST READC
|
||
|
||
WRBLK: MOVE J,TUT+QTUTP
|
||
AOS TUT+QTUTP
|
||
MOVE A,J
|
||
CAIL J,NBLKS
|
||
JRST WRLUZ
|
||
SETZM TUTLUZ
|
||
IDIVI A,36./TUTBYT
|
||
ADD A,QTTBL(B)
|
||
LDB B,A
|
||
JUMPN B,WRBLK
|
||
MOVEI B,1
|
||
DPB B,A
|
||
MOVEI A,FDBUF
|
||
MOVEM J,LBLK
|
||
PUSHJ P,WRITT
|
||
SUB J,OBLKS
|
||
ADDM J,OBLKS
|
||
CAIN J,1
|
||
JRST WRBC
|
||
PUSHJ P,EBYT
|
||
CAIG J,UDWPH-UDTKMX
|
||
JRST WRBS
|
||
MOVE J,OBLKS
|
||
LSHC J,-NXLBYT*6
|
||
MOVEI U,NXLBYT+1
|
||
ADDI J,UDWPH+1
|
||
WRBL: PUSHJ P,BYDEP
|
||
LSHC J,6
|
||
SOJG U,WRBL
|
||
POPJ P,
|
||
|
||
WRLUZ: SETCMB J,TUTLUZ'
|
||
JUMPE J,[JRST 4,.]
|
||
MOVE J,TUT+QSWAPA
|
||
MOVEM J,TUT+QTUTP
|
||
JRST WRBLK
|
||
|
||
WRBS: ADDI J,UDTKMX-1
|
||
BYDEP: MOVE T,DUSRD+UDESCP
|
||
AOS DUSRD+UDESCP
|
||
IDIVI T,6
|
||
ADDI T,UDDESC
|
||
CAML T,DUSRD+UDNAMP
|
||
JRST 4,.
|
||
ADDI T,DUSRD
|
||
HLL T,QBTBL(W)
|
||
DPB J,T
|
||
POPJ P,
|
||
|
||
WRBC: AOS J,CBYT
|
||
CAIGE J,UDTKMX
|
||
POPJ P,
|
||
EBYT: PUSH P,J
|
||
SKIPN J,CBYT
|
||
JRST POPJJ
|
||
PUSHJ P,BYDEP
|
||
SETZM CBYT
|
||
POPJJ: POP P,J
|
||
POPJ P,
|
||
|
||
|
||
TMDON: MOVE A,TUT+QTUTP
|
||
IDIVI A,NCBLKS
|
||
IMULI A,NCBLKS
|
||
MOVEM A,TUT+QTUTP
|
||
MOVEI J,TUTBLK
|
||
MOVEI A,TUT
|
||
PUSHJ P,WRITT
|
||
MOVEI I,0
|
||
TMDON2: SKIPL QACT(I)
|
||
JRST TMDON1
|
||
MOVEI J,MFDBLK
|
||
MOVEI A,D1
|
||
PUSHJ P,WRITE
|
||
MOVE J,[WXWDS,,WXWDS+1]
|
||
SETZM WXWDS
|
||
BLT J,WXWDS+3
|
||
MOVE J,UFDTA
|
||
MOVEI A,DUSRD
|
||
PUSHJ P,WRITE
|
||
TMDON1: CAIGE I,NUNITS-1
|
||
AOJA I,TMDON2
|
||
SKIPN FERRS
|
||
LPR OK
|
||
PUSHJ P,LCRR
|
||
JRST TNAML
|
||
|
||
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
|
||
]
|
||
|
||
ZAP: JSR INIT
|
||
PUSHJ P,ZAP1
|
||
TYP INIT PACK ON DRIVE #
|
||
PUSHJ P,NTYI
|
||
JRST ZAP
|
||
CAIL A,NUNITS
|
||
JRST ZAP
|
||
PUSHJ P,CRR
|
||
MOVEM A,TOU
|
||
MOVE I,A
|
||
PUSHJ P,RESET
|
||
MOVE A,[WXWDS-1,,WXWDS]
|
||
BLT A,WXWDS+3
|
||
MOVSI J,-NBLKS-XBLKS
|
||
MOVEI A,MFD
|
||
ZAPL: PUSHJ P,WRITE
|
||
JUMPL T,ZAPLUZ
|
||
AOBJN J,ZAPL
|
||
MOVE A,PKNUM(I)
|
||
MOVEM A,TUT+QPKNUM
|
||
DATAO DC0,[DJMP DZAP]
|
||
CONSZ DC0,DSSACT
|
||
JUMPA .-1
|
||
CONSO DC0,DSSERR
|
||
JRST MARK69
|
||
ZAPLUZ: TYP LOSE
|
||
PUSHJ P,CRR
|
||
JRST DDT
|
||
|
||
ZAP1: CONO DC0,DCCSET+DCDENB
|
||
MOVE A,[MFD,,MFD+1]
|
||
SETZM MFD
|
||
BLT A,MFD+1777
|
||
PUSHJ P,TUTINI
|
||
PUSHJ P,CRR
|
||
POPJ P,
|
||
|
||
DZAP: DWRITE
|
||
DCSKIP (-LRIBLK_2&37774)
|
||
DHLT
|
||
|
||
MARK: JSR INIT
|
||
PUSHJ P,ZAP1
|
||
TYP FORMAT PACK ON DRIVE #
|
||
PUSHJ P,NTYI
|
||
JRST MARK
|
||
CAIL A,NUNITS
|
||
JRST MARK
|
||
PUSHJ P,CRR
|
||
CONO DC1,(A)
|
||
MOVEM A,TOU
|
||
MOVE I,A
|
||
PUSHJ P,RESET
|
||
CONSO DC1,DFUNSF\DOFFL
|
||
JRST MARK1
|
||
TYP DRIVE OK?
|
||
CRDDT: PUSHJ P,CRR
|
||
JRST DDT
|
||
|
||
MARK1: MOVE A,[DSPC+DSCWIM+DSWIDX+DSWNUL]
|
||
MOVEM A,CYLBUF
|
||
MOVEI D,CYLBUF+1
|
||
PUSHJ P,RDLAT
|
||
JUMPE A,.-1
|
||
MARK1A: PUSHJ P,RDLAT
|
||
JUMPE A,MARK1B
|
||
MOVE B,A
|
||
JRST MARK1A
|
||
MARK1B: IMULI B,1000
|
||
IDIVI B,36.
|
||
AOJ B,
|
||
MOVEM B,MAXT'
|
||
PUSHJ P,STOBLK
|
||
MOVE J,MAXT
|
||
IDIVI J,NSECS
|
||
CAIL K,NSECS/2
|
||
AOJ J,
|
||
SUBI J,3+3+7+3011
|
||
MOVEI Q,NSECS
|
||
MARK1C: MOVEI B,(D)
|
||
HRLI B,HBLK
|
||
ADDI D,3
|
||
BLT B,-1(D)
|
||
MOVNI B,-NSECS(Q)
|
||
IMULI B,3
|
||
ADDI B,DHEDR
|
||
HRRM B,-2(D)
|
||
MOVEI B,103.
|
||
MOVE A,[QCOPY EZERS,15.,]
|
||
PUSHJ P,STBLK
|
||
SOJLE Q,MARK1D
|
||
MOVE B,J
|
||
PUSHJ P,STOBLK
|
||
JRST MARK1C
|
||
|
||
MARK1D: MOVE A,[QCOPY EONES,3,]
|
||
MOVEM A,(D)
|
||
AOJ D,
|
||
MOVSI A,(DOPR+DOHXFR)
|
||
MOVEM A,(D)
|
||
MOVEM D,RIWP'
|
||
ADDI D,2
|
||
MOVE B,J
|
||
SUBI B,3+3+7+LRIBLK*3/2+3
|
||
LSH B,-1
|
||
SUBI B,3*3
|
||
PUSHJ P,STOBLK
|
||
MOVEI B,(D)
|
||
HRLI B,WRTRI
|
||
ADDI D,5
|
||
BLT B,-1(D)
|
||
MOVSI A,(DJMP)
|
||
ADDI A,(D)
|
||
MOVE B,RIWP
|
||
MOVEM A,1(B)
|
||
MOVEI B,(D)
|
||
MOVEM B,ENDP'
|
||
AOS ENDP
|
||
HRLI B,RCBLK
|
||
ADDI D,5
|
||
BLT B,-1(D)
|
||
MOVEI B,-3(D)
|
||
HRRM B,-2(D)
|
||
TYP PACK NO =
|
||
PUSHJ P,OTYI
|
||
PUSHJ P,CRR
|
||
MOVE I,TOU
|
||
MOVEM A,PKNUM(I)
|
||
MOVEM A,TUT+QPKNUM
|
||
MOVE I,[440300,,RIHEDR]
|
||
PUSHJ P,ENCI
|
||
MOVEI I,RIHED0
|
||
PUSHJ P,HCOMP
|
||
MOVEI J,<NBLKS+XBLKS>/NSECS-1
|
||
MOVEM J,TRKN'
|
||
|
||
MARK2: MOVEI K,5
|
||
MOVEM K,NTRYS'
|
||
SETZM DHED0
|
||
CAIL J,NBLKS/NSECS
|
||
JRST MARK2C
|
||
MOVE A,TUT+QPKNUM
|
||
DPB A,[DPKID DHED0]
|
||
DPB A,[DPKID @ENDP]
|
||
JUMPN J,MARK2C
|
||
MOVE B,RIWP
|
||
MOVE A,[QCOPY EONES,3,]
|
||
MOVEM A,(B)
|
||
MOVEM A,1(B)
|
||
MARK2C: IDIVI J,NHEDS
|
||
IRP A,,[CYLBUF,@ENDP,DHED0]
|
||
DPB J,[DCYL A]
|
||
DPB K,[DSURF A]
|
||
TERMIN
|
||
MOVEI W,0
|
||
DPB W,[DHNXAD DHED1]
|
||
MOVEI W,1
|
||
CAIN K,NHEDS-1
|
||
MOVEI W,2
|
||
CAIE J,NCYLS-1
|
||
CAIN J,NCYLS+XCYLS-1
|
||
TRO W,1
|
||
MOVE I,[440300,,DHEDR]
|
||
PUSHJ P,ENCI
|
||
MOVEI I,DHED0
|
||
MOVEI Q,NSECS
|
||
MARK2B: CAIN Q,1
|
||
DPB W,[DHNXAD DHED1]
|
||
PUSHJ P,HCOMP
|
||
AOS DHED0
|
||
SOJG Q,MARK2B
|
||
MARK2A: CONO DC0,DCCSET\DCDENB
|
||
DATAO DC0,[DJMP CYLBUF]
|
||
MOVE A,[DWLUP,,14]
|
||
BLT A,16
|
||
JRST 14
|
||
MARK2D: CONSO DC0,DSSERR
|
||
JRST MARK4
|
||
CONSZ DC1,DCPERR\DNXM\DDOBSY
|
||
JRST MARK3A
|
||
CONSZ DC1,DPROT
|
||
JRST MARK3B
|
||
CONSZ DC1,DOFFL\DFUNSF
|
||
JRST MARK3C
|
||
CONSO DC1,DWTHER\DCKSER\DOVRRN\DRCER\DRLNER
|
||
JRST MARK3D
|
||
MTROV: SOSLE NTRYS
|
||
JRST MARK2A
|
||
CONSZ DC1,DOVRRN
|
||
JRST MARK3A
|
||
TYP DISK BAD
|
||
JRST CRDDT
|
||
|
||
DWLUP: CONSZ DC0,DSSACT
|
||
JRST 14
|
||
JRST MARK2D
|
||
|
||
MARK3A: TYP MACHINE LOSSAGE
|
||
JRST CRDDT
|
||
|
||
MARK3B: TYP NOT WRT ENABLED
|
||
JRST CRDDT
|
||
|
||
MARK3C: TYP DRIVE LOSSAGE
|
||
JRST CRDDT
|
||
|
||
MARK3D: TYP CONTROLLER LOSSAGE
|
||
JRST CRDDT
|
||
|
||
MARK4: SOSL J,TRKN
|
||
JRST MARK2
|
||
MARK69: TYP PACK ID =
|
||
PUSHJ P,6TYI
|
||
PUSHJ P,CRR
|
||
MOVEM B,TUT+QPKID
|
||
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]
|
||
MARK5: MOVE B,(D)
|
||
IDIVI B,36./TUTBYT
|
||
ADD B,QTTBL(C)
|
||
DPB A,B
|
||
AOBJN D,MARK5
|
||
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
|
||
|
||
HCOMP: SETOM HPAR'
|
||
MOVEI J,(I)
|
||
HRLI J,-2
|
||
HCOMP1: MOVEI B,14.
|
||
MOVE A,(J)
|
||
XORM A,HPAR
|
||
LSH A,-2
|
||
SOJG B,.-2
|
||
AOBJN J,HCOMP1
|
||
MOVE B,(I)
|
||
PUSHJ P,ENCH
|
||
MOVE B,HPAR
|
||
ANDI B,3
|
||
LSH B,20.
|
||
XORB B,1(I)
|
||
PUSHJ P,ENCH
|
||
MOVSI B,770000
|
||
HCOMP2: TDNN B,DSKBP
|
||
POPJ P,
|
||
PUSHJ P,ENCDO
|
||
JRST HCOMP2
|
||
|
||
ENCO: SKIPA A,C1
|
||
ENCZ: MOVEI A,0
|
||
ENC: ANDI A,1
|
||
HRRZ T,ENCS'
|
||
JRST @ENCT(T)
|
||
|
||
ENCT: ENC1
|
||
ENC2
|
||
ENC1
|
||
ENCZ2
|
||
|
||
ENCDO: SKIPA A,[3]
|
||
ENCDZ: MOVEI A,0
|
||
ENCD: ANDI A,3
|
||
HRRZ T,ENCS
|
||
JRST @ENCDT(T)
|
||
|
||
ENCDT: ENC2A
|
||
[JRST 4,.]
|
||
ENCZ2A
|
||
[JRST 4,.]
|
||
|
||
ENC1: HRLM A,ENCS
|
||
ENC1A: AOS ENCS
|
||
POPJ P,
|
||
|
||
ENC2: ROT A,-1
|
||
HLR A,ENCS
|
||
ROT A,2
|
||
JRST ENC2B
|
||
ENC2A: LSH A,1
|
||
AOS ENCS
|
||
ENC2B: JUMPE A,ENC1A
|
||
C1: TRO A,1
|
||
IDPB A,DSKBP'
|
||
ENC3: SETZM ENCS
|
||
POPJ P,
|
||
|
||
ENCZ2: ROT A,-1
|
||
HLR A,ENCS
|
||
JRST .+2
|
||
ENCZ2A: ROT A,-1
|
||
ASH A,2
|
||
TRO A,2
|
||
IDPB A,DSKBP
|
||
ROT A,2
|
||
TRO A,5
|
||
IDPB A,DSKBP
|
||
JRST ENC3
|
||
|
||
ENCH: LSH B,36.-28.
|
||
SKIPA C,[14.]
|
||
ENCW: MOVEI C,18.
|
||
LSHC A,2
|
||
PUSHJ P,ENCD
|
||
SOJG C,.-2
|
||
POPJ P,
|
||
|
||
ENCI: MOVEM I,DSKBP
|
||
SETZM ENCS
|
||
POPJ P,
|
||
|
||
RDLAT: CONI DC1,A
|
||
LDB A,[DSLAT A]
|
||
RDLAT2: MOVEM A,T
|
||
CONI DC1,A
|
||
LDB A,[DSLAT A]
|
||
CAME A,T
|
||
JRST RDLAT2
|
||
POPJ P,
|
||
|
||
STBLK: MOVEM A,(D)
|
||
SOJE B,[AOJA D,CPOPJ]
|
||
HRLI D,1(D)
|
||
ADDI B,1(D)
|
||
MOVS D,D
|
||
EXCH B,D
|
||
BLT B,-1(D)
|
||
POPJ P,
|
||
|
||
STOBLK: MOVE A,[QCOPY EONES,LOBLK,]
|
||
IDIVI B,LOBLK
|
||
JUMPE B,STOBL3
|
||
JUMPE C,STOBL2
|
||
CAIL C,3
|
||
JRST STOBL2
|
||
SOJ B,
|
||
ADDI C,LOBLK
|
||
STOBL2: PUSHJ P,STBLK
|
||
STOBL3: CAIGE C,3
|
||
MOVEI C,3
|
||
MOVNI C,(C)
|
||
DPB C,[DCWC A]
|
||
MOVEM A,(D)
|
||
AOJA D,CPOPJ
|
||
|
||
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
|
||
|
||
HBLK: QCOPY PREAMB,3
|
||
QCOPY .,3
|
||
QCOPY POSTMB,7
|
||
|
||
WRTRI: QCOPY PREAMB,3
|
||
QCOPY RIHEDR,3
|
||
QCOPY POSTMB,7
|
||
QCOPY EZERS,<LRIBLK*3/2+3>
|
||
QCOPY EONES,3
|
||
|
||
RCBLK: DALU+DLCC+DLLB -401*NSECS(3)
|
||
DRCC
|
||
QCOPY ZERS,4
|
||
DJMP+DAOJNC .
|
||
DHLT
|
||
|
||
LOBLK==60
|
||
|
||
DHED0: 0
|
||
DHED1: -2004&37777
|
||
DHEDR: BLOCK 3*NSECS
|
||
|
||
|
||
RIHED0: 0
|
||
RIHED1: -LRIBLK&37777
|
||
RIHEDR: BLOCK 3
|
||
|
||
EZERS: REPEAT LRIBLK*3/2+3,252525252525
|
||
|
||
EONES: REPEAT LOBLK+3,-1
|
||
|
||
PREAMB: -1
|
||
-26
|
||
655326553265
|
||
|
||
POSTMB: REPEAT 6,-1
|
||
-3
|
||
|
||
ZERS: BLOCK 4
|
||
|
||
CONSTA
|
||
|
||
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,
|
||
|
||
IFN TS,POPBAJ: POP P,B
|
||
POPAJ: POP P,A
|
||
IFN TS,[RESET:] POPJ P,
|
||
IFE TS,[
|
||
GOGO: SETOM GOGOX'
|
||
JRST .+2
|
||
CHKR: SETZM GOGOX
|
||
JSR INIT
|
||
SETOM PRINTF
|
||
PUSHJ P,CRR
|
||
TYP SALVATION
|
||
MOVE A,[.FNAM2]
|
||
PUSHJ P,T6B
|
||
PUSHJ P,CRR
|
||
PUSHJ P,LFORM
|
||
LPR SALVATION
|
||
MOVE A,[.FNAM2]
|
||
PUSHJ P,SIXLPT
|
||
PUSHJ P,LCRR
|
||
MOVEI A,NUNITS-1
|
||
CLEARM QACT(A)
|
||
SOJGE A,.-1
|
||
SKIPN GOGOX
|
||
JRST CFIN11
|
||
REPEAT NUNITS,SETOM QACT+.RPCNT
|
||
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
|
||
SETOM GUDFMD ;USE USR DIRS FROM MASTER DSK
|
||
CLEARM PRINTF ;NO PRINT
|
||
CLEARM CKFLSW ;NO CHECK BLOCKS
|
||
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 DSK?
|
||
PUSHJ P,TYI
|
||
CLEARM GUDFMD
|
||
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
|
||
MOVE A,QTUTO(U)
|
||
MOVEI J,TUTBLK
|
||
PUSHJ P,READ
|
||
JUMPL T,DUINI3
|
||
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
|
||
|
||
DUINI3: TYP TUT PARITY ERRORS
|
||
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-2*NUDSL
|
||
LSH J,-1
|
||
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 Q,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)
|
||
MOVE A,UNFN1(Q)
|
||
MOVEM A,WXWDS+XWFN1
|
||
MOVE A,UNFN2(Q)
|
||
MOVEM A,WXWDS+XWFN2
|
||
MOVEI A,FDBUF
|
||
PUSHJ P,WRITE
|
||
MOVE T,[WXWDS-1,,WXWDS]
|
||
BLT T,WXWDS+3
|
||
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
|
||
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)
|
||
|
||
TUTC1: ILDB C,Q
|
||
ILDB D,J
|
||
CAME C,D
|
||
JRST TUTDF1
|
||
TUTC2: CAIGE TT,NBLKS-1
|
||
AOJA TT,TUTC1
|
||
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: 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
|
||
|
||
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
|
||
SETZM ENCS
|
||
IFE TS,[
|
||
SKIPN NOLPT
|
||
CONO NLPT,100 ;SET DONE
|
||
]
|
||
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,
|
||
SKIPE NOLPT'
|
||
JRST TYLPT
|
||
IFE TS,[
|
||
PUSH P,A
|
||
LSH A,1
|
||
IOR A,[-1,,777400]
|
||
CONSO NLPT,100
|
||
JRST .-1
|
||
DATAO NLPT,A
|
||
POP P,A
|
||
]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: PUSHJ P,LSPAC
|
||
PUSHJ P,LSPAC
|
||
PUSHJ P,LSPAC
|
||
JRST LSPAC
|
||
|
||
LCRR: PUSH P,A
|
||
MOVEI A,15
|
||
PUSHJ P,LPTR
|
||
JRST POPAJ
|
||
|
||
LSPAC: PUSH P,A
|
||
MOVEI A,40
|
||
L1: PUSHJ P,LPTR
|
||
POP P,A
|
||
POPJ P,
|
||
|
||
LFORM: PUSH P,A
|
||
MOVEI A,14
|
||
PUSHJ P,LPTR
|
||
JRST POPAJ
|
||
|
||
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
|
||
|
||
MTC==340 ;MAG TAPE CHANNEL FOR FUNCTIONS
|
||
MTS==344 ;MAG TAPE CHANNEL FOR STOPPING AND STATUS
|
||
|
||
;SHIFTS FOR FIELDS IN CONO MTC,
|
||
UNITNO==15.
|
||
PARITY==14.
|
||
FUNC==9.
|
||
DENSTY==6.
|
||
|
||
800BPI==2
|
||
|
||
MAGCOM=5_<UNITNO>+1_<PARITY>+800BPI_<DENSTY>
|
||
|
||
;FUNCTIONS
|
||
NOOP1=0_<FUNC>+MAGCOM ;CLEAR INTERRUPT FLAGS
|
||
NOOP2=10_<FUNC>+MAGCOM ;INTERRUPT WHEN TRANSPORT IDLE
|
||
REWIND=1_<FUNC>+MAGCOM ;REWIND
|
||
REED=2_<FUNC>+MAGCOM ;READ
|
||
SPACR=7_<FUNC>+MAGCOM ;SPACE REVERSE
|
||
|
||
;FLAGS
|
||
JOBDON==100
|
||
DATREQ==1
|
||
EOFF==10000
|
||
EOTF==4000
|
||
|
||
REW: CLEARM EOFCNT
|
||
CLEARM MAGBFP
|
||
CLEARM SHORTL
|
||
CONO MTC,NOOP1 ;CLEAR INTERRRUPT FLAGS
|
||
CONO MTC,REWIND ;INITIATE REWIND
|
||
CONSO MTS,JOBDON ;WAIT FOR REWIND TO BEGIN
|
||
JRST .-1
|
||
CONO MTC,NOOP2 ;SET JOB DONE WHEN TRANSPORT IDLE
|
||
CONSO MTS,JOBDON ;WAIT FOR JOB DONE
|
||
JRST .-1
|
||
SETOM ITAPE
|
||
POPJ P, ;REWIND DONE
|
||
ITAPE: 0
|
||
|
||
MREAD: MOVEI T,0
|
||
PUSH P,B
|
||
MREAD7: SKIPGE B,MAGBFP
|
||
JRST MREAD5
|
||
SKIPN EOFLG
|
||
JRST MREAD1
|
||
SETZM EOFLG
|
||
SETOM EOUF
|
||
JRST POPBJ
|
||
|
||
MREAD1: MOVEI B,10.
|
||
MOVEM B,MTRYS
|
||
MERR2: MOVE B,[-2000,,MAGBUF]
|
||
MOVEM B,MAGBFP
|
||
CONO MTC,NOOP1 ;CLEAR FLAGS
|
||
CONO MTC,REED
|
||
MREAD2: CONSO MTS,DATREQ+EOFF+JOBDON+EOTF ;WAIT FOR NEXT DATA REQUEST
|
||
JRST .-1
|
||
MOVEI C,20.
|
||
SOJG C,.
|
||
CONI MTS,C
|
||
TRNE C,EOTF
|
||
JRST MREOT
|
||
TRNN C,JOBDON
|
||
JRST MREAD3
|
||
TRNN C,EOFF
|
||
JRST MREAD6
|
||
AOS EOFCNT
|
||
SETOM EOFLG
|
||
CLEARM SHORTL
|
||
JRST MREAD9
|
||
|
||
MREAD6: SETOM SHORTL
|
||
MREAD9: HLLZS B
|
||
MOVNS B
|
||
ADDM B,MAGBFP
|
||
JRST MREAD4
|
||
|
||
MREAD3: TRNN C,DATREQ
|
||
JRST MREAD2
|
||
DATAI MTC,(B)
|
||
SKIPE SHORTL
|
||
JRST 4,.
|
||
AOBJN B,MREAD2
|
||
MREAD4: CONO MTS,1
|
||
CONSO MTS,JOBDON
|
||
JRST .-1
|
||
CONSZ MTS,440000 ;X HUNG + ILL OP
|
||
JRST 4,MERR
|
||
MREAD8: CONSO MTS,20600
|
||
JRST MREAD7
|
||
MERR: SOSG MTRYS
|
||
JRST MERR1
|
||
CONO MTC,NOOP1
|
||
CONO MTC,SPACR
|
||
CONSO MTS,DATREQ
|
||
JRST .-1
|
||
DATAO MTC,
|
||
CONO MTS,1
|
||
CONSO MTS,JOBDON
|
||
JRST .-1
|
||
JRST MERR2
|
||
|
||
MERR1: AOS FERRS ;IGNORE ERR
|
||
JRST MREAD7
|
||
|
||
MREAD5: HLRE C,B
|
||
CAMG B,A
|
||
HLRE C,A
|
||
HRLZS B
|
||
HRR B,A
|
||
MOVNS C
|
||
HRLS C
|
||
ADDI C,-1(A)
|
||
BLT B,(C)
|
||
HLRS C
|
||
ADD A,C
|
||
ADDM C,MAGBFP
|
||
ADDI T,(C)
|
||
JUMPGE A,POPBJ
|
||
JRST MREAD7
|
||
|
||
MREOT: LPR EOT
|
||
PUSHJ P,CRR
|
||
JRST DDT
|
||
|
||
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,[
|
||
CONSZ TTY,20
|
||
JRST .-1
|
||
DATAO TTY,A
|
||
]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
|
||
JRST TYO
|
||
|
||
CPOPJ: POPJ P,
|
||
|
||
THBLK: -LTHBLK,,0
|
||
THTPN: 0 ;TAPE #,,REEL # IN THIS DUMP
|
||
THDATE: 0 ;TAPE CREATION DATE
|
||
THTYPE: 0 ;0=>RANDOM >0 => FULL <0 => INCR
|
||
LTHBLK==.-THBLK
|
||
|
||
MHBLK: -LMHBLK,,0 ;FILE HEADER BLOCK
|
||
MHSNM: 0 ;SYS NAME
|
||
MHFN1: 0 ;FN1
|
||
MHFN2: 0 ;FN2
|
||
MHPKN: 0 ;PACK #
|
||
MHDATE: 0 ;CREATION DATE
|
||
LMHBLK==.-MHBLK
|
||
MAGHD: 0
|
||
EOTFLG: 0
|
||
EOFCNT: 0
|
||
EOUF: 0
|
||
SHORTL: 0
|
||
MTRYS: 0
|
||
MAGBFP: 0
|
||
EOFLG: 0
|
||
|
||
RESET: CONO DC0,DCCSET+DCDENB
|
||
DPB I,[DUNFLD DRST]
|
||
DATAO DC0,DRST
|
||
CONSO DC0,DSSATT
|
||
JRST .-1
|
||
CONO DC0,DCCSET+DCDENB
|
||
DATAO DC0,[DJMP GPKID]
|
||
CONSZ DC0,DSSACT
|
||
JRST .-1
|
||
LDB T,[DPKID RPKID]
|
||
MOVEM T,PKNUM(I)
|
||
POPJ P,
|
||
|
||
PKNUM: BLOCK NUNITS
|
||
|
||
DRST: DSPC+DSRCAL+DSWINF+DUNENB
|
||
GPKID: DSPC+DSCRHD+DSWNUL+616300
|
||
DCOPY RPKID(37774)
|
||
DHLT
|
||
|
||
RPKID: 0
|
||
|
||
WRITT: MOVE I,TOU
|
||
WRITE: HRRZM J,LBLK
|
||
SKIPA T,[DWR]
|
||
READ: MOVEI T,DRD
|
||
HRRM T,DGO
|
||
DPB I,[DUNFLD (T)]
|
||
DPB A,[DCCA 1(T)]
|
||
DPB A,[DCCA 4(T)]
|
||
HRRZ TT,J
|
||
CAIL TT,NBLKS+XBLKS
|
||
JRST 4,.
|
||
IDIVI TT,NSECS
|
||
DPB T,[DSECT @DGO]
|
||
IDIVI TT,NHEDS
|
||
DPB T,[DSURF @DGO]
|
||
DPB TT,[DCYL @DGO]
|
||
MOVE T,PKNUM(I)
|
||
CAIL TT,NCYLS
|
||
MOVEI T,0
|
||
DPB T,[DPKID @DGO]
|
||
HRRZ TT,DGO
|
||
MOVE T,(TT)
|
||
TLZ T,340000 ;CHANGE TO READ COMPARE
|
||
MOVEM T,3(TT)
|
||
RW1: MOVEI T,30.
|
||
RW2: CONO DC0,DCCSET\DCDENB
|
||
DATAO DC0,DGO
|
||
CONSZ DC0,DSSACT
|
||
JRST .-1
|
||
CONSZ DC0,DSSERR
|
||
SOJGE T,RW2
|
||
SKIPGE T
|
||
AOS FERRS
|
||
POPJ P,
|
||
|
||
DGO: DJMP .
|
||
|
||
DRD: DREAD+DUNENB
|
||
DCOPY .(-2000_2&37774)
|
||
DCOPY RXWDS(-4_2&37774)
|
||
DRC
|
||
DCCOMP .(-2000_2&37774)
|
||
DCCOMP RXWDS (-4_2&37774)
|
||
DHLT
|
||
|
||
RXWDS: BLOCK 4
|
||
|
||
DWR: DWRITE+DUNENB
|
||
DCOPY .(-2000_2&37774)
|
||
DCOPY WXWDS(-4_2&37774)
|
||
DRC
|
||
DCCOMP .(-2000_2&37774)
|
||
DCCOMP WXWDS(-4_2&37774)
|
||
DHLT
|
||
|
||
0 ;FOR BLT
|
||
WXWDS: BLOCK 4
|
||
]
|
||
CONSTA
|
||
VARIAB
|
||
|
||
SBIT: 1
|
||
2
|
||
4
|
||
10
|
||
|
||
FROM: 0
|
||
TOU: 0
|
||
|
||
SBTAB: MFDBLK ;SPECIAL RESERVED BLKS
|
||
TUTBLK
|
||
LSBTAB==.-SBTAB
|
||
|
||
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
|
||
|
||
ALLDSK: 0
|
||
DRNO: 0
|
||
GUDFMD: 0 ;-1 GET UFDS FROM MASTER DSK
|
||
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
|
||
UFDTA: 0 ;TRACK ADR OF UFD
|
||
FERRS: 0 ;ERRS MADE IN XFER OF FILE
|
||
|
||
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
|
||
MAGBUF: BLOCK 2000
|
||
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*2004,LOC CYLBUF+NCBLKS*2004
|
||
THEEND:END CHKR
|
||
|
||
|