Hiya dudez...... This is Zaphod Beeblebrox on the keyboard!!!!! This
Ultimate Ripper eprom file was brought to you by The Light Team (TLT).
Some useful information: When you are going to use this file, burn it
into 2 ordinary 27256 32 Kbyte eproms and put them on a catridge board.
When you want to use The Ultimate Ripper, load the program you want to rip
from, and hold the reset button whilst inserting the cartridge into the
ST's cartridge port. (Ya can mount a switch on the +5V supply line to the
eproms and toggle that on/off instead if you're a bit more technically
minded!!!! Then when you have done that, release the reset button and
press F1 (Search for free RAM and enter Ultimate Ripper), or F2 (You
choose RAM to be sacrificed), or F7 (The ST will reboot, and if you
connect a switch between PIN 20 and 22 in the RS232 port ya can freeze
some games/programs and enter the Ultimate Ripper and restart them!!).
There might be more F key combinations that I don't know about yet, but
all you have to do is to experimint around!!! If ya don't have an eprom
burner, I can burn the eprom chips for a small fee..... Contact me or
someone else in The Light Team at Frontier BBS in Uppsala, Sweden.
Phone number: +46 18 241690..... 300/1200/2400 Baud, 8N1......

Greetz, Zaphod Beeblebrox "Beeblebrox Industries Unlimited"/TLT.

P.S
If ya want any other exotic hardware like trackdisplays and such stuff
 - contact me, I can build most kinda stuff.... And be sure to look out
for more TLT products - perfection is the only acceptable standard!!
D.S


                ******************************************
                *                                        *
                *         Ultimate Ripper Manual         *
                *    (P)1991 Beeblebrox Industries/TLT   *
                *                                        *
                ******************************************





                   ULTIMATE RIPPER - TABLE OF CONTENTS:

                    INTRODUCTION                  P1

                    BASIC NOTIONS                 P4
                       MEMORY                     P4
                       VIDEO MEMORY               P6
                       SOUND                      P12
                       DISKETTE                   P14

                    THE IMAGE RIPPER              P20
                       PRESENTATION               P20
                       PARAMETER DEFINITIONS      P20

                    THE MEMORY RIPPER             P24
                       PRESENTATION               P24
                       KEYS DEFINITIONS           P24

                    THE DISK UTILITY              P27
                       PRESENTATION               P27
                       FUNCTIONS DEFINITIONS      P27

                    THE EXTERNAL CALL             P29

                    THE EXTERNAL LOADER           P29

                    THE MUSIC RIPPERS             P30
                       PRESENTATION               P30
                       FUNCTIONS DEFINITIONS      P30
                       THE DIGIT RIPPER           P31

                    THE DISK RIPPER               P33
                       PRESENTATION               P33
                       FUNCTIONS DEFINITIONS      P33

                    THE RING INTERRUPT            P37

                    DIRECTIONS FOR USE            P38
                       HOW TO USE IT              P38
                       HOW IT WORKS               P38

                    CONCLUSION                    P40


Page 1

                    Chapter I

Introduction:
=============

The ULTIMATE RIPPER has taken more than eicht months of researc and
development. This product is a cartridge to insert (switch towards the
user) in the cartridge port of your ATARI powered off. The switch on the
cartridge enables its use. If it is OFF, the cartridge doesn't interfere
with your machine. You then can leave it inserted all the time.

NEVER EVER INSERT OR REMOVE YOUR CARTRIDGE WITH YOUR ST POWERED ON
(If you hold the reset button, it is possible to insert/remove it without
any major risk of damage, just make sure ya insert it with the chips
facing down!!! /Zaphod Beeblebrox/TLT).

This cartridge works on all types of ATARI ST with TOS in ROM (STF, STFM,
STE, MEGA ST....), whatever is your memory configuration.

It enables you to stop any program in execution and go into its integrated
software.

This software is capable of retrieving all the pictures, sprites, fonts
and any other drawings present in memory at the reset time thanks to the
Image Ripper functions, with the color palette in all three resolutions,
with four logical planes. The capture is very precise (screen scrolling
line by line). Saving is done in PI1, PI2 and PI3 formats. With the music
Ripper part, the software searches for music chips with listening made
possible, saving it in datas or in executable format (executable directly
from the desktop), it searches music in Soundtrack formats and save them
for later use (ex: instrumental partitions for QUARTET). It also looks for
digitalised music, saving them in datas or executable format.


Page 2

after having isolated them, and found their exact frequency. With the
memory editor, you can visualise all your computer's memory, searching
bytes, words, longwords or text, to edit, to copy a memory block, to fill
a block in hexadecimal or text, to switch between hexadecimal or symbolic
displaying, to save and print in datas or source (useable with an
assembler).

With its external call function, all the TOS programs will be executed
with the possibility to enter the loading address of this program,
permitting not to overwrite on important parts of memory. It is also
possible to load at the desired address any file or track(s). The Disk
Utility is capable of reading, modification, printing (in hexadecimal or
in symbolic) and writing on any track or sector (in any format). It does
researches in hexadecimal or text, a direct disassembling to the disk and
gives access to all information of a track, etc..... The file management
option is capable of formatting a diskette, renaming a file, creating a
directory, show a directory, modify the current directory, etc..... The
ULTIMATE RIPPER will enable you to find infinite lives in a game and
restart it afterwards. This product is 100% capable of interrupting any
program at the desired moment to better understand the way it works, and
so to learn the secrets of programming; also to help you make and debug
your own demos and programs.

THE ULTIMATE RIPPER: EASY INTERRUPTING - 100% EFFICIENT!!!!!!!!

Page 3

When you wish to interrupt your program, push the reset button, put the
switch in the on position and release the reset button. At that moment,
your ATARI is under control of the cartridge. Several possibilities are
the offered:

1) Push the F1 or F2 key. The software of the cartridge occupies a
certaing amount of memory, and so will overwrite part of it. To retrieve
the overwritten part and move it to another place in memory, push the F1
function key. If you don't want to move it, push the F2 key.

2) Push the F7 key, and once software is in the drive, you will be able to
enter infinite lives in the software.

3) Push the F9 key to make a jump at the address contained in the $30
vector (This function is only useful to programmers).

