Supercharger

Version Française



I like it, and don't know why.
Have a look at the Supercharger Plus
The never released x286 extension!

Some DOS programs I wrote with executables and sources.


What is it for? What's in the box?
  1. A PC XT Emulator
  2. A Ramdisk 1Mo
  3. A parallel coprocessor working with the 680x0.
  4. Test your FPU 8087.
  5. 10 Mhz overclocking.
It's a box inserted in the DMA/ACSI chain. The mother board is built around a NEC V30 8Mhz (the best 8086 compatible), a slot for a FPU 8087 and 1Mb RAM. It's a really good PC XT emultor.

A "parasite" card on the Atari:
  1. CPU NEC V30, 8MHz (8086 enhanced), I pushed it up to 10MHz replacing the 24MHz clock with a 30 one.
  2. 1MB Ram
  3. optional 8087, I have it!
  4. Graphic modes CGA (320x200 or 640x200) and Hercules (720x348)
  5. supports mouse, serial, parallel
  6. Supports Atari and Ms-dos floppies (360K to 1.44M)
  7. Supports Atari partitons < 16 Mo
  8. Can create and use a MS-DOS bootable partition



Working as an emulator:

Pushing it to its limits, you can make it work with PC DOS 7, a MS-DOS 6.22 clone. It also can run the PC GEM system, similar to TOS GEM but in an older version.

Publisher, PC Gem system,
Hercules mode.


You can also use Windows 2.03. For that last, I couldn't find any software except the Othello game and the Write text editor. This means that you can type your text with proportional fonts and print it with your Supercharger. Well, but... there is Windows 3.00a that is no problem!

Windows 3.0 running Write,
the control panel and my setup.


The global reactivity is really correct, only some problems with th double clic. I have to clic once and to use Enter to validate my choice.

Games with Windows 3.0,
8 balls in JezzBall
and it's not over!


These are the common programs I used succesfully: maths (Derive, Cabri Géomètre, SMAO), programming (Turbo Pascal 6, Turbo C 2, Quick basic, A86, Logo), tools (pkzip, RAR, LHA, Pctools, disk compression with Stacker).



Working as a RamDisk:

A little tool came with the Supercharger turning it into a 1Mb unit. When you have a hard disk, this is not worth. But with a simple ST, it gives you a real comfort when you copy files, when you uncompress a ZIP or if you want to keep your Speedo/NVDI fonts always accessible. I have been able to use Script or Atari Works with one floppy and the Supercharger.



Working as a coprocessor:

It's the "top" use of it. The NEC V30 and the 680x0 can work together and exchange data. This requieres a bit of Intel programming... that can be the "bad" side of it.
I wrote some articles about this system (in french), download them.
You'll surely want to get the programs that illustrate the articles.



An example: on the Atari side


The FORTH provides some dialog instructions with the Supercharger. This is how to do:
  • Install the routines from TOOL_BOX.BIN and then boot the system with sc_load and sc_boot
  • Load the PC program, send it to the NecV30 using sc_sendm and sc_exec
  • Dialog with the program, exchange data using, for example, sc_xsendm and sc_xgetm
  • Terminate and uninstall the routines with sc_unload
Download
the source
code.
The word install loads the Tool_Box using sc_load.

If everything is OK then sc_boot installs the system on the PC side and initializes the dialog.

Last, the word verif is called, it uses sc_check to check that the installation is correct.
It returns the Tool_Box's version number (currently 1.50).
A buffer is required in ST-Ram, this because transferring data to the SuperCharger uses the DMA that can't access the TT-Ram.

The word pc_prog loads into the bbuffer a binary file A_FPU (see below "On the PC side") containing the x86 program.

This program is sent to the NecV30 thanks to sc_sendm. Note the address format 0x0300000 corresponding to segment=0x0300 and offset=0x0000, this is address 0x3000 for the PC.

Then it is executed using sc_exec, note that this instruction is given the start address of the program.

If everything is OK, the word ends with an execution message.
The word racine (root in french) takes a real number from the stack, stores it using if! (Intel Float Store) because on the PC side the byte order is reverted.

The eight bytes of the real number are sent using sc_xsendm.

Then, it's the PC program that computes the square root.

The eight bytes of the result are taken back using sc_xgetm and reordered with if@ (Intel Float Recall).

On the right, the execution window with computation of the square roots of 1024 and 3.

On the PC side


To build the PC program, the best is to use the assembly language to call the interruption int 60h that is the mirror of every call using the Trap #4 on the Atari. One can type and compile the x86 source directly from the FORTH's editor/interpreter that provides this facility. This way, all parts of this project are managed from a single window.

The directive >export allows you to save the following lines as a text into "A_FPU.S" until the directive >comp is encountered.

At start, the ToolBox initializes the Code Segment (CS), this one is copied into ES and DS to access data. Then, Finit initializes the FPU.

The call Int 60h with ah=4 is the "receive data" of the eight bytes that are stored into variable real.

Then, this real is loaded into the fpu, its absolute value and then its square root are computed and the result is stored back into real.

Finally, the call int 60h with ah=5 corresponds to "send data" of the eight bytes of the variable real.

This code is assembled by the external assembler NASM.TTP that is called by the directive >exec. It will output the binary file A_FPU loaded by the word pc_prog.




Test your FPU 8087:

Hard to know if an application uses your brand new FPU 8087. Here is a little program that actually uses the FPU (asm source code is included). It calculates and draws an image of the Mandelbrot fractal in CGA or Hercules mode.
For CGA, type setvideo C and run fractcga.com.(Runs on any PC, even under Windows XP!)
For Hercules, type setvideo H and run fracther.com.


Here is the result in CGA
after a quarter of an hour
(depth 240, not improved
with the visible symetry
to be adaptable
to other coordinates)
.


10MHz overclocking:

You just have to unsolder the initial 24MHz quartz and to replace it with a 30MHz one. That's what I did. But I wanted to go farther and made a complicated system with a switch and 3 quartz: 24MHz to get the original speed, 30 to get 10MHz and 36 to get 12MHz. This system was a bit unstable, so I only let one quartz in it. But, I put a fan over the CPU and FPU. This is very stable with a TT overclocked to 48MHz.



15 décembre 2007