> Ok, I may discuss at public, if you wish. I do not wish, but all your email addresses are "invalid" and you refused to use the nice EDR-DOS forum.
> 1. On your site, program versions nowhere mentioned, only in "news" > sometime. no, see http://gra3/Jemm386.html > 2. I see "Jemm386 ... based on the source of FreeDOS Emm386", but I not see > in JEMM normal build subsystem (which was at last included by Michael into > latest releases), which allows to compile sources by different compilers > with minimal efforts (to customize batch and makefiles). I used a different build system, OW/TC/MSVC/DMC are all supported (with "minimal" efforts :)). > 3. jemm doesn't includes some patches for emm386, which makes it more > compatible with different compilers. For example: > > - asm mov ah,function > + asm mov ah,byte ptr [function] I threw away all inline assembly code from the C part. > 4. I compare latest version with previous to see the differences, and found: > > + CMP AX,OFFSET RESGRP:BP06_FATAL > + JZ V86_EXC06_FATAL > [...] > + cmp edx, eax ; source < destination? > + jnc @@calc_src_done ; no, use std copy > > This somewhat question of taste, but "je" and "jae" after "cmp" is much > better reflects _sense_ (logic) of code and, thus, should make it more > readable. All right, but I doubt this is the main reason why not that many people are able to understand the code. > 5. Is it valid code, to mix 16- and 32-bit registers? > > + MOV DS,EAX ; segment register caches > + MOV ES,EAX > + MOV FS,EAX > + MOV GS,EAX It is valid and - since code has been switched to 32-bit - avoids the 66h prefix. > 6. Is there reason to copy return address? > > RPRINTSTR PROC > push bp > mov bp,sp > XCHG BX,[bp+2] > [...] > mov ah,0Eh > int 10h > [...] > XCHG BX,[bp+2] > pop bp > RET this is debug code to be used this way: call rprintstr db "something to print",0 mov eax,ebx ... > 7. There is code, which may be optimized. For example, > *wordout+*byteout+*nibout. Or: > > @@ok: > mov AH,0 ; everything OK and finished > + clc > [...] > inc al ;4 extra bytes for size + checksum? > shl al,2 ;4 bytes (makes Kyrandia 3 work [better]!?) > [...] > + shl edi,4 > add edi,esi ; edi -> EMS region buffer address > [...] > shl ebx,4 ; convert seg to memory offset > + add ebx,ecx > [...] > + cmp eax,edx ; ensure no overflow from improper > current value > ja @@noadj2 > + mov eax,edx > @@noadj2: > + sub eax,edx ; max - used == max available > [...] ??? I dont get it > +void fmemset(char far *s1, char c, int count) > { > + char far * s = s1; > for ( ; count; count--) > *s++ = c; > } > [...] > void fmemcpy(char far *s1,char far *s2,int len) > { > + char far * dst = s1; > + char far * src = s2; > + for ( ; len; len--) > + *dst++ = *src++; > } optimising the C part is irrelevant IMO > 8. Same (about conditional jumps after cmp and about optimization) with > DEBUG, which you change. I compare 99i with 99g and found: > > +ii: > + mov bl,0 >>> + mov ah,al >>> + and ah,TOUPPER > + cmp ah,'W' >>> + jne ii_1 >>> + inc bx >>> + call skipwhite >>> + jmp ii_2 > +ii_1: > + cmp [machine],byte 3 > + jb ii_2 > + cmp ah,'D' > + jne ii_2 > + inc bx > + inc bx > + call skipwhite > +ii_2: > + call getword ;get word into DX > [...] >>> + cmp bl,1 >>> + jz ii_3 >>> + cmp bl,2 >>> + jz ii_4 > in al,dx > call hexbyte > + jmp ii_5 > +ii_3: > + in ax,dx >>> + call hexword > + jmp ii_5 > +ii_4: > + in eax,dx > + push ax > + shr eax,16 > + call hexword > + pop ax > + call hexword > +ii_5: > [...] > + cmp byte [fileext],0 >>> + jnz ll4 > [...] > +oo: > + mov bl,0 > + mov ah,al > + and ah,TOUPPER > + cmp ah,'W' ??? Please try to express yourself more clearly > PS: I jemm may completely replace ms-emm386 and, for example, compatible > with W9x? it won't run with w9x, it does not completely replace ms-emm386. ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ Freedos-devel mailing list Freedos-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/freedos-devel