4) If your cartridge remained ON and you switched your ST on, a fix screen
appears. It is not necessary to switch it off. Pushing the F10 key does a
normal reset. This function key enables you to leave your cartridge always
ON. For normal use of your ATARI, you are advised to switch the cartridge
OFF.



Page 4

                    Chapter II

BASIC NOTIONS

I THE MEMORY

The heart of your ATARI is the 16-32 MOTOROLA 68000 chip. It has a 32 bits
internal structure and an external communications bus of 16 Mb (for the
68000 but not for the ST who is limited to 4 Mb). This microprocessor has
to have central memory to write into it (RAM: Random Access Memory). The
size of this memory is different following the type of ST you have: it
goes for 512 Kb to 4 Mb (for your information, 1 Kb is in fact 1024 bytes
long, not 1000, a byte is made up of eight bits and a bit is the basic
undividable unit for any computer; it can be 0 or 1, a word contains two
bytes and a longword contains four bytes). The 68000 is in contact with
its memory throughout its address bus; it can read or write. To do these
two basic operations, the 68000 must know the address to operate on. It
can address the memory byte to byte: the first byte having the address 0,
the second the address 1, the third the address 2, and so on.....

There are several numerical standard bases to calculate these addresses:

base 2 (binary), base 10 (decimal), base 16 (hexadecimal).



Page 5

Translating a number written in any numerical base in base 10, for
example: X1X2X3 being a number in base a, we want to calculate its value
in base 10:.

X1X2X3(base a)=(X3*a0)+(X2*a1)+(X3*a2) (base 10)

-Binary base: a number in base 2 can only take a value of 0 or 1

example: number 3 in base 10 writes in base 2 --> %11

3 (base 10)=11 (base 2)

(1*20)+(1*21)=(1+2)=3

-Decimal base is the usual base in which we operate.

-Base 16: a number in base 16 can take 16 different values:

0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F

With the following transcription in base 10:

0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15

so A=10, B=11, C=12, D=13, E=14, F=15

You have to know that a number written in hexadecimal is often started by
a $ sign and that a number written in binary is started by a % sign (which
we will use from then on).

The ATARI, along with its RAM has a ROM (Read Only Memory). The ATARI's
ROM contains the program necessary to start the machine, the Operating
System (TOS) and the graphics environment (GEM).

When you switch your machine on, TOS is going to run and then GEM; each of
these programs needs a minimum of RAM to run normally. They take it at the
beginning of the memory and it is for this reason that, in fact, you don't
have the whole memory of your ATARI and it will be wise of you not to
modify the contents of these addresses if you don't want to see pretty
bombs on your screen. This mandatory memory size is variable following the
different TOS versions.



Page 6

                    II THE VIDEO MEMORY

