83663 packages online


No screenshot available
Short:Driver for G3/G4 PCI cards
Author:dennisvdboon -> gmail (Dennis Boon)
Uploader:dennisvdboon gmail com (Dennis Boon)
Architecture:m68k-amigaos = 3.9
Download: - View contents

Slightly less short:

The included powerpc.library is a driver for the Sonnet 7200 G3/G4 PCI card,
the Force PowerPCM-250 G4 PMC card and the PrPMC8xx range of cards.
What is needed:
- Amiga with Zorro III/PCI slots.
- Elbox Mediator 3000Di/4000Di with 3.3V rail.
- Prometheus PCI Zorro III bridge with FireStorm upgrade (17.14).
- 68040 or better.
- A Radeon 92xx, 3DFX Voodoo3/4/5 or Permedia2 card (prometheus/17.14)
- 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) for the Sonnet.
- Force PowerPMC-250 Card boasting a 450MHz G4 CPU and on-board SDRAM. PMC
  carrier card required.
- Motorola PrPMC8xx cards with Harrier chipset with either G3 or G4 processor
  and 256MB of on-board SDRAM. PMC carrier card required.
- Bigfoot Killer NIC M1 PCI card with 400MHz MPC8343E and 64MB on-board RAM
- Bigfoot Killer NIC K1 PCI card with 333MHz MPC8343E and 64MB on-board RAM
- pci.library version 13.8 or higher from Elbox.
- prometheus.library version 4.0 or higher (17.14).
- AHI for sound. AHI 4.18 recommended.
What does it do:
The library interfaces between the CPU and the memory on certain PCI cards
which contain PPC CPUs (e.g Sonnet Crescendo 7200 etc.) and the Amiga CPU and
memory. It also offers WarpOS compatible functions.
What does this mean:
It essentially adds a second CPU to your Amiga through the PCI slot. 
This being any of 400MHz MPC838E up to 1GHz 7450 G4 CPUs. This CPU can be used
to run (certain) WarpOS software.

The PPC CPU on the PPC PCI card cannot DMA to Amiga memory. Any access to
non-PPC/PCI memory by the PPC is very slow. The library is trying to avoid
this by means of patching the AllocMem(), LoadSeg() and process creation
functions (the latter is optional). This way, PPC data and code is pushed
to the memory residing on the PPC 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 original WarpOS powerpc.library are yet implemented or
will be implemented (for example memory protection). 100% compatibility will
probably be never achieved, mostly due to hardware banging of certain WarpOS
software (e.g. PayBack).

Sound is restricted to AHI. Paula 8 bit DMA is the recommended setting. At this
moment, the SB128 and FM801 drivers sometimes produce a distortion in the sound
output with certain bridges. 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. That being
said, there is a test dnetc client with AltiVec enabled for WarpOS and the
latest SDL library contains 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 Alignment Exception (or in other words
  disable the unaligned access emulation). 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.
- EnStackPatch (0 or 1): Enable if you want the library to push more 68K data
  to 68K memory like stack and task structures. **EXPERIMENTAL**
- SetCPUComm (0 or 1): If set will move all requests to MasterControl process
  and are no longer directly handled by the 68K interrupt. Intended for A1200.
  Default = 0. **EXPERIMENTAL** 
- SetCMemDiv (0-5): Sets the speed divider of the L2 Cache memory.
  5 = 3, 4 = 2.5, 3 = 2, 2 = 1.5, 1 = 1, 0 = Handled by library. Default = 0.
  For example: A Sonnet with speed 500 MHz and setting 5 will run the L2 cache
  at 166 MHz (500/3). **USE AT OWN RISK!!!**
The included powerpc.library is for PCI PPC cards only and not compatible with
CPU/expansion slot PPC solutions (BPPC, CSPPC etc.).
Refer to or /PowerPCAmiga for the
latest build and the latest documentation regarding compatibility, FAQs and

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 PPC card.
			Two different versions are included. The old obsolete
			one which was programmed in assembly and a brand new
			one programmed mostly in C. The main difference is
			speed (5%) and support for the Prometheus PCI bridge.
InitPPC:		Initializes the PPC card using the powerpc.library
GetInfo:		Simple program to show the state of the PPC CPU on the
			PPC card after initialization.
StartPPC:		Simple script if don't want to put the library in the
vdappc:			Program from Frank Wille that disassebles PPC code.
			Main difference with the one already available on the
			net is that this compiled version supports Altivec
wosdb:			Program from Frank Wille that can trace through PPC
			programs. Main difference with the one already
			available on the net is that this compiled version can
			intercept exceptions and trace from there. Original
			program could only trace from the start of a program.
			Thanks Frank!
tools750x:		Various tools to under/overclock the PPC750FX as found
			on the "Ragnarok" PrPMC800 card. Thanks to Wrangler!
bogomips: 		Meaningless speed test program :-)
Also the sources from both versions are included.

The Sonnet or PowerPMC 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 or using the provided script. The Harrier
bridge based and Killer NIC cards can initialize their CPUs without the aid of
VGA memory.


The future:

I consider the library as finished. Bug fixes will happen and maybe add PCIe
card support. Currently it does not work on the Prometheus, but maybe it will
on the Mediator MKIII in combination with pci.library 14.0. I do not see a
reason to add memory protection as nothing out there uses it.

I looked at an implementation of Nallepuh for Payback, but someone else can
do that :-)

It was a fun 7 year ride and thanks for your support! :-)


HOTFIX 17.14

- K1/M1 failed to initialize on the Mediator. Fixed.
- Removed 'debug' from the version text.

What has changed since 17.13b:

- Rewritten all code in C. Startup code is still in assembly.
- Added support for the Prometheus Bridge with FireStorm firmware. Needs
  prometheus.library 4.0 or better (See EAB or contact me).
- WARNING: Timings on the Prometheus seem not so tolerant. K1/M1 cards do not
  work with the Prometheus and Warp3D (Bus errors).  
- Added support for the Permedia2 PCI card (2D only).
- Rewritten memory detection on the Harrier cards. No ENV needed anymore.
  Up to 384MB supported.

What has changed since 17.12:

- Removed left-over debug code.
- Added check on 128MB Harriers.
- Added new ENV called Harrier256MB.
- Fixed 256+MB G3 Harrier support.
- Fixed an Enforcer hit.
- Fixed a possible bug for cards with more than 256MB memory.
- Clarified an error message.
- Added an extra error regarding memory wrapping.
- Fixed an error where the PPC memory size was saved wrongly.
- Fixed PPCBase initialization by adding PPC_SysLib and PPC_DosLib values.
- Added basic support for Mediator MKIII.

What has changed since 17.11:

- Library now requires pci.library 13.8+ from Elbox.
- Added error output when a time-out occurs on 68K calling by the PPC.
- Added more crash error messages (e.g. when PPC is out of memory).
- Page table size now allocated based on total memory on card.
- Fixed Quantum/time-slice not being set correctly by CreateTaskPPC.
- Harrier cards now allocate memory based on available Z3 window space.
- Fixed RemTailPPC returning LH_TAILPRED when list was empty.
- Trying to send a signal to a non-existing 68k mirror task now prevented.
- Data storage exceptions can now be intercepted correctly by wosdb debugger.
- Added $5961 and $5962 to supported ATI Radeon cards.
- Library now keeps track of number of Run68Ks called.
- Updated the GetInfo utility with above info and also added 7457 CPU.
- Added a message when the kernel crashes.
- Added 3.5 and 4.0 multiplier for Rapture 7410 cards.
- Overhauled the signalling system making DisSigBounce obsolete.
- Added a Stricmp workaround for lha_wos 2.14 which apparently sorts using the
  68k utility.library. Archiving now starts a lot faster.
- Added a work-around to speed up WarpDT in combination with picture.datatype
  version 45.17. (WarpDT needs the PPC card to be started from startup-

What has changed since 17.10:

- Added support for Bigfoot Killer NIC K1 PCI cards.
- Added access to Radeon config space for K1/M1 PPC cards.
- Fixed reporting of L2 size for Killer NIC cards
- Added experimental code to add pcidma memory for use by K1/M1 cards. This is
  enabled when a Radeon is added as a secondary card.
- PPC MMU now correctly initialized in case of 128MB(x2) Radeon.
- Harrier based cards can use up to 384MB of local RAM for PPC programs when
  enough room in Z3 space,
- Fixed errors in MMU page table set-up code.
- Fixed register trashing when Killer or Harrier present (code was executed
  using MPC107 register offsets).
- Now the whole 512MB mediator memory range gets mapped to the PPC.
- K1 now has a correct decrementer interrupt going on. The time slice was
  wrongly calculated resulting in occasional stalls of the PPC,

What has changed since 17.9:

- GetCPU() now correctly recognizes a Nitro CPU as a G4.
- Added basic MPC7450 support (Gyrus X2 PMC card).
- Added MPC7441, PPC603E to GetInfo tool.
- Fixed an error in RunPPC that caused screen corruption (e.g. in Earth2140).
- Fixed tearing of screens in some games (e.g. FreeSpace).
- Added support for Bigfoot Killer NIC M1 PCI cards.

What has changed since 17.8:

- Added ENV DisSigBounce. If set signals are less likely to continuously bounce
  between processors. This lessens the load on the PCI bus and can speed up
  certain programs/games. Programs that use a lot of DSI emulations (like
  scummvmwos 0.7) will hang. Turn this setting off when that happens.
- Added Harrier chipset support. This will open up a range of support for PMC
  cards based on this chipset. For now PrPMC800 has been tested and is
  officially supported. Others have had success with the PrPMC8150 card.
- Added more MHz options to the settings table. Up to 1GHz now supported.  

What has changed since 17.7:

- Fixed a memory leak. Stack of a PPC task was not freed.
- LoadSeg() patch crashed on overlaid files. They are now ignored.
- Added more error handling/messages.
- SnoopTask() on exit was not implemented correctly. Fixed.
- SnoopTask() should now work with SNOOP_START.
- Implemented task exceptions from SetExceptPPC().
- Small compatibility update regarding PPCBase (extended libbase).
- Aligned data handling within the library to 16 byte boundaries (for Altivec).
- Fixed a trashing of a segment pointer inside the LoadSeg() patch.
- Extended LargeContext to hold Altivec registers.
- Modules of WarpRace are now loaded correctly.
- Added support for the Force Computers PowerPMC-250 450MHz G4 card,
- Added CPUF_7410 for MPC7410 CPUs.
- Added size detection code for SDRAM to the library.
- Added option sonnet/EnStackPatch.

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.

Contents of driver/other/SonnetLibrary.lha
---------- ----------- ------- ------- ------ ---------- ------------ ----------
[unknown]                  849    1780  47.7% -lh5- 0f61 May 16 15:31 PowerPCLibrary/C/GetInfo
[unknown]                  151     228  66.2% -lh5- 3ebb Jul  2  2019 PowerPCLibrary/C/StartPPC
[unknown]                   76      76 100.0% -lh0- b3ba Jul  2  2019 PowerPCLibrary/InitPPC
[unknown]                 6333    7151  88.6% -lh5- 8a6e Jul  2  2019 PowerPCLibrary/
[unknown]                36726   73532  49.9% -lh5- 1b5e Sep 29 18:13 PowerPCLibrary/libs_173b/powerpc.library
[unknown]                46292   88148  52.5% -lh5- a3c5 Oct 13 14:51 PowerPCLibrary/libs_174/powerpc.library
[unknown]                 6982   16659  41.9% -lh5- a399 Oct 24 11:46 PowerPCLibrary/SonnetLibrary.readme
[unknown]                 2660    7097  37.5% -lh5- 5897 Oct 10 11:16 PowerPCLibrary/src_173b/68kdefines.i
[unknown]                  139     267  52.1% -lh5- ad2d Oct 24 11:41 PowerPCLibrary/src_173b/Makefile.68k
[unknown]                 1432    3389  42.3% -lh5- 2b79 Oct 10 11:16 PowerPCLibrary/src_173b/pci.i
[unknown]                 1053    2106  50.0% -lh5- 7370 Oct 10 11:16 PowerPCLibrary/src_173b/pci_lib.fd
[unknown]                29304  114546  25.6% -lh5- e975 Oct 10 11:16 PowerPCLibrary/src_173b/powerpc.s
[unknown]                 9919   30372  32.7% -lh5- 007e Oct 10 11:16 PowerPCLibrary/src_173b/ppcdefines.i
[unknown]                38618  185076  20.9% -lh5- 40eb Oct 10 11:16 PowerPCLibrary/src_173b/ppcfunctions.p
[unknown]                 1316    3247  40.5% -lh5- e241 Oct 10 11:16 PowerPCLibrary/src_173b/ppcmacros-std.i
[unknown]                32566  128219  25.4% -lh5- ccfd Oct 10 11:16 PowerPCLibrary/src_173b/setupppc.p
[unknown]                 1743    4218  41.3% -lh5- 2ecc Oct 10 11:16 PowerPCLibrary/src_173b/sonnet_lib.fd
[unknown]                 1986    5817  34.1% -lh5- 0244 Oct 10 11:16 PowerPCLibrary/src_173b/sonnet_lib.i
[unknown]                 1819    6129  29.7% -lh5- f1ed Oct 10 11:16 PowerPCLibrary/src_173b/sonnet_libppc.i
[unknown]                 6883   28506  24.1% -lh5- 8d4b Oct 10 11:16 PowerPCLibrary/src_174/constants.h
[unknown]                 2113    6560  32.2% -lh5- 70d7 Oct 10 11:16 PowerPCLibrary/src_174/constantsppc.i
[unknown]                 4893   23700  20.6% -lh5- 027f Oct 10 11:16 PowerPCLibrary/src_174/functions68k.c
[unknown]                 2007    6870  29.2% -lh5- d87e Oct 10 11:16 PowerPCLibrary/src_174/functions68k.s
[unknown]                19665  143624  13.7% -lh5- 1cb8 Oct 10 11:16 PowerPCLibrary/src_174/functionsppc.c
[unknown]                 2073    6874  30.2% -lh5- 60ae Oct 10 11:16 PowerPCLibrary/src_174/Internals68k.h
[unknown]                 4411   21879  20.2% -lh5- f80c Oct 10 11:16 PowerPCLibrary/src_174/Internalsppc.h
[unknown]                 8783   54942  16.0% -lh5- 4afe Oct 10 11:16 PowerPCLibrary/src_174/kernel.c
[unknown]                 6622   34234  19.3% -lh5- 4361 Oct 10 11:16 PowerPCLibrary/src_174/kernel.s
[unknown]                14158   68772  20.6% -lh5- 68d6 Oct 13 14:25 PowerPCLibrary/src_174/libinit.c
[unknown]                  904    1761  51.3% -lh5- 6cc9 Oct 13 14:42 PowerPCLibrary/src_174/librev.h
[unknown]                 3044   13020  23.4% -lh5- 721d Oct 10 11:16 PowerPCLibrary/src_174/libstructs.h
[unknown]                   43      43 100.0% -lh0- 13e2 Oct 10 11:16 PowerPCLibrary/src_174/makefiles/CVS/Entries
[unknown]                   23      23 100.0% -lh0- c27b Oct 10 11:16 PowerPCLibrary/src_174/makefiles/CVS/Repository
[unknown]                   41      41 100.0% -lh0- 03e9 Oct 10 11:16 PowerPCLibrary/src_174/makefiles/CVS/Root
[unknown]                  670    2261  29.6% -lh5- 48ea Oct 10 11:16 PowerPCLibrary/src_174/makefiles/makefile
[unknown]                 6330   31812  19.9% -lh5- 9b9d Oct 10 11:16 PowerPCLibrary/src_174/setupppc.c
[unknown]                 3885   20064  19.4% -lh5- ecc5 Oct 10 11:16 PowerPCLibrary/src_174/setupppc.s
[unknown]                10123   50501  20.0% -lh5- d79f Oct 10 11:16 PowerPCLibrary/src_174/support68k.c
[unknown]                 6412   34759  18.4% -lh5- 04de Oct 10 11:16 PowerPCLibrary/src_174/supportppc.c
[unknown]                 3249   16135  20.1% -lh5- 1f5e Oct 10 11:16 PowerPCLibrary/src_174/supportppc.s
[unknown]                 4320    8904  48.5% -lh5- 413c Sep 29 18:13 PowerPCLibrary/tools/bogomips
[unknown]                19520   41144  47.4% -lh5- c5bd Nov 22  2017 PowerPCLibrary/tools/vdappc
[unknown]                27676   63728  43.4% -lh5- 2c62 Sep 29 18:13 PowerPCLibrary/tools/vdappc_wos
[unknown]                39565   90852  43.5% -lh5- 2af3 Nov 25  2017 PowerPCLibrary/tools/wosdb
[unknown]                  407     568  71.7% -lh5- 5e60 Sep 29 18:13 PowerPCLibrary/tools750fx/getspeed
[unknown]                  578     812  71.2% -lh5- 7aa7 Sep 29 18:13 PowerPCLibrary/tools750fx/gettemp
[unknown]                  637     948  67.2% -lh5- d9fe Sep 29 18:13 PowerPCLibrary/tools750fx/setspeed
---------- ----------- ------- ------- ------ ---------- ------------ ----------
 Total        47 files  418999 1451394  28.9%            Oct 24 19:50

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