Für dieses Forum muß Javascript im Browser aktiviert werden!
Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > Hallo Thomas, > > > ich möchte in Assembler einen kurzen Text in das Display schreiben. Im dissasemblierten OS habe ich > > gefunden, wie man etwas auf das Display der CC2 schreiben kann. Mit dem folgenden kleinen ASM-Code > > kann ich jeden beliebigen String, der sich bereits im Speicher der CC2 befindet in das Display > > schreiben: > > ... > > CALLS 35284 ;Routine zum Schreiben > > Diese Routine, also <asm>089D4h</asm> ist nur zum schreiben von Festtexten auf > das interne LCD welche in Segment 0 stehen. Also für Statusmeldungen des OS. > Bis OSOPT V3.0 sind diese Routinen zwar noch zum Teil vorhanden, jedoch > werde ich diese ab OSOPT V3.1 entfernen, da ich den Speicherplatz für andere > Erweiterungen benötige. (z.B. für die Implementierung von sys0002.hex im OS) > Seit OSOPT V3.0 werden diese LCD-Routinen auch nirgends mehr aufgerufen. > > > ... > > Wo liegt der Bereich für section data? > gibt es hier nicht. > > > Oder werden Variablen generell anders definiert? > > Es gibt unter Assembler keine Variabeldefinitionen. > Die ist eine Erfindung der Hochsprachen. > Du kannst nur Labels definieren welche für bestimmte Zahlen stehen, > welchen man wieder z.B. als Speicheradressen benutzen kann. > Der Speicherzugriff erfolgt in ASM direkt. > Jedoch kannst Du hier nur Segment 8 für einen wahlfreien Zugriff benutzen. > Beachte aber, daß Du nicht beliebige Bereiche von Segment 8 benutzen darfst, > da hier auch die Variablen vom C2 Programm, sowie Daten des Betriebsystems > abgelegt werden. (z.B. Thread-Infos) > Daher solltest Du in C2 ein entsprechend großes Array definieren und die Startadresse > Deiner ASM-Routine übergeben, damit Du weißt, ab wo Du den RAM gefahrlos > benutzen kannst. > > Um wieder auf Deinen Wunsch zurückzukommen, Text auf dem Mini-LCD auszugeben, > solltest Du Dir im OS <code>.VM_LCD | (vmcodes.LCD_PRINT << 8)</code> > zu Gemüte führen. > > VM_LCD liegt an Offset 091DEh. > LCD_PRINT ist der Sub-Code 9 > Die Print-Routine liegt also an Offset 09274h. > (Sprungtabellen sind etwas feines :-) ) > Die eigentliche Print-Routiene liegt aber an Offset 08beeh und benötigt als zwei Parameter: > In R12 die Startadresse im RAM(Segment8) des Strings und in R13 die Anzahl der Zeichen. > > Allerdings habe ich dies noch nicht aus ASM direkt aufgerufen und getestet. > > MfG André H.