[comp.sources.misc] v06i102: glib part 1 of 15

allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc) (05/15/89)

Posting-number: Volume 6, Issue 102
Submitted-by: lee@uhccux.uhcc.Hawaii.Edu (Greg Lee )
Archive-name: glib/part01


This is an alpha distribution (v. 1.6) of glib, an editor and librarian for
synthesizer patches by Tim Thompson with modifications by Steve Falco,
Michael Kesti, Alan Bland, Greg Lee, Scott Snyder, and Mark Rinfret.

There are 15 shar files.

		Greg Lee, lee@uhccux.uhcc.hawaii.edu, May 7, 1989

#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 1 (of 15)."
# Contents:  AmiAztec-make MANIFEST Makefile README README.arp
#   ReadMe.CZ1 amigadir.c amigadir.h amigmach.h amigmake dx100.mnu
#   glib.h k1vis.h k5multi.mnu mac-glib.r mac-mach.h mac-make.uu
#   mac-mdr.h mac-vt.h makevish.l patchlevel.h pc-readme pc-tcc.mak
#   st-mach.h unix-mach.h vis.h
# Wrapped by lee@uhccux on Sun May  7 00:40:07 1989
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'AmiAztec-make' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'AmiAztec-make'\"
else
echo shar: Extracting \"'AmiAztec-make'\" \(1153 characters\)
sed "s/^X//" >'AmiAztec-make' <<'END_OF_FILE'
X# $Id: AmiAztec-make,v 1.6 89/05/06 17:13:04 lee Exp $
X# Mark Rinfret
X# $Log:	AmiAztec-make,v $
X# Revision 1.6  89/05/06  17:13:04  lee
X# rel. to comp.sources.misc
X# 
X#
X# this makefile is for the AMIGA using Aztec C
X#
X
X#Define the following flag if you want statistics gathering:
X#STATS = -DSTATISTICS
XSTATS =
XSYNTHS = -DCZ1
XCFLAGS = -B +L $(SYNTHS) -E200 -n $(STATS)
XCC = cc
X
X# OBJ = machdep.o glib.o list.o dx100.o tx81z.o tx81p.o dw8000.o yama_com.o\
X#       k5.o cz1.o amigadir.o
X
X# CZ1-only build (be sure to change list.c #defines):
XOBJ = machdep.o glib.o list.o cz1.o amigadir.o
X
X# OBJ = machdep.o glib.o list.o k5.o
X
Xglib : menutoc $(OBJ)
X        ln -w -g -o glib $(OBJ) -lc32
X
Xmachdep.h: amigmach.h
X    copy amigmach.h machdep.h
X
Xmachdep.o: machdep.c machdep.h
X
Xmachdep.c: amigmach.c
X    copy amigmach.c machdep.c
X
X# This doesn't appear to work for Aztec's make. ?
X# .mnu.c:
X#        @rm -f $@
X#        menutoc <$*.mnu >$@
X
Xmenutoc:  menutoc.o
X        ln -w -g -o menutoc menutoc.o -lc32
X
Xmenutoc.c: menutoc.l
X        flex menutoc.l
X        copy clone lex.yy.c menutoc.c
X
Xcz1.c: cz1.mnu menutoc
X       menutoc <cz1.mnu >cz1.c
X
Xcz1.o: cz1.c
X
X
X
X
END_OF_FILE
if test 1153 -ne `wc -c <'AmiAztec-make'`; then
    echo shar: \"'AmiAztec-make'\" unpacked with wrong size!
fi
# end of 'AmiAztec-make'
fi
if test -f 'MANIFEST' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'MANIFEST'\"
else
echo shar: Extracting \"'MANIFEST'\" \(3707 characters\)
sed "s/^X//" >'MANIFEST' <<'END_OF_FILE'
X   File Name		Archive #	Description
X-----------------------------------------------------------
X AmiAztec-make              1	
X CHANGES                    2	note recent modifications
X DX-README                  2	notes on DX7 version
X MANIFEST                   1	This shipping list
X Makefile                   1	for Ultrix
X PORTING                    6	how to implement a version for a new synth
X README                     1	
X README.arp                 1	doc on Dave Weiler's arp modification
X ReadMe.CZ1                 1	
X amigadir.c                 1	Unix-like dir access for Amiga
X amigadir.h                 1	Unix-like dir access for Amiga
X amigmach.c                 7	
X amigmach.h                 1	
X amigmake                   1	
X ctomenu.l                  2	(f)lex program partially translates old C
X cz.h                       2	CZ1/CZ101 support
X cz1.mnu                   12	CZ1/CZ101 support
X d10pat.mnu                 4	Roland D10 "synth" module
X d10rsu.mnu                 3	Roland D10 "synth" module
X d10tim.mnu                 4	Roland D10 "synth" module
X d10ton.c                   3	misc. Roland ton routines
X d10tra.mnu                 5	Roland D10 "synth" module
X d10tva.mnu                 2	Roland D10 "synth" module
X d10tvf.mnu                 2	Roland D10 "synth" module
X d10urp.mnu                 7	Roland D10 "synth" module
X d10wfg.mnu                 2	Roland D10 "synth" module
X dep5.mnu                   8	DEP5 synth module
X dw8000.mnu                 5	Yamaha synth module
X dx100.mnu                  1	Yamaha synth module
X dx7.mnu                    9	DX7 synth module
X dx7s.mnu                  10	DX7s synth module (requires dx7.mnu)
X glib.1                     3	man page
X glib.c                    15	the editor
X glib.h                     1	shared data between editor and synth modules
X glib.man                   4	preformatted man page
X glibinit.dp5               4	required for DEP5
X k1multi.mnu                6	K1 "synth" module for multi patches
X k1single.mnu               2	K1 "synth" module for single patches
X k1vis.c                    3	K1 display routines for patch edit screens
X k1vis.h                    1	include for k1vis.c (made: make k1vis.h)
X k5multi.mnu                1	K5 "synth" module for multi patches
X k5single.mnu               5	K5 "synth" module for multi patches
X list.c                     4	tells editor which synth modules to use
X mac-glib.r                 1	
X mac-mach.c                 3	
X mac-mach.h                 1	
X mac-make.uu                1	
X mac-mdr.a                  8	
X mac-mdr.h                  1	
X mac-vt.c                   9	
X mac-vt.h                   1	
X makevish.l                 1	(f)lex program makes (k1)vis.h (from (k1)vis.c)
X menutoc.c                 11	constructed from menutoc.l with flex
X menutoc.l                  7	(f)lex program translates .menu files to C
X patchlevel.h               1	record number of patches applied
X pc-ints.asm                6	
X pc-mach.c                  6	ibmpc
X pc-mach.h                  2	ibmpc
X pc-readme                  1	
X pc-tcc.mak                 1	makefile for Turbo C
X smp1.arc.uu               14	sample patch files
X smp2.arc.uu               13	sample patch files
X st-mach.c                  2	atari st
X st-mach.h                  1	atari st
X tx81p.mnu                  8	Yamaha synth module
X tx81z.mnu                  3	Yamaha synth module
X unix-mach.c                3	Unix routines (midi io routines stubbed)
X unix-mach.h                1	Unix defines
X vis.c                      5	D10 display routines for patch edit screens
X vis.h                      1	include for vis.c (made: make vis.h)
X yama_com.c                10	misc. Yamaha routines
END_OF_FILE
if test 3707 -ne `wc -c <'MANIFEST'`; then
    echo shar: \"'MANIFEST'\" unpacked with wrong size!
