{ ************************************************
  * Asuro
  * Unit: bios_data_area
  * Description: Data Structures controlled by
  *              the BIOS.
  ************************************************
  * Author: K Morris
  * Contributors: 
  ************************************************ }

unit bios_data_area;

interface

type
     TBDA = bitpacked record
          COM1            : uint16;
          COM2            : uint16;
          COM3            : uint16;
          COM4            : uint16;
          LPT1            : uint16;
          LPT2            : uint16;
          LPT3            : uint16;
          EBDA            : uint16;
          Hardware_Flags  : uint16;
          Keyboard_Flags  : uint16;
          Keyboard_Buffer : ARRAY[0..31] OF uint8;
          Display_Mode    : uint8;
          BaseIO          : uint16;
          Ticks           : uint16;
          HDD_Count       : uint8;
          Keyboard_Start  : uint16;
          Keyboard_End    : uint16;
          Keyboard_State  : uint8;
     end;
     PBDA = ^TBDA;

     TMCFG = bitpacked record
        Signature        : Array[0..3] of Char;
        Table_Length     : uint32;
        Revision         : Byte;
        Checksum         : Byte;
        OEM_ID           : Array[0..5] of Byte;
        OEM_Table_ID     : uint64;
        OEM_Revision     : uint32;
        Creator_ID       : uint32;
        Creator_Revision : uint32;
        Reserved         : uint64;
     end;
     PMCFG = ^TMCFG;

     TCounters = record
        c16 : uint16;
        c32 : uint32;
        c64 : uint64;
     end;

const
     BDA : PBDA = PBDA($C0000400);

var
    Counters : TCounters;

procedure tick_update(data : void);

implementation

uses
    console, vmemorymanager;

procedure tick_update(data : void);
begin
    //BDA^.Ticks:= BDA^.Ticks + 1;
    inc(BDA^.Ticks);
    inc(Counters.c16);
    inc(Counters.c32);
    inc(Counters.c64);
end;

end.