ChaOS

2016 site    ChaOS Source Notes    ChaOS Source Index    ChaOS Downloads    Diary    CTPP Home

ChaOS is an organic operating system. It is not a linux derivative. 14k VESA bootstrap + one OS image file, any BIOS boot device, including USB.

Details of ChaOS demos are below

Instructions for downloading and making a ChaOS boot CD are on the ChaOS download page

The ChaOS kernel is a 32-bit unsegmented executable image, relocatable anywhere in 4Gb linear memory. Device drivers and application programs are also 32-bit unsegmented images, all running at ring 0 to allow free access to the kernel without call gates or task switches. System integrity is preserved by type-safe dynamic linkage enforced at load-time.

ChaOS is used in-house at CTPP for accounts, order processing, and CNC machine control. And yes, the ChaoS Experimental Server delivered this HTML file to the Internet, for you to read. CTPP is a small manufacturer in the north of England, occupying and owning a property originally built in the 1880s. The diary pages record the growing pains of home-grown technology alongside the maintenance and improvement of a very old industrial building and ageing machinery in the Post-Industrial Era. ChaOS is the mentality of the survivor.

Latest 19/11/2012: Preparing for switch of ChaOS Experimental Servers from v1.02 over slow ADSL broadband connection to 64-bit v1.03 over FTTC DSL.

As ever 32-bit ChaOS v1.02 remains a stable and reliable development platform, running all my internal company accounting requirements, but surely soon to be relegated in favour of ChaOS v1.03. I will keep v1.02 up to date though, to support ultra-low power 32-bit Atom processors downline..

Recently:

64-bit development well under way in ChaOS v1.03. IA64/IA32e switching now embedded in v1.03 kernel and stable. ChaOS 64-bit C compiler variant CC7 now producing IA32e and IA64 code with a common 64-bit stack frame. ChaOS v1.03 inbuilt debugger now IA32/IA64 dual mode, the platform I need to develop standard library functions for a future native 64-bit version of ChaOS. ChaOS v1.03 IA64.DRV now providing on-demand switch to IA32e mode, allowing switch to 64-bit operation via far call to USE64 segment. Having fun exploring the Intel processor in native (unsegmented, linear-addressed non-task-switching) 64-bit mode, albeit nearly a decade after the mode was introduced. Seems like my decision to develop ChaOS in 1995 as a 32-bit unsegmented, linear-addressed non-task-switching operating system was extraordinarily far-sighted.... AES added to cryptographic library. Harmonised DBASE across OS, HTPSRV and NJOB. CNC on Intel Atom platform with ChaOS Operating System running on BSP (with internet servers active), and motor programs running on APs. ChaOS Experimental Internet Server on 82.68.176.217 passed 2000 hours uptime since cold reboot. Added encryption to ChaOS FTP to protect data transfers between ChaOS machines using the internet. Also added encryption to ChaOS TELNET, to create a secure command channel. Experimental ChaOS Internet Server hosting this website, as well as Pedley Family/Middleton Website and Long Street Church Website now settling down. Issues resolved include HTTP/1.1 multiple hosting on one IP address, javascript on the older browsers, and reactive counter-measures in the TCP/IP layer to avoid the workload of servicing connections to internet abusers. ChaOS pages now hosted exclusively on native ChaOS server. DEC2011 ISO released. Partial mirror of the ChaOS help is here. Some links will not work, as ChaOS uses custom HTML attributes to access the operating system itself. VESA support improved, embedded in bootstrap, with mode select on CTL|ALT'v' hotkey. Device service handlers now re-entrant. Debugger now properly VESA-aware, supports multiple cores/threads and 64-bit mode. VESA bootstrap now capable of instant-on graphics. VESA Protected mode BIOS support. DEC2009.ISO revised again. CC5 development compiler now bootstrapped. Win7/ChaOS dual boot running on HP G62 notebook and Toshiba Satellite L300. ChaOS compiler CC in final revision to be included in the the next ISO download. SATA.DRV for AHCI mode. CFS filesystem with binary index now stable, and hosting all ChaOS development including the experimental servers. JetDirect network printer support. CFS filesystem stable with binary index, device driver mechanism and native bootstrap. D10 C02 laser engraving program ported to ChaOS. NJOB ported to ChaOS, including PCL macros, soft fonts, with background print spooling provided by PRNSRV. Improved BIOS drive support, to run compilers even if no disk device drivers are present. FAT16 superseded by native ChaOS filesystem (CFS). MP utility to launch ChaOS .XECs on APs. FAT16 longfilenames on by default. December 2009 Demo now uploaded. November 2009 Demo with graphics and native VESA debugger. Development moving to 64-bit, on i7-920 Quad-core Nehalem. ChaOS running on Atom N270 and 330. EDD partition table, boot sector and bootstrap, so ChaOS can boot from anywhere on a hard disk. ChaOS running on Intel Atom 330 with RTL8102E lan. ChaOS uses GUID/EFI partition tables, multiboot can handle 128 bootable systems (partitions) on one hard disk. SATA drive support using PATA legacy mode. UDMA default hard disk mode. Multiple processor capability established.

