[Freedos-kernel] re: SYS bug?
Hi, about the DOS uses 'int' 0x25/0x26 as CALL FAR, so you have to POPF when you call it through INT thread: Several compilers TRANSPARENTLY handle this. I think DJGPP is among them. If you try to use the 25/26 ones through int, it will automatically use DJGPP. Borland Turbo C has the absread() and abswrite() functions to do the access - you can use them with the drive 32 MB argument blocks, so there is NO need to write a new function yourself to absread() big disks in Turbo C. Other compilers may have other issues. Eric. PS: Of course you have to provide the special argument block to absread() yourself. I only want to make clear that absread() itself can be used directly. --- 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=1356alloc_id=3438op=click ___ Freedos-kernel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/freedos-kernel
Re: [Freedos-kernel] re: SYS bug?
Hi! 1--2004 19:40 [EMAIL PROTECTED] (Eric Auer) wrote to [EMAIL PROTECTED]: EA Hi, about the DOS uses 'int' 0x25/0x26 as CALL FAR, so you have to POPF EA when you call it through INT thread: EA Several compilers TRANSPARENTLY handle this. Of course, they (should) transparently handle this in intr(), but not with direct INT25. And, I already quote disassembly of Watcom-targeted absread() code (with direct INT25) and there are no extra POP. B-\ EA I think DJGPP is among them. Forget about it. This compiler is absolutely is inappropriate for (current) SYS. EA use DJGPP. Borland Turbo C has the absread() and abswrite() functions to EA do the access - Firstly, these functions present only in BC (and TC?). Secondly, I already quote RBIL, which says, that BC' absread()/abswrite() (which detects size of partition through INT21/1C) may give incorrect results in MS-DOS 7.x. EA you can use them with the drive 32 MB argument blocks, But current SYS compiled by WC. EA so there is NO need to write a new function yourself to absread() big disks EA in Turbo C. Other compilers may have other issues. EA PS: Of course you have to provide the special argument block to absread() EA yourself. I only want to make clear that absread() itself can be used EA directly. ? --- 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_id56alloc_id438op=click ___ Freedos-kernel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/freedos-kernel
[Freedos-kernel] re: SYS bug?
Hi Arkady! EA use DJGPP. Borland Turbo C has the absread() and abswrite() functions to EA do the access - Firstly, these functions present only in BC (and TC?). Secondly, I already quote RBIL, which says, that BC' absread()/abswrite() (which detects size of partition through INT21/1C) may give incorrect results in MS-DOS 7.x. As far as I know Borland TURBO C does not use int 21.1c for anything in absread() / abswrite(). You have to find out whether 32 MB access style is needed YOURSELF. int readbig(Word drive, Dword which, Byte near * buffer) { struct bigdisk buffer2; buffer2.count = 1; buffer2.sector = which; buffer2.buffer = (Byte far *)buffer; return absread(drive, 1, -1, (void *)buffer2); } struct bigdisk /* WARNING: Must not be padded for alignment by the compiler */ { Dword sector; Word count; Byte far *buffer; }; This is how you would read 32 MB in TURBO C... Of course there is no FAT32 disk I/O support at all in Turbo C :-). 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=1356alloc_id=3438op=click ___ Freedos-kernel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/freedos-kernel