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 André, > > das werde ich so mal ausprobieren, momentan komme ich allerdings nicht dazu weil ich noch an dem > Projekt "FS20 gehorcht aufs Wort - Sprachsteuerung mit PC und CC2" arbeite. > > Huch, jetzt habe ich ja schon wieder was verraten ;-) > > Gruß Hansi ...und es funktioniert :-D > > > > Hallo Hansi, > > > > > der Vergleichbefehl war/ist schon korrekt geschrieben, dass die 1 in Worten eins wie ein > > > l ( el ) aussieht liegt am Zeichensatz. > > Naja. Das muß ich jetzt einmal glauben. ;-) (Obwohl: <asm> 1 I </asm>) > > > > > Das Problem bleib allerdings bestehen, im Segment 8 läuft das Programm nicht, Im Segment 3 schon. > > > Wie ich das Programm in Segment 8 gekriegt habe? > > > Wie im Buch MSR mit C-Control II beschrieben, Hexcode in ein Integerarray geschrieben. > > > Low und Highbyte selbstverständlich getauscht und vor dem Programmcode jede Menge Nops. > > > Deshalb auch die Hohe Speicheradresse von dezimal 2000. > > > > Gut. Du hast also ins "Blaue" geschrieben. ;-) > > Das Buch ist leider nicht mehr Up to Date. > > Es gibt folgende Möglichkeit, wie das ganze funzen muß: > > Du legst ein Byte-Array an und legst Dort die Routine ab. > > Dann rufst Du die Funktion <code>mem.getMemAddrByte(byte data[])</code> auf. > > Als Rückgabewert erhälst Du die Startadresse des Arrays. Diese muß gerade sein. > > (Wenn nicht, vorher einfach noch eine Byte-Var definieren.) > > Die Startadresse wäre nun gleichzeitig Deine Einsprungadresse. > > Die Adresse zum speichern für Daten übergibst Du am besten über den Stack.(zweites Array) > > > > In C2 sieht das dann so aus: > > <code> inline function xy(byte data[], byte segment, byte code[]) > > {// data ist das Datenarray > > // segment muß 8 sein > > // code wäre das Bytearray mit den ASM-Code > > inline vmcodes.VM_SYSCALL; > > } > > ... > > byte asm[1024]; > > byte Daten[48000]; > > ... > > xy(Daten,8,asm); > > ..</code> > > > > In den ASM-Routinen kannst Du nun auf das Daten-Array zugreifen, indem Du Dir > > die Startadresse vo Stack holst: > > <asm> > > OSsegment EQU 0 > > POP_R4 EQU 0765AH > > PUSH_R12 EQU 075D6H > > ... > > getxy proc far > > CALLS OSsegment,POP_R4 ;hole Array-Adresse vom Stack > > MOV R2, R4 > > Loop1: > > MOV R4, P1H > > AND R4, #080h > > SHR R4, #7 > > ADD R4, #030h > > EXTS #8. #1 > > MOVB [R2], RL4 > > CMPI1 R2, #48000 > > JMPR cc_NE, Loop1 > > POP R1 > > POP R1 > > RETS > > getxy endp > > </asm> > > > > MfG André H. > >