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] – Tippfehler entfernt. uxt | software:diy:andere:machinecodetext [18/11/2012 23:11] – Externe Bearbeitung (Unknown date) 127.0.0.1 | ||
---|---|---|---|
Zeile 46: | Zeile 46: | ||
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.\\ | 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.\\ | ||
+ | |||
Zeile 67: | Zeile 68: | ||
|010|-|026|Springt zum Ende| | |010|-|026|Springt zum Ende| | ||
|011|-|027|Esc| | |011|-|027|Esc| | ||
- | |012|Löscht | + | |012|Löscht |
|013|Zeilenumbruch|029|-| | |013|Zeilenumbruch|029|-| | ||
|014|-|030|-| | |014|-|030|-| | ||
Zeile 75: | Zeile 76: | ||
+ | ===== Mit dem Printer-Setup ===== | ||
+ | Im System-Menü hat man die Möglichkeit eine Steuersequenz für Drucker vor jedem Druck zu senden. Diese Steuersequenzen können dezimal oder alphanumerisch eingegeben werden, sie werden beim Drucken binär ausgegeben. Da man den Ausdruck im Systemmenü auch in eine Datei umleiten kann, haben wir ein Werkzeug um Binärdateien zu erstellen.\\ | ||
+ | Einschränkungen: | ||
+ | Die Steuersequenz darf höchstens 128 Bytes lang sein.\\ | ||
+ | Die erzeugte Datei ist immer zwei Bytes länger als der eingegebene Code. Es werden leider zwei Null-Bytes am Ende angehängt. Das erstellte Programm sollte unbedingt einen definierten Ausstieg besitzen (z.B.: \180\076\176\000).\\ | ||
+ | \\ | ||
+ | Als Beispiel ein einfaches "Hallo Welt!" | ||
+ | Rufen Sie das System-Menü auf, und wählen sie " | ||
+ | Ändern sie das Druckziel auf Datei und geben sie den gewünschten Dateinamen ein (z.B.: HALLO.COM).\\ | ||
+ | Nun geben sie den gewünschten Binärcode unter " | ||
+ | Zum Beispiel:\\ | ||
+ | \180\009\186\009\001\205\033\205\032\072\097\108\108\111\032\087\101\108\116\033\036\180\076\176\000 | ||
+ | Die ersten 9 Bytes sind Opcode, dann folgen die ASCII-Codes der Begrüßung, | ||
+ | Öffnen sie eine leere Textdatei im Texteditor und drucken sie sie (verwenden sie das Menü, Alt_P ist eine DOS Funktion die den Kontrollcode nicht sendet), die Datei HALLO.COM wurde erzeugt. Verlassen sie den Texteditor und starten sie HALLO.COM\\ | ||
+ | HALLO.COM ist 27 Bytes groß (null-Bytes inkl.) | ||
+ | Im obigen Beispiel wurden alle Bytes als dreistellige Dezimalzahlen eingegeben, um Platz zu sparen können alle " | ||
+ | Die Eingabe-Routine für den Anfangskontrollcode hat eine interessante Dynamik. Sie können Dezimalwerte (durch " | ||
+ | \\ | ||
+ | Man sage nicht, der Portfolio biete keine eingebauten Programmier-Möglichkeiten!\\ | ||
+ | \\ | ||
+ | ==== 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 Zeichen werden bereits während der Eingabe in die Datei USERIN.TXT geschrieben. Leider kann man die eingegebenen Zeichen nicht sehen, sie werden aber als reine ASCII-Werte gespeichert.\\ | ||
+ | Abgebrochen wird die Aufzeichnung mit < | ||
- | ===== HT2B.COM ===== | + | <note classic> |
- | HexText to BIN. Um all die Umstände und Einschränkungen zu beseitigen, sollte man sich eine Software schreiben | + | Programme, die mit Hilfe von BLINDIN eingegeben |
- | Um den Aufwand möglichst gering zu halten, sollen DOS und die eingebauten Anwendungen für das Erstellen, Laden und Speichern | + | Für das geschriebene |
- | HT2B ist 67 Bytes lang und konvertiert Hexadezimalzahlen in ASCII-Werte. Nach dem Start kann man zweistellige Hexadezimalzahlen eingeben, alle Zeichen außer 0,1,2,3, | + | </ |
+ | |||
+ | Programm-Code:\\ | ||
- | 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:\\ | 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\\ | + | 180 001 205 033 235 250\\ |
Hexadezimal: | 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\\ | + | B4 01 CD 21 EB FA\\ |
- | Das Programm HELLO.COM: | + | ===== HT2B.COM ===== |
- | Mit Hilfe der Textverarbeitung schreiben | + | Schön und gut, mit dem Printer Setup-Code haben wir also eine Möglichkeit Binärdateien zu erzeugen, |
- | B4 09 BA 09 01 CD 21 CD 20 | + | \\ |
- | 48 41 4C 4C 4F 21 24 | + | Hinzu kommt, dass die Länge des Setup-Codes auf 128 Bytes begrenzt ist, und die Eingabezeile maximal 250 Zeichen lang ist. Schlimmstenfalls kann man also nur 62 Bytes eingeben, da jedes Byte vier Zeichen lang ist (\xxx). Um mehr als nur 62 Bytes eingeben zu können, sollte man die Byte-Werte, wann immer es geht, alphanumerisch eingeben, oder man überlässt es der Eingaberoutine des Setup-Codes, |
- | . | + | \\ |
- | Die Datei speichern wir als HELLO.HEX ab. Nun geben wir in der Dos Kommando-Zeile | + | Dennoch |
- | HT2C <HELLO.HEX >HELLO.COM | + | \\ |
- | ein. HT2C wird mit den Zeichen | + | Nennen wir das Programm z.B. HT2B.COM (Hex-Text to Bin). In diesem Beispiel ist es nur 67 Bytes lang, da es nur Zeichenketten übersetzt, das Lesen und Schreiben von Dateien übernimmt DOS mit Hilfe einer Stapelverarbeitungsdatei. Aber dazu später.\\ |
\\ | \\ | ||
- | Um die Sache zu vereinfachen schreiben | + | Um zum Beispiel das oben beschriebene "Hallo Welt!" |
<code dos> | <code dos> | ||
- | @echo off | + | B4 09 BA 09 01 CD 21 CD |
- | HT2C <%1.HEX >%1.COM | + | 20 48 45 4C 4C 4F 20 57 |
+ | 4F 52 4C 44 21 24 B4 4C | ||
+ | B0 00 CD 21. | ||
</ | </ | ||
- | Nun reicht es | + | HT2B.COM soll dann alle Zeichen paarweise auswerten |
- | MC HELLO | + | HT2B selbst würde in solcher Form folgendermaßen aussehen:\\ |
- | in die Kommando-Zeile zu tippen | + | <code dos> |
- | \\ | + | B1 00 B4 07 CD 21 3C 2E |
- | + | 74 34 3C 1B 74 30 3C 30 | |
- | ===== OPCODES ===== | + | 72 F0 3C 46 77 EC 3C 39 |
- | + | 77 05 2C 30 E9 06 00 3C | |
- | + | 41 72 DF 2C 37 80 F9 00 | |
- | ==== MESSAGE.COM ==== | + | 75 0A B3 10 F6 E3 8A D0 |
- | Gibt Meldung aus.\\ | + | FE C1 EB CE 00 C2 B4 02 |
- | Dezimal:\\ | + | CD 21 B1 00 EB C4 B4 4C |
- | 180 009 186 009 001 205 033 205 032 077 069 083 083 065 071 069 036\\ | + | B0 00 CD 21. |
- | 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). | + | Aber nun müssen wir es erstmal erstellen, leider mühsam |
+ | \177\000\180\007\205!< | ||
+ | \027t0< | ||
+ | \006\000< | ||
+ | \016\246\227\138\208\254\193\235\206\000\194 | ||
+ | \180\002\205!\177\000\235\196\180L\176\000\205! | ||
- | + | Nun leiten wir die Druckausgabe in den Systemeinstellungen in eine Datei namens C:\HT2B.COM um, öffnen eine leere Text-Datei und drucken sie. Denken sie daran alle Druckereinstellungen auf " | |
- | + | Was machen wir nun damit? Was macht HT2B.COM? Starten wir es.\\ | |
- | + | \\ | |
- | + | Geben sie C:HT2B in der DOS-Befehlszeile ein und drücken sie die Eingabetaste. HT2B erkennt nur Ziffern (0 bis 9) und die Zeichen A,B,C,D,E,F und den " | |
- | + | | |
- | ==== BLINDIN.COM ==== | + | wie man sieht gibt HT2B, nachdem zwei gültige Zeichen eingegeben wurden, das entsrechende Byte aus. Um das Programm zu beenden drücken sie die < |
- | Einfache Eingabe-Routine | + | \\ |
- | Beispiel:\\ | + | Wir wollen |
- | BLINDIN> | + | <code dos> |
- | Die eingegebene Zeile wird nach Drücken der Enter-Taste | + | @echo off |
- | Programm-Code in Hexadezimal:\\ | + | if exist %1.com del %1.com |
- | B4 01 CD 21 3C 0D 74 02 EB F6\\ | + | ht2b <%1.htx > |
+ | </ | ||
+ | In der zweiten Zeile wird eine evtl. bereits oder noch vohandene Zieldatei gelöscht. In der dritten Zeile findet die Umleitung statt: HT2B erhält die Eingabe von der angegebenen *.HTX-Datei und schreibt das Ergebnis in die entsprechende *.COM Datei.\\ | ||
+ | \\ | ||
+ | Haben sie die Quelldatei HALLO.HTX wie oben beschrieben erzeugt (nie den " | ||
+ | | ||
+ | in die DOS Befehlszeile eingeben. HT2B wird dann die Datei HALLO.HTX auswerten und das Ergebnis in HALLO.COM ablegen.\\ | ||
+ | \\ | ||
+ | Unsere neue " | ||
+ | Wer das Generieren von Opcode lernen will kann sich im Internet informieren, | ||
+ | \\ | ||
software/diy/andere/machinecodetext.txt · Zuletzt geändert: 12/09/2022 21:09 von bttr