The program has largely been tested as it was developed, with bugs being fixed as they came up. Usually, each time I got the program working properly or added a new function, I discovered more bugs which needed to be fixed, or at least I had new ideas about what I could make it do next.
The following is a demonstration of DEVLOAD being used to load an expanded memory driver. The memory map function, MEM.EXE, is called both before and after loading EMM.SYS to confirm the addition of the expanded memory function. DEVICES.COM is called last to show the position of EMM.SYS in the device chain.
C:\ >mem 655360 bytes total conventional memory 655360 bytes available to IBM DOS 495072 largest executable program size C:\ >devload /v emm.sys DEVLOAD.EXE v3.0 (C) 1992, 1993 David Woodhouse. Loads device drivers from the command line. Filename : C:\MSDOS\EMM.SYS Load address : 2718:0000 Expanded Memory Manager Version 4.0S Size = 384 KB, Page Frame = D000 Port(s) = 0208 0258 Init function return status : 0100 1 character device installed. Size of driver (paragraphs) : 021A Interrupt vectors changed : 67h. Driver staying resident. C:\ >mem 655360 bytes total conventional memory 655360 bytes available to IBM DOS 486448 largest executable program size 393216 bytes total EMS memory 393216 bytes free EMS memory C:\ >devices DEVICES.COM v2.2 (C) 1991, 1992 David Woodhouse. Lists drivers in DOS device chain. Table invar located at 011C:0026 Device Attr. Str. Int. Address .SYS file NUL 8004 0DC6 0DCC 011C:0048 EMMXXXX0 8000 0016 0023 2718:0000 EMM Block:03 0002 0039 004F 1C10:0000 NETUNITS Block:02 4842 0126 0131 0B61:0000 STACKER CON 8013 06F5 0700 0070:0023 AUX 8000 06F5 0721 0070:0035 PRN A0C0 06F5 0705 0070:0047 CLOCK$ 8008 06F5 0739 0070:0059 Block:04 08C2 06F5 073E 0070:006B COM1 8000 06F5 0721 0070:007B LPT1 A0C0 06F5 070C 0070:008D LPT2 A0C0 06F5 0713 0070:009F LPT3 A0C0 06F5 071A 0070:00B8 COM2 8000 06F5 0727 0070:00CA COM3 8000 06F5 072D 0070:00DC COM4 8000 06F5 0733 0070:00EE C:\ >
I have no character device drivers that could easily be demonstrated. I have tested ANSI.SYS and found it to work when loaded by DEVLOAD, but cannot easily show screen dumps of this. The next example is of DEVLOAD being used to load the SuperStor compression software which I use to compress my hard drive. The VOL command is used to show the absence and later the presence of the specified drive. Whenever I install either SuperStor or Stacker on any system, I always keep a copy of DEVLOAD in the uncompressed part of the drive, for loading the compression device driver after booting from a floppy disc.
C:\ >vol d: Invalid drive specification C:\ >devload /v sstordrv.sys DEVLOAD.EXE v3.0 (C) 1992, 1993 David Woodhouse. Loads device drivers from the command line. Filename : C:\SSTORDRV.SYS Load address : 171B:0000 SuperStor Data Compression Driver (DRI) 1.06 Copyright (C) AddStor Inc. 1991. All rights reserved. Block header for drive D: at 21EA:0000 Init function return status : 0100 Last drive in use : D: Last drive avail. : Z: 1 block installed. Size of driver (paragraphs) : 0AD2 Interrupt vectors changed : 21h, 26h. Driver staying resident. C:\ >vol d: Volume in drive D is SuperStor C:\ >
The last example presented here is DEVLOAD attempting to load a block device driver when the LASTDRIVE array is already full. This demonstrates how it asks whether to terminate installation.
C:\ >devload /v driver.sys /d:2 DEVLOAD.EXE v3.0 (C) 1992, 1993 David Woodhouse. Loads device drivers from the command line. Filename : C:\MSDOS\DRIVER.SYS Load address : 2E32:0000 Loaded External Disk Driver for Drive K Init function return status : 0103 1 block(s) not installed - LASTDRIVE= parameter in CONFIG.SYS too small. No blocks or INTs installed - terminate (Y/N) ? y Size of driver (paragraphs) : 0000 C:\ >