home *** CD-ROM | disk | FTP | other *** search
-
- The disk SIG/M 246, in addition to the usual ancillary files, is
- entirely devoted to the library TORU.LBR. This is a specialized volume,
- which requires familiarity with Conway's game of LIFE and some previous
- knowledge of the programming language Convert.
-
-
- - - - - T O R U . L B R - - - -
-
-
- The motivation of the disk was to furnish an example of Convert
- programming, but the example is interesting in its own right. We have a
- typical example of programming in higher level languages, in which the
- language is useful for quickly obtaining results, but whose code does not
- deliver the speed and economy of which the CPU is capable. Convert can also
- be used as a macro generator, to produce efficient machine language code.
-
- Once one has surmounted the novelty of learning the rules of LIFE
- and working with some configurations which come readily to mind, it is
- found that some systematic investigations have to be made. Both the folklore
- and the few published results concerning LIFE show the results of following
- the evolution of all the patterns built up from a few live cells - say up
- to ten or twenty cells.
-
- Exploring all the configurations possible in a limited region is
- one possible investigation, which quickly turns tedious because of the
- exponentially large number of possibilities which have to be considered.
- Here there are presented three programs,
-
- TOR4.COM
- TOR5.COM
- TORX4.COM
-
- which examine all the states possible in tori of small dimensions - namely
- 4 and 5. Since TOR5.COM runs for a day and a half on a 5 MHz Intel 8085,
- it is readily apparent that it will be hard to make an approach to a 6x6
- torus, not to mention any larger ones.
-
- This brute force approach of working systematically through all the
- possibilities may be somewhat questionable. When it is possible, it certainly
- gives results in a straightforward manner. By analyzing the results which are
- accessible in this form, it may be possible to formulate a more subtle approach
- or even to refine the crude approach quite considerably.
-
- This refinement is already apparent in the programs here presented.
- Rather than work on a complex macro assembler in Convert, results at first
- were taken from the programs by executing them in HEX form with NDDT, using
- either ^P or NDDT's disk output capabilities to obtain results.
-
- First, it was found that the program had to do its own writing to
- disk, so that the results could be saved, edited, and reproduced. It was not
- hard to extract this subroutine form another program and incorporate it into
- the torus program.
-
- Next, it was found that there were too many repeated solutions,
- because of symmetry. The torus not only has the eightfold symmetry of a
- square (four rotations, with or without reflection) but the pattern can be
- moved around on the torus. Forcing the center state to be a live cell is not
- a very adequate solution to the problem. For the 4x4 torus, there are 128
- symmerty variants of a given pattern; for a 5x5 torus there are 200 variants.
- Not only does this produce a pile of paper, they all have to be sorted out.
- So, the assembly language program produced by Convert was modified to reject
- redundancies due to symmetry.
-
- Then, it is found that it is hard to keep a computer running for
- long hours at a stretch. Power failures are an ever present threat, but
- it also happens that other uses for the computer will be found, with a
- certain impatience to interrupt the long program to get something else
- done. Consequently an interrupt and restart procedure were called for.
- At the same time it is nice to have the program give some reassurance
- that it is still alive and how far it has progressed, when it is running
- for long periods without actually producing output.
-
- Consequently, while one of these programs is running, one may
- exercise one of the following options, by typing the corresponding key:
-
- = Type the current state (console only) as a binary
- number to see how far the program has advanced.
-
- S Close the output file TORn.DAT, then save a core
- image as RTORn.COM.
-
- ^C Close the output file and exit.
-
- As usual, ^C typed after ^S while console output is in progress will return
- to CP/M, and the output file (at least its current extent) will be lost. To
- restart a program that was saved, simply execute the saved core image. The
- same program may be restarted several times in succession. Since each new
- image uses the same output file, the previous TORn.DAT should be renamed
- before restarting, supposing that its contents should be preserved.
-
- A word of caution - if TOR4.COM or TORX4.COM (TOR5.COM runs too
- long to make its execution within TORU.HLP reasonable) is to be invoked
- by HJELP from a menu, be sure that there is a little space on the disk to
- hold the .DAT file (10K is sufficient), and that the disk is not write-
- protected.
-
- As the results of a program begin to accumulate, additional ideas
- begin to form as to what further results could be produced, what shortcuts
- could be taken, and so on. Indeed, if the program is interesting at all it
- will continue to evolve, and may end up with little resemblance to its
- original form.
-
- For example, the results could be presented in a much more visual form,
- without having to resort to pen and graph paper to truly appreciate them.
-
- The presence of TORX4.COM in the package is an example of this kind
- of reasoning. Since the area that can be examined in a reasonable time is
- limited to 25 or 30 cells, quite a few more possibilities in LIFE can be
- sampled if they can be spread over different kinds of areas. Thus, some more
- insight could be obtained by using a 4x5 rectangle in addition to the 4x4 and
- 5x5 squares. A rectangle can be closed up into a torus in several ways - by
- giving it a slight twist for example. It could be made into a Moebius strip
- or some other topological figure - all these variants imply a periodic pattern
- in the ordinary plane which is used for LIFE. None of the variants replaces
- analyzing an 8x8 torus; while the latter is beyond our reach, they will still
- help in going beyond 4x4.
-
-
- - - - - H J E L P . C O M - - - -
-
-
- The entire library TORU.LBR is set up as both a SUBMIT file and as
- a HELP file. TORU.SUB can be executed by typing
-
- RUN (TORU)
-
- but is probably not too interesting to most people because its only function
- is to use LU.COM to gather up TORU.LBR, which should NOT be on the disk prior
- to execution.
-
- On the other hand, much of TORU.LBR can be browsed by typing
-
- HJELP (TORU)
-
- and then working through the menus as in any other HELP file. HJELP has been
- slightly modified for this disk, so that it maintains its own private I-O
- area. This is necessary because of the new feature which has been added, that
- .COM files can be incorporated in the menus and executed as part of HJELP. If
- the file under execution also performs I-O to disk, it is essential that this
- not clash with the I-O which HJELP will need to continue offering its menu and
- passing to still further selections.
-
- It is still work for the future, to adapt embedded programs to the
- format of HJELP. For instance, HJELP works best with 22 line panels, but this
- is not the best format for a printed page. Thus if sample program output is
- simply incorporated without revision into a HELP library, as is done in TORU,
- its display will not be very aesthetic.
-
- Likewise, if a sample program produces copious output which runs off
- the screen before it can be analyzed, its value is greatly diminished and the
- reader is likely to be greatly annoyed.
-
-
- - - - - A N C I . L B R - - - -
-
-
- Since most SIG/M volumes contain a fixed set of ancillary programs,
- we have decided to collect them into a library, so that they can be passed
- as a group to a new disk which is under preparation. ANCI.LBR contains:
-
- USQ.COM unsqueeze squeezed files
- REC.COM recent version of REC80.COM
- CRC.COM cyclic redundancy check
- LU.COM pack and unpack libraries
-
- Two further ancillary programs,
-
- CNVSM.REC Cnvrt compiler
- CNVLIB.REC Cnvrt runtime library
-
- are not included in the library because REC will not run programs from
- the inside of a library, and to spare the user the inconvenience of having
- to unpack them. Those LIFE enthusiasts who merely want to examine some LIFE
- cycles will not need REC or Convert, but those who wish to see how Convert
- is used to transform a protocol into an assembly language program may wish
- to try out the process or to modify it.
-
- Finally, the programs
-
- RUN.COM execute submit files & library programs
- HJELP.COM browse through HELP files
-
- were left outside of ANCI.LBR. RUN has to be, of course; HJELP gives the
- most direct access to the main content of the disk and there is no need to
- have to type RUN ((ANCI) HJELP) (TORU).
-
- For example:
-
- To run the cyclic redundancy check, type
-
- RUN ((ANCI) CRC)
-
- To extract a library file, type
-
- RUN ((ANCI) LU)
-
- and follow the normal instructions for LU.
-
- To unsqueeze FILE.EQT, type
-
- RUN ((ANCI) USQ) FILE.EQT
-
- To see the main feature, type
-
- RUN (TORU)
-
-
-
-
-
- [end]
- [Harold V. Mcintosh, 9 August 1985]
-