The ATARI like any other computer, has a video output; it will show on
your screen after being decoded, a part of the video memory which will be
called VIDEO RAM. On an ATARI ST, this Video Ram has a standard size of
32000 bytes (or $7d00 bytes). This Video Ram can be at any place in
memory, as long as it starts at a multiple address of 256 (this is no
longer true on the STE but we'll take the general case of the STF). It is
the Video Shifter who decodes the memory to send it to the screen; there
are 3 possibilities of decoding related to the resolution in which you are
working: low, medium or high resolution. The coding of pictures is then
different for each of these 3 resolutions, the difference being the number
of logical planes:

low       --> 4 logical planes 320 by 200 pixels in 16 colours

medium    --> 2 logical planes 640 by 200 pixels in 4 colours

high      --> 1 logical plane 640 by 400 pixels in 1 colour

The coding is in fact a colour coding; the Video Shifter must of course be
capable of transmitting the pixel's colour to your screen.

For high resolution, the problem is rapidly solved since a pixel can be
only one colour; a single bit is sufficient (one logical plane) to code
the state of a pixel: a 0 bit corresponds to to a switched off pixel and a
1 bit to a switched on pixel.

It gets more complicated when in medium resolution, a pixel can have four
different colours, so we can't code a pixel only on 1 bit but on 2 bits
(two logical planes) we'll call bita and bitb.

       value of the 2 bits         corresponding colour

       %00(bitb=0,bita=0)          colour 0

       %01(bitb=0,bita=1)          colour 1

       %10(bitb=1,bita=0)          colour 2

       %11(bitb=1,bita=1)          colour 3


Page 7

To make things more complicated, these two bits are not consecutive in
memory, the coding is done by groups of 16 pixels; this set is then made
of 32 bits (two words) which are divided into 2 sub-groups of 16 bits (1
word) that we'll call a and b. The sub-group a is amde off all the
corresponding bita bits and the sub-group b of all the corresponding bitb
of the 16 pixels. For example:

We wish to code the first pixel on the colour number two

bita=0 and bitb=1(X being any state of one bit)

here is the corresponding value of the 32 bits:

               %0xxxxxxxxxxxxxxx       1xxxxxxxxxxxxxxx
               group a                 group b

For low resolution is the same kind of coding on four logical planes.
since a pixel may have 16 possible colours, it must be coded on 4 bits
(bita, bitb, bitc and bitd).

               four bits value         corresponding colour
               %0000                   colour 0
               %0001                   colour 1
               %0010                   colour 2
               %0011                   colour 3
               %0100                   colour 4
               %0101                   colour 5
               %0110                   colour 6
               %0111                   colour 7
               %1000                   colour 8
               %1001                   colour 9
               %1010                   colour 10
               %1011                   colour 11
               %1100                   colour 12
               %1101                   colour 13
               %1110                   colour 14
               %1111                   colour 15


Page 8

For example

we wish to code the first pixel on colour 10

bitd=1, bitc=0, bitb=1, bita=0

%0xxxxxxxxxxxxxxx  %1xxxxxxxxxxxxxxx  %0xxxxxxxxxxxxxxx  %1xxxxxxxxxxxxxxx

      groupa             groupb             groupc            group d

We can see that a low resolution picture is always coded by groups of four
words corresponding to the bits grouping. This means that the picture has
the possibility to use the 16 colours from the palette. Even so, it could
be that a picture (or a sprite) doesn't use all the 16 colours it could
use; suppose that a sprite uses only 8 different colours which are the
first 8 colours of the palette. Only 3 bits are then necessary to code
each pixel of that sprite since the fourth bit will be automatically put
to 0.

               value of the 3 bits     corresponding colours
               %000x                   colour 0
               %001x                   colour 1
               %010x                   colour 2
               %011x                   colour 3
               %100x                   colour 4
               %101x                   colour 5
               %110x                   colour 6
               %111x                   colour 7

The fourth bit is not indicated since it always is at 0, which means that
the corresponding group (to the fourth bit) will always be 0. To show this
sprite on your screen, the Video Shifter decoding must use the four
logical planes as we have seen before, that is to say that the groupd will
be on 0; but it would be useless to store this groupd in memory since we
know its value is 0 (it simply will be at the transfer time that we'll
position this groupd to 0) so we store only the 3 groups which have a
specific value; we'll then have the following structure in memory:

groupa1, groupb1, groupc1, groupa2, groupb2, groupc2.....



Page 9

groupan, groupbn, groupbn.

We then see that we store n words (2n bytes) less than needed first, which
is not negligible for we can have a great deal of sprites for the same
program. So, for the Image Ripper, if you wish to retrieve sprites saved
such a way, you'll have to tell it they are coded on three logical planes
only. There exists another way to store sprites currently used by
programmers which consists in grouping all the groups of the same type;

example:

groupa1, groupa2,........, groupan, groupb1, groupb2,........, groupbn,
groupc1, groupc2,........, groupcn, groupc1, groupc2,........, groupdn.

this storage method is used because it enable a faster transfer rate of
the sprite to the screen. To be able to see this sprite on the screen, you
must act as if it was coded on one logical plane and then interleave the
different groups.

Here are also the addresses used by the Video Shifter:

         Colour palette             Corresponding Colours
         $FFFF8240                  colour 0
         $FFFF8242                  colour 1
         $FFFF8244                  colour 2
         $FFFF8246                  colour 3
         $FFFF8248                  colour 4
         $FFFF824A                  colour 5
         $FFFF824C                  colour 6
         $FFFF824E                  colour 7
         $FFFF8250                  colour 8
         $FFFF8252                  colour 9
         $FFFF8254                  colour 10
         $FFFF8256                  colour 11
         $FFFF8258                  colour 12
         $FFFF825A                  colour 13


Page 10

         $FFFF825C                  colour 14
         $FFFF825E                  colour 15

Resolution:

This address signals the resolution, hence the coding system into which
you want to show your Video Ram.

Address:

$FFFF8260

     contains  %xxxxxxxxxxxxxx00  low resolution
     contains  %xxxxxxxxxxxxxx01  medium resolution
     contains  %xxxxxxxxxxxxxx10  high resolution

The bits marked x can be either 1 or 0.

Synchronisation:

This address conatins the synchronisation mode of the screen, in Europe we
are synchronised on 50Hz and in the U.s on 60Hz for example.

Address:

$FFFF820A

     contains  %xxxxxx00          60 Hz
     contains  %xxxxxx10          50 Hz
     contains  %xxxxxxx1          external synchronisation

Video Ram Address:

This address is the starting address of your Video Ram, it is read by the
Shifter only once by screen frame. We see that the lower part is
truncated, which implies that this address always is a multiple of 256
(except for the STE).

Address:

    $FFFF8201                     high part of video memory
    $FFFF8203                     medium part of video memory


Page 11

Video Pointer Address:

This address contains the address of the pixel actually shown on the
screen.

Address:

         $FFFF8205                high part of the video pointer
         $FFFF8207                medium part of the video pointer
         $FFFF8209                low part of the video pointer

You can now see that by changing certain addresses we can obtain visual
effects on the screen, for example by modifying the address of the Video
Memory, we can obtain certain animations corresponding to the scrolling of
that video memory.

By modifying the resolution we can have half the screen in low and the
other in medium resolution (ex: neochrome) and also, by modifying the
three possible values we can obtain a full screen.

We hope that these few explanations about the Video Memory and its coding
system will enable you to understand better the graphic system of the
ATARI, and that's important to be able to use the Image Ripper to the
full.


Page 12

III SOUND

The sound on your ATARI can be obtained in two ways: either by programming
the sound chip or playing digitised sounds.

THE SOUND CHIP

The sound chip of your ATARI is a AY3-8910 from GENERAL INSTRUMENTS and
can produce quite a complex variety of sounds when correctly programmed.
This chip can produce three different sounds at the same time with its
three dedicated sound channels A, B and C. We will not enter a detailed
description of the different possibilities of this chip; just know that
the programming of this chip is quite complex and its possibilities are
now outdated. The interesting thing in using this type of music lies in
two major points: the room taken in memory by such music is very small
(between 3Kb and 15Kb maximum); the CPU time taken by the 68000 is very
small and enable you to do many other things on the side.

DIGITISED SOUND

Digitised sound is a sampling at a certain frequency (what???). With the
necessary hardware (ex:ST REPLAY from MICRODEAL) you can sample any sound
you like. The sampling works on the following principle: it takes at a
precise moment the sound's volume of the sample, for a certain lapse of
time at a given frequency.

Example:

You are sampling a 20 second sound at a frequency of 10 Khz=you sample for
20s the sound's volume 10000 times per second, you obtain 10000*20 datas.
It can be seen that the number of datas is very high (for our example we
obtain 200000 datas at a byte for each data, that makes us 200000 bytes).
To replay this sample (you do not have to use special hardware for this)
your ST needs only modifying its sound each 1/10000th of a second. To do
that a small program tells him to do that and as you can see, much CPU
time is used; if you wished to have laser disc


Page 13

quality you'd have to sample at 44 Khz on 16 bits which would mean 88
Kbytes per second!!! (a compact disc actually is about 500 Megabytes of
datas....). The interesting thing about digitalisation is that you can
reproduce real life sounds on your ST with the inconvenience of the memory
taken by it and the necessary important CPU time needed to replay
digitalisation with the minimum of memory consumption, they are the
sound-trackers. The principle is simple but efficient:

You sample only certain kinds of sounds (generally about 20) for a very
short time; then you replay these sounds with different frequencies, that
gives you a sound library bigger than the one you sampled; to make music
you only need to merge your different sounds one after another, that you
can even play simultaneously (3 or 4 voices) and with an almost infinate
playing time. It must be said that the program capable of doing that is
much more complicated than a simple sound reproduction program and will
take even more CPU time. So with the Digit Ripper, you either can find a
complete sample you'll hear from start to finish, or hear sounds without
any apparent melody that'll mean that you found the sound table of a
soundtracker.


Page 14

IV THE DISK DRIVE

The mass storage you probably use most of the time with your computer
probably is your disk drive; it is 3.5" inches for the standard disk drive
of your ST. To be able to use a diskette, it has to be formatted.
Formatting a diskette means that you pepare it so that it is capable of
recieving information. This preparation is different one computer from
another, for example the AMIGA format is different of the ST's and that's
the reason why you cannot read or write on a diskette coming from an
AMIGA; on the other side, the 720 Kb IBM format is compatible with the
ST's, so that you can read and write on a diskette formatted by a
compatible. So formatting prepares a diskette, but what exactly does it
do? A diskette is divided into circular rings named tracks, and it is on
these tracks that you store information, so formatting is the making of
these tracks so they are ready to register information; it divides your
tracks in 9, 10 or 11 parts with a particular structure. These parts are
called sectors and generally have a capacity of 512 bytes.

STRUCTURE OF A TRACK

         -gap 1
         -gap 2
         -synchronisation
         -ID-AM (index address mark)
         -track number
         -side number
         -sector number
         -sector length
         -gap 3
         -synchronisation
         -DAM (data mark)
         -sector datas
         -DATA CRC (checksum of datas field)
         -gap 4
         -gap 2
         -synchronisation
         -ID-AM


Page 15

         -etc...as many as there are sectors
         ...
         ...
         ...
         -gap 5

A gap is a field separating the different information of a track; it
contains no useful datas, but gives the diskdrive a certain time to
identify its position on the track.

Gap 1, also called pre-track gap, enables the drive to position its head
correctly on the beginning informations of the track. Its length, for a
standard format, is of about 60 bytes which all have a value of $4e.

Gap 2 enable the head to be positioned on the first informations of a
sector.

Its length is 12 bytes of value 0.

Synchronisation is a succession of 3 bytes of value $F5, enabling to
synchronise the head on the following byte.

The ID-AM is one byte long, and always has a value of $FE; it indicates
the beginning of an index field to the controller.

The track number indicates to the drive on which track is its head. This
is one byte long.

The side number indicates on which side the head works, it can be either 0
or 1. Its length is one byte.

The sector number indicates the sector following this index field; it is
one byte long, so the sectors can have numbers from 0 to 255 ($0 to $FF).

The size of the sectors is coded on one byte; it can take 4 different
values:

         -0-> 128 bytes long

Page 16

         -1-> 256 bytes long
         -2-> 512 bytes long
         -3-> 1024 bytes long

The ID-CRC is two bytes long and enables the controller to check that the
index field information is correct.

Gap 3 enables the separation of the index field and the data field.

It is divided in two parts:

         -22 bytes at $4E
         -12 bytes at $00

The DAM indicates the real beginning of the sector; its value is $FB
(standard) for a normal DAM or $F8 for an erased DAM. The sector's datas
have a variable length related to the size definition in the index field.

Gap 4 indicates the end of the sector; it generally has a length of 40
bytes of $4E.

Gap 5 indicates the end of the track; it has very variable size and can be
from 30 to 700 bytes relating to the size and number of sectors.

It is important to note that the information storage on a blank diskette
is done in two stages:

         -formatting
         -data storage

It is not possible to format and write data at the same time because when
formatting, the controller reads certain bytes as being control bytes, and
if you wished to store such a byte it would be decoded by the controller
and not automatically be written on the diskette. But once formatting is
done, you can write on sectors any data you like, even the bytes having
the same value as the control bytes.


Page 17

Here is the list of the control bytes:

         -$F5

synchronisation byte, translated $A1 on the disk; enables also zeroing of
CRC register.

         -$F6

synchronisation byte, translated to $C2 on the disk; without CRC erasing.

         -$F7

calculation byte of the CRC, translated on the disk by the 2 bytes
resulting from CRC calculation.

         -$F8

indicates the controller to write an erased data mark, translated on the
disk by $F8.

         -$F9, $F10, $FC, $FD, $FF

indicates a data mark (these 5 control bytes are not used on the ST); are
translated to their respective values.

         -$FB

Indicates a normal data mark, translated on the disk by $FB

         -$FE

indicates an indexed address data mark, translated by $FE.

When using the disk editor of the ULTIMATE RIPPER, you can easily check
and verify the working of a track; you can also see that for each reading
you may get different values for the gaps; this is because the head,
having not yet read the synchronisation bytes, isn't synchronised at the
beginning of a byte; but when you've read a byte of $A1 value (value
translated at the formatting time from the control byte $F5), the
following bytes always have the same values because the head has just been
synchronised by that byte.


