Stringende Kennung

Bild Alles zum Thema Programmierung
Bild All around programming

Moderatoren: Sven, Sleepy, Wolfgang, cas, des-or-mad

Stringende Kennung

Beitragvon wwl » So 10. Nov 2013, 12:59

Hallo,

in der Atariwelt wird als Stringendezeichen nicht das Zeichen mit dem Code 0 genommen, sondern häufig das Zeichen mit dem Code $EA. Bei ersterem handelt es sich um ein Herz, bei letzterem um ein inverses kleines j.
Ich sehe keinen Vorteil von $EA gegenüber 0. Ich kann mir im Gegensatz eher vorstellen, daß man mal inversen Text ausgeben will, als ein Herzlein. Kann mich jemand aufklären?

Gruß, Wolfgang
wwl
Junior Poster
Junior Poster
 
Beiträge: 109
Registriert: Di 31. Aug 2010, 17:16

Re: Stringende Kennung

Beitragvon skriegel » So 10. Nov 2013, 13:25

Wenn ich mich bei Facebook, WhatsApp und Twitter so umschaue, sehe ich andauernd Herzen, aber bisher noch kein einziges invertiertes "j"... ;)

Sorry, mehr kann ich dazu gerade nicht beitragen. :beer:
Nächstes RENO-Treffen:
NOMAM 2019!
12.-14.04.2019
Dreifaltigkeitsgemeinde
Gemeindesaal
Schlesienring 3
23569 Lübeck

--- RENO Software ---
Benutzeravatar
skriegel
Night&Day Poster
Night&Day Poster
 
Beiträge: 2088
Registriert: Do 1. Jan 1970, 01:00
Wohnort: Hamburg

Re: Stringende Kennung

Beitragvon Sleepy » So 10. Nov 2013, 15:15

Nur eine Vermutung:

Evt. hängt es damit zusammen dass, wenn ein String mit DIM dimensioniert wird, der für den Sting reservierte Speicherbereich mit "0" gefüllt ist, unabhängig davon ob dem String an sich schon ein Inhalt zugewiesen wurde. Damit es keine Verwechslung gibt hat man vlt. ein anderes, eher selten benutztes Zeichen gewählt.

Sleeπ
Benutzeravatar
Sleepy
Night&Day Poster
Night&Day Poster
 
Beiträge: 6663
Registriert: Do 1. Jan 1970, 01:00
Wohnort: Köln

Re: Stringende Kennung

Beitragvon HiassofT » So 10. Nov 2013, 15:51

Hi!

wwl hat geschrieben:in der Atariwelt wird als Stringendezeichen nicht das Zeichen mit dem Code 0 genommen, sondern häufig das Zeichen mit dem Code $EA.

Häh? Wo wird $EA als end-of-string Zeichen genommen? Ich hör das zum ersten mal.

Unter Atari Basic gibt's kein end-of-string, die Länge des Strings wird extra gespeichert.

Die CIO Print Text Routine (command=9) verwendet EOL ($9B) als Ende Zeichen, also zumindest fast, das EOL gibt die Routine nämlich auch mit aus :)

Vor Ewigkeiten hab' ich mal Assembler Code für Print-Routinen gesehen, die das letzte Zeichen eines Strings durch ein gesetztes Bit 7 markiert haben - also das letzte Zeichen invertiert. Das lässt sich in Assembler schön mit BPL/BMI abchecken - ist letztlich aber auch unpraktisch wenn man ein EOL ausgeben will. Da lieber die normale CIO Put Routine (11) verwenden und die Länge setzen.

so long,

Hias
HiassofT
Night&Day Poster
Night&Day Poster
 
Beiträge: 1810
Registriert: Do 1. Jan 1970, 01:00
Wohnort: Salzburg

Re: Stringende Kennung

Beitragvon atarixle » So 10. Nov 2013, 17:22

