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