It has a Paradidse PVGA1A chip and 256KB of memory. As far as I know PVGA1A was the first consumer oriented chip having higher modes than standard VGA, like 256 colors at 640x400 and 16 colors at 800x600 on all cards and 256 colors at 640x480 on cards with 512KB of memory. It was like the first SUPER VGA but at that time it was called VGA Plus...
Olivetti GO481 is made for 16 bit slots but can work on 8 bit ones removing jumpers PN1 and PN2. One enables 8 bit RAM and other 8 bit ROM.
In some cards (I've 2) those jumpers are not present and were replaced each one by 2 solder spots joined by a small trace.
Seems that you can cut this trace between spots to make 8 bit card and solder a a SMD jumper (zero ohm smd resistor) to make a 16 bit card again if it comes already modified.
This card is getting expensive so I don't recommend to modify it, there are some Trident and Realtek cards with 8/16 bit autosense or with jumpers at lower prices.
I won't make the BIOS image available to download anywhere, for users with the real card it's easy to dump, but BIOS from other PVGA1A cards should work also, like VGA BIOS from Amstrad PC2086 and PC3086, won't be an Olivetti card but will be a PVGA1A if you like that chip or have some software requiring it.
I noticed that emulated PVGA1A is incorrectly identified as WD90C20 or WD90C22 by most software...
Code: Select all
diff -r -u go481//ibm.h src//ibm.h
--- go481//ibm.h 2017-08-06 18:43:24 +0000
+++ src//ibm.h 2017-08-06 09:39:52 +0000
@@ -424,10 +424,10 @@
ROM_IBMPS1_2121,
ROM_AMI386DX_OPTI495,
ROM_MR386DX_OPTI495,
- ROM_IBMPS2_M30_286,
- ROM_IBMPS2_M50,
- ROM_IBMPS2_M55SX,
- ROM_IBMPS2_M80,
+ ROM_IBMPS2_M30_286,
+ ROM_IBMPS2_M50,
+ ROM_IBMPS2_M55SX,
+ ROM_IBMPS2_M80,
ROM_MAX
};
@@ -442,29 +442,28 @@
GFX_CGA = 0,
GFX_MDA,
GFX_HERCULES,
- GFX_EGA, /*Using IBM EGA BIOS*/
- GFX_TVGA, /*Using Trident TVGA8900D BIOS*/
- GFX_ET4000, /*Tseng ET4000*/
- GFX_ET4000W32, /*Tseng ET4000/W32p (Diamond Stealth 32)*/
- GFX_BAHAMAS64, /*S3 Vision864 (Paradise Bahamas 64)*/
- GFX_N9_9FX, /*S3 764/Trio64 (Number Nine 9FX)*/
- GFX_VIRGE, /*S3 Virge*/
- GFX_TGUI9440, /*Trident TGUI9440*/
- GFX_VGA, /*IBM VGA*/
- GFX_VGAEDGE16, /*ATI VGA Edge-16 (18800-1)*/
- GFX_VGACHARGER, /*ATI VGA Charger (28800-5)*/
- GFX_OTI067, /*Oak OTI-067*/
- GFX_MACH64GX, /*ATI Graphics Pro Turbo (Mach64)*/
- GFX_CL_GD5429, /*Cirrus Logic CL-GD5429*/
- GFX_VIRGEDX, /*S3 Virge/DX*/
- GFX_PHOENIX_TRIO32, /*S3 732/Trio32 (Phoenix)*/
- GFX_PHOENIX_TRIO64, /*S3 764/Trio64 (Phoenix)*/
- GFX_INCOLOR, /* Hercules InColor */
- GFX_OLIVETTI_GO481, /* Olivetti GO481 PVGA1A (16 bit card with jumpers to enable 8 bit slot compatibility) */
- GFX_COLORPLUS, /* Plantronics ColorPlus */
- GFX_WY700, /* Wyse 700 */
- GFX_GENIUS, /* MDSI Genius */
- GFX_MACH64VT2, /*ATI Mach64 VT2*/
+ GFX_EGA, /*Using IBM EGA BIOS*/
+ GFX_TVGA, /*Using Trident TVGA8900D BIOS*/
+ GFX_ET4000, /*Tseng ET4000*/
+ GFX_ET4000W32, /*Tseng ET4000/W32p (Diamond Stealth 32)*/
+ GFX_BAHAMAS64, /*S3 Vision864 (Paradise Bahamas 64)*/
+ GFX_N9_9FX, /*S3 764/Trio64 (Number Nine 9FX)*/
+ GFX_VIRGE, /*S3 Virge*/
+ GFX_TGUI9440, /*Trident TGUI9440*/
+ GFX_VGA, /*IBM VGA*/
+ GFX_VGAEDGE16, /*ATI VGA Edge-16 (18800-1)*/
+ GFX_VGACHARGER, /*ATI VGA Charger (28800-5)*/
+ GFX_OTI067, /*Oak OTI-067*/
+ GFX_MACH64GX, /*ATI Graphics Pro Turbo (Mach64)*/
+ GFX_CL_GD5429, /*Cirrus Logic CL-GD5429*/
+ GFX_VIRGEDX, /*S3 Virge/DX*/
+ GFX_PHOENIX_TRIO32, /*S3 732/Trio32 (Phoenix)*/
+ GFX_PHOENIX_TRIO64, /*S3 764/Trio64 (Phoenix)*/
+ GFX_INCOLOR, /* Hercules InColor */
+ GFX_COLORPLUS, /* Plantronics ColorPlus */
+ GFX_WY700, /* Wyse 700 */
+ GFX_GENIUS, /* MDSI Genius */
+ GFX_MACH64VT2, /*ATI Mach64 VT2*/
GFX_MAX
};
diff -r -u go481//vid_paradise.c src//vid_paradise.c
--- go481//vid_paradise.c 2017-08-06 18:31:00 +0000
+++ src//vid_paradise.c 2017-08-06 09:39:52 +0000
@@ -1,6 +1,6 @@
/*Paradise VGA emulation
- PC2086, PC3086, GO481 use PVGA1A
+ PC2086, PC3086 use PVGA1A
MegaPC uses W90C11A
*/
#include <stdlib.h>
@@ -337,18 +337,6 @@
return paradise;
}
-static void *paradise_pvga1a_oli_go481_init()
-{
- paradise_t *paradise = paradise_pvga1a_init();
-
- if (paradise)
- rom_init_interleaved(¶dise->bios_rom,
- "oli_go481_lo.bin",
- "oli_go481_hi.bin",
- 0xc0000, 0x8000, 0x7fff, 0, MEM_MAPPING_EXTERNAL);
- return paradise;
-}
-
static void *paradise_wd90c11_megapc_init()
{
paradise_t *paradise = paradise_wd90c11_init();
@@ -411,17 +399,6 @@
paradise_close,
NULL,
paradise_speed_changed,
- paradise_force_redraw,
- paradise_add_status_info
-};
-device_t paradise_pvga1a_oli_go481_device =
-{
- "Paradise PVGA1A (Olivetti GO481)",
- 0,
- paradise_pvga1a_oli_go481_init,
- paradise_close,
- NULL,
- paradise_speed_changed,
paradise_force_redraw,
paradise_add_status_info
};
diff -r -u go481//vid_paradise.h src//vid_paradise.h
--- go481//vid_paradise.h 2017-08-06 18:29:47 +0000
+++ src//vid_paradise.h 2017-08-06 09:39:52 +0000
@@ -1,4 +1,3 @@
extern device_t paradise_pvga1a_pc2086_device;
extern device_t paradise_pvga1a_pc3086_device;
extern device_t paradise_wd90c11_megapc_device;
-extern device_t paradise_pvga1a_oli_go481_device;
diff -r -u go481//video.c src//video.c
--- go481//video.c 2017-08-06 18:35:41 +0000
+++ src//video.c 2017-08-06 09:39:52 +0000
@@ -52,33 +52,32 @@
static VIDEO_CARD video_cards[] =
{
- {"ATI Graphics Pro Turbo (Mach64 GX)", "mach64gx", &mach64gx_device, GFX_MACH64GX},
- {"ATI Video Xpression (Mach64 VT2)", "mach64vt2", &mach64vt2_device, GFX_MACH64VT2},
- {"ATI VGA Charger (ATI-28800)", "ati28800", &ati28800_device, GFX_VGACHARGER},
- {"ATI VGA Edge-16 (ATI-18800)", "ati18800", &ati18800_device, GFX_VGAEDGE16},
- {"CGA", "cga", &cga_device, GFX_CGA},
- {"Cirrus Logic CL-GD5429", "cl_gd5429", &gd5429_device, GFX_CL_GD5429},
- {"Diamond Stealth 32 (Tseng ET4000/w32p)", "stealth32", &et4000w32p_device, GFX_ET4000W32},
- {"Diamond Stealth 3D 2000 (S3 ViRGE)", "stealth3d_2000", &s3_virge_device, GFX_VIRGE},
- {"EGA", "ega", &ega_device, GFX_EGA},
- {"Hercules", "hercules", &hercules_device, GFX_HERCULES},
- {"Hercules InColor", "incolor", &incolor_device, GFX_INCOLOR},
- {"MDA", "mda", &mda_device, GFX_MDA},
- {"MDSI Genius", "genius", &genius_device, GFX_GENIUS},
- {"Number Nine 9FX (S3 Trio64)", "n9_9fx", &s3_9fx_device, GFX_N9_9FX},
- {"OAK OTI-067", "oti067", &oti067_device, GFX_OTI067},
- {"Olivetti GO481 (Paradise PVGA1A)", "olivetti_go481", ¶dise_pvga1a_oli_go481_device, GFX_OLIVETTI_GO481},
- {"Paradise Bahamas 64 (S3 Vision864)", "bahamas64", &s3_bahamas64_device, GFX_BAHAMAS64},
- {"Phoenix S3 Trio32", "px_trio32", &s3_phoenix_trio32_device, GFX_PHOENIX_TRIO32},
- {"Phoenix S3 Trio64", "px_trio64", &s3_phoenix_trio64_device, GFX_PHOENIX_TRIO64},
- {"Plantronics ColorPlus", "plantronics", &colorplus_device, GFX_COLORPLUS},
- {"S3 ViRGE/DX", "virge375", &s3_virge_375_device, GFX_VIRGEDX},
- {"Trident TVGA8900D", "tvga8900d", &tvga8900d_device, GFX_TVGA},
- {"Tseng ET4000AX", "et4000ax", &et4000_device, GFX_ET4000},
- {"Trident TGUI9440", "tgui9440", &tgui9440_device, GFX_TGUI9440},
- {"VGA", "vga", &vga_device, GFX_VGA},
- {"Wyse 700", "wy700", &wy700_device, GFX_WY700},
- {"", "", NULL, 0}
+ {"ATI Graphics Pro Turbo (Mach64 GX)", "mach64gx", &mach64gx_device, GFX_MACH64GX},
+ {"ATI Video Xpression (Mach64 VT2)", "mach64vt2", &mach64vt2_device, GFX_MACH64VT2},
+ {"ATI VGA Charger (ATI-28800)", "ati28800", &ati28800_device, GFX_VGACHARGER},
+ {"ATI VGA Edge-16 (ATI-18800)", "ati18800", &ati18800_device, GFX_VGAEDGE16},
+ {"CGA", "cga", &cga_device, GFX_CGA},
+ {"Cirrus Logic CL-GD5429", "cl_gd5429", &gd5429_device, GFX_CL_GD5429},
+ {"Diamond Stealth 32 (Tseng ET4000/w32p)", "stealth32", &et4000w32p_device, GFX_ET4000W32},
+ {"Diamond Stealth 3D 2000 (S3 ViRGE)", "stealth3d_2000", &s3_virge_device, GFX_VIRGE},
+ {"EGA", "ega", &ega_device, GFX_EGA},
+ {"Hercules", "hercules", &hercules_device, GFX_HERCULES},
+ {"Hercules InColor", "incolor", &incolor_device, GFX_INCOLOR},
+ {"MDA", "mda", &mda_device, GFX_MDA},
+ {"MDSI Genius", "genius", &genius_device, GFX_GENIUS},
+ {"Number Nine 9FX (S3 Trio64)", "n9_9fx", &s3_9fx_device, GFX_N9_9FX},
+ {"OAK OTI-067", "oti067", &oti067_device, GFX_OTI067},
+ {"Paradise Bahamas 64 (S3 Vision864)", "bahamas64", &s3_bahamas64_device, GFX_BAHAMAS64},
+ {"Phoenix S3 Trio32", "px_trio32", &s3_phoenix_trio32_device, GFX_PHOENIX_TRIO32},
+ {"Phoenix S3 Trio64", "px_trio64", &s3_phoenix_trio64_device, GFX_PHOENIX_TRIO64},
+ {"Plantronics ColorPlus", "plantronics", &colorplus_device, GFX_COLORPLUS},
+ {"S3 ViRGE/DX", "virge375", &s3_virge_375_device, GFX_VIRGEDX},
+ {"Trident TVGA8900D", "tvga8900d", &tvga8900d_device, GFX_TVGA},
+ {"Tseng ET4000AX", "et4000ax", &et4000_device, GFX_ET4000},
+ {"Trident TGUI9440", "tgui9440", &tgui9440_device, GFX_TGUI9440},
+ {"VGA", "vga", &vga_device, GFX_VGA},
+ {"Wyse 700", "wy700", &wy700_device, GFX_WY700},
+ {"", "", NULL, 0}
};
int video_card_available(int card)