undefing the alignment macro has no effect (the effect is only that the mem read/write macors are replaced by endiansafed -i guess - versions, but that has no effects on byte r/w functions involved)
checking into DOS_PSP::MakeNew() i found that the sizof (sPSP) is 260
the pt where it is supposed to be allocated comes to 0x1280 exactly 256 bytes below where the .com-s code was loaded at 0x1380... so the math adds up, thats how the first DWORD at 0x1380 get wiped by the line
for (i=0;i<sizeof(sPSP);i++) mem_writeb(pt+i,0);
will try to squeeze more info (like where pt gets its value)
think i'm onto something:
the line
loadseg=pspseg+16;
in DOS_Execute is supposed to protet against this, and it would, if the struct size were less than 256, which it probably would be, if the structure were packed, which it is not (on my platform/compiler)