X-Git-Url: http://git.sky-visions.com/cgi-bin/gitweb.cgi/retro-software/dec/tops10/v1.19.git/blobdiff_plain/f3e418cdd4a888df5976f9169871aac2e09d472d..master:/src/tendmp.mac diff --git a/src/tendmp.mac b/src/tendmp.mac index 7c17154..8110991 100644 --- a/src/tendmp.mac +++ b/src/tendmp.mac @@ -1,23 +1,13 @@ TITLE TENDMP - DTAPE/MTAPE UTILITY - R CLEMENTS/GBH/RH/RD/RCC/JEF 6 APR 71 - V032 IFNDEF REL, ;0 PAPER TAPE, 1 RELOCATABLE BINARY - IFNDEF MAGT, ;0 DTAPE, 1 MTAPE - IFN MAGT,< -; MAGTAPE UTILITY ROUTINE - COURTSEY DATALINE SYSTEMS J HANCOCK - > - IFNDEF MODE, ;0 IS TD10, 1 IS 551/136 IFNDEF CORE, ;NUMBER OF 8K MEMORY BLOCKS - IFE MODE, - IFN MODE, + SUBTTL 551/136 VERSION -IFE REL,< -IFE MAGT, -IFN MAGT,> +IFE REL, UTC=210 UTS=214 DC=200 - DTC=320 - DTS=324 F=0 ;MUST BE 0. USED BY JRA'S A=2 ;MISC TEMP. HOLDS 136 CONO INDEX IN UWAIT @@ -46,9 +36,7 @@ COMPTR=BEGR+377 ;COMMAND POINTER, IF SUPPLIED FOOF=BEGR-202 ;NEEDED FOR ZERO CORE SEARCH, ZEROED AT BEG1 TAB=BEGR-201 ;FILE DIRECTORY LINK=BEGR-1 ;0-17=LINK, 18-27=FBN, 29-35=WC -IFE REL,*20000>> - IFN MAGT,*20000> - IOWD LAST-BEGR+1,BEGR>> +IFE REL,*20000>> ;INITIAL ENTRY IS AT BEGR, UNLESS A COMMAND POINTER IS ;SUPPLIED IN COMPTR. IN THAT CASE, ENTRY IS AT BEGR+1 @@ -71,8 +59,7 @@ TYI: SETZB C,HIGH ;HOPEFULLY HIGH IS TEMPORARY SPACE: MOVEI E,C-1 ;EXTENSION INTO C HRLI E,20600 ;FAKE OUT END TEST OF BYTE PTR ;STOP TAPE DRIVE -IFN MODE, -IFE MODE, + CONO UTC,0 NEXT: ILDB A,@BEGR ;GIVES A 0 UNLESS COMMAND POINTER SUPPLIED ;RH OF NEXT IS USED AS A CONSTANT BELL: SETOI FILN,207 ;INITIALIZATION FOR SEARCH @@ -102,8 +89,7 @@ NEXT1: TLNE E,770000 ;NO MORE THAN SIX CHARS ;HERE ON JUMP BLOCK DURING LOADS, OR NUMBER>7 ALT JBLK: ;STOP TAPE DRIVE -IFN MODE, -IFE MODE, + CONO UTC,0 HRRM D,SADR ;SAVE STARTING ADDRESS JUMPN CH,BEG ;IF NOT LOADGO COMMAND SADR: JRST BEG ;CURRENT S.A. @@ -155,7 +141,6 @@ FREE: MOVEI FILN,. ;DUMP & NOT FOUND, MAKE ENTRY WHERE FREE BEG69: MOVEI FILN,1(FILN) ;FILN IS FILE #+1; CLR LH JUMPL WRITE,LOADS ;ALL LOAD INSTRUCTIONS -IFE MAGT,< SKIPN WRITE ;DELETE? (K COMMAND) SETZB B,C ;YES, KILL FILE MOVEM B,TAB+122(FILN) ;CLEAR IF DELE, ENTER IF NEW DUMP @@ -202,46 +187,6 @@ DMP2: MOVEI D,SPNT-1 ;SET UP TO FOLLOW THE HEADERS. DMP3: MOVE D,1(D) ;GET HEADER JUMPGE D,THRU ;IF NULL HEADER FOUND MOVEI Q,DMP3 ;Q:= DMP3 AS A RETURN AFTER AOBJN - > - -IFN MAGT,< - JRST ERR ;HOW DID WE GET HERE? DLS*** -;DUMP WRITES OUT CORE ONTO MAGNETIC TAPE -;DUMP WRITES OUT A CORE IMAGE ON MAGNETIC TAPE WITHOUT -;ZERO COMPRESSION. THE RECORDS ARE 200(OCTAL) WORDS IN LENGTH -;AND BEGIN WITH WORD ZERO. BEFORE STARTING THE TAPE IS REWOUND. -;IT ASSUMES MTA0, AT LEAST FOR NOW. - - MTC= 340 - MTS= 344 -DUMP: CONO MTC,1000 ;REWIND - CONSO MTS,300000 ;WAIT FOR BOT OR REWINDING - JRST .-1 - CONSO MTS,40 ;TRANSPORT READY? - JRST .-1 - SETZ A, -DUMP1: HRLI A,-200 ;WORDS PER BLOCK - CONO MTC,64100 ;START WRITE OPERATION -DUMP2: CONSO MTS,1 ;TD10 READY FOR DATA? - JRST .-1 - DATAO MTC,(A) ;SEND OUT DATA - AOBJN A,DUMP2 ;POINT TO NEXT WORD AND LOOP - CONO MTS,1 ;STOP THE DRIVE - CONSO MTS,100 ;WAIT TILL STOPPED - JRST .-1 - CONSZ MTS,464610 ;ANY ERRORS? - JRST ERR ;YES, GO RING BELL - AOSE [-CORE*20000/200+2] ;ALL CORE DUMPED? - JRST DUMP1 ;NO - CONO MTC,65100 ;WRITE END OF FILE - CONSO MTS,100 ;DONE? - JRST .-1 - CONO MTC,65100 - CONSO MTS,100 - JRST .-1 - JRST BEGR ;ALL DONE - > - LODUMP: JSP P,UWAIT JFCL D ;IN/OUTPUT HEADER @@ -254,7 +199,6 @@ DMP5: JSP P,UWAIT THRU: JSP P,UWAIT ;WRITE OUT JRST BLOCK JFCL SADR ;FROM LOC SADR -IFE MODE,< AOJL E,UWAIT1 ;FILL OUT BLOCK, TO GET CKSM OUT> TRZA WRITE,-1 ;THEN SET WRITE TO 0, AND GO CLOBBER ;ANY FURTHER BLOCKS WITH THIS FILN UWAIT: AOJL E,UWAIT1 ;RETURN ADDR = (P) DATA ADDR = @(P) @@ -292,27 +236,7 @@ MNLUP1: DPB B,PNTR ;FOR DELETE, 0 FILE NAME AND NUMBER RBLK: HRRO C,TAPENO ;CURRENT TAPE NO. ;SET LH TO PREPARE FOR JUMPN IN DELE -IFE MODE,< - TRO B,-1 ;ENSURE GOING FORWARD WHEN FIRST SEARCH - CONSO DTC,300000 ;IS A DIRECTION ASSERTED? - TRO C,210000 ;NO. GO FORWARD -RB1: TRNN B,400001 ;DECIDE WHETHER TO TURN AROUND - TRO C,300000 ;TURN AROUND -RBG: CONO DTC,20200(C) ;ISSUE THE COMMAND TO TD10. - ;200=SEARCH, 300=READ, 700=WRITE. -UWAIT1: CONSZ DTS,672700 ;ANY ERRORS? - JRST ERR ;YES. GO DING AND THEN TYI - CONSO DTS,1 ;DATA READY? - JRST .-3 ;NO. GO WAIT SOME MORE - JUMPL E,INOUT(WRITE) ;IF IN MIDST OF A DT BLOCK, DISPATCH - DATAI DTC,B ;NO. SEARCHING. GET BLOCK NO. - TRZ C,310000 ;CLOBBER DIRECTION BITS IN CONO - SUBI B,(BLKNO) ;COMPARE WITH DESIRED BLOCK - CONSZ DTC,100000 ;COMPLEMENT DECISION IF GOING REVERSE - TRC B,-2 ;BIT 35 IS FOR TURNAROUND SPACE. -> -IFN MODE,< SETOB A,B ;GO FORWARD, SET DC FOR SEARCH CONSZ UTS,40 ;IS CHECKSUM BEING WRITTEN? JRST .-1 ;WAIT @@ -333,14 +257,13 @@ UWAIT1: CONSZ UTS,6 ;ANY ERRORS? SUBI B,(BLKNO) ;COMPARE WITH DESIRED BLOCK TRNE C,10000 ;COMPLEMENT IF GOING REVERSE TRC B,-2 ;BIT 35 IS FOR TURNAROUND SPACE. -> JUMPN B,RB1 ;JUMP IF NOT GOING FORWARD INTO (BLKNO) MOVNI E,200 ;WORDS PER BLOCK MOVEM P,F ;SAVE RETURN IN AC0 TRO C,100 ;READ COMMAND, MAYBE JUMPLE WRITE,RB2 ;JUMP IF READ TRO C,400 ;CHANGE TO WRITE COMMAND -IFN MODE, + MOVNI A,401 ;SET 136 TO OUTPUT JUMPG CT,.+3 HRRZS LINK ;IF LAST BLK, KILL LINK DPB E,PNTR ;AND THE DIR BYTE ? 0 @@ -351,39 +274,18 @@ RB2: CAIE BLKNO,^D100 ;IF NOT DIRECTORY BLOCK JRA P,UWAIT1 ;RESTORE CALLER ADR ;AND PROCESS DATA WORDS -IFE MODE,< - DATAI DTC,@(P) ;READ COMMANDS. GET WORD TO CORE -INOUT: JRST UWAIT2 ;INOUT-1 TO INOUT +1 ARE DISPATCHED TO. - DATAO DTC,@(P) ;OUTPUT TO TAPE -UWAIT2: AOJN E,UWAIT3 ;WAS THAT THE LAST WORD IN THE DT BLOCK? - CONO DTS,1 ;YES. GIVE FUNCTION STOP TO TD10 - CONSO DTS,100000 ;AND WAIT FOR CHECKSUM TO BE DONE - JRST .-1 ;NOT YET. WAIT -UWAIT3: SOJA E,0(P) ;DONE. COMPENSATE FOR THE AOJN ABOVE, AND - ;RETURN TO CALLER OF UWAIT OR RBLK -> -IFN MODE,< DATAI DC,@(P) ;READ COMMANDS. GET WORD TO CORE INOUT: JRST UWAIT2 ;INOUT-1 THRU INOUT+1 ARE DISPATCHED TO. DATAO DC,@(P) ;OUTPUT TO TAPE UWAIT2: JRST 0(P) ;RETURN TO CALLER OF UWAIT OR RBLK. -> ALTMD: MOVEI A,"$" JSP P,TYO ;ALTMODE IS PRINTED AS "$" -IFE MAGT,< CAIE CH,"K"-40 ;FOR K, WRITE := 0 CAIN CH,"D"-40 ;FOR D, WRITE :=1 AOJLE WRITE,.-1 ;COUNT (WRITE) - > - -IFN MAGT,< - CAIN CH,"D"-40 ;FOR D, WRITE :=1 - AOJLE WRITE,.-1 ;COUNT (WRITE) - JUMPG WRITE,DUMP ;D MEANS GO DUMP ON MAG TAPE - > CAIN CH,"G"-40 ;GO TO PROGRAM? JRST @SADR ;YES. JUMP OUT @@ -399,8 +301,7 @@ IFN MAGT,< CAILE F,7 ;SKIP IF ONE DIGIT JRA D,JBLK ;D:=SADR. DISPATCH TO JBLK WHICH SAVES SADR. OPNTP: ;SHIFT UNIT NUMBER LEFT FOR CONO -IFE MODE, -IFN MODE, + LSH F,3 HRRM F,TAPENO ;SAVE IN CORE CLSTP: MOVEI BLKNO,^D100 ;BLK NO OF FILE DIR SETZI PNTR,0 ;DONT CLOBBER DIRECTORY BYTE @@ -446,15 +347,6 @@ SPNT: 0 ;POINTER TO HEADERS IN CORE. LIT -IFN MAGT,< -SLOP: MOVE .+3 - MOVEM COMPTR - JRST BEGR+1 - XWD 440700,.+1 - BYTE (7) "0",33,177 -LAST: JRST SLOP - > -IFE MAGT,< SLOP=COMPTR-17-. ;THIS MANY WORDS BEFORE RESERVED AREA ;FOR COMMAND STRINGS. ;!!!!! NOTE: ABOVE PARAMETER MUST COME OUT POSITIVE IN @@ -463,7 +355,6 @@ IFE MAGT,< ; THIS MEANS ANY CODE ADDED MUST BE COMPENSATED FOR BY ; A CORRESPONDING TIGHTENING SOMEWHERE. GOOD LUCK. ; TENDMP IS VERY TIGHT ALREADY. - > END BEGR