Commit Graph

110 Commits

Author SHA1 Message Date
Kenneth J Davis
a6781df62d Update copyright year 2022-01-12 17:59:54 -05:00
Andrew Bird
b7a65d9f73 Build: Build country.sys from submodule 2021-12-30 11:55:17 -05:00
Andrew Bird
bd5a68552e Build: Use country submodule data
Use table content from country submodule for
  "struct CountrySpecificInfoSmall specificCountriesSupported[]"
2021-12-30 11:55:17 -05:00
lpproj
571cf11111 fix 2nd parameter of "DOS=" statement in config.sys does not take effect in some cases:
* preceding space(s): e.g. "DOS=UMB, HIGH"
* after unknown keyword: e.g. "DOS=NOUMB,HIGH"
2021-11-23 07:22:21 -05:00
C. Masloch
cedcaee5ad dosfns, int2f: make SHARE uninstallable
Refer to https://github.com/FDOS/share/issues/10
2021-10-28 07:37:54 -04:00
Jiri Malak
6e0a415ed3 Fix incorrect date format for Czech and Slovak Republic.
Both Countries use DD.MM.YYYY date format.
Microsoft DOS also use this format.
2021-09-30 07:14:45 -04:00
Andrew Bird
4b3f7e0088 int2f: make share_open_check() to accept FAR
Fixes problem with GCC-ia16 compiled share not allowing open of files.
It seems that the TCC 2.01 compiled version was fortunate in that DS
happened to be correct when the interrupt was called, but this was
not the case for the GCC ia16 compiled version.

It's an analogue of this patch by @stsp for FDPP.
https://github.com/dosemu2/fdpp/commit/5b52510b
2021-09-25 19:33:16 -04:00
Andrew Bird
5b9e8fedcc dosfns: Check share table before delete/rename
Delete and Rename should not be able to remove an open file,
so check share's open file table first. Behaviour is now identical
to MS-DOS 6.22.

Note: Uses a new subfunction of the FreeDOS share multiplex
      interrupt int2f/0x10a6 called is_file_open()

A similar patch was applied to FDPP at
https://github.com/dosemu2/fdpp/commit/691721f1

Fixes dosemu2 tests:
  test_fat_ds3_share_open_rename_fcb
  test_fat_ds3_share_open_rename_ds2
  test_fat_ds3_share_open_delete_ds2
  test_fat_ds3_share_open_delete_fcb
