Open larsbrinkhoff opened 2 years ago
As far as I can see, the SAIL version of DECDMP that we have just reads a flat memory image starting from DECtape block 4. It ends on block 1002 for the 64K version (leaving the last 200 words untouched for DECDMP), or 1077 for the 128K version.
The first core address is maybe 11? Which seems strange. Maybe the shadow loader occupied 0-10.
Side note: I suspect there is another version of DECDMP with a file directory. Files are not identified by name, just a number. We can find hints about this, but so far no code has turned up.
I think you may be right about there being multiple versions. And from the SAILDART notes, the format for the G command is ,,xxxG where xxx is the start address.
As for the file directory structure? It wouldn't surprise me if there was only one file on the DECtape. TENDMP is marginally more advanced. And the flat file system wouldn't surprise me either.
So, I've encountered an interesting issue with the decdmp tool. WAITS doesn't seem to think that the tape image produced has a valid directory.
This is what I got in the DECDMP simulator:
The process of making the image was this:
dart -x world.dmp -Wcore -f world.mt
decdmp -Fdmp -Wcore world.dt world.dmp
The current images exist in the pash/test branch under the test_tapes directory.
No, it wouldn't find a directory because there is no directory! I haven't checked what WAITS expects, but I would guess the same as the TOPS-10 DECtape format, which is also the same as TENDMP. If you want to play with that, try tendmp.c instead.
The decdmp.c tool is for making an image suitable for the standalone DECDMP.MAC (or decdmp.old in this repository). As far as I can see, it doesn't support a directory. Try booting the DECDMP paper tape and see if you can start your program from world.dt
. Assuming world.dmp
is a standalone program!
Well, then. I’m still trying to learn how to write MACRO well (I can read it though), so that wouldn’t surprise me.
DECDMP.SAI, the source for the DECDMP simulator, has some interesting insights though.
`COMMENT SOME FACTS ABOUT DECDMP DECDMP SAVES AN ENTIRE CORE IMAGE ON DECTAPE. .DMP FILES START AT LOCATION 74. DECDMP DUMPS LOCATIONS 11 - nK;
USETO(1,BEGBLK); COMMENT GET TO THE FIRST BLOCK;
BUF[0]←0; COMMENT ZERO THE BUFFER;
ARRBLT(BUF[1],BUF[0],SIZE-1); COMMENT ZERO IT ALL;
ARRBLT(BUF['20-'11],TWENTY[0],8);
ARRYIN(0,BUF['74-'11],SIZE-'63 MIN FWC);
BUF['36-'11] ← BUF['116-'11]; COMMENT JOBSYM FOR EXEC DDT;
BUF['37-'11] ← FWC; COMMENT JOBREL FOR EXEC DDT;
ARRYOUT(1,BUF[0],SIZE); COMMENT DUMP 16K OF DATA;
FWC←FWC-SIZE+'63; COMMENT DECREASE FILE WORD COUNT;
DMPSIZ←DMPSIZ-SIZE; COMMENT DECREASE COUNT OF DATA TO GO.; `
And a mention of actual structure:
OUTSTR("TYPE FILE NUMBER FOR THIS DUMP (0-3) ");
Thanks for pointing out DECDMP.SAI. I didn't check it yet. So apparently file numbers are 0-3. But then we have: BEGBLK←BEGBLK*128+4;
, so file 0 begins at block 4, file 1 at block 132, file 2 at 260, and 3 at 338. Each file has a 16K area, except the last which has slightly more. But I don't see any information about file size being stored, or anything about a directory.
@PashPaw, can you check if n,mL
loads different DECtape blocks for m = 0, 1, 2, 3? I read the decdmp.old code but I couldn't see that if would do anything about the file number.
I still need to figure out how to make one in WAITS. However, with that said, it should be able to accept accept the m,x
decdmp.old says this:
JSP R0,@(R4) ;DISPATCH FOR n,D or n,L
;CONTINUE SCAN IF COMMA COMMA
;IF ,,nG THEN n WILL BE IN R2
And you're welcome. It's just a matter of just trying to grok it.
The README currently says: