19 Commits

Author SHA1 Message Date
BigEd
7056873887 Merge pull request #44 from trebonian/gh-pages
Update production from gh-pages
2017-03-16 10:44:38 +00:00
BigEd
f736b092de Merge pull request #43 from trebonian/staging
Update gh-pages preview site
2017-03-13 16:20:15 +00:00
BigEd
1cb58a1cab Merge pull request #42 from trebonian/master
Merge two small changes to staging
2017-03-13 16:17:52 +00:00
Ed S
1f78e25b3a Tweak README - add 6800 sim 2017-03-13 16:16:06 +00:00
Ed S
4364604b96 Whitespace fixups 2017-03-13 16:13:03 +00:00
BigEd
7ddbbe7de6 Merge pull request #41 from trebonian/staging
Update gh-pages from staging for testing
2017-03-12 10:24:03 +00:00
BigEd
d5f0604427 Merge pull request #40 from trebonian/master
Two small changes from master into staging
2017-03-11 22:47:55 +00:00
BigEd
2147762ee4 Merge pull request #38 from BigEd/patch-1
Fix typo in comment
2017-03-11 22:45:51 +00:00
BigEd
651d8a44c5 Merge pull request #39 from mmfoerster/master
Patch allNodes() to generate list of numbers for the node indexes instead of numeric strings, fix JMP indirect mnemonic
2017-03-11 22:43:36 +00:00
mmfoerster
51d6bb216b Patch allNodes() to generate list of numbers for node indexes instead of numeric strings, fix JMP indirect mnemonic
Patches for the general chipsim code and the 6502 emulation.

    For the general chipsim code, allNodes() was constructing a list of
numeric strings for the node indexes instead of a list of numbers for them.
During the first iteration inside recalcNodeList(), the numeric string node
indexes would end up being the first elements of their respective node group
lists. This in turn would allow instances of a duplicate node index to be added
to the node group list. The duplicate in each case would be the numeric
equivalent of the initial numeric string index: indexOf() would not recognize
the string element as being the equivalent of the numeric node index, so the
numeric version would be added also.

For an example (from real log data), a node group list of: [ "49", 483 ] has a
node index of 49 tested against it. indexOf() says "49" is not an occurrence
of 49, so it allows 49 to be
2017-03-10 23:09:20 -05:00
BigEd
3b7fbe4385 Fix typo in comment 2016-11-08 16:37:20 +00:00
trebonian
f3cffeeed6 Merge pull request #36 from BigEd/patch-2
Add I/O to 6800
2015-04-26 13:48:07 -04:00
BigEd
a2a4bc65c5 Add I/O to 6800 2015-04-26 18:30:53 +01:00
trebonian
815e972d14 Merge pull request #30 from PeterMortensen/master
Spelling/case.
2015-04-26 11:29:56 -04:00
trebonian
9f4f922e16 Merge pull request #34 from shersom/master
Add labels to layout controls
2015-04-26 11:29:21 -04:00
trebonian
27bec1bfe5 Merge pull request #35 from BigEd/patch-1
Fixup link to 6800 programming card
2015-04-25 20:59:53 -04:00
BigEd
976fe7e430 Fixup link to 6800 programming card 2015-04-25 14:17:15 +01:00
shersom
72ac2caf74 Add labels to layout controls 2014-05-05 23:54:54 -07:00
Peter Mortensen
df33b88c56 Update README 2013-06-18 16:06:06 +03:00
11 changed files with 7251 additions and 7229 deletions

2
README
View File

@@ -4,7 +4,7 @@ www.visual6502.org/JSSim
It includes a general purpose transistor-level simulator, layout browser, It includes a general purpose transistor-level simulator, layout browser,
and the data from a 6502 revD chip. and the data from a 6502 revD chip.
Recently added: polygon data for the 6800 chip. The simulation is not yet working, It also includes a similar simulator for the 6800 chip.
Note the various licenses and Copyright associated with each file. Note the various licenses and Copyright associated with each file.

View File

