PCI Projects



Français


Schematic from Rodolphe...

2005 July 31. Rodolphe Czuba start a PCI extention project for the CT60, a board with a bridge PLX 9054 who is compatible with the PLX 9080 used on the MILAN.

Because in 2005 the TOS is a sort of graphical open firmware, the TOS must boot with the PCI main devices (like screen, mouse and keyboard).
So I have planned two mains drivers inside the CT60 PCI TOS :

The PCI drivers are loaded with the CT60 Flash Tool in HEX format (S record) at the top of the flash, so the Atari Diagnostics are not valid when the PCI drivers are loaded.
A third driver for IDE seems also planned.


CTPCI project added to the TOS :


2006 January 26. There are lot of work for add PCI support (PCI BIOS, drivers, etc...) inside the TOS, nevertheless since some months I wait the hardware for test the Radeon driver (the main driver).

The PCI (X)BIOS is finished since 2005 August but not tested.
CTPCI hardware registers mapping (configuration and slots interrupts) are needed for finish this part.
Some specific PLX XBIOS calls (like dma_setbuffer, dma_buffoper, read_mailbox and write_mailbox) are added to the original PCI (X)BIOS calls. The PLX is also the first device of the PCI (X)BIOS so it's possible to install and use his interrupts and not only PCI slots.

The Radeon driver is finished to write since 2005 October but not tested.
In 2005 November a solution was found for test and debug the fVDI part and the TOS calls, the current alpha release works with a 65K x 640 x 480 Videl screen!
The fVDI driver is inside the TOS but can also be called by a latest version of fVDI installed inside the AUTO folder (radeon.sys). The fVDI implemention inside the TOS is reduced to the minimum code size, the TOS calls are rewrited but use always the original VDI variables and structures. So for example the true type fonts are unimplemented.
The accelerated hardware functions today are mouse, blitting (screen copy), lines, filling, and virtual screen. The XBIOS installed only by the TOS driver update screen functions (like Physbase, Vsetscreen, Vsetmode, Montype, Vgetsize, and Vsetrgb) and the new CT60CONF.CPX can set boot/default screen with 256 or 65K colors in :

The driver has also 32M colors modes but the TOS can't use these modes.
The driver test the host bridge endian from the PCI (X)BIOS, so the host can swap bytes or the radeon board can swap bytes (actually the PCI (X)BIOS boot configure the PLX for swap bytes so all PCI boards can work in Intel format, the PCI himself has a Intel format).

The USB driver is in progress, but paused because it's better to wait the hard and finish the first driver.


Installation inside the tower :


We need free space for install the maximum of 3 PCI boards (4 now).
Personnaly I have planned to use these 3 boards :


The boards who wait the CTPCI...


Before the motherboard moved...


PCI on the evaluation board M5484LITE :


After 3 months without working (I need hardware), and at the beginning of April, Mark Duckworth send a mail about a donated Coldfire evaluation board for Atari developments, the M5484LITE. I was very interrested :-). This board has :

There are lot of work for run a TOS on a Coldfire, but it's a method for me to test the PCI bios and the Radeon driver. The second reason is for a contribution to the Atari community on the Atari Coldfire Project.

For the keyboard, it was easy to change Eiffel for replace the serial port by the CAN bus, for do this prototype I have installed on the FALCON a PIC18F242 (16 bits) who replace the PIC16F876 (14 bits), the CAN version exist only on the 18F familly, I have used a PIC18F258 for the M5484LITE.

For the TOS, I have rewrited the XBIOS with drivers for the serial port, the IKBD from CAN, the MFP chip with the GPT and SLT timers on the Coldfire, the flash parameters, etc...
The CF68KLIB used is the 68030 target, the MMU of the Coldfire is useful for protect the TOS copied in SDRAM. Like the CT60 we found the pseudo STRAM with the cache in writethrough, and the SDRAM with the cache in copyback.

2006 June 3. The TOS works until starting GEM, the CompactFlash is detected but writing his registers not works, the PCI bios works for configuration, the VDI cannot be used because blitter hardware not exist, so we need to use the Radeon with fVDI, and an ATX power supply must be connected on the M5484LITE.
Now there are two targets, the ct60tos.bin and the firetos.hex.


The debug on the M5484LITE board and Eiffel 2.0 CAN version...

2006 June 28. After rebuild the PCI TOS with X86EMU added for init the Sapphire board correctly with his VGA Bios, the (X)BIOS works on the board with a screen selected at 1024 x 768 x 65K colors and also in 256 colors.
The next step is to test the VDI inside the TOS, because actually the CompactFlash not works.


Le boot with the Sapphire (Radeon 7500) in 1024 x 768 x 65K and the M5484LITE board...

2006 August 18. After add a 2 MB ram-disk, a TFTP loader with a file list inside a TFTP.INF, because I had some problems with the GEMDOS and the Coldfire, I have finally after some changes used BDOS (from Emutos). The desktop works below theses lines in 1280 x 1024 x 65K colors, sure there are always some bugs (for example the state SELECTED inside the menus, the transparent graphic modes not accelerated actually, but the TOS works just quite enough. As weel as I have tried with success Aniplayer (without sound ;-) ). The screen modes in 256 colors works also. Actually I havn't tried fVDI and RADEON.SYS inside the AUTO folder. The fVDI part used here is inside the TOS and use his variables.
The next step ? Fix bugs and maybe try again on the CTPCI ?


