Re: [Freedos-devel] Jemm386 issues

2006-12-24 Thread Arkady V.Belousov
Hi!

21-Дек-2006 19:03 [EMAIL PROTECTED] (Daniel Verkamp) wrote to
freedos-devel@lists.sourceforge.net:

DV> ja/jae and jb/jbe are "jump if above/below", which work the same way as
DV> jg/jge and jl/jle, except treating the operands as unsigned instead of
DV> signed.

 There are also other differences. For example, because INC/DEC don't
change carry flag, they can't be used for unsigned-condition-jumps. Ie, they
should be replaced by add/sub:

sub ax,1; DEC can't be used here
jb @@overflow

-
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


Re: [Freedos-devel] Jemm386 issues

2006-12-22 Thread Japheth
> 
>  320 bytes? Hard task, unless your code is ineffective :) or there is
> present some redundant functions.
> 
>  May you in short explain layout of your code? This should ease my
> findings.

the resident protected-mode code is in segment V86, the resident real-mode 
code is in segment RSEG (up to label RSEG_END). Other segments are irrelevant 
for optimisation.

if you can reduce the resident RSEG part (currently size is 192 bytes) by 16 
bytes without a functional loss, you are 1337!





-
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


Re: [Freedos-devel] Jemm386 issues

2006-12-21 Thread Daniel Verkamp
Blair Campbell wrote:
> Just to butt in :-) I understand jnc/jc/jz/jnz myself but I don't even
> know what jae is.  I would also prefer jnc/jz over jae or je.
>
>   
ja/jae and jb/jbe are "jump if above/below", which work the same way as 
jg/jge and jl/jle, except treating the operands as unsigned instead of 
signed.

-- Daniel

-
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


Re: [Freedos-devel] Jemm386 issues

2006-12-21 Thread Arkady V.Belousov
Hi!

21-Дек-2006 14:23 [EMAIL PROTECTED] (Blair Campbell) wrote to
freedos-devel@lists.sourceforge.net:

BC> Just to butt in :-) I understand jnc/jc/jz/jnz myself but I don't even
BC> know what jae is.

je  - Equal (==)
jae - Above or Equal(unsigned >=)
ja  - Above (unsigned >)
jb  - Below (unsigned <)
jbe - Below or Equal(unsigned <=)
jge - Greater or Eq (signed >=)
jg  - Greater   (signed >)
jle - Less or Eq(signed <=)
jl  - Less  (signed <)

BC> I would also prefer jnc/jz over jae or je.

 These mnemonics are with same opcodes (ie., relation conditions are
based on checking Carry/Zero/Sign/Overflow flags), but they reflect
different semantic. Consequently, it valid to mix mnemonics with same
opcodes, but this is trickier, adn all tricks should be avoided as much, as
possible, or explicitly and extensively commented - even in assemblers
(some) rules from HLLs are valid/useful.

-
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


Re: [Freedos-devel] Jemm386 issues

2006-12-21 Thread Blair Campbell
Just to butt in :-) I understand jnc/jc/jz/jnz myself but I don't even
know what jae is.  I would also prefer jnc/jz over jae or je.

-- 
Fall is my favorite season in Los Angeles, watching the birds change
color and fall from the trees.
   David Letterman (1947 - )

See ya

-
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


Re: [Freedos-devel] Jemm386 issues

2006-12-21 Thread Arkady V.Belousov
Hi!

21-Дек-2006 20:20 [EMAIL PROTECTED] (Japheth) wrote to
freedos-devel@lists.sourceforge.net:

 1. On your site, program versions nowhere mentioned, only in "news"
 sometime.
>> J> no, see http://www.japheth.de/Jemm386.html
>> http://www.japheth.de/HX.html
>> Find "2.1" -> not found
J> Yes, but you claimed program versions are *nowhere* mentioned, so just 1
J> example will prove you wrong.

 Just add "_most_ programs". Here important not words (formal logic),
but sense.

>>  Yes, skilled programmer may trace your makefiles (especially, there are
>> two makefiles) and develop/modify to own one, which will fit into his
>> environment, but this is _not_ "minimal" efforts.
J> Aggreed,

 Then why not import proven build subsystem, which works at least for
kernel and FreeEMM386? It should minimize your efforts to adopt different
compilers (discussed subsystem is enough flexible for this) and it should be
convenient for users (common for (some) programs subsystem; separation
betwen settings and compile logic).

J>  it is *almost* "minimal" efforts.

>>  In yet only commented, but not removed.
J> Yes, but I was in fear to be sued by the copyright holders (Tom Ehlert, ...)
J> because of deleting their precious inline assembly code ...

license.txt
"
3. You may otherwise modify your copy of this Package in any way, provided
that
you insert a prominent notice in each changed file stating how and when you
changed that file, and provided that you do at least ONE of the following:
[...]
c) rename any non-standard executables so the names do not conflict with
standard executables, which must also be provided, and provide a separate
manual
page for each non-standard executable that clearly documents how it differs
from
the Standard Version.
"

>>  Of course. But even skilled programmers (at least, me) slow down at
>> such points and try to understand, whan happen. Especially, they/I should
>> spend time to mentally translate, that "jnc" here mean "jae" (this
>> translation is not most trivial task).
J> I learnt assembly with the Z80, where there was no "jae" or "je", so as for
J> me
J> using jnc/jz are the most natural versions.

 (This is question of defining macros, if your assembler wasn't support
relational mnemonics). Fortunately, x86 assembler allows better reflect
programmer's intentions in given case - so, why not use these possibilities?
Especially, not all was know z80.

>> @@ok:
>>   xor ah,ah ; everything OK and finished
>>   ;clc
 [...]
>>   inc ax ; this is shorter, than "inc al"
>>   shl al,2
J> Indeed, saves a byte (although not true for "inc ax", since we are in 32bit
J> mode),

 In 32-bit mode you may use "inc eax". Because AL <= 4, this is safe.

J> but I deliberately choose to use "mov ah,00", because it clearly
J> indicates that it is the "ok" return code which is set.

 For this, I (always!) use comments. Like this:

  xor ah,ah ; OPTIMIZE: XOR AH,AH instead MOV AH,0/CLC
  inc eax   ; OPTIMIZE: INC EAX instead INC AL

>>   sub eax,edx
>>   jae @@noadj2
>>   xor eax,eax
>> @@noadj2:
J> yes, this indeed is better. Go on! If you can reduce the size of V86 segment
J> to 3400h it will save a full 4 kB page (currently size is still about 3540h)

 320 bytes? Hard task, unless your code is ineffective :) or there is
present some redundant functions.

 May you in short explain layout of your code? This should ease my
findings.

>> J> optimising the C part is irrelevant IMO
>>  Why not?
J> It's used for initialization only.

 But it present in source and it present in executable itself.

-
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


Re: [Freedos-devel] Jemm386 issues

2006-12-21 Thread Arkady V.Belousov
Hi!

21-Дек-2006 15:32 [EMAIL PROTECTED] (Alain M.) wrote to
freedos-devel@lists.sourceforge.net:

AM> Some time ago you were involved in a dicussion about a
AM> system/applicatio/?? that could read a forum and send messages to an
AM> Email, do you have something about it?

 AFAIK, for some forums exist additions, which transform forums to mail
lists. But web-master should install these additions to its forum.

-
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


Re: [Freedos-devel] Jemm386 issues

2006-12-21 Thread Japheth
>>> 1. On your site, program versions nowhere mentioned, only in "news"
>>> sometime.
> J> no, see http://gra3/Jemm386.html
> J> no, see http://www.japheth.de/Jemm386.html
> 
> http://www.japheth.de/HX.html
> Find "2.1" -> not found

Yes, but you claimed program versions are *nowhere* mentioned, so just 1 
example will prove you wrong.

>  Where I should specify path to my BC 3.1 or OW compiler (compare:
> config.b)? Where described, which options/pathes are required to set, which
> options may be changed, and how to do this (compare: config.b)?
> 
>  Yes, skilled programmer may trace your makefiles (especially, there are
> two makefiles) and develop/modify to own one, which will fit into his
> environment, but this is _not_ "minimal" efforts.

Aggreed, it is *almost* "minimal" efforts.

>  In yet only commented, but not removed.

