Re: [Freedos-devel] Incompatibility issue due to FreeCom Dir command's output layout and Dosbox kernel limitations

2017-02-20 Thread Denis St-Lau
Good news!

My old program can run now on vDOS and DOSBOX. (In addition to pure FreeDOS 
indeed)

Jos Schaars from the vDOS project gave me an interesting trick: edit manualy 
the temporary dumpfile generated by the program, and making it read-only. I 
discovered being wrong about the relevance of the date style (2-10-98 intead of 
02-10-98 was in fact not detrimental). Instead it was about the position of the 
filename extension. The extension of filenames was moved left by the vDOS's (or 
4DOS's) DIR command when the filename are less than 8 characters long, and the 
program expect them to be written at fixed column positions (cols number 
10-11-12). Knowing this we just have to set alias dir=*dir /j in the 
autoexec.txt of vDOS and the problem is solved. The full discussion can be 
found here:

   <https://sourceforge.net/p/vdos/discussion/general/thread/be084506/>


DOSBOX has a different fatal issue : a comma ',' as thousand separator for 
files size.

It may looks a little bit heavy-metal but quite fine for my actual needs to 
modify and recompile the FreeCom's COMMAND.COM. There is just one line to 
modify in the convert() function of the NUM_FMT.C files:

    Just replace the line:
    temp[30 - c++] = nlsBuf->thousendsSep[0];
    By:
    temp[30 - c++] = ' ';

    The following may probably also works because vDOS works with no separator:
    temp[30 - c++] = '';

    And then recompile (ex: build -r xms-swap)

    In a previous post I wrote this changed nothing to the behavior. I was 
wrong... this is because I forgot having a duplicate COMMAND.COM file on the 
system (there is C:\FDOS\BIN\COMMAND.COM in addition to C:\COMMAND.COM, and I 
was not replacing the good one)

After solving the comma issue, I discovered:
  * AM/PM flags not being really detrimental. Sorry for the mislead.
  * The 4 digits year cause a fault requiring a keypress but not a fatal crash 
(better behavior with SET DIRCMD=/-4)


The localcfg program pointed out by Matheuz is nice but it creates a file.sys 
which still need a config.sys country directive in order to be loaded. So I 
think it does not solves the thousendSep or other country issues potentially 
encountered by FreeCOM in the DOSBOX.

I imagine the proof of concept from Eric (CANADA.ASM) has the potential to load 
country settings without config.sys. I let you guys decide I you want to go 
forward that way. I can be no more than a user or a tester because I do not 
have the required developper knowledge.

I did not try EtherDFS but it's good to know it's existence.

Regards, Denis




Le lundi 20 février 2017 2h02, Mateusz Viste <mate...@nospam.viste.fr> a 
écrit :
 

 Instead of filling out a binary country.sys by hand, you might want to 
use localcfg.exe - much more reliable. It will produce a country.sys file 
with all the parameters you wish.

http://localcfg.sourceforge.net

Of course, all this is pointless if your program won't listen to country 
preferences anyway.

Mateusz




