Skip to content

CFdefense/RetrOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

248 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RetrOS - A Retro-Styled Operating System

🏆 Awarded 'Hall of Fame' - Fall 2025

A fully functional operating system simulation running entirely in your browser, built with TypeScript. Originally created for Professor Alan Labouseur's Operating Systems course at Marist College.

Features

  • Memory Management: Full paging system with virtual memory support
  • Disk System: Persistent storage with file system operations
  • Process Swapping: Roll-in/roll-out process swapping between memory and disk
  • Multi-Level File System: Complete file system with directories and file management
  • Modern UI: Retro-inspired interface with real-time system monitoring
  • CPU Scheduling: Multiple scheduling algorithms (Round Robin, FCFS, Priority)
  • Shell Commands: Unix-like command interface for system interaction

About

This project is based on the TSOS (TypeScript Operating System) framework originally developed by Professor Alan Labouseur and enhanced by Bob Nisco and Rebecca Murphy. Visit the course website for more information about the curriculum and project requirements.

Project Structure

├── index.html                          # Main application entry point
├── tsos.css                            # Stylesheet for the OS interface
├── c                                   # Compile script for TypeScript
├── source/                             # TypeScript source files
│   ├── globals.ts                      # Global variables and constants
│   ├── utils.ts                        # Utility functions
│   ├── host/                           # Hardware simulation layer
│   │   ├── control.ts                  # System control and initialization
│   │   ├── cpu.ts                      # CPU simulation and instruction execution
│   │   ├── memory.ts                   # Physical memory management
│   │   ├── memoryAccessor.ts           # Memory access interface
│   │   ├── disk.ts                     # Disk storage simulation
│   │   ├── devices.ts                  # Hardware device management
│   │   └── instructions.ts             # CPU instruction set definitions
│   ├── os/                             # Operating system layer
│   │   ├── kernel.ts                   # Kernel initialization and core functions
│   │   ├── shell.ts                    # Command-line interface
│   │   ├── shellCommand.ts             # Shell command definitions
│   │   ├── userCommand.ts              # User command parsing
│   │   ├── console.ts                  # Console I/O handling
│   │   ├── canvastext.ts               # Canvas-based text rendering
│   │   ├── interrupt.ts                # Interrupt handling system
│   │   ├── pcb.ts                      # Process Control Block
│   │   ├── queue.ts                    # Queue data structure
│   │   ├── scheduler.ts                # CPU scheduling algorithms
│   │   ├── dispatcher.ts               # Process dispatcher
│   │   ├── memoryManager.ts            # Virtual memory and paging
│   │   ├── deviceDriver.ts             # Base device driver class
│   │   ├── deviceDriverKeyboard.ts     # Keyboard input driver
│   │   └── deviceDriverDiskSystem.ts   # Disk I/O driver
│   └── images/                         # UI assets (backgrounds, icons, videos)
├── distrib/                            # Compiled JavaScript output
├── test/                               # Test programs and scripts
│   ├── glados-ip0.js                   # Test program: Project 0
│   ├── glados-ip1.js                   # Test program: Project 1
│   ├── glados-ip2.js                   # Test program: Project 2
│   ├── glados-ip3.js                   # Test program: Project 3
│   ├── glados-ip4.js                   # Test program: Project 4
│   └── glados-ip4x.js                  # Test program: Project 4x
├── scheduling/                         # CPU scheduling simulation tools
│   ├── sched_start.cpp                 # Scheduling algorithm simulator
│   ├── schedSim                        # Compiled scheduling simulator
│   └── input.txt                       # Test input for scheduler
├── writeups/                           # Lab documentation and reports
│   ├── Lab_000.pdf                     # Project setup and environment
│   ├── Lab_001.pdf                     # Shell and basic commands
│   ├── Lab_010.pdf                     # Memory management
│   ├── Lab_011.pdf                     # CPU scheduling
│   └── Lab_100.pdf                     # File system implementation
└── tsconfig.json                       # TypeScript compiler configuration

Setup

Prerequisites

  • Node.js and npm package manager
  • TypeScript compiler

Installation

  1. Install TypeScript globally:
   npm install -g typescript
  1. Clone this repository:
   git clone https://github.com/cfdefense/RetrOS.git
   cd RetrOS
  1. Compile the TypeScript source:
   ./c
  1. Open index.html in your browser or serve it with a local web server.

Contributing

This is an academic project. If you're a student taking this course, please maintain academic integrity and use this as a reference only.

License

Based on the TSOS framework by Alan Labouseur. Educational use only.

Acknowledgments

  • Professor Alan Labouseur - Original TSOS framework and course design
  • Bob Nisco & Rebecca Murphy - Framework enhancements
  • Marist College - Operating Systems course

For course materials and additional resources, visit the official course website.

About

A Retro-Themed Operating System

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published