Annotation of hatari/src/stMemory.c, revision 1.1

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

unix.superglobalmegacorp.com

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