2021-09-25 19:33:16 -04:00
Kenneth J Davis
23d9c2ecf0 FCB: Rename should support asterisk wildcards - based on dosemu fdpp patch f3cb0719ca, fixes issue #43 2021-08-21 11:09:17 -04:00
Kenneth J Davis
740e31fd2e don't overwrite CX on windows startup broadcast, windows sets this to 0 so unneeded and another program in chain may have set to nonzero for a reason 2021-08-20 18:24:45 -04:00
Kenneth J Davis
b0f5e79205 _winInstanced is only used when compiled with WIN31SUPPORT, fix build error on CI 2021-08-19 14:16:50 -04:00
Kenneth J Davis
9186e6c5ed initial windows 3 enhanced support based on unstable kernel branch 2021-08-19 11:46:10 -04:00
Kenneth J Davis
6ada304ec2 allow opening a character device prefixed with invalid drive letter (e.g. "@:NUL") but not with invalid path 2021-08-19 00:00:29 -04:00
Kenneth J Davis
77b36d2458 revert this change - does not seem correct testing with MSDOS 5 and 6
original commit notes '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)', need to test case but breaks TRUENAME asis
2021-08-15 18:00:10 -04:00
Kenneth J Davis
e341cce4ed fix build error on FAT16 (non FAT32) variant because of unused label 2021-08-14 19:22:09 -04:00
Kenneth J Davis
b0653c0c5f add missing #ifdef, this code is part of skeleton logic for upcoming LFN support - int 2F 1242 internal 64 bit LSEEK should only be active if LFN API available 2021-08-09 17:42:07 -04:00
Kenneth J Davis
1bb536c383 LONG SEEK actually use lower 32 bits of 64 bit value (not 16 bits) 2021-08-08 14:37:07 -04:00
Kenneth J Davis
b7bcef73a1 build fixes - update inthndlr.c to compile with LFNAPI enabled (more fixes from earlier oops, lfnapi.c still doesn't compile) 2021-08-08 14:26:34 -04:00
Kenneth J Davis
246b0037a8 initial implementation of extended seek (0x7142 - LONG LSEEK with 64-bit file position) 2021-08-08 03:52:58 -04:00
Kenneth J Davis
15900d7827 add implementation of int 0x2F function 0x1f build CDS from dosemu2/fdpp 2021-08-08 02:19:14 -04:00
Kenneth J Davis
c4d6f885f4 correct INTR macro (fix oops, LFN skeleton wasn't meant to be pushed yet) 2021-08-08 00:55:02 -04:00
Kenneth J Davis
e2832a5563 skip redundant skipwh(pLine) call - its the first thing scan(...) does 2021-08-07 22:15:24 -04:00
Kenneth J Davis
d410370580 add skeleton for LFN API, includes 0x71a6 implementation (call to redirector only) from dosemu2/fdpp 2021-08-07 20:43:04 -04:00
Kenneth J Davis
cd4709f09b ensure offset to critical patch tables doesn't change - from a921e21edc (add 0x315 mark) 2021-07-30 23:10:15 -04:00
Kenneth J Davis
dd91e3c005 From Tom Ehlert: don't split disk transfers crossing DMA boundary if BIOS indicates can handle transparently 2021-07-30 23:04:06 -04:00
Andrew Bird
ab1e31e0ba fcbfns: Fix for FcbFindFirstNext [fixes #40]
The "next" part of this function never returned any results, initialise
only on the first call.

Fix by @stsp, minor edits @andrewbird
2021-07-29 20:31:25 -04:00
Tee-Kiah Chia
de7f0d6489 task: don't zero parent_psp on 0x26
Patch ported from
  * f49252ac6b
See
  * https://github.com/dosemu2/fdpp/issues/112
  * https://github.com/FDOS/kernel/issues/38
2021-07-29 17:20:38 -04:00
Kenneth J Davis
edfb0db758 adjust padding to be same as in PC-DOS (90h/nop)
see 1dc244b09b
2021-07-22 23:32:22 -04:00
Kenneth J Davis
9d293d7815 since both refer to critical sections to patch and we have none, i.e. both empty lists, use same location for unused hard coded critical patch list and critical patch list passed to Win3 2021-07-22 23:12:56 -04:00
Kenneth J Davis
a193ba3116 from dosemu2/fdpp - zero out critical patch list
Personal NetWare Server really writes to these addresses, so
putting 0x0d0c the way DOS does, is not safe.

See dosemu2/dosemu2#428
see 94bd3eb4b5
2021-07-22 23:02:18 -04:00
Kenneth J Davis
c6fafbbb2d int 21h/4400h only return low byte of SFT flags if not a device, part of dosemu2/fdpp bug #147 fix - b2b55fc1af 2021-07-22 22:31:45 -04:00
Kenneth J Davis
516a4e7e55 check for unsupported function call in console - from dosemu2/fdpp bug# 101 fix see c6efa7a203 2021-07-22 21:21:01 -04:00
Tee-Kiah Chia
26626f2fed ia16-elf-gcc: use new SS != DGROUP support for int21_syscall(.) 2021-05-11 21:47:12 -04:00
Piotr Durlej
5ec1e993b4 read_line: skip characters > 255 2021-05-11 21:45:38 -04:00
Ricardo Hanke
7496c685ea Implement version table support for int21/ah=4b, subfunctions 0 and 1 2021-03-10 22:21:19 -05:00
Andrew Bird
4e21e947fc FATFS: rmdir of read only directories is valid
After comparison with DR-DOS 7.01 and MS-DOS 6.22 over at Dosemu2 it
was seen that rmdir of a directory having the _A_RDONLY bit set should
succeed. This patch makes that change.

For reference the test report can be found in the fdpp issue
https://github.com/dosemu2/fdpp/issues/161. An identical patch has
been applied there.
2021-01-07 21:23:10 -05:00
Andrew Bird
a7b7ce71d0 GCC build: Remove duplicate argument [#fixes #27]
No need to specify output file in NASMFLAGS as Watcom needs it specified
in the rule. Newer versions of NASM see duplicate output file as an error.
2020-10-14 10:34:27 -04:00
lpproj
19a6dc1ba4 Fix func 0Bh (Get STDIN Status) always returns AL=FFh with some alternative CON drivers:
* qwikansi.sys (simtelnet: simtelnet/msdos/screen/qwikansi.zip
* most of Japanese input methods (Microsoft MS-IME, ATOK, WXP/WX2/WX3)
2019-12-27 08:18:39 -05:00
lpproj
9eb9b1a046 Fix Func 30h (Get DOS Version) return version 0.0 in config.sys 2019-12-19 21:07:06 -05:00
Tee-Kiah Chia
6a29f57715 int2f: fix call interface around syscall_MUX14( ) (inthndlr.c)
The issues are similar to those surrounding int2F_12_hanndler( )
(see https://github.com/FDOS/kernel/issues/11).
2019-12-09 06:23:12 -05:00
Tee-Kiah Chia
c07577cbfb (Mostly) fix gcc-ia16 code for non-stack-switching int21 funcs. 2019-12-09 06:23:12 -05:00
Tee-Kiah Chia
0114ab3be4 int2f: fix call interface around int2F_12_handler( )
This changes the interface between reloc_call_int2f_handler
(int2f.asm) and int2F_12_handler( ) (inthndlr.c) so that

  - int2F_12_handler( ) will not try to output values to its
    caller by passing "back" input parameter values
  - reloc_call_int2f_handler will switch to an internal
    stack before calling int2F_12_handler( ), so that SS ==
    DGROUP as expected by the latter.

This partly addresses https://github.com/FDOS/kernel/issues/11 .

(The call to syscall_MUX14( ) in int2f.asm seems to have
similar issues, and should probably also be updated.)
2019-12-09 06:23:12 -05:00
Andrew Bird
0dc6a02450 int2f: Allow 1217h function to return new CDS entry
DOS provides the interrupt 2f/12xx functions for use by
filesystem redirectors in order that they do not need to access
structures and variables using undocumented methods. Interrupt
2f/1217 is a function used by a redirector to get the CDS entry
corresponding to a drive without iterating the CDS array found
via SYSVARS LOL.
    FreeDOS currently validates the flags in CDS entry before
deciding whether to return the entry to the caller. This behaviour
prevents a redirector receiving the CDS entry corresponding to
an as yet unassigned drive so preventing any new drive mapping.

    I've tested the following flavours of DOS and only FreeDOS
does this.

 # DOS variants returning new CDS entries okay
    DR-DOS
        6.00-930319 7.00 7.01 7.02-971119 7.02-980123 7.03 8.00
    MS-DOS
        3.10 3.20 3.21 3.30-Nec 3.30 3.31 4.01 5.00 6.00 6.20 6.21 6.22
        7.00 7.10
    PC-DOS
        3.00-Compaq 3.00 3.10-850307 3.10-850422 3.10-Compaq 3.20-851230
        3.20-860221 3.30 3.31-Compaq 4.00 4.01 5.00 5.02 6.10 6.30 7.00
        7.10 7.2K

 # DOS variants that return error rather than new CDS entry
    FR-DOS
        1.00 1.10 1.20

    This patch introduces an unvalidated version of get_cds() and calls
it only for the int2f/1217h call, other uses remain as before.
2019-12-02 15:09:23 -05:00
Mondgestein
a2ad348ed8 Function 30h (Get DOS Version): Get DOS version from PSP
- Upon creation, initialize the PSP version field
    to os_setver_minor / os_setver_major.
  - When calling Function 30h, return the contents
    of the current PSP's version field to the caller.
2019-12-02 12:06:22 -05:00
lpproj
6be00f83c1 Fix func 36h (Get free disk space) fails in some redirectors:
- David Maxey's PHANTOM (Undocumented DOS 2nd edition)
  - Novell CD-ROM extension NWCDEX (DR DOS 7.03)
2019-11-08 18:41:50 -05:00
C. Masloch
61647299c6 dosfns.c: only copy to current_ldt if pointer is valid 2019-11-08 18:19:11 -05:00
C. Masloch
6fbb1d0043 inthndlr.c: in Int21.43FF, dispatch DosMkRmdir on CL not AH 2019-11-08 18:19:11 -05:00
Tee-Kiah Chia
6f9648672e EXEC (func 0x4b): fix: do not crash if exMinAlloc == 0xffff
Some ancient NE programs set exMinAlloc to 0xffff to signify
that they should not be run as normal MZ programs at all:

00000000  4d 5a 40 00 01 00 00 00  04 00 ff ff ff ff 00 00
00000010  00 00 00 00 00 00 00 00  40 00 00 00 00 00 00 00
00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
00000030  00 00 00 00 00 00 00 00  00 00 00 00 40 00 00 00
00000040  4e 45 04 00 9b 00 07 00  00 00 00 00 06 40 02 00
...

The kernel should reject these programs, rather than try to
run them (and crash the system).
2019-11-05 12:49:41 -05:00
Andrew Bird
d5b5505013 FCB: Rename return value lost
Two variables named 'result' were defined, at the outer level a
UBYTE to hold the function return value and the inner a COUNT to
hold returns from 'truename()'. The overall function return value
was always FCB_SUCCESS due to shadowing, however removing the
inner variable definition as a fix does not work due to sign
issues and intermixing of the variable uses, so rename the inner
variable.

Tested this patch using FDPP platform
1/ Simple rename of file with conditions for success (ok)
2/ Simple rename of file with conditions for failure - source missing (ok)
3/ Simple rename of file with conditions for failure - target exists (ok)

Fixes #16
2018-10-20 20:45:24 -04:00
Bart Oldeman
e6d427834f Implement suggested instead of minimal fix for ludivmul.
See https://sourceforge.net/p/freedos/bugs/106/
(Gerd Grosse)
2018-09-06 10:30:04 -04:00