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!
--
Ich möchte im Schlaf sterben, so wie mein Opa.
Nicht schreiend und kreischend wie sein Beifahrer.

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
010
29.06.2019, 20:47 Uhr
Jens_G





Beim ersten Starten vom ROM bin ich jetzt bis zum diesem Bild gekommen -- die Zuordnung der Reihenfolge ist noch falsch. Jetzt bin ich auf der Suche wie ich in den Ablauf eine Tastenbedienung hinein bekomme.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
02.07.2019, 22:53 Uhr
Jens_G



Zwischenbericht: Nach der Ausgabe .. geht jetzt auch die Eingabe - der Emulator arbeitet. Die vielen Tasten müssen noch in das Programm eingebunden werden.

Interessant ist .. die Zuordnung vom Display:

uint8_t display_sort[16] = {
9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10
};

Offensichtlich hat es mit der Platine nicht so geklappt - die SW bringt es dann wieder in die richtige Reihenfolge.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
012
03.07.2019, 20:37 Uhr
Perser

Avatar von Perser


Zitat:
Jens_G schrieb
Offensichtlich hat es mit der Platine nicht so geklappt - die SW bringt es dann wieder in die richtige Reihenfolge.


Platine ? ich dachte Du machst eine Softwarelösung.

Viele Grüße
Perser
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
013
03.07.2019, 22:15 Uhr
holm

Avatar von holm


Zitat:
Jens_G schrieb
Zwischenbericht: Nach der Ausgabe .. geht jetzt auch die Eingabe - der Emulator arbeitet. Die vielen Tasten müssen noch in das Programm eingebunden werden.

Interessant ist .. die Zuordnung vom Display:

uint8_t display_sort[16] = {
9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10
};

Offensichtlich hat es mit der Platine nicht so geklappt - die SW bringt es dann wieder in die richtige Reihenfolge.



Das ist überhaupt nicht unüblich, guck Dir z.B: die ACS77 Uhr an ..wie da der Eprom mit dem Prozessor verbunden ist ..völlig durcheinander. Die Routine die die Daten einmalig vor dem Brennen umsortiert kostet faktisch Nichts. Die Ansteuerung von 7-Degment Anzeigen sieht bei mir auch so aus, Pins 1:1 parallel verbunden..zu welchem Zweck sollte man dem eine Reihenfolge geben? Die Codierung von binär zu 7-Segment kommt aus einem Array und da ist es völlig Wurscht welches Bit mit welchem, Segment belegt ist, dafür gibts Macroprozessoren. Deine Switch-Latte oben ist eher unüblich, das macht man mit einer Tabelle.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
014
04.07.2019, 07:30 Uhr
Jens_G




Zitat:
Perser schrieb

Zitat:
Jens_G schrieb
Offensichtlich hat es mit der Platine nicht so geklappt - die SW bringt es dann wieder in die richtige Reihenfolge.


Platine ? ich dachte Du machst eine Softwarelösung.

Viele Grüße
Perser



.. mit Platine meinte ich das Original vom K1003 -- die Reihenfolge musste ausgerichtet werden. Im Screen vom 29.06.2019 sieht man den Start "ohne" Sortierung der Anzeige.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
015
04.07.2019, 07:40 Uhr
Jens_G




Zitat:
holm schrieb
Die Codierung von binär zu 7-Segment kommt aus einem Array und da ist es völlig Wurscht welches Bit mit welchem, Segment belegt ist, dafür gibts Macroprozessoren

Gruß,

Holm


An der Quelle vom K1003 (Eprom - Inhalte) wird nichts verändert. Treten Probleme auf so wird alles in C-Quellen (Emulation) gemacht.

Bei der 7-Segment Anzeige war es so. Bei mir ist es Standard: "Bit_0 ist Segment a" "Bit_7 ist der Dezimalpunkt". -- beim K1003 war es anders: "Bit_7 ist Segment a" "Bit_0 ist der Dezimalpunkt". - dort habe ich es auch mit einer Tabelle gemacht.

uint8_t display_sort[16] = {...}; ist in "C++" eine Tabelle mit 16 Einträgen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
016
04.07.2019, 09:13 Uhr
holm

Avatar von holm

Ich meinte so wie hier, die konkrete Zuordnung ist völlig Banane:

