trap-main.c

00001 /* Trap example for 68HC11
00002    Copyright (C) 1999, 2001, 2002 Free Software Foundation, Inc.
00003    Written by Stephane Carrez (stcarrez@nerim.fr)       
00004 
00005 This file is free software; you can redistribute it and/or modify it
00006 under the terms of the GNU General Public License as published by the
00007 Free Software Foundation; either version 2, or (at your option) any
00008 later version.
00009 
00010 In addition to the permissions in the GNU General Public License, the
00011 Free Software Foundation gives you unlimited permission to link the
00012 compiled version of this file with other programs, and to distribute
00013 those programs without any restriction coming from the use of this
00014 file.  (The General Public License restrictions do apply in other
00015 respects; for example, they cover modification of the file, and
00016 distribution when not linked into another program.)
00017 
00018 This file is distributed in the hope that it will be useful, but
00019 WITHOUT ANY WARRANTY; without even the implied warranty of
00020 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00021 General Public License for more details.
00022 
00023 You should have received a copy of the GNU General Public License
00024 along with this program; see the file COPYING.  If not, write to
00025 the Free Software Foundation, 59 Temple Place - Suite 330,
00026 Boston, MA 02111-1307, USA.  */
00027 
00052 #include "trap.h"
00053 
00054 extern int global_result;
00055 
00056 int
00057 main()
00058 {
00059   int result;
00060   int failed;
00061 
00062   /* Test with simple trap handler.  */
00063   set_interrupt_handler (SWI_VECTOR, (interrupt_t) simple_trap_handler);
00064   print ("Using simple trap handler: ");
00065   failed = 0;
00066   simple_trap_handler (1);
00067   if (global_result != 1)
00068     {
00069       print ("  Simple trap handler failed, didn't returned 1\r\n");
00070       failed = 1;
00071     }
00072   
00073   simple_trap_handler (2);
00074   if (global_result != 4)
00075     {
00076       print ("  Simple trap handler failed, didn't returned 4\r\n");
00077       failed = 1;
00078     }
00079   if (failed == 0)
00080     print ("OK\r\n");
00081 
00082   /* Test with add trap handler.  */
00083   set_interrupt_handler (SWI_VECTOR, (interrupt_t) add_trap_handler);
00084   failed = 0;
00085   print ("Using add trap handler: ");
00086   result = add_trap_handler (1, 2, 3, 4);
00087   if (result != 10)
00088     {
00089       print ("Add trap handler didn't returned 10\r\n");
00090       failed = 1;
00091     }
00092   result = add_trap_handler (5, 6, 7, 8);
00093   if (result != 26)
00094     {
00095       print ("Add trap handler didn't returned 26\r\n");
00096       failed = 1;
00097     }
00098   if (failed == 0)
00099     print ("OK\r\n");
00100 
00101   set_interrupt_handler (SWI_VECTOR, (interrupt_t) os_trap_handler);
00102   failed = 0;
00103   print ("Using OS trap handler...\r\n");
00104   result = os_trap_handler (0, "  Hello World from os_trap_handler...\r\n");
00105   if (result != 0)
00106     {
00107       print ("  OS call 0 failed\r\n");
00108       failed = 1;
00109     }
00110 
00111   result = os_trap_handler (0, "  Type a character ");
00112   if (result != 0)
00113     {
00114       print ("  OS call 0 failed\r\n");
00115       failed = 1;
00116     }
00117   
00118   result = os_trap_handler (1);
00119 
00120   result = os_trap_handler (2, 23, 44);
00121   if (result != 23 + 44)
00122     {
00123       print ("  OS add system call failed\r\n");
00124       failed = 1;
00125     }
00126   
00127   if (failed == 0)
00128     print ("OS trap call test ok.\r\n");
00129   
00130   print ("Trap handler test finished.\r\n");
00131   return 0;
00132 }