\r
=============================================================================\r
*/\r
-
+\r
#include "src/lib/16_ca.h"\r
//#include "ID_STRS.H"\r
\r
void _seg *grsegs[NUMCHUNKS];\r
\r
byte far grneeded[NUMCHUNKS];\r
-byte ca_levelbit,ca_levelnum;\r
+byte ca_levelbit,ca_levelnum;*/\r
\r
-int profilehandle,debughandle;*/\r
+int profilehandle,debughandle;\r
\r
void (*drawcachebox) (char *title, unsigned numcache);\r
void (*updatecachebox) (void);\r
=\r
============================\r
*/\r
-/*++++\r
void CA_OpenDebug(void)\r
{\r
- unlink("DEBUG.TXT");\r
- debughandle = open("DEBUG.TXT", O_CREAT | O_WRONLY | O_TEXT);\r
+ unlink("debug.txt");\r
+ debughandle = open("debug.txt", O_CREAT | O_WRONLY | O_TEXT);\r
}\r
\r
void CA_CloseDebug(void)\r
{\r
- close debughandle);\r
-}*/\r
+ close(debughandle);\r
+}\r
\r
\r
\r
==========================\r
*/\r
\r
-boolean CA_FarRead (int handle, byte far *dest, dword length)\r
-{
+boolean CA_FarRead(int handle, byte huge *dest, dword length, mminfo_t *mm)\r
+{\r
boolean flag;\r
- if (length>0xffffl)\r
- printf("CA_FarRead doesn't support 64K reads yet!\n");\r
+ dword fat=0;
+ word segm=0;
+ //if(mm->EMSVer<0x40)\r
+ if(length>0xfffflu)
+ {
+ printf("File is a fat bakapee\n");
+ segm=(length%0xfffflu)-1;
+ fat=segm*0xfffflu;
+ length-=fat;\r
+// printf("CA_FarRead doesn't support 64K reads yet!\n");\r
+ }
- __asm
+ if(!fat&&!segm)
{\r
- push ds\r
- mov bx,[handle]\r
- mov cx,[WORD PTR length]\r
- mov dx,[WORD PTR dest]\r
- mov ds,[WORD PTR dest+2]\r
- mov ah,0x3f // READ w/handle\r
- int 21h\r
- pop ds\r
- jnc good
- mov errno,ax
- mov flag,0
- jmp End
+ __asm\r
+ {\r
+ push ds\r
+ mov bx,[handle]\r
+ mov cx,[WORD PTR length]\r
+ mov dx,[WORD PTR dest]\r
+ mov ds,[WORD PTR dest+2]\r
+ mov ah,0x3f // READ w/handle\r
+ int 21h\r
+ pop ds\r
+ jnc good\r
+ mov errno,ax\r
+ mov flag,0\r
+ jmp End\r
good:\r
- cmp ax,[WORD PTR length]\r
- je done\r
-// errno = EINVFMT; // user manager knows this is bad read\r
- mov flag,0
- jmp End
-done:
- mov flag,1
-End:
- }\r
- return flag;\r
+ cmp ax,[WORD PTR length]\r
+ je done\r
+// errno = EINVFMT; // user manager knows this is bad read\r
+ mov flag,0\r
+ jmp End\r
+done:\r
+ mov flag,1\r
+End:\r
+ }\r
+ return flag;
+ }else return 0;//todo: EXPAND!!!\r
}\r
\r
\r
==========================\r
*/\r
\r
-boolean CA_FarWrite (int handle, byte far *source, dword length)\r
-{
+boolean CA_FarWrite(int handle, byte huge *source, dword length, mminfo_t *mm)\r
+{\r
boolean flag;\r
- if (length>0xffffl)\r
- printf("CA_FarWrite doesn't support 64K reads yet!\n");
-\r
- __asm
+ dword fat=0;
+ word segm=0;
+ //if(mm->EMSVer<0x40)\r
+ if(length>0xfffflu)
+ {
+ printf("File is a fat bakapee\n");
+ segm=(length%0xfffflu)-1;
+ fat=segm*0xfffflu;
+ length-=fat;\r
+// printf("CA_FarRead doesn't support 64K reads yet!\n");\r
+ }\r
+
+ if(!fat&&!segm)
{\r
- push ds\r
- mov bx,[handle]\r
- mov cx,[WORD PTR length]\r
- mov dx,[WORD PTR source]\r
- mov ds,[WORD PTR source+2]\r
- mov ah,0x40 // WRITE w/handle\r
- int 21h\r
- pop ds\r
- jnc good
- mov errno,ax\r
- mov flag,0
- jmp End\r
+ __asm\r
+ {\r
+ push ds\r
+ mov bx,[handle]\r
+ mov cx,[WORD PTR length]\r
+ mov dx,[WORD PTR source]\r
+ mov ds,[WORD PTR source+2]\r
+ mov ah,0x40 // WRITE w/handle\r
+ int 21h\r
+ pop ds\r
+ jnc good\r
+ mov errno,ax\r
+ mov flag,0\r
+ jmp End\r
good:\r
- cmp ax,[WORD PTR length]\r
- je done\r
- //errno = ENOMEM; // user manager knows this is bad write
- mov flag,0
- jmp End\r
-done:
- mov flag,1
+ cmp ax,[WORD PTR length]\r
+ je done\r
+ //errno = ENOMEM; // user manager knows this is bad write\r
+ mov flag,0\r
+ jmp End\r
+done:\r
+ mov flag,1\r
End:\r
- }
- return flag;\r
+ }\r
+ return flag;
+ }else return 0;\r
}\r
\r
\r
==========================\r
*/\r
\r
-boolean CA_ReadFile(char *filename, memptr *ptr)\r
+boolean CA_ReadFile(char *filename, memptr *ptr, mminfo_t *mm)\r
{\r
int handle;\r
dword size;\r
return false;\r
\r
size = filelength(handle);\r
- if(!CA_FarRead(handle,*ptr,size))\r
+ if(!CA_FarRead(handle,*ptr,size, mm))\r
{\r
close(handle);\r
return false;\r
==========================\r
*/\r
\r
-boolean CA_LoadFile(char *filename, memptr *ptr)\r
+boolean CA_LoadFile(char *filename, memptr *ptr, mminfo_t *mm, mminfotype *mmi)\r
{\r
int handle;\r
long size;\r
return false;\r
\r
size = filelength (handle);\r
- MM_GetPtr (ptr,size);\r
- if(!CA_FarRead (handle,*ptr,size))\r
+ MM_GetPtr(ptr,size, mm, mmi);\r
+ if(!CA_FarRead(handle,*ptr,size, mm))\r
{\r
- close (handle);\r
+ close(handle);\r
return false;\r
}\r
close(handle);\r
//--------------------------\r
// expand less than 64k of data\r
//--------------------------\r
-
- __asm
+\r
+ __asm\r
{\r
mov bx,[headptr]\r
\r
asm mov bx,[headptr] // back to the head node for next bit\r
\r
asm cmp di,ax // done?\r
-asm jne expandshort
+asm jne expandshort\r
}\r
}\r
else\r
//--------------------------\r
\r
length--;\r
-
- __asm
+\r
+ __asm\r
{\r
asm mov bx,[headptr]\r
asm mov cl,1\r
asm jns expand // when length = ffff ffff, done\r
}\r
}\r
-
- __asm
+\r
+ __asm\r
{\r
mov ax,ss\r
- mov ds,ax
+ mov ds,ax\r
}\r
\r
}*/\r
=\r
======================\r
*/\r
-/*++++
+/*++++\r
void CA_CacheAudioChunk (int chunk)\r
{\r
long pos,compressed;\r
=\r
======================\r
*/\r
-/*++++
+/*++++\r
void CA_LoadAllSounds (void)\r
{\r
unsigned start,i;\r