The TFTP loader and the GEM in 1280 x 1024 x 65K colors...

2006 September 10. Set ram-disk size to 8 MB. Rewriting texts fonctions of fVDI in Coldfire opcodes. Modification of TOS for working in 16M colors, the color icons are displayed in monochrome. CT60CONF.CPX can select video modes in 256 / 65K / 16M colors for the boot and/or the file NEWDESK.INF. Kronos and Vdibench returns good results for the texts in 1280 x 1024 x 16M colors.

2006 October 6. Writing a desk accessory jpegsnap.acc (nothing worked before). Add a tftpsend directory on the desktop for send files to the TFTP server. Better speed for the SDRAM. MiNT tested with succes (the modifications are inside the M5484LITE.readme file).



A screen capture with jpegsnap.acc in 1280 x 1024 x 16M with the M5484LITE board...

2006 December 8. Finally the CompactFlash works, the driver inside the TOS can install until 14 partitions on the CompactFlash. An IDE emulation is in progress. The protocoles XHDI and SCSIDRV are also inside the TOS.
Modification at the XBIOS video modecode for get different frequency (56, 60, 70, 85 Hz). Build a CPX for test all video modes.
Acceleration of the Radeon driver and the TOS VDI (based on fVDI).
The next step is to write an ethernet driver for MiNT, try NFS, and especially make DRM to the Radeon driver for get OpenGL hardware acceleration.



The CPX for test all video modes and the latest benchs...

2006 December 28. Now I have a 2nd graphic board, a Sapphire Radeon 9250 128 MB - 64 bits.
VDI Texts (v_gtext, v_justified), lines (v_pline, v_bar), filling (v_bar, v_recfl), and copy (vrt_cpyfm, vro_cpyfm) are now at the maximum speed :-).
The TOS himself call the accelerated functions and bypass fVDI.
The driver is always compatible with fVDI, but backward compatibility seems broken since fVDI 1.14 (vwk structure).
Filling works also with user color patterns (vsf_updat), and text rotation works (vst_rotation) like the original TOS. This features actually not works inside fVDI.
This is the results with Kronos :

Kronos test Radeon 7500 Radeon 9250
VDI_CIRCLE 3943.662 (op/sec) 3943.662 (op/sec)
VDI_ARC 27164.179 (op/sec) 27164.179 (op/sec)
VDI_BAR 44250.000 (op/sec) 44250.000 (op/sec)
VDI_ELLARC 25200.000 (op/sec) 25200.000 (op/sec)
VDI_ELLIPSE 3582.090 (op/sec) 3582.090 (op/sec)
VDI_ELLPIE 637.168 (op/sec) 637.168 (op/sec)
VDI_PIESLICE 800.000 (op/sec) 802.974 (op/sec)
VDI_RBOX 19085.714 (op/sec) 19085.714 (op/sec)
VDI_PLINE 100756.219 (op/sec) 96280.000 (op/sec)
VDI_FILLAREA 1390.909 (op/sec) 1390.909 (op/sec)
VDI_GTEXT 15000.000 (op/sec) 15020.000 (op/sec)
VDI_JUSTIFIED 5914.191 (op/sec) 5973.333 (op/sec)
VDI_BLITTING 80881.188 (op/sec) 44346.000 (op/sec)

There are little speed differences between the CT60-100 and the M5484LITE, so I think get the same results on the CTPCI.



The Sapphire Radeon 7500 All-In-Wonder VE 64 MB - 128 bits (at left) and the Sapphire Radeon 9250 128 MB - 64 bits (at right)

2007 January 24. Integration of VIDIX inside the TOS with some new XBIOS functions beetween 400 and 417 :

Now, it's possible to play movies in full screen with Aniplayer :-) (my current screen is 1280 x 1024 x 16M), actually RGB and YUV (MPEG for example) output formats.
I have tried without success bus mastering with the Radeon, so I use the DMA (there are 16 channels on the Coldfire and 2 channels on the CTPCI PLX 9054 bridge).
Now I try to get TV on the Sapphire All-In-Wonder VE 64 MB PCI (Radeon 7500).
DirectFB seems a better choice for get 3D hardware acceleration (supported by Mesa).

2007 February. Suspended working on the Radeon board. We are in 2007, so why try to get analog TV on the Sapphire All-In-Wonder VE?
New plans for integration of a real time OS and a TCP/IP stack for add new Coldfire tools.
The choice is FreeRTOS and lwIP.

2007 March. Add an HTTP server, html pages are in flash memory.
Moved the PCI part of the TOS in flash compressed to LZ format. After decompress the TOS, now there are two parts :

The compressed part is stored always from 0xE00000 to 0xEEFFFF (CT60 TOS compatibility with the parameters inside flash at 0xEF0000 to 0xEFFFFF).

2007 April. Add a TFTP and a FTP server using the internal 8 MB ram-disk.
Add a command line shell using the serial port (terminal) or a Telnet server.

Juin 2007. There are no real bus error (or Access Fault) on Coldfire like the MC68060, so unused zone are now protected by the MMU.
There are two stacks on the Coldfire V4e (Supervisor and User), so I make some changes inside the CF68KLIB for run himself in supervisor and run FreeRTOS tasks (TOS himself is a task) in user.
With this feature, I thing get more programs running under the CF68KLIB.

