ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/uae_cpu/memory.cpp
(Generate patch)

Comparing BasiliskII/src/uae_cpu/memory.cpp (file contents):
Revision 1.1 by cebix, 1999-10-03T14:16:26Z vs.
Revision 1.5 by cebix, 2001-07-14T15:02:49Z

# Line 19 | Line 19
19   #include "main.h"
20   #include "video.h"
21  
22 + #if !REAL_ADDRESSING && !DIRECT_ADDRESSING
23 +
24   static bool illegal_mem = false;
25  
26   #ifdef SAVE_MEMORY_BANKS
# Line 27 | Line 29 | addrbank *mem_banks[65536];
29   addrbank mem_banks[65536];
30   #endif
31  
32 + #ifdef WORDS_BIGENDIAN
33 + # define swap_words(X) (X)
34 + #else
35 + # define swap_words(X) (((X) >> 16) | ((X) << 16))
36 + #endif
37 +
38   #ifdef NO_INLINE_MEMORY_ACCESS
39   __inline__ uae_u32 longget (uaecptr addr)
40   {
# Line 399 | Line 407 | uae_u32 REGPARAM2 frame_host_555_lget(ua
407      uae_u32 *m, l;
408      m = (uae_u32 *)(FrameBaseDiff + addr);
409      l = *m;
410 <    return (l >> 16) | (l << 16);
410 >        return swap_words(l);
411   }
412  
413   uae_u32 REGPARAM2 frame_host_555_wget(uaecptr addr)
# Line 413 | Line 421 | void REGPARAM2 frame_host_555_lput(uaecp
421   {
422      uae_u32 *m;
423      m = (uae_u32 *)(FrameBaseDiff + addr);
424 <    *m = (l >> 16) | (l << 16);
424 >    *m = swap_words(l);
425   }
426  
427   void REGPARAM2 frame_host_555_wput(uaecptr addr, uae_u32 w)
# Line 429 | Line 437 | uae_u32 REGPARAM2 frame_host_565_lget(ua
437      m = (uae_u32 *)(FrameBaseDiff + addr);
438      l = *m;
439      l = (l & 0x001f001f) | ((l >> 1) & 0x7fe07fe0);
440 <    return (l >> 16) | (l << 16);
440 >    return swap_words(l);
441   }
442  
443   uae_u32 REGPARAM2 frame_host_565_wget(uaecptr addr)
# Line 445 | Line 453 | void REGPARAM2 frame_host_565_lput(uaecp
453      uae_u32 *m;
454      m = (uae_u32 *)(FrameBaseDiff + addr);
455      l = (l & 0x001f001f) | ((l << 1) & 0xffc0ffc0);
456 <    *m = (l >> 16) | (l << 16);
456 >    *m = swap_words(l);
457   }
458  
459   void REGPARAM2 frame_host_565_wput(uaecptr addr, uae_u32 w)
# Line 550 | Line 558 | addrbank frame_host_888_bank = {
558  
559   void memory_init(void)
560   {
561 <        int i;
554 <        for(i=0; i<65536; i++)
561 >        for(long i=0; i<65536; i++)
562                  put_mem_bank(i<<16, &dummy_bank);
563  
564 +        // Limit RAM size to not overlap ROM
565 +        uint32 ram_size = RAMSize > ROMBaseMac ? ROMBaseMac : RAMSize;
566 +
567          RAMBaseDiff = (uae_u32)RAMBaseHost - (uae_u32)RAMBaseMac;
568          ROMBaseDiff = (uae_u32)ROMBaseHost - (uae_u32)ROMBaseMac;
569          FrameBaseDiff = (uae_u32)MacFrameBaseHost - (uae_u32)MacFrameBaseMac;
570  
571 <        // Limit RAM size to not overlap ROM
562 < #if REAL_ADDRESSING
563 <        uint32 ram_size = RAMSize;
564 < #else
565 <        uint32 ram_size = RAMSize > ROMBaseMac ? ROMBaseMac : RAMSize;
566 < #endif
567 <
568 <        // RAM and ROM
571 >        // Map RAM and ROM
572          if (TwentyFourBitAddressing) {
573                  map_banks(&ram24_bank, RAMBaseMac >> 16, ram_size >> 16);
574                  map_banks(&rom24_bank, ROMBaseMac >> 16, ROMSize >> 16);
# Line 574 | Line 577 | void memory_init(void)
577                  map_banks(&rom_bank, ROMBaseMac >> 16, ROMSize >> 16);
578          }
579  
580 <        // Frame buffer
580 >        // Map frame buffer
581          switch (MacFrameLayout) {
582                  case FLAYOUT_DIRECT:
583                          map_banks(&frame_direct_bank, MacFrameBaseMac >> 16, (MacFrameSize >> 16) + 1);
# Line 606 | Line 609 | void map_banks(addrbank *bank, int start
609          for (bnr = start; bnr < start+size; bnr++)
610              put_mem_bank((bnr + hioffs) << 16, bank);
611   }
612 +
613 + #endif /* !REAL_ADDRESSING && !DIRECT_ADDRESSING */
614 +

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines