Cleaned up how memory and IOPAGE traps are triggered, how ODD byte-level IOPAGE accesses are handled, and how memory is dumped by the Debugger

This commit is contained in:
Jeff Parsons 2016-10-10 17:09:29 -07:00 committed by Jeff Parsons
commit 6514836098
31 changed files with 901 additions and 679 deletions

View file

@ -1349,9 +1349,9 @@ var ce=[function(){this.A-=2+(-1===this.F?0:1);return this.Zb.ja},function(){thi
var b=this.Ab;80286==this.ca?b|=-16777216:80386<=this.ca&&2!=this.U&&(a|=b<<16);this.Va(this.F+2,b);this.A-=12}return a},function(a){-1===this.F||this.X&131072?v.call(this,6):(this.ub=this.fa(this.F+2)&(this.N|this.N<<8),a&=65535,this.wc=this.ub+a,this.L|=2,this.A-=11);return a},function(a){-1===this.F||this.X&131072?v.call(this,6):(this.Ab=this.fa(this.F+2)&(this.N|this.N<<8),a&=65535,this.xc=this.Ab+a,this.L|=2,this.A-=12);return a},function(){this.A-=2+(-1===this.F?0:1);return this.Pa},T,function(a){this.X&
131072?v.call(this,6):(Ce(this,a),this.A-=-1===this.F?3:6,this.L|=2);return a},T],Ai=[T,T,T,T,hg,kg,jg,ig];
function U(a){Ka.call(this,"ChipSet",a,U);var b=a.model;b&&!Bi[b]&&r("Unrecognized ChipSet model: "+b);this.ca=Bi[b]||Ci;this.D=[];b=Di(a[Ei]);this.D[0]=[b,b];null==b&&(this.Y=[360,360],(b=a.floppies)&&b.length&&(this.Y=b),Fi(this,Gi,this.Y.length),Fi(this,Hi,a.monitor||(this.ca<Se?"mono":"ega")));b=Di(a[Ii]);this.D[1]=[b,b];this.Ea=this.pa=1;this.ca>=Se&&(this.Ea=this.pa=2);this.Z=a.scaleTimers||!1;this.Xa=a.rtcDate;this.Oa=!1;a.sound&&(this.La=this.qa=null,window&&(this.La=window.AudioContext||
window.webkitAudioContext),this.La&&(this.qa=new this.La));this.reset(!0);t(this)}Ta(U);var Ci=5150.9,Se=5170,Bi={5150:5150,5160:5160,5170:Se,att6300:5160.101,mpc1600:5150.101,z150:5160.15,compaq:5150.102,other:Ci,deskpro386:5180},Ei="sw1",Ii="sw2",Ji={Yj:1,ONE:0,gn:64,en:128,Wm:192,lc:192,eg:6},Ki={fn:16,Sm:32,Xm:48,lc:48,eg:4},Gi=1,Hi=4,W={5150:[{},{}]};W[5150][0][Gi]={lc:192,Nc:{1:0,2:64,3:128,4:192},ed:"Number of Floppy Drives"};W[5150][0][3]={lc:2,Nc:{0:0,1:2},ed:"Coprocessor"};
window.webkitAudioContext),this.La&&(this.qa=new this.La));this.reset(!0);t(this)}Ta(U);var Ci=5150.9,Se=5170,Bi={5150:5150,5160:5160,5170:Se,att6300:5160.101,mpc1600:5150.101,z150:5160.15,compaq:5150.102,other:Ci,deskpro386:5180},Ei="sw1",Ii="sw2",Ji={Yj:1,ONE:0,gn:64,en:128,Wm:192,lc:192,eg:6},Ki={fn:16,Sm:32,Xm:48,lc:48,eg:4},Gi=1,Hi=4,W={5150:[{},{}]};W[5150][0][Gi]={lc:192,Nc:{1:0,2:64,3:128,4:192},ed:"Number of Floppy Drives"};W[5150][0][3]={lc:2,Nc:{0:0,1:2},ed:"FPU"};
W[5150][0][Hi]={lc:48,Nc:{0:0,1:16,2:32,3:48,none:0,tv:16,color:32,cga:32,mda:48,mono:48,ega:0,vga:0},ed:"Monitor Type"};W[5150][0][5]={lc:12,Nc:{16:0,32:4,48:8,64:12},ed:"Base Memory (16Kb Increments)"};W[5150][1][6]={lc:31,Nc:{0:0,32:1,64:2,96:3,128:4,160:5,192:6,224:7,256:8,288:9,320:10,352:11,384:12,416:13,448:14,480:15,512:16,544:17,576:18},ed:"Expansion Memory (32Kb Increments)"};W[5160]=[{},{}];W[5160][0][Gi]=W[5150][0][Gi];W[5160][0][3]=W[5150][0][3];W[5160][0][Hi]=W[5150][0][Hi];
W[5160][0][5]={lc:12,Nc:{64:0,128:4,192:8,256:12},ed:"Base Memory (64Kb Increments)"};W[5160][1][6]=W[5150][1][6];W[5160.101]=[{},{}];W[5160.101][0][5]={lc:143,Nc:{128:1,256:130,512:8,640:141},ed:"Base Memory (128Kb Increments)"};W[5160.101][0][3]={lc:16,Nc:{0:0,1:16},ed:"Coprocessor"};W[5160.101][1][2]={lc:1,Nc:{0:0,1:1},ed:"Floppy Type"};W[5160.101][1][Gi]=W[5150][0][Gi];W[5160.101][1][Hi]=W[5150][0][Hi];l=U.prototype;
W[5160][0][5]={lc:12,Nc:{64:0,128:4,192:8,256:12},ed:"Base Memory (64Kb Increments)"};W[5160][1][6]=W[5150][1][6];W[5160.101]=[{},{}];W[5160.101][0][5]={lc:143,Nc:{128:1,256:130,512:8,640:141},ed:"Base Memory (128Kb Increments)"};W[5160.101][0][3]={lc:16,Nc:{0:0,1:16},ed:"FPU"};W[5160.101][1][2]={lc:1,Nc:{0:0,1:1},ed:"Floppy Type"};W[5160.101][1][Gi]=W[5150][0][Gi];W[5160.101][1][Hi]=W[5150][0][Hi];l=U.prototype;
l.zb=function(a,b,c){switch(b){case Ei:return this.la[b]=c,Li(this,0,b),!0;case Ii:if(5150==(this.ca|0)||5160.101==this.ca)return this.la[b]=c,Li(this,1,b),!0;break;case "swdesc":return this.la[b]=c,!0}return!1};
l.pc=function(a,b,c,d){this.ia=b;this.A=c;this.Ia=d;this.ba=a;this.od=mb(a,"FPU");Fi(this,3,this.od?1:0,!0);this.C=mb(a,"Keyboard");this.Ga=c.T.Yc/1193181;Sb(b,this,Mi);Ub(b,this,Ni);this.ca<Se?5160.101!=this.ca?(Sb(b,this,Oi),Ub(b,this,Pi)):(Sb(b,this,Qi),Ub(b,this,Ri)):(Sb(b,this,Si),Ub(b,this,Ti),5180==(this.ca|0)&&(Sb(b,this,Ui),Ub(b,this,Vi)))};l.Ub=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};l.Tb=function(a){return a?this.save():!0};
l.reset=function(a){var b;Wi(this);this.G=Array(this.Ea);for(b=0;b<this.Ea;b++)Xi(this,b);this.gc=Array(this.pa);Yi(this,0,32);1<this.pa&&Yi(this,1,160);this.za=this.xa=null;this.K=Array(5180==(this.ca|0)?6:3);for(b=0;b<this.K.length;b++)Zi(this,b);this.oa=this.Ja=this.S=this.Da=null;this.ma=0;5160.101==this.ca&&(this.ka=0);if(this.ca>=Se){this.H=16;this.P=0;this.R=16;this.ua=0;this.W=160;512<=$i(this)&&(this.W|=16);3==+aj(this,Hi,void 0)&&(this.W|=64);5180==(this.ca|0)&&(this.W|=12);this.va=3;this.I=
@ -1369,7 +1369,7 @@ function Li(a,b,c){for(var d="",e=a.la[c],f=1;8>=f;f++){var g="pcjs-bitCell";f||
function aj(a,b,c){for(var d=null,e=W[a.ca]||W[a.ca|0]||W[5150],f=0;f<e.length;f++){var g=e[f];if(g&&(g=g[b])){a=a.D[f][c?0:1]&g.lc;for(var h in g.Nc)if(g.Nc[h]==a&&(d=h,"number"==typeof+d))break;break}}return d}function cj(a,b){if(b<+aj(a,Gi,void 0)){if(!a.Y)return 1;if(b<a.Y.length)switch(a.Y[b]){case 160:case 180:case 320:case 360:return 1;case 720:return 3;case 1200:return 2;case 1440:return 4}}return 0}function $i(a,b){return+aj(a,5,b)+ +aj(a,6,b)}
function Di(a,b){if(a){b=0;for(var c=1,d=0;d<a.length;d++)"0"==a.charAt(d)&&(b|=c),c<<=1}return b}function Fi(a,b,c,d){for(var e=W[a.ca]||W[a.ca|0]||W[5150],f=0;f<e.length;f++){var g=e[f];if(g&&(g=g[b]))for(var h in g.Nc)if(h==c){a.D[f][d?0:1]&=~g.lc;a.D[f][d?0:1]|=g.Nc[h];return}}}function oj(a,b){a.setAttribute("data-value",b?"1":"0");a.style.color=b?"#ffffff":"#000000";a.style.backgroundColor=b?"#000000":"#ffffff"}function Wi(a){mj(a,0,Ei);mj(a,1,Ii);pj(a)}
function mj(a,b,c,d){if(c=a.la[c]){d=d?a.D[b][0]:a.D[b][1]=a.D[b][0];c=bb(c,"pcjs-bitCell");for(var e=0;e<c.length;e++){var f=nj(a,b,e);c[e].setAttribute("title",f&&f.ed||"Reserved");oj(c[e],d&1<<e?!1:!0);c[e].onclick=function(a,b){return function(){var c="1"!=b.getAttribute("data-value");oj(b,c);var d=b.getAttribute("id").split("-"),e=1<<+d[1]-1;switch(d[0]){case Ei:a.D[0][0]=a.D[0][0]&~e|(c?0:e);break;case Ii:a.D[1][0]=a.D[1][0]&~e|(c?0:e)}pj(a)}}(a,c[e])}}}
function pj(a){var b=a.la.swdesc;if(null!=b){var c;c=""+($i(a,!0)+"Kb");c+=", "+(+ +aj(a,3,!0)?"":"No ")+"Coprocessor";c+=", "+{0:"Enhanced Color",1:"TV",2:"Color",3:"Monochrome"}[+aj(a,Hi,!0)]+" Monitor";c+=", "+ +aj(a,Gi,!0)+" Floppy Drives";if(null!=a.D[0][1]&&a.D[0][1]!=a.D[0][0]||null!=a.D[1][1]&&a.D[1][1]!=a.D[1][0])c+=" (Reset required)";b.textContent=c}}
function pj(a){var b=a.la.swdesc;if(null!=b){var c;c=""+($i(a,!0)+"Kb");c+=", "+(+ +aj(a,3,!0)?"":"No ")+"FPU";c+=", "+{0:"Enhanced Color",1:"TV",2:"Color",3:"Monochrome"}[+aj(a,Hi,!0)]+" Monitor";c+=", "+ +aj(a,Gi,!0)+" Floppy Drives";if(null!=a.D[0][1]&&a.D[0][1]!=a.D[0][0]||null!=a.D[1][1]&&a.D[1][1]!=a.D[1][0])c+=" (Reset required)";b.textContent=c}}
function uj(a,b,c){a=a.G[b];var d=a.$b[c],e=d.gb[a.Ib];a.Ib^=1;b||c||a.Ib||(d.gb[0]++,255<d.gb[0]&&(d.gb[0]=0,d.gb[1]++,255<d.gb[1]&&(d.gb[1]=0)));return e}function vj(a,b,c,d){a=a.G[b];c=a.$b[c];c.gb[a.Ib]=c.wf[a.Ib]=d;a.Ib^=1}function wj(a,b,c){a=a.G[b];var d=a.$b[c],e=d.hb[a.Ib];a.Ib^=1;b||c||a.Ib||(d.hb[0]--,0>d.hb[0]&&(d.hb[0]=255,d.hb[1]--,0>d.hb[1]&&(d.hb[1]=255)));return e}function xj(a,b,c,d){a=a.G[b];c=a.$b[c];c.hb[a.Ib]=c.jc[a.Ib]=d;a.Ib^=1}
function yj(a,b){a=a.G[b];b=a.Db|1;a.Db&=-16;return b}function zj(a,b,c){a=a.G[b];b=c&3;a.Db=a.Db&~(16<<b)|(c&4)<<b+2;a.hi=c}function Aj(a,b,c){b=a.G[b];var d=c&3,e=b.$b[d];e.Rd=!!(c&4);e.Rd||Bj(a,b.Gl+d)}function Cj(a,b){a=a.G[b];for(b=0;b<a.$b.length;b++)hj(a,b)}function Dj(a,b,c){return a.G[b].$b[c].xf}function Ej(a,b,c,d){a.G[b].$b[c].xf=d}function Fj(a,b,c,d,e){jj(a.G[b>>2].$b[b&3],c,d,e)}function Bj(a,b,c){b=a.G[b>>2].$b[b&3];b.Ef&&b.qg&&b.Sf?(c&&(b.done=c),b.Rd||Gj(a,b,!0)):c&&c(!0)}
function Gj(a,b,c){c&&(b.count=b.hb[1]<<8|b.hb[0],b.type=b.mode&12,b.si=b.Ff=!1);for(var d=!1;0<=b.count&&(c=b.xf<<16|b.gb[1]<<8|b.gb[0],4==b.type?(d=!0,function(c){b.qg.call(b.Ef,b.Sf,-1,function(e,g){0>e&&(b.si||(b.si=!0),e=255);b.Rd||a.ia.Mc(c,e);(d=g)&&setTimeout(function(){Hj(b)||Gj(a,b)},0)})}(c)):8==b.type?(c=a.ia.Jb(c),0>b.qg.call(b.Ef,b.Sf,c)&&(b.Ff=!0)):0!=b.type&&(b.Ff=!0)),!d&&!Hj(b););}