  EEEEEEEE   PPPPP     SSSSSS   SSSSSS            DDDDD     OOOOO    CCCCC
  E          P    P   S        S                  D    D   O     O  C     
  EEEEE      PPPPP     SSSSS    SSSSS    -------  D     D  O     O  C
  E          P              S        S            D    D   O     O  C     
  EEEEEEEE   P        SSSSSS   SSSSSS             DDDDD     OOOOO   CCCCC
  -----------------------------------------------------------------------
    COMPLETE USERDOCUMENTATION FOR EXTENDED POLYPHONIC SAMPLE SYNTHESIZER


Program Copyright (c) 1990-2018 by Copson IT Ltd/Unit Seventeen

Documentation Copyright (c) 1994-2018 Copson IT Ltd

All rights reserved

This document is a subset of the developer documentation for EPSS sound system
available from Copson IT Ltd.

Permission to use, copy and distribute this software and its documentation
for educational, research, and not-for-profit purposes, without fee and
without a signed licensing agreement, is hereby granted, provided that
the above copyright notice, this paragraph and the next paragraph appear
in all copies and distributions. If .BIN files are used in non-profit demos
or part of other non-profit software, include as a minimum the copyright
notice above with link to http://epss.copson.se.
Contact Copson IT Ltd, http://epss.copson.se for commercial licensing
opportunities.

THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER
IS PROVIDED "AS IS". COPSON IT LTD HAS NO OBLIGATION TO PROVIDE MAINTENANCE,
SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.

Program written & designed by Conny Pettersson

Copson IT Ltd
United Kingdom

General technical data:

* Hardware: STe/MSTe/TT/Falcon equipped with PCM-DMA.
* Replay rates: 12516, 25033 or 50066 Hz. Stereo or Mono
* Channels: 2, 4, 6, 8, 12 or 16 channels.
* Polyphony: up to 16 channels played simultaneously.
* Dynamic range: 8 bits for 2/4 channels, 7 bits for 6/8 channels
  and 6 bits for 12/16 channels.
* Pitch: two octaves up and two octaves down from original sample in one
  halftone resolution. No finepitch.
* Volumes: channelindependant 64 step controlled either by MIDI-velocity
  or MIDI-PolyPressure. Dynamic volume possible by using MIDI-PolyPressure.

The EPSS Musical MIDI System consists of

1) The main program, EPSS Control, which can be run either as an ACCessory
or as a stand-alone program and

2) The sounddrivers, EPS[SB]????.BIN, which are modules with different
configurations of replay rate and number of channels. The modules can be used
stand-alone in the user's own programs. See description of EPSS Sounddriver
elsewhere in this document for further information about this.

The difference between EPSS????.BIN and EPSB???.BIN is that EPSB????.BIN
use byte frequencey interpolation (slower but better sound quality) and
EPSS????.BIN uses word frequence interpolation (faster but lower sound
quality).

Following Sounddriverconfigurations have currently been developed:

2 Channels 50 kHz, real, vol 1:1
4 Channels 50 kHz, add 2, vol 1:2

2 Channels 25 kHz, real, vol 1:1
4 Channels 25 kHz, mux 4, vol 1:1
6 Channels 25 kHz, mux 4*2, vol 1:2
8 Channels 25 kHz, mux 4*2, vol 1:2
16 Channels 25 kHz, mux 4*4, vol 1:4

2 channels 12,5 kHz, real, vol 1:1
4 channels 12,5 kHz, add 2, vol 1:2

real: No adding or multiplexing is done to the sounds. This gives full 8-bit
  dynamics.
add 2: This means that two sounds are added together at each channel. This
 gives about 7 bit dynamic range.
mux 4: This indicates that the multiplexing technique is used. In this technique
  the PCM-DMA is set to 50 kHz replay frequency and the samples are placed
  after eachother. This gives full 8 bit dynamic range, but some high-pitch
  quantization noice. Only usuable with PDM-DMA at 50 kHz.
mux 4*2: This combines multiplex and adding.

The above drivers also exist in specially designed formats to optimize speed
for different processors and VBL-frequencys (50 or 60 Hz).

The EPSS Sounddriver is made to either be called directly on the VBL-interrupt,
or on a Timer A-interrupt. The former needs an adjustment value to prevent
bufferoverlap. The adjustmentvalue is placed in the variable e_adjust.


