PutDisk

A disk mastering system for the Amiga.

Putdisk (V2.50) is a disk mastering system for the Amiga home computer.

Thanks to Mick West (Neversoft) for the Huffman compression

It uses 'trackdisk.device' compatable format allowing total compatability between drives, and makes the format copiable on almost any bit-copier. A key disk or password system can be used for protection.

* Built-in trasnfer system for easy development.
* Will process files assembled with an Atari (-A option).
* Has built in intelligent ramdisk (it can disabled if needed).
* Transparent fast compress/decompress of files (disable with -Q).
* Has protection override for test purposes!!!
* Has rainbow mode for visible ramdisk and decompression!

Download the Amiga executable here.

Source code (use DEVPAC):
putdisk.s.
macros.s.
AmigaEqu.s.
AmigaPds.s.
Dos.s (use with homebrew parallel port cable).
dospds.s (use with pds dev kit).
UnPack.s.

Usage:

C:Putdisk [-H][-V][-I][-F][-C][-B][-A][-Q][-P][-R] <unit> [<filename>]

-H Help!
-V Version details
-I Info on disk
-F Fast format of disk
-C Calculate track checksums
-B Force boot track
-A Atari assembled Autorun.obj file
-Q Quick - no compression
-P Protection override
-R Rainbow mode

<unit> can be from 0 to 3.
<filename> holds a list of the files for the disk!
Disk needs to have been AmigaDos formatted.

Programmer Notes:

Putdisk will load a degas picture (either pi1, or pc1), called Autorun.pc1 (or .pi1) if it is on the disk.

Then, PutDisk will load the program Autorun.obj at address $1300, it skips the first long word, and runs at $1304.

The file must have a standard Amiga header (else use -A), as this will be stripped when the file is recognised!!!

Any one file on the disk MUST be less that 128k in size!!!

When the Autorun.obj is run, the machine is in supervisor mode, and all interrupts/dma/etc... have been shutdown!!!

The default track buffer is at $70000.

In your code you then use the 68000 Trap instructions to call PutDisk functions.

The following traps are available:

#0 Reinit Autorun.obj file. (no need to call!)
#1 Load file
==>a0.l Address of filename,0
==>a1.l Destination address
<==d0 Status (0=Okay)
#2 Set variables (used only if positive)
==>a0.l Track buffer address (16k)
==>d0 Seek track number
#3 Reset ramdisk. (no need to call)
#4 Parallel download to $1300, run at $1304
#5 Check Amiga Promat
<==d0 Status (0-Okay)
#6 Check Amiga Promat (return only of okay)
#7 Load 'n' run program (returns if error)
==>a0.l Address of filename,0
#8 Reserve expansion (kill ramdisk if selected)
==>d0 0 - All expansion packs
1 - $c00000 slow ram
2 - $200000 fast ram
3 - $80000 extended chip ram
<==d0.l Current address of ramdisk
#9 Load degas picture
==>a0.l Address of filename,0
==>a1.l Address of 32066 byte buffer
==>a2.l Destination
1 word header
16 word colour table (Amiga format)
4000 word plane 0
4000 word plane 1
4000 word plane 2
4000 word plane 3
#10 Fade palette
==>a0.l Address of wanted palette
==>a1.l Address of current palette
==>d0 Number of colours in palette
<==d0 Zero if finished


Putdisk II (v2.99+) is an evolution of putdisk.

If an autorun.pi1 file is on the disk, putdisk will ensure it's seen by waiting six seconds from bootup!

Special thanks to Ian Shaw (X Animo Designs) for spotting and fixing a couple of quite important 'lockup' bugs!!!

Download the Amiga executable here.

Source code (use DEVPAC):
PutdiskII.s.
Autorun.s.
dospds.s.

Object code:
dospds

Usage:

C:PutDiskII [-H][-V][-I][-F][-C][-B][-Q] <unit> [<filename>]

-H Help!
-V Version details
-I Info on disk
-F Fast format of disk
-C Calculate track checksums (must be used)
-B Force boot track
-Q Quick - no compression
-R Retrieve - all but auto files!!!
-T Tes - Used with retrieve!!!

<unit> can be from 0 to 3.
<filename> holds a list of the files for the disk!
Disk needs to have been AmigaDos formatted.

Programmer Notes:

If the machine found to be AGA then the screen AutoAGA.pi1 is attempted to be displayed, then Autorun.pi1 if its not found. This can be disabled with the right mouse button on booting.

Then, PutDisk will load the program Autorun.obj at address $1300, it skips the first long word, and runs at $1304.

The file must have a standard Amiga header, as this will be stripped when the file is recognised!!!

Any one file on the disk MUST be less that 128k in size!!!

When the Autorun.obj is run, the machine is in supervisor mode, and all interrupts/dma/etc... have been shutdown and cache mode on mc680x0 processors is turned off.

The download is PDS semi-compatable... All downloads go to the proper location, unless above $7ffff, in which case they go to the address &$7ffff!$80000 - i.e $200004 becomes $80004, and $c00004 becomes $80004. This enables youto write code for different memory maps and upload from one address! ($c00000 code is hard to do on a new machine!).

If 2 meg mem + Aga is present it IS enabled.

Retrieve option has been added to make hard drive versions of the program available - all the data will be retrieved, uncompressed, and then written to the current directory. The one exception will be ANY files beginning with the letters 'Auto', this is because the Autorun file for the hard drive must be written to HD requirements!

The TES option (-T) is used to make an uncompressed file containing all the disk data, with a seperate directory file... The files can be joined using multiple putdisk calls. eg.
PutDiskII -R-T 0 SuperHero (for disk 1)
followed by... PutDiskII -R-T 0 SuperHero (for disk 2)
This would create the files: SuperHero.Tes & SuperHero.Dir

The default track buffer is at $70000

In your code you then use the 68000 Trap instructions to call PutDisk functions.

The following traps are available:

#0 Reinit Autorun.obj file. (called on boot!!!)
<==d0 -1 if Aga chipset enabled.
#1 Load file
==>a0.l Address of filename,0
==>a1.l Destination address
<==d0 Status (0=Okay)
#2 Set variables (used only if positive)
==>a0.l Track buffer address (16k)
==>a1.l Disk change address
Address of code to execute if Trap #3 is used and no file found
(WARNING:Use 0 if not used!!!)
==>d0 Seek track number
#3 Load file with change disk
==>a0.l Address of filename,0
==>a1.l Destination address
<==d0 Zero - Only returns when found!
#4 Parallel PDS download to $1300, run at $1304
<==d0 -1 if Aga chipset enabled.
#8 Find expansion
<==d0.l Current address of spare ram
#9 Load degas picture
==>a0.l Address of filename,0
==>a1.l Address of 32066 byte buffer
==>a2.l Destination
1 word header
16 word colour table (Amiga format)
4000 word plane 0
4000 word plane 1
4000 word plane 2
4000 word plane 3
#10 Fade palette
==>a0.l Address of wanted palette
==>a1.l Address of current palette
==>d0 Number of colours in palette
<==d0 Zero if finished