SINGLIX TRANSACTION SYSTEM Project & "DIRECT DRIVE" CONCEPT
[ Erdogan Tan - 8/2/2003 ] 

(Features are written as they exist but they are "project targets" only)

* Singlix Kernel comprises following components:

  - Core
  - Standard Modules
  - Optional Modules
  - ( cron : RunTime System Timing - Multi Tasking Module )
  - ( User Management : Multi User Extensions ) 

* The Core of Singlix Kernel comprises:

  - Initialization Code (Boot)
  - 80386 Protected Mode KERNEL BIOS (Direct IO and Interrupts)
  - Initialization Code (Extended Boot)
  - File System Management (Also may include ISO9660 FS)
  - Initialization Code (Final, RunTime System Loading) 

* Singlix Transaction/Operation System Components:
  
  - Kernel (includes Files System Management)
  - (Device Drivers and Module Files) 
  - RunTime System (Operating Cycle, Program Launching, Memory Management) 
  - Basic Utilities (Basic System Executables)
  - Extended Utilities (Extra System Executables)
  - (Development System - Optional)
  - (Graphical User Interface - Optional)
  - (Virtual CPU "Multi Platform" & "Portable Executable" Support - Optional)

* Singlix TS Default RunTime System Components:

  - Initialization for Operating Cyle, Program Launching and Memory Management
  - Command Interpreter (SHELL, Main Program)
    (Internal Command/Operating Cycle, Program Launching, Memory Management)
  - (Initial Command File - command contents will be used by the Interpreter)

