home *** CD-ROM | disk | FTP | other *** search
/ GEMini Atari / GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso / files / program / lynxlib / tosmem.h < prev    next >
C/C++ Source or Header  |  1993-10-23  |  4KB  |  114 lines

  1. /* This source file is part of the LynxLib miscellaneous library by
  2. Robert Fischer, and is Copyright 1990 by Robert Fischer.  It costs no
  3. money, and you may not make money off of it, but you may redistribute
  4. it.  It comes with ABSOLUTELY NO WARRANTY.  See the file LYNXLIB.DOC
  5. for more details.
  6. To contact the author:
  7.     Robert Fischer \\80 Killdeer Rd \\Hamden, CT   06517   USA
  8.     (203) 288-9599     fischer-robert@cs.yale.edu                 */
  9.  
  10. #ifndef TOSMEM_H
  11. #define TOSMEM_H
  12.  
  13. #ifndef TOS_H
  14. #include <tos.h>
  15. #endif
  16.  
  17. #ifndef STDDEF_H
  18. #include <stddef.h>
  19. #endif
  20.  
  21. typedef struct PD
  22.   {
  23.     long        p_lowtpa;       /* -> base of TPA */
  24.     long        p_hitpa;        /* -> end of TPA */
  25.     long        p_tbase;        /* -> base of text segment */
  26.     long        p_tlen;         /* size of text segment */
  27.     long        p_dbase;        /* -> base of data segment */
  28.     long        p_dlen;         /* size of data segment */
  29.     long        p_bbase;        /* -> base of BSS segment */
  30.     long        p_blen;         /* size of BSS segment */
  31.     TRANS_BUF   *p_dta;         /* Disk Transfer Address (DTA) */
  32.     struct PD   *p_parent;      /* -> parent's PD */
  33.     long        dummy1;         /********** ??? **********/
  34.     char        *p_env;         /* -> environment string */
  35.     char        p_stdhdl[6];    /* assigned device handles to standard devices */
  36.                                 /* stdhdl: 0=stdin,1=stdout,2=stdaux,3=stdprn */
  37.                                 /* devhdl: 0xff=CON:,0xfe=AUX:,0xfd=PRN: */
  38.     char        dummy2;         /********** ??? **********/
  39.     char        p_curdrv;       /* default drive */
  40.     char        dummy3[72];     /********** ??? **********/
  41.     char        p_cmdlin[128];  /* commandline image */
  42.   }
  43. /* typedef */ BASEPAGE;
  44.  
  45. extern BASEPAGE _start[];
  46. #define BP  (&_start[-1])
  47.  
  48.  
  49. /* ------------------- Disk Boot Sector --------------------- */
  50. typedef BYTE SEC[512];
  51.  
  52. /* Boot sector offsets, cf. pg 739 of dev. kit documentation */
  53. #define BS_BRANCH 0x0
  54. #define BS_RESERVED 0x2
  55. #define BS_SERIAL 0x8
  56. #define BS_BPS 0xB
  57. #define BS_SPC 0xD
  58. #define BS_RES 0xE
  59. #define BS_NFATS 0x10
  60. #define BS_NDIRS 0x11
  61. #define BS_NSECTS 0x13
  62. #define BS_MEDIA 0x15
  63. #define BS_SPF 0x16
  64. #define BS_SPT 0x18
  65. #define BS_NSIDES 0x1A
  66. #define BS_NHID 0x1C
  67. #define BS_BOOT_CODE 0x1E
  68.  
  69. /* ------------------------ The FAT---------------------------- */
  70. #define FAT_SECT 1      /* Starting sector of the first FAT */
  71.  
  72.  
  73. /* ----------------------- Memory Descriptor ------------------ */
  74. typedef struct MD
  75.   {
  76.     struct MD   *m_link;        /* -> next MD (or NULL) */
  77.     char        *m_start;       /* -> base of block */
  78.     LONG        m_length;       /* #bytes in block */
  79.     BASEPAGE    *m_own;         /* owner's PD */
  80.   }
  81. /* typedef */ MD;
  82.  
  83. /* ------------------- Memory Parameter Block ---------------- */
  84.     
  85. typedef struct MPB
  86.   {
  87.     MD  *mp_mfl;        /* -> memory free list */
  88.     MD  *mp_mal;        /* -> memory allocated list */
  89.     MD  *mp_rover;      /* roving ptr */
  90.   }
  91. /* typedef */ MPB;
  92.  
  93. /* ------------------ System Header Block ---------------------- */
  94. /*                                                               */
  95. /* This structure is pointed to by SYSBASE (0x4f2)               */
  96.  
  97. typedef struct os_header {
  98.     unsigned bra;             /* (0x0)  branch to reset handler */  
  99.     unsigned version;         /* (0x2) TOS version number       */
  100.     char *reset_handler;      /* (0x4) pointer to reset handler */
  101.     struct os_header *sysbase;/* (0x8) pointer to this block    */
  102.     char *osram_end;          /* (0xc) pointer to end of os ram */
  103.     long junk1;           /* (0x10) (unused)               */
  104.     char *magic;          /* (0x14) pointer to GEM mem usage block */
  105.     long build_date;      /* (0x18) system build date              */
  106.     unsigned os_config;   /* (0x1c) OS configuration bits      */
  107.     unsigned tos_date;    /* (0x1e) TOS system build date      */
  108.     char *root;           /* (0x20) pointer to OS pool         */
  109.     unsigned *kbshift;    /* (0x24) pointer to keyboard shift word */
  110.     BASEPAGE **run;       /* (0x28) pointer to current process ptr */
  111. } OS_HEADER;
  112.  
  113. #endif
  114.