Page 18

-FILE MANAGEMENT

To store files on diskette you have to know it has been formatted, then
your ATARI needs to know where to store these files and by which means.
For all these reasons, the system reserves some places on the diskette:

         -the boot sector
         -the directory
         -the file allocation table

The boot sector always is at the beginning of the diskette or hard drive,
track 0 side 0 sector 1 or 0 of the hard disk. The boot sector is used to
give the disk informations and may also contain a small starting program,
the computer is informed of that by a som off all the words in the sector
which must be equal to $1234, in the case the program contained in the
boot will be executed; the other parameters indicate to the system the
structure of your diskette. Here is a list of the main parameters starting
at the beginning of the sector:

         -2 bytes of branching in case it is an executable boot sector.
         -6 filler bytes
         -4 bytes for the serial number
         -2 inverted bytes for the number of sectors by cluster
         -2 inverted bytes for the number of reserved sectors
         -2 bytes for number of fats
         -2 bytes for number of files by directory
         -2 bytes for number of sectors by diskette
         -2 bytes for the medium description
         -2 bytes for the number of sectors by fat
         -2 bytes for the number of sectors by track
         -2 bytes for the number of sides of the diskettes

The directory is on track number one sector 3 for a single sided diskette,
it contains all the necessary information for the files, for each stored
file, the corresponding field in the directory is 32 bytes long:


