home *** CD-ROM | disk | FTP | other *** search
- /*********************** CLIB.H ************************/
-
- #define Stdin 0
- #define Stdout 1
- #define Stderr 2
- #define Stdaux 3
- #define Stdprn 4
-
-
- #define ECDF 1 /* «Φ¿í«τ¡δ⌐ ¬«ñ Σπ¡¬µ¿¿ */
- #define EFNF 2 /* Σá⌐½ ¡Ñ ¡á⌐ñÑ¡ */
- #define EPTH 3 /* »πΓ∞ ¬ Σá⌐½π ¡Ñ ¡á⌐ñÑ¡ */
- #define EMFO 4 /* ß½¿Φ¬«¼ ¼¡«ú« «Γ¬αδΓδσ Σá⌐½«ó */
- #define EACC 5 /* ñ«ßΓπ» ¡Ñ αáºαÑΦÑ¡ */
- #define ELSN 6 /* «Φ¿í«τ¡δ⌐ ½«ú¿τÑ߬¿⌐ ¡«¼Ñα Σá⌐½á */
- #define EDCM 7 /* αáºαπΦÑ¡ π»αáó½∩εΦ¿⌐ í½«¬ »á¼∩Γ¿ */
- #define EMEM 8 /* ¡Ññ«ßΓáΓ«τ¡« »á¼∩Γ¿ */
- #define EACB 9 /* «Φ¿í«τ¡δ⌐ áñαÑß í½«¬á »á¼∩Γ¿ */
- #define EHRD 10 /* «Φ¿í«τ¡á∩ á»»áαáΓ¡á∩ ßαÑñá */
- #define EFMT 11 /* «Φ¿í«τ¡δ⌐ Σ«α¼áΓ */
- #define ECDA 12 /* «Φ¿í«τ¡δ⌐ ¬«ñ ñ«ßΓπ»á */
- #define EDAT 13 /* «Φ¿í«τ¡δÑ ñá¡¡δÑ */
- #define EDRN 14 /* «Φ¿í«τ¡«Ñ ¿¼∩ ñ¿ß¬«ó«ñá */
- #define EDIR 15 /* »«»δΓ¬á πñ὿Γ∞ ΓѬπΘ¿⌐ ß»αáó«τ¡¿¬ */
- #define EDRV 16 /* ¡Ñ Γ« πßΓα«⌐ßΓó« */
- #define EFNM 17 /* »αÑóδΦÑ¡ »αÑñѽ τ¿ß½á Σá⌐½«ó */
-
-
-
- #define creat_(n,attr) (_DX=(n),_CX=(attr),_AH=0x3c,int_(0x21),_AX)
- word pascal Creat(char near *n, byte attr);
- #define FAR 1 /* áΓΓα¿íπΓ "Γ«½∞¬«-ñ½∩-τΓÑ¡¿∩" */
- #define FAH 2 /* áΓΓα¿íπΓ "߬αδΓδ⌐" */
- #define FAS 4 /* áΓΓα¿íπΓ "ß¿ßΓѼ¡δ⌐" */
- #define FAV 8 /* áΓΓα¿íπΓ "¼ÑΓ¬á Γ«¼á" */
- #define FAD 16 /* áΓΓα¿íπΓ "ß»αáó«τ¡¿¬" */
- #define FAA 32 /* áΓΓα¿íπΓ "áασ¿ó¡δ⌐" */
-
- #define open_(n,mode) (_DX=(n),_AL=(mode),_AH=0x3d,int_(0x21),_AX)
- word pascal Open(char near *n, byte mode);
- #define MR 0 /* αѪ¿¼ Γ«½∞¬«-ñ½∩-τΓÑ¡¿∩ */
- #define MW 1 /* αѪ¿¼ Γ«½∞¬«-ñ½∩-ºá»¿ß¿ */
- #define MRW 2 /* αѪ¿¼ τΓÑ¡¿Ñ-ºá»¿ß∞ */
-
- #define close_(fh) (_BX=(fh),_AH=0x3e,int_(0x21),_AX)
- word pascal Close(int fh);
-
-
- #define read_(fh,buf,len) \
- (_CX=(len),_BX=(fh),_DX=(buf),_AH=0x3f,int_(0x21),_AX)
- word pascal Read(int fh, char near *b, int len);
-
- #ifdef __FarCalls
- #define readf_(fh,buf,len) \
- (push_ds,_CX=(len),_BX=(fh),_DX=FP_O(buf),_DS=FP_S(buf),_AH=0x3f,int_(0x21),pop_ds,_AX)
- word pascal _ReadF(int fh, char far *b, int len);
- #define ReadF(fh,b,len) (push_ds,_ReadF(fh,b,len),pop_ds,_AX)
- #else
- #define readf_(fh,buf_seg,buf_ofs,len) \
- (push_ds,_CX=(len),_BX=(fh),_DX=(buf_ofs),_DS=(buf_seg),_AH=0x3f,int_(0x21),pop_ds,_AX)
- word pascal _ReadF(int fh, int seg, char near *b, int len);
- #define ReadF(fh,seg,b,len) (push_ds,_ReadF(fh,seg,b,len),pop_ds,_AX)
- #endif
-
-
- #define write_(fh,buf,len) \
- (_CX=(len),_BX=(fh),_DX=(buf),_AH=0x40,int_(0x21),_AX)
- word pascal Write(int fh, char near *b, int len);
-
- #ifdef __FarCalls
- #define writef_(fh,buf,len) \
- (push_ds,_CX=(len),_BX=(fh),_DX=FP_O(buf),_DS=FP_S(buf),_AH=0x40,int_(0x21),pop_ds,_AX)
- word pascal _WriteF(int fh, char far *b, int len);
- #define WriteF(fh,b,len) (push_ds,_WriteF(fh,b,len),pop_ds,_AX)
- #else
- #define writef_(fh,buf_seg,buf_ofs,len) \
- (push_ds,_CX=(len),_BX=(fh),_DX=(buf_ofs),_DS=(buf_seg),_AH=0x40,int_(0x21),pop_ds,_AX)
- word pascal _WriteF(int fh, int seg, char near *b, int len);
- #define WriteF(fh,seg,b,len) (push_ds,_WriteF(fh,seg,b,len),pop_ds,_AX)
- #endif
-
-
- #define lseek_(fh,dist,mode) \
- (_DX=(dist),_BX=(fh),_AL=(mode),_CX=0,_AH=0x42,int_(0x21),_AX)
- long int pascal Lseek(int fh, long int dist, byte mode);
- #define MBEG 0
- #define MCUR 1
- #define MEND 2
- /*
- »ÑαÑñó¿úáÑΓ π¬áºáΓѽ∞ Σá⌐½á ¡á dist íá⌐Γ, «Γßτ¿Γá¡¡δ⌐ «Γ:
- Ñß½¿ mode == 0 == MBEG - ¡áτá½á Σá⌐½á
- Ñß½¿ mode == 1 == MCUR - ΓѬπΘÑ⌐ »«º¿µ¿¿
- Ñß½¿ mode == 2 == MEND - ¬«¡µá Σá⌐½á
- */
-
- /*1*/ #define slen_(str,c) (push_di,_DI=(str),_AL=(c),_CX=0xffff,repne_,scasb_,not_cx,pop_di,_CX)
- /*1*/ #define slen__(str,c) (_DI=(str),_AL=(c),_CX=0xffff,repne_,scasb_,not_cx,_CX)
- word pascal Slen(void near *str,char c);
- /*
- 髺óαáΘáÑΓ τ¿ß½« º¡á¬«ó ó str ñ« º¡á¬á c (»«ñßτ¿ΓδóáÑΓ ñ½¿¡π ßΓ᫬¿).
- */
- /*1*/ #define scpy_(str1,str2,kolsym) {push_si;push_di;_SI=(str1);_DI=(str2);_CX=(kolsym);cld_;repe_;movsb_;pop_di;pop_si;}
- /*1*/ #define scpy__(str1,str2,kolsym) {_SI=(str1);_DI=(str2);_CX=(kolsym);cld_;repe_;movsb_;}
- /*1*/ #define scpyf_(seg1,str1,str2,kolsym) {push_ds;push_si;push_di;_SI=(str1);_DI=(str2);_CX=(kolsym);_DS=(seg1);cld_;repe_;movsb_;pop_di;pop_si;pop_ds;}
- /*1*/ #define scpyf__(seg1,str1,str2,kolsym) {push_ds;_SI=(str1);_DI=(str2);_CX=(kolsym);_DS=(seg1);cld_;repe_;movsb_;pop_ds;}
- void pascal Scpy(void near *str1,void near *str2,unsigned kolsym);
- /*
- è«»¿απÑΓ »ÑαóδÑ kolsym íá⌐Γ ¿º str1 ó str2.髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ ¡Ñ
- «»αÑñѽѡ«.
- */
- /*1*/ #define scmp_(str1,str2,kolsym) (push_si,push_di,_SI=(str1),_DI=(str2),_CX=(kolsym),cld_,repe_,cmpsb_,pop_di,pop_si,_ZF)
- /*1*/ #define scmp__(str1,str2,kolsym) (_SI=(str1),_DI=(str2),_CX=(kolsym),cld_,repe_,cmpsb_,_ZF)
- /*1*/ #define scmpf_(seg1,str1,str2,kolsym) (push_ds,push_si,push_di,_SI=(str1),_DI=(str2),_CX=(kolsym),_DS=(seg1),cld_,repe_,cmpsb_,pop_di,pop_si,pop_ds,_ZF)
- /*1*/ #define scmpf__(seg1,str1,str2,kolsym) (push_ds,_SI=(str1),_DI=(str2),_CX=(kolsym),_DS=(seg1),cld_,repe_,cmpsb_,pop_ds,_ZF)
- char pascal Scmp(void near *str1,void near *str2,unsigned kolsym);
- /*
- æαáó¡¿óáÑΓ »ÑαóδÑ kolsym íá⌐Γ ó ñóπσ ßΓ᫬áσ.àß½¿ «¡¿ ß«ó»áñáεΓ,
- ó«ºóαáΘáÑΓ 64, ó »α«Γ¿ó¡«¼ ß½πτáÑ 0.
- */
- /*1*/ char* pascal Ssea(void near *str1,void near *str2,unsigned kolsym,unsigned nrep);
- /*
- êΘÑΓ »ÑαóδÑ kolsym íá⌐Γ str2 ßαÑñ¿ »Ñαóδσ (nrep+kolsym-1) íá⌐Γ str1.
- 髺óαáΘáÑΓ π¬áºáΓѽ∞ ¡á »Ñαóδ⌐ φ½Ñ¼Ñ¡Γ »«ß½Ñ ß«ó»áñáεΘÑú« Σαáú¼Ñ¡Γá,
- ¿½¿ 0, Ñß½¿ »«¿ß¬ ¡ÑπñáτÑ¡.
- */
- /*1*/ void pascal Sadd(void near *strs,void near *strd);
- /*
- 欽ѿóáÑΓ strd ¿ strs, ¿ »«¼ÑΘáÑΓ αѺπ½∞ΓáΓ ó strd.
- Åਧ¡á¬«¼ ¬«¡µá ßΓ᫬ ß½πª¿Γ 0
- */
-
- word pascal S2u(char near *str,word osn,word kolsym);
- word pascal _S2u(); /* bx, dx, cx */
- word pascal U2s(char near *str,word osn,word u);
- word pascal _U2s(); /* cx, bx, ax */
- int pascal S2i(char near *str,word osn,word kolsym);
- word pascal _S2i(); /* bx, dx, cx */
- word pascal I2s(char near *str,word osn,int u);
- word pascal _I2s(); /* bx, cx, ax */
-
- #define cio_(c) (_DL=(c),(_DL?(_AH=06,int_(0x21),_AL):0))
- char pascal Cio(char c);
- /*
- àß½¿ c!=255, Γ« óδó«ñ¿Γ c ¡á φ¬αá¡ (c==0 ¿ú¡«α¿απÑΓß∩).髺óαáΘáÑΓ c.
- àß½¿ c==255, Γ« óó«ñ¿Γ ß ¬½áó¿áΓπαδ 1 ß¿¼ó«½ íѺ «ª¿ñá¡¿∩, »α«óÑન
- ¡á Ctrl-Break, ¿ íѺ φσ«-»ÑτáΓ¿.髺óαáΘáÑΓ ASCII-¬«ñ ß¿¼ó«½á.
- */
-
- #define inkey_ (_AH=1,int_(0x16),_AX)
- #define inch_ (_AH=0,int_(0x16),_AX)
- #define at_inkey_ (_AH=0x11,int_(0x16),_AX)
- #define at_inch_ (_AH=0x10,int_(0x16),_AX)
- #define clbb_ {word d;_ES=0;d=peekw__(0x41C);pokew__(0x41A,d);}
-
- word pascal near Putu(word fd,word val);
- word pascal near _Putu(); /* dx, ax */
-
- word pascal near Puti(word fd,word val);
- word pascal near _Puti(); /* dx, ax */
-
- word pascal near Getu(word fd);
- word pascal near _Getu(); /* bx */
-
- int pascal near Geti(word fd);
- int pascal near _Geti(); /* bx */
-
- extern word U_base,S_base;
-
-
- #define alloc_(size) (_BX=(size),_AH=0x48,int_(0x21),_AX)
- word pascal near Alloc(word size);
- #define free_(seg) (_ES=(seg),_AH=0x49,int_(0x21),_AX)
- word pascal near Free(word seg);
- #define setblk_(seg,size) (_ES=(seg),_BX=(size),_AH=0x4a,int_(0x21),_BX)
- word pascal near Setblk(word seg,word size);
-
- word pascal Gcsp(char *c,word p); /* »Ñαóδ⌐ αẠp=80h */
- /* è«»¿pπÑΓ ó c ß¿¼ó«½δ ¬«¼á¡ñ¡«⌐ ßΓp«¬¿ ¡áτ¿¡á∩ ß p ¿ ºá¬á¡τ¿óá∩ »p«íѽ«¼.
- 髺ópáΘáÑΓ p ñ½∩ ¡«ó«ú« »ápá¼ÑΓpá. àß½¿ p ¼Ñ¡∞ΦÑ 80h ¿½¿ αáó¡« »αÑñδñπΘѼπ,
- Γ« ó ¬«¼á¡ñ¡«⌐ ßΓα«¬Ñ í«½∞ΦÑ ¡ÑΓ »áαá¼ÑΓα«ó. */
- word pascal _Gcsp(); /* bx,dx */
- word pascal GetCsp(word *b);
- extern word CspOfs;
- extern void (near *IsSep)(void);
- extern void (near *IsEnd)(void);
- /* Éáºí¿αáÑΓ ßΓ᫬π ES:(CspOfs+1) [»« π¼«½τá¡¿ε pspseg:(80h+1)] ¿
- ºá»«½¡∩ÑΓ b[] »áαἿ ó¿ñá:
- <ß¼ÑΘÑ¡¿Ñ 1 ºá»¿ß¿ ó ßΓ᫬Ñ> <ß¼ÑΘÑ¡¿Ñ ß¿¼ó«½á ßαáºπ ºá 1 ºá»¿ß∞ε>
- <ß¼ÑΘÑ¡¿Ñ 2 ºá»¿ß¿ ó ßΓ᫬Ñ> <ß¼ÑΘÑ¡¿Ñ ß¿¼ó«½á ßαáºπ ºá 2 ºá»¿ß∞ε>
- ...
- <ß¼ÑΘÑ¡¿Ñ n ºá»¿ß¿ ó ßΓ᫬Ñ> <ß¼ÑΘÑ¡¿Ñ ß¿¼ó«½á ßαáºπ ºá n ºá»¿ß∞ε>
- ä½∩ «»αÑñѽѡ¿∩ αáºñѽ¿Γѽ∩ ºá»¿ßÑ⌐ ¿ ¬«¡µá ßΓ᫬¿ ¿ß»«½∞ºπÑΓ
- »α«µÑñπαδ IsSep ¿ IsEnd ß««ΓóÑΓßΓóÑ¡¡«. ìá óσ«ñÑ π ¬áªñ«⌐: al - «τÑαÑñ¡«⌐
- ß¿¼ó«½, es:di Ñú« ß¼ÑΘÑ¡¿Ñ; ¡á óδσ«ñÑ: ZF=1 Ñß½¿ αáºñѽ¿Γѽ∞(IsSep) ¿½¿
- ¬«¡Ñµ_ßΓ᫬¿_¡Ñ_óσ«ñ∩Θ¿⌐_ó_¡ÑÑ(IsEnd) ¿ ZF=0 ó »α«Γ¿ó¡«¼ ß½πτáÑ.
- Å« π¼«½τá¡¿ε αáºñѽ¿Γѽ∞ - »α«íѽ, ßΓα«¬á ºá¬á¡τ¿óáÑΓß∩ CR(0x0D).
- 髺óαáΘáÑΓ ¬«½¿τÑßΓó« φ½Ñ¼Ñ¡Γ«ó, ºá¡ÑßÑ¡¡δσ ó b[] (¬«½¿τÑßΓó« »áα * 2);
- Ñß½¿ φΓ« τ¿ß½« ¡ÑτÑΓ¡«, Γ« ßΓα«¬á «¬á¡τ¿óáÑΓß∩ αáºñѽ¿ΓѽѼ, »«ß½Ññ¡¿⌐
- φ½Ñ¼Ñ¡Γ b[] («¬«¡τá¡¿Ñ αáºñѽ¿Γѽ∩) ¼«ª¡« ¿ú¡«α¿α«óáΓ∞. */
- /*1*/void pascal _Putzs(void);
- /*1*/#define putzs_(fh,name) {push_di;_DI=name;_BX=fh;_Putzs();pop_di;}
- /*1*/#define putzs__(fh,name) {_DI=name;_BX=fh;_Putzs();}
- void Delay(long p);
- void _Delay(void); /* bxcx */
- void TDelay(long p);
- void _TDelay(void); /* bxcx */
- void Set0Tim(word div);
- void _Set0Tim(void); /* dx */
- void MDelay(long p);
- void BDelay(long p);
- void CkBuf(void);
-
- unsigned long Pow(word base,word pow);
- unsigned long _Pow(); /* bx,cx */
- void _Tune(void);
- #define tune_(m) {_BX=m;_Tune();} /* m>18 !!! */
- void Sound(void);
- void Sound_on(void);
- void Sound_off(void);
- word Sqrt(unsigned long x);
- word _Sqrt(); /* bx_cx */
- word Rnd(void);
- #define rnd_(n) (_DX=n,Rnd())
- extern word Rnd_init;
- #define rnd1_(n) (Rnd_init+=rnd_(99),rnd_(n))
- word Rnd2(void);
- #define rnd2_(n) (Rnd2()%n)
- word Rnd3(void);
- #ifdef __FarCalls
- void Run(char far *cmdstr); /* struct cmdstr
- {
- byte len = sizeof(cmdstr)-2;
- char command[];
- const char cr = 13;
- }
- */
- #else
- void Run(int segstr,char near *ofsstr);
- #endif
- #ifdef __FarCalls
- word Exec(char far *nstr,char far *lstr);
- /* struct lstr
- {
- byte len = sizeof(lstr)-2;
- char command_line[];
- const char cr = 13;
- }
- */
- #else
- word Exec(int segnstr,char near *ofsnstr,int seglstr,char near *ofslstr);
- #endif
- extern void (near *pproc)(void);
- /* éδºδóáÑΓß∩ »ÑαÑñ »ÑαÑñáτÑ⌐ π»αáó½Ñ¡¿∩ ó ºáúαπªÑ¡¡πε Exec-«¼ »α«úαá¼¼π */
- extern word epb[11];
- /* Exec Parameter Block ñ½∩ Exec() */
- #define EPB_segenv 0
- #define EPB_ofslstr 1
- #define EPB_seglstr 2
- #define EPB_ofsfcb1 3
- #define EPB_segfcb1 4
- #define EPB_ofsfcb2 5
- #define EPB_segfcb2 6
-
- #define EPB_sp 7
- #define EPB_ss 8
- #define EPB_ip 9
- #define EPB_cs 10
- /* CF clear if OK, if error CF set & return Error_code */
-
- void SetKeyInt(void);
- void ResKeyInt(void);
- extern byte stick,rtt,atkbd,_stickkeys[7];
- /* 7 6 5 4 3 2 1 0
- F1 Esc Enter Space Left Right Down Up */
- #define F1 0x80
- #define Esc 0x40
- #define Enter 0x20
- #define Space 0x10
- #define Left 8
- #define Right 4
- #define Down 2
- #define Up 1
- /** àß½¿ rtt ¼Ñ¡∞ΦÑ ß««Γó. ¬½áó¿Φ¿,
- Γ« φΓá ¬½áó¿Φá »ÑαÑñáÑΓß∩ Γá¬ªÑ ¿ ó OldInt9 **/
- void far xkeyint(void); /* pushf_;xkeyint() */
- void near xSetKeyInt(void);
- void near xResKeyInt(void);
- void near set_E0(void); /* _AL=scancode>=E0 */
- void near cl_tbl(void);
- void near cl_kt(void);
- void near set_00(void); /* _AL=scancode>=E0 */
- void clh_kbd(void);
- extern byte xmf;
- extern word xold9o;
- extern word xold9s;
- extern dword xold9;
- extern word cl_sta;
- extern word cl_cnt;
- extern word xfls;
- extern void (far *u9)(void);
- extern word u9o;
- extern word u9s;
- extern byte near KTbl[];
-
- #define beep_(tone,delay) {tune_(tone);Sound_on();TDelay(delay);Sound_off();}
- #define snd_(tone,delay) {tune_(tone);Sound_on();BDelay(delay*1000l);Sound_off();}
-
- #define newl_ {putch_(13);putch_(10);}
- #define fnewl_(fd) write_(fd,"\r\n",2);
-
- /*1*/ /* ¥Γ¿ Σπ¡¬µ¿¿ ΓαÑíπεΓ ¡á½¿τ¿∩ ó _ES ßÑú¼Ñ¡Γá µÑ½¿ */
-
- extern void far *pCRC32Tbl; /* ô¬áºáΓѽ∞ ¡á ß½πªÑí¡πε Γáí½¿µπ */
- extern dword iCRC32Tbl; /* æ½πªÑí¡á∩ »ÑαѼѡ¡á∩ */
- extern dword vCRC32; /* ÅÑαѼѡ¡á∩ ñ½∩ ¡á¬«»½Ñ¡¿∩ CRC32 (=0!) */
- void CRC32(char far *s,word slen);
- /* Äí¡«ó½∩ÑΓ vCRC32 ¿º »ÑαÑñá¡¡«⌐ ßΓ᫬¿. ìÑ«íσ«ñ¿¼á ¿¡¿µ¿á½¿ºáµ¿∩
- ó¡πΓαÑ¡¡¿σ »ÑαѼѡ¡δσ InitCRC32Tbl. */
- #define crc32_(s,l) (CRC32(s,l),~vCRC32)
- void InitCRC32Tbl(void far *_pCRC32Tbl_);
- /* æ«ßΓáó½∩ÑΓ ß½πªÑí¡πε Γáí½¿µπ, ¿ß»«½∞ºπ∩ iCRC32Tbl */