Software Spotlight: Harvard Presentation Graphics A.00(1.00)

edited October 2016 in Software Spotlights
Harvard Presentation Graphics A.00 is the very first version of the once popular graphing software "Harvard Graphics". It was much easier to use than its competition, but this initial version was most notable for its copy protection scheme.

https://winworldpc.com/product/harvard-graphics/a00

Harvard%20Presentation%20Graphics%20A.00%20-%20Menu.png

HPG provided an easier, friendlier, way to create high quality business graphs and slide shows. At release, it competed against many graphing products such as PFS:Graph (AKA IBM Graphing Assistant ), Microsoft Chart, ChartMaster, and Cricket Graph, just to name a small few. A Windows port was released in 1991, but it lost out to Microsoft Powerpoint.

There is a comprehensive list of presenting/graphing programs in the September 22, 1986 InfoWorld

Harvard%20Presentation%20Graphics%20A.00%20-%20Edit.png

This software is designed for IBM PC/XT PC/AT and compatibles. Requires MS-DOS 2.0 or higher, 256K ram or 386K for VDI devices, and a hard disk or two floppy drives. Supports Hercules, EGA, and CGA graphics.

Harvard%20Presentation%20Graphics%20A.00%20-%20Graph.png

It also features built in on-screen "slide show" functionality, supports a variety of output devices, and can exchange data with Harvard Professional Publisher, PFS:Write, Lotus 1-2-3, Symphony, and PFS:Graph.

Software Publishing Corporation products used an odd letter-based version numbering system. For example, you might have versions A:00, A:01, A:02, B:00, B:01, and C:00. Sometimes they use a colon, but in this product they use a period. In this case "A.00", or just "A" means it is version "1.00". This style was dropped and the product name shortened for the release of "Harvard Graphics 2.0".

Much software of the day implemented copy protection, however businesses were increasingly looking to minimize risk and trouble by investing their money on non-protected titles instead.

Despite that, Harvard Presentation Graphics A.00 used an odd protection scheme.

To use the software from floppy, the copy protected program disk must be in the A: drive. Back in the day this would have been a pain if you had a 3.5" drive as A: and a 5.25" as B:.

You are permitted to install the program to a hard drive only 5 times, and the protection keeps track of this.

The protection method stores the text "SPC1986" in the gap area immediately following sector data. This is present on sectors 1-5 on both sides of cylinder 5.

On a real floppy drive, the post-sector gap acts as a cushion while writing individual sectors. A drive may spin a little too fast or too slow. If it is a little too slow then it will overwrite some of the gap data, and if it too fast it will leave extra garbled data in the gap. This helps prevent the system from overwriting the beginning of the next sector.

It is possible to read this data by using a special "diagnostic" track read. However, a normal floppy disk controller can not write specific data to this area.

To run from a floppy, the protection only checks one of these sectors.

However when you perform an installation, it WRITES to one of the five sectors on head zero, clobbering the "SPC1986" message that follows it. There is no way to undo this (Unless you are me! :P ) and the remaining sectors indicate how many installs are left. You can think of this like punching out one of five slots on a paper ticket.

It insists on performing a "de-installation" before you are permitted to re-install. This does not seem to do much, as it does not and can not "reclaim" an installation. You can satisfy the de-install tool simply by pointing it to an empty hard drive root directory. This may be to handle the case where a customer's hard drive has been replaced.

Once installed to the hard drive, it does not require the floppy to be in the A: drive. But the installation is protected against file copying. It appears to record the application's physical cluster location on the hard drive. This was a common protection method, but disk defragmenters totally screw this up.

Interestingly, during the install or de-install process it warns that you should not use a 1.2mb floppy drive. Writing to a 360k disk in a 1.2mb drive can sometimes muck things up. But the odd part here is most IBM PC/AT users would have had a 1.2mb drive as their A: drive.

The copy protection seems to fail on later AT class computers. It may be a controller compatibility issue, but I'm not 100% sure. I did successfully test this on several XT class computers.

