Release Notes for The Vault version 3.00 Beta

Robert Fischer

January 18, 1991

This manual and the programs it describes are copyright © 1987–1991 by Robert P. Fischer. Permission is granted to reproduce this document in any form. It may not be changed except to alter its layout for printing. When distributing this document, you must distribute the original TeX form of the document along with it. No copy of this document, in machine-readable or other format, may be sold for profit, but it may copied freely for non-commercial purposes.

The programs that this manual describes are also copyright © 1987–1991. They may be given away under certain conditions. Run the programs for more details.

This manual and the programs it describes are distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. In particular, no warranty is made about the accuracy of this manual. You assume all risks of using these products. The author is not responsible for damages arising from use of this manual or the programs it describes, whether caused by negligence or other fault on the part of the author, or by any other cause.







I originally wrote The Vault in Pascal for a number of reasons: OSS/CCD Personal Pascal works well even on a 520 ST with floppy, which is what I originally worked on to develop Mi-Print, my first large program. On a 1040, it can all fit on a RAMdisk, making compiling quick. Once the compiler loads, it compiles its code quickly, shortening the edit-compile-debug cycle. And at that time, I only had the Alcyon C compiler available, which left much to be desired. Finally, if I really needed something in C, I could write it in C and include it in my Pascal program.

But in time, for a variety of reasons, I started writing all my programs in C. Mark Williams C with the CSD source debugger, an invaluable tool not available with Pascal, had come out. I found that because of the restrictions in Pascal, I was writing lengthy code to do what I could do in a couple of statements in C, slowing down my Pascal programs and making them longer. Pascal didn't allow global variables which are visible from only one module, making global variables rather messy. Pascal doesn't allow initialized arrays or variables. Pascal doesn't allow computed constants. There's no way to tell Pascal a default include directory, nor can Pascal include a file from inside an include file. Therefore, I started writing many programs in C, but The Vault remained in Pascal.

I eventually started having problems including my C code in The Vault. I had originally just compiled it with the Alcyon compiler, but Mark Williams C used a different object file format and I wanted to get Alcyon C off my hard disk because it took up space. Converting everything to Mark Williams format didn't work, and I couldn't convert it all to Alcyon/Pascal format because there's no program to do that. I eventually compiled into Alcyon format with Mark Williams C plus the MADmac assembler, a less than perfect combination. But I realized that if I ever wanted to release the source code, few people would be able to compile it because few people have Pascal, Mark Williams C and MADmac.

Finally, I started to come across C code which I wanted to include in The Vault but couldn't because it did something fancy — it's next to impossible to include C code which uses any C library calls (especially malloc()) or GEM. Often, I would have to hand translate from C to Pascal and end up with two versions of everything. One large window module which I wrote in C I couldn't include in The Vault at all (I still haven't, but I plan to some day).

Personal Pascal 2.0 came as the final blow because it used a different object file format. I couldn't develop my LynxLib in Pascal with it because I had no librarian for the new format. Then OSS went out of business. I realized that I was stuck with Pascal version 1 as it stood.

Therefore, I decided to convert The Vault to C. I didn't like any of the Pascal to C translators I saw because they made an ugly C program which couldn't easily be modified, and didn't account for vast changes in code like a change in string formats. I thought of converting one module at a time to C, but rejected that because converting one module requires a lot of work interfacing the new code with Pascal, which is esssentially wasted if you plan to convert the entire program to C eventually. Therefore, I converted the whole program, tested each module bottom-up and put them together to get a program which worked almost exactly like The Vault 2.01. I then added many improvements I had wanted to add to end up with the The Vault 3.00.