Yes, but I was in fear to be sued by the copyright holders (Tom Ehlert, ...) 
because of deleting their precious inline assembly code ...

>  Of course. But even skilled programmers (at least, me) slow down at
> such points and try to understand, whan happen. Especially, they/I should
> spend time to mentally translate, that "jnc" here mean "jae" (this
> translation is not most trivial task).

I learnt assembly with the Z80, where there was no "jae" or "je", so as for me 
using jnc/jz are the most natural versions.

> 
> @@ok:
>   xor ah,ah ; everything OK and finished
>   ;clc
> 
>>> [...]
>>> inc al  ;4 extra bytes for size + checksum?
>>> shl al,2;4 bytes (makes Kyrandia 3 work [better]!?)
> 
>   inc ax ; this is shorter, than "inc al"
>   shl al,2
> 

Indeed, saves a byte (although not true for "inc ax", since we are in 32bit 
mode), but I deliberately choose to use "mov ah,00", because it clearly 
indicates that it is the "ok" return code which is set.

>   sub eax,edx
>   jae @@noadj2
>   xor eax,eax
> @@noadj2:
> 

yes, this indeed is better. Go on! If you can reduce the size of V86 segment 
to 3400h it will save a full 4 kB page (currently size is still about 3540h)


> J> optimising the C part is irrelevant IMO
>  Why not?

It's used for initialization only.



-
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


Re: [Freedos-devel] Jemm386 issues

2006-12-21 Thread Japheth
>  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:
> 
> +CMPAX,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:
> +   callgetword ;get word into DX
> [...]
>>> +cmp bl,1
>>> +jz ii_3
>>> +cmp bl,2
>>> +jz ii_4
> in  al,dx
> callhexbyte
> +jmp ii_5
> +ii_3:
> +   in ax,dx
>>> +   callhexword
> +jmp ii_5
> +ii_4:
> +   in eax,dx
> +push ax
> +shr eax,16
> +   callhexword
> +pop ax
> +   callhexword
> +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/fre

Re: [Freedos-devel] Jemm386 issues

2006-12-21 Thread Japheth

> no, see http://gra3/Jemm386.html

no, see http://www.japheth.de/Jemm386.html

-
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


Re: [Freedos-devel] Jemm386 issues

2006-12-21 Thread Alain M.


> I do not wish, but all your email addresses are "invalid" and you refused to 
> use the nice EDR-DOS forum.

Hi Arkady, you have my whole simpaty, I also hate forums, it wastes too 
much time to follow.

Some time ago you were involved in a dicussion about a 
system/applicatio/?? that could read a forum and send messages to an 
Email, do you have something about it?

Alain

-
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


Re: [Freedos-devel] Jemm386 issues

2006-12-21 Thread Arkady V.Belousov
Hi!

21-Дек-2006 18:22 [EMAIL PROTECTED] (Japheth) wrote to
freedos-devel@lists.sourceforge.net:

>>  Ok, I may discuss at public, if you wish.
J> I do not wish, but all your email addresses are "invalid" and you refused to
J> use the nice EDR-DOS forum.

 Do you try [EMAIL PROTECTED]

>> 1. On your site, program versions nowhere mentioned, only in "news"
>> sometime.
J> no, see http://gra3/Jemm386.html
J> no, see http://www.japheth.de/Jemm386.html

http://www.japheth.de/HX.html
Find "2.1" -> not found

http://www.japheth.de/debxxf.html
Find "2.9.4" -> not found

http://www.japheth.de/dwnload4.html
Find "2.1" or "2.9.4" -> not found

>> 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).
J> I used a different build system, OW/TC/MSVC/DMC are all supported (with
J> "minimal" efforts :)).

 Where I should specify path to my BC 3.1 or OW compiler (compare:
config.b)? Where described, which options/pathes are required to set, which
options may be changed, and how to do this (compare: config.b)?

 Yes, skilled programmer may trace your makefiles (especially, there are
two makefiles) and develop/modify to own one, which will fit into his
environment, but this is _not_ "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]
J> I threw away all inline assembly code from the C part.

 In yet only commented, but not removed.

>> 4. I compare latest version with previous to see the differences, and found:
>> 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.
J> All right, but I doubt this is the main reason why not that many people are
J> able to understand the code.

 Of course. But even skilled programmers (at least, me) slow down at
