English Amiga Board Amiga Lore


Go Back   English Amiga Board > Support > support.WinUAE

 
 
Thread Tools
Old 13 February 2017, 13:26   #1
BlankVector
Registered User
 
Join Date: Jun 2012
Location: Paris, France
Posts: 148
fVDI driver for WinUAE (Atari / EmuTOS)

Hello.

You may remember EmuTOS. It is an alternate operating system for Atari computers, which also works on Amiga hardware. It is compatible with Atari TOS, so it is able to run some Atari ST software on Amiga. It is not a hardware emulator: software which uses the Atari hardware directly (=99.9% of games) will never work. However, clean software which only uses OS calls work nicely. Unfortunately, due to hardware differences, video support was limited to monochrome.

Today I announce that I have written an fVDI driver for WinUAE, named UAEGFX.SYS. Basically, fVDI is for Atari systems what Picasso96 is for AmigaOS: a system of graphics drivers to allow usage of third-party graphics cards by the OS.

UAEGFX.SYS allows fVDI to use WinUAE RTG video modes, including hardware acceleration. Currently, it is limited to 16-bit RGB565 modes, with any resolution. But it could be extended to other modes in the future.

You can see the result there. EmuTOS is running behind the scenes. Then the FreeMiNT kernel provides a multitasking environment, and fVDI + UAEGFX.SYS allow decent video modes.

Drawback: this requires proper AUTOCONFIG configuration of Zorro cards. Currently, EmuTOS does not know how to do that by itself. It can do that with the help of AROS routines, but the resulting ROM can't be redistributed due to license incompatibility. However, it is OK if you build such ROM yourself from EmuTOS sources. I plan to fix that issue in a not-so-far future. Toni has already offered help for that, thanks to him. This will just take some time to glue everything together.

Downloads:
- EmuTOS (all variants, except AROS support)
- WinUAE driver for fVDI

I also plan to provide an full distribution of the whole thing some day, but that will take even more time.

Anyway, this is a big step forward
BlankVector is offline  
AdSense AdSense  
Old 13 February 2017, 14:39   #2
Locutus
Registered User

 
Join Date: Jul 2014
Location: Finland
Posts: 714
Thanks!

I will definitely play with this
Locutus is offline  
Old 13 February 2017, 15:28   #3
Toni Wilen
WinUAE developer
 
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 42
Posts: 19,542
You should first check for autoconfig board 6502/1, if it exists and is 128k or larger: "UAE ROM" is located at board base + 65536. This gets enabled if ROM panel board type is "New". (This will become default in the future)

Non-autoconfig version is only kept for backwards compatibility.
Toni Wilen is offline  
Old 13 February 2017, 16:09   #4
BlankVector
Registered User
 
Join Date: Jun 2012
Location: Paris, France
Posts: 148
Currently, I call everything through uaelib_demux(), and it works fine with the EmuTOS ROM (with AROS/AUTOCONFIG enabled).
I also tried the EmuTOS floppy with an Amiga Kickstart. I expected that to work, but instead I got a menacing message about obsolete API... so I suspected it was not really the new way to go.

I remember having tried once the new method to call WinUAE Picasso96 functions from EmuTOS/fVDI. But this was much more complicated, because EmuTOS lacks AmigaOS components required for initialization. IIRC, I needed to create a fake minimal Exec library in EmuTOS, with just enough functionality for the RTG to initialize. The new WinUAE RTG mechanism is very well integrated to AmigaOS, which makes it complicated to use from another OS.
BlankVector is offline  
Old 13 February 2017, 16:29   #5
Toni Wilen
WinUAE developer
 
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 42
Posts: 19,542
If you can put something obviously invalid at address 4.L (zero or -1 for example), I can check it and skip all Amiga specific stuff.

"Obsolete" message appears if "old" API is called after something else has already used "new" API.
Toni Wilen is offline  
Old 13 February 2017, 16:47   #6
BlankVector
Registered User
 
Join Date: Jun 2012
Location: Paris, France
Posts: 148
Quote:
Originally Posted by Toni Wilen View Post
If you can put something obviously invalid at address 4.L (zero or -1 for example), I can check it and skip all Amiga specific stuff.
That would be a nice cooperation
You could also properly detect the EmuTOS ROM. There is the string 'ETOS' at offset 0xfe. Long ago, I moved the entry point to 0xd2 for BlizKick compatibility. So there is plenty of unused space before address 0xd0, if we want to do clean things.

Quote:
Originally Posted by Toni Wilen View Post
"Obsolete" message appears if "old" API is called after something else has already used "new" API.
I suspected something like that.
BlankVector is offline  
Old 13 February 2017, 16:57   #7
Toni Wilen
WinUAE developer
 
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 42
Posts: 19,542
I prefer not to have OS-specific checks but some generic way to detect "alien OS", even if it is loaded from disk or HD (like netbsd/linux/etc) and KS ROM is still installed.
Toni Wilen is offline  
Old 13 February 2017, 17:44   #8
Toni Wilen
WinUAE developer
 
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 42
Posts: 19,542
I think easiest way to identify "alien user" is to fill PSSO_BoardInfo_ExecBase with -1 before calling FindBoard?
Toni Wilen is offline  
Old 13 February 2017, 18:26   #9
BlankVector
Registered User
 
Join Date: Jun 2012
Location: Paris, France
Posts: 148
Sure, this would be very easy
While 0 as NULL pointer would also be a good option.
BlankVector is offline  
Old 13 February 2017, 20:28   #10
Toni Wilen
WinUAE developer
 
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 42
Posts: 19,542
NULL works fine too.

Could you attach/mail/link/something two versions that are ready-made: one that has "exec emulation" (so that I can see how it should work) and second that has null execbase in BoardInfo and no "exec emulation".

Because I am too lazy to find out how to use this driver and I can't fix anything without complete test case
Toni Wilen is offline  
Old 13 February 2017, 22:42   #11
BlankVector
Registered User
 
Join Date: Jun 2012
Location: Paris, France
Posts: 148
I have just found my 3 years old notes about that "exec emulation". The only function I had implemented was MakeLibrary, as callback. This way I got the addresses of openfunc, closefunc, expungefunc, EXPANSION_nullfunc, findcardfunc, initcardfunc, etc. I didn't go further. This is just a few pieces of code, nothing usable. Now I realize that if I had used Git at that time, I would probably have kept that mess in an experimental branch.

For memory, the current working glue between UAEGFX.SYS and uaelib_demux() is there:
https://github.com/vinriviere/fvdi/b...aegfx/uaelib.c

As I understand, this may stop working some day. But before switching to something more modern, I will have to deal with AUTOCONFIG first.
BlankVector is offline  
AdSense AdSense  
 


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools

Similar Threads
Thread Thread Starter Forum Replies Last Post
EmuTOS for Amiga BlankVector News 200 13 September 2017 22:22
IDE trouble with 68060 + EmuTOS BlankVector support.WinUAE 6 28 June 2016 01:28
ROM requires a 68020 with EmuTOS BlankVector support.WinUAE 8 09 June 2016 09:43
We NEED something like EmuTOS Antiriad Amiga scene 10 25 June 2012 00:21
AHI driver for WinUAE ? Tex support.WinUAE 9 06 May 2003 14:19

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +2. The time now is 03:34.


Powered by vBulletin® Version 3.8.8 Beta 1
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Page generated in 0.25429 seconds with 11 queries