|
|
1.1 root 1: /* NeXT DMA Emulation */
2:
3: typedef enum {
4: CHANNEL_SCSI, // 0x00000010
5: CHANNEL_SOUNDOUT, // 0x00000040
6: CHANNEL_DISK, // 0x00000050
7: CHANNEL_SOUNDIN, // 0x00000080
8: CHANNEL_PRINTER, // 0x00000090
9: CHANNEL_SCC, // 0x000000c0
10: CHANNEL_DSP, // 0x000000d0
11: CHANNEL_EN_TX, // 0x00000110
12: CHANNEL_EN_RX, // 0x00000150
13: CHANNEL_VIDEO, // 0x00000180
14: CHANNEL_M2R, // 0x000001d0
15: CHANNEL_R2M // 0x000001c0
16: }DMA_CHANNEL;
17:
18: int get_channel(Uint32 address);
19: int get_interrupt_type(int channel);
20:
21: void DMA_CSR_Read(void);
22: void DMA_CSR_Write(void);
23:
24: void DMA_Saved_Next_Read(void);
25: void DMA_Saved_Next_Write(void);
26: void DMA_Saved_Limit_Read(void);
27: void DMA_Saved_Limit_Write(void);
28: void DMA_Saved_Start_Read(void);
29: void DMA_Saved_Start_Write(void);
30: void DMA_Saved_Stop_Read(void);
31: void DMA_Saved_Stop_Write(void);
32:
33: void DMA_Next_Read(void);
34: void DMA_Next_Write(void);
35: void DMA_Limit_Read(void);
36: void DMA_Limit_Write(void);
37: void DMA_Start_Read(void);
38: void DMA_Start_Write(void);
39: void DMA_Stop_Read(void);
40: void DMA_Stop_Write(void);
41:
42: void DMA_Init_Read(void);
43: void DMA_Init_Write(void);
44: void DMA_Size_Read(void);
45: void DMA_Size_Write(void);
46:
47:
48: void dma_memory_write(Uint8 *buf, Uint32 size, int channel);
49: void dma_memory_read(Uint8 *buf, Uint32 *size, int channel);
50: void dma_clear_memory(Uint32 datalength);
51:
52: /* Buffers */
53: #define DMA_BUFFER_SIZE 65536
54:
55: /* dma read buffer */
56: Uint8 dma_read_buffer[DMA_BUFFER_SIZE];
57:
58: /* dma write buffer */
59: Uint8 dma_write_buffer[DMA_BUFFER_SIZE];
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.