Forum: Compiler & IDEs Basic Data in C


von Sprudelstrudel (Gast)


Angehängte Dateien:

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)


Lesenswert?

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

von Joachim B. (jar)


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)


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)


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)


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)


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)


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)


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)


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)


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)


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)


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. (Gast)


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)


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)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.