#include "\projet\lib386\lib_sys\adeline.h" #include "\projet\lib386\lib_sys\lib_sys.h" #include "\projet\lib386\lib_svga\lib_svga.h" #include #include #include #include #include #include #include /*ΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉ* ΓûêΓûÇΓûÇΓûÇΓûê ΓûêΓûÇΓûÇΓûÇΓûÇ ΓûÇΓûä ΓûäΓûÇ ΓûêΓûêΓûÇΓûÇΓûÇ ΓûêΓûê ΓûäΓûÇΓûä ΓûÇΓûÇ ΓûÇΓûÇΓûÇΓûÇΓûÇ ΓûÇ ΓûÇ *ΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉ*/ /*ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ*/ struct ffblk { char ff_reserved[21]; char ff_attrib; unsigned ff_ftime; unsigned ff_fdate; long ff_fsize; char ff_name[13]; }; union REGS reg; struct SREGS segregs; static struct { char password; char version; char encoding; char bits_per_pixel; short int xmin, ymin, xmax, ymax; short int xres, yres; unsigned char palette[48]; char reserved; char no_of_planes; short int bytes_per_line; short int palette_type; char filler[58]; } pcx_header; short int srcseg, srcoff, destseg, destoff; short int xres, yres, active_bank, bank; short int attr, i, j, k, dir_index= 0, type, length[7]; short int column, end, done, level,key, start_x, start_y, start_angle, cursor_x, cursor_y, mode; struct ffblk ffblk; long int col,row; short int index = 0 ; #define SIZE_BUF 2048L UBYTE *PtDest ; LONG debugline=0 ; /*--------------------------------------------------------------------------*/ void line_out( UBYTE *pts ) { UBYTE *pt ; WORD i ; pt = pts ; for ( i = 0 ; i < 640 ; i++ ) *PtDest++ = *pt++ ; /* Box( 0, 0, 160, 7, 0 ) ; Text( 0, 0, "Ligne:%d", debugline++ ) ; CopyBlockPhys( 0, 0, 160, 7 ) ; */ } /*--------------------------------------------------------------------------*/ UBYTE next_char( ULONG fd, UBYTE *pt) { if ( index == SIZE_BUF ) { index = 0 ; Read( fd, pt, SIZE_BUF ); } return(pt[index++]) ; } /*ΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉ* Γûê ΓûêΓûÇΓûÇΓûÇΓûê ΓûêΓûÇΓûÇΓûÇΓûê ΓûêΓûÇΓûÇΓûÇΓûä ΓûêΓûÇΓûÇΓûÇΓûê ΓûêΓûÇΓûÇΓûÇΓûÇ ΓûÇΓûä ΓûäΓûÇ ΓûêΓûê ΓûêΓûê Γûê ΓûêΓûêΓûÇΓûÇΓûê ΓûêΓûê Γûê ΓûêΓûêΓûÇΓûÇΓûÇ ΓûêΓûê ΓûäΓûÇΓûä ΓûÇΓûÇΓûÇΓûÇΓûÇ ΓûÇΓûÇΓûÇΓûÇΓûÇ ΓûÇΓûÇ ΓûÇ ΓûÇΓûÇΓûÇΓûÇ ΓûÇΓûÇΓûÇΓûÇΓûÇ ΓûÇΓûÇ ΓûÇΓûÇΓûÇΓûÇΓûÇ ΓûÇ ΓûÇ *ΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉ*/ /*ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ*/ void Load_Pcx(char *file_name, UBYTE *screen, UBYTE *tabcol) { ULONG fd ; FILE *fsave ; unsigned char ch,color,buffer[650],file_buf[SIZE_BUF] ; short int i,j,k,m,pass,col,row,plane ; PtDest = screen ; fd = OpenRead( file_name ) ; Read( fd, &pcx_header, 128L ) ; Seek( fd, -768L, SEEK_END ) ; Read( fd, tabcol, 768 ) ; Seek( fd, 128L, SEEK_START ) ; index = SIZE_BUF ;/* For Load in next_char */ for ( row=pcx_header.ymin ; row<=pcx_header.ymax ; row++ ) { for ( col=pcx_header.xmin ; col<=pcx_header.xmax ; col++ ) { ch = next_char( fd, file_buf ) ; if ((ch & 0xC0) != 0xC0) pass = 1 ; else { pass = ch & 0x3F ; ch = next_char( fd, file_buf ); } for ( m=0 ; m