mirror of
https://github.com/PDP-10/its.git
synced 2026-03-03 18:26:16 +00:00
Reconstructed ARCDEV 66. Build DEVICE; OARCDV BIN from it.
This commit is contained in:
Binary file not shown.
@@ -421,6 +421,9 @@ respond "*" ":midas device;jobdev arc_syseng;arcdev\r"
|
||||
expect ":KILL"
|
||||
respond "*" ":link device;jobdev ar,device;jobdev arc\r"
|
||||
|
||||
respond "*" ":midas device;oarcdv bin_syseng;arcdev 66\r"
|
||||
expect ":KILL"
|
||||
|
||||
# JOBDEV D (DSKDEV)
|
||||
respond "*" ":midas device;jobdev d_syseng;dskdev\r"
|
||||
expect ":KILL"
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
TITLE ARCDEV -- BOJ HANDLER FOR ARCHIVE DEVICE
|
||||
; Version 66 reconstructed from SYSENG; ARCDEV 23 (timestamped 1976-12-26)
|
||||
; and DEVICE; OARCDV BIN (1977-07-04) disassembly.
|
||||
|
||||
|
||||
; SUMMARY OF ARCDEV ROUTINES
|
||||
@@ -184,6 +186,8 @@ OPMODE: 0 ; MODE OF OPEN
|
||||
CRUNAM: 0 ; CREATOR OF THIS ARCDEV
|
||||
CRJNAM: 0 ; JNAME OF CREATOR OF THIS ARCDEV
|
||||
LENGTH: 0 ; FILE LENGTH OF READ FILE
|
||||
BYTSIZ: 0 ; BYTE SIZE
|
||||
BYTPWD: 0 ; BYTES PER WORD
|
||||
|
||||
LOCKSW: 0 ; 0=>ARC NOT LOCKED 1.1 BIT=1 => SOFT LOCKED, 1.2 BIT=1 => HARD LOCKED
|
||||
INTLCK: 0 ; 0=>ALL INTERRUPS OK, =/0=>SAVE JOB/BOJ INTERRUPTS
|
||||
@@ -1168,7 +1172,8 @@ ARCINI: PUSH P,A
|
||||
SETZM BLOCK3 ; INITIALIZE THE OUTPUT BLOCK
|
||||
MOVE A,[BLOCK3,,BLOCK3+1]
|
||||
BLT A,BLOCK3+1777
|
||||
SETOM BLOCK3+ARCTYP ; -1 => NEW FLAVOR ARCHIVE
|
||||
MOVE A,[SIXBIT /ARC!!!/]
|
||||
MOVEM A,BLOCK3+ARCTYP
|
||||
MOVEI A,2000 ; POINTER TO NAME AREA OFF THE END
|
||||
MOVEM A,BLOCK3+UDNAMP
|
||||
MOVE A,[-2000,,BLOCK3]
|
||||
@@ -1458,6 +1463,13 @@ DIRMAP: PUSH P,A
|
||||
HRLZI B,-2
|
||||
.CALL BLKMAP
|
||||
JRST DTAERR
|
||||
MOVE A,ARCDIR+ARCTYP
|
||||
CAME A,[-1]
|
||||
CAMN A,[SIXBIT /ARC!!!/]
|
||||
CAIA
|
||||
JRST [MOVSI H,46 ? JRST OPFAIL]
|
||||
MOVE A,[SIXBIT /ARC!!!/]
|
||||
MOVEM A,ARCDIR+ARCTYP
|
||||
MOVE A,ARCDIR+GCTAG ; GET GC TAG
|
||||
EXCH A,WHENGC ; SAVE AND GET WHAT I THINK IT IS
|
||||
CAME A,WHENGC ; THE SAME?
|
||||
@@ -1481,42 +1493,17 @@ OPNAR2: POP P,A
|
||||
|
||||
ARCNOP: .STATUS ARC,A ; FIND OUT WHY
|
||||
LDB A,[220600,,A] ; GET OPEN FAILURE BITS
|
||||
CAIN A,4
|
||||
JRST OPNAR2
|
||||
CAIE A,23 ; FILE LOCKED?
|
||||
JRST OPNAR3 ; NO - FILE NOT FOUND
|
||||
JRST ARCNP4 ; NO - FILE NOT FOUND
|
||||
ARCNP3: MOVEI A,15 ; WAIT A HALF SECOND AND TRY AGAIN
|
||||
.SLEEP A,
|
||||
MOVE A,(P)
|
||||
JRST OPNAR1 ; GO TRY AGAIN
|
||||
|
||||
OPNAR3: MOVE A,[6,,ARC]
|
||||
.CALL DSKDIR ;MAP IN DIRECTORY, AND SEARCH FOR ARCHIVE
|
||||
JRST OPNAR2 ; NO SUCH USER
|
||||
.CALL SCRMAP ;ALLOCATE PAGE
|
||||
JRST OPNAR2 ;CANT GET PAGE
|
||||
MOVE A,[-2000,,BLOCK3]
|
||||
.IOT ARC,A
|
||||
MOVEI A,BLOCK3
|
||||
ADD A,BLOCK3+1 ;PNTR TO NAME AREA
|
||||
PUSH P,B
|
||||
MOVE B,DEVICE
|
||||
ARCNP1: CAIL A,BLOCK3+2000
|
||||
JRST ARCNP2
|
||||
CAMN B,UNFN1(A) ;FOUND ONE?
|
||||
JRST ARCNP4 ;YES
|
||||
ADDI A,LUNBLK
|
||||
JRST ARCNP1
|
||||
|
||||
ARCNP2: POP P,B
|
||||
.CALL SCRFLS
|
||||
JFCL
|
||||
.CLOSE ARC,
|
||||
JRST OPNAR2
|
||||
|
||||
ARCNP4: POP P,B ; FOUND FILE, WAIT AND TRY AGAIN
|
||||
.CALL SCRFLS
|
||||
JFCL
|
||||
.CLOSE ARC,
|
||||
JRST ARCNP3
|
||||
ARCNP4: HRLZ H,A
|
||||
JRST OPFAIL
|
||||
|
||||
; BLTSCR - COPY ARCDIR INTO BLOCK3 (AFTER MAKING BLOCK3 EXIST)
|
||||
|
||||
@@ -2174,6 +2161,13 @@ OPEN: MOVE A,WD3 ; COPY SUB-FILE NAMES
|
||||
MOVEM A,DEVICE
|
||||
MOVE A,WD7 ; SAVE OPEN MODE
|
||||
MOVEM A,OPMODE
|
||||
TRNE A,6
|
||||
SKIPA A,[44]
|
||||
MOVEI A,7
|
||||
MOVEM A,BYTSIZ
|
||||
MOVEI B,44
|
||||
IDIVM B,A
|
||||
MOVEM A,BYTPWD
|
||||
HRLZ A,OPMODE ; GET OPEN MODE
|
||||
TLZ A,777770 ; ISOLATE BASIC OPEN MODES
|
||||
TLC A,1 ; COMPLEMENT READ/WRITE MODE
|
||||
@@ -2567,32 +2561,29 @@ FILIOT: FAUI ; ASCII UNIT INPUT
|
||||
|
||||
DAUI: PUSHJ P,LFCHR ; GET NEXT CHARACTER
|
||||
CAIN A,3 ; EOF?
|
||||
HRLI A,-1 ; MAKE -1,,3
|
||||
JRST SEOF
|
||||
.IOT BOJC,A ; SEND IT
|
||||
JUMPGE A,LOOP ; DID WE JUST SEND EOF?
|
||||
SETOM IOCERR ; YES - SET ERROR FLAG FOR NEXT IOT
|
||||
JRST LOOP
|
||||
DAUI1: SOSG WD2
|
||||
JRST LOOP
|
||||
LDB B,[000300,,OPMODE]
|
||||
JRST @DIRIOT(B)
|
||||
|
||||
; DIUI - DIRECTORY IMAGE UNIT INPUT - SEND NEXT WORD OF IMAGE
|
||||
; DIRECTORY.
|
||||
|
||||
DIUI: MOVE A,BLKPOS ; GET POSITION IN DIRECTORY BLOCK
|
||||
CAIL A,2000 ; IN BOUNDS?
|
||||
JRST DIUI1 ; NO - GO SEND EOF
|
||||
JRST SEOF ; NO - GO SEND EOF
|
||||
AOS BLKPOS ; BUMP POSITION
|
||||
CAIN A,2 ; IS HE ASKING FOR DIRECTORY NAME?
|
||||
JRST DIUI0 ; YES - GO GIVE IT TO HIM
|
||||
CAIG A,1 ; IS HE ASKING FOR WORD 0 OR 1
|
||||
AOS A ; ADJUST TO DISK FORMAT
|
||||
.IOT BOJC,ARCDIR(A) ; SEND NEXT WORD
|
||||
JRST LOOP
|
||||
JRST DAUI1
|
||||
|
||||
DIUI0: .IOT BOJC,DIRECT ; SEND DIRECTORY NAME
|
||||
JRST LOOP
|
||||
|
||||
DIUI1: .IOT BOJC,[-1,,3] ; SEND EOF (??)
|
||||
SETOM IOCERR ; ERROR NEXT TIME
|
||||
JRST LOOP
|
||||
JRST DAUI1
|
||||
|
||||
; DABI - DIRECTORY ASCII BLOCK INPUT - SEND ASCII CHARACTERS PACKED
|
||||
; FIVE TO A WORD.
|
||||
@@ -2956,7 +2947,7 @@ FIBI: PUSHJ P,INTOFF
|
||||
SKIPL A,BLKPOS ; IS THERE A BLOCK IN NOW?
|
||||
JRST FIBO0 ; YES - CAN HANDLE MUCH LIKE A WRITE NOW
|
||||
FIBI1: SETZM H ; MAKE LOSER FALL OUT OF HIS IOT
|
||||
SETZM I
|
||||
FISI1: SETZM I
|
||||
PUSHJ P,INTON
|
||||
.CALL JRET
|
||||
JFCL
|
||||
@@ -2985,8 +2976,12 @@ FAUO3: SOS CHLFIB ; ONE LESS SLOT AVAILABLE
|
||||
AOS POSPTR
|
||||
MOVE A,LENGTH
|
||||
PUSHJ P,LENADJ
|
||||
FAUO4: PUSHJ P,INTON
|
||||
FAUO4: SOSLE WD2
|
||||
JRST FAUO5
|
||||
PUSHJ P,INTON
|
||||
JRST LOOP
|
||||
FAUO5: LDB B,[000300,,OPMODE]
|
||||
JRST @FILIOT(B)
|
||||
|
||||
; FAUI - FILE ASCII UNIT INPUT
|
||||
|
||||
@@ -3008,6 +3003,10 @@ FAUI2: MOVE C,BLBPTR
|
||||
JRST FAUO3 ; GO UPDATE COUNTS
|
||||
|
||||
FAUI3: PUSHJ P,INTON
|
||||
SEOF: MOVEI H,1
|
||||
MOVSI A,1000
|
||||
TDNE A,WD1
|
||||
JRST FISI1
|
||||
.IOT BOJC,[-1,,3] ; SEND EOF
|
||||
SETOM IOCERR ; IOC ERROR NEXT TIME
|
||||
JRST LOOP
|
||||
@@ -3031,13 +3030,13 @@ FIUO2: MOVE A,BLKPOS ; GET CURRENT POINTER INTO DATA BLOCK
|
||||
SOS WDLFIB ; DECREASE WORDS LEFT
|
||||
MOVE A,LENGTH ; UPDATE LENGTH
|
||||
PUSHJ P,LENADJ
|
||||
SOSLE WD2
|
||||
JRST FAUO5
|
||||
PUSHJ P,INTON
|
||||
JRST LOOP
|
||||
|
||||
FIUO3: PUSHJ P,INTON
|
||||
.IOT BOJC,[-1,,3] ; SEND EOF
|
||||
SETOM IOCERR ; IOC ERROR NEXT TIME
|
||||
JRST LOOP
|
||||
JRST SEOF
|
||||
|
||||
; FIUI - FILE IMAGE UNIT INPUT
|
||||
|
||||
@@ -3057,7 +3056,9 @@ RCHST: MOVEI I,1(P) ; GET POINTER TO ROOM ON STACK
|
||||
PUSH P,FNAME1 ; REAL FILE NAMES
|
||||
PUSH P,FNAME2
|
||||
PUSH P,DIRECT ; DIRECTORY NAME
|
||||
PUSH P,POSPTR ; CURRENT ACCESS POINTER
|
||||
MOVE A,POSPTR
|
||||
IMUL A,BYTPWD
|
||||
PUSH P,A
|
||||
PUSH P,[0] ; UNKNOWN
|
||||
PUSH P,[0] ; UNKNOWN
|
||||
HRLI I,-7
|
||||
@@ -3204,8 +3205,13 @@ CALWN1: MOVEI H,1 ; MAKE LOSER SKIP
|
||||
|
||||
; FILLEN - SEND FILE'S LENGTH
|
||||
|
||||
FILLEN: PUSH P,LENGTH ; SEND HIM THE LENGTH
|
||||
MOVEI A,1
|
||||
FILLEN: MOVE A,LENGTH
|
||||
IMUL A,BYTPWD
|
||||
PUSH P,A
|
||||
PUSH P,BYTSIZ
|
||||
PUSH P,LENGTH
|
||||
PUSH P,[44]
|
||||
MOVEI A,4
|
||||
JRST CALWIN
|
||||
|
||||
; RDMPBT - READ THE DUMP BIT
|
||||
@@ -3324,6 +3330,9 @@ ACCESS: SKIPN NEWFIL
|
||||
PUSHJ P,INTOFF
|
||||
SETZM IOCERR ; CLEAR I/O ERROR FLAG
|
||||
MOVE A,WD2 ; GET POSITION HE WANTS
|
||||
IDIV A,BYTPWD
|
||||
JUMPN B,ACCES4
|
||||
MOVEM A,WD2
|
||||
CAMN A,POSPTR ; DOES HE WANT WHERE WE ARE?
|
||||
JRST NOOP1A ; YES - DO NOTHING
|
||||
JUMPN A,ACCES1 ; DOES HE WANT BEGINNING?
|
||||
Reference in New Issue
Block a user