fi
# end of 'MANIFEST'
fi
if test -f 'Makefile' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Makefile'\"
else
echo shar: Extracting \"'Makefile'\" \(3731 characters\)
sed "s/^X//" >'Makefile' <<'END_OF_FILE'
X# $Id: Makefile,v 1.6 89/05/06 17:13:07 lee Exp $
X# Glib, Unix version for Kawai K1, etc.
X# Greg Lee, lee@uhccux.uhcc.hawaii.edu
X# Feb, 1989
X# adapted from Tim Thompson's program and Michael Kesti's version
X# $Log:	Makefile,v $
X# Revision 1.6  89/05/06  17:13:07  lee
X# rel. to comp.sources.misc
X# 
X# 
X
XLEX = flex
XLEXLIB =
X# to use lex instead of flex:
X#LEX = lex
X#LEXLIB = -ll
X
X# defines for CFLAGS (below):
X#	BSD for fopen with mode 'r'/'w' instead of 'rb'/'wb'
X#	ULTRIX enables curses no()/nonl() fix
X#	ARROW for use of arrow keys
X#	SSS to enable speed-up code in glib.c
X#
X# and uncomment one set of the following for supported synths:
X
X# Remove '#' from next 5 lines for Roland D-10:
X#SYNTHS = -DROLANDD10
X#SYNTHOBJ = vis.o d10pat.o d10tim.o d10ton.o d10wfg.o d10tvf.o d10tva.o \
X#	d10rsu.o d10urp.o d10tra.o
X#SYNTHC = d10pat.c d10tim.c d10wfg.c d10tvf.c d10tva.c \
X#	d10rsu.c d10urp.c d10tra.c # vis.h
X
X# Remove '#' from next 4 lines for various Yamaha, K5, etc.:
X#SYNTHS = -DTX81Z -DTX81ZPERF -DDX100 -DDW8000 -DKAWAIK5 -DDEP5
X#SYNTHOBJ = dx100.o tx81z.o tx81p.o dw8000.o yama_com.o \
X#	k5single.o k5multi.o dep5.o
X#SYNTHC = dx100.c tx81z.c tx81p.c dw8000.c k5single.c k5multi.c dep5.c
X
X# Remove '#' from next 3 lines for DX7:
X#SYNTHS = -DDX7 -DDX7S
X#SYNTHOBJ = dx7.o dx7s.o
X#SYNTHC = dx7.c dx7s.c
X
X# Remove '#' from next 3 lines for Kawai K1:
X#SYNTHS = -DKAWAIK1
X#SYNTHOBJ = k1vis.o k1multi.o k1single.o
X#SYNTHC = k1multi.c k1single.c # k1vis.h
X
X# Remove '#' from next 3 lines for CZ1:
X#SYNTHS = -DCZ1
X#SYNTHOBJ = cz1.o
X#SYNTHC = cz1.c
X
XDEFNS = -DBSD -DULTRIX -DARROW -DSSS $(SYNTHS)
XCFLAGS = -O $(DEFNS)
X
XOBJ = machdep.o glib.o list.o $(SYNTHOBJ)
X
XLIBS = -lcurses -ltermcap -lm
X
X.SUFFIXES: .mnu
X
Xglib : menutoc $(SYNTHC) $(OBJ)
X	$(CC) -s $(OBJ) $(LIBS) -o glib
X	@echo "Make complete."
X
Xlint: $(SYNTHC)
X	@rm -f lintlog
X	lint -phbv -Dlint $(DEFNS) glib.c list.c $(SYNTHC) \
X		machdep.c $(LIBS)  >lintlog
X# add yama_com.c above to lint dx100, etc. version
X
Xmachdep.c: unix-mach.c machdep.h
X	rm -f machdep.c
X	ln -s unix-mach.c machdep.c
X
Xmachdep.h: unix-mach.h
X	rm -f machdep.h
X	ln -s unix-mach.h machdep.h
X
Xmachdep.o : machdep.c glib.h /usr/include/ctype.h \
X	/usr/include/curses.h /usr/include/sys/termio.h
X# On the UNIX PC (at least mine), cbreak() and nocbreak() aren't in
X# libcurses.a so this hack (-DFAKECBREAK) is one way out.
X# On the UNIX PC, add a -DFAKECBREAK to the following line
X#	cc $(CFLAGS) -c machdep.c -DFAKECBREAK
X	$(CC) $(CFLAGS) -c machdep.c
X
X.mnu.c:
X	@rm -f $@
X	menutoc $*.mnu >$@
X
Xmenutoc:  menutoc.c
X	$(CC) -s -o menutoc menutoc.c $(LEXLIB)
X
Xmenutoc.c: menutoc.l
X	touch menutoc.c
X# to revise menutoc, substitute for above:
X#menutoc.c: menutoc.l
X#	$(LEX) menutoc.l
X#	mv lex.yy.c menutoc.c
X
X# to automate construction of k1vis.h:
X#k1vis.h: k1vis.c makevish
X#	rm -f k1vis.h
X#	makevish <k1vis.c >k1vis.h
X
X# to automate construction of vis.h:
X#vis.h:	vis.c makevish
X#	rm -f vis.h
X#	makevish <vis.c >vis.h
X
Xmakevish: makevish.l
X	$(LEX) makevish.l
X	$(CC) -o makevish lex.yy.c $(LEXLIB)
X
Xctomenu: ctomenu.l
X	$(LEX) ctomenu.l
X	$(CC) -o ctomenu lex.yy.c $(LEXLIB)
X
Xclean:
X	rm -f *.o lex.yy.c $(SYNTHC) makevish \
X		machdep.c machdep.h menutoc core MANIFEST.BAK *.hdr
X
Xshar:
X	rm -f glib.shar.*
X	makekit -m -nglib.shar.
X
Xglib.o:		glib.h
Xlist.o:		glib.h
Xmachdep.o:	glib.h
Xyama_com.o:	glib.h
Xcz1.o:		glib.h cz.h
Xd10pat.o:	glib.h vis.h
Xd10rsu.o:	glib.h vis.h
Xd10tim.o:	glib.h vis.h
Xd10ton.o:	glib.h
Xd10tra.o:	glib.h vis.h
Xd10tva.o:	glib.h vis.h
Xd10tvf.o:	glib.h vis.h
Xd10urp.o:	glib.h vis.h
Xd10wfg.o:	glib.h vis.h
Xdep5.o:		glib.h
Xdw8000.o:	glib.h
Xdx100.o:	glib.h
Xdx7.o:		glib.h
Xdx7s.o:		glib.h
Xk1multi.o:	glib.h k1vis.h
Xk1single.o:	glib.h k1vis.h
Xk5multi.o:	glib.h
Xk5single.o:	glib.h
Xtx81p.o:	glib.h
Xtx81z.o:	glib.h
END_OF_FILE
if test 3731 -ne `wc -c <'Makefile'`; then
    echo shar: \"'Makefile'\" unpacked with wrong size!
fi
# end of 'Makefile'
fi
if test -f 'README' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'README'\"
else
echo shar: Extracting \"'README'\" \(2050 characters\)
sed "s/^X//" >'README' <<'END_OF_FILE'
X 
X
XThis is an alpha distribution of glib, an editor and librarian for
Xsynthesizer patches by Tim Thompson with modifications by Steve Falco,
XMichael Kesti, Alan Bland, Greg Lee, Scott Snyder, and Mark Rinfret.
XSome of the code was originally written by Steve Frysinger (moss!spf),
XJohn Helton, and James Gosling.  (I may have misattributed authorship
Xof some files -- please tell me.)
X
XSample patch files are arc'd and uuencoded in the file samples.arc.uu.
X
XIt compiles and the editing and file parts work (seemingly) under Unix
X(Ultrix).  Midi communications with a synth are not implemented,
Xhowever.  Previous versions, including midi communication, have
Xapparently worked for Ibmpc's, Atari st, Apple Macintosh, and Amiga.
XThe source for these pc's is included, but I don't know whether it works
Xwith this version.  At the very least, in most cases the makefiles will
Xhave to be updated.  The most recently worked on pc versions are the
Xones for Amiga-CZ1 and TurboC-Dx7, so they are the most likely to work
Xas is.
X
XThe U and D commands (dump/undump midi commands to file) are implemented
Xonly for the Unix version.  The relevant code in unix-mach.c would
Xhave to be merged into the various ...mach.c files.
X
XTo compile the Unix BSD Ultrix version, first uncomment some lines in
Xthe Makefile (as noted there), depending on which synths you want glib
Xto handle, then type 'make'.  For other varieties of Unix, remove
X'-DULTRIX' or '-DBSD' from CFLAGS in the Makefile, and hope for the
Xbest.  This will probably work for the ATT 3b1.  For the various little
Xpc's, consult the information in the PORTING document, in ReadMe.CZ1,
Xand in DX-README (for the Dx7).  NB:  For the TURBO-C plus DX7
Xversion, one must uncomment #pragma directives in two places in file
Xdx7.mnu.
X
XFor instructions for use, see glib.man (troff source in glib.1).
XFor porting to new synths, see PORTING.
X
XFixes, code for other pc's or synthesizers, suggestions, complaints
Xcan be sent to me or posted, as you think best.
X
X		Greg Lee, lee@uhccux.uhcc.hawaii.edu, April 28, 1989
END_OF_FILE
if test 2050 -ne `wc -c <'README'`; then
    echo shar: \"'README'\" unpacked with wrong size!
fi
# end of 'README'
fi
if test -f 'README.arp' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'README.arp'\"
else
echo shar: Extracting \"'README.arp'\" \(1469 characters\)
sed "s/^X//" >'README.arp' <<'END_OF_FILE'
XADDITION OF ARP FILE REQUESTER TO GLIB
X
XThe file machdep.c (Amiga version) has been modified to use the ARP
Xfile requester if the symbol ARP is defined.
X
Xe.g. to compile machdep.c using Lattice 5.02 use:
X	lc -cw -dARP machdep
X
XThe boolean variable FileRequestImminent is set to TRUE if the subroutine
Xwindstr(s) is called with the first 9 characters of the string "s" equal
Xto "File name"; i.e., it looks for the "File name --> " prompt.
X
XIf FileRequestImminent is TRUE when the subroutine windgets(s), is called,
Xthen the ARP file requester is invoked and the resultant file name is
Xreturned in the string s.  FileRequestImminent is set to FALSE so that
Xsubsequent calls to windgets(s) do not invoke the ARP file requester,
Xunless preceeded by another file name prompt.
X
XThe above works only if "glib.c" sticks more or less to the following
Xmethod of getting the file name:
X	message("File name --> ");
X	windgets(fname);
X
XWhen linking, if ARP is defined, it is necessary to use the ARP startup
Xcode "arpc.o" instead of the usual "c.o", and to include LIB:arp.lib,
Xe.g.:
X
XFROM LIB:arpc.o+glib.o+d10pat.o+ etc.
XTO glib
XLIB LIB:arp.lib LIB:lc.lib LIB:amiga.lib
X
XIf the program is compiled to use the ARP file requester, and is then
Xrun on a system which does not have "arp.library" in libs:, then it
Xwill gracefully exit with an error message (as with other ARP programs).
X
X	Dave Weiler
X	#513, 918-16 Ave NW
X	CALGARY, Alberta
X	Canada T2M 0K3
X	(403) 295-3084
X	bix: dweiler
END_OF_FILE
if test 1469 -ne `wc -c <'README.arp'`; then
    echo shar: \"'README.arp'\" unpacked with wrong size!
