Debugging a test binary: push bp / mov bp,sp / push si / push di mov al,[bp+4] / mov cx,[bp+6] / mov dx,[bp+8] / mov bx,[bp+a] int 25 / pop bx / jc label1 / xor ax,ax / jmp label2 label1: mov [71b],ax / mov ax,-1 / (jmp without effect, to label2) label2: pop di / pop si / pop bp / ret
Further evidence is given by Turbo C 2.01 builtin help (in the IDE): ... int absread(int drive, int nsects, int lsect, void *buffer); No LONG ints anywhere. Conclusion: Turbo C 2.01 uses a "dumb" implementation of the CLASSIC "int" 25/26 calls. If you want to access > 32 MB, simply prepare a "> 32 MB style access packet" and hand it over as "buffer" and use -1 for nsects to tell DOS about the > 32 MB access style (lsect is not used in this case and can have any value). Bad news for UNDELETE that Borland C (not Turbo C) seems to have an absread() which auto-decides about access style. Using the > 32 MB style for drives which Borland C detected as > 32 MB with int 21.1c will BREAK because Borland C is too CLEVER!? Luckily there is #ifdef. What is it, __TURBOC__ and __BORLANDC__ ?? For now, because I only have Turbo C anyway, I pass on the problem to Rob and Patric who are working on UNDELETE updates. Guys, please add the appropriate #ifdefs to allow even Borland C users to compile. Thanks. Eric. ------------------------------------------------------- SF.Net is sponsored by: Speed Start Your Linux Apps Now. Build and deploy apps & Web services for Linux with a free DVD software kit from IBM. Click Now! http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click _______________________________________________ Freedos-kernel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/freedos-kernel
