/* Copyright (C) 2014-2016 Ben Kurtovic Released under the terms of the MIT License. See LICENSE for details. */ #include "vdp.h" /* Initialize the Video Display Processor (VDP). */ void vdp_init(VDP *vdp) { // TODO } /* Free memory previously allocated by the VDP. */ void vdp_free(VDP *vdp) { // TODO } /* Power on the VDP, setting up initial state. */ void vdp_power(VDP *vdp) { vdp->control_code = 0; vdp->control_addr = 0; vdp->control_flag = false; } /* Read a byte from the VDP's control port. */ uint8_t vdp_read_control(VDP *vdp) { vdp->control_flag = false; // TODO return 0; } /* Read a byte from the VDP's data port. */ uint8_t vdp_read_data(VDP *vdp) { vdp->control_flag = false; // TODO return 0; } /* Write a byte into the VDP's control port. */ void vdp_write_control(VDP *vdp, uint8_t byte) { if (!vdp->control_flag) { // First byte vdp->control_addr = (vdp->control_addr & 0x3F00) + byte; } else { // Second byte vdp->control_addr = ((byte & 0x3F) << 8) + (vdp->control_addr & 0xFF); vdp->control_code = byte >> 6; } vdp->control_flag = !vdp->control_flag; } /* Write a byte into the VDP's data port. */ void vdp_write_data(VDP *vdp, uint8_t byte) { vdp->control_flag = false; // TODO }