82050 packages online


No screenshot available
Short:Mediator driver Sonnet 7200 G3/G4 card
Author:dennisvdboon -> gmail (Dennis Boon)
Uploader:dennisvdboon gmail com (Dennis Boon)
Architecture:m68k-amigaos = 3.9
Download: - View contents
Slightly less short:

The sonnet.library is a driver for the Sonnet 7200 G3/G4 PCI card.
What is needed:
- Amiga with Zorro III/PCI slots compatible with a Mediator.
- Elbox Mediator 3000Di/4000Di with 3.3V rail.
- 68040 or better.
- A Radeon 92xx or 3DFX Voodoo3/4/5 card.
- Mediator Warp3D 4.2 for 3D graphics in combination with a 3DFX Voodoo card.
- Sonnet 7200 PCI Card. Supported are MG3-400-512K; MG3-400-1M; MG3-500-1M; 
- 5V 168 pins FPM DIMMs 2K Refresh (up to 256 MB in combination with the
  Voodoo3; 128MB with other supported video cards).
- pci.library version 11.0 or higher.
- AHI for sound. AHI 4.18 recommended.
What does it do:
The library interfaces between the CPU and the memory on a Sonnet 7200 G3/G4
PCI card and the Amiga CPU and memory using the MPC107 chipset on the Sonnet
card. It also offers WarpOS/powerpc.library compatible functions.
What does this mean:
It essentially adds a second CPU to your Amiga through the PCI slot. 
This being either a 400 or 500 MHz G3 (MPC750) or 400 MHz G4 (MPC7400).
This CPU can be used to run (certain) WarpOS software.

The PPC CPU on the Sonnet card cannot DMA to Amiga memory. Any access to
non-Sonnet/PCI memory by the PPC is very slow. The library is trying to avoid
this by means of patching the AllocMem() and the LoadSeg() functions. This
way, PPC data and code is pushed to the memory residing on the sonnet card
itself. This is not 100% watertight and failure of these patches can lead to
a DSI/ISI exception or very slow execution of the PPC program.

Not all functions of the powerpc.library are yet implemented or will be
implemented (for example memory protection). 100% compatibility will probbly be
never achieved, mostly due to hardware banging of certain WarpOS software.

Sound is restricted to AHI. Paula 8 bit DMA is the recommended setting. At this
moment, the SB128 and FM801 drivers produce a distortion in the sound output.
Paula 8 bit Fast modes have seen some success too.

Albeit that a the library supports AltiVec code, this has not been fully tested
as there exist to this moment no WarpOS programs with AltiVec code.


The library supports options through ENVARC:sonnet. Currently supported are:

- EnEDOMem (0 or 1): Enable if you have EDO RAM installed. Default = 0.
- Debug (0-3): set the level of debug messages. 0 = no messages (default).
- EnAlignExc (0 or 1): Enable the installation of a user handler for the
  Align Exception. Default = 0.
- DisL2Cache (0 or 1): Disable the L2 cache. Default = 0.
- DisL2Flush (0 or 1): Disables the full flush of the L2 cache. 
  Can speed up things if it doesn't crash. Default = 0.
- EnDAccessExc: See EnAlignExc, but now for the Data Access Exception (DSI).
- DisHunkPatch (0 or 1): Disable automatic pushing first code hunk to FAST RAM.
  Default = 0.
The sonnet.library present in the previous archives is no longer supported
The included powerpc.library is for the sonnet only and not compatible with
other PPC solutions (BPPC, CSPPC etc.).
The driver/library is still being actively developed and is in a beta stage.
Refer to for the latest build and the
latest documentation regarding compatibility, FAQs and issues.

See for some demonstrations of
the Sonnet card in action.

In the archive:

powerpc.library:	Library that initializes the PPC and handles the
			communication between the system and the Sonnet card.
InitPPC:		Initializes the Sonnet card using the powerpc.library
GetInfo:		Simple program to show the state of the PPC CPU on the
			Sonnet card after initialization.

The Sonnet card can only be initialized after the graphics card has been
initialized. This means after C:LoadMonDrvs in the Startup-Sequemce. To use it
with WarpDT, it needs to be initialized before AddDataTypes in the Startup-
Sequence. It is however recommended to start the driver from the workbench
using the provided icon.

What has changed since 17.6:

- CauseInterrupt() and CausePPCInterrupt() now work as intended.
- The option to enable a DSI exception handler now works as intended.
- Removed a lot of special purpose register (SPRGx) usage.
- Made several fixes to the init code when a Radeon is present.
- Loading DefIcons no longers goes into a infinite loop due to LoadSeg() patch.
- Added the ENV variable SetCMemDiv. Now you can set the speed of the L2 cache.
- First hunk of WarpOS programs should now correctly be loaded to FAST RAM.
- Made some tweaks to the AllocMem() patch.
- Cybermand and Cyberpi now work correctly with hunk patch.
- Fixed a memory leak. Stack of deleted PPC tasks was not freed.
- LoadSeg() patch crashed on overlaid files. These are now ignored.

