software:diy:andere:machinecodetext
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision | ||
software:diy:andere:machinecodetext [01/10/2006 00:10] – ergänzt. uxt | software:diy:andere:machinecodetext [18/11/2012 23:11] – ergänzt uxt | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Maschinensprache ohne Programmiersoftware ====== | ||
- | Zu beginn der ATARI-Portfolio-Ära waren Interfaces, Speicherkarten und Software schwer erschwinglich, | ||
- | |||
- | Das Problem:\\ | ||
- | Programme sind als Binär-Code gespeichert, | ||
- | |||
- | Damit ist das Problem aber nicht gelöst, viele der so eingegebenen Codes werden von der DOS-Befehlszeile und vom Texteditor als Sonderzeichen interpretiert, | ||
- | |||
- | Um dies zu umgehen muß der gewünschte Code geändert werden. Soll ein Prozessor-Register den Wert 13 (0Dh) enthalten muß man zum Beispiel erst den Wert 14 übergeben und ihn nacher um 1 reduzieren. Dies ist natürlich nicht gerade elegant, aber der einzige Weg. Um sinnvoll zu arbeiten sollte man sich als erstes ein Tool schreiben, mit dem das Eingeben von Bytes jeglichen Wertes möglich ist. Aber dazu später.\\ | ||
- | |||
- | Zunächst ein paar Beispiele um zu beweisen, daß es geht und um ein Bißchen Motivation zu bringen.\\ | ||
- | |||
- | |||
- | ===== Mit dem ECHO-Befehl ===== | ||
- | In der DOS-Befehlszeile schreiben wir mit Hilfe des ECHO-Befehls ein Programm das die Meldung “Hallo!” herausgibt. Der Programm-Code ist wie folgt (dezimal): | ||
- | |||
- | 180 009 186 009 001 205 033 205 032 072 065 076 076 079 033 036\\ | ||
- | |||
- | Tippen sie ECHO, gefolgt von einer Leerstelle, schalten sie die Tastatur auf numerisch um (Fn_N). Nun halten sie die Alt-Taste gedrückt solange sie die drei-stelligen ASCII-Codes eingeben.\\ | ||
- | |||
- | Alt_180 TAB Alt_186 TAB Alt_001 Alt_205 ! Alt_205 Alt_032\\ | ||
- | |||
- | Schalten sie die Tastatur wieder zurück (Fn_N) und vervollständigen sie die Zeile: | ||
- | |||
- | HALLO!$> | ||
- | |||
- | Die Befehlszeile sieht dann so aus:\\ | ||
- | ECHO ┤ ║ | ||
- | |||
- | Nun drücken sie Enter und die Byte-Folge wird in die Datei HALLO.COM umgeleitet.\\ | ||
- | Geben sie nun HALLO als Befehl ein und\\ | ||
- | HALLO! | ||
- | erscheint auf dem Bildschirm.\\ | ||
- | |||
- | Dank des ">" | ||
- | |||
- | ^^ASCII^Funktion^ | ||
- | |000|Wird ignoriert.| | ||
- | |003|Strg_C: | ||
- | |008|BS: Löschtaste.| | ||
- | |013|Enter: Eingabe beenden.| | ||
- | |019|Wird ignoriert.| | ||
- | |027|ESC: Abbruch.| | ||
- | |060|<: DOS.| | ||
- | |062|>: DOS.| | ||
- | |||
- | Manche dieser Bytes könnte man mit dem Text-Editor nachträglich einfügen. Dieser hat aber wiederum Probleme mit anderen Bytes, Vorsicht ist geboten. Die Meldung des Programms HALLO.COM kann allerdings problemlos mit dem Text-Editor auf bis zu einer Länge von 214 Bytes verlängert werden.\\ | ||
- | |||
- | |||
- | ===== Mit dem Text-Editor ===== | ||
- | Portfolios Textverarbeitung kann man eine Menge zumuten, nicht aber Binär-code. Glaubt man. Mit ein paar Einschränkungen und Tricks kann man allerdings *.COM Programme schreiben!\\ | ||
- | | ||
- | | ||
- | Nun können sie die Meldung " | ||
- | |||
- | ^^ASCII^Funktion^ASCII^Funktion^ | ||
- | |000|-|016|-| | ||
- | |001|Cursor springt auf POS1|017|-| | ||
- | |002|Löscht rückwärts bis Zeilenanfang|018|Text-Editor: | ||
- | |003|-|019|Text-Editor: | ||
- | |004|-|020|-| | ||
- | |005|Löscht bis Zeilenende|021|-| | ||
- | |006|-|022|-| | ||
- | |007|Text-Editor: | ||
- | |008|Korrekturtaste, | ||
- | |009|TAB|025|-| | ||
- | |010|-|026|Springt zum Ende| | ||
- | |011|-|027|Esc| | ||
- | |012|Löscht gesmate Zeile|028|-| | ||
- | |013|Zeilenumbruch|029|-| | ||
- | |014|-|030|-| | ||
- | |015|-|031|-| | ||
- | |||
- | Der Text-Editor kann nur Zeilen bis zu einer Länge von 250 Zeichen verarbeiten, | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | ===== HT2B.COM ===== | ||
- | HexText to BIN. Um all die Umstände und Einschränkungen zu beseitigen, sollte man sich eine Software schreiben die z.B. in Textform geschriebene Hexadezimal-Ketten in Binärdateien übersetzt.\\ | ||
- | Um den Aufwand möglichst gering zu halten, sollen DOS und die eingebauten Anwendungen für das Erstellen, Laden und Speichern von Dateien und Programmen genutzt werden.\\ | ||
- | HT2B ist 67 Bytes lang und konvertiert Hexadezimalzahlen in ASCII-Werte. Nach dem Start kann man zweistellige Hexadezimalzahlen eingeben, alle Zeichen außer 0, | ||
- | |||
- | Dieser Quellcode enthält kritische Bytes, sowohl für die Kommando-Zeile (bzw. den ECHO-Befehl) als auch für die Textverarbeitung. Deshalb sollt die Eingabe blind (mit BLINDIN.COM) erfolgen.\\ | ||
- | Dezimal:\\ | ||
- | 016 177 000 186 000 000 180 007 205 033 060 046 116 051 060 057 119 005 044 048 233 006 000 060 065 144 227 044 055 122 249 001 116 010 246 038 000 000 138 208 177 001 235 210 000 194 233 000 000 180 002 205 033 177 000 235 197 000 000\\ | ||
- | |||
- | Hexadezimal: | ||
- | 10 B1 00 BA 00 00 B4 07 CD 21 3C 2E 74 33 3C 39 77 05 2C 30 E9 06 00 3C 41 72 E3 2C 37 80 F9 01 74 0A F6 26 00 01 8A D0 B1 01 EB D2 00 C2 E9 00 00 B4 02 CD 21 B1 00 EB C5 00 00\\ | ||
- | |||
- | |||
- | Das Programm HELLO.COM: | ||
- | Mit Hilfe der Textverarbeitung schreiben wir die Quelldatei in HEX-Zeichen: | ||
- | B4 09 BA 09 01 CD 21 CD 20 | ||
- | 48 41 4C 4C 4F 21 24 | ||
- | . | ||
- | Die Datei speichern wir als HELLO.HEX ab. Nun geben wir in der Dos Kommando-Zeile | ||
- | HT2C < | ||
- | ein. HT2C wird mit den Zeichen von HELLO.HEX gefüttert und die Antwort wird in HELLO.COM geschrieben, | ||
- | \\ | ||
- | Um die Sache zu vereinfachen schreiben wir uns die Batch-Datei MC.BAT:\\ | ||
- | <code dos> | ||
- | @echo off | ||
- | HT2C <%1.HEX >%1.COM | ||
- | </ | ||
- | Nun reicht es | ||
- | MC HELLO | ||
- | in die Kommando-Zeile zu tippen und der Code wird geschrieben. | ||
- | \\ | ||
- | |||
- | ===== OPCODES ===== | ||
- | |||
- | |||
- | ==== MESSAGE.COM ==== | ||
- | Gibt Meldung aus.\\ | ||
- | Dezimal:\\ | ||
- | 180 009 186 009 001 205 033 205 032 077 069 083 083 065 071 069 036\\ | ||
- | Die ersten 9 Bytes sind Opcode, der Rest ist der Text der Meldung, in diesem Fall " | ||
- | Dieses Programm kann mit dem Text-Editor bearbeitet werden, der Text (ab Byte 10) kann dann bis zu 226 Zeichen lang sein (ASCII 009 ist der Tabulator, in der Textverarbeitung 8 Zeichen breit, in der DOS-Befehlszeile 4). | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | ==== BLINDIN.COM ==== | ||
- | Einfache Eingabe-Routine die Zeichen nicht übersetzt (anders als ECHO), zur Eingabe von ASCII-Werten mit der numerischen Tastatur (Alt_nnn). Durch Umleiten in eine Datei lassen sich so ASCII-Werte auch unter 32 eingeben.\\ | ||
- | | ||
- | BLINDIN> | ||
- | Die eingegebene Zeile wird nach Drücken der Enter-Taste in die Datei USERIN.TXT geschrieben. Leider kann man die eingegebenen Zeichen nicht sehen, sie werden aber als reine ASCII-Werte gespeichert. Nur der ASCII-Wert 0Dh (013) kann nicht übergeben werden, er dient zur Beendung der Eingabe.\\ | ||
- | Programm-Code: | ||
- | |||
- | Dezimal:\\ | ||
- | 180 001 205 033 060 013 116 002 235 246\\ | ||
- | |||
- | Hexadezimal: | ||
- | B4 01 CD 21 3C 0D 74 02 EB F6\\ | ||
software/diy/andere/machinecodetext.txt · Zuletzt geändert: 12/09/2022 21:09 von bttr