Subversion Repositories pentevo

Rev

Blame | Last modification | View Log | Download | RSS feed | ?url?

  1. #include "std.h"
  2.  
  3. #include "emul.h"
  4. #include "vars.h"
  5. #include "draw.h"
  6. #include "memory.h"
  7. #include "tape.h"
  8. #include "debug.h"
  9. #include "sndrender/sndcounter.h"
  10. #include "sound.h"
  11. #include "atm.h"
  12. #include "gs.h"
  13. #include "emulkeys.h"
  14. #include "z80/op_system.h"
  15. #include "z80/op_noprefix.h"
  16. #include "fontatm2.h"
  17. #include "sdcard.h"
  18. #include "zc.h"
  19. #include "z80.h"
  20.  
  21. #include "util.h"
  22.  
  23. #include "zxusbnet.h"   // NEDOREPO
  24.  
  25. #include "midi.h"       // [NS]
  26.  
  27. //=============================================================================
  28. namespace z80gs
  29. {
  30. void flush_gs_z80();
  31. }
  32. //=============================================================================
  33. #ifdef MOD_FASTCORE
  34.    namespace z80fast
  35.    {
  36.       #include "z80_main.inl"
  37.    }
  38. #else
  39.    #define z80fast z80dbg
  40. #endif
  41. //=============================================================================
  42. #ifdef MOD_DEBUGCORE
  43.    namespace z80dbg
  44.    {
  45.       #define Z80_DBG
  46.       #include "z80_main.inl"
  47.       #undef Z80_DBG
  48.    }
  49. #else
  50.    #define z80dbg z80fast
  51. #endif
  52. //=============================================================================
  53. void out(unsigned port, unsigned char val);
  54. //=============================================================================
  55. u8 __fastcall Xm(u32 addr)
  56. {
  57.     return z80fast::xm(addr);
  58. }
  59. //=============================================================================
  60. u8 __fastcall Rm(u32 addr)
  61. {
  62.     return z80fast::rm(addr);
  63. }
  64. //=============================================================================
  65. void __fastcall Wm(u32 addr, u8 val)
  66. {
  67.     //z80fast::wm(addr, val);   //0.39.0
  68.    
  69.     if (comp.fddIO2Ram_wr_disable == false)     //NEDOREPO
  70.     {
  71.         z80fast::wm(addr, val);
  72.     }
  73. }
  74. //=============================================================================
  75. u8 __fastcall DbgXm(u32 addr)
  76. {
  77.     return z80dbg::xm(addr);
  78. }
  79. //=============================================================================
  80. u8 __fastcall DbgRm(u32 addr)
  81. {
  82.     return z80dbg::rm(addr);
  83. }
  84. //=============================================================================
  85. void __fastcall DbgWm(u32 addr, u8 val)
  86. {
  87.     //z80dbg::wm(addr, val);                    //0.39.0
  88.    
  89.     if(comp.fddIO2Ram_wr_disable == false)      //NEDOREPO
  90.     {
  91.         z80dbg::wm(addr, val);
  92.     }
  93. }
  94. //=============================================================================
  95. void reset(ROM_MODE mode)
  96. {
  97.    comp.pEFF7 &= conf.EFF7_mask;
  98.    comp.pEFF7 |= EFF7_GIGASCREEN; // [vv] disable turbo
  99.    {
  100.                 conf.frame = frametime;
  101.                 cpu.SetTpi(conf.frame);
  102. //                if ((conf.mem_model == MM_PENTAGON)&&(comp.pEFF7 & EFF7_GIGASCREEN))conf.frame = 71680; //removed 0.37
  103.                 apply_sound();
  104.    } //Alone Coder 0.36.4
  105.    comp.t_states = 0; comp.frame_counter = 0;
  106.    comp.p7FFD = comp.pDFFD = comp.pFDFD = comp.p1FFD = 0;
  107.    comp.p7EFD = 0;
  108.  
  109.    comp.p00 = comp.p80FD = 0; // quorum
  110.  
  111.    comp.pBF = 0; // ATM3
  112.    comp.pBE = 0; // ATM3
  113.    
  114.    comp.fddIO2Ram_mask = 0x00;          //NEDOREPO
  115.    comp.fddIO2Ram_wr_disable = 0x00;    //NEDOREPO
  116.    
  117. //-----------------------------------------------------------------------------
  118.    if ( conf.mem_model == MM_ATM710 ||
  119.         conf.mem_model == MM_ATM3)
  120.    {
  121.        switch(mode)
  122.        {
  123.        case RM_DOS:
  124.            // ╟ряЁхЄ ярышЄЁ√, чряЁхЄ cpm, тъы■ўхэшх фшёяхЄўхЁр ярь Єш
  125.            // ┬ъы■ўхэшх ьхїрэшўхёъющ ъыртшрЄєЁ√, ЁрчЁх°хэшх ърфЁют√ї яЁхЁ√трэшщ
  126.            set_atm_FF77(0x4000 | 0x200 | 0x100, 0x80 | 0x40 | 0x20 | 3);
  127.            comp.pFFF7[0] = 0x100 | 1; // trdos
  128.            comp.pFFF7[1] = 0x200 | 5; // ram 5
  129.            comp.pFFF7[2] = 0x200 | 2; // ram 2
  130.            comp.pFFF7[3] = 0x200;     // ram 0
  131.  
  132.            comp.pFFF7[4] = 0x100 | 1; // trdos
  133.            comp.pFFF7[5] = 0x200 | 5; // ram 5
  134.            comp.pFFF7[6] = 0x200 | 2; // ram 2
  135.            comp.pFFF7[7] = 0x200;     // ram 0
  136.        break;
  137.        default:
  138.            set_atm_FF77(0,0);
  139.        }
  140.    }
  141. //-----------------------------------------------------------------------------
  142.    if (conf.mem_model == MM_ATM450)
  143.    {
  144.        switch(mode)
  145.        {
  146.        case RM_DOS:
  147.            set_atm_aFE(0x80|0x60);
  148.            comp.aFB = 0;
  149.        break;
  150.        default:
  151.            set_atm_aFE(0x80);
  152.            comp.aFB = 0x80;
  153.        }
  154.    }
  155. //-----------------------------------------------------------------------------
  156.    comp.flags = 0;
  157.    comp.active_ay = 0;
  158.    
  159.    comp.tfmstat = 0x0E; //NEDOREPO      //read register,fm disable, saa disable
  160.  
  161. //-----------------------------------------------------------------------------
  162.         if(conf.wiznet) //NEDOREPO
  163.         {      
  164.                 Wiz5300_Close();
  165.                 comp.wiznet.p82=comp.wiznet.p82 = 0;
  166.                 comp.wiznet.memEna = 0;
  167.         }
  168. //-----------------------------------------------------------------------------
  169.    comp.ula_plus_group = 0;
  170.    comp.ula_plus_pal_idx = 0;
  171.    comp.ula_plus_en = false;
  172. //-----------------------------------------------------------------------------
  173.  
  174.    cpu.reset();
  175.    reset_tape();
  176.    ay[0].reset();
  177.    ay[1].reset();
  178.    Saa1099.reset();
  179. //-----------------------------------------------------------------------------
  180.    if (conf.sound.ay_scheme == AY_SCHEME_CHRV)
  181.    {
  182.         out(0xfffd,0xff); //0.36.7
  183.         //printf("tfmstatuson0=%d\n",tfmstatuson0);
  184.    };   //Alone Coder
  185. //-----------------------------------------------------------------------------
  186.    #ifdef MOD_GS
  187.    if (conf.sound.gsreset)
  188.        reset_gs();
  189.    #endif
  190. //-----------------------------------------------------------------------------
  191.    #ifdef MOD_VID_VD
  192.    comp.vdbase = 0; comp.pVD = 0;
  193.    #endif
  194. //-----------------------------------------------------------------------------
  195.    if ( conf.mem_model == MM_ATM450 ||
  196.         conf.mem_model == MM_ATM710 ||
  197.         conf.mem_model == MM_ATM3 ||
  198.         conf.mem_model == MM_PROFI ||
  199.         conf.ula_plus )
  200.         {
  201.         load_spec_colors();
  202.         }
  203. //-----------------------------------------------------------------------------
  204.    comp.ide_hi_byte_r = 0;
  205.    comp.ide_hi_byte_w = 0;
  206.    comp.ide_hi_byte_w1 = 0;
  207.    hdd.reset();
  208.    input.atm51.reset();
  209.    Zc.Reset();
  210. //-----------------------------------------------------------------------------
  211.    if ( (!conf.trdos_present && mode == RM_DOS) ||
  212.         (!conf.cache && mode == RM_CACHE) )
  213.         {
  214.         mode = RM_SOS;
  215.         }
  216. //-----------------------------------------------------------------------------
  217.     if ( (conf.mem_model == MM_ATM710) && (mode == RM_DOS) )    //NEDOREPO
  218.     {
  219.            comp.p7FFD |=  0x10;
  220.     }
  221. //-----------------------------------------------------------------------------
  222.  
  223.         set_mode(mode);
  224. }
  225. //=============================================================================