Hi,
rdos wrote:Owen wrote:Also: You can reliably use VBE on UEFI systems, if the card supports it (probable for non-integrated solutions or systems with a compatibility support module) provided you use it the same way people use it on non-x86 systems: By creating a "Virtual Real-Mode Machine" with a sufficiently fleshed out BIOS implementation, then performing the standard option ROM initialization steps in it. If implemented right, the card will correctly hook the VBE interrupts, at which point you can use it by invoking VBE interrupts inside said emulator. You might want to steal the implementations of various BIOS functions from the Bochs BIOS as experimentally needed (e.g. quite clearly you need not support disk I/O).
The option ROM should successfully re-initialize the device into VGA compatibility text mode (after all, this is necessary to support warm boots), i.e., into a mode which the VESA BIOS can support.
For pure UEFI, the goal is to have a "UEFI driver" in the video card's ROM (using either native 80x86 code or portable "EFI byte code"). Except for "compatibility with obsolete BIOS" there is no need for VBE to exist in the video card at all and no need for a "UEFI only" system to have a chipset that supports any of the legacy VGA IO port and display memory window forwarding that VGA/VBE requires. The industry is still making a transition from "BIOS" to "BIOS+UEFI" to "pure UEFI" so ugly hacks to force obsolete stuff like VBE to work are sadly still possible, but there is no guarantee that it will work in future (and no guarantee that it will actually work in 100% of 80x86 UEFI systems today for that matter).
It's only a matter of time before someone at Intel decides that they can streamline the next "CPUs plus GPUs/video plus most of the chipset" chip intended for Windows tablets (or notebooks or phones or whatever) by ripping out a butt-load of unnecessary/deprecated bloat.
rdos wrote:Then I can boot with UEFI, discard their video-mode, and use VBE as usual. It would probably take a while before most machines no longer have a VESA BIOS. Much longer than the disappearance of the legacy BIOS.
It will take a while. When it finally does happen you're screwed and will need to rewrite parts of your OS and all of your applications because you were too stupid to listen now, and I suspect that the cost of fixing your design failure after it's too late will be too high to be economically viable and all your customers will shift to QNX or Linux or something else instead.
Of course I really don't care what happens to RDOS. What I do care about is you encouraging beginners to follow your path towards inevitable doom. It's hard enough weaning beginners off of the BIOS without you doing your best to sabotage their work before they've really begun.
rdos wrote:Brendan wrote:The text output protocol is a nice abstraction - it could be using any video mode, or sending the text over network or serial and not using video at all, or anything else.
It's useless as it is a boot-service only.
If you're writing an OS then you need to provide code to "operate the system", and therefore you only need to use something like UEFI's text output protocol during boot. If you're only writing a "UEFI application" (that doesn't take control of the hardware and only pretends to be an OS) then you shouldn't be calling the "exit boot services" function and can continue using UEFI's text output protocol. Either way you shouldn't care that it's a boot-service only.
rdos wrote:As an example of the superiority of the command shell, consider listing all ACPI devices. In the Windows GUI, you can do this in a very awkward way, looking device-for-device, with a single parameter displayed at a time. Of course, you cannot print a full device-list to a file. At the RDOS command shell you simply do:
Is this a joke? As an example of the superiority of the GUI, consider playing Crysis in a window. In the Windows GUI you do a few mouse clicks. To do this in RDOS's command shell you...?
Users don't care about listing all ACPI devices. Normal users care about browsing the web, watching videos, writing letters in WYSIWYG editors and calculating their budget. System administrators don't want to use command line either - they want nice graphical tools with context sensitive help and visual cues. Programmers also don't want to use command line (most most hide or automate it using scripts and/or IDEs just get rid of it).
The only people that use command line are people that don't have a choice because the OS sucks and lacks graphical tools to do the job. This includes people that use command line applications for scripting (because sadly a lot of graphical OSs like Windows and Ubuntu still don't support good scripting for graphical applications).
Of course I'm not interested in reviving crap that other OSs have almost entirely abandoned - it's much more practical to learn by their mistakes and avoid wasting time bothering with command line (and providing modern graphical tools and a suitable scripting language instead).
rdos wrote:Brendan wrote:Erm. My monitors can take up to one second of "black screen" to figure out what video mode the video card has switched to before they display anything after a video mode switch.
Then you are using an old monitor. Modern LCD monitors no longer take a long time to switch video mode.
Ironically, the fastest switching monitor I have is about 8 years old (and it's smaller cheap/crappy thing). It's the newest monitor (about 2 years old) that takes the longest.
rdos wrote:Brendan wrote:Basically, resolution independence prevents "poor quality graphics that are slow and ugly for the user". It also removes a lot of hassle for application developers (who don't need to care about video modes, video resolutions and pixel formats when video is done right). Like most of your arguments, it seems like the main reason you want video mode switching after boot is because you're too lazy to do your job properly.
No, I'm not locking my users into a Windowed GUI, but rather let them develop in whatever video-mode they prefer, with and without typical GUI functionality. You are the one that locks your end user into a dated windowing concept that modern portable devices has abandoned.
You're mixing 2 completely separate things together. You can have a windowed GUI without resolution independence; and you can have "full screen only" with resolution independence (or any other combination of with/without).
For windowing, almost all systems that support windowing also support full screen applications, so you lose nothing by providing support for windowing and you have no sane/valid reason to avoid it (although this doesn't necessarily apply to only windowing - there are other ways, like tiling, which may work as well for users).
For resolution independence, we've talked about this before and I know we'll never agree. Your problem is that you have existing code, so fixing the graphics API ends up being too much work for your specific case, and you're not interested in how things should be. My problem is that I only care about how things should be and I don't care about your specific case.
Cheers,
Brendan