X-Git-Url: http://4ch.mooo.com/gitweb/?a=blobdiff_plain;f=src%2Flib%2F16_ca.c;h=f74a5710a4349999c819f619c959e02f890c7f2d;hb=96e05db3b16f8e7ea67df81250163e0b590c4195;hp=0505972441967ccaf4ef38b4a881f1758ce1af4f;hpb=30b59dda179a11477b5e7787720d83395bd61520;p=16.git diff --git a/src/lib/16_ca.c b/src/lib/16_ca.c index 05059724..f74a5710 100644 --- a/src/lib/16_ca.c +++ b/src/lib/16_ca.c @@ -74,9 +74,9 @@ byte _seg *audiosegs[NUMSNDCHUNKS]; void _seg *grsegs[NUMCHUNKS]; byte far grneeded[NUMCHUNKS]; -byte ca_levelbit,ca_levelnum; +byte ca_levelbit,ca_levelnum;*/ -int profilehandle,debughandle;*/ +int profilehandle,debughandle; void (*drawcachebox) (char *title, unsigned numcache); void (*updatecachebox) (void); @@ -173,17 +173,16 @@ long GRFILEPOS(int c) = ============================ */ -/*++++ void CA_OpenDebug(void) { - unlink("DEBUG.TXT"); - debughandle = open("DEBUG.TXT", O_CREAT | O_WRONLY | O_TEXT); + unlink("debug.16"); + debughandle = open("debug.16", O_CREAT | O_WRONLY | O_TEXT); } void CA_CloseDebug(void) { - close debughandle); -}*/ + close(debughandle); +} @@ -216,37 +215,49 @@ void CAL_GetGrChunkLength (int chunk) ========================== */ -boolean CA_FarRead (int handle, byte far *dest, dword length) +boolean CA_FarRead(int handle, byte huge *dest, dword length, mminfo_t *mm) { boolean flag; - if (length>0xffffl) - printf("CA_FarRead doesn't support 64K reads yet!\n"); - - __asm - { - push ds - mov bx,[handle] - mov cx,[WORD PTR length] - mov dx,[WORD PTR dest] - mov ds,[WORD PTR dest+2] - mov ah,0x3f // READ w/handle - int 21h - pop ds - jnc good - mov errno,ax - mov flag,0 - jmp End + /*dword fat=0; + word segm=0; + //if(mm->EMSVer<0x40) + if(length>0xfffflu) + { + printf("File is a fat bakapee\n"); + segm=(length%0xfffflu)-1; + fat=segm*0xfffflu; + length-=fat; +// printf("CA_FarRead doesn't support 64K reads yet!\n"); + } + + if(!fat&&!segm) + {*/ + __asm + { + push ds + mov bx,[handle] + mov cx,[WORD PTR length] + mov dx,[WORD PTR dest] + mov ds,[WORD PTR dest+2] + mov ah,0x3f // READ w/handle + int 21h + pop ds + jnc good + mov errno,ax + mov flag,0 + jmp End good: - cmp ax,[WORD PTR length] - je done -// errno = EINVFMT; // user manager knows this is bad read - mov flag,0 - jmp End + cmp ax,[WORD PTR length] + je done +// errno = EINVFMT; // user manager knows this is bad read + mov flag,0 + jmp End done: - mov flag,1 + mov flag,1 End: - } - return flag; + } + return flag; + //}else return 0;//todo: EXPAND!!! } @@ -260,37 +271,49 @@ End: ========================== */ -boolean CA_FarWrite (int handle, byte far *source, dword length) +boolean CA_FarWrite(int handle, byte huge *source, dword length, mminfo_t *mm) { boolean flag; - if (length>0xffffl) - printf("CA_FarWrite doesn't support 64K reads yet!\n"); - - __asm - { - push ds - mov bx,[handle] - mov cx,[WORD PTR length] - mov dx,[WORD PTR source] - mov ds,[WORD PTR source+2] - mov ah,0x40 // WRITE w/handle - int 21h - pop ds - jnc good - mov errno,ax - mov flag,0 - jmp End + /*dword fat=0; + word segm=0; + //if(mm->EMSVer<0x40) + if(length>0xfffflu) + { + printf("File is a fat bakapee\n"); + segm=(length%0xfffflu)-1; + fat=segm*0xfffflu; + length-=fat; +// printf("CA_FarRead doesn't support 64K reads yet!\n"); + } + + if(!fat&&!segm) + {*/ + __asm + { + push ds + mov bx,[handle] + mov cx,[WORD PTR length] + mov dx,[WORD PTR source] + mov ds,[WORD PTR source+2] + mov ah,0x40 // WRITE w/handle + int 21h + pop ds + jnc good + mov errno,ax + mov flag,0 + jmp End good: - cmp ax,[WORD PTR length] - je done - //errno = ENOMEM; // user manager knows this is bad write - mov flag,0 - jmp End + cmp ax,[WORD PTR length] + je done + //errno = ENOMEM; // user manager knows this is bad write + mov flag,0 + jmp End done: - mov flag,1 + mov flag,1 End: - } - return flag; + } + return flag; + //}else return 0; } @@ -304,16 +327,17 @@ End: ========================== */ -boolean CA_ReadFile(char *filename, memptr *ptr) +boolean CA_ReadFile(char *filename, memptr *ptr, mminfo_t *mm) { int handle; - dword size; + dword size; + //long size; if((handle = open(filename,O_RDONLY | O_BINARY, S_IREAD)) == -1) return false; size = filelength(handle); - if(!CA_FarRead(handle,*ptr,size)) + if(!CA_FarRead(handle,*ptr,size, mm)) { close(handle); return false; @@ -337,14 +361,15 @@ boolean CA_ReadFile(char *filename, memptr *ptr) boolean CA_LoadFile(char *filename, memptr *ptr, mminfo_t *mm, mminfotype *mmi) { int handle; - long size; + dword size; + //long size; if((handle = open(filename,O_RDONLY | O_BINARY, S_IREAD)) == -1) return false; size = filelength (handle); MM_GetPtr(ptr,size, mm, mmi); - if(!CA_FarRead(handle,*ptr,size)) + if(!CA_FarRead(handle,*ptr,size, mm)) { close(handle); return false; @@ -1022,8 +1047,8 @@ asm mov ds,ax void CA_Startup(void) { #ifdef PROFILE - unlink("PROFILE.TXT"); - profilehandle = open("PROFILE.TXT", O_CREAT | O_WRONLY | O_TEXT); + unlink("profile.16"); + profilehandle = open("profile.16", O_CREAT | O_WRONLY | O_TEXT); #endif /*++++ // MDM begin - (GAMERS EDGE)