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.5 mps_demo.cpp TOS // Tabsize: 3 // Letzte Änderung: 15.08.96 // Autor: FS // ------------------------------------------------------------------------------ // Demobeispiel zu MagiC PC - Programmier-Schnittstelle (MPS) // // Teil 2: Benutzer-definierte Funktionen, frei änderbar. // ======= // // ------------------------------------------------------------------------------ #include "windows.h" #include "mps_base.h" #include "mps_demo.h" MPS_magicinfo m_info; // global für die DLL // // Liste der benutzerdefinierten Funktionen (nach Bedarf ändern/erweitern): // ----------------------------------------------------------------------- static void demo_0(MPS_motregs *r); static void demo_1(MPS_motregs *r); static void demo_3(MPS_motregs *r); static void copy_string(MPS_motregs *r); MPS_fuptr my_funclist[] = { demo_0, // Demo-Funktion 0 demo_1, // Demo-Funktion 1 (MPS_fuptr) -1, // -1 (d.h Funktion Nummer 2 nicht definiert) demo_3, // Demo-Funktion 3 copy_string, // Demo-Funktion 4 NULL // !! Am Listenende ein NULL-Eintrag !! } ; // ******************************************************************************* // // Hier die benutzerdefinierten Funktionen: // ======================================== // // Demo_0 liefert nur in d0 den Wert 1 zurück: // static void demo_0(MPS_motregs *r) // ---------------------- { r->d0 = 1; // Demo-0 setzt d0 auf 1 return; } // Demo_1 addiert die Register d1 und d2; Ergebnis nach d0: // static void demo_1(MPS_motregs *r) // ---------------------- { r->d0 = r->d1 + r->d2; return; } // Demo_3 tut gar nichts: // static void demo_3(MPS_motregs *r) // ---------------------- { return; } // Demo-Routine4 copy_string kopiert einen String in den Motorola-Adressraum: // ----------- // a0: Ziel-Adresse, // d0: Maximalzahl der Zeichen (incl. 0) // static void copy_string(MPS_motregs *r) // ----------------------- { static char string[] = "Dies ist ein Demo-Text von copy_string(..)"; int i, nchmax; char *ziel; nchmax = (int) r->d0; ziel = (char *) (*m_info.intel_ptr)(r->a0); if (nchmax<=0 || ziel==NULL) return; // ungültig? for (i=0; i<nchmax; i++) { if ((ziel[i] = string[i])==0) return; } ziel[nchmax-1] = 0; // zu lange->abschneiden return; } Querverweise: MagiC PC-Schnittstelle