Detected monitor type is not passed from VIDC20Driver to kernel
Phil Pemberton (7989) 71 posts |
I think I’ve stumbled across a bug in the handling of the monitor ID bits. Historically, RISC OS machines up to the RISC PC and A7000 had four ID bits which identified the type of the connected monitor. On earlier machines there are four bits, on RISC PC/A7000 hardware there is only one. On boot, if The HAL changes have split the responsibility for this across the Kernel and
I’m hitting this bug as part of the Bush IBX work. The IBX doesn’t have any monitor ID bits, they’re hard-coded. To work around that, I modified It seems like the “fix” is to move the bulk of This doesn’t really scupper the Desktop, because there’s a “PAL TV” MDF which provides the interlaced and non-interlaced PAL modes. (there’s a separate bug which stops interlacing from working in RO5 – VetModes rejects them because the Can anyone who’s familiar with the HAL / Kernel layer and video driver interface possibly speculate as to how this might be fixed? |
Rick Murray (539) 13864 posts |
PRM 5a says “Mono VGA monitors are interpreted as TV standard monitors, so this class of monitor requires manual configuration before use. Other monitor types are detected and an appropriate mode is selected.” I recall back in the day that I would always explicitly configure the monitor type as the automatic detection often wasn’t right (probably an issue with the monitors rather than RISC OS, or maybe it needed something done to the plug? special cable?). I’m surprised they didn’t hardwire the ID high to appear as a TV style device, but, then, it was probably simpler to fiddle this in software than to fiddle it in hardware. I can see the tags file (defaults?) says 1: MonitorInfo:&85,,,&7D,L but I don’t know what that actually translates to in RISC OS terms. |
Phil Pemberton (7989) 71 posts |
The NVRAM module is an odd beast. That particular definition is – I think – a CMOS RAM variable. I think it’s only defined in the NVRAM tag file to stop someone from overwriting it. In any case the NVRAM module isn’t doing anything – I don’t have the tag file loaded. And I figured out what’s stopping interlacing from working … there’s a module called “Interlace” which is in the NC/Bush ROM. It seems to be using OS_Memory 0 to get the physical address of logical addresses 0×5000000 and 0×2C0C000… I have no idea what they’re meant to be… |