Code Monkey home page Code Monkey logo

nanortos's Introduction

NanoRTOS

This is a small, single processor, multithreading, cooperative operating system. It relies on DOS for basic Disk access.

History

  • Originally IPC (Intelligent Peripheral Controller)
  • Originally NIPC (New Intelligent Peripheral Controller)
  • Renamed at some point to PNTHROS (Panther OS.)

While writing this document about directory structure; I found this header emitted in loader.c. I updated it subsequently.

  print("Intelligent Peripheral Controller\r\n");
  print("Copyright (c) 1992,1993 Logical Data Corporation\r\n");
  print("All Rights Reserved.\r\n");
  print("Requested release for research purposes... (pending)\r\n" );
  print("Copyright (c) 2019 Freedom Collective\r\n");
  print("No Rights Reserved.\r\n");
  print("Released Open Source 2019;WTFPL");
  print("If you make it better, maybe share that back?\r\n");

LDC May still exist. This code is from before 1995. LDC Did continue development on their own sysems, even migrating to QNX for the host operating system instead of DOS.

Rights

  • 2019-05-23

I found Richard Whitworth (owner of LDC) on linked in, and attempted to contact him that way, and there was no response. (Is he dead?). I contacted MicroSystems(?) - the company which purchased borland. Borland retained (apparently) the rights to their compiler IP until they were finally bought as a whole. They Contacted me on the phone and I spoke to an assistent legal representative. They have not returned my call.

  • 2019-07-19 No responses.

If anyone cares to claim any part of this, I'll remove from abandonware (Much like Diablo2 after 2018 Reverse engineering) (See)[https://www.myabandonware.com/game/diablo-3it]

Diablo is available a small price on the following websites, and is no longer abandonware. GoG.com provide the best releases and does not include DRM, please buy from them! You can read our online store guide.

What is This?

A Micro Operating system which runs in X86 DOS.

VGA Text Graphics output.

Dynamic loader support; functions can request functions from the core, and get fixed up to patch over the request code.

Built with Turbo C (2.1?) Probably Borland C 3.1...

ASM is in TASM (Turbo Assembly from Borland) assembly format.

( should track down those)


Howto build

tools/bcc.7z is a copy of borland C 3.1 (1992, 27 years old?)

the MAKEFILEs are probably bcc make. the BATCH.IPC folder has batch files to do compile, assemble and link.

BATCH.IPC`

  • ML.BAT - model Large compile ( far pointer default, multiple code and data segments)

  • QMC.BAT - modified compact model?

  • MC.BAT - model compact. (seprate code, data, one segment each)

  • ASM.BAT - compile some assembly

  • BACKIPC.BAT - obsolete backup of sources

  • RESEXE.FIL - linker script used in ML

  • MEDRES.FIL - linker script for MC

  • CMDWND - simple toy project that emulates command.com (supports dir, and copy)

  • COMM - COM port driver (IRQ3/4...)

  • COMMON.IPC - this would be like 'include'

    • (STRUCT.OS)[COMMON.IPC/STRUCT.OS] - documentation on OS Structures
    • OS.H - task structure
    • LOADER.DOC - earlier documention before OS.DOC. (deprecated)
    • (OS.DOC)[COMMON.IPC/OS.DOC] - documentation OS fork() and perish(), and Dynamic linking.
    • MODHEAD.ASM - module deadstart header - this is the entry point for modules.
    • MOD.H - C header for interface to module header.
    • MMODHEAD.ASM - C header for interface to medium module header.
    • BITS.H - bit math utility macros
    • most of the others are kind of empty, or are actually build products, or reference something else.
    • NPCA.H -
  • DISK - Obsolete SCSI controller.

  • ETHER - Obsolete western digital ether driver + TCP Stack (could be salvaged).

  • HANDLERS - ??? New Versions of Older things? Dev things before other things?

  • HOSTESS - This was a driver for a smart COM port card that had offboard CPU to control the com ports, allowing protocols to be offloaded to external card, and sending full packet buffers to CPU. 16/32 port RS-232 for Dialup/Terminal Sharing services.

  • KEYBRD - Keyboard/Mouse Driver; take keyboard scan codes, and make numbers and letters out of them. Uses a text CONFIG.KBD that gets compiled to a CONFIG.I file. PROC.C is the processor. UNPROC.C is a de-coimpiler of the configuration.

  • LISP - Hobby project to introduce a command-line LISP processor. It parses text a little bit (gets expressions). Doesn't do much

  • LOADER - This is the core OS.

    • EXEC.ASM - Executive Services ( general interface like int 21/syscall) looks like a wrapper for some other fucntions to Regsiter and Request functions, fork, relinquish, ...
    • HUGEHEAD.ASM - entry point code for main to setup stack.
    • LOADER.C - Entry point for OS. Loads other modules; Core OS.
    • MEMORY.ASM - memory allocation system, uses a 16 byte header between allocated blocks (span of 1 segment). Alloc(), Free().
    • MISCROU.ASM - C Runtime libraries. The Borland library required a lot of space, and I didn't use that much of the CRT.
    • OSDISK.ASM - Disk (open/close/read/write/seek) interface to DOS Int 0x21 services.
    • OSLIB.ASM - this would be like the IMPORT library header. Modules link to this, which requests the address of the CRT routines from the OS core.
    • SWAPPER.ASM - This handles stack(thread) creation, and swapping. Tasks are given stacks themselves, but are tracked separately so we can get per-module CPU usage. Also handles interrupt context switching. Allowing interrupts to use system services and return.
    • MAKEFILE - the script to make this module.
  • MULTHAND - Not sure...

  • PARALLEL - port for parallel port on classic PC.

  • PCA - LDC proprietary hardware- PC Adapter (makes PC slave of another system)

  • PCM - PC Mynah was another LDC product which was a terminal emulator, which I wanted to port to this OS, but apparently didn't get very far.

  • POINTER - updates a cursor on the video display based on keyboard/mouse input.

  • TESTS - Probably some tests... very obsolete.

  • UPS - Uninteruptable POwer Supply Monitor that will popup a message / BEEP when there's power issue. (few dozen lines of code)

  • UTILS - These are some extra utility modules that popup in their own GUI displays.

    • MEMSIZE - how much memory is used/available.
    • NODEDUMP - oustanding IO request logger
    • TASKLIST - shows the list of tasks and the numbr of times they have been dispatched to.
    • WNDW_MGR - Maybe a list of windows?
  • VIDEO - Video display

    • NULLVID - export all the routines that do nothing.
    • TEXT - Text UI display manager; exports an interface library( works cross-module) Provides widndows for other tasks to output into. Handles things like windows occluding other windows. Any task is free to update to the display at any point it is running.
    • GRAPHICS - Attempt at a genuine graphical GUI?

nanortos's People

Contributors

d3x0r avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.