All Projects → jwt27 → libjwdpmi

jwt27 / libjwdpmi

Licence: GPL-3.0 License
C++20 development framework for 32-bit DOS applications

Programming Languages

C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to libjwdpmi

cpp-coroutine-job-system
Example Code for Cpp Coroutine Job System talk at CppCon 2020
Stars: ✭ 37 (+15.63%)
Mutual labels:  coroutine, cpp20
DeezerClone
This Application using Dagger Hilt, Coroutines, Flow, Jetpack (Room, ViewModel, LiveData),Navigation based on MVVM architecture.
Stars: ✭ 81 (+153.13%)
Mutual labels:  coroutine
fork-helper
A PHP helper to fork processes and allow multi-threading
Stars: ✭ 69 (+115.63%)
Mutual labels:  multi-threading
Paraphrase
Multi-core suitable Forth-like language
Stars: ✭ 27 (-15.62%)
Mutual labels:  multi-threading
uninttp
A universal type for non-type template parameters for C++20 or later.
Stars: ✭ 16 (-50%)
Mutual labels:  cpp20
PHPMailer-Swoole
安装最新版Swoole,开启一键协程化,使用原版phpmailer就可以实现协程化了。本项目已经没有维护下去的意义。
Stars: ✭ 25 (-21.87%)
Mutual labels:  coroutine
PyDOS
DOS-like OS for microcontroller boards running Micropython or Circuitpython
Stars: ✭ 40 (+25%)
Mutual labels:  dos
rethinkdb.nim
RethinkDB driver for Nim
Stars: ✭ 35 (+9.38%)
Mutual labels:  multi-threading
benchbox
🧀 The Benchmark Testing Box
Stars: ✭ 19 (-40.62%)
Mutual labels:  coroutine
safe
C++11 header only RAII guards for mutexes and locks.
Stars: ✭ 119 (+271.88%)
Mutual labels:  multi-threading
meegram2
Telegram client for Nokia N9 (used tdlib)
Stars: ✭ 16 (-50%)
Mutual labels:  cpp20
scope-guard
Implementation of Scoped Guards and Unique Resource as proposed in P0052.
Stars: ✭ 22 (-31.25%)
Mutual labels:  cpp20
Jacob
A lightweight library to provide coroutines in Java
Stars: ✭ 14 (-56.25%)
Mutual labels:  coroutine
Nineties
💾 Colors for World Wide Web pioneers
Stars: ✭ 16 (-50%)
Mutual labels:  dos
Yggdrasil-Legacy
Experimental Vulkan Renderer / Game Engine written in C++20.
Stars: ✭ 20 (-37.5%)
Mutual labels:  cpp20
stlkrn
C++ STL in the Windows Kernel with C++ Exception Support
Stars: ✭ 216 (+575%)
Mutual labels:  cpp20
fixed string
C++17 string with fixed size
Stars: ✭ 64 (+100%)
Mutual labels:  cpp20
TensorFlow-Input-Pipeline
TensorFlow Input Pipeline Examples based on multi-thread and FIFOQueue
Stars: ✭ 54 (+68.75%)
Mutual labels:  multi-threading
chicken-gochan
Go-like Channels for Chicken Scheme
Stars: ✭ 18 (-43.75%)
Mutual labels:  multi-threading
csgo sdk
c++20 internal csgo-hack base
Stars: ✭ 79 (+146.88%)
Mutual labels:  cpp20

jwdpmi

This library aims to be a complete development framework for DPMI (32-bit DOS) applications, written in C++20.
It's still in the experimental stage. Anything may change at any time.

Features

Current features include:

  • Idiomatic C++ interfaces to access most DPMI services.
  • Interrupt handling, including dynamic IRQ assignment, IRQ sharing, and nested interrupts.
  • CPU exception handling, also nested and re-entrant.
  • Automatic translation of CPU exceptions to C++ language exceptions.
  • Cooperative multi-threading, implementing std::thread.
  • Event-driven keyboard interface.
  • Integrated GDB remote debugging backend.
  • Access to PIT, RTC and RDTSC clocks using std::chrono interface.
  • Yamaha OPL2/OPL3 driver with automatic channel allocation.
  • MIDI protocol implementation and MPU-401 driver.
  • VESA VBE3 graphics interface.
  • Accurate analog game port driver.
  • Serial port driver with std::iostream interface.

Installing

First, you need a toolchain compiled with --target=i386-pc-msdosdjgpp, and djgpp's libc. An easy to use build script is available here:
https://github.com/jwt27/build-gcc

This library is meant to be integrated in your project, not installed system- wide. The only dependency is jwutil, and the most convenient way to install both is as submodules in your own project:

$ git submodule add https://github.com/jwt27/libjwutil.git ./lib/libjwutil
$ git submodule add https://github.com/jwt27/libjwdpmi.git ./lib/libjwdpmi
$ git submodule update --init --recursive

If you use jwbuild, simply add the following to your configure script, and you're all set:

add_library lib/libjwutil
add_library lib/libjwdpmi --with-jwutil=$(pwd)/lib/libjwutil

For other build systems, you need some way to call the configure script, and then the cxxflags and ldflags files in the build directory contain all flags you need to compile and link.

Using

See the wiki page, where I'm slowly adding documentation.
Read the header files in include/, most functions should be self-explanatory. The detail namespaces contain implementation details, you shouldn't need to use anything in it (file a feature request if you do).

License

It's GPLv3, for now. I may decide to move to a different (less restrictive) license in the future. Therefore I am unable to accept code contributions at this time.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].