"mbbrutman" wrote:
> Is a GUI in BASIC on an older machine even feasible?
> If you are talking about a specific program using a graphical user
> interface, then sure, there were lots of programs done in BASIC that
> used a GUI. Any drawing program would count.
I guess if they were going for this approach, writing a menu driven GUI with a simple set of programs could be the go, with a Text Editor, Simple Program for Doodling Graphics (lines & Pixels), Printing Program & a game of some sort. Files could be saved & loaded. BASIC maybe capable of doing.
> If you are talking about a general purpose operating environment that
> is driven by a GUI, that implies the following:
> - The operating environment can launch other programs.
> - The operating environment provides library routines for those other
> programs to use.
> I think that even with these two modest requirements, a GUI operating
> environment done in BASIC is tough. I'm not talking about things like
> multi-tasking, events, or anything like that .. I'm just talking about
> providing consistent look and feel using a GUI.
Oh yeah, this is another thing in itself. I think you could get away with it on some BASICs but your more or less moving into the QBASIC or PowerBASIC scale. These BASICs would move you to something which looks more like Turbo Pascal.
Another 8086 Compilable BASIC to look at is MoonRock, you can even get your Inline Assembly into it. This BASIC looks a little bit like SmallC though! It maybe still on the 'net (which was how I found it), but unfortunately I haven't seen much to go with this programming language.
> To do this in interpreted BASIC you'd have to restrict yourself to other
> BASIC programs that include the essential parts of the GUI in their
> code. This is because normal interpreted BASIC on an IBM clone
> doesn't do overlays, libraries, etc. Unless you start playing tricks with
> assembly language and managing memory to keep these things
> resident.
> The other major problem with interpreted BASIC is the speed.
Many people have said this, yet I have trouble comming to grips with it. In my trials though I've been testing Compiled TP programs with Locomotive BASIC on my Amstrad CPC (sure it's not GWBASIC or QBASIC), but Locomotive BASIC used to get hammered by Computer Mags Vs. Assembly. Sure if you do Sprites, you write it in Assembly (then make it an RSX - to access it from BASIC!)
In my trials a compiled TP 3 program was still slow - simply from Calculations & using Inline Machine Code to draw those Calculations to screen. I simply found calculations on this machine processed the calculations much faster in Interpreted BASIC! ;-)
It wasn't until I wrote a routine to produce calculations required for the program which stored them into an Array, I found Turbo Pascal was extremely quick at drawing the same result.
BASIC didn't do arrays in the same fashion (difference is CONSTant array's weren't possible),so it needed to read it from DATA statements & put it somewhere (which slows it down consideribly), the solution was to write a small program which got the values, POKE it (using a special 16Bit Poker which would be accessible from BASIC! ;-) & save it as a DATA file.
The other program could then read those results - I used a lot of assembly in it for it to gather the 16bit number & then draw it.
> I wrote a simple program launcher in BASIC many years ago on a
> PCjr. It would show the list of BAS programs on the diskette, and let
> you move the cursor around under joystick control to pick the one you
> wanted to load and execute. That seems like a kindergarten program
> assignment compared to this.
It sounds as though it could be something which could be built on. For Example, is there a way for that program to get association from files & display depending on what type a file is display some type of Icon for certain file with a Filename below it, instead of having Text for the filename, turn it into a graphic & have a style of text.
The ol' Locomotive BASIC had the ability of TAGging the Text, turn it into a graphic (using MOVE) in connection with PRINT! Unfortunately I have no idea exactly how it grabs it, but you'd also want to modify which I don't know too much about either.
My closest example of TAG in TP / SmallC / Assembly uses an array (to represent a character) & a routine in which displays it. Basically speaking, it plots the little pixeks found in the array.
CP/M User.