mikrocontroller.net

Forum: Compiler & IDEs Basic Data in C


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Sprudelstrudel (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich hätte da mal eine dumme Frage, wie würde man die Basic Befehle Read 
und Data in C schreiben? Ich hatte am Wochenende ein Gespräch über alte 
Homecomputer und Basic, und da bin ich darüber gestolpert. Da gab es 
doch auch so einen Restore Befehl? Leider habe ich auf meinem Computer 
kein Basic 4.5 sonst würde ich da die Hilfe Funktion bemühen..

Äh Zusatzfrage: Wie könnte ich das damals von mir sehr geschätzte und 
geliebte Qbasic 4.5 auf einem Linux Mint Laptop zum laufen bekommen?

von planlos (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo, die 80er haben angerufen, und wollen ihr Basic inkl. 
ausgestorbener Hardware zurück ;-)

von Joachim B. (jar)


Bewertung
0 lesenswert
nicht lesenswert
Sprudelstrudel schrieb:
> Ich hätte da mal eine dumme Frage

stimmt, zumal kaum einer weiss wie READ & DATA auf deinem Dragon 
umgesetzt ist.

In C wäre DATA nur ein uint8_t array_name_nach_wunsch[] = { 1,2,3,...};

supertape für dragon32 könnte was sein, habe ich aber nicht gefunden.
https://en.wikipedia.org/wiki/Dragon_32/64

von Chris (Gast)


Bewertung
0 lesenswert
nicht lesenswert
#define DATA char datas[]=
char *data=datas;
#define read() *data++
#define reset() data=datas

Ansonsten https://www.qb64.org/portal/

von Joachim B. (jar)


Bewertung
0 lesenswert
nicht lesenswert
Chris schrieb:
> #define DATA char datas[]=

würde ich bei Bytes nicht machen, char ist zu oft signed und endet bei 
127, wählt man unsigned char stolpern mache Compiler oder Routinen.
Ein Byte ist nun mal kein char sondern ein uint8_t im Wertebreich von 
0-255.

Will man wirklich nur Bytes in ein Array lesen sollte man sie auch so 
behandeln und nicht als Char. Manche C-Compiler kennen sogar Byte.

von Jim M. (turboj)


Bewertung
0 lesenswert
nicht lesenswert
Sprudelstrudel schrieb:
> Leider habe ich auf meinem Computer
> kein Basic 4.5 sonst würde ich da die Hilfe Funktion bemühen..

Das moderne Equivalent ist die google Suche...

Passende Suchbegriffe finden read und data für den C64. Scheit alles 
speizfisch für C64 Basic zu sein.

Übrigen sollte sich auch in Linux Mint ein C64 Emulator installieren 
lassen. Dann muss man allerdings auch noch die passende Software der 
Brotkiste beschaffen.

von chris (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Joachim B. schrieb:
> Chris schrieb:
>> #define DATA char datas[]=
>
> würde ich bei Bytes nicht machen, char ist zu oft signed und endet bei
> 127, wählt man unsigned char stolpern mache Compiler oder Routinen.
> Ein Byte ist nun mal kein char sondern ein uint8_t im Wertebreich von
> 0-255.
>
> Will man wirklich nur Bytes in ein Array lesen sollte man sie auch so
> behandeln und nicht als Char. Manche C-Compiler kennen sogar Byte.

Ich würde int machen, eventuall sogar als long long, da aber vorher 
schon char empfohlen wurde, habe ich es als char reingeschrieben.

von Michael Gugelhupf (Gast)


Bewertung
0 lesenswert
nicht lesenswert
chris schrieb:
> Ich würde int machen, eventuall sogar als long long, da aber vorher
> schon char empfohlen wurde, habe ich es als char reingeschrieben.

Signed 16-Bit int kommt dem historischen Vorbild wahrscheinlich am 
nächsten.

: Wiederhergestellt durch Moderator
von Joachim B. (jar)


Bewertung
-1 lesenswert
nicht lesenswert
Michael Gugelhupf schrieb:
> Signed 16-Bit int kommt dem historischen Vorbild wahrscheinlich am
> nächsten.

für einen: "Der Motorola 6809 ist ein 8-Bit-Mikroprozessor"?
https://de.wikipedia.org/wiki/Dragon_32,_Dragon_64
https://de.wikipedia.org/wiki/Motorola_6809

von Dirk B. (dirkb2)


Bewertung
0 lesenswert
nicht lesenswert
Joachim B. schrieb:
> Michael Gugelhupf schrieb:
>> Signed 16-Bit int kommt dem historischen Vorbild wahrscheinlich am
>> nächsten.
>
> für einen: "Der Motorola 6809 ist ein 8-Bit-Mikroprozessor"?

Ja und? Dürfen da denn keine (BASIC-)Int stehen?

Hab gerade mal in einem uralten C64-Basic Programm nachgeschaut. Die 
Werte waren größer als 127 und auch kleiner als -127.

: Bearbeitet durch User
von Joachim B. (jar)


Bewertung
0 lesenswert
nicht lesenswert
Dirk B. schrieb:
> Ja und? Dürfen da denn keine (BASIC-)Int stehen?

dürfen schon, müssen?

Data Zeilen unter Basic sah ich nur welche die mit Poke geschrieben 
wurden und waren immer im Wertebreich 0-255 für Maschinenteile.
Sonst sah man Data selten, ich jedenfalls nie auf dem CBM, apple2+, 
PC1500.

von Michael Gugelhupf (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Joachim B. schrieb:
> Dirk B. schrieb:
>> Ja und? Dürfen da denn keine (BASIC-)Int stehen?
>
> dürfen schon, müssen?
>
> Data Zeilen unter Basic sah ich nur welche die mit Poke geschrieben
> wurden und waren immer im Wertebreich 0-255 für Maschinenteile.
> Sonst sah man Data selten, ich jedenfalls nie auf dem CBM, apple2+,
> PC1500.

Ich verrate dir mal was. Bei anständigen BASIC-Interpretern durfte da 
gemischt jeder fundamentale Datentyp stehen den der Interpreter kannte, 
sogar Strings und Floats. Kannst du in C mit einer Union hindengeln. 
Viel Spaß.

Jetzt rate mal, was der fundamentale Integer-Datentyp auf 8-Bit 
BASIC-Computern normalerweise war? Rischtischhhhh, signed 16-Bit int.

: Wiederhergestellt durch Moderator
von Joachim B. (jar)


Bewertung
-1 lesenswert
nicht lesenswert
Michael Gugelhupf schrieb:
> Jetzt rate mal, was der fundamentale Integer-Datentyp auf 8-Bit
> BASIC-Computern normalerweise war? Rischtischhhhh, signed 16-Bit int.

das mag ja alles sein, trotzdem ist mir bei den genannten Compis nie ein 
Data Wert über 255 begegnet oder gar -127.

Halten wir fest du hast Recht weil du es brauchst.

zum Topic
Sprudelstrudel schrieb:
> Äh Zusatzfrage: Wie könnte ich das damals von mir sehr geschätzte und
> geliebte Qbasic 4.5 auf einem Linux Mint Laptop zum laufen bekommen?

https://forums.linuxmint.com/viewtopic.php?t=300602

e.i., einfach installieren :)

ich warte auf die nächste Salamischeibe, vielleicht für ARM statt x86?

: Bearbeitet durch User
von Nick M. (muellernick)


Bewertung
0 lesenswert
nicht lesenswert
Joachim B. schrieb:
> das mag ja alles sein, trotzdem ist mir bei den genannten Compis nie ein
> Data Wert über 255 begegnet oder gar -127.

Ja, weil da halt dann Maschinencode definiert wurde.

von Hmmm (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Der C64 hat das ohnehin einfach als Text abgelegt.

10 READ A,B,C
20 PRINT A,B,C
30 DATA 1,2,3

wird zu:

C:0800  00 0d 08 0a  00 87 20 41   ...... A
C:0808  2c 42 2c 43  00 19 08 14   ,B,C....
C:0810  00 99 20 41  2c 42 2c 43   .. A,B,C
C:0818  00 25 08 1e  00 83 20 31   .%.... 1
C:0820  2c 32 2c 33  00 00 00 41   ,2,3...A
C:0828  00 81 00 00  00 00 42 00   ......B.
C:0830  82 00 00 00  00 43 00 82   .....C..
C:0838  40 00 00 00  00 00 00 00   @.......

von Oliver S. (oliverso)


Bewertung
0 lesenswert
nicht lesenswert
Joachim B. schrieb:
> für einen: "Der Motorola 6809 ist ein 8-Bit-Mikroprozessor"?

Der allerdings intern mit 16 bit rechnen konnte.

Joachim B. schrieb:
> das mag ja alles sein, trotzdem ist mir bei den genannten Compis nie ein
> Data Wert über 255 begegnet oder gar -127.

Was daran lag, das peek und poke Bytes gelesen bzw. geschrieben haben, 
und ein Byte war auch damals schon 8 Bit.

Oliver

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.