fi
# end of 'README.arp'
fi
if test -f 'ReadMe.CZ1' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'ReadMe.CZ1'\"
else
echo shar: Extracting \"'ReadMe.CZ1'\" \(2671 characters\)
sed "s/^X//" >'ReadMe.CZ1' <<'END_OF_FILE'
X
XAbout the CZ1 segment of GLIB:
X------------------------------
XMark Rinfret, 04/24/89
X
X
XI am releasing this to the public, even though it is not finished.  I've
Xdone the really hard grunt work.  Some polishing is definitely in order.
X
XI developed this on an Amiga 1000 using Aztec C, 3.6b. Alan Bland gets
Xthe credit for the Amiga support routines.  I added in some portable
Xdirectory routines that I obtained from Usenet and a couple of mods
Xto amiga-mach.c and glib proper.
X
XThe CZ1 is a nice synth, but its MIDI encodings are a nightmare.  I
Xhaven't done so much bit-diddling since I worked on military
Xsystems as a civil servant! If you see code in cz1.c that appears to do
Xreally strange things, that's because it does really strange things.
XOne of the problems I encountered was with the Aztec compiler and
Xalignment of the patch data structure.  I would like to have used a better
Xdefinition of the patch structure, but the compiler insisted on inserting
Xextra alignment bytes in my preferred representation.
X
XI've experienced timeouts when downloading bulk patch data from the
Xsynth. The download sequence might get as high as say, voice 33, and
Xthen time out on me.  I might have to retry a couple of times, but I
Xalways eventually complete the sequence. This may be a problem isolated
Xto my particular setup, but if you experience similar problems, please
Xlet me know.
X
XYou'll notice a couple of "#ifdef undef" statements in the cz1.c module.
XI was going to include settings for Glide, Portamento, etc., and then
Xrealized that these are really "operational" parameters rather than
Xinformation that's kept with the patch data.  There really should be
Xanother segment for controlling the thousand other features of the CZ1.
XI was primarily interested in using GLIB for creating/managing patches.
X[These settings are now included in the menu (there is no file cz1.c
Xanymore), but are not stored in the patch file.  -- gl]
X
XIf you peruse the source, you will find some references to the CZ-101
Xin the cz.h header file.  That's a throwback to an earlier age. If
Xsomeone decides to implement a CZ-101 segment, he/she should not
Xtake any of the CZ-101 stuff for granted. Though the CZ-1 and CZ-101
Xare of the same family, I used sysex messages not available to the
XCZ-101.
X
XThat about wraps it.  If you have any comments/questions/suggestions/changes,
Xplease get in touch with me.  You can reach me at one of the following:
X
X    Mark R. Rinfret
X    work - 401-849-9390 (0700-1700)
X    home - 401-846-7639 (1900-2200)
X    Usenet - mrr@amanpt1.Newport.RI.US
X             ...!rayssd!galaxia!amanpt1!mrr
X
X    BIX - markr (I seldom go there)
X    CIS - 72017, 136 (ditto)
X
X
END_OF_FILE
if test 2671 -ne `wc -c <'ReadMe.CZ1'`; then
    echo shar: \"'ReadMe.CZ1'\" unpacked with wrong size!
fi
# end of 'ReadMe.CZ1'
fi
if test -f 'amigadir.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'amigadir.c'\"
else
echo shar: Extracting \"'amigadir.c'\" \(2519 characters\)
sed "s/^X//" >'amigadir.c' <<'END_OF_FILE'
X/* $Id: amigadir.c,v 1.6 89/05/06 17:13:09 lee Exp $
X *
X * ndir - routines to simulate the 4BSD new directory code for AmigaDOS.
X */
X#include "dir.h"
X
XDIR *
Xopendir(dirname) 
X	char *dirname; 
X{
X	register DIR *my_dir, *AllocMem() ;
X	struct FileLock	*Lock(), *CurrentDir() ;
X
X	if ((my_dir = AllocMem((long) sizeof(DIR), 0L)) == NULL) return NULL ;
X
X
X	if (((my_dir -> d_lock = Lock(dirname, ACCESS_READ)) == NULL)
X	/* If we can't examine it */
X	||  !Examine(my_dir -> d_lock, &(my_dir -> d_info))
X	/* Or it's not a directory */
X	||  (my_dir -> d_info . fib_DirEntryType < 0)) {
X		FreeMem(my_dir, (long) sizeof(DIR)) ;
X		return NULL ;
X		}
X	return my_dir ;
X	}
X
Xstruct direct *
Xreaddir(my_dir) DIR *my_dir; {
X	static struct direct	result ;
X
X	if (!ExNext(my_dir -> d_lock, &(my_dir -> d_info))) return NULL ;
X
X	result.d_reclen = result.d_ino = 1 ;	/* Not NULL! */
X	(void) strcpy(result.d_name, my_dir -> d_info.fib_FileName) ;
X	result.d_namlen = strlen(result.d_name) ;
X	return &result ;
X	}
X
Xvoid
Xclosedir(my_dir) DIR *my_dir; {
X
X	UnLock(my_dir -> d_lock) ;
X	FreeMem(my_dir, (long) sizeof(DIR)) ;
X	}
X/*
X * telldir and seekdir don't work quite right. The problem is that you have
X * to save more than a long's worth of stuff to indicate position, and it's
X * socially unacceptable to alloc stuff that you don't free later under
X * AmigaDOS. So we fake it - you get one level of seek, and dat's all.
X * As of now, these things are untested.
X */
X#define DIR_SEEK_RETURN		((long) 1)	/* Not 0! */
Xlong
Xtelldir(my_dir) 
X	DIR *my_dir;
X{
X	my_dir -> d_seek = my_dir -> d_info ;
X	return (long) DIR_SEEK_RETURN ;
X}
X
Xvoid
Xseekdir(my_dir, where) 
X	DIR *my_dir; long where; 
X{
X	if (where == DIR_SEEK_RETURN)
X		my_dir -> d_info = my_dir -> d_seek ;
X	else	/* Makes the next readdir fail */
X		setmem((char *) my_dir, sizeof(DIR), 0) ;
X}
X
Xvoid
Xrewinddir(my_dir) 
X	DIR *my_dir; 
X{
X
X	if (!Examine(my_dir -> d_lock, &(my_dir -> d_info)))
X		setmem((char *) my_dir, sizeof(DIR), 0) ;
X}
X#ifdef	TEST
X/*
X * Simple code to list the files in the argument directory,
X *	lifted straight from the man page.
X */
X#include <stdio.h>
Xvoid
Xmain(argc, argv) int argc; char **argv; {
X	register DIR		*dirp ;
X	register struct direct	*dp ;
X	register char		*name ;
X
X	if (argc < 2) name = "" ;
X	else name = argv[1] ;
X
X	if ((dirp = opendir(name)) == NULL) {
X		fprintf(stderr, "Bogus! Can't opendir %s\n", name) ;
X		exit(1) ;
X		}
X
X	for (dp = readdir(dirp); dp != NULL; dp = readdir(dirp))
X		printf("%s ", dp -> d_name) ;
X	closedir(dirp);
X	putchar('\n') ;
X	}
X#endif	TEST
X
END_OF_FILE
if test 2519 -ne `wc -c <'amigadir.c'`; then
    echo shar: \"'amigadir.c'\" unpacked with wrong size!
fi
# end of 'amigadir.c'
fi
if test -f 'amigadir.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'amigadir.h'\"
else
echo shar: Extracting \"'amigadir.h'\" \(1801 characters\)
sed "s/^X//" >'amigadir.h' <<'END_OF_FILE'
X/* $Id: amigadir.h,v 1.6 89/05/06 17:13:10 lee Exp $
X */
X#ifndef DIR_H
X#define DIR_H
X
X#ifndef	EXEC_TYPES_H
X#include "exec/types.h"
X#endif
X
X#ifndef	LIBRARIES_DOS_H
X#include "libraries/dos.h"
X#endif
X
X#ifndef	LIBRARIES_DOSEXTENS_H
X#include "libraries/dosextens.h"
X#endif
X/*
X * MAXNAMELEN is the maximum length a file name can be. The direct structure
X * is lifted form 4BSD, and has not been changed so that code which uses
X * it will be compatable with 4BSD code. d_ino and d_reclen are unused,
X * and will probably be set to some non-zero value.
X */
X#define	MAXNAMLEN	31		/* AmigaDOS file max length */
X
Xstruct	direct {
X	ULONG	d_ino ;			/* unused - there for compatability */
X	USHORT	d_reclen ;		/* ditto */
X	USHORT	d_namlen ;		/* length of string in d_name */
X	char	d_name[MAXNAMLEN + 1] ;	/* name must be no longer than this */
X};
X/*
X * The DIRSIZ macro gives the minimum record length which will hold
X * the directory entry.  This requires the amount of space in struct direct
X * without the d_name field, plus enough space for the name with a terminating
X * null byte (dp->d_namlen+1), rounded up to a 4 byte boundary.
X */
X
X#undef DIRSIZ
X#define DIRSIZ(dp) \
X    ((sizeof(struct direct) - (MAXNAMLEN+1)) + (((dp) -> d_namlen+1 + 3) &~ 3))
X/*
X * The DIR structure holds the things that AmigaDOS needs to know about
X * a file to keep track of where it is and what it's doing.
X */
X
Xtypedef struct {
X	struct FileInfoBlock	d_info ,	/* Default info block */
X				d_seek ;	/* Info block for seeks */
X	struct FileLock		*d_lock ;	/* Lock on directory */
X	} DIR ;
X	
Xextern	DIR *opendir(/* char * */); 
Xextern	struct direct *readdir(/* DIR * */) ;
Xextern	long telldir(/* DIR * */) ;
Xextern	void seekdir(/* DIR *, long */) ;
Xextern	void rewinddir(/* DIR * */) ;
Xextern	void closedir(/* DIR * */) ;
X#endif	DIR_H
END_OF_FILE
if test 1801 -ne `wc -c <'amigadir.h'`; then
    echo shar: \"'amigadir.h'\" unpacked with wrong size!
