Atari Logo
Atari Computer

Hauptseite -
Welches System? -
Hardware -
Software -
Emulatoren -
Internet
MausNet
Programmieren
Verweise
Über

GDPS-Protokoll

Home Beispiele Beschreibung

4.3 Beispielprogramm

Alte Programme rufen den Scanner mit dem Befehl 0x100 (und nicht 0x200) auf. Diese Programme (z.B. tms CRANACH) nutzen noch keine virtuelle Speicherverwaltung. Daher ist die Structure SCANCOM ab der gekennzeichneten Stelle nicht definiert. Die Funktionen Dchange_pointer bzw. Dupdate sollten dann durch dummy_Funktionen im Treiber ersetzt werden.

mögliche Anwendung als ACC.

/********************************************************************/
/*    main()                                                        */
/*                                                                  */
/*    Kernstück des Programms.                                      */
/********************************************************************/

int main( void )
{
   int work_in[12],work_out[58],dummy;
   int buffer[20];

   appl_id = appl_init();

   /* öffnen eine eigenen Workstation */
   handle=graf_handle(&dummy,&dummy,&dummy,&dummy);
   for (dummy=0;dummy<10;work_in[dummy++]=1)
      ;
   work_in[10]=2;
   v_opnvwk(work_in,&handle,work_out);

   if (!rsrc_load("SCANNER.RSC"))
   {
      form_alert(0,NO_RSC_FILE);
      goto FOREVER;
   }

   if ( appl_id != -1 )
   {
      if ( !_app )
      {
         scanner_moeglichkeiten();
         menu_id = menu_register( appl_id, "  SCANNER" );
         event_loop();   /* hier wird auf den Aufruf des Treibers */
                         /* durch das Programm gewartet, der      */
                         /* Dialog wird geführt, das Bild gescannt*/
                         /* und die Werte in der
      }

   }
FOREVER: /* Initialisierung hat nicht geklappt */
   while(1)
        evnt_mesag((int*)buffer);
}

/********************************************************************/
/* Scanner initialisieren                                         */
/********************************************************************/

void scanner_moeglichkeiten()
{
   long **zeiger;
   long stack;

/********** Zeiger auf GDPS verbiegen *******************************/

   stack=Super(0);
   zeiger = (long **)0x41c;

   if (*(*zeiger+1)== 0x47445053l)
      header.next = *zeiger;
   else
      header.next = NULL;

   *zeiger = (void *)&header;
   Super((void *)stack);

/********************************************************************/

   sprintf(header.kennung,"GDPS");
   header.version          =100;
   header.typ              =0;           /* scanner */
   header.info             =info;
   header.copyright        =copyright;
   header.gerbesch         =1 | 2 | 4;   /* Gerätebeschreibungsflags */
   header.farben           =1;           /* Anzahl der Farben 0=SW   */
   header.deep             =1 | 16;      /* mögliche Bittiefen       */
   header.free             =0;
   header.befehl           =0;           /* Kommando an Scanner      */
   header.command          =&command;
}

Home Beispiele Beschreibung


Best viewed with any browser English version not yet available.

Änderungen und Irrtümer vorbehalten. Letzte Änderung:
14 September 2001.
Home - Mail an den Webmaster - Impressum