AminetAminet
Search:
84782 packages online
About
Recent
Browse
Search
Upload
Setup
Services

driver/other/SonnetLibrary.lha

Mirror:Random
Showing: m68k-amigaos iconppc-amigaos iconppc-morphos iconi386-aros iconi386-amithlon iconppc-warpup iconppc-powerup icongeneric icon
No screenshot available
Short:Driver for G3/G4 PCI cards
Author:dennisvdboon -> gmail (Dennis Boon)
Uploader:dennisvdboon gmail com (Dennis Boon)
Type:driver/other
Version:17.15
Architecture:m68k-amigaos
Date:2025-03-11
Distribution:Aminet
Download:driver/other/SonnetLibrary.lha - View contents
Readme:driver/other/SonnetLibrary.readme
Downloads:4006

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; 
  MG4-400-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
- Bigfoot/Xeno Killer NIC 2100 PCIe card with 400MHz MPC8314E and 128MB
  on-board RAM. This only works partially for Xilinx based Prmetheus cards.
  Full support will need a further FirmWare fix.
- pci.library version 13.8 or higher from Elbox (does not support PCIe cards).
- prometheus.library version 4.5 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.

Restrictions:
 
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.

Options:

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 use another method of handling cross-cpu
  signalling. Shogo needs this for 17.15. Default = 0.
- NoZeroGuard (0 or 1): If set the kernel does not protect the zero page
  anymore. For badly behaving games/programs (such as Shogo). Default = 0.
  **USE AT OWN RISK!!!**
- 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!!!**
 
Notes:
 
The included powerpc.library is for PCI PPC cards only and not compatible with
CPU/expansion slot PPC solutions (BPPC, CSPPC etc.).
 
Refer to https://github.com/Sakura-IT/SonnetAmiga or /PowerPCAmiga for the
latest build and the latest documentation regarding compatibility, FAQs and
issues.

See http://amigafun.blogspot.com/search/label/Sonnet 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
			Startup=Sequence.
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
			disassembly.
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 fully on the Prometheus, but maybe it
will on the Mediator MKIV 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 9 year ride and thanks for your support! :-)


-+-+-+-+-+-+-+-+-+-+-+-+-+

What has changed since 17.14:

- Not enough room on the PPC MMU pagetable when Voodoo4/5 installed. Fixed.
- FindSemaphorePPC searched the wrong list. Fixed.
- Double freeing memory for semaphores fixed.
- Added that the exception/crash output also goes to serial.
- Added basic support for Bigfoot/Xeno Killer 2100 PCIe cards.
- Added Altivec support for CopyMemPPC when available. Needs 128bit alignment.
- Added NoZeroGuard as an ENV option. See above.
- Changed description for ENV option SetCPUComm. See above.

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

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.
- Implemented PPF_ASYNC/PP_STACKPTR/PP_STACKSIZE for RunPPC().
- 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
 PERMSSN    UID  GID    PACKED    SIZE  RATIO METHOD CRC     STAMP          NAME
