mirror of
https://github.com/trebonian/visual6502.git
synced 2025-01-02 21:30:07 +00:00
busToString( 'TState' ) and busToString( 'TStateF' ) now call allTCStates().
'TState' returns the string returned by allTCStates(). 'TStateF' returns the string returned by allTCStates() with phase indication appended: "F1" or "F2" for phase1 or phase2 respectively. 'F' is chosen since that's all that Phi really is: an "eff". Perhaps another enhancement could call out an actual phi glyph for the HTML (browser) context. allTCStates() is also enhanced by an optional boolean parameter to control the spacing of non-blank text within the string it returns. * A true parameter puts HTML non-breaking spaces between non-blank text, suitable for display on a browser page. This is always used by busToString(). * A false or absent parameter puts ASCII spaces between non-blank text, suitable for text logging.
This commit is contained in:
parent
d39bab7302
commit
c1409b78cb
@ -14026,37 +14026,42 @@ function listActiveTCStates() {
|
|||||||
// Show all time code node states (active and inactive) in fixed format,
|
// Show all time code node states (active and inactive) in fixed format,
|
||||||
// with T1/T6 indication in square brackets. ".." for a node indicates
|
// with T1/T6 indication in square brackets. ".." for a node indicates
|
||||||
// inactive state, "T"* for a node indicates active state.
|
// inactive state, "T"* for a node indicates active state.
|
||||||
function allTCStates()
|
function allTCStates( useNBSP )
|
||||||
{
|
{
|
||||||
var s = "";
|
var s = "";
|
||||||
|
var _spc;
|
||||||
|
useNBSP = (typeof useNBSP === 'undefined') ? false : useNBSP;
|
||||||
|
// Use Non-Breaking Space for presentation in an HTML (browser)
|
||||||
|
// context, else use ASCII space for logging context
|
||||||
|
_spc = useNBSP ? ' ' : ' ';
|
||||||
var allHigh, thisHigh;
|
var allHigh, thisHigh;
|
||||||
thisHigh = isNodeHigh( nodenames[ 'clock1' ] );
|
thisHigh = isNodeHigh( nodenames[ 'clock1' ] );
|
||||||
allHigh = thisHigh;
|
allHigh = thisHigh;
|
||||||
if ( !thisHigh ) s += "T0"; else s += "..";
|
if ( !thisHigh ) s += "T0"; else s += "..";
|
||||||
s += " ";
|
s += _spc;
|
||||||
// T+ in visual6502 is called T1x in
|
// T+ in visual6502 is called T1x in
|
||||||
// http://www.weihenstephan.org/~michaste/pagetable/6502/6502.jpg
|
// http://www.weihenstephan.org/~michaste/pagetable/6502/6502.jpg
|
||||||
// Notated as T+ for compatibility with PLA node names
|
// Notated as T+ for compatibility with PLA node names
|
||||||
thisHigh = isNodeHigh( nodenames[ 'clock2' ] );
|
thisHigh = isNodeHigh( nodenames[ 'clock2' ] );
|
||||||
allHigh = allHigh && thisHigh;
|
allHigh = allHigh && thisHigh;
|
||||||
if ( !thisHigh ) s += "T+"; else s += "..";
|
if ( !thisHigh ) s += "T+"; else s += "..";
|
||||||
s += " ";
|
s += _spc;
|
||||||
thisHigh = isNodeHigh( nodenames[ 't2' ] );
|
thisHigh = isNodeHigh( nodenames[ 't2' ] );
|
||||||
allHigh = allHigh && thisHigh;
|
allHigh = allHigh && thisHigh;
|
||||||
if ( !thisHigh ) s += "T2"; else s += "..";
|
if ( !thisHigh ) s += "T2"; else s += "..";
|
||||||
s += " ";
|
s += _spc;
|
||||||
thisHigh = isNodeHigh( nodenames[ 't3' ] );
|
thisHigh = isNodeHigh( nodenames[ 't3' ] );
|
||||||
allHigh = allHigh && thisHigh;
|
allHigh = allHigh && thisHigh;
|
||||||
if ( !thisHigh ) s += "T3"; else s += "..";
|
if ( !thisHigh ) s += "T3"; else s += "..";
|
||||||
s += " ";
|
s += _spc;
|
||||||
thisHigh = isNodeHigh( nodenames[ 't4' ] );
|
thisHigh = isNodeHigh( nodenames[ 't4' ] );
|
||||||
allHigh = allHigh && thisHigh;
|
allHigh = allHigh && thisHigh;
|
||||||
if ( !thisHigh ) s += "T4"; else s += "..";
|
if ( !thisHigh ) s += "T4"; else s += "..";
|
||||||
s += " ";
|
s += _spc;
|
||||||
thisHigh = isNodeHigh( nodenames[ 't5' ] )
|
thisHigh = isNodeHigh( nodenames[ 't5' ] )
|
||||||
allHigh = allHigh && thisHigh;
|
allHigh = allHigh && thisHigh;
|
||||||
if ( !thisHigh ) s += "T5"; else s += "..";
|
if ( !thisHigh ) s += "T5"; else s += "..";
|
||||||
s += " [";
|
s += _spc + "[";
|
||||||
// If all of the time code bits are high (inactive)...
|
// If all of the time code bits are high (inactive)...
|
||||||
if ( allHigh ) {
|
if ( allHigh ) {
|
||||||
// ...distinguish T1 from T6
|
// ...distinguish T1 from T6
|
||||||
@ -14102,6 +14107,16 @@ function busToString(busname){
|
|||||||
return ['clock1','clock2','t2','t3','t4','t5'].map(busToHex).join("");
|
return ['clock1','clock2','t2','t3','t4','t5'].map(busToHex).join("");
|
||||||
if(busname=='State')
|
if(busname=='State')
|
||||||
return listActiveTCStates();
|
return listActiveTCStates();
|
||||||
|
if(busname=='TState')
|
||||||
|
return allTCStates( true );
|
||||||
|
if(busname=='TStateF')
|
||||||
|
// TState with phase indication tacked on: F1 or F2
|
||||||
|
// Prefer latin 'F' because that's what Greek phi really is:
|
||||||
|
// a single glyph for the "eff" speech sound
|
||||||
|
// Capitalized because the 'T's in the time state are
|
||||||
|
// capitalized
|
||||||
|
return allTCStates( true ) + ' ' + 'F' +
|
||||||
|
(isNodeHigh( nodenames[ 'cp1' ] ) ? '1' : '2');
|
||||||
if(busname=='Execute')
|
if(busname=='Execute')
|
||||||
return dis6502toHTML(readBits('ir',8));
|
return dis6502toHTML(readBits('ir',8));
|
||||||
if(busname=='Fetch')
|
if(busname=='Fetch')
|
||||||
|
29
macros.js
29
macros.js
@ -307,37 +307,42 @@ function listActiveTCStates() {
|
|||||||
// Show all time code node states (active and inactive) in fixed format,
|
// Show all time code node states (active and inactive) in fixed format,
|
||||||
// with T1/T6 indication in square brackets. ".." for a node indicates
|
// with T1/T6 indication in square brackets. ".." for a node indicates
|
||||||
// inactive state, "T"* for a node indicates active state.
|
// inactive state, "T"* for a node indicates active state.
|
||||||
function allTCStates()
|
function allTCStates( useNBSP )
|
||||||
{
|
{
|
||||||
var s = "";
|
var s = "";
|
||||||
|
var _spc;
|
||||||
|
useNBSP = (typeof useNBSP === 'undefined') ? false : useNBSP;
|
||||||
|
// Use Non-Breaking Space for presentation in an HTML (browser)
|
||||||
|
// context, else use ASCII space for logging context
|
||||||
|
_spc = useNBSP ? ' ' : ' ';
|
||||||
var allHigh, thisHigh;
|
var allHigh, thisHigh;
|
||||||
thisHigh = isNodeHigh( nodenames[ 'clock1' ] );
|
thisHigh = isNodeHigh( nodenames[ 'clock1' ] );
|
||||||
allHigh = thisHigh;
|
allHigh = thisHigh;
|
||||||
if ( !thisHigh ) s += "T0"; else s += "..";
|
if ( !thisHigh ) s += "T0"; else s += "..";
|
||||||
s += " ";
|
s += _spc;
|
||||||
// T+ in visual6502 is called T1x in
|
// T+ in visual6502 is called T1x in
|
||||||
// http://www.weihenstephan.org/~michaste/pagetable/6502/6502.jpg
|
// http://www.weihenstephan.org/~michaste/pagetable/6502/6502.jpg
|
||||||
// Notated as T+ for compatibility with PLA node names
|
// Notated as T+ for compatibility with PLA node names
|
||||||
thisHigh = isNodeHigh( nodenames[ 'clock2' ] );
|
thisHigh = isNodeHigh( nodenames[ 'clock2' ] );
|
||||||
allHigh = allHigh && thisHigh;
|
allHigh = allHigh && thisHigh;
|
||||||
if ( !thisHigh ) s += "T+"; else s += "..";
|
if ( !thisHigh ) s += "T+"; else s += "..";
|
||||||
s += " ";
|
s += _spc;
|
||||||
thisHigh = isNodeHigh( nodenames[ 't2' ] );
|
thisHigh = isNodeHigh( nodenames[ 't2' ] );
|
||||||
allHigh = allHigh && thisHigh;
|
allHigh = allHigh && thisHigh;
|
||||||
if ( !thisHigh ) s += "T2"; else s += "..";
|
if ( !thisHigh ) s += "T2"; else s += "..";
|
||||||
s += " ";
|
s += _spc;
|
||||||
thisHigh = isNodeHigh( nodenames[ 't3' ] );
|
thisHigh = isNodeHigh( nodenames[ 't3' ] );
|
||||||
allHigh = allHigh && thisHigh;
|
allHigh = allHigh && thisHigh;
|
||||||
if ( !thisHigh ) s += "T3"; else s += "..";
|
if ( !thisHigh ) s += "T3"; else s += "..";
|
||||||
s += " ";
|
s += _spc;
|
||||||
thisHigh = isNodeHigh( nodenames[ 't4' ] );
|
thisHigh = isNodeHigh( nodenames[ 't4' ] );
|
||||||
allHigh = allHigh && thisHigh;
|
allHigh = allHigh && thisHigh;
|
||||||
if ( !thisHigh ) s += "T4"; else s += "..";
|
if ( !thisHigh ) s += "T4"; else s += "..";
|
||||||
s += " ";
|
s += _spc;
|
||||||
thisHigh = isNodeHigh( nodenames[ 't5' ] )
|
thisHigh = isNodeHigh( nodenames[ 't5' ] )
|
||||||
allHigh = allHigh && thisHigh;
|
allHigh = allHigh && thisHigh;
|
||||||
if ( !thisHigh ) s += "T5"; else s += "..";
|
if ( !thisHigh ) s += "T5"; else s += "..";
|
||||||
s += " [";
|
s += _spc + "[";
|
||||||
// If all of the time code bits are high (inactive)...
|
// If all of the time code bits are high (inactive)...
|
||||||
if ( allHigh ) {
|
if ( allHigh ) {
|
||||||
// ...distinguish T1 from T6
|
// ...distinguish T1 from T6
|
||||||
@ -383,6 +388,16 @@ function busToString(busname){
|
|||||||
return ['clock1','clock2','t2','t3','t4','t5'].map(busToHex).join("");
|
return ['clock1','clock2','t2','t3','t4','t5'].map(busToHex).join("");
|
||||||
if(busname=='State')
|
if(busname=='State')
|
||||||
return listActiveTCStates();
|
return listActiveTCStates();
|
||||||
|
if(busname=='TState')
|
||||||
|
return allTCStates( true );
|
||||||
|
if(busname=='TStateF')
|
||||||
|
// TState with phase indication tacked on: F1 or F2
|
||||||
|
// Prefer latin 'F' because that's what Greek phi really is:
|
||||||
|
// a single glyph for the "eff" speech sound
|
||||||
|
// Capitalized because the 'T's in the time state are
|
||||||
|
// capitalized
|
||||||
|
return allTCStates( true ) + ' ' + 'F' +
|
||||||
|
(isNodeHigh( nodenames[ 'cp1' ] ) ? '1' : '2');
|
||||||
if(busname=='Execute')
|
if(busname=='Execute')
|
||||||
return disassemblytoHTML(readBits('ir',8));
|
return disassemblytoHTML(readBits('ir',8));
|
||||||
if(busname=='Fetch')
|
if(busname=='Fetch')
|
||||||
|
Loading…
Reference in New Issue
Block a user