Re: [Freedos-kernel] initdisk.c: bug?

2004-04-23 Thread Arkady V.Belousov
Hi!

23-Апр-2004 02:07 [EMAIL PROTECTED] (Bernd Blaauw) wrote to
[EMAIL PROTECTED]:

BB> Is there any GPL'd DOS software which can mount/represent a diskette
BB> imagefile as a diskette?
BB> preferrably give it driveletter B: (and even A: if no real floppy present)?

 There exist

- DDI (and more) to HDD converter by K&K+K&S
- DDI Copy  \
- DDI Shell  > by Alex Bokov
- DDS Shell /

DDI is a files of DiskDupe utility. DDS is a list of (related) DDI files.
DDI Shell "mounts" DDI image through drive letter. Unfortunately, neither DD
is free nor DDI Shell is open source.




---
This SF.net email is sponsored by: The Robotic Monkeys at ThinkGeek
For a limited time only, get FREE Ground shipping on all orders of $35
or more. Hurry up and shop folks, this offer expires April 30th!
http://www.thinkgeek.com/freeshipping/?cpg297
___
Freedos-kernel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freedos-kernel


[Freedos-kernel] EBDA movement FUD

2004-04-23 Thread Eric Auer

Hi, I would like to spread some fear, uncertainity and distrust
about EBDA movement!

For explanation, in 2032+ kernels, this is enabled by default.
You can suppress it with SWITCHES=/E in your config sys file.

Some time ago, I noticed that UPX would sometimes create broken,
truncated, cross-linked... files, but could never reproduce it.
That was with kernel 2032a as far as I remember.

Today I had the same with kernel 2034 when trying to compile MODE.
In DOSEMU, things worked fine, but not in plain FreeDOS. The
UPXed file would crash or would even cross-link to cluster 0 (good
that the kernel now shows a warning when it hits such a broken
cluster chain).

Removing LBAcache would not change the situation. But guess what,
adding SWITCHES=/E to my config apparently fixed the problem!
Interesting: My 2032a troubles a while ago and 2034 troubles now
happened on different computers with different BIOS brands (the
2034 test was done on a PC with a BIOS in "Windows" style design
with a mouse pointer which wiggles its tail all the time X-)).

If you take my problems on 2 different computers and the problems
described for a third computer in Bugzilla on:
http://www.freedos.org/bugs/bugzilla/show_bug.cgi?id=1771

Then you can conclude that EBDA movement can be generally dangerous.
Maybe NOT moving EBDA could be made the default? If the EBDA is not
moved, there are less than 640k of DOS memory. Some programs might
fail to notice that and accidentally overwrite the EBDA at the end
of the last 640k. On the other hand, moving the EBDA can be missed
by some instances in BIOS(es) which means that when FreeDOS thinks
that the last part of the first 640k can be used by DOS again SOME
other software still writes EBDA data there. In bug 1771, the
effect was overwriting the MCB at 9fff:0 which broke UMB operation
whenever EBDA was moved.

I think it is somehow hard to decide what is more dangerous - NOT
moving the EBDA (less than 640k "DOS RAM") or MOVING the EBDA (into
some low memory location allocated by DOS). For now, I think it is
safer to leave the EBDA unmoved.

Eric.


---
This SF.net email is sponsored by: The Robotic Monkeys at ThinkGeek
For a limited time only, get FREE Ground shipping on all orders of $35
or more. Hurry up and shop folks, this offer expires April 30th!
http://www.thinkgeek.com/freeshipping/?cpg=12297
___
Freedos-kernel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freedos-kernel


Re: [Freedos-kernel] EBDA movement FUD

2004-04-23 Thread Michael Devore
At 05:39 PM 4/23/2004 +0200, Eric Auer wrote:

>Hi, I would like to spread some fear, uncertainity and distrust
>about EBDA movement!
>
>For explanation, in 2032+ kernels, this is enabled by default.
>You can suppress it with SWITCHES=/E in your config sys file.

Can you give the exact syntax on using that in CONFIG.SYS.  Is it a bare SWITCHES=/E 
line on its own?  I have to explain to a user how to try it.  He's having problem with 
WordPerfect 5 under latest kernel and thinks it is due to EMM386.

Could be EMM386.  However, I believe the issue also might be due to moving the 
extended BIOS data area in the kernel since WordPerfect for DOS 5.1 is documented has 
having problems with moving the XBDA.  Microsoft's NOMOVEXBDA EMM386 option appears 
related, and is used to clear up compatibility issues with a couple of different 
applications.




---
This SF.net email is sponsored by: The Robotic Monkeys at ThinkGeek
For a limited time only, get FREE Ground shipping on all orders of $35
or more. Hurry up and shop folks, this offer expires April 30th!
http://www.thinkgeek.com/freeshipping/?cpg=12297
___
Freedos-kernel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freedos-kernel


Re: [Freedos-kernel] EBDA movement FUD

2004-04-23 Thread tom ehlert
Hello Michael,

>>Hi, I would like to spread some fear, uncertainity and distrust
>>about EBDA movement!
>>
MD> Can you give the exact syntax on using that in CONFIG.SYS.
MD> Is it a bare SWITCHES=/E line on its own?

Yes, it's a bare

 switches=/E

I had to discover this this morning, too, as running

  device=S-ice.exe /EMM 4000

also nukes the PC. It seems, Softice is moving the EBDA by itself and
in addition to the kernel, to the PC ends up with 641KB, which would
only be nice if it worked.

tom




---
This SF.net email is sponsored by: The Robotic Monkeys at ThinkGeek
For a limited time only, get FREE Ground shipping on all orders of $35
or more. Hurry up and shop folks, this offer expires April 30th!
http://www.thinkgeek.com/freeshipping/?cpg=12297
___
Freedos-kernel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freedos-kernel


[Freedos-kernel] casting

2004-04-23 Thread Arkady V.Belousov
Hi!

 inthndlr.c:

__O\_/_\_/O__
   ;  c -= 'a' - 'A';
mov al,cl
add al,224
mov cl,al
_
  O/~\ /~\O
__O\_/_\_/O__
   ;  c -= (UBYTE)('a' - 'A');
sub cl,32
_
  O/~\ /~\O




---
This SF.net email is sponsored by: The Robotic Monkeys at ThinkGeek
For a limited time only, get FREE Ground shipping on all orders of $35
or more. Hurry up and shop folks, this offer expires April 30th!
http://www.thinkgeek.com/freeshipping/?cpg=12297
___
Freedos-kernel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freedos-kernel


[Freedos-kernel] patch: batch and make files (2/2)

2004-04-23 Thread Arkady V.Belousov
--- Begin Message ---
diff -ruNp old/kernel/kernel.cfg new/kernel/kernel.cfg
--- old/kernel/kernel.cfg   2001-07-10 00:19:32.0 +
+++ new/kernel/kernel.cfg   1970-01-01 00:00:00.0 +
@@ -1,14 +0,0 @@
--1-
--f-
--ff-
--O
--Z
--d
--k-
--vi-
--w
--wpro
--weas
--wpre
--I..\hdr
--v -X- -I. -D__STDC__=0 -DTSC -DDEBUG -DKERNEL -DI86 -DPROTO -DSHWR -DASMSUPT
diff -ruNp old/kernel/makefile new/kernel/makefile
--- old/kernel/makefile 2004-04-12 11:36:06.0 +
+++ new/kernel/makefile 2004-04-22 11:30:48.0 +
@@ -29,7 +29,7 @@ OBJS=$(OBJS1) $(OBJS2) $(OBJS3) $(OBJS4)
 
 #   *Explicit Rules*
 
-production: ..\bin\$(TARGET).sys
+production:..\bin\$(TARGET).sys
 
 ..\bin\$(TARGET).sys: kernel.sys
copy kernel.sys ..\bin
@@ -43,7 +43,7 @@ kernel.sys:   kernel.exe ..\utils\exeflat.
 kernel.exe:$(TARGET).lnk $(OBJS) $(LIBS)
$(LINK) @$(TARGET).lnk;
 
-clobber:clean
+clobber:   clean
-$(RM) kernel.exe kernel.sys status.me
 
 clean:
