home *** CD-ROM | disk | FTP | other *** search
/ PC World 2002 February / PCWorld_2002-02_cd.bin / Software / Vyzkuste / ranish / SOURCES.ZIP / PART.H < prev    next >
C/C++ Source or Header  |  1998-11-19  |  21KB  |  662 lines

  1. #ifndef _PART_H
  2. #define _PART_H
  3.  
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #include <malloc.h>
  8.  
  9. #include "conio.h"
  10. #include "diskio.h"
  11.  
  12.  
  13. #define SECT_SIZE  512     /* Must not be changed */
  14.  
  15. #define EMP_SIZE 44
  16.  
  17. struct part_rec
  18.     {
  19.      unsigned char boot_flag;
  20.      unsigned char start_head;
  21.      unsigned      start_sect:6;
  22.      unsigned      start_cylH:2;
  23.      unsigned char start_cylL;
  24.      unsigned char os_id;
  25.      unsigned char end_head;
  26.      unsigned      end_sect:6;
  27.      unsigned      end_cylH:2;
  28.      unsigned char end_cylL;
  29.      unsigned long rel_sect;    /* Number os sectors before partition */
  30.      unsigned long num_sect;    /* Number of sectors in the partition */
  31.     };
  32.  
  33. struct part_long
  34.     {
  35.      int level;
  36.      int empty;
  37.      int valid;
  38.      int active;
  39.      int os_num;
  40.      int mbr_err;
  41.      int range_err;
  42.      int overlap_err;
  43.      int inconsist_err;
  44.      int boot_record_err;
  45.      unsigned short os_id;
  46.      unsigned long start_cyl;
  47.      unsigned long start_head;
  48.      unsigned long start_sect;
  49.      unsigned long end_cyl;
  50.      unsigned long end_head;
  51.      unsigned long end_sect;
  52.      unsigned long rel_sect;
  53.      unsigned long num_sect;
  54.      int changed;
  55.      int orig_row;
  56.      int inh_changed;
  57.      int inh_invalid;
  58.      struct part_long *container;
  59.      unsigned long container_base;
  60.     };
  61.  
  62.  
  63. #define ADV_MBR_MAGIC  0x334D4241L /* "ABM3" */
  64.  
  65. #define ADV_DATA_SIGNATURE   "AdvBootManager\0"
  66. #define ADV_DATA_VERSION         3
  67.  
  68. struct mbr
  69.     {
  70.      union
  71.         {
  72.          struct x_std
  73.              {
  74. /*            unsigned char  code[0x1BE]; */
  75.               unsigned char  code[0x100];
  76.              }std;
  77.          struct x_ipl
  78.              {
  79.               unsigned char  code[0x1B6];
  80.               unsigned short dot_len;
  81.               unsigned char  vir_chk;
  82.               unsigned char  def_part;
  83.               unsigned char  fd_params[4];
  84.              }ipl;
  85.          struct x_adv_old
  86.              {
  87.               unsigned char  code[0x1A0];
  88.               unsigned char  signature[15];    /* AdvBootManager\0 */
  89.               unsigned char  version;          /* Data structure version */
  90.               unsigned long  rel_sect;
  91.               unsigned char  act_menu;
  92.               unsigned char  reserved[9];
  93.              }adv_old;
  94.          struct x_adv                /*  0123456789ABCD  */
  95.              {                    /*  rrrr____aoABM3  */
  96.                                  /*  rrrrffffatABM3  */
  97.               unsigned char  code[0x1B0];
  98.               unsigned long  rel_sect;
  99.               unsigned long  reserved;
  100.               unsigned char  act_menu;
  101.               unsigned char  boptions;
  102.               unsigned long  adv_mbr_magic;
  103.              }adv;
  104.         struct x_adv_new
  105.              {
  106.               unsigned char code[0x1BC];
  107.               unsigned short bm_sign; /* 'BM' = 0x4D42 */
  108.              }new;
  109.         }x;
  110.      struct part_rec part_rec[4];
  111.      unsigned short magic_num;    /* Magic number (must be 0xAA55) */
  112.     };
  113.  
  114. #define MBR_MAGIC_NUM   (0xAA55)
  115.  
  116. #define BM_238_SIGN     (0x4D42)
  117.  
  118. #define MENU_BOOT_EMPTY   0
  119. #define MENU_BOOT_PART    1
  120. #define MENU_BOOT_NEXT_HD 2
  121. #define MENU_BOOT_FLOPPY  3
  122.  
  123. #define SHOW_NONE  0
  124. #define SHOW_LAST  1
  125. #define SHOW_NEXT  2
  126. #define SHOW_PREV  3
  127. #define SHOW_LAST3 4
  128.  
  129. #define MENU_OPT_PASSW   1
  130.  
  131. struct adv_menu_rec        /* 80 bytes */
  132.    {
  133.     unsigned char boot_type;    /* if 0 - empty */
  134.     unsigned char options;
  135.     unsigned char name[30];
  136.     union 
  137.        {
  138.         struct x_part
  139.             {
  140.              unsigned char  tag;
  141.              unsigned char  show;
  142.              unsigned char  reserved[14];
  143.              unsigned short num_keys;
  144.              unsigned short keys[15];
  145.             }part;
  146.        }x;
  147.    };
  148.  
  149. struct adv_part_rec        /* 16 bytes */
  150.     {
  151.      unsigned short os_id;
  152.      unsigned char tag;
  153.      unsigned char orig_row;
  154.      unsigned char reserved[4];
  155.      unsigned long rel_sect;
  156.      unsigned long num_sect;
  157.     };
  158.  
  159.  
  160. #define MAX_MENU_ROWS  16
  161. #define MAX_PART_ROWS  32
  162.  
  163. #define    ADV_CODE_SIZE    8192
  164. #define ADV_DATA_SIZE    2048
  165.  
  166. #define    ADV_CODE_SECT    (ADV_CODE_SIZE/SECT_SIZE)
  167. #define ADV_DATA_SECT    (ADV_DATA_SIZE/SECT_SIZE)
  168.  
  169. #define ADV_NUM_SECTS   (ADV_CODE_SECT+ADV_DATA_SECT)
  170.  
  171. #define ADV_OPT_VIR_CHECK  1
  172. #define ADV_OPT_CLEAR_SCR  2
  173. #define ADV_OPT_DEF_MENU   4
  174. #define ADV_OPT_IGN_UNUSED 8
  175.  
  176. struct adv                    /* 80+1280+512+176=2048 */
  177.     {
  178.      unsigned char signature[15];        /* AdvBootManager\0 */
  179.      unsigned char version;            /* Data structure version */
  180.      unsigned char def_menu;
  181.      unsigned char timeout;
  182.      unsigned char options;
  183.      unsigned char options2;
  184.      unsigned int  password;            /* code to validate password */
  185.      unsigned char reserved2[26];
  186.      unsigned char adv_title[32];
  187.      struct adv_menu_rec menu[MAX_MENU_ROWS];    /* 1280 */
  188.      struct adv_part_rec part[MAX_PART_ROWS];    /*  512 */
  189.      unsigned char reserved[176];
  190.     };
  191.  
  192.  
  193. struct os_desc
  194.     {
  195.      unsigned short os_id;
  196.      char *name;
  197.      unsigned short flags;
  198.      int (*setup)(struct part_long *);
  199.      int (*format)(struct part_long *, char **argv );
  200.      int (*print)(struct part_long *);
  201.     };
  202.  
  203. #define OS_EXT       0x0500
  204. #define OS_HIDDEN    0xFF80
  205. #define OS_ADV       0xFF81
  206. #define OS_UNKN      0xFFFF
  207.  
  208. #define MODE_CHS   0
  209. #define MODE_LBA   1
  210.  
  211. #define VIEW_MBR   0
  212. #define VIEW_ADV   1
  213. #define VIEW_EMBR  2
  214.  
  215. #define OK         0
  216. #define FAILED    -1
  217. #define CANCEL    -2
  218.  
  219. #define BORDER_COLOR  (Yellow +BakBlue)
  220. #define HEADER_COLOR  (BrCyan +BakBlue)
  221. #define TITLE_COLOR   (BrWhite+BakBlue)
  222. #define TABLE_COLOR   (BrWhite+BakBlue)
  223. #define INVAL_COLOR   (BrRed  +BakBlue)
  224. #define ACTIVE_COLOR  (BrWhite+BakBlack)
  225. #define MENU_COLOR    (BrCyan +BakBlue)
  226. #define HINT_COLOR    (Yellow +BakBlue)
  227. #define MESG_COLOR    (BrGreen+BakBlue)
  228. #define WARN_COLOR    (BrRed  +BakBlue)
  229.  
  230. #define  MAIN_BORDER  "╔═╗║ ║╚═╝"
  231. #define  VERT_BORDER  "║ ║║ ║║ ║"
  232. #define  HRZN_BORDER  " ─       "
  233.  
  234. void IPL(void);            /* external assembly code */
  235. void ADV_IPL(void);
  236. void EMP_IPL(void);
  237. void STD_IPL(void);
  238. void FAT_BOOT(void);
  239. void ADV_MANAGER(void);
  240.  
  241.  
  242. #define ABS_REL_SECT(p) ( (p)->start_cyl*dinfo.sect_per_cyl + \
  243.                           (p)->start_head*dinfo.sect_per_track + \
  244.                           (p)->start_sect - 1 )
  245.  
  246. #define ABS_END_SECT(p) ( (p)->end_cyl*dinfo.sect_per_cyl + \
  247.                           (p)->end_head*dinfo.sect_per_track + \
  248.                           (p)->end_sect - 1 )
  249.  
  250. #define REL_SECT(p)     ( ABS_REL_SECT(p) - (p)->container_base )
  251. #define NUM_SECT(p)     ( ABS_END_SECT(p) - ABS_REL_SECT(p) + 1 )
  252.  
  253. #define NUM_SECT_RA(p,r)   ( ABS_END_SECT(p) - (r) + 1 )
  254. #define NUM_SECT_RR(p,r)   ( ABS_END_SECT(p) - (r) + 1 - (p)->container_base )
  255.  
  256.  
  257. #define QUICK_BASE(p)   ( ( mode==MODE_LBA || (p)->valid ) ? \
  258.                           ( (p)->container_base + (p)->rel_sect ) : \
  259.                           ( ABS_REL_SECT(p) ) )
  260.  
  261. #define QUICK_SIZE(p)   ( ( mode==MODE_LBA || (p)->valid ) ? \
  262.                           ( (p)->num_sect ) : \
  263.                           ( ABS_END_SECT(p) - ABS_REL_SECT(p) + 1 ) )
  264.  
  265.  
  266. #define CYL(abs_sect)   ( (abs_sect)/(dinfo.sect_per_cyl) )
  267. #define HEAD(abs_sect)  ( (abs_sect)%(dinfo.sect_per_cyl)/(dinfo.num_sects) )
  268. #define SECT(abs_sect)  ( (abs_sect)%(dinfo.sect_per_cyl)%(dinfo.num_sects)+1 )
  269.  
  270.  
  271. void get_base_dir(char *);
  272.  
  273. void html_view(char *target);
  274.  
  275. int progress(char *msg);
  276.  
  277. int disk_read_rel(struct part_long *p, unsigned long sect, void *buf, int num_sect);
  278. int disk_write_rel(struct part_long *p, unsigned long sect, void *buf, int num_sect);
  279.  
  280. int generic_clean(struct part_long *p);
  281. int generic_verify(struct part_long *p, int bbt_size, unsigned long *bbt);
  282. int generic_format(struct part_long *p, int bbt_size, unsigned long *bbt);
  283.  
  284. void start_gui(void);
  285.  
  286. int setup_mbr(struct part_long *p);
  287.  
  288. void convert_adv_data(struct adv *adv);
  289. void recalculate_part(struct part_long *part, int mode);
  290. int validate_table(struct part_long *part, int n, struct part_long *container);
  291. int prepare_adv_mbr_for_save( struct part_long *part, struct mbr *mbr,
  292.                               struct adv *adv );
  293.  
  294. int write_int(int attr, int x, int y, int w, unsigned long xx);
  295.  
  296. void parse_arg(char *str, char **argv, int argv_size);
  297.  
  298. char *sprintf_long(char *tmp, unsigned long num);
  299. char *sprintf_systype(char *tmp, int os_num);
  300. char *sprintf_os_name(char *tmp, struct part_long *);
  301. char *sprintf_partrec(char *tmp, struct part_long *, int n, int view);
  302.  
  303. void  determine_os_num(struct part_long *);
  304.  
  305. void   pack_part_tab(struct part_long *part, struct part_rec *part_rec, int n);
  306. void unpack_part_tab(struct part_rec *part_rec, struct part_long *part, int n,
  307.                                                 struct part_long *container  );
  308.  
  309. void   pack_adv_part_tab(struct part_long *part, struct adv_part_rec *part_rec, int n);
  310. void unpack_adv_part_tab(struct adv_part_rec *part_rec, struct part_long *part, int n,
  311.                                                         struct part_long *container  );
  312. void show_error(char *);
  313. void setup_ipl(struct mbr *);
  314. void edit_boot_menu(struct adv *adv, int p, int flag);
  315. void select_system_type(struct part_long *p);
  316. int  enter_string(int x, int y, char *prompt, int maxlen, char *str, char *help);
  317.  
  318. unsigned int encrypt_password(char *password);
  319.  
  320. void edit_str_field(struct event *ev, int ev_mask,
  321.                     int attr, int x, int y, int maxlen, char *str, int *pos);
  322. void edit_int_field(struct event *ev, int ev_mask,
  323.                     int attr, int x, int y, int field_len,
  324.                     unsigned long *n, unsigned long limit );
  325.  
  326. void redraw_menu(int view);
  327. void redraw_header(int view, int mode, struct part_long *p);
  328.  
  329. int save_to_file(char *filename, void *buf, int len);
  330. int load_from_file(char *filename, void *buf, int len);
  331. void print_part_details(struct part_long *part, int num_rows);
  332. void print_adv_menu(struct adv *adv);
  333. void print_ide_info(void);
  334.  
  335. void usage(void);
  336. void command_line(int argc, char **argv);
  337.  
  338. int print_unknown(struct part_long *p);
  339.  
  340. int print_embr(struct part_long *p);
  341. int format_embr(struct part_long *p, char **argv);
  342.  
  343. int setup_fat(struct part_long *p);
  344. int print_fat(struct part_long *p);
  345. int format_fat(struct part_long *p, char **argv);
  346.  
  347. int setup_fat32(struct part_long *p);
  348. int print_fat32(struct part_long *p);
  349. int format_fat32(struct part_long *p, char **argv);
  350.  
  351. int format_unused(struct part_long *p, char **argv);
  352.  
  353. void set_messages(void);
  354.  
  355. #ifdef _PART_C
  356.  
  357.   struct event ev;
  358.   int  hd, select_target, mode, quiet;
  359.   char tmp2[80];
  360.   char tmp3[80];
  361.   char file_name[80];
  362.  
  363.   int  interactive;
  364.   char buf[25*80*2];
  365.   char base_dir[256];
  366.   char tmp[SECT_SIZE*3];
  367.   struct disk_info dinfo;
  368.   struct os_desc os_desc[] = {
  369.  
  370. /*   os_id,  "123456789 123456789 123",    flags,     setup,        format,        print */
  371.  
  372.  {   0x0000, "Unused",            1,    0,        format_unused,    0 },
  373.  {   0x0100, "DOS FAT-12",        0,    setup_fat,    format_fat,    print_fat },
  374.  {   0x0200, "XENIX root file system",    0,    0,        0,        0 },
  375.  {   0x0300, "XENIX /usr file system",    0,    0,        0,        0 },
  376.  {   0x0400, "DOS FAT-16 (up to 32M)",    0,    setup_fat,    format_fat,    print_fat },
  377.  {   0x0500, "DOS Extended",        1,    setup_mbr,    format_embr,    print_embr },
  378.  {   0x0600, "DOS FAT-16 (up to 2G)",    1,    setup_fat,    format_fat,    print_fat },
  379.  {   0x0700, "Windows NT NTFS",        1,    0,        0,        0 },
  380.  {   0x0701, "QNX",            0,    0,        0,        0 },
  381.  {   0x0702, "OS/2 HPFS",        0,    0,        0,        0 },
  382.  {   0x0703, "Advanced Unix",        0,    0,        0,        0 },
  383.  {   0x0800, "OS/2 (v1.0-1.3 only)",    0,    0,        0,        0 },
  384.  {   0x0801, "AIX bootable partition",    0,    0,        0,        0 },
  385.  {   0x0802, "Commodore DOS",        0,    0,        0,        0 },
  386.  {   0x0803, "DELL multi-drive part.",    0,    0,        0,        0 },
  387.  {   0x0900, "AIX data partition",    0,    0,        0,        0 },
  388.  {   0x0901, "Coherent filesystem",    0,    0,        0,        0 },
  389.  {   0x0A00, "OS/2 Boot Manager",    0,    0,        0,        0 },
  390.  {   0x0A01, "OPUS",            0,    0,        0,        0 },
  391.  {   0x0A02, "Coherent swap partition",    0,    0,        0,        0 },
  392.  {   0x0B00, "Windows 95 FAT-32",    1,    setup_fat32,    format_fat32,    print_fat32 },
  393.  {   0x0C00, "Windows 95 FAT-32 (LBA)",    0,    0,        0,        print_fat32 },
  394.  {   0x0E00, "LBA VFAT (BIGDOS/FAT16)",    0,    0,        0,        print_fat },
  395.  {   0x0F00, "LBA VFAT (DOS Extended)",    0,    0,        0,        print_embr },
  396.  {   0x1000, "OPUS",            0,    0,        0,        0 },
  397.  {   0x1100, "Hidden DOS FAT-12",    0,    setup_fat,    format_fat,    print_fat },
  398.  {   0x1200, "Compaq Diagnostics",    0,    0,        0,        0 },
  399.  {   0x1300, "Reliable Systems FTFS",    0,    0,        0,        0 },
  400.  {   0x1400, "Hidden DOS FAT-16 (32M)",    0,    setup_fat,    format_fat,    print_fat },
  401.  {   0x1600, "Hidden DOS FAT-16 (<2G)",    1,    setup_fat,    format_fat,    print_fat },
  402.  {   0x1700, "Hidden Windows NT NTFS",    1,    0,        0,        0 },
  403.  {   0x1800, "AST Windows swap file",    0,    0,        0,        0 },
  404.  {   0x1900, "Willowtech Photon coS",    0,    0,        0,        0 },
  405.  {   0x1B00, "Hidden Windows95 FAT-32",    1,    setup_fat32,    format_fat32,    print_fat32 },
  406.  {   0x1C00, "Hidden LBA FAT-32",    0,    0,        0,        print_fat32 },
  407.  {   0x1E00, "Hidden LBA DOS FAT-16",    0,    0,        0,        print_fat },
  408.  {   0x1F00, "Hidden LBA DOS Extended",    0,    0,        0,        print_embr },
  409.  {   0x2000, "Willowsoft OFS1",        0,    0,        0,        0 },
  410.  {   0x2100, "-- reserved --",        0,    0,        0,        0 },
  411.  {   0x2300, "-- reserved --",        0,    0,        0,        0 },
  412.  {   0x2400, "NEC MS-DOS 3.x",        0,    0,        0,        0 },
  413.  {   0x2600, "-- reserved --",        0,    0,        0,        0 },
  414.  {   0x3100, "-- reserved --",        0,    0,        0,        0 },
  415.  {   0x3300, "-- reserved --",        0,    0,        0,        0 },
  416.  {   0x3400, "-- reserved --",        0,    0,        0,        0 },
  417.  {   0x3600, "-- reserved --",        0,    0,        0,        0 },
  418.  {   0x3800, "Theos",            0,    0,        0,        0 },
  419.  {   0x3C00, "PartitionMagic recovery",    0,    0,        0,        0 },
  420.  {   0x4000, "VENIX 80286",        0,    0,        0,        0 },
  421.  {   0x4100, "Personal RISC Boot",    0,    0,        0,        0 },
  422.  {   0x4200, "SFS by Peter Gutmann",    0,    0,        0,        0 },
  423.  {   0x5000, "OnTrack Disk Mgr, R/O",    0,    0,        0,        0 },
  424.  {   0x5100, "OnTrack Disk Mgr, R/W",    0,    0,        0,        0 },
  425.  {   0x5101, "NOVEL",            0,    0,        0,        0 },
  426.  {   0x5200, "CP/M",            0,    0,        0,        0 },
  427.  {   0x5201, "Microport System V/386",    0,    0,        0,        0 },
  428.  {   0x5300, "OnTrack Disk Mgr, W/O?",    0,    0,        0,        0 },
  429.  {   0x5400, "OnTrack Disk Mgr (DDO)",    0,    0,        0,        0 },
  430.  {   0x5500, "EZ-Drive",        0,    0,        0,        0 },
  431.  {   0x5600, "GoldenBow VFeature",    0,    0,        0,        0 },
  432.  {   0x6100, "SpeedStor",        0,    0,        0,        0 },
  433.  {   0x6300, "Unix SysV/386, 386/ix",    1,    0,        0,        0 },
  434.  {   0x6301, "Mach, MtXinu BSD 4.3",    0,    0,        0,        0 },
  435.  {   0x6302, "GNU HURD",        0,    0,        0,        0 },
  436.  {   0x6400, "Novell NetWare 286",    0,    0,        0,        0 },
  437.  {   0x6500, "Novell NetWare (3.11)",    0,    0,        0,        0 },
  438.  {   0x6700, "Novell",            0,    0,        0,        0 },
  439.  {   0x6800, "Novell",            0,    0,        0,        0 },
  440.  {   0x6900, "Novell",            0,    0,        0,        0 },
  441.  {   0x7000, "DiskSecure Multi-Boot",    0,    0,        0,        0 },
  442.  {   0x7100, "-- reserved --",        0,    0,        0,        0 },
  443.  {   0x7300, "-- reserved --",        0,    0,        0,        0 },
  444.  {   0x7400, "-- reserved --",        0,    0,        0,        0 },
  445.  {   0x7500, "PC/IX",            0,    0,        0,        0 },
  446.  {   0x7600, "-- reserved --",        0,    0,        0,        0 },
  447.  {   0x8000, "Minix v1.1 - 1.4a",    0,    0,        0,        0 },
  448.  {   0x8100, "Linux",            1,    0,        0,        0 },
  449.  {   0x8101, "Minix v1.4b+",        0,    0,        0,        0 },
  450.  {   0x8102, "Mitac Adv Disk Manager",    0,    0,        0,        0 },
  451.  {   0x8200, "Solaris x86",        1,    0,        0,        0 },
  452.  {   0x8201, "Linux Swap partition",    1,    0,        0,        0 },
  453.  {   0x8202, "Prime",            0,    0,        0,        0 },
  454.  {   0x8300, "Linux (ext2fs/xiafs)",    1,    0,        0,        0 },
  455.  {   0x8400, "OS/2-renumbered FAT-16",    0,    0,        0,        0 },
  456.  {   0x8500, "Linux Extended",        1,    0,        0,        0 },
  457.  {   0x8600, "FAT16 volume/stripe set",    0,    0,        0,        0 },
  458.  {   0x8700, "NTFS volume/stripe set",    0,    0,        0,        0 },
  459.  {   0x8701, "HPFS F-T mirrored part",    0,    0,        0,        0 },
  460.  {   0x9300, "Amoeba file system",    0,    0,        0,        0 },
  461.  {   0x9400, "Amoeba bad block table",    0,    0,        0,        0 },
  462.  {   0xA000, "Phoenix Power Mgmnt",    0,    0,        0,        0 },
  463.  {   0xA100, "-- reserved --",        0,    0,        0,        0 },
  464.  {   0xA300, "-- reserved --",        0,    0,        0,        0 },
  465.  {   0xA400, "-- reserved --",        0,    0,        0,        0 },
  466.  {   0xA500, "FreeBSD, BSD/386",    1,    0,        0,        0 },
  467.  {   0xA600, "-- reserved --",        0,    0,        0,        0 },
  468.  {   0xB100, "-- reserved --",        0,    0,        0,        0 },
  469.  {   0xB300, "-- reserved --",        0,    0,        0,        0 },
  470.  {   0xB400, "-- reserved --",        0,    0,        0,        0 },
  471.  {   0xB600, "-- reserved --",        0,    0,        0,        0 },
  472.  {   0xB700, "BSDI secondarily swap",    0,    0,        0,        0 },
  473.  {   0xB800, "BSDI swap partition",    0,    0,        0,        0 },
  474.  {   0xC100, "DR DOS 6 secured FAT-12",    0,    0,        0,        0 },
  475.  {   0xC400, "DR DOS 6 secured FAT-16",    0,    0,        0,        0 },
  476.  {   0xC600, "DR DOS 6 secured Huge",    0,    0,        0,        0 },
  477.  {   0xC601, "Corrupted FAT16 (WinNT)",    0,    0,        0,        0 },
  478.  {   0xC700, "Syrinx Boot",        0,    0,        0,        0 },
  479.  {   0xC701, "Corrupted NTFS (WinNt)",    0,    0,        0,        0 },
  480.  {   0xD800, "CP/M-86",            0,    0,        0,        0 },
  481.  {   0xDB00, "CP/M, Concurrent DOS",    0,    0,        0,        0 },
  482.  {   0xDB01, "CTOS",            0,    0,        0,        0 },
  483.  {   0xE100, "SpeedStor ext FAT-12",    0,    0,        0,        0 },
  484.  {   0xE300, "DOS read-only",        0,    0,        0,        0 },
  485.  {   0xE301, "Storage Dimensions",    0,    0,        0,        0 },
  486.  {   0xE400, "SpeedStor ext FAT-16",    0,    0,        0,        0 },
  487.  {   0xE500, "-- reserved --",        0,    0,        0,        0 },
  488.  {   0xE600, "-- reserved --",        0,    0,        0,        0 },
  489.  {   0xEB00, "BeOS",            1,    0,        0,        0 },
  490.  {   0xF100, "Storage Dimensions",    0,    0,        0,        0 },
  491.  {   0xF200, "DOS 3.3+ secondary",    0,    0,        0,        0 },
  492.  {   0xF300, "-- reserved --",        0,    0,        0,        0 },
  493.  {   0xF400, "SpeedStor",        0,    0,        0,        0 },
  494.  {   0xF401, "Storage Dimensions",    0,    0,        0,        0 },
  495.  {   0xF600, "-- reserved --",        0,    0,        0,        0 },
  496.  {   0xFE00, "LANstep",            0,    0,        0,        0 },
  497.  {   0xFE01, "IBM PS/2 IML",        0,    0,        0,        0 },
  498.  {   0xFF00, "Xenix bad block table",    0,    0,        0,        0 },
  499.  { OS_HIDDEN,"Hidden (0xFF)",        1,    0,        0,        0 },
  500.  { OS_ADV,   "Advanced Boot Manager",    0,    0,        0,        0 },
  501.  { OS_UNKN,  "Unknown (0x%02X)",    0,    0,        0,        0 }
  502. };    
  503.  
  504. #define mesg(M)  char *M;
  505.  
  506. #else
  507.  
  508.   extern struct event ev;
  509.   extern int  hd, select_target, mode, quiet;
  510.   extern char tmp2[80];
  511.   extern char tmp3[80];
  512.   extern char file_name[80];
  513.  
  514.   extern int interactive;
  515.   extern char buf[25*80*2];
  516.   extern char base_dir[256];
  517.   extern char tmp[SECT_SIZE];
  518.   extern struct disk_info dinfo;
  519.   extern struct os_desc os_desc[];
  520.  
  521. #define mesg(M)  extern char *M;
  522.  
  523. #endif
  524.   
  525.  
  526. mesg( PROGRAM_TITLE )
  527. mesg( MANAGER_TITLE )
  528.  
  529. mesg( HEADER_GET )
  530. mesg( HEADER_EMBR )
  531. mesg( HEADER_READ )
  532. mesg( HEADER_SYSTYPE )
  533. mesg( HEADER_BOOT_MENU )
  534.  
  535. mesg( HEADER_CMD  )
  536.  
  537. mesg( HEADER_CHS  )
  538. mesg( HEADER_CHS2 )
  539. mesg( HEADER_CHS3 )
  540.  
  541. mesg( HEADER_LBA  )
  542. mesg( HEADER_LBA2 )
  543. mesg( HEADER_LBA3 )
  544.  
  545. mesg( MENU_HIDE      )
  546. mesg( MENU_FORMAT )
  547. mesg( MENU_VERIFY )
  548.  
  549. mesg( MENU_SAVE_MBR )
  550. mesg( MENU_LOAD_MBR )
  551. mesg( MENU_INST_IPL )
  552.  
  553. mesg( MENU_INSTALL )
  554. mesg( MENU_UNINSTALL )
  555. mesg( MENU_PREVIEW )
  556. mesg( MENU_ADV_UNINST )
  557. mesg( MENU_INST_EXT )
  558. mesg( MENU_MAKE_PRI )
  559.  
  560. mesg( WARN_INVALID )
  561. mesg( MESG_BIOS_CYL )
  562.  
  563. mesg( MESG_MBR_SAVED )
  564. mesg( MESG_NOT_SAVED )
  565. mesg( MESG_INSTALL )
  566. mesg( MESG_UNINSTALL )
  567. mesg( MESG_MBR_SAVED2 )
  568. mesg( MESG_FILE_SAVED )
  569. mesg( MESG_FILE_LOADD )
  570.  
  571. mesg( ERROR_MALLOC )
  572. mesg( ERROR_DISK_INFO )
  573. mesg( ERROR_FIX_FIRST )
  574. mesg( ERROR_INH_INVAL )
  575.  
  576. mesg( ERROR_READ_MBR )
  577. mesg( ERROR_SAVE_MBR )
  578. mesg( ERROR_READ_ADV )
  579. mesg( ERROR_SAVE_ADV )
  580. mesg( ERROR_LOAD_FILE )
  581. mesg( ERROR_SAVE_FILE )
  582.  
  583. mesg( ERROR_NO_ADV )
  584. mesg( ERROR_ADV_BAD )
  585. mesg( ERROR_ADV_VER )
  586. mesg( ERROR_GR_FOUR )
  587. mesg( ERROR_NO_UNUSED )
  588.  
  589. mesg( ERR_BOOTREC )
  590. mesg( ERR_INCONS  )
  591. mesg( ERR_OVERLAP )
  592. mesg( ERR_RANGE )
  593. mesg( ERR_MBR )
  594.  
  595. mesg( HINT_ADV )
  596. mesg( HINT_INS )
  597. mesg( HINT_CHS )
  598. mesg( HINT_LBA )
  599. mesg( HINT_RETURN )
  600.  
  601. mesg( HELP_CMD_LINE )
  602. mesg( HELP_FILE_NAME )
  603. mesg( PROMPT_FILE )
  604. mesg( PROMPT_FORMAT )
  605. mesg( PROMPT_FSTYPE )
  606.  
  607. mesg( ERROR_NO_SETUP )
  608. mesg( ERROR_NO_FORMAT )
  609.  
  610. mesg( MESG_FORMAT_OK )
  611. mesg( WARN_FORMAT_CANCEL )
  612. mesg( ERROR_FORMAT_FAILED )
  613.  
  614. mesg( MESG_VERIFY_OK )
  615. mesg( WARN_VERIFY_CANCEL )
  616. mesg( ERROR_VERIFY_FAILED )
  617.  
  618. mesg( MESG_CLEANING )
  619. mesg( MESG_VERIFYING )
  620. mesg( MESG_FORMATTING )
  621.  
  622. mesg( ERROR_FORMAT_GEN )
  623. mesg( ERROR_FORMAT_WIN95 )
  624. mesg( ERROR_FORMAT_EMPTY )
  625. mesg( ERROR_FORMAT_FRACTION )
  626.  
  627. mesg( IPL_VIRUS )
  628. mesg( IPL_DOTS )
  629. mesg( IPL_DEFAULT )
  630. mesg( IPL_NOACTV )
  631.  
  632. mesg( HTML_DOC_EMPTY )
  633. mesg( HTML_NOT_FOUND )
  634. mesg( HTML_ERROR_READ )
  635.  
  636. mesg( MESG_NON_SYSTEM )
  637. mesg( MESG_EXT_NONBOOT )
  638.  
  639. mesg( NAME_OS_UNUSED )
  640. mesg( NAME_OS_ADV )
  641. mesg( NAME_OS_HIDDEN )
  642. mesg( NAME_OS_UNKN )
  643.  
  644. mesg( MESG_DIFFERENT )
  645. mesg( MESG_NO_DIFFERENCES )
  646.  
  647. mesg( MESG_LOGICAL )
  648. mesg( ERROR_ADV_NOSPACE )
  649.  
  650. mesg( MENU_ADV_OPT_TITLE    )
  651. mesg( MENU_ADV_OPT_TIMEOUT  )
  652. mesg( MENU_ADV_OPT_VIRCHECK )
  653. mesg( MENU_ADV_OPT_CLEARSCR )
  654. mesg( MENU_ADV_OPT_DEFAULT  )
  655. mesg( MENU_ADV_OPT_PASSWORD )
  656. mesg( MENU_ADV_OPT_IGN_UNUSED )
  657.  
  658.  
  659. #undef mesg
  660.  
  661. #endif
  662.