fi
# end of 'amigadir.h'
fi
if test -f 'amigmach.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'amigmach.h'\"
else
echo shar: Extracting \"'amigmach.h'\" \(358 characters\)
sed "s/^X//" >'amigmach.h' <<'END_OF_FILE'
X/* $Id: amigmach.h,v 1.6 89/05/06 17:13:11 lee Exp $
X *
X * GLIB - a Generic LIBrarian and editor for synths
X *
X * Machine dependent stuff.
X *
X * Amiga version
X * Alan Bland
X * $Log:	amigmach.h,v $
X * Revision 1.6  89/05/06  17:13:11  lee
X * rel. to comp.sources.misc
X * 
X */
X
X#include <string.h>
X
X#define INT16 int
X
X#define STATMIDI	statmidi()
X#define AMIGA
END_OF_FILE
if test 358 -ne `wc -c <'amigmach.h'`; then
    echo shar: \"'amigmach.h'\" unpacked with wrong size!
fi
# end of 'amigmach.h'
fi
if test -f 'amigmake' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'amigmake'\"
else
echo shar: Extracting \"'amigmake'\" \(477 characters\)
sed "s/^X//" >'amigmake' <<'END_OF_FILE'
X# $Id: amigmake,v 1.6 89/05/06 17:13:11 lee Exp $
X# Alan Bland
X# $Log:	amigmake,v $
X# Revision 1.6  89/05/06  17:13:11  lee
X# rel. to comp.sources.misc
X# 
X# 
X# this makefile is for the AMIGA using the LMK utility and Lattice 5.02
X#
X
XOBJ = machdep.o glib.o list.o dx100.o tx81z.o tx81p.o dw8000.o yama_com.o k5.o
X# OBJ = machdep.o glib.o list.o k5.o
X
X.c.o :
X	lc:lc -cw -cs -v $*
X
Xglib : $(OBJ)
X	lc:blink from lib:c.o $(OBJ) lib lib:lc.lib lib:amiga.lib \
X	batch nodebug to glib
END_OF_FILE
if test 477 -ne `wc -c <'amigmake'`; then
    echo shar: \"'amigmake'\" unpacked with wrong size!
fi
# end of 'amigmake'
fi
if test -f 'dx100.mnu' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'dx100.mnu'\"
else
echo shar: Extracting \"'dx100.mnu'\" \(4111 characters\)
sed "s/^X//" >'dx100.mnu' <<'END_OF_FILE'
X/* $Id: dx100.mnu,v 1.6 89/05/06 17:13:22 lee Exp $
X * GLIB - a Generic LIBrarian and editor for synths
X *
X * DX-100 routines
X * Tim Thompson
X * modifications: Greg Lee
X * $Log:	dx100.mnu,v $
X * Revision 1.6  89/05/06  17:13:22  lee
X * rel. to comp.sources.misc
X * 
X */
X
X#define OVERLAY1
X
X#include "glib.h"
X#include <ctype.h>
X
Xchar *visnum(), *visonoff(), *vism3num(), *viswave(), *vismono();
Xchar *visfreq(), *visdx1a();
X
X#define RESERVESIZE 0
X
X/* This array contains arbitrary screen labels */
Xstruct labelinfo Ldx100[] = {
X#MENU
X
X                                                 Algorithm   %
X                                                 =========
X
X           Dcy Lev Dcy              De  Out     Amp Eg  Key Key
X OP    Atk  1   1   2  Rls   Freq   tun Lvl Vel Mod Bia Rat Scl
X --    --- --- --- --- ---   ----   --- --- --- --- --- --- ---
X 1      %   %   %   %   %    %       %   %   %  %    %   %   %
X 2      %   %   %   %   %    %       %   %   %  %    %   %   %
X 3      %   %   %   %   %    %       %   %   %  %    %   %   %
X 4      %   %   %   %   %    %       %   %   %  %    %   %   %
X
X                                 Feedback    %         Mono/Poly          %
X-------------------------+       Transpose   %         Amp Mod Depth      %
XN = set name  q = quit   |       LFO Speed   %         Amp Mod Sense      %
Xh = left      l = right  |       LFO Delay   %         Pitch Mod Depth    %
Xk = up        j = down   |       LFO Wave    %         Pitch Mod Sense    %
XK = incr      J = decr   |       LFO Sync    %         Mod Pitch Range    %
Xspace = play auto-note   |       Pitch Bend  %         Mod Amp Range      %
X                         |       Port. Time  %         Breath Pitch       %
XAuto-Note:               |       Port. Mode  %         Breath Amp         %
X   Pitch %    Vol  %     |       Port. Foot  %         Breath Pitch Bias  %
X   Dur   %    Chan %     |       Sus. Foot   %         Breath EG Bias     %
X                         |
X#END
X-1,-1,NULL
X};
X
Xstruct paraminfo  Pdx100[] =  {
X/*
XNAME		TYPE	POS	MAX	OFFSET	MASK	SHIFT	ADHOC
X */
X#O algorithm	dx1a	%%	7	0
X#O op1attack	num	%%	31	0
X#O op1decay1	num	%%	31	0
X#O op1level1	num	%%	15	0
X#O op1decay2	num	%%	31	0
X#O op1release	num	%%	31	0
X#O op1freq	freq	%%	63	0
X#O op1detune	m3num	%%	6	0
X#O op1outlevel	num	%%	99	0
X#O op1velocity	num	%%	7	0
X#O op1ampmod	onoff	%%	1	0
X#O op1egbias	num	%%	7	0
X#O op1keyrate	num	%%	3	0
X#O op1keyscale	num	%%	99	0
X#O op2attack	num	%%	31	0
X#O op2decay1	num	%%	31	0
X#O op2level1	num	%%	15	0
X#O op2decay2	num	%%	31	0
X#O op2release	num	%%	31	0
X#O op2freq	freq	%%	63	0
X#O op2detune	m3num	%%	6	0
X#O op2outlevel	num	%%	99	0
X#O op2velocity	num	%%	7	0
X#O op2ampmod	onoff	%%	1	0
X#O op2egbias	num	%%	7	0
X#O op2keyrate	num	%%	3	0
X#O op2keyscale	num	%%	99	0
X#O op3attack	num	%%	31	0
X#O op3decay1	num	%%	31	0
X#O op3level1	num	%%	15	0
X#O op3decay2	num	%%	31	0
X#O op3release	num	%%	31	0
X#O op3freq	freq	%%	63	0
X#O op3detune	m3num	%%	6	0
X#O op3outlevel	num	%%	99	0
X#O op3velocity	num	%%	7	0
X#O op3ampmod	onoff	%%	1	0
X#O op3egbias	num	%%	7	0
X#O op3keyrate	num	%%	3	0
X#O op3keyscale	num	%%	99	0
X#O op4attack	num	%%	31	0
X#O op4decay1	num	%%	31	0
X#O op4level1	num	%%	15	0
X#O op4decay2	num	%%	31	0
X#O op4release	num	%%	31	0
X#O op4freq	freq	%%	63	0
X#O op4detune	m3num	%%	6	0
X#O op4outlevel	num	%%	99	0
X#O op4velocity	num	%%	7	0
X#O op4ampmod	onoff	%%	1	0
X#O op4egbias	num	%%	7	0
X#O op4keyrate	num	%%	3	0
X#O op4keyscale	num	%%	99	0
X#O feedback	num	%%	7	0
X#O playmode	mono	%%	1	0
X#O transpose	num	%%	45	0
X#O amoddepth	num	%%	99	0
X#O lfospeed	num	%%	99	0
X#O amodsens	num	%%	3	0
X#O lfodelay	num	%%	99	0
X#O pmoddepth	num	%%	99	0
X#O lfowave	wave	%%	3	0
X#O pmodsens	num	%%	7	0
X#O lfosync	onoff	%%	1	0
X#O modprange	num	%%	99	0
X#O pitchbend	num	%%	12	0
X#O modarange	num	%%	99	0
X#O portatime	num	%%	99	0
X#O breathprange	num	%%	99	0
X#O portmode	num	%%	1	0
X#O breatharange	num	%%	99	0
X#O autovol	num	%%	127	-63
X#O autopitch	num	%%	127	-60
X#O portfoot	onoff	%%	1	0
X#O breathpbias	num	%%	99	0
X#O autochan	num	%%	16	-1	*5
X#O autodur	num	%%	20	-5	*5
X#O susfoot	onoff	%%	1	0
X#O breathegbias	num	%%	99	0
XNULL,NULL,-1,-1,-1,-1,visnum,0,0,0,0
X};
X
END_OF_FILE
if test 4111 -ne `wc -c <'dx100.mnu'`; then
    echo shar: \"'dx100.mnu'\" unpacked with wrong size!