Page 19

         -8 bytes for the file name
         -3 bytes for the file extension
         -1 byte for its attributes
         -10 reserved bytes
         -2 bytes for the last storage hour
         -2 bytes for the date
         -2 bytes for the first cluster of the file
         -4 bytes for the size of the file

We can see that the first byte of the file name contains certain informations:

         -if it is 0, that means that the field has never been used, it is
         free.

         -if it is $E5, that means that this file has been erased and
         that it is free to be used again.

The FAT (File Allocation Table) is made so the system can account forall the
clusters of a file (a cluster generally is made of two consecutive sectors).
Each data of this table is coded on 12 or 16 bits; if the cluster is 0: it is
free; if it is $FF7: it is corrupt, if it is $FFF: it is the last on the list
of the corresponding file, any other value indicates the following cluster for
the file.


Page 20

THE IMAGE RIPPER

I PRESENTATION

One of the most interesting things on the ATARI probably is graphics.
These graphics, you could only look at, you can now dissect. You can not
only examine the screen at the reset moment with its colour palette, but
also all the other graphics in memory: other screens, sprites, fonts and
so on... and so to better understand the animation method for sprites,
scrollings, etc... You can also see the splicing method for sprites and
screen which enable faster animation of these while keeping memory
consumption to the minimum. You can also check in your programs that your
graphics are spliced like what you intended first and in the places you
desired and so avoiding long hours of bug eradication.

II PARAMETER DEFINITIONS

In the Image Ripper menu, you have a box containing all the parameters
defining the picture you want to see. Here is the list of these different
parameters:

         -screen address: it is the address of the top left corner of the
         memory you want to visualise; this address is always even.
         
         -number of planes: this parameter corresponds to the picture
coding in memory (see basic notions) for low resolution, it can be from
1 to 4; for medium resolution it can be 1 or 2, for high resolution it
always is 1. It is often used for sprites research because these are often
coded only for necessary planes or logical plane by logical plane (see
basic notions).


Page 21

         -pixel width: this corresponds to the width in pixels of the
picture you want to see; it always is a multiple of 16 pixels. It is
interesting to note that you can exceed the screen width because it is
very much possible for instance, that a scenary is larger in memory than
it is on the screen. Alternately, for research of sprites, they generally
are far smaller than this size (from 16 to 48 pixels most of the time).

         -resolution: it tells you in which resolution you want your
picture. Please note that the modification of this parameter may lead to
changes in other parameters depending of this one; for example, if you
change from low to medium resolution the number of logical planes will
automatically be positioned to 2.

         -planes: there are four identical parameters; each one of them
corresponds to a specific plane. You can simply position on or off each
of the planes; it means that the planes will or won't be visible; you
must make a difference between the number of planes implying a certain
coding in memory while the planes only act upon the screen display. When
you position certain planes off, several small stars appear on the colour
palette meaning that the corresponding colours are no longer active.

         -superpo: this parameter actives or not the superposition of
planes. It can only be active under certain conditions.

         -the number of planes is 1
         -the resolution is low
         -the large pixel is greater or equal to the number of superposit-
ions (1 to 4 planes) multiplied by the width of superposition. If these
conditions are not respected, it will not go on.

         -number of superpo: it defines the width in pixels that you want
to superpose; it always is a multiple of 16 and you cannot go over 320.

         -number of planes: it defines the number of planes you want to
         superpose.


Page 22

         -the box on the right displays the colour palette (not in mono-
chrome) as well as the number and the corresponding content in hexadecimal.

         *SCREEN DISPLAY

When hitting on the F1 key, you can display the screen, in function of the
parameters you have set before. It is important to note that even while
displaying, all the keys remain active; you can then modify and see the
result directly on the screen.

         *SCREEN POSITIONING

You can position the screen with the F2 key; you can enter directly the
address on the keyboard in hexadecimal, or you can modify it by different
manners.

         -when positioning the cursor on the address and by modifying it,
with the right and left arrows, 2 bytes by 2 bytes (plane by plane).

         -when hitting at the same time the SHIFT LEFT ARROW or the SHIFT
RIGHT ARROW you move a complete screen (the size being defined in the shown
parameters).

         -when hitting simultaneously the SHIFT DOWN ARROW or the SHIFT UP
ARROW keys, you move the screen one line at a time always according to the
selected parameters.

         *SAVING

To save a picture in DEGAS format, hit the F3 key then enter the filename;
the extension .PI? is not mandatory. You can load this picture in any
program using this format.

*SCREEN DUMP

To make a screeen dump, you only have to hit SHIFT ALTERNATE HELP keys
simultaneously.


Page 23

         *PALETTE

To modify the palette, hit the F4 key and position the cursor on the
palette you want to modify. With the cursor keys, you can modify its colour
. To exit this function hit the F4 key once more.

         *MEMORY

To save the parameters, you have 10 memories by hitting simultaneously the
CONTROL and any of the numerical pad keys to save the parameters, or
directly hitting the numerical keypad to restore the parameters.


Page 24

                              CHAPTER IV

THE MEMORY RIPPER

I PRESENTATION

A memory editor enables you to work directly on the memory. You can check
the contents of your programming addresses, the state of your program and
the memory content in general. Most of the products show them to you in
hexadecimal or in ASCII, here you can also show it in symbolics.

II KEY DEFINITIONS

The editor has a main box showing the contents of memory at the desired
address and a secondary box showing the main keys. The main box is
divided in several parts:

         -the visualisation address
         -the content of the address in hexadecimal
         -the content of this address in ASCII or
         -the visualisation address
         -the content of this address in symbolics


         *GOING AROUND MEMORY

To move around this memory, you can move page by page pressing the F1
key, the space bar or SHIFT DOWN ARROW to go forward, and F2 or SHIFT
UP ARROW to go backward, or to move one line at a time with the UP or
DOWN cursor keys, or moving byte by byte with RIGHT or LEFT cursor keys.
You can go directly to a specified address by pressing the F3 key and
entering the address in hexadecimal.


Page 25

         *MEMORIES