@@ -4,20 +4,26 @@ testprogramAddress=0x0000;
// we want to auto-clear the console if any output is sent by the program // we want to auto-clear the console if any output is sent by the program
var consoleboxStream=""; var consoleboxStream="";
// for opcodes, see ftp://ftp.comlab.ox.ac.uk/pub/Cards/txt/6800.txt // demonstrate write hook
writeTriggers[0x8000]="consoleboxStream += String.fromCharCode(d);"+
"consolebox.innerHTML = consoleboxStream;";
// demonstrate read hook (not used by this test program)
readTriggers[0x8004]="((consolegetc==undefined)?0:0xff)"; // return zero until we have a char
readTriggers[0x8000]="var c=consolegetc; consolegetc=undefined; (c)";
// for opcodes, see http://www.textfiles.com/programming/CARDS/6800
testprogram = [ testprogram = [
0xce, 0x43, 0x21, // LDX #4321 0xce, 0x43, 0x21, // LDX #4321
0x35, // TXS 0x35, // TXS
0xc6, 0xfb, // LDAB #$FB 0xce, 0x80, 0x00, // LDX #8000
0xc6, 0x40, // LDAB #$40
0xbd, 0x00, 0x10, // JSR $0010 0xbd, 0x00, 0x10, // JSR $0010
0x7e, 0x00, 0x04, // JMP $0004 0x7e, 0x00, 0x09, // JMP $0009
0x01, // NOP 0x01, // NOP
0x01, // NOP
0x01, // NOP
0x01, // NOP
0x08, // INX
0x4a, // DECA 0x4a, // DECA
0xe7, 0x00, // STAB 0, X
0x7c, 0x00, 0x0f, // INC $0F 0x7c, 0x00, 0x0f, // INC $0F
0x0d, // SEC 0x0d, // SEC
0xc9, 0x02, // ADCB #$02 0xc9, 0x02, // ADCB #$02

View File

@@ -143,7 +143,15 @@ function saveString(name, str){
function allNodes(){ function allNodes(){
var res = new Array(); var res = new Array();
for(var i in nodes) if((i!=npwr)&&(i!=ngnd)) res.push(i); var ii = 0;
for(var i in nodes) {
// Don't feed numeric strings to recalcNodeList(). Numeric
// strings can cause a (data dependent) duplicate node number
// hiccup when accumulating a node group's list, ie:
// group => [ "49", 483, 49 ]
ii = Number( i );
if((ii!=npwr)&&(ii!=ngnd)) res.push(ii);
}
return res; return res;
} }

View File

@@ -57,7 +57,7 @@ $().ready(function(){
<a href="http://blog.visual6502.org">Blog</a>&nbsp; <a href="http://blog.visual6502.org">Blog</a>&nbsp;
<a href="http://www.visual6502.org/links.html">Links</a>&nbsp; <a href="http://www.visual6502.org/links.html">Links</a>&nbsp;
<a href="http://github.com/trebonian/visual6502">Source</a>&nbsp; <a href="http://github.com/trebonian/visual6502">Source</a>&nbsp;
<a href="ftp://ftp.comlab.ox.ac.uk/pub/Cards/txt/6800.txt">6800 instruction card</a>&nbsp; <a href="http://www.textfiles.com/programming/CARDS/6800">6800 instruction card</a>&nbsp;
<a href="http://www.sbprojects.com/sbasm/6800.htm#model">programming model</a>&nbsp; <a href="http://www.sbprojects.com/sbasm/6800.htm#model">programming model</a>&nbsp;
</span> </span>
<div class="frame" id="frame"> <div class="frame" id="frame">

View File

@@ -13569,7 +13569,15 @@ function saveString(name, str){
function allNodes(){ function allNodes(){
var res = new Array(); var res = new Array();
for(var i in nodes) if((i!=npwr)&&(i!=ngnd)) res.push(i); var ii = 0;
for(var i in nodes) {
// Don't feed numeric strings to recalcNodeList(). Numeric
// strings can cause a (data dependent) duplicate node number
// hiccup when accumulating a node group's list, ie:
// group => [ "49", 483, 49 ]
ii = Number( i );
if((ii!=npwr)&&(ii!=ngnd)) res.push(ii);
}
return res; return res;
} }
@@ -14407,7 +14415,7 @@ var dis6502={
0x68:"PLA", 0x68:"PLA",
0x69:"ADC #", 0x69:"ADC #",
0x6A:"ROR ", 0x6A:"ROR ",
0x6C:"JMP zp", 0x6C:"JMP (Abs)",
0x6D:"ADC Abs", 0x6D:"ADC Abs",
0x6E:"ROR Abs", 0x6E:"ROR Abs",
0x70:"BVS ", 0x70:"BVS ",

View File

@@ -78,19 +78,19 @@ $().ready(function(){
<div id="layoutControlPanel"> <div id="layoutControlPanel">
Use 'z' or '&gt;' to zoom in, 'x' or '&lt;' to zoom out, click to probe signals and drag to pan. Use 'z' or '&gt;' to zoom in, 'x' or '&lt;' to zoom out, click to probe signals and drag to pan.
<form id="updateShow"> Show: <form id="updateShow"> Show:
<input type="checkbox" name="1" id="updateShow1" onchange="updateShow(this.name,this.checked)" />(diffusion) <input type="checkbox" name="1" id="updateShow1" onchange="updateShow(this.name,this.checked)" /><label for="updateShow1">(diffusion)</label>
<input type="checkbox" name="3" id="updateShow3" onchange="updateShow(this.name,this.checked)" />(grounded diffusion) <input type="checkbox" name="3" id="updateShow3" onchange="updateShow(this.name,this.checked)" /><label for="updateShow3">(grounded diffusion)</label>
<input type="checkbox" name="4" id="updateShow4" onchange="updateShow(this.name,this.checked)" />(powered diffusion) <input type="checkbox" name="4" id="updateShow4" onchange="updateShow(this.name,this.checked)" /><label for="updateShow4">(powered diffusion)</label>
<input type="checkbox" name="5" id="updateShow5" onchange="updateShow(this.name,this.checked)" />(polysilicon) <input type="checkbox" name="5" id="updateShow5" onchange="updateShow(this.name,this.checked)" /><label for="updateShow5">(polysilicon)</label>
<input type="checkbox" name="0" id="updateShow0" onchange="updateShow(this.name,this.checked)" />(metal) <input type="checkbox" name="0" id="updateShow0" onchange="updateShow(this.name,this.checked)" /><label for="updateShow0">(metal)</label>
<input type="checkbox" name="2" id="updateShow2" onchange="updateShow(this.name,this.checked)" />(protection) <input type="checkbox" name="2" id="updateShow2" onchange="updateShow(this.name,this.checked)" /><label for="updateShow2">(protection)</label>
</form> </form>
<form action="javascript:hiliteNodeList();"> <form action="javascript:hiliteNodeList();">
<input type="button" value="Find:" onclick="hiliteNodeList();" /> <input type="button" value="Find:" onclick="hiliteNodeList();" />
<input type="text" id="HighlightThese" name="HighlightThese" value="" /> <input type="text" id="HighlightThese" name="HighlightThese" value="" />
<input type="button" value="Clear Highlighting" onclick="clearHighlight();" /> <input type="button" value="Clear Highlighting" onclick="clearHighlight();" />
<span class="animatebox"> <span class="animatebox">
Animate during simulation: <label for="animateModeCheckbox">Animate during simulation:</label>
<input type="checkbox" id="animateModeCheckbox" onchange="updateChipLayoutAnimation(this.checked)" <input type="checkbox" id="animateModeCheckbox" onchange="updateChipLayoutAnimation(this.checked)"
/></span> /></span>
</form> </form>

View File

@@ -699,7 +699,7 @@ var disassembly={
0x68:"PLA", 0x68:"PLA",
0x69:"ADC #", 0x69:"ADC #",
0x6A:"ROR ", 0x6A:"ROR ",
0x6C:"JMP zp", 0x6C:"JMP (Abs)",
0x6D:"ADC Abs", 0x6D:"ADC Abs",
0x6E:"ROR Abs", 0x6E:"ROR Abs",
0x70:"BVS ", 0x70:"BVS ",

View File

@@ -923,7 +923,7 @@ dpc31_PCHPCH: 741, // load pch from pch incremented
dpc32_PCHADH: 1235, // drive adh from pch incremented dpc32_PCHADH: 1235, // drive adh from pch incremented
dpc33_PCHDB: 247, // drive idb from pch incremented dpc33_PCHDB: 247, // drive idb from pch incremented
dpc34_PCLC: 1704, // pch carry in and pcl FF detect? dpc34_PCLC: 1704, // pch carry in and pcl FF detect?
dpc35_PCHC: 1334, // pcl 0x?F detect - half-carry dpc35_PCHC: 1334, // pch 0x?F detect - half-carry
"dpc36_#IPC": 379, // pcl carry in (inverted) "dpc36_#IPC": 379, // pcl carry in (inverted)
"dpc36_~IPC": 379, // automatic alias replacing hash with tilde "dpc36_~IPC": 379, // automatic alias replacing hash with tilde
dpc37_PCLDB: 283, // drive idb from pcl incremented dpc37_PCLDB: 283, // drive idb from pcl incremented