On 4/16/2019 7:47 PM, Mia Magnusson wrote: > Den Mon, 15 Apr 2019 17:08:43 -0400 (EDT) skrev Jim Brain > <brain_at_jbrain.com>: >> Unfortunately, it does not work that way. I understood that the >> $01/$1 registers are present in every bank, not just bank $0. Perhaps >> that is a wrong assumption. As such, I also decode them to each bank. >> (I think it has to be that way, for how else would you move from >> execution in bank 1 to bank 0 if the registers only appear in bank >> 0.) So, a write to any bank: $0/$1 will save new values in the banks >> (though they will not be used until the developer moves back into >> emulation mode). > I might had been unclear. > > What I'm trying to say is that if the registers at 0 and 1 are hidden > from read, but listens to writes, in '816 mode, everything should work > fine as the code that switches back from '816 mode to 6509 emulation > could just write the 0/1 registers at $F0000/$F0001 as there is no risk > of corrupting memory for the 8088 board. With those registers written > it's then safe to switch back from '816 mode to 6509 emulation mode and > the registers will contain the correct values even if previous code had > written to $x0000/$x0001. So, the logic you feel should be implemented would be: 01_register_select = (((address[19:0] == $f0001) and (mode_816 == 1) and (mode_emulation == 0)) or ((address[15:0] == 1) and (mode_816 == 0))); // listen to $f0001 when in native 816 mode, else listen in all banks. JimReceived on 2020-05-29 21:32:29
Archive generated by hypermail 2.3.0.