Mini-UNIX 6 takes 37 seconds to boot, from turning the Terak on to a # prompt. Mini-UNIX is single-user, so instead of a login: prompt, you get: |
RESTRICTED RIGHTS Welcome to Terak-UNIX # |
As you can see, there isn't a whole lot of room in this lean
system for lengthy disclaimers or copyright notices.
The boot volume is generally labeled "qxsys". An examination of its root directory reveals: |
# ls -l total 52 drwxrwxrwx 2 0 512 Apr 29 14:08 bin drwxrwxrwx 2 0 144 Apr 29 14:08 dev drwxrwxrwx 2 0 160 Apr 29 14:08 etc drwxrwxrwx 2 0 32 Apr 29 14:08 lib drwxrwxrwx 2 0 32 Apr 29 14:08 mnt drwxrwxrwx 2 0 128 Apr 29 17:14 tmp -rwxrwxrwx 1 0 22052 Apr 29 14:06 unix drwxrwxrwx 2 0 144 Apr 29 17:28 usr # |
This operation takes 16 seconds. ls without the -l takes only
12.5 seconds. The extra time for the -l is due not so much to
the time it takes to display the characters (though the console
display driver is none too fast), but to the extra disk accesses
needed to get the extended information.
Unfortunately, ls does not implement the -R (recursive) parameter. In fact, it seems to implement hardly any options at all. So, to examine the full contents of qxsys, we'll have to look at the directories individually:
|
# ls -l bin |
The system is not too useful with only the boot volume, though it is impressive how much fits on one 256K floppy. To do compilation, you need to mount /lib on the second Terak floppy drive. Terak calls this separately-priced item the 8512, and it's also labeled on the front with the designation "DEVICE & UNIT SYMBOL QX1". So, it's not surprising that Mini-UNIX refers to it as /dev/qx1. This operation takes about 14.5 seconds: |
# mount /dev/qx1 /lib # |
Let's start the editor and type in a simple benchmark program. The only editor on the system is ed, and it's not exactly a full-blown version. For example, if you type "q", the editor will silently exit, losing any unsaved changes. ed is probably not even as good as a keypunch, but it's the best we've got: |
# cd usr # ed bench1.c ? a /*--- bench1.c -- Extremely simple benchmark. * Mark Riordan 1997 */ main() { int ir, count; ir = 0; count = 0; while(count < 32000) { ir =+ 129; if(ir > 257) { ir = 257; } count++; } printf("End. count=%d ir=%d\n",count,ir); } . |
That . ended input. Now we're at the "command prompt" in the editor (the prompt is a linefeed!). I made one omission (left out a printf at line 9) and one mistake (on line 13), so let's go back and fix them: |
8a printf("Start.\n"); . 12,14p if(ir > 257) { ir = 257; } 13d 13i ir =- 257; . 12,14p if(ir > 257) { ir =- 257; } w 292 q # |
The dialect of C accepted by this compiler is very limited.
It doesn't understand #include.
Note how I was forced to use the archaic "=-"
rather than "-=".
Forget about function prototypes.
|
Now let's compile: |
# cc bench1.c /tmp/ctm3a m 0005 m 0006 bench1.o: No relocation bits Undefined: _main bench1.o: Local symbol botch # cc bench1.c # a.out Start. End. count=32000 ir=66 # |
As you can see, compilations don't always work right the first time. Perhaps this is due to read/write errors on the floppies. The first attempt failed after 2:26; the second succeeded in compiling and linking after 3 minutes 08 seconds. The program ran in 2.32 seconds. |