Topic : TOS - das Betriebssystem Author : Version : tos.hyp (5. März 2013) Subject : Programmieren/Atari Nodes : 3001 Index Size : 93602 HCP-Version : 5 Compiled on : Atari @charset : atarist @lang : @default : Titel @help : @options : +g -i -s +x +zz -t4 @width : 70 View Ref-File14.2.1.6 testmps.s TOS * FS 15.08.96 * * ============================================================= * Beispiel für den Aufruf der MPS-Funktionen von Motorola aus * ============================================================= * * Quelle Windows-seitig: * ---------------------- * mps_base.cpp, mps_demo.cpp * mps_code .equ $4fbf * !! NICHT ÄNDERN !! DLL_ID .equ $01020304 * hier eigene DLL_ID eintragen * -------------------------------------- 60 Bytes Puffer bufsize .equ 60 .bss .even buffer: ds.w bufsize * -------------------------------------- * * ------------------- Hier gehts los: --------------------------------- * .text .globl _main _main: moveq #-1,d0 * d0 auf -1 (zum Testen) * =========================== * Funktion 0 (Demo_0) aufrufen: dc.w mps_code * = $4fbf dc.l DLL_ID * = eigene DLL_ID dc.w 0 * Funktionsnummer (hier 0) * =========================== cmpi.l #1,d0 * müßte 1 zurückliefern bne fertig * Beispiel für Aufruf mit Parametern (copy_string) * ---------------------------------- movea.l #buffer,a0 * Zeiger auf Puffer für String move.l #bufsize,d0 * Max. Stringlänge (incl.0-Byte). * =========================== * Funktion 4 (copy_string) aufrufen: dc.w mps_code * = $4fbf dc.l DLL_ID * = eigene DLL_ID dc.w 4 * Funktionsnummer (hier 4) * =========================== bsr put_line * Zeile (a0) ausgeben fertig: bsr wait * Auf Tastendruck warten rts * * --------------------- ENDE Hauptroutine _main ------------------------ * * ------------------------ Zeile (a0) ausgeben ----------------------- put_line: moveq #13,d0 bsr put_char moveq #10,d0 put_lnext: bsr put_char move.b (a0)+,d0 bne put_lnext rts * ------------------------ Zeichen d0 ausgeben ----------------------- put_char: movem.l d0-d2/a0-a2,-(sp) move.w d0,-(sp) move.w #2,-(sp) move.w #3,-(sp) trap #13 addq.l #6,sp movem.l (sp)+,d0-d2/a0-a2 rts * -------------------------- auf Tastendruck warten. -------------------- wait: move.w #2,-(sp) move.w #2,-(sp) trap #13 addq.l #4,sp rts Querverweise: MagiC PC-Schnittstelle