Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Microsoft BASIC PDS 7.1 User Interface Toolbox
#1
This was supposed to go in the Museum a long time ago. However, I never got to re-implementing the assembler routines that this uses... until now.
I've included the assembly sources as comments in General.bas. Below those comments you can find the QB64 function ports.

From MS PDS 7.1 Getting Started docs:
Quote:User Interface Toolbox

With the new user interface code samples, you can design your own user interface using
BASIC procedures. The code samples in this toolbox give you complete control of character-
based window interfaces. For example, you could write a BASIC program with multiple
windows, menu bars, dialog boxes, and mouse interaction. For more information about the User
Interface toolbox, see Part 3 of the BASIC Language Reference.
Please note that this is by no means a perfect port. There are a few differences and quirks.

Happy tinkering!

[Image: Screenshot-2023-08-19-010014.png]

[Image: Screenshot-2023-08-19-081928.png]

[Image: Screenshot-2023-08-19-082014.png]

[Image: Screenshot-2023-08-19-082028.png]


Attached Files
.zip   PDSUITB64.zip (Size: 45.29 KB / Downloads: 138)
Reply
#2
Reminds me of VB for DOS using Ansii characters instead of graphics for all the boxes/dialogs. Eric was doing this too and probably Steve. So all that was MS PDS 7.1 inspired? (I'd not had the acquaintance.)
b = b + ...
Reply
#3
(08-19-2023, 04:49 AM)a740g Wrote: This was supposed to go in the Museum a long time ago. However, I never got to re-implementing the assembler routines that this uses... until now.
Holy cow! This is cool Heart
grymmjack (gj!)
GitHubYouTube | Soundcloud | 16colo.rs
Reply
#4
Wow!  Nicely done.  Great port.

- Dav

Find my programs here in Dav's QB64 Corner
Reply
#5
(08-19-2023, 10:46 AM)bplus Wrote: Reminds me of VB for DOS using Ansii characters instead of graphics for all the boxes/dialogs.

Both toolkits used high-bit ASCII on CP437. But the VB-DOS one went further, had odd-looking dialog buttons that took at least three screen lines. It was quite unlike Turbo Vision with the goofy-looking button with black shadow "underneath".

Also VB-DOS began the concept of event-driven programming. Create a few hundred functions per application, meant to be filled in by the programmer, for any response in the GUI program. Meanwhile on earlier BASIC's by M$, BASIC PDS in particular, had to do like Freebasic and C++ and program a big fat "SELECT CASE... END SELECT", into the main module level code. depending on kinds of events generated by the program.

I have seen BASIC PDS source code only once for this toolkit, however, so I might be mistaken. But the event-driven thing in VB-DOS discouraged me totally from that one. This was before I discovered that one used "far" strings no matter what, and did a few other things to convince me it wasn't QuickBASIC anymore.

Here is a fascinating port of Turbo Vision:

https://github.com/magiblot/tvision
Reply
#6
(08-19-2023, 06:11 PM)mnrvovrfc Wrote:
(08-19-2023, 10:46 AM)bplus Wrote: Reminds me of VB for DOS using Ansii characters instead of graphics for all the boxes/dialogs.

Both toolkits used high-bit ASCII on CP437. But the VB-DOS one went further, had odd-looking dialog buttons that took at least three screen lines. It was quite unlike Turbo Vision with the goofy-looking button with black shadow "underneath".

Also VB-DOS began the concept of event-driven programming. Create a few hundred functions per application, meant to be filled in by the programmer, for any response in the GUI program. Meanwhile on earlier BASIC's by M$, BASIC PDS in particular, had to do like Freebasic and C++ and program a big fat "SELECT CASE... END SELECT", into the main module level code. depending on kinds of events generated by the program.

I have seen BASIC PDS source code only once for this toolkit, however, so I might be mistaken. But the event-driven thing in VB-DOS discouraged me totally from that one. This was before I discovered that one used "far" strings no matter what, and did a few other things to convince me it wasn't QuickBASIC anymore.

Here is a fascinating port of Turbo Vision:

https://github.com/magiblot/tvision
Visual basic 1.0 for Windows was actually introduced a year earlier than Visual Basic for DOS. The event driven programming was introduced by the Windows version, which I found quite fascinating and very easy to use. I switched to VBDOS as soon as it became available because of this. I mostly wrote programs to track and order inventory, perform purchase orders, create custom quotes, etc.. for the company I worked for at the time. VBDOS (and VBWIN) really streamlined that process for me. The ISAM database included with VBDOS was great too.
New to QB64pe? Visit the QB64 tutorial to get started.
QB64 Tutorial
Reply
#7
magiblot's tvision Turbo Vision C++ port if one of the best ones there is.

And then there is Jexer (The Jexer Homepage (sourceforge.io)). Although, this stuff is made in Java. It can do really neat stuff.
Reply
#8
In General.bas the following is declared:

'      BC /X/FS general.bas
'      LIB general.lib + general + uiasm + qbx.lib;
'      LINK /Q general.lib, general.qlb,,qbxqlb.lib;

but I could not find uiasm.* anywhere.

Erik.
Reply
#9
It's supposed to be an example for GUI programming. But the object file should be included, in case somebody insists in a "real world" example of an application that could be done with a general-purpose programming system built in the 1990's.

It should be "UISAM" not "UIASM", I have corrected it above. But why create a Quick library out of this?

EDIT: I thought it was something else.
Reply
#10
(10-04-2023, 04:04 AM)eoredson Wrote: In General.bas the following is declared:

'      BC /X/FS general.bas
'      LIB general.lib + general + uiasm + qbx.lib;
'      LINK /Q general.lib, general.qlb,,qbxqlb.lib;

but I could not find uiasm.* anywhere.

Erik.

`UIASM.ASM` is an x86 assembler source and is not relevant for QB64. I've ported all assembler routines to QB64 and placed those in `GENERAL.BAS`. I've left the contents of `UIASM.ASM` as comments at the top of `GENERAL.BAS`.
Reply




Users browsing this thread: 4 Guest(s)