2007 July. Some plans for add an AC97 codec on the Coldfire PSC2.
To be continued...

2007 October. With GlueStick (socket BSD using lwIP), add the STiK functions and his cookie.
It's also possible to get, by a direct call, the functions of the TCP/IP stack with a 'SOCK' cookie :

Tested with AFTP (STiK) and a rebuild version of Highwire (BSD socket using lwIP and the 'SOCK' cookie).

2007 December. Try to add a VNC server.

2008 Jannuary. Add the M54455EVB target, the makefile can create three targets :

The evaluation board M54455EVB is a complete Atari : Unfortunately the v4m has no FPU, and the board is a little bit expensive.
Rebuild the TOS for use : This target will be untested actually because I have no board and I cannot get enough peoples interrested for this new adventure.

2008 May. Fix some bugs inside the TCP/IP stack.

2008 June. Add a new command for trace instructions handled by the CF68KLIB for easily found why some programs not like it.
Fix arbiter timeout (Access Fault simulation from an interrupt).

2008 July. Moved all FreeRTOS tasks in native Coldfire code excepted the TOS who runs under the CF68KLIB.
Add breakpoints commands for the TOS task of FreeRTOS.
When there are lot of consecutive crashs of the TOS, the task is killed for try to get an easy debug with with the command line shell of FreeRTOS.
Add a command for trace traps TOS calls.

2008 August. Try a PCI riser with the M5484LITE, unfortunately this model is just 5V compatible on his two user sockets. Cut the I/O traces for solve the problem so the security is removed., because the Coldfire support only 3V3. Some PCI boards can be inserted in all PCI slots but their PCI buffers are in 5V, for verify the board compatibility you can put the the board in the M5484LITE slot because the ATX power put himself in security if the PCI board has his buffers in 5V (I/O pins).
Add an Ethernet Realtek RTL8139D PCI board with the Radeon board, and make some tests without success under MiNT (rtl8139 driver).



The PCI riser

2008 September. Fix an Ethernet bug inside the FEC driver of the MCF548X.
Add a grafical display of the FreeRTOS tasks inside the HTTP server.
If the URL isn't found inside the flash memory pages, the HTTP server search the file in c:\html\.
Add USB Mass Storage on the MCF548X USB device, this feature uses the 8 MB ram-disk. The Coldfire v4e USB is a little bit bugged, but I have tried with success on iMac, Mac-Mini and also a Visiosat TVT 250 USB.
The best news, Rodolphe works again on the CTPCI!

2008 October. Boot possible on the ram-disk from a disk updated with USB Mass Storage device, this is the procedure :

Renunciation of VNC server (motivation and free space in the flash memory).

2009 May. Since the beginning of this year, Mathias Wittau try that I join the new ACP project. I have not really an interest in this technical choices (base FPGA too expensive for emulate the old Atari hardware, preference for the Videl, only one ethernet port when the Coldfire used has two ports, no CAN...), and I must finish my work on the CTPCI, finaly I have presented my help. After all, it is possible that this is the single Atari Coldfire (so his name is COLDARI). My fisrt objective is to add the AC97 sound to the Coldfire.
Add the COLDARI target, now the makefile can create four targets :

Modifications inside the TOS for manage the COLDARI target (base M5484LITE) : Add CTPCI registers features (IDE and interrupts).

2009 June. Beginning of the CTPCI debug! The prototype is finished, the tests can start.
The big endian and the little endian are inverted inside the PLX9054.
Fix device selection of the PLX9054 (for each slot), we must add 11, strange... this bridge is not really compatible with the PCI specifications.
Fredi Aschwanden send to me a CS4299 chip as audio codec for the AC97!
Writing AC97 driver based on the Linux sources for the codecs, however I must write totally the Coldfire part. The PSC of the Coldfire has an AC97 mode bit seems used by nothing on the net!
Only the the XBIOS part of the AC97 driver is easy to write, because I have already writed an audio driver for MagiC MAC and Aranym.
The DMA of the Coldfire will be used for transfer the AC97 frames but in a first time it's only the CPU and interrupts used for send and receive frames by the PSC fifo (who has 512 bytes on the Coldfire). An AC97 frame contains 256 bits (13 slots) either 13 words inside the fifo (52 bytes).

2009 July. The tests on CTPCI are laborious, there are errors on PCI transfers.
Creation of tests for Rodolphe Czuba, the PCI BIOS is used.
Fix the device selection inside X86EMU, only the slot 3 could work! This was not a problem on the M5484LITE with his unique slot. With this modification X86EMU is faster, just two seconds for initialize the Radeon with his BIOS.
On the M5484LITE, installation of the audio codec AC97 CS4299, like you can see on this photo :

2009 August. Rodolphe has fixed a big problem with clocks on the CTPCI. After his changes inside ABE and SDR, the CTPCI + CT60 works at 105 MHz! Test of the instruction move16 on the CTPCI, and beginning of the PL9054 DMA tests. With the DMA, it's laborious again.
Separation of the PCI zone MEM in two zones prefetch or not.
Fix and add more features on the DMA PLX9054 transfers with chained DMA blocks if the block isn't contiguous.
On the M5484LITE, the Comm Bus is used for the transfers DMA <=> PCI, more than 100 MB/S with writing.
Beginning of AC97 audio driver tests, the reading of registers works but writing is not reliable. If the audio playback is started, nothing works, I see (with a command 'acpr' added to the debug) that some registers are put to the default value (like the sample frequency)!

