Commit Graph

47 Commits

Author SHA1 Message Date
Bart Oldeman
9b5b2e7d60 Create init varieties for unsigned long helper functions.
An INITPATCH is used to make sure the correct symbols are used.
The GCC kernel now shows the copyright string and boots a little further.
2018-01-11 17:50:31 -05:00
Bart Oldeman
97003a8aca Introduce popargs and arg macros to distinguish PASCAL/STDCALL conventions.
GCC has -mrtd but the args are pushed in reverse versus PASCAL. So asm
routines have to use macros to obtain the stack arguments.
For the complex call_nls assembly, revert the arguments in C using a
preprocessor macro.
2018-01-11 17:50:31 -05:00
Bart Oldeman
f6d62165e0 ia16-elf-gcc: introduce DOSTEXT and DOSDATA macros.
Using DOSTEXT(x) accesses x in LGROUP and DOSDATA(x) in DGROUP.
This is necessary since ia16-elf-gcc does not understand data
in far segments.

For non-macro'ed symbols, FP_SEG needs to be replaced by explicit
segment references.
2018-01-11 17:50:31 -05:00
Bart Oldeman
71a7d0d264 ia16-elf-gcc: provide GNU LD linker script and symbols to link kernel.
The resulting kernel and sys.com do not work yet (kernel prints 123 only).
Some functions in sys.com are placeholders.
2018-01-11 17:50:31 -05:00
Bart Oldeman
7bf4b77233 ia16-elf-gcc port: compile all asm files with -f elf.
Because ia16-elf-gcc and the GNU linker do not understand OMF we
need to use ELF everywhere.
This also means we cannot use "wrt", "seg" and "call/jmp far".
Most wrt's are superfluous, and seg and call/jmp far can be
replaced by explicit ?GROUP references (to be defined in the
linker script).
2018-01-11 17:50:31 -05:00
Bart Oldeman
fbdbc4c25c C source code changes so the kernel can compile with ia16-elf-gcc.
Use "make all COMPILER=gcc".
Linking does not work yet with these changes.
2018-01-11 17:50:31 -05:00
Bart Oldeman
705268267c Use DOSTEXTFAR and DOSFAR for kbdType and internal_data. 2018-01-11 17:50:31 -05:00
Bart Oldeman
0b26c3f18f NLS: clean up to use the struct more and fewer relocations. 2018-01-11 17:50:31 -05:00
Bart Oldeman
fdac78cc67 Fix compilation with TC2 (no // comments; a global variable needs ASM) 2017-12-22 13:14:11 -05:00
Bart Oldeman
33d707ba7f Fix compilation with MSVC 1.52c.
Needs one more file from the c library, BSS_INIT all uninitialized
globals in config.c and a define of SEEK_SET.
2017-12-22 13:13:37 -05:00
Stas Sergeev
8187fd8153 disk: fix sectors count truncation for CHS [fixes #10]
LBA_to_CHS() uses geometry taken from BIOS, but LBA_Transfer()
was using the geometry from VBR. This caused "count" variable
to underflow over unsigned long, then corrupting the entire
DOS memory with the large read.

This patch makes LBA_to_CHS() to return the geometry to caller,
so that the calculus do always match.

Thanks to @ecm-pushbx and @andrewbird for helping to
nail this down.
2017-09-22 23:03:47 -04:00
Stas Sergeev
0b541ffd81 implement CHAIN directive for config.sys 2016-10-07 00:22:56 +03:00
Stas Sergeev
baad0b69dd remove trailing spaces in config.c 2016-10-06 23:01:14 +03:00
Stas Sergeev
68693a71c5 add missing ASM to fix build
Without this I am getting undefined reference to
_ReturnAnyDosVersionExpected
2016-10-06 07:23:59 -04:00
lpproj
cab8092ad6 Fix memory break in NUL device 2016-02-06 13:43:34 +09:00
lpproj
e024f72a4c Fix initial DTA 2016-02-06 13:32:36 +09:00
KJD
c9300387e7 Implement Int 2F/AX=120Bh based on RBIL description 2016-01-16 20:56:29 -05:00
KJD
ad3d7802f6 Implement Int 2F/AX=120Ah based on RBIL description - untested! 2016-01-16 16:46:22 -05:00
KJD
618e682a3b From Evelyn, CPU unsupported message missing loading error msg address (pop si) 2016-01-15 22:34:38 -05:00
lpproj
a87e233849 Copy FCB-format filename from PriPathName
(some redirectors require FCB-format filename stored in SDA+22Bh DirEntBuffer)
2015-09-22 12:19:27 +09:00
lpproj
9f254f2bee Fix memory break on loading country information (in config.sys) 2015-09-22 12:15:26 +09:00
lpproj
bc4615093a Fix an error at opening a character device prefixed with invalid drive letter (e.g. "@:NUL")
(some application use it for opening character device driver)
2015-09-22 12:06:43 +09:00
lpproj
2394f842ce Fix incompletion on loading huge (more than 65280 bytes) binary device driver 2015-09-22 12:02:57 +09:00
lpproj
5756cf8d26 On creating child PSP (func 0x55), copy command line parameters from the parent
(required for some device loaders)
2015-09-22 11:58:25 +09:00
KJD
234ed1181f Improve support for older BPB based volumes lacking extended fields.
Based on lpproj's nec98:Fix for DOS 3.x partitions
5fab40fc63
On loading BPB check signature if extended fields (serial#, volume, and fstype) are available, use dummy values if not.
Return error if attempt to set BPB serial# and not part of BPB.
2015-05-27 23:54:45 -04:00
lpproj
2efc2e8f69 Increase size of nlsDBCSHardcoded (to sizeof struct nlsDBCS) 2015-03-29 22:46:57 +09:00
lpproj
6d9a39d646 Write correct length of DBCS table on loading country.sys 2015-03-29 22:37:46 +09:00
lpproj
effd87fafb Return current country code (func 0x38) 2015-03-29 15:16:59 +09:00
lpproj
504fd16746 Enable to load DBCS table from COUNTRY.SYS 2014-11-22 11:42:05 +09:00
lpproj
0246178809 Fix pointer of DBCS table (int 0x21, func 0x6300) 2014-11-22 11:41:07 +09:00
lpproj
08c05b1d7a Fix build break on DOSish buildenv 2014-11-22 11:40:26 +09:00
KJD
8ca06cf20a Fix FCB parse filename (int21h func 29h) - update filename separators and terminators and remove extra handling of spaces, invert lead separator parsing to match description in MS Encyclopedia pages 269 and 1263-1264. 2014-11-04 23:01:35 -05:00
KJD
ed84760c0e use absolute not relative disk read/writes;
fix for syslinux DOS installer
partial fix, still need to confirm if other uses should also be absolute
2014-07-03 20:06:47 -04:00
KJD
8be4c2974a merge creation date & time from old dev branch 2014-07-03 20:01:57 -04:00
KJD
23eb8ff825 fix reading from NULL; sentinel lost due to conversion to char from int 2013-12-29 11:04:56 -05:00
KJD
4b08676a48 when updating MCB to add UMB chain, redetermine top of memory again in case changed (e.g. device driver relocated EBDA) to avoid corrupt MCB chain. Revert checking for switches only on pass==0, causes error due to portion of command line not skipped when reevaluated on next pass. Allow undocumented -1 for /E: switches option for use calculated EBDA size when moving. 2013-07-17 22:58:44 -04:00
KJD
087a0fee4e update comments, swap order to ensure ram_top adjusted by actual size of ebda moved, not just calculated size 2013-07-14 19:35:54 -04:00
Kenneth J. Davis
99461450aa remove unneeded printfs and properly handle multiple options on memdisk specified last line 2012-11-10 16:10:39 -05:00
Kenneth J. Davis
3a69192e7d allow user to more easily override preexisting options specified in last cfg line on memdisk line 2012-11-10 13:50:11 -05:00
Kenneth J. Davis
1fd28ea850 remove some debug printfs 2012-11-09 19:39:09 -05:00
Kenneth J. Davis
a9c0702807 rework memdisk command line processing so only last line skips memdisk options (less likely to skip options unexpectly) 2012-11-09 19:32:55 -05:00
Kenneth J. Davis
69f76c377e memdisk rework to not require fd=, better handling of memdisk options inbetween config commands 2012-11-07 01:47:42 -05:00
Kenneth J. Davis
9c7e161526 memdisk support spaces between line markers }{ and treat initrd and/or BOOT_IMAGE options as eol and eof indicator 2012-11-05 23:37:36 -05:00
Kenneth J. Davis
0053674575 memdisk support - handle whitespace better, support lower case FD= as well 2012-11-05 22:22:14 -05:00
Kenneth J. Davis
f3bc7e882a display error for unsupported CPU from C. Masloch 2012-10-15 12:41:25 -04:00
KJD
a260927440 Tell version info without booting kernel 2012-10-15 06:41:07 -04:00
KJD
c431157156 FreeDOS kernel current - 2041+svn1709 2012-10-14 20:08:06 -04:00