- if (length>0xffffl)\r
- Quit ("CA_FarWrite doesn't support 64K reads yet!");\r
-\r
-asm push ds\r
-asm mov bx,[handle]\r
-asm mov cx,[WORD PTR length]\r
-asm mov dx,[WORD PTR source]\r
-asm mov ds,[WORD PTR source+2]\r
-asm mov ah,0x40 // WRITE w/handle\r
-asm int 21h\r
-asm pop ds\r
-asm jnc good\r
- errno = _AX;\r
- return false;\r
+ boolean flag;\r
+ dword fat=0;
+ word segm=0;
+ //if(mm->EMSVer<0x40)\r
+ if(length>0xfffflu)
+ {
+ printf("pee\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
+ __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