@@ -54,8 +54,8 @@ clean:
 
 ECHOTO=..\utils\echoto
 
-$(TARGET).lnk: turboc.cfg makefile ..\mkfiles\generic.mak ..\mkfiles\$(COMPILER).mak
-   -$(RM) *.lnk
+$(TARGET).lnk: turboc.cfg makefile ..\mkfiles\generic.mak ..\mkfiles\$(COMPILER).mak
+   -$(RM) *.lnk *.obj
$(ECHOTO) $(TARGET).lnk $(OBJS1)+
$(ECHOTO) $(TARGET).lnk $(OBJS2)+
$(ECHOTO) $(TARGET).lnk $(OBJS3)+
@@ -68,57 +68,52 @@ $(TARGET).lnk: turboc.cfg makefile ..\mk
$(ECHOTO) $(TARGET).lnk $(LIBS)
 
 #   *Individual File Dependencies*
-apisupt.obj:   apisupt.asm segs.inc$(TARGET).lnk
-asmsupt.obj:   asmsupt.asm segs.inc$(TARGET).lnk
-console.obj:   console.asm io.inc  $(TARGET).lnk
-dosidle.obj:   dosidle.asm segs.inc$(TARGET).lnk
-entry.obj: entry.asm   segs.inc $(HDR)stacks.inc   $(TARGET).lnk
-execrh.obj:execrh.asm  segs.inc$(TARGET).lnk
-int2f.obj: int2f.asm   segs.inc $(HDR)stacks.inc   $(TARGET).lnk
-intr.obj:  intr.asmsegs.inc$(TARGET).lnk
-io.obj:io.asm  segs.inc$(TARGET).lnk
-irqstack.obj:   irqstack.asm segs.inc  $(TARGET).lnk
-kernel.obj:kernel.asm  segs.inc ludivmul.inc   $(TARGET).lnk
-nls_hc.obj:nls_hc.asm  segs.inc$(TARGET).lnk
-nlssupt.obj:   nlssupt.asm segs.inc$(TARGET).lnk
-printer.obj:   printer.asm io.inc  $(TARGET).lnk
-procsupt.obj:  procsupt.asm segs.inc $(HDR)stacks.inc  $(TARGET).lnk
-serial.obj:serial.asm  io.inc  $(TARGET).lnk
-
-HDRS=\
-$(HDR)portab.h $(HDR)device.h $(HDR)mcb.h $(HDR)pcb.h \
-$(HDR)fat.h $(HDR)fcb.h $(HDR)tail.h $(HDR)time.h $(HDR)process.h \
-$(HDR)dcb.h $(HDR)sft.h $(HDR)cds.h $(HDR)exe.h $(HDR)fnode.h \
-$(HDR)dirmatch.h $(HDR)file.h $(HDR)clock.h $(HDR)kbd.h $(HDR)error.h  \
-$(HDR)version.h dyndata.h
-HEADERS=$(HDRS) globals.h proto.h
-INITHEADERS=$(HDRS) init-mod.h init-dat.h
-
-blockio.obj: blockio.c$(HEADERS) $(TARGET).lnk  
-break.obj: break.c$(HEADERS) $(TARGET).lnk  
-chario.obj: chario.c  $(HEADERS) $(TARGET).lnk  
-dosfns.obj: dosfns.c  $(HEADERS) $(TARGET).lnk  
-dosnames.obj: dosnames.c  $(HEADERS) $(TARGET).lnk  
-dsk.obj: dsk.c$(HEADERS) $(TARGET).lnk  
-error.obj: error.c$(HEADERS) $(TARGET).lnk  
-fatdir.obj: fatdir.c  $(HEADERS) $(TARGET).lnk  
-fatfs.obj: fatfs.c$(HEADERS) $(TARGET).lnk  
-fattab.obj: fattab.c  $(HEADERS) $(TARGET).lnk  
-fcbfns.obj: fcbfns.c  $(HEADERS) $(TARGET).lnk  
-inthndlr.obj: inthndlr.c  $(HEADERS) $(TARGET).lnk  
-ioctl.obj: ioctl.c$(HEADERS) $(TARGET).lnk  
-memmgr.obj: memmgr.c  $(HEADERS) $(TARGET).lnk  
-misc.obj: misc.c  $(HEADERS) $(TARGET).lnk  
-lfnapi.obj: lfnapi.c  $(HEADERS) $(TARGET).lnk
-newstuff.obj: newstuff.c  $(HEADERS) $(TARGET).lnk  
-network.obj: network.c$(HEADERS) $(TARGET).lnk  
-nls.obj: nls.c$(HEADERS) $(TARGET).lnk  
-prf.obj: prf.c  $(HDR)portab.h $(TARGET).lnk
-strings.obj: strings.c  $(TARGET).lnk
-sysclk.obj: sysclk.c$(HEADERS) $(TARGET).lnk
-syspack.obj: syspack.c  $(HEADERS) $(TARGET).lnk
-systime.obj: systime.c  $(HEADERS) $(TARGET).lnk
-task.obj: task.c$(HEADERS) $(TARGET).lnk
+
+apisupt.obj:   apisupt.asm  segs.inc
+asmsupt.obj:   asmsupt.asm  segs.inc
+console.obj:   console.asm  io.inc
+dosidle.obj:   dosidle.asm  segs.inc
+entry.obj: entry.asmsegs.inc $(HDR)stacks.inc
+execrh.obj:execrh.asm   segs.inc
+int2f.obj: int2f.asmsegs.inc $(HDR)stacks.inc
+intr.obj:  intr.asm segs.inc
+io.obj:io.asm   segs.inc
+irqstack.obj:  irqstack.asm segs.inc
+kernel.obj:kernel.asm   segs.inc ludivmul.inc
+nls_hc.obj:nls_hc.as

