Code Monkey home page Code Monkey logo

usbddos's Introduction

USBDDOS

USB driver stack for DOS

USBDDOS was originally named RWDDOS before released to public, which is only a driver for RetroWave OPL3, and later more drviers added (mouse, keyboard, disk) and renamed to USBDDOS.

USBDDOS is tested working on following PCs/VMs:
OCHI: VirtualBox, NEC versa s260(p3)
UHCI: QEMU, Toshiba portege M200(p4), Compaq Evo N600c(p3), Toshiba Satellite 2410(p4)

There might be bugs for other PCs, test & feedback is appreiated.

The Borland++3.1 build (USBDDOS.EXE) can run without a DPMI host, it will enter protected mode directly or with a EMM manager. It's not compatible with many games.
To play games with a USB mouse, USBDDOSP.EXE is recommended, which also need a DIMI host (i.e. HDPMI.exe).
Latest tests with 1.0fix2 shows that USBDDOS is more stable than USBDDOSP. Like Bret Johnson's driver, USBDDOSP/USBDDOS need CuteMouse to work for USB mouse.

Tips

USBDDOS uses DPMI to save conventional memory for other DOS programs, it uses almost 0 conventional memory (USBDDOS uses ~8K, USBDDOSP uses almost 0). USBDDOSP doesn't need HDPMI32i unless you want Retrowave support, normal HDPMI32 is recommended, unless you want it cope with SBEMU.

If you get problems with the mouse/keyboard driver, make sure those settings in your BIOS settings:

  • Disable USB Legacy Support (USB Keyboard/Mouse Support). (some p4 laptop have buggy mouse support in BIOS)
  • Disable OnBoard LAN

Credits

How to Build

Borland C++3.1 (native DOS or emu):

  • Setup build env: install the BC toolchains and set path to it.
  • In folder ./Make, execute make -f makefile.bc. the makefile is generated from BC utils and doesn't have clean.
  • Or use BC IDE to perform build alternatively

    cd usbdos\make
    bc

  • The BC build uses a custom (pseudo) DPMI that limit memmory to: 64K code + 64K data.

DJGPP (native DOS or emu i.e.VirtualBox, cross toolchain on linux not tested):

  • Install LFN support, gcc headers are not 8.3 restricted. More info can be found here: https://sta.c64.org/lfnemu.html LFN is not needed anymore because is was needed by C++ headers, and C++ code is changed to C only.
  • make -f usbddos.mak. the makefile is generated from RHIDE so it make have problem on dependencies.
  • Or use RHIDE to perform build

    cd usbddos\make
    rhide

  • The DJGPP build depends on a DPMI host, i.e. its CWSDPMI. but HDPMI is recommended.

OpenWatcom:
Experimental and not supported anymore due to its inline assembly limits. There's an out-dated makefile.wc if you want to make any debugging/improvements.
If without RetroWave OPL support, OpenWatcom can still work.

How to Debug

Modify the makefile, or changes compiler arguments in the IDE, add -DDEBUG=1 and remove -DNDEBUG, then rebuild. There will be more debug message shown. The protected mode debugging utilities are not used.

Requirements

HIMEM.SYS or other XMS manager; EMM386 4.46+(optional, for RetroWave driver); 80386 CPU or later;

Features

The code is orginally written as DOS driver for RetroWave OPL3, currently only a simple CDC driver, UHCI tested on a real hardware and OHCI tested on VirtualBox & real harware. But it could be more. the following can be supported:

    • OHCI driver
    • UHCI driver
    • EHCI driver
    • xHCI driver
    • Keyborad & mouse driver (HID). use USBDDOSP /hid to enable
    • Mass storage deivce driver (MSD). use USBDDOSP /disk to enable
    • Simple CDC(ACM) driver and RetroWave OPL3. use USBDDOSP /RW to enable
    • Audio and MIDI

Tested games with Retrowave DOS driver

  • Skyroads
  • Prince of Persia1 & 2
  • Heroes of Jinyong (Jinyong Qun Xia Zhuan), DOS4GW Miles Sound
  • Chinese Paladin (Xian Jian Qi Xia Zhuan)
  • Theme Hospital, Miles Sound
  • DOOM (DJGPP build only, need a modified HDPMI with port trapping feature, see https://github.com/crazii/HX)
  • The Jungle Book (DJGPP build only)
  • Warcraft II (DJGPP build only)

usbddos's People

Contributors

crazii avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.