Opmon Driverkit Checklist
17 April 1989

1.  Your PC should have at least 640K of main memory, and at least a megabyte
    of free disk space.

2.  Install Microsoft C 5.10 large model compiler in c:\msc.

    Install Microsoft 5.10 assembler (masm).

    Edit c:\autoexec.bat:
        add c:\msc\bin to beginning of your PATH spec
        add the following lines:
          set INCLUDE=c:\msc\include
          set TMP=c:\msc\tmp
          set LIB=c:\msc\lib;c:\opus\opmon\lib

    Edit c:\config.sys
          files=20    (minimum)
          buffers=10  (minimum)
          shell=command.com /P /E:512

    REBOOT YOUR PC if you changed these files.

3.  Install sysadm driverkit diskette(s):
      # sysadm installpkg
    or cpio driverkit diskette:
      # cd /usr/src
      # cpio -civBdum < /dev/rflpa

Example driver:  graphics device named "foo"

4.  Create driver source: /usr/src/opmon/src/dvrfoo.c
      any assembly code:  /usr/src/opmon/src/dvrfooa.asm
      any header files:   /usr/src/opmon/src/foo.h

5.  Edit /usr/src/opmon/dkit.mk:

    Add dvrfoo.obj [dvrfooa.obj] to POBJ= line, following the example.
    Add foo.h [dvrfooa.obj] to PHDR= line, following the example.
    Add make rule[s] for dvrfoo.obj [dvrfooa.obj], following examples
    (moncc.sh for C sources, monas.sh for masm sources).

6.  Edit /usr/src/opmon/src/mondev.c:
    Add "extern struct dev dt_foo;" to other extern declarations.
    Add to structure definition:
      /** foo graphics interface:<foo> */
      { "foo", &dt_foo },

7.  Create /usr/src/opmon/cfg/obj_foo, containing the following lines
      (dvrfooa.obj only if dvrfooa.asm exists;
       -l foo.lib only if dvrfoo uses a special MSC library):
    dvrfoo.obj
    dvrfooa.obj
    -l foo.lib

8.  Create /usr/src/opmon/cfg/foo.cfg.
    Copy 400.cfg (for example) to foo.cfg.
    Remove unwanted entries from foo.cfg.
    Add <graphics=foo>.  ("foo" in this entry must match "foo" in mondev.c)

9.  If a special MSC library is required, put it in c:\msc\lib
      or in c:\opus\opmon\lib

10. # cd /usr/src/opmon
    # makeopmon pmio foo.cfg
      or
    # makeopmon pm100 foo.cfg

11. If MSC warns about inadequate memory, build a smaller opmon first
    (makeopmon pmio tiny.cfg), ignoring the warning,
    install the resulting /usr/src/opmon/pmio/tiny.exe as c:\opus\opmon.exe
    (first saving the stock opmon.exe) and reboot with the smaller opmon.

12. Resulting opmon is in /usr/src/opmon/pmio/foo.exe
                       or /usr/src/opmon/pm100/foo.exe
