1 /* 2 * Simulator of microcontrollers (serialcl.h) 3 * 4 * Copyright (C) 1999,99 Drotos Daniel, Talker Bt. 5 * 6 * To contact author send email to drdani@mazsola.iit.uni-miskolc.hu 7 * 8 */ 9 10 /* This file is part of microcontroller simulator: ucsim. 11 12 UCSIM is free software; you can redistribute it and/or modify 13 it under the terms of the GNU General Public License as published by 14 the Free Software Foundation; either version 2 of the License, or 15 (at your option) any later version. 16 17 UCSIM is distributed in the hope that it will be useful, 18 but WITHOUT ANY WARRANTY; without even the implied warranty of 19 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 GNU General Public License for more details. 21 22 You should have received a copy of the GNU General Public License 23 along with UCSIM; see the file COPYING. If not, write to the Free 24 Software Foundation, 59 Temple Place - Suite 330, Boston, MA 25 02111-1307, USA. */ 26 /*@1@*/ 27 28 #ifndef SERIALCL_HEADER 29 #define SERIALCL_HEADER 30 31 #include "fiocl.h" 32 #include "stypes.h" 33 #include "pobjcl.h" 34 35 #include "uccl.h" 36 #include "serial_hwcl.h" 37 38 #include "newcmdposixcl.h" 39 40 //#include "newcmdcl.h" 41 42 class cl_serial_listener; 43 44 class cl_serial: public cl_serial_hw 45 { 46 protected: 47 class cl_address_space *sfr, *bas; 48 bool there_is_t2, t2_baud; 49 class cl_memory_cell *sbuf, *pcon, *scon, *scon_bits[8]; 50 uchar s_in; // Serial channel input reg 51 uchar s_out; // Serial channel output reg 52 bool s_sending; // Transmitter is working 53 bool s_receiving; // Receiver is working 54 int s_rec_bit; // Bit counter of receiver 55 int s_tr_bit; // Bit counter of transmitter 56 int s_rec_t1; // T1 overflows for receiving 57 int s_tr_t1; // T1 overflows for sending 58 int s_rec_tick; // Machine cycles for receiving 59 int s_tr_tick; // Machine cycles for sending 60 uchar _mode; 61 uchar _bmREN; 62 uchar _bmSMOD; 63 uchar _bits; 64 uchar _divby; 65 public: 66 cl_serial(class cl_uc *auc); 67 virtual ~cl_serial(void); 68 virtual int init(void); cfg_size(void)69 virtual int cfg_size(void) { return 10; } 70 71 virtual void new_hw_added(class cl_hw *new_hw); 72 virtual void added_to_uc(void); 73 virtual t_mem read(class cl_memory_cell *cell); 74 virtual void write(class cl_memory_cell *cell, t_mem *val); 75 virtual t_mem conf_op(cl_memory_cell *cell, t_addr addr, t_mem *val); 76 77 virtual int serial_bit_cnt(void); 78 virtual void received(int c); 79 80 virtual int tick(int cycles); 81 virtual void reset(void); 82 virtual void happen(class cl_hw *where, enum hw_event he, void *params); 83 84 virtual void print_info(class cl_console_base *con); 85 }; 86 87 88 #endif 89 90 /* End of s51.src/serialcl.h */ 91