Quellcode:

#ifndef __led_h_included__
#define __led_h_included__

#define SEG_A 0x04
#define SEG_B 0x01
#define SEG_C 0x08
#define SEG_D 0x10
#define SEG_E 0x20
#define SEG_F 0x80
#define SEG_G 0x40
#define SEG_H 0x02



__code uint8_t SegCode[16] = { \

        SEG_A|SEG_B|SEG_C|SEG_D|SEG_E|SEG_F,            // 0
        SEG_B|SEG_C,                                    // 1
        SEG_A|SEG_B|SEG_G|SEG_E|SEG_D,                  // 2
        SEG_A|SEG_B|SEG_C|SEG_D|SEG_G,                  // 3
        SEG_B|SEG_C|SEG_F|SEG_G,                        // 4
        SEG_A|SEG_F|SEG_G|SEG_C|SEG_D,                  // 5
        SEG_A|SEG_F|SEG_G|SEG_C|SEG_D|SEG_E,            // 6
        SEG_A|SEG_B|SEG_C,                              // 7
        SEG_A|SEG_B|SEG_C|SEG_D|SEG_E|SEG_F|SEG_G,      // 8
        SEG_A|SEG_B|SEG_C|SEG_D|SEG_F|SEG_G,            // 9
        SEG_A|SEG_B|SEG_C|SEG_E|SEG_F|SEG_G,            // A
        SEG_C|SEG_D|SEG_E|SEG_F|SEG_G,                  // b
        SEG_C|SEG_D|SEG_E|SEG_G,                        // c
        SEG_B|SEG_C|SEG_D|SEG_E|SEG_G,                  // d
        SEG_A|SEG_D|SEG_E|SEG_F|SEG_G,                  // E
        SEG_A|SEG_E|SEG_F|SEG_G,                        // F

};      // 7-Segment-Code fuer Ziffern 0..9, A,b,c,d,E,F




Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
017
04.07.2019, 18:18 Uhr
Jens_G



Der Machinenkode vom K1003 gibt keine Information aus die dekodiert werden müsste. Es wird 1Byte (8Bit) je Dezimalstelle ausgegeben .. und das geht auch.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
018
04.07.2019, 18:45 Uhr
Jens_G




Zitat:
Jens_G schrieb
Es wird 1Byte (8Bit) je Dezimalstelle ausgegeben .. und das geht auch.


Dieses Byte sind die Segmente der Anzeige.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
019
04.07.2019, 20:24 Uhr
holm

Avatar von holm

Wen es so wäre wie Du erzählst, müßte der Rechner in 7-Segment-Code rechnen..glaubst Du da selber dran?

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
020
04.07.2019, 23:30 Uhr
Micha

Avatar von Micha

Jens meinte in 018 ganz sicher

Zitat:
Dieses Bits sind die Segmente der Anzeige.


Der K1000 rechnet nicht so, da liegt noch eine ziemlich verwurschtelte Konvertierung dazwischen, zwischen internem Zahlenformat und ziffernweiser Ausgabe.
--
Ich möchte im Schlaf sterben, so wie mein Opa.
Nicht schreiend und kreischend wie sein Beifahrer.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
021
05.07.2019, 08:26 Uhr
Jens_G




Zitat:
Micha schrieb
Jens meinte in 018 ganz sicher

Zitat:
Dieses Bits sind die Segmente der Anzeige.


Der K1000 rechnet nicht so, da liegt noch eine ziemlich verwurschtelte Konvertierung dazwischen, zwischen internem Zahlenformat und ziffernweiser Ausgabe.


Danke für die Klarstellung.
Ich bereite eine Veröffentlichung der Quellen und der WIN32 Anwendung vor. Eingabe und Ausgabe funktionieren jetzt.
Als nächstes kommt die Programmierbarkeit - ich mache es mal so - Einschalten -> Programminhalte von Datei lesen - Ausschalten -> Programminhalte in Datei speichern. Wer das Ausschalten vergisst verliert die Programminhalte.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
022
05.07.2019, 09:05 Uhr
Jens_G



https://books.google.at/books?id=mW2pBgAAQBAJ
In diesem Buch ist ein Programm abgedruckt. 522 Programmschritte - Rechenzeit 10 Minuten.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
023
05.07.2019, 20:17 Uhr
Jens_G