fi
# end of 'dx100.mnu'
fi
if test -f 'glib.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'glib.h'\"
else
echo shar: Extracting \"'glib.h'\" \(3792 characters\)
sed "s/^X//" >'glib.h' <<'END_OF_FILE'
X/* $Id: glib.h,v 1.6 89/05/06 17:13:25 lee Exp $
X *
X * GLIB - a Generic LIBrarian and editor for synths
X * Tim Thompson
X * modifications: Kesti, Lee
X * $Log:	glib.h,v $
X * Revision 1.6  89/05/06  17:13:25  lee
X * rel. to comp.sources.misc
X * 
X */
X
X#include <stdio.h>
X#include "machdep.h"
X
X#define EOX 0xf7
X#define MOUSE -2
X
X#ifndef BUFSIZ
X#define BUFSIZ 512
X#endif
X
X/* If a machine needs to do something special to read/write a binary file, */
X/* this is a hook that a machdep.h can override to do what it  needs to. */
X/* For example, see the Atari ST version  of machdep.h */
X#ifndef OPENBINFILE
X#define OPENBINFILE(f,file,mode) f=fopen(file,mode)
X#endif
X
X
X#ifndef OPENTEXTFILE
X#define OPENTEXTFILE(f,name,mode) f=fopen(name,mode)
X#endif
X
X/* Seconds before we give up trying to read something */
X#define TIMEOUT 5
X
X#define NUMONSCREEN 12
X/* position of first voice row */
X#define FIRSTROW 10
X#define LEFTSIDE 2
X#define RIGHTSIDE 55
X#define YANKROW 12
X#define YANKCOL 31
X#define LIBBANKS 3
X#define NOREDRAW 0
X#define REDRAW 1
X
X#define ctl(x) (x&037)
X
X#define CH_REDRAW '\014'
X
X#define CH_INC 'K'
X#define CH_INC2 'I'
X#define CH_INC3 '>'
X#define CH_DEC 'J'
X#define CH_DEC2 'M'
X#define CH_DEC3 '<'
X#define CH_SAME 'S'
X
X#define CH_LEFT 'h'
X#define CH_DOWN 'j'
X#define CH_UP 'k'
X#define CH_RIGHT 'l'
X/* for arrow key support to work, next 4 defines
X * can't be changed (unless code in unix-mach.c is modified)
X */
X#define ALTCH_LEFT ctl('b')
X#define ALTCH_DOWN ctl('n')
X#define ALTCH_UP ctl('p')
X#define ALTCH_RIGHT ctl('f')
X
X#define SCR_DOWN '\04'
X#define SCR_UP '\025'
X
X#define STR_LEFT "h"
X#define STR_DOWN "j"
X#define STR_UP "k"
X#define STR_RIGHT "l"
X
X#define VOICEBYTE(d,v,n) (*((d)+(v)*Voicesize+(n)))
X
Xstruct paraminfo {
X	char *p_name;
X	char *p_label;
X	INT16 p_lrow;	/* position for printing name */
X	INT16 p_lcol;
X	INT16 p_vrow;		/* position for printing value */
X	INT16 p_vcol;
X	char *((*p_tovis)());
X	INT16 p_min;
X	INT16 p_max;
X	INT16 p_val;
X	INT16 p_flags;
X};
X
Xstruct labelinfo {
X	INT16 l_row;
X	INT16 l_col;
X	char *l_text;
X};
X
Xstruct editinfo {
X	char *ed_name;		/* Synth name */
X	struct paraminfo *ed_params;	/* list of parameters */
X	struct labelinfo *ed_labels;	/* screen labels in edit mode */
X	INT16 ed_nvoices;		/* number of voices */
X	INT16 ed_vsize;		/* size of each voice data, in bytes */
X	INT16 ed_nsize;		/* name size */
X	int ed_dataid;		/* data ID */
X	int (*ed_din)();	/* copy voice data into paraminfo array */
X	int (*ed_dout)();	/* copy voice data out of paraminfo array */
X	int (*ed_sedit)();	/* send 1 voice to synth edit buffer */
X	int (*ed_sone)();	/* send 1 voice to a synth (permanent) patch*/
X	int (*ed_sbulk)();	/* send bulk voice data */
X	int (*ed_gbulk)();	/* get bulk voice data */
X	char *(*ed_nof)();	/* get name of a voice out of data */
X	int (*ed_snof)();	/* set name of a voice in data */
X	char *(*ed_numof)();	/* convert voice number to on-screen text */
X	int (*ed_cvtnum)();	/* convert visable voice number to std. format */
X	int (*ed_cvtanum)();	/* convert alphanumeric voice number to std. format */
X};
X
Xstruct peredinfo {
X	char *ed_libdata;	/* memory for library banks */
X	char *ed_syndata;	/* memory for synth bank */
X	char *ed_yankdata;	/* memory for yank buffer */
X	INT16 ed_libindex;	/* voice number of topmost displayed lib voice*/
X	INT16 ed_synindex;	/* ditto for synth side */
X	INT16 ed_channel;		/* MIDI channel # */
X	INT16 ed_erow;
X	INT16 ed_ecol;
X};
X
Xextern struct paraminfo *P;
Xextern struct labelinfo *L;
Xextern struct editinfo E[];
Xextern int Rows, Cols, Channel, Nvoices, Voicesize, Redraw, DataID;
Xextern char *Reason, *Synthname;
X
Xchar *bankvoice();
Xvoid setval();
Xint getval();
Xchar *malloc(), *alloc(), *nextls();
XFILE *fopen();
Xchar *strcat(), *strcpy();
Xlong milliclock();
X
Xextern int synthinfileflag;
Xextern int synthoutfileflag;
END_OF_FILE
if test 3792 -ne `wc -c <'glib.h'`; then
    echo shar: \"'glib.h'\" unpacked with wrong size!
fi
# end of 'glib.h'
fi
if test -f 'k1vis.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'k1vis.h'\"
else
echo shar: Extracting \"'k1vis.h'\" \(511 characters\)
sed "s/^X//" >'k1vis.h' <<'END_OF_FILE'
Xchar *visnum();
Xchar *vispnum();
Xchar *vispan();
Xchar *vispoly();
Xchar *visvelosw();
Xchar *vismode();
Xchar *vistwofour();
Xchar *vismute();
Xchar *vispolym();
Xchar *visvbwh();
Xchar *viscrv();
Xchar *viskeyshift();
Xchar *visfinetune();
Xchar *viscpitch();
Xchar *vislpitch();
Xchar *visonoff();
Xchar *visonoffk1();
Xchar *visonoffk2();
Xchar *visonoffk3();
Xchar *visonoffk4();
Xchar *viscsfnk1();
Xchar *viscsfnk2();
Xchar *viscsfnk3();
Xchar *viscsfnk4();
Xchar *visam1();
Xchar *visam3();
Xchar *visifosh();
Xchar *viswave();
END_OF_FILE
if test 511 -ne `wc -c <'k1vis.h'`; then
    echo shar: \"'k1vis.h'\" unpacked with wrong size!
fi
# end of 'k1vis.h'
fi
if test -f 'k5multi.mnu' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'k5multi.mnu'\"
else
echo shar: Extracting \"'k5multi.mnu'\" \(1511 characters\)
sed "s/^X//" >'k5multi.mnu' <<'END_OF_FILE'
X/* $Id: k5multi.mnu,v 1.6 89/05/06 17:13:29 lee Exp $
X * GLIB - a Generic LIBrarian and editor for synths
X *
X * Kawai K-5 Librarian - handles (SINGLE and) MULTI patches.
X * Functions are annotated if they work for SINGLE, MULTI, or both kinds.
X * Full editing not implemented - there are zillions of parameters,
X * and the huge LCD on the K-5 is actually quite easy to read and use.
X *
X * Alan Bland - att!druwy!mab
X * $Log:	k5multi.mnu,v $
X * Revision 1.6  89/05/06  17:13:29  lee
X * rel. to comp.sources.misc
X * 
X */
X
X#define OVERLAY2
X
X#include "glib.h"
X
X#define K5SINGLE	0
X#define K5MULTI		1
X#define K5MAGIC		0x5a3c
X
X#define NERRS		5
X#define RESERVESIZE	0
X
Xextern char *visnum();
X
X
X/* This array contains arbitrary screen labels (MULTI) */
Xstruct labelinfo Lk5m[] = {
X#MENU
X
X
X
X          Sorry, no edit capability implemented for the K-5 yet.
X
X
X
X
X
X
X
X
X
X
X
X  +-------------------------+--------------+
X  |Space = Play Note        | Auto-Note    |
X  |                         |              |
X  |h = left   q = quit      |Pitch    %    |
X  |j = down   N = Set Name  |Volume   %    |
X  |k = up     J = Decrement |Duration %    |
X  |l = right  K = Increment |Channel  %    |
X  |                         |              |
X  +-------------------------+--------------+
X#END
X-1,-1,NULL
X};
X
Xstruct paraminfo  Pk5m[] =  {
X/*
XNAME		TYPE	POS	MAX	OFFSET	MASK	SHIFT	ADHOC
X */
X#O autopitch	num	%%	127	-60
X#O autovol	num	%%	127	-63
X#O autodur	num	%%	20	-5	*5
X#O autochan	num	%%	16	-1	*5
XNULL,NULL,-1,-1,-1,-1,visnum,0,0,0,0
X};
X
END_OF_FILE
if test 1511 -ne `wc -c <'k5multi.mnu'`; then
    echo shar: \"'k5multi.mnu'\" unpacked with wrong size!