[Freedos-kernel] patch: batch and makefiles (1/2)

2004-04-23 Thread Arkady V.Belousov
--- Begin Message ---
diff -ruNp old/build.bat new/build.bat
--- old/build.bat   2004-03-27 13:13:10.0 +
+++ new/build.bat   2004-04-24 01:01:52.0 +
@@ -3,18 +3,22 @@
 :- batch file to build everything
 :- $Id: build.bat,v 1.14 2004/03/27 12:13:10 bartoldeman Exp $
 
+:---
 :- Syntax: BUILD [-r] [fat32|fat16] [msc|wc|tc|tcpp] [86|186|386]
 :- option case is significant !!
+:---
+
+set XERROR=1
+if "%XERROR%" == "" goto noenv
 
 if "%1" == "-r" call clobber.bat
 if "%1" == "-r" shift
 
-set XERROR=
-
 if not exist config.bat echo You must copy CONFIG.B to CONFIG.BAT and edit it to 
reflect your setup!
 if not exist config.bat goto abort
 
 call config.bat
+if "%LAST%" == "" goto noenv
 
 :---
 :- following is command line handling
@@ -41,7 +45,8 @@ if not "%1" == "" goto loop_commandline
 if "%COMPILER%" == "" echo you MUST define a COMPILER variable in CONFIG.BAT
 if "%COMPILER%" == "" goto abort
 
-call default.bat
+call defaults.bat
+if "%LAST%" == "" goto noenv
 
 :---
 :- finally - we are going to compile
@@ -51,50 +56,51 @@ echo.
 echo Process UTILS ++
 echo.
 cd utils
-%MAKE% production
+call %MAKE% production
 if errorlevel 1 goto abort-cd
 
 echo.
 echo Process LIB 
 echo.
 cd ..\lib
-%MAKE%
+call %MAKE%
 if errorlevel 1 goto abort-cd
 
 echo.
 echo Process DRIVERS 
 echo.
 cd ..\drivers
-%MAKE% production
+call %MAKE% production
 if errorlevel 1 goto abort-cd
 
 echo.
 echo Process BOOT +++
 echo.
 cd ..\boot
-%MAKE% production
+call %MAKE% production
 if errorlevel 1 goto abort-cd
 
 echo.
 echo Process SYS 
 echo.
 cd ..\sys
-%MAKE% production
+call %MAKE% production
 if errorlevel 1 goto abort-cd
 
 echo.
 echo Process KERNEL +
 echo.
 cd ..\kernel
