/ClassicOS

An x86 32 biit Operating System for 386, 486, Pentium class (P-60 to 233MHz, Pentium II, P3, P4, etc)

Primary LanguageCGNU General Public License v3.0GPL-3.0

ClassicOS

This operating system uses standard operating system concepts used in the 32 bit environment. It will eventually be ported to 64 bit including IA64. This ClassicOS operating system, aims to support major hardware and software technology existing from when the first 32 bit systems appeared on the market through the early 2000's and most of those have been listed below.

Programming

This project uses the C library and Assembly language.

Toolchain

GNU Make 4.2.1 CMake 3.13.4 GNU 8.3.0 gcc (Debian 8.3.0-6) 8.3.0 nasm 2.14 GNU ld (GNU Binutils for Debian) 2.31.1 binutils

For testing, QEMU i386 and TigerVNC/VNCViewer on ::1:5900

Development (Team, etc)

This project will use MIT or the GPL license and will be fully open source.

Ideal situations aside, My goal has always been:

1-2 person working on bootloader 1-2 person working on kernel 1-2 person working on drivers 1-2 person working on issues/bugs 1-2 people working on applications/user-space 1-2 people working on Networking 1-2 people working on memory issues, stack issues, etc.

at least one person doing hardware and software testing and writing tests in a test framework

At least one major bug fix a week At least one minor buf fix a week At least one new feature a month (or more)

CPU Processor Support

This project initially aims to support all 32 bit Intel and AMD processors Including;

-- Intel -- i386 SX and DX Processors i486 SX and DX Processors Pentium Processors (60 to 120MHz) Pentium Pro Processors Pentium II Processors Pentium II Xeon Processors Pentium III Processors Pentium III Xeon Processors early Pentium 4 Processors (Willamette, Prescott, Northwood)

-- AMD --

AMD k5 AMD K6 AMD am386 AMD am486 Athlon Duron Sempron

Device Support

USB 1.0 USB 1.1 USB 2.0 USB 2.1 SATA 1 UDMA UltraATA 66/100/133 SCSI-1 SCSI-2 SCSI-3 Ultra-2 SCSI Ultra-3 SCSI ESDI MFM/RLL

Booting

BIOS from

  • primary hard disk partition
  • primary floppy
  • ISO 9660 CD-ROM, CD-R,CD-RW,
  • DVD
  • Removable media (Zip, Jaz, USB, Tape, Syquest, Bernoulli, CF, SmartMedia, SD etc)

Might eventually support GRUB/GRUB2 and/or UEFI/EFI.

Include support for AHCI and ACPI

Bus Support

ISA EISA VESA/VESA Local Bus (VLB) PCI PCI-X PCIe 1.0, 1.1, 2.0 AGP DIN 41416/NuBUS

Hardware support

This OS aims to support major hardware existing from 1985 to early 2k's.

Memory Support

up to 4GB

Features

Has a GUI Has a IDE Has a text editor Has compilers for compiled lanugages (C, C++, C#, Go, Java, Fortran, Pascal, Objective C, Haskell, ADA, Scala, Rust, Zig, Ocaml, Julia, Dart, Erlang, Elixir) Has a Web Browser Has a shell, tty, console, terminal Has interpreters for interpreted languages like python 2 and python 3, JavaScript, BASIC, PHP, etc. Has a git client Has a video, audio editing and playing suite Has a file browser (in GUI) Has debuggers for languages/compilers, etc that output symbols, etc.

Video Support

-- Modes -- CGA EGA VGA SVGA MCGA XGA HGA / Hercules XGA-2 SXGA UXGA WXGA 8514/a VESA SVGA VESA/VLB AGP (1.0, 2.0, 3.0, 3.5, Pro) - 66MHz - aka AGP 1X, 2X, 4X, 8X PCI Graphics

-- Resolutions --

Networking

Novell NE1000 Novell NE2000

Drivers

-- Video card(s)

3dFx Voodoo2, Voodoo3 cards
NVIDIA NV1
NVIDIA Riva 128
ATI VGA Wonder
NVIDIA GeForce 256
NVIDIA GeForce 2 GTS
NVIDIA GeForce 3 Ti500
ATI Radeon DDR
ATI Radeon 9700 Pro
ATI Radeon 9800 Pro
Matrox Millennium and MGA Millennium
Matrox G400
Matrox Mystique
Matrox G200
Matrox G400
ATI Mach8
ATI Mach32
ATI Mach 64
ATI 3D Rage
ATI Rage Pro
ATI Rage 128 Pro
ATI Rage Wonder

-- NIC's (3Com, Intel, etc.)

Intel EtherExpress Pro/100
3Com EtherLink I, II & III cards in the 3c5xx - 3c9xx series model range.
Linksys LNE series cards
Netgear FA3xx/FA4xx series and GA series cards

-- Audio

Filesystems

  • FAT12
  • FAT16/FAT16B/FAT16X
  • FAT32/FAT32X
  • NTFS
  • HPFS
  • HFS / HFS+
  • ext / ext2 / ext3
  • exFAT
  • ZFS
  • JFS

Build

nasm -f elf32 boot.asm -o boot.o ; gcc -m32 -ffreestanding -nostdlib -fno-pic -fno-pie -std=c11 kernel.c boot.o -o kernel.bin -T linker.ld nasm -f elf32 boot.asm -o boot.o ; gcc -m32 -ffreestanding -nostdlib -fno-pic kernel.c boot.o -o kernel.bin -T linker.ld nasm -f elf32 boot.asm -o boot.o ; gcc -m32 -ffreestanding -nostdlib -fno-pie kernel.c boot.o -o kernel.bin -T linker.ld