Subastra
Loading...
Searching...
No Matches
Data Structures | Macros | Typedefs | Enumerations | Functions
chip.h File Reference
#include <stdbool.h>
#include <stdio.h>
#include <string.h>
#include "../defs.h"
#include "../memory.h"
#include "addressing.h"
Include dependency graph for chip.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  chip_memory_callback_node_t
 
struct  chip_t
 

Macros

#define CHIP_STACK_BOTTOM_ADDR   0x0100
 
#define CHIP_MAXIMUM_MEMORY   0x10000
 

Typedefs

typedef byte(* chip_memory_callback_t) (void *, bool is_write, u16 addr, byte value)
 
typedef struct chip_memory_callback_node_t chip_memory_callback_node_t
 
typedef struct chip_t chip_t
 
typedef void(* chip_external_call_f) (chip_t *chip)
 
typedef enum register_flags_t register_flags_t
 
typedef enum register_flags_mask_t register_flags_mask_t
 

Enumerations

enum  register_flags_t {
  FLAG_CARRY = 0 , FLAG_ZERO = 1 , FLAG_INTERRUPT_DISABLE = 2 , FLAG_DECIMAL = 3 ,
  FLAG_B = 4 , FLAG_UNUSED = 5 , FLAG_OVERFLOW = 6 , FLAG_NEGATIVE = 7
}
 
enum  register_flags_mask_t {
  FLAG_MASK_CARRY = 0b00000001 , FLAG_MASK_ZERO = 0b00000010 , FLAG_MASK_INTERRUPT_DISABLE = 0b00000100 , FLAG_MASK_DECIMAL = 0b00001000 ,
  FLAG_MASK_B = 0b00010000 , FLAG_MASK_UNUSED = 0b00100000 , FLAG_MASK_OVERFLOW = 0b01000000 , FLAG_MASK_NEGATIVE = 0b10000000
}
 

Functions

static void chip_dbg_dump (chip_t *self)
 
static void chip_init (chip_t *self, allocator_t allocator, sz memory_size, u32 quota)
 
static void chip_memory_add_callback (chip_t *self, chip_memory_callback_t callback)
 
static void chip_load_rom (chip_t *self, byte *rom, size_t len, u16 rom_start)
 
static byte chip_memory_read_direct (chip_t *self, u16 at)
 
static void chip_memory_write_direct (chip_t *self, u16 at, byte value)
 
static byte chip_pc_inc (chip_t *self)
 
static u32 chip_memory_perform_read (chip_t *self, addressing_mode_t mode)
 
static u16 chip_memory_perform_write (chip_t *self, addressing_mode_t mode, byte value)
 
static u16 get_memory_addr (u32 read)
 
static byte get_memory_word (u32 read)
 
static u16 chip_memory_read_addr (chip_t *self, addressing_mode_t mode)
 
static byte chip_memory_read_word (chip_t *self, addressing_mode_t mode)
 
static u16 chip_memory_read_dword (chip_t *self, addressing_mode_t mode)
 
static void chip_stack_push (chip_t *self, byte value)
 
static byte chip_stack_pull (chip_t *self)
 
static byte chip_flags_get (chip_t *self, register_flags_t flag)
 
static void chip_flags_set (chip_t *self, register_flags_t flag, byte value)
 
static void chip_flags_update_carry (chip_t *self, byte value)
 
static void chip_flags_update_zero_negative (chip_t *self, byte value)
 
static void chip_flags_update_overflow (chip_t *self, byte value)
 

Macro Definition Documentation

◆ CHIP_MAXIMUM_MEMORY

#define CHIP_MAXIMUM_MEMORY   0x10000

◆ CHIP_STACK_BOTTOM_ADDR

#define CHIP_STACK_BOTTOM_ADDR   0x0100

Typedef Documentation

◆ chip_external_call_f

typedef void(* chip_external_call_f) (chip_t *chip)

◆ chip_memory_callback_node_t

◆ chip_memory_callback_t

typedef byte(* chip_memory_callback_t) (void *, bool is_write, u16 addr, byte value)

◆ chip_t

typedef struct chip_t chip_t

◆ register_flags_mask_t

◆ register_flags_t

Enumeration Type Documentation

◆ register_flags_mask_t

Enumerator
FLAG_MASK_CARRY 
FLAG_MASK_ZERO 
FLAG_MASK_INTERRUPT_DISABLE 
FLAG_MASK_DECIMAL 
FLAG_MASK_B 
FLAG_MASK_UNUSED 
FLAG_MASK_OVERFLOW 
FLAG_MASK_NEGATIVE 

◆ register_flags_t

Enumerator
FLAG_CARRY 
FLAG_ZERO 
FLAG_INTERRUPT_DISABLE 
FLAG_DECIMAL 
FLAG_B 
FLAG_UNUSED 
FLAG_OVERFLOW 
FLAG_NEGATIVE 

Function Documentation

◆ chip_dbg_dump()

static void chip_dbg_dump ( chip_t self)
static

◆ chip_flags_get()

static byte chip_flags_get ( chip_t self,
register_flags_t  flag 
)
static

◆ chip_flags_set()

static void chip_flags_set ( chip_t self,
register_flags_t  flag,
byte  value 
)
static

◆ chip_flags_update_carry()

static void chip_flags_update_carry ( chip_t self,
byte  value 
)
static

◆ chip_flags_update_overflow()

static void chip_flags_update_overflow ( chip_t self,
byte  value 
)
static

◆ chip_flags_update_zero_negative()

static void chip_flags_update_zero_negative ( chip_t self,
byte  value 
)
static

◆ chip_init()

static void chip_init ( chip_t self,
allocator_t  allocator,
sz  memory_size,
u32  quota 
)
static

◆ chip_load_rom()

static void chip_load_rom ( chip_t self,
byte rom,
size_t  len,
u16  rom_start 
)
static

◆ chip_memory_add_callback()

static void chip_memory_add_callback ( chip_t self,
chip_memory_callback_t  callback 
)
static

◆ chip_memory_perform_read()

static u32 chip_memory_perform_read ( chip_t self,
addressing_mode_t  mode 
)
static

◆ chip_memory_perform_write()

static u16 chip_memory_perform_write ( chip_t self,
addressing_mode_t  mode,
byte  value 
)
static

◆ chip_memory_read_addr()

static u16 chip_memory_read_addr ( chip_t self,
addressing_mode_t  mode 
)
static

◆ chip_memory_read_direct()

static byte chip_memory_read_direct ( chip_t self,
u16  at 
)
static

◆ chip_memory_read_dword()

static u16 chip_memory_read_dword ( chip_t self,
addressing_mode_t  mode 
)
static

◆ chip_memory_read_word()

static byte chip_memory_read_word ( chip_t self,
addressing_mode_t  mode 
)
static

◆ chip_memory_write_direct()

static void chip_memory_write_direct ( chip_t self,
u16  at,
byte  value 
)
static

◆ chip_pc_inc()

static byte chip_pc_inc ( chip_t self)
static

◆ chip_stack_pull()

static byte chip_stack_pull ( chip_t self)
static

◆ chip_stack_push()

static void chip_stack_push ( chip_t self,
byte  value 
)
static

◆ get_memory_addr()

static u16 get_memory_addr ( u32  read)
static

◆ get_memory_word()

static byte get_memory_word ( u32  read)
static