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