VOGONS


First post, by superfury

User metadata
Rank l33t++
Rank
l33t++

On a real ET3000 SVGA, does setting the 8 simultaneous fonts have effect on the attribute controller?
Can the attribute controller disable the background plane bits (bits 4-7 of the attribute sent by the graphics controller) with this enabled (to make it black or something like that)?

Reading Advanced Programmers Guide to SuperVGAs by George Stutty and Steve Blair, at page 422, the enable bit is described in the TS index 07 bit 4 being set(Enable Multiple Soft Font). It's apparently protected by Vertical Sync End bit 7 like CRTC0-7.

Attribute bits 3,4,6 are apparently mapped to font bits 0,1,2 respectively? Bit 5 is bit 6(F2) complement?
The offsets are then, apparently:
0K,16K,32K,48K,8K,24K,40K,56K
So it's 8K offsets? So that's memory address bit 13 (MA13-MA15) being driven?
And bit 2 clearly drives MA13.
And bit 0 clearly drives MA14 and bit 1 drives MA15, seeing the increments in 16K units.

The example also clears the character set A/B register, writing 0403h to sequencer index/data registers (word operation). And attr 12h to 07h (3 planes only) for some reason? Why would it do that? Does it have to do with the background bits?
For now I've followed the documentation I found and clear bits 3-6 of the attribute controller inputs (bit 7 is left for blink support, documented masked off if enabled).

The background has now changed to black:

The attachment 1823-FontAndBackgroundAttributeBits3till6Cleared.png is no longer available

See Re: EXCELGRAPH - ISA Video Display Controller (ET4000/W32i) for more information on the previous state without clearing those bits for the attribute controller.

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 1 of 11, by superfury

User metadata
Rank l33t++
Rank
l33t++

What happens on real hardware? Are the background color bits cleared (bits 3-6 of the attribute) for the CLUT lookup? Or are they taken as in video memory, cauing a colorful display (I doubt that's intended)?

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 3 of 11, by wbahnassi

User metadata
Rank Oldbie
Rank
Oldbie

Hi, I have one and ran VDIAG.EXE on it a few days ago. The screen capture in the first post matches what I saw at the multi-font test. It was gray text on black background.

Turbo XT 12MHz, 8-bit VGA, Dual 360K drives
Intel 386 DX-33, TSeng ET3000, SB 1.5, 1x CD
Intel 486 DX2-66, CL5428 VLB, SBPro 2, 2x CD
Intel Pentium 90, Matrox Millenium 2, SB16, 4x CD
HP Z400, Xeon 3.46GHz, YMF-744, Voodoo3, RTX2080Ti

Reply 4 of 11, by superfury

User metadata
Rank l33t++
Rank
l33t++
wbahnassi wrote on 2024-10-06, 08:29:

Hi, I have one and ran VDIAG.EXE on it a few days ago. The screen capture in the first post matches what I saw at the multi-font test. It was gray text on black background.

Ok. So that confirms that the background attribute bits (bits 3-6) are indeed cleared when sent to the attribute controller.

Does blinking still work in that mode? So that's attribute bit 7 (or an extra background color, if it's disabled). Maybe I'll need to write a program for testing that, though.

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 5 of 11, by wbahnassi

User metadata
Rank Oldbie
Rank
Oldbie

No blinking in that test. All text is static.

Turbo XT 12MHz, 8-bit VGA, Dual 360K drives
Intel 386 DX-33, TSeng ET3000, SB 1.5, 1x CD
Intel 486 DX2-66, CL5428 VLB, SBPro 2, 2x CD
Intel Pentium 90, Matrox Millenium 2, SB16, 4x CD
HP Z400, Xeon 3.46GHz, YMF-744, Voodoo3, RTX2080Ti

Reply 6 of 11, by superfury

User metadata
Rank l33t++
Rank
l33t++
wbahnassi wrote on 2024-10-06, 11:06:

No blinking in that test. All text is static.