such points and try to understand, whan happen. Especially, they/I should
spend time to mentally translate, that "jnc" here mean "jae" (this
translation is not most trivial task).

>> 6. Is there reason to copy return address?
>> XCHG BX,[bp+2]
J> this is debug code to be used this way:
J>  call rprintstr
J>  db "something to print",0

 Oops, sorry, I was inattentive here and not notice, that BX is used.

>> 7. There is code, which may be optimized. For example,
>> *wordout+*byteout+*nibout. Or:
>>  @@ok:
>> mov   AH,0  ; everything OK and finished
>> +clc

@@ok:
  xor ah,ah ; everything OK and finished
  ;clc

>> [...]
>> inc al  ;4 extra bytes for size + checksum?
>> shl al,2;4 bytes (makes Kyrandia 3 work [better]!?)

  inc ax ; this is shorter, than "inc al"
  shl al,2

>> [...]
>> +   cmp eax,edx ; ensure no overflow from improper
>> current value
>> ja  @@noadj2
>> +   mov eax,edx
>>  @@noadj2:
>> +   sub eax,edx ; max - used == max available

  sub eax,edx
  jae @@noadj2
  xor eax,eax
@@noadj2:

J> ??? I dont get it

 See above.

>> +void fmemset(char far *s1, char c, int count)
>>  void fmemcpy(char far *s1,char far *s2,int len)
J> optimising the C part is irrelevant IMO

 Why not?

>> 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

  mov ah,TOUPPER
  and ah,al

>> +   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:
>> +   callgetword ;get word into DX
>> [...]
>>> +cmp bl,1
>>> +jz ii_3
>>> +cmp bl,2
>>> +jz ii_4
>> in  al,dx
>> callhexbyte
>> +jmp ii_5
>> +ii_3:
>> +   in ax,dx
>>> +   callhexword
>> +jmp ii_5
>> +ii_4:
>> +   in eax,dx
>> +push ax
>> +shr eax,16
>> +   callhexword
>> +pop ax
>> +   callhexword
>> +ii_5:

ii:
mov bl,0
mov ah,TOUPPER
and ah,al
cmp ah,'W'
je ii_w
cmp [machine],byte 3
jb  ii_getw
cmp ah,'D'
jne ii_getw
inc bx
ii_w:
inc bx
call skipwhite
ii_getw:
callgetword ;get word into DX
callchkeol  ;expect end of line here
; bx=0/1/2 for byte/word/dword
dec bx
je ii_inw ;=1
jg ii_indw ;=2
in  al,dx
callhexbyte
jmp ii_put
ii_inw:
in ax,dx
jmp ii_hexw
ii_indw:
i

Re: [Freedos-devel] Jemm386 issues

2006-12-21 Thread Arkady V.Belousov
Hi!

21-Дек-2006 13:14 [EMAIL PROTECTED] (Japheth) wrote to
freedos-devel@lists.sourceforge.net:

J> This thread has been opened for Jemm386 issues and discussion.

 Ok, I may discuss at public, if you wish.

1. On your site, program versions nowhere mentioned, only in "news"
sometime.

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).

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]

4. I compare latest version with previous to see the differences, and found:

+CMPAX,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.

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

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

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
[...]
+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++;
 }

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:
+   callgetword ;get word into DX
[...]
> >+cmp bl,1
> >+jz ii_3
> >+cmp bl,2
> >+jz ii_4
in  al,dx
callhexbyte
+jmp ii_5
+ii_3:
+   in ax,dx
> >+   callhexword
+jmp ii_5
+ii_4:
+   in eax,dx
+push ax
+shr eax,16
+   callhexword
+pop ax
+   callhexword
+ii_5:
[...]
+   cmp byte [fileext],0
> >+   jnz ll4
[...]
+oo:
+   mov bl,0
+mov ah,al
+   and ah,TOUPPER
+   cmp ah,'W'

PS: I jemm may completely replace ms-emm386 and, for example, compatible
with W9x?

-
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


[Freedos-devel] Jemm386 issues

2006-12-21 Thread Japheth
This thread has been opened for Jemm386 issues and discussion.


-
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