{"id":13578042,"url":"https://github.com/dosemu2/fdpp","last_synced_at":"2025-04-13T02:25:28.246Z","repository":{"id":40592976,"uuid":"125770741","full_name":"dosemu2/fdpp","owner":"dosemu2","description":"FreeDOS plus-plus, 64bit DOS","archived":false,"fork":false,"pushed_at":"2025-03-12T22:34:06.000Z","size":3910,"stargazers_count":209,"open_issues_count":9,"forks_count":19,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-04-04T04:36:16.906Z","etag":null,"topics":["c","c-plus-plus","cplusplus-11","cpp11","dos","freedos","msdos"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dosemu2.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"patreon":"stsp"}},"created_at":"2018-03-18T21:48:43.000Z","updated_at":"2025-04-02T10:54:53.000Z","dependencies_parsed_at":"2023-10-20T16:47:31.745Z","dependency_job_id":"ec83bfb1-a8a3-446e-a67f-11f08de112a3","html_url":"https://github.com/dosemu2/fdpp","commit_stats":{"total_commits":1561,"total_committers":12,"mean_commits":"130.08333333333334","dds":"0.13581037796284434","last_synced_commit":"40d7e0721965e5ff79c0cf9e7cdeaaf9b6ffa868"},"previous_names":[],"tags_count":63,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dosemu2%2Ffdpp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dosemu2%2Ffdpp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dosemu2%2Ffdpp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dosemu2%2Ffdpp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dosemu2","download_url":"https://codeload.github.com/dosemu2/fdpp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248655163,"owners_count":21140437,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","c-plus-plus","cplusplus-11","cpp11","dos","freedos","msdos"],"created_at":"2024-08-01T15:01:26.537Z","updated_at":"2025-04-13T02:25:28.235Z","avatar_url":"https://github.com/dosemu2.png","language":"C","funding_links":["https://patreon.com/stsp"],"categories":["C"],"sub_categories":[],"readme":"# fdpp\n\n## what is fdpp?\nfdpp is a 64-bit DOS core.\u003cbr/\u003e\nIt is based on a FreeDOS kernel ported to modern C++.\u003cbr/\u003e\nIn short, FreeDOS plus-plus.\n\nCan be compiled with clang (not gcc!) and booted under\n[dosemu2](https://github.com/dosemu2/dosemu2).\n\n## building and installing\nRun `./configure.meson [\u003cbuild_dir\u003e]`.\u003cbr/\u003e\nThis creates and configures the build dir and prints\nthe instructions for the further build steps. It should also inform\nyou about any missing build-dependencies, which you need to install.\n\n## installing from pre-built package\nFor the ubuntu package please visit\n[this PPA](https://code.launchpad.net/~dosemu2/+archive/ubuntu/ppa).\nFedora packages are\n[here](https://copr.fedorainfracloud.org/coprs/stsp/dosemu2).\nOpenSUSE packages are\n[here](https://download.opensuse.org/repositories/home:/stsp2/openSUSE_Tumbleweed).\n\n## running\nThe simplest way to get it running is to use\n[dosemu2](https://github.com/dosemu2/dosemu2).\u003cbr/\u003e\nGet the pre-built dosemu2 packages from\n[ubuntu PPA](https://code.launchpad.net/~dosemu2/+archive/ubuntu/ppa)\nor from\n[COPR repo](https://copr.fedorainfracloud.org/coprs/stsp/dosemu2)\nor from\n[OpenSUSE repo](https://download.opensuse.org/repositories/home:/stsp2/openSUSE_Tumbleweed)\nor build it from\n[sources](https://github.com/dosemu2/dosemu2).\n\n## configuration\nfdpp uses fdppconf.sys file at boot. This file has\nthe standard format of config.sys with some syntax\nextensions. It is fully backward-compatible with the\nDOSish config.sys, and if fdppconf.sys is missing,\nconfig.sys is attempted instead.\n\n## but what it *actually* is? why dosemu2?\nfdpp is a user-space library that, as any DOS, can\nrun DOS programs. Being a library, it can't act on\nits own and needs a host program to operate. This\nalso means it can't be booted from the bare-metal\nPC, as the original freedos could.\u003cbr/\u003e\nThe host program needs to provide a couple of\ncall-backs for running real-mode code in v86 or\nsimilar environment. See\n[this code](https://github.com/stsp/dosemu2/blob/devel/src/plugin/fdpp/fdpp.c)\nas an example of providing call-backs to fdpp, and\n[this code](https://github.com/stsp/dosemu2/blob/devel/src/plugin/fdpp/boot.c)\nas an example of the boot loader.\nSufficiently DOS-oriented kernels like\n[freedos-32](http://freedos-32.sourceforge.net/)\nor\n[pdos/386](http://pdos.sourceforge.net/)\nare the good candidates for running fdpp in the future.\n\n## what fdpp technically is?\nA meta-compiler that was initially able to compile the\nfreedos kernel from its almost unmodified sources.\nAs the project evolves, the ability to compile freedos\nfrom the unmodified sources have lost its value and was\ndropped, as our copy of freedos is now heavily modified.\nAs the result, the compiler is very small and is targeted\nonly to our coding patterns.\u003cbr/\u003e\nThe main tasks of it are to parse FAR pointers and generate\nthunks to real-mode asm code of freedos. As with any other\ncompiler, fdpp is supplied with a small runtime support\nlibrary and a dynamic linker.\n\n## compatibility\nSimply put, fdpp runs every DOS program we tried, so the\ncompatibility level is supposed to be very high. Better\nthan that of most other known DOS clones, including FreeDOS.\u003cbr/\u003e\nIf you find some compatibility problems, please\n[report a bug](https://github.com/dosemu2/fdpp/issues).\n\n## portability\nfdpp can work in any environment with STL/C++ runtime \u0026 minimal\nposix support.\nThe build requirements are in line with today's posix-compatible\nenvironments: you'll need the full stack of tools like bison,\nautoconf, sed etc. Additionally you'll need a clang tool-chain\nas clang++ is the only compiler to build fdpp with. That said,\nbuilding fdpp under itself may be a challenge. :)\n\n## related projects\n### FreeDOS\n[FreeDOS kernel](http://www.fdos.org/kernel/) is a\nDOS-compatible kernel that is used as a core of fdpp.\n\n### dosemu2\n[dosemu2](https://github.com/dosemu2/dosemu2)\nis a virtual machine that allows you to run DOS software under linux.\nIt is a primary host platform for fdpp.\n\n## similar projects\n### dosbox\n[dosbox](https://www.dosbox.com/) has a good\n[built-in DOS](https://sourceforge.net/p/dosbox/code-0/HEAD/tree/dosbox/trunk/src/dos/)\nwritten in C++. It is tightly coupled to dosbox; you can't\neasily port it to your project, whereas fdpp is designed to\nbe plugable. Also it uses host APIs and libraries for\nfilesystem access, CD-ROM playing and similar things. fdpp\nuses no host APIs or libraries, which may be good or bad,\ndepending on your use-case. dosbox is cleanly written in C++,\nwhereas fdpp wraps the C-coded freedos kernel into a C++ framework,\nresulting in a nuclear C/C++ mix.\n\n### freedos-32 (inactive)\n[freedos-32](http://freedos-32.sourceforge.net/) is a\nkernel written with DOS compatibility in mind. It has a\nrich user-space part with libc. Very good candidate for\nrunning fdpp. Unfortunately,\n[the kernel](https://sourceforge.net/p/freedos-32/code/HEAD/tree/trunk/)\nwas scrapped, and currently\n[something else](https://github.com/salvois/kernel)\nis being developed.\n\n### PDOS/386\n[pdos/386](http://pdos.sourceforge.net/)\nis a Public Domain Operating System with a user interface as simple\nas MSDOS.\nIt supports a \"theoretical 32-bit MSDOS API\" (probably similar to\nthat of 32-bit DOS extenders) and some of the Win32 API, allowing\na subset of Windows executables to be run. PDOS/386 is good enough to\nrun gcc, as, and ld to rebuild itself.\u003cbr/\u003e\nAs for running fdpp - pdos/386 is a very promising project, but\nits author seems to be reluctant at adding v86 support, preferring\nto switch to real mode for bios calls. The lack of v86 leaves very\nsmall room for fdpp and for DOS programs in general unfortunately.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdosemu2%2Ffdpp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdosemu2%2Ffdpp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdosemu2%2Ffdpp/lists"}