2009/4/30 Christian Masloch <c...@bttr-software.de>:

> There's some C library based on the CALL 5 but I never used it. My test
> case was setting up the correct registers (function in cl instead of ah,
> only functions 00h..24h valid) then using a "call 5" in DEBUG. (Be sure to
> use FreeDOS's DEBUG because MS-DOS's apparently corrupts the CALL 5
> handler inside the PSP.) Here's an example DEBUG script:
>
> === CUT HERE ===
> a
> mov ax, sp
> mov cl, 2
> mov dl, 21
> call 5
> int 3
> nop
>
> g
> q

This is a minimal fix for the kernel:

--- entry.asm   (révision 1371)
+++ entry.asm   (copie de travail)
@@ -75,10 +75,7 @@
                 ;       psp seg
                 ;       000ah
                 ;
-                push    bp              ; trash old return address
-                mov     bp,sp
-                xchg    bp,[2+bp]
-                pop     bp
+                add     sp,2            ; trash old return address
                 pushf                   ; start setting up int 21h stack
                 ;
                 ; now stack is
@@ -108,7 +105,7 @@
                 ;       return offset
                 ;
                 cmp     cl,024h
-                jbe     cpm_error
+                ja      cpm_error
                 mov     ah,cl           ; get the call # from cl to ah
                 jmp     reloc_call_int21_handler    ; do the system call
 cpm_error:      mov     al,0

By the way, thanks Jeremy (Eric: it wasn't Pat) for committing the sys
fix, I hope you can do this one too.
This bug has been there since the DOS-C days by the way!

Bart

------------------------------------------------------------------------------
Register Now & Save for Velocity, the Web Performance & Operations 
Conference from O'Reilly Media. Velocity features a full day of 
expert-led, hands-on workshops and two days of sessions from industry 
leaders in dedicated Performance & Operations tracks. Use code vel09scf 
and Save an extra 15% before 5/3. http://p.sf.net/sfu/velocityconf
_______________________________________________
Freedos-kernel mailing list
Freedos-kernel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-kernel

Reply via email to