2009 September. The PLX9054 has some limitations on his local PCI zones MEM and I/O who must be aligned with size and the same size, now the CT60 TOS has 3 targets :

With the last case, it's impossible to add an Ethernat board (no empty space in the CT60 mapping), but it's possible to install a Radeon with 256 MB and others PCI boards.
Dialog box for change the screen inside the desktop replaced with the same aspect than VIDEOCNF.CPX :

Add, with an extended bit inside the modecode, of all supported screens resolutions by the driver to the default modes XBIOS, now it's possible to get infinites combinations : Add texture functions using the Radeon from Xfree sources.
Try DVI monitors and the monitor detection from the I2C port in the radeon Driver.
Test of the Coldfire MCF5485 for support on the M5484LITE target, the M5485EVB board. Moved TOS program stored in the flash and his flash parameters for get a compatibility with the two boards (2MB boot flash on the M5485EVB and 4 MB boot flash on the M5484LITE).
Add support of the RTC RV5C387 on the M5485EVB by the I2C port of the Coldfire with a FreeRTOS task 'RTCd'.

2009 October. Now Mark Duckworth has an M5485EVB board, reorganization of the Radeon driver for multi-target graphic board, the M5485EVB has a FireEngine module more complete than the M5484LITE : the LynxEM+. Third parts now exists :

If the Radeon board isn't found, the LynxEM is used.
To be continued... I have no board.

2009 November. New integration of a PCI USB ohci/ehci driver, now the base of sources is u-BOOT.
I made the test on the M5484LITE with the USB NEC board using an D720101 who wait the CTPCI since 4 years. The PCI bus on the M5484LITE is at 50 MHz and the NEC specifications is for 33 MHz, but USB works !
The driver according to devices detected can add USB features to TOS like :

The mouse and keyboard use interrupts events.
For the USB stick(s), the modified BDOS allows to use DOS partitions (2 GB), the TOS can use only DOS partition with the limit of 16 MB.
The XHDI protocol must allow with the help of your favrite HD driver to format partitions in combinated mode (DOS/TOS).
But actually if the detection and initialization of multiples devices works, it is impossible to use more than one in the same time !
On Coldfire and on the Coldari target, if no graphic board are detected a Videl driver (256/65K/16M without planes) using the same fVDI resources that the graphics boards is started. With the extended modes of the projet ACP, this feature must allow to get the same screen sizes than the Radeon (or the Lynx).
Changes from the Coldari target with the latest specifications from Fredi Aschwanden (Mapping, RTC, Blitter, etc...).

2010 January. Begin the AES replacement by MyAES (thanks to Olivier Landemarre !), add internal file selector and dialog box.

2010 March. Incredible, I received the CTPCI !

2010 April. ABE7 is really reliable ? By 3 times I got hard disk problems (with 2 times lot of a partition, the 1st was before the Radeon installed).
Because the PLX9054 bridge is more slower than the Coldfire V4e, add a cold reset detection for start only in this case the VGA BIOS X86.
Activation of monitors detection on the Radeon.
Fix the change screen dialog box under the TOS desktop.
Inverted interrupt enable inside PCI BIOS (because Rodolphe has put some hardware changes).
Local PLX9054 interrupts cannot work (hardware bug without solution).
Recuced Malloc usage.
Add local stacks for the VBL, VDI, Mouse, and Bconout 2/5 routines.
Fix yellow icons bug (vq_color, thanks to Olivier Landemarre).
Fix randon freeze with Radeon fifo on some functions of the VDI (v_gtext and vrt_cpyfm).
Try DMA (PLX9054), after an hardware update of the ABE chip, writing to the PCI zone works (Kronos displays 1500 MB/S), but reading freeze the machine. Reading disabled inside the driver (hardware bug).
Try interrupts on a network RTL8139D card + Milan driver under MiNT without success (thanks to Patrice Mandin, hardware bug).
Modification of the USB2 board in 3V3, thanks Rodolphe.
Try bus mastering with the generic USB2 NEC board in STRAM and the Radeon offscreen RAM without success (hardware bugs).

2010 May. Removed the USB board and the network board who has finished by create parity errors and hide the Radeon, and after hide the CTPCI himself during PCI scan !
This is a TOS VDI comparison under Kronos :

Kronos test Radeon 9250 / CTPCI
PCI 33 MHz / CPU 95 MHz
Radeon 9250 / M5484LITE
PCI 50 MHz / CPU 200 MHz
VDI_CIRCLE 2352.941 (op/sec) 3943.662 (op/sec)
VDI_ARC 19900.990 (op/sec) 27164.179 (op/sec)
VDI_BAR 64477.612 (op/sec) 44250.000 (op/sec)
VDI_ELLARC 17700.000 (op/sec) 25200.000 (op/sec)
VDI_ELLIPSE 2142.857 (op/sec) 3582.090 (op/sec)
VDI_ELLPIE 455.696 (op/sec) 637.168 (op/sec)
VDI_PIESLICE 535.316 (op/sec) 802.974 (op/sec)
VDI_RBOX 15879.024 (op/sec) 19085.714 (op/sec)
VDI_PLINE 76866.995 (op/sec) 96280.000 (op/sec)
VDI_FILLAREA 823.318 (op/sec) 1390.909 (op/sec)
VDI_GTEXT 8840.000 (op/sec) 15020.000 (op/sec)
VDI_JUSTIFIED 8827.586 (op/sec) 5973.333 (op/sec)
VDI_BLITTING 39285.149 (op/sec) 44346.000 (op/sec)

