Hyper-Net (aka HyperKludge) By Glenn Everhart 9/4/1988 Hypertext systems come in two flavors: the text-based ones, in which pointers are from parts of text/graphics/etc. files to other parts of such files, and card-based systems. In these, the pointers are from "cards" to other "cards". The first type is very much nicer to use for documents, since very fine-grained cross references are possible. However, it tends to require that all accesses to the data be via hypertext-aware tools. The "card" type systems (e.g. NoteCards) are much easier to deal with, at the cost of coarser- grained linkages. HYPNET (which I initially planned to call HyperKludge) is a very simple hypertext card type system designed to be usable on just about anyone's system. It can be thought of as a directed graph or network of nodes which have arbitrary interconnections. You move from one "node" to another "node", and at each one you can perform some action. These actions might be things like editing files, viewing text, drawing graphs, retrieving data, or the like. At each node, you can follow the paths of the graph to other nodes. Also, your actions are allowed to alter the paths permitted. This is a bit like a menu system, but differs from some menu systems in that it is NOT hierarchical. On a windowed system, the actions would be spawned with no waiting, so that several could be active at a time. To allow HYPNET to run on any terminal, I used default LIB$SPAWN, so this concurrency will not normally appear. (Of course, if the action is a SPAWN/NOWAIT, it may appear even so, but the exit of the "parent" spawn will probably kill it.) A later refinement may allow selection of wait/nowait for spawns. One use of such a beast is to provide a more "random access" document, consisting of a bunch of files. One might have, for example, a set of one-chapter files with movement allowed back to the contents, introduction, or some general appendices at any time, and some movement across chapters where non-sequential threads of interest can be defined. By editing the node and link lists, you can grow such a network as you go, too. The following file is for the mini-hyper-notecard system HypNet.For. It is expected to be available in the current directory and be named HYPDAT.DAT. Rules are as follows: 1. Nodes have + in column 1. When a node is active, the command (follows the nodename line and has a $ in column 1) is spawned, and then a menu is displayed showing successor nodes. These have > in column 1 and must match nodenames EXACTLY (case, too.) Selection of a successor node then locates THAT node and fires off ITS command, and so on... Actually, if the command has a & in column 1, it will be fired off with SPAWN/NOWAIT instead of just SPAWN. 2. There MUST be a node named START someplace in the file. It is where the system starts up when initially begun. 3. Node names can be long. Up to about 75 characters are available. 4. Any legal VMS command can be used. Spawn/nowait is available for asynchronous operation. (Use & in col 1 for this behavior.) 5. Viewing the network or changing it is accomplished (kludge! ecch!) by editing this file or looking at it. (Hey: this is a text mode program and if you want something better, YOU can always add to it.) 6. Access is sequential (for now; another big PFBBTPHBFPHBFHTBTTT) but this file is closed during all command executions, so edits to it take effect next time around. 7. A menu selection of item 99 restarts things. Invalid file formats may lead to program exits. Status of the lib$spawn is currently not checked, however. 8. A VT100 or other similar ANSI terminal is assumed. Only minimal ANSI support is needed, though, namely clear screen and cursor positioning. That stuff is all in separate subroutines. Fix it yourself if you want for other terminals. 9. Up to 16 successor nodes can be defined at any node. No more for now. There has to be SOME limit, and I hope that's more than anyone will need. If it isn't, define some more nodes to keep your nodes from getting too dense. 10. There is no logical limit to the size of a network. However, this version has no limit to how long it'll take finding anything, either. Smallish is beautiful. 11. Reply 99 to successor number to go back to start. Reply 98 to exit the program. 12. In the Amiga version of the program, a command line with second character & will automatically have an ENDCLI issued after the action completes. Initial character $ will issue NEWCLI and initial character & will issue NEWSHELL (AmigaDos 1.3 command) in column 1 for the action lines. Commands are passed to the shells via scratch files in ram:. There are 9 unique filenames used in succession, a crude attempt to avoid problems with shells that remain active with locked input files for extended periods. This is not a problem with the VMS version. Enjoy, and please make updates or enhancements to this thing available via DECUS too. Glenn Everhart (example below of a crude script. Try the HYPDAT.DAT script on Amiga for a working script that does a small amount of useful stuff on Amiga.) +START $edit HYPDAT.DAT >node1 >node2 +node1 $t node1.txt >node2 >node3 >node4 +node2 $t node2.txt >node1 >node5 >node6 +node3 $li node*.txt >node5 >node1 >node6 +node4 $t node4.txt >node1 >node6 +node5 $t node5.txt >node1 >node3 >node6 +node6 $t node6.txt >node4 >node1 >node3 ; example database for hyper-network ; each node has plus in front, followed by what that node ; should do. Links are preceded by greater-than. The commands ; are preceded by dollar sign. Ordinarily the node network ; node names would be more meaningful than here; this is just ; for testing. - Glenn Everhart ; HyperKludger....