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.

Comments

  • edited May 2021
    So, as soon as I said 1.2 was the earliest known version, an early per-release pops up.



    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.
  • It seems like there's an unwritten rule on the internet: Whenever someone says something is the earliest known revision of something, an earlier one is found.
  • Cooooool!!!!!!!!
  • edited March 2022
    Just remembered, I was going to post this info here from its documentation. It appears to support a number of really odd early hard drive controllers including the Eagle 1600 SASI - although it may only be through BIOS, in which case, there is still no low-level formatter.

    ( 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

Leave a Comment

BoldItalicStrikethroughOrdered listUnordered list
Emoji
Image
Align leftAlign centerAlign rightToggle HTML viewToggle full pageToggle lights
Drop image/file