Html Conversion by Vezz

CHAPTER 1: Introduction

CHAPTER 2: Memory

CHAPTER 3: Image Ripper

CHAPTER 4: The Memory Ripper

CHAPTER 5: Disk Utility

CHAPTER 6: External Call

CHAPTER 7: External Loader

CHAPTER 8: The Music Rippers

CHAPTER 9: The Disk Ripper

CHAPTER 10: Ring Interruption

CHAPTER 11: Directions for Use

CHAPTER 12: Conclusions and Add-ons




The ULTIMATE RIPPER has taken more than eight months of research 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.


This cartridge works on all types of ATARI ST with TOS in ROM (STF, STE and 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 colour palette in all three resolutions, with four logical planes. The capture is very precise (screen scrolling line by line). Saying is done in PI 1, P12 and P13 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.

After having isolated them, and found their exact frequency. With the memory editor, you can visualise all your computer's memory, searching bytes, words, long words 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 (usable 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 informations 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 to 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.


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

1) Push the F1 or F2. The software of the cartridge occupies a certain amount of memory, and so will overwrite a part of it. To retreive the overwritten part and move in 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 a normal use of your ATARI, you are advised to switch the cartridge OFF.




The heart of your ATARI is the 16-32 MOTOROLA 68000 chip. It has a 32 bits internal structure and an external communication bus of 16 bits. The address bus is 24 bits wide which enables the addressing of 16 Mb (for the 68000 but not for your 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 long word contains four bytes). The 68000 is in contact with its memory throughout is 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 address2 and so on

There are several numerical standard bases to calculate these addresses:

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

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

XIX2X3(base a)= (X3*aO)+(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 1 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.


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:


4 logical planes

320 by 200 pixels in 16 colours


2 logical planes

640 by 200 pixels in 2 colours


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 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


colour 0


colour 1


colour 2

%11(bitb=1,bita= 1)

colour 3

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 made 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:



group a

group b

For low resolution it 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


colour 0


colour 1


colour 2


colour 3


colour 4


colour 5


colour 6


colour 7


colour 8


colour 9


colour 10


colour 11


colour 12


colour 13


colour 14


colour 15

For example:

we wish to code the first pixel on colour 10

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









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


colour 0


colour 1


colour 2


colour 3


colour 4


colour 5


colour 6


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, groupan, groupbn, groupcn.

 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 the sprite currently used by programmers which consists in grouping all the groups of the same type;


groupa1, groupa2 groupan, groupb1, groupb2 groupbn,
groupc1, groupc2 groupcn, groupd1, groupd2 groupdn

this storage method is used because is 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:

Colours palette

Corresponding Colours


colour 0


colour 1


colour 2


colour 3


colour 4


colour 5


colour 6


colour 7


colour 8


colour 9


colour 10


colour 11


colour 12


colour 13


colour 14


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 contains the synchronisation mode of the screen, in Europe we are synchronised on 50Hz and in the U.s on 60 Hz 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).



high part of video memory


medium part if video memory

Video Pointer Address:

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



high part of the video pointer


medium part of the video pointer


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 explainations 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 fun.


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


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 a 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 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.


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 l/ 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 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 Mega bytes 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 it. And here comes a programming method enabling to replay digitalisation with the minimum of memory consumption, they are the sound-trackers. The priciple 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 infinite 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.


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 prepare it so that it is capable of receiving 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 does it exactly do? A diskette is divided into circular rings named tracks, and it is on these tracks that you store informations, 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.


-gap 1

-gap 2


-ID-AM (index address mark)

-track number

-side number

-sector number

-sector length

-gap 3


-DAM (data mark)

-sector datas

-DATA CRC (checksum of datas field)

-gap 4

-gap 2



-etc ... as many times as there are sectors

-gap 5

A gap is a field separating the different informations of a track; it contains no useful datas, but give the disk drive 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 sector is coded on one byte; it can take 4 different values:

0 -> 128 bytes long

1 -> 256 bytes long

1 -> 512 bytes long

1 -> 1024 bytes long

TheID-CRC is two bytes long and enables the contoller to check that the index field informations 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 a 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:


-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 values as the control bytes.

Here is the list of the control bytes:

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

$F6 synchronisation byte, translated $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 by their respective values.

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

$FE indicates an index 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 $AI 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.


To store files on diskettes 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 your 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 sum off all the words in the sector which must be equal to $1234, in that case the program contained in the boot will be executed; the other parameters indicate to the system the structure of your diskette. Here is the 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 the number of fats