https://github.com/JensGrabner/Emulator_robotron_K1003
Veröffentlichung von .. Win32/Release/emulator_k1003.exe
Ein erfolgreicher Kurs in C++ und etwa 250 Mannstunden später gibt es ein erstes Ergebniss. Der Rechner Startet nach dem drücken der "Ein/Aus" Taste.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
024
13.07.2019, 14:38 Uhr
Jens_G



Ich habe die Umgebungsdateien vom Emulator angepasst -- jetzt sollte die .. Win32/Release/emulator_k1003.exe auch auf PC's laufen wo kein QT5 installiert ist.

Ich bitte um Rückmeldungen -- Danke .. Jens Grabner
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
025
16.07.2019, 07:25 Uhr
tf



Interessante Projekt. Ich habe es mir heruntergeladen und unter Windows 10 ausprobiert. Folgendes ist mir beim naiven Ausprobieren direkt nach dem Starten des Programms


Quellcode:

Eingabe:          Ausgabe
1 <Enter>            1
2 <Enter>            2
+                       2
+                       4
+                       8



Das scheint mit dem Ein/aus-Schalter in der Mitte zu tun zu haben. Wenn der aktiv ist, geht es:


Quellcode:

Eingabe:          Ausgabe
1 <Enter>            1
2 +                     3
+                       3



Also doch mal ins Handbuch schauen ;-) Warum kann ich Eingaben machen, wenn der Rechner aus ist? Ist beim Original sicher nicht so.

Könnten die Punkte der Anzeige rot gemacht werden, wie das Original?

Ich schaue mir das bei Gelegenheit noch genauer an. Viele Grüße und Dank,
Thomas

Dieser Beitrag wurde am 16.07.2019 um 07:25 Uhr von tf editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
026
16.07.2019, 07:52 Uhr
Jens_G



Ja .. erst einschalten dann den K1003 nutzen -- zu Testzwecken wurde im ausgeschalteten Zustand ein "normaler" Taschenrechner programmiert -- Enter = "=" .. funktioniert nicht besonders genau .. wird nicht weiter verfolgt.

Die Bildpunkte "rot" machen .. . das geht wahrscheinlich, aber wie .. ich verwende in QT5 Checkboxen zur Anzeige .. wusste es nich besser zu machen, bzw. der Zeitdruck hat diesen Weg vorgegeben.

Das Eingaben machbar sind, wenn ausgeschaltet ist, werde ich im Programmcode auskommentieren - das irritiert nur. Danke für den Hinweis.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
027
16.07.2019, 08:12 Uhr
Jens_G




Zitat:
tf schrieb
Warum kann ich Eingaben machen, wenn der Rechner aus ist? Ist beim Original sicher nicht so.



Problem beseitigt ;-)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
028
17.07.2019, 21:02 Uhr
Jens_G



Beseitigung von Absturzproblemen -- erscheint ein "F" in der Anzeige wird man zum Ein- und Ausschalten genötigt. Sonst kommt es zu fehlerhaften Zuständen die es notwendig machen das Programm zu beenden.
Dieser Beitrag wurde am 17.07.2019 um 21:03 Uhr von Jens_G editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
029
10.08.2019, 18:13 Uhr
Jens_G



Es ist Urlaubszeit - ich habe es etwas schöner gemacht -- https://github.com/JensGrabner/Emulator_robotron_K1003
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
030
08.10.2019, 21:42 Uhr
Perser

Avatar von Perser

Hallo Jens,

die Programmierung funktioniert nicht oder bist Du noch nicht so weit,
machst Du noch was daran?

Viele Grüße
Perser

Dieser Beitrag wurde am 08.10.2019 um 21:42 Uhr von Perser editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
031
10.10.2019, 09:19 Uhr
Jens_G




Zitat:
Perser schrieb
die Programmierung funktioniert nicht oder bist Du noch nicht so weit,
machst Du noch was daran?


Besten Dank für die Motivation, habe lange auf eine solche Reaktion gewartet. Wo kein Interesse ist, da geht bei mir nichts weiter.
Aber gut - mir bitte mitteilen, ob es ohne diese Möglichkeit gut funktioniert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
032
25.12.2019, 18:59 Uhr
Jens_G



