V25 SBC + GCC IA16 + ELKS Linux

  • Da ich jetzt doch mehr Zeit hereingesteckt habe, als ursprünglich angenommen, wollte ich den Stand der Dinge vorstellen. So richtig weiss ich noch nicht, was ich mit der CPU anstellen soll. Eventuell kommt noch ein ECB-Systembus dazu. Ein PC-Bus scheint mir nicht sinnvoll, da VGA-Grafik oder anderen PC-Karten wohl kaum unterstützt werden müssen. Ein PC-Board wäre als Entwicklungsplattform besser geeignet.


    Mittlerweile sind noch ein paar KB RAM dazugekommen und der GCC als Compiler. Mit dem IA16-GCC https://github.com/tkchia/gcc-ia16/ steht brauchbarer moderner Compiler zu Verfügung. Zum Debuggen reicht Dosbox mit dem Turbo Debugger TD.EXE . Leider fehlen dem Turbo Debugger einige V20 Erweiterungen wie Einzelbit Operationen und V25 Befehle.


    Man könnte auch BCC https://github.com/lkundrak/dev86 aber der wird schon einige Zeit nicht mehr gepflegt und wurde aus dem ELKS Projekt geworfen. Alternativ können so ziemlich alle DOS Compiler verwendet werden. Ich persönlich finde den GCC als Cross-Compiler eine gute Wahl. Durch den Compiler anstatt Assembler verliert man nicht so leicht den Überblick.


    Nach ein paar Initialen Einstellungen rennt die CPU mit den vollen 8 MHz los. Da die CPU 2 Takte pro Befehl braucht, bleiben nur noch max 4MIPS.


    Was mich jetzt neugierig gemacht hat, ist der I/O-Trap. Die V25 CPU ermöglicht es I/O Zugriffe abzufangen und eventuell so eine Art virtuellen Modus bereitzustellen mit dem man zusätzliche Peripherie emulieren kann. Könnte man damit sogar DOS Programmen eine Kompatibilität vorgaukeln?

    Code
    void init ()
    {
      set_ds_sfr();                 //set DS to SFR:0xfff0
      SFR->prc = PCK_CLK2|TB_1024k; //set CPU freq fosc-16MHz/2 , timer tick interrupt 131 ms 
      SFR->wtc = BLOCKx(WS0);       //zero wait state on all memory segments
      SFR->rfm = RFdis;             //disable refresh
      en_int_io();                  //enable I/O Trap supervisor
      restore_ds();                 //DS=SS
    }