--- previous/src/includes/dma.h 2018/04/24 19:28:12 1.1 +++ previous/src/includes/dma.h 2018/04/24 19:32:23 1.1.1.3 @@ -1,6 +1,4 @@ -/* NeXT DMA Emulation */ - -typedef enum { +enum { CHANNEL_SCSI, // 0x00000010 CHANNEL_SOUNDOUT, // 0x00000040 CHANNEL_DISK, // 0x00000050 @@ -13,11 +11,9 @@ typedef enum { CHANNEL_VIDEO, // 0x00000180 CHANNEL_M2R, // 0x000001d0 CHANNEL_R2M // 0x000001c0 -}DMA_CHANNEL; - -int get_channel(Uint32 address); -int get_interrupt_type(int channel); +} DMA_CHANNEL; +/* DMA Registers */ void DMA_CSR_Read(void); void DMA_CSR_Write(void); @@ -41,19 +37,41 @@ void DMA_Stop_Write(void); void DMA_Init_Read(void); void DMA_Init_Write(void); -void DMA_Size_Read(void); -void DMA_Size_Write(void); +/* Turbo DMA functions */ +void TDMA_CSR_Read(void); +void TDMA_CSR_Write(void); +void TDMA_Saved_Next_Read(void); +void tdma_flush_buffer(int channel); + +/* Device functions */ +void dma_esp_write_memory(void); +void dma_esp_read_memory(void); +void dma_esp_flush_buffer(void); + +void dma_mo_write_memory(void); +void dma_mo_read_memory(void); + +void dma_enet_write_memory(bool eop); +bool dma_enet_read_memory(void); + +void dma_dsp_write_memory(Uint8 val); +Uint8 dma_dsp_read_memory(void); +bool dma_dsp_ready(void); + +void dma_m2m(void); +void dma_m2m_write_memory(void); + +void dma_scc_read_memory(void); -void dma_memory_write(Uint8 *buf, Uint32 size, int channel); -void dma_memory_read(Uint8 *buf, Uint32 *size, int channel); -void dma_clear_memory(Uint32 datalength); +Uint8* dma_sndout_read_memory(int* len); +void dma_sndout_intr(void); +int dma_sndin_write_memory(void); -/* Buffers */ -#define DMA_BUFFER_SIZE 65536 +void dma_printer_read_memory(void); -/* dma read buffer */ -Uint8 dma_read_buffer[DMA_BUFFER_SIZE]; +/* M2M DMA IO handler */ +void M2MDMA_IO_Handler(void); -/* dma write buffer */ -Uint8 dma_write_buffer[DMA_BUFFER_SIZE]; +/* Function for video interrupt */ +void dma_video_interrupt(void);