fi
# end of 'k5multi.mnu'
fi
if test -f 'mac-glib.r' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'mac-glib.r'\"
else
echo shar: Extracting \"'mac-glib.r'\" \(4012 characters\)
sed "s/^X//" >'mac-glib.r' <<'END_OF_FILE'
X/* $Id: mac-glib.r,v 1.6 89/05/06 17:13:31 lee Exp $
X * glib.r - glib resources
X *
X * SAF 3/7/88 (Steven Falco)
X * $Log:	mac-glib.r,v $
X * Revision 1.6  89/05/06  17:13:31  lee
X * rel. to comp.sources.misc
X * 
X */
X
X#include "Types.r"
X
X/* These define's are used in the MENU resources to disable specific
X   menu items. */
X#define AllItems	0b1111111111111111111111111111111	/* 31 flags */
X#define MenuItem1	0b00001
X#define MenuItem2	0b00010
X#define MenuItem3	0b00100
X#define MenuItem4	0b01000
X#define MenuItem5	0b10000
X
Xtype 'GLIB' as 'STR ';
X
Xresource 'GLIB' (0) {
X	"GLib Version 1.0";
X};
X
Xresource 'BNDL' (128) {
X	'GLIB',				/* our signature */
X	0,
X	{
X		'ICN#',
X		{
X			0, 128;		/* glib's icon */
X			1, 129		/* dumps' icon */
X		};
X		'FREF',
X		{
X			0, 128;		/* glib's type */
X			1, 129		/* dumps' type */
X		}
X	}
X};
X
Xresource 'ICN#' (128) {
X	{	/* array: 2 elements */
X		/* [1] */
X		$"0000 0000 0000 0000 0000 0000 003F 8000"
X		$"007F C000 00E0 E000 0180 3000 0180 1800"
X		$"0398 CC00 0700 0E00 0707 0E00 0710 4E00"
X		$"0388 8C00 11C7 1800 18F0 3000 1C3F E000"
X		$"0E0F C000 0706 0000 03FF FF00 01FF FF80"
X		$"0006 0180 0006 0180 0006 0000 001F F000"
X		$"003F F800 0070 1C00 00E0 0C00 00C0 0C00"
X		$"00C0 0C00 00F0 0F00 00F0 0F00 0000 0000",
X		/* [2] */
X		$"0000 0000 007F C000 00FF E000 01FF F000"
X		$"03FF F800 07FF FC00 0FFF FE00 1FFF FF00"
X		$"3FFF FF80 7FFF FF80 7FFF FF80 7FFF FF80"
X		$"7FFF FF80 7FFF FF80 7FFF FF80 7FFF FFC0"
X		$"7FFF FFE0 7FFF FFE0 3FFF FFE0 1FFF FFE0"
X		$"0FFF FFE0 07FF FFE0 03FF FFE0 03FF FFE0"
X		$"03FF FFE0 03FF FFE0 03FF FFE0 03FF FFE0"
X		$"03FF FFE0 03FF FFE0 03FF FFE0 03FF FFE0"
X	}
X};
X
Xresource 'ICN#' (129) {
X	{	/* array: 2 elements */
X		/* [1] */
X		$"0000 0000 0000 0000 0000 0000 0000 0000"
X		$"0000 0000 0003 F000 0043 FFC0 0063 0FC0"
X		$"01F3 0000 01FB 0000 01F3 F000 0063 FFC0"
X		$"0043 0FC0 0003 0000 0003 0000 0003 0000"
X		$"0003 0400 0003 0C00 007B 1FC0 00FF 3FC0"
X		$"01FF 1FC0 01FF 0C00 01FF 0400 00FE 0000"
X		$"007C 0000 0000 0000 0000 0000 0000 0000"
X		$"0000 0000 0000 0000 0000 0000 0000 0000",
X		/* [2] */
X		$"0000 0000 0000 0000 0000 0000 0000 0000"
X		$"03FF FFE0 03FF FFE0 03FF FFE0 03FF FFE0"
X		$"03FF FFE0 03FF FFE0 03FF FFE0 03FF FFE0"
X		$"03FF FFE0 03FF FFE0 03FF FFE0 03FF FFE0"
X		$"03FF FFE0 03FF FFE0 03FF FFE0 03FF FFE0"
X		$"03FF FFE0 03FF FFE0 03FF FFE0 03FF FFE0"
X		$"03FF FFE0 03FF FFE0 0000 0000 0000 0000"
X		$"0000 0000 0000 0000 0000 0000 0000 0000"
X	}
X};
X
Xresource 'FREF' (128) {
X	'APPL', 0, ""
X};
X
Xresource 'FREF' (129) {
X	'TEXT', 1, ""
X};
X
Xresource 'DLOG' (128, "About GLibI") {
X	{66, 102, 224, 400},
X	dBoxProc, visible, noGoAway, 0x0, 128, ""
X};
X
Xresource 'DITL' (128) {
X	 {
X/* 1 */ {130, 205, 150, 284},
X		button {
X			enabled,
X			"Continue"
X		};
X/* 2 */ {94, 28, 115, 301},				/* memory amount */
X		staticText {
X			disabled,
X			""
X		};
X/* 3 */ {8, 14, 27, 169},
X		staticText {
X			disabled,
X			"GLib Version 1.0"
X		};
X/* 4 */ {32, 29, 50, 195},
X		staticText {
X			disabled,
X			"Author: Tim Thompson"
X		};
X/* 5 */ {55, 28, 73, 299},
X		staticText {
X			disabled, "Macintosh conversion: Steven A. Falco"
X		}
X	}
X};
X
Xresource 'MENU' (128, "Apple", preload) {
X	128, textMenuProc,
X	AllItems & ~MenuItem2,	/* Disable item #2 */
X	enabled, apple,
X	{
X		"About GLibI",
X			noicon, nokey, nomark, plain;
X		"-",
X			noicon, nokey, nomark, plain
X	}
X};
X
Xresource 'MENU' (129, "File", preload) {
X	129, textMenuProc,
X	allEnabled,
X	enabled, "File",
X	{
X		"Quit",
X			noicon, "Q", nomark, plain
X	}
X};
X
Xresource 'MENU' (130, "Edit", preload) {
X	130, textMenuProc,
X	allEnabled,
X	enabled, "Edit",
X	 {
X		"Undo",
X			noicon, "Z", nomark, plain;
X		"-",
X			noicon, nokey, nomark, plain;
X		"Cut",
X			noicon, "X", nomark, plain;
X		"Copy",
X			noicon, "C", nomark, plain;
X		"Paste",
X			noicon, "V", nomark, plain;
X		"Clear",
X			noicon, nokey, nomark, plain
X	}
X};
X
Xresource 'SIZE' (-1) {
X	dontSaveScreen,
X	ignoreSuspendResumeEvents,
X	enableOptionSwitch,
X	canBackground,				/* sort-of :-) */
X	notMultiFinderAware,
X	300032,						/* preferred size */
X	300032						/* minimum size */
X};
END_OF_FILE
if test 4012 -ne `wc -c <'mac-glib.r'`; then
    echo shar: \"'mac-glib.r'\" unpacked with wrong size!
fi
# end of 'mac-glib.r'
fi
if test -f 'mac-mach.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'mac-mach.h'\"
else
echo shar: Extracting \"'mac-mach.h'\" \(1520 characters\)
sed "s/^X//" >'mac-mach.h' <<'END_OF_FILE'
X/* $Id: mac-mach.h,v 1.6 89/05/06 17:13:32 lee Exp $
X * GLIB - a Generic LIBrarian and editor for synths
X *
X * Machine dependent stuff.
X *
X * Macintosh version
X * Steven Falco
X * $Log:	mac-mach.h,v $
X * Revision 1.6  89/05/06  17:13:32  lee
X * rel. to comp.sources.misc
X * 
X */
X
X#define macintosh
X/*
X * You must also chose a development system.
X * Currently, only MPW is supported.  See machdep.c and vt.c for more
X * information.  Note that INT16 must be defined as a 16-bit (or larger)
X * integer.  In MPW (my development system), a short is 16 bits.
X *
X * Steve Falco, moss!saf
X */
X#define MPW   
X/* any others? */
X
X/* overlay directives for compiler */
X#ifdef OVERLAY1
X#define __SEG__ over1
X#endif
X#ifdef OVERLAY2
X#define __SEG__ over2
X#endif
X
X#include <errors.h>
X#include <files.h>
X#include <types.h>
X#include <segload.h>
X#include <strings.h>
X#include <vt.h>
X#include <mdr.h>
X
X#define SIGNATURE 'GLIB'
X#define FSFCBLen  0x3f6
X
X#define INT16 short
X
XOSErr GetFinfo(), SetFinfo();
X
X/*
X * MPW doesn't set the file type.  This tends to be important so we
X * do it manually...
X */
X#define SET_TEXT(filename) 				\
X{							\
X	FInfo myfinfo;					\
X	switch(GetFInfo(filename, 0, &myfinfo)) {	\
X		case noErr:				\
X			myfinfo.fdType = 'TEXT';	\
X			myfinfo.fdCreator = SIGNATURE;	\
X			SetFInfo(filename, 0, &myfinfo);\
X			break;				\
X		default:				\
X			fprintf(stderr,"Cannot set file type for %s\n", filename); \
X			break;				\
X	}						\
X}
X
X#define STATMIDI (midi_rxst==MIDI_NE?1:0)
X
X#define STATTXBF (midi_txst==MIDI_NE?1:0)
END_OF_FILE
if test 1520 -ne `wc -c <'mac-mach.h'`; then
    echo shar: \"'mac-mach.h'\" unpacked with wrong size!
