GeckOS

Last updated

GeckOS
GeckOS 20.png
GeckOS Shell
Developer André Fachat
OS family Unix-like
Working stateHistoric
Source model Open source
Latest release 2.1.1 / January 25, 2024;2 months ago (2024-01-25)
Latest preview 2.0.9 / October 6, 2013;10 years ago (2013-10-06)
Repository github.com/fachat/GeckOS-V2
Platforms MOS Technology 6502
Kernel type Microkernel
License GPLv2
Official website 6502.org

GeckOS is a multitasking operating system for MOS 6502, and compatible processors such as the MOS 6510. [1] The GeckOS operating system is one of the few successful attempts to implement a Unix-like operating system on the 6502 architecture.

Contents

Overview

The system offers some Unix-like functionality including pre-emptive multitasking, multithreading, semaphores, signals, binary relocation, TCP/IP networking via SLIP, and a 6502 standard library. [2] [3] [4]

GeckOS includes native support for the Commodore PET (32 KB and 96 KB models), Commodore 64 and the CS/A65 homebrew system. [5] Due to the platform independent nature of the kernel code, GeckOS is advertised as an extremely easy OS to port to alternative 6502 platforms.[ citation needed ]

Binary compatibility with the LUnix operating system can be attained when the lib6502 shared library is used.[ citation needed ]

Due to the small fixed-location stack of the 6502, and because an external MMU is rarely provided, multitasking is somewhat limited. [6] The OS supports a maximum of four tasks when a shared stack space is used.[ citation needed ] This can be increased to sixteen tasks when stack snapshotting is enabled, although this is done at the expense of some system speed.[ citation needed ]

A webserver is integrated into the SLIP daemon. [3]

Unix on 6502 architecture

While early versions of Unix ran on for example early model PDP-11 computers that were comparable to Commodore 64 in terms of memory and processor performance there were architecture differences in terms of lack of a kernel mode, only 3 8-bit registers versus eight 16-bit general registers, and a fixed stack. These architectural limitations make implementing a Unix-like operating system on the 6502 challenging. [7]

The possible non-exhaustive list of other viable Unix-like implementations on 6502 are LUnix, Asterix (Chris Baird) and ACE (Chris "Polar" Baird). GeckOS arguably is more complete in some respects, with ACE being stronger in terms of standard Unix utilities but weaker in the operating system area. [8]

Related Research Articles

<span class="mw-page-title-main">Computer multitasking</span> Concurrent execution of multiple processes

In computing, multitasking is the concurrent execution of multiple tasks over a certain period of time. New tasks can interrupt already started ones before they finish, instead of waiting for them to end. As a result, a computer executes segments of multiple tasks in an interleaved manner, while the tasks share common processing resources such as central processing units (CPUs) and main memory. Multitasking automatically interrupts the running program, saving its state and loading the saved state of another program and transferring control to it. This "context switch" may be initiated at fixed time intervals, or the running program may be coded to signal to the supervisory software when it can be interrupted.

In computing, the Executable and Linkable Format, is a common standard file format for executable files, object code, shared libraries, and core dumps. First published in the specification for the application binary interface (ABI) of the Unix operating system version named System V Release 4 (SVR4), and later in the Tool Interface Standard, it was quickly accepted among different vendors of Unix systems. In 1999, it was chosen as the standard binary file format for Unix and Unix-like systems on x86 processors by the 86open project.

<span class="mw-page-title-main">MOS Technology 6502</span> 8-bit microprocessor from 1975

The MOS Technology 6502 is an 8-bit microprocessor that was designed by a small team led by Chuck Peddle for MOS Technology. The design team had formerly worked at Motorola on the Motorola 6800 project; the 6502 is essentially a simplified, less expensive and faster version of that design.

<span class="mw-page-title-main">Operating system</span> Software that manages computer hardware resources

An operating system (OS) is system software that manages computer hardware and software resources, and provides common services for computer programs.

In computer architecture, 8-bit integers or other data units are those that are 8 bits wide. Also, 8-bit central processing unit (CPU) and arithmetic logic unit (ALU) architectures are those that are based on registers or data buses of that size. Memory addresses for 8-bit CPUs are generally larger than 8-bit, usually 16-bit. 8-bit microcomputers are microcomputers that use 8-bit microprocessors.

<span class="mw-page-title-main">System call</span> Way for programs to access kernel services

In computing, a system call is the programmatic way in which a computer program requests a service from the operating system on which it is executed. This may include hardware-related services, creation and execution of new processes, and communication with integral kernel services such as process scheduling. System calls provide an essential interface between a process and the operating system.

