home *** CD-ROM | disk | FTP | other *** search
- //
- // include file for dynamically linked functions:
- // decode()
- // cure()
- // jmp()
- //
- // use: bcc -mh -c -K filename.c
- //
- // Any model except Tiny.
- // Use Huge model if static data present.
- //
-
- #ifdef __EV_LIB_C
- #define C
- #else
- #ifdef __cplusplus
- #define C extern "C"
- #else
- #define C extern
- #endif
- #endif
-
- #ifndef FALSE
- #define FALSE 0
- #define TRUE 1
- #endif
-
- typedef unsigned long ulong;
- typedef unsigned char uchar;
- typedef unsigned int uint;
-
- typedef struct _NE_HEADER{
- uint Signature;
- uint Link_Version;
- uint ET_Offset_NE;
- uint ET_Length;
- ulong Check_Sum;
- uint M_Flag;
- uint Auto_Data_Segment;
- uint LHeap_Size;
- uint Stack_Size;
- uint IP;
- uint CS;
- uint SP;
- uint SS;
- uint ST_Size;
- uint MRT_Size;
- uint NNT_Length;
- uint ST_Offset_NE;
- uint RT_Offset_NE;
- uint RNT_Offset_NE;
- uint MRT_Offset_NE;
- uint INT_Offset_NE;
- ulong NNT_Offset;
- uint Number_MEP;
- uint Alignment;
- uchar Reserved[12];
- }NE_HEADER;
-
- #define MAX_FILE_TAIL 9999
-
- #define SIZE_HEADER 0x400
- #define SIZE_PAGE_A 0x400
- #define SIZE_PAGE_B 0x400
- #define SIZE_PAGE_C 0x8000
-
- #define FAT_BITS_12 12
- #define FAT_BITS_16 16
-
- #define R_CLEAN 0
- #define R_CURE 1
- #define R_DETECT 2
- #define R_DELETE 3
- #define R_WARNING 4
- #define R_ERROR 5
- #define R_MEMORY 6
- #define R_CANCEL 7
- #define R_SKIP 8
- #define R_USER 9
- #define R_FAIL 10
-
- #define M_TEST 0
- #define M_CURE 1
- #define M_CURE_ALL 2
- #define M_DELETE 3
- #define M_DELETE_ALL 4
- #define M_CANCEL 5
- #define M_SKIP 6
- #define M_AGAIN 7
- #define M_FAIL 8
-
- #ifndef _COM_
- #define _COM_ 0x0008
- #define _EXE_ 0x0010
- #define _SYS_ 0x0020
- #define _WIN_ 0x0200
- #endif
-
- C void far* List_of_List;
-
- typedef struct DISK_INFO_tag {
-
- uchar Drive; // Drive 0=A:, 1=B:, 2=C: etc
- uchar Disk; // Disk 0=A, 1=B, 80h=C, 81h=D, 40h=driver
-
- uchar Sect_per_Clust; // Logical Disk Info
- uchar Media;
- uint Total_Clust;
- uint Bytes_per_Sect;
- uchar FAT_Count;
- uint Root_Dir_Entries;
- uint Sector_before_FAT;
- uint Root_Sectors;
- uint First_Data_Sector;
- uint Sectors_into_FAT;
- uchar FAT_12_16; // 12 or 16 bit FAT
-
- uint Num_of_Heads; // Absolute Disk Info
- uint Sect_per_Track;
-
- }DISK_INFO;
-
-
- C DISK_INFO far* Disk_Info;
-
- C uchar far* Message_Str;
- C char far* Tail_Str;
- C char far* Name_Ptr;
- C uchar far* Header;
- C uchar far* Page_A;
- C uchar far* Page_B;
- C uchar far* Page_C;
-
- C int far Handle;
- C int far File_Mode; // M_TEST,M_CURE,M_CURE_ALL,M_DELETE,M_DELETE_ALL
- C char far* File_Full_Name;
- C char far* File_Directory;
- C char far* File_Name;
- C char far* File_Ext;
- C char far* File_Drive;
-
- C uint far File_Format;
- C uint far File_Extension;
- C ulong far File_Length;
- C ulong far File_Tail;
-
- C ulong far EP;
- C ulong far EP_Next;
-
- C ulong far Exe_Header_Len;
- C uint far Exe_IP;
- C uint far Exe_CS;
-
- C uint far Sys_Interrupt;
- C uint far Sys_Strategy;
-
- C uint far First_MCB;
- C uint far Z_MCB;
- C uint far BIOS_Mem;
- C uint far DOS_Mem;
- C uint far DOS_Segm;
- C uint far Mem_Segm;
- C uint far Mem_Offs;
-
- C ulong far Check_Sum( uchar far* mass, uchar len);
- C int far Ch_Size(ulong size);
- C int far Ch_Size_Lehigh(ulong size);
- C long far Seek(long set);
- C int far Read(char far* buf,unsigned len);
- C int far Write(char far* buf,unsigned len);
- C int far Read_13(int CX_Sector,int DH_Head,char far *Buffer);
- C int far Write_13(int CX_Sector,int DH_Head,char far *Buffer);
- C int far Read_25(int Num_Read, long Sector, char far *Buffer);
- C int far Write_26(int Num_Write, long Sector, char far *Buffer);
- C int far Read_MBR(char far* Page);
- C int far Read_BOOT(char far* Page);
- C int far Write_MBR(char far* Page);
- C int far Write_BOOT(char far* Page);
- C int far Move_AbsSect_to_Boot(int Sector, char Head);
- C int far Move_LogSect_to_Boot(long Sector);
- C int far Move_AbsSect_to_MBR(int Sector, char Head);
- C int far Move_LogSect_to_MBR(long Sector);
- C long far Next_Buffer(long Cur_Buff);
- C int far Cure_EXE(long nSize, uint nCS, uint nIP, uint nSS, uint nSP);
- C int far Strncmp(char far*s1,char far*s2,int n);
- C int far Access(char far*filename,int amode);
- C int far _Chmod(char far*filename,int func,int attr);
- C int far Strlen(char far*s);
-
- C long far Jmp_Far ( uint Off_CS, uint Off_IP, signed int Data);
- C int far Cure_COM_Immediate ( char far* p, int len , long cut );
- C int far Cure_COM ( long from, int len , long cut );
- C int far Xor_Byte ( char far *from , char far *to , char key, int len );
- C int far Xor_Word ( char far *from , char far *to , int key, int len );
- C int far Add_Byte ( char far *from , char far *to , signed char key, int len );
- C int far Add_Word ( char far *from , char far *to , signed int key, int len );
-
-
- C int far Printf (const char far *format , ...); // Must be HUGE model
- C int far Stop ();
- C int far Line_outtext (char far*);
- C int far Line_stop ();
-
-
- C ulong far NE_Seek;
- C NE_HEADER far* NE_Ptr;
- C long far Get_Win_SD(int no, char far* buffer);
-
-
- //---- User Defined Functions --------------
-
- C int far decode();
- C int far cure();
- C long far jmp();
-