Annotation of frontvm/hardware/stMemory.c, revision 1.1.1.1

1.1       root        1: /*
                      2:   Hatari - stMemory.c
                      3: 
                      4:   This file is distributed under the GNU Public License, version 2 or at
                      5:   your option any later version. Read the file gpl.txt for details.
                      6: 
                      7:   ST Memory access functions - take care of endian swaps.
                      8: */
                      9: 
                     10: #include <SDL_endian.h>
                     11: 
                     12: #include "main.h"
                     13: #include "decode.h"
                     14: #include "m68000.h"
                     15: #include "memAlloc.h"
                     16: #include "../cpu/maccess.h"
                     17: 
                     18: 
                     19: /*-----------------------------------------------------------------------*/
                     20: /*
                     21:   Clear section of ST's memory space.
                     22: */
                     23: void STMemory_Clear(unsigned long StartAddress, unsigned long EndAddress)
                     24: {
                     25:   Memory_Clear((void *)((unsigned long)STRam+StartAddress),EndAddress-StartAddress);
                     26: }
                     27: 
                     28: 
                     29: /*-----------------------------------------------------------------------*/
                     30: /*
                     31:   Swap 16-bit integer to/from 68000/PC format.
                     32: */
                     33: unsigned short STMemory_Swap68000Int(unsigned short var)
                     34: {
                     35:   return SDL_SwapBE16(var);
                     36: }
                     37: 
                     38: /*-----------------------------------------------------------------------*/
                     39: /*
                     40:   Swap 32-bit integer to/from 68000/PC format.
                     41: */
                     42: unsigned long STMemory_Swap68000Long(unsigned long var)
                     43: {
                     44:   return SDL_SwapBE32(var);
                     45: }
                     46: 
                     47: 
                     48: /*-----------------------------------------------------------------------*/
                     49: /*
                     50:   Write 32-bit word into ST memory space, NOTE - value will be convert to 68000 endian
                     51: */
                     52: void STMemory_WriteLong(unsigned long Address, unsigned long Var)
                     53: {
                     54:   uae_u32 *pLongWord;
                     55: 
                     56:   Address &= 0xffffff;
                     57:   pLongWord = (uae_u32 *)((unsigned long)STRam+Address);
                     58:   do_put_mem_long(pLongWord, Var);
                     59: }
                     60: 
                     61: /*-----------------------------------------------------------------------*/
                     62: /*
                     63:   Write 16-bit word into ST memory space.
                     64:   NOTE - value will be convert to 68000 endian.
                     65: */
                     66: void STMemory_WriteWord(unsigned long Address, unsigned short Var)
                     67: {
                     68:   uae_u16 *pShortWord;
                     69: 
                     70:   Address &= 0xffffff;
                     71:   pShortWord = (uae_u16 *)((unsigned long)STRam+Address);
                     72:   do_put_mem_word(pShortWord, Var);
                     73: }
                     74: 
                     75: /*-----------------------------------------------------------------------*/
                     76: /*
                     77:   Write 8-bit byte into ST memory space.
                     78: */
                     79: void STMemory_WriteByte(unsigned long Address, unsigned char Var)
                     80: {
                     81:   unsigned char *pChar;
                     82: 
                     83:   Address &= 0xffffff;
                     84:   pChar = (unsigned char *)((unsigned long)STRam+Address);
                     85:   *pChar = Var;
                     86: }
                     87: 
                     88: 
                     89: /*-----------------------------------------------------------------------*/
                     90: /*
                     91:   Read 32-bit word from ST memory space.
                     92:   NOTE - value will be converted to PC endian.
                     93: */
                     94: unsigned long STMemory_ReadLong(unsigned long Address)
                     95: {
                     96:   uae_u32 *pLongWord;
                     97: 
                     98:   Address &= 0xffffff;
                     99:   pLongWord = (uae_u32 *)((unsigned long)STRam+Address);
                    100:   return(do_get_mem_long(pLongWord));
                    101: }
                    102: 
                    103: /*-----------------------------------------------------------------------*/
                    104: /*
                    105:   Read 16-bit word from ST memory space.
                    106:   NOTE - value will be converted to PC endian.
                    107: */
                    108: unsigned short STMemory_ReadWord(unsigned long Address)
                    109: {
                    110:   uae_u16 *pShortWord;
                    111: 
                    112:   Address &= 0xffffff;
                    113:   pShortWord = (uae_u16 *)((unsigned long)STRam+Address);
                    114:   return(do_get_mem_word(pShortWord));
                    115: }
                    116: 
                    117: /*-----------------------------------------------------------------------*/
                    118: /*
                    119:   Read 8-bit byte from ST memory space
                    120: */
                    121: unsigned char STMemory_ReadByte(unsigned long Address)
                    122: {
                    123:   unsigned char *pChar;
                    124: 
                    125:   Address &= 0xffffff;
                    126:   pChar = (unsigned char *)((unsigned long)STRam+Address);
                    127:   return( *pChar );
                    128: }
                    129: 
                    130: 
                    131: /*-----------------------------------------------------------------------*/
                    132: /*
                    133:   Write 32-bit word into PC memory space.
                    134:   NOTE - value will be convert to 68000 endian.
                    135: */
                    136: void STMemory_WriteLong_PCSpace(void *pAddress, unsigned long Var)
                    137: {
                    138:   do_put_mem_long(pAddress, Var);
                    139: }
                    140: 
                    141: /*-----------------------------------------------------------------------*/
                    142: /*
                    143:   Write 16-bit word into PC memory space.
                    144:   NOTE - value will be convert to 68000 endian.
                    145: */
                    146: void STMemory_WriteWord_PCSpace(void *pAddress, unsigned short Var)
                    147: {
                    148:   do_put_mem_word(pAddress, Var);
                    149: }
                    150: 
                    151: 
                    152: /*-----------------------------------------------------------------------*/
                    153: /*
                    154:   Read 32-bit word from PC memory space.
                    155:   NOTE - value will be convert to PC endian.
                    156: */
                    157: unsigned long STMemory_ReadLong_PCSpace(void *pAddress)
                    158: {
                    159:   return(do_get_mem_long(pAddress));
                    160: }
                    161: 
                    162: /*-----------------------------------------------------------------------*/
                    163: /*
                    164:   Read 16-bit word from PC memory space.
                    165:   NOTE - value will be convert to PC endian.
                    166: */
                    167: unsigned short int STMemory_ReadWord_PCSpace(void *pAddress)
                    168: {
                    169:   return(do_get_mem_word(pAddress));
                    170: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.