You have 10 different memories for positioning; to save an address, push
simultaneously the CONTROL and a number from the numeric keypad; to
restore it simply press the wished number on the numeric keypad.

         *RESEARCH

To make a research in memory: push the F4 key then the key corresponding
to the kind of search you want to do (b for byte, w for word, l for a long
word, a for ASCII). Then enter either hexadecimal or characters, the
research will be done from the visualisation address until:

         -either it is positive, the screen will directly show the
         corresponding address.
         
         -or you pushed the ESC key and the screen will show the address
         at which you stopped.
         
         -or the research has gone over a permitted zone and the screen
will show the highest authorised address in memory. To begin another
research with the same parameters, just press the UNDO key; if no parameters
were entered, nothing will happen.

         *MEMORY FILLING

To fill a memory zone, push the F5 key, give the starting and ending address,
either in hexadecimal or in text, then hit ENTER.

         *MEMORY COPY

To copy a memory zone, push the F7 key, then enter the starting and ending
addresses of the source zone, and the beginning address of the destination
zone.

         *MEMORY EDITING


Page 26

To edit the visualisation box, push the F6 key (in hexadecimal mode); a
cursor appears in the box, you can move it around with the cursor arrows
and changing of zones is done with the TAB key. The modifications you enter
will be done where the cursor is.

         *SYMBOLICS

To visualise in symbolics push the F8 key and push the same key to return to
hexadecimal.

         *SAVING

To save a memory area, push the F9 key then indicate the type of saving by
hitting B for a hexadecimal storage, S for a source storage. For the saving
in hexadecimal, you must then enter the start and the end address of the zone
and then the filename. For source saving, you enter the start and the end
address of the text zone (zone containing the program) then the end zone of
the program's datas (the data zone is consecutive to the text one). If the
program has no data zone (very rare) you enter nothing. This zone will be
saved in an ASCII file that can be loaded in your assembler; notice that in
the program you save, if it calls an exterior address to the one you defined
, you may have an error when compiling.

         *PRINTING

To print a memory zone, you have to check that your printer is on line, then
press the P key, enter start and end addresses to print. Note that the print-
ing will be done in the mode you're in (hexadecimal or symbolics).


Page 27

                             CHAPTER V
DISK UTILITY

I PRESENTATION

This option  enables you to manipulate files. It may be that when working
you have to format a diskette or erase a file or also check the existence
of a file on the diskette, etc... it is important to notice that at
initialisation time, the hard disk is not recognised; with the help of the
external function call you can load and execute your hard disk driver (ex:
AHDI.PRG) and from now and on, you can use the different partitions of your
disk.

II FUNCTIONS DEFINITIONS

The screen is divided in two parts: the biggest one is reserved for the file
list and subdirectories and the smallest is to display the path and the 
different messages as well as the selection keys.

The directory or path in which you are now is indicated (ex: PATH A:\'.'
indicates that you are on drive A in the root directory).

         *DIRECTORY

To obtain the file list of the current directory, push the F1 key; the
complete list will appear with, for each name for the following indications:

         -Dir: current directory
         -Lab: this is the diskette lable name
         -Pro: this file is writing protected
         -Hid: this file is hidden, as such invisible by the desktop
         -Sys: this is a system file
         -__ __ __: this is a normal file


Page 28

If the list is too big to be completely displayed on the screen, either push
on ESC to stop displaying or SPACE to carry on displaying.

         *DIRECTORY CHANGE

To change of directory use the F2 key; you should then enter the new
directory name in which you want to work; if you want to change of drive,
enter the complete path name.

         *RENAMING A FILE

If you wish to rename a file, push the F3 key. You then enter the filename
and its new name, the renaming will then be done.

         *FORMATTING A DISKETTE

To format a diskette, insert the disk to format in DRIVE A, then push the
F4 key, indicate the number of sides and confirm the formatting. The format
is the same as with the desktop.

         *ERASING A FILE

To erase a file, use the F5 key, then give the filename of the file you want
to erase and confirm. Erasing is done the same way as the desktop.

         *CREATING A DIRECTORY

To create a directory, press the F6 key, then enter the new directory name;
it will be created in the current directory.

         *FREE SPACE

To know how much free space is on the current drive, use the F7 key; the
free space remaning is diplayed in kilobytes.


Page 29

                             CHAPTER VI

EXTERNAL CALL

This option enables you to execute any program that have no gem calls
(pulldown menus, alert boxes etc...). The parameter FREE RAM indicates the
remaining free memory, the parameter START OF FREE RAM gives you the start
address of this free ram and the parameter START OF LOAD RAM indicates the
starting address at which the program's basepage will be loaded (you can
alter this address using the F2 key).

If the program you use is correctly written, when ending you should be in
the same menu. Please note that if you give a high address to the parameter
START LOAD RAM, anything before it will not be altered,

                             CHAPTER VII

EXTERNAL LOADER

This option enables you to load a file or tracks at the desired address. By
pressing the F1 key, you can load any file at the address you like. When
pressing the F2 key, you can load several consecutive tracks of the same
side at the address indicates by you.


Page 30

                             CHAPTER VIII

THE MUSIC RIPPERS

I PRESENTATION

The Music Ripper is divided in two parts. The first one operates on music
chips (music using the sound processor of the ATARI), the second act on the
digitalised musics.

         *THE MUSIC CHIPS

This part is made to find with more or less precision the music chips.
When they are materialised, it is possible to save them. The musics that
are 100% sure to be found may be played directly. This function also
recognises several soundtrackers formats. Saving may be done in datas or
executable (only for music chips).

         *DIGITALISED MUSIC

In the menu of the Music Ripper, only digitalised sounds are treated. As a
matter of fact, by visualising your computer's RAM and by listening to it,
you can find ready to be played digitalisations. The speed change (freque-
ncy) is authorised, and extracting the part you wish also, so saving only a
small part of a digitised session is possible.

II FUNCTIONS DEFINITIONS

The useable function keys are the following:

         F1: Enables you to search between two defined memory addresses.

         F2: Enables you to save the music. The two addresses, the start
and end ones are indicated on the screen when the cartridge has


Page 31

