Inspiration

OshonSoft is a family of thirteen commercial microcontroller and microprocessor development applications that I have developed since 2001. Its simulator IDEs and BASIC compilers contain decades of specialized engineering knowledge, but they are implemented in Visual Basic 6.

A conventional rewrite risks losing behaviour, accumulated design decisions, and the ability to maintain the original products during migration. I want to preserve the applications as living systems, not merely reproduce their visible interfaces.

What it does

The project is a purpose-built VB6-to-PureBasic migration system. Its converter regenerates complete PureBasic application trees from the current VB6 sources, covering thirteen simulator IDE and BASIC compiler products for PIC, AVR, Z80, 6502, 8085, and related architectures.

Generated PureBasic remains readable and recognizably related to the original design. Shared subsystems can be modernized once as carefully engineered common PureBasic components and then reused throughout the suite.

The Build Week milestone completes the keyword subsystem of 'CSci', the common Scintilla-based editor used by converted compiler and assembler forms. The generated Z80 Simulator IDE now demonstrates working BASIC and assembly syntax highlighting.

How we built it

The converter is itself a mature engineering application with general, module-specific, form-specific, and procedure-specific conversion passes. It always recreates its complete output from scratch, so permanent migration work belongs in converter algorithms or shared PureBasic sources rather than manually patched generated files.

For this milestone, Codex Desktop using GPT-5.6 Sol Light inspected the original VB6 OCX, its supporting PureBasic DLL, translated scaffolding, shared CSci sources, converter emission points, and application usage. We then:

  • moved main and user keyword state into each 'CSci' editor instance;
  • eliminated obsolete DLL and active-control keyword synchronization;
  • implemented keyword add, clear, duplicate handling, list, and Scintilla synchronization procedures;
  • added direct wrappers for Scintilla keyword and text operations;
  • migrated a reduced 'CSciTest' for BASIC and assembly highlighting;
  • taught the converter to initialize the correct editor lexer mode and inject temporary milestone tests;
  • rebuilt the converter and regenerated the PureBasic sources and x86/x64 executables for all thirteen applications;
  • manually verified both highlighted editors in the converted Z80 Simulator IDE.

How Codex and GPT-5.6 contributed

Codex acted as a repository-aware engineering partner rather than a blind code generator. It read the repository conventions and development journal, compared original and translated implementations, traced cross-file usage, proposed alternative designs, implemented the agreed converter-side solution, checked generated-source consistency, and helped validate the milestone.

The collaboration remained human-directed. I rejected obsolete DLL updates, selected immediate keyword synchronization, defined naming and formatting rules, and corrected one interpretation concerning lowercase user-keyword storage. Codex verified the correction, changed direction, and integrated my decisions consistently across the converter and common code.

This was genuine pair engineering: my accumulated product and migration knowledge remained authoritative, while GPT-5.6 provided fast software archaeology, repository-wide reasoning, implementation assistance, verification, documentation, and submission preparation.

Challenges we ran into

The greatest challenge was reconstructing intent across several generations of the same component: the original VB6 OCX, an older PureBasic DLL, partially converted scaffolding, the current shared component, converter logic, and thirteen generated applications.

Some historical mechanisms existed only to solve old ActiveX focus and instance-management problems. Copying them would have preserved unnecessary complexity. The new implementation had to retain application-level behaviour while discarding those obsolete constraints.

The converter's generate-everything-from-scratch architecture also means that a successful local edit is not sufficient. The durable solution must originate in converter or common sources and regenerate consistently across the application family.

Accomplishments that we're proud of

  • Established a dated Git baseline separating pre-existing work from the Build Week extension.
  • Completed a functional per-editor keyword subsystem without reviving obsolete DLL synchronization.
  • Regenerated all thirteen application sources and all Windows x86/x64 executables.
  • Demonstrated correct BASIC and assembly syntax highlighting in the converted Z80 Simulator IDE.
  • Preserved the owner's coding style, naming conventions, development journal, and architectural intent.
  • Produced a private, testable judging repository with compiled executables and clear setup instructions.

What we learned

AI-assisted migration is most valuable when it preserves context rather than replacing it. Codex can compare years of implementation layers and rapidly surface relationships that would otherwise require lengthy manual archaeology, but the best decisions still emerge through collaboration with the engineer who understands why the software evolved as it did.

We also confirmed that thin, executable milestones are powerful. Completing keyword state and syntax highlighting provides visible evidence that the new editor architecture works while keeping the scope small enough to reason about and test thoroughly.

What's next

The temporary test injection will be replaced by the real compiler and assembler editor-loading paths. Further CSci behaviour will then be migrated incrementally, followed by the next converter or shared-subsystem milestone that emerges from full-application testing.

The long-term destination is a maintainable, cross-platform PureBasic version of the complete OshonSoft suite, continuously generated from living VB6 sources until the migration is finished.

Test instructions for judges

  1. Clone or download the private repository on Windows.
  2. Open 'zapps/z80simulatoride'.
  3. Run 'z80simulatoride_x64.exe' on 64-bit Windows or 'z80simulatoride_x86.exe' on 32-bit Windows.
  4. Open the BASIC Compiler editor and inspect the automatically inserted highlighted test program.
  5. Open the Assembler editor and inspect its highlighted assembly test program.

No rebuild is required for this judging test. PureBasic 6.21 is required only if judges choose to rebuild the generated sources.

Additional links

Built With

  • codex
  • git
  • gpt-5.6-sol-light
  • lexilla
  • purebasic-6.21
  • scintilla
  • visual-basic-6
  • windows
Share this project:

Updates