Subversion Repositories pentevo

Rev

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