Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » K1003 Emulator » Themenansicht

Autor Thread - Seiten: -1-
000
25.04.2015, 10:40 Uhr
PeterSieg



Hi.

Da gibt es den wirklich guten Emulator von Micha auf Excel+VBA Basis.
Nun Excel hat/will nicht jeder ;-)

Dann hat Micha den wünderschönen AVR Nachbau. Nicht jeder möchte so viel Aufwand für eine Emulationslösung.

MESS hat wohl auch einen K1003 Emulator im Bauch.. warum da ca. 20 Rom-Dateien benötigt werden..?? Nun findet man auch im Netz.. das 'Ding' zeigt bei mir aber nur rote Striche.. ist wohl noch gar nicht lauffähig..?
Oder hat das jemand schon mir MESS am laufen? Nun 50MB für einen Emulator ist auch nicht das was ich unbedingt möchte.. ;-)

Ich habe darauf hin mal in 2 ruhigen Stunden angefangen den AVR Source nach (DJ)GCC zu bringen. SD Card+Monitor sind erst einmal raus.
Das Ganze kompiliert inzwischen und bringt ein Display unter DJGPP (DOS Version von GCC). Aber das Display ist so noch nicht richtig:
0000000001111111
1234567890123456
0 00 <- Soll
² ³³ <- Ist, an falschen Positionen (² an Pos.7; ³³ an Pos.11+12)

Das noch keine 0 kommt ist erwartet, da ich 7-Segment Codes aus dem dispBuffer ausgebe. Warum aber die Position nicht stimmt..?
Micha sagte das die Display-Zeichen auch irgendwo im Ram stehen..?
Das wäre evtl. auch besser die dann dort auszulesen..

Tastatur ist noch gar nicht implementiert. An der Datei ColRow.txt ließe sich aber ablesen, was dazu an Informationen benötigt wird.

Da es GCC nah mit makefile ist, sollte es auch unter Linux kompilierbar sein.

Der aktuelle - (noch) nicht funktionsfähige Stand für DOS+DJGPP ist hier:
http://petersieg.bplaced.net/downloads/k100x.rar

Evtl. hat ja jemand Lust da dran mit/weiter zu basteln?
Evtl. hat jemand eine Aufschlüsselung der Ram-Nutzung des K1003?

Ich bin kein C Programmierer - seht es mir bitte nach..

Peter

Dieser Beitrag wurde am 25.04.2015 um 10:41 Uhr von PeterSieg editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
25.04.2015, 20:33 Uhr
tp




Zitat:
PeterSieg schrieb
Da es GCC nah mit makefile ist, sollte es auch unter Linux kompilierbar sein.



Das ist mit include Files wie <dpmi.h> und <dos.h> wohl eher unwahrscheinlich.

Ansonsten interessante Systemwahl nach der Feststellung "Nun Excel hat/will nicht jeder" ;-)
--
Die Zeit ist auch nicht mehr, was sie mal war! (Albert Einstein)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
26.04.2015, 00:05 Uhr
Tom Nachdenk




Zitat:
tp schrieb

Zitat:
PeterSieg schrieb
Da es GCC nah mit makefile ist, sollte es auch unter Linux kompilierbar sein.



Das ist mit include Files wie <dpmi.h> und <dos.h> wohl eher unwahrscheinlich.

Ansonsten interessante Systemwahl nach der Feststellung "Nun Excel hat/will nicht jeder" ;-)



Einfach auskommentieren, genauso wie die libkb.a, dann kompilierts zumindest. Das Ergebnis sieht dann so aus:

[���]
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
26.04.2015, 21:56 Uhr
PeterSieg



So ist es. Micha hat mir (Danke) ein teilweise kommentiertes Asm Listing geschickt.
Aus seinem Code habe ich die Display Routine dann erst einmal so umgebaut:


Quellcode:

byte dis_cvt(byte b) {
//; Bitmuster für 7-Segment-Anzeigen
//0010  FC 60 DA F2           DEFB 252,96,218,242  ; Zeichen 0,1,2,3
//0014  66 B6 BE E0           DEFB 102,182,190,224 ; Zeichen 4,5,6,7
//0018  FE F6 8E CE           DEFB 254,246,142,206 ; Zeichen 8,9,F,P
//001C  1C 6E 00 02           DEFB 28,110,0,2      ; Zeichen L,H, ,-  printf("[");
      switch (b) {
        case 0xFC: b = '0'; break;
        case 0x60: b = '1'; break;
        case 0xDA: b = '2'; break;
        case 0xF2: b = '3'; break;
        case 0x66: b = '4'; break;
        case 0xB6: b = '5'; break;
        case 0xBE: b = '6'; break;
        case 0xE0: b = '7'; break;
        case 0xFE: b = '8'; break;
        case 0xF6: b = '9'; break;
        case 0x8E: b = 'F'; break;
        case 0xCE: b = 'P'; break;
        case 0x1C: b = 'L'; break;
        case 0x6E: b = 'H'; break;
        case 0x00: b = ' '; break;
        case 0x02: b = '-'; break;
        default: b = ' '; break;
    }
    return b;
}

