forked from nanochess/tinyasm
-
Notifications
You must be signed in to change notification settings - Fork 0
Tiny assembler for 8086/8088, able to run over DOS for 8086/8088 machines.
License
LongJohnCoder/tinyasm
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
,--------.,--. '--. .--'`--',--,--, ,--. ,--.,--,--. ,---. ,--,--,--. | | ,--.| \ \ ' /' ,-. |( .-' | | | | | || || | \ ' \ '-' |.-' `)| | | | `--' `--'`--''--'.-' / `--`--'`----' `--`--`--' `---' Tinyasm 8086/8088 assembler by Oscar Toledo G. Oct/02/2019 https://nanochess.org/ https://github.com/nanochess/tinyasm Tinyasm is a small assembler for 8086/8088 programs, and it can work over a real PC XT machine. It requires at least 128K of memory, maybe more. It came to my attention that several people wanted to assemble my boot sector games over real PC XT machines. Unfortunately, nasm doesn't run over 8086/8088 processors, and I couldn't find a compatible assembler! So what does a programmer when doesn't find the required tool? Start to code his own tool! It took me 3 days to start from zero and get a working assembler compatible with the nasm syntax, plus all the directives I've used in my boot sector programs. Using the same command line syntax as nasm: tinyasm -f bin rogue.asm -o rogue.img -l rogue.lst There is also the -d option for define labels: -dCOM_FILE -dCOM_FILE=1 >> DIFFERENCES BETWEEN TINYASM AND NASM >> The main difference is that Tinyasm won't insert long jumps for miscalculated conditional jumps. There is only support for 8086/8088 processors, and only are implemented the following directives: %ifdef %ifndef %if %else %endif times use16 cpu 8086 equ db dw >> DEBUG NOTES << If you're building boot sector games with Tinyasm, then you need the following info to load the game inside the boot sector of a floppy disk. You need to have DEBUG in your disk (included with the DOS disks). Do the following (replace filename as desired): DEBUG ROGUE.IMG Extract now your working disk and insert a blank one !!! A300 MOV AX,0301 MOV BX,0100 MOV CX,1 MOV DX,0 INT 13 JB 300 INT 20 RIP 300 G Now the boot sector is replaced with the program!!! >> BUILDING THE ASSEMBLER >> You can build your own executable for Tinyasm using the C compiler Desmet C, version 3.1h available graciously at: http://www.desmet-c.com/ The compiler has many bugs and limitations, but it works for tinyasm purposes, and it's freely available. Supposedly it should support ANSI C, but I couldn't fit a standard ANSI C function definition, so I had to code again in C K&R for the first time in maybe 20 years! You can find the "e.bat" file to assemble the compiler. I provide an executable on the Git to save you some time. There are test cases in the 'test' subdirectory that are runnable with the "test.bat" file. There is a test for the full instruction set of 8086/8088 (the same listing that appears in my book Programming Boot Sector Games). The test cases come from my own programs: https://github.com/nanochess/fbird https://github.com/nanochess/invaders https://github.com/nanochess/pillman https://github.com/nanochess/bootBASIC https://github.com/nanochess/bootOS https://github.com/nanochess/bootRogue >> ATTENTION << Would you like to learn 8086/8088 programming? Then you must get my new book Programming Boot Sector Games including a 8086/8088 crash course! Now available from Lulu: Soft-cover http://www.lulu.com/shop/oscar-toledo-gutierrez/programming-boot-sector-games/paperback/product-24188564.html Hard-cover http://www.lulu.com/shop/oscar-toledo-gutierrez/programming-boot-sector-games/hardcover/product-24188530.html eBook https://nanochess.org/store.html These are some of the example programs documented profusely in the book: * Guess the number. * Tic-Tac-Toe game. * Text graphics. * Mandelbrot set. * F-Bird game. * Invaders game. * Pillman game. * Toledo Atomchess. * bootBASIC language.
About
Tiny assembler for 8086/8088, able to run over DOS for 8086/8088 machines.
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published
Languages
- Assembly 88.1%
- C 11.8%
- Batchfile 0.1%