Annotation of frontvm/hardware/stMemory.c, revision 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.