found the music. For greater simplicity, it is not mandatory to enter all
the indicated numbers, you only have to start by the first non zero number.
It is much advised, if you've listened to the music before saving it, to do
a new search (because when searching, certain parameters are initialised).
Please note that if you found a music stored in the QUARTET format you must
save twice:

         -a first time with the start and end button addresses that are
given to you (VOICE SET) under the name xxxxxxxx.SET
         -a second time which only the start address is given to you, but
please know that this file cannot exceed 20 kilobytes (or $4E20) in size;
you only have to save it with the maximum length with the name
xxxxxxxx.4V.

The music search is very complex to manage, this is why you will only have
a 100% success in finding them if they are in a standard format (50% of
recent musics!!). It may also happen that (rarely) the program indicates
that he has found a music with a 100% success, and if you listen , you will
hear nothing; try a new search again with modification of the limit
addresses. To go to the sub-menu of the DIGIT RIPPER, press the F3 key.

III THE DIGIT RIPPER

It is made of two parts:

         -the greatest one shows you the memory you have defined.
         -the smallest to indicate the different menu parameters.

With the help of F1 and F2 keys, you can enter the start and end addresses
of visualisation; or you can also make finer searches by the use of the
cursor keys. The F3 key enables you to modify the listening frequency which
may vary from 2.5 to 25 Khz. The F4 key enables you to hear the music defined
between the two addresses given by you; you can stop listening by hitting
the ESC key (except for 25 Khz). The address being displayed is shown on the
lowest part of the screen (except for 25 Khz)


Page 32

enabling you to better localise the music. The F6 key enables you to specify
whether the music is signed or not; for example if the music you hear sounds
interfered, use this function. The F5 key is used to save a part of memory:

         -you can save it directly in datas, which you will be able to listen
  to later on (with ST-REPLAY for example).
         -or save in executable format; the program created will play the
music with the frequency and sign parameters displaying on the menu at
saving time.

When programming, to stop the music, you only have to stop the A timer,
using the #$1A XBIOS function (Jdsint function)

in assembler:

         MOVE.W #13,-(A7)
         MOVE.W #$1A,-(A7)
         TRAP #14
         ADDQ.L #4,A7


Page 33

                             CHAPTER IX

THE DISK RIPPER

I PRESENTATION

A disk editor is to the disk what a memory editor is to the memory; with it
, you can look at the contents of a diskette (in hexadecimal or in symbolics),
to check the state of sectors, to read track informations.

II FUNCTIONS DEFINITIONS

The viewing box is the same as the memory editor, with 2 more informations
on the last line: the length of the block it just read and the error code
after reading. As soon as you enter the disk editor, a small box appears,
giving you all the defaults for the diskette type (2 sides, 9 sectors, 80
tracks); if you want to retrieve the diskette informations (boot sector),
push the F1 key, or you can, with the cursor keys, move from one informations
to another and modify it. If you hit a key, you valid the displayed infor-
mations. The current informations are those displayed under the selection
menu; they define the current drive, track, sector and side.

         *SECTOR READING

To read the current sector, hit the F1 key; the sector will then be read and
its contents will be displayed in the viewing box. The length read will be
displayed as well, if everything went well 'SECTOR OK'. If you modify the
current informations, the corresponding sector will not automatically be
read; you'll have to hit the F1 key. To go from one sector to another you
may have to use the + and - key from the numeric keypad; the sectors are
then read sequentially using the diskette informations given at the
beginning. You may also move faster (track by track) when hitting
simultaneously CONTROL - or CONTROL +.


Page 34

         *SECTOR WRITING

To write a sector, use F2 key; a confirmation will be asked; if positive,
the sector will be written at the current position. You can for example copy
a sector by reading a sector, modifying the current position and then write
it back to the disk.

         *SEARCHING ON THE DISKETTE

Hit the F3 key, the search type will be asked for in hexa or text, then
you'll have to enter the chain to be looked after on the disk as well as the
replacement chain if necessary. The search is then began; it will be done
according to the diskette informations given at the beginning. If the chain
is found, a menu bar will appear and will give you the following
possibilities:

         -saving and replacing: only if you entered a replacement chain, a
confirmation will be asked.
         -the possibility to carry on searching.
         -the possibility to stop searching and go to the found chain.
         -the possibility to stop searching. You may during a search,
stop it any time by pushing the ESC key.

         *TRACK INFORMATIONS

Using the F4 key, you will obtain the current track informations, that is
to say:

         -the track found in the ID field
         -the side found in the ID field
         -the number of sectors and tracks
         -the sectors sizes in bytes
         -the ID field checksum
         -the ID field checksum test
         -the ID field encounter test
         -the sector reading test


Page 35

         *TRACK READING

The F5 key enables you to read the current track the same way as F1 reads
sectors.

         *DISKETTE INFORMATIONS

The F6 key gives you access to the information box of the diskette that you
had entering the disk editor.

         *EDITING

Editing, F7 key, works only in sector reading mode and is used the same way
as the editing of memory.

         *SYMBOLICS

The F8 key enables you to switch between hexadecimal and symbolics.

         *PRINTING

You can print the sector or track in the desired mode by pushing the P key
and by checking that your printer is ready.


You may obtain different error messages:

         -SECTOR NOT FOUND: you try to read a sector which doesn't exist.
Do a diskette informations on the track to see the sectors numbers.
         -BAD DAM: after reading, this error may happen if the sector's
data mark or the ID field of the sector has not been found.
         -BAD DAC: if the data field checksum is wrong
         -BAD IDC: if the ID field checksum is wrong
         -BAD DAR: if no reaction to a data request
         -DAM $F8: if the data mark is erased


Page 36

         -PROTECTED DISK: if you are trying to write on a protected disk.
         -DISK ERROR: if any error happens while reading or writing.


Page 37
                             CHAPTER X
                              
THE RING INTERRUPTION

The ring interruption method of the cartridge is used with the ring indicator;
once you've loaded this option with the F7 key at the start, you may stop a 
program by creating this interruption (push the switch at the disired moment).
At that time the current program is stopped and you hava a menu bar appering
at the top of your screen. You can choose between the 'SEARCH AND REPLACE'
(F1 Key) option of the F10 option which enables the restart the stopped
program.

