Beiträge von Peter z80.eu

    Da ihr scheinbar selbst das Ganze nicht ausprobiert habt, sind da leider alle Antworten nur Mutmaßungen.

    Eine Übergabe mit array[][2][2] erzeugt natürlich auch einen Fehler.

    Ich glaube ich nutze meinen Workaround. Wird wohl am Compiler liegen, der ist einfach schon zu alt.


    Die Fehlermeldung bei Angabe der eckigen Klammern in der Funktionsparameterübergabe lautet:

    "Expression too complicated"

    Wir reden von einem alten C-Compiler für CP/M...


    Die Adresse (auf den Anfang des Felds) wird korrekt übergeben, habe das mit einem anderen Testprogramm extra nachgeprüft.


    Mit typedef kommen noch mehr Fehlermeldungen.


    Mit ***feld verliere ich die Möglichkeit, das als Array mit Indices in der Funktion zu benutzen.


    Ich möchte nicht einen einzigen Feldinhalt in die Funktion übergeben, sondern das gesamte Array.




    Ich habe folgenden Workaround erarbeitet, aber ich möchte eigentlich nur feld[index1][index2][index3] in der Funktion benutzen:


    #include "stdio.h"


    void funktion(char *pointer,int m,int n,int o) {


    int index1,index2,index3;


    for (index1=0;index1<m;index1++) {

    for (index2=0;index2<n;index2++) {

       for (index3=0;index3<o;index3++) {

        printf("array[%d][%d][%d] = %d\n", index1, index2, index3,

    *(pointer+index1*n*o+index2*o+index3) );

    }

    }

    }

    }


    int main() {

    char feld[2][2][3]; /* 2*2*3= 12 array fields in total */


    feld[0][0][0]=1;

    feld[0][0][1]=2;

    feld[0][0][2]=3;

    feld[0][1][0]=4;

    feld[0][1][1]=5;

    feld[0][1][2]=6;

    feld[1][0][0]=7;

    feld[1][0][1]=8;

    feld[1][0][2]=9;

    feld[1][1][0]=10;

    feld[1][1][1]=11;

    feld[1][1][2]=12;

    funktion(feld,2,2,3);


    return 0;

    }


    Damit werden alle Werte korrekt ausgegeben. Sieht aber nicht gerade elegant aus.


    P.S.: Einrückungen gehen hier bei der Forensoftware immer flöten, sorry.

    P.S. : Wenn ich das statt in Hi-Tech C in Turbo C mache, und das wie folgt abändere, geht es in Turbo C:


    01:#include "stdio.h"

    02:

    03:void funktion(char array[2][2][2], int nummer) {

    04: printf("array[%d][0][0] = %d\n", nummer, array[nummer][0][0]);

    05:}

    06:

    07:int main() {

    08: char feld[2][2][2];

    09:

    10: feld[1][0][0]=32;

    11:

    12: funktion(feld,1);

    13:

    14: return 0;

    15:}


    Das geht aber so leider nicht in Hi-Tech C.

    Habe ein Problem mit Hi-Tech C (3.09), aber vielleicht ist das gar nicht Hi-Tech spezifisch.


    Ich habe eine Funktion und ein Hauptprogramm in einer C-Quelldatei (ich lasse mal unwichtiges weg und zeige nur den "Rumpf"):


    01:#include "stdio.h"

    02:

    03:void funktion(char array[][][], int nummer) {

    04: printf("array[%d][0][0] = %d\n", nummer, array[nummer][0][0]);

    05:}

    06:

    07:int main() {

    08: char feld[2][2][2];

    09:

    10: feld[1][0][0]=32;

    11:

    12: funktion(feld,1);

    13:

    14: return 0;

    15:}



    Der Compiler mag Zeile 4 und Zeile 12 nicht.

    Wie definiere ich die Funktion ab Zeile 3, so dass ich in der Funktion selbst wieder auf das Array mit einem Index zugreifen kann ?

    Arrays sind erstmal bei Übergabe nur Adressen. Irgendwie schnallt der Hi-Tech C Compiler das aber nicht.

    Oder er kann keine mehrdimensionalen Felder übergeben.

    Stehe irgendwie auf dem Schlauch momentan.

    Du meinst sicherlich Visual BASIC, nicht Virtual Basic ;)

    Im Hobby-Bereich war und ist sicherlich auch noch Visual BASIC bis in die Gegenwart im Einsatz/beliebt.

    Kommerziell ist aber BASIC, egal welches Dialekt, schon lange tot.

    Alle großen Softwareprojekte sind meist in Java, C++ und C#, Javascript oder vor auch in Python programmiert .

    Suche mal auf github oder sf nach Softwareprojekten, die in BASIC geschrieben sind.... viel Spaß beim Suchen.


    Aber ich denke, hier im Thread ging es nicht um das "ernsthafte" Anwenden und Projekte stemmen, sondern um den hobbymässigen Einsatz.

    Da es aber um DOS ging, ist GFA BASIC oder BBC BASIC keine Option, und das Visual BASIC für DOS gab es auch nur in einer Version, bevor es den Kram nur noch für Windows gab.

    Für mich ist BASIC dennoch nur noch von historischem Belang. Aber das muss ja nicht schlecht sein. Hier geht's ja auch um historische Rechner ;)

    detlef : Das ist ein echter Sonderfall - die serielle Schnittstelle wird in (Q)BASIC tatsächlich gepuffert ausgelesen, und in genau diesem Fall würde ich auch wahrscheinlich (Q)BASIC nutzen, aber das sagt noch nichts darüber aus, ob der Rest der Sprache und des Compilers (bzw. Interpreters in diesem Fall) für alle anderen Fälle besser geeignet ist. Und oft wird halt in BASIC nur Spaghetti-Code programmiert, also alles monolitisch in einem Programm, viele GOTOs und am Besten nur globale Variablen. Nee Danke, für große Softwareprojekte ein Graus.

    Wenn man hier drei Leute fragt, bekommt man vier Antworten ... so scheint es jedenfalls ;)


    Ich würde empfehlen, bei DOS-Programmierung mit den Borland Compilern anzufangen.

    Also Turbo PASCAL oder Turbo C - die gibt's bei Embarcadero auch in einer freien Version, oder Googlen hilft dabei auch.

    Die Entwicklungsumgebung (IDE) hilft dabei erheblich, man braucht keinen zusätzlichen Editor und es ist es auch ein Debugger dabei.

    Und es gibt eine Unmenge Programmierbeispiele.


    Alles andere ist für mich exotisch bzw. brotlose Kunst. Selbst QB/QBASIC ist eher von historischem Interesse und nicht wirklich geeignet, modular und klar strukturiert arbeiten zu können.

    Was ist denn ein AT-Bus "Pre-IDE" Hard Disk Drive ? Erinnert mich an die IBM PS/2 P70 ESDI (DBA) Laufwerke irgendwie...

    Siehe auch https://blog.nicholasandre.com…-the-land-before-windows/


    P.S.: In den Kommentaren des erwähnten Blogs steht wohl eine Korrektur (scheint doch IDE zu sein, muss aber genau die Größe der eingebauten Originalplatten haben). Eingebaut ist entweder eine Conner CP2084 (80Mb) oder eine Conner CP2124 (120Mb).

    BlindGerMan : a) muss es eine Tastatur sein, wo der Ziffernblock noch vorhanden ist (Ten-Keyless-Tastaturen haben den Ziffernblock nicht, auch nicht per "FN" Taste), und b) ist das recht mühselig, immer das machen zu müssen.


    Die Idee mit dem "auf US Layout" einstellen und KEYB GR laden ist nicht schlecht, aber kostet halt wieder freies RAM, außerdem geht ja der Backslash außerhalb des MS-DOS Editors anzuwenden - da ist es mir nicht wert, so einen Aufwand zu treiben, nur damit ich den alten MS-DOS Editors (1.0/1.1) weiter nutzen kann - es gibt ja wie oben beschrieben den neuen MS-DOS Editor (der, der bei Windows 98 dabei ist).


    Ich fand das nur bemerkenswert, weil es sonst niemand bisher wohl aufgefallen ist.

    Hallo,


    bin eigentlich ganz zufrieden mit DOSBOX und den Möglichkeiten.

    Mir ist aber folgendes aufgefallen, und es lässt sich nicht wirklich durch eine Konfigurationsänderung beheben:

    In der DOSBOX-074.conf kann man beim Schlüsselwort "keyboardlayout" auch den Ländercode eingeben, sonst steht da "auto".

    Allerdings bringt das Ganze nichts, weil bereits bei "auto" die deutsche Tastatur genutzt wird.

    Der Backslash funktioniert auch auf der Kommandozeilen-Ebene, indem man folgerichtig 'AltGr' und 'ß' drückt, um '\' zu bekommen.

    So weit ist also alles in Ordnung.

    Wenn ich EDIT.COM (zusammen mit QBASIC.EXE) von MS-DOS 5.0 nutze, kommt aber im Editor immer 'ß' und kein '\'.

    Das sieht genau so aus, wenn ich die Dateien von MS-DOS 6.22 nehme.

    Erst wenn ich von Windows 98 das EDIT.COM (das eigentlich eine EXE-Datei ist, aber das ist hier nicht das Problem) nehme, also die Version 2.0 des MS-DOS Editors, dann bekomme ich wieder ein '\' und kein 'ß' mehr (bei gleichzeitig gedrückter AltGr Taste natürlich).

    Es liegt wohl an EDIT bzw. QBASIC der alten MS-DOS Versionen (5.0-6.22). Ansonsten funktionieren alle anderen Tasten (auch mit AltGr) wie gewünscht...

    Die Tastatur sieht wohl so aus:
    pc1700-tastatur.jpg


    Ich glaube nicht, dass er ein spezielles MS-DOS braucht, da der Computer (angeblich) voll IBM PC kompatibel ist.

    Auf https://www.computerwoche.de/a/whatever-ibm-does,1176112 ganz nach unten nach "Triumph Adler" Ausschau halten,

    da steht dann:

    Der Computer ist voll kompatibel zum IBM PC und erschließt den Anwendern ein überaus großes Softwarespektrum, das auf dem freien Markt angeboten wird.


    P.S.: Das Gerät würde mich zwar interessieren, habe aber keinen passenden monochromen TTL Monitor mehr, daher nein, verzichte.

    Ist jetzt nur der Wordstar deutsch und die CP/M Version ist weiterhin englischsprachig ?


    P.S.: Also ich bevorzuge nicht IMD, auch wenn diese ja noch weiterentwickelt wird. Solange TeleDisk noch läuft, kann man es auch benutzen, und da auch die DOS-Rechner und die MS-DOS Versionen nicht mehr weiterentwickelt werden, müsste das eher ein 32-Bit IMD sein, um mich hinter dem CP/M-Ofen hervorzulocken ;)

    Also die CPU läuft schon mal einwandfrei, und mit BIOS, sonst hätte er nicht gepiepst.

    Einmal lang und zweimal kurz ist das Display.

    Ich würde die ganzen (breiten) Stecker vom Display mal überprüfen, üblicherweise sind die Probleme eher schlechte Steckverbindungen und weniger schwerwiegende Probleme. Und auch mal an den Platinen von hinten "drücken", nicht kaputt drücken, aber mal beherzt halt herandrücken.

    Wie bereits erwähnt, Abholung (auch in 2 Wochen) wäre mir am Liebsten. Bin auch mit einer EGA-Karte zufrieden, Hercules wäre weniger mein Fall (nein, auch mit Monitor nicht, kein Platz hier). Ein "dd"-Backup sollte möglich sein, allerdings würde das nur auf Platten beschreibbar sein, die in der Geometrie mindestens genau so viele Spuren, Sektoren und Köpfe haben (und wenn die größer sind, wäre dann trotzdem nur 160GB nutzbar).

    Vielleicht nicht wirklich ein klassischer Computer, aber hat mir Digitalisierungen von AV-Signalen (also auch von Homecomputer) einfach gemacht - ich biete hier einen Panasonic DMR-EH575 DVD-/HDD-Rekorder mit Fernbedienung an, voll funktionsfähig - aufnahmeseitig aber noch analog (AV Composite Scart, Component Video oder oder Antenne-HF) und nicht digital.

    Der Rekorder hat eine eingebaute 160GB Festplatte, und ausgabeseitig hat er bereits (auch) einen HDMI Ausgang.

    Aufnehmen kann er nicht nur auf die Festplatte, sondern auch auf DVD+/-R,RW und DVD-RAM.

    Er hat auch einen Langzeitaufnahmemodus (LP), wo er bis zu 138 Stunden am Stück aufnehmen könnte.

    Wer von der Fernbedienung Bilder braucht, liefere ich bei Bedarf nach.


    P.S.: Im Tausch gegen PC-Kram oder gegen VB 50 Euro.

    Nur mal als Tipp... da würde auch noch eine 2MB Karte gehen, ist halt nur eine Hälfte dann u.U. ungenutzt.

    Habe ich ausprobiert. Nervig nur, dass die Knopfzellenbatterien in den Karten immer so schnell leer sind.