//bootmap.h Copyright (C) 1989-2001 I.Pedley (CTPP) Sun 17-Mar-2002 at 20:24:06


//17.3.02 defines for new boot map

#define bmBIOS  0x7c00  //bios boot address, the location to which BIOS
                        //loads boot sectors and partition tables during
                        //boot attempts

#define bmPART  0x500   //partition table loaded just above BIOS data area
#define bmBOOT  0x700   //boot sector loaded just above that
#define bmROOT  0x900   //work area for boot sector to load root directory
#define bmLOAD  0xb00   //bootstrap loader just above that

//#define rtPTF   0x69a   //where to find run-time partition table flags
//#define ptPTF   0x7d9a  //where to set run-time partition table flags
//                        //(partition table relocates itself to 0x500!)
#define rtPTF   0x200

#define rtNETN  0x690   //address of netname in run-time partition table sector
#define rtPART  0x69b   //where to find run-time partition which booted
//#define rtDRV   0x724   //where to find run-time bios drive identifier for
//                        //boot device
#define rtDRV   0x8fc   //where to find run-time bios drive identifier for
                        //boot device

//defines for partition table ptflags field
#define ptEXT   0x01    //disk has ChaOS extra partition table at sector 1
#define ptDBG   0x80    //debugger present

struct BSINFO
{
    UC  res[5];         //0xcc 0xfa 0x90 0xeb 0xnn

    UI  bsflags;        //0x5000     //bsflags dword should be at START+5
    UC  vflags;         //0x00
    UI  vmode;          //0x0003     //default BIOS video mode to set
    UI  vesamode;       //0x0101     //default VESA video mode to set 640*480*8
    UL  pmvesabank;     //0
    UL  bsendptr;
    CH  osname[11];     //"CHAOS   DIR"
    CH  osz;            //0
    UL  int10;
    UI  mt8800;         //memtop
    UI  mte801lo;
    UI  mte801hi;
};
//defines for BSINFO->bsflags field
#define bsKEY   0x80    //keypress step mode
#define bsSYM   0x01    //bootstrap is loading OS image with symbol table
#define bsVERB  0x02    //verbose messages
#define bsTRC   0x08    //set real-mode register trace on int 3 (won't work
                        //with bsDBG, as PM debugger hooks RM int 3)
#define bsNOGR  0x10    //don't display banner screen while loading OS image
                        //(needed to see bsTRC output!)
#define bsALLMULTI 0x20 //bootstrap to load all of a MULTIXEC
#define bsVESA     0x40 //bootstrap to set VESA graphics mode before PM switch

#define bsVESADEV   0x8000

//a structure to describe layout in bootstrap of mode switch addresses
//this structure is currently located in the data segment of the bootstrap
//immediately following the string 'BANNER  ' which is used to load the
//bootstrap graphic file

struct MODESWITCHES
{
    CH  idstring[8];
    UL  pm16sel;        //16-bit code selector in GDT mapped to lin adress 0
                        //must be filled in by caller for RM callbacks
    UL  pmrm;
    UL  rmpm;
    UL  rxpm;
};