r***@gmail.com
2019-10-30 11:06:13 UTC
Hi, pal,
It's somewhat short and incomplete, though.
JWasm is much better, especially for powerful MASMv6 syntax.
* https://github.com/Baron-von-Riedesel/JWasm/tree/master/bin
* https://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/devel/asm/jwasm/
* http://www.terraspace.co.uk/uasm.html
* http://www.plantation-productions.com/Webster/www.artofasm.com/index.html
(Use DOSEMU, if you can!)
One guy (decades ago) wrote a Space Invaders clone for DOS
(8086, VGA, .COM) in assembly. I've written a lot of Sed scripts
to convert it to various assemblers (NASM, WASM, JWasm, etc. etc.).
That might be (more??) instructive for you here.
* http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.2/repos/pkg-html/psrinvad.html
JWasm worked with almost no changes nor linker! But anyways, here's
how I linked a modified copy with weaker WASM (and yes, it uses
"END BEGIN" as main):
wasm -zq inv-wat.asm
wlink op q format dos com file inv-wat.obj
if not exist inv-wat.com warplink /c inv-wat >NUL
(WarpLink is DOS only, yet my .BAT/sed combo works in DOS or Windows.
Hence the use of WLINK, which is frankly overkill. For .COM, you
usually don't want to mess with linkers at all. JWasm can output
.COM directly, as can many other assemblers. Unless you're using
third-party .OBJ or .LIB, it's easier to not use a linker at all.)
Syntax can be a nightmare, especially for x86 assembly. JWasm can
handle MASMv5 and (much more complicated) v6. It's an improved
WASM, literally, much better at two-pass handling. WASM also
partially supports -zcm=tasm for Ideal mode. Something like
(shareware) A86 can only halfway support older MASMv5.
LazyAsm (LZASM) basically has full Ideal support (only!).
In short, there are many assemblers, and you definitely have to choose
wisely. Some are easier to use, more compatible, faster, free-r, or
better for debugging.
Having said that, I would recommend a HLL for such game programming.
Assembly is still good and fun, but HLLs are better supported, and
you won't have to reinvent the wheel. Just saying, there are other
cool games, too!
* http://ftp.lanet.lv/ftp/mirror/x2ftp/msdos/programming/gamesrc/00index.html
(e.g. Boboli [C, DJGPP] or the original .ZIP of PSR Invaders)
* http://ibiblio.org/pub/linux/games/arcade/invaders/
(Xinvaders 3D: C, DJGPP/Allegro)
* https://thandor.net/article/34
* https://thandor.net/article/37
(Bloxinies: Turbo Pascal)
* http://games.phatcode.net/dumpquery.php?section=Title&query=Germs
(Germs [Dr. Mario clone]: QBasic)
* https://wiki.freepascal.org/DOS
("FPC demo programs such as Fpctris and Samegame work in all supported
memory models.")
* http://fabiensanglard.net/gebb/
(PDFs about Wolf3D and Doom internals)
* https://github.com/TobiasKarnat/Wolf4GW
(Wolf3D: converted to C++ for OpenWatcom)
* https://www.vogons.org/viewtopic.php?f=24&t=40857
([Doom] MBF 2.04: C, DJGPP/Allegro)
* https://freedoom.github.io/
(FreeDoom, BSD-licensed levels ... new release just last week!)
I am working my way through this 16bit assembly tutorial,
https://github.com/adamsmasher/sokobanDOS/tree/master/lesson2
I've briefly seen this tutorial but not heavily delved into it.https://github.com/adamsmasher/sokobanDOS/tree/master/lesson2
It's somewhat short and incomplete, though.
except that I'm using the OpenWatcom assembler, wasm.
As far as I know, I've translated the nasm syntax to wasm correctly;
which is incidentally pretty similar to masm.
Any huge reason (debugging??) to prefer WASM over NASM? Honestly,As far as I know, I've translated the nasm syntax to wasm correctly;
which is incidentally pretty similar to masm.
JWasm is much better, especially for powerful MASMv6 syntax.
* https://github.com/Baron-von-Riedesel/JWasm/tree/master/bin
* https://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/devel/asm/jwasm/
* http://www.terraspace.co.uk/uasm.html
* http://www.plantation-productions.com/Webster/www.artofasm.com/index.html
And from reading the code, I'm fairly certain *it should work* but doesn't.
When I run it in DOSBox-X, it doesn't quit when I press escape.
wasm dostut2.asm
wlink sys dos com file dostut2.obj
and then running it in DOSBox-X. I'm fairly certain the problem is with
my code, and not in DOSBox-X.
Okay, so you're cross-assembling atop a foreign host OS.When I run it in DOSBox-X, it doesn't quit when I press escape.
wasm dostut2.asm
wlink sys dos com file dostut2.obj
and then running it in DOSBox-X. I'm fairly certain the problem is with
my code, and not in DOSBox-X.
(Use DOSEMU, if you can!)
One guy (decades ago) wrote a Space Invaders clone for DOS
(8086, VGA, .COM) in assembly. I've written a lot of Sed scripts
to convert it to various assemblers (NASM, WASM, JWasm, etc. etc.).
That might be (more??) instructive for you here.
* http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.2/repos/pkg-html/psrinvad.html
JWasm worked with almost no changes nor linker! But anyways, here's
how I linked a modified copy with weaker WASM (and yes, it uses
"END BEGIN" as main):
wasm -zq inv-wat.asm
wlink op q format dos com file inv-wat.obj
if not exist inv-wat.com warplink /c inv-wat >NUL
(WarpLink is DOS only, yet my .BAT/sed combo works in DOS or Windows.
Hence the use of WLINK, which is frankly overkill. For .COM, you
usually don't want to mess with linkers at all. JWasm can output
.COM directly, as can many other assemblers. Unless you're using
third-party .OBJ or .LIB, it's easier to not use a linker at all.)
Syntax can be a nightmare, especially for x86 assembly. JWasm can
handle MASMv5 and (much more complicated) v6. It's an improved
WASM, literally, much better at two-pass handling. WASM also
partially supports -zcm=tasm for Ideal mode. Something like
(shareware) A86 can only halfway support older MASMv5.
LazyAsm (LZASM) basically has full Ideal support (only!).
In short, there are many assemblers, and you definitely have to choose
wisely. Some are easier to use, more compatible, faster, free-r, or
better for debugging.
Having said that, I would recommend a HLL for such game programming.
Assembly is still good and fun, but HLLs are better supported, and
you won't have to reinvent the wheel. Just saying, there are other
cool games, too!
* http://ftp.lanet.lv/ftp/mirror/x2ftp/msdos/programming/gamesrc/00index.html
(e.g. Boboli [C, DJGPP] or the original .ZIP of PSR Invaders)
* http://ibiblio.org/pub/linux/games/arcade/invaders/
(Xinvaders 3D: C, DJGPP/Allegro)
* https://thandor.net/article/34
* https://thandor.net/article/37
(Bloxinies: Turbo Pascal)
* http://games.phatcode.net/dumpquery.php?section=Title&query=Germs
(Germs [Dr. Mario clone]: QBasic)
* https://wiki.freepascal.org/DOS
("FPC demo programs such as Fpctris and Samegame work in all supported
memory models.")
* http://fabiensanglard.net/gebb/
(PDFs about Wolf3D and Doom internals)
* https://github.com/TobiasKarnat/Wolf4GW
(Wolf3D: converted to C++ for OpenWatcom)
* https://www.vogons.org/viewtopic.php?f=24&t=40857
([Doom] MBF 2.04: C, DJGPP/Allegro)
* https://freedoom.github.io/
(FreeDoom, BSD-licensed levels ... new release just last week!)