* Boot/Startup Process of Singlix Transaction System:

  - (TR-MULTIX partition's) Boot Sector Code loads the STARTUP CODE (file).
  - Startup code gives "boot prompt" for user input for a limited time.
  - Startup code loads the requested kernel or default kernel
    or a (requested) standalone program depending on user input.
  - System jumps to the loaded code (Singlix Kernel or a standalone program)
  - (If the Kernel is loaded, Kernel sets itself, and launches the RunTime System)

* Singlix Kernel - Standard Modules:  
  
  - Display Module (VGA, Super VGA etc.)
  - Audio Module (Sound and Music, TV Card Hardware is an Optional Module)
  - Disk Module (ATA&ATAPI LBA read,write procedures)
  - Modem Module
  - Keyboard Module (Code Page and Key Map)  
  - Mouse Module
  - Printer Module
  - (Virtual CPU Module as SUPER SINGLIX Feature)

* Singlix Kernel - Optional Modules (for DIRECT IO procedures)
 
  - Additional Hardware (TV Card, Scanner, Camera etc.) Modules
    (These modules will be used by Hardware & Software Device Drivers)
    (Optional modules can use other modules or hardware directly)
    (Hardware Device Drivers can use related hardware directly or via modules)
    (Software Device Drivers can not use DIRECT IO instructions)
    (Hardware Device Drivers are installed in System Administration Mode)
    (Software Device Drivers can be installed in Users Mode)
    (Modules can only be installed in System Administration Mode)
    (Except "Direct Drive" programs, any programs can not use modules directly)
    (A "Direct Drive" Program can not be run by a remote user/computer)
  - CDROM File System (ISO 9660) Module -This feature may be embedded in the Core-   
  - Network (Remote File System) Module
  - TCP/IP (Internet) Module ... etc.  

* DIRECT DRIVE CONCEPT ( Erdogan Tan - 2000, 2001, 2002, 2003)

* Singlix Transaction System Executable/Transaction Files are :
  
  - "Direct Drive" Software (a bit like 32 bit equivalents of 16 bit MS-DOS programs)
    
    or

  - Interface Depended Software (like MS Windows Applications)

    or

  - Shell Depended Binaries (like compiled java, perl, asp, vbs, bat files)
  - Shell Depended Text File (like html, java, perl, asp, vbs, bat etc. text files)

* "Direct Drive" Programs can use

  - Kernel BIOS (80386 Protected Mode "Basic Input Output Service/System" Code)
  - Kernel Modules (One to one Function Calls or Subroutines to PC's Hardware)
  - Hardware Device Drivers (control and transfer procedures for Peripheral Devices etc.)
  - Software (Soft) Device Drivers (optional management procedures for existent hardware)

  IMPORTANT: Kernel Modules are standard structural interfaces to CPU level IO procedures.
  For example: ATAPI Inquiry command is a standard (defined) Function Call in Disk Module.
  As you can understand easily, modules are one to one hardware-software adapters.
  And they never be thought as "library". They are exactly "command/data block transformers".
  So, a "direct drive" program does not need to use "Dynamic or Static Libraries" or DLLs etc.
  It has "direct drive adapters" to hardware already, which has been called as Kernel Modules.

  With anotherword, a "direct drive program" uses "hardware" -through KERNEL- directly,
  without using IO address space. ("Uniform Device and Memory Access" feature by Erdogan Tan.)

* Singlix System Switch - System Administration Mode and Users Mode

  - Singlix Transaction System can be switched to System Administration Mode from
    Users Mode via "SysReq" key (by entering of "Super User Password").
  
  - A remote user can be "Super User" if a local user press "SysReq" key
    and use "wait for remote access" option. Remote user will have only one attempt right
    to input Super User Password in 30 seconds after SysReq keydown. Or Startup
    process of operation sytem will provide super user access from a remote computer
    if that option is selected. Any failed access attempt will lock the system to
    Remote User (as Super User) till next reset of the system (till next boot).

* DEVICE:SECTION:DISPLACEMENT

* Singlix Transaction System - Virtual CPU feature (Super Singlix versions)

  - 80x86 CPU uses this memory access logic:
     
    (MEMORY:)SEGMENT:OFFSET
 
    in 16 bit real mode "Segment" is memory location multiplied by 16
    in 32 bit protected mode "Segment" is Segment Descriptor (pointer)
 
    "OFFSET" is distance/difference from Segment base address as bytes

    (80x86 CPU does not use direct/uniform access to IO devices through memory
    address space, instead of that, it uses IO instructions for IO address space.)


  - Virtual Singlix/Multix CPU uses this uniform Device&Memory access logic:
     
    DEVICE:SECTION:DISPLACEMENT

    Device is an 16 bit (8+8) port/identification number of any devices or memory sections.

    Section is the high nibble/half of 32 bit (or 64 bit) flat address.
  
    Displacement is the low nibble/half of 32 bit (or 64 bit) flat address.

    for a block device, SECTION:DISPLACEMENT is 32 bit (or 64 bit) LBA sector address.

    DEVICE values are stored in Source or Destination Device Register.

    SECTION values are stored in Section/Segment registers.

    DISPLACEMENT values are stored in OFFSET/Displacement registers.

    But SECTION:DISPLACEMENT duals make only a flat 32 bit (or 64 bit) address/value.


    ***

    Virtual cpu code simulates Source and Destination depended "multi device", 
    "multi memory" and "multi tasking" instructions. Virtual cpu code
    is translated to real (protected mode) 80x86 cpu code via memory management for virtual
    cpu registers.

    So, when a CPU is produced with "Multi Device", "Multi Memory",
    32 bit or 64 bit flat addressing features; virtual instructions
    in assembly files of Virtual CPU executables will be compiled as
    real (direct) CPU code. And this development will provide
    revolutionary acceleration ability against 80x86 software architecture.

    (Singlix Kernel will translate virtual cpu instructions to true/real
    80x86 instructions. But Virtual CPU executables are structural binary files;
    not text files or shell files. These files must have structural procedures which
    do not intersect with eachother. The Kernel will translate/perform their code portions 
    as independent function calls or subroutines, one after another.) 

    Advantage of Virtual CPU using in Singlix will be hardware independent Multi Tasking
    and Virtual Hardware Driver ability, but will be run with full acceleration in future 
    when compatible cpu is produced. (If Virtual CPU will be succesfull,
    then real/compatible CPU -software architecture- will be useful...)

    Also, VIRTUAL CPU Module feature, provides "Portable Executable"
    programs to developers for various CPUs (by Motorola, Intel, AMD etc.)

    For that, translator module must be for the destination CPU 
    while the program is compiled for the source CPU. 
    (Source is remote, destination is local computer.)