PashPaw / DECDMP

DECDMP for the PDP-6
1 stars 0 forks source link

Attempt to make a DECDMP format DECtape #4

Open larsbrinkhoff opened 2 years ago

larsbrinkhoff commented 2 years ago

The README currently says:

Attempt to make a DECDMP format DECtape. Any attempt to read a tape so far seems to have crashed the PDP-6 simulator.

larsbrinkhoff commented 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.

larsbrinkhoff commented 2 years ago

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.

PashPaw commented 2 years ago

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.

PashPaw commented 2 years ago

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: image

The process of making the image was this:

  1. Transfer a generic "Hello, world!" program into a tape image from WAITS.
  2. Extract it with the command: dart -x world.dmp -Wcore -f world.mt
  3. Make the DECtape image with decdmp -Fdmp -Wcore world.dt world.dmp

The current images exist in the pash/test branch under the test_tapes directory.

larsbrinkhoff commented 2 years ago

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!

PashPaw commented 2 years ago

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) ");

larsbrinkhoff commented 2 years ago

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.

larsbrinkhoff commented 2 years ago

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

PashPaw commented 2 years ago

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 form.

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.