Capable bootstrap supports 128 partitions per boot drive, with independent filesystems if required. Rebuilding a bootable image from scratch takes less than 30 seconds (3GHz processor). Since 2005 ChaOS has been refined using a native compiler with inline assembler, and so is independent of bulky mainstream operating systems and compilers. As a result, changes to the operating system are incremental. Programs are linked using a global type space, so all function calls (including dynamic links, operating system calls) are type-safe at run-time. Incremental changes to the operating system which impact older software will cause a type-safe link failure, thus preventing unsafe software from loading. (Usually all that is required is to recompile the affected module - MAKE <project>). Code and data about 1Mb, source code about 4Mb (around 80 source files plus around 80 header files).

I connected to the internet in 2006, then became aware that ChaOS is not a unique choice of name for an operating system. Most are Linux flavours as it is a neat name. Still my ChaOS has been around for longer than most - but not as long as Ethertype 0x804, and IP protocol 16, both of which bear the name Chaos and have been around since the dawn of the internet. Still what is in an acronym? My company has been CTPP since 1986, but recently someone decided to call their CTalk preprocessor CTPP too.

ChaOS development is continual and broad-based, running at v1.02 32-bit on the servers and public downloads, and v1.03 for in-house projects with multi-processor and 64-bit enhancements.

Operational ChaOS Servers: (10/9/2012) Platform: ChaOS v1.02 on Intel D525MW 1.8GHz Atom Mini-ITX PC behind Vigor 2800G router

These servers are experimental, and not always online

TELSRV: TELNET chaos.ctpp.co.uk (82.68.176.217)

          Logon with user anon and password pass.

          Only four user commands are running:

          ? displays list of valid commands

          ver displays the version of ChaOS over which the server is running

          time displays server time of day and uptime

          quit to end the session.

HTPSRV: HTTP server now hosting...
http://chaos.ctpp.co.uk
http://bob.ctpp.co.uk
http://longstreet.co.uk

FTPSRV: Private multi-user FTP server at ftp://subdomain.ctpp.co.uk, for uploads to the web servers. A public FTP by anonymous login will one day reside at ftp://chaos.ctpp.co.uk

ChaOS Projects (last update 10/9/2012):                                       Other Projects                  

Project

Description

Platform

Status

Version

ChaOS

A self-compiling PC Operating System

Features: A text-based system  with embedded source code, inbuilt source level debugger, compiler, linker editor, source extractor (recreate all original source from any compiled executable), FAT and FAT32 read/write file system, EXT2 (Read-only), Custom re-enterable bootstrap with multiple bootable partitions, ISO CD backup (bootable).

Load-on-detect device drivers. Unique MULTIXEC OS file format to launch OS, with embedded device drivers and applications if desired. MULTIXECs need no filesystem.

Flat 4Gb linear application space with no segmentation.Global type space providing type-safe dynamic linking between applications, device drivers and operating system.

Datagram-based network with remote file, memory and port access, remote reboot etc. Compatible with IPX over Netware Lite, messages in UDP wrapper transmitted over IPv4 to mesh with NJOB.

Chaos ISO CD Demo downloads now on website.

Intel processors: 386, 486, Pentium-II, Pentium-III, Pentium-4, Pentium-D, Xeon, Atom-330, Atom N270, i7-920

Chipsets: Intel 440, 845, 860, E7505, 945, X58 express