-%MAKE% production
+call %MAKE% production
 if errorlevel 1 goto abort-cd
 
 cd ..
 
-:- if you like, put some finalizing commands (like copy to floppy)
-:- into build2.bat
+:- if you like, put finalizing commands (like copy to floppy) into build2.bat
+
+set XERROR=
 
-if exist build2.bat call build2
+if exist build2.bat call build2.bat
 
 echo.
 echo Processing is done.
@@ -104,9 +110,9 @@ goto end
 
 :abort-cd
 cd ..
+:noenv
 :abort
 echo Compilation was aborted!
-set XERROR=1
 
 :end
-default.bat clearset
+defaults.bat clearset
diff -ruNp old/buildall.bat new/buildall.bat
--- old/buildall.bat2004-04-11 14:21:24.0 +
+++ new/buildall.bat2004-04-24 01:05:46.0 +
@@ -9,56 +9,48 @@
 
 if "%1" == "$SUMMARY" goto summary
 
-set onerror=if not "%XERROR%" == "" goto daswarwohlnix
+call config.bat
+if "%LAST%" == "" goto end
 
 :* MSCL kernels
 
-call config.bat
+if "%MSCL8_BASE%" == "" goto no_ms
+   call build.bat -r msc 386 fat16
+if "%XERROR%" == "" call build.bat -r msc 186 fat16
+if "%XERROR%" == "" call build.bat -r msc  86 fat16
+if "%XERROR%" == "" call build.bat -r msc 386 fat32
+if "%XERROR%" == "" call build.bat -r msc 186 fat32
+if "%XERROR%" == "" call build.bat -r msc  86 fat32
 
-if "%MS_BASE%" == "" goto no_ms
-call build -r msc 386 fat16
-%ONERROR%
-call build -r msc 186 fat16
-%ONERROR%
-call build -r msc  86 fat16
-%ONERROR%
-call build -r msc 386 fat32
-%ONERROR%
-call build -r msc 186 fat32
-%ONERROR%
-call build -r msc  86 fat32
-%ONERROR%
+if not "%XERROR%" == "" goto daswarwohlnix
 :no_ms
 
 :* TC 2.01 kernels
 
 if "%TC2_BASE%" == "" goto no_tc
-call build -r tc   186 fat16
-%ONERROR%
-call build -r tc86 fat16
-%ONERROR%
-call build -r tc   186 fat32
-%ONERROR%
-call build -r tc86 fat32
-%ONERROR%
+   call build.bat -r tc 186 fat16
+if "%XERROR%" == "" call build.bat -r tc  86 fat16
+if "%XERROR%" == "" call build.bat -r tc 186 fat32
+if "%XERROR%" == "" call build.bat -r tc  86 fat32
+
+if not "%XERROR%" == "" goto daswarwohlnix
 :no_tc
 
 :* (Open) Watcom kernels
 
 if "%WATCOM%" == "" goto no_wc
-call build -r wc386 fat32
-%ONERROR%
-call build -r wc386 fat16
-%ONERROR%
-call build -r wc 86 fat32
-%ONERROR%
-call build -r wc 86 fat16
-%ONERROR%
+   call build.bat -r wc 386 fat32
+if "%XERROR%" == "" call build.bat -r wc 386 fat16
+if "%XERROR%" == "" call build.bat -r wc  86 fat32
+if "%XERROR%" == "" call build.bat -r wc  86 fat16
+
+if not "%XERROR%" == "" goto daswarwohlnix
 :no_wc
-
+
 :* now rebuild the default kernel
 
-call build -r
+call build.bat -r
+if not "%XERR

[Freedos-kernel] mscl8.mak: bug?

2004-04-23 Thread Arkady V.Belousov
Hi!