On Sun, 19 Feb 2017 22:57:47 +0000, Denis St-Lau wrote:
> Hi everyone,
> vDOS is very nice. Unfortunately also blocked with Dir-command related
> issues with my program (file dates in style 2-10-98 intead of 02-10-98).
> I posted a topic on their site. I also found they not support
> modification of the global Country setting (locked to 1).
> 
> About VMWARE and VMSMOUNT. I think it's nearly equivalent to what we
> have at work with Microsoft VirtualPC. I didn't try sendkeys automation
> through this heavier layer but I will give it a try if I cannot use vDOS
> and DOSBOX.
> 
> Eric, I found you are author of MODE.COM !! To set the codepage I added
> this in my autoexec.bat:
>        DISPLAY CON=(ega,863,)
>    MODE CON CODEPAGE PREPARE=((863) %dosdir%\cpi\ega9.cpx)
> 
> I don't know how far I can follow you in the TSR trail to get country
> informations but I'm interested to learn at least up to the next
> obstacle :-) I filled the table you showed to me, if it's not taking too
> much of your time:
> 
>> Offset  Size    Description (Table 01399)
>>  00h    WORD    date format [2 Y-M-D]
>>  02h  5 BYTEs   ASCIZ currency symbol string ['$'.. so I imagine it is
>>  24h, 00h ?] 07h  2 BYTEs   ASCIZ thousands separator [you want this
>>  to be 20h, 00h...Yes]
>>  09h  2 BYTEs   ASCIZ decimal separator ['.' = 2E, 00h ?]
>>  0Bh  2 BYTEs   ASCIZ date separator ['-' = 2D, 00h ?]
>>  0Dh  2 BYTEs   ASCIZ time separator [':' = 3A, 00h ?]
>>  0Fh    BYTE    currency format [not relevant for you? probably not,
>>  answers bellow]
>> bit 2 = set if currency symbol replaces
>> decimal point
>   [I would say No, do
>   not replaces decimal
>   point]
>> bit 1 = number of spaces between 

Re: [Freedos-devel] Incompatibility issue due to FreeCom Dir command's output layout and Dosbox kernel limitations

2017-02-19 Thread Denis St-Lau
Thanks a lot Eric for this program.
I have the space delimiter for thousands with the FreeDOS kernel on my 
VirtualBox. (But not in the DOSBOX with it's own kernel of course). And 
yesterday when I replaced the thousand delimiter in convert() of NUM_FMT.C 
with:    temp[30 - c++] = ' ';instead of:
    temp[30 - c++] = nlsBuf->thousendsSep[0];
This had no visible effect on the behavior of my new Command.com


I have a mysterious problem to compile as you say:    when I do:  NASM -O 
CANADA.COM CANADA.ASM    I get: "nasm: fatal: unknown optimization option 
-OC"
And if I rename to test.asm I get:    "nasm: fatal: unknown optimization 
option -Ot"
Looks like it doesn't see the space character between the -O switch and the 
file name. Even if I put multiple spaces between them. Have you ever see 
this?(Can't read the help with  because I don't know how to scroll one 
page at a time.)

Regards, Denis
 

Le Dimanche 19 février 2017 19h41, Eric Auer  a écrit :
 

 Hi everybody, see yet another FreeCOM feature request below... ;-)

Thanks for filling in the table, Denis! A proof of concept tool for
your task, for compilation with "NASM -O CANADA.COM CANADA.ASM" is
implemented in the following code:

> start:    jmp short setup    ; 100h
> chain:
>     db 0eah        ; jmp far fixed offset
>     dw 0,0        ; 103h: old INT 21 vector stored here
> mapc:    retf        ; 107h: dummy case mapping routine
> new21:    pushf        ; 108h: new INT 21 handler
>     cmp ax,3800h    ; get country info?
>     jz canada
>     popf
>     jmp short chain
> 
> canada:    popf        ; DS:DX is pointer to user buffer
>     mov bx,dx
>     mov word [bx+0],2    ; date format Year Month Day
>     mov word [bx+2],24h    ; dollar sign, null char (currency)
>     mov word [bx+7],20h    ; space char, null char (1000s sep)
>     mov word [bx+9],2eh    ; ".", null char (decimal separator)
>     mov word [bx+11],2dh    ; "-", null char (date separator)
>     mov word [bx+13],3ah    ; colon, null char (time separator)
>     mov byte [bx+15],3    ; currency format flags
>     mov byte [bx+16],2    ; decimals for amounts of money
>     mov byte [bx+17],1    ; use 24 hour time
>     mov word [bx+18],107h    ; case map routine (dummy)
>     mov [bx+20],cs        ; case map routine segment
>     mov word [bx+22],20h    ; space char, null, data list sep
>     ; at offset 24: ten bytes of reserved data, ignored here
>     mov bx,2    ; country code for French Canadian
>     clc
>     retf +2
> 
> setup:            ; offset must be at most 160h (16+6 para)
>     mov ax,3521h    ; get INT 21 vector
>     int 21h        ; return ES:BX
>     mov [103h],bx    ; offset
>     mov [105h],es    ; segment
>     mov ax,2521h    ; set new INT 21 vector
>     mov dx,108h    ; new21 offset, expect DS=CS
>     int 21h
>     mov ax,3100h    ; stay TSR, errorlevel 0
>     mov dx,16+6    ; resident paragraphs incl. PSP
>     int 21h

