--- previous/src/includes/dma.h 2018/04/24 19:28:12 1.1 +++ previous/src/includes/dma.h 2018/04/24 19:30:38 1.1.1.2 @@ -1,23 +1,4 @@ -/* NeXT DMA Emulation */ - -typedef enum { - CHANNEL_SCSI, // 0x00000010 - CHANNEL_SOUNDOUT, // 0x00000040 - CHANNEL_DISK, // 0x00000050 - CHANNEL_SOUNDIN, // 0x00000080 - CHANNEL_PRINTER, // 0x00000090 - CHANNEL_SCC, // 0x000000c0 - CHANNEL_DSP, // 0x000000d0 - CHANNEL_EN_TX, // 0x00000110 - CHANNEL_EN_RX, // 0x00000150 - CHANNEL_VIDEO, // 0x00000180 - CHANNEL_M2R, // 0x000001d0 - CHANNEL_R2M // 0x000001c0 -}DMA_CHANNEL; - -int get_channel(Uint32 address); -int get_interrupt_type(int channel); - +/* DMA Registers */ void DMA_CSR_Read(void); void DMA_CSR_Write(void); @@ -41,19 +22,39 @@ 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_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); +void dma_sndout_read_memory(void); -/* Buffers */ -#define DMA_BUFFER_SIZE 65536 +void dma_printer_read_memory(void); -/* dma read buffer */ -Uint8 dma_read_buffer[DMA_BUFFER_SIZE]; +/* Delayed DMA interrupt handlers */ +void M2RDMA_InterruptHandler(void); +void R2MDMA_InterruptHandler(void); -/* dma write buffer */ -Uint8 dma_write_buffer[DMA_BUFFER_SIZE]; +/* Function for video interrupt */ +void dma_video_interrupt(void);