The development of a hobbyist operating system is one of the more involved and technical options for a computer hobbyist. The definition of a hobby operating system can sometimes be vague. It can be from the developer's view, where the developers do it just for fun or learning; it can also be seen from the user's view, where the users are only using it as a toy; or it can be defined as an operating system which doesn't have a very big user base. Development can begin from existing resources like a kernel, an operating system, or a bootloader, or it can also be made completely from scratch. The development platform could be a bare hardware machine, which is the nature of an operating system, but it could also be developed and tested on a virtual machine. Since the hobbyist must claim more ownership for adapting a complex system to the ever-changing needs of the technical terrain, much enthusiasm is common amongst the many different groups attracted to operating system development.

ARX was an unreleased Mach-like operating system written in Modula-2+ developed by Acorn Computers Ltd in the Acorn Research Centre (ARC) United Kingdom (UK) and later by Olivetti - which purchased Acorn - for Acorn's new Archimedes personal computers based on the ARM architecture reduced instruction set computer (RISC) central processing unit (CPUs).

KERNAL is Commodore's name for the ROM-resident operating system core in its 8-bit home computers; from the original PET of 1977, followed by the extended but related versions used in its successors: the VIC-20, Commodore 64, Plus/4, Commodore 16, and Commodore 128.

<span class="mw-page-title-main">Contiki</span> Real-time operating system

Contiki is an operating system for networked, memory-constrained systems with a focus on low-power wireless Internet of Things (IoT) devices. Contiki is used for systems for street lighting, sound monitoring for smart cities, radiation monitoring and alarms. It is open-source software released under the BSD-3-Clause license.

<span class="mw-page-title-main">LUnix</span> Operating system

LUnix is a Unix-like multi-tasking operating system designed to run natively on the Commodore 64 and Commodore 128 home computer systems. It supports TCP/IP networking. Unlike most Unix-like systems, LUnix is written in 6502 assembly language instead of C.

The proc filesystem (procfs) is a special filesystem in Unix-like operating systems that presents information about processes and other system information in a hierarchical file-like structure, providing a more convenient and standardized method for dynamically accessing process data held in the kernel than traditional tracing methods or direct access to kernel memory. Typically, it is mapped to a mount point named /proc at boot time. The proc file system acts as an interface to internal data structures about running processes in the kernel. In Linux, it can also be used to obtain information about the kernel and to change certain kernel parameters at runtime (sysctl).

<span class="mw-page-title-main">MicroEmpix</span>

MicroEmpix is the microkernel version of Empix, an operating system (OS) developed at the Computing Systems Laboratory (CSLab) of the Electrical & Computer Engineering department at the National Technical University of Athens.

In computing, preemption is the act of temporarily interrupting an executing task, with the intention of resuming it at a later time. This interrupt is done by an external scheduler with no assistance or cooperation from the task. This preemptive scheduler usually runs in the most privileged protection ring, meaning that interruption and then resumption are considered highly secure actions. Such changes to the currently executing task of a processor are known as context switching.

In computer networking, STREAMS is the native framework in Unix System V for implementing character device drivers, network protocols, and inter-process communication. In this framework, a stream is a chain of coroutines that pass messages between a program and a device driver. STREAMS originated in Version 8 Research Unix, as Streams.

A Unix architecture is a computer operating system system architecture that embodies the Unix philosophy. It may adhere to standards such as the Single UNIX Specification (SUS) or similar POSIX IEEE standard. No single published standard describes all Unix architecture computer operating systems — this is in part a legacy of the Unix wars.

<span class="mw-page-title-main">SymbOS</span>

SYmbiosis Multitasking Based Operating System (SymbOS) is a multitasking operating system for Zilog Z80-based 8-bit computer systems.

<span class="mw-page-title-main">Berkeley Software Distribution</span> Unix operating system

The Berkeley Software Distribution or Berkeley Standard Distribution (BSD) is a discontinued operating system based on Research Unix, developed and distributed by the Computer Systems Research Group (CSRG) at the University of California, Berkeley. The term "BSD" commonly refers to its open-source descendants, including FreeBSD, OpenBSD, NetBSD, and DragonFly BSD.

<span class="mw-page-title-main">Kernel (operating system)</span> Core of a computer operating system

The kernel is a computer program at the core of a computer's operating system and generally has complete control over everything in the system. The kernel is also responsible for preventing and mitigating conflicts between different processes. It is the portion of the operating system code that is always resident in memory and facilitates interactions between hardware and software components. A full kernel controls all hardware resources via device drivers, arbitrates conflicts between processes concerning such resources, and optimizes the utilization of common resources e.g. CPU & cache usage, file systems, and network sockets. On most systems, the kernel is one of the first programs loaded on startup. It handles the rest of startup as well as memory, peripherals, and input/output (I/O) requests from software, translating them into data-processing instructions for the central processing unit.

References

Footnotes

Sources