Wednesday, 18 March 2026

QBX: Progress Update

In the course of Discord updates about QBX, it came to my attention that it had been about a month and a half since I'd made any update in that forum. Development had definitely not been stagnant, so I decided to review changes since the previous update there -- about 6 weeks prior. Here's what happened with QBX over the course of the past 6 weeks:
  • Over 450 commits.
  • The completion of INT 21h emulation, along with a comprehensive test suite that verifies the interrupt interface layer on top of the DOS kernel.
  • Maturation of the DOS kernel's file I/O layer, including, to some degree, the Short File Names support for non-Windows platforms.
  • File I/O support in the QuickBASIC parser & interpreter.
  • Lots of IDE bugs fixed. Lots still remain, I'm sure (as well as gaps).
  • Improved number formatting & parsing.
  • Conversion of numbers to/from strings (CVI, MKL$, etc.), including to/from MBF binary representation for floats (CVSMBF, etc.).
  • Help file parsing & display (I don't distribute the HLP files, but if you give it the files from the QB71 distribution, it'll display them.)
  • On that note, contextual help for menus and implemented dialogs, and F1 to jump to the topic for the word under the cursor.
  • Partial support for having files loaded that aren't part of the project source (such as .TXT files).
  • Event registration & dispatch.
  • Proper handling of error handlers and event handlers in cross-module situations.
  • New core dialogs, such as the F2 "SUBs" dialog.
  • One small but key detail in line parsing/formatting: End-of-line comments stay at the column they're at unless the reformatted code bumps them to the right.
  • Support for "pinning" variables to memory locations (VARSEG/VARPTR, SSEG/SADD) so that buffers can be passed to interrupts, etc.
  • BLOAD/BSAVE support.
  • COMMON blocks for sharing variables between modules in a multi-module program.
  • Proper segregation of namespaces between modules, including allowing SUBs and FUNCTIONs to be declared with differing but semantically-identical TYPEs.
  • VARPTR$() for "X" PLAY and DRAW commands.
  • VGA ROM font at segment F000.
  • Starting SUBs and FUNCTIONs by typing the opening line.
  • STATIC variables & SUBs.
  • Identifier canonicalization.

So, you know. A few things. :-)

No comments:

Post a Comment