Contiki 2.6

libconio_z80.h

00001 /*
00002  * Copyright (c) 2007, Takahide Matsutsuka.
00003  * All rights reserved.
00004  *
00005  * Redistribution and use in source and binary forms, with or without
00006  * modification, are permitted provided that the following conditions
00007  * are met:
00008  * 1. Redistributions of source code must retain the above copyright
00009  *    notice, this list of conditions and the following disclaimer.
00010  * 2. Redistributions in binary form must reproduce the above
00011  *    copyright notice, this list of conditions and the following
00012  *    disclaimer in the documentation and/or other materials provided
00013  *    with the distribution.
00014  * 3. The name of the author may not be used to endorse or promote
00015  *    products derived from this software without specific prior
00016  *    written permission.
00017  *
00018  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
00019  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
00020  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00021  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
00022  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
00023  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
00024  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
00025  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
00026  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
00027  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
00028  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00029  *
00030  * $Id: libconio_z80.h,v 1.1 2007/09/19 12:48:26 matsutsuka Exp $
00031  *
00032  */
00033  /*
00034   * \file
00035   *     Arcitecture-depend libconio module, which supposes
00036   *     the machine has character VRAM and optional attribute VRAM
00037   *     on the main memory.
00038   * \author
00039   *     Takahide Matsutsuka <markn@markn.org>
00040   */
00041 
00042 #ifndef __LIBCONIO_ARCH_H__
00043 #define __LIBCONIO_ARCH_H__
00044 
00045 #ifndef LIBCONIO_VRAM_CHAR
00046 #error "must specify vram address for characters!"
00047 #endif /*  LIBCONIO_VRAM_CHAR */
00048 
00049 #ifdef LIBCONIO_CONF_ATTRIBUTES_ENABLED
00050 #ifndef LIBCONIO_VRAM_ATTR
00051 #error "must specify vram address for attributes!"
00052 #endif /* LIBCONIO_VRAM_ATTR */
00053 #endif /* LIBCONIO_CONF_ATTRIBUTES_ENABLED */
00054 
00055 #ifndef LIBCONIO_CONF_SCREEN_WIDTH
00056 #define LIBCONIO_CONF_SCREEN_WIDTH   32
00057 #endif /* LIBCONIO_CONF_SCREEN_WIDTH */
00058 
00059 #ifndef LIBCONIO_CONF_SCREEN_HEIGHT
00060 #define LIBCONIO_CONF_SCREEN_HEIGHT  16
00061 #endif /* LIBCONIO_CONF_SCREEN_HEIGHT */
00062 
00063 #ifndef LIBCONIO_COLOR_REVERSED
00064 #define LIBCONIO_COLOR_REVERSED 0x21
00065 #endif /* LIBCONIO_COLOR_REVERSED */
00066 
00067 #ifndef LIBCONIO_COLOR_NORMAL
00068 #define LIBCONIO_COLOR_NORMAL 0x20
00069 #endif /* LIBCONIO_COLOR_NORMAL */
00070 
00071 /*
00072  * An offset caluclation logic.
00073  * The default supposes the VRAM is sequential
00074  */
00075 #ifndef LIBCONIO_VRAM_OFFSET
00076 #define LIBCONIO_VRAM_OFFSET(x, y)  (y) * LIBCONIO_CONF_SCREEN_WIDTH + (x)
00077 #endif /* VRAM_OFFSET */
00078 
00079 /*
00080  * A maximum offset + 1.
00081  * If offset is equal or more than this maximum, the screen will scroll.
00082  */
00083 #ifndef LIBCONIO_VRAM_OFFSET_MAX
00084 #define LIBCONIO_VRAM_OFFSET_MAX \
00085     (LIBCONIO_CONF_SCREEN_HEIGHT * LIBCONIO_CONF_SCREEN_WIDTH)
00086 #endif /* VRAM_MAX */
00087 
00088 #endif /* __LIBCONIO_ARCH_H__ */