The EPSS Sounddriver always contains a replayroutine for standard MID-files
of format 1. The MIDI-information found in the MID-files are sent to the 
Main Control routine of EPSS, which interprets the MIDI-data and uses the
information contained in the patch to decide which sound that should be
played. Therefore EPSS always demands a patch to be installed before anything
can be played at all. The patch contains definitions about which sound
that should be played at a particular MIDI-tone. It also contains the base-
samples for the sounds.

If you don't are interested in how the patchfile is built, you could skip
following information and go directly to 'EPSS Sounddriver'.



Definitions for Patchfile:
--------------------------

Fileextension: SPI
Length: Variable


The patch generally consist of five different informationblocks:



Mainparameterblock
      ....
Splitinformationblock
      ....
Extended Soundinformationblock
      ....
Soundinformationblock
      ....
Samples for the sounds


You should always check the version of the patch with i_fileID before use
assume anything about it.

If you find the fileID identical to $0101, use following lengths:

Mainparameterblock: 80 bytes total
Splitinformationblok: 256 * Number of MIDI-channels  bytes
Extended Soundinformation: 64 bytes for each sound
Soundinformationblock: 16 bytes for each sound
Samples: Variable

If you encounter an unknown fileID, and ONLY then, find out the lengths of
each block by the variables i_mainlen, i_splitlen, i_xsinflen, i_sinflen.
These variables are not defined in version $0101 and below, and are therefore
set to 0 as default.

This has to be done to ensure maximum compatibility both backwards and
forwards. Of course, if you don't want to make an patcheditor, you don't have
to bother about these variables because the sounddrivers handles this
internally.

The Mainparameterblock
----------------------
This block contains general information about the patch. The length of the
block is 16 bytes for version $0100 and 80 bytes long for extended version
$0101. This is subject to be changed, so always use the equate i_pinfolen.

Name               Offset  Type     Purpose
--------------------------------------------------------------------------
i_no_of_MIDIch     $00      W       Number of splitmaps in the patch - 1. This
                                    also reflects the total number of MIDI-
                                    channels possible. Values 0-15. Only the
                                    lower 4 bits of the value is used. The
                                    other should be left 0 to ensure future
                                    compatibility. Use it logically and:ed
                                    with $000F.
i_no_of_sounds     $02      W       Maximum number of sounds in the patch - 1.
                                    Values 0-255. Only the lower 8 bits of the
                                    value is used. The other should be left 0
                                    to ensure future compatibility. Use it
                                    logically and:ed with $00FF.
i_filelen          $04     L        Total length of the file including all
                                    splitmaps and samples.
i_patch_offset     $08     W        Offset to start of splitmaps from beginning
                                    of file. Unsigned word.
i_sinfo_offset     $0A     W        Offset to soundinfostart from beginning of
                                    file. Unsigned word.
i_sdata_offset     $0C     W        Offset to start of sample-data from
                                    beginning of file. Unsigned word.
i_fileID           $0e     W        Patchfiletype.
                                    Upper byte:
                                     $00: Generation 0 patchfile.
                                     $01: Generation 1 patchfile. Currently
                                          used (Feb 93)
                                     $02: Special version of patchfil which
                                          samples are precalculated to 12 kHz
                                          to be used only with 12,5 kHz driver.
                                     Lower byte:
                                     $00: Generation 0 patchfile.
                                     $01: Generation 1 patchfile extended.
                                          Currently used (Feb 93). Includes
                                          volumes, longer mainparameterblock
                                          and sample extended info.
                                          
Following information is only included in Generation 1 patchfile Extended
(version $0101):

i_sx_offset	      $10     W          Offset to Extended Soundinformationblock.
i_crtime           $12	 W          Creation time (DOS-format)
i_crdate           $14     W          Creation date (DOS-format)
i_chtime           $16     W          Time modified (DOS-format)
i_chdate           $18     W          Last modified (DOS-format)
i_pname            $1A     ASCII      Patchname. 8 bytes
i_mainlen          $22     W          Length of Mainparameterblock (80)
i_splitlen         $24     W          Length of a splitentry (2)
i_xsinflen         $26     W          Length of an Extended soundinformation-
                                      entry (64)
i_sinflen          $28     W          Length of a soundinformationentry (16)
i_extinfo          $2A                Reserved. 6 bytes
i_patchinfo        $30     ASCII      Patchinformation. 32 bytes.


Splitinformationblock
---------------------

This block consist of a 256 bytes long table for each MIDI-channel present
in the patch:

Splittable MIDI-Channel 1
    ....
Splittable MIDI-Channel 2
    ....
    ....
    ....
Splittable MIDI-Channel (i_no_of_MIDIch+1)


Splittable
----------
This table consists of information about which sound a MIDI-tone in the
current MIDI-channel represent and at which pitch the tone should be
played. 

Offset      Type        
------------------------------------------------------
$00         B           Pitch for MIDI-Tone 0 (C-1)
$01         B           Sound for MIDI-Tone 0 (C-1)
$02         B           Pitch for MIDI-Tone 1 (C#-1)
$03         B           Sound for MIDI-Tone 0 (C-1)
.           .           ........................
$60         B           Sound for MIDI-Tone 48 (C3)
.           .           ........................
$FE         B           Pitch for MIDI-Tone 127 (G9)
$FF         B           Sound for MIDI-Tone 127 (G9)

Pitch:      7654 3210
            mfff ffff
            m:
            0          fffffff points to routine in table frekv_rut which
                               should be used when calculating the pitch
                               of the sound.
            1          No sound present on this entry

Sound:      7654 3210
            ssss ssss
            
            ssssssss      Soundnumber for the MIDI-tone. The informationtable
                          of the sound is supposed to be present in the
                          soundinformationblock.


MIDI-channel 16 is always used for a control-channel and cannot be used for
splitinformation. The only function implemented is changing of the tone-
controller circuit in STe/TT. Following MIDI-tones control this:

MIDI-Note               Function
--------------------------------------
49          C#3         Bass     Range: 0: -12 dB, 6: Flat, 12: +12 dB
51          D#3         Treble   -               "                 -
54          F#3         Left volume    Range: 0-20
56          G#3         Mastervolume      Range: 0-40
58          A#3         Right volume      Range: 0-20

This may disappear in future sounddrivers for EPSS...


Soundinformationblock
---------------------

One entry for each sound (both physical and virtual sounds). Lengt 16 bytes.
This is subject to change so always use the equate sample_info_len which is
defined in EPSS_EQU.S

Name         Offset Type
--------------------------------------------------------------------------
s_sampstart  $00    L   Samplestartoffset from start of patch
s_sampend    $04    L   Sampleendoffset from start of patch
s_loopstart  $08    L   Loopstartoffset from start of patch
s_loopmode   $0C    W   oooooooo vvvvvvll :

   oooooooo: Toneoffset
             The value is a signed byte value which is added to the pitch
             defined for this sound to make a global transpose of the sound.
             Values defined are -127 to +128.

   ll:       Loopmode
   00 - Reserverad
   01 - One Shot
   10 - Loop On
   11 - Reserved

   vvvvvv:   VVFE-control (Velocity Variant Filter Emulation)
             The value is a signed 6-bit multiplicator which is used together
             with normally the MIDI-velocity to calculate a startoffset for the
             sample in the sound. This could sometimes sound like a velocity
             variant filter, therefore its name. Following scale is currently
             used:

   Multiplicator:     1    2    4    8   16   32   64  128
   VVFE-controlval:  $3B  $3C  $3D  $3E  $3F  $00  $01 $02
   One Shot byte 2:  $ED  $F1  $F5  $F9  $FD  $01  $05 $09

   To maintain compability with older SPI-files, the 0 value is reserved for
   the multiplicator 32, which was a fixed value in older versions of EPSS.
   The value of the second byte of s_loopmode is therefore calculated by
   shifting the VVFE-controlval 2 bits left and OR:ing with loopmode.


s_gr_frek	 $0E  W   dvssxxxx maooppff :
                      x: Reserved bits. Should always be set to 0 to ensure
                         future compatibility.
                      d: Drum
                         0 - Normal sound.
                         1 - Drumsound: No frequency calculation is made for
                             the sound.
                      v: Velocity
                         0 - MIDI-Velocity = VVFE, MIDI-PolyPressure = Volym
                         1 - MIDI-Velocity = Volym, MIDI-PolyPressure = VVFE
                      ss: Soundtype
                         00 - Physical sound
                         01 - Virtual sound or Subtone. s_subtone is the number
                              of the sound which contains the base-sample for
                              this sound.
                         10 - Reserved
                         11 - Reserved
                      m: Mode
                         0 - Stereomode (Not used)
                         1 - Monomode
                      a: Aftertouch
                         0 - Off
                         1 - On

                      oo: Stereotype
                         00 - No effect
                         01 - Reserved
                         10 - Reserved
                         11 - Reserved
                      pp: Stereopan
                         00 - Default panning used
                         01 - Undefined
                         10 - Left
                         11 - Right
                         
                      ff: Original frequency of the sound (not used)
                         00 - 6250 Hz
                         01 - 12517 Hz
                         10 - 25033 Hz
                         11 - 50066 Hz


Extended Sample Informationblock
--------------------------------
More information for the sound. One entry for each sound in the patch.
Length 64 bytes. This is subject to change so always use the equate
_e_extlen which is defined in EPSS_EQU.S

Name        Offset Type
--------------------------------------------------------------------------
s_sampname  $00    ASCII   Filename for sample excluding extension. 8 bytes.
s_extname   $08    ASCII   Extended soundinformationstring. 16 bytes.
s_extvolume $18    W       Volume of the sample. Is always calculated when
                           a sample is loaded. 100 is the standardvalue
                           assigned in percent.
s_subtone   $1A    W       The soundnumer which contains the base-sample
                           for this virtual sound. Only defined when the
                           sound is a subtone.



Samplepitch and MIDI-note
-------------------------

The following scheme shows which pitch the MIDI-tone represents.
This is important to know if a new patch is to be made, which
makes use of the new octaves. Please use the tones in the middle,
not from the beginning, because these are only there to maintain
compability with old patches and songs. Use tone numbers $3C to
$6C (60 to 108) with the middle tone always on C6.
	
New frequency layout in EPSS v2.0 (910226):

Tone number		Routine name	Other
Hex	Decimal
-------------------------------------------------------------------
$00         0                F_A0             \  C-1
$01         1                F_AH0            |
$02         2                F_B0             |
 |          |                 |               |
 |          |                 |               |
$0A        10                F_G0             |        This is the original
$0B        11                F_GH0            |        patch layout of the
$0C        12                F_A1              >  C0   EPSS. This remains the
$0D        13                F_AH1            |        same to maintain compability
$0E        14                F_B1             |        with old patches and songs.
 |          |                 |               |
 |          |                 |               |
$16        22                F_G1             |
$17        23                F_GH1            |
$18        24                F_A2             |    C1
$19        25                F_AH0            |        It starts over again from A#0
$1A        26                F_B0             |
 |          |                 |               |
 |          |                 |               |
$22        34                F_G0             |        This is the original
$23        35                F_GH0            |        patch layout of the
$24        36                F_A1              >   C2   EPSS. This remains the
$25        37                F_AH1            |        same to maintain compability
$26        38                F_B1             |        with old patches and songs.
 |          |                |                |
 |          |                |                |
$2E        46                F_G1             |
$2F        47                F_GH1            /

$30        48                ---              \    C3
$31        49                ---              |        This area is not use for
 |          |                |                |        any tones. If a tone should
 |          |                |                 >        play with this frequency,
 |          |                |                |        it will sound in its original
$3A        58                ---              |        pitch.
$3B        59                ---              /

$3C        60                F_AM2            \    C4   Lowest note
$3D        61                F_AHM2           |
$3E        62                F_BM2            |
 |          |                |                 >        NEW: Octave -2
 |          |                |                |
$46        70                F_GM2            |
$47        71                F_GHM2           /

$48        72                F_AM1            \    C5
$49        73                F_AHM1           |
$4A        74                F_BM1            |
 |          |                |                 >        NEW: Octave -1
 |          |                |                |
$52        82                F_GM1            |
$53        83                F_GHM1           /

$54        84                F_A0             \    C6
$55        85                F_AH0            |
$56        86                F_B0             |
 |          |                |                 >        Octave 0
 |          |                |                |
$5E        94                F_G0             |
$5F        95                F_GH0            /

$60        96                F_A1             \    C7
$61        97                F_AH1            |
$62        98                F_B1             |
 |          |                |                 >        Octave 1
 |          |                |                |
$6A        106                F_G1            |
$6B        107                F_GH1           /
$6C        108                F_A2                 C8   Highest note

$6D        109                ---             \
$6E        110                ---             |        This area is not use for
 |          |                |                |        any tones. If a tone should
$78        120               |                 >   C9  play with this frequency,
 |          |                |                |        it will sound in its original
$7E        126                ---             |        pitch.
$7F        127                ---             /





EPSS Sounddriver
----------------
If you intend to use the sounddrivers in your own applications, you must
include the driver in your code at source level. Use the definitions below
to set up addressed for each routine.

_EPSS0	equ	epss+$1c	 Relocation
_EPSS1	equ	epss+$20	 Driverinitialization
_EPSS2	equ	epss+$24	 Bufferchange
_EPSS3	equ	epss+$28	 Replay
_EPSS4	equ	epss+$2c	 TimerB interrupt
_EPSS5	equ	epss+$30	 Set new Tempo
_EPSS6	equ	epss+$34	 Start new song
_EPSS7	equ	epss+$40	 Play MIDI-note

...where epss points to the address where the sounddriver are included in the
code.

The sounddrivers can also be loaded as binary files, or as executables without
starting it (Pexec mode 3). The routine _EPSS0 must _ALWAYS_ be called once to
relocate the code at its current position, if you don't use the Pexec method.

Following is a more accurate description of the Sounddriver:

Offset  Type Value
-------------------------------
$00     W    ph_branch ($601A)
$02     L    ph_tlen, lengt of TEXT-segment
$06     L    ph_dlen, length of DATA-segment
$0A     L    ph_blen, length of BSS-segment
$0E     L    ph_slen, length of symboltable (not used!)
$12     L    ph_res1, reserved 0
$16     L    ph_res2, reserved 0
$1A     W    ph_flag, programflags

$1C          _EPSS0   Relocation of code. Must only be called once.
$20	_EPSS1   Intialization of driver, patch and song
                      INPUT:  a0 pointer to start of patch
                              a1 pointer to start of MID-file
                              a2 pointer to your NOTE-ON-routine (see below)
                              d1 0: Autorepeat of song, $FF: No repeat
                       OUTPUT:a0 pointer to infoblock (see below)

$24          _EPSS2    Change buffer. To be called top of VBL or first
                       in Timer A-routine. Trashes a0 and d0.
$28          _EPSS3    Main replay routine. To be called in VBL or
                       in Timer A.  Trashes d0-d7, a0-a6
$2C          _EPSS4    Timer B-interrupt. Resets the PCM-chip when no sound
                       is playing to ensure that no bufferoverflow occur.
                       When using e_adjust-parameter this call can be omitted.
                       No registers trashed.
$30          _EPSS5    Set tempo.
                       INPUT:  d0 new tempo in BPM. No registers trashed.
$34          _EPSS6    Start new song.
                       INPUT: a0 pointer to new MID-file
                              d1 0: Autorepeat of song, $FF: No repeat
                       No registers trashed.
$38          _EPSS7    Play MIDI-tone.
                       INPUT: d0 MIDI-status (8n, 9n with n for MIDI-channel)
                              d1 MIDI-note (0-127)
                              d2 MIDI-velocity (0-127)
                        Trashes d0-d5, a0-a4

(There exists more _EPSS-calls, but these are subject to change and are therefore
undocumented.)


NOTE-ON-routine
---------------
This routine is called every time a sound is turned on or off. This can be
used for showing visually which sound that are playing. You pass the address
to your routine in register a2 when initializing the sounddriver by calling
_EPSS1. If you don't want to use this feature, let a2 point to a rts-
instruction.

Following registers are set when your routine is called:

d0.b        Physical soundnumber
d1.b        MIDI-note*2
d5.b        (MIDI-note AND $31)*2

You MUST ALWAYS save and restore all registers you are using in your own
routine.


EPSS Infoblock
--------------
When you call _EPSS1, make sure you store the address returned in a0. This
address contains a pointer to some of the driver's internal variables which
sometimes can be quite useful. Use the EPSS_EQU.S to include in you code
for defining the variables. Make sure to always use the correct EPSS_EQU for
the current version of Sounddriver.


Positive variables
------------------

Offset      Type        Usage
----------------------------------
$00         L           e_tick   Miditickcounter. Reflects the actual ticks
                                 the MID-fil has been played.
$04         W           e_bpm    Current BPM of the song.
$06         B           e_play   Playflag. 0: Song is playing, $FF: Song ended
$07         B           e_flush  Not used

$08         B x $10     e_act    Channel-active table. 0: Channel don't play,
                                 $FF: Channel is playing.
$18         B x $10     e_ptab   Timeorder table. FILO-buffer which reflects
                                 in which order the channel is played. First
                                 entry in table is last played channel.
                       
$28                     e_chtab  Channel-info table. Table with current sound-
                                 information for every physical sound playing.
                                 One entry for each physical channel in the
                                 Sounddriver. The channel is 32 bytes long:

   Variable        Offset  Type    Usage
   ----------------------------------------------------------------------
   sm_start        $00     L       Samplestart, absolute address
   sm_stopp        $04     L       Sampleend, absolute address
   sm_loop         $08     L       Loopstart, absolute address
   sm_mode         $0C     W       Loopmode.  See s_loopmode
   sm_kar          $0E     W       Soundflags. See s_gr_frek
   sm_akt_adr      $10     L       Current sampleaddress, absolute
   sm_frekrut      $14     L       Pitchroutine, absolute address
   sm_midi         $18     W       MIDI-channel
   sm_ton          $1A     W       MIDI-note
   sm_velocity     $1C     B       Velocityvalue
   sm_soundno      $1D     B       Soundnumber of sound playing
   sm_atoffset     $1E     W       Offset to aftertouchvalue in
                                   the aftertouchtable.

Negative variables
------------------

Offset      Type        Usage
----------------------------------
-$02        W           e_div    Division of a quarter note in delta time
-$04        W           e_form   Format of MID-file
-$06        W           e_noftr  No of tracks in mid-file
-$07        B           e_no32   Number of 32nds
-$08        B           e_clk    Clocks
-$09        B           e_den    Denominator
-$0A        B           e_num    Numerator

-$0B        B           e_phys   Number of physical channels. Valid: 4, 6, 8, 12 or 16
-$0C        B           e_freq   Replay-frequency. Bit 0+1: 00: 6 kHz, 01: 12 kHz,
                                                            02: 25 kHz, 03: 50 kHz
                                                   Bit 7  :  0: Stereo  1: Mono
-$0D        B           e_ch1    EPSS-characteristics I:
                        Bit: 76    54   32   10
                             VVFE  MIX  VOL  PITCH

                        VVFE         MIX           VOL         PITCH
                        00: OFF      00: OFF       00: OFF     00: BYTE
                        01: TYPE I   01: ADD       01: 64s     01: WORD
                        10: ---      10: MUX       10: ---     10: CONT
                        11: ---      11: MUX+ADD   11: DSP     11: DSP

-$0E        B           e_ch2    EPSS-characteristics II:
                        Bit:  76  54       3   210
                              XX  I-Cache  Hz  CPU

                        I-Cache      CPU          Hz
                        00: OFF      000: 68000   0: 50 Hz
                        01: 256      001: 68010   1: 60 Hz
                        10: 16k      010: 68020
                        11: 4k       011: 68030
                                     100: 68040
                                     101: 030+56k

-$0F        B            e_ch3    EPSS-characteristics III:
                         Bit:  76  54    3   210
                               XX  BITS  X   OUTPUT

                         BITS      OUTPUT
                         00: 8     000: STeDMA
                         01: 16    001: CoDec
                         10: ---   010: ST with "Petra"-emulation (ev implemented later)
                         11: ---

-$10        B            e_ch4     EPSS-characteristics IV:
                         Bit: 76543 210
                              XXXXX MCH
                         
                         MCH
                         000: ST
                         001: STe/MSTe
                         010: TT
                         011: F030

	            NOTE: Defaultvalue Ste. The hostprogram is responsible
	            for setting other values if the sounddriver is running
	            on a different system than STe/MSTe (e.g. TT or F030)

-$11        B            e_prediv  Predivision value (0=1, 1=2, 2=4, 3=8 etc)
-$12        B            e_version  Soundroutine version ($32 = 3.2 etc)
-$14        W            e_adjust   Adjustment for VBL-routines to extend the buffer by 2
-$18        L            e_cnotice  Pointer to copyright notice inside MID-file. 1st byte is length of string.


Last revision 3rd Feb 1993
***** END OF DOCUMENTATION *****
