•  Back 
  •  mec0 (MPS) Schnittstelle 
  •  Index 
  •  Tree View 
  •  Cross references 
  •  Help page 
  •  Show info about hypertext 
  •  View a new file 
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