00001
00002 #define SECTOR_SIZE 512
00003 #define SECTOR_SHIFT 9
00004 #define RATIO(b) ((b)/SECTOR_SIZE)
00005 #define ISO_SECTOR_SIZE 2048
00006 #define ISO_PVD_OFFSET 16
00007 #define HRATIO (SECTOR_SIZE / HCLICK_SIZE)
00008 #define PARAMSEC 1
00009 #define DSKBASE 0x1E
00010 #define DSKPARSIZE 11
00011 #define ESC '\33'
00012 #define HEADERSEG 0x0060
00013 #define MINIXSEG 0x0080
00014 #define BOOTSEG 0x07C0
00015 #define SIGNATURE 0xAA55
00016 #define SIGNATPOS 510
00017 #define FREESEG 0x0800
00018 #define MSEC_PER_TICK 55
00019
00020
00021 #define DUTCH_EXT_SCAN 32
00022 #define OLIVETTI_SCAN 12
00023 #define STANDARD_SCAN 13
00024 #define US_EXT_SCAN 22
00025
00026
00027 #define ROOT_INO ((ino_t) 1)
00028 #define IM_NAME_MAX 63
00029
00030
00031 #ifndef EXTERN
00032 #define EXTERN extern
00033 #endif
00034
00035 typedef struct vector {
00036 u16_t offset;
00037 u16_t segment;
00038 } vector;
00039
00040 struct image_header {
00041 char name[IM_NAME_MAX + 1];
00042 struct exec process;
00043 };
00044
00045 EXTERN vector rem_part;
00046 EXTERN u16_t cseg, dseg;
00047 EXTERN u32_t runsize;
00048 EXTERN u16_t device;
00049 EXTERN u16_t heads, sectors;
00050 extern u16_t eqscancode;
00051
00052
00053 #define E_SPECIAL 0x01
00054 #define E_DEV 0x02
00055 #define E_RESERVED 0x04
00056 #define E_STICKY 0x07
00057
00058
00059 #define E_VAR 0x08
00060 #define E_FUNCTION 0x10
00061
00062 typedef struct environment {
00063 struct environment *next;
00064 char flags;
00065 char *name;
00066 char *arg;
00067 char *value;
00068 char *defval;
00069 } environment;
00070
00071
00072 EXTERN environment *env;
00073 EXTERN int fsok;
00074 EXTERN u32_t lowsec;
00075
00076
00077 _PROTOTYPE( off_t r_super, (void));
00078 _PROTOTYPE( void r_stat, (Ino_t _inum, struct stat *_stp ));
00079 _PROTOTYPE( ino_t r_readdir, (char *_name ));
00080 _PROTOTYPE( off_t r_vir2abs, (off_t _virblk ));
00081 _PROTOTYPE( ino_t r_lookup, (Ino_t _cwd, char *_path ));
00082
00083 #ifdef _MONHEAD
00084 _PROTOTYPE( void readerr, (off_t _sec, int _err ));
00085 _PROTOTYPE( int numprefix, (char *_s, char **_ps ));
00086 _PROTOTYPE( int numeric, (char *_s ));
00087 _PROTOTYPE( dev_t name2dev, (char *_name ));
00088 _PROTOTYPE( int delay, (char *_msec ));
00089 _PROTOTYPE( char *unix_err, (int _err ));
00090 _PROTOTYPE( void init_cache, (void));
00091 _PROTOTYPE( void invalidate_cache, (void));
00092 _PROTOTYPE( char *b_value, (char *_name ));
00093 _PROTOTYPE( void raw_copy, (int _doff, int _dseg, int _soff, int _sseg,
00094 int _count));
00095 _PROTOTYPE( void raw_clear, (int _off, int _seg, int _count));
00096 _PROTOTYPE( void bootstrap, (int _device, int _partoff, int _partseg));
00097
00098 _PROTOTYPE( long a2l, (char *_a ));
00099 _PROTOTYPE( char *ul2a, (u32_t _n ));
00100 _PROTOTYPE( char *u2a, (int _n1 ));
00101
00102
00103 _PROTOTYPE( void reset_video, (int color));
00104 _PROTOTYPE( int dev_geometry, (void));
00105 _PROTOTYPE( u16_t get_ext_memsize, (void));
00106 _PROTOTYPE( u16_t get_low_memsize, (void));
00107 _PROTOTYPE( u16_t get_processor, (void));
00108 _PROTOTYPE( u32_t get_tick, (void));
00109 _PROTOTYPE( u16_t get_video, (void));
00110 _PROTOTYPE( u16_t get_word, (int _off, int _seg));
00111 _PROTOTYPE( int getchar, (void));
00112 _PROTOTYPE( void minix, (void));
00113 _PROTOTYPE( void minix86, (int _kcs, int _kds, char *_bpar, int _psize));
00114 _PROTOTYPE( void minix386, (int _kcs, int _kds, char *_bpar, int _psize));
00115 _PROTOTYPE( int peekchar, (void));
00116 _PROTOTYPE( void put_word, (int _off, int _seg, int _word));
00117 _PROTOTYPE( int putchar, (char _c));
00118 _PROTOTYPE( int readsectors, (int _off, int _seg, off_t _adr, int _ct));
00119 _PROTOTYPE( void reboot, (void));
00120 _PROTOTYPE( void relocate, (void));
00121 _PROTOTYPE( int writesectors, (int _off, int _seg, off_t _adr, int _ct));
00122 #endif
00123