__O\_/_\_/O__
/* MSC places uninitialized data into COMDEF records,
   that end up in DATA segment. this can't be tolerated in INIT code.
_
  O/~\ /~\O

INITPATCH=..\utils\patchobj _DATA=IDATA DATA=ID BSS=ID DGROUP=I_GROUP CONST=IC
^^^-^^

May be, trouble with MSC in these namings?




---
This SF.net email is sponsored by: The Robotic Monkeys at ThinkGeek
For a limited time only, get FREE Ground shipping on all orders of $35
or more. Hurry up and shop folks, this offer expires April 30th!
http://www.thinkgeek.com/freeshipping/?cpg=12297
___
Freedos-kernel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freedos-kernel


[Freedos-kernel] ioctl.c: bug

2004-04-23 Thread Arkady V.Belousov
Hi!

__O\_/_\_/O__
case 0x0b:
  /* skip, it's a special case.   */
  NetDelay = r->CX;
  if (!r->DX)
NetRetry = r->DX;
_
  O/~\ /~\O

Should be: "if (r->DX)" - see INT 21/440B description ("if DX=h on
entry, the retry count is left unchanged").




---
This SF.net email is sponsored by: The Robotic Monkeys at ThinkGeek
For a limited time only, get FREE Ground shipping on all orders of $35
or more. Hurry up and shop folks, this offer expires April 30th!
http://www.thinkgeek.com/freeshipping/?cpg=12297
___
Freedos-kernel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freedos-kernel


[Freedos-kernel] initdisk.c: bug

2004-04-23 Thread Arkady V.Belousov
Hi!

nHardDisk = min(nHardDisk, MAX_HARD_DRIVE - 1);
-

Not a critical, but restricts allowed drives by 7 instead 8.




---
This SF.net email is sponsored by: The Robotic Monkeys at ThinkGeek
For a limited time only, get FREE Ground shipping on all orders of $35
or more. Hurry up and shop folks, this offer expires April 30th!
http://www.thinkgeek.com/freeshipping/?cpg=12297
___
Freedos-kernel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freedos-kernel


[Freedos-kernel] initdisk.c: iregs

2004-04-23 Thread Arkady V.Belousov
Hi!

 Some functions make "iregs regs" static, some use stack space. Why not
make all on the stack or make _one_ global definition (at least, this saves
a lot of BSS space)?

 Also:

__O\_/_\_/O__
BOOL is_suspect(struct CHS *chs, struct CHS *pEntry_chs)
{
  return !((chs->Cylinder & 0x3ff) == pEntry_chs->Cylinder ||
   1023 == pEntry_chs->Cylinder ||
   (chs->Cylinder == pEntry_chs->Cylinder &&
chs->Head == pEntry_chs->Head &&
chs->Sector == pEntry_chs->Sector));
}
_
  O/~\ /~\O


As already discussed, this code is incorrect. (I even reminds about this,
but code remains unfixed). See fix in my patch, which I publish slightly
later.




---
This SF.net email is sponsored by: The Robotic Monkeys at ThinkGeek
For a limited time only, get FREE Ground shipping on all orders of $35
or more. Hurry up and shop folks, this offer expires April 30th!
http://www.thinkgeek.com/freeshipping/?cpg=12297
___
Freedos-kernel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freedos-kernel


[Freedos-kernel] initdisk.c: bug?

2004-04-23 Thread Arkady V.Belousov
Hi!

__O\_/_\_/O__
void ReadAllPartitionTables(void)
[...]
  for (Unit = 0; Unit < 2; Unit++)
  {
pddt->ddt_type = init_getdriveparm(0, &pddt->ddt_defbpb);
memcpy(&pddt->ddt_bpb, &pddt->ddt_defbpb, sizeof(bpb));
[...]
  init_call_intr(0x11, ®s);  /* get equipment list */
  if ((regs.a.x & 1) && (regs.a.x & 0xc0))
  {
pddt->ddt_type = init_getdriveparm(1, &pddt->ddt_defbpb);
_
  O/~\ /~\O

When redefining DDT for drive B: (if it present), then ddt_defbpb is updated
(init_getdriveparm()), but ddt_bpb - not (no call to memcpy()). Bug?




---
This SF.net email is sponsored by: The Robotic Monkeys at ThinkGeek
For a limited time only, get FREE Ground shipping on all orders of $35
or more. Hurry up and shop folks, this offer expires April 30th!
http://www.thinkgeek.com/freeshipping/?cpg=12297
___
Freedos-kernel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freedos-kernel