Commit Graph

210 Commits

Author SHA1 Message Date
Piotr Durlej
5ec1e993b4 read_line: skip characters > 255 2021-05-11 21:45:38 -04:00
Piotr Durlej
e0818e305b SYS: Fix a bad merge 2021-05-11 21:45:38 -04:00
Piotr Durlej
0a0d55ea53 SYS: Reduce verbosity when the verbose flag is not set 2021-05-11 21:45:38 -04:00
Kenneth J Davis
49d3c8d76b add safety check to FAT12/16 boot sector to warn about breaking sys, update new offset in sys.c for NOPing out use of BIOS boot drive during boot (fix error about boot sector unsupported format) 2021-05-11 21:39:29 -04:00
Ricardo Hanke
66df13c4d8 .gitignore: add setver.sys 2021-03-26 02:19:33 -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
35a18350a0 CI: Update workflow and readme badge 2021-01-15 08:39:46 -05:00
Andrew Bird
7a2748585c CI: Add Github Action 2021-01-09 09:12:47 -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
C. Masloch
92ae538f1d boot: allow instsect to match the filesystem ID string
Reference: https://hg.ulukai.org/ecm/instsect/file/33218c729b43/instsect.asm#l1257

lDOS's instsect recently started to default to checking
the filesystem ID string in order to validate that the
boot sector loader to write matches the detected FS.
Using the /S=filename option or building instsect to
include the FreeDOS kernel's loaders would require use
of the /SN switch without this commit.

In addition, boot.asm and oemboot.asm are made to check
that exactly one of the ISFAT12 and ISFAT16 defs is
defined so as to select the FS. Prior to this commit
using both or neither def would silently result in a
broken loader.
2020-11-28 12:11:16 -05:00
Andrew Bird
6e42bb6d7c Travis: Update build env to Ubuntu Focal
1/ Update to Focal environment
2/ Make build stop on first error
3/ Remove unnecessary PPAs
2020-10-14 10:34:27 -04: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
C. Masloch
977023f85c boot: fix Int10.0E expected not to alter al (SBC188)
Reference: https://www.bttr-software.de/forum/forum_entry.php?id=16934

The SBC188 video ROM-BIOS handling returns with al=0Ah (LF)
upon interrupt 10h function 0Eh calls that scroll the screen.
This made the FAT12 boot loader crash when booting FreeDOS
off a 1440 KiB diskette. While a fix is expected from their
side too, hardening the loader too is the right thing to do.

With the way this fix is implemented by this commit, it only
needs one additional byte for the loader. The error message
changes from "Error!." to just "Error!", other than
that the behaviour is the same.

The FAT32 loaders already used zero-terminated strings and
thus were not affected by the dependence.
2020-09-18 13:37:49 -04:00
lpproj
ef945b1192 Fix Func 2Dh (Set System Time) sets wrong time 2020-08-21 13:57:26 -04:00
Jiri Malak
093c6dd924 correct I186 and I386 macros definition
correct I186 and I386 macros definition to work with all Open Watcom toolchain versions
command line definition macro has "1" value but in header file it is defined as blank value
anyway I86/I186/I386 macros usage is not transparent, it is definition duplicity in header file and on command line
it is wrong solution even if it works on most of compilers (command line macro re-definition is hidden)
2020-08-02 10:22:56 -04:00
Andrew Bird
5ecfdd572c Travis: Build and test with both GCC and Watcom
Watcom compiler is downloaded and extracted if necessary. On Travis this
will be always, but if you build locally multiple times using
./travis_build, it will use the previous watcom installation.

