003
07.03.2024, 12:13 Uhr
jennergruhle
|
Ich habe mir neulich die Mühe gemacht, auch das BASIC zu disassemblieren. Das hat soweit geklappt, das Assembler-Produkt meines neuen Quelltextes ist 1:1 identisch mit dem Original-ROM (das ich auf VolkerP's Seite fand). Allerdings fehlen die Namen aller möglichen Prozeduren, die heißen dann einfach nur L1234 oder ähnlich. Nur die paar Namen aus dem Artikel im Buch "Mikroelektronik in der Amateurpraxis 3" konnte ich mit aufnehmen.
Ein paar Tabellen wie das Mapping BASIC-Tokens -> Adressen der Routinen fehlen noch, aber das werde ich sicher noch ergänzen.
Sehr nervig waren ein paar Dutzend Opcode-Spar-Konstruktionen darin: um immer mal wieder ein, zwei Bytes für zu sparen, wurde das erste Byte eines Zwei-Byte-Befehls vor einen anderen Ein-Byte-Befehl gesetzt, um diese unwirksam zu machen (wobei dann meist irgendein Register mit einem Wert geladen wird, der später egal ist):
; Opcode-Spar-Konstruktion ; 0df8 3EE1 LD A,0E1H ; 0dfa 7E LD A,(HL) ; bzw. ; 0df8 E1 POP HL ; 0dfa 7E LD A,(HL) 1CF8: 3E db 3eh 1CF9: E1 L0DF9: POP HL 1CFA: 7E L0DFA: LD A,(HL) Das sparte dann eins der zwei Bytes für einen relativen Sprung (JR xx, hier von 1CF8 zu 1CFA).
Hat jemand eventuell noch andere Quellen für das HBASIC 3.3? Oder Interesse an meinem De-Assemblat?
Edit: Ich sehe gerade, meins ist das für den Hübler-Grafik-MC. Der andere (Hübler/Evert-PC) hatte ja gar kein publiziertes BASIC, soweit ich erkennen kann. Ich weiß auch nicht, ob das HBASIC jemals für den Hübler/Evert-PC verwendet wurde. Dieser Beitrag wurde am 07.03.2024 um 12:20 Uhr von jennergruhle editiert. |