Details | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 115 | savelij | 1 | |
| 2 | ; ports description and include file for |
||
| 3 | ; NeoGS software projects, v0.3 |
||
| 4 | ; |
||
| 5 | ; |
||
| 6 | ; bits degisnation: |
||
| 7 | ; B_* -bit position (0,1,2,3,4,5,6,7) |
||
| 8 | ; M_* -bit mask (1,2,4,8,0X10, |
||
| 9 | ; 0X20,0X40,0X80) |
||
| 10 | ; |
||
| 11 | ; C_* - constants to be used |
||
| 12 | ; |
||
| 13 | ; |
||
| 14 | ; part of NeoGS project |
||
| 15 | ; |
||
| 16 | ; (c) 2008 NedoPC |
||
| 17 | |||
| 18 | ;--------------------------------------- |
||
| 19 | |||
| 20 | ;ZX-side ports |
||
| 21 | |||
| 22 | GSCOM EQU 0XBB ; write-only, command for NGS |
||
| 23 | |||
| 24 | GSSTAT EQU 0XBB ; read-only, command and data bits |
||
| 25 | ; (positions given immediately below) |
||
| 26 | |||
| 27 | B_CBIT EQU 0 ; Command position |
||
| 28 | M_CBIT EQU 1 ; BIT:AND Mask |
||
| 29 | |||
| 30 | B_DBIT EQU 7 ; Data position |
||
| 31 | M_DBIT EQU 0X80 ; BIT and mask |
||
| 32 | |||
| 33 | GSDAT EQU 0XB3 ; read-write |
||
| 34 | ; data transfer register for NGS |
||
| 35 | |||
| 36 | GSCTR EQU 0X33 ; write-only, control register for NGS: |
||
| 37 | ; constants available given immediately below |
||
| 38 | |||
| 39 | C_GRST EQU 0X80 ; reset constant to be written into |
||
| 40 | |||
| 41 | C_GNMI EQU 0X40 ; NMI constant to be written into GSCTR |
||
| 42 | |||
| 43 | C_GLED EQU 0X20 ; LED toggle constant |
||
| 44 | |||
| 45 | ;--------------------------------------- |
||
| 46 | |||
| 47 | ;GS-side ports |
||
| 48 | |||
| 49 | MPAG EQU 0X00 ; write-only, Memory PAGe ;port (big |
||
| 50 | ; pages at 8000-FFFF or small at 8000-BFFF) |
||
| 51 | |||
| 52 | MPAGEX EQU 0X10 ; write-only, Memory PAGe EXtended |
||
| 53 | ; (only small pages at C000-FFFF) |
||
| 54 | |||
| 55 | ZXCMD EQU 0X01 ; read-only, ZX CoMmanD port: here is |
||
| 56 | ; the byte written by ZX into GSCOM |
||
| 57 | |||
| 58 | ZXDATRD EQU 0X02 ; read-only, ZX DATa ReaD: a byte |
||
| 59 | ; written by ZX into GSDAT appears here |
||
| 60 | ; upon reading this port, data bit is cleared |
||
| 61 | |||
| 62 | ZXDATWR EQU 0X03 ; write-only, ZX DATa WRite: a byte |
||
| 63 | ; written here is available for ZX in |
||
| 64 | ; GSDAT upon writing here, data bit is set |
||
| 65 | |||
| 66 | ZXSTAT EQU 0X04 ; read-only, read ZX STATus: command and |
||
| 67 | ; data bits. positions are defined by |
||
| 68 | ; *_CBIT and *_DBIT above |
||
| 69 | |||
| 70 | CLRCBIT EQU 0X05 ; read-write, upon either reading or |
||
| 71 | ; writing this port, the Command BIT is CLeaRed |
||
| 72 | VOL1 EQU 0X06 |
||
| 73 | VOL2 EQU 0X07 |
||
| 74 | VOL3 EQU 0X08 |
||
| 75 | VOL4 EQU 0X09 |
||
| 76 | VOL5 EQU 0X16 |
||
| 77 | VOL6 EQU 0X17 |
||
| 78 | VOL7 EQU 0X18 |
||
| 79 | VOL8 EQU 0X19 ; write-only, volumes for sound channels 1-8 |
||
| 80 | |||
| 81 | ; following two ports are useless and |
||
| 82 | ; very odd. They have been made just |
||
| 83 | ; because they were on the original GS |
||
| 84 | ; and for that strange case when |
||
| 85 | ; somebody too crazy have used them. |
||
| 86 | ; Nevertheless, DO NOT USE THEM! They |
||
| 87 | ; can disappear or even radically change |
||
| 88 | ; functionality in future firmware |
||
| 89 | ; releases. |
||
| 90 | |||
| 91 | DPORT1 EQU 0X0A ; DAMNPORT1 |
||
| 92 | ; writing or reading this port sets data |
||
| 93 | ; bit to the inverse of bit 0 into MPAG |
||
| 94 | ; port |
||
| 95 | |||
| 96 | DPORT2 EQU 0X0B ; DAMNPORT2 |
||
| 97 | ; the same as DAMNPORT1, but instead |
||
| 98 | ; command bit involved, which is made |
||
| 99 | ; equal to 5th bit of VOL4 |
||
| 100 | |||
| 101 | LEDCTR EQU 0X01 ; write-only, controls on-board LED. |
||
| 102 | ; D0=0 - LED is on, D0=1 - LED is off |
||
| 103 | ; reset state is LED on. |
||
| 104 | |||
| 105 | GSCFG0 EQU 0X0F ; read-write, GS ConFiG port 0: acts as |
||
| 106 | ; memory cell, reads previously written |
||
| 107 | ; value. Bits and fields follow: |
||
| 108 | |||
| 109 | B_NOROM EQU 0 ; =0 - there is ROM everywhere except 0X4000-7FFF, |
||
| 110 | ; =1 - the RAM is all around |
||
| 111 | M_NOROM EQU 1 |
||
| 112 | |||
| 113 | B_RAMRO EQU 1 ; =1 - ram absolute adresses 0X0000-7FFF |
||
| 114 | ; (zeroth big page) are write-protected |
||
| 115 | M_RAMRO EQU 2 |
||
| 116 | |||
| 117 | B_8CHAN EQU 2 ; B_8CHANS |
||
| 118 | ; =1 - 8 channels mode |
||
| 119 | M_8CHAN EQU 4 ; M_8CHANS |
||
| 120 | |||
| 121 | B_EXPAG EQU 3 ; =1 - extended paging: both MPAG and |
||
| 122 | ; MPAGEX are used to switch two memory windows |
||
| 123 | M_EXPAG EQU 8 |
||
| 124 | |||
| 125 | B_CKSL0 EQU 4 ; B_CKSEL0 |
||
| 126 | ; these bits should be set according to |
||
| 127 | ; the C_**MHZ constants below |
||
| 128 | M_CKSL0 EQU 0X10 ; M_CKSEL0 |
||
| 129 | |||
| 130 | B_CKSL1 EQU 5 ; B_CKSEL1 |
||
| 131 | M_CKSL1 EQU 0X20 ; M_CKSEL1 |
||
| 132 | |||
| 133 | C_10MHZ EQU 0X30 |
||
| 134 | C_12MHZ EQU 0X10 |
||
| 135 | C_20MHZ EQU 0X20 |
||
| 136 | C_24MHZ EQU 0X00 |
||
| 137 | |||
| 138 | B_PAN4C EQU 6 ; B_PAN4CH |
||
| 139 | ; =1 - 4 channels, panning (every |
||
| 140 | ; channel is on left and right with two volumes) |
||
| 141 | M_PAN4C EQU 0X40 ; M_PAN4CH |
||
| 142 | |||
| 143 | B_INV7B EQU 7 ;B_INV7B |
||
| 144 | ; =1 - invert 7th bit of sample before |
||
| 145 | ; putting them to MUL/DAC |
||
| 146 | M_INV7B EQU 0X80 |
||
| 147 | |||
| 148 | B_SNCLR EQU 7 ; B_SETNCLR |
||
| 149 | M_SNCLR EQU 0X80 ; M_SETNCLR |
||
| 150 | |||
| 151 | SCTRL EQU 0X11 ; Serial ConTRoL: read-write, read: |
||
| 152 | ; current state of below bits, write - see GS_info |
||
| 153 | |||
| 154 | B_SDNCS EQU 0 |
||
| 155 | M_SDNCS EQU 1 |
||
| 156 | |||
| 157 | B_MCNCS EQU 1 |
||
| 158 | M_MCNCS EQU 2 |
||
| 159 | |||
| 160 | B_MPXRS EQU 2 |
||
| 161 | M_MPXRS EQU 4 |
||
| 162 | |||
| 163 | B_MCSP0 EQU 3 ; B_MCSPD0 |
||
| 164 | M_MCSP0 EQU 8 ; M_MCSPD0 |
||
| 165 | |||
| 166 | B_MDHLF EQU 4 |
||
| 167 | M_MDHLF EQU 0X10 |
||
| 168 | |||
| 169 | B_MCSP1 EQU 5 ; B_MCSPD1 |
||
| 170 | M_MCSP1 EQU 0X20 ; M_MCSPD1 |
||
| 171 | |||
| 172 | SSTAT EQU 0X12 ; Serial STATus: read-only, reads state of below bits |
||
| 173 | |||
| 174 | B_MDDRQ EQU 0 |
||
| 175 | M_MDDRQ EQU 1 |
||
| 176 | |||
| 177 | B_SDDET EQU 1 |
||
| 178 | M_SDDET EQU 2 |
||
| 179 | |||
| 180 | B_SDWP EQU 2 |
||
| 181 | M_SDWP EQU 4 |
||
| 182 | |||
| 183 | B_MCRDY EQU 3 |
||
| 184 | M_MCRDY EQU 8 |
||
| 185 | |||
| 186 | SD_SEND EQU 0X13 ; SD card SEND, write-only, when |
||
| 187 | ; written, byte transfer starts with |
||
| 188 | ; written byte |
||
| 189 | |||
| 190 | SD_READ EQU 0X13 ; SD card READ, read-only, reads byte |
||
| 191 | ; received in previous byte transfer |
||
| 192 | |||
| 193 | SD_RSTR EQU 0X14 ; SD card Read and STaRt, read-only, |
||
| 194 | ; reads previously received byte and |
||
| 195 | ; starts new byte transfer with 0XFF |
||
| 196 | |||
| 197 | MD_SEND EQU 0X14 ; Mp3 Data SEND, write-only, sends byte |
||
| 198 | ; to the mp3 data interface |
||
| 199 | |||
| 200 | MC_SEND EQU 0X15 ; Mp3 Control SEND, write-only, sends |
||
| 201 | ; byte to the mp3 control interface |
||
| 202 | |||
| 203 | MC_READ EQU 0X15 ; Mp3 Control READ, read-only, reads |
||
| 204 | ; byte that was received during |
||
| 205 | ; previous sending of byte |
||
| 206 | |||
| 207 | DMA_MOD EQU 0X1B ; DMA MODULE |
||
| 208 | |||
| 209 | DMA_HAD EQU 0X1C ; DMA High ADdress |
||
| 210 | |||
| 211 | DMA_MAD EQU 0X1D ; DMA Middle ADdress |
||
| 212 | |||
| 213 | DMA_LAD EQU 0X1E ; DMA Low ADdress |
||
| 214 | |||
| 215 | DMA_CST EQU 0X1F ; DMA Control and STate |