mwm@violet.berkeley.edu.UUCP (01/16/87)
This seems to have gotten lots, so here's a repost. Enclosed is a shar archive with an alphabetical index of all the software on the first 46 Fish disks (all I have at the moment), plus software (mostly CLI scripts) for semi-automatically adding new disks to the index. See the README file for a description of both the index and how to use the software. Unless there is a great outpouring of requests, I don't plan on posting updated versions of the Index; you should have everything you need to create updated versions on your own. <mike #! /bin/sh # This is a shell archive, meaning: # 1. Remove everything above the #! /bin/sh line. # 2. Save the resulting text in a file. # 3. Execute the file with /bin/sh (not csh) to create: # Index # README # c # check # check.broken # check.edit # check.nopipe # d # detab.c # disk # disk.edit1 # disk.edit2 # disk.nopipe # setup # sort # sort.edit # sort.nopipe # This archive created: Fri Jan 16 02:05:41 1987 export PATH; PATH=/bin:/usr/bin:$PATH echo shar: "extracting 'Index'" '(27653 characters)' if test -f 'Index' then echo shar: "will not over-write existing file 'Index'" else sed 's/^ X//' << \SHAR_EOF > 'Index' X13 3dsolids1.bas X33 3dstars 3d version of Leo's "stars" program (also on this disk). X27 ABdemos Amiga Basic demos. NewConvertFD creates .bmaps from X36 Acp A copy program with filename expansion and argument X13 addbook.bas X32 Address Extended address book written in AmigaBasic. X29 AegisDrawDemo Demo disk of the Aegis Draw program. This is the X40 Ahost Amiga terminal emulator featuring ANSI terminal emulation, X13 alg1.bas X13 algebra.bas X2 alib Object module librarian. X34 Alint Support files for Gimpel lint to make it useful on the X17 Alive! Digitized images X13 amgseq1.bas X13 amiga-copy.bas X12 amiga3d Shows a rotating 3 dimensional solid "Amiga sign". X14 amiga3d Shows a rotating 3 dimensional solid "AMIGA" sign. X1 amigademo Graphical benchmark for comparing amigas. X18 AmigaDisplay Yet another variation of a terminal emulator program. X40 AmigaMonitor Dynamically display the state of the machine, including X1 amigaterm Terminal emulation program with xmodem upload/download X20 AmigaToAtari Source code for an Amiga to Atari ST object code format X41 AmigaVenture A program which allows you to write your own Infocom-style X39 AnsiEcho Some commands written in assembler. Includes an X40 Arc The ubiquitous compressing archiver program that X26 Archx Yet more programs for bundling up text files and X40 AreaCode Program which decodes area codes into state and locality. X12 ArgoTerm Yet another terminal emulator program. However, this X12 arrow3d Shows a rotating 3 dimensional wire frame arrow. X35 ASendPacket Example program for sending multiple packets asynchronously X18 Ash Prerelease version of a C-shell like shell program. X46 Asm A shareware macro assembler, submitted by the author. X28 Backgammon Another game in AbasiC by the author of Monopoly. X1 balls Simulation of the "kinetic thingy" with balls on strings X13 band.bas X4 banner Prints horizontal banner (across screen). From Decus X13 basic.bas X43 BasicBoing An AmigaBasic program which shows animation by page X43 Bbm Demo copy of B.E.S.T. Software's Business Management X30 Bbs A BBS for the Amiga (BBS-Amiga Version 1.1). X43 BbsList A list of Bulletin Board Systems which support the X14 beep Source for a function that generates a beep sound, like X4 bgrep Another grep like utility, also using the Boyer-Moore X33 Bigmap Program which demonstrates how to use the low-level X4 bison A replacement for unix "yacc" command. This is from X19 BlackJack A line oriented (no graphics) blackjack game. X34 Blink A linker written as a replacement for Alink. Fully X40 Blink A linker written as a replacement for Alink. Fully X15 Blobs A simple graphics program, reminiscent of the unix "worms" X4 bm A grep like utility using the Boyer-Moore algorithm. X13 bounce.bas X13 box.bas X13 brickout.bas X18 Browser A program that lets you wander around a file tree and X34 Browser Updated version of the browser program released on disk X34 Btree Routines to implement a B-tree algorithm and several X34 Btree2 Previous (original) version of btree routines. X26 C-kermit Port of the popular "kermit" program, a flexible X34 Calendar Appointment calendar that lets you visually add and X32 Calendar Calendar/diary program written in AmigaBasic. X13 cancav.bas X13 cancav1.bas X13 canvas.bas X13 cardfi.bas X13 cardfi.correct X13 cardfi.startup X43 Cc C compiler frontends for Manx and Lattice C, developed X2 cc Unix-like frontend for Lattice C compiler. X29 Cc Version of the Unix like C compiler frontend program, X3 cforth A highly portable forth implementation. Lots of goodies. X13 charstrip.bas X46 CheckModem A program which provides for executing other programs X13 circle.bas X15 Clock A simple digital clock program designed to be small and to X36 Clock Updated version of the clock program released on disk X45 Clue Clue board game. Nice. X13 colorcircles.bas X13 colorcircles1.bas X1 colorful Shows off use of hold-and-modify mode. X6 compress Compress reduces the size of the named files using X10 conquest You control an interstellar empire, decide which star X24 Conquest You control an interstellar empire, decide which star X5 cons Console device demo program with supporting macro routines. X35 ConsoleWindow Example program for finding the intuition pointer to an X43 Copper A copper list disassembler. Dumps the contents of a X13 Copy.abc X40 Cosmo An "asteriods" clone. Suggested $6 donation. X28 Cpp This is a copy of the Decus cpp, ported to the Amiga. X28 Cribbage Another game in AbasiC by the author of Monopoly. X36 Csh Csh like alternative to the CLI, with changes to X24 Csh Second release of a csh-like alternative to the X41 Csh Version 2.03 of Matt's Csh-like shell. Executable only. X38 CSquared Implementation of Circle Squared algorthm from Sept '86 X13 cubes1.bas X13 cutpaste.bas X6 dadc A digital computer impersonating an analog clock X13 date.bas X15 Dazzle An eight-fold symmetry dazzler program. Really pretty! X33 Dbuf.gels Sample program that demonstrates the animation routines X2 dbug Macro based C debugging package. Machine independent. X41 Dbug Macro based C debugging package. Machine independent. X10 dehex Simple little program to convert hex format file into X14 dex Program to extract documentation in a human readable X40 Dg210 Data General D-210 Terminal emulator. Suggested $12 X1 dhrystone Dhrystone benchmark program. X36 DietAid Diet planning aid to allow the user to compile lists X14 dimensions Programs to demonstrate three and four dimensional graphics. X35 DirUtil Nice little program to wander around directory tree X40 DirUtil Nice little program to wander around directory tree using X35 DirUtil2 Another variant of dirutil. X27 Disassem A simple 68000 disassembler. Reads standard Amiga X33 DiskMapper Displays sector allocation of floppy disks. X20 DiskSalv Program to recover files from a trashed AmigaDOS disk. X39 Display Graphics display program to display HAM images from a X13 dog star data X13 dogstar.bas X40 DOSHelper Windowing program to print help information about various X32 DosPlus1 First volume of CLI oriented tools for developers. X32 DosPlus2 Second volume of CLI oriented tools for developers. X1 dotty Source to the "dotty window" demo on the Workbench disk. X11 dpslide A slide show program for displaying graphic images X13 dragon.bas X13 draw.bas X39 Driver Demo device driver in source. Functions as a RAM disk X41 DualPlayField An example of using a dual-playfield screen, using a X27 DvorakKeymap Example of a keymap structure for the Dvorak keyboard X13 dynamictriangle.bas X36 Echo An improved echo command with options to control X46 Egad A gadget editor from the Programmers Network. Very X13 Eliza.abc X13 eliza.bas X29 Enough A new CLI execute file command that tests for various X13 ezspeak X13 ezterm.bas X3 ff A very fast text formatter, controlled exclusively by X35 FileRequester A very nice file requester module for lattice C programs, X14 filezap An updated version of the file zap utility first released X10 filezap Patch program for any type of file. Executable only, X13 fillibuster.bas X30 FineArt This is a collection of works from some of the best X15 Fish "A demo program which runs an AnimOb in a double buffered X36 FixHunk A program to modify executable files to allow them to X10 fixobj Strip extraneous garbage off end of object files X38 FixObj Strip extraneous garbage off the end of object files X36 Fm File mapper program. Uses trackdisk device to grab X30 FontEditor Does what the name implies, edits font's. X13 fractal.bas X13 fractal7.bas X13 fractalrep.bas X13 fractalrep1.bas X1 freedraw A small "paint" type program. Free drawing, boxes, X5 freemap Creates a visual diagram of free memory. Comes with X13 fscape.bas X1 gad "Fun with Gadgets". Demonstration program for use X41 GetFile A very nice file name requester. Unlike the earlier X14 gfxmem An updated version of the graphical memory display X1 gfxmem Graphical memory usage display program. Watch your X14 gi Converts DPaint brush files to C source files "necessary X13 gomoku.bas X3 gothic Gothic banner printer. Prints DOWN the page, rather X4 grep Decus grep (Get Regular Expression and Print). Useful X13 gstest.bas X13 gstest1.bas X7 Hack This is Version 1.0.1. Executables only. X8 Hack This is Version 1.0.1. Sources for executables on disk 7. X25 Hack This is Version 1.0.1E., with Amiga graphics enhancements. X13 haiku.bas X13 haikucont.bas X13 hal9000.bas X1 halfbrite Sample program that demonstrates "Extra-Half-Brite" X13 halley.bas X38 Handler An example that implements an AmigaDos Handler (device) X20 Hash Small example program that computes the AmigaDOS directory X13 HauntedM.bas X20 Hd Hex dump utility using some ideas from Mike Higgin's X1 hello Demonstrates creation of a simple window, "hello world". X13 hidden.bas X38 Hp-10c Program that mimics an HP-10c (Hewlett Packard calculator), X27 Hypocycloids An electronic Spirograph inspired by an article in X12 IconExec Associates a series of CLI commands with an icon X44 Icons Some miscellaneous icons for your viewing pleasure. X10 iff Routines to read and write iff format files. Includes X16 iff The Amiga Developers IFF disk X38 IffDump Two programs for manipulating IFF files. IFFENCODE grabs X12 images Miscellaneous DPaint and digitized pictures, in iff X5 input.dev In combination with hander.interface.asm (supplied), X43 InstIFF A program which converts sampled sound files from the X19 JayMinerSlides These are the Amiga slides produced/used by Jay Miner X46 Jive A filter program which transforms its standard input X13 join.bas X5 joystick Shows how to set up the gameport device as a joystick. X13 jpad X38 Jsh A simple command line interpreter drawing on features from X4 kermit This is an absolutely ancient kermit, who's only X5 keyboard Sample program to demonstrate direct communications with X19 Keymap_Test A program to test the keymapping routines and find X36 KickBench Instructions and programs for creating and using a X1 latffp Shows how to access the Motorola Fast Floating Point X41 LatticeXref A cross reference listing of all symbols defined in the X5 layers Shows use of the layers library, used by Intuition to X10 ld I presume this stands for "list directory". Lists X12 ld4 Another directory listing program using some graphics X22 Lemacs Microemacs version 3.6 as enhanced and supported X34 Less Like Unix "more", only better, with forward and X36 Lex A program (not to be confused with the Unix lex program X31 Life Executes the cellular automata game of LIFE in the X41 Lines A line drawing demo program, reminiscent of the "sparks" X27 LinesDemo A demo program which illustrates the use of proportional X19 LockMon Find file locks. Useful for discovering if programs X13 loz.bas X10 ls Minimal implementation of UNIX ls. Demonstrates X32 MacView Allows viewing of a standard MacPaint picture file in X35 MacView Allows viewing of standard MacPaint picture files in X45 Make Another version of make that seems to be more complete X2 make Subset of "unix" make command. Useful, but does not have X2 make2 Another make subset command. X4 mandel A Mandelbrot set program. X13 mandel.bas X13 mandelbrot X5 mandelbrot Latest and greatest mandelbrot program. New features X31 Mandelbrot Latest version of Robert French's mandelbrot program, X21 Mandelbrot Thomas Wilcox's Mandelbrot Set Explorer disk. X20 MandelBrots Some mandelbrot images submitted for the "mandelbrot X18 MC68010 Complete information package for upgrading an Amiga X27 MemExpansion Schematics and directions for building your own homebrew X33 MemView Program which sets up a direct window into RAM, thus X13 menu.bas X13 menu1.bas X30 MenuEditor Create and edit menus, saving the result as either X42 mg Micro Emacs with GNU command structure and lots of mouse support X6 microemacs An upgraded version of microemacs originally distributed X23 microemacs Full sources for v30, all ports X2 microemacs Small, relatively portable version of emacs. Has X28 MileStone Another game in AbasiC by the author of Monopoly. X13 minipaint.bas X24 Modula-2 A pre-release version of the single pass Modula-2 X9 moire Draws moire patterns in black and white in a borderless X15 Monopoly A really nice monopoly game written in AbasiC. X5 mouse Shows how to set up the gameport device as a mouse so X13 mouse.bas X13 mouse1.bas X13 mousemove.bas X6 mult Mult reads the input comparing adjacent lines. In the X18 Multidim Lets you rotate a 2 to 6 dimensional "cube" on the X20 MultiTasking Tutorial and example program for multitasking at the Exec X9 MVP-FORTH Mountain View Press Forth, version 1.00.03A. X31 MxExample Example of mutual exclusion gadget handling. X46 My.lib A binary only copy of Matt's alternate runtime library. X4 MyCLI Another CLI for the AMIGA. X34 NewFonts Set of 28 new Amiga fonts. X44 NewIFF Some new iff material dealing with sampled voice X38 NewStat Replacement program for the AmigaDOS STATUS command. Prints X33 Oing Displays a window full of little bouncing balls. X15 OkidataDump Okidata ML92 driver and WorkBench screen dump program. X5 one.window Produces a window with a console attached. Does graphics X13 Orthello.abc X28 Othello Another game in AbasiC by the author of Monopoly. X13 Othello.abc X20 Pack Program to strip extraneous whitespace from C programs X40 PagePrint Prints text files with date/time header, page breaks, and X1 palette Sample program for designing color palettes. X5 parallel Demonstrates access to the parallel port. X13 patch.abc X14 pdterm A simple terminal emulator that does ANSI or DEC VT-100 X22 Pemacs Microemacs as enhanced by Andy Poggio. New features X13 pena.bas X11 pictures Miscellaneous DPaint and digitized pictures, in iff X45 Pictures Miscellaneous pictures selected from dozens of pictures X18 PigLatin Tired of the "say" command? This one will translate X13 pinwheel.bas X29 Player Animation player for Aegis Animator. Received directly X35 Plop Short, simple, no-frills IFF reader program, and X15 Polydraw A drawing program written in AbasiC. X15 Polyfractals A fractal program written in AbasiC. X35 PopCLI Provides a simple way of starting another CLI at any X40 PopCLI Provides a simple way of starting another CLI at any X43 PopColours Lets you change the Red/Green/Blue components of any X2 portar Portable archiver. Used to bundle text file up into a X20 PortHandler A sample Port-Handler program that performs X34 Pr A background print utility with several options for X5 print.support Printer support routines. Currently won't compile, X5 printer Shows how to open and use a printer, does a screen dump X5 proctest Sample code to create a process, set up message ports, X9 proff Another text formatting program. This one is significantly X46 ProffMacros Subset implementations of the Berkeley "ms" and System V X26 Ps A program to display process priorities and another X32 Puzzle Simulation of puzzle with moving square tiles. X13 qbox.bas X35 QuickCopy Three versions of quickcopy, a nice little full disk X31 RamSpeed Program to measure raw memory speed, comparing internal X20 Random Random number generator in assembly. Much faster than X13 random-circles.bas X44 RayTracePics Ray tracing pictures, some of which appeared on disk X5 region Demonstrates how a drawing area can be split into linked X34 Requester A file name requester that looks like the one used in X1 requesters Sample program and documentation for building and X38 Reversi Program to play reversi game. Version 6.1. X13 rgb.bas X13 rgbmenu.bas X13 rgbmenu1.bas X13 rgbtest.bas X13 rickstest.bas X3 roff A "roff" type text formatter, roughly following X13 ror X13 Rord.bas X29 Rubik An animated Rubik's cube program based on Barry Whitebook's X13 sabotage.bas X27 SafeMalloc Ever have a program that corrupts it's own memory? Well, X13 salestalk.bas X5 samplefont A sample font that produces clubs, hearts, spaces, and X6 scales Demonstrates use of the Audio functions in the ROM to X27 ScienceDemos Some science demos. Sidereal is a tutorial program which X33 ScreenDump Dumps rastport of highest screen/window to printer. X18 Scrimper Short for "SCReen IMage PrintER". A screen dump utility X35 ScrollPf Creates and displays a 400 by 300 by 2 bit plane X33 Sdb Simple database program, originally released on a X35 SendPacket General purpose subroutine to send AmigaDos packets. X5 serial Demonstrates access to the serial port. Requires an X31 Set Replacement for the Manx "set" command (to set or X12 SetAlternate Merge the images from two icons to produce one icon with X41 SetFont A program to change the font used in a workbench screen. X9 setlace Program to toggle interlace mode on and off. X20 SetMouse2 Program to set the mouse port to either the left port or X6 setparallel Allows the CLI user to dynamically change any particular X6 setserial Allows the CLI user to dynamically change any particular X12 SetWindow Define window to be used for IconExec'ed commands X13 shades.bas X13 shapes.abc X28 Shar A program which can pack and unpack archives compatible X14 shell A simple csh style shell with history and some other X32 ShowHAM Program to display HAM (Hold And Modify) mode images X13 shuttle.bas X5 singlePlayfield Creates and displays a 320 by 200 by 2 bit plane X13 sketchpad.bas X9 skewb Not quite sure what this is supposed to be, it was X37 Smalltalk A port of the Arizona Little Smalltalk system. X32 Solitaire Two new ABasiC games, Canfield and Klondike. X6 sortc A quicksort based sort program, using separate driver X13 sp.bas X13 spaceart.bas X9 sparks Graphics demo that draws a "moving pathway", adding X13 speak.bas X1 speech Sample speech demo program. Stripped down version of X13 speech.bas X5 speech.demo A much simplified version of speechtoy. Also includes X13 speecheasy.bas X20 SpeechTerm Terminal emulator that can speak the received text. X1 speechtoy Another speech demo program. Cute. You have to see this X5 speechtoy Latest and greatest version of Dave's cute speech demo X13 spell.abc X13 spell.bas X13 spelling.bas X13 sphere.abc X13 sphere.bas X32 Spin3 Simple program that creates spinning cubes and transforms X13 spiral.abc X13 spiral.bas X43 SpriteClock A very simple clock that uses a sprite as it's display X40 SpriteEd Lets you simultaneously edit two sprite pairs to form X35 SpriteMaker Program which lets you paint sprites and then converts X33 Sproing Same as Oing but includes sounds of balls colliding with X10 sq.usq Squeeze and unsqueeze, from the CPM world. Works, but X33 Stars Displays a screen full of stars, reminiscent of a view X12 StarTerm Another terminal emulator program. ASCII and XMODEM X30 StarTerm Starterm version 3.0. Very nice telecommunications X43 STEmulator Turns your Amiga into an Atari ST (sort of). Be sure X29 StringLib A public domain reimplementation of the Unix string X6 stripc Strips comments and extraneous whitespace from C source X13 striper.bas X28 SuperBitMap An example program that shows how to use ScrollLayer, X13 superpad.bas X13 suprsphr.abc X32 Sword Sword of Fallen Angel. Text adventure game written X13 talk.bas X20 Ted Demo version of an editor that has since been X14 termcap A (mostly) unix compatible implementation of a termcap X13 terminal.bas X13 terminal3.bas X33 TermPlus Yet another variant of Michael Mournier's AmigaTerm X13 termtest.bas X5 text.demo Sample program that asks AvailFonts() to make a list of X5 timer Simple timer example program. Includes dynamic X13 tom.bas X13 tom2.bas X13 topogrpy.bas X13 toybox X1 trackdisk Demonstrates use of the trackdisk driver. Useful example X5 trackdisk Demonstrates use of trackdisk driver. Useful example of X35 Tracker Program which converts a boot-load disk (I.E. a kickstart X32 Trails Cute little program that leaves a trail behind the X31 Tree Draws a recursive tree (green leafy type, not files). X10 trek73 A Star Trek game. This one is just crying out to X13 triangle.bas X35 TriClops Very nice graphics oriented 3-D space invasion game. X35 Tsize A simple utility to print directory tree sizes. Displays X36 TunnelVision Another fine ABasiC game from David Addison. This is X31 TxEd Latest demo version of Microsmith's text editor, TxEd. X13 uart.bas X26 UnHunk Tool to process the Amiga "hunk" loadfile format. X35 UnIfdef Useful program for removing ifdef'ed sections from a file X45 Update Used to update an older working disk with files from a X38 UUdecode Programs to encode/decode binary files for transmittal X46 ValSpeak A filter program which transforms its standard input X36 Vc Visicalc-like spreadsheet calculator program. X31 VDraw Drawing program, based on freedraw, but now transformed X38 Vdraw Drawing program, based on freedraw, but now transformed X44 ViewILBM Reads an ILBM file and displays as a screen/window X38 VoiceFiler Voice filer program for Yamaha DX series synthesizers. X29 Vt100 A vt100 emulator program with Kermit and Xmodem file X33 Vt100 Release 2.0 of Dave's version of AmigaTerm. X36 Vt100 Version 2.2 of Dave's vt100 emulator program including X41 Vt100 Version 2.3 of the ever popular vt100 terminal program. X35 Vttest Program to test compatibility of vt100-compatible X43 WBrun A program designed to allow any program to be invoked from X13 wheels.abc X45 WhereIs Program which searches a disk for the first or multiple X43 Wild Two versions of Unix shell style wildcard matching routines. X38 Window Sample program which shows how to create a DOS window X40 X-Spell A spelling checker to proofread text files and then allow X13 xeno1.bas X13 xenos.abc X31 Xicon Contains two programs; Xicon which lets you use icons to X3 xlisp A nice little lisp implementation. Compiles and links X39 Xlisp Small lisp type interpreter, binary only (source to X18 Xlisp1.6 A very nice little lisp for those that want to study the X13 xmodem X13 XmoStriper.abc X2 xrf C cross reference utility. Originally from Decus C X36 YaBoing A game program demonstrating hardware sprite usage, X10 yachtc Dice game. SHAR_EOF if test 27653 -ne "`wc -c < 'Index'`" then echo shar: "error transmitting 'Index'" '(should have been 27653 characters)' fi fi echo shar: "extracting 'README'" '(6708 characters)' if test -f 'README' then echo shar: "will not over-write existing file 'README'" else sed 's/^ X//' << \SHAR_EOF > 'README' XThis disk consists of an Index of the Fish disks (:Index), the Xreadme.list#n files from those disks (:lists), and lists of what's on Xeach disk (:files), and software that can be used to add new lists X(:s). It also has 1) the one piece of non-AmigaDOS software you'll Xneed in binary form (:c/detab), and enough thing to make copying new XFish disk, and then including them in the index easy (in :c). XFinally, there are edit scripts (<name>.edit) used by the above Xscript, and an input file used by check (check.broken). X XThe Index has the following format: X X <disk number> <Program name> <comments> X XThe list is sorted alphabetically, not by disk number (though Xthat wouldn't be hard to generate). The comments are, for the Xmost part, the first line of the program description from the Xlist.readme#n files. As such, they may not be complete, though Xthey should be accurate. Since disk #13 didn't have any such Xcomments, and I don't hack much basic, none are provided. X XSince the index was mechanically generated, there are liable to Xbe errors in it. I'd appreciate hearing about them. You can send Xelectronic updates to me at the address below. (Actually, I hope Xthat Fred Fish gets this stuff, and starts distrbuting verified Xcorrect versions in the future!) X XThe provided scripts are: X Xsetup - just makes some assignments for the other disks, and X adds :c to your path. X Xd - just run diskcopy from df0: to df1:. Used in making copies X of the fish disks. X Xc - copies things from a Fish disk in df0: to the correct X place on this disk. X Xcheck - checks the :files directory to verify that everything X in it is actually from the disk it claims to be from. X Xdisk - Takes things from the :lists directory, puts them in X the correct format for the index, and adds them to a X temporary file. X Xsort - Takes the output from the disk scripts, and sorts it X into the Index. X XIn useage, you should first execute setup (there's a copy of Xexecute on the disk, called :c/x) with a single symbol as an Xargument; for instance "execute df1:s/setup df1:". This will tell Xyou what else should be on df1: (or ram: or fish_Index:, or Xwherever you put it), assign some symbols, including s: to :s, Xand put :c in your path, so that you can reference the rest of Xthe scripts by "x <script>." X XAfter this, you should run the "c" script for all disks you wish Xto add to the index (running them more than once won't hurt). XJust to make making copies easier while you do this, you can find Xdiskcopy in :c/d. C should be told the number of the Fish disk Xyou think is in drive df0:, and will tell you what number it Xactually got. For instacne, if Fish disk 34 is in df0:, you'd say X"x c 34", and it'd report back "readme.list34". If it's wrong, Xdon't worry about it; just make sure you rerun x with the correct Xnumber for this disk, and for the disk you told it the first time Xif you plan on adding it to the index this time. X XIf you're not sure that things are correct at this stage, you can Xrun the "check" script; just "x check". It'll report if anythings Xbroken. You'll then need to examine the files :lists/#, with # Xbeing the numbers of the disks you added, to see which are still Xbroken. If you aren't going to add that disk (or it's already in Xthe index), just delete it and rerun check. If you are going to Xadd that disk, put it in drive 0: and rerun c. X XAfter that, the script disk needs to be run once for each disk to Xbe added to the list, once again with the disk number as an Xargument. For instance, if you've already c'd in disk 34, 35 and X36, and wish to add them to the index, you'd issue (in no Xparticular order), "run x disk 34", "run x disk 35", and "run x Xdisk 36". This doesn't do any checking; it assumes things are Xright. X XNote that you HAVE to get these right. Running a disk twice will Xcause duplicate entries in the index. You can start over by Xdeleteing t:index.unsorted, and then running the correct set of Xdisk commands. X XThis leaves a file (normally in ram) of all the entries on the Xnew disks. At this point, you should edit the file Xt:index.unsorted by hand, delete any extraneous material, and Xcorrect any comments. You can then add them to the index (sorted) Xby doing "run x sort". It will add them to the index X(carefully), and then clean things up. X XComments on the scipts: X XThese scripts have been written both to be readable, and to be as Xportable as possible. Keywords are used in almost all cases, and Xyou should be able to make heads and tails of them even if you Xaren't very familiar with the CLI (of course, you should be Xfamiliar with SOME command language). The portabiliy was enhanced Xby carefully *NOT* using any tools that aren't provided on the XAmigaDOS disks unless absolutely vital. The one case where this Xwas violated was the detab program. I may put the source on this Xdisk; the binary is in :c. Those of you that get the index & Xsoftware through an ASCII-only source will definitely have the Xsource. X XThe second violation of the portability rule is in using pipes. XYou should be able to live without them by using X<scriptname>.nopipe, or renaming that to <scriptname> after Xrenaming <scriptname> to <scriptname>.pipe; most were munged up Xfrom the piped versions. Since the piped version run MUCH faster, Xthey are highly recommended. X XFinally, the scipts take care not to mangle old files when Xworking on new versions. Most notably, it is possible for the Xedit scripts in disk to break (correction: they *do* break, Xmostly on disks that aren't Fish collections, but are copies of Xsome other PD disk), thus leaving everything waiting on them Xhanging. This includes the output file for the end of the pipe. XTo keep from clobbering real output files, these are always Xcopied over after the pipe has finished. The usuall thing to do Xis to get a CLI prompt (which is why you "run" the disk script) Xexamine the file Fish:lists/#, where # is the number of the disk Xyou just tried to do. If it's obviously in the "not a collection" Xformat, just skip it, and add it to the t:index.unsorted file by Xhand. If you need to reboot to reclaim the memory of the Xprocesses stuck in the pipe, you should copy t:index.unsorted to Xpermanent storage, then put it back after you reboot and execute Xsetup. Disk.nopipe is usefull for debugging these if it's not Xobvious what's going on. It outputs the edit command just before Xit issues it, so you can type it without the "ver nil:" option, Xand it will tell you exactly what it thought was wrong. Of Xcourse, you have to understand edit error messages. X XYou can, of course, change the assignments from the defaults in Xsetup. If you do, you're on your own; but it can make things much Xeasier! X X Good luck, X <mike X mwm@berkeley.edu X ucbvax!mwm X SHAR_EOF if test 6708 -ne "`wc -c < 'README'`" then echo shar: "error transmitting 'README'" '(should have been 6708 characters)' fi fi echo shar: "extracting 'c'" '(124 characters)' if test -f 'c' then echo shar: "will not over-write existing file 'c'" else sed 's/^ X//' << \SHAR_EOF > 'c' X.KEY num/a Xcopy df0:readme.list<num> Fish:lists/<num> Xlist >Fish:files/<num> df0: quick Xsearch Fish:files/<num> readme.list SHAR_EOF if test 124 -ne "`wc -c < 'c'`" then echo shar: "error transmitting 'c'" '(should have been 124 characters)' fi fi echo shar: "extracting 'check'" '(163 characters)' if test -f 'check' then echo shar: "will not over-write existing file 'check'" else sed 's/^ X//' << \SHAR_EOF > 'check' Xrun search >pipe:search-out from Fish:files search readme.list Xrun edit from pipe:search-out to pipe:execute-in with s:check.edit ver nil: Xexecute pipe:execute-in SHAR_EOF if test 163 -ne "`wc -c < 'check'`" then echo shar: "error transmitting 'check'" '(should have been 163 characters)' fi fi echo shar: "extracting 'check.broken'" '(85 characters)' if test -f 'check.broken' then echo shar: "will not over-write existing file 'check.broken'" else sed 's/^ X//' << \SHAR_EOF > 'check.broken' Xelse Xecho "A disk is misnumbered; check t:search-out to see which one" Xquit 20 Xendif SHAR_EOF if test 85 -ne "`wc -c < 'check.broken'`" then echo shar: "error transmitting 'check.broken'" '(should have been 85 characters)' fi fi echo shar: "extracting 'check.edit'" '(90 characters)' if test -f 'check.edit' then echo shar: "will not over-write existing file 'check.edit'" else sed 's/^ X//' << \SHAR_EOF > 'check.edit' X0(f/../; n; dtb/list/; e/list/ /; p; e//IF/; ep/../ EQ/; #; cl//; n; i+s:check.broken+) Xw SHAR_EOF if test 90 -ne "`wc -c < 'check.edit'`" then echo shar: "error transmitting 'check.edit'" '(should have been 90 characters)' fi fi echo shar: "extracting 'check.nopipe'" '(176 characters)' if test -f 'check.nopipe' then echo shar: "will not over-write existing file 'check.nopipe'" else sed 's/^ X//' << \SHAR_EOF > 'check.nopipe' Xsearch >t:search-out from Fish:files search readme.list Xedit from t:search-out to t:execute-in with s:check.edit ver nil: Xexecute t:execute-in Xdelete t:search-out t:execute-in SHAR_EOF if test 176 -ne "`wc -c < 'check.nopipe'`" then echo shar: "error transmitting 'check.nopipe'" '(should have been 176 characters)' fi fi echo shar: "extracting 'd'" '(20 characters)' if test -f 'd' then echo shar: "will not over-write existing file 'd'" else sed 's/^ X//' << \SHAR_EOF > 'd' Xd from df0: to df1: SHAR_EOF if test 20 -ne "`wc -c < 'd'`" then echo shar: "error transmitting 'd'" '(should have been 20 characters)' fi fi echo shar: "extracting 'detab.c'" '(1318 characters)' if test -f 'detab.c' then echo shar: "will not over-write existing file 'detab.c'" else sed 's/^ X//' << \SHAR_EOF > 'detab.c' X/* X * detab - nice, simple detabber. Just for grins (why hasn't this X * been writen?). X */ X X#include <stdio.h> X Xvoid Xmain(argc, argv) char **argv; { X register short c, current_position = 1 ; X register FILE *input_file, *output_file ; X X if (argc != 3) { X fprintf(stderr, "useage: %s from_file to_file\n", argv[0]) ; X exit(20) ; X } X if ((input_file = fopen(argv[1], "r")) == 0) { X fprintf(stderr, "%s: Can't open %s\n", argv[0], argv[1]) ; X exit(20) ; X } X if ((output_file = fopen(argv[2], "w")) == 0) { X fprintf(stderr, "%s: Can't open %s\n", argv[0], argv[2]) ; X exit(20) ; X } X /* Ready, set, go! */ X while ((c = fgetc(input_file)) != EOF) { X if (c == '\n' || c == '\r') current_position = 0 ; X else if (c == '\t') { X c = ' ' ; X while ((current_position & 7) != 7) { X if (fputc(c, output_file) == EOF) { X fprintf(stderr, "%s: Error writing to %s\n", X argv[0], argv[2]) ; X exit(20) ; X } X current_position += 1 ; X } X } X if (fputc(c, output_file) == EOF) { X fprintf(stderr, "%s: Error writing to %s\n", X argv[0], argv[2]) ; X exit(20) ; X } X current_position += 1 ; X } X if (fclose(input_file) != 0) X fprintf(stderr, "%s: Error closing %s\n", argv[0], argv[1]) ; X if (fclose(output_file) != 0) X fprintf(stderr, "%s: Error closing %s\n", argv[0], argv[2]) ; X } SHAR_EOF if test 1318 -ne "`wc -c < 'detab.c'`" then echo shar: "error transmitting 'detab.c'" '(should have been 1318 characters)' fi fi echo shar: "extracting 'disk'" '(466 characters)' if test -f 'disk' then echo shar: "will not over-write existing file 'disk'" else sed 's/^ X//' << \SHAR_EOF > 'disk' X.KEY num/a Xif exists t:index.unsorted X copy from t:index.unsorted to t:in Xelse X copy from nil: to t:in Xendif Xrun edit from Fish:lists/<num> to pipe:edit with s:disk.edit1 ver nil: Xrun edit from pipe:edit to pipe:edit-out with s:disk.edit2 ver nil: Xrun echo >pipe:edit-com "0(e//<num> /; n ); w" Xrun edit from pipe:edit-out to pipe:join-in with pipe:edit-com ver nil: Xjoin t:in pipe:join-in as t:index.tmp Xcopy t:index.tmp to t:index.unsorted Xdelete t:in t:index.tmp SHAR_EOF if test 466 -ne "`wc -c < 'disk'`" then echo shar: "error transmitting 'disk'" '(should have been 466 characters)' fi fi echo shar: "extracting 'disk.edit1'" '(57 characters)' if test -f 'disk.edit1' then echo shar: "will not over-write existing file 'disk.edit1'" else sed 's/^ X//' << \SHAR_EOF > 'disk.edit1' Xdf / /; 0(f b/ /; d ) Xbf /=======================/; 0d Xw SHAR_EOF if test 57 -ne "`wc -c < 'disk.edit1'`" then echo shar: "error transmitting 'disk.edit1'" '(should have been 57 characters)' fi fi echo shar: "extracting 'disk.edit2'" '(15 characters)' if test -f 'disk.edit2' then echo shar: "will not over-write existing file 'disk.edit2'" else sed 's/^ X//' << \SHAR_EOF > 'disk.edit2' X0(f p//; d ) Xw SHAR_EOF if test 15 -ne "`wc -c < 'disk.edit2'`" then echo shar: "error transmitting 'disk.edit2'" '(should have been 15 characters)' fi fi echo shar: "extracting 'disk.nopipe'" '(620 characters)' if test -f 'disk.nopipe' then echo shar: "will not over-write existing file 'disk.nopipe'" else sed 's/^ X//' << \SHAR_EOF > 'disk.nopipe' X.KEY num/a Xif exists t:index.unsorted X rename t:index.unsorted as t:in Xelse X copy from nil: to t:in Xendif Xecho "edit from Fish:lists/<num> to t:edit with s:disk.edit1 ver nil:" Xedit from Fish:lists/<num> to t:edit with s:disk.edit1 ver nil: Xecho "edit from t:edit to t:edit-out with s:disk.edit2 ver nil:" Xedit from t:edit to t:edit-out with s:disk.edit2 ver nil: Xecho >t:edit-com "0(e//<num> /; n ); w" Xecho "edit from t:edit-out to t:join-in with t:edit-com ver nil:" Xedit from t:edit-out to t:join-in with t:edit-com ver nil: Xjoin t:in t:join-in as t:index.unsorted Xdelete t:in t:edit t:edit-out t:edit-com t:join-in SHAR_EOF if test 620 -ne "`wc -c < 'disk.nopipe'`" then echo shar: "error transmitting 'disk.nopipe'" '(should have been 620 characters)' fi fi echo shar: "extracting 'setup'" '(447 characters)' if test -f 'setup' then echo shar: "will not over-write existing file 'setup'" else sed 's/^ X//' << \SHAR_EOF > 'setup' X.key fish/a Xecho "<fish> should contain the following directories:" Xecho " files - output of a 'list quick' on each fish disk." Xecho " lists - the readme.list#n files for fish disk #n." Xecho " s - the index twiddling scripts." Xecho " c - place for non-standard binaries (currently sortc)" Xecho "See the script 'c' to see how the lists and files directories are created." Xecho "" Xassign Fish: <fish> Xassign s: Fish:s Xassign t: ram: Xpath fish:c add SHAR_EOF if test 447 -ne "`wc -c < 'setup'`" then echo shar: "error transmitting 'setup'" '(should have been 447 characters)' fi fi echo shar: "extracting 'sort'" '(499 characters)' if test -f 'sort' then echo shar: "will not over-write existing file 'sort'" else sed 's/^ X//' << \SHAR_EOF > 'sort' X; delete things as soon as we done, just to save space. Xif exists t:index.unsorted X run stack >pipe:stack X run edit from pipe:stack to pipe:stack-com with s:sort.edit ver nil: X run join t:index.unsorted fish:index as pipe:detab X run detab pipe:detab pipe:index X stack 50000 ; Gimme ROOM! X sort pipe:index to t:Index.t colstart 7 X execute pipe:stack-com ; Now put things back X copy from t:Index.t to Fish:Index X delete t:index.t t:index.unsorted Xelse X echo "Hey, nothing out there to sort!" Xendif SHAR_EOF if test 499 -ne "`wc -c < 'sort'`" then echo shar: "error transmitting 'sort'" '(should have been 499 characters)' fi fi echo shar: "extracting 'sort.edit'" '(37 characters)' if test -f 'sort.edit' then echo shar: "will not over-write existing file 'sort.edit'" else sed 's/^ X//' << \SHAR_EOF > 'sort.edit' Xdtb /is/; e/is/stack/; e/ bytes// Xw X SHAR_EOF if test 37 -ne "`wc -c < 'sort.edit'`" then echo shar: "error transmitting 'sort.edit'" '(should have been 37 characters)' fi fi echo shar: "extracting 'sort.nopipe'" '(474 characters)' if test -f 'sort.nopipe' then echo shar: "will not over-write existing file 'sort.nopipe'" else sed 's/^ X//' << \SHAR_EOF > 'sort.nopipe' X; delete things as soon as we done, just to save space. Xif exists t:index.unsorted X stack > t:stack X edit from t:stack to t:stack-com with s:sort.edit ver nil: X delete t:stack X join t:index.unsorted fish:index as t:in X detab t:in t:out X delete t:in X stack 50000 ; Gimme ROOM! X sort t:out to t:Index.t colstart 7 X execute t:stack-com X copy from t:Index.t to Fish:Index X delete t:Index.t t:out t:stack-com t:index.unsorted Xelse X echo "Hey, nothing out there to sort!" Xendif SHAR_EOF if test 474 -ne "`wc -c < 'sort.nopipe'`" then echo shar: "error transmitting 'sort.nopipe'" '(should have been 474 characters)' fi fi exit 0 # End of shell archive