A "Monitor" driver for an Amiga is a file which, when placed in DEVS:Monitors, enables additional screenmodes. The standard PAL or NTSC driver, which provides screenmodes compatible with consumer TV frequencies, is built-in to the OS, but by adding further drivers, additional screenmodes become available. For example, adding the Multiscan monitor driver adds the "Productivity" screenmodes that are a higher resolution (640x480) and higher scan rate (closer to the PC VGA standard) but which require a compatible monitor to be used.
How do these drivers work? How are they made?
They appear to be executable files that are simply run during startup. Therefore I assume that they execute some code which calls into the OS to add the new screenmodes to an in-memory table. How do they do this - where are screenmodes stored in the OS? Why are they executable rather than just a static data structure that the OS could load and parse?
To put the question another way - say I've invented a new monitor which only accepts video frequencies that are not supported by any of the existing drivers, and I want to create a monitor driver for it. How do I do that?
strace
(or evenltrace
) to see what a program is doing. I don't know if programs like DOSTrace cover library calls or only filesystem access. They might provide a hint?