Re: [Freedos-kernel] initdisk.c: bug?
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
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
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
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
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)
--- 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)
--- 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?
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
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
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
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?
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