/* sys/ports.h -- Definition of system ports
   Copyright 2000, 2001, 2002 Free Software Foundation, Inc.
   Written by Stephane Carrez (stcarrez@worldnet.fr)

This file is part of GEL.

GEL is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License** as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.

GEL is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with GEL; see the file COPYING.  If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.  */

#ifndef _SYS_PORTS_H
#define _SYS_PORTS_H

#ifdef __cplusplus
extern "C" {
#endif

  extern unsigned short get_timer_counter (void);
  extern void set_timer_counter (unsigned short);
  extern unsigned short get_input_capture_1 (void);
  extern void set_input_capture_1 (unsigned short);
  extern unsigned short get_input_capture_2 (void);
  extern void set_input_capture_2 (unsigned short);
  extern unsigned short get_input_capture_3 (void);
  extern void set_input_capture_3 (unsigned short);
  extern unsigned short get_output_compare_1 (void);
  extern void set_output_compare_1 (unsigned short);
  extern unsigned short get_output_compare_2 (void);
  extern void set_output_compare_2 (unsigned short);
  extern unsigned short get_output_compare_3 (void);
  extern void set_output_compare_3 (unsigned short);
  extern unsigned short get_output_compare_4 (void);
  extern void set_output_compare_4 (unsigned short);
  extern unsigned short get_output_compare_5 (void);
  extern void set_output_compare_5 (unsigned short);
  extern void set_bus_expanded (void);
  extern void set_bus_single_chip (void);
  extern void cop_reset (void);
  extern void cop_optional_reset (void);
  extern void timer_acknowledge (void);
  extern void timer_initialize_rate (unsigned char);
  
#ifdef mc6811
//# include <asm-m68hc11/ports.h>
#endif

#ifdef mc68hcs12
# include <asm-m68hcs12/ports.h>
#elif defined(mc6812)
//# include <asm-m68hc12/ports.h>
#endif

#ifdef __cplusplus
};
#endif
  
#endif /* _SYS_PORTS_H */