Multiple processor capability

Note: ChaOS has been developed on Intel processores, but there are few procesor-specific features, AMD machines will also boot the ChaOS demo CDs.

Working since 1995

VESA GUI for MAP5 (GPS on tablet PC)

Multi-processor support dictates an overhaul of ChaOS interrupt handling. Currently developing ACPI browser to view, and decode motherboard PCI IRQ routing. Then reliable algorithms to assign interrupts to the APICs will be possible.

Improving TCP/IP capability, with a view to running a native ChaOS internet server. Simple TELNET server (TELSRV) now running at chaos.ctpp.co.uk.

Simple TELNET capable of SMTP, POP3 and FTP login.

Simple HTTP server (HTPSRV) demonstrated, capable of multiple hosts on one IP

Simple TELNET server (TELSRV)

GUID EFI_PART partition support added, to allow up to 128 partitions per hard disk

Simple FTP server (FTPSRV)

Simple Multiprocessor support. MP launcher for ChaOS .XECs, to run processes on APs. APs can be stopped by hard or user breakpoints for source-level debugging.

NJOB accounts, order processing and ink shop management ported from DOS4GW

HP JetDirect support

1.02.27976

CFS

ChaOS File System, originally designed in 2000 to overcome the 2Gb partition size limitation of FAT16.

Recently revived following US patent law reversal (May 2009) in favour of Microsoft and their desire to extract a tax on memory sticks which use FAT 8:3/longfilenames.

CFS is radical, has no physical directories, inodes or file allocation tables on the disk. Directory tree structures exist only in memory, with a binary index returning filenames and directory names always in alphabetical order.

No physical disk access is required to locate file details, so disk clatter (disk heads oscillating between file allocation tables and file data sectors) is non-existent.

As above

Working since 2000.

Revised April 2010, adding binary index.

EDD bootstrap and device driver mechanism added, to boot CFS partitions anywhere up to 2 Terabyte disk address

Jul 2010 added CTPPNET network redirector to CFS.

1.02.27976

AXIS

CNC stepper motor drive project, using algorithms from D10 (see below).

Developed to handle all kinds of stepper controllers via IEEE1284 parallel port, including home-grown direct-drive circuits popular with PIC-based robot developers.

ChaOS v1.03 and above, minimum two-thread processor required, Intel Atom 330 and D525 being used for development

Work in progress.

Currently running stepper drives for CNC cylindrical surface grinder.

1.03.28125

ChaOS Dec 2011 ISO

ChaOS MULTIXEC containing operating system with read-write support for BIOS disk devices. Also includes compiler, linker, editor, bootstrap and hard disk installation (ChaOS Setup) implemented via a simplistic HTML browser ht. Source code is present for all but the compiler and linker, self-extracted during setup. F1 key invokes ht, to access help screens embedded with the source code for each project. Help is a work-in-progress, so this download will be updated with further help screens as they become available.

ChaOS Setup creates a 4-way bootable hard disk installation, each containing a copy of this download, and source code extracted into a working subdirectory tree. Each partition is in effect a self-contained development system.

As above, and needs 128Mb memory

Download available  dec2011.iso

1.02.27951

ChaOS Dec 2009 Demo

ChaOS demo with full operating system source code, self-extracting into development RAMdisk. Includes compiler, linker and editor to make and run programs on the RAMdisk.

Operating system can be rebuilt and launched from RAM.

VESA graphics mode on CTRL|ALT|V

As above, and needs 128Mb memory

Download available  dec2009.iso

1.02.27160

ChaOS Nov 2009 Demo

Improved download with VESA graphics

As above

Download available  nov2009.iso

1.01.25721

ChaOS Nov 2008 Demo

Improved download with bootstrap reentry demonstration

ISO CD image

As above

Download available  nov2008test.iso

1.01.24382

ChaOS Oct 2008 Demo

Reworked version of 2005 floppy disk download.

Most of source code left in the bootable image, viewable in the debugger

ISO CD image

As above

Download available oct2008.iso

1.01.24286

Map5

Porting Map4 to VESA graphics and Stylistic ST4110

Custom PCI IRQ routing to make Cardbus slot work

Fujitsu Stylistic ST4110 Tablet PC

1GB CF Flash as boot drive

CF GPS in PCMCIA slot