However, it turns out that the long number display code of
freecom command.com does NOT support country settings AT ALL
YET! It just uses comma as thousands separator all the time.

See the "convert" function in the "num_fmt" source code file.

I am not sure about the date format: Freecom sources say it
should work, but I think it does not change for me? Do not
forget to load a new instance of freecom (by running the
command.com binary, simple) after running the CANADA tool.

At least the tool does switch to 24 hour time correctly :-p

The clock display in EDIT also follows the CANADA settings.

Cheers, Eric



--
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
___
Freedos-devel mailing list
Freedos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-devel


   --
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot___
Freedos-devel mailing list
Freedos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-devel


Re: [Freedos-devel] Incompatibility issue due to FreeCom Dir command's output layout and Dosbox kernel limitations

2017-02-19 Thread Denis St-Lau
Hi everyone,
vDOS is very nice. Unfortunately also blocked with Dir-command related issues 
with my program (file dates in style 2-10-98 intead of 02-10-98). I posted a 
topic on their site. I also found they not support modification of the global 
Country setting (locked to 1).

About VMWARE and VMSMOUNT. I think it's nearly equivalent to what we have at 
work with Microsoft VirtualPC. I didn't try sendkeys automation through this 
heavier layer but I will give it a try if I cannot use vDOS and DOSBOX.

Eric, I found you are author of MODE.COM !! To set the codepage I added this in 
my autoexec.bat:
       DISPLAY CON=(ega,863,)
   MODE CON CODEPAGE PREPARE=((863) %dosdir%\cpi\ega9.cpx)

I don't know how far I can follow you in the TSR trail to get country 
informations but I'm interested to learn at least up to the next obstacle :-) I 
filled the table you showed to me, if it's not taking too much of your time:

> Offset  Size    Description (Table 01399)
>  00h    WORD    date format [2 Y-M-D]
>  02h  5 BYTEs   ASCIZ currency symbol string ['$'.. so I imagine it is 24h, 
>00h ?]
>  07h  2 BYTEs   ASCIZ thousands separator [you want this to be 20h, 00h...Yes]
>  09h  2 BYTEs   ASCIZ decimal separator ['.' = 2E, 00h ?]
>  0Bh  2 BYTEs   ASCIZ date separator ['-' = 2D, 00h ?]
>  0Dh  2 BYTEs   ASCIZ time separator [':' = 3A, 00h ?]
>  0Fh    BYTE    currency format [not relevant for you? probably not, answers 
>bellow]
> bit 2 = set if currency symbol replaces decimal point
  [I would say No, do not replaces decimal point]
> bit 1 = number of spaces between value and currency symbol
  [I would guess 1 space]
> bit 0 = 0 if currency symbol precedes value
> 1 if currency symbol follows value
  [Not sure but I would guess bit 0 =1]
>  10h    BYTE    number of digits after decimal in currency 
  [not relevant? maybe not but I would say 2 digits]
>  11h    BYTE    time format [you say you want 24h time, so make this 1--Yes]
> bit 0 = 0 if 12-hour clock
> 1 if 24-hour clock
>  12h    DWORD   address of case map routine [could point to RETF opcode]
> (FAR CALL, AL = character to map to upper case [>= 80h])
>  16h  2 BYTEs   ASCIZ data-list separator [not relevant? who uses this?]
>  18h 10 BYTEs   reserved [so not relevant for you by definition...]


