sdcc是为51等小型嵌入式cpu设计的c语言编译器支持数种不同类型的cpu

源代码在线查看: app.cc

软件大小: 4131 K
上传用户: lvuxinwu
关键词: cpu sdcc c语言 嵌入式
下载地址: 免注册下载 普通下载 VIP

相关代码

				/*				 * Simulator of microcontrollers (app.cc)				 *				 * Copyright (C) 1999,99 Drotos Daniel, Talker Bt.				 * 				 * To contact author send email to drdani@mazsola.iit.uni-miskolc.hu				 *				 */								/* This file is part of microcontroller simulator: ucsim.								UCSIM 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 of the License, or				(at your option) any later version.								UCSIM 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 UCSIM; see the file COPYING.  If not, write to the Free				Software Foundation, 59 Temple Place - Suite 330, Boston, MA				02111-1307, USA. */				/*@1@*/								#include 								#include "appcl.h"				#include "deskcl.h"												cl_app::cl_app(char *iname):				  cl_group(iname, this)				{				  drawn= 0;				}								cl_app::~cl_app(void)				{				  endwin();				}								int				cl_app::init(void)				{				  initscr();				  keypad(stdscr, TRUE);				  nonl();				  cbreak();				  noecho();				  				  pos= new cl_box(0,0, COLS, LINES);				  cl_view::init();				  state|= SF_SELECTED;//select();				  class cl_box b(*pos);				  //b.move_rel(0,1);				  //b.grow(0,-2);				  if ((desk= mk_desk(&b)))				    insert(desk);				  desk->select();				  mk_views(desk);								  //update();				  update_panels();				  doupdate();				  return(0);				}								class cl_gin *				cl_app::mk_input(void)				{				  class cl_gin *i= new cl_gin();				  i->init();				  i->add_input(stdin, 0);				  return(i);				}								int *				cl_app::mk_palette(void)				{				  int *p, i;				  int colors;								  colors= 64;				  p= (int*)malloc(colors * sizeof(int));				  if (has_colors())				    {				      start_color();								      init_pair(i= C_WIN+C_WIN_NORMAL, COLOR_YELLOW, COLOR_BLUE);				      p[i]= COLOR_PAIR(i)|A_BOLD;				      for (i= 1; i < colors; i++)					p[i]= p[C_WIN+C_WIN_NORMAL];				      // desktop				      init_pair(i= C_DSK_BG, COLOR_BLACK, COLOR_WHITE);				      p[i]= COLOR_PAIR(i);				      // menus and status bar				      init_pair(i= C_DSK_NORMAL, COLOR_WHITE, COLOR_BLUE);				      p[i]= COLOR_PAIR(i)|A_BOLD;				      init_pair(i= C_DSK_DISABLED, COLOR_WHITE, COLOR_BLUE);				      p[i]= COLOR_PAIR(i);				      // window				      init_pair(i= C_WIN+C_WIN_FPASSIVE, COLOR_WHITE, COLOR_BLUE);				      p[i]= COLOR_PAIR(i);				      init_pair(i= C_WIN+C_WIN_FACTIVE, COLOR_WHITE, COLOR_BLUE);				      p[i]= COLOR_PAIR(i)|A_BOLD;				      init_pair(i= C_WIN+C_WIN_SELECTED, COLOR_YELLOW, COLOR_RED);				      p[i]= COLOR_PAIR(i)|A_BOLD; 				    }				  else				    {				      for (i= 0; i < colors; i++)					p[i]= A_NORMAL;				      p[C_WIN+C_WIN_FACTIVE]|= A_BOLD;				      p[C_WIN+C_WIN_SELECTED]|= A_REVERSE;				    }				  return(p);				}								class cl_group *				cl_app::mk_desk(class cl_box *ipos)				{				  class cl_group *d= new cl_desk(ipos, "desktop", this);				  d->init();				  return(d);				}												int				cl_app::handle_event(struct t_event *event)				{				  if (!cl_group::handle_event(event))				    {				      if (event->what == EV_KEY)					switch (event->event.key)					  {					  case KEY_BREAK: case KEY_EXIT:					    event->what= EV_COMMAND;					    event->event.msg.cmd= CMD_QUIT;					    break;					  }				    }				  return(0);				}								int				cl_app::run(void)				{				  struct t_event event;				  				  drawn= 0;				  while (get_event(&event))				    {				      if (!handle_event(&event))					{					  if (event.what == EV_COMMAND &&					      event.event.msg.cmd == CMD_QUIT)					    return(0);					  unhandled(&event);					}				      if (drawn)					update();				      drawn= 0;				    }				  return(0);				}												/* End of gui.src/app.cc */							

相关资源