Ich habe den Font etwas verändert. Fontfarbe - muss ich sehen wie das geht. Programmierbarkeit fehlt noch.
https://github.com/JensGrabner/Emulator_robotron_K1003
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
033
26.12.2019, 22:55 Uhr
Perser

Avatar von Perser

Hallo Jens,

ich verfolge Dein Projekt noch, nur so zur Motivation.

Viele Grüße
Perser
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
034
27.12.2019, 09:56 Uhr
Jens_G



Besten Dank. Ich wollte nur mal so die Farbe vom Display ändern.

.. da muss ich grundlegend etwas anders machen. "Linien zeichnen". zur Zeit ist es "QCheckBox" .. was aufwändig ist und viel Resourcen braucht.

Die Anzeige dauert länger als die Abarbeitung des Eproms. Mir ist es immer wieder möglich das Programm zum Absturz zu bringen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
035
28.12.2019, 05:20 Uhr
Jens_G




Zitat:
Jens_G schrieb
.. da muss ich grundlegend etwas anders machen. "Linien zeichnen". zur Zeit ist es "QCheckBox" .. was aufwändig ist und viel Resourcen braucht.


Eine neue und .. nicht funktionsfähige Version ist veröffentlicht.

Man sieht, das es jetzt wesentlich schneller geht, auch das Programm dadurch schneller zum Absturz gebracht werden kann. Ich muss meine alten Unterlagen vom Kurs noch einmal nachschlagen.

Der Ablauf muss synchronisiert werden. Will sagen, solange am Display etwas gemacht wird, darf im Hintergrunde die Simulation nicht laufen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
036
28.12.2019, 10:21 Uhr
Jens_G



Zur Info - ich habe eine Idee wie ich dafür sorgen kann, das weniger am Display passiert -- im neuen Jahr dann.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
037
01.01.2020, 21:33 Uhr
Jens_G



Ein wenig habe ich verbessert -- es passiert aber immer noch sehr viel am Display. Auf github ist ein aktueller Stand.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
038
03.01.2020, 13:38 Uhr
Jens_G



Mir fehlen die Ideen, wie es zuverlässiger zu machen ist. QT5 - wer kennt sich aus? Vorerst werde ich mal wieder aufhören -- es muss erst einmal zuverlässiger sein bevor die Programmierbarkeit dazu kommt.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
039
05.01.2020, 20:42 Uhr
Jens_G



Jetzt geht mal die Ausgabe am Display -- die Eingabematrix ist noch nicht Stabil -- ein Absturz ist möglich -- Mehrfacheingaben sind möglich -- ein Eingabepuffer ist wahrscheinlich sinnvoll.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
040
06.01.2020, 23:06 Uhr
Jens_G



Ein Ringbuffer habe ich gemacht -- stürtzt jetzt weniger ab -- aber noch nicht perfekt.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
041
08.01.2020, 15:52 Uhr
Perser

Avatar von Perser

Hallo Jens,

die Displayausgabe funktioniert nicht,
bei der mehrfachen eingabe einer Zahl verändern sich die ersten 3-4 Stellen
und das Display wird nicht vollständig gelöscht.

Ausserdem ist es nicht besser eine andere Ausgabe für das Display zu nehmen
als diese Klötzchen.

Viele Grüße
Perser
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
042
08.01.2020, 22:28 Uhr
Jens_G



Ich habe eine Idee - die noch umzusetzen ist. Der PC (Programmcounter) wird ausgebremst. Indem etwa alle 1ms - 1000 Befehle ausgeführt werden. "1KHz * 1000 Befehle = 1MHz Systemtakt" -- QTimer muss eingebaut werden -- das ist etwas kompliziert eine neue Klasse einzubinden. --- ich habe es vor einem Jahr gemacht -- sollte auch wieder gehen. Der Prozessor sollte dann von der Grundlast 35% auf 10% herunter gehen.

Dann hat der Prozessor etwas mehr Zeit sich um das Display zu kümmern ;-)

Eine funktionierende *.exe habe ich veröffentlicht.

Dieser Beitrag wurde am 08.01.2020 um 22:30 Uhr von Jens_G editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
043
09.01.2020, 21:24 Uhr
Jens_G