The 'SEARCH AND REPLACE' option:

         -you must enter the desierd search chain: It must be hexadecimal.
         -You must enter the replacement chain
         -At the moment, the search begins
         -If the search succeeds:
                   -the address where the chain has been found is displayed
                   -the F1 key enables you to change this chain 
                   -the F2 key enables you to continue searching 
                   -the F10 key enables you to finish 
                   -otherwise the search ends by itself

This option may be used to put a trainer in a game without having to write it
on your original diskette.

To use this possibility you must connect pin 20 (Dtr to pin 22(ring indicator)
of your RS232 on a push button: Wen pushing this button. You create the
interruption 6 of the MFP.


Page 38

                             CHAPTER XI

DIRECTIONS FOR USE

YOU MUST ALWAYS INSERT OR REMOVE YOUR CARTRIDGE WITH THE COMPUTER TURNED OFF
OTHERWISE YOU MAY DAMAGE BOTH THE CARTRIDGE AND YOUR ATARI; WE WILL TAKE NO
RESPONSABILITY WHATSOEVER FOR THIS DAMAGE.

I HOW TO USE YOUR CARTRIDGE

Put your cartridge (computer turned OFF!!) in the cartridge port on the left
of your ATARI (the cartridge sticker must be on the upper side); If you have 
to force, it is because you do it incorrectly. Put the cartridge switch OFF.
Switch your computer on, it must run normaly (if it is not the case,retry to 
insert the cartridge again: the switch may not be off or the cartridge not well
inserted), run the program you want to look at: let it run until the desired 
moment; at that time, push the reset button, and still pushing the rest turn
the cartridge on: then release the reset button. The cartridge now controls
your ATARI, you must now push one of the F1, F2, F7, F9 or F10 keys.  These
diffrent functions will now be explained in the folowing chapter

Please note that you always have to have a diskette in drive A.

II HOW THE CARTRIDGE WORKS

To have access to the cartridge's toolbox you must either push the F1 or the F2
key just after resetting.
         -F1: This option enables you to save the RAM eresed by the 


Page 39

reset and by the toolbox program; the RAM is always eresedfrom address $4 to 
address $17D000; so if you have a 520 ST. This RAM will be moved before being 
erased at address $60000; on the contrary, if you have an ATARI with more than
512 kilobytes, this RAM will be moved at address $80000.

         -F2: this option gives ypu access to the general menu of the ULTIMATE
RIPPER without saving the overwritten RAM. So, you can examine the whole
memory's contents at reset time in two operations.

To go into trainer mode. use the F7 key. Using this option will make your ATARI
boot in a normal way after RESET but with the possibility, with the RS 232 plug
and the ring indicator, to stop a program in execution, to change one or more
character chains and to restart the program. Unfortunately, this option isn't a
100% efficient (unlike options F1 and F2).

For programmers, we have thought it useful to give the F9 function: this
option lets you read the content of address $30 at RESET time and to do a
jump to this content; this option can be very useful for program debugging.

The F10 function lets you boot normally with the cartridge ON.


Page 40

                             CONCLUSION

You must take notice that the RAM delimited by the addresses $4 and $17d00
will always be erased but that you can save its contents with the F1 key; so
if you use F1, the RAM's contents at the address $60000 or $80000 (for ST's
with more than 512 Kb) is in fact the content of RAM starting at address $0
at the time of RESET. The screen address of the ULTIMATE RIPPER is from
address $10000 to $17d00 and its BBS section is under the screen; if you
modify RAM at addresses below $10000 you have a great risk of crashing.
Please also note that you must not switch the cartridge OFF when in use or
you'll probably have a machine crash.

NOTE: The swedish keyboard has a bug when using the SHIFT plus cursor keys
, it returns the same scancode as the CURSOR key pressed (??). To get around
this problem, the keys are replaced as following:

         SHIFT + UP      --> HELP
         SHIFT + DOWN    --> UNDO
         SHIFT + LEFT    --> INSERT
         SHIFT + RIGHT   --> CLR/HOME


Page 41

SAMPLE RIPPER FOR STE

You can switch between STFm and STE in the sample Ripper with the F7 key
(if you have got a STE).

In STE mode there are four frequencies:

         -6.25 Khz
         -12.5 Khz
         -25   Khz
         -50   Khz

You can control your STE sound by pressing the F6 key:

         General volume [0-40]
         Right volume [0-20]
         Left volume [0-20]
         Treble [0-12]
         Bass [0-12]
         Stereo ON-OFF

Those parameters will be activated at the listening time

IMAGE RIPPER

*The F3 function key (saving) is locked during visualisation of the picture.

*The column parameter help you seeing the picture in columns.
Example: for saving a font in one save instead of 3 or 4 saves.

*The modulo parameter corresponding to the byte number you add at the end of
each line before starting a new line.
Example: to recuperate a full screen picture, you must put 448 in Pixel Width
with 6 in modulo. Because a full screen line is composed of 230 bytes. This
number is not a 8 multiple (28*8+6=230).

*you can superpose 2 plans coded images.


Page 42

CALCULATOR

In this version of Ultimate Ripper, a calculator has been included. It can
make the elementaries operations with two arguments, under any menu by
pressing CONTROL-C. This means you can make operations like:

         argument [operation argument]
         with the +, -, /, * operations.

         arguments can be written like:
         argument = [sign] [base] number
   
         -Sign can be + or -; + by default

         -base can be $ for the 16 base
         or # for the 10 base, $ by default.

-The numbers must be written in the base
you have specified or in hexadecimal base. Without this specification, the
result will be given in hexadecimal and in decimal.

DISK EDITOR

The copy function lets you copy from the disk buffer to the memory or
inverse. You must enter each time the source or the destination address in
memory. You must confirm the saving for an address < at $17d00 because under
this address, the memory is reserved for the system and the cartridge.

MORE FUNCTION KEYS

You can switch between the different menus by pressing:

         SHIFT+F1 for the picture ripper
         SHIFT+F2 for the memory ripper
         SHIFT+F3 for the disk utility
         SHIFT+F4 for the external call


Page 43

         SHIFT+F5 for the external loader
         SHIFT+F6 for the music ripper
         SHIFT+F7 for the disk ripper
         SHIFT+F8 for the informations
