mrapple@uop.edu (Nick Sayer) (11/15/88)
Well... I figured out how to patch the PCPICPM file to include GOCCP... Anyone who wants a copy of PCPICPM (or STARCPM) with GOCCP installed (and it even relocates properly with INSTALL.COM!) can send me mail. What I discovered is the map of the PCPI file. The addresses below are the addresses when you load PCPICPM into the TPA (most probably with DDT). If you want the file offsets, subtract 0100H from these addresses. 0100-01FF Code for the boot sector (track 0, sector 0) 0200-09FF CCP 0A00-17FF BDOS 1800-20FF BIOS 2100-30FF 6502 resident BIOS-type code 3100-311F relocation bitmap for boot sector (0100-01FF) 3120-321F relocation bitmap for CCP 3220-33DF relocation bitmap for BDOS 33E0-34FF relocation bitmap for BIOS 3500-36FF relocation bitmap for 6502 resident BIOS-type code Note that the relocation map size for a segment is the size of the segment in question divided by 8. Normally, the relocation maps for the boot code and 6502 code are all 0s. Here's how you figure out what to put in the relocation maps. First, assemble the code for the segment you want such that it's ORG is that of a CP/M system with the CCP starting at 0DC00H. Put this aside for now. Next, assemble the code for the segment with the ORG 0100H higher than it was last time. Feed these two files into a PCPI utility called GENBMAP.COM (see below). That will spit out a bitmap file. *** GENBMAP.COM HAS A BUG IN IT THAT OUTPUTS ONE SECTOR TOO MANY! MAKE SURE THAT THE BITMAP FILE IS THE RIGHT SIZE! *** Load the bitmap and code into the PCPICPM file and save it. ----- Now I'm sure you're wondering what GENBMAP.COM does. What it does is do a byte by byte comparison between the two given files. If the bytes are equal, it outputs a 0 bit. If they're not equal, it outputs a 1 bit. These bits are collected in the bitmap, such that there is a one-to-one match between the bits in the bitmap and the bytes in the input files. The MSB of byte 0 of the bit map is the first byte of the code, the LSB of byte 0 of the bit map is the 8th byte of the code, the MSB of byte 1 of the bit map is the 9th byte of the code, etc. Hope this is helpful and doesn't get me into trouble for giving away state secrets :-). BTW: Last time I heard, PCPI was no longer supporting their CP/M boards. Can anyone substantiate? Is there a PCPI CP/M users group? Would anyone like to start one? ---------------------------------------------------------------------- Nick Sayer | Packet Radio: N6QQQ @ WA6RDH | Fido: 161/31 uucp: ...!sdcsvax!ucbvax!ucdavis!uop!mrapple Disclaimer: You didn't REALLY believe that, did you? cat flames > /dev/null