VESA graphics running fine

95% complete

VESA graphics debugging using dual monitor debugger

1.01.24722

Map4

Amateur Pilots kneeboard with GPS, running over ChaOS

Fujitsu Stylistic 2300 Tablet PC

Working since 2004

Superceded by MAP5 Jan 2009

1.01.23998

Cobden

Cobden Chadwick Flexographic Printing Press sequencer and operator radio remote control

Intel Pentium II

Working since 1997

Major update 31/8/2009

1.01.24890

VESA/WND

GUI for ChaOS

Intel 386/Pentium Intel 440 and 845 chipset

Prototype working with several VESA graphics modes, debug break with mode switch for source code stepping on single-monitor system

Multiple monitor support

1.01.24548

IP (Internet Protocols)

ARP support

DHCP support

TCP/IP support

DNS support

HTTP support

TELNET support

FTP support

Realtek 8029 (NE1000/NE2000)

Realtek 8139

Realtek 8100/1E

Making good progress

ARP broadcast and reply, to establish a network presence

DHCP negotiation with router

DNS query and response decode working, now have usable getdomainipaddress() function to locate website IPs for HTTP sessions

TCP passive listen, and negotiate connection request from remote (this is more of server-side thing)

TCP start client session working

ICMP Ping, and Traceroute by successive PING with deprecated ttl count

Get WAN IP now available on ChaOS server by UDP packet exchange at 82.68.176.217:51717

Experimental Public HTTP/1.1 server running 82.68.176.217:80 == http://chaos.ctpp.co.uk

Experimental Public TELNET server running anon:pass@82.68.176.217:23

Experimental Private FTP server running 82.68.176.217:21 == ftp://chaos.ctpp.co.uk

UDP encapsulation for CTPPNET IPX packets

1.02.27976

Map

Amateur Pilot kneeboard operated by touchscreen with GPS moving map, DR navigator with wind vector corrections, running over ChaOS

Fujitsu Stylistic 1200 Tablet PC

 

Working since 2002

 

ChaOS 2005 release 

First ChaOS internet download

1.44Mb floppy disk image

 

Superceded by ISO CD demo

MF.COM, written for Windows98 to create a ChaOS boot floppy will not work on Windows XP

This is the age-old problem with Microsoft, continually having to relearn their system to keep things current. Reminds me of why I started the ChaOS project

1.01.22999

DOS/Windows Projects (last update 15/3/2010):

Project

Description

Platform

Status

Version

JOB

Order Processing and Accounting package

Intel 8088/8086/80286

Microfocus Cobol/2

Superceded by NJOB

 

STEP

Stepper motor drive program using PC as a sophisticated programmable microcontroller

Intel 8088/8086/80286

8086 Assembly language

Step is the foundation of the CNC in D10

 

 

LOTTI

Repeating design image processor to scan, edit and output repeating textile designs to Sharp piezo inkjet printers using sublimation dyestuffs. Featured on BBC's Tomorrow's World programme Christmas edition 1990.

Intel 286/386

Zorland C++ and 80286/386 assembly language

Project abandoned in 1995 after Sharp UK dropped inkjets. Project lives on in D10, and our Laser CNC

 

SHARPSCAN100

Windows 3.1 driver for Sharp JX100 handy scanner. Written for, and distributed by Sharp (UK) Ltd

Intel 368/486 

Windows 3.1

Still works I guess, not many of those scanners around though

 

NJOB

Order Processing and Accounting package with fast memory-resident indexed databases. Includes INKS suite for recording recursive reused recipes for print jobs

Custom network using IPX over Netware Lite, compatible with ChaOS network

Previously JOB (1986 onwards) hosted on MicroFocus COBOL/2

Intel Pentium II 350MHz

Watcom DOS4GW

Working since 1995

Prototype indexed databases now running over ChaOS (15/3/2010)

NJOB accounts and order-processing now running over ChaOS, with PCL laser printed documents

1.02.26867

L4

Image preprocessor for D10

Previously Lotti (1989) L1,L2,L3 etc

Intel Pentium II 350MHz

Watcom DOS4GW

Working since1995

Ported to ChaOS Autumn 2010

 

D10