Atari-BASIC benutzt, ebenso wie Pascal, kein End-Of-String-Zeichen.

Als Grund kann aufgeführt werden, dass Strings sowieso DIMensioniert oder deren Länge schneller herauszufinden ist:

Code: Alles auswählen
10 DIM A$(20)
20 A$="Hallo"
30 PRINT LEN(A$)
RUN

5


Aber der für uns alle wichtigste Grund ist, dass in Strings alles mögliche gespeichert werden kann, von reinem Text über Daten (z.B. 8- oder gar 16-Bit-Werten) bis hin zu Maschinenprogrammen, die von keinen nervenden Parsern zerstört werden können.

Das Inverse [j] war übrigens Zufall, Atari-BASIC initialisiert die Strings beim DIMensionieren nicht.

Turbo-BASIC hingegen füllt die leeren Strings mit kleinen Herzchen auf:

Code: Alles auswählen
10 REM fuehre dieses Programm einmal in Atari-BASIC und einmal in Turbo-BASIC aus
20 DIM MM$(100)
30 FOR P=ADR(MM$) TO ADR(MM$)+99
40 PRINT PEEK(p);"; ";
50 NEXT P
ABBUC in Berlin: http://www.abbuc.de/~atarixle/AIB/
FUJIAMA 2019 - Mo, 26.8. - So, 1.9.2019: http://abbuc.de/~atarixle/fuji/2019/ auch: http://abbuc.de/fujiama
Meine Seite: http://www.atarixle.de
Benutzeravatar
atarixle
Super Poster
Super Poster
 
Beiträge: 1087
Registriert: Do 1. Jan 1970, 01:00
Wohnort: Guben

Re: Stringende Kennung

Beitragvon wwl » So 10. Nov 2013, 20:42

HiassofT hat geschrieben:Häh? Wo wird $EA als end-of-string Zeichen genommen? Ich hör das zum ersten mal.

Z.B. Atari Technik Handbuch, Routine 'TXTOUT' Seite 111. Oder Sector Copy http://wiki.strotmann.de/wiki/Wiki.jsp?page=Sector%20Copy, heißt auch 'TXTOUT' arbeitet aber ein wenig anders.

Gruß, Wolfgang

PS Ich glaube ich hab's raus: Der Opcode von NOP ist $EA. Damit spart man sich das inkrementieren eines Pointers!
wwl
Junior Poster
Junior Poster
 
Beiträge: 109
Registriert: Di 31. Aug 2010, 17:16

Re: Stringende Kennung

Beitragvon wwl » So 10. Nov 2013, 20:59

atarixle hat geschrieben:Das Inverse [j] war übrigens Zufall, Atari-BASIC initialisiert die Strings beim DIMensionieren nicht.

Was heißt Zufall? Wo ist es Dir denn untergekommen?

Gruß, Wolfgang
wwl
Junior Poster
Junior Poster
 
Beiträge: 109
Registriert: Di 31. Aug 2010, 17:16

Re: Stringende Kennung

Beitragvon atarixle » So 10. Nov 2013, 21:07

hab ich bereits beantwortet
ABBUC in Berlin: http://www.abbuc.de/~atarixle/AIB/
FUJIAMA 2019 - Mo, 26.8. - So, 1.9.2019: http://abbuc.de/~atarixle/fuji/2019/ auch: http://abbuc.de/fujiama
Meine Seite: http://www.atarixle.de
Benutzeravatar
atarixle
Super Poster
Super Poster
 
Beiträge: 1087
Registriert: Do 1. Jan 1970, 01:00
Wohnort: Guben

Re: Stringende Kennung

Beitragvon wwl » So 10. Nov 2013, 22:05

atarixle hat geschrieben:hab ich bereits beantwortet

jein!
wwl
Junior Poster
Junior Poster
 
Beiträge: 109
Registriert: Di 31. Aug 2010, 17:16


Zurück zu Programmierung



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast