ATASCII->Intern: Hilfe vom OS?
ATASCII->Intern: Hilfe vom OS?
von mp-one » Di 3. Jul 2007, 08:21
Hallo Leute,
gibt es eigentlich eine OS-Routine oder Tabelle, mit der man ATASCII-Zeichen in die interne Darstellung wandeln kann? Für die Wandlung von Tastaturcode (Peek 764) gibt es ja eine Tabelle bei Adresse 64337 ($FB51). Ich möchte einen String per Assembler direkt in den Bildschirmspeicher schreiben aber da brauchts ja den internen Code.
Gruß,
Michael
von atarixle » Di 3. Jul 2007, 09:26
Ich bin zwar kein Assembler-Programmierer, aber meines Wissens nach gibt es eine solche Tabelle nicht. Ich schätze mal, dass man sich das gespart hat, weil sich ATASCII und ASCII nur in einzelnen Bits unterscheiden.
von mp-one » Di 3. Jul 2007, 09:55
atarixle hat geschrieben:Ich bin zwar kein Assembler-Programmierer, aber meines Wissens nach gibt es eine solche Tabelle nicht. Ich schätze mal, dass man sich das gespart hat, weil sich ATASCII und ASCII nur in einzelnen Bits unterscheiden.
Hi, ja schon richtig. Aber die Umrechnerei kostet halt Zeit, mal von der Frage abgesehen, warum es überhaupt dreierlei Codierungen (Intern, ATASCII und Tastaturcode) der Zeichen gibt...
Gruß,
Michael
von atarixle » Di 3. Jul 2007, 20:12
Ich schätze mal, damit ein mit Nullen gefüllter Bildschirm auch im Text-Modus wirklich leer ist ...
Ich weiß ja nicht, was für ein Programm du schreiben willst, aber falls du den Zeichensatz dazu ändern willst, dann kannst du die Zeichenmuster im ASCII-Standard im Speicher ablegen. Dann kannst du Text auch direkt den Bildschirm poken. Du musst dann beachten, dass du dann einen neuen Bildschirm erst mit Leerzeichen (32=$20) füllen musst.
von pps » Di 3. Jul 2007, 20:27
Wenn es Dir um das Schreiben von irgendeinem (konstantem - oder besser vorher schon bekanntem) Text geht, bieten die meisten Assembler an, den Code gleich im Internen Code zu assemblieren.
Im Biboassembler geht das z.B. mit .AT "text" bei XASM/MADS mit dta d'text'.
von mp-one » Di 3. Jul 2007, 22:34
Hallo atarixle und pps,
ich wollte mir eine schnelle Routine basteln, die an einer beliebigen x,y-Position einen beliebigen String ausgeben kann. Vermutlich muss ich die Wandlung dann doch selbst programmieren. Das wäre keine Katastrophe, aber es hätte ja immerhin sein können, dass da irgendwo eine Tabelle oder Wandlungsroutine im guten alten ATARI schlummert. Eine Wandlung von intern->ATASCII gibt es immerhin. Die wird, glaube ich, z.B. für den LOCATE-Befehl verwendet. Eine Tabelle von Tastaturcode->ATASCII ist ja auch vorhanden...
Beste Grüße,
Michael
von mp-one » Di 3. Jul 2007, 23:20
Hallo nochmal,
habe jetzt unter
www.atariarchives.org im Buch "ATARI Roots" eine ASM-Routine dazu gefunden. Oh oh, wenn man bedenkt, dass man an einem Problem sitzt, das jemand vor fast 25 Jahren (1984) auch schon hatte und auch gelöst hat..... Aber das ist eben der Spaß am ATARI Hobby

!
ATASCII->INTERNAL:
000-031 -> +64
032-095 -> -32
096-127 -> =
128-159 -> +64
160-223 -> -32
224-255 -> =
Gruß,
Michael