English Amiga Board

English Amiga Board (http://eab.abime.net/index.php)
-   News (http://eab.abime.net/forumdisplay.php?f=29)
-   -   Warp Engine SCSI driver converted for PP&S Zeus 040 (and others) (http://eab.abime.net/showthread.php?t=91027)

Toni Wilen 28 February 2018 19:51

Warp Engine SCSI driver converted for PP&S Zeus 040 (and others)
 
And now something totally different: MacroSystem Warp Engine warpdrive.device SCSI driver converted to other 53C710 based SCSI controllers.

This quick project started when I saw request from wmaciv asking for working PP&S Zeus 040 SCSI driver. Official driver is quite bad, it uses all CPU time and is quite buggy.
I took the challenge because technically it should be easy (and it was!), 53C710 is all-in-one SCSI chip, no external DMA or other hardware needed so the "only" task was remapping 53C710 registers.

There was two obvious choices for driver, A4091 or Warp Engine. I chose Warp Engine because Warp Engine ROM driver is in normal relocatable executable format (+small loader) which made it easy to disassemble. Note that 53C720 is too different and can't be used with 53C710 driver or vice versa. All later variants (including 53C8xx) are fully or almost compatible with 53C720.

Executable version (run it in shell, drives get detected and partitions mounted) Zeus 040 driver was quickly done under emulation (I don't have Zeus 040) and surprisingly it worked perfectly on real hardware too (I didn't really expect it..). ~8M/s speed using SCSI2SDv6 with over 90% CPU availability.

Next step was ROM version (not yet tested, Zeus 040 has unusual ROM chip package size). And finally I also did two mostly useless versions: one for A4091 and another for A4000T built-in SCSI.

Included drivers:

warpdrive_a4000t: Executable/rommable A4000T driver.
warpdrive_a4091.rom: A4091 ROM driver. (No executable version because A4091 does not have no-autoboot jumper)
warpdrive_zeus040: Executable Zeus 040 driver.
warpdrive_zeus040.rom: Zeus 040 ROM driver (needs odd/even splitting).

A4091 and A4000T drivers are emulation only tested but I expect them to work because Zeus 040 driver worked perfectly fine on real hardware :)
Ignores SCSI ID/mode jumpers: ID=7, 100ns sync mode (fastest possible).
ROM version mode can be changed if needed by changing single value using hex editor.
Executable versions take optional parameter (0 to 7) which matches Warp Engine K, J and H jumper setting.

Currently only uploaded to the zone (warpengine_driver_hacks.zip). If spreading hacked files based on 3rd party drivers is not ok, I'll replace them with patches against Warp Engine ROM image.

gulliver 28 February 2018 20:19

Really outstanding work!

Does this new set of drivers provide any additional feature or better reimplementation in any aspect than the original drivers?.

I ask this because your response might persuade A4000T/A4091 owners to update.

Anyway, as mentioned, despite I dont have any of those devices I can truly apreciate any development going that route. Thanks.

Toni Wilen 28 February 2018 20:33

Quote:

Originally Posted by gulliver (Post 1223203)
Does this new set of drivers provide any additional feature or better reimplementation in any aspect than the original drivers?.

I don't know if it is better than original A4000T/A4091 driver. Someone needs to test it. (I only have broken A4091) I only made them because it was very easy. Main goal was Zeus 040 driver replacement.

Romanujan 28 February 2018 22:37

Why running version command on the A4000T driver prints out version 40.-1?

dannyp1 01 March 2018 03:31

I believe the most recent WarpDrive.device was version 40.66. I wonder if Toni is keeping this version number or if it will be changed because of changes he's made.

Toni Wilen 01 March 2018 08:28

I get 40.66. (EDIT: short answer to short question without any details, run it in shell? In rom? and so on..)

Romanujan 01 March 2018 18:48

Sorry, I was imprecise. Driver not installed (not in ROM, no LoadModule used, etc.) - just open the shell, go to the directory with a driver file and type:

Code:

version warpdrive_a4000t

grelbfarlk 01 March 2018 21:34

I looked in the zone but I don't see the file. I could check A4091 version.

Toni Wilen 01 March 2018 22:12

Quote:

Originally Posted by grelbfarlk (Post 1223491)
I looked in the zone but I don't see the file. I could check A4091 version.

It is currently 3rd file, impossible to miss..

Quote:

Originally Posted by Romanujan (Post 1223449)
Sorry, I was imprecise. Driver not installed (not in ROM, no LoadModule used, etc.) - just open the shell, go to the directory with a driver file and type:

Code:

version warpdrive_a4000t

It means nothing, it is not a driver but loader that creates the driver in memory. Version probably guesses something.

grelbfarlk 01 March 2018 22:23

Quote:

Originally Posted by Toni Wilen (Post 1223506)
It is currently 3rd file, impossible to miss..

Sorry I was looking in the ftp The Zone folder. Found it, will report back.

alexh 02 March 2018 09:39

I wonder if this driver would be any better than the one included with the A2000 CSA Magnum 040/4? I remember people complaining it was "strange".

I don't have one. Just noticed that it has the same SCSI chip.

chiark on this forum used to have one but he sold it to a regular member of Amibay called Tahoe.

Toni Wilen 02 March 2018 11:00

Quote:

Originally Posted by alexh (Post 1223592)
I wonder if this driver would be any better than the one included with the A2000 CSA Magnum 040/4? I remember people complaining it was "strange".

I don't have one. Just noticed that it has the same SCSI chip.

chiark on this forum used to have one but he sold it to a regular member of Amibay called Tahoe.

I'll ask. ROM dump is needed to find out how the SCSI chip (and other hardware) is mapped to address space.

mark_k 02 March 2018 19:18

ROM dump probably wouldn't be needed for that. You should be able to test with the disk-loadable driver. (Also, a version of the driver can be loaded to RDB LSEG blocks, presumably the actual ROM is just a tiny loader.)

btw there are a few useful tools on the software disk that aren't Magnum-specific. In C/CSA:
Code:

asi        Amiga System Information. Display expansions, libraries, memory list,
creg        Read 40/4 Magnum Control Registers
DRAM        Configure DRAM Controller
DROM        Remap Kickstart ROM into Magnum DRAM
inq        Issue INQUIRY. Magnum-specific?
rdb        Display RDB info, also has a "-fixnexus" option "fix LSEG blocks written by Nexus". Magnum-specific?
rw        Read/Write memory
sad        SCSI Access (Driver) Program. Issue TEST UNIT READY, READ CAPACITY, REQUEST SENSE, INQUIRY, MODE SENSE, display RDB structures


Toni Wilen 02 March 2018 20:42

Some updates coming soon, 53C710 timing parameter register settings aren't exactly right.

Quote:

Originally Posted by mark_k (Post 1223712)
ROM dump probably wouldn't be needed for that. You should be able to test with the disk-loadable driver.

Yes but testing is more annoying.. And I also want something back :)

EDIT: and ROM replacement is impossible without original ROM image.

mark_k 04 March 2018 19:33

I've uploaded some notes/info about the CSA 40/4 Magnum to The Zone. Figured out from looking at various programs on the software disk.

Toni Wilen 18 March 2018 16:05

Update uploaded.

- CSA Magnum 40/4 supported. (Thanks Tahoe) Due to hardware stability problems it is not real hardware tested.
- Removed duplicate strings and some unused code.
- Fixed timing values.
- Readme included.

chiark 19 March 2018 23:08

Glad Tahoe's still got the board :D ! Brilliant stuff, Toni.

grelbfarlk 10 October 2018 01:05

Toni, I'm finally getting around to trying the A4091 driver, am I understanding you correctly that I need to burn this to a ROM to test it?
*EDIT*
Burnt a ROM, seems to basically work.

Will do some testing, all I have on this system at the moment is an SFS drive and an A3660 with Speedgeek's 030 state machine.


All times are GMT +2. The time now is 10:39.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2018, vBulletin Solutions Inc.

Page generated in 0.04383 seconds with 10 queries