# Befunde am öffentlichen VBDOS-Bestand

Geprüft wurde `cout/vbdos` im Commit
`1cdd2b32b829fe1721d0b6aecc433abc47a96fb6`. Maßgeblich waren die
vorhandenen `.MAK`-Projekte; wo keines existiert, wurde die `.FRM` direkt
verwendet. Jeder Eintrag bestand `tbc check` ohne Diagnose. Die Programme
wurden anschließend in einem 100×30-Pseudoterminal gestartet und blieben nach
dem Ende des Modulrumpfs bedienbar, bis ein Steuerelement das Formular schloss
oder der Lauf bewusst abgebrochen wurde.

| Programm | Check | Bediennachweis |
|---|---:|---|
| `graphics/graphics.mak` | 0 Diagnosen | Alt+X löst `cmdExit_Click` aus und entlädt das Formular |
| `microsoft/check.mak` | 0 Diagnosen | Alt+F öffnet das Menü; X erreicht den Exit-/Speicherdialogpfad |
| `microsoft/qlbview.mak` | 0 Diagnosen | Esc löst die Cancel-Schaltfläche aus und entlädt das Formular |
| `microsoft/seek.mak` | 0 Diagnosen | Alt+X löst `cmdExit_Click` aus und entlädt das Formular |
| `microsoft/spindemo.mak` | 0 Diagnosen | Tab und Pfeiltaste werden dem Text-/Spin-Steuerpfad zugestellt |
| `microsoft/notepad.frm` | 0 Diagnosen | Alt+F öffnet das Menü; X löst `mnuFileExit_Click` aus |
| `misc/mentors/mentors.frm` | 0 Diagnosen | Alt+F öffnet das Menü; X erreicht den Exit-/Speicherdialogpfad |

## Geschlossene Befunde

- `.MAK`-Einträge, `$INCLUDE` und `RUN` werden relativ und
  DOS-großschreibungsunabhängig aufgelöst; mehrere Module und Formulare
  werden als gemeinsames Programm übersetzt.
- Binärformular-P-Code behält Block- und Anweisungsgrenzen, numerische
  Suffixe, Record-/UDT-Ausdrücke und Control-Arrays korrekt bei.
- Globale Arrays werden vor `Form_Load` initialisiert; `LEN(record)` liefert
  die feste Satzbreite. `INPUT$` liest auch Binärdateien.
- `SCREEN.CONTROLPANEL(index)`, `CLIPBOARD` und `PRINTER` haben
  Laufzeitverhalten; die von Notepad verwendeten Common-Dialog-Deklarationen
  arbeiten über die vorhandenen Textdialoge.
- Die nativen Controls `VSpin` und `HSpin` werden als bedienbares `Spin`
  importiert, einschließlich Wertgrenzen, Wiederholung und `Custom`-Ereignis.
- `SCREEN` 0–13 sowie die im Grafikbeispiel verwendeten Anweisungen `LINE`,
  `PAINT` und `VIEW` zeichnen auf den Zellenpuffer.
- Modellose Formulare halten nach dem Modulrumpf die VM-Ereignisschleife
  offen; Formularereignisse laufen auf derselben VM weiter, bis alle Formulare
  geschlossen sind. Derselbe Pfad funktioniert im Terminal und mit
  vorab eingelesener Pipe-Eingabe.

Damit sind alle während dieses Kompatibilitätslaufs gefundenen
Implementierungslücken geschlossen; es verbleibt kein dokumentierter oder
umgangener Befund.
