From f9819b44c16458b2b05d9d349dea36a99c409a01 Mon Sep 17 00:00:00 2001 From: Lars Brinkhoff Date: Wed, 14 Feb 2018 14:46:26 +0100 Subject: [PATCH] Reconstructed ARCDEV 66. Build DEVICE; OARCDV BIN from it. --- bin/device/oarcdv.bin | Bin 20565 -> 0 bytes build/build.tcl | 3 + src/syseng/{arcdev.23 => arcdev.66} | 109 +++++++++++++++------------- 3 files changed, 62 insertions(+), 50 deletions(-) delete mode 100755 bin/device/oarcdv.bin rename src/syseng/{arcdev.23 => arcdev.66} (98%) diff --git a/bin/device/oarcdv.bin b/bin/device/oarcdv.bin deleted file mode 100755 index 5c5baa15cd9d70cc51e20b019704cae11a5197ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20565 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 E-;RAu=l}o! diff --git a/build/build.tcl b/build/build.tcl index 2eda8753..18e65819 100644 --- a/build/build.tcl +++ b/build/build.tcl @@ -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" diff --git a/src/syseng/arcdev.23 b/src/syseng/arcdev.66 similarity index 98% rename from src/syseng/arcdev.23 rename to src/syseng/arcdev.66 index 965a199e..aa957657 100644 --- a/src/syseng/arcdev.23 +++ b/src/syseng/arcdev.66 @@ -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?