To answer your question about our old MS-DOS program: We have used it in MS-DOS 
and winXP-win32 console only. It is described at 
<http://www.dynatest.com/elmod>. There is not so many users since it is 
addressed to a very specialized domain. Only the newer Windows version is 
supported by the maker.

Thanks, Denis
 

Le Dimanche 19 février 2017 8h39, Ulrich Hansen <my.gr...@mailbox.org> a 
écrit :
 

 

Am 18.02.2017 um 23:22 schrieb Denis St-Lau <d...@ymail.com>:
Without the DOSBOX kernel, we don't have the "mount" command and we constantly 
have to mount/unmount the DOS disk image from the GNU/Linux or Windows host (or 
use FTP networking) to exchange data. This is tedious and the disk image gets 
corrupted if simultaneously mounted or written on by the Host and the DOS.

Yes, you are completely right about that. 
But please take a look at a new project: „EtherDFS“ by Mateusz 
Viste.http://etherdfs.sourceforge.net
If your host is running GNU/Linux, you can start EtherSRV on the host and 
EtherDFS on your DOS guest.
On the host go to the directory, that EtherSRV is mounting. Share it with Samba 
to your Windows clients.
That’s it. You have now what everybody wants: A network disk in FreeDOS, shared 
with everybody in your LAN, and still 618 K conventional memory free.
The only downsides, as I see it:- At the moment EtherSRV will change timestamps 
of received files to the actual date and time.- On VirtualBox a guest with 
EtherDFS can not reach (yet) an EtherSRV running on a machine outside the 
host.- EtherSRV is running on GNU/Linux only.


--
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
___
Freedos-devel mailing list
Freedos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-devel


   --
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot___
Freedos-devel mailing list
Freedos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-devel


Re: [Freedos-devel] Incompatibility issue due to FreeCom Dir command's output layout and Dosbox kernel limitations

2017-02-18 Thread Denis St-Lau
Hi Eric,
Thanks for your answer.
I agree it would be far better using a switch to avoid recompiling the FreeCOM 
command.com but after my research I concluded DOSBOX do not offer these country 
settings and is missing any config.sys functionality. I've read they are not 
very interested in adding this because they focus only on the minimum work 
required for games compatibility. They don't even support the dir /-4 switch in 
their own command.com. I will continue to investigate and asking them just in 
case. But I do not expect much help on their side because my program is not a 
game.

Also I want to avoid booting the FreeDOS kernel on a disk image, because doing 
so do not allow access to the host file system. Without the DOSBOX kernel, we 
don't have the "mount" command and we constantly have to mount/unmount the DOS 
disk image from the GNU/Linux or Windows host (or use FTP networking) to 
exchange data. This is tedious and the disk image gets corrupted if 
simultaneously mounted or written on by the Host and the DOS. I need to use the 
DOSBOX kernel because I want direct access to the directories without being 
confined in virtual disk images. 

>From my point of view an interesting improvement for the next FreeDOS's kernel 
>could be to duplicate the DOSBOX capability to mount external directories...

PS: ymail exists since many years. For me it is not a recent renaming.


 

Le samedi 18 février 2017 16h19, Eric Auer  a écrit :
 

 
Hi Denis,

you write that for getting 2 digit, AM/PM, space 1000s sep
DIR output from freecom, you use SET DIRCMD=/-4 but failed
to find a way to set COUNTRY to 002,863,c:\fdos\bin\country.sys
in the context of DOSBOX. I still think it would be a lot
easier to find out how to change DOSBOX country settings
compared to compiling a special freecom command.com which
has your desired settings hardcoded.

Any DOSBOX fans who could make a recommendation here? :-)

Regards, Eric

