[fpc-pascal] FPC in DOS environment

Daniel Franzini daniel.franzini at gmail.com
Thu Jan 11 17:17:46 CET 2007


On 1/11/07, Daniël Mantione <daniel.mantione at freepascal.org> wrote:
>
>
> This the situation:
> * The Dos port is without a maintainer.
> * We are still providing it because many people have need for a Dos
> version
> * Bugs in the Dos port are not being fixed so it is of poor quality.


well, if so i'm a volunteer to mantain the DOS port...

Yes, it is a protected mode app, using the go32v2 extender. You need a
> dpmi service on your system. Normally on real Dos you use cwsdpmi, but any
> DPMI will do. However, WinNT/2000/XP is troublesome because their DPMI
> support
> is buggy.


i was not trying to use it in win nt/xp/2000...its freedos inside a MS
Virtual PC....since i don't have a pentium 100 or a 486 i cannot test this
on a real machine...


> go32v2 is the extender, cwsdpmi the dpmi host that comes with it. So you
> have used go32v2 before, and the procedure is the same with FPC programs.


ok...when exactly the go32v2 gets linked with my code? is this done
automatically by the compiler???

The code you should contains 16 bit assembler. FPC is a 32 bit
> application. So the assembler needs to be rewritten in 32-bit assembler.
> Other than that, FPC is compatible with TP. So, just put the compiler in
> TP mode an compile.


thanks

can this be compiled directly in a 32bit assembler like nasm (or directly
assembled by the fpc internal assembler using directives to use asm inside
pascal source)????

i was also looking for a way to rewrite this in clean Pascal language...is
this possible in pmode using fpc (note the code contains an interrupt call
for a low level operation)???

here is the small assembly source that generates the code i posted:

------------------code start-----------------------------

        {diskwrite}
        asm
                push    bp
                mov     bp, sp
                add     bp, 8
                push    ds
                mov     bx, [bp]
                mov     ax, [bp+2]
                mov     ds, ax
                mov     cx, [bp+4]
                mov     dx, [bp+6]
                mov     al, [bp+8]
                push    bp
                int     26h
                jnc     ok
                popf
                pop     bp
                mov     [bp+10], ax
                jmp     cont
        ok:     popf
                pop     bp
                xor     ax, ax
                mov     [bp+10], ax
        cont:   pop     ds
                pop     bp
                mov     ax, 13h
                int     21h
                ret
------------------code end-----------------------------



Local labels need to start with a @. Please read the manuals, this is well
> documented.


sorry...my bad about this...reading the manuals right now, while writing
this


Daniël


Daniel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20070111/37a76c30/attachment.html>


More information about the fpc-pascal mailing list