Es funktioniert. Im 1ms Takt werden 2000 Prozessortakte abgearbeitet. Ich habe es auf meinem Rechner auf maximal 15% Auslastung geschafft. Es gab keine Abstürze und keine Fehler im Display.

Freude beim Testen wünsche ich.

Programmierbarkeit -- werde es mal angehen. Beim Einschalten >Datei< lesen. Beim Ausschalten >Datei< schreiben. Was soll geschrieben und gelesen werden ?

Bei mir ist der gesammte Adressraum in einem Array ( 16 kByte )

// K1003 ROM Image:
// 0000 .. 07FF System ROM 1
// 0800 .. 17FF gap for RAM
// 1800 .. 2000 System ROM 2
// 2000 .. 27FF Mathematics ROM
// 3000 .. 31FF Card Reader
// 3200 .. 37FF Printer ROM
// 3800 .. 3AAF Statistics ROM
// 3AB0 .. 3FFF extra RAM

Dieser Beitrag wurde am 09.01.2020 um 21:33 Uhr von Jens_G editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
044
10.01.2020, 20:07 Uhr
Jens_G





Zur Diskusion - Idee einer Darstellung -- es soll ein wenig Retro sein.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
045
11.01.2020, 05:09 Uhr
Jens_G




Zitat:
Jens_G schrieb
Es funktioniert. Im 1ms Takt werden 2000 Prozessortakte abgearbeitet. Ich habe es auf meinem Rechner auf maximal 15% Auslastung geschafft. Es gab keine Abstürze und keine Fehler im Display.

Neu: Der Aufwand im Display wurde wieder verringert - Ergebniss: CPU-Auslastung von 15% auf 9%.

Wie sagt man so schön: "Kaum macht man es richtig, dann geht was."


Dieser Beitrag wurde am 11.01.2020 um 05:12 Uhr von Jens_G editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
046
11.01.2020, 09:56 Uhr
RenéB




Zitat:
Jens_G schrieb


Zur Diskusion - Idee einer Darstellung -- es soll ein wenig Retro sein.



Wenn der Retrostil dem Original nachempfunden sein soll, dann sollte es Nixi-Style sein oder wie VQB71 aussehen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
047
11.01.2020, 11:57 Uhr
Perser

Avatar von Perser


Zitat:
RenéB schrieb
Wenn der Retrostil dem Original nachempfunden sein soll, dann sollte es Nixi-Style sein oder wie VQB71 aussehen.


ja, würde ich auch sagen.

Viele Grüße
Perser
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
048
11.01.2020, 12:22 Uhr
holm

Avatar von holm

3x5 ist kein Retro, so geschmacklos waren die Alten nicht.

Gruß,
Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
049
11.01.2020, 19:49 Uhr
Jens_G



Wie auch immer -- ich mache es mit den Linien mal so -- später möchte ich es dann so machen .. das externe Grafiken dazugeladen werden können (keine internen Grafiken, wie es in der Oberfläche ist -- das kann man dann "nur" durch kompilieren ändern).

Dann kann jeder die Grafiken austauschen, wie man es haben möchte. Nixie macht keinen Sinn, da nicht alles dargestellt werden kann.

Der Quelltext ist offen für jeden - - es darf mitgearbeitet werden.

Dieser Beitrag wurde am 11.01.2020 um 19:51 Uhr von Jens_G editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
050
11.01.2020, 22:16 Uhr
Jens_G




Ein Versuch -- auf diese Weise brauche ich meine bestehende Strucktur nicht zu sehr ändern.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
051
13.01.2020, 07:17 Uhr
Jens_G




So - vielleicht noch etwas besser - die Anzahl Bildpunkte die ich darstelle und zu verwalten habe, verdoppelt sich von 256 Punkte auf 512 Punkte -- aber gut, so erhöht sich die Lesbarkeit deutlich.

Nun gut -- die Puristen unter Ihnen wird es nicht gefallen -- mein Anspruch besteht nicht in der originalgetreuen Darstellung vom Original - sondern besonders in der Verwendbarkeit der Emulation.

Eine Frage - in der höchsten Ausbaustufe waren es 1,25KByte Programmspeicher.
1. Waren im Bereich (3AB0 .. 3FFF extra RAM) die Programme abgelegt worden?
2. Wie erkennt die SW, welche Ausbaustufe verbaut ist?

