mirror of
https://github.com/trebonian/visual6502.git
synced 2024-09-07 08:54:57 +00:00
Z80: fix stepBack(), drive IntAck value of 0xe9, add lots more internal busses (with Ed)
This commit is contained in:
parent
86e6e116d7
commit
a92f443ac1
@ -1,4 +1,156 @@
|
|||||||
var nodenames ={
|
var nodenames ={
|
||||||
|
|
||||||
|
dp_dl: 82,
|
||||||
|
dl_dp: 165,
|
||||||
|
|
||||||
|
load_ir: 1354,
|
||||||
|
|
||||||
|
dlatch0: 123,
|
||||||
|
dlatch1: 195,
|
||||||
|
dlatch2: 414,
|
||||||
|
dlatch3: 930,
|
||||||
|
dlatch4: 1000,
|
||||||
|
dlatch5: 872,
|
||||||
|
dlatch6: 751,
|
||||||
|
dlatch7: 358,
|
||||||
|
|
||||||
|
dl_d: 87,
|
||||||
|
d_dl: 133,
|
||||||
|
|
||||||
|
dbus0: 138,
|
||||||
|
dbus1: 196,
|
||||||
|
dbus2: 412,
|
||||||
|
dbus3: 480,
|
||||||
|
dbus4: 485,
|
||||||
|
dbus5: 486,
|
||||||
|
dbus6: 380,
|
||||||
|
dbus7: 370,
|
||||||
|
|
||||||
|
_instr0: 1350,
|
||||||
|
_instr1: 1360,
|
||||||
|
_instr2: 1366,
|
||||||
|
_instr6: 1370,
|
||||||
|
_instr7: 1375,
|
||||||
|
_instr3: 1380,
|
||||||
|
_instr4: 1388,
|
||||||
|
_instr5: 1395,
|
||||||
|
|
||||||
|
instr0: 1348,
|
||||||
|
instr1: 1359,
|
||||||
|
instr2: 1365,
|
||||||
|
instr6: 1369,
|
||||||
|
instr7: 1374,
|
||||||
|
instr3: 1379,
|
||||||
|
instr4: 1387,
|
||||||
|
instr5: 1394,
|
||||||
|
|
||||||
|
d_u: 546,
|
||||||
|
|
||||||
|
ubus0: 545, // To low half of register file
|
||||||
|
ubus1: 528,
|
||||||
|
ubus2: 526,
|
||||||
|
ubus3: 770,
|
||||||
|
ubus4: 779,
|
||||||
|
ubus5: 790,
|
||||||
|
ubus6: 716,
|
||||||
|
ubus7: 525,
|
||||||
|
|
||||||
|
u_v: 750, // enables pass transistors that link ubus and vbus
|
||||||
|
|
||||||
|
vbus0: 755, // To high half of register file
|
||||||
|
vbus1: 772,
|
||||||
|
vbus2: 783,
|
||||||
|
vbus3: 796,
|
||||||
|
vbus4: 803,
|
||||||
|
vbus5: 808,
|
||||||
|
vbus6: 836,
|
||||||
|
vbus7: 839,
|
||||||
|
|
||||||
|
rl_wr: 678, // write control
|
||||||
|
rh_wr: 652, // write control
|
||||||
|
|
||||||
|
r_u: 692, // enable register bit lines 0..7 values onto the ubus
|
||||||
|
r_v: 693, // enable register bit lines 8..15 values onto the vbus
|
||||||
|
|
||||||
|
regbit0: 702, // bit lines within the register array
|
||||||
|
regbit1: 732,
|
||||||
|
regbit2: 738,
|
||||||
|
regbit3: 775,
|
||||||
|
regbit4: 776,
|
||||||
|
regbit5: 807,
|
||||||
|
regbit6: 809,
|
||||||
|
regbit7: 864,
|
||||||
|
regbit8: 870,
|
||||||
|
regbit9: 902,
|
||||||
|
regbit10: 906,
|
||||||
|
regbit11: 934,
|
||||||
|
regbit12: 935,
|
||||||
|
regbit13: 970,
|
||||||
|
regbit14: 973,
|
||||||
|
regbit15: 999,
|
||||||
|
|
||||||
|
r_x1: 608, // sone sort of register precharge, or inccrement control?
|
||||||
|
|
||||||
|
r_p: 1785, // connects the register bit lines to the pc/ir/inc/dec bit lines
|
||||||
|
|
||||||
|
pcbit0: 703, // bit lines within the PC/IR/INC/DEC bit lines
|
||||||
|
pcbit1: 731,
|
||||||
|
pcbit2: 739,
|
||||||
|
pcbit3: 774,
|
||||||
|
pcbit4: 777,
|
||||||
|
pcbit5: 806,
|
||||||
|
pcbit6: 810,
|
||||||
|
pcbit7: 863,
|
||||||
|
pcbit8: 871,
|
||||||
|
pcbit9: 901,
|
||||||
|
pcbit10: 907,
|
||||||
|
pcbit11: 933,
|
||||||
|
pcbit12: 936,
|
||||||
|
pcbit13: 969,
|
||||||
|
pcbit14: 974,
|
||||||
|
pcbit15: 998,
|
||||||
|
|
||||||
|
alubus0: 837, // ALU bus lo nibble
|
||||||
|
alubus1: 889,
|
||||||
|
alubus2: 937,
|
||||||
|
alubus3: 983,
|
||||||
|
|
||||||
|
alubus4: 852, // ALU bus hi nibble
|
||||||
|
alubus5: 903,
|
||||||
|
alubus6: 951,
|
||||||
|
alubus7: 995,
|
||||||
|
|
||||||
|
alua0: 850, // ALU op 1 lo nibble
|
||||||
|
alua1: 899,
|
||||||
|
alua2: 947,
|
||||||
|
alua3: 993,
|
||||||
|
|
||||||
|
alua4: 868, // ALU op 1 hi nibble
|
||||||
|
alua5: 920,
|
||||||
|
alua6: 968,
|
||||||
|
alua7: 1007,
|
||||||
|
|
||||||
|
alub0: 845, // ALU op 2 lo nibble
|
||||||
|
alub1: 897,
|
||||||
|
alub2: 944,
|
||||||
|
alub3: 988,
|
||||||
|
|
||||||
|
alub4: 867, // ALU op 2 hi nibble
|
||||||
|
alub5: 918,
|
||||||
|
alub6: 966,
|
||||||
|
alub7: 1005,
|
||||||
|
|
||||||
|
aluout0: 2211,
|
||||||
|
aluout1: 2338,
|
||||||
|
aluout2: 2504,
|
||||||
|
aluout3: 816,
|
||||||
|
|
||||||
|
alulat0: 865,
|
||||||
|
alulat1: 912,
|
||||||
|
alulat2: 960,
|
||||||
|
alulat3: 1002,
|
||||||
|
|
||||||
|
|
||||||
vss: 1,
|
vss: 1,
|
||||||
vcc: 2,
|
vcc: 2,
|
||||||
clk: 3,
|
clk: 3,
|
||||||
|
@ -19,8 +19,11 @@ presetLogLists=[
|
|||||||
['cycle',],
|
['cycle',],
|
||||||
['ab', 'db', '_m1', '_rd', '_wr', '_mreq', '_iorq', 'State', 'pc', 'Fetch'],
|
['ab', 'db', '_m1', '_rd', '_wr', '_mreq', '_iorq', 'State', 'pc', 'Fetch'],
|
||||||
['a', 'f', 'bc', 'de', 'hl', 'ix', 'iy', 'sp'],
|
['a', 'f', 'bc', 'de', 'hl', 'ix', 'iy', 'sp'],
|
||||||
['a2', 'f2', 'bc2', 'de2', 'hl2'],
|
|
||||||
['wz', 'ir'],
|
['wz', 'ir'],
|
||||||
|
['alubus', '-alua', '-alub', 'aluout', 'alulat'],
|
||||||
|
['d_u', 'r_u', '-ubus', 'r_v', 'u_v', '-vbus', 'regbit', 'r_p', 'pcbit', 'rl_wr', 'rh_wr', 'r_x1'],
|
||||||
|
['dp_dl', 'dl_dp', '-dlatch', 'dl_d', 'd_dl', '-dbus', 'instr', 'load_ir'],
|
||||||
|
['a2', 'f2', 'bc2', 'de2', 'hl2'],
|
||||||
['_int','_nmi', nodenamereset],
|
['_int','_nmi', nodenamereset],
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -76,6 +79,15 @@ function setupTransistors(){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function stepBack(){
|
||||||
|
if(cycle==0) return;
|
||||||
|
showState(trace[--cycle].chip);
|
||||||
|
setMem(trace[cycle].mem);
|
||||||
|
var clk = isNodeHigh(nodenames['clk']);
|
||||||
|
if(!clk) writeDataBus(mRead(readAddressBus()));
|
||||||
|
chipStatus();
|
||||||
|
}
|
||||||
|
|
||||||
// simulate a single clock phase with no update to graphics or trace
|
// simulate a single clock phase with no update to graphics or trace
|
||||||
function halfStep(){
|
function halfStep(){
|
||||||
var clk = isNodeHigh(nodenames['clk']);
|
var clk = isNodeHigh(nodenames['clk']);
|
||||||
@ -151,6 +163,13 @@ function handleBusRead(){
|
|||||||
eval(fetchTriggers[d]);
|
eval(fetchTriggers[d]);
|
||||||
}
|
}
|
||||||
writeDataBus(d);
|
writeDataBus(d);
|
||||||
|
} else if(!isNodeHigh(nodenames['_m1']) && !isNodeHigh(nodenames['_iorq'])) {
|
||||||
|
// Interrupt acknownledge cycle, force 0xFF onto the bus
|
||||||
|
// In IM0 this is seen as JP (HL)
|
||||||
|
// In IM1 this is ignored
|
||||||
|
// In IM2 this is used as the low byte of the vector
|
||||||
|
// TODO: ideally this "vector" would be a configurable parameter
|
||||||
|
writeDataBus(0xe9);
|
||||||
} else {
|
} else {
|
||||||
// In all other cases we set the data bus to FF
|
// In all other cases we set the data bus to FF
|
||||||
// as a crude indicateion that it's not being driven
|
// as a crude indicateion that it's not being driven
|
||||||
|
Loading…
Reference in New Issue
Block a user