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.
V's notes on MS-DOS programming.
Install (not tested): brew install dosbox
Generate config file: config -writeconf file.conf
FN+F10 unlocks the mouse!
changes to config:
See the top of DOSBox.conf
for how to configure separate "environments." Main changes for all environments are:
[sdl]
fullresolution=desktop
aspect=true
autolock=false
...
[autoexec]
mount c ~/code/vdos/
c:
You can run it on the command line with: /Applications/dosbox.app/Contents/MacOS/DOSBox -conf DOSBox.conf
And use run.sh
to pass start-up commands, e.g.: ./run.sh -c "mount a floppies/tc201"
- MS-DOS 6.22 (WinWorld)
- Installing MS-DOS on Qemu
- How To Change The Floppy Image Of Qemu?
- Start with:
qemu-system-i386 -hda msdos.disk -m 64 -soundhw sb16,adlib,pcspk
To-do:
- Read this later for network: https://virtuallyfun.com/wordpress/category/install/
- And shared drives: https://superuser.com/questions/1630317/how-to-transfer-files-from-host-to-dos-qemu-c-drive
So that files created with VSCode are compatible with MS-DOS, .vscode/settings.json
has the following config:
{
"files.eol": "\r\n" // CRLF line endings
}
- Description page (archive.org)
- Download link (archive.org)
- To install:
- Unzip all disks to the same folder
- On DOSBox:
mount a [folder]
For DOSBox, some utilities were copied from FreeDOS:
- edit.exe
- exe2bin.com
- debug.com
They should be present by default on vanilla (non-DOSBox) versions of MS-DOS.
ls
replacement ls.bat
:
`dir/w/p`
compile.bat
for Turbo C:
rescan
tcc -ml %1
For BAT files in general:
dir & echo foo
runs two commandsdir && echo foo
runs the second only runs if the first succeeds
Notes on the material plus example code transcription at data/assembly-primer-ibm-pc/
.
Requires:
Requires:
- Microsoft Macro Assembler 5.1
- Author's blog about using the book for M1 macs: Apple M1 Assembly Language Hello World.
- Code from the book ported to M1/macOS: HelloSilicon.
- Basic:
- https://project-awesome.org/balintkissdev/awesome-dos
- Microsoft KnowledgeBase Archive: https://github.com/jeffpar/kbarchive
- code from 'programming boot sector games': https://github.com/nanochess/book8088
- winworld: https://winworldpc.com
- vetusware: https://vetusware.com
- phatcode, books and tools: http://www.phatcode.net
- doshaven: http://www.doshaven.eu/programming-tools/
- pcjs: https://www.pcjs.org | https://github.com/jeffpar/pcjs
- DOS emulator for 68k: http://macintoshgarden.org/apps/softpc-31
- dosbox: https://www.dosbox.com/
- 8086tiny: https://github.com/adriancable/8086tiny
- Emulating Windows XP x86 under M1 Mac via UTM & QEMU: https://tinyapps.org/blog/202105220715_m1_mac_emulate_x86.html
- dosbox change color: https://stackoverflow.com/questions/36219498/change-the-background-color-of-dosbox-console-when-executing-a-tasm-program
-
zen of assembly: https://github.com/jagregory/abrash-zen-of-asm
-
[!] The Art of ASSEMBLY LANGUAGE PROGRAMMING: http://www.phatcode.net/res/223/files/html/toc.html
-
masm 6.1 manual: https://www.mikrocontroller.net/attachment/450367/MASM61PROGUIDE.pdf
-
dos coding with watcom: http://nuclear.mutantstargoat.com/articles/retrocoding/dos01-setup/
-
some code dos in virtualbox in macos: https://github.com/skissane/dos-assembly
-
assembly language step by step
- 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
- 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
- boot our own kernels on Apple Silicon https://www.youtube.com/watch?app=desktop&v=d5s9fYfvzmY&t=12260s
- How a Go Program Compiles down to Machine Code: https://getstream.io/blog/how-a-go-program-compiles-down-to-machine-code/
-
x86 and amd64 instruction reference: https://www.felixcloutier.com/x86/index.html
-
x86 is an octal machine: https://gist.github.com/seanjensengrey/f971c20d05d4d0efc0781f2f3c0353da
- extra links: https://news.ycombinator.com/item?id=30409100
- ARM64 Assembly Speedrun: https://dev.to/taw/100-languages-speedrun-episode-46-arm64-assembly-1lfk
- The AArch64 processor (aka arm64), part 1: Introduction: https://devblogs.microsoft.com/oldnewthing/20220726-00/?p=106898
-
msdos 6 user guide: https://archive.org/details/microsoft-ms-dos-6/page/n3/mode/2up
-
freedos embedded with qemu: https://opensource.com/article/21/6/freedos-embedded-system
-
qemu dos docker: https://github.com/jgoerzen/docker-qemu-dos
-
source code: https://github.com/microsoft/MS-DOS
-
ibm bios source code: https://pcdosretro.github.io
-
MS-DOS 6.22 Bootable ISO (Didn't work for QEMU!)
-
minesweeper game: https://github.com/ArqueologiaDigital/Mines
- lodev raycasting: https://lodev.org/cgtutor/raycasting.html
- golang sdl2: https://github.com/veandco/go-sdl2-examples/blob/29a79b36df6da7ecbcb99360a99f9e71a3cf6413/examples/render/render.go
- c sdl2: https://www.udemy.com/course/creating-a-chip-8-emulator-in-c/learn/lecture/18290062?start=0#overview
- peterhellberg port:
- [!] brackeen vga programming in c: http://www.brackeen.com/vga/
- wasm gfx: http://cliffle.com/blog/bare-metal-wasm/
- wasm go: https://blog.suborbital.dev/foundations-wasm-in-golang-is-fantastic
- rust wasm 3d: https://www.youtube.com/watch?v=p7DtoeuDT5Y
-
win98 dev with qemu: https://nullprogram.com/blog/2018/04/13/
- installer: https://archive.org/details/win98se_201607 (need serial)
- borland c++ 5.02: https://archive.org/details/BorlandC5.02
-
Portable C and C++ Development Kit for x64 Windows: https://github.com/skeeto/w64devkit
-
A guide to Windows application development using w64devkit: https://nullprogram.com/blog/2021/03/11/
-
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
-
3.11 online
- Connecting to the WWW With Windows for Workgroups 3.11 https://christianliebel.com/2016/06/connecting-internet-windows-workgroups-3-11/
- Browsing the Internet on a 1993 Windows 3.11 All-In-One PC https://www.linuxscrew.com/raspberry-pi-web-rendering-proxy
- 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/
- beej's guide to c: https://beej.us/guide/bgc/
-
tfx combat flight simulator: https://en.wikipedia.org/wiki/TFX_(video_game)
-
dosgames listing 3d games: https://dosgames.com/listing.php?sortby=ratingdesc&sterms2=&cat=3d-shooting&tag=&license=all&year=all&filesize=all&developer=all&publisher=all
-
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&utm_medium=web2x&context=3
-
id software games:
-
someone's wolfenstein 3d in asm using sdl2: https://github.com/Antonito/wolfASM
-
Raycasting-Engine-MASM-32: https://github.com/ilay122/Raycasting-Engine-MASM-32
- vintage mac books: https://vintageapple.org/macprogramming/
- game engine book recs: https://www.reddit.com/r/gamedev/comments/2c5d3u/best_books_about_game_engine_design/
https://electronics.stackexchange.com/questions/11386/where-can-i-find-an-8086-chip