YABB - Yet Another Blue Box		Version 0.93		    Jan, 08 1992

All code and ideas by:  fst, gofty, panda, friedo, nevs and to-pse

      Sine-Code written by fst, gofty & to-pse                          
      Macro-Parser written by fst and additions by to-pse                 
      Sound-blaster & Ad-Lib support by friedo & to-pse                    
      Testing & suggestions by panda & nevs

YABB is a blue-box program for the PC-compatibles.  It was written to support
the circuitry of the Chaos Computer Club Hamburg, FRG.  In addition there will
be support for Adlib-compatible Sound-Cards and the Soundblaster and an much
improved version of the original d/a-circuitry.  Currently the program has been
tested on the following systems:

	AT486   33Mhz
	AT386	33Mhz
	AT386	~8Mhz (slow mode)
	AT286	12Mhz

The program requires at least a 286 processor.  As the calculations involved
require some performance, there is the slight (?) possibility that the program
won't run correctly on slower systems.  Especially the Sound-blaster support
needs a certain amount of speed for timing reasons.

YABB is supposed to be a replacement for the pcm.c program supplied for the
d/a-converter-card by the CCC.  The handling of pcm was pretty crude.  Com-
pared to this, YABB is a  v e r y  big improvement.

YABB is fully macro-oriented.  First of all there are no definitions for things
like 'Clear Forward', 'Start', 'Seize' etc.  Almost everything is defineable.
This makes YABB  v e r y  flexible.

If you find YABB to be a useful piece of software, please be so kind to send us
the amount of $20, DM40,- or equivalent.  If you have any suggestions, questions
or other things concerning YABB, please contact us via email:

	uucp:		yabb@xfswob.han.de
			yabb@xfswob.wob.sub.org	
	fido:		yabb@(2:240/13)





DOCUMENTATION
-------------

After starting YABB, it tries to locate a precalculated sinus-table on your
disk, pointed to by the environment-variable YABB.  You can set this variable
like this (for example):

		set yabb=c:\yabb

If the variable is not set, YABB tries to load the table from the directory it
has been loaded from.  If neither of those files can be found, a new sinetable
is being computed.  This will take a while (depending on the speed of your sys-
tem).  Afterwards the file will be written either to the path pointed to by the
environment-variable or into the directory from which YABB was loaded as a file
named sinus.dat.

Next YABB looks for a default-symbol-tabel called symbols.sym in the directory
pointed to by the environment-varible or in the directory YABB was loaded from.
If found it is loaded into YABB.

Afterwards YABB enters the command-mode.  Here you have the possibilty to enter
new macros (here called symbols), execute macros, change the current mode of
operation or execute built-in procedures.



BUILT-IN COMMANDS
-----------------

.Info			information about the authors and program
.List [symbol]		list [symbol] or if missing all symbols
.Mode			list the current state of the mode-stack
.Read [filename]	reads [filename] and interprets it as commands
.Write [filename]	stores current symbol-definitions as [filename]
.Hotkey			enters hotkey-mode for instantaneaous access to macros
.Clear			clears all symbol-definitions and the mode-stack
.Device [device]	selects appropriate output-device (LPTx,AL,SB,DA)
.Quit			quits YABB
.HElp   		displays all currently supported builtin command
.Fullscreen		enters full-screen command mode with mouse-support  
			(currently not supported - wait for Release 1.00)

All commands can be abbreviated by the first or first two letters.




MODE-CHANGING
-------------

/xxx			pushes xxx on the mode-stack, making it the current
			Mode
\			pops the last element off the mode-stack




SYMBOL-DEFINITION
-----------------

<symbol>=<Commands>	Defines <symbol> as being a sequenz of <Commands>,
			where Commands can be symbols itself, Mode-Changes,
			OutPut of Sound etc.
<symbol>=		Deletes <symbol>




SYMBOL-EXECUTION
----------------

<symbol>		Expands and executes <symbol>







HOTKEY-DEFINITIONS
------------------

Key		Normal Val	Shifted Val	Alted Val	Ctrl-Val
-------------------------------------------------------------------------
F1		315		340		360		350
F2		316		341		361		351
F3		317		342		362		352
F4		318		343		363		353
F5		319		344		364		354
F6		320		345		365		355
F7		321		346		366		356
F8		322		347		367		357
F9		323		348		368		358
F10		324		349		369		359
F11		--		--		--		--
F12		--		--		--		--
PRT		--		--		--		--
ROLL		--		--		--		--
PAUSE		--		--		--		--
L_ARR		331		331		--		371
R_ARR		333		333		--		372
U_ARR		328		328		--		--
D_ARR		336		336		--		--
INS		338		338		--		--
DEL		339		339		--		--
POS1		327		327		--		375
END		335		327		--		373
PGUP		329		329		--		388
PGDN		337		337		--		374
TAB		9		271		--		--
BS		8		8		--		127
CR		13		13		--		10
ESC	************* should not be used **************


The other keys, like 0..9, A..Z, a..z and the special symbols (!,",$..)
are mapped to their ascii-values...





STILL MISSING
-------------

whitespaces should be handled much smoother
clear should clear mode-stack
program should run on any 286 fast than 12 Mhz (in SB-Mode, too)
read should not try to interpret .commands as filename
readkey should be able to get ALL extended keys (F11, F12 for example)
ad-lib support is still missing
keys should first not be mapped to upcase for definitions of hotkeys...
pulse-dialing
support for (auto-recognition of) D/A-card!
fullscreen-mode with mouse-support
syntax-check when defining macros


