HALLO USER ---------------- Resourcen im Programm haben einige Vorteile. Sie sind besser geschtzt, brauchen nicht extra geladen zu werden und sind optimierbar. Mit diesem Programm kann man die in einem Resource-File abgelegten Mens und Formulare in Assemblerquelltext umwandeln. Man kann also, mit einem Resource-Editor bequem seine GEM-Graphiken erstellen, und dann in sein Programm einbinden. Wer schon mal ein Formular zu Fuž angelegt hat, weiž zu sch„tzen, was das fr eine Erleichterung ist. Gleichzeitig optimiert das Programm die TEDINFOs, so daž eine Menge Speicherplatz gespart wird. Bei der Nutzung ist Vorausetzung, daž man einen Assembler hat, der die Bezeichner fr die Labels in ganzer L„nge auswertet. Die Labels bestehen aus der Strukturbezeichnung(zB. tedinfo, ib_pmask), der Objektnummer und dem Baumbezeichner. Umgewandelt wird die Resource baumweise. Die Strukturen werden in folgender Reihenfolge abgelegt: Objektvariabelen, TEDINFOs,ICONBLKs mit Bild und Maske, BITBLKs mit Bild, C-Strings fr TEDINFOSs und ICONBLKs, C_TEXTe. Dadurch wird erreicht, daž alle Informationen fr einen Baum kompakt hintereinander stehen. Es entsteht natrlich die Gefahr, daž eine ungerade Adresse entsteht, um dies zu vermeiden kann man ein Kommando einfgen lassen, daž dann den Assembler veranlažt, auf geraden Adressen weiterzumachen. Die Koordinatenangaben der einzelnen Objekte werden pixelorientiert umgewandelt. Um die Zeilenl„nge bei C-Strings zu beeinflussen, ist es m”glich, Label und String in aufeinanderfolgenden Zeilen zu schreiben. Fr Freunde des PC-relativen-Programmierens gibt es die M”glichkeit, die Labels relativ zur Baumadresse zu setzen. Am Ende des Textes steht ein Vorschlag, wie eine Relozierungsroutine aussehen k”nnte. ********************************************************************** * * * Das vorliegende Programm RSC2ASM ist Public Domain, und kann * * frei kopiert werden. * * Wer meint, daž ihm dieses Pogramm gef„llt und das es ntzlich * * ist, sollte nicht darauf verzichten mir eine kleine finanzielle, * * PD-bliche Anerkennung zukommen zu lassen. * * Der Assemblerquelltext (Profimat ST) kann bei mir bezogen werden. * * * * Martin Kowalski * * Lbecker Str. 43 * * 0-3018 Magdeburg * * * * * ********************************************************************** Bedienungsanleitung: -------------------------- 1. Nachdem man sich das Er”ffnungsformular angesehen hat, kann man einige Voreinstellungen treffen: Buttons: -------- Labels : absolut/relativ Erkl„rung Labels/C-Strings : gleiche Zeile/n„chste Zeile siehe oben Eingaben: --------- gerade Baumadresse : Diese Zeichen werden eine Zeile vor jedem Baumlabel eingefgt. Leerzeilen : Diese Zeichen werden in jeder Leerzeile eingefgt. optimierte Tedinfos : Wenn TE_PTMPLT oder TE_PVALID auf ein ein Nullbyte zeigen, wird dieses Label dafr eingesetzt. Man muž dann aber noch ein Nullbyte mit diesem Label in seinem Quelltext reservieren. Wird kein Label angegeben erfolgt keine Optimierung. 2. Nach den Voreinstellungen l„dt man das gewnchte Resource-File. Es erfolgt keine šberprfung, ob es wirklich ein Resource-File ist. 3. Es werden jetzt alle B„ume unzentriert der Reihe nach angezeigt. Man kann ein eigenes Baumlabel angeben, den aktuellen Baum berspringen oder vorzeitig beenden. Das Formular ist verschiebbar. 4. Sind alle B„ume umgewandelt oder hat man Beenden gedrckt, brauch nur noch auf Disk abgespeichert zu werden. Wird im Fileselector Abbruch gedrckt, kommt man zum Programmende. ---------------------------------------------------------------------- Diese Routine reloziert immer nur ein Baum, aufrufen kann man sie zB.: lea tree_1,a0 bsr relo_tree relo_tree: move.l a0,d1 ; Zeiger auf Baum sichern. relo_loop: move.w 6(a0),d0 ; OB_TYPE holen ; ; Objekt auf BOXINFO testen. cmp.w #20,d0 ; G_BOX beq.s next_ob ; cmp.w #25,d0 ; G_IBOX beq.s next_ob ; cmp.w #27,d0 ; G_BOXCHAR beq.s next_ob ; ; add.l d1,12(a0) ; Zeiger in OB_SPEC relozieren. ; ; Auf C_TEXT prfen. cmp.w #26,d0 ; G_BUTTON beq.s next_ob ; cmp.w #28,d0 ; G_STRING beq.s next_ob ; ; move.l 12(a0),a1; Zeiger auf Unterstruktur holen, und add.l d1,(a1)+ ; ersten Zeiger relozieren. ; ; Auf BITBLK testen. cmp.w #23,d0 ; G_IMAGE beq.s next_ob ; ; Jetzt kann es sich nur noch um ; eine TEDINFO oder ein ICONBLK handeln. add.l d1,(a1)+ ; Die zwei folgenden Zeiger add.l d1,(a1) ; relozieren. ; next_ob: add.l #24,a0 ; Zeiger auf n„chstes Objekt setzen. btst #5,-15(a0) ; Vorhergehendes Objekt auf LASTOB prfen. beq.s relo_loop ; rts ; ;