---------- ----------- ------- ------- ------ ---------- ------------ -------------
[Amiga]                    849    1780  47.7% -lh5- 0f61 Mar 11 20:35 PowerPCLibrary/C/GetInfo
[Amiga]                    151     228  66.2% -lh5- 3ebb Mar 11 20:35 PowerPCLibrary/C/StartPPC
[Amiga]                     76      76 100.0% -lh0- b3ba Mar 11 20:35 PowerPCLibrary/InitPPC
[Amiga]                   6333    7151  88.6% -lh5- 8a6e Mar 11 20:35 PowerPCLibrary/InitPPC.info
[Amiga]                  36726   73532  49.9% -lh5- 1b5e Mar 11 20:35 PowerPCLibrary/libs_173b/powerpc.library
[Amiga]                  46511   89384  52.0% -lh5- f405 Mar 11 20:35 PowerPCLibrary/libs_175/powerpc.library
[Amiga]                   7241   17414  41.6% -lh5- b63c Mar 11 20:35 PowerPCLibrary/SonnetLibrary.readme
[Amiga]                   2660    7097  37.5% -lh5- 5897 Mar 11 20:35 PowerPCLibrary/src_173b/68kdefines.i
[Amiga]                    139     267  52.1% -lh5- ad2d Mar 11 20:35 PowerPCLibrary/src_173b/Makefile.68k
[Amiga]                   1432    3389  42.3% -lh5- 2b79 Mar 11 20:35 PowerPCLibrary/src_173b/pci.i
[Amiga]                   1053    2106  50.0% -lh5- 7370 Mar 11 20:35 PowerPCLibrary/src_173b/pci_lib.fd
[Amiga]                  29304  114546  25.6% -lh5- e975 Mar 11 20:35 PowerPCLibrary/src_173b/powerpc.s
[Amiga]                   9919   30372  32.7% -lh5- 007e Mar 11 20:35 PowerPCLibrary/src_173b/ppcdefines.i
[Amiga]                  38618  185076  20.9% -lh5- 40eb Mar 11 20:35 PowerPCLibrary/src_173b/ppcfunctions.p
[Amiga]                   1316    3247  40.5% -lh5- e241 Mar 11 20:35 PowerPCLibrary/src_173b/ppcmacros-std.i
[Amiga]                  32566  128219  25.4% -lh5- ccfd Mar 11 20:35 PowerPCLibrary/src_173b/setupppc.p
[Amiga]                   1743    4218  41.3% -lh5- 2ecc Mar 11 20:35 PowerPCLibrary/src_173b/sonnet_lib.fd
[Amiga]                   1986    5817  34.1% -lh5- 0244 Mar 11 20:35 PowerPCLibrary/src_173b/sonnet_lib.i
[Amiga]                   1819    6129  29.7% -lh5- f1ed Mar 11 20:35 PowerPCLibrary/src_173b/sonnet_libppc.i
[Amiga]                   7364   30947  23.8% -lh5- 3cdb Mar 11 20:35 PowerPCLibrary/src_175/constants.h
[Amiga]                   2126    6646  32.0% -lh5- 46d3 Mar 11 20:35 PowerPCLibrary/src_175/constantsppc.i
[Amiga]                   4915   23767  20.7% -lh5- 05db Mar 11 20:35 PowerPCLibrary/src_175/functions68k.c
[Amiga]                   2007    6870  29.2% -lh5- d87e Mar 11 20:35 PowerPCLibrary/src_175/functions68k.s
[Amiga]                  19765  144206  13.7% -lh5- 662e Mar 11 20:35 PowerPCLibrary/src_175/functionsppc.c
[Amiga]                   2157    7233  29.8% -lh5- c470 Mar 11 20:35 PowerPCLibrary/src_175/Internals68k.h
[Amiga]                   4661   24088  19.3% -lh5- 2cb4 Mar 11 20:35 PowerPCLibrary/src_175/Internalsppc.h
[Amiga]                   9062   57391  15.8% -lh5- 3a82 Mar 11 20:35 PowerPCLibrary/src_175/kernel.c
[Amiga]                   6628   34230  19.4% -lh5- 617d Mar 11 20:35 PowerPCLibrary/src_175/kernel.s
[Amiga]                  14683   72904  20.1% -lh5- 6faa Mar 11 20:35 PowerPCLibrary/src_175/libinit.c
[Amiga]                    909    1767  51.4% -lh5- bf27 Mar 11 20:35 PowerPCLibrary/src_175/librev.h
[Amiga]                   3044   13020  23.4% -lh5- 721d Mar 11 20:35 PowerPCLibrary/src_175/libstructs.h
[Amiga]                   6420   32095  20.0% -lh5- 48f9 Mar 11 20:35 PowerPCLibrary/src_175/setupppc.c
[Amiga]                   3896   20171  19.3% -lh5- ba62 Mar 11 20:35 PowerPCLibrary/src_175/setupppc.s
[Amiga]                  10418   52777  19.7% -lh5- f0ff Mar 11 20:35 PowerPCLibrary/src_175/support68k.c
[Amiga]                   6412   34759  18.4% -lh5- 04de Mar 11 20:35 PowerPCLibrary/src_175/supportppc.c
[Amiga]                   3370   16922  19.9% -lh5- b4ee Mar 11 20:35 PowerPCLibrary/src_175/supportppc.s
[Amiga]                   4320    8904  48.5% -lh5- 413c Mar 11 20:35 PowerPCLibrary/tools/bogomips
[Amiga]                  19520   41144  47.4% -lh5- c5bd Mar 11 20:35 PowerPCLibrary/tools/vdappc
[Amiga]                  27676   63728  43.4% -lh5- 2c62 Mar 11 20:35 PowerPCLibrary/tools/vdappc_wos
[Amiga]                  39565   90852  43.5% -lh5- 2af3 Mar 11 20:35 PowerPCLibrary/tools/wosdb
[Amiga]                    407     568  71.7% -lh5- 5e60 Mar 11 20:35 PowerPCLibrary/tools750fx/getspeed
[Amiga]                    578     812  71.2% -lh5- 7aa7 Mar 11 20:35 PowerPCLibrary/tools750fx/gettemp
[Amiga]                    637     948  67.2% -lh5- d9fe Mar 11 20:35 PowerPCLibrary/tools750fx/setspeed
---------- ----------- ------- ------- ------ ---------- ------------ -------------
 Total        43 files  420982 1466797  28.7%            Mar 11 23:50
Page generated in 0.03 seconds
Aminet © 1992-2024 Urban Müller and the Aminet team. Aminet contact address: <aminetaminet net>