Try and fix RADEON.SYS driver for fVDI (fvdi_040.prg 07 Dec 2006), charmap added since 2005 (old driver not compatible). This is a comparison between TOS VDI and fVDI under Kronos :
Kronos test Radeon 9250 / CTPCI
PCI 33 MHz / CPU 95 MHz
TOS VDI 1920x1080x32
Radeon 9250 / CTPCI
PCI 33 MHz / CPU 95 MHz
fVDI 1920x1080x32
VDI_CIRCLE 2352.941 (op/sec) 1682.243 (op/sec)
VDI_ARC 19900.990 (op/sec) 10500.000 (op/sec)
VDI_BAR 64477.612 (op/sec) 56898.000 (op/sec)
VDI_ELLARC 17700.000 (op/sec) 9411.765 (op/sec)
VDI_ELLIPSE 2142.857 (op/sec) 1565.217 (op/sec)
VDI_ELLPIE 455.696 (op/sec) 390.244 (op/sec)
VDI_PIESLICE 535.316 (op/sec) 466.019 (op/sec)
VDI_RBOX 15879.024 (op/sec) 7375.610 (op/sec)
VDI_PLINE 76866.995 (op/sec) 69980.392 (op/sec)
VDI_FILLAREA 823.318 (op/sec) 703.448 (op/sec)
VDI_GTEXT 8840.000 (op/sec) 7880.000 (op/sec)
VDI_JUSTIFIED 8827.586 (op/sec) 9142.857 (op/sec)
VDI_BLITTING 39285.149 (op/sec) 37571.707 (op/sec)

Fix BIOS PCI (thanks to Patrice Mandin).
Fix FLASH060 for update the CTPCI hardware (thanks to Christian Hellmuth).
Add prefered monitor screen to the XBIOS boot list :

Modification of MAGXBOOT (internal and external), now MagiC 6.10/6.20 use the VDI and the XBIOS of TOS (only for the Radeon driver, so no USB actually).
Fix target CTPCI1GB.BIN who was the same file than CTPCITOS.BIN, but after the fix not works (access fault).
Rewrite of open /close VDI workstation, before this routines was called inside the TOS.
New PCI tests for Rodolphe for see and solve DMA bugs.

2010 June. Moving boot sources to the version 2.0. Now the patchs are not build with the compiler (original idea of Xavier Joubert) but when the boot start. The patched TOS404 works only in SDRAM write protected by the PMMU, the orignial TOS404 is at the beginning of the flash. This schematic of work is nearest than the Hades. This system is better for solve the licences problems.
It's possible to load separate files for the TOS404, the boot and the PCI drivers :

The BOOT contains also the PCI BIOS who has an automatic configuration PCI space (with/without Supervidel/Ethernat) for get the maximum space (1GB) to the PCI zones (CTPCITOS.BIN et CTPCI1GB.BIN now are obsoletes). Before the CTPCI_1E.JED hardware, working was impossible, access between 0x60000000 and 0xBFFFFFFF was forbidden by Rodolphe.
Hardware update with CTPCI_1E.JED, FLASH060 works !
Removed hardware display version (ABE/SDR) at boot, stored in flash parameters, this feature caused troubles if another FALCON was used. FLASH060 displays always the hardware versions.
Automatic detection of some hardware versions during boot.
Automatic detection of monitors connected to the Radeon, the selection is possible with the CT60 configuration CPX and monitor layout (MON.1,MON.2) : Fix for italic text width inside the Radeon driver.
Writing of the CT60 frequency to the CTCM programmable clock generator before to start the PCI part (so the init of the VGA BIOS X86 is faster).
After some research, the main cause of Ethernet/USB problems comes from parity error detected, theses boards are at 33 MHz when the Radeon is at 66 MHz with a better signal tolerance to noises (source Rodolphe). If the PCI scan not displays parity errors, the USB NEC controller go to unrecoverable PCI error state later and/or detect ports who not exists.
Disconnect the pin 1 dof the CY2905 from the 33 MHz CTPCI oscillator, the PCI clock now arrives from a white wire from the clock generator (CT60 frequency /2, /3, or /4) :


Try to decrease the PCI clock at 20 MHz (CT60 at 80 MHz) without changes for the parity error on the USB. It is impossible to reduce the length of the 80 wires ribbon inside my tower without reverse all PCI boards. For now, the only one board who can works on the CTPCI is the Radeon, or all other graphic board if another driver arrives.
Try overclocking the PCI bus at 47 MHz (CT60 at 95 MHz), the pair Radeon / PLX9054 works always.

2010 July. Direct access to the Radeon register, it's faster.
Add user clock divider parameter to 2 at 6 for the CTCM, this is a comparison with Kronos :

