Masm32 SDK description, downloads and other helpful links
Message to All Guests

Main Menu

My take on MasmBasic

Started by NoCforMe, September 01, 2022, 10:28:55 AM

Previous topic - Next topic


If I might be excused for posting here as an "outsider", because I'm not a MasmBasic user, here are my thoughts concerning this ... not sure whether to call it a utility, a facility, a programming environment or what. Anyhow:

First of all, even though I've never used it, I've seen enough of Jochen's postings on it to be very, very impressed by it simply as a programming project in and of itself. It's quite an edifice, with seemingly endless functionality. It's obviously a useful tool, since you can use it to construct actual Win32 programs that do all sorts of things. And on top of everything, it's just idiosyncratic enough to show some endearing quirks (could you ever imagine a Micro$oft IDE that looks like MasmBasic?). So that's all good.

But I'll probably never use it. First of all, despite it being able to construct programs in a very few lines of code, it still has a somewhat steep learning curve: what are all those bells and whistles, anyhow? All those mysterious "$"-named functions and macros and things that magically transform into other things. They're documented, apparently pretty completely, but I've looked through the docs and I still find it hard to actually find information about what, specifically, all the arguments to "Deb" do.

But more than anything, I'm a bit put off by its being kind of an automated toaster kind of ... programming environment. One where so much of what actually happens in the program goes on "behind the scenes" (which, after all, is what the original BASIC was all about, insulating the programmer from all those messy details). I can see how people would want to be spared all that stuff, but I guess I actually like grappling with those messy details.

It makes me think about where this kind of programming might be headed in the future. I can imagine a day not too far from now when a "program" might be constructed by the following (assuming that "programs" in the future aren't strings of DNA or nanoparticles injected directly into our cerebral cortex or some nightmare scenario like that):

Make a program with a window, oh, about yay by yay [indicates size by moving hands], plain Win512 executable.
I want it to take user input of a table of interstellar travel times and outputs a timetable.
Um, sort it by galaxy. And give me estimated fuel requirements.
Oh, and Siri, let me use it on my WristPad.
OK, make it so.

And bing! out pops a program. Complete with source code in color-tagged format.

I don't know. I'm a hobbyist programmer, not a production code monkey, so I do what gives me pleasure. This wouldn't do that.

Anyhow, curious to see any reactions to this. Like I said, I do admire JJ's creation. Just not my cuppa tea.
Assembly language programming should be fun. That's why I do it.


Hi David,

Thanks for your very kind words. I fully understand your point of view.

MasmBasic is a hobby coder's fun project. It will never become a commercial project or a real alternative to one of the many BASIC dialects out there. However, my fun factor consists in demonstrating that many things can be made simpler, much simpler - and therefore sometimes I poke around and provoke people ;-)

> I still find it hard to actually find information about what, specifically, all the arguments to "Deb" do.

The deb macro has the following arguments:

deb 1, "The first loop", ecx, $esi  ; the number: 1...3 for MsgBoxes that you can cancel individually, 4=print to console
deb 4, "The first loop", ecx, $esi  ; 4=print to console, descriptive text
deb 4, "The first loop", ecx, $esi  ; 4=print to console, descriptive text, variables to show
deb 4, "The first loop", ecx, $esi  ; 4=print to console, descriptive text, ecx as number, esi as string

The variables can be almost everything. Just try it...

Attached is a Window template. It is pure Masm32 SDK code, unless you change the first line to if 0 :cool:


include \masm32\MasmBasic\Res\MbGui.asm
        MakeFont hEmo, "Segoe UI Emoji", Height:-96, Weight:FW_SEMIBOLD
        GuiControl someStatic, "static", "🔍🔍🔍", font hEmo