Using the following commands I was able to make a PSI image that works in the PCE emulator:
pfi disk01.scp -r 500000 -c 0-39 -p decode pri disk01-scp-mfm.pri
pfi disk01.scp -r 250000 -c 40-41 -p decode pri disk01-scp-fm.pri
pri disk01-scp-mfm.pri -m disk01-scp-fm.pri disk01-scp.pri
pri disk01-scp.pri -p decode auto disk01-1.psi
psi disk01-1.psi -e position -1 -c 5 -h 0-1 -s 1-5 -p delete disk01-1.psi
pri disk01-scp.pri -c 5 -h 0-1 -s mfm-min-size 1024 -p decode auto disk01-2.psi
psi disk01-2.psi -e crc-data 0 -e position -1 -c 5 -h 0-1 -s 6-9 -p delete disk01-2.psi
psi disk01-2.psi -m disk01-1.psi disk01.psi

What the above does is store 1024 bytes for each protected sector (1-5 on both sides of cylinder 5) but the sector size is still reported as 512 bytes, this preserves the "SPC1986" message after the data.

This enables you to run HPG from the floppy disk, however it will not successfully install to a hard drive. This may be due to the "perfect" emulation of the floppy drive, which makes it impossible to randomly clobber the GAP data like a real floppy would.

As far as I can tell, no unprotect exists for this version.

This is likely because several months after the release of A.00, SCP released A.01. This was a minor update that did away with crazy copy protection.

HPG.png
Harvard Graphics became extremely popular in the DOS world of the late 1980s. If you wanted to graph something on DOS, that was the program you would leech^H^H^H^H^H buy.

A Microsoft Windows version was released in 1991, however in the Windows world Microsoft PowerPoint had beat it by about a year and had already gained market traction.

In 1996 it was purchased by Serif, and interestingly it seems they still sell some versions of it: http://www.serif.com/harvard-graphics/