[fixes #18]
2020-08-01 08:53:46 -04:00
Kenneth J Davis
65e0101c17
Add index.md
Add index.md for initial page shown when viewing docs online via GitHub
2020-05-01 13:54:53 -04:00
Kenneth J Davis
6bfc2c5c2d
Add title and description 2020-05-01 13:50:25 -04:00
Kenneth J Davis
579ae7eb9f Set theme jekyll-theme-tactile 2020-05-01 13:37:10 -04:00
Kenneth J Davis
a8e44f0e33 Create CNAME 2020-05-01 13:36:38 -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
241875a742 Make: Allow clean and clobber to work with gcc
Currently the sed trickery for gcc is only setup on the all target, but
if we want to do `make COMPILER=gcc clean all` the clean will fail.
Setup and remove the GNUmakefiles for each main target.
2019-12-08 09:28:56 -05:00
Kenneth J Davis
7cbd272ca5
Update readme with build status 2019-12-03 19:57:03 -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
Andrew Bird
687f31fdae Travis: Initial build attempt
Note: Forced Unix scripts to LF endings
2019-12-02 15:06:22 -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
Lino Mastrodomenico
61499ae6aa Add the full text of the license (GPL v2). (#8)
* Move the text of the GPLv2 to the top-level directory

This to make it easier to find, it also allows to be autodetectable by github and other automated tools.  Note: this is not a license change, the FreeDOS kernel is already released under the GPL v2.
2019-12-01 21:08:56 -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
Kenneth J Davis
9d5abfe25a
Merge pull request #2 from PerditionC/master
sync
2018-10-20 20:58:47 -04:00
Kenneth J Davis
80c1184294
Merge pull request #31 from FDOS/master
sync
2018-10-20 20:54:34 -04: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
8c45af38c7 Implement suggested instead of minimal fix for ludivmul.
See https://sourceforge.net/p/freedos/bugs/106/
(Gerd Grosse)
2018-10-20 19:47:09 -04:00
Bart Oldeman
5e31e7fe58 Fix division for some large numbers such as 0xFFFF01FF/0x10101FF
See also https://sourceforge.net/p/freedos/bugs/106/
(Gerd Grosse)
2018-10-20 19:47:09 -04:00
Bart Oldeman
c4d18100e7 Fix comments (Gerd Grosse, https://sourceforge.net/p/freedos/bugs/106/) 2018-10-20 19:47:09 -04:00
Bart Oldeman
761582ec0d ia16-elf-gcc: eliminate DOSDATA, DOSTEXT and C use of TGROUP.
Now that it understands relocations those are no longer necessary.
2018-10-20 19:47:09 -04:00
Bart Oldeman
204c2d5ba9 ia16-elf-gcc: eliminate _EnableA20 and _DisableA20 wrappers. 2018-10-20 19:47:09 -04:00
Bart Oldeman
384c5d302f ia16-elf-gcc: eliminate wrapper for init_call_p_0 and make it "noreturn". 2018-10-20 19:47:09 -04:00
Bart Oldeman
112f0fea42 ia16-elf-gcc port: use CDECL = __attribute__((cdecl)) instead of varargs. 2018-10-20 19:47:09 -04:00
Tee-Kiah Chia
656afa7873 ia16-elf-gcc: remove need for far function wrappers 2018-10-20 19:47:09 -04:00
Tee-Kiah Chia
a4e7d1bf08 ia16-elf-gcc: remove some DOSDATA(.) & DOSTEXT(.) uses; replace
with actual __far declarations which ia16-elf-gcc now supports
2018-10-20 19:47:09 -04:00
Tee-Kiah Chia
41cb3a9dc1 ia16-elf-gcc: use special .msdos_mz_{hdr, reloc} section names
recognized by my recent (post-20 Mar 2018) binutils-ia16 patches
2018-10-20 19:47:09 -04:00
Tee-Kiah Chia
ab6a76d049 Fix minor issues in diagnostic messages in utils/exeflat.c 2018-10-20 19:47:09 -04:00
Tee-Kiah Chia
2b96ed38d9 ia16-elf-gcc: use ia16-elf-objcopy instead of host objcopy
to process the ia16-elf object files
2018-10-20 19:47:09 -04:00