CO2 Laser CNC for engraving rubber print rollers using PC as a sophisticated microcontroller to control three CNC axes Runs a 600kHz timing loop (that is as fast as PC I/O bus cycles allow, irrespective of processor speed)

Previously D1,D2 etc

Intel Pentium II 350MHz

Watcom DOS4GW

Working since Nov 1998

Prototype now running over ChaOS (29/3/1010)

1.02.26258

 

ChaOS - A brief history

ChaOS is a result of frustration with the Microsoft thread of operating system design, a frustration which built during the period 1985 to 1995, when PC hardware and software development was frenetic. During that time, I first wrote accounting and order processing software for my small textile business, based in the North of England. Then some software for creating and editing repeating patterns for continuous textile prints. By 1990, I was shoving our dyestuffs through reluctant piezo-electric inkjet printers to create textile transfers, mimicking our bulk continuous transfer prints. At the time Sharp Electronics(UK) took some interest, and a brief appearance of the Lotti Design System on the BBC Tomorrows World programme (Christmas 1990) rounded off that year. Sharp Electronics asked me to write a Windows driver for their JX-100 handy scanner. This was completed (SharpScan100) by March 1991, but I found Windows programming to be expensive - several hundred pounds at the time for the development kits needed.

Keeping a custom software package working through those years was expensive and technically challenging, through 8086,80286 80386, to 80486 and Pentium. Major work was required to take advantage of each step change in processor architecture. I needed a system which would remain stable for years rather than months, with real-time capability, and so dropped out of the DOS/Windows rat-race.

By 1995 I had bought a factory for the textile business, and had two more software projects in mind. First, a radio-frequency remote control system for our main Cobden Chadwick print machine, and a CO2 laser CNC to cut rollers for the Cobden Chadwick.. My Windows experience had taught me that this was an unsuitable operating system for real-time interaction with the outside world. In a bookshop I found Richard Burgess book Developing Your Own 32-bit Operating System, and thought I might be able to modify the system described in the book (MMURTL) to run the print machine.

I soon had MMURTL running, and was astonished by the speed at which things ran on a computer in native 32-bit linear mode. But programming MMURTL was not easy, as it required a deep understanding of PC hardware, something which I lacked (having been protected from the hardware by BIOS, DOS and Windows APIs). Furthermore, the compilers supplied to build MMURTL were creaky. But Richard Burgess did include the source code to the compilers in his distribution disk. I recompiled these using my now favourite Watcom C++ v10.0 into 32-bit DOS4GW programs, decided I could do better, and wrote a one-pass C compiler from scratch with inline assembler and floating point support. I designed a custom flat 32-bit executable format and a loader called DBG to single-step the compiler output. Soon I added source files to the executable for source-level debugging of a project, followed by a processor bootstrap and DOS launcher developed by combining elements of the MMURTL loader with the protected mode switches used to store and display repeating designs in the Lotti program of 1990.

It was a natural step to attempt a native bootstrap for ChaOS, and soon I had created my first, home-grown bootable floppy disk. ChaOS was born.

By 1997, ChaOS was running the RF remote control system on the Cobden Chadwick print machine. ChaOS has booted up on workday mornings now for thirteen years.

Since then I have built my laser CNC, then learnt to fly aeroplanes, which caused me to forget about ChaOS for while. I have been a bit slow to embrace the internet, discovering Linux in 2004 - had I explored Linux sooner maybe ChaOS would never have been written. But I have tasted the freedom of complete control over my computers, and there is no going back.

In 2003 I began installling ChaOS on portable PCs, Toshiba Librettos and then Fujitsu Stylistic pen tablets. It has been great fun writing the GPS software for my electronic amateur pilot kneeboard.

In 2005 I posted a floppy disk download of ChaOS on the internet.

May 2008: completed my JAR Commercial Pilot License.

September 2008: began building this website.

October/November 2008: posted the first ChaOS ISO CD downloads.

December 2009: released the first self-compiling ChaOS demo, again in ISO CD format.

June 2010: completed JAR Flight Instructor Rating.

December 2011: released ChaOS ISO CD with hard disk installation routine.

Back to CTPP        Back to Top of page

All trademarks acknowledged as the copyright of their respective owners

The old ChaOS2001 webpages are here, looking a bit dated, I will probably scrap them soon. Or you may wish to contact us