1
0
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:
Lars Brinkhoff
2018-02-14 14:46:26 +01:00
parent 810f5f7c14
commit f9819b44c1
3 changed files with 62 additions and 50 deletions

Binary file not shown.

View File

@@ -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"

View File

@@ -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?