mcFORTH für virtuellen Prozessor VP32

Der VP32 ist kein real existierender Prozessor (obwohl vermutlich mit FPGA möglich).
Eher ein Konzept, mit einer überschaubaren Anzahl von Befehlen ein FORTH zu realisieren.

Ein entsprechender Simulator muß:
  • Die 64 Befehle des VP32 realisieren
  • Den entsprechenden Speicher (Flash und RAM) verwalten
  • Betriebssystem-Aufrufe wie Ein-/Ausgabe und Filezugriffe ermöglichen

    Simulator (für MASM32 unter Windows)

    Damit die Ausführung schnell ist und trotzdem alle möglichen Features realisierbar waren, wurde der erste Simulator direkt in Assembler für MASM32 unter Windows geschrieben. Das entsprechende EXE-Programm und die Sourcen sind hier frei herunterladbar:
    Batch-Datei zur Generierung des Simulators (mcFSimVP32.bat)
    Assembler-Sourcen (mcFSimVP32.asm)
    Das ausführbare Windows-Programm des Simulators (mcFSimVP32.exe)

    Aufruf: mcFSimVP32.exe Parameter Debug+Filename
    Beispiele: mcFSimVP32.exe mcfvp32d.mcf Start des mcFORTH für VP32D mit Default-Einstellung
    mcFSimVP32.exe \mcfvp32d.mcf Start des mcFORTH mit Single-Step-Trace
    mcFSimVP32.exe +a mcfvp32i.mcfa Start des mcFORTH für VP32I mit Align-Test
    Parameter: +paaaaaaaallllllll Programmbereich festlegen (Flash - Default: 2MByte ab $00000000)
    +vaaaaaaaallllllll Variablenbereich festlegen (RAM - Default: 1MByte ab $20000000)
    +h bzw. -h Harvard ein-/ausschalten (Default: -h)
    +a bzw. -a Align der Speicherzugriffe ein-/ausschalten (Default: -a)
    Debug+Filename: \Filename Das MCF-File wird in Single-Trace-Steps ausgeführt
    /Filename Das MCF-File wird mit Trace-Ausgabe ausgeführt
    aaaaaaaa = Adresse (immer 8 Hex-Zeichen)
    llllllll = Länge (immer 8 Hex-Zeichen)
    Harvard: Flash und RAM können gleiche Adresse haben - Programme im RAM nicht möglich


    VP32D-Version

    VP32D (D=direkt) ist die Abkürzung für die Subroutine Threaded Code Version des mcFORTH auf VP32. Dabei werden Unterprogamme immer mit CALL aufgerufen und viele der Befehle (mittels Macro) direkt in die Wörter compiliert.
    mcFORTH für VP32D (mcfvp32d.mcf)
    VP32D mit Screen-Editor (mcf32d.mcf)


    VP32I-Version

    VP32I (I=indirekt) ist die Abkürzung für die Indirect Threaded Code Version des mcFORTH auf VP32. Dabei enthält das Codefeld einen Zeiger auf die (Assembler-)Routine und im Parameterfeld werden Zeiger auf das Codefeld der entsprechenden Routine abgelegt. Das Alignment wird in der Core-Version eingehalten, wäre aber für eigene Programme nicht unbedingt notwendig:
    mcFORTH für VP32I (mcfvp32i.mcf)
    VP32I mit Screen-Editor (mcf32i.mcf)