PS: As far as I remember, you can also tell DOSBOX to boot
a freedos kernel with freedos config.sys from a disk image,
so if the simulated DOS kernel of DOSBOX lacks country.sys
support at all, then booting freedos would be a workaround.

PPS: Did yahoo mail get renamed to ymail?


--
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
___
Freedos-devel mailing list
Freedos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-devel


   --
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot___
Freedos-devel mailing list
Freedos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-devel


[Freedos-devel] Incompatibility issue due to FreeCom Dir command's output layout and Dosbox kernel limitations

2017-02-18 Thread Denis St-Lau
Hi all,

There is an incompatibility issue with the "File Selection" dialogs of one of 
our legacy engineering MS-DOS programs. We don't have the source code of the 
program but I know it was written in Borland Turbo-Basic a long time ago. For 
years I thought it was a flaw in the FreeDOS compatibility. In fact I found 
recently this is because the output of the "dir" command is dumped in a 
temporary text file and parsed by the program in a fragile way. I discovered 
three requirements for this program to work. The display of the "dir" command 
must be formatted in a way that :

1 - The file dates must be printed with a 2 digits year representation
2 - The file times must be printed without the AM/PM flag (24 hours 
representation)
3 - The thousands delimiter of the file sizes must be a blank space (" ") 
instead of a comma (",")

The first requirement is easy to handle in autoexec.bat with: SET DIRCMD=/-4.  
The second and third requirements need an appropriate fdconfig.sys setting, for 
example:  !Country = 002, 863, C:\FDOS\BIN\Country.sys

But when installing FreeDOS 1.2 in DosBox, we can't configure the fdconfig.sys. 
I want to use the program this way in order to operate it automatically with a 
Python script on the Host machine while sharing files and directories. So now 
I'm trying to patch and recompile the FreeCom's COMMAND.COM program to meet the 
above requirements.

I am not proficient in C but all seems to happen in the DisplaySingleDirEntry() 
function of the DIR.C file. At least I can remove the AM/PM flag with an ugly 
"p[strlen(p)-1] = 0;" just before the "fputs(p, stdout);" at line of code n°884.

The compilation works well but now I struggle to modify the thousand delimiter. 
I thought it could be easy with the convert() function of NUM_FMT.C (see 
temp[30 - c++] = nlsBuf->thousendsSep[0];) but it have no effects and I don't 
see how to change the country settings.

Does someone have an idea how this could be done?

By the way, I really like the FDIMPLES provided with the new FreeDOS 1.2 !

Regards,



--
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot___
Freedos-devel mailing list
Freedos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-devel


[Freedos-devel] contributing additional xkeyb definition files

2014-11-08 Thread Denis St-Lau
Hi all,
Is xkeyb a freedos managed program or a third party program?
    http://www.freedos.org/software/?prog=xkeyb

I want to contribute additional keyboard definition .KEY files but I don't know 
where to upload them. The original site is not online: 
http://projects.freedos.net/keyb/

And the author (Dietmar Hohmann) do not respond to emails.

So I uploaded here:
http://download.tuxfamily.org/dvorak/dos/BEPO_850.KEY
http://download.tuxfamily.org/dvorak/dos/BEPO_863.KEY
http://download.tuxfamily.org/dvorak/dos/BEPO_437.KEY

and linked from the bottom of this site: Installation de la disposition de 
clavier bépo sous Windows - Disposition de clavier francophone et ergonomique 
bépo

How can we add these 3 files to the xkeyb project?


|   |
|   |  |   |   |   |   |   |
| Installation de la disposition de clavier bépo sous Wind...Sommaire 1 
Installation et désinstallation 2 Activer la disposition 3 Disposition et 
application 4 Changer de disposition 5 Ouverture de session 6 MS-DOS et 
FreeDOS... |
|  |
| Affichage activé bepo.fr | Yahoo Aperçu par |
|  |
|   |

  



--
___
Freedos-devel mailing list
Freedos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-devel