From f3555567e7b72b911a29f77f8809271bf45188a7 Mon Sep 17 00:00:00 2001 From: balintkissdev Date: Wed, 3 Jul 2019 01:04:37 +0200 Subject: [PATCH] Initial commit --- .gitattributes | 2 + code-of-conduct.md | 74 +++++++++++++++++ contributing.md | 29 +++++++ readme.md | 202 +++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 307 insertions(+) create mode 100644 .gitattributes create mode 100644 code-of-conduct.md create mode 100644 contributing.md create mode 100644 readme.md diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9e25297 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +* text=auto +readme.md merge=union diff --git a/code-of-conduct.md b/code-of-conduct.md new file mode 100644 index 0000000..0fd504c --- /dev/null +++ b/code-of-conduct.md @@ -0,0 +1,74 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, gender identity and expression, level of experience, +nationality, personal appearance, race, religion, or sexual identity and +orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or +advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at balint.kiss.501@gmail.com. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at [http://contributor-covenant.org/version/1/4][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ diff --git a/contributing.md b/contributing.md new file mode 100644 index 0000000..a03e43f --- /dev/null +++ b/contributing.md @@ -0,0 +1,29 @@ +# Contribution Guidelines + +Please note that this project is released with a +[Contributor Code of Conduct](code-of-conduct.md). By participating in this +project you agree to abide by its terms. + +--- + +Ensure your pull request adheres to the following guidelines: + +- Please search previous suggestions before making a new one, as yours may be a duplicate. +- Please make an individual pull request for each suggestion. +- Keep descriptions short and simple. +- End all descriptions with a full stop/period. +- Make sure your text editor is set to remove trailing whitespace. +- Check your spelling and grammar. +- New categories, or improvements to the existing categorisation are welcome! + +Thank you for your suggestions! + + +## Updating your PR + +A lot of times, making a PR adhere to the standards above can be difficult. +If we notice anything that we'd like changed, we'll ask you to +edit your PR before we merge it. There's no need to open a new PR, just edit +the existing one. If you're not sure how to do that, +[here is a guide](https://github.com/RichardLitt/knowledge/blob/master/github/amending-a-commit-guide.md) +on the different ways you can update your PR so that we can merge it. diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..bae05a8 --- /dev/null +++ b/readme.md @@ -0,0 +1,202 @@ +# Awesome DOS [![Awesome](https://awesome.re/badge.svg)](https://awesome.re) + +A curated list of references for development of DOS applications in the spirit of an +[*awesome list*](https://github.com/sindresorhus/awesome). This includes list of compilers, tutorials, videos, links +to free and paid books and source code to DOS games. + +The goal of this list is to collect information and act as a starting point for someone who wants to start out +retro-programming for the DOS platform. + +The list template was generated by [generator-awesome-list](https://github.com/dar5hak/generator-awesome-list) + +## Contribute + +Feel free to contribute with pull requests! There's a chance that I missed something or you know something that I don't. +Read the [contribution guidelines](contributing.md) first! + + +## Contents + +- [DOS compilers](#dos-compilers) +- [Tutorials and programming resources](#tutorials-and-programming-resources) +- [Books](#books) +- [Videos](#videos) +- [Open source DOS libraries](#open-source-dos-libraries) +- [Open source DOS games](#open-source-dos-games) + + +## DOS compilers + +- [bcc - Bruce's Compiler](https://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.2/repos/pkg-html/bcc.html) - + Bruce's C compiler is a simple C compiler that produces 8086 assembler for tiny/small models. +- [DJGPP](http://www.delorie.com/djgpp/) - DJ Delorie's complete 32-bit C/C++ development environment for Intel 80386 + - Used for Quake. +- [Open Watcom](http://openwatcom.org/) - Formerly commercial C/C++ development environment for 16- and 32-bit DOS and + Windows. The current official version is 1.9. A GitHub fork is also available. + - The [documentation](http://openwatcom.org/doc.php) is very valuable to understand working with both version 1.9 and + the V2 fork. + - [Arch Wiki page](https://wiki.archlinux.org/index.php/Open_Watcom) + - Used for Doom I-II, Warcraft I-II, Duke Nukem 3D, Full Throttle and Dark Forces +- [Open Watcom V2](https://github.com/open-watcom/open-watcom-v2) - GitHub fork which is actively maintained and is + ported to 64-bit Windows and Linux. +- [Turbo C 2.01](http://www.doshaven.eu/wp-content/uploads/2014/08/tc201.zip) - C IDE and compiler from Borland first released in 1987 +- [Turbo C++ 1.01](http://www.doshaven.eu/wp-content/uploads/2014/08/tcpp101.zip) - C++ IDE and compiler from Borland released in 1991 + + +## Tutorials and programming resources + +### Compiling + +#### Open Watcom + +- [32bit DOS development with Open Watcom](http://tuttlem.github.io/2015/10/04/32bit-dos-development-with-open-watcom.html) +- [80x86 16-bit Compiling How-to by Alexei A. Frounze](http://alexfru.narod.ru/os/c16/c16.html) + +### General + +- [David Brackeen - 256-Color VGA Programming in C](httpp://www.brackeen.com/vga/) +- [DOS programming resources by DOS HAVEN](http://www.doshaven.eu/sources/) +- [Just keeping it real... old skool style - Scali's OpenBlog](https://scalibq.wordpress.com/2011/11/23/just-keeping-it-real-old-skool-style/) +- [Alex Russell's Dos Game Programming in C for Beginners](http://www3.telus.net/alexander_russell/course/introduction.htm) + - This series contains a tutorial for making [buffered input handling](http://www3.telus.net/alexander_russell/course/chapter_4.htm) +- [PC Game Programmer's Encyclopedia on the Web](http://bespin.org/~qz/pc-gpe/) + +### DOS API + +- [bios.h header documentation by Digital Mars](https://digitalmars.com/rtl/bios.html) +- dos.h header documentation by Digital Mars [Part 1](https://digitalmars.com/rtl/dos.html) [Part 2](https://digitalmars.com/rtl/dos2.html) + +### Interrupts + +- [Ralph Brown's Interrupt List - HTML version](http://www.ctyme.com/rbrown.htm) + - Original in downloadable .zip files from [Ralph Brown's website](http://www.cs.cmu.edu/~ralf/files.html) + +### Video + +#### CGA + +- [Color Graphics Adapter: Notes](http://www.seasip.info/VintagePC/cga.html) + +#### VGA + +- [VGA Hardware - OSDev wiki](https://wiki.osdev.org/VGA_Hardware) + +#### SVGA + +- [DOS Super VGA / VESA programming notes - by Myles](http://www.faqs.org/faqs/pc-hardware-faq/supervga-programming/) +- [VESA Video Modes - OSDev wiki](https://wiki.osdev.org/Getting_VBE_Mode_Info) +- [DJGPP VESA guide](http://www.delorie.com/djgpp/doc/ug/graphics/vesa.html.en) +- [High-res high-speed VESA tutorial](http://www.monstersoft.com/tutorial1/) +- [C code sample for drawing in VESA 2.0 mode](http://www.codenet.ru/progr/video/vesa20ex.php) + +### Sound + +#### PC Speaker + +- [Frequencies of Musical Notes](http://pages.mtu.edu/~suits/notefreqs.html) +- [Making some noise with the PC speaker!](http://heim.ifi.uio.no/~inf3150/grupper/1/pcspeaker.html) +- [Programming the PC Speaker by Mark Feldman](http://bespin.org/~qz/pc-gpe/speaker.txt) +- [Sound Programming with PC Speaker - Chapter 23 of A to Z of C](http://guideme.itgo.com/atozofc/ch23.pdf) + +#### AdLib/OPL2 + +- [Yamaha YM3812 (OPL2) sound chip Wikipedia article](https://en.wikipedia.org/wiki/Yamaha_YM3812) +- [The Ad Lib Music Synthesizer Card Programming Guide - by Tero Töttö](http://www.vgmpf.com/Wiki/images/4/48/AdLib_-_Programming_Guide.pdf) + +#### Sound Blaster/OPL3 + +- [Programmer's Guide to the Yamaha YMF 262/OPL3 FM Music Synthesizer](http://www.fit.vutbr.cz/~arnost/opl/opl3.html) +- [Sound Blaster 16 Programming Document 3.5 by Ethan Brodsky](http://homepages.cae.wisc.edu/~brodskye/sb16doc/sb16doc.html) + - version 3.4 on [GameDev.net archive](http://archive.gamedev.net/archive/reference/articles/article444.html) +- [Sound Blaster Hardware Programming Guide](https://pdos.csail.mit.edu/6.828/2008/readings/hardware/SoundBlaster.pdf) +- [Soundblaster Programming Information v0.90](http://www.intel-assembler.it/portale/5/soundblaster-programming-information/sb-reference-for-programming-sound.asp) + +### Other + +- [How to build DOS COM files with GCC by Chris Wellons](https://nullprogram.com/blog/2014/12/09/) + +## Books + +### Free + +- [Game Engine Black Book: Wolfenstein 3D - by Fabian Sanglard](http://fabiensanglard.net/gebbwolf3d_v2.1.pdf) +- [Game Engine Black Book: Doom - by Fabian Sanglard](http://fabiensanglard.net/gebbdoom_v1.1.pdf) +- [A to Z of C - a book on C/DOS programming by K. Joseph Wesley and R. Rajesh Jeba Anbiah](http://guideme.itgo.com/atozofc/) +- [Michael Abrash's Graphics Programming Black Book Special Edition](http://www.phatcode.net/res/224/files/html/index.html) + +### Paid + +- [Tricks of the Game-Programming Gurus - by Andre Lamothe, John Ratcliff and Denise Tyler](https://www.amazon.com/Tricks-Game-Programming-Gurus-Andre-Lamothe/dp/0672305070/) + +## Videos + +- [CGA Graphics - Not as bad as you thought! - by 8-bit Guy](https://www.youtube.com/watch?v=niKblgZupOc) +- [How Oldschool Sound/Music worked - by 8-bit Guy](https://www.youtube.com/watch?v=q_3d1x2VPxk) + - Contains section about the Yamaha OPL chip found in AdLib and Sound Blaster sound cards at [4:32](https://www.youtube.com/watch?v=q_3d1x2VPxk&feature=youtu.be&t=272) +- [LGR - Evolution of PC Audio - As Told by Secret of Monkey Island](https://www.youtube.com/watch?v=a324ykKV-7Y) +- [Porting Retro City Rampage to MS-DOS: From PS4 to 1.44MB Floppy](https://www.youtube.com/watch?v=kSKeWH4TY9Y) - GDC talk + +## Open source DOS libraries + +- [Allegro 4.2](https://www.allegro.cc/files/?v=4.2) +- [LoveDOS](https://github.com/rxi/lovedos) - A framework for making DOS games in Lua + +## Open source DOS games + +### Homebrew games with source code + +List of all homebrew DOS games: http://www.doshaven.eu + +- [DOS Defender](https://github.com/skeeto/dosdefender-ld31) + - See [How to build DOS COM files with GCC by Chris Wellons](https://nullprogram.com/blog/2014/12/09/) +- [Dungeons of Noudar](https://github.com/TheFakeMontyOnTheRun/dungeons-of-noudar) +- [Emeritus Pong](https://sourceforge.net/projects/empong/) +- [Floppy Bird](https://github.com/icebreaker/floppybird) - 16 bit assembly +- [Gridfighter 3D](https://github.com/porta2note/gridfighter3d) - Quickbasic +- [Hangman](https://sourceforge.net/projects/hangman-dos/) - Basic +- [Magenta's Maze](http://www.doshaven.eu/downloads/537) - [site](https://archive.org/details/MAGSMAZE) +- [NetHack](https://github.com/NetHack/NetHack) +- [Piskworks](https://github.com/berk76/piskworks) +- [Plutonium Caverns](https://github.com/jani-nykanen/plutonium-caverns) +- [Ptakovina](https://github.com/berk76/tetris) +- [sudoku86](https://sourceforge.net/projects/sudoku86/) +- [Tetris](http://www.doshaven.eu/downloads/373) - [site](http://www.doshaven.eu/game/tetris/), assembly +- [Towers of Hanoi](https://github.com/sblendorio/hanoi-dos) - Turbo Pascal, originally released in 1996 +- [x86 pong](https://github.com/spacerace/x86-pong) - PC-Booter game +- [zmiy](https://sourceforge.net/projects/zmiy/) + +### Freeware games with source code + +- [Cyberdogs](https://www.classicdosgames.com/files/source/dogs_src.zip) - Turbo Pascal + +### Commercial games with published source code + +- [Abuse](https://www.classicdosgames.com/files/source/abuse_pd.tgz) +- [Beneath a Steel Sky](https://www.classicdosgames.com/files/source/sky-source.zip) - Assembly +- [Catacomb](https://github.com/CatacombGames/Catacomb) - Turbo Pascal +- [Catacomb 3D](https://github.com/CatacombGames/Catacomb3D) +- [Commander Keen in Keen Dreams](https://github.com/keendreams/keen) +- [Descent](https://github.com/videogamepreservation/descent) +- [Descent II](https://github.com/videogamepreservation/descent2) +- [Doom](https://github.com/id-Software/DOOM) + - The DOS-specific code for Doom could not be published because of a + dependency to the licensed DMX sound library, hence why it's cleaned up and + only the Linux source is there. However, the Heretic and Hexen projects contain + the original DOS code in a way where DMX-related code is removed. +- [Duke Nukem 3D](https://www.classicdosgames.com/files/source/duke3dsource.zip) +- [Heretic](https://github.com/OpenSourcedGames/Heretic) + - Original [SourceForge link](https://sourceforge.net/projects/heretic/files/) for Heretic/Hexen +- [Hexen](https://github.com/OpenSourcedGames/Hexen) + - Original [SourceForge link](https://sourceforge.net/projects/heretic/files/) for Heretic/Hexen +- [Hovertank 3D](https://github.com/FlatRockSoft/Hovertank3D) +- [Quake](https://github.com/id-Software/Quake) +- [Rise of the Triad](https://github.com/videogamepreservation/rott) +- [Wolfenstein 3D](https://github.com/id-Software/wolf3d) + + +## License + +[![CC0](https://mirrors.creativecommons.org/presskit/buttons/88x31/svg/cc-zero.svg)](https://creativecommons.org/publicdomain/zero/1.0) + +To the extent possible under law, Bálint Kiss has waived all copyright and +related or neighboring rights to this work.