fi
# end of 'mac-mach.h'
fi
if test -f 'mac-make.uu' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'mac-make.uu'\"
else
echo shar: Extracting \"'mac-make.uu'\" \(1659 characters\)
sed "s/^X//" >'mac-make.uu' <<'END_OF_FILE'
Xbegin 644 mac-make
XM(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C
XM(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(PTC(%=!4DY)3D<@+2!42$E3($9)
XM3$4@0T].5$%)3E,@4U!%0TE!3"!#2$%204-415)3($]55%-)1$4@5$A%($Y/
XM4DU!3" C#2,@05-#24D@4D%.1T4N("!$3TXG5"!%1$E4($E4($580T505"!/
XM3B!!($U!0TE.5$]32"$A(2$@(" @(" @(" @(" @(",-(R,C(R,C(R,C(R,C
XM(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C
XM(R,C(R,C(R,C(R,C(PTC#2,@;F]T92 M('1H:7,@:7,@<')E='1Y(&1I9F9E
XM<F5N="!F<F]M('1H92!5;FEX(&UA:V5F:6QE+B @5&AE(&UA8R!C86XG= TC
XM(&AA;F1L92!T:&4@+F,O+F\@97%U871E<RX@($%L<V\L('!A=&@@;F%M97,@
XM:&%V92!A(&1I9F9E<F5N="!S>6YT87@L#2,@;&EB<F%R:65S(&%R92!I;B!A
XM(&1I9F9E<F5N="!P;&%C92P@86YD('-P96-I86P@8VAA<F%C=&5R<R!A<F4@
XM=7-E9"X-(R!F:6YA;&QY+"!T:&4@8V]M<&EL97(@:&%N9&QE<R Q(&9I;&4@
XM870@82!T:6UE(&%N9"!D;V5S;B=T(&%U=&]M871I8V%L;'D-(R!L:6YK(2 @
XM3V@@=V5L;"X@270@9&]E<R!W;W)K('1H;W5G:"XN+@TC#2,@4T%&(#<O,C8O
XM.#<-(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C
XM(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(PU,24)3(#T@>V-L:6)R87)I
XM97-]8W)U;G1I;64N;R"V#0D@("![8VQI8G)A<FEE<WUS=&1C;&EB+F\@M@T)
XM(" @>V-L:6)R87)I97-]8VEN=&5R9F%C92YO(+8-"2 @('MC;&EB<F%R:65S
XM?6-S86YE;&EB+F\@M@T)(" @>V-L:6)R87)I97-];&EB8RYO#0U34D,@/2!D
XM=S@P,# N8R!G;&EB+F,@9VQI8BYH(&=L:6(N<B"V#0D);&ES="YC(&UA8RUM
XM86-H+F,@;6%C+6UA8V@N:""V#0D);6%C+6UA:V4@='@X,7 N8R!T>#@Q>BYC
XM('EA;6%?8V]M+F,-#0U/0DH@/2!G;&EB+F,N;R!L:7-T+F,N;R!D=S@P,# N
XM8RYO(+8-"0ET>#@Q<"YC+F\@='@X,7HN8RYO(+8-"0EY86UA7V-O;2YC+F\@
XM;6%C:&1E<"YC+F\-"0D-9VQI8B#$Q"!G;&EB+G(-"7)E>B!G;&EB+G(@+6\@
XM9VQI8@T)#6=L:6(@Q,0@>T]"2GT@9VQI8BYR('M,24)3?0T);&EN:R![3T)*
XM?2![3$E"4WT@+6\@9VQI8@T-9VQI8BYS:&%R(,0@>U-20WT-"7-H87(@>U-2
X.0WT@/B!G;&EB+G-H87)I
X 
Xend
END_OF_FILE
if test 1659 -ne `wc -c <'mac-make.uu'`; then
    echo shar: \"'mac-make.uu'\" unpacked with wrong size!
fi
# end of 'mac-make.uu'
fi
if test -f 'mac-mdr.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'mac-mdr.h'\"
else
echo shar: Extracting \"'mac-mdr.h'\" \(810 characters\)
sed "s/^X//" >'mac-mdr.h' <<'END_OF_FILE'
X/* $Id: mac-mdr.h,v 1.6 89/05/06 17:13:34 lee Exp $
X * mdr.h - header file for stuff that uses the midi driver
X *
X * Steven A. Falco  7/30/87
X * $Log:	mac-mdr.h,v $
X * Revision 1.6  89/05/06  17:13:34  lee
X * rel. to comp.sources.misc
X * 
X */
X
X#define MIDI_NE		0		/* queue has 1 or more bytes available */
X#define MIDI_EM		(-1)	/* queue is empty */
X
Xextern void midi_init();	/* set up hardware & software */
Xextern void midi_reset();	/* unset - very important to avoid crashes */
Xextern void midi_tx();		/* send a byte (but declare arg as a long) */
Xextern long midi_rx();		/* get a byte (returns -1 on "nothing available" */
Xextern char midi_txst;		/* transmit queue state (flags above) */
Xextern char midi_rxst;		/* receive queue state */
Xextern long midi_time;		/* relative time in mS (5 mS granularity) */
END_OF_FILE
if test 810 -ne `wc -c <'mac-mdr.h'`; then
    echo shar: \"'mac-mdr.h'\" unpacked with wrong size!
fi
# end of 'mac-mdr.h'
fi
if test -f 'mac-vt.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'mac-vt.h'\"
else
echo shar: Extracting \"'mac-vt.h'\" \(2039 characters\)
sed "s/^X//" >'mac-vt.h' <<'END_OF_FILE'
X/* $Id: mac-vt.h,v 1.6 89/05/06 17:13:35 lee Exp $
X * vt.h - definitions for the vt100-like console device handler
X *
X * Steven A. Falco  4/30/87
X * $Log:	mac-vt.h,v $
X * Revision 1.6  89/05/06  17:13:35  lee
X * rel. to comp.sources.misc
X * 
X */
X
X#ifndef EOF
X#define EOF		-1
X#endif
X
X/* this structure defines one member of the _StdDevs array.  This is
X * similar to the Unix concept of bdevsw and cdevsw.
X */
Xtypedef struct {
X	int name;			/* 'CONS' for the console */
X	int (*l_access)();	/* NOT the same as open - can do mv or rm also */
X	int (*l_close)();	/* close */
X	int (*l_read)();	/* read */
X	int (*l_write)();	/* write */
X	int (*l_ioctl)();	/* ioctl */
X} DEVSW;
X
Xextern DEVSW _StdDevs[];
X
X/* this structure defines one member of the file table.  I believe
X * the table is dynamically allocated for 200 bytes at a time or
X * 10 entries.  But _lockedHandle may return words or something else.
X */
Xtypedef struct {
X	short flags;	/* high byte sometimes has fileno */
X	short errcode;	/* a MacOS error code */
X	DEVSW *handler;	/* a pointer to our _StdDevs array entry */
X	int z;			/* unknown */
X	int count;		/* read or write count desired. <-- --> */
X	char *buffer;	/* buffer pointer to use. <-- --> */
X} IOSTR;
X
X/* look up a file number in the file table and return a pointer to the
X * entry.  Pass in -1 to get a new entry.  NOTE - the ADDRESS of the
X * file number is passed - NOT the file number itself.  I wonder why?
X */
XIOSTR *_getIOPort();
X
X/* these are the low-level entry points to link the driver (handler)
X * into the system.  They require strange input arguments and always
X * return 0 on success.  Don't call them directly...
X */
Xextern	vt_faccess();
Xextern	vt_close();
Xextern	vt_read();
Xextern	vt_write();
Xextern	vt_ioctl();
X
X/* these are the ultra-low level calls that do all the work.  You can
X * call them directly to avoid all the IntEnv overhead.  See vt.c for
X * the input and output specifications.
X */
Xextern	vt_open();
Xextern	vt_getch();
Xextern	vt_peekch();
Xextern	vt_putch();
Xextern	vt_cooked();
Xextern	vt_raw();
END_OF_FILE
if test 2039 -ne `wc -c <'mac-vt.h'`; then
    echo shar: \"'mac-vt.h'\" unpacked with wrong size!
fi
# end of 'mac-vt.h'
fi
if test -f 'makevish.l' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'makevish.l'\"
else
echo shar: Extracting \"'makevish.l'\" \(345 characters\)
sed "s/^X//" >'makevish.l' <<'END_OF_FILE'
X%{
X/* $Id: makevish.l,v 1.6 89/05/06 17:13:36 lee Exp $
X * Greg Lee
X * $Log:	makevish.l,v $
X * Revision 1.6  89/05/06  17:13:36  lee
X * rel. to comp.sources.misc
X * 
X */
X	int i;
X%}
X
X%%
X
X^"char *"[ \t\n]*"vis"[0-9A-Za-z_]+[ ]*"("  {
X	i = 6;
X	while (yytext[i++] != 's') ;
X	printf("char *vis%s);\n", yytext+i);
X};
X
X.	;
X\n	;
X
X%%
Xmain() { yylex(); }
END_OF_FILE
if test 345 -ne `wc -c <'makevish.l'`; then
    echo shar: \"'makevish.l'\" unpacked with wrong size!
fi
# end of 'makevish.l'
fi
if test -f 'patchlevel.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'patchlevel.h'\"
else
echo shar: Extracting \"'patchlevel.h'\" \(21 characters\)
sed "s/^X//" >'patchlevel.h' <<'END_OF_FILE'
X#define PATCHLEVEL 6
END_OF_FILE
if test 21 -ne `wc -c <'patchlevel.h'`; then
    echo shar: \"'patchlevel.h'\" unpacked with wrong size!
fi
# end of 'patchlevel.h'
fi
if test -f 'pc-readme' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'pc-readme'\"
else
echo shar: Extracting \"'pc-readme'\" \(225 characters\)
sed "s/^X//" >'pc-readme' <<'END_OF_FILE'
X
XThe DOS support for glib requires the Turbo C compiled and the
XMicrosoft Assembler (specifically, I have Turbo C 2.0 and MASM 4.0).
XCopy pc-mach.h to machdep.h, pc-mach.c to machdep.c, pc-tcc.mak to
Xmakefile, and type make.
END_OF_FILE
if test 225 -ne `wc -c <'pc-readme'`; then
    echo shar: \"'pc-readme'\" unpacked with wrong size!
fi
# end of 'pc-readme'
fi
if test -f 'pc-tcc.mak' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'pc-tcc.mak'\"
else
echo shar: Extracting \"'pc-tcc.mak'\" \(2436 characters\)
sed "s/^X//" >'pc-tcc.mak' <<'END_OF_FILE'
X# $Id: pc-tcc.mak,v 1.6 89/05/06 17:13:41 lee Exp $
X#
X# Glib, Turbo C version for Kawai K1, etc.
X# Scott Snyder
X# $Log:	pc-tcc.mak,v $
X# Revision 1.6  89/05/06  17:13:41  lee
X# rel. to comp.sources.misc
X# 
X# added defs for CZ1
X# 
X# adapted from Tim Thompson's program
X# with modifications by Michael Kesti and Greg Lee
X
X# works with TC v2.0
X
XMODEL=l
X
XLEX = flex
XLEXLIB =
X# to use lex instead of flex:
X#LEX = lex
X#LEXLIB = -ll
X
X# defines for CFLAGS (below):
X#	BSD for fopen with mode 'r'/'w' instead of 'rb'/'wb'
X#	ULTRIX enables curses no()/nonl() fix
X#	ARROW for use of arrow keys (probably only bsd)
X# and uncomment one set of the following for supported synths:
X
X# Remove '#' from next 5 lines for Roland D-10:
X#SYNTHS = -DROLANDD10
X#SYNTHOBJ = vis.obj d10pat.obj d10tim.obj d10ton.obj d10wfg.obj d10tvf.obj \
X#       d10tva.obj d10rsu.obj d10urp.obj d10tra.obj
X#SYNTHC = d10pat.c d10tim.c d10wfg.c d10tvf.c d10tva.c \
X#	d10rsu.c d10urp.c d10tra.c # vis.h
X
X# Remove '#' from next 4 lines for various Yamaha, K5, etc.:
X#SYNTHS = -DTX81Z -DTX81ZPERF -DDX100 -DDW8000 -DKAWAIK5 -DDEP5
X#SYNTHOBJ = dx100.obj tx81z.obj tx81p.obj dw8000.obj yama_com.obj
X#       k5single.obj k5multi.obj dep5.obj
X#SYNTHC = dx100.c tx81z.c tx81p.c dw8000.c k5single.c k5multi.c dep5.c
X
X# Remove '#' from next group of lines for Yamaha DX7, DX7s:
XSYNTHS = -DDX7 -DDX7S
XSYNTHOBJ = dx7.obj dx7s.obj
XSYNTHC = dx7.c dx7s.c
X
X# Remove '#' from next 3 lines for Kawai K1:
X#SYNTHS = -DKAWAIK1
X#SYNTHOBJ = k1vis.o k1multi.o k1single.o
X#SYNTHC = k1multi.c k1single.c # k1vis.h
X
X# Remove '#' from next 3 lines for CZ1:
X#SYNTHS = -DCZ1
X#SYNTHOBJ = cz1.o
X#SYNTHC = cz1.c
X
X#
X# Define SSS to enable speed-up code in glib.c
X#
X
XCFLAGS = -N -m$(MODEL) -DSSS $(SYNTHS)
X
XGLIBOBJ = glib.obj machdep.obj list.obj pc-ints.obj
X
XOBJ = $(GLIBOBJ) $(SYNTHOBJ)
X
XH = glib.h machdep.h vis.h
X
X.mnu.c:
X	menutoc $*.mnu $*.c
X
X.c.obj:
X	tcc -c $(CFLAGS) $.
X
X.c.exe:
X	tcc -N $.
X
Xglib.exe : menutoc.exe $(SYNTHC) $(OBJ)
X	tcc -m$(MODEL) $(OBJ)
X
Xmachdep.c: pc-mach.c
X	copy pc-mach.c machdep.c
X
Xmachdep.h: pc-mach.h
X	copy pc-mach.h machdep.h
X
Xmachdep.obj: machdep.c $(H)
X
Xglib.obj: glib.c $(H)
X
Xlist.obj: list.c $(H)
X
Xdx100.obj: dx100.c $(H)
X
Xtx81z.obj: tx81z.c $(H)
X
Xtx81p.obj: tx81p.c $(H)
X
Xdw8000.obj: dw8000.c $(H)
X
Xyama_com.obj: yama_com.c $(H)
X
Xdx7.obj: dx7.c $(H)
X
Xdx7s.obj: dx7s.c $(H)
X
Xk5single.obj: k5single.c $(H)
X
Xk5multi.obj: k5multi.c $(H)
X
Xpc-ints.obj: pc-ints.asm
X	masm /mx pc-ints;
END_OF_FILE
if test 2436 -ne `wc -c <'pc-tcc.mak'`; then
    echo shar: \"'pc-tcc.mak'\" unpacked with wrong size!
fi
# end of 'pc-tcc.mak'
fi
if test -f 'st-mach.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'st-mach.h'\"
else
echo shar: Extracting \"'st-mach.h'\" \(414 characters\)
sed "s/^X//" >'st-mach.h' <<'END_OF_FILE'
X/*
X * GLIB - a Generic LIBrarian and editor for synths
X *
X * Machine dependent stuff.
X *
X * Atari ST version
X */
X
X#define INT16 int
X
X#include <osbind.h>
X#include <gemdefs.h>
X#include <obdefs.h>
X
X#define CONSOLE 2
X#define MIDI 3
X
X#ifdef OVERLAY1
Xoverlay "over1"
X#endif
X
X#ifdef OVERLAY2
Xoverlay "over2"
X#endif
X
X#define OPENBINFILE(f,name,mode) f=fopen(name,mode[0]=='r'?"br":"bw")
X
X#define STATMIDI (Bconstat(MIDI))
END_OF_FILE
if test 414 -ne `wc -c <'st-mach.h'`; then
    echo shar: \"'st-mach.h'\" unpacked with wrong size!
fi
# end of 'st-mach.h'
fi
if test -f 'unix-mach.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'unix-mach.h'\"
else
echo shar: Extracting \"'unix-mach.h'\" \(338 characters\)
sed "s/^X//" >'unix-mach.h' <<'END_OF_FILE'
X/* $Id: unix-mach.h,v 1.6 89/05/06 17:13:46 lee Exp $
X * GLIB - a Generic LIBrarian and editor for synths
X *
X * Machine dependent stuff.
X *
X * Unix version
X * Tim Thompson
X * $Log:	unix-mach.h,v $
X * Revision 1.6  89/05/06  17:13:46  lee
X * rel. to comp.sources.misc
X * 
X */
X
X#define INT16 int
X
X#define STATMIDI (statmidi())
X#define UNIX
END_OF_FILE
if test 338 -ne `wc -c <'unix-mach.h'`; then
    echo shar: \"'unix-mach.h'\" unpacked with wrong size!
fi
# end of 'unix-mach.h'
fi
if test -f 'vis.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'vis.h'\"
else
echo shar: Extracting \"'vis.h'\" \(764 characters\)
sed "s/^X//" >'vis.h' <<'END_OF_FILE'
X/* $Id: vis.h,v 1.6 89/05/06 17:13:47 lee Exp $
X * Revision 1.5  89/04/25  15:54:39  Michael_Kesti
X * $Log:	vis.h,v $
X * Revision 1.6  89/05/06  17:13:47  lee
X * rel. to comp.sources.misc
X * 
X */
Xchar *vispan();
Xchar *visreverbtype();
Xchar *visreverbtime();
Xchar *visreverblevel();
Xchar *vispatchlevel();
Xchar *viskeymode();
Xchar *vissplit();
Xchar *vistonegroup();
Xchar *visrtone();
Xchar *vistonenum();
Xchar *viskeyshift();
Xchar *visfinetune();
Xchar *visbendrange();
Xchar *visassignmode();
Xchar *vistonebal();
Xchar *visstruct();
Xchar *vispmute();
Xchar *visenvmode();
Xchar *viscpitch();
Xchar *vispkeyfol();
Xchar *vistkeyfol();
Xchar *viswavebank();
Xchar *vispcmnum();
Xchar *visvelsens();
Xchar *visenvlev();
Xchar *visbiaslev();
Xchar *visbiaspd();
Xchar *vistvablev();
END_OF_FILE
if test 764 -ne `wc -c <'vis.h'`; then
    echo shar: \"'vis.h'\" unpacked with wrong size!
fi
# end of 'vis.h'
fi
echo shar: End of archive 1 \(of 15\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 15 archives.
    rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0