In that test at least it's logical. It doesn't set the blinking bit at all for those attributes.
I made a pascal program that will display the attributes with just the blink bit set in non-blinking mode (blinking bit is thus the extra bit of attribute, which will become color #8 on the background, if it isn't masked by the attribute controller).
When the blinking is enabled (by pressing a key), it should have the effect of changing the text from foreground to background color as normal.

The program detects the character set B character set and uses that for it's rendered text.
After another keypress, it'll return the controller back to it's original settings and return to the command line.

The source code is at UniPCemu's UniPCemu/pascal directory. It's called "fontest.pas".
It won't function properly on non-ET3000 cards though (it doesn't try to even detect a Tseng chipset, just assuming it for now). So don't run it on non-ET3000 chipsets.

I'll see if I can UniPCemu to boot again with the latest commit (again booting issues due to changed PCI handling again), then compile the program, verify it inside UniPCemu itself, then I'll put the executable here in this post.

You can of course compile it yourself as well though (didn't verify it compiling yet though, due to booting issues inside UniPCemu, with turbo.exe starting crashing 😖 ).

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 7 of 11, by wbahnassi

User metadata
Rank Oldbie
Rank
Oldbie

I don't have the Pascal toolchain, but I'd be happy to try out a compiled Exe for you on the real machine if you need to cross check anything.

Turbo XT 12MHz, 8-bit VGA, Dual 360K drives
Intel 386 DX-33, TSeng ET3000, SB 1.5, 1x CD
Intel 486 DX2-66, CL5428 VLB, SBPro 2, 2x CD
Intel Pentium 90, Matrox Millenium 2, SB16, 4x CD
HP Z400, Xeon 3.46GHz, YMF-744, Voodoo3, RTX2080Ti

Reply 8 of 11, by superfury

User metadata
Rank l33t++
Rank
l33t++

After fixing the compilation issue (missing semicolon on a function declaration), it compiles and runs inside UniPCemu at least.

This is the executable and results:

The attachment FONTEST.EXE is no longer available

The results on UniPCemu (attribute byte works as normally, except bits 3-6 are masked off before being sent to the attribute controller):
First stage: attribute byte in non-blink 4-bit background state:

The attachment 1824-fontest-step1.png is no longer available

Second stage: attribute byte using blink, 4-bit background state, off state (displaying font as background color):

The attachment 1825-fontest-step2-blinkingoffstate.png is no longer available

Second stage: attribute byte using blink, 4-bit background state, on state (displaying font as foreground color):

The attachment 1826-fontest-step2-blinkingonstate.png is no longer available

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 9 of 11, by superfury

User metadata
Rank l33t++
Rank
l33t++
wbahnassi wrote on 2024-10-06, 13:30:

I don't have the Pascal toolchain, but I'd be happy to try out a compiled Exe for you on the real machine if you need to cross check anything.

Any luck running the Exe?

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 10 of 11, by wbahnassi

User metadata
Rank Oldbie
Rank
Oldbie

Hi, just got to running the exe. Its results match what it says on the screen. The line that says it should be blinking is indeed blinking. I've attached the photos.

I noticed that the font looks normal on my machine, whereas yours is much wider. Is this expected?

Turbo XT 12MHz, 8-bit VGA, Dual 360K drives
Intel 386 DX-33, TSeng ET3000, SB 1.5, 1x CD
Intel 486 DX2-66, CL5428 VLB, SBPro 2, 2x CD
Intel Pentium 90, Matrox Millenium 2, SB16, 4x CD
HP Z400, Xeon 3.46GHz, YMF-744, Voodoo3, RTX2080Ti

Reply 11 of 11, by superfury

User metadata
Rank l33t++
Rank
l33t++
wbahnassi wrote on 2024-10-08, 23:59:

Hi, just got to running the exe. Its results match what it says on the screen. The line that says it should be blinking is indeed blinking. I've attached the photos.

I noticed that the font looks normal on my machine, whereas yours is much wider. Is this expected?

The width is mainly a difference between physical timing (aspect ratio of the monitor actually) and the way UniPCemu clocks pixels horizontally. It's dumped before resizing to 4:3 aspect ratio(e.g. 800x600).

But your screen captures confirm it's behaviour as I implemented it: Bits 3-6 are cleared and used for font lookups only, all other bits operating normally and sent to the attribute controller for normal color processing.

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io