-2 bytes for the number of files by directory

-2 bytes for the 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 informations for the files, for each stored file, the corresponding field in the directory is 32 bytes long:

-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 for all 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.




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.


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).

-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 scenery is larger in memory than it is on the screen. Alternately, for the 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 activates 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 superposition (1 to 4 planes) multiplied by the width of superpos

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 that you want to superpose.

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


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.


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 screen size being defined in the shown parameters).

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


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


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


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.


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




A memory editor enables you to work directly on the memory. You can cheek 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.


The editor has a main box showing the content 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


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.


You have 10 different memories for positionning; 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.


To make a research in memory: push the F4 key then the key corresponding to the kind of research you want to do (b for byte, w for word, I 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 address 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.


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


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.


To edit in 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.


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


To save a memory area, push the F9 key then indicate the type of saving by hitting B for a hexadecimal storage, or S for a source storage. For the saving in hexadecimal, you must then enter the start and the end address of the zone and the file name. For a 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.


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 printing will be done in the mode you're in (hexadecimal or symbolics).




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 cheek 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 on, you can use the different partitions of your disk.


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).


To obtain the file list of the current directory, push the F1 key; the complete list will appear with, for each name 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

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.


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.


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


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


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


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


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



This option enables you to execute any program that have no gem calls (pull down 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 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.



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 indicated by you.




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


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).


In this 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 (frequency) is authorised, and extracting the part you wish also, so saving only a small part of a digitised session is possible


The usable function keys are the following:

F1: Enables to to search between two defined memory address.

F2: Enables you to save the music. The two addresses, the start and end ones are indicated on the screen when the cartridge has 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 th e 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.


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 played is shown on the lowest part of the screen (except for 25 Khz) 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-REPLY 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 (Jdisint function) in assembler:

MOVE.W #13,-(A7) timer A
MOVE.W #$1A,-(A7) Jdisint function
TRAP #14 Xbios call
ADDQ.L #4,A7 Stack restoration




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.


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 retreive the diskette informations (boot sector), push the F I key, or you can, with the cursor keys, move from one information to another and modify it. If you hit a key, you valid the displayed informations. The current informations are those displayed under the selection menu; they define the current drive, track, sector and side.


To read the current sector, hit the F1 key., the sector will then be read and its content will be displayed in the viewing box. The length read will be displayed as well as, 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


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.


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.


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 numbers of sectors and track

-the sectors sizes in bytes

-the ID field checksum

-the ID field checksum test

-the ID field encounter test

-the sector reading test


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


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


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


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


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 a reading, this error may happen if the seetoes 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

-PROTECTED DISK: if you try writing on a protected diskette

-DISK ERROR: if any error happens while reading or writing



The other 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 desired moment). At that time the current program is stopped and you have a menu bar appearing at the top of your screen. You can choose between the 'SEARCH AND REPLACE' (F1 key) option or the F10 option which enables the restart the stopped program.


-You must enter the desired 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; when pushing this button, you create the interruption 6 of the MFP





 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 normally (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 rum 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 different functions will now be explained in the following chapter.

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


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 erased by the reset and by the toolbox program; the RAM is always erased from address 54 to address $17D00 so if you have a 520ST, this RAM will be moved before being erased at address $60000, on the contrary, if you have an ATARI with more than 5 12 kilobytes, this RAM will be moved at address $80000.

-F2: this option gives you 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 RS232 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.


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 STs with more than 512 Kb) is in fact the content of RAM starting at address $o at the time of RESET. The screen address of the ULTIMATE RIPPER is from address $10000 to $17D00 and its BSS section is under the screen; if you modify RAM at addresses below $ 10000 you have great risks 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:






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


*The F3 function key (saying ) 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 (28X8+6=230).

*You can superpose 2 plans coded images.


In this version of Ultimate Ripper, a calculator had been included. It can make the elementary operations with two argument, under any menu, by pressing CNTRL4C. This means you can make operations like:

argument operation argument] with the +, -, /, X operations.

argument can be write 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 write in the base you have specified or in hexadecimal base. Without this specification, the result will be given in hexadecimal and in decimal.


The copy function lets you copy from the disk buffer to the memory or inverse. You must enter each time the source address 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.


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 disks utility

SHIFT+F4 for the external call

SHIFT+F5 for the external loader

SHIFT+F6 for the music ripper

SHIFT+F7 for the disk ripper

SHIFT+F8 for the informations.