From 1ac770860f019965706c1c3e07df40ff9849dfb0 Mon Sep 17 00:00:00 2001 From: sparky4 Date: Thu, 2 Jul 2015 17:44:38 -0500 Subject: [PATCH] wwww modified: exmmtest.exe modified: src/lib/16_ca.c modified: src/lib/16_mm.c --- exmmtest.exe | Bin 45320 -> 45496 bytes src/lib/16_ca.c | 112 ++++++++++++++++++++++++++---------------------- src/lib/16_mm.c | 33 ++++++++------ 3 files changed, 81 insertions(+), 64 deletions(-) diff --git a/exmmtest.exe b/exmmtest.exe index c3e45c28f4ecd9be3f69f716b6cd372ffa28196a..5f74fc421fa666b13d655702949c0ca542d091cc 100644 GIT binary patch delta 13544 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 delta 13517 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 Ii0xffffl) + if(length>0xfffflu) { - fat=length-0xffffl; - segm++; + segm=(length%0xfffflu)-1; + fat=segm*0xfffflu; + length-=fat; // printf("CA_FarRead doesn't support 64K reads yet!\n"); } - - __asm + + if(!fat&&!segm) { - 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 + __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!!! } @@ -266,43 +270,47 @@ End: ========================== */ -boolean CA_FarWrite (int handle, byte huge *source, dword length) +boolean CA_FarWrite(int handle, byte huge *source, dword length) { boolean flag; dword fat=0; word segm=0; - while(length>0xffffl) + if(length>0xfffflu) { - fat=length-0xffffl; - segm++; + segm=(length%0xfffflu)-1; + fat=segm*0xfffflu; + length-=fat; // printf("CA_FarRead doesn't support 64K reads yet!\n"); } - - __asm + + if(!fat&&!segm) { - 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 + __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; } diff --git a/src/lib/16_mm.c b/src/lib/16_mm.c index 8df8cb4d..7ca7cea1 100644 --- a/src/lib/16_mm.c +++ b/src/lib/16_mm.c @@ -174,7 +174,7 @@ unsigned MML_SetupEMS(mminfo_t *mm) mov [freeEMSpages],bx or bx,bx jz noEMS // no EMS at all to allocate - +//++++EXPAND DONG!!!! cmp bx,4 jle getpages // there is only 1,2,3,or 4 pages mov bx,4 // we can't use more than 4 pages @@ -413,8 +413,9 @@ void MML_ShutdownXMS(mminfo_t *mm) void MML_UseSpace(unsigned segstart, dword seglength, mminfo_t *mm) { mmblocktype huge *scan,huge *last; - unsigned oldend; - //++++if(mm->EMSVer) + dword oldend; + dword fat=0; + word segm=0; dword extra; scan = last = mm->mmhead; @@ -435,13 +436,19 @@ void MML_UseSpace(unsigned segstart, dword seglength, mminfo_t *mm) oldend = scan->start + scan->length; extra = oldend - (segstart+seglength); //++++emsver stuff! - if(extra > 0xfffflu) + if(extra>0xfffflu) { - printf("MML_UseSpace: Segment spans two blocks!\n"); - //return; + segm=(extra%(0xfffflu))-1; + fat=segm*(0xfffflu); + extra-=fat; +//printf("extra=%lu ", extra); +//printf("segm=%lu\n", segm); + printf("MML_UseSpace: Segment spans two blocks!\n"); } - +//segu: +//++++todo: linked list of segment! +//printf("segm=%lu\n", segm); if(segstart == scan->start) { last->next = scan->next; // unlink block @@ -451,6 +458,8 @@ void MML_UseSpace(unsigned segstart, dword seglength, mminfo_t *mm) else scan->length = segstart-scan->start; // shorten block +// segm--; + if(0xfffflu > extra > 0) { MM_GetNewBlock(mm); @@ -459,7 +468,7 @@ void MML_UseSpace(unsigned segstart, dword seglength, mminfo_t *mm) mm->mmnew->start = segstart+seglength; mm->mmnew->length = extra; mm->mmnew->attributes = LOCKBIT; - } + }//else if(segm>0) goto segu; } @@ -593,13 +602,13 @@ void MM_Startup(mminfo_t *mm, mminfotype *mmi) MML_SetupEMS(mm); // allocate space printf("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"); //bug! //TODO: EMS4! AND EMS 3.2 MASSIVE DATA HANDLMENT! - if(mm->EMSVer>=0x40) MML_UseSpace(mm->EMSpageframe,((dword)mm->EMSpagesmapped)*((dword)mm->freeEMSpages), mm); - else MML_UseSpace(mm->EMSpageframe,mm->EMSpagesmapped*0x400, mm); + if(mm->EMSVer>=0x40) MML_UseSpace(mm->EMSpageframe,((dword)mm->EMSpagesmapped)*0x4000lu, mm); + else MML_UseSpace(mm->EMSpageframe,mm->EMSpagesmapped*0x4000lu, mm); //printf("EMS3\n"); MM_MapEMS(mm); // map in used pages //printf("EMS4\n"); - if(mm->EMSVer>=0x40) mmi->EMSmem = ((dword)mm->EMSpagesmapped)*((dword)mm->freeEMSpages); - else mmi->EMSmem = mm->EMSpagesmapped*0x4000l; + if(mm->EMSVer>=0x40) mmi->EMSmem = ((dword)mm->EMSpagesmapped)*0x4000lu; + else mmi->EMSmem = mm->EMSpagesmapped*0x4000lu; } // -- 2.39.5