Dieser Beitrag wurde am 13.01.2020 um 07:18 Uhr von Jens_G editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
052
13.01.2020, 09:06 Uhr
holm

Avatar von holm

Hehe, Du hast faktisch endlosen Arbeitsspeicher auf dem PC zur Verfügung, verglichen mit dem was in einem K1003 steckt. Am Charactergenerator wirds sicherlich nicht liegen wenn Dir der RAM aus geht oder die "Verwaltbarkeit". 5x7 Punkte für eine Ziffernanzeige ist der Minimalstandard, getrennt durch eine Leerspalte und eine Leerzeile vom nächsten Zeichen.
Ich bin ganz sicher kein Purist, aber man kann mir auch kein X für ein U vor machen.
Wenn Deine "Verwaltung" also nicht mehr funktioniert, dann machst Du was grundsätzlich falsch. Da ich keine Ahnung habe was Du da treibst, kann ich Dir auch nicht genauer Auskunft geben. Wenn ich Purist wääre würde ich anmerken das es im Original überhaupt keine Punkte gibt, sondern Segmente und ich hatteschon weiter oben das Gefühl das Du nicht verstanden hast wie man einen einfachen 7-Seg Decoder im Programm abbildet...

Gruß,
Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 13.01.2020 um 09:08 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
053
13.01.2020, 10:31 Uhr
Jens_G



Es geht in diesem Fall nicht um die technische Machbarkeit, das auf dem PC zum laufen zu bringen, sondern um die Arbeitszeit das in den Code zu "klopfen". Jedes Frame (Pixel) hat eine Position, eine Größe .. -- da entstehen einige Programmzeilen. Es geht um den Arbeitsaufwand auf meiner Seite.

Wenn ich es "jetzt" mit 7-Segment machen würde, brauche ich wahrscheinlich mehr Zeit brauchen als einfach die Punkteanzahl zu erhöhen -- um mehr geht es nicht.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
054
13.01.2020, 11:39 Uhr
Jens_G



Mein Pixel-Font entspricht etwa einem Font von 7x11 Pixel ..
Dieser Beitrag wurde am 13.01.2020 um 11:40 Uhr von Jens_G editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
055
13.01.2020, 22:04 Uhr
Jens_G




Zur Zeit habe ich etwa 246 Frames (grafische Oberfläche) + 256 Frames (Pixel) = 502 Frames

Bin dabei die Anzahl Pixel auf 1600 zu erhöhen -- 1850 Frames. Bedeutet das etwas mehr Arbeit auf das Display zukommt .. * 3,6.

Dieser Beitrag wurde am 13.01.2020 um 22:05 Uhr von Jens_G editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
056
14.01.2020, 05:20 Uhr
Jens_G




Der Knoten im Kopf hat sich gelöst.

246 Frames (grafische Oberfläche) + 128 Frames (Pixel) = 374 Frames. Weniger Prozessorlast am Display .. * 0,75.

Was auch weniger Aufwand beim programmieren ist -- keine Änderung an der Darstellung. Später wird sich der Akku am Smartphone oder Tablet (Android oder IPad) bedanken.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
057
15.01.2020, 04:48 Uhr
Jens_G



Es gibt ein Update - "7-Segment Display" -- keine Anpassung vom Font -- reines anzeigen der 7 Segmente. CPU-Auslastung verringert auf maximal 6%.

Ich bedanke mich für die konstruktive Kritik - bitte testen.

Dieser Beitrag wurde am 15.01.2020 um 04:50 Uhr von Jens_G editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
058
15.01.2020, 21:10 Uhr
Jens_G





??? -- 5x7 Punkte für eine Ziffernanzeige ist der Minimalstandard, getrennt durch eine Leerspalte und eine Leerzeile vom nächsten Zeichen.

Weshalb das denn? -- Eine 7-Segmentanzeige wie im Original hat Charme. Jeder Balken hat exact die gleiche Fläche. Die Balken berühren sich mit maximal 4 Bildpunkten.

Dieser Beitrag wurde am 15.01.2020 um 21:19 Uhr von Jens_G editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
059
15.01.2020, 22:17 Uhr
Micha

Avatar von Micha