Kronos test Radeon 9250 / CTPCI
PCI 31.66 MHz / CPU 95 MHz (/3)
TOS VDI
Radeon 9250 / CTPCI
PCI 47.5 MHz / CPU 95 MHz (/2)
TOS VDI
Radeon 7500 / M5484LITE
PCI 50 MHz / CPU 200 MHz
TOS VDI
VDI_CIRCLE 2469.136 (op/sec) 2469.136 (op/sec) 3750.000 (op/sec)
VDI_ARC 18916.256 (op/sec) 18916.256 (op/sec) 28656.716 (op/sec)
VDI_BAR 47304.000 (op/sec) 47477.228 (op/sec) 66882.000 (op/sec)
VDI_ELLARC 17227.723 (op/sec) 17227.723 (op/sec) 26100.000 (op/sec)
VDI_ELLIPSE 2253.521 (op/sec) 2253.521 (op/sec) 3396.226 (op/sec)
VDI_ELLPIE 472.131 (op/sec) 478.405 (op/sec) 620.690 (op/sec)
VDI_PIESLICE 566.929 (op/sec) 569.170 (op/sec) 779.783 (op/sec)
VDI_RBOX 16114.851 (op/sec) 16114.851 (op/sec) 16563.184 (op/sec)
VDI_PLINE 72676.617 (op/sec) 72676.617 (op/sec) 134460.000 (op/sec)
VDI_FILLAREA 900.000 (op/sec) 900.000 (op/sec) 1291.139 (op/sec)
VDI_GTEXT 8500.000 (op/sec) 8540.000 (op/sec) 15860.000 (op/sec)
VDI_JUSTIFIED 8296.296 (op/sec) 8334.884 (op/sec) 7255.061 (op/sec)
VDI_BLITTING 36611.765 (op/sec) 36611.765 (op/sec) 100362.000 (op/sec)
STRAM_READ 7.833 (MB/sec) 7.813 (MB/sec) 64.807 (MB/sec)
STRAM_WRITE 12.660 (MB/sec) 12.660 (MB/sec) 74.954 (MB/sec)
STRAM_MOVE 4.851 (MB/sec) 4.851 (MB/sec) 34.766 (MB/sec)
VIDEO_READ 5.870 (MB/sec) 7.078 (MB/sec) 37.038 (MB/sec)
VIDEO_WRITE 1530.998 (MB/sec) 1524.441 (MB/sec) 95.326 (MB/sec)
VIDEO_MOVE 1122.387 (MB/sec) 1122.387 (MB/sec) 2394.818 (MB/sec)

Sure, if you want this feature, you need to put a wire for the PCI clock on the OUT1 output (pin1 of the DS1085) of the CTCM :

Try to decrease the PCI clock to 16 MMhz (/6) for an ultimate USB test, but without success because the CT60 create an exception during access to the PCI zones (timeout too short).
Add monochrome emulation until 1024 x 768, the conversion in 256 colors use the Radeon during the VBL routine if the screen must be updated. With the actual PLX performances (no burst), the mode 640 x 400 in contiguous access (each VBL) use near than 50% of the CPU time (PCI bus at 33 MHz) :

2010 August. Rewrited CHGRES.PRG for MagiC.
SpeedoGDOS works but isn't stable (with/without CTPCI/Radeon there are cache problems, for example you get ramdom crashes with QED). For start it from the AUTO folder, you must disable the caches and enable again later. Add this feature inside the TOS.
Now TOS inside Vsetscreen check if the Radeon driver apply the real screen selected by the modecode, else update the modecode. You can see this feature with the 'Test' button inside VIDEOCNF.CPX.

2010 September. NVDI 5.03 works with the default boot screen. You must rename all NVDIDR*.SYS files inside the NVDI folder (thanks to Claude Labelle).
Add XBIOS patch for NVDI, now TOS overwrite NVDI XBIOS by setting the XBRA '_PCI' to the top list when NVDI is found. The Result : NVDI 5.01 works and you can change screen and get list of screens with Vsetscreen!
Fix TOS for get NVDI working with MagiC and the new CHGRES.PRG.
Add flash parameter and an option inside CT60CONF.CPX for add a debug output inside video.log.
Add a 2nd CTPCI test before apply patches and copy TOS in SDRAM because later when the PCI BIOS start, the CTPCI seems always detected ???
Fixed VDI bugs with function v_fillarea (line), v_rfbox (user pattern), and v_locator (thanks to Claude Labelle).
Fixed the VDI function v_contourfill used by lot of graphics applications (Note : This function is not implemented inside fVDI).

2010 October. Fix zero divide inside the clipping line routine.
Fix VDI function vrt_cpyfm in 65K colors.
Test for get working MagiC 6.20 / NVDI 5.
Now I wait the hardware problems fix for get working USB/Ethenet PCI boards...

PCI on the board FIREBEE :


2010 October. I contacted Fredi for continue my work on the 4th target, the Firebee (old project code name Coldari) paused in January.
Because I have no PC, the idea is to load the TOS with dBUG like the M5484LITE. So the first step is to rebuild dBUG for the FIREBEE :

The TOS use the FPGA videl emulation who has also extended modes. I replaced hardware Radeon routines by CPU routines in 256/65K/16M, but default fill fVDI routine is very slow.
The CompactFlash works in short data access.
I connected the Eiffel board by the RJ12 connector, but I got problem for send data to IKBD.
The interrupts on USB not works but Fredi is very fast for fix the problems. USB mouse and keyboard works!
Added the FPGA code to the link for load it by the TOS without flash the board.
The CTPCI documentation as HYP is in progress, thanks a lot to Sascha!
I buy a Radeon 9200 board for test the Firebee with the PCI BUS.

2010 November. Rewrited the default filling routine of fVDI with native Coldfire code, now it's faster. Monitor detection works with I2C interface.
Build a PCI passive backplane with the riser PCI and the unused 4th slot of the CTPCI, lot of wires to solder...


The Radeon 9200 board connected to the Firebee...

And the Radeon works, it's the fastest Atari computer, just 2 seconds for initialize the board with X86EMU!
I exchanged the Radeon 9250 and 9200 with my Falcon, because the Radeon 9250 powered by the Firebee use less power (total 2A at input).
Fredi has fixed clocks, now Ethernet and video modes are better and I can see the Eiffel version during boot!
Fixed NVM and flash parameters.
Put some changes inside FLASH060 for update the Firebee flash.
Put some changes inside the CF68KLIB for try to fix byte of stack feature of PURE C programs (incompatibility between Coldfire and 68K) :-(
Tried a 2.5 inches IDE drive on the IDE port, this port is mapped at 0xFFF00040! Fredi has put a bit for swap port with the CompactFlash like the CTPCI, the choice and boot order can be selected with CT60CONF.CPX. Now the IDE port works also in 32 bits data access.


The benchs on the Firebee/Radeon 9200 without DMA and the CompactFlash used for disk...

2010 December. Tried Floppy on the Firebee, reading works fine but not writing because the FPGA emulation is not complete for the AJAX controller of the FALCON.
Added SD-Card driver from Fredi sources.
Tried USB Mass Storage with OHCI and EHCI controllers of the NEC PCI chip on the Firebee. But USB sticks works only when the Radeon load the PCI BUS else I get timeout and unrecoverable PCI error like the M5484LITE.
Added some changes to BDOS for fix bug caused by 32KB clusters (2GB partitions).
If the BAS is installed, now it's possible to use ethernet without dBUG with some limitations (3 flash parameters used) :

Added for Ethernat the XC9572 to FLASH060.

2011 January-February. We are in 2011, and there are no news for fix hardware problems on the CTPCI :-(
Removed Linux AC97 sources. Rewrited and tried AC97 Coldfire driver on the Firebee (enabled also for the M5484LITE) :

On Coldfire targets added FPU emulation for immediates values.
Rewrited Aniplayer MP3 for the Coldfire (with MAC instructions there are 22% of average CPU load used).


Aniplayer with MP3 rewrited for the Firebee using GSXB AC97 driver...

2011 March. Fixed MP2 and MPEG Aniplayer playback for the Coldfire.
XBIOS Vsetscreen function tested all new modes for the Radeon board. Added and tried CMD_FILLMEM, CMD_COPYMEM, CMD_TEXTUREMEM and CMD_GETVERSION for XBIOS accel functions.
Added XBIOS Vsync function for the Radeon board.
Added rejection modes for clocks over 135 MHz who have heat isues with DVI on RV100 (Radeon 7000 boards).
VIDEOCNF.CPX, added video.cnf configuration file for XAAES.
Firebee target :

2011 April. Added accel sub functions CMD_LINEMEM, CMD_CLIPMEM, and CMD_SYNCMEM to the XBIOS Vsetscreen (Radeon).
On Coldfire targets added plug and play support for USB using a FreeRTOS task. But there are a problem when I connect the mouse or the keyboard the 2nd time, the result is 'Device Not Responding' before start again the mouse/keyboard driver. Added a fix who works with the mouse but seems not works with my keyboard. The USB stack use U-Boot sources, it's easier to use than Linux but there are some limitations.
Fixed also lot of bugs inside XHDI drivers (IDE boot and SD-CARD/USB drivers).

2011 May. Firebee target :

2011 June. Fixed an ugly bug with the VDI function vst_rotation on all targets.
Added sub function CMD_BLANK to the XBIOS Vsetscreen (Radeon), works also on Firebee with FPGA Videl ACP modes.
Added another boot menu and rescue features on the Firebee target :

On the Fireebee target, enabled XBIOS function Bconmap with device 6 is MFP, 7 is PSC0 who replace the SCC (default like a FALCON), this is the baud table for the function Rsconf (MFP and PSC0) :
Index0123456789101112131415
MFP1920096004800360024002000180012006003002001501341107550
PSC0192009600480036002400200018001200600300230400115200576003840015360076800

2011 July. Try to fix CT60 flash boot problems by reading until 4 times the TOS in flash if the CRC is bad, before apply the patches in SDRAM.
If the Supervidel is found, the TOS use the default Bconout routine who use the blitter.
Coldfire targets :

2011 August. Fixed offscreen_free.
Fixed port 5 change on USB EHCI controller.
Added alert message from USB.
On Coldfire V4e targets, added 'DMAC' cookie for external usage of the DMA.
AC97 driver started again a 2nd time (2nd warn reset) if there are an error (Firebee).
Added MiNT patch for his TOS < 2.0 IKBD interrupt routine for get compatibility with TOS 4.04 for USB2 using Kbdvbase().
On the Firebee target and TOS started from 'TOS404 for MiNT' boot menu entry, the FEC driver is stopped and his task killed when 'MiNT' cookie detected.
On M5484LITE/FIREBEE enabled XLB PCI interrupt.
Inside the CF68KLIB, removed fix_predecrement/fix_postincrement when address error arrives with MOVE.B/W/L (An)+, and MOVE.B/W/L -(An), with invalid addessing modes.
On the Firebee target, added 8 SCSI and 4 IDE device unselection via the CPX.
On the Firebee target, added fix for Device Errata 26, now USB Mass Storage works fine (PCI <=> Flexbus).
On the Firebee target, enabled XLB PCI interrupt, now abort create a level 7 interrupt redirected on access fault. So now access on unused spaces on PCI bus IO and MEM create an access fault.

2011 September. Added bus support inside the PCI BIOS, limits now are :

I received two PCI boards for test the changes inside the PCI BIOS, a PCI to PCIe adapter and an USB2 PCI express board.


The PCI/PCIe adapter with the USB2 PCIe board connected to the Firebee...

I tried also without success theses two boards with the CTPCI. Rodolphe has no free time actually for fix the hardware bugs (arbitration and/or DMA).

2011 October-November. Fixed invalid IDE call possible (wrong device) inside boot routine after SCSI drives detection (for example with ALT key I got crash). This bug is very old, but since the CTPCI, the IDE routine is ready for a 2nd port and this 2nd port is not implemented in the current hardware so it's possible to get a crash (invalid access to a 2nd CTPCI IDE port).
On all targets, added ATAPI devices to SCSIDRV. FIREBEE and FALCON with CT60/CTPCI has IDE and IDE2 (IDE not compatible). SCSI cookie added before hard disk driver boot sequence.
Added SCSI CD driver for boot with Extendos CD-backups and ISO9660 CD driver for restore features with a popup menu during boot when a CD/DVD is found.
Added LZMA encoder/decoder for a better compression of the drivers.

2011 December. On Firebee target, added 'PEXE' cookie, this value is a pointer who use a basepage as parameter on stack for try to patch Pure C program with an external OS.

2012 February. Since January, Rodolphe work again on the CTPCI :-)
Added FreeRTOS on CT60/CTPCI target and the USB HUB task.
On CTPCI fixed PEND register bits test inverted, and finally revoved this test who can caused loop inside a PCI interrupt
Tried again, with the latest jedec file for the CTPCI (CTPCI_1L), the PCI/PCIe adapter and the USB2 PCIe board. It's better, interrupts works fine and the ethernet OZK RTL8139 driver runs, but I have freezes with ethernet and the USB Mass Storage (most of time when the DMA writes to the local RAM). Add delays loops seems reduce problems but slow down transfers, for example on USB you must replace the 1uS delay between two status register reading by a 10 mS delay, and for ethernet I used (just for test) an interrupt task with the OZK RTL8139 driver who add a delay after the interrupt. It's not a reliable solution for a final release (too hardware dependent).

2012 March. CT60/CTPCI target:

2012 April. On CT60/CTPCI target, added workaround for freeze (seems a deadlock) with a new XBIOS function ctpci_dma_lock (from PCI BIOS) for hardware workaround (actually not ready, Rodolphe is busy with is job). The XBIOS function is empty because I need infos from Rodolphe (a new CTPCI register).

2012 May. On the CT60/CTPCI target the FEC driver is stopped and his task killed when 'MiNT' cookie detected.
Writed RTL8139 drivers XIF for MiNT and STX for Sting (TOS can use internal LwIP driver).
Rewrited conout routines in C for Videl or graphic card (planes or without planes, with or without accel routines from drivers part). TOS404 VT52 routines table at 0xE13268 used, theses routines use the A4 register as Line A pointer. Not used on Coldfire targets, there are a crash when screen changed.
Added 5 retry loops to IKBD keyboard test, must fix Firebee disabled interrupt keyboard problem (remember that you must disable IKBD interrupts when RJ11 is not connected for remove null bytes interrupts feature who slow down the CPU).
Fixed telnet server, added on CT60/CTPCI target.

2012 June. Added IDE LBA 48 support (reduced to 32 bits for the XBIOS) on all targets excepted the M5484LITE (because the bugged equations inside the CPLD need 16 bits access on IDE registers).

2012 July-August. I worked again on a VNC server solution (the idea was in 2007 December!), but not inside the TOS (not enough space).
His name is aVNCServ, this is the features :

Download for Firebee or CT60/CTPCI/Radeon : avncserv.tgz

2012 September. On CT60/CTPCI target, added option for disable XHDI and SCSIDRV installed by the TOS (via CPX setting and flash CTPCI parameter).

2012 November. Added some features on the Firebee target :

Hardware update with the latest jedec file CTPCI_1N.JED, but the hardware dma lock workaround not fix the problems with USB Mass Storage transfers or an Ethernet PCI board.

2012 December. Inside lwIP, replaced the semaphore used by select() by interrupts masked (faster).
Added the basic web server to the CT60 target, the idea is to update the flash with the TOS himself like the Firebee. Moved port used to 8080.
Fixed bug with US USB keyboard (not french or german), where shift_table and altgr_table are NULL.

2013 January. Firebee target :

Added monochome Videl support (VT52 and VDI) on Coldfire targets from monochome emulation for Radeon. The idea is to increase boot speed like the Hades.

2013 February. On the Firebee target, some fix again for use Emutos from the TOS boot :

2013 May. Rodolphe actually have no time to continue on CTPCI.

2013 June. Build official Aniplayer 2.23 for MP3 decoding on Firebee using V4e MAC instructions and also for use the VIDIX interface and play YUV videos output formats in fullscreen on the Radeon.


Archive Version Size Computer
TOS drivers tos_drivers.lzh 1.01 2011 July 27 2756 KB CTPCI/FIREBEE