void dis_key () {
byte b;
// 1st display
  for (dBptr=9; dBptr>0; dBptr--) {
    b = dispBuffer[dBptr] & 0xFE; // and with 11111110
    b = dis_cvt(b);
      printf("%c",b); // display 10 dowto 01 char buffer
  }
  for (dBptr=15; dBptr>9; dBptr--) {
     b = dispBuffer[dBptr] & 0xFE; // and with 11111110
    b = dis_cvt(b);
      printf("%c",b); // display 16 dowto 11 char buffer
  }
  printf("]\r");
// 2nd keyboard
  if (kbhit()) {
    key = getkey();
    switch (key) {
    case '1':
        keyCol =  7; keyRow =  64; break;

...
  ColRow = (keyCol << 8) & keyRow;




Nun, Display zeigt jetzt 0 dort wo sie nach dem Einschalten sein sollen..
Ob das alles so richtig ist oder Blödsinn..?
Wollte dann mal Tastatureingaben verarbeiten.. dann sollte sich ja am Display
etwas ändern.. aber dat lupt so noch nicht.. das habe ich noch nicht verstanden, was da alles so abläuft.. ColRow 16-bit; keyCol+keyRow 8-bit.. das es Matrix-Tastatur bestehend aus Row's und Col's ist.. klar.. schaue die Tage mal in den VB Code..

Peter

Dieser Beitrag wurde am 26.04.2015 um 21:58 Uhr von PeterSieg editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
11.05.2019, 17:48 Uhr
Jens_G



Das die Emulation .. "Nun Excel hat/will nicht jeder" .. bei mir nur auf "Microsoft Excel 2010" läuft .. und damit nicht auf Linux und anderswo .. möchte ich einen neuen Versuch mit anderen Mitteln wagen.

Auf QT5 basierend soll das SW-Projekt neu aufgesetzt werden. Anbei mal eine Skizze - die kleinste Auflösung ist 640 x 320 Pixel.



Bitte das grafische Frontend diskutieren -- die Umsetzung erfolgt schrittweise.

Dieser Beitrag wurde am 11.05.2019 um 17:50 Uhr von Jens_G editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
11.05.2019, 19:18 Uhr
Perser

Avatar von Perser

Wenn es so aussieht wie das Orginal ist doch alles i.O.

Viele Grüße
Perser
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
12.05.2019, 00:10 Uhr
Micha

Avatar von Micha

Hallo Jens,

meine Excel/VBA Umsetzung damals war nur ein schwacher Start in die Thematik. Sobald ich die Möglichkeit mit dem Atmega (Programmierung in C) für mich entdeckt hatte, war das Thema Excel beerdigt.
Schön, wenn es nun doch noch mal jemand richtig angeht mit der Emulation.
Frage: die [DSP] Taste gibts beim Original nicht - hast Du die mit Absicht hinzugefügt - falls ja: welche Funktion soll diese erfüllen?

Zwei Hinweise:
1. Ich empfehle, die drei Tasten [ST],[STM] und [GL] wieder an ihre korrekten Positionen zu versetzen. Die K1000 Tastatur hat ja außen oktale Koordinaten, die sich auch in einem K1000 Programm widerspiegeln. Daß die drei genannten Tasten sich nicht daran halten, war lediglich eine Notlösung bei dem K1000µC, weil die verwendete Siemens-Kassentastatur nur 12 statt der eigentlich benötigten 13 Spalten hat.
2. Schau Dir eventuell mal den 'HP Series 9800' Emu von Achim Bürger an, einfach als Inspiration, wie man sowas machen könnte. Der HP9810 ist in gewisser Weise ein Verwandter des K1000, jener Emu ist wirklich klasse gemacht!
--
Das alte Rom wurde auch nicht an einem Tag programmiert.

Dieser Beitrag wurde am 12.05.2019 um 00:52 Uhr von Micha editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
24.05.2019, 21:56 Uhr
Jens_G



Die DSP Taste soll wohl "Display" bedeuten und hat die interne Nummer 131 -- was es bedeutet weiß ich nicht.

Ich empfehle, die drei Tasten [ST],[STM] und [GL] wieder an ihre korrekten Positionen zu versetzen.

Ja stimmt die Position ist etwas an anderer Stelle -- die Tastenzahl steht unter der Taste. Der Grund ist das sonst die Darstellung zu breit wird -- mein Raster ist 92 x 46 bei 10 Pixel je Raster bin ich bei 920 Pixel -- Breite.
Das Layout ist in QT5 mal fertig -- jetzt muss ich das nächste lernen -- die Taste und das Display zum Leben erwachen bringen -- ich benutze kein "Font" in der Oberfläche alles sind Bilder.

Das war es mal -- Jens
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
25.05.2019, 20:20 Uhr
Jens_G




Zitat:
2. Schau Dir eventuell mal den 'HP Series 9800' Emu von Achim Bürger an, einfach als Inspiration, wie man sowas machen könnte. Der HP9810 ist in gewisser Weise ein Verwandter des K1000, jener Emu ist wirklich klasse gemacht!


Den Emulator vom HP9810 habe ich gefunden: https://emulationrealm.net/downloads/file/2498-go9800
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
09.06.2019, 17:35 Uhr
Jens_G




Zitat:
Jens_G schrieb
Das Layout ist in QT5 etwas aufgebessert worden.

Jetzt kann die CPU eingebunden werden.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek