{"id":13835994,"url":"https://github.com/vkorbes/vdos","last_synced_at":"2026-01-12T11:04:28.273Z","repository":{"id":134342643,"uuid":"524707626","full_name":"vkorbes/vdos","owner":"vkorbes","description":"V's notes on MS-DOS programming.","archived":false,"fork":false,"pushed_at":"2022-09-26T01:41:39.000Z","size":187,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-02-17T06:33:15.153Z","etag":null,"topics":["assembly","assembly-x86","ibm-pc","ms-dos","retrocomputing"],"latest_commit_sha":null,"homepage":"","language":"Assembly","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vkorbes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2022-08-14T15:23:00.000Z","updated_at":"2023-08-24T20:05:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"3d97202f-9019-47b6-86af-910f8b0b1d56","html_url":"https://github.com/vkorbes/vdos","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/vkorbes/vdos","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vkorbes%2Fvdos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vkorbes%2Fvdos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vkorbes%2Fvdos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vkorbes%2Fvdos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vkorbes","download_url":"https://codeload.github.com/vkorbes/vdos/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vkorbes%2Fvdos/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264585372,"owners_count":23632646,"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":["assembly","assembly-x86","ibm-pc","ms-dos","retrocomputing"],"created_at":"2024-08-04T15:00:32.015Z","updated_at":"2026-01-12T11:04:28.265Z","avatar_url":"https://github.com/vkorbes.png","language":"Assembly","funding_links":[],"categories":["Assembly"],"sub_categories":[],"readme":"\u003e If I had a time machine that could send source code back in time, and I sent it to a competant developer 20 years ago, would they be able to compile it and run it? If the answer is yes, then that means it  already has 20 years of future-proofing built into it.\n\n# vDOS\n\nV's notes on MS-DOS programming.\n\n# DOSBox Setup\n\nInstall (not tested): `brew install dosbox`\n\nGenerate config file: `config -writeconf file.conf`\n\nFN+F10 unlocks the mouse!\n\nchanges to config:\n\nSee the top of `DOSBox.conf` for how to configure separate \"environments.\" Main changes for all environments are:\n```\n[sdl]\nfullresolution=desktop\naspect=true\nautolock=false\n\n...\n\n[autoexec]\nmount c ~/code/vdos/\nc:\n```\n\nYou can run it on the command line with: `/Applications/dosbox.app/Contents/MacOS/DOSBox -conf DOSBox.conf`\n\nAnd use `run.sh` to pass start-up commands, e.g.: `./run.sh -c \"mount a floppies/tc201\"`\n\n# QEMU Setup\n\n- [MS-DOS 6.22 (WinWorld)](https://winworldpc.com/product/ms-dos/622)\n- [Installing MS-DOS on Qemu](https://gunkies.org/wiki/Installing_MS-DOS_on_Qemu)\n- [How To Change The Floppy Image Of Qemu?](https://superuser.com/questions/97491/how-to-change-the-floppy-image-of-qemu)\n- Start with: `qemu-system-i386 -hda msdos.disk -m 64 -soundhw sb16,adlib,pcspk\n`\n\nTo-do:\n- Read this later for network: https://virtuallyfun.com/wordpress/category/install/\n- And shared drives: https://superuser.com/questions/1630317/how-to-transfer-files-from-host-to-dos-qemu-c-drive\n\n# VSCode Setup\n\nSo that files created with VSCode are compatible with MS-DOS, `.vscode/settings.json` has the following config:\n\n```\n{\n    \"files.eol\": \"\\r\\n\" // CRLF line endings\n}\n```\n\n# Turbo C 2.01\n\n- [Description page](https://web.archive.org/web/20060516050946/http://community.borland.com/article/0,1410,20841,00.html) (archive.org)\n- [Download link](https://web.archive.org/web/20060516050946/http://community.borland.com/article/images/20841/tc201.zip) (archive.org)\n- To install:\n  - Unzip all disks to the same folder\n  - On DOSBox: `mount a [folder]`\n\n# Utilities\n\nFor DOSBox, some utilities were copied from FreeDOS:\n- edit.exe\n- exe2bin.com\n- debug.com\n\nThey should be present by default on vanilla (non-DOSBox) versions of MS-DOS.\n\n`ls` replacement `ls.bat`:\n```\n`dir/w/p`\n```\n\n`compile.bat` for Turbo C:\n```\nrescan\ntcc -ml %1\n```\n\nFor BAT files in general:\n- `dir \u0026 echo foo` runs two commands\n- `dir \u0026\u0026 echo foo` runs the second only runs if the first succeeds\n\n\n# Books\n\n## Assembly Primer for the IBM PC \u0026 XT\n\nNotes on the material plus example code transcription at [`data/assembly-primer-ibm-pc/`](books/assembly-primer-ibm-pc/README.md).\n\n## Advanced MS-DOS, Ray Duncan\n\nRequires:\n- [Microsoft Macro Assembler 4](https://winworldpc.com/product/macro-assembler/4x)\n- [Microsoft C Compiler 3](https://winworldpc.com/product/microsoft-c-c/3x)\n\n## Advanced MS-DOS, Ray Duncan - 2nd Edition\n\nRequires:\n- Microsoft Macro Assembler 5.1\n\n## Assembly Language Step-by-Step: Programming with DOS and Linux, Second Edition\n\n- [Download link](http://www.staroceans.org/kernel-and-driver/Assembly%20Language%20Step-by-Step%20Programming%20with%20DOS%20and%20Linux%202nd.pdf)\n\n## Programming with 64-Bit ARM Assembly Language, Stephen Smith\n\n- Author's blog about using the book for M1 macs: [Apple M1 Assembly Language Hello World](https://smist08.wordpress.com/2021/01/08/apple-m1-assembly-language-hello-world/).\n- Code from the book ported to M1/macOS: [HelloSilicon](https://github.com/below/HelloSilicon).\n\n## Graphics Primer For The IBM PC\n\n- Basic: \n  - https://winworldpc.com/product/microsoft-basic/compiler-5x\n  - https://winworldpc.com/product/gw-basic/3x\n    - https://devblogs.microsoft.com/commandline/microsoft-open-sources-gw-basic/\n    - https://github.com/microsoft/GW-BASIC\n\n# Links (untriaged)\n\n- https://project-awesome.org/balintkissdev/awesome-dos\n- Microsoft KnowledgeBase Archive: https://github.com/jeffpar/kbarchive\n- code from 'programming boot sector games': https://github.com/nanochess/book8088\n\n## old software\n\n- winworld: https://winworldpc.com\n- vetusware: https://vetusware.com\n- phatcode, books and tools: http://www.phatcode.net\n- doshaven: http://www.doshaven.eu/programming-tools/\n\n## emulators\n\n- pcjs: https://www.pcjs.org | https://github.com/jeffpar/pcjs\n- DOS emulator for 68k: http://macintoshgarden.org/apps/softpc-31\n- dosbox: https://www.dosbox.com/\n- 8086tiny: https://github.com/adriancable/8086tiny\n- Emulating Windows XP x86 under M1 Mac via UTM \u0026 QEMU: https://tinyapps.org/blog/202105220715_m1_mac_emulate_x86.html\n- dosbox change color: https://stackoverflow.com/questions/36219498/change-the-background-color-of-dosbox-console-when-executing-a-tasm-program\n\n## assembly\n\n- zen of assembly: https://github.com/jagregory/abrash-zen-of-asm\n- [!] The Art of ASSEMBLY LANGUAGE PROGRAMMING: http://www.phatcode.net/res/223/files/html/toc.html\n- masm 6.1 manual: https://www.mikrocontroller.net/attachment/450367/MASM61PROGUIDE.pdf\n- dos coding with watcom: http://nuclear.mutantstargoat.com/articles/retrocoding/dos01-setup/\n- some code dos in virtualbox in macos: https://github.com/skissane/dos-assembly\n- assembly language step by step\n  - 2nd edition, DOS and linux: http://www.staroceans.org/kernel-and-driver/Assembly%20Language%20Step-by-Step%20Programming%20with%20DOS%20and%20Linux%2C%202ed%20(Wiley%2C%202000).pdf\n  - 3rd edition, linux: http://www.staroceans.org/kernel-and-driver/Assembly%20Language%20Step-By-Step%20-%20Programming%20with%20Linux%2C%203rd%20edition%20(Wiley%2C%202009%2C%200470497025).pdf\n  - boot our own kernels on Apple Silicon https://www.youtube.com/watch?app=desktop\u0026v=d5s9fYfvzmY\u0026t=12260s\n  - How a Go Program Compiles down to Machine Code: https://getstream.io/blog/how-a-go-program-compiles-down-to-machine-code/\n\n- x86 and amd64 instruction reference: https://www.felixcloutier.com/x86/index.html\n\n- x86 is an octal machine: https://gist.github.com/seanjensengrey/f971c20d05d4d0efc0781f2f3c0353da \n  - extra links: https://news.ycombinator.com/item?id=30409100\n\n## arm64\n\n - ARM64 Assembly Speedrun: https://dev.to/taw/100-languages-speedrun-episode-46-arm64-assembly-1lfk\n  - The AArch64 processor (aka arm64), part 1: Introduction: https://devblogs.microsoft.com/oldnewthing/20220726-00/?p=106898\n  \n\n## msdos\n\n- msdos 6 user guide: https://archive.org/details/microsoft-ms-dos-6/page/n3/mode/2up\n- freedos embedded with qemu: https://opensource.com/article/21/6/freedos-embedded-system\n- qemu dos docker: https://github.com/jgoerzen/docker-qemu-dos\n- source code: https://github.com/microsoft/MS-DOS\n- ibm bios source code: https://pcdosretro.github.io\n- [MS-DOS 6.22 Bootable ISO](https://archive.org/details/ms-dos-6.22_dvd) (Didn't work for QEMU!)\n\n- minesweeper game: https://github.com/ArqueologiaDigital/Mines\n  - msdos version: https://github.com/ArqueologiaDigital/Mines/tree/main/platforms/msdos\n\n## raycasting project\n\n- lodev raycasting: https://lodev.org/cgtutor/raycasting.html\n- golang sdl2: https://github.com/veandco/go-sdl2-examples/blob/29a79b36df6da7ecbcb99360a99f9e71a3cf6413/examples/render/render.go\n- c sdl2: https://www.udemy.com/course/creating-a-chip-8-emulator-in-c/learn/lecture/18290062?start=0#overview\n- peterhellberg port: \n  - https://github.com/peterhellberg/pixel-experiments/blob/master/raycaster/raycaster-untextured.go\n  - https://gist.github.com/peterhellberg/835eccabf95800555120cc8f0c9e16c2\n\n## graphics programming\n\n- [!] brackeen vga programming in c: http://www.brackeen.com/vga/\n\n## wasm\n\n- wasm gfx: http://cliffle.com/blog/bare-metal-wasm/\n- wasm go: https://blog.suborbital.dev/foundations-wasm-in-golang-is-fantastic\n- rust wasm 3d: https://www.youtube.com/watch?v=p7DtoeuDT5Y\n\n## windows\n\n- win98 dev with qemu: https://nullprogram.com/blog/2018/04/13/\n  - installer: https://archive.org/details/win98se_201607 (need serial)\n  - borland c++ 5.02: https://archive.org/details/BorlandC5.02\n- Portable C and C++ Development Kit for x64 Windows: https://github.com/skeeto/w64devkit\n- A guide to Windows application development using w64devkit: https://nullprogram.com/blog/2021/03/11/\n- How To Run Any Windows CLI App in a Linux Docker Container: https://betterprogramming.pub/how-to-run-any-windows-cli-app-in-a-linux-docker-container-318cd49bdd25\n\n- 3.11 online\n  - Connecting to the WWW With Windows for Workgroups 3.11 https://christianliebel.com/2016/06/connecting-internet-windows-workgroups-3-11/\n  - Browsing the Internet on a 1993 Windows 3.11 All-In-One PC https://www.linuxscrew.com/raspberry-pi-web-rendering-proxy\n  - BUILDING A NEW WIN 3.1 APP IN 2019 PART 1: SLACK CLIENT https://yeokhengmeng.com/2019/12/building-a-new-win-3-1-app-in-2019-part-1-slack-client/\n\n## c\n\n- beej's guide to c: https://beej.us/guide/bgc/\n\n## games\n\n- tfx combat flight simulator: https://en.wikipedia.org/wiki/TFX_(video_game)\n- dosgames listing 3d games: https://dosgames.com/listing.php?sortby=ratingdesc\u0026sterms2=\u0026cat=3d-shooting\u0026tag=\u0026license=all\u0026year=all\u0026filesize=all\u0026developer=all\u0026publisher=all\n- What were the best 3d polygon graphics in a dos game? (reddit): https://www.reddit.com/r/dosgaming/comments/f5fsuy/comment/fhzi0up/?utm_source=reddit\u0026utm_medium=web2x\u0026context=3\n\n- id software games:\n  - https://github.com/id-Software/wolf3d\n  - https://github.com/id-Software/DOOM\n  - https://github.com/id-Software/Quake\n\n- someone's wolfenstein 3d in asm using sdl2: https://github.com/Antonito/wolfASM\n- Raycasting-Engine-MASM-32: https://github.com/ilay122/Raycasting-Engine-MASM-32\n\n\n## other\n\n- vintage mac books: https://vintageapple.org/macprogramming/\n- game engine book recs: https://www.reddit.com/r/gamedev/comments/2c5d3u/best_books_about_game_engine_design/\n\n\n\n\n\nhttps://electronics.stackexchange.com/questions/11386/where-can-i-find-an-8086-chip","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvkorbes%2Fvdos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvkorbes%2Fvdos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvkorbes%2Fvdos/lists"}