Disk Information This disk contains five Pascal/Z programs: two general purpose utilities: PRINT and FF; two Pascal development aids: PP and XREF; and a text processor: TP. The assembly language and other Pascal/Z files on the disk contain procedures used by these programs. The file that you are now reading exists in two forms on the disk: DISK.DOC is obtained by running TP with DISK.TEX as input. These programs have been donated to the Z User's Group. They are guaranteed only to do what Iwant them to do on my system. Use them, alter them, and give them away to friends, but please do not attempt to market them. If they were saleable products, I would have sold them. If you make substantial improvements to them or discover substantial bugs in them, please let me know. General Description These notes are intended to help you get the programs running. When you have got TP working, you should be able to obtain specifications for them by processing SYSTEM.TEX. Everybody writes their own print utility; mine, PRINT, is written for a specific printer, the I.D.S. 460G "Paper Tiger", but the printer-dependent code is localized (and documented!) to simplify changes. PRINT will not send and strange codes to the printer unless you select fancy options, such as boldface printing or proportional spacing. FF is also written specifically for the I.D.S. 460; it transmits all the codes necessary to straighten the printer out when it has got into a muddle, and it also sends as many form-feeds as you want. PP is a Pascal/Z pretty-printer. It accepts a Pascal source program (a .PAS file, not a .LST file) and produces a ___ .PPP file containing an equivalent program with improved layout. The idea is that you work with a .PAS file and generate a .PPP file only when you want a fancy listing. The .PAS files on this disk are all squashed up and unreadable, but you can use PP to massage them into a more presentable form. XREF is a cross-reference generator that reads the output of PP and produces a .XRT file containing a cross-reference table of user identifiers. (It is really an index of user identifiers, but I am not going to try and change accepted terminology.) The cross-reference table includes identifiers that start with a lower case letter, are not part of a quoted string, and are not inside a comment of the form { ... }. I Disk Information Page 1 write my programs entirely in lower case and PP converts Pascal reserved words to upper case, and so this arrangement suits me very well; if you don't like it, it is not difficult to modify XREF to your own requirements. The submit file PRETTY.SUB shows how PP and XREF are used together. If you use one of the flashy new "what you see is all you've got" style text processors, you will find that TP is something of a dinosaur. I wrote it because none of the text processors available at a reasonable price satisfied my somewhat eccentric requirements. (I use a small set of relatively high-level commands suited to my work but I do not require high quality final output, because I usually send the material to someone with better typesetting equipment than mine. TP does several things automatically, including section numbering and cross-referencing, and this makes reorganizing text straightforward. It does not do certain "basic" things, such as justify text, because these are not part of my requirement.) TP is not yet complete, but it is still largely device independent. The only assumption that it makes is that the printer can handle a carriage-return that is not followed by a line-feed. The next revision will probably contain code for special character sets, etc, which will be device dependent, so now seems a good time to give it to ZUG. The best way to learn about TP is to use it to format the file SYSTEM.TEX, and then compare SYSTEM.TEX with SYSTEM.DOC. If you like TP and want to be informed of future developments, let me know. Implementation Notes The disk contains a .SUB file for each Pascal program. Note that all of the programs except FF require CONSTS.PAS, TYPES.PAS, GETFILES.PAS, and PROCS.PAS during compilation, and that PRINT, XREF, and TP also require assembly language subroutines. The following suggestions may help to get you started. (1) Compile the programs by executing FF.SUB, PRINT.SUB, PP.SUB, XREF.SUB, and TP.SUB. The .SUB files assume that everything happens on the current system disk, which must of course contain the compiler, assembler, linker, MAIN.SRC, etc. (2) Use PRETTY.SUB to obtain a pretty-printed listing of each program. This procedure requires the name of a Pascal source file as a parameter. For example: SUBMIT PRETTY FF Disk Information Page 2 PRETTY uses PRINT to print a listing of the pretty-printed program and its cross-reference table. By default, PRINT assumes 11" paper and 6 lines/inch; it prints 60 lines of text on each page, printing page headings and using form-feed characters for pagination. It does not truncate or wrap long lines. (3) Test TP by formatting this file with it. The command TP DISK should create a file DISK.DOC identical to the file DISK.DOC on this disk. If it does, use TP to format the documentation contained in the files SYSTEM.TEX, SYSUT.TEX, and SYSTP.TEX. The command TP SYSTEM does this, creating the formatted manual SYSTEM.DOC, the table of contents file SYSTEM.CON, and the file of cross-references SYSTEM.REF, which is of no great interest to the user. Computers being what they are, you will probably get stuck at some point in the proceedings. Unfortunately, I cannot predict what will go wrong, but here are some possibly alarming symptoms. (1) All of the programs work with Version 4.0 of the compiler and I believe that all except PP also work with Version 3.0. The problems with PP under Version 3.0 concern passing one-byte integers by reference. (2) Some of the operations are quite slow. My system requires about 15 minutes to compile TP. Furthermore, TP will require at least 7 minutes to process SYSTEM -- it runs at about 1200 words per minute under Cache BIOS with floppy disks. (3) Large intermediate files will be created. Check the amount of free disk space before each compilation, especially before when compiling TP. The submit procedures delete files as soon as they are no longer required. (4) I have had no memory problems running Cache BIOS in 128K. I do not know whether TP can be compiled on a 48K machine. It should run on a 48K machine, but ___ there will be less space for cross-references and "keeps". The simplest way to reduce the memory requirements of TP would be to split it in two: part 1 would initialize the global tables and chain to Disk Information Page 3 part 2 which would do the work. (5) Some of the cross-references in SYSTEM.DOC will be unsatisfied (there will be statements like "see Section 0.0.0"). There are two reasons for this: one is that TP requires two passes to satisfy forward references, and the other is that there are references to sections of the manual that are not on this disk. (6) TP assumes 12 characters/inch by default. Each line is preceded by 6 blanks (0.5"), and contains at most 78 characters (6.5") of text. Thus the text fits onto 8.5"x11" paper with 1" margins. If your printer prints 10 characters/inch and you use 8.5" paper, the lines will be too long. (They will also be too long to display on an 80-column screen.) You can tell TP to print shorter lines by inserting the command \HL 5 65 at the front of the file: look at DISK.TEX to see where it goes. (7) PRINT has a "T" option for printing .DOC files produced by TP. You can say, for example: PRINT SYSTEM.DOC T1,5 This is supposed to print the first 5 pages of SYSTEM.DOC. Unfortunately this option does not work on my system. When the "T" option is selected, the printer seems to ignore the ETX/ACK protocol. Please let me know if you manage to fix the bug. In the meantime, use PIP LST:=SYSTEM.DOC instead. Good luck! Peter Grogono Metonymy Productions 4125 Beaconsfield Avenue Montreal, Quebec H4A 2H4 Disk Information Page 4 .