Software spotlight QNX 1.2
QNX is a small and fast Unix-like real time operating system that was originally designed specifically for the IBM PC.
Released in 1983, QNX 1.2 supports multitasking, with the ability for programs to send messages between each other, and is multi-user. Applications are written using its included C compiler.
https://winworldpc.com/product/qnx/12
So far, 1.2 is the earliest version so far to be unearthed. This version has some peculiarities.
First of all, version 1.2 is copy protected. The boot disk has a sim-numbered sector on the very last track. This is trivial for current tools like ImageDisk to duplicate. A simple patch that removes this protection has been created.
Oddly, although it can be used with a hard disk, it can not boot from a hard disk. It seems this is primarily due to the required use of copy protection. It is possible that some of the supported controllers may themselves have not been self-bootable. For example, early Devong controllers used boot disks to support PC DOS 1.0 and 1.1, and may have supported the original IBM PC BIOS that did not recognize BIOS extensions.
QNX may have some kind of speed issues, as it did not seem to want to run on faster machines. I had to take my 12mhz 286 off of turbo to get it to boot.
You might think an OS like this would require a 386, or scrape by with a 286, but this version is designed to run on an IBM PC, XT, and early 8088/8086 based IBM PC clones.
Oddly, it does not seem to like PCE very much. When I try to run it, I see an error "undefined operation [FE a0]", and it never seems to start.
One magazine review compared this version of QNX with Apple Lisa, Smalltalk, and Visi On. I don't feel that was quite an accurate comparison, although QNX did eventually gain a GUI. The core OS seems much more powerful. Version 1.2 has no GUI, but supposedly programs developed for it could use "windowing" features. From what I have read, it seems these early versions appealed to big companies writing scientific applications that might have otherwise used a larger multitasking minicomputer.
Although it has multi-user capabilities, it was geared towards more advanced uses than business database applications.
An interesting feature, it also has the ability to run IBM PC DOS from within QNX.
For me, probably the most interesting part is that it, and an included "QNX 1.14" support disk, contain some details about very early hard disk systems. Apparently QNX 1.x supported the Eagle 1600's SASI hard drive, and The Columbia Data Products MPC 1600's early proprietary hard drive controller. It supports the Davong hard disk controller, which was notable for its PC DOS 1.x support. (I wonder, does QNX implement low-leveling of these devices?)
The source Kryoflux/SCP dumps have various issues, but the images have been decoded OK using the PCE tools, and seem to be complete. The qnx12_dosfsys_ image had some bad sectors, but were in unused areas. Also, the qnx12_dosfsys_ disk seems to be an extra copy that differs from the original.
There is more information about this dump and the challenges getting it to boot from a hard drive here: https://virtuallyfun.com/wordpress/2020/
You can try it for yourself via a PCjs emulator here: https://hawk.ro/qnx12_pcjs/
PS, I have been incredibly busy lately, so I have not had much time for processing new downloads or adding spotlights.
Released in 1983, QNX 1.2 supports multitasking, with the ability for programs to send messages between each other, and is multi-user. Applications are written using its included C compiler.
https://winworldpc.com/product/qnx/12
So far, 1.2 is the earliest version so far to be unearthed. This version has some peculiarities.
First of all, version 1.2 is copy protected. The boot disk has a sim-numbered sector on the very last track. This is trivial for current tools like ImageDisk to duplicate. A simple patch that removes this protection has been created.
Oddly, although it can be used with a hard disk, it can not boot from a hard disk. It seems this is primarily due to the required use of copy protection. It is possible that some of the supported controllers may themselves have not been self-bootable. For example, early Devong controllers used boot disks to support PC DOS 1.0 and 1.1, and may have supported the original IBM PC BIOS that did not recognize BIOS extensions.
QNX may have some kind of speed issues, as it did not seem to want to run on faster machines. I had to take my 12mhz 286 off of turbo to get it to boot.
You might think an OS like this would require a 386, or scrape by with a 286, but this version is designed to run on an IBM PC, XT, and early 8088/8086 based IBM PC clones.
Oddly, it does not seem to like PCE very much. When I try to run it, I see an error "undefined operation [FE a0]", and it never seems to start.
One magazine review compared this version of QNX with Apple Lisa, Smalltalk, and Visi On. I don't feel that was quite an accurate comparison, although QNX did eventually gain a GUI. The core OS seems much more powerful. Version 1.2 has no GUI, but supposedly programs developed for it could use "windowing" features. From what I have read, it seems these early versions appealed to big companies writing scientific applications that might have otherwise used a larger multitasking minicomputer.
Although it has multi-user capabilities, it was geared towards more advanced uses than business database applications.
An interesting feature, it also has the ability to run IBM PC DOS from within QNX.
For me, probably the most interesting part is that it, and an included "QNX 1.14" support disk, contain some details about very early hard disk systems. Apparently QNX 1.x supported the Eagle 1600's SASI hard drive, and The Columbia Data Products MPC 1600's early proprietary hard drive controller. It supports the Davong hard disk controller, which was notable for its PC DOS 1.x support. (I wonder, does QNX implement low-leveling of these devices?)
The source Kryoflux/SCP dumps have various issues, but the images have been decoded OK using the PCE tools, and seem to be complete. The qnx12_dosfsys_ image had some bad sectors, but were in unused areas. Also, the qnx12_dosfsys_ disk seems to be an extra copy that differs from the original.
There is more information about this dump and the challenges getting it to boot from a hard drive here: https://virtuallyfun.com/wordpress/2020/
You can try it for yourself via a PCjs emulator here: https://hawk.ro/qnx12_pcjs/
PS, I have been incredibly busy lately, so I have not had much time for processing new downloads or adding spotlights.
Comments
https://winworldpc.com/product/qnx/0x
I haven't had much time to mess with it, but the boot disk loads on several PC clones and works in PCE. There is no documentation with it. The copyright date says 1981 (but another date inside it suggests 1982), which seems VERY early, but they are 160k disks. In fact the unused portions of the boot disk seems to be filled with bits from PC-DOS 1.00.
A few other 2.x versions also popped up, including 360k versions that can be installed on 8088 PC/XTs. I'll try and get those processed and added.
( QNX Disk Drivers )
( A ) AT
( B ) BIOS
( C ) DAVONG
( D ) EAGLE
( E ) COLUMBIA
( F ) GENIE
( G ) MAYNARD
( H ) TECMAR
( I ) XT
( J ) OTHERS
( 0 ) Exit
( AT DRIVER )
The AT driver uses the built in ROM BIOS. It is fully interrupt driven
and contains NO busy wait code. You do not need to specify the number
of [heads tracks] or [sectors].
[mount disk ( n ) /config/at]
or
[mount disk ( n ) /config/at pa=qnx]
( n ) drive number 1..9 or A..F
( BIOS DRIVER )
This driver uses the [INT13] bios calls to perfom hard disk IO. It will work
on any controler card or machine which supports [INT13] hard disk IO. These
cards usually contain a ROM which the bios finds and executes when power
is turned on. This allows us to provide immediate support for the many
new drives on the market. The BIOS driver reads the disk configuration
table set up by the bios to determine the physical characteristics of the
hard disk. This can be over-riden by specifying tracks, heads and sectors
on the mount command.
[mount disk ( n ) /config/bios]
or
[mount disk ( n ) /config/bios pa=qnx]
( n ) drive number 1..9 or A..F
This is a busy wait driver and may cause a slight stutter affect in a
multi-user environmant.
( DAVONG HARD DISK DRIVER )
[mount disk ( n ) /config/davong t=[tracks] h=[heads] n=[sectors]]
or
[mount disk ( n ) /config/davong t=[tracks] h=[heads] n=[sectors] pa=qnx]
( n ) drive number 1..9 or A..F
( EAGLE 1600 HARD DISK DRIVER )
The driver for the EAGLE assumes their 10 Meg configuration. If you have the
30 Meg disk you will have to specify [tracks, heads) and [sectors].
10 Meg
[mount disk 2 /config/eagle] (default t=306 h=4 n=17)
or
[mount disk 2 /config/eagle pa=qnx]
30 Meg
[mount disk 2 t=640 h=6 n=17 /config/eagle]
or
[mount disk 2 t=640 h=6 n=17 /config/eagle pa=qnx]
The spirit portable uses the the [XT] driver with
[t=607 h=2 n=17]
( INTERNAL COLUMBIA HARD DISK DRIVER )
This driver supports the {*}[OLD]{*} internal columbia hard disk. The
new columbia machines are XT compatible and should use the XT driver. The
driver is sensitive to the the mounted size. You can not use the [FDISK]
command and [pa=] option with this driver.
5.0 Meg [mount disk ( n ) s=5m /config/columbia]
8.5 Meg [mount disk ( n ) s=8500k /config/columbia]
10.0 Meg [mount disk ( n ) s=10m /config/columbia]
15.0 Meg [mount disk ( n ) s=15m /config/columbia]
17.5 Meg [mount disk ( n ) s=17500k /config/columbia]
35.3 Meg [mount disk ( n ) s=32m /config/columbia]
( n ) drive number 1..9 or A..F
( GENIE 5 + 5R CARTRIDGE DRIVER )
To use your Genie 5 + 5R Cartridge drive you must mount the cartridge and
fixed portion separately. You should ONLY specify the driver file on the
first mount.
Cartridge [mount disk 3 /config/genie] (default p=1 t=306 h=2 n=32)
Fixed [mount disk 4 p=2 d=3]
or
Cartridge [mount disk 3 /config/genie pa=qnx]
Fixed [mount disk 4 p=2 d=3 pa=qnx]
The [d=3] indicates that the driver for disk 3 should be reused.
NOTE that the sector size is 256 bytes. This means that the driver reads
two 256 byte sectors to read a standard 512 byte block. There is NO
penalty.
( MAYNARD HARD DISK DRIVER )
[mount disk ( n ) /config/maynard t=[tracks] h=[heads] n=[sectors]]
( n ) drive number 1..9 or A..F
( TECMAR HARD DISK DRIVER )
This driver assumes your hard disk is physical drive 2 ( [p=2] ). This
is true for the non-removeable tecmar drives we have encountered.
[mount disk ( n ) t=[tracks] h=[heads] n=[sectors] /config/tecmar]
or
[mount disk ( n ) t=[tracks] h=[heads] n=[sectors] /config/tecmar pa=qnx]
( n ) drive number 1..9 or A..F
The removable Syquest cartridge drive is configured as physical drive 1 and
is physically different than the above drives. It should be mounted as
SQ306 5 Meg
[mount disk 2 p=1 t=306 h=2 n=17 /config/tecmar]
(Note: You must enable interrupt 5 on the tecmar controller board.)
( XT HARD DISK DRIVER )
A large number of the drives now on the market boast an XT compatible
hard disk controler. This controler must be compatible at the physical
hardware level. Compatibility at the BIOS (ROM) level is not enough to
use this driver. Please refer to the BIOS driver. Even if the
controller is compatible at the hardware level the physical disk {*}may{*}
contain a different number of heads, tracks or sectors. For example,
Heads Tracks Sectors SIZE
XT 4 306 17 10M
Compatible 2 612 17 10M
If your disk does not contain 4 heads, 306 tracks and 17 sectors/track you
will have to specify [h= n=] and [t=] in the mount command.
[mount disk 2 /config/xt] ( default t=306 h=4 n=17 )
or
[mount disk 2 /config/xt pa=qnx]
( OTHER HARD DISK DRIVER )
Please contact Quantum if you have a hard disk which is not mentioned
in this file. Several companies and some QNX users provide drivers and
support for a number of popular driver on the market. The following list
was available when this disk was shipped.
( DISK CONTROLLERS CURRENTLY SUPPORTED )
[Controllers] [Type] [Typical disk sizes] Notes]
Columbia F 5M, 8M, 10M, 15M, 17M, 32M, 35M
Compaq F 10M 3
Corona F 10M 3
Corvus F 6M, 10M, 20M
Davong F 5M, 10M, 15M, 32M
Eagle F 10M, 32M
Eagle Spirit F 10M 3
Emerald F/T 40M, 65M, 140M, 280M 4
Genie F/R 5M fixed/5M removable
IBM AT F 20M
IBM XT F 10M 3
Interphase F/R 25M fixed/25M removable, 510M removable, 4
675M fixed, and others
Iomega/Bernoulli R one or two 10M removable 1
Maynard F 10M, 20M, 40M
Ollivetti F 10M 3
Pegasys F 40M 2
[Controllers] [Type] [Typical disk sizes] Notes]
DEC Rainbow 100 F 10M
Syquist R 5M 5
Tallgrass F 6M, 12M, 20M, 35M 6
Tallgrass T Streamer tape 6
Tandy 2000 F 10M
Tecmar F/R 5M, 10M 5
Zenith F 10M 3
Types: F - Fixed, R - Removable, T - Tape
NOTES:
QNX does not currently allow any logical disk to exceed 32Meg.
Some drivers allow a physical disk to be partitioned into multiple
logical disks. QNX allows a maximum of 15 mounted disks (logical
or physical) at one time.
( Driver Availability )
1 Driver available from: 4 Driver available from
Micro Business Applications manufacturer.
1133 Guerrero Street 5 Uses Tecmar driver.
San Francisco, CA 6 Driver available from:
USA 94110 Corman Custom Electronics Corp.
(415) 647-3381 38 Bridgeport Rd. E.
2 Driver available from: Waterloo, Ontario
Charlie Pallitt Canada, N2j 2J5
(608) 262-3122 (519) 884-4430
3 Uses XT driver.
um of 15 mounted disks (logical
or physical) at one time.
( Driver Availability )
( XT HARD DISK DRIVER )
If you wish to dedicate the entire XT Hard disk drive to QNX then you need
merely mount it by typing
[mount disk 2 /config/xt] (default t=306 h=4 n=17)
If you wish to share the disk with PC-DOS you should use the DOS 2.0 [FDISK]
command to allocate a paritition for DOS to run in. The maximum available
space left will be indicated in cylinders. For example,
[
Max avail space is 150 cyls at cyl 100
]
You may now mount QNX with the command
[
mount disk 2 /config/xt o=6800 s=10200
]
(100 tracks * 17 sectors/track * 4 heads = 6800 blocks)
(150 tracks * 17 sectors/track * 4 heads = 10200 blocks)
[Warning:] The first block of your hard disk contains the master boot record
so you should always specify a minimum offset of 1 block to step over it if you
want to boot DOS off your hard disk.
( DAVONG HARD DISK DRIVER )
The Davong series of hard disks may be supported using the driver found
in the file [/config/davong]. This file will by default support a 5Mbyte
Davong disk drive if no options are given when mounting the driver.
The remaining drives in the Davong series require that the correct number
of heads, and tracks be specified for that particular drive. For example:
5 Meg --] [mount disk 3 /config/davong] (default t=306 h=2 n=17)
10 Meg --] [mount disk 3 /config/davong t=306 h=4 n=17]
15 Meg --] [mount disk 3 /config/davong t=306 h=6 n=17]
Older version of of the Davong 5 Meg and 12 Meg used a different physical drive
5 Meg --] [mount disk 3 /config/davong t=153 h=4 n=17]
12 Meg --] [mount disk 3 /config/davong t=230 h=6 n=17]
Please read the documentation provided with your hard disk when determining
the proper number of heads and tracks to specify.
If you specify an offset [o=] on the mount command you will have to decrease the
size of the drive by this amount using the [s=] option.
( INTERNAL COLUMBIA HARD DISK DRIVER )
Columbia's hard disk controller does [not] support interrupts. However, it
does support an [eight block hardware cache]. Blocks accessed which are in
the cache will be as fast as ramdisk. Blocks read from the disk will cause
QNX to pause resulting in a mild stutter affect in processing.
The disk controller takes absolute block numbers and does the mapping to
track, head and sector itself.
TM602 5.0 Meg --] [mount disk 2 s=5m /config/columbia]
TM603 10.0 Meg --] [mount disk 2 s=10m /config/columbia]
TM503 15.0 Meg --] [mount disk 2 s=15m /config/columbia]
SA1004 8.5 Meg --] [mount disk 2 s=8500k /config/columbia]
Q2010 8.5 Meg --] [mount disk 2 s=8500k /config/columbia]
Q2020 17.5 Meg --] [mount disk 2 s=17500k /config/columbia]
Q2040 35.3 Meg --] [mount disk 2 s=32m /config/columbia]
If you specify an offset [o=] on the mount command you will have to decrease the
size of the drive by this amount. NOTE: Quantum disks do not refer to Quantum
Software Systems.
( TECMAR HARD DISK DRIVER )
The driver will default to the 5 Meg hard disk parameters if T, H and N are
not specified. Note that the driver assumes physical drive 2.
St-506 5 Meg --] [mount disk 2 /config/tecmar] (default p=2 t=153 h=4 n=17)
St-412 10 Meg --] [mount disk 2 t=306 h=4 n=17 /config/tecmar]
The removable Syquest cartridge drive is configured as physical drive 1 and
is physically different than the above drives. It should be mounted as
SQ306 5 Meg --] [mount disk 2 p=1 t=306 h=2 n=17 /config/tecmar]
If you specify an offset [o=] on the mount command you will have to decrease the
size of the drive by this amount.
(Note: You must enable interrupt 5 on the tecmar controller board.)
( EAGLE 1600 HARD DISK DRIVER )
The driver for the EAGLE assumes their 10 Meg configuration. If you have the
30 Meg disk you will have to specify T, H and N.
10 Meg --] [mount disk 2 /config/eagle] (default t=306 h=4 n=17)
32 Meg --] [mount disk 2 t=640 h=6 n=17 /config/eagle]
If you wish to preserve any DOS files on the disk you should specify an
offset. If you specify an offset [o=] on the mount command you will have to
decrease the size of the drive by this amount. For example if you wish to
preserve DOS you might specify an offset as follows.
10 Meg --] [mount disk 2 /config/eagle o=2000 s=18808]
32 Meg --] [mount disk 2 /config/eagle o=2000 s=63280]
( GENIE 5 + 5R CARTRIDGE DRIVER )
To use your Genie 5 + 5R Cartridge drive you must mount the cartridge and
fixed portion separately. You should ONLY specify the driver file on the
first mount.
Cartridge --] [mount disk 3 /config/genie] (default p=1 t=306 h=2 n=32)
Fixed --] [mount disk 4 p=2 d=3]
The [d=3] indicates that the driver for disk 3 should be reused.
NOTE that the sector size is 256 bytes. This means that the driver reads
two 256 byte sectors to read a standard 512 byte block. There is NO
penalty.
Edit: HTML is crap