Comments

  • n 1996 it was purchased by Serif, and interestingly it seems they still sell some versions of it: http://www.serif.com/harvard-graphics/

    Clicking the link, I receive "Currently, Harvard Graphics software is only available to customers in the USA."

    Now the preferred method is geo-blocking. :)
  • SomeGuy wrote:
    However when you perform an installation, it WRITES to one of the five sectors on head zero, clobbering the "SPC1986" message that follows it. There is no way to undo this (Unless you are me! :P )

    Hi,
    This is cool !
    I have interest in how you restore/undo it.
    Can you share the method in detail ?
    Thank you. :)

    Best regard,
    coolhaken
  • @SomgGuy

    Thanks for share the rare original A00 version.

    Yes, it doesn't work on newer machine with 1.2MB Drive.
    (It seems to work on 8088 with 360KB Drive.)

    Also it can't be installed (recognize) with large HDD capacity.

    I wonder how to initialize (restore) installation limitation.
    (I've checked RESTORED.TC)
  • The PCE tools have the ability to export a decoded MFM stream to a text file. You can then edit the text file and convert it back in to a Trancopy image.

    This lets you not only edit sector data, but also the address marks, sector headers, sector footers, and gap data.

    The used original had this at the end of track 5 sector 5:
    ...
    04 00 00 E9 13 01 FF 76 0A 8D 46 E2 50 8B 76 0A
    8B 04 32 E4 40 50 9A 3F 00 81 0E C6 46 C8 01 8B
    76 0A 8B 04 32 E4 89 46 C6 83 7E C6 01 7C 34 C7
    46 FA 01 00 8B 76 FA 03 76 0A 80 3C 61 B8 00 00
    72 01 40 80 3C 7A B9 00 00 77 01 41 22 C1 D1 E8
    73 04 C6 46 C8 00 8B 46 FA 40 89 46 FA 48 3B 46
    C6 75 D1 8D 46 E2 50 9A 2D 01 70 01 C7 46 FA 01
    00 C6 46 CA 01 C7 46 F8 00 00 8B 76 FA D1 E6 FF <-sector data
    C2 E0 4E <- first two bytes are the CRC
    01/10 <- crap left from the drive head ending write mode. This sector has been re-written. 
    F0/02
    80/0A
    F3 88 C8 48 78 <- mangled part of copy protection ID
    12/80
    12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12  <- the rest of the gap data
    12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12
    12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12
    12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12
    12 12 12 12 12 12 12 12 1F FF FF FF FF FF FF FF
    FF FF FF FF
    RAW 0 1 0 1 0 1 0
    A1/04 <- sync bytes
    A1/04
    A1/04
    FE   <- begin next sector
    

    So, I edited it to resemble the remaining unwritten protected sectors:
    04 00 00 E9 13 01 FF 76 0A 8D 46 E2 50 8B 76 0A
    8B 04 32 E4 40 50 9A 3F 00 81 0E C6 46 C8 01 8B
    76 0A 8B 04 32 E4 89 46 C6 83 7E C6 01 7C 34 C7
    46 FA 01 00 8B 76 FA 03 76 0A 80 3C 61 B8 00 00
    72 01 40 80 3C 7A B9 00 00 77 01 41 22 C1 D1 E8
    73 04 C6 46 C8 00 8B 46 FA 40 89 46 FA 48 3B 46
    C6 75 D1 8D 46 E2 50 9A 2D 01 70 01 C7 46 FA 01
    00 C6 46 CA 01 C7 46 F8 00 00 8B 76 FA D1 E6 FF <- sector data
    C2 E0 53 50 43 31 39 38 36 4E 4E 4E 4E 4E 4E 4E <- first two bytes are CRC, followed by "SPC1986"
    4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E <- remainder of gap
    4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E
    4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E
    4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E 
    4E 4E 4E 4E 4E 4E 4E 4E 4E 00 00 00 00 00 00 00 <- in theory a disk head can get up to here before switching off write mode, but it usually wont. Space is left so we don't overwrite the next sector. 
    00 00 00 00 00
    A1/04 <- sync bytes
    A1/04
    A1/04
    FE   <- begin next sector
    
  • Thanks for inform me.

    Yes, I did check (see) the sectors by TE.EXE of TransCopy Editor.
    You seems to edit (recover) Track 5 / Side 0 / Sector 5.

    I really didin't know that it is possible to edit by PCE, hehehe.
  • Thanks a lot, SomeGuy.
    Very useful information. :)
  • The PCE tools have the ability to export a decoded MFM stream to a text file. You can then edit the text file and convert it back in to a Trancopy image.

    This lets you not only edit sector data, but also the address marks, sector headers, sector footers, and gap data.

    I have finally studied this thread carefully. Amazing work!

    I am also interested in using this method to recover images.

    However, I wonder if the decoded MFM stream can be converted directly back into KF .raw tracks.

    If so I could use some starting advice, but can probably figure out the rest once started.
  • >However, I wonder if the decoded MFM stream can be converted directly back into KF .raw >tracks.
    >If so I could use some starting advice, but can probably figure out the rest once started.

    It is still impossible to convert RAW/PRI image to SCP or Kryoflux but possible to Transcopy image (.TC).

    It is up to the developer of SCP or Kryofux.
    I think developer seems not to be interesed in coverting TC (or RAW image) to KF/SCP.
  • Converting to Kryoflux stream with the PCE tools is buggy and not documented. A PRI or TC can be converted as follows:

    convert PRI to KF
    pfi -p encode pri image.pri disk1.pfi
    pfi disk1.pfi track00.0.raw

    convert TC to KF
    pfi -p encode pri image.tc disk1.pfi
    pfi disk1.pfi track00.0.raw

    But the information about the drives RPM speed is usually off by a factor of 8, and confuses the Kryoflux software. If you open the resulting Kryoflux stream file in the HxC disk tools and re-save it, then that MAY create a usable stream file, although I believe that still contains some incorrect information.

    HxC can also convert KF streams to SCP, but the last time I tried it with KF streams created with the above method, the SCP would not write a usable disk. Probably due to the buggy incorrect information remaining in the file.

    Also, converting TC to text:
    pri image.TC -p decode text-mfm image.txt

    Converting text back to TC:
    pri -p encode text image.txt image.tc

Leave a Comment

BoldItalicStrikethroughOrdered listUnordered list
Emoji
Image
Align leftAlign centerAlign rightToggle HTML viewToggle full pageToggle lights
Drop image/file