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?

  • Windows monitor drivers were actually just a text file a containing monitor timings. – Ross Ridge May 9 at 22:55
  • @RossRidge much like xorg.conf files on Unix systems I guess. I'd have thought the Amiga had a similar sort of thing.. – Wilson May 10 at 11:06
  • FWIW: in a Linux environment I would use strace (or even ltrace) 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? – Stéphane Gourichon May 10 at 20:10
up vote 10 down vote accepted

Amiga .monitor files follow the same conventions as Exec Device Drivers. They are loadable shared libraries. Instead of providing an Open/CloseDevice interface, they provide Open/CloseMonitor. OpenMonitor() can be called to get the MonitorSpec data structure that defines the monitor's capabilities. This information then becomes part of the Amiga graphics.library DisplayInfo database that is used by applications to query and setup different display modes.

At boot, AmigaOS scans DEVS: for various disk-based (as opposed to ROM-based) device drivers (i.e. shared libraries). DEVS:Monitors is just the sub-directory where .monitor device drivers live. So AmigaOS can add them to the DisplayInfo database and then make all the supported display modes visisble for the user to choose in the Preferences app. The common .monitor drivers (NTSC, PAL) are present in ROM, so DEVS:Monitors is really just for specifying non-standard monitors that extend the available display modes.

  • 1
    I thought this was pretty interesting, so I went and took a look in my library for more information re: Open/CloseMonitor() - there is a good deal of information in the Amiga ROM Kernel Reference Manual (v3) - Libraries; in the section "Monitors Modes, and the Display Database" (approx. page 518 in my PDF). – Geo... May 12 at 23:56

Your Answer

 
discard

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.