Ich find den ganzen Thread mehr und mehr irritierend, tut mir leid.
Ein wirklich guter Entwickler zieht sich zurück in seine Stube, bastelt bis es perfekt ist, und kommt dann mit nem 'Wow!' Ergebnis zurück. Diese Stückelei um jedes Pixel hier nervt irgendwie.
Sorry Jens, kein böser Wille, nur meine Meinung.
--
Ich möchte im Schlaf sterben, so wie mein Opa.
Nicht schreiend und kreischend wie sein Beifahrer.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
060
16.01.2020, 09:29 Uhr
Jens_G



Nun gut. Die Antworten kamen bisher von "holm" auch von "Perser" gab es nützliche Hinweise. Ich möchte ein wenig im Kontakt bleiben, mit möglichen Anwendern. Sonst passiert ab jetzt ein Jahr nichts mehr - ich habe noch ein anderes Projekt, was mir wichtiger ist.

Bitte die Software im jetzigen Stand testen. Wer programmieren möchte, verliert jede Eingabe.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
061
16.01.2020, 13:10 Uhr
Perser

Avatar von Perser

na ja, ich sag mal so, das Forum ist ja da um Erfahrung auszutauschen und zu diskutieren.
Wenn jeder im stillen Kämmerlein rumwurschtelt und dann mit der fertigen Lösung
kommt lernt keiner was und diskutieren braucht man auch nicht mehr.
Ich denke es ist schon gut wie das so läuft.

Viele Grüße
Perser
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
062
16.01.2020, 13:24 Uhr
holm

Avatar von holm

Naja..ich weiß nach wie vor nicht so recht mit was da Jens eigentlich kämpft. Die letzte QT Geschichte mit der ich zu tun hatte verwendete simpel https://doc.qt.io/qt-5/qlcdnumber.html zur Ausgabe von 7-Seg Ziffern, die Farben für Vordergrund und Hintergrund kann man natürlich beliebig anpassen ..so auch rot auf schwarz...

Gruß,
Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
063
16.01.2020, 13:48 Uhr
Perser

Avatar von Perser

Hallo Holm,
vieleicht ist es ja garnicht so schlecht mal ein paar Hinweise zu geben
um auf den richtigen Weg zu kommen, ich sag ja, man kann nur
daraus lernen. Müsste viel öfters so sein.

Viele Grüße
Perser
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
064
16.01.2020, 14:19 Uhr
Jens_G



Hallo Holm,

ich verwende https://doc.qt.io/qt-5/qframe.html. Dadurch ergeben sich viele Freiheiten und ich kann alles in https://de.wikipedia.org/wiki/Qt_Creator aufbauen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
065
16.01.2020, 15:00 Uhr
Jens_G



Überlegungen zur Lesbarkeit von 7-Segment Anzeigen findet man hier: http://www.harold.thimbleby.net/health/digitsCHI.pdf

Ich möchte die Idee aus "Figure 12b" umsetzen. Die Ziffer "1" hat auf der linken Seite etwas zu viel "Raum" - etwas nach links schieben erhöht sicherlich die Lesbarkeit.

Hat jetzt mit der Emulation wenig zu tun - ich meine, das Stück Software sollte sich von ähnlichen Projekten durch "markannte" Eigenheiten absetzen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
066
16.01.2020, 17:35 Uhr
holm

Avatar von holm

Grafikprogrammierung und C++ waren nie mein Ding. Ich habe an eine 4ma 2 Meßplätze verkauft die FreeBSD Rechner mit Touchdisplay enthalten. Die Software hat ein Freund von mir auch mit QT Creator nach meinen Vorgaben gebastelt. Von Werkstücken wurde die Dicke und das Gewicht erfaßt und das Ganze mit Charge/Typ,Zeit etc. in einer Datei gespeichert die mit FTP abgerufen werden kann. Dazu gabs
zwei 7-Seg Anzeigen auf dem Bildschirm, entsprechend groß gezogen und die Ziffern wechselten von grün nach rot wenn die Toleranzen überschritten wurden. Der Kram läuft seit ca 6-7 Jahren an einer Wasserstrahlschneidanlage.

Das was Du da mit Figure12b machen willst ist sicher eine Art Sport, ein K1003 hat Sowas nicht, sondern festes Spacing mit VQB71..

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
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