What has changed since 17.5:

- Fully working PP_STACKPTR and PP_STACKSIZE for Run68K().
- Fixed typo in GetPPCState().
- Added more error messages.
- Fixed a bug in the scheduler. Removed tasks were not handled properly.
- Added a memory clean-up task. Memory of removed tasks is now freed properly.
- Added options through ENVARC:sonnet
- Kernel now removes crashed tasks and continues instead of halting.
- Length of context-switch structure was incorrect.
- Completely rewrote all the exception handlers.
- Added DSI, Decrementer and External Interrupt exception hooks.
- Fixed an error in the custom handler code in case of small context used.
- Register r3 was trashed when more than 1 custom handler present. Fixed.
- Added option to force first hunk of WarpOS program to FAST memory by default.
- LoadSeg patch now correctly handles bit 30 of HUNK_SIZE (move to CHIP).
- Sometimes PPC code was loaded into FAST RAM through the LoadSeg patch. Fixed.
- Mediator config jumper can now be in ANY position for the sonnet to work.
- AllocMem() patch now correctly handles CLI names.
- FreeSpace movies now play at full speed.

What has changed since 17.4:

- Fixed a bug in the FPU opcode detection in the Alignment handler.
- Fixed various Enforcer hits on the 68K side.
- Stack transfer limit 68K->PPC of 164 bytes removed (RunPPC).
- Basic stack transfer support added to Run68K().
- Added support for Radeon with VendorID $5964.
- Added a PPC memory test. This is run during memory initialization.
- Added a timeout for the PPC to report back during initialization.
- Added checks on the SwapConfig and WindowSize jumpers of the mediator.
- Added experimental AltiVec support.
- Added powerpc.library to distribution. See notes above.

What has changed since 17.3:

- Fixed a few more potential hangs with well placed syncs.
- GetInfo() now recognizes modded 433/466/533 MHz Cards.
- Z flag of 68K interrupt now handled correctly upon exit interrupt.
- User code no longer addresses the zero page. That is now Supervisor only.
- Kernel and graphics memory are now handled by BATs by default.
- L2 cache can now cache instructions, not only data.
- L2 cache now set to 200MHz for 400/1MB version instead of 133MHz.
- Fixed a bug in GetHALInfo().
- Fixed a bug where inter-CPU messages were duplicated.
- Inter-CPU messages can now be up to ~64K in size instead of 150 bytes.
- Other miscelaneous fixes to increase stabilty and speed.

What has changed since 17.0:

- Moved all patches inside the library, no more different start-up programs.
- Fixed a bug in CreatePPCTask(). Now APDF works.
- Added better error handling through pop-up windows/requesters.
- Added a ramlib patch to increase stack when needed.
- Fixed the TagItem functions. Now more demos from Mad Wizards started working.
- Fixed a bug in GetInfo that was masked by the bug in the TagItem functions.
- Added shared signal system. Now the signals are shared by the 2 processors.
- Fixed LockTaskList function. Wrong result was returned.
- Added CPUUSage, Busy, Activity, CPU Load and System load code (for WarpStat).
- Fixed a bug in DeleteTaskPPC() as the Snoop list was not correctly freed.
- Fixed a bug in PutXMsg(). WES should work now (albeit slow).
- Added alignment support to AllocVecPPC(); For iFusion..No that does not work.
- Fixed a missing opcode in the FPU alignment emulation code. Now Q1A works.
- Other miscelaneous fixes and optimizations.

The future:

Improving the compatibility with WarpOS regarding the PPCMMU.
Maybe a version for a towerized A1200. Albeit that several attempts have
utterly failed.

Contents of driver/other/SonnetLibrary.lha
---------- ----------- ------- ------- ------ ---------- ------------ ----------
[unknown]                  796    1696  46.9% -lh5- f134 Mar 22  2017 SonnetLibrary/c/GetInfo
[unknown]                   76      76 100.0% -lh0- b3ba Mar 11  2017 SonnetLibrary/InitPPC
[unknown]                 6333    7151  88.6% -lh5- 8a6e Nov  6  2016 SonnetLibrary/
[unknown]                29835   61128  48.8% -lh5- d730 Oct 13 09:27 SonnetLibrary/libs/powerpc.library
[unknown]                 3851    8717  44.2% -lh5- 96cc Oct 13 16:23 SonnetLibrary/SonnetLibrary.readme
---------- ----------- ------- ------- ------ ---------- ------------ ----------
 Total         5 files   40891   78768  51.9%            Oct 14 21:27

Aminet © 1992-2017 Urban Müller and the Aminet team. Aminet contact address: <aminetaminet net>