"+""+""+"Type "+"Identification Id. "+"Values in the clipboard state "+"Values in the selected state "+" "+" "+"";for(var i=0;i"+""+checklist[i].elto_type+" "+""+checklist[i].elto_id+" "+""+checklist[i].elto_op+" "+checklist[i].expected+" "+""+checklist[i].obtained+" "+""}o+=" "+"";return o}function simcore_voice_canSpeak(){if(typeof window.speechSynthesis=="undefined"){return false}if(false===get_cfg("use_voice")){return false}return true}function simcore_voice_speak(msg){var ssu=null;if(simcore_voice_canSpeak()){ssu=new SpeechSynthesisUtterance(msg);ssu.lang="es-ES";if("en"==get_cfg("ws_idiom"))ssu.lang="en-US";if("es"==get_cfg("ws_idiom"))ssu.lang="es-EN";window.speechSynthesis.speak(ssu)}}function simcore_voice_stopSpeak(){if(simcore_voice_canSpeak()){window.speechSynthesis.cancel()}}var simcore_rest={};function simcore_rest_reset(){simcore_rest={}}function simcore_rest_add(name,description){simcore_rest[name]={endpoint:description.endpoint,user:description.user,pass:description.pass,last_request:null}}function simcore_rest_list(){return simcore_rest}function simcore_rest_get(name){return simcore_rest[name]}function simcore_rest_call(name,method,uri,data){var rest_info=simcore_rest[name];if(typeof rest_info==="undefined"){return false}var api_endpoint=rest_info.endpoint;if(api_endpoint.value instanceof Vuex.Store){api_endpoint=get_value(api_endpoint)}if(api_endpoint.trim()===""){return false}var basic_auth="Basic "+btoa(rest_info.user+":"+rest_info.pass);var enc_data=JSON.stringify(data);var request={url:api_endpoint+uri,type:method,contentType:"application/json",accepts:"application/json",cache:false,dataType:"json",data:enc_data,beforeSend:function(xhr){if(rest_info.user.trim()!==""){xhr.setRequestHeader("Authorization",basic_auth)}},error:function(jqXHR){console.log("ajax error "+jqXHR.status)}};rest_info.last_request=$.ajax(request);return true}var simcore_notifications=[];function simcore_notifications_get(){return simcore_notifications}function simcore_notifications_reset(){simcore_notifications=[]}function simcore_notifications_add2(ntf){simcore_notifications.push({title:ntf.title,message:ntf.message,type:ntf.type,date:ntf.date})}function simcore_notifications_add(ntf_title,ntf_message,ntf_type,ntf_delay){simcore_notifications.push({title:$("").html(ntf_title).text(),message:$("
").html(ntf_message).text(),type:ntf_type,date:(new Date).getTime()})}function get_value(sim_obj){if(sim_obj.value instanceof Vuex.Store){return sim_obj.value.state.value}return sim_obj.value}function set_value(sim_obj,value){if(sim_obj.value instanceof Vuex.Store){sim_obj.value.commit("set_value",value);return}var old_value=sim_obj.value;sim_obj.value=value;if(old_value!=value){sim_obj.changed=true}}function reset_value(sim_obj){if(sim_obj.value instanceof Vuex.Store){set_value(sim_obj,sim_obj.default_value);return}if(typeof sim_obj.default_value=="object"){sim_obj.changed=true;sim_obj.value=Object.create(sim_obj.default_value);return}if(sim_obj instanceof Array){sim_obj.changed=true;for(var i=0;i",""":'"',"'":"'"};function treatHTMLSequences(text_with_html){var re=null;var key=null;for(key in html_sequences){re=new RegExp(key,"gi");text_with_html=text_with_html.replace(re,html_sequences[key])}return text_with_html}function control_memory_getkeys(memory){return Object.keys(memory)}function control_memory_get(memory,elto){return memory[elto]}function control_memory_set(memory,elto,melto){if(typeof melto.changed==="undefined")melto.changed=false;if(typeof melto.state==="undefined")melto.state=false;if(typeof melto.breakpoint==="undefined")melto.breakpoint=false;if(typeof melto.notify==="undefined")melto.notify=[];if(typeof melto.is_native==="undefined")melto.is_native=false;var comments_str="";if(null!=melto.comments){comments_str=melto.comments;if(melto.comments instanceof Array)comments_str=melto.comments.join("\n");melto.state=melto.state||comments_str.trim().split("state:").length>1;melto.breakpoint=melto.breakpoint||comments_str.trim().split("break:").length>1;melto.notify=comments_str.trim().split("notify:");for(var k=0;k";if(active_verbal.trim()==="")active_verbal="";return"Activated signals are: "+active_signals+". Associated actions are: "+active_verbal}function main_memory_getkeys(memory){return Object.keys(memory)}function main_memory_get(memory,elto){return memory[elto]}function main_memory_set(memory,elto,melto){if(typeof melto.changed==="undefined")melto.changed=false;if(typeof melto.state==="undefined")melto.state=false;if(typeof melto.breakpoint==="undefined")melto.breakpoint=false;if(typeof melto.notify==="undefined")melto.notify=[];if(typeof melto.is_assembly==="undefined")melto.is_assembly=false;if(typeof melto.source==="undefined")melto.source="";var comments_str="";if(null!=melto.comments){comments_str=melto.comments.join("\n");melto.state=melto.state||comments_str.trim().split("state:").length>1;melto.breakpoint=melto.breakpoint||comments_str.trim().split("break:").length>1;melto.notify=comments_str.trim().split("notify:");for(var k=0;k>8;if(2==filter_elto)dbvalue=(value&16711680)>>16;if(3==filter_elto)dbvalue=(value&4278190080)>>24;break;case 1:if(0==filter_elto)dbvalue=value&65535;if(1==filter_elto)dbvalue=value&65535;if(2==filter_elto)dbvalue=(value&4294901760)>>16;if(3==filter_elto)dbvalue=(value&4294901760)>>16;break;case 2:if(0==filter_elto)dbvalue=value&16777215;if(1==filter_elto)dbvalue=value&4294967040;break;case 3:dbvalue=value;break}return dbvalue}function main_memory_updatevalues(value,dbvalue,filter_size,filter_elto){switch(filter_size){case 0:if(0==filter_elto)value=value&4294967040|dbvalue&255;if(1==filter_elto)value=value&4294902015|(dbvalue&255)<<8;if(2==filter_elto)value=value&4278255615|(dbvalue&255)<<16;if(3==filter_elto)value=value&16777215|(dbvalue&255)<<24;break;case 1:if(0==filter_elto)value=value&4294901760|dbvalue&65535;if(1==filter_elto)value=value&4294901760|dbvalue&65535;if(2==filter_elto)value=value&65535|(dbvalue&65535)<<16;if(3==filter_elto)value=value&65535|(dbvalue&65535)<<16;break;case 2:if(0==filter_elto)value=value&4278190080|dbvalue&16777215;if(1==filter_elto)value=value&255|dbvalue&4294967040;break;case 3:value=dbvalue;break}return value}function main_memory_get_program_counter(){var r_ref=simhw_sim_ctrlStates_get().pc;var r_value=null;if(typeof r_ref!=="undefined"){r_ref=simhw_sim_state(r_ref.state)}if(typeof r_ref!=="undefined"){r_value=get_value(r_ref)}return r_value}function main_memory_get_baseaddr(){var r_ref=simhw_sim_ctrlStates_get();if(typeof r_ref==="undefined"){return null}var parts=null;var r_value=0;var r_ref2=null;var all_baseaddr={};for(var elto in r_ref){if(r_ref[elto].is_pointer==false){continue}parts=r_ref[elto].state.split(".");if(parts[0]=="BR"){r_value=4294967292;r_ref2=simhw_sim_states().BR[parts[1]]}else{r_value=0;r_ref2=simhw_sim_state(r_ref[elto].state)}if(typeof r_ref2!=="undefined"){r_value=get_value(r_ref2)}all_baseaddr[elto]=r_value}return all_baseaddr}function get_deco_from_pc(pc){var mp_obj=simhw_internalState("MP");if(typeof mp_obj==="undefined"||typeof mp_obj[pc]==="undefined"||typeof mp_obj[pc].source==="undefined"){return""}return mp_obj[pc].source}function get_verbal_from_current_pc(){var pc_name=simhw_sim_ctrlStates_get().pc.state;var reg_pc=get_value(simhw_sim_state(pc_name));var pc=parseInt(reg_pc)-4;var decins=get_deco_from_pc(pc);if(""==decins.trim()){decins="not jet defined"}return"Current instruction is: "+decins+" and PC points to "+show_value(pc)+". "}function cache_memory_update_stats(memory,address,parts,r_w,m_h,clock_timestamp){memory.stats.n_access++;memory.stats.last_addr=address;memory.stats.last_parts=parts;memory.stats.last_r_w=r_w;memory.stats.last_h_m=m_h;if(m_h=="miss"){memory.stats.n_misses++}else{memory.stats.n_hits++}memory.sets[parts.set].tags[parts.tag].n_access++;if(r_w=="write"){memory.sets[parts.set].tags[parts.tag].dirty=1}memory.sets[parts.set].tags[parts.tag].timestamp=clock_timestamp}function cache_memory_select_victim(memory,set){var keys=Object.keys(memory.sets[set].tags);var tag_victim=0;if(memory.cfg.replace_pol=="lfu"){tag_victim=keys[0];var tag_naccess=memory.sets[parts.set].tags[tag_victim].n_access;for(var i=1;imemory.sets[parts.set].tags[keys[i]].n_access){tag_victim=keys[i];tag_naccess=memory.sets[parts.set].tags[tag_victim].n_access}}}else if(memory.cfg.replace_pol=="fifo"){tag_victim=keys[0];var tag_stamp=memory.sets[parts.set].tags[tag_victim].timestamp;for(var i=1;imemory.sets[parts.set].tags[keys[i]].timestamp){tag_victim=keys[i];tag_stamp=memory.sets[parts.set].tags[tag_victim].timestamp}}}else if(memory.cfg.replace_pol=="first"){tag_victim=keys[0]}return tag_victim}function cache_memory_init(name,via_size,off_size,set_size,replace_pol,su_pol,next_cache){var c={stats:{},cfg:{},sets:{}};c.cfg.name=name;c.cfg.via_size=via_size;c.cfg.off_size=off_size;c.cfg.set_size=set_size;c.cfg.vps_size=via_size-set_size;c.cfg.tag_size=32-set_size-off_size;c.cfg.mask_tag=Math.pow(2,c.cfg.tag_size)-1>>>0;c.cfg.mask_set=Math.pow(2,c.cfg.set_size)-1>>>0;c.cfg.mask_off=Math.pow(2,c.cfg.off_size)-1>>>0;c.cfg.mask_tag=c.cfg.mask_tag<<32-c.cfg.tag_size>>>0;c.cfg.mask_set=c.cfg.mask_set<>>0;c.cfg.replace_pol=replace_pol;c.cfg.su_pol=su_pol;c.cfg.next_cache=next_cache;c.stats.n_access=0;c.stats.n_hits=0;c.stats.n_misses=0;c.stats.last_addr=0;c.stats.last_parts=cache_memory_split(c,0);c.stats.last_r_w="";c.stats.last_h_m="";return c}function cache_memory_init2(cfg){return cache_memory_init(cfg.name,cfg.via_size,cfg.off_size,cfg.set_size,cfg.replace_pol,cfg.su_pol,cfg.next_cache)}function cache_memory_init3(array_cm_cfg){var array_cm=[];for(var i=0;i>>0;parts.tag=(address&memory.cfg.mask_tag)>>>32-memory.cfg.tag_size;parts.set=(address&memory.cfg.mask_set)>>>memory.cfg.off_size;parts.offset=address&memory.cfg.mask_off;return parts}function cache_memory_access(memory,address,r_w,clock_timestamp){if(memory.cfg.su_pol!="unified"){if("split_i"==memory.cfg.su_pol&&segments_addr_within_text(address)==false){return false}if("split_d"==memory.cfg.su_pol&&segments_addr_within_data(address)==false){return false}}var parts=cache_memory_split(memory,address);if(typeof memory.sets[parts.set]=="undefined"){memory.sets[parts.set]={tags:{},number_tags:0}}if(typeof memory.sets[parts.set].tags[parts.tag]!="undefined"&&memory.sets[parts.set].tags[parts.tag].valid==1){cache_memory_update_stats(memory,address,parts,r_w,"hit",clock_timestamp);return true}if(typeof memory.sets[parts.set].number_tags>3){var tag_victim=cache_memory_select_victim(memory,parts.set);memory.sets[parts.set].tags[tag_victim].valid=0;memory.sets[parts.set].number_tags--}memory.sets[parts.set].tags[parts.tag]={n_access:0,valid:1,dirty:0};memory.sets[parts.set].number_tags++;cache_memory_update_stats(memory,address,parts,r_w,"miss",clock_timestamp);if(memory.cfg.next_cache!=null){cache_memory_access(memory.cfg.next_cache,address,r_w)}return false}var sim={systems:[],active:null,index:0};function simhw_add(newElto){var found=-1;for(var m=0;m=0&&sim.systems.length>=newActive){sim.active=sim.systems[newActive];sim.index=newActive}compile_behaviors();firedep_to_fireorder(jit_fire_dep);compute_references();compile_verbals()}function simhw_getIdByName(short_name){for(var m=0;m>>0).toString(16)}function check_behavior(){if(0==simhw_sim_signals().length){ws_alert("ALERT: empty signals!!!")}if(0==simhw_sim_states().length){ws_alert("ALERT: empty states!!!")}for(var key in simhw_sim_signals()){for(var key2 in simhw_sim_signal(key).behavior){var behaviors=simhw_sim_signal(key).behavior[key2].split(";");for(var i=0;i "+behavior_k[0]+" ("+behavior_i+")");return}if(behavior_k.length!=simhw_syntax_behavior(behavior_k[0]).nparameters){ws_alert("ALERT: Behavior has an incorrect number of elements --\x3e "+behavior_i+"/"+simhw_syntax_behavior(behavior_k[0]).nparameters);return}for(var j=1;j '"+behavior_i);return}else if("S"==t&&typeof simhw_sim_signal(s[0])=="undefined"){ws_alert("ALERT: Behavior has an undefined reference to a signal -> '"+behavior_i);return}else if("X"==t&&typeof simhw_sim_state(s[0])=="undefined"&&typeof simhw_sim_signal(s[0])=="undefined"){ws_alert("ALERT: Behavior has an undefined reference to a object state OR signal -> '"+behavior_i);return}}}}}}var jit_behaviors=false;var jit_verbals=false;var jit_fire_dep=null;var jit_fire_order=null;var jit_dep_network=null;var jit_fire_ndep=null;function firedep_to_fireorder(jit_fire_dep){var allfireto=false;jit_fire_order=[];jit_fire_ndep=[];for(var sig in simhw_sim_signals()){if(typeof jit_fire_dep[sig]=="undefined"){jit_fire_order.push(sig);continue}ndep=0;allfireto=false;for(var sigorg in jit_fire_dep[sig]){ndep++;if(jit_fire_dep[sig][sigorg]==simhw_sim_signal(sigorg).behavior.length){allfireto=true}}jit_fire_ndep[sig]=ndep;if(allfireto==false)jit_fire_order.push(sig)}}function compile_behaviors(){var jit_bes="";jit_fire_dep={};var sig_obj=null;var expr_obj=null;for(var sig in simhw_sim_signals()){jit_bes+="simhw_sim_signal('"+sig+"').behavior_fn = new Array();\n";for(var val in simhw_sim_signal(sig).behavior){var input_behavior=simhw_sim_signal(sig).behavior[val];var jit_be="";var s_exprs=input_behavior.split(";");for(var i=0;i"+v+"";if("Signals"!=enum_name)o+="("+(i+1)+") "+v;else o+="("+(i+1)+") "+hash_eltos[array_eltos[i]].ref+": "+v;if(i!=array_eltos.length-1){o+=str_enditem}}o+=". ";return o}function simhwelto_describe_component_enum(elto_path,array_eltos,hash_eltos,enum_name){var o="";o+=""+i18n_get_TagFor("hw","It has")+" "+" "+array_eltos.length+" "+""+i18n_get_TagFor("hw",enum_name)+" "+": "+simhwelto_describe_component_enum_aux(elto_path,array_eltos,hash_eltos,enum_name,", ");return o}function simhwelto_describe_component(elto_path,elto,format){var o="";o+=elto.description+"."+""+simhwelto_describe_component_enum(elto_path+":states:",elto.states_inputs,elto.states,"inputs")+" "+" "+simhwelto_describe_component_enum(elto_path+":states:",elto.states_outputs,elto.states,"outputs")+" "+" "+simhwelto_describe_component_enum(elto_path+":signals:",elto.signals_inputs,elto.signals,"signals")+" "+" ";if(format!="html"){o.replace(/<[^>]*>?/gm,"")}return o}var ep_def={sim_name:"Elemental Processor",sim_short_name:"ep",sim_img_processor:"examples/hardware/ep/images/processor.svg",sim_img_controlunit:"examples/hardware/ep/images/controlunit.svg",sim_img_cpu:"examples/hardware/ep/images/cpu.svg",components:{},states:{},signals:{},behaviors:{},elements:{},internal_states:{},ctrl_states:{},events:{}};simhw_add(ep_def);sim.ep.behaviors.PRINT_S={nparameters:2,types:["S"],operation:function(s_expr){console.log(s_expr[1]+": 0x"+sim.ep.signals[s_expr[1]].value.toString(16))},verbal:function(s_expr){return"Print value of signal "+s_expr[1]+": 0x"+sim.ep.signals[s_expr[1]].value.toString(16)+". "}};sim.ep.behaviors.PRINT_E={nparameters:2,types:["E"],operation:function(s_expr){console.log(s_expr[1]+": 0x"+sim.ep.states[s_expr[1]].value.toString(16))},verbal:function(s_expr){return"Print value of state "+s_expr[1]+": 0x"+sim.ep.states[s_expr[1]].value.toString(16)+". "}};sim.ep.components["CPU"]={name:"CPU",version:"1",abilities:["CPU"],details_name:["REGISTER_FILE","CONTROL_MEMORY","CLOCK","CPU_STATS"],details_fire:[["svg_p:text3029","svg_p:text3031"],["svg_cu:text3010"],["svg_p:text3459-7","svg_cu:text4138","svg_cu:text4138-7"],["svg_p:text3495"]],write_state:function(vec){if(typeof vec.CPU=="undefined"){vec.CPU={}}var internal_reg=["PC","SR"];var value=0;for(var i=0;i>>0;if(value!=0){vec.CPU["R"+i]={type:"register",default_value:0,id:"R"+i,op:"=",value:"0x"+value.toString(16)}}}for(i=0;i>>0;if(value!=0){vec.CPU[internal_reg[i]]={type:"register",default_value:0,id:internal_reg[i],op:"=",value:"0x"+value.toString(16)}}}return vec},read_state:function(vec,check){if(typeof vec.CPU=="undefined"){vec.CPU={}}var key=check["id"].toUpperCase().trim();var val=parseInt(check["value"]).toString(16);if("REGISTER"==check["type"].toUpperCase().trim()){vec.CPU[key]={type:"register",default_value:0,id:key,op:check["condition"],value:"0x"+val};return true}return false},get_state:function(reg){var value=0;var r_reg=reg.toUpperCase().trim();if(typeof sim.ep.states["REG_"+r_reg]!="undefined"){value=get_value(sim.ep.states["REG_"+r_reg])>>>0;return"0x"+value.toString(16)}r_reg=r_reg.replace("R","");var index=parseInt(r_reg);if(typeof sim.ep.states.BR[index]!="undefined"){value=get_value(sim.ep.states.BR[index])>>>0;return"0x"+value.toString(16)}return null},get_value:function(elto){if(Number.isInteger(elto))index=elto;else index=parseInt(elto);if(isNaN(index))return get_value(simhw_sim_state(elto))>>>0;return get_value(simhw_sim_states().BR[index])>>>0},set_value:function(elto,value){var pc_name=simhw_sim_ctrlStates_get().pc.state;if(Number.isInteger(elto))index=elto;else index=parseInt(elto);if(isNaN(index)){set_value(simhw_sim_state(elto),value);if(pc_name===elto){show_asmdbg_pc()}return value}return set_value(simhw_sim_states().BR[index],value)}};sim.ep.ctrl_states.pc={name:"PC",state:"REG_PC",is_pointer:true};sim.ep.ctrl_states.sp={name:"SP",state:"BR.29",is_pointer:true};sim.ep.ctrl_states.fp={name:"FP",state:"BR.30",is_pointer:true};sim.ep.ctrl_states.ir={name:"IR",state:"REG_IR",default_eltos:{co:{begin:0,end:5,length:6},cop:{begin:28,end:31,length:4}},is_pointer:false};sim.ep.ctrl_states.mpc={name:"mPC",state:"REG_MICROADDR",is_pointer:false};sim.ep.internal_states.MC={};sim.ep.internal_states.ROM={};sim.ep.internal_states.FIRMWARE=ws_empty_firmware;sim.ep.internal_states.io_hash={};sim.ep.internal_states.fire_stack=[];sim.ep.internal_states.tri_state_names=["T1","T2","T3","T4","T5","T6","T7","T8","T9","T10","T11","T12"];sim.ep.internal_states.fire_visible={databus:false,internalbus:false};sim.ep.internal_states.filter_states=["REG_IR_DECO,col-12","REG_IR,col-auto","REG_PC,col-auto","REG_MAR,col-auto","REG_MBR,col-auto","REG_RT1,col-auto","REG_RT2,col-auto","REG_RT3,col-auto","REG_SR,col-auto","REG_MICROADDR,col-auto"];sim.ep.internal_states.filter_signals=["A0,0","B,0","C,0","SELA,5","SELB,5","SELC,2","SELCOP,0","MR,0","MC,0","C0,0","C1,0","C2,0","C3,0","C4,0","C5,0","C6,0","C7,0","T1,0","T2,0","T3,0","T4,0","T5,0","T6,0","T7,0","T8,0","T9,0","T10,0","T11,0","M1,0","M2,0","M7,0","MA,0","MB,0","SELP,0","LC,0","SE,0","SIZE,0","OFFSET,0","BW,0","R,0","W,0","TA,0","TD,0","IOR,0","IOW,0","TEST_I,0","TEST_U,0"];sim.ep.internal_states.alu_flags={flag_n:0,flag_z:0,flag_v:0,flag_c:0};sim.ep.states.BR=[];sim.ep.states.BR[0]={name:"R0",verbal:"Register 0",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[1]={name:"R1",verbal:"Register 1",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[2]={name:"R2",verbal:"Register 2",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[3]={name:"R3",verbal:"Register 3",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[4]={name:"R4",verbal:"Register 4",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[5]={name:"R5",verbal:"Register 5",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[6]={name:"R6",verbal:"Register 6",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[7]={name:"R7",verbal:"Register 7",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[8]={name:"R8",verbal:"Register 8",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[9]={name:"R9",verbal:"Register 9",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[10]={name:"R10",verbal:"Register 10",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[11]={name:"R11",verbal:"Register 11",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[12]={name:"R12",verbal:"Register 12",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[13]={name:"R13",verbal:"Register 13",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[14]={name:"R14",verbal:"Register 14",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[15]={name:"R15",verbal:"Register 15",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[16]={name:"R16",verbal:"Register 16",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[17]={name:"R17",verbal:"Register 17",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[18]={name:"R18",verbal:"Register 18",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[19]={name:"R19",verbal:"Register 19",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[20]={name:"R20",verbal:"Register 20",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[21]={name:"R21",verbal:"Register 21",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[22]={name:"R22",verbal:"Register 22",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[23]={name:"R23",verbal:"Register 23",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[24]={name:"R24",verbal:"Register 24",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[25]={name:"R25",verbal:"Register 25",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[26]={name:"R26",verbal:"Register 26",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[27]={name:"R27",verbal:"Register 27",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[28]={name:"R28",verbal:"Register 28",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[29]={name:"R29",verbal:"Register 29",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[30]={name:"R30",verbal:"Register 30",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[31]={name:"R31",verbal:"Register 31",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["REG_PC"]={name:"PC",verbal:"Program Counter Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["REG_MAR"]={name:"MAR",verbal:"Memory Address Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["REG_MBR"]={name:"MBR",verbal:"Memory Data Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["REG_IR"]={name:"IR",verbal:"Instruction Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["REG_RT1"]={name:"RT1",verbal:"Temporal 1 Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["REG_RT2"]={name:"RT2",verbal:"Temporal 2 Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["REG_RT3"]={name:"RT3",verbal:"Temporal 3 Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["REG_SR"]={name:"SR",verbal:"State Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["BUS_IB"]={name:"I_BUS",verbal:"Internal Bus",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["BUS_AB"]={name:"A_BUS",verbal:"Address Bus",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["BUS_CB"]={name:"C_BUS",verbal:"Control Bus",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["BUS_DB"]={name:"D_BUS",verbal:"Data Bus",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["C2_T2"]={name:"C2_T2",verbal:"Output of PC",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["RA_T9"]={name:"RA_T9",verbal:"Input of T9 Tristate",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["RB_T10"]={name:"RB_T10",verbal:"Input of T10 Tristate",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["HPC_T12"]={name:"HPC_T12",verbal:"Input of T12 Tristate",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["SELEC_T3"]={name:"SELEC_T3",verbal:"Input of T3 Tristate",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["SELP_M7"]={name:"SELP_M7",verbal:"Output of MUX SelP",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["ALU_C6"]={name:"ALU_C6",verbal:"Input of Temporal 3 Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["MA_ALU"]={name:"MA_ALU",verbal:"Input ALU via MA",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["MB_ALU"]={name:"MB_ALU",verbal:"Input ALU via MB",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["FLAG_C"]={name:"FLAG_C",verbal:"Carry Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.ep.states["FLAG_V"]={name:"FLAG_V",verbal:"Overflow Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.ep.states["FLAG_N"]={name:"FLAG_N",verbal:"Negative Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.ep.states["FLAG_Z"]={name:"FLAG_Z",verbal:"Zero Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.ep.states["FLAG_I"]={name:"FLAG_I",verbal:"Interruption Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.ep.states["FLAG_U"]={name:"FLAG_U",verbal:"User Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.ep.states["REG_MICROADDR"]={name:"µADDR",verbal:"Microaddress Register",visible:true,nbits:"12",value:0,default_value:0,draw_data:["svg_cu:text4667"]};sim.ep.states["REG_MICROINS"]={name:"µINS",verbal:"Microinstruction Register",visible:true,nbits:"77",value:{},default_value:{},draw_data:[]};sim.ep.states["FETCH"]={name:"FETCH",verbal:"Input Fetch",visible:false,nbits:"12",value:0,default_value:0,draw_data:[]};sim.ep.states["ROM_MUXA"]={name:"ROM_MUXA",verbal:"Input ROM",visible:false,nbits:"12",value:0,default_value:0,draw_data:[]};sim.ep.states["SUM_ONE"]={name:"SUM_ONE",verbal:"Input next microinstruction",visible:false,nbits:"12",value:1,default_value:1,draw_data:[]};sim.ep.states["MUXA_MICROADDR"]={name:"MUXA_MICROADDR",verbal:"Input microaddress",visible:false,nbits:"12",value:0,default_value:0,draw_data:[]};sim.ep.states["MUXC_MUXB"]={name:"MUXC_MUXB",verbal:"Output of MUX C",visible:false,nbits:"1",value:0,default_value:0,draw_data:[]};sim.ep.states["INEX"]={name:"INEX",verbal:"Illegal Instruction Exception",visible:false,nbits:"1",value:0,default_value:0,draw_data:[]};sim.ep.states["BS_M1"]={name:"BS_M1",verbal:"from Memory",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["BS_TD"]={name:"BS_TD",verbal:"Memory",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["INTV"]={name:"INTV",verbal:"Interruption Vector",visible:false,nbits:"8",value:0,default_value:0,draw_data:[]};sim.ep.states["M2_C2"]={name:"M2_C2",verbal:"Input of Program Counter",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["M1_C1"]={name:"M1_C1",verbal:"Input of Memory Data Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["M7_C7"]={name:"M7_C7",verbal:"Input of State Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["VAL_ZERO"]={name:"VAL_ZERO",verbal:"Wired Zero",visible:false,nbits:"1",value:0,default_value:0,draw_data:[]};sim.ep.states["VAL_ONE"]={name:"VAL_ONE",verbal:"Wired One",visible:false,nbits:"32",value:1,default_value:1,draw_data:[]};sim.ep.states["VAL_FOUR"]={name:"VAL_FOUR",verbal:"Wired Four",visible:false,nbits:"32",value:4,default_value:4,draw_data:[]};sim.ep.states["REG_IR_DECO"]={name:"IR_DECO",verbal:"Instruction Decoded",visible:true,nbits:"0",value:0,default_value:0,draw_data:[]};sim.ep.states["DECO_INS"]={name:"DECO_INS",verbal:"Instruction decoded in binary",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["CLK"]={name:"CLK",verbal:"Clock",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["ACC_TIME"]={name:"ACC_TIME",verbal:"Accumulated CPU time",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["TTCPU"]={name:"TTCPU",verbal:"Several Tristates to the internal data bus in CPU activated",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["ACC_PWR"]={name:"ACC_PWR",verbal:"Accumulated Energy Consumption",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.signals["C"]={name:"C",visible:true,type:"L",value:0,default_value:0,nbits:"4",behavior:["MV MUXC_MUXB VAL_ZERO; FIRE B","MBIT MUXC_MUXB INT 0 1; FIRE B","MBIT MUXC_MUXB IORDY 0 1; FIRE B","MBIT MUXC_MUXB MRDY 0 1; FIRE B","MBIT MUXC_MUXB REG_SR 0 1; FIRE B","MBIT MUXC_MUXB REG_SR 1 1; FIRE B","MBIT MUXC_MUXB REG_SR 28 1; FIRE B","MBIT MUXC_MUXB REG_SR 29 1; FIRE B","MBIT MUXC_MUXB REG_SR 30 1; FIRE B","MBIT MUXC_MUXB REG_SR 31 1; FIRE B","MV MUXC_MUXB INEX; FIRE B"],fire_name:["svg_cu:text3410"],draw_data:[["svg_cu:path3108"],["svg_cu:path3062"],["svg_cu:path3060"],["svg_cu:path3136"],["svg_cu:path3482"],["svg_cu:path3480"],["svg_cu:path3488"],["svg_cu:path3486"],["svg_cu:path3484"],["svg_cu:path3484-9"],["svg_cu:path3108-3","svg_cu:path3260-3-8-6","svg_cu:path3260-3-8","svg_cu:path3260-3"]],draw_name:[["svg_cu:path3496","svg_cu:path3414","svg_cu:path3194-08"]]};sim.ep.signals["B"]={name:"B",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV A1 MUXC_MUXB; FIRE A1","NOT_ES A1 MUXC_MUXB; FIRE A1"],depends_on:["CLK"],fire_name:["svg_cu:text3408"],draw_data:[["svg_cu:path3100-8-7","svg_cu:path3108-1","svg_cu:path3200-1"],["svg_cu:path3392","svg_cu:path3372","svg_cu:path3390","svg_cu:path3384","svg_cu:path3100-8-7","svg_cu:path3386"]],draw_name:[[],["svg_cu:path3194-0","svg_cu:path3138-8","svg_cu:path3498-6"]]};sim.ep.signals["A0"]={name:"A0",visible:false,type:"L",value:0,default_value:0,nbits:"1",behavior:["SBIT_SIGNAL A0A1 0 1; FIRE A0A1","SBIT_SIGNAL A0A1 1 1; FIRE A0A1"],depends_on:["CLK"],fire_name:["svg_cu:text3406"],draw_data:[["svg_cu:path3096"],["svg_cu:path3096"]],draw_name:[[],["svg_cu:path3138-8-1","svg_cu:path3098-2","svg_cu:path3124-2-5"]]};sim.ep.signals["A1"]={name:"A1",visible:false,type:"L",value:0,default_value:0,nbits:"1",behavior:["SBIT_SIGNAL A0A1 0 0; FIRE A0A1","SBIT_SIGNAL A0A1 1 0; FIRE A0A1"],depends_on:["CLK"],fire_name:[],draw_data:[["svg_cu:path3094"],["svg_cu:path3094"]],draw_name:[[]]};sim.ep.signals["A0A1"]={name:"A0A1",visible:true,type:"L",value:0,default_value:0,nbits:"2",behavior:["PLUS1 MUXA_MICROADDR REG_MICROADDR","CP_FIELD MUXA_MICROADDR REG_MICROINS/MADDR","MV MUXA_MICROADDR ROM_MUXA","MV MUXA_MICROADDR FETCH"],depends_on:["CLK"],fire_name:[],draw_data:[["svg_cu:path3102","svg_cu:path3100","svg_cu:path3098","svg_cu:path3100-9","svg_cu:path3088","svg_cu:path3082"],["svg_cu:path3104","svg_cu:path3134","svg_cu:path3500","svg_cu:path3416"],["svg_cu:path3124-2-4","svg_cu:path3124-2","svg_cu:path3504","svg_cu:path3100-8","svg_cu:path3234-9"],["svg_cu:path3124"]],draw_name:[[]]};sim.ep.signals["C0"]={name:"C0",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","LOAD REG_MAR BUS_IB"],fire_name:["svg_p:text3077"],draw_data:[["svg_p:path3081"]],draw_name:[["svg_p:path3075"]]};sim.ep.signals["C1"]={name:"C1",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","LOAD REG_MBR M1_C1"],fire_name:["svg_p:text3079"],draw_data:[["svg_p:path3055"]],draw_name:[["svg_p:path3073"]]};sim.ep.signals["C2"]={name:"C2",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","LOAD REG_PC M2_C2; UPDATEDPC"],fire_name:["svg_p:text3179"],draw_data:[["svg_p:path3485"]],draw_name:[["svg_p:path3177"]]};sim.ep.signals["C3"]={name:"C3",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","LOAD REG_IR BUS_IB; DECO; FIRE_IFSET C 10"],fire_name:["svg_p:text3439"],draw_data:[["svg_p:path3339"]],draw_name:[["svg_p:path3337"]]};sim.ep.signals["C4"]={name:"C4",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","LOAD REG_RT1 BUS_IB"],fire_name:["svg_p:text3441"],draw_data:[["svg_p:path3263"]],draw_name:[["svg_p:path3255"]]};sim.ep.signals["C5"]={name:"C5",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","LOAD REG_RT2 BUS_IB"],fire_name:["svg_p:text3443"],draw_data:[["svg_p:path3277"]],draw_name:[["svg_p:path3269"]]};sim.ep.signals["C6"]={name:"C6",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","LOAD REG_RT3 ALU_C6"],fire_name:["svg_p:text3445"],draw_data:[["svg_p:path3325","svg_p:path3323","svg_p:path3321","svg_p:path3261-8","svg_p:path3317-9","svg_p:path3901-6-9"]],draw_name:[["svg_p:path3245"]]};sim.ep.signals["C7"]={name:"C7",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","LOAD REG_SR M7_C7"],fire_name:["svg_p:text3655"],draw_data:[["svg_p:path3651-9"]],draw_name:[["svg_p:path3681"]]};sim.ep.signals["TA"]={name:"TA",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","MV BUS_AB REG_MAR; MOVE_BITSE A1A0 0 2 BUS_AB 0; FIRE_IFCHANGED A1A0 A1A0"],fire_name:["svg_p:text3091"],draw_data:[["svg_p:path3061-2","svg_p:path3083","svg_p:path3089","svg_p:path3597","svg_p:path3513","svg_p:path3601","svg_p:path3601-2","svg_p:path3187","svg_p:path3087","svg_p:path2995","svg_p:path3535"]],draw_name:[["svg_p:path3085"]]};sim.ep.signals["TD"]={name:"TD",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; CHECK_RTD","MV BUS_DB BS_TD; MOVE_BITSE A1A0 0 2 BUS_AB 0; FIRE_IFCHANGED A1A0 A1A0; CHECK_RTD"],fire_name:["svg_p:text3103"],draw_data:[["svg_p:path3545","svg_p:path3093","svg_p:path3101","svg_p:path3587","svg_p:path3515","svg_p:path3071","svg_p:path3419","svg_p:path3099","svg_p:path3097","svg_p:path3559-5","svg_p:path3419-1-0","svg_p:path3583","svg_p:path3419-1","svg_p:path3491","svg_p:path3641","svg_p:path3541"]],draw_name:[["svg_p:path3095"]]};sim.ep.signals["T1"]={name:"T1",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 0","MV BUS_IB REG_MBR; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 0"],fire_name:["svg_p:text3105"],draw_data:[["svg_p:path3071","svg_p:path3065","svg_p:path3071","svg_p:path3049","svg_p:path3063-9","svg_p:path3071","svg_p:path3071","svg_p:path3069"]],draw_name:[["svg_p:path3067"]]};sim.ep.signals["T2"]={name:"T2",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 1","MV BUS_IB REG_PC; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 1"],fire_name:["svg_p:text3449"],draw_data:[["svg_p:path3195","svg_p:path3199","svg_p:path3201","svg_p:path3049"]],draw_name:[["svg_p:path3329"]]};sim.ep.signals["T3"]={name:"T3",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 2","MV BUS_IB SELEC_T3; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 2"],fire_name:["svg_p:text3451"],draw_data:[["svg_p:path3341","svg_p:path3347","svg_p:path3349","svg_p:path3931","svg_p:path3345","svg_p:path3049"]],draw_name:[["svg_p:path3351"]]};sim.ep.signals["T4"]={name:"T4",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 3","MV BUS_IB REG_RT1; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 3"],fire_name:["svg_p:text3453"],draw_data:[["svg_p:path3257","svg_p:path3261","svg_p:path3259","svg_p:path3049"]],draw_name:[["svg_p:path3305"]]};sim.ep.signals["T5"]={name:"T5",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 4","MV BUS_IB REG_RT2; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 4"],fire_name:["svg_p:text3455"],draw_data:[["svg_p:path3271","svg_p:path3275","svg_p:path3273","svg_p:path3049"]],draw_name:[["svg_p:path3307"]]};sim.ep.signals["T6"]={name:"T6",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 5","MV BUS_IB ALU_C6; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 5"],fire_name:["svg_p:text3457"],draw_data:[["svg_p:path3315","svg_p:path3589","svg_p:path3317","svg_p:path3163-2","svg_p:path3049","svg_p:path3321","svg_p:path3261-8","svg_p:path3317-9","svg_p:path3901-6-9"]],draw_name:[["svg_p:path3319"]]};sim.ep.signals["T7"]={name:"T7",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 6","MV BUS_IB REG_RT3; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 6"],fire_name:["svg_p:text3459"],draw_data:[["svg_p:path3309","svg_p:path3327","svg_p:path3311","svg_p:path3049"]],draw_name:[["svg_p:path3313"]]};sim.ep.signals["T8"]={name:"T8",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 7","MV BUS_IB REG_SR; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 7"],fire_name:["svg_p:text3657"],draw_data:[["svg_p:path3645","svg_p:path3651","svg_p:path3647","svg_p:path3049"]],draw_name:[["svg_p:path3649"]]};sim.ep.signals["T9"]={name:"T9",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 8","MV BUS_IB RA_T9; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 8"],fire_name:["svg_p:text3147"],draw_data:[["svg_p:path3131","svg_p:path3143","svg_p:path3139","svg_p:path3049","svg_p:path3143-9"]],draw_name:[["svg_p:path3133"]]};sim.ep.signals["T10"]={name:"T10",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 9","MV BUS_IB RB_T10; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 9"],fire_name:["svg_p:text3149"],draw_data:[["svg_p:path3135","svg_p:path3145","svg_p:path3141","svg_p:path3049","svg_p:path3145-5"]],draw_name:[["svg_p:path3137"]]};sim.ep.signals["T11"]={name:"T11",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 10","CP_FIELD BUS_IB REG_MICROINS/EXCODE; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 10"],fire_name:["svg_p:text3147-5","svg_cu:tspan4426"],draw_data:[["svg_cu:path3131-3","svg_p:path3131-3","svg_p:path3145","svg_p:path3081-3","svg_p:path3139-7","svg_p:path3049","svg_cu:path3081-3","svg_cu:path3139-7"]],draw_name:[["svg_p:path3133-6","svg_cu:path3133-6"]]};sim.ep.signals["T12"]={name:"T12",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 11","MV BUS_IB HPC_T12; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 11"],fire_name:["svg_p:text3147-5-0-1-1"],draw_data:[["svg_p:path3131-3-8-4-31","svg_p:path3139-7-1-4-3","svg_p:path3049","svg_p:path3081-3-8-5-3"]],draw_name:[["svg_p:path3133-6-9-7-5"]]};sim.ep.signals["M1"]={name:"M1",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV M1_C1 BUS_IB","MV M1_C1 BS_M1"],depends_on:["C1"],fire_name:["svg_p:text3469"],draw_data:[["svg_p:path3063","svg_p:path3061","svg_p:path3059"],["svg_p:path3057","svg_p:path3641","svg_p:path3419","svg_p:path3583"]],draw_name:[[],["svg_p:path3447"]]};sim.ep.signals["M2"]={name:"M2",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV M2_C2 BUS_IB","PLUS4 M2_C2 REG_PC"],depends_on:["C2"],fire_name:["svg_p:text3471"],draw_data:[["svg_p:path3217","svg_p:path3215","svg_p:path3213","svg_p:path3213-9"],["svg_p:path3211","svg_p:path3209","svg_p:path3193","svg_p:path3207","svg_p:path3197","svg_p:path3201"]],draw_name:[[],["svg_p:path3467","svg_p:path3467"]]};sim.ep.signals["M7"]={name:"M7",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV M7_C7 BUS_IB","MV M7_C7 SELP_M7"],depends_on:["C7"],fire_name:["svg_p:text3673"],draw_data:[["svg_p:path3691","svg_p:path3693","svg_p:path3659"],["svg_p:path3695"]],draw_name:[[],["svg_p:path3667"]]};sim.ep.signals["MA"]={name:"MA",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV MA_ALU RA_T9; FIRE COP","MV MA_ALU REG_RT1; FIRE COP"],depends_on:["SELA","SELB"],fire_name:["svg_p:text3463"],draw_data:[["svg_p:path3249","svg_p:path3161","svg_p:path3165"],["svg_p:path3279"]],draw_name:[[],["svg_p:path3423"]]};sim.ep.signals["MB"]={name:"MB",visible:true,type:"L",value:0,default_value:0,nbits:"2",behavior:["MV MB_ALU RB_T10; FIRE COP","MV MB_ALU REG_RT2; FIRE COP","MV MB_ALU VAL_FOUR; FIRE COP","MV MB_ALU VAL_ONE; FIRE COP"],depends_on:["SELA","SELB"],fire_name:["svg_p:text3465"],draw_data:[["svg_p:path3281","svg_p:path3171","svg_p:path3169"],["svg_p:path3283"],["svg_p:path3295","svg_p:path3293"],["svg_p:path3297","svg_p:path3299"]],draw_name:[[],["svg_p:path3425","svg_p:path3427"]]};sim.ep.signals["MH"]={name:"MH",visible:true,type:"L",value:0,default_value:0,nbits:"2",behavior:["MV HPC_T12 CLK","MV HPC_T12 ACC_TIME","MV HPC_T12 ACC_PWR","NOP"],fire_name:["svg_p:text3147-5-0-1-8-4"],draw_data:[[],["svg_p:path3081-3-8-5-3"]],draw_name:[[],["svg_p:path3306-8-7-6"]]};sim.ep.signals["COP"]={name:"COP",visible:true,type:"L",value:0,default_value:0,nbits:"5",forbidden:true,behavior:["NOP_ALU; UPDATE_NZVC","AND ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","OR ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","NOT ALU_C6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","XOR ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","SRL ALU_C6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","SRA ALU_C6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","SL ALU_C6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","RR ALU_C6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","RL ALU_C6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","ADD ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","SUB ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","MUL ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","DIV ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","MOD ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","LUI ALU_C6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","FADD ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","FSUB ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","FMUL ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","FDIV ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","FCVT ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","FCLASS ALU_C6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","ADDU ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","SUBU ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","MULU ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","DIVU ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","NOP_ALU","NOP_ALU","NOP_ALU","NOP_ALU","NOP_ALU","NOP_ALU"],depends_on:["SELCOP"],fire_name:["svg_p:text3303"],draw_data:[["svg_p:path3237","svg_p:path3239","svg_p:path3261-8","svg_p:path3321","svg_p:path3901-6","svg_p:path3317-9"]],draw_name:[["svg_p:path3009","svg_p:path3301"]]};sim.ep.signals["SELP"]={name:"SELP",visible:true,type:"L",value:0,default_value:0,nbits:"2",behavior:["NOP","MV SELP_M7 REG_SR; UPDATE_FLAG SELP_M7 FLAG_U 0; FIRE M7","MV SELP_M7 REG_SR; UPDATE_FLAG SELP_M7 FLAG_I 1; FIRE M7","MV SELP_M7 REG_SR; UPDATE_FLAG SELP_M7 FLAG_C 31; UPDATE_FLAG SELP_M7 FLAG_V 30; UPDATE_FLAG SELP_M7 FLAG_N 29; UPDATE_FLAG SELP_M7 FLAG_Z 28; FIRE M7"],fire_name:["svg_p:text3703"],draw_data:[[],["svg_p:path3643"],["svg_p:path3705"],["svg_p:path3675","svg_p:path3331"]],draw_name:[[],["svg_p:path3697"]]};sim.ep.signals["SELA"]={name:"SELA",visible:true,type:"L",value:0,default_value:0,nbits:"5",behavior:["FIRE MR_RA"],depends_on:["RA"],fire_name:["svg_cu:text3164"],draw_data:[[]],draw_name:[[]]};sim.ep.signals["SELB"]={name:"SELB",visible:true,type:"L",value:0,default_value:0,nbits:"5",behavior:["FIRE MR_RB"],depends_on:["RB"],fire_name:["svg_cu:text3168"],draw_data:[[]],draw_name:[[]]};sim.ep.signals["SELC"]={name:"SELC",visible:true,type:"L",value:0,default_value:0,nbits:"5",behavior:["FIRE MR_RC"],depends_on:["RC"],fire_name:["svg_cu:text3172"],draw_data:[[]],draw_name:[[]]};sim.ep.signals["SELCOP"]={name:"SELCOP",visible:true,type:"L",value:0,default_value:0,nbits:"5",behavior:["FIRE MC"],depends_on:["COP"],fire_name:["svg_cu:text3312"],draw_data:[[]],draw_name:[[]]};sim.ep.signals["EXCODE"]={name:"EXCODE",visible:true,type:"L",value:0,default_value:0,nbits:"4",behavior:["FIRE T11"],fire_name:["svg_cu:text3312-6"],draw_data:[[]],draw_name:[]};sim.ep.signals["RA"]={name:"RA",visible:true,type:"L",value:0,default_value:0,nbits:"5",forbidden:true,behavior:["GET RA_T9 BR RA; FIRE_IFSET T9 1; FIRE_IFSET MA 0"],depends_on:["SELA"],fire_name:["svg_p:text3107"],draw_data:[[]],draw_name:[["svg_p:path3109"]]};sim.ep.signals["RB"]={name:"RB",visible:true,type:"L",value:0,default_value:0,nbits:"5",forbidden:true,behavior:["GET RB_T10 BR RB; FIRE_IFSET T10 1; FIRE_IFSET MB 0"],depends_on:["SELB"],fire_name:["svg_p:text3123"],draw_data:[[]],draw_name:[["svg_p:path3113"]]};sim.ep.signals["RC"]={name:"RC",visible:true,type:"L",value:0,default_value:0,nbits:"5",forbidden:true,behavior:["FIRE LC"],depends_on:["SELC"],fire_name:["svg_p:text3125"],draw_data:[[]],draw_name:[["svg_p:path3117"]]};sim.ep.signals["LC"]={name:"LC",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","SET BR RC BUS_IB"],fire_name:["svg_p:text3127"],draw_data:[["svg_p:path3153","svg_p:path3151","svg_p:path3129"]],draw_name:[["svg_p:path3121"]]};sim.ep.signals["SE"]={name:"SE",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MBITS SELEC_T3 0 REG_IR OFFSET SIZE 0 SE; FIRE T3; MOVE_BITS SBWA 4 1 SE; FIRE_IFCHANGED SBWA SE","MBITS SELEC_T3 0 REG_IR OFFSET SIZE 0 SE; FIRE T3; MOVE_BITS SBWA 4 1 SE; FIRE_IFCHANGED SBWA SE"],depends_on:["T3"],fire_name:["svg_p:text3593","svg_p:text3431"],draw_data:[[]],draw_name:[["svg_p:path3591","svg_p:path3447-7-7"]]};sim.ep.signals["SIZE"]={name:"SIZE",visible:true,type:"L",value:0,default_value:0,nbits:"5",behavior:["MBITS SELEC_T3 0 REG_IR OFFSET SIZE 0 SE; FIRE T3"],depends_on:["T3"],fire_name:["svg_p:text3363"],draw_data:[[]],draw_name:[["svg_p:path3355"]]};sim.ep.signals["OFFSET"]={name:"OFFSET",visible:true,type:"L",value:0,default_value:0,nbits:"5",behavior:["MBITS SELEC_T3 0 REG_IR OFFSET SIZE 0 SE; FIRE T3"],depends_on:["T3"],fire_name:["svg_p:text3707"],draw_data:[[]],draw_name:[["svg_p:path3359"]]};sim.ep.signals["MC"]={name:"MC",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MBIT COP REG_IR 0 5; FIRE COP;","CP_FIELD COP REG_MICROINS/SELCOP; FIRE COP;"],depends_on:["SELCOP"],fire_name:["svg_cu:text3322","svg_cu:text3172-1-5"],draw_data:[["svg_cu:path3320","svg_cu:path3142"],["svg_cu:path3318","svg_cu:path3502-6"]],draw_name:[[],["svg_cu:path3306"]]};sim.ep.signals["MR"]={name:"MR",verbal:["Copy from IR[SelA], from IR[SelB], and from IR[SelB] into RA, RB, and RC. ","Copy SelA, SelB, and SelB into RA, RB, and RC. "],visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV MR_RA MR; FIRE MR_RA; MV MR_RB MR; FIRE MR_RB; MV MR_RC MR; FIRE MR_RC;","MV MR_RA MR; FIRE MR_RA; MV MR_RB MR; FIRE MR_RB; MV MR_RC MR; FIRE MR_RC;"],depends_on:["SELA","SELB","SELC"],fire_name:["svg_cu:text3222","svg_cu:text3242","svg_cu:text3254","svg_cu:text3172-1"],draw_data:[["svg_cu:path3494","svg_cu:path3492","svg_cu:path3490","svg_cu:path3188","svg_cu:path3190","svg_cu:path3192","svg_cu:path3194","svg_cu:path3276","svg_cu:path3290","svg_cu:path3260","svg_cu:path3196","svg_cu:path3278","svg_cu:path3292","svg_cu:path3142","svg_cu:path3258-4","svg_cu:path3390-7","svg_cu:path3258","svg_cu:path3280"],["svg_cu:path3270","svg_cu:path3282","svg_cu:path3300","svg_cu:path3258","svg_cu:path3260","svg_cu:path3258-4","svg_cu:path3278","svg_cu:path3196","svg_cu:path3294","svg_cu:path3292","svg_cu:path3288","svg_cu:path3280","svg_cu:path3258","svg_cu:path3258-4","svg_cu:path3390-7"]],draw_name:[[],["svg_cu:path3220","svg_cu:path3240","svg_cu:path3252"]]};sim.ep.signals["MR_RA"]={name:"MR_RA",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MBIT_SN RA REG_IR REG_MICROINS/SELA 5; FIRE RA;","CP_FIELD RA REG_MICROINS/SELA; FIRE RA;"],fire_name:[],draw_data:[[]],draw_name:[[]]};sim.ep.signals["MR_RB"]={name:"MR_RB",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MBIT_SN RB REG_IR REG_MICROINS/SELB 5; FIRE RB;","CP_FIELD RB REG_MICROINS/SELB; FIRE RB;"],fire_name:[],draw_data:[[]],draw_name:[[]]};sim.ep.signals["MR_RC"]={name:"MR_RC",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MBIT_SN RC REG_IR REG_MICROINS/SELC 5; FIRE RC;","CP_FIELD RC REG_MICROINS/SELC; FIRE RC;"],fire_name:[],draw_data:[[]],draw_name:[[]]};sim.ep.signals["BW"]={name:"BW",verbal:["Select one byte (based on A1A0) from Word. ","Select two bytes (one Half Word based on A1A0) from Word. ","","Select the full Word. "],visible:true,type:"L",value:0,default_value:0,nbits:"2",behavior:["MOVE_BITS BWA 2 2 BW; MOVE_BITS SBWA 2 2 BW; FIRE_IFCHANGED BWA BW; FIRE SBWA; RESET_CHANGED BW","MOVE_BITS BWA 2 2 BW; MOVE_BITS SBWA 2 2 BW; FIRE_IFCHANGED BWA BW; FIRE SBWA; RESET_CHANGED BW","MOVE_BITS BWA 2 2 BW; MOVE_BITS SBWA 2 2 BW; FIRE_IFCHANGED BWA BW; FIRE SBWA; RESET_CHANGED BW","MOVE_BITS BWA 2 2 BW; MOVE_BITS SBWA 2 2 BW; FIRE_IFCHANGED BWA BW; FIRE SBWA; RESET_CHANGED BW"],fire_name:["svg_p:text3433"],draw_data:[["svg_p:path3061-2-6","svg_p:path3101-8","svg_p:path3535-8"]],draw_name:[[],[]]};sim.ep.signals["A1A0"]={name:"A1A0",visible:true,type:"L",value:0,default_value:0,nbits:"2",behavior:["MOVE_BITS BWA 0 2 A1A0; MOVE_BITS SBWA 0 2 A1A0; FIRE BWA; FIRE SBWA","MOVE_BITS BWA 0 2 A1A0; MOVE_BITS SBWA 0 2 A1A0; FIRE BWA; FIRE SBWA","MOVE_BITS BWA 0 2 A1A0; MOVE_BITS SBWA 0 2 A1A0; FIRE BWA; FIRE SBWA","MOVE_BITS BWA 0 2 A1A0; MOVE_BITS SBWA 0 2 A1A0; FIRE BWA; FIRE SBWA"],fire_name:["svg_p:text3603"],draw_data:[[],[]],draw_name:[[],[]]};sim.ep.signals["BWA"]={name:"BWA",visible:false,type:"L",value:0,default_value:0,nbits:"4",behavior:["BSEL BS_TD 0 8 REG_MBR 0; FIRE TD; FIRE R; FIRE W","BSEL BS_TD 8 8 REG_MBR 0; FIRE TD; FIRE R; FIRE W","BSEL BS_TD 16 8 REG_MBR 0; FIRE TD; FIRE R; FIRE W","BSEL BS_TD 24 8 REG_MBR 0; FIRE TD; FIRE R; FIRE W","BSEL BS_TD 0 16 REG_MBR 0; FIRE TD; FIRE R; FIRE W","BSEL BS_TD 0 16 REG_MBR 0; FIRE TD; FIRE R; FIRE W","BSEL BS_TD 0 16 REG_MBR 0; FIRE TD; FIRE R; FIRE W","BSEL BS_TD 0 16 REG_MBR 0; FIRE TD; FIRE R; FIRE W","BSEL BS_TD 16 16 REG_MBR 0; FIRE TD; FIRE R; FIRE W","BSEL BS_TD 16 16 REG_MBR 0; FIRE TD; FIRE R; FIRE W","BSEL BS_TD 16 16 REG_MBR 0; FIRE TD; FIRE R; FIRE W","BSEL BS_TD 16 16 REG_MBR 0; FIRE TD; FIRE R; FIRE W","MV BS_TD REG_MBR; FIRE TD; FIRE R; FIRE W","MV BS_TD REG_MBR; FIRE TD; FIRE R; FIRE W","MV BS_TD REG_MBR; FIRE TD; FIRE R; FIRE W","MV BS_TD REG_MBR; FIRE TD; FIRE R; FIRE W"],fire_name:["svg_p:text3533-5"],draw_data:[[],[]],draw_name:[[],[]]};sim.ep.signals["SBWA"]={name:"SBWA",visible:false,type:"L",value:0,default_value:0,nbits:"5",behavior:["BSEL BS_M1 0 8 BUS_DB 0; FIRE M1","BSEL BS_M1 0 8 BUS_DB 8; FIRE M1","BSEL BS_M1 0 8 BUS_DB 16; FIRE M1","BSEL BS_M1 0 8 BUS_DB 24; FIRE M1","BSEL BS_M1 0 16 BUS_DB 0; FIRE M1","BSEL BS_M1 0 16 BUS_DB 0; FIRE M1","BSEL BS_M1 0 16 BUS_DB 0; FIRE M1","BSEL BS_M1 0 16 BUS_DB 0; FIRE M1","BSEL BS_M1 0 16 BUS_DB 16; FIRE M1","BSEL BS_M1 0 16 BUS_DB 16; FIRE M1","BSEL BS_M1 0 16 BUS_DB 16; FIRE M1","BSEL BS_M1 0 16 BUS_DB 16; FIRE M1","MV BS_M1 BUS_DB; FIRE M1","MV BS_M1 BUS_DB; FIRE M1","MV BS_M1 BUS_DB; FIRE M1","MV BS_M1 BUS_DB; FIRE M1","BSEL BS_M1 0 8 BUS_DB 0; EXT_SIG BS_M1 7; FIRE M1","BSEL BS_M1 0 8 BUS_DB 8; EXT_SIG BS_M1 7; FIRE M1","BSEL BS_M1 0 8 BUS_DB 16; EXT_SIG BS_M1 7; FIRE M1","BSEL BS_M1 0 8 BUS_DB 24; EXT_SIG BS_M1 7; FIRE M1","BSEL BS_M1 0 16 BUS_DB 0; EXT_SIG BS_M1 15; FIRE M1","BSEL BS_M1 0 16 BUS_DB 0; EXT_SIG BS_M1 15; FIRE M1","BSEL BS_M1 0 16 BUS_DB 0; EXT_SIG BS_M1 15; FIRE M1","BSEL BS_M1 0 16 BUS_DB 0; EXT_SIG BS_M1 15; FIRE M1","BSEL BS_M1 0 16 BUS_DB 16; EXT_SIG BS_M1 15; FIRE M1","BSEL BS_M1 0 16 BUS_DB 16; EXT_SIG BS_M1 15; FIRE M1","BSEL BS_M1 0 16 BUS_DB 16; EXT_SIG BS_M1 15; FIRE M1","BSEL BS_M1 0 16 BUS_DB 16; EXT_SIG BS_M1 15; FIRE M1","MV BS_M1 BUS_DB; FIRE M1","MV BS_M1 BUS_DB; FIRE M1","MV BS_M1 BUS_DB; FIRE M1","MV BS_M1 BUS_DB; FIRE M1"],fire_name:[],draw_data:[[],[]],draw_name:[[],[]]};sim.ep.signals["IOR"]={name:"IOR",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","MOVE_BITS KBD_IOR 0 1 IOR; MOVE_BITS SCR_IOR 0 1 IOR; MOVE_BITS L3D_IOR 0 1 IOR; MOVE_BITS L3D_IOR 0 1 IOR; FIRE KBD_IOR; FIRE SCR_IOR; FIRE L3D_IOR; FIRE LEDM_IOR"],fire_name:["svg_p:text3715"],draw_data:[[],["svg_p:path3733","svg_p:path3491","svg_p:text3715"]],draw_name:[[],[]]};sim.ep.signals["IOW"]={name:"IOW",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","MOVE_BITS SCR_IOW 0 1 IOW; FIRE SCR_IOW; MOVE_BITS IO_IOW 0 1 IOW; FIRE IO_IOW; MOVE_BITS L3D_IOW 0 1 IOW; FIRE L3D_IOW; MOVE_BITS LEDM_IOW 0 1 IOW; FIRE LEDM_IOW"],fire_name:["svg_p:text3717"],draw_data:[[],["svg_p:path3735","svg_p:path3491","svg_p:text3717"]],draw_name:[[],[]]};sim.ep.signals["I"]={name:"I",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV FLAG_I VAL_ZERO; FIRE_IFSET SELP 2","MV FLAG_I VAL_ONE; FIRE_IFSET SELP 2"],fire_name:[],draw_data:[[],[]],draw_name:[[],[]]};sim.ep.signals["U"]={name:"U",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV FLAG_U VAL_ZERO; FIRE_IFSET SELP 2","MV FLAG_U VAL_ONE; FIRE_IFSET SELP 2"],fire_name:[],draw_data:[[],[]],draw_name:[[],[]]};sim.ep.signals["TEST_C"]={name:"TEST_C",visible:true,type:"L",value:0,default_value:0,nbits:"1",forbidden:true,behavior:["MV FLAG_C VAL_ZERO; FIRE_IFSET SELP 2","MV FLAG_C VAL_ONE; FIRE_IFSET SELP 3"],depends_on:["SELCOP","COP"],fire_name:["svg_p:text3701-3"],draw_data:[["svg_p:text3701-3"]],draw_name:[[]]};sim.ep.signals["TEST_V"]={name:"TEST_V",visible:true,type:"L",value:0,default_value:0,nbits:"1",forbidden:true,behavior:["MV FLAG_V VAL_ZERO; FIRE_IFSET SELP 2","MV FLAG_V VAL_ONE; FIRE_IFSET SELP 3"],depends_on:["SELCOP","COP"],fire_name:["svg_p:text3701-3-1"],draw_data:[["svg_p:text3701-3-1"]],draw_name:[[]]};sim.ep.signals["TEST_N"]={name:"TEST_N",visible:true,type:"L",value:0,default_value:0,nbits:"1",forbidden:true,behavior:["MV FLAG_N VAL_ZERO; FIRE_IFSET SELP 2","MV FLAG_N VAL_ONE; FIRE_IFSET SELP 3"],depends_on:["SELCOP","COP"],fire_name:["svg_p:text3701-3-2"],draw_data:[["svg_p:text3701-3-2"]],draw_name:[[]]};sim.ep.signals["TEST_Z"]={name:"TEST_Z",visible:true,type:"L",value:0,default_value:0,nbits:"1",forbidden:true,behavior:["MV FLAG_Z VAL_ZERO; FIRE_IFSET SELP 2","MV FLAG_Z VAL_ONE; FIRE_IFSET SELP 3"],depends_on:["SELCOP","COP"],fire_name:["svg_p:text3701-3-5"],draw_data:[["svg_p:text3701-3-5"]],draw_name:[[]]};sim.ep.signals["TEST_I"]={name:"TEST_I",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV FLAG_I VAL_ZERO; FIRE_IFSET SELP 2","MV FLAG_I VAL_ONE; FIRE_IFSET SELP 2"],depends_on:["CLK"],fire_name:["svg_p:text3669"],draw_data:[["svg_p:text3669"]],draw_name:[[]]};sim.ep.signals["TEST_U"]={name:"TEST_U",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV FLAG_U VAL_ZERO; FIRE_IFSET SELP 1","MV FLAG_U VAL_ONE; FIRE_IFSET SELP 1"],depends_on:["CLK"],fire_name:["svg_p:text3669-1"],draw_data:[["svg_p:text3669-1"]],draw_name:[[]]};sim.ep.signals["TEST_INTV"]={name:"TEST_INTV",visible:true,type:"L",value:0,default_value:0,nbits:"8",forbidden:true,behavior:["MBIT INTV TEST_INTV 0 32"],depends_on:["INT"],fire_name:["svg_p:tspan4225"],draw_data:[["svg_p:path3749"]],draw_name:[[]]};sim.ep.behaviors["NOP"]={nparameters:1,operation:function(s_expr){},verbal:function(s_expr){return""}};sim.ep.behaviors["NOP_ALU"]={nparameters:1,operation:function(s_expr){sim.ep.internal_states.alu_flags.flag_n=0;sim.ep.internal_states.alu_flags.flag_z=0;sim.ep.internal_states.alu_flags.flag_c=0;sim.ep.internal_states.alu_flags.flag_v=0},verbal:function(s_expr){return""}};sim.ep.behaviors["MV"]={nparameters:3,types:["X","X"],operation:function(s_expr){sim_elto_org=get_reference(s_expr[2]);sim_elto_dst=get_reference(s_expr[1]);newval=get_value(sim_elto_org);set_value(sim_elto_dst,newval)},verbal:function(s_expr){var sim_elto_org=get_reference(s_expr[2]);var newval=get_value(sim_elto_org);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy from "+show_verbal(s_expr[2])+" to "+show_verbal(s_expr[1])+" value "+show_value(newval)+". "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[2])+" ("+show_value(newval)+"). "}};sim.ep.behaviors["LOAD"]={nparameters:3,types:["X","X"],operation:function(s_expr){sim_elto_org=get_reference(s_expr[2]);sim_elto_dst=get_reference(s_expr[1]);newval=get_value(sim_elto_org);set_value(sim_elto_dst,newval)},verbal:function(s_expr){var sim_elto_org=get_reference(s_expr[2]);var newval=get_value(sim_elto_org);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Load from "+show_verbal(s_expr[2])+" to "+show_verbal(s_expr[1])+" value "+show_value(newval)+". "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[2])+" ("+show_value(newval)+"). "}};sim.ep.behaviors["CP_FIELD"]={nparameters:3,types:["X","X"],operation:function(s_expr){r=s_expr[2].split("/");sim_elto_org=get_reference(r[0]);newval=get_value(sim_elto_org);newval=newval[r[1]];if(typeof newval!="undefined"){sim_elto_dst=get_reference(s_expr[1]);set_value(sim_elto_dst,newval)}},verbal:function(s_expr){var newval=0;var r=s_expr[2].split("/");var sim_elto_org=get_reference(r[0]);var sim_elto_dst=get_reference(r[1]);if(typeof sim_elto_dst=="undefined")sim_elto_dst={};if(typeof sim_elto_org.value[r[1]]!="undefined")newval=sim_elto_org.value[r[1]];else if(typeof sim_elto_dst.default_value!="undefined")newval=sim_elto_dst.default_value;else newval="<undefined>";var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy from Field "+r[1]+" of "+show_verbal(r[0])+" to "+show_verbal(s_expr[1])+" value "+newval+". "}return show_verbal(s_expr[1])+" = "+show_verbal(r[0])+"."+r[1]+" ("+newval+"). "}};sim.ep.behaviors["NOT_ES"]={nparameters:3,types:["S","E"],operation:function(s_expr){set_value(sim.ep.signals[s_expr[1]],Math.abs(get_value(sim.ep.states[s_expr[2]])-1))},verbal:function(s_expr){var value=Math.abs(get_value(sim.ep.states[s_expr[2]])-1);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Set "+show_verbal(s_expr[1])+" with value "+show_value(value)+" (Logical NOT of "+s_expr[2]+"). "}return show_verbal(s_expr[1])+" = "+show_value(value)+" (Logical NOT "+s_expr[2]+"). "}};sim.ep.behaviors["GET"]={nparameters:4,types:["E","E","S"],operation:function(s_expr){set_value(sim.ep.states[s_expr[1]],get_value(sim.ep.states[s_expr[2]][sim.ep.signals[s_expr[3]].value]))},verbal:function(s_expr){var value=get_value(sim.ep.states[s_expr[2]][sim.ep.signals[s_expr[3]].value]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Set "+show_verbal(s_expr[1])+" with value "+show_value(value)+" (Register File "+s_expr[3]+"). "}return show_verbal(s_expr[1])+" = "+show_value(value)+" (Register File "+s_expr[3]+"). "}};sim.ep.behaviors["SET"]={nparameters:4,types:["E","S","E"],operation:function(s_expr){set_value(sim.ep.states[s_expr[1]][sim.ep.signals[s_expr[2]].value],get_value(sim.ep.states[s_expr[3]]))},verbal:function(s_expr){var value=get_value(sim.ep.states[s_expr[3]]);var o_ref=sim.ep.states[s_expr[1]][sim.ep.signals[s_expr[2]].value];var o_verbal=o_ref.name;if(typeof o_ref.verbal!="undefined")o_verbal=o_ref.verbal;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy to "+o_verbal+" the value "+show_value(value)+". "}return o_verbal+" = "+show_value(value)+". "}};sim.ep.behaviors["AND"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])&get_value(sim.ep.states[s_expr[3]]);set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])&get_value(sim.ep.states[s_expr[3]]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU AND with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (AND). "}};sim.ep.behaviors["OR"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])|get_value(sim.ep.states[s_expr[3]]);set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])|get_value(sim.ep.states[s_expr[3]]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU OR with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (OR). "}};sim.ep.behaviors["NOT"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=~get_value(sim.ep.states[s_expr[2]]);set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=~get_value(sim.ep.states[s_expr[2]]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU NOT with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (NOT). "}};sim.ep.behaviors["XOR"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])^get_value(sim.ep.states[s_expr[3]]);set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])^get_value(sim.ep.states[s_expr[3]]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU XOR with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (XOR). "}};sim.ep.behaviors["SRL"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])>>>1;set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])>>>1;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Shift Right Logical with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (SRL). "}};sim.ep.behaviors["SRA"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])>>1;set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])>>1;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Shift Right Arithmetic with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (SRA). "}};sim.ep.behaviors["SL"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])<<1;set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=result>>>31},verbal:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])<<1;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Shift Left with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (SL). "}};sim.ep.behaviors["RR"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])>>>1|(get_value(sim.ep.states[s_expr[2]])&1)<<31;set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])>>>1|(get_value(sim.ep.states[s_expr[2]])&1)<<31;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Right Rotation with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (RR). "}};sim.ep.behaviors["RL"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])<<1|(get_value(sim.ep.states[s_expr[2]])&2147483648)>>>31;set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])<<1|(get_value(sim.ep.states[s_expr[2]])&2147483648)>>>31;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Left Rotation with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (LR). "}};sim.ep.behaviors["ADD"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var b=get_value(sim.ep.states[s_expr[3]])<<0;var result=a+b;set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=a>>>31&&b>>>31;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var b=get_value(sim.ep.states[s_expr[3]])<<0;var result=a+b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU ADD with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (ADD). "}};sim.ep.behaviors["SUB"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var b=get_value(sim.ep.states[s_expr[3]])<<0;var result=a-b;set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=a>>>31&&b>>>31;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var b=get_value(sim.ep.states[s_expr[3]])<<0;var result=a-b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU SUB with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (SUB). "}};sim.ep.behaviors["MUL"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var b=get_value(sim.ep.states[s_expr[3]])<<0;var result=a*b;set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=0;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var b=get_value(sim.ep.states[s_expr[3]])<<0;var result=a*b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU MUL with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (MUL). "}};sim.ep.behaviors["DIV"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var b=get_value(sim.ep.states[s_expr[3]])<<0;if(0==b){set_value(sim.ep.states[s_expr[1]],0);sim.ep.internal_states.alu_flags.flag_n=0;sim.ep.internal_states.alu_flags.flag_z=1;sim.ep.internal_states.alu_flags.flag_v=1;sim.ep.internal_states.alu_flags.flag_c=0;return}var result=Math.floor(a/b);set_value(sim.ep.states[s_expr[1]],result);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var b=get_value(sim.ep.states[s_expr[3]])<<0;if(0==b){return"ALU DIV zero by zero (oops!). "}var result=Math.floor(a/b);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU DIV with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (DIV). "}};sim.ep.behaviors["MOD"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var b=get_value(sim.ep.states[s_expr[3]])<<0;if(0==b){set_value(sim.ep.states[s_expr[1]],0);sim.ep.internal_states.alu_flags.flag_n=0;sim.ep.internal_states.alu_flags.flag_z=1;sim.ep.internal_states.alu_flags.flag_v=1;sim.ep.internal_states.alu_flags.flag_c=0;return}var result=a%b;set_value(sim.ep.states[s_expr[1]],result);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var b=get_value(sim.ep.states[s_expr[3]])<<0;if(0==b){return"ALU MOD zero by zero (oops!). "}var result=a%b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU MOD with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (MOD). "}};sim.ep.behaviors["LUI"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])<<16;set_value(sim.ep.states[s_expr[1]],result);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])<<16;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Load Upper Immediate with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (LUI). "}};sim.ep.behaviors["ADDU"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])>>>0;var b=get_value(sim.ep.states[s_expr[3]])>>>0;var result=a+b;set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=0;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])>>>0;var b=get_value(sim.ep.states[s_expr[3]])>>>0;var result=a+b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU ADDU with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (ADDU). "}};sim.ep.behaviors["SUBU"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])>>>0;var b=get_value(sim.ep.states[s_expr[3]])>>>0;var result=a-b;set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=0;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])>>>0;var b=get_value(sim.ep.states[s_expr[3]])>>>0;var result=a-b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU SUBU with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (SUBU). "}};sim.ep.behaviors["MULU"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])>>>0;var b=get_value(sim.ep.states[s_expr[3]])>>>0;var result=a*b;set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=0;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])>>>0;var b=get_value(sim.ep.states[s_expr[3]])>>>0;var result=a*b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU MULU with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (MULU). "}};sim.ep.behaviors["DIVU"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])>>>0;var b=get_value(sim.ep.states[s_expr[3]])>>>0;if(0==b){set_value(sim.ep.states[s_expr[1]],0);sim.ep.internal_states.alu_flags.flag_n=0;sim.ep.internal_states.alu_flags.flag_z=1;sim.ep.internal_states.alu_flags.flag_v=1;sim.ep.internal_states.alu_flags.flag_c=0;return}var result=Math.floor(a/b);set_value(sim.ep.states[s_expr[1]],result);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])>>>0;var b=get_value(sim.ep.states[s_expr[3]])>>>0;if(0==b){return"ALU DIVU zero by zero (oops!). "}var result=Math.floor(a/b);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU DIVU with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (DIVU). "}};sim.ep.behaviors["FADD"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]]);var b=get_value(sim.ep.states[s_expr[3]]);var result=hex2float(a)+hex2float(b);set_value(sim.ep.states[s_expr[1]],float32_to_uint(result));sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=0;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]]);var b=get_value(sim.ep.states[s_expr[3]]);var result=hex2float(a)+hex2float(b);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU FADD with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (FADD). "}};sim.ep.behaviors["FSUB"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]]);var b=get_value(sim.ep.states[s_expr[3]]);var result=hex2float(a)-hex2float(b);set_value(sim.ep.states[s_expr[1]],float32_to_uint(result));sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=0;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]]);var b=get_value(sim.ep.states[s_expr[3]]);var result=hex2float(a)-hex2float(b);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU FSUB with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (FSUB). "}};sim.ep.behaviors["FMUL"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]]);var b=get_value(sim.ep.states[s_expr[3]]);var result=hex2float(a)*hex2float(b);set_value(sim.ep.states[s_expr[1]],float32_to_uint(result));sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=0;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]]);var b=get_value(sim.ep.states[s_expr[3]]);var result=hex2float(a)*hex2float(b);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU FMUL with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (FMUL). "}};sim.ep.behaviors["FDIV"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]]);var b=get_value(sim.ep.states[s_expr[3]]);var result=hex2float(a)/hex2float(b);set_value(sim.ep.states[s_expr[1]],float32_to_uint(result));sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=0;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]]);var b=get_value(sim.ep.states[s_expr[3]]);var result=hex2float(a)-hex2float(b);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU FDIV with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (FDIV). "}};sim.ep.behaviors["FCVT"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])>>>0;var b=get_value(sim.ep.states[s_expr[3]]);var result=a;switch(b){case 1:result=hex2float(result);result=Math.trunc(result);break;case 2:result=hex2float(result);result=Math.round(result);break;case 4:result=result.toFixed(5);result=parseFloat(result);result=float2decimal(result);break;default:break}set_value(sim.ep.states[s_expr[1]],result);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=0;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])>>>0;var b=get_value(sim.ep.states[s_expr[3]]);var result=a;switch(b){case 1:result=hex2float(result);result=Math.trunc(result);break;case 2:result=hex2float(result);result=Math.round(result);break;case 4:result=result.toFixed(5);result=parseFloat(result);result=float2decimal(result);break;default:break}var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU FCVT with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (FCVT). "}};sim.ep.behaviors["FCLASS"]={nparameters:3,types:["E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])>>>0;var result=float_class(a);set_value(sim.ep.states[s_expr[1]],result);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=0;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[1]])>>>0;var result=float_class(a);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU FCLASS with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (FCLASS). "}};sim.ep.behaviors["PLUS1"]={nparameters:3,types:["E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var result=a+1;set_value(sim.ep.states[s_expr[1]],result>>>0)},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var result=a+1;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy to "+show_verbal(s_expr[1])+" "+show_verbal(s_expr[2])+" plus one with result "+show_value(result)+". "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[2])+" + 1"+" ("+show_value(result)+"). "}};sim.ep.behaviors["PLUS4"]={nparameters:3,types:["E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var result=a+4;set_value(sim.ep.states[s_expr[1]],result>>>0)},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var result=a+4;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy to "+show_verbal(s_expr[1])+" "+show_verbal(s_expr[2])+" plus four with result "+show_value(result)+". "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[2])+" + 4"+" ("+show_value(result)+"). "}};sim.ep.behaviors["SET_TT"]={nparameters:3,types:["E","I"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[1]])<<0;var b=parseInt(s_expr[2]);var m=Math.pow(2,b);var r=a|m;set_value(sim.ep.states[s_expr[1]],r);update_cpu_bus_fire(r,b)},verbal:function(s_expr){return""}};sim.ep.behaviors["RST_TT"]={nparameters:3,types:["E","I"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[1]])<<0;var b=parseInt(s_expr[2]);var m=Math.pow(2,b);var r=a&~m;set_value(sim.ep.states[s_expr[1]],r);update_cpu_bus_fire(r,b)},verbal:function(s_expr){return""}};sim.ep.behaviors["CHECK_RTD"]={nparameters:1,operation:function(s_expr){var number_active_tri=parseInt(simhw_sim_signal("TD").value)+parseInt(simhw_sim_signal("R").value);update_system_bus_fire(number_active_tri)},verbal:function(s_expr){return""}};sim.ep.behaviors["MBIT"]={nparameters:5,types:["X","X","I","I"],operation:function(s_expr){var sim_elto_dst=get_reference(s_expr[1]);var sim_elto_org=get_reference(s_expr[2]);var offset=parseInt(s_expr[3]);var size=parseInt(s_expr[4]);var n1=get_value(sim_elto_org).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(offset+size-1),size);set_value(sim_elto_dst,parseInt(n2,2))},verbal:function(s_expr){var sim_elto_dst=get_reference(s_expr[1]);var sim_elto_org=get_reference(s_expr[2]);var offset=parseInt(s_expr[3]);var size=parseInt(s_expr[4]);var n1=get_value(sim_elto_org).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(offset+size-1),size);var n3=parseInt(n2,2);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy from "+show_verbal(s_expr[2])+" to "+show_verbal(s_expr[1])+" value "+show_value(n3)+" (copied "+size+" bits from bit "+offset+"). "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[2])+" ("+show_value(n3)+", "+size+" bits from bit "+offset+"). "}};sim.ep.behaviors["MBIT_SN"]={nparameters:5,types:["S","E","E","I"],operation:function(s_expr){var base=0;var r=s_expr[3].split("/");if(1==r.length)base=get_value(sim.ep.states[s_expr[3]]);else if(typeof sim.ep.states[r[0]].value[r[1]]!="undefined")base=sim.ep.states[r[0]].value[r[1]];else if(typeof sim.ep.signals[r[1]].default_value!="undefined")base=sim.ep.signals[r[1]].default_value;else if(typeof sim.ep.states[r[1]].default_value!="undefined")base=sim.ep.states[r[1]].default_value;else ws_alert("WARN: undefined state/field pair -> "+r[0]+"/"+r[1]);var offset=parseInt(s_expr[4]);var n1=get_value(sim.ep.states[s_expr[2]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;var n3=n2.substr(31-(base+offset-1),offset);set_value(sim.ep.signals[s_expr[1]],parseInt(n3,2))},verbal:function(s_expr){var base=0;var r=s_expr[3].split("/");if(1==r.length)base=get_value(sim.ep.states[s_expr[3]]);else if(typeof sim.ep.states[r[0]].value[r[1]]!="undefined")base=sim.ep.states[r[0]].value[r[1]];else if(typeof sim.ep.signals[r[1]].default_value!="undefined")base=sim.ep.signals[r[1]].default_value;else if(typeof sim.ep.states[r[1]].default_value!="undefined")base=sim.ep.states[r[1]].default_value;else ws_alert("WARN: undefined state/field pair -> "+r[0]+"/"+r[1]);var offset=parseInt(s_expr[4]);var n1=get_value(sim.ep.states[s_expr[2]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;var n3=n2.substr(31-(base+offset-1),offset);var from_elto="";if(1==r.length)from_elto=show_verbal(s_expr[3]);else from_elto=show_verbal(s_expr[2])+"["+r[1]+"] ";var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy from "+from_elto+"into "+show_verbal(s_expr[1])+" "+"value "+parseInt(n3,2)+". "}return show_verbal(s_expr[1])+" = "+from_elto+" ("+parseInt(n3,2)+"). "}};sim.ep.behaviors["SBIT_SIGNAL"]={nparameters:4,types:["X","I","I"],operation:function(s_expr){sim_elto_dst=get_reference(s_expr[1]);var new_value=sim_elto_dst.value;var mask=1<>>0)},verbal:function(s_expr){sim_elto_dst=get_reference(s_expr[1]);var new_value=sim_elto_dst.value;var mask=1<>>0)}};sim.ep.behaviors["UPDATE_FLAG"]={nparameters:4,types:["X","X","I"],operation:function(s_expr){sim_elto_org=get_reference(s_expr[2]);sim_elto_dst=get_reference(s_expr[1]);var new_value=sim_elto_dst.value&~(1<>>0)},verbal:function(s_expr){sim_elto_org=get_reference(s_expr[2]);sim_elto_dst=get_reference(s_expr[1]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Update "+show_verbal(s_expr[2])+" to value "+sim_elto_org.value+". "}return show_verbal(s_expr[1])+"."+show_verbal(s_expr[3])+" = "+sim_elto_org.value+". "}};sim.ep.behaviors["MBITS"]={nparameters:8,types:["E","I","E","S","S","I","S"],operation:function(s_expr){var offset=parseInt(sim.ep.signals[s_expr[4]].value);var size=parseInt(sim.ep.signals[s_expr[5]].value);var n1=get_value(sim.ep.states[s_expr[3]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(offset+size-1),size);var n3="00000000000000000000000000000000".substring(0,32-n2.length)+n2;if("1"==sim.ep.signals[s_expr[7]].value&&"1"==n2.substr(0,1)){n3="11111111111111111111111111111111".substring(0,32-n2.length)+n2}set_value(sim.ep.states[s_expr[1]],parseInt(n3,2))},verbal:function(s_expr){var offset=parseInt(sim.ep.signals[s_expr[4]].value);var size=parseInt(sim.ep.signals[s_expr[5]].value);var n1=get_value(sim.ep.states[s_expr[3]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(offset+size-1),size);var n3="00000000000000000000000000000000".substring(0,32-n2.length)+n2;if("1"==sim.ep.signals[s_expr[7]].value&&"1"==n2.substr(0,1)){n3="11111111111111111111111111111111".substring(0,32-n2.length)+n2}n1=parseInt(n3,2);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return" Copy from "+show_verbal(s_expr[3])+" to "+show_verbal(s_expr[1])+" value "+show_value(n1)+" (copied "+size+" bits from bit "+offset+"). "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[3])+" ("+show_value(n1)+", "+size+" bits from bit "+offset+"). "}};sim.ep.behaviors["BSEL"]={nparameters:6,types:["E","I","I","E","I"],operation:function(s_expr){var posd=parseInt(s_expr[2]);var poso=parseInt(s_expr[5]);var len=parseInt(s_expr[3]);var n1=get_value(sim.ep.states[s_expr[4]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(poso+len)+1,len);var n3="00000000000000000000000000000000".substring(0,32-n2.length)+n2;var n4="00000000000000000000000000000000".substr(0,posd);n3=n3+n4;set_value(sim.ep.states[s_expr[1]],parseInt(n3,2))},verbal:function(s_expr){var posd=parseInt(s_expr[2]);var len=parseInt(s_expr[3]);var poso=parseInt(s_expr[5]);var n1=get_value(sim.ep.states[s_expr[4]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(poso+len)+1,len);var n3="00000000000000000000000000000000".substring(0,32-n2.length)+n2;var n4="00000000000000000000000000000000".substr(0,posd);n3=n3+n4;var n5=parseInt(n3,2);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy from "+show_verbal(s_expr[4])+" to "+show_verbal(s_expr[1])+" value "+show_value(n5)+" (copied "+len+" bits, from bit "+poso+" of "+s_expr[4]+" to bit "+posd+" of "+s_expr[1]+"). "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[4])+" ("+show_value(n5)+", "+len+" bits, from bit "+poso+" of "+s_expr[4]+" to bit "+posd+" of "+s_expr[1]+"). "}};sim.ep.behaviors["EXT_SIG"]={nparameters:3,types:["E","I"],operation:function(s_expr){var n1=get_value(sim.ep.states[s_expr[1]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;var n3=n2.substr(31-s_expr[2],31);var n4=n3;if("1"==n2[31-s_expr[2]]){n4="11111111111111111111111111111111".substring(0,32-n3.length)+n4}set_value(sim.ep.states[s_expr[1]],parseInt(n4,2))},verbal:function(s_expr){var n1=get_value(sim.ep.states[s_expr[1]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;var n3=n2.substr(31-s_expr[2],31);var n4=n3;if("1"==n2[31-s_expr[2]]){n4="11111111111111111111111111111111".substring(0,32-n3.length)+n4}var n5=parseInt(n4,2);return"Sign Extension with value "+show_value(n5)+". "}};sim.ep.behaviors["MOVE_BITS"]={nparameters:5,types:["S","I","I","S"],operation:function(s_expr){var posd=parseInt(s_expr[2]);var poso=0;var len=parseInt(s_expr[3]);var n1=sim.ep.signals[s_expr[4]].value.toString(2);n1="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n1=n1.substr(31-poso-len+1,len);var n2=sim.ep.signals[s_expr[1]].value.toString(2);n2="00000000000000000000000000000000".substring(0,32-n2.length)+n2;var m1=n2.substr(0,32-(posd+len));var m2=n2.substr(31-posd+1,posd);var n3=m1+n1+m2;set_value(sim.ep.signals[s_expr[1]],parseInt(n3,2))},verbal:function(s_expr){return""}};sim.ep.behaviors["MOVE_BITSE"]={nparameters:6,types:["S","I","I","E","I"],operation:function(s_expr){var posd=parseInt(s_expr[2]);var poso=parseInt(s_expr[5]);var len=parseInt(s_expr[3]);var n1=get_value(sim.ep.states[s_expr[4]]).toString(2);n1="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n1=n1.substr(31-poso-len+1,len);var n2=sim.ep.signals[s_expr[1]].value.toString(2);n2="00000000000000000000000000000000".substring(0,32-n2.length)+n2;var m1=n2.substr(0,32-(posd+len));var m2=n2.substr(31-posd+1,posd);var n3=m1+n1+m2;set_value(sim.ep.signals[s_expr[1]],parseInt(n3,2))},verbal:function(s_expr){return""}};sim.ep.behaviors["DECO"]={nparameters:1,operation:function(s_expr){sim.ep.states["INEX"].value=0;var oi=decode_instruction(sim.ep.internal_states.FIRMWARE,sim.ep.ctrl_states.ir,get_value(sim.ep.states["REG_IR"]));if(null==oi.oinstruction){ws_alert("ERROR: undefined instruction code in IR ("+"co:"+oi.op_code.toString(2)+", "+"cop:"+oi.cop_code.toString(2)+")");sim.ep.states["ROM_MUXA"].value=0;sim.ep.states["INEX"].value=1;return-1}var rom_addr=oi.op_code<<6;if(typeof oi.oinstruction.cop!="undefined"){rom_addr=rom_addr+oi.cop_code}if(typeof sim.ep.internal_states["ROM"][rom_addr]=="undefined"){ws_alert("ERROR: undefined rom address "+rom_addr+" in firmware");sim.ep.states["ROM_MUXA"].value=0;return-1}sim.ep.states["ROM_MUXA"].value=sim.ep.internal_states["ROM"][rom_addr];var val=get_value(sim.ep.states["DECO_INS"]);set_value(sim.ep.states["DECO_INS"],val+1);var pc=get_value(sim.ep.states["REG_PC"])-4;var decins=get_deco_from_pc(pc);set_value(sim.ep.states["REG_IR_DECO"],decins);show_dbg_ir(get_value(sim.ep.states["REG_IR_DECO"]))},verbal:function(s_expr){return"Decode instruction. "}};sim.ep.behaviors["FIRE"]={nparameters:2,types:["S"],operation:function(s_expr){if(sim.ep.internal_states.fire_stack.indexOf(s_expr[1])!=-1){return}sim.ep.internal_states.fire_stack.push(s_expr[1]);update_draw(sim.ep.signals[s_expr[1]],sim.ep.signals[s_expr[1]].value);if("L"==sim.ep.signals[s_expr[1]].type){update_state(s_expr[1])}sim.ep.internal_states.fire_stack.pop(s_expr[1])},verbal:function(s_expr){return""}};sim.ep.behaviors["FIRE_IFSET"]={nparameters:3,types:["S","I"],operation:function(s_expr){if(get_value(sim.ep.signals[s_expr[1]])!=parseInt(s_expr[2])){return}sim.ep.behaviors["FIRE"].operation(s_expr)},verbal:function(s_expr){return""}};sim.ep.behaviors["FIRE_IFCHANGED"]={nparameters:3,types:["S","X"],operation:function(s_expr){sim_elto=get_reference(s_expr[2]);if(sim_elto.changed==false){return}sim.ep.behaviors["FIRE"].operation(s_expr)},verbal:function(s_expr){return""}};sim.ep.behaviors["RESET_CHANGED"]={nparameters:2,types:["X"],operation:function(s_expr){sim_elto=get_reference(s_expr[1]);sim_elto.changed=false},verbal:function(s_expr){return""}};sim.ep.behaviors["CLOCK"]={nparameters:1,operation:function(s_expr){var new_maddr=null;var mcelto=null;var t0=performance.now();var val=get_value(sim.ep.states["CLK"]);set_value(sim.ep.states["CLK"],val+1);set_value(sim.ep.states["TTCPU"],0);new_maddr=get_value(sim.ep.states["REG_MICROADDR"]);mcelto=sim.ep.internal_states["MC"][new_maddr];if(typeof mcelto!=="undefined"&&false==mcelto.is_native){for(var i=0;i>>0},set_value:function(elto,value){var origin="";var r_value=main_memory_get_program_counter();if(r_value!=null){origin="PC=0x"+r_value.toString(16)}var melto={value:value>>>0,source_tracking:[origin],comments:null};var valref=main_memory_set(sim.ep.internal_states.MP,elto,melto);show_main_memory(sim.ep.internal_states.MP,elto,typeof valref==="undefined",true);return value}};sim.ep.internal_states.segments={};sim.ep.internal_states.MP_wc=0;sim.ep.internal_states.MP={};sim.ep.internal_states.CM_cfg=[];sim.ep.internal_states.CM=[];sim.ep.signals.MRDY={name:"MRDY",visible:true,type:"L",value:0,default_value:0,nbits:"1",depends_on:["CLK"],behavior:["FIRE_IFCHANGED MRDY C","FIRE_IFCHANGED MRDY C"],fire_name:["svg_p:tspan3916","svg_p:text3909"],draw_data:[[],["svg_p:path3895","svg_p:path3541"]],draw_name:[[],[]]};sim.ep.signals.R={name:"R",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; CHECK_RTD","MEM_READ BUS_AB BUS_DB BWA MRDY CLK; FIRE MRDY; CHECK_RTD"],fire_name:["svg_p:text3533-5-2","svg_p:text3713"],draw_data:[[],["svg_p:path3557","svg_p:path3571"]],draw_name:[[],[]]};sim.ep.signals.W={name:"W",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","MEM_WRITE BUS_AB BUS_DB BWA MRDY CLK; FIRE MRDY"],fire_name:["svg_p:text3533-5-08","svg_p:text3527","svg_p:text3431-7"],draw_data:[[],["svg_p:path3559","svg_p:path3575","svg_p:path3447-7"]],draw_name:[[],[]]};sim.ep.behaviors.MEM_READ={nparameters:6,types:["E","E","S","S","E"],operation:function(s_expr){var address=sim.ep.states[s_expr[1]].value;var dbvalue=sim.ep.states[s_expr[2]].value;var bw=sim.ep.signals[s_expr[3]].value;var clk=get_value(sim.ep.states[s_expr[5]]);sim.ep.signals[s_expr[4]].value=0;var remain=get_value(sim.ep.internal_states.MP_wc);if(typeof sim.ep.events.mem[clk-1]!="undefined"&&sim.ep.events.mem[clk-1]>0){remain=sim.ep.events.mem[clk-1]-1}var first_time=typeof sim.ep.events.mem[clk]=="undefined";sim.ep.events.mem[clk]=remain;if(remain>0){return}address=address&4294967292;var value=main_memory_getvalue(sim.ep.internal_states.MP,address);var full_redraw=false;if(typeof value==="undefined"){value=0;full_redraw=true}dbvalue=main_memory_fusionvalues(dbvalue,value,bw);sim.ep.states[s_expr[2]].value=dbvalue>>>0;sim.ep.signals[s_expr[4]].value=1;show_main_memory(sim.ep.internal_states.MP,address,full_redraw,false);if(first_time&&sim.ep.internal_states.CM.length>0){cache_memory_access(sim.ep.internal_states.CM[0],address,"read",clk)}},verbal:function(s_expr){var verbal="";var address=sim.ep.states[s_expr[1]].value;var dbvalue=sim.ep.states[s_expr[2]].value;var bw=sim.ep.signals[s_expr[3]].value;var clk=get_value(sim.ep.states[s_expr[5]]);var bw_type="word";if(0==(bw&12))bw_type="byte";else if(1==(bw&12))bw_type="half";var value=main_memory_getvalue(sim.ep.internal_states.MP,address);if(typeof value==="undefined")value=0;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){verbal="Try to read a "+bw_type+" from memory "+"at address 0x"+address.toString(16)+" with value 0x"+value.toString(16)+". "}verbal="Memory output = 0x"+value.toString(16)+" (Read a "+bw_type+" from 0x"+address.toString(16)+"). ";return verbal}};sim.ep.behaviors.MEM_WRITE={nparameters:6,types:["E","E","S","S","E"],operation:function(s_expr){var address=sim.ep.states[s_expr[1]].value;var dbvalue=sim.ep.states[s_expr[2]].value;var bw=sim.ep.signals[s_expr[3]].value;var clk=get_value(sim.ep.states[s_expr[5]]);sim.ep.signals[s_expr[4]].value=0;var remain=get_value(sim.ep.internal_states.MP_wc);if(typeof sim.ep.events.mem[clk-1]!="undefined"&&sim.ep.events.mem[clk-1]>0){remain=sim.ep.events.mem[clk-1]-1}var first_time=typeof sim.ep.events.mem[clk]=="undefined";sim.ep.events.mem[clk]=remain;if(remain>0){return}address=address&4294967292;var value=main_memory_getvalue(sim.ep.internal_states.MP,address);var full_redraw=false;if(typeof value==="undefined"){value=0;full_redraw=true}value=main_memory_fusionvalues(value,dbvalue,bw);var origin="";var r_value=main_memory_get_program_counter();if(r_value!=null){origin="PC=0x"+r_value.toString(16)}var melto={value:value>>>0,source_tracking:[origin],comments:null};var valref=main_memory_set(sim.ep.internal_states.MP,address,melto);sim.ep.signals[s_expr[4]].value=1;show_main_memory(sim.ep.internal_states.MP,address,full_redraw,true);if(first_time&&sim.ep.internal_states.CM.length>0){cache_memory_access(sim.ep.internal_states.CM[0],address,"write",clk)}},verbal:function(s_expr){var verbal="";var address=sim.ep.states[s_expr[1]].value;var dbvalue=sim.ep.states[s_expr[2]].value;var bw=sim.ep.signals[s_expr[3]].value;var clk=get_value(sim.ep.states[s_expr[5]]);var bw_type="word";if(0==(bw&12))bw_type="byte";else if(1==(bw&12))bw_type="half";var value=main_memory_getvalue(sim.ep.internal_states.MP,address);if(typeof value==="undefined")value=0;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){verbal="Try to write a "+bw_type+" to memory "+"at address 0x"+address.toString(16)+" with value "+value.toString(16)+". "}verbal="Memory[0x"+address.toString(16)+"] = "+"0x"+value.toString(16)+" (Write a "+bw_type+" to 0x"+address.toString(16)+"). ";return verbal}};sim.ep.behaviors.MEMORY_RESET={nparameters:1,operation:function(s_expr){sim.ep.events.mem={}},verbal:function(s_expr){return"Reset main memory (all values will be zeroes). "}};sim.ep.elements.memory={name:"Main memory",description:"Main memory subsystem",type:"subcomponent",belongs:"MEMORY",states:{addr:{ref:"BUS_AB"},data:{ref:"BUS_DB"},mrdy:{ref:"MRDY"}},signals:{be:{ref:"BWA"},r:{ref:"R"},w:{ref:"W"}},states_inputs:["addr","data"],states_outputs:["mrdy","data"],signals_inputs:["be","r","w"],signals_output:[]};sim.ep.components.IO={name:"IO",version:"1",abilities:["IO_TIMER"],details_name:["IO_STATS","IO_CONFIG"],details_fire:[["svg_p:text3775"],[]],write_state:function(vec){return vec},read_state:function(o,check){return false},get_state:function(reg){return null},get_value:function(elto){var associated_state=simhw_internalState_get("io_hash",elto);var value=get_value(simhw_sim_state(associated_state))>>>0;set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_signal("IOR"),1);compute_behavior("FIRE IOR");value=get_value(simhw_sim_state("BUS_DB"));return value},set_value:function(elto,value){var associated_state=simhw_internalState_get("io_hash",elto);set_value(simhw_sim_state(associated_state),value);set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_state("BUS_DB"),value);set_value(simhw_sim_signal("IOW"),1);compute_behavior("FIRE IOW");return value}};sim.ep.internal_states.io_int_factory=[];sim.ep.internal_states.io_int_factory[0]={period:0,probability:.5,accumulated:0,active:false};sim.ep.internal_states.io_int_factory[1]={period:0,probability:.5,accumulated:0,active:false};sim.ep.internal_states.io_int_factory[2]={period:0,probability:.5,accumulated:0,active:false};sim.ep.internal_states.io_int_factory[3]={period:0,probability:.5,accumulated:0,active:false};sim.ep.internal_states.io_int_factory[4]={period:0,probability:.5,accumulated:0,active:false};sim.ep.internal_states.io_int_factory[5]={period:0,probability:.5,accumulated:0,active:false};sim.ep.internal_states.io_int_factory[6]={period:0,probability:.5,accumulated:0,active:false};sim.ep.internal_states.io_int_factory[7]={period:0,probability:.5,accumulated:0,active:false};var IOSR_ID=4352;var IOCR_ID=4356;var IODR_ID=4360;sim.ep.internal_states.io_hash[IOSR_ID]="IOSR";sim.ep.internal_states.io_hash[IOCR_ID]="IOCR";sim.ep.internal_states.io_hash[IODR_ID]="IODR";sim.ep.states.IOSR={name:"IOSR",verbal:"IO State Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.IOCR={name:"IOCR",verbal:"IO Control Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.IODR={name:"IODR",verbal:"IO Data Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.signals.INT={name:"INT",visible:true,type:"L",value:0,default_value:0,nbits:"1",depends_on:["CLK"],behavior:["FIRE C","FIRE C"],fire_name:["svg_p:tspan4199"],draw_data:[[],["svg_p:path3809"]],draw_name:[[],[]]};sim.ep.signals.IORDY={name:"IORDY",visible:true,type:"L",value:0,default_value:0,nbits:"1",depends_on:["CLK"],behavior:["FIRE_IFCHANGED IORDY C","FIRE_IFCHANGED IORDY C"],fire_name:["svg_p:tspan4089","svg_p:path3793","svg_p:text3911"],draw_data:[[],["svg_p:path3897"]],draw_name:[[],[]]};sim.ep.signals.IO_IOR={name:"IO_IOR",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","IO_IOR BUS_AB BUS_DB IOSR IOCR IODR CLK; FIRE SBWA"],fire_name:["svg_p:tspan4173"],draw_data:[[],["svg_p:path3795","svg_p:path3733"]],draw_name:[[],[]]};sim.ep.signals.IO_IOW={name:"IO_IOW",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","IO_IOW BUS_AB BUS_DB IOSR IOCR IODR CLK; FIRE SBWA"],fire_name:["svg_p:text3785-0-6-0-5-5"],draw_data:[[],["svg_p:path3805","svg_p:path3733"]],draw_name:[[],[]]};sim.ep.signals.IO_IE={name:"IO_IE",visible:true,type:"L",value:1,default_value:1,nbits:"1",behavior:["NOP","IO_CHK_I CLK INT INTV; FIRE C"],fire_name:[],draw_data:[[],[]],draw_name:[[],[]]};sim.ep.signals.INTA={name:"INTA",visible:true,type:"L",value:1,default_value:0,nbits:"1",behavior:["NOP","INTA CLK INT INTA BUS_DB INTV; FIRE BW; FIRE C"],fire_name:["svg_p:text3785-0-6-0-5-5-1-1"],draw_data:[[],["svg_p:path3807","svg_p:path3737"]],draw_name:[[],[]]};sim.ep.behaviors.IO_IOR={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.ep.states[s_expr[1]]);var iosr=get_value(sim.ep.states[s_expr[3]]);var iocr=get_value(sim.ep.states[s_expr[4]]);var iodr=get_value(sim.ep.states[s_expr[5]]);if(bus_ab==IOSR_ID)set_value(sim.ep.states[s_expr[2]],iosr);if(bus_ab==IOCR_ID)set_value(sim.ep.states[s_expr[2]],iocr);if(bus_ab==IODR_ID)set_value(sim.ep.states[s_expr[2]],iodr)},verbal:function(s_expr){var verbal="";var bus_ab=get_value(sim.ep.states[s_expr[1]]);var iosr=get_value(sim.ep.states[s_expr[3]]);var iocr=get_value(sim.ep.states[s_expr[4]]);var iodr=get_value(sim.ep.states[s_expr[5]]);if(bus_ab==IOSR_ID)verbal="I/O device read at IOSR of value "+iosr+". ";if(bus_ab==IOCR_ID)verbal="I/O device read at IOCR of value "+iocr+". ";if(bus_ab==IODR_ID)verbal="I/O device read at IODR of value "+iodr+". ";return verbal}};sim.ep.behaviors.IO_IOW={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.ep.states[s_expr[1]]);var bus_db=get_value(sim.ep.states[s_expr[2]]);if(bus_ab!=IOSR_ID&&bus_ab!=IOCR_ID&&bus_ab!=IODR_ID){return}if(bus_ab==IOSR_ID)set_value(sim.ep.states[s_expr[3]],bus_db);if(bus_ab==IOCR_ID)set_value(sim.ep.states[s_expr[4]],bus_db);if(bus_ab==IODR_ID)set_value(sim.ep.states[s_expr[5]],bus_db);var iocr_id=get_value(sim.ep.states[s_expr[4]]);var iodr_id=get_value(sim.ep.states[s_expr[5]]);if(iocr_id<0||iocr_id>7)return;set_var(sim.ep.internal_states.io_int_factory[iocr_id].period,iodr_id);set_var(sim.ep.internal_states.io_int_factory[iocr_id].probability,1);if(0==iodr_id){set_var(sim.ep.internal_states.io_int_factory[iocr_id].probability,0)}},verbal:function(s_expr){var verbal="";var bus_ab=get_value(sim.ep.states[s_expr[1]]);var bus_db=get_value(sim.ep.states[s_expr[2]]);if(bus_ab==IOSR_ID)verbal="I/O device write at IOSR with value "+bus_db+". ";if(bus_ab==IOCR_ID)verbal="I/O device write at IOCR with value "+bus_db+". ";if(bus_ab==IODR_ID)verbal="I/O device write at IODR with value "+bus_db+". ";return verbal}};sim.ep.behaviors.IO_CHK_I={nparameters:4,types:["E","S","E"],operation:function(s_expr){var clk=get_value(sim.ep.states[s_expr[1]]);for(var i=sim.ep.internal_states.io_int_factory.length-1;i>=0;i--){if(get_var(sim.ep.internal_states.io_int_factory[i].period)==0)continue;if(get_var(sim.ep.internal_states.io_int_factory[i].active)==true){set_value(sim.ep.signals[s_expr[2]],1);set_value(sim.ep.states[s_expr[3]],i)}if(clk%get_var(sim.ep.internal_states.io_int_factory[i].period)==0){if(Math.random()>get_var(sim.ep.internal_states.io_int_factory[i].probability))continue;var acc=get_var(sim.ep.internal_states.io_int_factory[i].accumulated);set_var(sim.ep.internal_states.io_int_factory[i].accumulated,acc+1);set_var(sim.ep.internal_states.io_int_factory[i].active,true);if(typeof sim.ep.events.io[clk]=="undefined"){sim.ep.events.io[clk]=[]}sim.ep.events.io[clk].push(i);set_value(sim.ep.signals[s_expr[2]],1);set_value(sim.ep.states[s_expr[3]],i)}}},verbal:function(s_expr){return"Check I/O Interruption. "}};sim.ep.behaviors.INTA={nparameters:6,types:["E","S","S","E","E"],operation:function(s_expr){var clk=get_value(sim.ep.states[s_expr[1]]);if(typeof sim.ep.events.io[clk]!="undefined"){set_value(sim.ep.states[s_expr[4]],sim.ep.events.io[clk][0]);return}set_value(sim.ep.signals[s_expr[2]],0);set_value(sim.ep.states[s_expr[5]],0);for(var i=0;i>>0;set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_signal("IOR"),1);compute_behavior("FIRE IOR");value=get_value(simhw_sim_state("BUS_DB"));return value},set_value:function(elto,value){var associated_state=simhw_internalState_get("io_hash",elto);set_value(simhw_sim_state(associated_state),value);set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_state("BUS_DB"),value);set_value(simhw_sim_signal("IOW"),1);compute_behavior("FIRE IOW");return value}};sim.ep.internal_states.l3d_dim=4;sim.ep.internal_states.l3d_neltos=Math.pow(sim.ep.internal_states.l3d_dim,3);sim.ep.internal_states.l3d_state=Array.from({length:sim.ep.internal_states.l3d_neltos},(()=>({active:false})));sim.ep.internal_states.l3d_frame="0".repeat(sim.ep.internal_states.l3d_neltos);var L3DSR_ID=8448;var L3DCR_ID=8452;var L3DDR_ID=8456;sim.ep.internal_states.io_hash[L3DSR_ID]="L3DSR";sim.ep.internal_states.io_hash[L3DCR_ID]="L3DCR";sim.ep.internal_states.io_hash[L3DDR_ID]="L3DDR";sim.ep.states.L3DSR={name:"L3DSR",verbal:"L3D State Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.L3DCR={name:"L3DCR",verbal:"L3D Control Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.L3DDR={name:"L3DDR",verbal:"L3D Data Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.signals.L3D_IOR={name:"L3D_IOR",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","L3D_IOR BUS_AB BUS_DB L3DSR L3DCR L3DDR CLK; FIRE SBWA"],fire_name:["svg_p:tspan4173"],draw_data:[[],["svg_p:path3795","svg_p:path3733"]],draw_name:[[],[]]};sim.ep.signals.L3D_IOW={name:"L3D_IOW",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","L3D_IOW BUS_AB BUS_DB L3DSR L3DCR L3DDR CLK; FIRE SBWA; L3D_SYNC"],fire_name:["svg_p:text3785-0-6-0-5-5"],draw_data:[[],["svg_p:path3805","svg_p:path3733"]],draw_name:[[],[]]};sim.ep.behaviors.L3D_IOR={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.ep.states[s_expr[1]]);var iosr=get_value(sim.ep.states[s_expr[3]]);var iocr=get_value(sim.ep.states[s_expr[4]]);var iodr=get_value(sim.ep.states[s_expr[5]]);if(bus_ab==L3DCR_ID){set_value(sim.ep.states[s_expr[2]],iocr)}if(bus_ab==L3DDR_ID){set_value(sim.ep.states[s_expr[2]],iodr)}if(bus_ab==L3DSR_ID){var x=(iodr&4278190080)>>24;var y=(iodr&16711680)>>16;var z=(iodr&65280)>>8;var p=z*Math.pow(sim.ep.internal_states.l3d_dim,2)+y*sim.ep.internal_states.l3d_dim+x;var s=get_var(sim.ep.internal_states.l3d_state[p].active);set_value(sim.ep.states[s_expr[2]],s)}},verbal:function(s_expr){var verbal="";var bus_ab=get_value(sim.ep.states[s_expr[1]]);var iosr=get_value(sim.ep.states[s_expr[3]]);var iocr=get_value(sim.ep.states[s_expr[4]]);var iodr=get_value(sim.ep.states[s_expr[5]]);if(bus_ab==L3DSR_ID)verbal="I/O device read at L3DSR of value "+iosr+". ";if(bus_ab==L3DCR_ID)verbal="I/O device read at L3DCR of value "+iocr+". ";if(bus_ab==L3DDR_ID)verbal="I/O device read at L3DDR of value "+iodr+". ";return verbal}};sim.ep.behaviors.L3D_IOW={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.ep.states[s_expr[1]]);var bus_db=get_value(sim.ep.states[s_expr[2]]);if(bus_ab!=L3DSR_ID&&bus_ab!=L3DCR_ID&&bus_ab!=L3DDR_ID){return}if(bus_ab==L3DSR_ID){set_value(sim.ep.states[s_expr[3]],bus_db)}if(bus_ab==L3DDR_ID){set_value(sim.ep.states[s_expr[5]],bus_db)}if(bus_ab==L3DCR_ID){set_value(sim.ep.states[s_expr[4]],bus_db);var x=(bus_db&4278190080)>>24;var y=(bus_db&16711680)>>16;var z=(bus_db&65280)>>8;var p=z*Math.pow(sim.ep.internal_states.l3d_dim,2)+y*sim.ep.internal_states.l3d_dim+x;var s=(bus_db&255)!=0;set_var(sim.ep.internal_states.l3d_state[p].active,s)}},verbal:function(s_expr){var verbal="";var bus_ab=get_value(sim.ep.states[s_expr[1]]);var bus_db=get_value(sim.ep.states[s_expr[2]]);if(bus_ab==L3DSR_ID)verbal="I/O device write at L3DSR with value "+bus_db+". ";if(bus_ab==L3DCR_ID)verbal="I/O device write at L3DCR with value "+bus_db+". ";if(bus_ab==L3DDR_ID)verbal="I/O device write at L3DDR with value "+bus_db+". ";return verbal}};sim.ep.behaviors.L3D_RESET={nparameters:1,operation:function(s_expr){sim.ep.events.l3d={};var n=sim.ep.internal_states.l3d_state.length;for(var i=0;i>>0;set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_signal("IOR"),1);compute_behavior("FIRE IOR");value=get_value(simhw_sim_state("BUS_DB"));return value},set_value:function(elto,value){var associated_state=simhw_internalState_get("io_hash",elto);set_value(simhw_sim_state(associated_state),value);set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_state("BUS_DB"),value);set_value(simhw_sim_signal("IOW"),1);compute_behavior("FIRE IOW");return value}};sim.ep.internal_states.ledm_dim=24;sim.ep.internal_states.ledm_neltos=Math.pow(sim.ep.internal_states.ledm_dim,2);sim.ep.internal_states.ledm_state=Array.from({length:sim.ep.internal_states.ledm_neltos},(()=>({color:0})));sim.ep.internal_states.ledm_colors=colors_clone("");sim.ep.internal_states.ledm_frame="0".repeat(sim.ep.internal_states.ledm_neltos);var LEDMSR_ID=12544;var LEDMCR_ID=12548;var LEDMDR_ID=12552;sim.ep.internal_states.io_hash[LEDMSR_ID]="LEDMSR";sim.ep.internal_states.io_hash[LEDMCR_ID]="LEDMCR";sim.ep.internal_states.io_hash[LEDMDR_ID]="LEDMDR";sim.ep.states.LEDMSR={name:"LEDMSR",verbal:"LEDM State Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.LEDMCR={name:"LEDMCR",verbal:"LEDM Control Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.LEDMDR={name:"LEDMDR",verbal:"LEDM Data Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.signals.LEDM_IOR={name:"LEDM_IOR",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","LEDM_IOR BUS_AB BUS_DB LEDMSR LEDMCR LEDMDR CLK; FIRE SBWA"],fire_name:["svg_p:tspan4173"],draw_data:[[],["svg_p:path3795","svg_p:path3733"]],draw_name:[[],[]]};sim.ep.signals.LEDM_IOW={name:"LEDM_IOW",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","LEDM_IOW BUS_AB BUS_DB LEDMSR LEDMCR LEDMDR CLK; FIRE SBWA; LEDM_SYNC"],fire_name:["svg_p:text3785-0-6-0-5-5"],draw_data:[[],["svg_p:path3805","svg_p:path3733"]],draw_name:[[],[]]};sim.ep.behaviors.LEDM_IOR={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.ep.states[s_expr[1]]);var iosr=get_value(sim.ep.states[s_expr[3]]);var iocr=get_value(sim.ep.states[s_expr[4]]);var iodr=get_value(sim.ep.states[s_expr[5]]);if(bus_ab==LEDMCR_ID){set_value(sim.ep.states[s_expr[2]],iocr)}if(bus_ab==LEDMDR_ID){set_value(sim.ep.states[s_expr[2]],iodr)}if(bus_ab==LEDMSR_ID){var x=(iodr&4278190080)>>24;var y=(iodr&16711680)>>16;var p=y*sim.ep.internal_states.ledm_dim+x;var s=get_var(sim.ep.internal_states.ledm_state[p].color);set_value(sim.ep.states[s_expr[2]],s)}},verbal:function(s_expr){var verbal="";var bus_ab=get_value(sim.ep.states[s_expr[1]]);var iosr=get_value(sim.ep.states[s_expr[3]]);var iocr=get_value(sim.ep.states[s_expr[4]]);var iodr=get_value(sim.ep.states[s_expr[5]]);if(bus_ab==LEDMSR_ID)verbal="I/O device read at LEDMSR of value "+iosr+". ";if(bus_ab==LEDMCR_ID)verbal="I/O device read at LEDMCR of value "+iocr+". ";if(bus_ab==LEDMDR_ID)verbal="I/O device read at LEDMDR of value "+iodr+". ";return verbal}};sim.ep.behaviors.LEDM_IOW={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.ep.states[s_expr[1]]);var bus_db=get_value(sim.ep.states[s_expr[2]]);switch(bus_ab){case LEDMSR_ID:set_value(sim.ep.states[s_expr[3]],bus_db);break;case LEDMDR_ID:set_value(sim.ep.states[s_expr[5]],bus_db);break;case LEDMCR_ID:set_value(sim.ep.states[s_expr[4]],bus_db);break;default:break}if(LEDMCR_ID==bus_ab){var dr=get_value(sim.ep.states[s_expr[5]]);if(16&bus_db){var x=(dr&4278190080)>>24;var y=(dr&16711680)>>16;var s=dr&255;set_value(sim.ep.states[s_expr[3]],1);if(x>=sim.ep.internal_states.ledm_dim&&y>=sim.ep.internal_states.ledm_dim){set_value(sim.ep.states[s_expr[3]],-1);return}var p=y*sim.ep.internal_states.ledm_dim+x;set_var(sim.ep.internal_states.ledm_state[p].color,s)}if(32&bus_db){set_value(sim.ep.states[s_expr[3]],1);var s=0;var neltos=sim.ep.internal_states.ledm_neltos;for(var p=0;p>0);set_var(sim.ep.internal_states.ledm_state[p+1].color,(s&65280)>>8);set_var(sim.ep.internal_states.ledm_state[p+2].color,(s&16711680)>>16);set_var(sim.ep.internal_states.ledm_state[p+3].color,(s&4278190080)>>24)}}if(64&bus_db){set_value(sim.ep.states[s_expr[3]],1);var s=0;var c="";var neltos=sim.ep.internal_states.ledm_colors.length;for(var p=0;p>>8;s=s.toString(16);c="#"+simcoreui_pack(s,6);sim.ep.internal_states.ledm_colors[p]=c}neltos=sim.ep.internal_states.ledm_neltos;for(var p=0;p>24;var y=(dr&16711680)>>16;var s=dr&255;verbal="I/O device write at LEDMCR with value "+bus_db+" (set pixel x:"+x+", y:"+y+", with color:"+s+"). "}if(64&bus_db){verbal="I/O device write at LEDMCR with value "+bus_db+" (set color palette at:"+bus_db+"). "}break;default:break}return verbal}};sim.ep.behaviors.LEDM_RESET={nparameters:1,operation:function(s_expr){sim.ep.events.ledm={};sim.ep.internal_states.ledm_colors=colors_clone("");for(var i=0;i>>0;if(value!=0){vec.CPU["R"+i]={type:"register",default_value:0,id:"R"+i,op:"=",value:"0x"+value.toString(16)}}}for(var i=0;i>>0;if(value!=0){vec.CPU[internal_reg[i]]={type:"register",default_value:0,id:internal_reg[i],op:"=",value:"0x"+value.toString(16)}}}return vec},read_state:function(vec,check){if(typeof vec.CPU=="undefined")vec.CPU={};var key=check["id"].toUpperCase().trim();var val=parseInt(check["value"]).toString(16);if("REGISTER"==check["type"].toUpperCase().trim()){vec.CPU[key]={type:"register",default_value:0,id:key,op:check["condition"],value:"0x"+val};return true}return false},get_state:function(reg){var r_reg=reg.toUpperCase().trim();if(typeof sim.poc.states["REG_"+r_reg]!="undefined"){var value=get_value(sim.poc.states["REG_"+r_reg])>>>0;return"0x"+value.toString(16)}r_reg=r_reg.replace("R","");var index=parseInt(r_reg);if(typeof sim.poc.states.BR[index]!="undefined"){var value=get_value(sim.poc.states.BR[index])>>>0;return"0x"+value.toString(16)}return null},get_value:function(elto){if(Number.isInteger(elto))index=elto;else index=parseInt(elto);if(isNaN(index))return get_value(simhw_sim_state(elto))>>>0;return get_value(simhw_sim_states().BR[index])>>>0},set_value:function(elto,value){var pc_name=simhw_sim_ctrlStates_get().pc.state;if(Number.isInteger(elto))index=elto;else index=parseInt(elto);if(isNaN(index)){set_value(simhw_sim_state(elto),value);if(pc_name===elto){show_asmdbg_pc()}return value}return set_value(simhw_sim_states().BR[index],value)}};sim.poc.ctrl_states.pc={name:"PC",state:"REG_PC",is_pointer:true};sim.poc.ctrl_states.sp={name:"SP",state:"BR.29",is_pointer:true};sim.poc.ctrl_states.fp={name:"FP",state:"BR.30",is_pointer:true};sim.poc.ctrl_states.ir={name:"IR",state:"REG_IR",default_eltos:{co:{begin:0,end:5,length:6},cop:{begin:27,end:31,length:5}},is_pointer:false};sim.poc.ctrl_states.mpc={name:"mPC",state:"REG_MICROADDR",is_pointer:false};sim.poc.internal_states.MC={};sim.poc.internal_states.ROM={};sim.poc.internal_states.FIRMWARE=ws_empty_firmware;sim.poc.internal_states.io_hash={};sim.poc.internal_states.fire_stack=[];sim.poc.internal_states.tri_state_names=["T1","T2","T3","T6","T8","T9","T10","T11","T12"];sim.poc.internal_states.fire_visible={databus:false,internalbus:false};sim.poc.internal_states.filter_states=["REG_IR_DECO,col-12","REG_IR,col-auto","REG_PC,col-auto","REG_SR,col-auto","REG_RT1,col-auto","REG_MAR,col-auto","REG_MBR,col-auto","REG_MICROADDR,col-auto"];sim.poc.internal_states.filter_signals=["A0,0","B,0","C,0","SELA,5","SELB,5","SELC,2","SELCOP,0","MRA,0","MRB,0","MRC,0","MC,0","C0,0","C1,0","C2,0","C3,0","C4,0","C7,0","T1,0","T2,0","T3,0","T6,0","T8,0","T9,0","T10,0","T11,0","M1,0","M7,0","MA,0","MB,0","LC,0","SE,0","SIZE,0","OFFSET,0","BW,0","R,0","W,0","TA,0","TD,0","IOR,0","IOW,0","TEST_I,0","TEST_U,0"];sim.poc.internal_states.alu_flags={flag_n:0,flag_z:0,flag_v:0,flag_c:0};sim.poc.states.BR=[];sim.poc.states.BR[0]={name:"R0",verbal:"Register 0",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[1]={name:"R1",verbal:"Register 1",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[2]={name:"R2",verbal:"Register 2",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[3]={name:"R3",verbal:"Register 3",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[4]={name:"R4",verbal:"Register 4",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[5]={name:"R5",verbal:"Register 5",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[6]={name:"R6",verbal:"Register 6",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[7]={name:"R7",verbal:"Register 7",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[8]={name:"R8",verbal:"Register 8",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[9]={name:"R9",verbal:"Register 9",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[10]={name:"R10",verbal:"Register 10",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[11]={name:"R11",verbal:"Register 11",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[12]={name:"R12",verbal:"Register 12",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[13]={name:"R13",verbal:"Register 13",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[14]={name:"R14",verbal:"Register 14",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[15]={name:"R15",verbal:"Register 15",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[16]={name:"R16",verbal:"Register 16",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[17]={name:"R17",verbal:"Register 17",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[18]={name:"R18",verbal:"Register 18",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[19]={name:"R19",verbal:"Register 19",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[20]={name:"R20",verbal:"Register 20",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[21]={name:"R21",verbal:"Register 21",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[22]={name:"R22",verbal:"Register 22",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[23]={name:"R23",verbal:"Register 23",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[24]={name:"R24",verbal:"Register 24",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[25]={name:"R25",verbal:"Register 25",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[26]={name:"R26",verbal:"Register 26",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[27]={name:"R27",verbal:"Register 27",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[28]={name:"R28",verbal:"Register 28",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[29]={name:"R29",verbal:"Register 29",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[30]={name:"R30",verbal:"Register 30",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[31]={name:"R31",verbal:"Register 31",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[32]={name:"R32",verbal:"Register 32",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[33]={name:"R33",verbal:"Register 33",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[34]={name:"R34",verbal:"Register 34",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[35]={name:"R35",verbal:"Register 35",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[36]={name:"R36",verbal:"Register 36",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[37]={name:"R37",verbal:"Register 37",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[38]={name:"R38",verbal:"Register 38",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[39]={name:"R39",verbal:"Register 39",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[40]={name:"R40",verbal:"Register 40",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[41]={name:"R41",verbal:"Register 41",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[42]={name:"R42",verbal:"Register 42",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[43]={name:"R43",verbal:"Register 43",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[44]={name:"R44",verbal:"Register 44",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[45]={name:"R45",verbal:"Register 45",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[46]={name:"R46",verbal:"Register 46",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[47]={name:"R47",verbal:"Register 47",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[48]={name:"R48",verbal:"Register 48",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[49]={name:"R49",verbal:"Register 49",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[50]={name:"R50",verbal:"Register 50",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[51]={name:"R51",verbal:"Register 51",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[52]={name:"R52",verbal:"Register 52",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[53]={name:"R53",verbal:"Register 53",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[54]={name:"R54",verbal:"Register 54",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[55]={name:"R55",verbal:"Register 55",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[56]={name:"R56",verbal:"Register 56",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[57]={name:"R57",verbal:"Register 57",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[58]={name:"R58",verbal:"Register 58",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[59]={name:"R59",verbal:"Register 59",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[60]={name:"R60",verbal:"Register 60",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[61]={name:"R61",verbal:"Register 61",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[62]={name:"R62",verbal:"Register 62",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[63]={name:"R63",verbal:"Register 63",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["REG_PC"]={name:"PC",verbal:"Program Counter Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["REG_MAR"]={name:"MAR",verbal:"Memory Address Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["REG_MBR"]={name:"MBR",verbal:"Memory Data Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["REG_IR"]={name:"IR",verbal:"Instruction Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["REG_SR"]={name:"SR",verbal:"State Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["REG_RT1"]={name:"RT1",verbal:"Temporal Register 1",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["BUS_IB"]={name:"I_BUS",verbal:"Internal Bus",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["BUS_AB"]={name:"A_BUS",verbal:"Address Bus",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["BUS_CB"]={name:"C_BUS",verbal:"Control Bus",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["BUS_DB"]={name:"D_BUS",verbal:"Data Bus",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["RA_T9"]={name:"RA_T9",verbal:"Input of T9 Tristate",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["RB_T10"]={name:"RB_T10",verbal:"Input of T10 Tristate",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["HPC_T12"]={name:"HPC_T12",verbal:"Input of T12 Tristate",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["SELEC_T3"]={name:"SELEC_T3",verbal:"Input of T3 Tristate",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["ALU_T6"]={name:"ALU_T6",verbal:"Input of T6 Tristate",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["MA_ALU"]={name:"MA_ALU",verbal:"Input ALU via MA",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["MB_ALU"]={name:"MB_ALU",verbal:"Input ALU via MB",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["FLAG_C"]={name:"FLAG_C",verbal:"Carry Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.poc.states["FLAG_V"]={name:"FLAG_V",verbal:"Overflow Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.poc.states["FLAG_N"]={name:"FLAG_N",verbal:"Negative Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.poc.states["FLAG_Z"]={name:"FLAG_Z",verbal:"Zero Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.poc.states["FLAG_I"]={name:"FLAG_I",verbal:"Interruption Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.poc.states["FLAG_U"]={name:"FLAG_U",verbal:"User Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.poc.states["REG_MICROADDR"]={name:"µADDR",verbal:"Microaddress Register",visible:true,nbits:"12",value:0,default_value:0,draw_data:["svg_cu:text4667"]};sim.poc.states["REG_MICROINS"]={name:"µINS",verbal:"Microinstruction Register",visible:true,nbits:"77",value:{},default_value:{},draw_data:[]};sim.poc.states["FETCH"]={name:"FETCH",verbal:"Input Fetch",visible:false,nbits:"12",value:0,default_value:0,draw_data:[]};sim.poc.states["ROM_MUXA"]={name:"ROM_MUXA",verbal:"Input ROM",visible:false,nbits:"12",value:0,default_value:0,draw_data:[]};sim.poc.states["SUM_ONE"]={name:"SUM_ONE",verbal:"Input next microinstruction",visible:false,nbits:"12",value:1,default_value:1,draw_data:[]};sim.poc.states["MUXA_MICROADDR"]={name:"MUXA_MICROADDR",verbal:"Input microaddress",visible:false,nbits:"12",value:0,default_value:0,draw_data:[]};sim.poc.states["MUXC_MUXB"]={name:"MUXC_MUXB",verbal:"Output of MUX C",visible:false,nbits:"1",value:0,default_value:0,draw_data:[]};sim.poc.states["INEX"]={name:"INEX",verbal:"Illegal Instruction Exception",visible:false,nbits:"1",value:0,default_value:0,draw_data:[]};sim.poc.states["BS_M1"]={name:"BS_M1",verbal:"from Memory",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["BS_TD"]={name:"BS_TD",verbal:"Memory",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["INTV"]={name:"INTV",verbal:"Interruption Vector",visible:false,nbits:"8",value:0,default_value:0,draw_data:[]};sim.poc.states["M1_C1"]={name:"M1_C1",verbal:"Input of Memory Data Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["M7_C7"]={name:"M7_C7",verbal:"Input of State Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["VAL_ZERO"]={name:"VAL_ZERO",verbal:"Wired Zero",visible:false,nbits:"1",value:0,default_value:0,draw_data:[]};sim.poc.states["VAL_ONE"]={name:"VAL_ONE",verbal:"Wired One",visible:false,nbits:"32",value:1,default_value:1,draw_data:[]};sim.poc.states["VAL_FOUR"]={name:"VAL_FOUR",verbal:"Wired Four",visible:false,nbits:"32",value:4,default_value:4,draw_data:[]};sim.poc.states["REG_IR_DECO"]={name:"IR_DECO",verbal:"Instruction Decoded",visible:true,nbits:"0",value:0,default_value:0,draw_data:[]};sim.poc.states["DECO_INS"]={name:"DECO_INS",verbal:"Instruction decoded in binary",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["CLK"]={name:"CLK",verbal:"Clock",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["ACC_TIME"]={name:"ACC_TIME",verbal:"Accumulated CPU time",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["TTCPU"]={name:"TTCPU",verbal:"Several Tristates to the internal data bus in CPU activated",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["ACC_PWR"]={name:"ACC_PWR",verbal:"Accumulated Energy Consumption",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.signals["C"]={name:"C",visible:true,type:"L",value:0,default_value:0,nbits:"4",behavior:["MV MUXC_MUXB VAL_ZERO; FIRE_IFCHANGED B MUXC_MUXB; RESET_CHANGED MUXC_MUXB","MBIT MUXC_MUXB INT 0 1; FIRE_IFCHANGED B MUXC_MUXB; RESET_CHANGED MUXC_MUXB","MBIT MUXC_MUXB IORDY 0 1; FIRE_IFCHANGED B MUXC_MUXB; RESET_CHANGED MUXC_MUXB","MBIT MUXC_MUXB MRDY 0 1; FIRE_IFCHANGED B MUXC_MUXB; RESET_CHANGED MUXC_MUXB","MBIT MUXC_MUXB REG_SR 0 1; FIRE_IFCHANGED B MUXC_MUXB; RESET_CHANGED MUXC_MUXB","MBIT MUXC_MUXB REG_SR 1 1; FIRE_IFCHANGED B MUXC_MUXB; RESET_CHANGED MUXC_MUXB","MBIT MUXC_MUXB REG_SR 28 1; FIRE_IFCHANGED B MUXC_MUXB; RESET_CHANGED MUXC_MUXB","MBIT MUXC_MUXB REG_SR 29 1; FIRE_IFCHANGED B MUXC_MUXB; RESET_CHANGED MUXC_MUXB","MBIT MUXC_MUXB REG_SR 30 1; FIRE_IFCHANGED B MUXC_MUXB; RESET_CHANGED MUXC_MUXB","MBIT MUXC_MUXB REG_SR 31 1; FIRE_IFCHANGED B MUXC_MUXB; RESET_CHANGED MUXC_MUXB","MV MUXC_MUXB INEX; FIRE_IFCHANGED B MUXC_MUXB; RESET_CHANGED MUXC_MUXB"],fire_name:["svg_cu:text3410"],draw_data:[["svg_cu:path3108"],["svg_cu:path3062"],["svg_cu:path3060"],["svg_cu:path3136"],["svg_cu:path3482"],["svg_cu:path3480"],["svg_cu:path3488"],["svg_cu:path3486"],["svg_cu:path3484"],["svg_cu:path3484-9"],["svg_cu:path3108-3","svg_cu:path3260-3-8-6","svg_cu:path3260-3-8","svg_cu:path3260-3"]],draw_name:[["svg_cu:path3496","svg_cu:path3414","svg_cu:path3194-08"]]};sim.poc.signals["B"]={name:"B",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV A1 MUXC_MUXB; FIRE A1","NOT_ES A1 MUXC_MUXB; FIRE A1"],depends_on:["CLK"],fire_name:["svg_cu:text3408"],draw_data:[["svg_cu:path3094-7","svg_cu:path3100-8-7","svg_cu:path3198-7","svg_cu:path3200-1"],["svg_cu:path3392","svg_cu:path3372","svg_cu:path3390","svg_cu:path3384","svg_cu:path3108-1","svg_cu:path3100-8-7","svg_cu:path3200-1","svg_cu:path3386"]],draw_name:[[],["svg_cu:path3194-0","svg_cu:path3138-8","svg_cu:path3498-6"]]};sim.poc.signals["A0"]={name:"A0",visible:false,type:"L",value:0,default_value:0,nbits:"1",behavior:["SBIT_SIGNAL A0A1 0 1; FIRE A0A1","SBIT_SIGNAL A0A1 1 1; FIRE A0A1"],depends_on:["CLK"],fire_name:["svg_cu:text3406"],draw_data:[["svg_cu:path3096"],["svg_cu:path3096"]],draw_name:[[],["svg_cu:path3138-8-1","svg_cu:path3098-2","svg_cu:path3124-2-5"]]};sim.poc.signals["A1"]={name:"A1",visible:false,type:"L",value:0,default_value:0,nbits:"1",behavior:["SBIT_SIGNAL A0A1 0 0; FIRE A0A1","SBIT_SIGNAL A0A1 1 0; FIRE A0A1"],depends_on:["CLK"],fire_name:[],draw_data:[["svg_cu:path3094"],["svg_cu:path3094"]],draw_name:[[]]};sim.poc.signals["A0A1"]={name:"A0A1",visible:true,type:"L",value:0,default_value:0,nbits:"2",behavior:["PLUS1 MUXA_MICROADDR REG_MICROADDR","CP_FIELD MUXA_MICROADDR REG_MICROINS/MADDR","MV MUXA_MICROADDR ROM_MUXA","MV MUXA_MICROADDR FETCH"],depends_on:["CLK"],fire_name:[],draw_data:[["svg_cu:path3102","svg_cu:path3100","svg_cu:path3098","svg_cu:path3100-9","svg_cu:path3088","svg_cu:path3082"],["svg_cu:path3104","svg_cu:path3134","svg_cu:path3500","svg_cu:path3416","svg_cu:path3124-2-4","svg_cu:path3124-2"],["svg_cu:path3504","svg_cu:path3100-8","svg_cu:path3234-9"],["svg_cu:path3124"]],draw_name:[[]]};sim.poc.signals["C0"]={name:"C0",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","MV REG_MAR BUS_IB"],fire_name:["svg_p:text3077"],draw_data:[["svg_p:path3081"]],draw_name:[["svg_p:path3075"]]};sim.poc.signals["C1"]={name:"C1",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","MV REG_MBR M1_C1"],fire_name:["svg_p:text3079"],draw_data:[["svg_p:path3055"]],draw_name:[["svg_p:path3073"]]};sim.poc.signals["C2"]={name:"C2",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","MV REG_PC BUS_IB; UPDATEDPC"],fire_name:["svg_p:text3179"],draw_data:[["svg_p:path3217"]],draw_name:[["svg_p:path3177"]]};sim.poc.signals["C3"]={name:"C3",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","MV REG_IR BUS_IB; DECO; FIRE_IFSET C 10"],fire_name:["svg_p:text3439"],draw_data:[["svg_p:path3339","svg_p:path3913-4"]],draw_name:[["svg_p:path3337"]]};sim.poc.signals["C4"]={name:"C4",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","MV REG_RT1 BUS_IB"],fire_name:["svg_p:tspan482"],draw_data:[["svg_p:path3339-4"]],draw_name:[["svg_p:path3337-0"]]};sim.poc.signals["C7"]={name:"C7",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","MV REG_SR M7_C7"],fire_name:["svg_p:text3655"],draw_data:[["svg_p:path3651-9"]],draw_name:[["svg_p:path3681"]]};sim.poc.signals["TA"]={name:"TA",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","MV BUS_AB REG_MAR"],fire_name:["svg_p:text3091"],draw_data:[["svg_p:path3083","svg_p:path3089","svg_p:path3597","svg_p:path3513","svg_p:path3601","svg_p:path3601-2","svg_p:path3187","svg_p:path3087","svg_p:path2995","svg_p:path3535"]],draw_name:[["svg_p:path3085"]]};sim.poc.signals["TD"]={name:"TD",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; CHECK_RTD","MV BUS_DB REG_MBR; FIRE R; FIRE W; CHECK_RTD"],fire_name:["svg_p:text3103"],draw_data:[["svg_p:path3093","svg_p:path3101","svg_p:path3587","svg_p:path3419-8","svg_p:path3071","svg_p:path3099","svg_p:path3097","svg_p:path3559-5","svg_p:path3419-1-0","svg_p:path3583","svg_p:path3419-1","svg_p:path3491","svg_p:path3641","svg_p:path3541"]],draw_name:[["svg_p:path3095"]]};sim.poc.signals["T1"]={name:"T1",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 0","MV BUS_IB REG_MBR; FIRE M7; FIRE M1; SET_TT TTCPU 0"],fire_name:["svg_p:text3105"],draw_data:[["svg_p:path3065","svg_p:path3071","svg_p:path3069","svg_p:path3049","svg_p:path3063-9","svg_p:path3071"]],draw_name:[["svg_p:path3067"]]};sim.poc.signals["T2"]={name:"T2",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 1","MV BUS_IB REG_PC; FIRE M7; FIRE M1; SET_TT TTCPU 1"],fire_name:["svg_p:text3449"],draw_data:[["svg_p:path3195","svg_p:path3199","svg_p:path3201","svg_p:path3049"]],draw_name:[["svg_p:path3329"]]};sim.poc.signals["T3"]={name:"T3",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 2","MV BUS_IB SELEC_T3; FIRE M7; FIRE M1; SET_TT TTCPU 2"],fire_name:["svg_p:text3451"],draw_data:[["svg_p:path3347","svg_p:path3349","svg_p:path3931","svg_p:path3345","svg_p:path3049"]],draw_name:[["svg_p:path3351"]]};sim.poc.signals["T6"]={name:"T6",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 3","MV BUS_IB ALU_T6; FIRE M7; FIRE M1; SET_TT TTCPU 3"],fire_name:["svg_p:text3457"],draw_data:[["svg_p:path3315","svg_p:path3589","svg_p:path3317","svg_p:path3163-2","svg_p:path3049","svg_p:path3317-9","svg_p:path3321","svg_p:path3261-8"]],draw_name:[["svg_p:path3319"]]};sim.poc.signals["T8"]={name:"T8",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 4","MV BUS_IB REG_SR; FIRE M7; FIRE M1; SET_TT TTCPU 4"],fire_name:["svg_p:text3657"],draw_data:[["svg_p:path3645","svg_p:path3651","svg_p:path3647","svg_p:path3049"]],draw_name:[["svg_p:path3649"]]};sim.poc.signals["T9"]={name:"T9",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 5","MV BUS_IB RA_T9; FIRE M7; FIRE M1; SET_TT TTCPU 5"],fire_name:["svg_p:text3147"],draw_data:[["svg_p:path3131","svg_p:path3143","svg_p:path3139","svg_p:path3049","svg_p:path3143-9"]],draw_name:[["svg_p:path3133"]]};sim.poc.signals["T10"]={name:"T10",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 6","MV BUS_IB RB_T10; FIRE M7; FIRE M1; SET_TT TTCPU 6"],fire_name:["svg_p:text3149"],draw_data:[["svg_p:path3135","svg_p:path3145","svg_p:path3141","svg_p:path3049","svg_p:path3145-5"]],draw_name:[["svg_p:path3137"]]};sim.poc.signals["T11"]={name:"T11",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 7","CP_FIELD BUS_IB REG_MICROINS/EXCODE; FIRE M7; FIRE M1; SET_TT TTCPU 7"],fire_name:["svg_p:text3147-5","svg_cu:tspan4426"],draw_data:[["svg_p:path3131-3","svg_p:path3081-3","svg_p:path3139-7","svg_p:path3049","svg_cu:path3081-3","svg_cu:path3139-7","svg_cu:path3502"]],draw_name:[["svg_p:path3133-6","svg_cu:path3133-6"]]};sim.poc.signals["T12"]={name:"T12",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 8","MV BUS_IB HPC_T12; FIRE M7; FIRE M1; SET_TT TTCPU 8"],fire_name:["svg_p:text3147-5-0-1-1"],draw_data:[["svg_p:path3131-3-8-4-31","svg_p:path3139-7-1-4-3","svg_cu:path3049"]],draw_name:[["svg_cu:path3133-6-9-7-5"]]};sim.poc.signals["M1"]={name:"M1",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV M1_C1 BUS_IB","MV M1_C1 BUS_DB"],depends_on:["C1"],fire_name:["svg_p:text3469"],draw_data:[["svg_p:path3063","svg_p:path3061","svg_p:path3059"],["svg_p:path3057","svg_p:path3641","svg_p:path3419","svg_p:path3583"]],draw_name:[[],["svg_p:path3447"]]};sim.poc.signals["M7"]={name:"M7",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV M7_C7 BUS_IB","MV M7_C7 REG_SR; UPDATE_FLAG M7_C7 FLAG_C 31; UPDATE_FLAG M7_C7 FLAG_V 30; UPDATE_FLAG M7_C7 FLAG_N 29; UPDATE_FLAG M7_C7 FLAG_Z 28"],depends_on:["C7"],fire_name:["svg_p:text3673"],draw_data:[["svg_p:path3691","svg_p:path3693","svg_p:path3659"],["svg_p:path3695"]],draw_name:[[],["svg_p:path3667"]]};sim.poc.signals["MA"]={name:"MA",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV MA_ALU RA_T9; FIRE COP","MV MA_ALU BUS_IB; FIRE COP"],depends_on:["SELA","SELB"],fire_name:["svg_p:text3463"],draw_data:[["svg_p:path3249","svg_p:path3161","svg_p:path3165"],["svg_p:path3279"]],draw_name:[[],["svg_p:path3423"]]};sim.poc.signals["MB"]={name:"MB",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV MB_ALU RB_T10; FIRE COP","MV MB_ALU REG_PC; FIRE COP"],depends_on:["SELA","SELB"],fire_name:["svg_p:text3465"],draw_data:[["svg_p:path3281","svg_p:path3171","svg_p:path3169"],["svg_p:path3283"]],draw_name:[[],["svg_p:path3425","svg_p:path3427"]]};sim.poc.signals["MH"]={name:"MH",visible:true,type:"L",value:0,default_value:0,nbits:"2",behavior:["MV HPC_T12 CLK","MV HPC_T12 ACC_TIME","MV HPC_T12 ACC_PWR","NOP"],fire_name:["svg_p:text3147-5-0-1-8-4"],draw_data:[[],["svg_p:path3081-3-8-5-3"]],draw_name:[[],["svg_p:path3306-8-7-6"]]};sim.poc.signals["COP"]={name:"COP",visible:true,type:"L",value:0,default_value:0,nbits:"5",forbidden:true,behavior:["NOP_ALU; UPDATE_NZVC","AND ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","OR ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","NOT ALU_T6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","XOR ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","SRL ALU_T6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","SRA ALU_T6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","SL ALU_T6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","RR ALU_T6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","RL ALU_T6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","ADD ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","SUB ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","MUL ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","DIV ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","MOD ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","LUI ALU_T6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","ADDFOUR ALU_T6 MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","ADDONE ALU_T6 MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","SUBFOUR ALU_T6 MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","SUBONE ALU_T6 MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","FADD ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","FSUB ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","FMUL ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","FDIV ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","FMOD ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","NOP_ALU","NOP_ALU","NOP_ALU","NOP_ALU","NOP_ALU","NOP_ALU","NOP_ALU"],depends_on:["SELCOP"],fire_name:["svg_p:text3303"],draw_data:[["svg_p:path3237","svg_p:path3239","svg_p:path3261-8","svg_p:path3321","svg_p:path3901-6","svg_p:path3317-9"]],draw_name:[["svg_p:path3009","svg_p:path3301"]]};sim.poc.signals["SELA"]={name:"SELA",visible:true,type:"L",value:0,default_value:0,nbits:"6",behavior:["FIRE_IFCHANGED MRA SELA; RESET_CHANGED SELA"],depends_on:["RA"],fire_name:["svg_cu:text3164"],draw_data:[[]],draw_name:[[]]};sim.poc.signals["SELB"]={name:"SELB",visible:true,type:"L",value:0,default_value:0,nbits:"6",behavior:["FIRE_IFCHANGED MRB SELB; RESET_CHANGED SELB"],depends_on:["RB"],fire_name:["svg_cu:text3168"],draw_data:[[]],draw_name:[[]]};sim.poc.signals["SELC"]={name:"SELC",visible:true,type:"L",value:0,default_value:0,nbits:"6",behavior:["FIRE_IFCHANGED MRC SELC; RESET_CHANGED SELC"],depends_on:["RC"],fire_name:["svg_cu:text3172"],draw_data:[[]],draw_name:[[]]};sim.poc.signals["SELCOP"]={name:"SELCOP",visible:true,type:"L",value:0,default_value:0,nbits:"5",behavior:["FIRE_IFCHANGED MC SELCOP; RESET_CHANGED SELCOP"],depends_on:["COP"],fire_name:["svg_cu:text3312"],draw_data:[[]],draw_name:[[]]};sim.poc.signals["EXCODE"]={name:"EXCODE",visible:true,type:"L",value:0,default_value:0,nbits:"4",behavior:["FIRE T11"],fire_name:["svg_cu:text3312-6"],draw_data:[[]],draw_name:[[]]};sim.poc.signals["RA"]={name:"RA",visible:true,type:"L",value:0,default_value:0,nbits:"6",forbidden:true,behavior:["GET RA_T9 BR RA; FIRE_IFSET T9 1; FIRE_IFSET MA 0"],depends_on:["SELA"],fire_name:["svg_p:text3107"],draw_data:[[]],draw_name:[["svg_p:path3109"]]};sim.poc.signals["RB"]={name:"RB",visible:true,type:"L",value:0,default_value:0,nbits:"6",forbidden:true,behavior:["GET RB_T10 BR RB; FIRE_IFSET T10 1; FIRE_IFSET MB 0"],depends_on:["SELB"],fire_name:["svg_p:text3123"],draw_data:[[]],draw_name:[["svg_p:path3113"]]};sim.poc.signals["RC"]={name:"RC",visible:true,type:"L",value:0,default_value:0,nbits:"6",forbidden:true,behavior:["FIRE LC"],depends_on:["SELC"],fire_name:["svg_p:text3125"],draw_data:[[]],draw_name:[["svg_p:path3117"]]};sim.poc.signals["LC"]={name:"LC",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","SET BR RC BUS_IB"],fire_name:["svg_p:text3127"],draw_data:[["svg_p:path3153","svg_p:path3151","svg_p:path3129"]],draw_name:[["svg_p:path3121"]]};sim.poc.signals["SE"]={name:"SE",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MBITS SELEC_T3 0 REG_RT1 OFFSET SIZE 0 SE; FIRE T3","MBITS SELEC_T3 0 REG_RT1 OFFSET SIZE 0 SE; FIRE T3"],depends_on:["T3"],fire_name:["svg_p:text3593"],draw_data:[[]],draw_name:[["svg_p:path3591","svg_p:path3447-7-7"]]};sim.poc.signals["SIZE"]={name:"SIZE",visible:true,type:"L",value:0,default_value:0,nbits:"5",behavior:["MBITS SELEC_T3 0 REG_RT1 OFFSET SIZE 0 SE; FIRE T3"],depends_on:["T3"],fire_name:["svg_p:text3363"],draw_data:[[]],draw_name:[["svg_p:path3355"]]};sim.poc.signals["OFFSET"]={name:"OFFSET",visible:true,type:"L",value:0,default_value:0,nbits:"5",behavior:["MBITS SELEC_T3 0 REG_RT1 OFFSET SIZE 0 SE; FIRE T3"],depends_on:["T3"],fire_name:["svg_p:text3707"],draw_data:[[]],draw_name:[["svg_p:path3359"]]};sim.poc.signals["MC"]={name:"MC",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MBIT COP REG_IR 0 5; FIRE_IFCHANGED COP MC","CP_FIELD COP REG_MICROINS/SELCOP; FIRE_IFCHANGED COP MC"],depends_on:["SELCOP"],fire_name:["svg_cu:text3322","svg_cu:text3172-1-5"],draw_data:[["svg_cu:path3320","svg_cu:path3142"],["svg_cu:path3318","svg_cu:path3502-6","svg_cu:path3232-6"]],draw_name:[[],["svg_cu:path3306"]]};sim.poc.signals["MRA"]={name:"MRA",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MBIT_SN RA REG_IR REG_MICROINS/SELA 5; FIRE RA;","CP_FIELD RA REG_MICROINS/SELA; FIRE RA;"],depends_on:["SELA"],fire_name:["svg_cu:text3222"],draw_data:[["svg_cu:path3494","svg_cu:path3492","svg_cu:path3490","svg_cu:path3142b","svg_cu:path3188","svg_cu:path3190","svg_cu:path3192","svg_cu:path3194","svg_cu:path3276","svg_cu:path3290","svg_cu:path3260"],["svg_cu:path3270","svg_cu:path3258","svg_cu:path3260","svg_cu:path3294","svg_cu:path3288","svg_cu:path3280"]],draw_name:[[],["svg_cu:path3220"]]};sim.poc.signals["MRB"]={name:"MRB",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MBIT_SN RB REG_IR REG_MICROINS/SELB 5; FIRE RB;","CP_FIELD RB REG_MICROINS/SELB; FIRE RB;"],depends_on:["SELB"],fire_name:["svg_cu:text3242"],draw_data:[["svg_cu:path3196","svg_cu:path3278","svg_cu:path3292"],["svg_cu:path3282","svg_cu:path3258-4","svg_cu:path3278","svg_cu:path3196"]],draw_name:[[],["svg_cu:path3240"]]};sim.poc.signals["MRC"]={name:"MRC",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MBIT_SN RC REG_IR REG_MICROINS/SELC 5; FIRE RC;","CP_FIELD RC REG_MICROINS/SELC; FIRE RC;"],depends_on:["SELC"],fire_name:["svg_cu:text3254"],draw_data:[["svg_cu:path3494","svg_cu:path3492","svg_cu:path3490","svg_cu:path3142b","svg_cu:path3188","svg_cu:path3190","svg_cu:path3192","svg_cu:path3194","svg_cu:path3276","svg_cu:path3290","svg_cu:path3232","svg_cu:path3292"],["svg_cu:path3300","svg_cu:path3294","svg_cu:path3292","svg_cu:path3288","svg_cu:path3232"]],draw_name:[[],["svg_cu:path3252"]]};sim.poc.signals["IOR"]={name:"IOR",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","MOVE_BITS SCR_IOR 0 1 IOR; FIRE SCR_IOR; MOVE_BITS IO_IOR 0 1 IOR; FIRE IO_IOR; MOVE_BITS L3D_IOR 0 1 IOR; FIRE L3D_IOR; MOVE_BITS KBD_IOR 0 1 IOR; FIRE KBD_IOR; MOVE_BITS LEDM_IOR 0 1 IOR; FIRE LEDM_IOR"],fire_name:[],draw_data:[[],["svg_p:path3733","svg_p:path3491","svg_p:text3715"]],draw_name:[[],[]]};sim.poc.signals["IOW"]={name:"IOW",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","MOVE_BITS SCR_IOW 0 1 IOW; FIRE SCR_IOW; MOVE_BITS IO_IOW 0 1 IOW; FIRE IO_IOW; MOVE_BITS L3D_IOW 0 1 IOW; FIRE L3D_IOW; MOVE_BITS LEDM_IOW 0 1 IOW; FIRE LEDM_IOW"],fire_name:[],draw_data:[[],["svg_p:path3735","svg_p:path3491","svg_p:text3717"]],draw_name:[[],[]]};sim.poc.signals["TEST_C"]={name:"TEST_C",visible:true,type:"L",value:0,default_value:0,nbits:"1",forbidden:true,behavior:["MV FLAG_C VAL_ZERO; FIRE M7","MV FLAG_C VAL_ONE; FIRE M7"],depends_on:["SELCOP"],fire_name:["svg_p:text3701-3"],draw_data:[["svg_p:text3701-3"]],draw_name:[[]]};sim.poc.signals["TEST_V"]={name:"TEST_V",visible:true,type:"L",value:0,default_value:0,nbits:"1",forbidden:true,behavior:["MV FLAG_V VAL_ZERO; FIRE M7","MV FLAG_V VAL_ONE; FIRE M7"],depends_on:["SELCOP"],fire_name:["svg_p:text3701-3-1"],draw_data:[["svg_p:text3701-3-1"]],draw_name:[[]]};sim.poc.signals["TEST_N"]={name:"TEST_N",visible:true,type:"L",value:0,default_value:0,nbits:"1",forbidden:true,behavior:["MV FLAG_N VAL_ZERO; FIRE M7","MV FLAG_N VAL_ONE; FIRE M7"],depends_on:["SELCOP"],fire_name:["svg_p:text3701-3-2"],draw_data:[["svg_p:text3701-3-2"]],draw_name:[[]]};sim.poc.signals["TEST_Z"]={name:"TEST_Z",visible:true,type:"L",value:0,default_value:0,nbits:"1",forbidden:true,behavior:["MV FLAG_Z VAL_ZERO; FIRE M7","MV FLAG_Z VAL_ONE; FIRE M7"],depends_on:["SELCOP"],fire_name:["svg_p:text3701-3-5"],draw_data:[["svg_p:text3701-3-5"]],draw_name:[[]]};sim.poc.signals["TEST_I"]={name:"TEST_I",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV FLAG_I VAL_ZERO; FIRE M7","MV FLAG_I VAL_ONE; FIRE M7"],depends_on:["CLK"],fire_name:["svg_cu:text3440"],draw_data:[["svg_cu:text3440"]],draw_name:[[]]};sim.poc.signals["TEST_U"]={name:"TEST_U",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV FLAG_U VAL_ZERO; FIRE M7","MV FLAG_U VAL_ONE; FIRE M7"],depends_on:["CLK"],fire_name:["svg_cu:text3442"],draw_data:[["svg_cu:text3442"]],draw_name:[[]]};sim.poc.signals["TEST_INTV"]={name:"TEST_INTV",visible:true,type:"L",value:0,default_value:0,nbits:"8",forbidden:true,behavior:["MBIT INTV TEST_INTV 0 32"],depends_on:["INT"],fire_name:["svg_p:tspan4225"],draw_data:[["svg_p:path3749"]],draw_name:[[]]};sim.poc.behaviors["NOP"]={nparameters:1,operation:function(s_expr){},verbal:function(s_expr){return""}};sim.poc.behaviors["NOP_ALU"]={nparameters:1,operation:function(s_expr){sim.poc.internal_states.alu_flags.flag_n=0;sim.poc.internal_states.alu_flags.flag_z=0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){return"Reset ALU flags. "}};sim.poc.behaviors["MV"]={nparameters:3,types:["X","X"],operation:function(s_expr){sim_elto_org=get_reference(s_expr[2]);sim_elto_dst=get_reference(s_expr[1]);newval=get_value(sim_elto_org);set_value(sim_elto_dst,newval)},verbal:function(s_expr){var sim_elto_org=get_reference(s_expr[2]);var newval=get_value(sim_elto_org);var verbose=get_cfg("verbal_verbose");if(verbose!=="short"){return"Copy from "+show_verbal(s_expr[2])+" to "+show_verbal(s_expr[1])+" value "+show_value(newval)+". "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[2])+" ("+show_value(newval)+"). "}};sim.poc.behaviors["LOAD"]={nparameters:3,types:["X","X"],operation:function(s_expr){sim_elto_org=get_reference(s_expr[2]);sim_elto_dst=get_reference(s_expr[1]);newval=get_value(sim_elto_org);set_value(sim_elto_dst,newval)},verbal:function(s_expr){var sim_elto_org=get_reference(s_expr[2]);var newval=get_value(sim_elto_org);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Load from "+show_verbal(s_expr[2])+" to "+show_verbal(s_expr[1])+" value "+show_value(newval)+". "}return show_verbal(s_expr[1])+" = "+show_value(newval)+" ( "+show_verbal(s_expr[2])+"). "}};sim.poc.behaviors["CP_FIELD"]={nparameters:3,types:["X","X"],operation:function(s_expr){r=s_expr[2].split("/");sim_elto_org=get_reference(r[0]);newval=get_value(sim_elto_org);newval=newval[r[1]];if(typeof newval!="undefined"){sim_elto_dst=get_reference(s_expr[1]);set_value(sim_elto_dst,newval)}},verbal:function(s_expr){var r=s_expr[2].split("/");var sim_elto_org=get_reference(r[0]);var newval=get_value(sim_elto_org);newval=newval[r[1]];if(typeof newval=="undefined")newval="<undefined>";else newval=show_value(newval);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return'Copy from "'+show_verbal(r[0])+'"['+r[1]+"] "+"to "+show_verbal(s_expr[1])+" (value "+newval+"). "}return show_verbal(s_expr[1])+" = "+show_verbal(r[0])+"."+r[1]+" ("+newval+"). "}};sim.poc.behaviors["NOT_ES"]={nparameters:3,types:["S","E"],operation:function(s_expr){set_value(sim.poc.signals[s_expr[1]],Math.abs(get_value(sim.poc.states[s_expr[2]])-1))},verbal:function(s_expr){var value=Math.abs(get_value(sim.poc.states[s_expr[2]])-1);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Set "+show_verbal(s_expr[1])+" with value "+show_value(value)+" (Logical NOT of "+s_expr[2]+"). "}return show_verbal(s_expr[1])+" = "+show_value(value)+" (Logical NOT "+s_expr[2]+"). "}};sim.poc.behaviors["GET"]={nparameters:4,types:["E","E","S"],operation:function(s_expr){set_value(sim.poc.states[s_expr[1]],get_value(sim.poc.states[s_expr[2]][sim.poc.signals[s_expr[3]].value]))},verbal:function(s_expr){var value=get_value(sim.poc.states[s_expr[2]][sim.poc.signals[s_expr[3]].value]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Set "+show_verbal(s_expr[1])+" with value "+show_value(value)+" (Register File "+s_expr[3]+"). "}return show_verbal(s_expr[1])+" = "+show_value(value)+" (Register File "+s_expr[3]+"). "}};sim.poc.behaviors["SET"]={nparameters:4,types:["E","S","E"],operation:function(s_expr){set_value(sim.poc.states[s_expr[1]][sim.poc.signals[s_expr[2]].value],get_value(sim.poc.states[s_expr[3]]))},verbal:function(s_expr){var value=get_value(sim.poc.states[s_expr[3]]);var o_ref=sim.poc.states[s_expr[1]][sim.poc.signals[s_expr[2]].value];var o_verbal=o_ref.name;if(typeof o_ref.verbal!="undefined")o_verbal=o_ref.verbal;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy to "+o_verbal+" the value "+show_value(value)+". "}return o_verbal+" = "+show_value(value)+". "}};sim.poc.behaviors["AND"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])&get_value(sim.poc.states[s_expr[3]]);set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])&get_value(sim.poc.states[s_expr[3]]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU AND with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (AND). "}};sim.poc.behaviors["OR"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])|get_value(sim.poc.states[s_expr[3]]);set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])|get_value(sim.poc.states[s_expr[3]]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU OR with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (OR). "}};sim.poc.behaviors["NOT"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=~get_value(sim.poc.states[s_expr[2]]);set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=~get_value(sim.poc.states[s_expr[2]]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU NOT with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (NOT). "}};sim.poc.behaviors["XOR"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])^get_value(sim.poc.states[s_expr[3]]);set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])^get_value(sim.poc.states[s_expr[3]]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU XOR with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (XOR). "}};sim.poc.behaviors["SRL"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])>>>1;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])>>>1;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Shift Right Logical with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (SRL). "}};sim.poc.behaviors["SRA"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])>>1;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])>>1;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Shift Right Arithmetic with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (SRA). "}};sim.poc.behaviors["SL"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])<<1;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])<<1;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Shift Left with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (SL). "}};sim.poc.behaviors["RR"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])>>>1|(get_value(sim.poc.states[s_expr[2]])&1)<<31;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])>>>1|(get_value(sim.poc.states[s_expr[2]])&1)<<31;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Right Rotation with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (RR). "}};sim.poc.behaviors["RL"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])<<1|(get_value(sim.poc.states[s_expr[2]])&2147483648)>>>31;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])<<1|(get_value(sim.poc.states[s_expr[2]])&2147483648)>>>31;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Left Rotation with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (LR). "}};sim.poc.behaviors["ADD"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a+b;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_c=a>>>31&&b>>>31;sim.poc.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.poc.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.poc.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a+b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU ADD with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (ADD). "}};sim.poc.behaviors["SUB"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a-b;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_c=a>>>31&&b>>>31;sim.poc.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.poc.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.poc.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a-b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU SUB with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (SUB). "}};sim.poc.behaviors["MUL"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a*b;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_c=0;sim.poc.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.poc.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.poc.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a*b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU MUL with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (MUL). "}};sim.poc.behaviors["DIV"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;if(0==b){set_value(sim.poc.states[s_expr[1]],0);sim.poc.internal_states.alu_flags.flag_n=0;sim.poc.internal_states.alu_flags.flag_z=1;sim.poc.internal_states.alu_flags.flag_v=1;sim.poc.internal_states.alu_flags.flag_c=0;return}var result=Math.floor(a/b);set_value(sim.poc.states[s_expr[1]],result);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;if(0==b){return"ALU DIV zero by zero (oops!). "}var result=Math.floor(a/b);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU DIV with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (DIV). "}};sim.poc.behaviors["MOD"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;if(0==b){set_value(sim.poc.states[s_expr[1]],0);sim.poc.internal_states.alu_flags.flag_n=0;sim.poc.internal_states.alu_flags.flag_z=1;sim.poc.internal_states.alu_flags.flag_v=1;sim.poc.internal_states.alu_flags.flag_c=0;return}var result=a%b;set_value(sim.poc.states[s_expr[1]],result);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;if(0==b){return"ALU MOD zero by zero (oops!). "}var result=a%b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU MOD with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (MOD). "}};sim.poc.behaviors["LUI"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])<<16;set_value(sim.poc.states[s_expr[1]],result);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])<<16;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Load Upper Immediate with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (LUI). "}};sim.poc.behaviors["ADDFOUR"]={nparameters:3,types:["E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a+4;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_c=a>>>31&&b>>>31;sim.poc.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.poc.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.poc.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a+4;return"ALU ADD 4 with result "+show_value(result)+". "}};sim.poc.behaviors["ADDONE"]={nparameters:3,types:["E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a+1;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_c=a>>>31&&b>>>31;sim.poc.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.poc.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.poc.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a+1;return"ALU ADD 1 with result "+show_value(result)+". "}};sim.poc.behaviors["SUBFOUR"]={nparameters:3,types:["E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a-4;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_c=a>>>31&&b>>>31;sim.poc.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.poc.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.poc.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a-4;return"ALU SUB 4 with result "+show_value(result)+". "}};sim.poc.behaviors["SUBONE"]={nparameters:3,types:["E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a-1;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_c=a>>>31&&b>>>31;sim.poc.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.poc.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.poc.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a-1;return"ALU SUB 1 with result "+show_value(result)+". "}};sim.poc.behaviors["FADD"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a.toFixed(2)+b.toFixed(2);set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_c=0;sim.poc.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.poc.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.poc.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a.toFixed(2)+b.toFixed(2);return"ALU Float ADD with result "+result+". "}};sim.poc.behaviors["FSUB"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a.toFixed(2)-b.toFixed(2);set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_c=0;sim.poc.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.poc.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.poc.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a.toFixed(2)-b.toFixed(2);return"ALU Float SUB with result "+result+". "}};sim.poc.behaviors["FMUL"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a.toFixed(2)*b.toFixed(2);set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_c=0;sim.poc.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.poc.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.poc.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a.toFixed(2)*b.toFixed(2);return"ALU Float MUL with result "+result+". "}};sim.poc.behaviors["FDIV"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;if(0==b){set_value(sim.poc.states[s_expr[1]],0);sim.poc.internal_states.alu_flags.flag_n=0;sim.poc.internal_states.alu_flags.flag_z=1;sim.poc.internal_states.alu_flags.flag_v=1;sim.poc.internal_states.alu_flags.flag_c=0;return}var result=Math.floor(a/b);set_value(sim.poc.states[s_expr[1]],result);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a.toFixed(2)/b.toFixed(2);return"ALU Float DIV with result "+result+". "}};sim.poc.behaviors["FMOD"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var result=(get_value(sim.poc.states[s_expr[2]])<<0)%(get_value(sim.poc.states[s_expr[3]])<<0);set_value(sim.poc.states[s_expr[1]],result);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a.toFixed(2)%b.toFixed(2);return"ALU Float MOD with result "+result+". "}};sim.poc.behaviors["LUI"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])<<16;set_value(sim.poc.states[s_expr[1]],result);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])<<16;return"ALU Load Upper Immediate with result "+show_value(result)+". "}};sim.poc.behaviors["PLUS1"]={nparameters:3,types:["E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a+1;set_value(sim.poc.states[s_expr[1]],result>>>0)},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a+1;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Add one to "+show_verbal(s_expr[2])+" and copy to "+show_verbal(s_expr[1])+" with result "+show_value(result)+". "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[2])+" + 1"+" ("+show_value(result)+"). "}};sim.poc.behaviors["PLUS4"]={nparameters:3,types:["E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a+4;set_value(sim.poc.states[s_expr[1]],result>>>0)},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a+4;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Add four to "+show_verbal(s_expr[2])+" and copy to "+show_verbal(s_expr[1])+" with result "+show_value(result)+". "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[2])+" + 4"+" ("+show_value(result)+"). "}};sim.poc.behaviors["SET_TT"]={nparameters:3,types:["E","I"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[1]])<<0;var b=parseInt(s_expr[2]);var m=Math.pow(2,b);var r=a|m;set_value(sim.poc.states[s_expr[1]],r);update_cpu_bus_fire(r,b)},verbal:function(s_expr){return""}};sim.poc.behaviors["RST_TT"]={nparameters:3,types:["E","I"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[1]])<<0;var b=parseInt(s_expr[2]);var m=Math.pow(2,b);var r=a&~m;set_value(sim.poc.states[s_expr[1]],r);update_cpu_bus_fire(r,b)},verbal:function(s_expr){return""}};sim.poc.behaviors["CHECK_RTD"]={nparameters:1,operation:function(s_expr){var number_active_tri=parseInt(simhw_sim_signal("TD").value)+parseInt(simhw_sim_signal("R").value);update_system_bus_fire(number_active_tri)},verbal:function(s_expr){return""}};sim.poc.behaviors["MBIT"]={nparameters:5,types:["X","X","I","I"],operation:function(s_expr){var sim_elto_dst=get_reference(s_expr[1]);var sim_elto_org=get_reference(s_expr[2]);var offset=parseInt(s_expr[3]);var size=parseInt(s_expr[4]);var n1=get_value(sim_elto_org).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(offset+size-1),size);set_value(sim_elto_dst,parseInt(n2,2))},verbal:function(s_expr){var sim_elto_dst=get_reference(s_expr[1]);var sim_elto_org=get_reference(s_expr[2]);var offset=parseInt(s_expr[3]);var size=parseInt(s_expr[4]);var n1=get_value(sim_elto_org).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(offset+size-1),size);var n3=parseInt(n2,2);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy from "+show_verbal(s_expr[2])+" to "+show_verbal(s_expr[1])+" value "+show_value(n3)+" (copied "+size+" bits from bit "+offset+"). "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[2])+" ("+show_value(n3)+", "+size+" bits from bit "+offset+"). "}};sim.poc.behaviors["MBIT_SN"]={nparameters:5,types:["S","E","E","I"],operation:function(s_expr){var base=0;var r=s_expr[3].split("/");if(1==r.length)base=get_value(sim.poc.states[s_expr[3]]);else if(typeof sim.poc.states[r[0]].value[r[1]]!="undefined")base=sim.poc.states[r[0]].value[r[1]];else if(typeof sim.poc.signals[r[1]].default_value!="undefined")base=sim.poc.signals[r[1]].default_value;else if(typeof sim.poc.states[r[1]].default_value!="undefined")base=sim.poc.states[r[1]].default_value;else ws_alert("WARN: undefined state/field pair -> "+r[0]+"/"+r[1]);var offset=parseInt(s_expr[4]);var n1=get_value(sim.poc.states[s_expr[2]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;var n3=n2.substr(31-(base+offset-1),offset);set_value(sim.poc.signals[s_expr[1]],parseInt(n3,2))},verbal:function(s_expr){var base=0;var r=s_expr[3].split("/");if(1==r.length)base=get_value(sim.poc.states[s_expr[3]]);else if(typeof sim.poc.states[r[0]].value[r[1]]!="undefined")base=sim.poc.states[r[0]].value[r[1]];else if(typeof sim.poc.signals[r[1]].default_value!="undefined")base=sim.poc.signals[r[1]].default_value;else if(typeof sim.poc.states[r[1]].default_value!="undefined")base=sim.poc.states[r[1]].default_value;else ws_alert("WARN: undefined state/field pair -> "+r[0]+"/"+r[1]);var offset=parseInt(s_expr[4]);var n1=get_value(sim.poc.states[s_expr[2]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;var n3=n2.substr(31-(base+offset-1),offset);var from_elto="";if(1==r.length)from_elto=show_verbal(s_expr[3]);else from_elto='"'+show_verbal(s_expr[2])+'"['+r[1]+"] ";var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy from "+from_elto+"into "+show_verbal(s_expr[1])+" "+"value "+parseInt(n3,2)+". "}return show_verbal(s_expr[1])+" = "+from_elto+" ("+parseInt(n3,2)+"). "}};sim.poc.behaviors["SBIT_SIGNAL"]={nparameters:4,types:["X","I","I"],operation:function(s_expr){sim_elto_dst=get_reference(s_expr[1]);var new_value=sim_elto_dst.value;var mask=1<>>0)},verbal:function(s_expr){sim_elto_dst=get_reference(s_expr[1]);var new_value=sim_elto_dst.value;var mask=1<>>0)}};sim.poc.behaviors["UPDATE_FLAG"]={nparameters:4,types:["X","X","I"],operation:function(s_expr){sim_elto_org=get_reference(s_expr[2]);sim_elto_dst=get_reference(s_expr[1]);var new_value=sim_elto_dst.value&~(1<>>0)},verbal:function(s_expr){sim_elto_org=get_reference(s_expr[2]);sim_elto_dst=get_reference(s_expr[1]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Update "+show_verbal(s_expr[2])+" to value "+sim_elto_org.value+". "}return show_verbal(s_expr[1])+"."+show_verbal(s_expr[3])+" = "+sim_elto_org.value+". "}};sim.poc.behaviors["MBITS"]={nparameters:8,types:["E","I","E","S","S","I","S"],operation:function(s_expr){var offset=parseInt(sim.poc.signals[s_expr[4]].value);var size=parseInt(sim.poc.signals[s_expr[5]].value);var n1=get_value(sim.poc.states[s_expr[3]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(offset+size-1),size);var n3="00000000000000000000000000000000".substring(0,32-n2.length)+n2;if("1"==sim.poc.signals[s_expr[7]].value&&"1"==n2.substr(0,1)){n3="11111111111111111111111111111111".substring(0,32-n2.length)+n2}set_value(sim.poc.states[s_expr[1]],parseInt(n3,2))},verbal:function(s_expr){var offset=parseInt(sim.poc.signals[s_expr[4]].value);var size=parseInt(sim.poc.signals[s_expr[5]].value);var n1=get_value(sim.poc.states[s_expr[3]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(offset+size-1),size);var n3="00000000000000000000000000000000".substring(0,32-n2.length)+n2;if("1"==sim.poc.signals[s_expr[7]].value&&"1"==n2.substr(0,1)){n3="11111111111111111111111111111111".substring(0,32-n2.length)+n2}n1=parseInt(n3,2);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return" Copy from "+show_verbal(s_expr[3])+" to "+show_verbal(s_expr[1])+" value "+show_value(n1)+" (copied "+size+" bits from bit "+offset+"). "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[3])+" ("+show_value(n1)+", "+size+" bits from bit "+offset+"). "}};sim.poc.behaviors["BSEL"]={nparameters:6,types:["E","I","I","E","I"],operation:function(s_expr){var posd=parseInt(s_expr[2]);var poso=parseInt(s_expr[5]);var len=parseInt(s_expr[3]);var n1=get_value(sim.poc.states[s_expr[4]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(poso+len)+1,len);var n3="00000000000000000000000000000000".substring(0,32-n2.length)+n2;var n4="00000000000000000000000000000000".substr(0,posd);n3=n3+n4;set_value(sim.poc.states[s_expr[1]],parseInt(n3,2))},verbal:function(s_expr){var posd=parseInt(s_expr[2]);var len=parseInt(s_expr[3]);var poso=parseInt(s_expr[5]);var n1=get_value(sim.poc.states[s_expr[4]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(poso+len)+1,len);var n3="00000000000000000000000000000000".substring(0,32-n2.length)+n2;var n4="00000000000000000000000000000000".substr(0,posd);n3=n3+n4;var n5=parseInt(n3,2);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy from "+show_verbal(s_expr[4])+" to "+show_verbal(s_expr[1])+" value "+show_value(n5)+" (copied "+len+" bits, from bit "+poso+" of "+s_expr[4]+" to bit "+posd+" of "+s_expr[1]+"). "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[4])+" ("+show_value(n5)+", "+len+" bits, from bit "+poso+" of "+s_expr[4]+" to bit "+posd+" of "+s_expr[1]+"). "}};sim.poc.behaviors["EXT_SIG"]={nparameters:3,types:["E","I"],operation:function(s_expr){var n1=get_value(sim.poc.states[s_expr[1]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;var n3=n2.substr(31-s_expr[2],31);var n4=n3;if("1"==n2[31-s_expr[2]]){n4="11111111111111111111111111111111".substring(0,32-n3.length)+n4}set_value(sim.poc.states[s_expr[1]],parseInt(n4,2))},verbal:function(s_expr){var n1=get_value(sim.poc.states[s_expr[1]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;var n3=n2.substr(31-s_expr[2],31);var n4=n3;if("1"==n2[31-s_expr[2]]){n4="11111111111111111111111111111111".substring(0,32-n3.length)+n4}var n5=parseInt(n4,2);return"Sign Extension with value "+show_value(n5)+". "}};sim.poc.behaviors["MOVE_BITS"]={nparameters:5,types:["S","I","I","S"],operation:function(s_expr){var posd=parseInt(s_expr[2]);var poso=0;var len=parseInt(s_expr[3]);var n1=sim.poc.signals[s_expr[4]].value.toString(2);n1="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n1=n1.substr(31-poso-len+1,len);var n2=sim.poc.signals[s_expr[1]].value.toString(2);n2="00000000000000000000000000000000".substring(0,32-n2.length)+n2;var m1=n2.substr(0,32-(posd+len));var m2=n2.substr(31-posd+1,posd);var n3=m1+n1+m2;set_value(sim.poc.signals[s_expr[1]],parseInt(n3,2))},verbal:function(s_expr){return""}};sim.poc.behaviors["MOVE_BITSE"]={nparameters:6,types:["S","I","I","E","I"],operation:function(s_expr){var posd=parseInt(s_expr[2]);var poso=parseInt(s_expr[5]);var len=parseInt(s_expr[3]);var n1=get_value(sim.poc.states[s_expr[4]]).toString(2);n1="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n1=n1.substr(31-poso-len+1,len);var n2=sim.poc.signals[s_expr[1]].value.toString(2);n2="00000000000000000000000000000000".substring(0,32-n2.length)+n2;var m1=n2.substr(0,32-(posd+len));var m2=n2.substr(31-posd+1,posd);var n3=m1+n1+m2;set_value(sim.poc.signals[s_expr[1]],parseInt(n3,2))},verbal:function(s_expr){return""}};sim.poc.behaviors["DECO"]={nparameters:1,operation:function(s_expr){sim.poc.states["INEX"].value=0;var oi=decode_instruction(sim.poc.internal_states.FIRMWARE,sim.poc.ctrl_states.ir,get_value(sim.poc.states["REG_IR"]));if(null==oi.oinstruction){ws_alert("ERROR: undefined instruction code in IR ("+"co:"+oi.op_code.toString(2)+", "+"cop:"+oi.cop_code.toString(2)+")");sim.poc.states["ROM_MUXA"].value=0;sim.poc.states["INEX"].value=1;return-1}var rom_addr=oi.op_code<<6;if(typeof oi.oinstruction.cop!="undefined"){rom_addr=rom_addr+oi.cop_code}if(typeof sim.poc.internal_states["ROM"][rom_addr]=="undefined"){ws_alert("ERROR: undefined rom address "+rom_addr+" in firmware");sim.poc.states["ROM_MUXA"].value=0;return-1}sim.poc.states["ROM_MUXA"].value=sim.poc.internal_states["ROM"][rom_addr];var val=get_value(sim.poc.states["DECO_INS"]);set_value(sim.poc.states["DECO_INS"],val+1);var pc=get_value(sim.poc.states["REG_PC"])-4;var decins=get_deco_from_pc(pc);set_value(sim.poc.states["REG_IR_DECO"],decins);show_dbg_ir(get_value(sim.poc.states["REG_IR_DECO"]))},verbal:function(s_expr){return"Decode instruction. "}};sim.poc.behaviors["FIRE"]={nparameters:2,types:["S"],operation:function(s_expr){if(sim.poc.internal_states.fire_stack.indexOf(s_expr[1])!=-1){return}sim.poc.internal_states.fire_stack.push(s_expr[1]);update_draw(sim.poc.signals[s_expr[1]],sim.poc.signals[s_expr[1]].value);if("L"==sim.poc.signals[s_expr[1]].type){update_state(s_expr[1])}sim.poc.internal_states.fire_stack.pop(s_expr[1])},verbal:function(s_expr){return""}};sim.poc.behaviors["FIRE_IFSET"]={nparameters:3,types:["S","I"],operation:function(s_expr){if(get_value(sim.poc.signals[s_expr[1]])!=parseInt(s_expr[2])){return}sim.poc.behaviors["FIRE"].operation(s_expr)},verbal:function(s_expr){return""}};sim.poc.behaviors["FIRE_IFCHANGED"]={nparameters:3,types:["S","X"],operation:function(s_expr){sim_elto=get_reference(s_expr[2]);if(sim_elto.changed==false)return;sim.poc.behaviors["FIRE"].operation(s_expr)},verbal:function(s_expr){return""}};sim.poc.behaviors["RESET_CHANGED"]={nparameters:2,types:["X"],operation:function(s_expr){sim_elto=get_reference(s_expr[1]);sim_elto.changed=false},verbal:function(s_expr){return""}};sim.poc.behaviors["CLOCK"]={nparameters:1,operation:function(s_expr){var new_maddr=null;var mcelto=null;var t0=performance.now();var val=get_value(sim.poc.states["CLK"]);set_value(sim.poc.states["CLK"],val+1);set_value(sim.poc.states["TTCPU"],0);new_maddr=get_value(sim.poc.states["REG_MICROADDR"]);mcelto=sim.poc.internal_states["MC"][new_maddr];if(typeof mcelto!=="undefined"&&false==mcelto.is_native){for(var i=0;i>>0},set_value:function(elto,value){var origin="";var r_value=main_memory_get_program_counter();if(r_value!=null){origin="PC=0x"+r_value.toString(16)}var melto={value:value>>>0,source_tracking:[origin],comments:null};var valref=main_memory_set(sim.poc.internal_states.MP,elto,melto);show_main_memory(sim.poc.internal_states.MP,elto,typeof valref==="undefined",true);return value}};sim.poc.internal_states.segments={};sim.poc.internal_states.MP={};sim.poc.internal_states.MP_wc=0;sim.poc.internal_states.CM_cfg=[];sim.poc.internal_states.CM=[];sim.poc.signals.MRDY={name:"MRDY",visible:true,type:"L",value:0,default_value:0,nbits:"1",depends_on:["CLK"],behavior:["FIRE_IFCHANGED MRDY C","FIRE_IFCHANGED MRDY C"],fire_name:["svg_p:tspan3916"],draw_data:[[],["svg_p:path3895","svg_p:path3541"]],draw_name:[[],[]]};sim.poc.signals.R={name:"R",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; CHECK_RTD","MEM_READ BUS_AB BUS_DB BW MRDY CLK; FIRE M1; FIRE MRDY; CHECK_RTD"],fire_name:["svg_p:text3533-5-2"],draw_data:[[],["svg_p:path3557","svg_p:path3571"]],draw_name:[[],[]]};sim.poc.signals.W={name:"W",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","MEM_WRITE BUS_AB BUS_DB BW MRDY CLK; FIRE M1; FIRE MRDY"],fire_name:["svg_p:text3533-5-08"],draw_data:[[],["svg_p:path3559","svg_p:path3575","svg_p:path3447-7"]],draw_name:[[],[]]};sim.poc.signals.BW={name:"BW",verbal:["Access to one byte from memory. ","Access to two bytes from memory. ","Access to three bytes from memory. ","Access to a word from memory. "],visible:true,type:"L",value:0,default_value:0,nbits:"2",behavior:["FIRE R; FIRE W","FIRE R; FIRE W","FIRE R; FIRE W","FIRE R; FIRE W"],fire_name:["svg_p:text3533-5-2-8"],draw_data:[["svg_p:path3557-0"]],draw_name:[[],[]]};sim.poc.behaviors.MEM_READ={nparameters:6,types:["E","E","S","S","E"],operation:function(s_expr){var address=sim.poc.states[s_expr[1]].value;var dbvalue=sim.poc.states[s_expr[2]].value;var bw=sim.poc.signals[s_expr[3]].value;var clk=get_value(sim.poc.states[s_expr[5]]);sim.poc.signals[s_expr[4]].value=0;var remain=get_value(sim.poc.internal_states.MP_wc);if(typeof sim.poc.events.mem[clk-1]!="undefined"&&sim.poc.events.mem[clk-1]>0){remain=sim.poc.events.mem[clk-1]-1}var first_time=typeof sim.poc.events.mem[clk]=="undefined";sim.poc.events.mem[clk]=remain;if(remain>0){return}var wordress=address&4294967292;var value=main_memory_getvalue(sim.poc.internal_states.MP,wordress);var full_redraw=false;if(typeof value==="undefined"){value=0;full_redraw=true}dbvalue=main_memory_extractvalues(value,bw,address&3);sim.poc.states[s_expr[2]].value=dbvalue>>>0;sim.poc.signals[s_expr[4]].value=1;show_main_memory(sim.poc.internal_states.MP,wordress,full_redraw,false);if(first_time&&sim.poc.internal_states.CM.length>0){cache_memory_access(sim.poc.internal_states.CM[0],address,"read",clk)}},verbal:function(s_expr){var verbal="";var address=sim.poc.states[s_expr[1]].value;var dbvalue=sim.poc.states[s_expr[2]].value;var bw=sim.poc.signals[s_expr[3]].value;var clk=get_value(sim.poc.states[s_expr[5]]);switch(bw){case 0:bw_type="byte";break;case 1:bw_type="half";break;case 2:bw_type="three bytes";break;case 3:bw_type="word";break}var value=main_memory_getvalue(sim.poc.internal_states.MP,address);if(typeof value==="undefined"){value=0}verbal="Try to read a "+bw_type+" from memory "+"at address 0x"+address.toString(16)+" with value "+value.toString(16)+". ";return verbal}};sim.poc.behaviors.MEM_WRITE={nparameters:6,types:["E","E","S","S","E"],operation:function(s_expr){var address=sim.poc.states[s_expr[1]].value;var dbvalue=sim.poc.states[s_expr[2]].value;var bw=sim.poc.signals[s_expr[3]].value;var clk=get_value(sim.poc.states[s_expr[5]]);sim.poc.signals[s_expr[4]].value=0;var remain=get_value(sim.poc.internal_states.MP_wc);if(typeof sim.poc.events.mem[clk-1]!="undefined"&&sim.poc.events.mem[clk-1]>0){remain=sim.poc.events.mem[clk-1]-1}var first_time=typeof sim.poc.events.mem[clk]=="undefined";sim.poc.events.mem[clk]=remain;if(remain>0){return}var wordress=address&4294967292;var value=main_memory_getvalue(sim.poc.internal_states.MP,wordress);var full_redraw=false;if(typeof value==="undefined"){value=0;full_redraw=true}value=main_memory_updatevalues(value,dbvalue,bw,address&3);var origin="";var r_value=main_memory_get_program_counter();if(r_value!=null){origin="PC=0x"+r_value.toString(16)}var melto={value:value>>>0,source_tracking:[origin],comments:null};var elto=main_memory_set(sim.poc.internal_states.MP,wordress,melto);sim.poc.signals[s_expr[4]].value=1;show_main_memory(sim.poc.internal_states.MP,wordress,full_redraw,true);if(first_time&&sim.poc.internal_states.CM.length>0){cache_memory_access(sim.poc.internal_states.CM[0],address,"write",clk)}},verbal:function(s_expr){var verbal="";var address=sim.poc.states[s_expr[1]].value;var dbvalue=sim.poc.states[s_expr[2]].value;var bw=sim.poc.signals[s_expr[3]].value;var clk=get_value(sim.poc.states[s_expr[5]]);switch(bw){case 0:bw_type="byte";break;case 1:bw_type="half";break;case 2:bw_type="three bytes";break;case 3:bw_type="word";break}var value=main_memory_getvalue(sim.poc.internal_states.MP,address);if(typeof value==="undefined"){value=0}verbal="Try to write a "+bw_type+" to memory "+"at address 0x"+address.toString(16)+" with value "+value.toString(16)+". ";return verbal}};sim.poc.behaviors.MEMORY_RESET={nparameters:1,operation:function(s_expr){sim.poc.events.mem={}},verbal:function(s_expr){return"Reset the memory (all values will be zeroes). "}};sim.poc.elements.memory={name:"Main memory",description:"Main memory subsystem",type:"subcomponent",belongs:"MEMORY",states:{addr:{ref:"BUS_AB"},data:{ref:"BUS_DB"},mrdy:{ref:"MRDY"}},signals:{bw:{ref:"BW"},r:{ref:"R"},w:{ref:"W"}},states_inputs:["addr","data"],states_outputs:["mrdy","data"],signals_inputs:["bw","r","w"],signals_output:[]};sim.poc.components.IO={name:"IO",version:"1",abilities:["IO_TIMER"],details_name:["IO_STATS","IO_CONFIG"],details_fire:[["svg_p:text3775"],[]],write_state:function(vec){return vec},read_state:function(o,check){return false},get_state:function(reg){return null},get_value:function(elto){var associated_state=simhw_internalState_get("io_hash",elto);var value=get_value(simhw_sim_state(associated_state))>>>0;set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_signal("IOR"),1);compute_behavior("FIRE IOR");value=get_value(simhw_sim_state("BUS_DB"));return value},set_value:function(elto,value){var associated_state=simhw_internalState_get("io_hash",elto);set_value(simhw_sim_state(associated_state),value);set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_state("BUS_DB"),value);set_value(simhw_sim_signal("IOW"),1);compute_behavior("FIRE IOW");return value}};sim.poc.internal_states.io_int_factory=[];sim.poc.internal_states.io_int_factory[0]={period:0,probability:.5,accumulated:0,active:false};sim.poc.internal_states.io_int_factory[1]={period:0,probability:.5,accumulated:0,active:false};sim.poc.internal_states.io_int_factory[2]={period:0,probability:.5,accumulated:0,active:false};sim.poc.internal_states.io_int_factory[3]={period:0,probability:.5,accumulated:0,active:false};sim.poc.internal_states.io_int_factory[4]={period:0,probability:.5,accumulated:0,active:false};sim.poc.internal_states.io_int_factory[5]={period:0,probability:.5,accumulated:0,active:false};sim.poc.internal_states.io_int_factory[6]={period:0,probability:.5,accumulated:0,active:false};sim.poc.internal_states.io_int_factory[7]={period:0,probability:.5,accumulated:0,active:false};var IOSR_ID=4352;var IOCR_ID=4356;var IODR_ID=4360;sim.poc.internal_states.io_hash[IOSR_ID]="IOSR";sim.poc.internal_states.io_hash[IOCR_ID]="IOCR";sim.poc.internal_states.io_hash[IODR_ID]="IODR";sim.poc.states.IOSR={name:"IOSR",verbal:"IO State Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.IOCR={name:"IOCR",verbal:"IO Control Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.IODR={name:"IODR",verbal:"IO Data Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.signals.INT={name:"INT",visible:true,type:"L",value:0,default_value:0,nbits:"1",depends_on:["CLK"],behavior:["FIRE C","FIRE C"],fire_name:["svg_p:tspan4199"],draw_data:[[],["svg_p:path3809"]],draw_name:[[],[]]};sim.poc.signals.IORDY={name:"IORDY",visible:true,type:"L",value:0,default_value:0,nbits:"1",depends_on:["CLK"],behavior:["FIRE_IFCHANGED IORDY C","FIRE_IFCHANGED IORDY C"],fire_name:["svg_p:tspan4089","svg_p:path3793","svg_p:tspan4089"],draw_data:[[],["svg_p:path3897"]],draw_name:[[],[]]};sim.poc.signals.IO_IOR={name:"IO_IOR",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","IO_IOR BUS_AB BUS_DB IOSR IOCR IODR CLK; FIRE M1"],fire_name:["svg_p:tspan4173"],draw_data:[[],["svg_p:path3795","svg_p:path3733"]],draw_name:[[],[]]};sim.poc.signals.IO_IOW={name:"IO_IOW",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","IO_IOW BUS_AB BUS_DB IOSR IOCR IODR CLK; FIRE M1"],fire_name:["svg_p:text3785-0-6-0-5-5"],draw_data:[[],["svg_p:path3805","svg_p:path3733"]],draw_name:[[],[]]};sim.poc.signals.IO_IE={name:"IO_IE",visible:true,type:"L",value:1,default_value:1,nbits:"1",behavior:["NOP","IO_CHK_I CLK INT INTV; FIRE C"],fire_name:[],draw_data:[[],[]],draw_name:[[],[]]};sim.poc.signals.INTA={name:"INTA",visible:true,type:"L",value:1,default_value:0,nbits:"1",behavior:["NOP","INTA CLK INT INTA BUS_DB INTV; FIRE M1; FIRE C"],fire_name:["svg_p:text3785-0-6-0-5-5-1-1"],draw_data:[[],["svg_p:path3807","svg_p:path3737"]],draw_name:[[],[]]};sim.poc.behaviors.IO_IOR={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.poc.states[s_expr[1]]);var iosr=get_value(sim.poc.states[s_expr[3]]);var iocr=get_value(sim.poc.states[s_expr[4]]);var iodr=get_value(sim.poc.states[s_expr[5]]);if(bus_ab==IOSR_ID)set_value(sim.poc.states[s_expr[2]],iosr);if(bus_ab==IOCR_ID)set_value(sim.poc.states[s_expr[2]],iocr);if(bus_ab==IODR_ID)set_value(sim.poc.states[s_expr[2]],iodr)},verbal:function(s_expr){var verbal="";var bus_ab=get_value(sim.poc.states[s_expr[1]]);var iosr=get_value(sim.poc.states[s_expr[3]]);var iocr=get_value(sim.poc.states[s_expr[4]]);var iodr=get_value(sim.poc.states[s_expr[5]]);if(bus_ab==IOSR_ID)verbal="I/O device read at IOSR of value "+iosr+". ";if(bus_ab==IOCR_ID)verbal="I/O device read at IOCR of value "+iocr+". ";if(bus_ab==IODR_ID)verbal="I/O device read at IODR of value "+iodr+". ";return verbal}};sim.poc.behaviors.IO_IOW={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.poc.states[s_expr[1]]);var bus_db=get_value(sim.poc.states[s_expr[2]]);if(bus_ab!=IOSR_ID&&bus_ab!=IOCR_ID&&bus_ab!=IODR_ID){return}if(bus_ab==IOSR_ID)set_value(sim.poc.states[s_expr[3]],bus_db);if(bus_ab==IOCR_ID)set_value(sim.poc.states[s_expr[4]],bus_db);if(bus_ab==IODR_ID)set_value(sim.poc.states[s_expr[5]],bus_db);var iocr_id=get_value(sim.poc.states[s_expr[4]]);var iodr_id=get_value(sim.poc.states[s_expr[5]]);if(iocr_id<0||iocr_id>7)return;set_var(sim.poc.internal_states.io_int_factory[iocr_id].period,iodr_id);set_var(sim.poc.internal_states.io_int_factory[iocr_id].probability,1);if(0==iodr_id)set_var(sim.poc.internal_states.io_int_factory[iocr_id].probability,0)},verbal:function(s_expr){var verbal="";var bus_ab=get_value(sim.poc.states[s_expr[1]]);var bus_db=get_value(sim.poc.states[s_expr[2]]);if(bus_ab==IOSR_ID)verbal="I/O device write at IOSR with value "+bus_db+". ";if(bus_ab==IOCR_ID)verbal="I/O device write at IOCR with value "+bus_db+". ";if(bus_ab==IODR_ID)verbal="I/O device write at IODR with value "+bus_db+". ";return verbal}};sim.poc.behaviors.IO_CHK_I={nparameters:4,types:["E","S","E"],operation:function(s_expr){var clk=get_value(sim.poc.states[s_expr[1]]);for(var i=sim.poc.internal_states.io_int_factory.length-1;i>=0;i--){if(get_var(sim.poc.internal_states.io_int_factory[i].period)==0)continue;if(get_var(sim.poc.internal_states.io_int_factory[i].active)==true){set_value(sim.poc.signals[s_expr[2]],1);set_value(sim.poc.states[s_expr[3]],i)}if(clk%get_var(sim.poc.internal_states.io_int_factory[i].period)==0){if(Math.random()>get_var(sim.poc.internal_states.io_int_factory[i].probability))continue;set_var(sim.poc.internal_states.io_int_factory[i].accumulated,get_var(sim.poc.internal_states.io_int_factory[i].accumulated)+1);set_var(sim.poc.internal_states.io_int_factory[i].active,true);if(typeof sim.poc.events.io[clk]=="undefined")sim.poc.events.io[clk]=[];sim.poc.events.io[clk].push(i);set_value(sim.poc.signals[s_expr[2]],1);set_value(sim.poc.states[s_expr[3]],i)}}},verbal:function(s_expr){return"Check I/O Interruption. "}};sim.poc.behaviors.INTA={nparameters:6,types:["E","S","S","E","E"],operation:function(s_expr){var clk=get_value(sim.poc.states[s_expr[1]]);if(typeof sim.poc.events.io[clk]!="undefined"){set_value(sim.poc.states[s_expr[4]],sim.poc.events.io[clk][0]);return}set_value(sim.poc.signals[s_expr[2]],0);set_value(sim.poc.states[s_expr[5]],0);for(var i=0;i>>0;set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_signal("L3DR"),1);compute_behavior("FIRE L3DR");value=get_value(simhw_sim_state("BUS_DB"));return value},set_value:function(elto,value){var associated_state=simhw_internalState_get("io_hash",elto);set_value(simhw_sim_state(associated_state),value);set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_state("BUS_DB"),value);set_value(simhw_sim_signal("L3DW"),1);compute_behavior("FIRE L3DW");return value}};sim.poc.internal_states.l3d_dim=4;sim.poc.internal_states.l3d_neltos=Math.pow(sim.poc.internal_states.l3d_dim,3);sim.poc.internal_states.l3d_state=Array.from({length:sim.poc.internal_states.l3d_neltos},(()=>({active:false})));sim.poc.internal_states.l3d_frame="0".repeat(sim.poc.internal_states.l3d_neltos);var L3DSR_ID=8448;var L3DCR_ID=8452;var L3DDR_ID=8456;sim.poc.internal_states.io_hash[L3DSR_ID]="L3DSR";sim.poc.internal_states.io_hash[L3DCR_ID]="L3DCR";sim.poc.internal_states.io_hash[L3DDR_ID]="L3DDR";sim.poc.states.L3DSR={name:"L3DSR",verbal:"L3D State Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.L3DCR={name:"L3DCR",verbal:"L3D Control Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.L3DDR={name:"L3DDR",verbal:"L3D Data Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.signals.L3D_IOR={name:"L3D_IOR",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","L3D_IOR BUS_AB BUS_DB L3DSR L3DCR L3DDR CLK; FIRE M1"],fire_name:["svg_p:tspan4173"],draw_data:[[],["svg_p:path3795","svg_p:path3733"]],draw_name:[[],[]]};sim.poc.signals.L3D_IOW={name:"L3D_IOW",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","L3D_IOW BUS_AB BUS_DB L3DSR L3DCR L3DDR CLK; FIRE M1; L3D_SYNC"],fire_name:["svg_p:text3785-0-6-0-5-5"],draw_data:[[],["svg_p:path3805","svg_p:path3733"]],draw_name:[[],[]]};sim.poc.behaviors.L3D_IOR={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.poc.states[s_expr[1]]);var iosr=get_value(sim.poc.states[s_expr[3]]);var iocr=get_value(sim.poc.states[s_expr[4]]);var iodr=get_value(sim.poc.states[s_expr[5]]);if(bus_ab==L3DCR_ID){set_value(sim.poc.states[s_expr[2]],iocr)}if(bus_ab==L3DDR_ID){set_value(sim.poc.states[s_expr[2]],iodr)}if(bus_ab==L3DCR_ID){var x=(iodr&4278190080)>>24;var y=(iodr&16711680)>>16;var z=(iodr&65280)>>8;var p=z*Math.pow(sim.poc.internal_states.l3d_dim,2)+y*sim.poc.internal_states.l3d_dim+x;var s=get_var(sim.poc.internal_states.l3d_state[p].active);set_value(sim.poc.states[s_expr[2]],s)}},verbal:function(s_expr){var verbal="";var bus_ab=get_value(sim.poc.states[s_expr[1]]);var iosr=get_value(sim.poc.states[s_expr[3]]);var iocr=get_value(sim.poc.states[s_expr[4]]);var iodr=get_value(sim.poc.states[s_expr[5]]);if(bus_ab==L3DSR_ID)verbal="I/O device read at L3DSR of value "+iosr+". ";if(bus_ab==L3DCR_ID)verbal="I/O device read at L3DCR of value "+iocr+". ";if(bus_ab==L3DDR_ID)verbal="I/O device read at L3DDR of value "+iodr+". ";return verbal}};sim.poc.behaviors.L3D_IOW={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.poc.states[s_expr[1]]);var bus_db=get_value(sim.poc.states[s_expr[2]]);if(bus_ab!=L3DSR_ID&&bus_ab!=L3DCR_ID&&bus_ab!=L3DDR_ID){return}if(bus_ab==L3DSR_ID){set_value(sim.poc.states[s_expr[3]],bus_db)}if(bus_ab==L3DDR_ID){set_value(sim.poc.states[s_expr[5]],bus_db)}if(bus_ab==L3DCR_ID){set_value(sim.poc.states[s_expr[4]],bus_db);var x=(bus_db&4278190080)>>24;var y=(bus_db&16711680)>>16;var z=(bus_db&65280)>>8;var p=z*Math.pow(sim.poc.internal_states.l3d_dim,2)+y*sim.poc.internal_states.l3d_dim+x;var s=(bus_db&255)!=0;var l3dstates=sim.poc.internal_states.l3d_state;set_var(l3dstates[p].active,s)}},verbal:function(s_expr){var verbal="";var bus_ab=get_value(sim.poc.states[s_expr[1]]);var bus_db=get_value(sim.poc.states[s_expr[2]]);if(bus_ab==L3DSR_ID)verbal="I/O device write at L3DSR with value "+bus_db+". ";if(bus_ab==L3DCR_ID)verbal="I/O device write at L3DCR with value "+bus_db+". ";if(bus_ab==L3DDR_ID)verbal="I/O device write at L3DDR with value "+bus_db+". ";return verbal}};sim.poc.behaviors.L3D_RESET={nparameters:1,operation:function(s_expr){sim.poc.events.l3d={};var n=sim.poc.internal_states.l3d_state.length;for(var i=0;i>>0;set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_signal("LEDMR"),1);compute_behavior("FIRE LEDMR");value=get_value(simhw_sim_state("BUS_DB"));return value},set_value:function(elto,value){var associated_state=simhw_internalState_get("io_hash",elto);set_value(simhw_sim_state(associated_state),value);set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_state("BUS_DB"),value);set_value(simhw_sim_signal("LEDMW"),1);compute_behavior("FIRE LEDMW");return value}};sim.poc.internal_states.ledm_dim=24;sim.poc.internal_states.ledm_neltos=Math.pow(sim.poc.internal_states.ledm_dim,2);sim.poc.internal_states.ledm_state=Array.from({length:sim.poc.internal_states.ledm_neltos},(()=>({color:0})));sim.poc.internal_states.ledm_colors=colors_clone("");sim.poc.internal_states.ledm_frame="0".repeat(sim.poc.internal_states.ledm_neltos);var LEDMSR_ID=12544;var LEDMCR_ID=12548;var LEDMDR_ID=12552;sim.poc.internal_states.io_hash[LEDMSR_ID]="LEDMSR";sim.poc.internal_states.io_hash[LEDMCR_ID]="LEDMCR";sim.poc.internal_states.io_hash[LEDMDR_ID]="LEDMDR";sim.poc.states.LEDMSR={name:"LEDMSR",verbal:"LEDM State Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.LEDMCR={name:"LEDMCR",verbal:"LEDM Control Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.LEDMDR={name:"LEDMDR",verbal:"LEDM Data Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.signals.LEDM_IOR={name:"LEDM_IOR",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","LEDM_IOR BUS_AB BUS_DB LEDMSR LEDMCR LEDMDR CLK; FIRE M1"],fire_name:["svg_p:tspan4173"],draw_data:[[],["svg_p:path3795","svg_p:path3733"]],draw_name:[[],[]]};sim.poc.signals.LEDM_IOW={name:"LEDM_IOW",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","LEDM_IOW BUS_AB BUS_DB LEDMSR LEDMCR LEDMDR CLK; FIRE M1; LEDM_SYNC"],fire_name:["svg_p:text3785-0-6-0-5-5"],draw_data:[[],["svg_p:path3805","svg_p:path3733"]],draw_name:[[],[]]};sim.poc.behaviors.LEDM_IOR={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.poc.states[s_expr[1]]);var iosr=get_value(sim.poc.states[s_expr[3]]);var iocr=get_value(sim.poc.states[s_expr[4]]);var iodr=get_value(sim.poc.states[s_expr[5]]);if(bus_ab==LEDMCR_ID){set_value(sim.poc.states[s_expr[2]],iocr)}if(bus_ab==LEDMDR_ID){set_value(sim.poc.states[s_expr[2]],iodr)}if(bus_ab==LEDMCR_ID){var x=(iodr&4278190080)>>24;var y=(iodr&16711680)>>16;var p=y*sim.poc.internal_states.ledm_dim+x;var s=get_var(sim.poc.internal_states.ledm_state[p].color);set_value(sim.poc.states[s_expr[2]],s)}},verbal:function(s_expr){var verbal="";var bus_ab=get_value(sim.poc.states[s_expr[1]]);var iosr=get_value(sim.poc.states[s_expr[3]]);var iocr=get_value(sim.poc.states[s_expr[4]]);var iodr=get_value(sim.poc.states[s_expr[5]]);if(bus_ab==LEDMSR_ID)verbal="I/O device read at LEDMSR of value "+iosr+". ";if(bus_ab==LEDMCR_ID)verbal="I/O device read at LEDMCR of value "+iocr+". ";if(bus_ab==LEDMDR_ID)verbal="I/O device read at LEDMDR of value "+iodr+". ";return verbal}};sim.poc.behaviors.LEDM_IOW={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.poc.states[s_expr[1]]);var bus_db=get_value(sim.poc.states[s_expr[2]]);switch(bus_ab){case LEDMSR_ID:set_value(sim.poc.states[s_expr[3]],bus_db);break;case LEDMDR_ID:set_value(sim.poc.states[s_expr[5]],bus_db);break;case LEDMCR_ID:set_value(sim.poc.states[s_expr[4]],bus_db);break;default:break}if(LEDMCR_ID==bus_ab){var dr=get_value(sim.poc.states[s_expr[5]]);if(16&bus_db){var x=(dr&4278190080)>>24;var y=(dr&16711680)>>16;var s=dr&255;set_value(sim.poc.states[s_expr[3]],1);if(x>=sim.poc.internal_states.ledm_dim&&y>=sim.poc.internal_states.ledm_dim){set_value(sim.poc.states[s_expr[3]],-1);return}var p=y*sim.poc.internal_states.ledm_dim+x;set_var(sim.poc.internal_states.ledm_state[p].color,s)}if(32&bus_db){set_value(sim.poc.states[s_expr[3]],1);var s=0;var neltos=sim.poc.internal_states.ledm_neltos;var ldmstates=sim.poc.internal_states.ledm_state;for(var p=0;p>0);set_var(sim.poc.internal_states.ledm_state[p+1].color,(s&65280)>>8);set_var(sim.poc.internal_states.ledm_state[p+2].color,(s&16711680)>>16);set_var(sim.poc.internal_states.ledm_state[p+3].color,(s&4278190080)>>24)}}if(64&bus_db){set_value(sim.poc.states[s_expr[3]],1);var s=0;var c="";var neltos=sim.poc.internal_states.ledm_colors.length;for(var p=0;p>>8;s=s.toString(16);c="#"+simcoreui_pack(s,6);sim.poc.internal_states.ledm_colors[p]=c}neltos=sim.poc.internal_states.ledm_neltos;for(var p=0;p>24;var y=(dr&16711680)>>16;var s=dr&255;verbal="I/O device write at LEDMCR with value "+bus_db+" (set pixel x:"+x+", y:"+y+", with color:"+s+"). "}if(64&bus_db){verbal="I/O device write at LEDMCR with value "+bus_db+" (set color palette at:"+bus_db+"). "}break;default:break}return verbal}};sim.poc.behaviors.LEDM_RESET={nparameters:1,operation:function(s_expr){sim.poc.events.ledm={};sim.poc.internal_states.ledm_colors=colors_clone("");for(var i=0;i0)line2=context.newlines[context.newlines.length-1]+1;var line1=0;if(context.newlines.length>1)line1=context.newlines[context.newlines.length-2]+1;var lowI=line1;var highI=Math.min(context.t-1,line2+32);for(;typeof context.text[highI+1]!="undefined"&&context.text[highI+1]!="\n";highI++);var line3=highI+2;highI++;for(;typeof context.text[highI+1]!="undefined"&&context.text[highI+1]!="\n";highI++);highI++;context.error=" "+""+"...\n";for(var i=lowI;i"+"(*) "+i18n_get_TagFor("compiler","PROBLEM AROUND LINE")+" "+context.line+": "+msgError+". ";simcore_ga("compile","compile.error","compile.error."+msgError);return context}function frm_getLabelContext(context){return{t:context.t,line:context.line,newlines:context.newlines.slice()}}function frm_setLabelContext(context,labelContext){context.t=labelContext.t;context.line=labelContext.line;context.newlines=labelContext.newlines}function frm_getComments(context){return context.comments.join("\n")}function frm_resetComments(context){context.comments=[]}function frm_nextNative(context){var first=context.t;var last=context.t;var braces=1;while(context.t=Math.pow(2,simhw_sim_signal(nombre_tok).nbits)){return frm_langError(context,i18n_get_TagFor("compiler","OUT OF RANGE")+"'"+frm_getToken(context)+"'")}frm_nextToken(context)}if(frm_isToken(context,",")){frm_nextToken(context)}}var acc_cmt=frm_getComments(context);microcomments.push(acc_cmt);frm_resetComments(context);microprograma.push(microInstruccionAux);context.contadorMC++;frm_nextToken(context);if(frm_isToken(context,","))frm_nextToken(context)}if(microprograma.length===0){return frm_langError(context,i18n_get_TagFor("compiler","EMPTY MICROCODE"))}frm_nextToken(context);return{NATIVE:"",microprograma:microprograma,microcomments:microcomments}}function read_native(context){var microprograma=[];var microcomments=[];if(!frm_isToken(context,"{")){return frm_langError(context,i18n_get_TagFor("compiler","OPEN BRACE NOT FOUND"))}frm_nextNative(context);var native_code=frm_getToken(context);microprograma.push({});microcomments.push("");frm_nextToken(context);return{NATIVE:native_code,microprograma:microprograma,microcomments:microcomments}}function firm_begin_read(context){var instruccionAux={};instruccionAux.name=frm_getToken(context);instruccionAux["mc-start"]=context.contadorMC;instruccionAux["is_native"]=false;frm_nextToken(context);if(frm_isToken(context,",")){frm_nextToken(context)}if(frm_isToken(context,"native")){instruccionAux["is_native"]=true;frm_nextToken(context);if(frm_isToken(context,",")){frm_nextToken(context)}context.etiquetas[context.contadorMC]="fetch"}if(true==instruccionAux.is_native)ret=read_native(context);else ret=firm_mcode_signals_read(context);if(typeof ret.error!="undefined"){return ret}instruccionAux.signature="begin";instruccionAux.signatureGlobal="begin";instruccionAux.signatureUser="begin";instruccionAux.signatureRaw="begin";instruccionAux.NATIVE=ret.NATIVE;instruccionAux.microcode=ret.microprograma;instruccionAux.microcomments=ret.microcomments;context.instrucciones.push(instruccionAux);context.contadorMC=context.contadorMC+9;return{}}function firm_pseudoinstructions_read(context){frm_nextToken(context);if(!frm_isToken(context,"{")){return frm_langError(context,i18n_get_TagFor("compiler","OPEN BRACE NOT FOUND"))}frm_nextToken(context);while(!frm_isToken(context,"}")){var pseudoInstructionAux={};var pseudoInitial={};pseudoInitial.signature="";pseudoInitial.name="";pseudoInitial.fields=[];pseudoInitial.name=frm_getToken(context);pseudoInitial.signature=pseudoInitial.signature+frm_getToken(context)+",";frm_nextToken(context);while(!frm_isToken(context,"{")){var pseudoFieldAux={};pseudoFieldAux.name="";pseudoFieldAux.type="";pseudoFieldAux.indirect=false;if(frm_isToken(context,"(")){frm_nextToken(context);pseudoFieldAux.name+=frm_getToken(context);frm_nextToken(context);if(!frm_isToken(context,")")){return frm_langError(context,i18n_get_TagFor("compiler","CLOSE PAREN. NOT FOUND"))}frm_nextToken(context);pseudoFieldAux.indirect=true}else{pseudoFieldAux.name+=frm_getToken(context);frm_nextToken(context)}if(!frm_isToken(context,"=")){return frm_langError(context,i18n_get_TagFor("compiler","EQUAL NOT FOUND")+" (for name=type)")}frm_nextToken(context);pseudoFieldAux.type+=frm_getToken(context).replace("num","inm");switch(pseudoFieldAux.type){case"reg":case"inm":case"addr":case"address":break;default:return frm_langError(context,i18n_get_TagFor("compiler","INVALID PARAMETER")+pseudoFieldAux.type+"."+i18n_get_TagFor("compiler","ALLOWED PARAMETER"))}pseudoInitial.fields.push(pseudoFieldAux);if(pseudoFieldAux.indirect==true)pseudoInitial.signature+="("+frm_getToken(context)+"),";else pseudoInitial.signature+=frm_getToken(context)+",";frm_nextToken(context);if(frm_isToken(context,",")){frm_nextToken(context)}}frm_nextToken(context);pseudoInitial.signature=pseudoInitial.signature.substr(0,pseudoInitial.signature.length-1).replace(/num/g,"inm");pseudoInstructionAux.initial=pseudoInitial;var contPseudoFinish=0;var pseudoFinishAux={};pseudoFinishAux.signature="";var inStart=0;var cont=false;while(!frm_isToken(context,"}")){if(inStart==0){for(i=0;i32*parseInt(instruccionAux.nwords)-1){return frm_langError(context,i18n_get_TagFor("compiler","STARTBIT OoR")+"'"+frm_getToken(context)+"'")}frm_nextToken(context);if(!frm_isToken(context,",")){return frm_langError(context,i18n_get_TagFor("compiler","COMMA NOT FOUND"))}frm_nextToken(context);instruccionAux.fields[camposInsertados].stopbit=frm_getToken(context);var stop=parseInt(instruccionAux.fields[camposInsertados].stopbit);if(stop>32*parseInt(instruccionAux.nwords)){return frm_langError(context,i18n_get_TagFor("compiler","STOPBIT OoR")+"'"+frm_getToken(context)+"'")}for(i=stop;i<=start;i++){if(typeof instruccionAux.overlapping[i]!="undefined"){return frm_langError(context,i18n_get_TagFor("compiler","OVERLAPPING FIELD")+instruccionAux.fields[camposInsertados].name)}instruccionAux.overlapping[i]=1}frm_nextToken(context);if(!frm_isToken(context,")")){return frm_langError(context,i18n_get_TagFor("compiler","CLOSE PAREN. NOT FOUND"))}frm_nextToken(context);if(instruccionAux.fields[camposInsertados].type=="address"){if(frm_getToken(context)!="abs"&&frm_getToken(context)!="rel"){return frm_langError(context,i18n_get_TagFor("compiler","INCORRECT ADDRESSING"))}instruccionAux.fields[camposInsertados].address_type=frm_getToken(context);frm_nextToken(context)}if(frm_isToken(context,",")){frm_nextToken(context)}return{}}function firm_instruction_read_fixed_fields(context,instruccionAux,xr_info,all_ones_co){var ret={};frm_nextToken(context);if(!frm_isToken(context,"co")){return frm_langError(context,i18n_get_TagFor("compiler","NO CO FIELD"))}ret=firm_instruction_co_read(context,instruccionAux,xr_info,all_ones_co);if(typeof ret.error!="undefined"){return ret}if(frm_isToken(context,"cop")){ret=firm_instruction_cop_read(context,instruccionAux);if(typeof ret.error!="undefined"){return ret}}if(frm_isToken(context,"nwords")){ret=firm_instruction_nword_read(context,instruccionAux);if(typeof ret.error!="undefined"){return ret}}var campos=instruccionAux.fields;var firma=instruccionAux.signature;var firmaUsuario=instruccionAux.signatureUser;var firmaGlobal=instruccionAux.signatureGlobal;var camposInsertados=0;while(camposInsertados32*parseInt(instruccionAux.nwords)-1){return frm_langError(context,i18n_get_TagFor("compiler","STARTBIT OoR")+"'"+frm_getToken(context)+"'")}frm_nextToken(context);if(!frm_isToken(context,":")){return frm_langError(context,i18n_get_TagFor("compiler","COLON NOT FOUND"))}frm_nextToken(context);tmp_fields.stopbit=frm_getToken(context);var stop=parseInt(tmp_fields.stopbit);if(stop>32*parseInt(instruccionAux.nwords)){return frm_langError(context,i18n_get_TagFor("compiler","STOPBIT OoR")+"'"+frm_getToken(context)+"'")}frm_nextToken(context);if(!frm_isToken(context,")")){return frm_langError(context,i18n_get_TagFor("compiler","CLOSE PAREN. NOT FOUND"))}frm_nextToken(context);if(!frm_isToken(context,"=")){return frm_langError(context,i18n_get_TagFor("compiler","EQUAL NOT FOUND"))}frm_nextToken(context);var tmp_name=frm_getToken(context);if(["oc","cop","funct"].includes(tmp_fields.type)){tmp_fields.value=tmp_name}else{tmp_fields.name=tmp_name;var index_name=-1;for(var i=0;i100){return frm_langError(context,i18n_get_TagFor("compiler","MORE 100 FIELDS"))}if(auxValue=="co"){return frm_langError(context,i18n_get_TagFor("compiler","CO AS FIELD NAME"))}if(auxValue=="nwords"){return frm_langError(context,i18n_get_TagFor("compiler","NW AS FIELD NAME"))}}if(frm_isToken(context,"(")){firma=firma+",(";if(plus_found)firmaUsuario=firmaUsuario+"+(";else firmaUsuario=firmaUsuario+" (";frm_nextToken(context);if(!frm_isToken(context,",")&&!frm_isToken(context,"(")&&!frm_isToken(context,")")){var campoAux={};campoAux.name=frm_getToken(context);instruccionAux.fields.push(campoAux);instruccionAux.numeroCampos++;firma=firma+frm_getToken(context);firmaUsuario=firmaUsuario+frm_getToken(context);frm_nextToken(context)}else{return frm_langError(context,i18n_get_TagFor("compiler","MISSING TOKEN ON")+"'"+context.co_cop[instruccionAux.co].signature+"'")}if(frm_isToken(context,")")){firma=firma+")";firmaUsuario=firmaUsuario+")";frm_nextToken(context)}else{return frm_langError(context,i18n_get_TagFor("compiler","MISSING ) ON")+"'"+context.co_cop[instruccionAux.co].signature+"'")}}firma=firma+",";firmaUsuario=firmaUsuario+" "}firma=firma.substr(0,firma.length-1);firma=firma.replace(/,,/g,",");firmaUsuario=firmaUsuario.substr(0,firmaUsuario.length-1);firmaUsuario=firmaUsuario.replace(/ /g," ");instruccionAux.signature=firma;instruccionAux.signatureGlobal=firma;instruccionAux.signatureUser=firmaUsuario;instruccionAux.signatureRaw=firmaUsuario;if(2==context.version){ret=firm_instruction_read_fields_v2(context,instruccionAux,xr_info,all_ones_co)}else{ret=firm_instruction_read_fixed_fields(context,instruccionAux,xr_info,all_ones_co)}if(typeof ret.error!="undefined"){return ret}ret={};if(true==instruccionAux.is_native)ret=read_native(context);else ret=firm_mcode_signals_read(context);if(typeof ret.error!="undefined")return ret;instruccionAux.NATIVE=ret.NATIVE;instruccionAux.microcode=ret.microprograma;instruccionAux.microcomments=ret.microcomments;context.instrucciones.push(instruccionAux);context.contadorMC=context.contadorMC+9;if(!frm_isToken(context,"}")){return frm_langError(context,i18n_get_TagFor("compiler","CLOSE BRACE NOT FOUND"))}frm_nextToken(context);return{}}function simlang_native_adapt_replaceSyscall(icode){var rc="";var me="";var ff="capi_print_char|capi_print_int|capi_print_float|capi_print_double|capi_print_string|"+"capi_read_char|capi_read_int|capi_read_float|capi_read_double|capi_read_string|"+"capi_sbrk|capi_exit";var re=new RegExp("("+ff+")\\(([^)]*)\\)","g");var match=re.exec(icode);while(match!==null){var f=match[1].trim();var p=match[2].trim().split(",");switch(f){case"capi_print_char":rc="// "+f+" \n"+"\tvar tmp1 = 0x000000FF & "+p[0]+" ;\n"+"\tset_screen_content(tmp1.toString()) ;\n";break;case"capi_print_int":rc="// "+f+" \n"+"\tset_screen_content("+p[0]+".toString()) ;\n";break;case"capi_print_float":rc="// "+f+" \n"+"\tvar tmp1 = hex2float("+p[0]+") ;\n"+"\tset_screen_content(tmp1.toString()) ;\n";break;case"capi_print_double":rc="// "+f+" \n"+"\tvar tmp1 = hex2float("+p[0]+") ;\n"+"\tset_screen_content(tmp1.toString()) ;\n";break;case"capi_print_string":rc="// "+f+" \n"+'\tvar tmp1 = "" ;\n'+'\tvar tmp2 = simcore_native_get_value("MEMORY", '+p[0]+") ;\n"+"\tfor (var k="+p[0]+"+1; (tmp2 !== 0) && (k<8*1024); k++) {\n"+"\t tmp1 += tmp2.toString() ;\n"+'\t tmp2 = simcore_native_get_value("MEMORY", k) ;\n'+"\t} ;\n"+"\tset_screen_content(tmp1) ;\n";break;case"capi_read_char":rc="// "+f+" \n"+"\tvar tmp1 = get_screen_content() ;\n"+"\tvar "+p[0]+" = 0x000000FF & parseInt(tmp1) ;\n";break;case"capi_read_int":rc="// "+f+" \n"+"\tvar tmp1 = get_screen_content() ;\n"+"\tvar "+p[0]+" = parseInt(tmp1) ;\n";break;case"capi_read_float":rc="// "+f+" \n"+"\tvar tmp1 = get_screen_content() ;\n"+"\tvar "+p[0]+" = parseFloat(tmp1) ;\n";break;case"capi_read_double":rc="// "+f+" \n"+"\tvar tmp1 = get_screen_content() ;\n"+"\tvar "+p[0]+" = parseFloat(tmp1) ;\n";break;case"capi_read_string":rc="// "+f+" \n"+"\tvar tmp1 = get_screen_content() ;\n"+"\tfor (var k=0; k<"+p[1]+"; k++) {\n"+'\t simcore_native_set_value("MEMORY", '+p[0]+"+k, tmp1[k]) ;\n"+"\t} ;\n";break;case"capi_sbrk":rc="// "+f+" \n"+"// TODO: _sbrk_("+p[0]+", "+p[1]+");\n";break;case"capi_exit":rc="// "+f+" \n"+"// exit by setting P.C. register outside text segment\n"+"\tvar pc_name = simhw_sim_ctrlStates_get().pc.state ;\n"+'\tsimcore_native_set_value("CPU", pc_name, 0x00000000) ;\n';break;default:rc="// "+f+" \n"+"// unknown syscall\n";break}me=new RegExp(f+"\\(([^)]*)\\)","g");icode=icode.replace(me,rc);match=re.exec(icode)}return icode}function simlang_native_adapt_provideRegister(icode,reg_log,rf_phy,reg_phy){var re=new RegExp(reg_log,"g");if(icode.search(re)!=-1){icode="var "+reg_log+" = simcore_native_get_value('"+rf_phy+"', "+reg_phy+") ;\n"+icode+"\n"+"simcore_native_set_value('"+rf_phy+"', "+reg_phy+", "+reg_log+") ;\n"}return icode}function simlang_native_adapt_providePC(icode){var re=/PC/g;if(icode.search(re)!=-1){icode="var pc_name = simhw_sim_ctrlStates_get().pc.state ;\n"+"var PC = simcore_native_get_value('CPU', pc_name) ;\n"+icode+"simcore_native_set_value('CPU', pc_name, PC) ;\n"}return icode}function simlang_native_adapt_replaceIf(icode){var re=new RegExp("[iI][fF]\\s*\\(([^\\\\)]*)\\)\\s*{([^\\\\}]*)}\\s*[eE][lL][sS][eE]{[^}]*}\\s*","g");if(icode.search(re)!=-1){var match=re.exec(icode);try{icode=icode.replace(re,"\n")}catch(e){console.log("Syntax error that cause a run-time error: "+e.toString());console.log(match)}}return icode}function simlang_native_adapt_addInitialTabTab(lines_code){var code_lines;code_lines=lines_code.split("\n");code_lines=code_lines.map((function(x){return"\t\t"+x}));return code_lines.join("\n")}function simlang_native_adapt_instructionDefinition(lines_code){var code_lines=lines_code.split(";");if(code_lines.length===1&&!lines_code.trim().startsWith("if")){lines_code=lines_code+";\n"}lines_code=simlang_native_adapt_replaceSyscall(lines_code);lines_code=simlang_native_adapt_provideRegister(lines_code,"HI","CPU","'REG_RT2'");lines_code=simlang_native_adapt_provideRegister(lines_code,"LO","CPU","'REG_RT1'");lines_code=simlang_native_adapt_provideRegister(lines_code,"ra","BR","31");lines_code=simlang_native_adapt_providePC(lines_code);lines_code=simlang_native_adapt_addInitialTabTab(lines_code);return lines_code}function simlang_native_adapt_getField(j,rf,reg){return"\t\t"+"var f_"+reg+" = "+"simcore_native_get_field_from_ir(fields, "+j+") ;\n"+"\t\t"+"var "+reg+" = "+"simcore_native_get_value('"+rf+"', f_"+reg+") ;\n"}function simlang_native_adapt_setField(j,rf,reg){return"\t\t"+"simcore_native_set_value('"+rf+"', f_"+reg+", "+reg+");\n"}function simlang_native_adapt_headerField(fname,tname,start,stop){return"\t"+tname+"("+start+":"+stop+")="+fname+",\n"}function simlang_native_beginMicrocode(){var o="";o+="\n"+"#\n"+"# WepSIM (https://wepsim.github.io/wepsim/)\n"+"#\n"+"\n"+"firmware_version = 2\n"+"\n"+"##\n"+"## Microcode Section\n"+"##\n"+"\n"+"begin,\n"+"native\n"+"{\n"+" // (once) initialize BR2 as FP register file\n"+' if (typeof BR2 === "undefined")\n'+" {\n"+" BR2 = [] ;\n"+" FCSR = 0 ;\n"+" for (var i=0; i<32; i++)\n"+" {\n"+" BR2[i] = {\n"+' name:"R"+i,\n'+' verbal:"Register "+i,\n'+" visible:true,\n"+' nbits:"32",\n'+" value:0,\n"+" default_value:0,\n"+" draw_data:[]\n"+" } ;\n"+" }\n"+" }\n"+"\n"+" // fetch\n"+' var addr = simcore_native_get_value("CPU", "REG_PC") ;\n'+' var value = simcore_native_get_value("MEMORY", addr) ;\n'+"\n"+' simcore_native_set_value("CPU", "REG_IR", value) ;\n'+' simcore_native_set_value("CPU", "REG_PC", addr + 4) ;\n'+"\n"+" simcore_native_deco() ;\n"+" simcore_native_go_opcode() ;\n"+"}\n";return o}function simlang_native_adapt_instructionSet(instruction_list){var o="";var gfields=[];var sfields=[];var hfields=[];var io={};var line_signature="";var signature_names="";var signature_order="";for(var i=0;i> 32);\n"+"\t\t "+io.fields[j].name+"2 = "+io.fields[j].name+" >> 32;\n"+"\t\t"+"simcore_native_set_value('BR2', "+"f_"+io.fields[j].name+"+0, "+io.fields[j].name+"1);\n"+"\t\t"+"simcore_native_set_value('BR2', "+"f_"+io.fields[j].name+"+1, "+io.fields[j].name+"2);\n";break;case"inm":hfields[k]=simlang_native_adapt_headerField(io.fields[j].name,"inm",io.fields[j].startbit,io.fields[j].stopbit);gfields[k]="\t\t"+"var "+io.fields[j].name+" = "+"simcore_native_get_field_from_ir(fields, "+(k-1)+") ;\n\t";break}}var co_cop="\t"+"co=111111,"+"\n";var lines_code=simlang_native_adapt_instructionDefinition(io.definition);if(lines_code.trim()!==""){lines_code="\t\t"+"// instruction specific code"+"\n"+lines_code+"\n"}var gfields_str=gfields.join("");if(gfields_str.trim()!==""){gfields_str="\t\t"+"// get fields values..."+"\n"+gfields_str+"\n"}var sfields_str=sfields.join("");if(sfields_str.trim()!==""){sfields_str="\t\t"+"// set fields values..."+"\n"+sfields_str+"\n"}o+="\n"+line_signature+" {"+"\n"+co_cop+"\t"+"nwords="+io.nwords+","+"\n"+hfields.join("")+"\t"+"native,"+"\n"+"\t"+"{\n"+gfields_str+"\n"+lines_code+"\n"+sfields_str+"\n"+"\t\t"+"// go fetch"+"\n"+"\t\t"+"simcore_native_go_maddr(0);"+"\n"+"\t"+"}"+"\n"+"}\n"}return o}function simlang_native_registerSection(register_list){var o="";var d="";var index=0;for(index=0;index=last_co){return frm_langError(context,i18n_get_TagFor("compiler","NO CO CODES"))}first_co=parseInt(r.label_co,2);curr_instruction.co=r.label_co;context.co_cop[r.label_co].signature=curr_instruction.signature;if(r.label_cop!==""){curr_instruction.cop=r.label_cop;context.co_cop[r.label_co].cop[r.label_cop]=curr_instruction.signature;context.co_cop[r.label_co].withcop=true}}var labelsFounded=0;if(context.labelsNotFound.length>0){for(i=0;i0){for(var j=0;j0){file+="registers"+"\n{\n";for(i=0;i0)line2=context.newlines[context.newlines.length-1]+1;var line1=0;if(context.newlines.length>1)line1=context.newlines[context.newlines.length-2]+1;var lowI=line1;var highI=Math.min(context.t-1,line2+32);for(;typeof context.text[highI+1]!="undefined"&&context.text[highI+1]!="\n";highI++);var line3=highI+2;highI++;for(;typeof context.text[highI+1]!="undefined"&&context.text[highI+1]!="\n";highI++);highI++;context.error=" "+""+"...\n";for(var i=lowI;i"+"(*) "+i18n_get_TagFor("compiler","PROBLEM AROUND LINE")+" "+context.line+": "+msgError+". ";simcore_ga("compile","compile.error","compile.error."+msgError);return context}function asm_getLabelContext(context){return{t:context.t,line:context.line,newlines:context.newlines.slice()}}function asm_setLabelContext(context,labelContext){context.t=labelContext.t;context.line=labelContext.line;context.newlines=labelContext.newlines}function asm_getComments(context){return context.comments.join("\n")}function asm_resetComments(context){context.comments=[]}sim_segments={".kdata":{name:".kdata",begin:0,end:255,color:"#FF99CC",kindof:"data"},".ktext":{name:".ktext",begin:256,end:4095,color:"#A9D0F5",kindof:"text"},".data":{name:".data",begin:4096,end:32767,color:"#FACC2E",kindof:"data"},".text":{name:".text",begin:32768,end:131071,color:"#BEF781",kindof:"text"},".stack":{name:".stack",begin:131071,end:1048576,color:"#F1F2A3",kindof:"stack"}};function segments_addr_within_text(address){return address>=sim_segments[".text"].begin&&address<=sim_segments[".text"].end||address>=sim_segments[".ktext"].begin&&address<=sim_segments[".ktext"].end}function segments_addr_within_data(address){return address>=sim_segments[".data"].begin&&address<=sim_segments[".data"].end||address>=sim_segments[".kdata"].begin&&address<=sim_segments[".kdata"].end}BYTE_LENGTH=8;WORD_BYTES=4;WORD_LENGTH=WORD_BYTES*BYTE_LENGTH;function isDecimal(n){var ret={number:0,isDecimal:false};if(n.length>1&&n[0]=="0"){return ret}if(typeof n==="string"&&n.includes(".")){return ret}if(!isNaN(parseFloat(n))&&isFinite(n)){ret.isDecimal=true;ret.number=parseInt(n);return ret}return ret}function isOctal(n){var ret={number:0,isDecimal:false};if(n.substring(0,1)=="0"){var octal=n.substring(1).replace(/\b0+/g,"");ret.number=parseInt(octal,8);ret.isDecimal=ret.number.toString(8)===octal;return ret}return ret}function isHex(n){var ret={number:0,isDecimal:false};if(n.substring(0,2).toLowerCase()=="0x"){var hex=n.substring(2).toLowerCase().replace(/\b0+/g,"");if(hex==""){hex="0"}ret.number=parseInt(hex,16);ret.isDecimal=ret.number.toString(16)===hex;return ret}return ret}function isChar(n){var ret={number:0,isDecimal:false};var ret1=treatControlSequences(n);if(true==ret1.error){return ret}var possible_value=ret1.string;if(possible_value[0]=="'"&&possible_value[2]=="'"||possible_value[0]=='"'&&possible_value[2]=='"'){ret.number=possible_value.charCodeAt(1);ret.isDecimal=true;return ret}return ret}function isFloat(n){var ret={number:0,isFloat:false};var non_float=/[a-df-zA-DF-Z]+/;if(non_float.test(n)===true){return ret}ret.number=parseFloat(n);ret.isFloat=!isNaN(ret.number);return ret}function get_decimal_value(possible_value){var ret={number:0,isDecimal:true};ret=isOctal(possible_value);if(ret.isDecimal===false){ret=isHex(possible_value)}if(ret.isDecimal===false){ret=isDecimal(possible_value)}if(ret.isDecimal===false){ret=isChar(possible_value)}return ret}function decimal2binary(number,size){var num_bits=number.toString(2);if(num_bits.length>WORD_LENGTH){return[num_bits,size-num_bits.length]}num_bits=(number>>>0).toString(2);if(number>=0){return[num_bits,size-num_bits.length]}num_bits="1"+num_bits.replace(/^[1]+/g,"");if(num_bits.length>size){return[num_bits,size-num_bits.length]}num_bits="1".repeat(size-num_bits.length)+num_bits;return[num_bits,size-num_bits.length]}function get_inm_value(value){var ret1={};var ret={number:0,isDecimal:false,isFloat:false};ret1=get_decimal_value(value);if(ret1.isDecimal==true){ret1.isFloat=false;return ret1}ret1=isFloat(value);if(ret1.isFloat==true){ret1.isDecimal=false;return ret1}return ret}directives={".kdata":{name:".kdata",kindof:"segment",size:0},".ktext":{name:".ktext",kindof:"segment",size:0},".data":{name:".data",kindof:"segment",size:0},".text":{name:".text",kindof:"segment",size:0},".byte":{name:".byte",kindof:"datatype",size:1},".half":{name:".half",kindof:"datatype",size:2},".word":{name:".word",kindof:"datatype",size:4},".float":{name:".float",kindof:"datatype",size:4},".double":{name:".double",kindof:"datatype",size:8},".ascii":{name:".ascii",kindof:"datatype",size:1},".asciiz":{name:".asciiz",kindof:"datatype",size:1},".space":{name:".space",kindof:"datatype",size:1},".string":{name:".string",kindof:"datatype",size:1},".zero":{name:".zero",kindof:"datatype",size:1},".align":{name:".align",kindof:"datatype",size:0}};function get_datatype_size(datatype){if(typeof directives[datatype]==="undefined"){console.log("ERROR: not defined datatype: "+datatype+"\n");return 0}return directives[datatype].size}function is_directive_kindof(text,kindof){if(typeof directives[text]==="undefined"){return false}return directives[text].kindof==kindof}function is_directive(text){return typeof directives[text]!=="undefined"}function is_directive_segment(text){return is_directive_kindof(text,"segment")}function is_directive_datatype(text){return is_directive_kindof(text,"datatype")}function isValidTag(tag){if(tag.trim()==""){return false}var ret=isDecimal(tag[0]);if(ret.isDecimal==true){return false}var myRegEx=/[^a-z,_\d]/i;return!myRegEx.test(tag)}function sum_array(a){return a.reduce((function(a,b){return a+b}),0)}function get_candidate(advance,instruction){var candidate=false;var candidates={};var signatures={};for(i=0;icandidates[i]){min=candidates[i];candidate=i}}}return candidate?parseInt(candidate):candidate}function reset_assembly(nwords){return"0".repeat(WORD_LENGTH*nwords)}function assembly_replacement(machineCode,num_bits,startbit,stopbit,free_space){var machineCodeAux=machineCode.substring(0,machineCode.length-startbit+free_space);machineCode=machineCodeAux+num_bits+machineCode.substring(machineCode.length-stopbit);return machineCode}function assembly_co_cop(machineCode,co,cop){var xr_info=simhw_sim_ctrlStates_get();if(co!==false)machineCode=assembly_replacement(machineCode,co,WORD_LENGTH,WORD_LENGTH-6,0);if(cop!==false)machineCode=assembly_replacement(machineCode,cop,xr_info.ir.default_eltos.cop.length,0,0);return machineCode}function writememory_and_reset(mp,gen,nwords){if(gen.byteWord>=WORD_BYTES){var melto={value:gen.machineCode,source_tracking:gen.track_source,comments:gen.comments};main_memory_set(mp,"0x"+gen.seg_ptr.toString(16),melto);gen.seg_ptr=gen.seg_ptr+WORD_BYTES;gen.byteWord=0;gen.track_source=[];gen.comments=[];gen.machineCode=reset_assembly(nwords)}}function is_end_of_file(context){return""===asm_getToken(context)&&context.t>=context.text.length}function read_data(context,datosCU,ret){var seg_name=asm_getToken(context);var gen={};gen.byteWord=0;gen.track_source=[];gen.comments=[];gen.machineCode=reset_assembly(1);gen.seg_ptr=ret.seg[seg_name].begin;asm_nextToken(context);while(!is_directive_segment(asm_getToken(context))&&!is_end_of_file(context)){var possible_tag="";while(!is_directive_datatype(asm_getToken(context))&&!is_end_of_file(context)){possible_tag=asm_getToken(context);if("TAG"!=asm_getTokenType(context)){if(""==possible_tag){possible_tag="[empty]"}return asm_langError(context,i18n_get_TagFor("compiler","NO TAG OR DIRECTIVE")+"'"+possible_tag+"'")}var tag=possible_tag.substring(0,possible_tag.length-1);if(!isValidTag(tag)){return asm_langError(context,i18n_get_TagFor("compiler","INVALID TAG FORMAT")+"'"+tag+"'")}if(context.firmware[tag]){return asm_langError(context,i18n_get_TagFor("compiler","TAG OR INSTRUCTION")+"'"+tag+"'")}if(ret.labels2[tag]){return asm_langError(context,i18n_get_TagFor("compiler","REPEATED TAG")+"'"+tag+"'")}ret.labels2[tag]="0x"+(gen.seg_ptr+gen.byteWord).toString(16);asm_nextToken(context)}if(is_end_of_file(context)){break}var possible_datatype=asm_getToken(context);if(".word"==possible_datatype||".half"==possible_datatype||".byte"==possible_datatype||".float"==possible_datatype||".double"==possible_datatype){var size=get_datatype_size(possible_datatype);asm_nextToken(context);var possible_value=asm_getToken(context);while(!is_directive(asm_getToken(context))&&!is_end_of_file(context)){var label_found=false;var ret1=get_inm_value(possible_value);var number=ret1.number;if(ret1.isDecimal==false&&ret1.isFloat==false){if(".word"!==possible_datatype){return asm_langError(context,i18n_get_TagFor("compiler","NO NUMERIC DATATYPE")+"'"+possible_value+"'")}if(!isValidTag(possible_value)){return asm_langError(context,i18n_get_TagFor("compiler","INVALID TAG FORMAT")+"'"+possible_value+"'")}if(context.firmware[possible_value]){return asm_langError(context,i18n_get_TagFor("compiler","TAG OR INSTRUCTION")+"'"+possible_value+"'")}number=0;label_found=true}if(ret1.isDecimal==true)a=decimal2binary(number,size*BYTE_LENGTH);else a=float2binary(number,size*BYTE_LENGTH);num_bits=a[0];free_space=a[1];if(free_space<0){return asm_langError(context,i18n_get_TagFor("compiler","EXPECTED VALUE")+possible_datatype+"' ("+size*BYTE_LENGTH+" bits), "+i18n_get_TagFor("compiler","BUT INSERTED")+possible_value+"' ("+num_bits.length+" bits) "+i18n_get_TagFor("compiler","INSTEAD"))}writememory_and_reset(ret.mp,gen,1);while((gen.seg_ptr+gen.byteWord)%size!=0){gen.byteWord++;writememory_and_reset(ret.mp,gen,1)}if(""!=possible_tag){ret.labels2[possible_tag.substring(0,possible_tag.length-1)]="0x"+(gen.seg_ptr+gen.byteWord).toString(16);possible_tag=""}if(label_found){ret.labels["0x"+gen.seg_ptr.toString(16)]={name:possible_value,addr:gen.seg_ptr,startbit:31,stopbit:0,rel:undefined,nwords:1,labelContext:asm_getLabelContext(context)}}gen.machineCode=assembly_replacement(gen.machineCode,num_bits,BYTE_LENGTH*(size+gen.byteWord),BYTE_LENGTH*gen.byteWord,free_space);gen.byteWord+=size;gen.track_source.push(possible_value);asm_nextToken(context);if(","==asm_getToken(context)){asm_nextToken(context)}if(is_directive(asm_getToken(context))||"TAG"==asm_getTokenType(context)||"."==asm_getToken(context)[0]){break}possible_value=asm_getToken(context)}}else if(".space"==possible_datatype||".zero"==possible_datatype){asm_nextToken(context);var possible_value=asm_getToken(context);var ret1=isDecimal(possible_value);possible_value=ret1.number;if(ret1.isDecimal==false){return asm_langError(context,i18n_get_TagFor("compiler","NO NUMBER OF BYTES")+"'"+possible_value+"'")}if(possible_value<0){return asm_langError(context,i18n_get_TagFor("compiler","NO POSITIVE NUMBER")+"'"+possible_value+"'")}for(i=0;i=0){return asm_langError(context,i18n_get_TagFor("compiler","INVALID ALIGN VALUE")+"'"+possible_value+"'. "+i18n_get_TagFor("compiler","REMEMBER ALIGN VAL"))}writememory_and_reset(ret.mp,gen,1);var align_offset=Math.pow(2,parseInt(possible_value));switch(align_offset){case 1:break;case 2:if(gen.byteWord&1==1)gen.byteWord++;break;default:writememory_and_reset(ret.mp,gen,1);while(gen.seg_ptr%align_offset!=0||gen.byteWord!=0){gen.byteWord++;writememory_and_reset(ret.mp,gen,1)}}asm_nextToken(context)}else if(".ascii"==possible_datatype||".asciiz"==possible_datatype||".string"==possible_datatype){asm_nextToken(context);var possible_value=asm_getToken(context);var ret1=treatControlSequences(possible_value);if(true==ret1.error){return asm_langError(context,ret1.string)}possible_value=ret1.string;while(!is_directive(asm_getToken(context))&&!is_end_of_file(context)){writememory_and_reset(ret.mp,gen,1);if('"'!==possible_value[0]){return asm_langError(context,i18n_get_TagFor("compiler","NO QUOTATION MARKS")+"'"+possible_value+"'")}if('"'!==possible_value[possible_value.length-1]){return asm_langError(context,i18n_get_TagFor("compiler","NOT CLOSED STRING"))}if(""==possible_value){return asm_langError(context,i18n_get_TagFor("compiler","NOT CLOSED STRING"))}if("STRING"!=asm_getTokenType(context)){return asm_langError(context,i18n_get_TagFor("compiler","NO QUOTATION MARKS")+"'"+possible_value+"'")}for(i=0;i0){var melto={value:gen.machineCode,source_tracking:gen.track_source,comments:gen.comments};main_memory_set(ret.mp,"0x"+gen.seg_ptr.toString(16),melto);gen.seg_ptr=gen.seg_ptr+WORD_BYTES}ret.seg[seg_name].end=gen.seg_ptr}function read_text(context,datosCU,ret){var seg_name=asm_getToken(context);var seg_ptr=ret.seg[seg_name].begin;var firmware=context.firmware;var pseudoInstructions=context.pseudoInstructions;var finish=[];var isPseudo=false;var pfinish=[];var npseudoInstructions=0;var pseudo_fields={};var counter=-1;var candidate;var error="";var registers={};for(i=0;i=signature_fields[j].length){if("TAG"!=asm_getTokenType(context)&&!firmware[value]&&!is_end_of_file(context)){advance[j]=0}continue}var field=firmware[instruction][j].fields[i];var size=field.startbit-field.stopbit+1;var label_found=false;var sel_found=false;switch(field.type){case"address":case"inm":if(isPseudo&&"sel"==value){counter++;var start=pfinish[counter++];var stop=pfinish[counter++];var value=pseudo_fields[pfinish[counter++]];counter++;sel_found=true}var ret1=get_inm_value(value);converted=ret1.number;if(ret1.isDecimal==false&&ret1.isFloat==false){error=i18n_get_TagFor("compiler","NO NUMERIC DATATYPE")+"'"+value+"'";if(value[0]=="'"){advance[j]=0;break}if(!isValidTag(value)){advance[j]=0;break}if(firmware[value]){error=i18n_get_TagFor("compiler","TAG OR INSTRUCTION")+"'"+value+"'";advance[j]=0;break}label_found=true}if(sel_found){if(ret1.isDecimal==true)res=decimal2binary(converted,WORD_LENGTH);else res=float2binary(converted,WORD_LENGTH);if(res[1]<0){return asm_langError(context,"'"+value+"' "+i18n_get_TagFor("compiler","BIGGER THAN")+WORD_LENGTH+" "+i18n_get_TagFor("compiler","BITS"))}if(label_found){s[i+1]=value}else{converted="0".repeat(res[1])+res[0];converted=converted.substring(WORD_LENGTH-start-1,WORD_LENGTH-stop);converted=parseInt(converted,2);s[i+1]="0x"+converted.toString(16)}}if(!label_found){if(ret1.isDecimal==true)var res=decimal2binary(converted,size);else var res=float2binary(converted,size);if(field.type=="address"&&"rel"==field.address_type){res=decimal2binary(converted,size)}}break;case"reg":if(typeof value==="undefined"){error=i18n_get_TagFor("compiler","INS. MISSING FIELD");advance[j]=0;break}var aux=false;if(value.startsWith("(")){if("(reg)"!=signature_fields[j][i]){error=i18n_get_TagFor("compiler","UNEXPECTED (REG)");advance[j]=0;break}if(counter==-1){asm_nextToken(context);value=asm_getToken(context)}else{value=pseudo_fields[pfinish[counter++]]}aux=true}else{if("(reg)"==signature_fields[j][i]){error=i18n_get_TagFor("compiler","EXPECTED (REG)")+"'"+value+"'";advance[j]=0;break}}if(typeof registers[value]==="undefined"){error=i18n_get_TagFor("compiler","EXPECTED REG")+"'"+value+"'";advance[j]=0;break}if(aux){s[i+1]="("+value+")";if(counter==-1){asm_nextToken(context);aux=asm_getToken(context)}else{aux=pfinish[counter++]}if(")"!=aux){error=i18n_get_TagFor("compiler","CLOSE PAREN. NOT FOUND");advance[j]=0;break}}var ret1=isDecimal(registers[value]);converted=ret1.number;var res=decimal2binary(converted,size);value=s[i+1];break;default:return asm_langError(context,i18n_get_TagFor("compiler","UNKNOWN 1")+"'"+field.type+"'")}if(advance[j]==1&&!label_found){if(res[1]<0){if(field.type=="address"&&"rel"==field.address_type){error="Relative value ("+(converted-seg_ptr-WORD_BYTES)+" in decimal)"+i18n_get_TagFor("compiler","NEEDS")+res[0].length+i18n_get_TagFor("compiler","SPACE FOR # BITS")+size+" "+i18n_get_TagFor("compiler","BITS")}else{error="'"+value+"'"+i18n_get_TagFor("compiler","NEEDS")+res[0].length+i18n_get_TagFor("compiler","SPACE FOR # BITS")+size+" "+i18n_get_TagFor("compiler","BITS")}advance[j]=0}}if(advance[j]==1&&!(isPseudo&&counter==-1)){binaryAux[j][i]={num_bits:label_found?false:res[0],free_space:label_found?false:res[1],startbit:field.startbit,stopbit:field.stopbit,rel:label_found?field.address_type:false,islabel:label_found,field_name:value,issel:sel_found,sel_start:start,sel_stop:stop}}}if(sum_array(advance)==0){break}if("TAG"==asm_getTokenType(context)||firmware[value]){break}}for(i=0;i0&&i0&&i==firmware[instruction].length-1){format+=" or "}format+="'"+firmware[instruction][i].signatureUser+"'"}if(format==""){format="'"+instruction+"' "+i18n_get_TagFor("compiler","UNKNOWN MC FORMAT")}var sum_res=sum_array(advance);if(sum_res==0){if(advance.length===1){return asm_langError(context,error+". "+i18n_get_TagFor("compiler","REMEMBER I. FORMAT")+format)}return asm_langError(context,i18n_get_TagFor("compiler","NOT MATCH MICRO")+" "+i18n_get_TagFor("compiler","REMEMBER I. FORMAT")+format+". "+i18n_get_TagFor("compiler","CHECK MICROCODE"))}if(sum_res>1){candidate=get_candidate(advance,firmware[instruction]);if(candidate===false){return asm_langError(context,i18n_get_TagFor("compiler","SEVERAL CANDIDATES")+format)}}if(isPseudo){if(counter==-1){var s_ori=s.join(" ");s_ori=s_ori.trim();var key="";var val="";pseudo_fields={};for(i=0;i1){s_ori=" "}if(pfinish[counter]=="\n"){counter++}}var machineCode=reset_assembly(firmware[instruction][candidate].nwords);machineCode=assembly_co_cop(machineCode,firmware[instruction][candidate].co,firmware[instruction][candidate].cop);var l_addr="";for(i=0;i=0;i--){if(icontext.text.length){break}}ret.seg[seg_name].end=seg_ptr}function simlang_compile_v1(text,datosCU){var context={};context.line=1;context.error=null;context.i=0;context.contadorMC=0;context.etiquetas={};context.labelsNotFound=[];context.instrucciones=[];context.co_cop={};context.registers=[];context.text=text;context.tokens=[];context.token_types=[];context.t=0;context.newlines=[];context.pseudoInstructions=[];context.stackRegister=null;context.firmware={};context.comments=[];for(i=0;i=0;j--){var melto={value:machineCode.substring(j*WORD_LENGTH,(j+1)*WORD_LENGTH),source_tracking:null,comments:null};main_memory_set(ret.mp,"0x"+auxAddr.toString(16),melto);auxAddr+=WORD_BYTES}}if(text_found){if(typeof ret.labels2["main"]==="undefined"&&typeof ret.labels2["kmain"]==="undefined"){return asm_langError(context,i18n_get_TagFor("compiler","NO MAIN OR KMAIN"))}}for(var key in ret.labels2){ret.revlabels2[ret.labels2[key]]=key}for(var skey in ret.seg){ret.revseg.push({begin:parseInt(ret.seg[skey].begin),name:skey})}return ret}function simlang_compile(text,datosCU){return simlang_compile_v1(text,datosCU)}
\ No newline at end of file
+var WSCFG={};function get_cfg(field){return WSCFG[field].value}function set_cfg(field,value){WSCFG[field].value=value}function update_cfg(field,value){WSCFG[field].value=value;simcore_record_append_new("Set configuration option "+field+" to "+value,'update_cfg("'+field+'","'+value+'");\n');simcore_ga("config","config."+WSCFG.version.value,"config."+WSCFG.version.value+"."+field+"."+value);save_cfg()}function is_cfg_empty(){return Object.keys(WSCFG).length===0}function save_cfg(){try{for(var item in WSCFG){localStorage.setItem("wepsim_"+item,get_cfg(item))}}catch(err){console.log("WepSIM can not save the configuration in a persistent way on this web browser,\n"+"found following error: \n"+err.message)}set_secondary_cfg()}function restore_cfg(){WSCFG=get_primary_cfg();set_secondary_cfg();if(localStorage===null){return}var default_value=null;var saved_value=null;for(var item in WSCFG){if(item==="version"){continue}default_value=get_cfg(item);set_cfg(item,localStorage.getItem("wepsim_"+item));if(WSCFG[item].type!="string"){try{saved_value=JSON.parse(get_cfg(item));set_cfg(item,saved_value)}catch(e){saved_value=null}}if(saved_value===null){set_cfg(item,default_value)}}set_secondary_cfg()}function reset_cfg(){WSCFG=get_primary_cfg();set_secondary_cfg();save_cfg()}function reset_cfg_values(){WSCFG=get_primary_cfg();set_secondary_cfg()}function upgrade_cfg(){var wscfg=get_primary_cfg();var item=null;for(item in wscfg){if(typeof WSCFG[item]==="undefined"){WSCFG[item]=wscfg[item]}if(WSCFG[item].value===null||WSCFG[item].value==="null"){WSCFG[item].value=wscfg[item].value}}if(wscfg.build.value!=WSCFG.build.value){for(item in wscfg){if(wscfg[item].upgrade){WSCFG[item]=wscfg[item]}}}set_secondary_cfg();save_cfg()}function is_mobile(){if(typeof navigator==="undefined"){return false}if(typeof navigator.userAgentData=="undefined"){return false}return navigator.userAgentData.mobile}function is_cordova(){return document.URL.indexOf("http://")===-1&&document.URL.indexOf("https://")===-1}function get_primary_cfg(){var wscfg={version:{upgrade:false,type:"string",value:"2.3.0"},build:{upgrade:true,type:"string",value:"2.3.0.20230415A"},color_data_active:{upgrade:false,type:"string",value:"#0066FF"},color_data_inactive:{upgrade:false,type:"string",value:"#000000"},color_name_active:{upgrade:false,type:"string",value:"#FF0000"},color_name_inactive:{upgrade:false,type:"string",value:"#000000"},size_active:{upgrade:false,type:"float",value:3},size_inactive:{upgrade:false,type:"float",value:1},is_byvalue:{upgrade:false,type:"boolean",value:false},CPUCU_show_graph:{upgrade:true,type:"boolean",value:true},RF_display_format:{upgrade:false,type:"string",value:"unsigned_16_fill"},RF_display_name:{upgrade:false,type:"string",value:"numerical"},MEM_display_format:{upgrade:true,type:"string",value:"unsigned_16_nofill"},MEM_show_segments:{upgrade:true,type:"boolean",value:false},MEM_show_source:{upgrade:true,type:"boolean",value:false},MEM_display_direction:{upgrade:true,type:"string",value:"h2l"},is_editable:{upgrade:false,type:"boolean",value:true},DBG_delay:{upgrade:false,type:"int",value:5},DBG_level:{upgrade:false,type:"string",value:"microinstruction"},DBG_limitins:{upgrade:false,type:"int",value:1e4},DBG_limitick:{upgrade:false,type:"int",value:1e3},DBG_skip_notifycolon:{upgrade:true,type:"boolean",value:false},ICON_theme:{upgrade:false,type:"string",value:"classic"},AS_enable:{upgrade:true,type:"boolean",value:true},AS_delay:{upgrade:true,type:"int",value:500},NOTIF_delay:{upgrade:false,type:"int",value:1e3},CPUCU_size:{upgrade:true,type:"int",value:7},C1C2_size:{upgrade:true,type:"int",value:8},SHOWCODE_label:{upgrade:false,type:"boolean",value:true},SHOWCODE_addr:{upgrade:false,type:"boolean",value:true},SHOWCODE_hex:{upgrade:false,type:"boolean",value:true},SHOWCODE_ins:{upgrade:false,type:"boolean",value:true},SHOWCODE_pins:{upgrade:false,type:"boolean",value:true},ws_mode:{upgrade:false,type:"string",value:"newbie"},ws_action:{upgrade:false,type:"string",value:"checkpoint"},is_interactive:{upgrade:false,type:"boolean",value:true},is_quick_interactive:{upgrade:false,type:"boolean",value:false},ws_idiom:{upgrade:false,type:"string",value:"en"},use_voice:{upgrade:false,type:"boolean",value:false},ws_skin_ui:{upgrade:false,type:"string",value:"classic"},ws_skin_user:{upgrade:false,type:"string",value:"only_asm:of:only_frequent:of"},ws_skin_dark_mode:{upgrade:false,type:"boolean",value:false},editor_theme:{upgrade:false,type:"string",value:"default"},editor_mode:{upgrade:false,type:"string",value:"default"},base_url:{upgrade:true,type:"string",value:"https://acaldero.github.io/wepsim/ws_dist/"},cfg_url:{upgrade:true,type:"string",value:"examples/configuration/default.json"},example_url:{upgrade:true,type:"string",value:"examples/examples_set/default.json"},hw_url:{upgrade:true,type:"string",value:"examples/hardware/hw.json"},max_json_size:{upgrade:true,type:"int",value:1*1024*1024},verbal_verbose:{upgrade:false,type:"string",value:"math"},extended_ui:{upgrade:false,type:"boolean",value:false},use_ga:{upgrade:false,type:"boolean",value:true}};if(is_mobile()){wscfg.NOTIF_delay.value=2e3;wscfg.ICON_theme.value="cat1";wscfg.CPUCU_size.value=7;wscfg.C1C2_size.value=14;wscfg.ws_skin_ui.value="compact"}return wscfg}function set_secondary_cfg(){var dbg_delay=get_cfg("DBG_delay");if(dbg_delay<5){cfg_show_rf_delay=350;cfg_show_eltos_delay=350;cfg_show_main_memory_delay=450;cfg_show_control_memory_delay=360;cfg_show_dbg_ir_delay=300;cfg_show_rf_refresh_delay=120}else{cfg_show_rf_delay=100;cfg_show_eltos_delay=100;cfg_show_main_memory_delay=150;cfg_show_control_memory_delay=120;cfg_show_dbg_ir_delay=100;cfg_show_rf_refresh_delay=30}cfg_show_asmdbg_pc_delay=50;if(dbg_delay<3)cfg_show_asmdbg_pc_delay=150}var ws_cfg_hash={};var ws_cfg_set=[];function cfgset_init(){var url_list=get_cfg("cfg_url");ws_cfg_set=wepsim_url_getJSON(url_list);for(var i=0;i"+index+"/"+ws_records.length+" "+msg)}if(ws_record_pb_obj!==null){var next_pbval=100*index/ws_records.length;ws_record_pb_obj.css("width",next_pbval+"%").attr("aria-valuenow",next_pbval)}}function simcore_record_playAt(index_current,index_last){if(ws_is_playing===false){simcore_record_showMsg(ws_last_played,"Stopped by user.");return}ws_last_played=index_current;if(index_current>=index_last){simcore_record_showMsg(index_last,"Done.");return}if(ws_records[index_current].description==="_pending event_"){simcore_record_playAt(index_current+1,index_last);return}eval(ws_records[index_current].element);var index_next=index_current+1;simcore_record_showMsg(index_next,ws_records[index_current].description);var wait_time=500;if(index_next0&&ws_records[ws_records.length-1].description==="_pending event_"){distance=ws_glowing_time}simcore_record_pushElto("_pending event_",";",distance)}}function simcore_record_resolve_pending(description,elto){if(ws_is_recording===true){var last_pending=ws_records.length;while(last_pending>0){last_pending--;if(ws_records[last_pending].description==="_pending event_"){break}}if(last_pending===0){simcore_record_setTimeBeforeNow(0);simcore_record_append_new(description,elto);return}ws_records[last_pending].description=description;ws_records[last_pending].element=elto;simcore_record_showMsg(0,"Recording...")}}function simcore_record_setTimeBeforeNow(distance){ws_last_time=Date.now()-distance}function simcore_record_addTimeAfterLast(distance){ws_last_time=ws_last_time+distance}function array_includes(arr,val){if(typeof arr.includes!="undefined"){return arr.includes(val)}for(var i=0;i0){e=i;n=n+1}}if(n>0){var tri_state_names=simhw_internalState("tri_state_names");var tri_name=tri_state_names[e];update_draw(simhw_sim_signal(tri_name),1)}if(n>1){update_bus_visibility("internalbus_fire","visible");simhw_internalState_set("fire_visible","internalbus",true);simhw_sim_state("BUS_IB").value=4294967295}else{update_bus_visibility("internalbus_fire","hidden");simhw_internalState_set("fire_visible","internalbus",false)}return n}function update_system_bus_fire(number_active_tri){if(simhw_internalState_get("fire_visible","databus")==true){update_bus_visibility("databus_fire","hidden");simhw_internalState_set("fire_visible","databus",false)}if(number_active_tri>1){update_bus_visibility("databus_fire","visible");simhw_internalState_set("fire_visible","databus",true);simhw_sim_state("BUS_DB").value=4294967295}return number_active_tri}function fn_updateE_now(key){if("E"==simhw_sim_signal(key).type){update_state(key)}}function fn_updateE_future(key){if(jit_fire_ndep[key]<1)fn_updateE_now(key);else return new Promise((function(resolve,reject){fn_updateE_now(key)}))}function fn_updateL_now(key){update_draw(simhw_sim_signal(key),simhw_sim_signal(key).value);if("L"==simhw_sim_signal(key).type){update_state(key)}}function fn_updateL_future(key){if(jit_fire_ndep[key]<1)fn_updateL_now(key);else return new Promise((function(resolve,reject){fn_updateL_now(key)}))}function update_state(key){var index_behavior=0;switch(simhw_sim_signal(key).behavior.length){case 0:return;break;case 1:index_behavior=0;break;default:index_behavior=simhw_sim_signal(key).value;if(simhw_sim_signal(key).behavior.lengthreg_maddr){break}assoc_i=i}if(-1==assoc_i){ws_alert("A new 'unknown' instruction is inserted,\n"+"please edit it (co, nwords, etc.) in the firmware textarea.");var new_ins=new Object;new_ins["name"]="unknown";new_ins["signature"]="unknown";new_ins["signatureGlobal"]="unknown";new_ins["co"]=0;new_ins["nwords"]=0;new_ins["mc-start"]=0;new_ins["fields"]=new Array;new_ins["microcode"]=new Array;new_ins["microcomments"]=new Array;SIMWARE["firmware"].push(new_ins);assoc_i=SIMWARE["firmware"].length-1}var pos=reg_maddr-parseInt(SIMWARE["firmware"][assoc_i]["mc-start"]);if(typeof SIMWARE["firmware"][assoc_i]["microcode"][pos]=="undefined"){SIMWARE["firmware"][assoc_i]["microcode"][pos]=new Object;SIMWARE["firmware"][assoc_i]["microcomments"][pos]=""}SIMWARE["firmware"][assoc_i]["microcode"][pos][key]=simhw_sim_signal(key).value;if(simhw_sim_signal(key).default_value==simhw_sim_signal(key).value){delete SIMWARE["firmware"][assoc_i]["microcode"][pos][key]}var bits=get_value(simhw_sim_state("REG_IR")).toString(2);bits="00000000000000000000000000000000".substring(0,32-bits.length)+bits;show_memories_values()}function propage_signal_update(key){if(true===get_cfg("is_interactive")){if(simhw_sim_signal(key).value!=simhw_sim_signal(key).default_value)simhw_sim_state("REG_MICROINS").value[key]=simhw_sim_signal(key).value;else delete simhw_sim_state("REG_MICROINS").value[key];var maddr_name=simhw_sim_ctrlStates_get().mpc.state;var curr_maddr=get_value(simhw_sim_state(maddr_name));var mc_obj=simhw_internalState("MC");var mcelto=control_memory_get(mc_obj,curr_maddr);if(typeof mcelto==="undefined"){mcelto={value:{},comments:null}}mcelto.value[key]=simhw_sim_signal(key).value;mcelto.comments=[];control_memory_set(mc_obj,curr_maddr,mcelto);update_signal_firmware(key);var SIMWARE=get_simware();document.getElementById("inputFirmware").value=saveFirmware(SIMWARE)}compute_behavior("FIRE "+key)}function update_memories(preSIMWARE){var i=0;set_simware(preSIMWARE);var SIMWARE=get_simware();simhw_internalState_reset("MC",{});var mc_obj=simhw_internalState("MC");var mcelto=null;for(i=0;i>23&255)-127;var mantissa=1+(hexvalue&8388607)/8388608;var valuef=sign*mantissa*Math.pow(2,exponent);if(-127===exponent)if(1===mantissa)valuef=sign===1?"+0":"-0";else valuef=sign*((hexvalue&8388607)/8388607)*Math.pow(2,-126);if(128===exponent)if(1===mantissa)valuef=sign===1?"+Inf":"-Inf";else valuef="NaN";return valuef}function uint_to_float32(value){var buf=new ArrayBuffer(4);new Uint32Array(buf)[0]=value;return new Float32Array(buf)[0]}function float32_to_uint(value){var buf=new ArrayBuffer(4);new Float32Array(buf)[0]=value;return new Uint32Array(buf)[0]}function float_class(a){var s=a&2147483648;s=s>>31;var e=a&2139095040;e=e>>23;var m=a&8388607;let rd=0;if(!m&&!e){rd=s?3:4}else if(!e){rd=s?2:6}else if(!(e^255)){if(m)rd=s?8:9;else rd=s?0:7}else{rd=s?1:5}return rd}function float_class_power2(a){var s=a&2147483648;s=s>>31;var e=a&2139095040;e=e>>23;var m=a&8388607;let rd=0;if(!m&&!e){rd=s?1<<3:1<<4}else if(!e){rd=s?1<<2:1<<6}else if(!(e^255)){if(m)rd=s?1<<8:1<<9;else rd=s?1<<0:1<<7}else{rd=s?1<<1:1<<5}return rd}function hex2char8(hexvalue){var valuec=[];valuec[0]=String.fromCharCode((hexvalue&4278190080)>>24);valuec[1]=String.fromCharCode((hexvalue&16711680)>>16);valuec[2]=String.fromCharCode((hexvalue&65280)>>8);valuec[3]=String.fromCharCode((hexvalue&255)>>0);return valuec}function simcoreui_pack(val,pack_size){var base_str="0".repeat(pack_size);return base_str.substring(0,pack_size-val.length)+val}function hex2bin(hexvalue){var valuebin=hexvalue.toString(2);valuebin=simcoreui_pack(valuebin,32);valuebin=valuebin.substring(0,4)+" "+valuebin.substring(4,8)+" "+valuebin.substring(8,12)+" "+valuebin.substring(12,16)+" "+valuebin.substring(16,20)+" "+valuebin.substring(20,24)+" "+valuebin.substring(24,28)+" "+valuebin.substring(28,32);return valuebin}function value2string(format,value){var fmt_value="";var fmt=format.split("_");switch(fmt[0]){case"unsigned":fmt_value=value.toString(fmt[1]).toUpperCase();break;case"float":fmt_value=hex2float(value);break;case"char":fmt_value="'"+String.fromCharCode(value)+"'";break;default:fmt_value=value.toString()}if(fmt[2]==="fill"){fmt_value=simcoreui_pack(fmt_value,8)}return fmt_value}function show_rf_names(){return simcore_action_ui("CPU",0,"show_rf_names")()}function get_screen_content(){return simcore_action_ui("SCREEN",0,"get_screen_content")()}function set_screen_content(screen){simcore_action_ui("SCREEN",0,"set_screen_content")(screen)}function get_keyboard_content(){return simcore_action_ui("KBD",0,"get_keyboard_content")()}function set_keyboard_content(keystrokes){simcore_action_ui("KBD",0,"set_keyboard_content")(keystrokes)}function show_main_memory(memory,index,redraw,updates){return simcore_action_ui("MEMORY",0,"show_main_memory")(memory,index,redraw,updates)}function show_control_memory(memory,index,redraw){return simcore_action_ui("MEMORY",0,"show_control_memory")(memory,index,redraw)}function show_cache_memory(memory){return simcore_action_ui("MEMORY",0,"show_cache_memory")(memory)}function show_memories_values(){var pc_name=simhw_sim_ctrlStates_get().pc.state;var reg_pc=get_value(simhw_sim_state(pc_name));show_main_memory(simhw_internalState("MP"),reg_pc,true,true);var maddr_name=simhw_sim_ctrlStates_get().mpc.state;var reg_maddr=get_value(simhw_sim_state(maddr_name));show_control_memory(simhw_internalState("MC"),reg_maddr,true);show_cache_memory(simhw_internalState("CM"))}function update_draw(obj,value){return simcore_action_ui("CPU",1,"update_draw")(obj,value)}function update_bus_visibility(bus_name,value){return simcore_action_ui("CPU",1,"update_bus_visibility")(bus_name,value)}function refresh(){for(var key in simhw_sim_signals()){update_draw(simhw_sim_signals()[key],simhw_sim_signals()[key].value)}show_dbg_ir(get_value(simhw_sim_state("REG_IR_DECO")))}function show_dbg_ir(value){return simcore_action_ui("MEMORY",0,"show_dbg_ir")(value)}function show_dbg_mpc(){return simcore_action_ui("MEMORY",0,"show_dbg_mpc")()}function show_asmdbg_pc(){return simcore_action_ui("MEMORY",0,"show_asmdbg_pc")()}function ws_alert(msg){if(typeof document==="undefined"){console.log(msg);return true}alert(msg);return true}function element_scroll_get(list_id){var offset=0;var obj_byid=$(list_id);if(obj_byid.length>0){offset=obj_byid[0].scrollTop}return offset}function element_scroll_set(list_id,offset){var obj_byid=$(list_id);if(obj_byid.length>0){obj_byid[0].scrollTop=offset}}function element_scroll_setRelative(list_id,obj_id,offset){var obj_byid=$(obj_id);if(obj_byid.length>0){var topPos=obj_byid[0].offsetTop;element_scroll_set(list_id,topPos+offset)}}var colors_schemes={color14:["#000000","#FFFFFF","#FF0000","#FF8800","#FFFF00","#88FF00","#00FF00","#00FF88","#00FFFF","#0088FF","#0000FF","#8800FF","#FF00FF","#FF0088"],color16:["#000000","#FFFFFF","#9D9D9D","#BE2633","#E06F8B","#493C2B","#A46422","#EB8931","#F7E26B","#2F484E","#44891A","#A3CE27","#1B2632","#005784","#31A2F2","#B2DCEF"],color256:["#000000","#800000","#008000","#808000","#000080","#800080","#008080","#c0c0c0","#808080","#ff0000","#00ff00","#ffff00","#0000ff","#ff00ff","#00ffff","#ffffff","#000000","#00005f","#000087","#0000af","#0000d7","#0000ff","#005f00","#005f5f","#005f87","#005faf","#005fd7","#005fff","#008700","#00875f","#008787","#0087af","#0087d7","#0087ff","#00af00","#00af5f","#00af87","#00afaf","#00afd7","#00afff","#00d700","#00d75f","#00d787","#00d7af","#00d7d7","#00d7ff","#00ff00","#00ff5f","#00ff87","#00ffaf","#00ffd7","#00ffff","#5f0000","#5f005f","#5f0087","#5f00af","#5f00d7","#5f00ff","#5f5f00","#5f5f5f","#5f5f87","#5f5faf","#5f5fd7","#5f5fff","#5f8700","#5f875f","#5f8787","#5f87af","#5f87d7","#5f87ff","#5faf00","#5faf5f","#5faf87","#5fafaf","#5fafd7","#5fafff","#5fd700","#5fd75f","#5fd787","#5fd7af","#5fd7d7","#5fd7ff","#5fff00","#5fff5f","#5fff87","#5fffaf","#5fffd7","#5fffff","#870000","#87005f","#870087","#8700af","#8700d7","#8700ff","#875f00","#875f5f","#875f87","#875faf","#875fd7","#875fff","#878700","#87875f","#878787","#8787af","#8787d7","#8787ff","#87af00","#87af5f","#87af87","#87afaf","#87afd7","#87afff","#87d700","#87d75f","#87d787","#87d7af","#87d7d7","#87d7ff","#87ff00","#87ff5f","#87ff87","#87ffaf","#87ffd7","#87ffff","#af0000","#af005f","#af0087","#af00af","#af00d7","#af00ff","#af5f00","#af5f5f","#af5f87","#af5faf","#af5fd7","#af5fff","#af8700","#af875f","#af8787","#af87af","#af87d7","#af87ff","#afaf00","#afaf5f","#afaf87","#afafaf","#afafd7","#afafff","#afd700","#afd75f","#afd787","#afd7af","#afd7d7","#afd7ff","#afff00","#afff5f","#afff87","#afffaf","#afffd7","#afffff","#d70000","#d7005f","#d70087","#d700af","#d700d7","#d700ff","#d75f00","#d75f5f","#d75f87","#d75faf","#d75fd7","#d75fff","#d78700","#d7875f","#d78787","#d787af","#d787d7","#d787ff","#d7af00","#d7af5f","#d7af87","#d7afaf","#d7afd7","#d7afff","#d7d700","#d7d75f","#d7d787","#d7d7af","#d7d7d7","#d7d7ff","#d7ff00","#d7ff5f","#d7ff87","#d7ffaf","#d7ffd7","#d7ffff","#ff0000","#ff005f","#ff0087","#ff00af","#ff00d7","#ff00ff","#ff5f00","#ff5f5f","#ff5f87","#ff5faf","#ff5fd7","#ff5fff","#ff8700","#ff875f","#ff8787","#ff87af","#ff87d7","#ff87ff","#ffaf00","#ffaf5f","#ffaf87","#ffafaf","#ffafd7","#ffafff","#ffd700","#ffd75f","#ffd787","#ffd7af","#ffd7d7","#ffd7ff","#ffff00","#ffff5f","#ffff87","#ffffaf","#ffffd7","#ffffff","#080808","#121212","#1c1c1c","#262626","#303030","#3a3a3a","#444444","#4e4e4e","#585858","#626262","#6c6c6c","#767676","#808080","#8a8a8a","#949494","#9e9e9e","#a8a8a8","#b2b2b2","#bcbcbc","#c6c6c6","#d0d0d0","#dadada","#e4e4e4","#eeeeee"]};function colors_clone(cs){var colors=colors_schemes[cs];if(typeof colors=="undefined"){colors=colors_schemes["color16"]}return colors.map((x=>x))}function simcore_init(with_ui){var ret={};ret.msg="";ret.ok=true;if(with_ui){restore_cfg()}else{reset_cfg_values()}return ret}function simcore_init_hw(simhw_name){var ret={};ret.msg="";ret.ok=true;var hwid=simhw_getIdByName(simhw_name);if(hwid<0){ret.msg="ERROR: unknown hardware: "+simhw_name+". \n";ret.ok=false;return ret}simhw_setActive(hwid);var ret1=simcore_init_ui({});if(false===ret1.ok){ret.msg=ret.msg;ret.ok=false;return ret}return ret}function simcore_welcome(){var ret={};ret.msg="";ret.ok=true;console.log("");console.log("██╗ ██╗███████╗██████╗ ███████╗██╗███╗ ███╗");console.log("██║ ██║██╔════╝██╔══██╗██╔════╝██║████╗ ████║");console.log("██║ █╗ ██║█████╗ ██████╔╝███████╗██║██╔████╔██║");console.log("██║███╗██║██╔══╝ ██╔═══╝ ╚════██║██║██║╚██╔╝██║");console.log("╚███╔███╔╝███████╗██║ ███████║██║██║ ╚═╝ ██║");console.log(" ╚══╝╚══╝ ╚══════╝╚═╝ ╚══════╝╚═╝╚═╝ ╚═╝");console.log("");console.log("Stable: https://github.com/wepsim/wepsim");console.log("Beta: https://github.com/acaldero/wepsim");console.log("");return ret}function simcore_init_ui(hash_detail2init){var ret={};ret.msg="";ret.ok=true;var detail_id=0;var sim_components=simhw_sim_components();for(var elto in sim_components){sim_components[elto].details_ui=[];for(var index in sim_components[elto].details_name){sim_components[elto].details_ui[index]={};detail_id=sim_components[elto].details_name[index];if(typeof hash_detail2init[detail_id]!=="undefined"){sim_components[elto].details_ui[index]=hash_detail2init[detail_id];sim_components[elto].details_ui[index].init()}}}return ret}function simcore_action_ui(component_name,detail_id,action_name){var sim_components=simhw_sim_components();if(typeof sim_components[component_name].details_ui[detail_id][action_name]==="undefined"){return simcore_do_nothing_handler}return sim_components[component_name].details_ui[detail_id][action_name]}function simcore_init_eventlistener(context,hash_detail2action,hash_signal2action){var context_obj=null;var r=[];var o=null;context_obj=document.getElementById(context).contentDocument;if(null==context_obj){console.log('warning: unreferenced graphic element context named "'+r[0]+'".');return}var sim_signals=simhw_sim_signals();for(var key in sim_signals){if(typeof hash_signal2action[key+"click"]==="undefined"){hash_signal2action[key+"click"]=function(key_value){return function(){hash_signal2action[""](key_value,"click")}}(key)}if(typeof hash_signal2action[key+"dblclick"]==="undefined"){hash_signal2action[key+"dblclick"]=function(key_value){return function(){hash_signal2action[""](key_value,"dblclick")}}(key)}for(var j=0;j\n"+"Please load some assembly code. ";ret.ok=false;return ret}var SIMWARE=get_simware();if(!(typeof curr_segments[".ktext"]!="undefined"&&SIMWARE.labels2.kmain)&&!(typeof curr_segments[".text"]!="undefined"&&SIMWARE.labels2.main)){ret.msg="labels 'kmain' (in .ktext) or 'main' (in .text) do not exist!";ret.ok=false;return ret}return ret}function simcore_packerror_at(reg_maddr,msg){var ret={};var hex_maddr="0x"+parseInt(reg_maddr).toString(16);ret.ok=false;ret.msg=msg+" at maddr="+hex_maddr+".";return ret}function simcore_check_if_can_continue2(reg_maddr,reg_pc){var ret={};ret.ok=true;ret.msg="";var curr_MC=simhw_internalState("MC");var mcelto=control_memory_get(curr_MC,reg_maddr);if(typeof mcelto==="undefined"){return simcore_packerror_at(reg_maddr,"Error: undefined microinstruction")}if(simhw_internalState_get("fire_visible","databus")==true||simhw_internalState_get("fire_visible","internalbus")==true){return simcore_packerror_at(reg_maddr,"Error: two or more tri-states are active")}var curr_segments=simhw_internalState("segments");if(reg_pc=curr_segments[".ktext"].begin){return ret}if(reg_pc=curr_segments[".text"].begin){return ret}if(mcelto.is_native&&0===reg_maddr){if(reg_pc==curr_segments[".ktext"].end||reg_pc==curr_segments[".text"].end){return ret}}if(false==mcelto.is_native&&0!==reg_maddr){if(reg_pc==curr_segments[".ktext"].end||reg_pc==curr_segments[".text"].end){return ret}}ret.ok=false;ret.msg="The program has finished because the PC register points outside .ktext/.text code segments";return ret}function simcore_check_if_can_continue(){var pc_name=simhw_sim_ctrlStates_get().pc.state;var reg_pc=parseInt(get_value(simhw_sim_state(pc_name)));var maddr_name=simhw_sim_ctrlStates_get().mpc.state;var reg_maddr=get_value(simhw_sim_state(maddr_name));return simcore_check_if_can_continue2(reg_maddr,reg_pc)}function simcore_reset(){var ret={};ret.msg="";ret.ok=true;var SIMWARE=get_simware();var curr_firm=simhw_internalState("FIRMWARE");var curr_segments=simhw_internalState("segments");var curr_MC=simhw_internalState("MC");var sim_components=simhw_sim_components();var ctrl_states=simhw_sim_ctrlStates_get();var pc_name=ctrl_states.pc.state;var pc_state=simhw_sim_state(pc_name);var sp_name=ctrl_states.sp.state;var sp_state=simhw_sim_state(sp_name);if(curr_firm.stackRegister!=null){sp_name=curr_firm.stackRegister;sp_state=simhw_sim_states().BR[sp_name];ctrl_states.sp.state="BR."+curr_firm.stackRegister}for(var elto in sim_components){var reset_signal_name=sim_components[elto].name+"_RESET";compute_general_behavior(reset_signal_name)}if(typeof curr_segments[".ktext"]!=="undefined"&&SIMWARE.labels2.kmain){set_value(pc_state,parseInt(SIMWARE.labels2.kmain));show_asmdbg_pc()}else if(typeof curr_segments[".text"]!=="undefined"&&SIMWARE.labels2.main){set_value(pc_state,parseInt(SIMWARE.labels2.main));show_asmdbg_pc()}if(typeof curr_segments[".stack"]!=="undefined"&&typeof sp_state!=="undefined"){set_value(sp_state,parseInt(curr_segments[".stack"].end)&4294967292)}var new_maddr=get_value(simhw_sim_state("MUXA_MICROADDR"));var mcelto=control_memory_get(curr_MC,new_maddr);if(typeof mcelto==="undefined"){mcelto={value:simhw_sim_state("REG_MICROINS").default_value,is_native:false}}var new_mins=get_value(mcelto);if(false==mcelto.is_native){compute_general_behavior("CLOCK")}show_dbg_ir(get_value(simhw_sim_state("REG_IR_DECO")));for(elto in sim_components){for(var index in sim_components[elto].details_name){if(typeof sim_components[elto].details_ui[index].reset!=="undefined"){sim_components[elto].details_ui[index].reset()}}}return ret}function simcore_execute_microinstruction(){var ret=simcore_check_if_can_continue();if(false===ret.ok){return ret}compute_general_behavior("CLOCK");show_dbg_mpc();return ret}function simcore_execute_microinstruction2(reg_maddr,reg_pc){var ret=simcore_check_if_can_continue2(reg_maddr,reg_pc);if(false===ret.ok){return ret}compute_general_behavior("CLOCK");show_dbg_mpc();return ret}function simcore_execute_microprogram(options){var ret=simcore_check_if_can_continue();if(false===ret.ok){return ret}var before_state=null;var after_state=null;var curr_mpc="";var curr_MC=simhw_internalState("MC");var maddr_name=simhw_sim_ctrlStates_get().mpc.state;var maddr_state=simhw_sim_state(maddr_name);if(typeof options.before_microinstruction==="undefined"){options.before_microinstruction=simcore_do_nothing_handler}if(typeof options.after_microinstruction==="undefined"){options.after_microinstruction=simcore_do_nothing_handler}var i_clks=0;var limitless=options.cycles_limit<0;var cur_addr=0;var mcelto=null;var oolimits=false;do{options.before_microinstruction(curr_MC,cur_addr);compute_general_behavior("CLOCK");i_clks++;options.after_microinstruction(curr_MC,cur_addr);if(limitless===false&&i_clks>=options.cycles_limit){ret.msg="Warning: clock cycles limit reached in a single instruction.";ret.ok=false;break}cur_addr=get_value(maddr_state);mcelto=control_memory_get(curr_MC,cur_addr);if(typeof mcelto==="undefined"){ret.msg="Error: undefined microinstruction at "+cur_addr+".";ret.ok=false;break}if(i_clks>=options.cycles_limit&&-1!=options.cycles_limit){oolimits=true}}while(false==oolimits&&0!=cur_addr);if(true==ret.ok&&mcelto.is_native){compute_general_behavior("CLOCK")}if(get_cfg("DBG_level")=="microinstruction"){show_dbg_mpc()}return ret}function simcore_execute_program(options){var ret={};ret.ok=true;ret.msg="";var curr_segments=simhw_internalState("segments");var pc_name=simhw_sim_ctrlStates_get().pc.state;var pc_state=simhw_sim_state(pc_name);var reg_pc=get_value(pc_state);var reg_pc_before=get_value(pc_state)-4;var code_begin=0;if(typeof curr_segments[".text"]!="undefined"&&typeof curr_segments[".text"].begin!="undefined")code_begin=parseInt(curr_segments[".text"].begin);var code_end=0;if(typeof curr_segments[".text"]!="undefined"&&typeof curr_segments[".text"].end!="undefined")code_end=parseInt(curr_segments[".text"].end);var kcode_begin=0;if(typeof curr_segments[".ktext"]!="undefined"&&typeof curr_segments[".ktext"].begin!="undefined")kcode_begin=parseInt(curr_segments[".ktext"].begin);var kcode_end=0;if(typeof curr_segments[".ktext"]!="undefined"&&typeof curr_segments[".ktext"].end!="undefined")kcode_end=parseInt(curr_segments[".ktext"].end);var ret1=null;var before_state=null;var after_state=null;var curr_pc="";var SIMWARE=get_simware();if(typeof options.verbalize!=="undefined"){set_cfg("verbal_verbose",options.verbalize)}if(typeof options.before_instruction==="undefined"){options.before_instruction=simcore_do_nothing_handler}if(typeof options.after_instruction==="undefined"){options.after_instruction=simcore_do_nothing_handler}var ins_executed=0;while(reg_pc=code_begin||reg_pc=kcode_begin){options.before_instruction(SIMWARE,reg_pc);ret1=simcore_execute_microprogram(options);if(false===ret1.ok){return ret1}options.after_instruction(SIMWARE,reg_pc);ins_executed++;if(ins_executed>options.instruction_limit&&-1!=options.instruction_limit){ret.ok=false;ret.msg="more than "+options.instruction_limit+" instructions executed before application ends.";return ret}reg_pc_before=reg_pc;reg_pc=get_value(pc_state)}return ret}function simcore_do_nothing_handler(){return null}function simcore_compile_firmware(textToMCompile){var ret={};ret.msg="";ret.ok=true;if(""==textToMCompile){ret.msg="Empty Firmware";ret.ok=false;return ret}var preSM=null;try{preSM=loadFirmware(textToMCompile);ret.simware=preSM}catch(e){ret.msg="ERROR: at line: "+e.lineNumber+" and column: "+e.columnNumber;ret.ok=false;return ret}if(preSM.error!=null){ret.msg=preSM.error;ret.ok=false;return ret}update_memories(preSM);simcore_reset();return ret}function simcore_compile_assembly(textToCompile){var ret={};ret.msg="";ret.ok=true;var SIMWARE=get_simware();if(SIMWARE.firmware.length===0){ret.msg="Empty microcode, please load the microcode first.";ret.ok=false;return ret}var SIMWAREaddon=simlang_compile(textToCompile,SIMWARE);ret.simware=SIMWAREaddon;if(SIMWAREaddon.error!=null){ret.msg=SIMWAREaddon.error;ret.ok=false;return ret}set_simware(SIMWAREaddon);update_memories(SIMWARE);simcore_reset();return ret}function simcore_hardware_export(hw_name){var ret={};ret.msg="{}";ret.ok=false;var hw_obj=simhw_getObjByName(hw_name);if(null===hw_obj){return ret}ret.ok=true;ret.msg=JSON.stringify(hw_obj,(function(key,value){if(typeof value==="function"){return"/Function("+value.toString()+")/"}return value}));return ret}function simcore_hardware_import(hw_json){var ret={};ret.msg="";ret.ok=true;hw_obj=JSON.parse(hw_json,(function(key,value){if(typeof value==="string"&&value.startsWith("/Function(")&&value.endsWith(")/")){value=value.substring(10,value.length-2);return eval("("+value+")")}return value}));simhw_add(hw_obj);return ret}function simcore_native_get_signal(elto){return get_value(simhw_sim_signal(elto))>>>0}function simcore_native_set_signal(elto,value){set_value(simhw_sim_signal(elto),value);compute_behavior("FIRE "+elto);return value}function simcore_native_get_value(component,elto){var index=0;var sim_components=simhw_sim_components();var compo_index=component;if("BR"===component)compo_index="CPU";if("DEVICE"===component)compo_index="IO";if(typeof sim_components[compo_index].get_value!=="undefined"){return sim_components[compo_index].get_value(elto)}return false}function simcore_native_set_value(component,elto,value){var index=0;var sim_components=simhw_sim_components();var compo_index=component;if("BR"===component)compo_index="CPU";if("DEVICE"===component)compo_index="IO";if(typeof sim_components[compo_index].set_value!=="undefined"){return sim_components[compo_index].set_value(elto,value)}return false}function simcore_native_get_fields(signature_raw){var SIMWARE=get_simware();for(var key in SIMWARE.firmware){if(SIMWARE.firmware[key].signatureRaw===signature_raw){return SIMWARE.firmware[key].fields}}}function simcore_native_get_field_from_ir(fields,index){if(typeof fields[index]==="undefined"){ws_alert("simcore_native_get_field_from_ir: index ("+index+") out of range.");return false}var value=get_value(simhw_sim_state("REG_IR"));var left_shift=31-parseInt(fields[index].startbit);var right_shift=parseInt(fields[index].stopbit);value=value<>>left_shift;value=value>>>right_shift;return value}function simcore_native_deco(){compute_behavior("DECO")}function simcore_native_go_maddr(maddr){set_value(simhw_sim_state("MUXA_MICROADDR"),maddr)}function simcore_native_go_opcode(){var maddr=get_value(simhw_sim_state("ROM_MUXA"));set_value(simhw_sim_state("MUXA_MICROADDR"),maddr)}function simcore_native_go_instruction(signature_raw){var SIMWARE=get_simware();for(var key in SIMWARE.firmware){if(SIMWARE.firmware[key].signatureRaw===signature_raw){var maddr=SIMWARE.firmware[key]["mc-start"];set_value(simhw_sim_state("MUXA_MICROADDR"),maddr);return}}}function simcore_simstate_checklist2state(checklist){var o={};var ret=false;checklist=checklist.replace(/;|==|!=|>=|<=|=|>|v!=""));for(var i=0;i"===expected_result[compo][elto].op)diff.fulfill=parseInt(diff.obtained)>parseInt(diff.expected);else if("<"===expected_result[compo][elto].op)diff.fulfill=parseInt(diff.obtained)="===expected_result[compo][elto].op)diff.fulfill=parseInt(diff.obtained)>=parseInt(diff.expected);else if("<="===expected_result[compo][elto].op)diff.fulfill=parseInt(diff.obtained)<=parseInt(diff.expected);else if("=="===expected_result[compo][elto].op)diff.fulfill=diff.expected==diff.obtained;else if("!="===expected_result[compo][elto].op)diff.fulfill=diff.expected!=diff.obtained;d.result.push(diff);if(diff.fulfill===false)d.errors++}}if(newones_too&&typeof obtained_result[compo]!="undefined"){for(elto in obtained_result[compo]){d.neltos_obtained++;if(typeof expected_result[compo]!="undefined"&&typeof expected_result[compo][elto]!="undefined"){continue}diff={};diff.expected=obtained_result[compo][elto].default_value;diff.obtained=obtained_result[compo][elto].value;diff.fulfill=diff.expected===diff.obtained;diff.elto_type=compo.toLowerCase();diff.elto_id=obtained_result[compo][elto].id;diff.elto_op="=";d.result.push(diff);if(diff.fulfill===false)d.errors++}}}return d}function simcore_simstate_diff_results(expected_result,obtained_result){return simcore_simstate_check_results(expected_result,obtained_result,true)}function simcore_simstate_diff_states(before_state_obj,after_state_obj){var before_arr=simcore_simstate_state2checklist(before_state_obj,"").split(";");var after_arr=simcore_simstate_state2checklist(after_state_obj,"").split(";");return after_arr.filter((function(elto){return!before_arr.includes(elto)})).join(";").trim()}function simcore_simstate_checkreport2txt(checklist){var o="";for(var i=0;i"+""+""+"Type "+"Identification Id. "+"Values in the clipboard state "+"Values in the selected state "+" "+" "+"";for(var i=0;i"+""+checklist[i].elto_type+" "+""+checklist[i].elto_id+" "+""+checklist[i].elto_op+" "+checklist[i].expected+" "+""+checklist[i].obtained+" "+""}o+=" "+"";return o}function simcore_voice_canSpeak(){if(typeof window.speechSynthesis=="undefined"){return false}if(false===get_cfg("use_voice")){return false}return true}function simcore_voice_speak(msg){var ssu=null;if(simcore_voice_canSpeak()){ssu=new SpeechSynthesisUtterance(msg);ssu.lang="es-ES";if("en"==get_cfg("ws_idiom"))ssu.lang="en-US";if("es"==get_cfg("ws_idiom"))ssu.lang="es-EN";window.speechSynthesis.speak(ssu)}}function simcore_voice_stopSpeak(){if(simcore_voice_canSpeak()){window.speechSynthesis.cancel()}}var simcore_rest={};function simcore_rest_reset(){simcore_rest={}}function simcore_rest_add(name,description){simcore_rest[name]={endpoint:description.endpoint,user:description.user,pass:description.pass,last_request:null}}function simcore_rest_list(){return simcore_rest}function simcore_rest_get(name){return simcore_rest[name]}function simcore_rest_call(name,method,uri,data){var rest_info=simcore_rest[name];if(typeof rest_info==="undefined"){return false}var api_endpoint=rest_info.endpoint;if(api_endpoint.value instanceof Vuex.Store){api_endpoint=get_value(api_endpoint)}if(api_endpoint.trim()===""){return false}var basic_auth="Basic "+btoa(rest_info.user+":"+rest_info.pass);var enc_data=JSON.stringify(data);var request={url:api_endpoint+uri,type:method,contentType:"application/json",accepts:"application/json",cache:false,dataType:"json",data:enc_data,beforeSend:function(xhr){if(rest_info.user.trim()!==""){xhr.setRequestHeader("Authorization",basic_auth)}},error:function(jqXHR){console.log("ajax error "+jqXHR.status)}};rest_info.last_request=$.ajax(request);return true}var simcore_notifications=[];function simcore_notifications_get(){return simcore_notifications}function simcore_notifications_reset(){simcore_notifications=[]}function simcore_notifications_add2(ntf){simcore_notifications.push({title:ntf.title,message:ntf.message,type:ntf.type,date:ntf.date})}function simcore_notifications_add(ntf_title,ntf_message,ntf_type,ntf_delay){simcore_notifications.push({title:$("").html(ntf_title).text(),message:$("
").html(ntf_message).text(),type:ntf_type,date:(new Date).getTime()})}function get_value(sim_obj){if(sim_obj.value instanceof Vuex.Store){return sim_obj.value.state.value}return sim_obj.value}function set_value(sim_obj,value){if(sim_obj.value instanceof Vuex.Store){sim_obj.value.commit("set_value",value);return}var old_value=sim_obj.value;sim_obj.value=value;if(old_value!=value){sim_obj.changed=true}}function reset_value(sim_obj){if(sim_obj.value instanceof Vuex.Store){set_value(sim_obj,sim_obj.default_value);return}if(typeof sim_obj.default_value=="object"){sim_obj.changed=true;sim_obj.value=Object.create(sim_obj.default_value);return}if(sim_obj instanceof Array){sim_obj.changed=true;for(var i=0;i",""":'"',"'":"'"};function treatHTMLSequences(text_with_html){var re=null;var key=null;for(key in html_sequences){re=new RegExp(key,"gi");text_with_html=text_with_html.replace(re,html_sequences[key])}return text_with_html}function control_memory_getkeys(memory){return Object.keys(memory)}function control_memory_get(memory,elto){return memory[elto]}function control_memory_set(memory,elto,melto){if(typeof melto.changed==="undefined")melto.changed=false;if(typeof melto.state==="undefined")melto.state=false;if(typeof melto.breakpoint==="undefined")melto.breakpoint=false;if(typeof melto.notify==="undefined")melto.notify=[];if(typeof melto.is_native==="undefined")melto.is_native=false;var comments_str="";if(null!=melto.comments){comments_str=melto.comments;if(melto.comments instanceof Array)comments_str=melto.comments.join("\n");melto.state=melto.state||comments_str.trim().split("state:").length>1;melto.breakpoint=melto.breakpoint||comments_str.trim().split("break:").length>1;melto.notify=comments_str.trim().split("notify:");for(var k=0;k";if(active_verbal.trim()==="")active_verbal="";return"Activated signals are: "+active_signals+". Associated actions are: "+active_verbal}function main_memory_getkeys(memory){return Object.keys(memory)}function main_memory_get(memory,elto){return memory[elto]}function main_memory_set(memory,elto,melto){if(typeof melto.changed==="undefined")melto.changed=false;if(typeof melto.state==="undefined")melto.state=false;if(typeof melto.breakpoint==="undefined")melto.breakpoint=false;if(typeof melto.notify==="undefined")melto.notify=[];if(typeof melto.is_assembly==="undefined")melto.is_assembly=false;if(typeof melto.source==="undefined")melto.source="";var comments_str="";if(null!=melto.comments){comments_str=melto.comments.join("\n");melto.state=melto.state||comments_str.trim().split("state:").length>1;melto.breakpoint=melto.breakpoint||comments_str.trim().split("break:").length>1;melto.notify=comments_str.trim().split("notify:");for(var k=0;k>8;if(2==filter_elto)dbvalue=(value&16711680)>>16;if(3==filter_elto)dbvalue=(value&4278190080)>>24;break;case 1:if(0==filter_elto)dbvalue=value&65535;if(1==filter_elto)dbvalue=value&65535;if(2==filter_elto)dbvalue=(value&4294901760)>>16;if(3==filter_elto)dbvalue=(value&4294901760)>>16;break;case 2:if(0==filter_elto)dbvalue=value&16777215;if(1==filter_elto)dbvalue=value&4294967040;break;case 3:dbvalue=value;break}return dbvalue}function main_memory_updatevalues(value,dbvalue,filter_size,filter_elto){switch(filter_size){case 0:if(0==filter_elto)value=value&4294967040|dbvalue&255;if(1==filter_elto)value=value&4294902015|(dbvalue&255)<<8;if(2==filter_elto)value=value&4278255615|(dbvalue&255)<<16;if(3==filter_elto)value=value&16777215|(dbvalue&255)<<24;break;case 1:if(0==filter_elto)value=value&4294901760|dbvalue&65535;if(1==filter_elto)value=value&4294901760|dbvalue&65535;if(2==filter_elto)value=value&65535|(dbvalue&65535)<<16;if(3==filter_elto)value=value&65535|(dbvalue&65535)<<16;break;case 2:if(0==filter_elto)value=value&4278190080|dbvalue&16777215;if(1==filter_elto)value=value&255|dbvalue&4294967040;break;case 3:value=dbvalue;break}return value}function main_memory_get_program_counter(){var r_ref=simhw_sim_ctrlStates_get().pc;var r_value=null;if(typeof r_ref!=="undefined"){r_ref=simhw_sim_state(r_ref.state)}if(typeof r_ref!=="undefined"){r_value=get_value(r_ref)}return r_value}function main_memory_get_baseaddr(){var r_ref=simhw_sim_ctrlStates_get();if(typeof r_ref==="undefined"){return null}var parts=null;var r_value=0;var r_ref2=null;var all_baseaddr={};for(var elto in r_ref){if(r_ref[elto].is_pointer==false){continue}parts=r_ref[elto].state.split(".");if(parts[0]=="BR"){r_value=4294967292;r_ref2=simhw_sim_states().BR[parts[1]]}else{r_value=0;r_ref2=simhw_sim_state(r_ref[elto].state)}if(typeof r_ref2!=="undefined"){r_value=get_value(r_ref2)}all_baseaddr[elto]=r_value}return all_baseaddr}function get_deco_from_pc(pc){var mp_obj=simhw_internalState("MP");if(typeof mp_obj==="undefined"||typeof mp_obj[pc]==="undefined"||typeof mp_obj[pc].source==="undefined"){return""}return mp_obj[pc].source}function get_verbal_from_current_pc(){var pc_name=simhw_sim_ctrlStates_get().pc.state;var reg_pc=get_value(simhw_sim_state(pc_name));var pc=parseInt(reg_pc)-4;var decins=get_deco_from_pc(pc);if(""==decins.trim()){decins="not jet defined"}return"Current instruction is: "+decins+" and PC points to "+show_value(pc)+". "}function cache_memory_update_stats(memory,address,parts,r_w,m_h,clock_timestamp){memory.stats.n_access++;memory.stats.last_addr=address;memory.stats.last_parts=parts;memory.stats.last_r_w=r_w;memory.stats.last_h_m=m_h;if(m_h=="miss"){memory.stats.n_misses++}else{memory.stats.n_hits++}memory.sets[parts.set].tags[parts.tag].n_access++;if(r_w=="write"){memory.sets[parts.set].tags[parts.tag].dirty=1}memory.sets[parts.set].tags[parts.tag].timestamp=clock_timestamp}function cache_memory_select_victim(memory,set){var keys=Object.keys(memory.sets[set].tags);var tag_victim=0;if(memory.cfg.replace_pol=="lfu"){tag_victim=keys[0];var tag_naccess=memory.sets[parts.set].tags[tag_victim].n_access;for(var i=1;imemory.sets[parts.set].tags[keys[i]].n_access){tag_victim=keys[i];tag_naccess=memory.sets[parts.set].tags[tag_victim].n_access}}}else if(memory.cfg.replace_pol=="fifo"){tag_victim=keys[0];var tag_stamp=memory.sets[parts.set].tags[tag_victim].timestamp;for(var i=1;imemory.sets[parts.set].tags[keys[i]].timestamp){tag_victim=keys[i];tag_stamp=memory.sets[parts.set].tags[tag_victim].timestamp}}}else if(memory.cfg.replace_pol=="first"){tag_victim=keys[0]}return tag_victim}function cache_memory_init(name,via_size,off_size,set_size,replace_pol,su_pol,next_cache){var c={stats:{},cfg:{},sets:{}};c.cfg.name=name;c.cfg.via_size=via_size;c.cfg.off_size=off_size;c.cfg.set_size=set_size;c.cfg.vps_size=via_size-set_size;c.cfg.tag_size=32-set_size-off_size;c.cfg.mask_tag=Math.pow(2,c.cfg.tag_size)-1>>>0;c.cfg.mask_set=Math.pow(2,c.cfg.set_size)-1>>>0;c.cfg.mask_off=Math.pow(2,c.cfg.off_size)-1>>>0;c.cfg.mask_tag=c.cfg.mask_tag<<32-c.cfg.tag_size>>>0;c.cfg.mask_set=c.cfg.mask_set<>>0;c.cfg.replace_pol=replace_pol;c.cfg.su_pol=su_pol;c.cfg.next_cache=next_cache;c.stats.n_access=0;c.stats.n_hits=0;c.stats.n_misses=0;c.stats.last_addr=0;c.stats.last_parts=cache_memory_split(c,0);c.stats.last_r_w="";c.stats.last_h_m="";return c}function cache_memory_init2(cfg){return cache_memory_init(cfg.name,cfg.via_size,cfg.off_size,cfg.set_size,cfg.replace_pol,cfg.su_pol,cfg.next_cache)}function cache_memory_init3(array_cm_cfg){var array_cm=[];for(var i=0;i>>0;parts.tag=(address&memory.cfg.mask_tag)>>>32-memory.cfg.tag_size;parts.set=(address&memory.cfg.mask_set)>>>memory.cfg.off_size;parts.offset=address&memory.cfg.mask_off;return parts}function cache_memory_access(memory,address,r_w,clock_timestamp){if(memory.cfg.su_pol!="unified"){if("split_i"==memory.cfg.su_pol&&segments_addr_within_text(address)==false){return false}if("split_d"==memory.cfg.su_pol&&segments_addr_within_data(address)==false){return false}}var parts=cache_memory_split(memory,address);if(typeof memory.sets[parts.set]=="undefined"){memory.sets[parts.set]={tags:{},number_tags:0}}if(typeof memory.sets[parts.set].tags[parts.tag]!="undefined"&&memory.sets[parts.set].tags[parts.tag].valid==1){cache_memory_update_stats(memory,address,parts,r_w,"hit",clock_timestamp);return true}if(typeof memory.sets[parts.set].number_tags>3){var tag_victim=cache_memory_select_victim(memory,parts.set);memory.sets[parts.set].tags[tag_victim].valid=0;memory.sets[parts.set].number_tags--}memory.sets[parts.set].tags[parts.tag]={n_access:0,valid:1,dirty:0};memory.sets[parts.set].number_tags++;cache_memory_update_stats(memory,address,parts,r_w,"miss",clock_timestamp);if(memory.cfg.next_cache!=null){cache_memory_access(memory.cfg.next_cache,address,r_w)}return false}var sim={systems:[],active:null,index:0};function simhw_add(newElto){var found=-1;for(var m=0;m=0&&sim.systems.length>=newActive){sim.active=sim.systems[newActive];sim.index=newActive}compile_behaviors();firedep_to_fireorder(jit_fire_dep);compute_references();compile_verbals()}function simhw_getIdByName(short_name){for(var m=0;m>>0).toString(16)}function check_behavior(){if(0==simhw_sim_signals().length){ws_alert("ALERT: empty signals!!!")}if(0==simhw_sim_states().length){ws_alert("ALERT: empty states!!!")}for(var key in simhw_sim_signals()){for(var key2 in simhw_sim_signal(key).behavior){var behaviors=simhw_sim_signal(key).behavior[key2].split(";");for(var i=0;i "+behavior_k[0]+" ("+behavior_i+")");return}if(behavior_k.length!=simhw_syntax_behavior(behavior_k[0]).nparameters){ws_alert("ALERT: Behavior has an incorrect number of elements --\x3e "+behavior_i+"/"+simhw_syntax_behavior(behavior_k[0]).nparameters);return}for(var j=1;j '"+behavior_i);return}else if("S"==t&&typeof simhw_sim_signal(s[0])=="undefined"){ws_alert("ALERT: Behavior has an undefined reference to a signal -> '"+behavior_i);return}else if("X"==t&&typeof simhw_sim_state(s[0])=="undefined"&&typeof simhw_sim_signal(s[0])=="undefined"){ws_alert("ALERT: Behavior has an undefined reference to a object state OR signal -> '"+behavior_i);return}}}}}}var jit_behaviors=false;var jit_verbals=false;var jit_fire_dep=null;var jit_fire_order=null;var jit_dep_network=null;var jit_fire_ndep=null;function firedep_to_fireorder(jit_fire_dep){var allfireto=false;jit_fire_order=[];jit_fire_ndep=[];for(var sig in simhw_sim_signals()){if(typeof jit_fire_dep[sig]=="undefined"){jit_fire_order.push(sig);continue}ndep=0;allfireto=false;for(var sigorg in jit_fire_dep[sig]){ndep++;if(jit_fire_dep[sig][sigorg]==simhw_sim_signal(sigorg).behavior.length){allfireto=true}}jit_fire_ndep[sig]=ndep;if(allfireto==false)jit_fire_order.push(sig)}}function compile_behaviors(){var jit_bes="";jit_fire_dep={};var sig_obj=null;var expr_obj=null;for(var sig in simhw_sim_signals()){jit_bes+="simhw_sim_signal('"+sig+"').behavior_fn = new Array();\n";for(var val in simhw_sim_signal(sig).behavior){var input_behavior=simhw_sim_signal(sig).behavior[val];var jit_be="";var s_exprs=input_behavior.split(";");for(var i=0;i"+v+"";if("Signals"!=enum_name)o+="("+(i+1)+") "+v;else o+="("+(i+1)+") "+hash_eltos[array_eltos[i]].ref+": "+v;if(i!=array_eltos.length-1){o+=str_enditem}}o+=". ";return o}function simhwelto_describe_component_enum(elto_path,array_eltos,hash_eltos,enum_name){var o="";o+=""+i18n_get_TagFor("hw","It has")+" "+" "+array_eltos.length+" "+""+i18n_get_TagFor("hw",enum_name)+" "+": "+simhwelto_describe_component_enum_aux(elto_path,array_eltos,hash_eltos,enum_name,", ");return o}function simhwelto_describe_component(elto_path,elto,format){var o="";o+=elto.description+"."+""+simhwelto_describe_component_enum(elto_path+":states:",elto.states_inputs,elto.states,"inputs")+" "+" "+simhwelto_describe_component_enum(elto_path+":states:",elto.states_outputs,elto.states,"outputs")+" "+" "+simhwelto_describe_component_enum(elto_path+":signals:",elto.signals_inputs,elto.signals,"signals")+" "+" ";if(format!="html"){o.replace(/<[^>]*>?/gm,"")}return o}var ep_def={sim_name:"Elemental Processor",sim_short_name:"ep",sim_img_processor:"examples/hardware/ep/images/processor.svg",sim_img_controlunit:"examples/hardware/ep/images/controlunit.svg",sim_img_cpu:"examples/hardware/ep/images/cpu.svg",components:{},states:{},signals:{},behaviors:{},elements:{},internal_states:{},ctrl_states:{},events:{}};simhw_add(ep_def);sim.ep.behaviors.PRINT_S={nparameters:2,types:["S"],operation:function(s_expr){console.log(s_expr[1]+": 0x"+sim.ep.signals[s_expr[1]].value.toString(16))},verbal:function(s_expr){return"Print value of signal "+s_expr[1]+": 0x"+sim.ep.signals[s_expr[1]].value.toString(16)+". "}};sim.ep.behaviors.PRINT_E={nparameters:2,types:["E"],operation:function(s_expr){console.log(s_expr[1]+": 0x"+sim.ep.states[s_expr[1]].value.toString(16))},verbal:function(s_expr){return"Print value of state "+s_expr[1]+": 0x"+sim.ep.states[s_expr[1]].value.toString(16)+". "}};sim.ep.components["CPU"]={name:"CPU",version:"1",abilities:["CPU"],details_name:["REGISTER_FILE","CONTROL_MEMORY","CLOCK","CPU_STATS"],details_fire:[["svg_p:text3029","svg_p:text3031"],["svg_cu:text3010"],["svg_p:text3459-7","svg_cu:text4138","svg_cu:text4138-7"],["svg_p:text3495"]],write_state:function(vec){if(typeof vec.CPU=="undefined"){vec.CPU={}}var internal_reg=["PC","SR"];var value=0;for(var i=0;i>>0;if(value!=0){vec.CPU["R"+i]={type:"register",default_value:0,id:"R"+i,op:"=",value:"0x"+value.toString(16)}}}for(i=0;i>>0;if(value!=0){vec.CPU[internal_reg[i]]={type:"register",default_value:0,id:internal_reg[i],op:"=",value:"0x"+value.toString(16)}}}return vec},read_state:function(vec,check){if(typeof vec.CPU=="undefined"){vec.CPU={}}var key=check["id"].toUpperCase().trim();var val=parseInt(check["value"]).toString(16);if("REGISTER"==check["type"].toUpperCase().trim()){vec.CPU[key]={type:"register",default_value:0,id:key,op:check["condition"],value:"0x"+val};return true}return false},get_state:function(reg){var value=0;var r_reg=reg.toUpperCase().trim();if(typeof sim.ep.states["REG_"+r_reg]!="undefined"){value=get_value(sim.ep.states["REG_"+r_reg])>>>0;return"0x"+value.toString(16)}r_reg=r_reg.replace("R","");var index=parseInt(r_reg);if(typeof sim.ep.states.BR[index]!="undefined"){value=get_value(sim.ep.states.BR[index])>>>0;return"0x"+value.toString(16)}return null},get_value:function(elto){if(Number.isInteger(elto))index=elto;else index=parseInt(elto);if(isNaN(index))return get_value(simhw_sim_state(elto))>>>0;return get_value(simhw_sim_states().BR[index])>>>0},set_value:function(elto,value){var pc_name=simhw_sim_ctrlStates_get().pc.state;if(Number.isInteger(elto))index=elto;else index=parseInt(elto);if(isNaN(index)){set_value(simhw_sim_state(elto),value);if(pc_name===elto){show_asmdbg_pc()}return value}return set_value(simhw_sim_states().BR[index],value)}};sim.ep.ctrl_states.pc={name:"PC",state:"REG_PC",is_pointer:true};sim.ep.ctrl_states.sp={name:"SP",state:"BR.29",is_pointer:true};sim.ep.ctrl_states.fp={name:"FP",state:"BR.30",is_pointer:true};sim.ep.ctrl_states.ir={name:"IR",state:"REG_IR",default_eltos:{co:{begin:0,end:5,length:6},cop:{begin:28,end:31,length:4},oc:{begin:0,end:6,length:7}},is_pointer:false};sim.ep.ctrl_states.mpc={name:"mPC",state:"REG_MICROADDR",is_pointer:false};sim.ep.internal_states.MC={};sim.ep.internal_states.ROM={};sim.ep.internal_states.FIRMWARE=ws_empty_firmware;sim.ep.internal_states.io_hash={};sim.ep.internal_states.fire_stack=[];sim.ep.internal_states.tri_state_names=["T1","T2","T3","T4","T5","T6","T7","T8","T9","T10","T11","T12"];sim.ep.internal_states.fire_visible={databus:false,internalbus:false};sim.ep.internal_states.filter_states=["REG_IR_DECO,col-12","REG_IR,col-auto","REG_PC,col-auto","REG_MAR,col-auto","REG_MBR,col-auto","REG_RT1,col-auto","REG_RT2,col-auto","REG_RT3,col-auto","REG_SR,col-auto","REG_MICROADDR,col-auto"];sim.ep.internal_states.filter_signals=["A0,0","B,0","C,0","SELA,5","SELB,5","SELC,2","SELCOP,0","MR,0","MC,0","C0,0","C1,0","C2,0","C3,0","C4,0","C5,0","C6,0","C7,0","T1,0","T2,0","T3,0","T4,0","T5,0","T6,0","T7,0","T8,0","T9,0","T10,0","T11,0","M1,0","M2,0","M7,0","MA,0","MB,0","SELP,0","LC,0","SE,0","SIZE,0","OFFSET,0","BW,0","R,0","W,0","TA,0","TD,0","IOR,0","IOW,0","TEST_I,0","TEST_U,0"];sim.ep.internal_states.alu_flags={flag_n:0,flag_z:0,flag_v:0,flag_c:0};sim.ep.states.BR=[];sim.ep.states.BR[0]={name:"R0",verbal:"Register 0",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[1]={name:"R1",verbal:"Register 1",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[2]={name:"R2",verbal:"Register 2",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[3]={name:"R3",verbal:"Register 3",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[4]={name:"R4",verbal:"Register 4",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[5]={name:"R5",verbal:"Register 5",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[6]={name:"R6",verbal:"Register 6",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[7]={name:"R7",verbal:"Register 7",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[8]={name:"R8",verbal:"Register 8",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[9]={name:"R9",verbal:"Register 9",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[10]={name:"R10",verbal:"Register 10",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[11]={name:"R11",verbal:"Register 11",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[12]={name:"R12",verbal:"Register 12",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[13]={name:"R13",verbal:"Register 13",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[14]={name:"R14",verbal:"Register 14",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[15]={name:"R15",verbal:"Register 15",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[16]={name:"R16",verbal:"Register 16",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[17]={name:"R17",verbal:"Register 17",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[18]={name:"R18",verbal:"Register 18",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[19]={name:"R19",verbal:"Register 19",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[20]={name:"R20",verbal:"Register 20",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[21]={name:"R21",verbal:"Register 21",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[22]={name:"R22",verbal:"Register 22",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[23]={name:"R23",verbal:"Register 23",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[24]={name:"R24",verbal:"Register 24",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[25]={name:"R25",verbal:"Register 25",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[26]={name:"R26",verbal:"Register 26",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[27]={name:"R27",verbal:"Register 27",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[28]={name:"R28",verbal:"Register 28",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[29]={name:"R29",verbal:"Register 29",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[30]={name:"R30",verbal:"Register 30",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[31]={name:"R31",verbal:"Register 31",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["REG_PC"]={name:"PC",verbal:"Program Counter Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["REG_MAR"]={name:"MAR",verbal:"Memory Address Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["REG_MBR"]={name:"MBR",verbal:"Memory Data Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["REG_IR"]={name:"IR",verbal:"Instruction Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["REG_RT1"]={name:"RT1",verbal:"Temporal 1 Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["REG_RT2"]={name:"RT2",verbal:"Temporal 2 Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["REG_RT3"]={name:"RT3",verbal:"Temporal 3 Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["REG_SR"]={name:"SR",verbal:"State Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["BUS_IB"]={name:"I_BUS",verbal:"Internal Bus",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["BUS_AB"]={name:"A_BUS",verbal:"Address Bus",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["BUS_CB"]={name:"C_BUS",verbal:"Control Bus",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["BUS_DB"]={name:"D_BUS",verbal:"Data Bus",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["C2_T2"]={name:"C2_T2",verbal:"Output of PC",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["RA_T9"]={name:"RA_T9",verbal:"Input of T9 Tristate",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["RB_T10"]={name:"RB_T10",verbal:"Input of T10 Tristate",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["HPC_T12"]={name:"HPC_T12",verbal:"Input of T12 Tristate",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["SELEC_T3"]={name:"SELEC_T3",verbal:"Input of T3 Tristate",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["SELP_M7"]={name:"SELP_M7",verbal:"Output of MUX SelP",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["ALU_C6"]={name:"ALU_C6",verbal:"Input of Temporal 3 Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["MA_ALU"]={name:"MA_ALU",verbal:"Input ALU via MA",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["MB_ALU"]={name:"MB_ALU",verbal:"Input ALU via MB",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["FLAG_C"]={name:"FLAG_C",verbal:"Carry Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.ep.states["FLAG_V"]={name:"FLAG_V",verbal:"Overflow Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.ep.states["FLAG_N"]={name:"FLAG_N",verbal:"Negative Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.ep.states["FLAG_Z"]={name:"FLAG_Z",verbal:"Zero Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.ep.states["FLAG_I"]={name:"FLAG_I",verbal:"Interruption Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.ep.states["FLAG_U"]={name:"FLAG_U",verbal:"User Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.ep.states["REG_MICROADDR"]={name:"µADDR",verbal:"Microaddress Register",visible:true,nbits:"12",value:0,default_value:0,draw_data:["svg_cu:text4667"]};sim.ep.states["REG_MICROINS"]={name:"µINS",verbal:"Microinstruction Register",visible:true,nbits:"77",value:{},default_value:{},draw_data:[]};sim.ep.states["FETCH"]={name:"FETCH",verbal:"Input Fetch",visible:false,nbits:"12",value:0,default_value:0,draw_data:[]};sim.ep.states["ROM_MUXA"]={name:"ROM_MUXA",verbal:"Input ROM",visible:false,nbits:"12",value:0,default_value:0,draw_data:[]};sim.ep.states["SUM_ONE"]={name:"SUM_ONE",verbal:"Input next microinstruction",visible:false,nbits:"12",value:1,default_value:1,draw_data:[]};sim.ep.states["MUXA_MICROADDR"]={name:"MUXA_MICROADDR",verbal:"Input microaddress",visible:false,nbits:"12",value:0,default_value:0,draw_data:[]};sim.ep.states["MUXC_MUXB"]={name:"MUXC_MUXB",verbal:"Output of MUX C",visible:false,nbits:"1",value:0,default_value:0,draw_data:[]};sim.ep.states["INEX"]={name:"INEX",verbal:"Illegal Instruction Exception",visible:false,nbits:"1",value:0,default_value:0,draw_data:[]};sim.ep.states["BS_M1"]={name:"BS_M1",verbal:"from Memory",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["BS_TD"]={name:"BS_TD",verbal:"Memory",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["INTV"]={name:"INTV",verbal:"Interruption Vector",visible:false,nbits:"8",value:0,default_value:0,draw_data:[]};sim.ep.states["M2_C2"]={name:"M2_C2",verbal:"Input of Program Counter",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["M1_C1"]={name:"M1_C1",verbal:"Input of Memory Data Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["M7_C7"]={name:"M7_C7",verbal:"Input of State Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["VAL_ZERO"]={name:"VAL_ZERO",verbal:"Wired Zero",visible:false,nbits:"1",value:0,default_value:0,draw_data:[]};sim.ep.states["VAL_ONE"]={name:"VAL_ONE",verbal:"Wired One",visible:false,nbits:"32",value:1,default_value:1,draw_data:[]};sim.ep.states["VAL_FOUR"]={name:"VAL_FOUR",verbal:"Wired Four",visible:false,nbits:"32",value:4,default_value:4,draw_data:[]};sim.ep.states["REG_IR_DECO"]={name:"IR_DECO",verbal:"Instruction Decoded",visible:true,nbits:"0",value:0,default_value:0,draw_data:[]};sim.ep.states["DECO_INS"]={name:"DECO_INS",verbal:"Instruction decoded in binary",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["CLK"]={name:"CLK",verbal:"Clock",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["ACC_TIME"]={name:"ACC_TIME",verbal:"Accumulated CPU time",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["TTCPU"]={name:"TTCPU",verbal:"Several Tristates to the internal data bus in CPU activated",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["ACC_PWR"]={name:"ACC_PWR",verbal:"Accumulated Energy Consumption",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.signals["C"]={name:"C",visible:true,type:"L",value:0,default_value:0,nbits:"4",behavior:["MV MUXC_MUXB VAL_ZERO; FIRE B","MBIT MUXC_MUXB INT 0 1; FIRE B","MBIT MUXC_MUXB IORDY 0 1; FIRE B","MBIT MUXC_MUXB MRDY 0 1; FIRE B","MBIT MUXC_MUXB REG_SR 0 1; FIRE B","MBIT MUXC_MUXB REG_SR 1 1; FIRE B","MBIT MUXC_MUXB REG_SR 28 1; FIRE B","MBIT MUXC_MUXB REG_SR 29 1; FIRE B","MBIT MUXC_MUXB REG_SR 30 1; FIRE B","MBIT MUXC_MUXB REG_SR 31 1; FIRE B","MV MUXC_MUXB INEX; FIRE B"],fire_name:["svg_cu:text3410"],draw_data:[["svg_cu:path3108"],["svg_cu:path3062"],["svg_cu:path3060"],["svg_cu:path3136"],["svg_cu:path3482"],["svg_cu:path3480"],["svg_cu:path3488"],["svg_cu:path3486"],["svg_cu:path3484"],["svg_cu:path3484-9"],["svg_cu:path3108-3","svg_cu:path3260-3-8-6","svg_cu:path3260-3-8","svg_cu:path3260-3"]],draw_name:[["svg_cu:path3496","svg_cu:path3414","svg_cu:path3194-08"]]};sim.ep.signals["B"]={name:"B",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV A1 MUXC_MUXB; FIRE A1","NOT_ES A1 MUXC_MUXB; FIRE A1"],depends_on:["CLK"],fire_name:["svg_cu:text3408"],draw_data:[["svg_cu:path3100-8-7","svg_cu:path3108-1","svg_cu:path3200-1"],["svg_cu:path3392","svg_cu:path3372","svg_cu:path3390","svg_cu:path3384","svg_cu:path3100-8-7","svg_cu:path3386"]],draw_name:[[],["svg_cu:path3194-0","svg_cu:path3138-8","svg_cu:path3498-6"]]};sim.ep.signals["A0"]={name:"A0",visible:false,type:"L",value:0,default_value:0,nbits:"1",behavior:["SBIT_SIGNAL A0A1 0 1; FIRE A0A1","SBIT_SIGNAL A0A1 1 1; FIRE A0A1"],depends_on:["CLK"],fire_name:["svg_cu:text3406"],draw_data:[["svg_cu:path3096"],["svg_cu:path3096"]],draw_name:[[],["svg_cu:path3138-8-1","svg_cu:path3098-2","svg_cu:path3124-2-5"]]};sim.ep.signals["A1"]={name:"A1",visible:false,type:"L",value:0,default_value:0,nbits:"1",behavior:["SBIT_SIGNAL A0A1 0 0; FIRE A0A1","SBIT_SIGNAL A0A1 1 0; FIRE A0A1"],depends_on:["CLK"],fire_name:[],draw_data:[["svg_cu:path3094"],["svg_cu:path3094"]],draw_name:[[]]};sim.ep.signals["A0A1"]={name:"A0A1",visible:true,type:"L",value:0,default_value:0,nbits:"2",behavior:["PLUS1 MUXA_MICROADDR REG_MICROADDR","CP_FIELD MUXA_MICROADDR REG_MICROINS/MADDR","MV MUXA_MICROADDR ROM_MUXA","MV MUXA_MICROADDR FETCH"],depends_on:["CLK"],fire_name:[],draw_data:[["svg_cu:path3102","svg_cu:path3100","svg_cu:path3098","svg_cu:path3100-9","svg_cu:path3088","svg_cu:path3082"],["svg_cu:path3104","svg_cu:path3134","svg_cu:path3500","svg_cu:path3416"],["svg_cu:path3124-2-4","svg_cu:path3124-2","svg_cu:path3504","svg_cu:path3100-8","svg_cu:path3234-9"],["svg_cu:path3124"]],draw_name:[[]]};sim.ep.signals["C0"]={name:"C0",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","LOAD REG_MAR BUS_IB"],fire_name:["svg_p:text3077"],draw_data:[["svg_p:path3081"]],draw_name:[["svg_p:path3075"]]};sim.ep.signals["C1"]={name:"C1",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","LOAD REG_MBR M1_C1"],fire_name:["svg_p:text3079"],draw_data:[["svg_p:path3055"]],draw_name:[["svg_p:path3073"]]};sim.ep.signals["C2"]={name:"C2",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","LOAD REG_PC M2_C2; UPDATEDPC"],fire_name:["svg_p:text3179"],draw_data:[["svg_p:path3485"]],draw_name:[["svg_p:path3177"]]};sim.ep.signals["C3"]={name:"C3",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","LOAD REG_IR BUS_IB; DECO; FIRE_IFSET C 10"],fire_name:["svg_p:text3439"],draw_data:[["svg_p:path3339"]],draw_name:[["svg_p:path3337"]]};sim.ep.signals["C4"]={name:"C4",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","LOAD REG_RT1 BUS_IB"],fire_name:["svg_p:text3441"],draw_data:[["svg_p:path3263"]],draw_name:[["svg_p:path3255"]]};sim.ep.signals["C5"]={name:"C5",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","LOAD REG_RT2 BUS_IB"],fire_name:["svg_p:text3443"],draw_data:[["svg_p:path3277"]],draw_name:[["svg_p:path3269"]]};sim.ep.signals["C6"]={name:"C6",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","LOAD REG_RT3 ALU_C6"],fire_name:["svg_p:text3445"],draw_data:[["svg_p:path3325","svg_p:path3323","svg_p:path3321","svg_p:path3261-8","svg_p:path3317-9","svg_p:path3901-6-9"]],draw_name:[["svg_p:path3245"]]};sim.ep.signals["C7"]={name:"C7",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","LOAD REG_SR M7_C7"],fire_name:["svg_p:text3655"],draw_data:[["svg_p:path3651-9"]],draw_name:[["svg_p:path3681"]]};sim.ep.signals["TA"]={name:"TA",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","MV BUS_AB REG_MAR; MOVE_BITSE A1A0 0 2 BUS_AB 0; FIRE_IFCHANGED A1A0 A1A0"],fire_name:["svg_p:text3091"],draw_data:[["svg_p:path3061-2","svg_p:path3083","svg_p:path3089","svg_p:path3597","svg_p:path3513","svg_p:path3601","svg_p:path3601-2","svg_p:path3187","svg_p:path3087","svg_p:path2995","svg_p:path3535"]],draw_name:[["svg_p:path3085"]]};sim.ep.signals["TD"]={name:"TD",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; CHECK_RTD","MV BUS_DB BS_TD; MOVE_BITSE A1A0 0 2 BUS_AB 0; FIRE_IFCHANGED A1A0 A1A0; CHECK_RTD"],fire_name:["svg_p:text3103"],draw_data:[["svg_p:path3545","svg_p:path3093","svg_p:path3101","svg_p:path3587","svg_p:path3515","svg_p:path3071","svg_p:path3419","svg_p:path3099","svg_p:path3097","svg_p:path3559-5","svg_p:path3419-1-0","svg_p:path3583","svg_p:path3419-1","svg_p:path3491","svg_p:path3641","svg_p:path3541"]],draw_name:[["svg_p:path3095"]]};sim.ep.signals["T1"]={name:"T1",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 0","MV BUS_IB REG_MBR; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 0"],fire_name:["svg_p:text3105"],draw_data:[["svg_p:path3071","svg_p:path3065","svg_p:path3071","svg_p:path3049","svg_p:path3063-9","svg_p:path3071","svg_p:path3071","svg_p:path3069"]],draw_name:[["svg_p:path3067"]]};sim.ep.signals["T2"]={name:"T2",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 1","MV BUS_IB REG_PC; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 1"],fire_name:["svg_p:text3449"],draw_data:[["svg_p:path3195","svg_p:path3199","svg_p:path3201","svg_p:path3049"]],draw_name:[["svg_p:path3329"]]};sim.ep.signals["T3"]={name:"T3",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 2","MV BUS_IB SELEC_T3; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 2"],fire_name:["svg_p:text3451"],draw_data:[["svg_p:path3341","svg_p:path3347","svg_p:path3349","svg_p:path3931","svg_p:path3345","svg_p:path3049"]],draw_name:[["svg_p:path3351"]]};sim.ep.signals["T4"]={name:"T4",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 3","MV BUS_IB REG_RT1; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 3"],fire_name:["svg_p:text3453"],draw_data:[["svg_p:path3257","svg_p:path3261","svg_p:path3259","svg_p:path3049"]],draw_name:[["svg_p:path3305"]]};sim.ep.signals["T5"]={name:"T5",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 4","MV BUS_IB REG_RT2; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 4"],fire_name:["svg_p:text3455"],draw_data:[["svg_p:path3271","svg_p:path3275","svg_p:path3273","svg_p:path3049"]],draw_name:[["svg_p:path3307"]]};sim.ep.signals["T6"]={name:"T6",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 5","MV BUS_IB ALU_C6; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 5"],fire_name:["svg_p:text3457"],draw_data:[["svg_p:path3315","svg_p:path3589","svg_p:path3317","svg_p:path3163-2","svg_p:path3049","svg_p:path3321","svg_p:path3261-8","svg_p:path3317-9","svg_p:path3901-6-9"]],draw_name:[["svg_p:path3319"]]};sim.ep.signals["T7"]={name:"T7",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 6","MV BUS_IB REG_RT3; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 6"],fire_name:["svg_p:text3459"],draw_data:[["svg_p:path3309","svg_p:path3327","svg_p:path3311","svg_p:path3049"]],draw_name:[["svg_p:path3313"]]};sim.ep.signals["T8"]={name:"T8",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 7","MV BUS_IB REG_SR; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 7"],fire_name:["svg_p:text3657"],draw_data:[["svg_p:path3645","svg_p:path3651","svg_p:path3647","svg_p:path3049"]],draw_name:[["svg_p:path3649"]]};sim.ep.signals["T9"]={name:"T9",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 8","MV BUS_IB RA_T9; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 8"],fire_name:["svg_p:text3147"],draw_data:[["svg_p:path3131","svg_p:path3143","svg_p:path3139","svg_p:path3049","svg_p:path3143-9"]],draw_name:[["svg_p:path3133"]]};sim.ep.signals["T10"]={name:"T10",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 9","MV BUS_IB RB_T10; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 9"],fire_name:["svg_p:text3149"],draw_data:[["svg_p:path3135","svg_p:path3145","svg_p:path3141","svg_p:path3049","svg_p:path3145-5"]],draw_name:[["svg_p:path3137"]]};sim.ep.signals["T11"]={name:"T11",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 10","CP_FIELD BUS_IB REG_MICROINS/EXCODE; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 10"],fire_name:["svg_p:text3147-5","svg_cu:tspan4426"],draw_data:[["svg_cu:path3131-3","svg_p:path3131-3","svg_p:path3145","svg_p:path3081-3","svg_p:path3139-7","svg_p:path3049","svg_cu:path3081-3","svg_cu:path3139-7"]],draw_name:[["svg_p:path3133-6","svg_cu:path3133-6"]]};sim.ep.signals["T12"]={name:"T12",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 11","MV BUS_IB HPC_T12; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 11"],fire_name:["svg_p:text3147-5-0-1-1"],draw_data:[["svg_p:path3131-3-8-4-31","svg_p:path3139-7-1-4-3","svg_p:path3049","svg_p:path3081-3-8-5-3"]],draw_name:[["svg_p:path3133-6-9-7-5"]]};sim.ep.signals["M1"]={name:"M1",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV M1_C1 BUS_IB","MV M1_C1 BS_M1"],depends_on:["C1"],fire_name:["svg_p:text3469"],draw_data:[["svg_p:path3063","svg_p:path3061","svg_p:path3059"],["svg_p:path3057","svg_p:path3641","svg_p:path3419","svg_p:path3583"]],draw_name:[[],["svg_p:path3447"]]};sim.ep.signals["M2"]={name:"M2",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV M2_C2 BUS_IB","PLUS4 M2_C2 REG_PC"],depends_on:["C2"],fire_name:["svg_p:text3471"],draw_data:[["svg_p:path3217","svg_p:path3215","svg_p:path3213","svg_p:path3213-9"],["svg_p:path3211","svg_p:path3209","svg_p:path3193","svg_p:path3207","svg_p:path3197","svg_p:path3201"]],draw_name:[[],["svg_p:path3467","svg_p:path3467"]]};sim.ep.signals["M7"]={name:"M7",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV M7_C7 BUS_IB","MV M7_C7 SELP_M7"],depends_on:["C7"],fire_name:["svg_p:text3673"],draw_data:[["svg_p:path3691","svg_p:path3693","svg_p:path3659"],["svg_p:path3695"]],draw_name:[[],["svg_p:path3667"]]};sim.ep.signals["MA"]={name:"MA",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV MA_ALU RA_T9; FIRE COP","MV MA_ALU REG_RT1; FIRE COP"],depends_on:["SELA","SELB"],fire_name:["svg_p:text3463"],draw_data:[["svg_p:path3249","svg_p:path3161","svg_p:path3165"],["svg_p:path3279"]],draw_name:[[],["svg_p:path3423"]]};sim.ep.signals["MB"]={name:"MB",visible:true,type:"L",value:0,default_value:0,nbits:"2",behavior:["MV MB_ALU RB_T10; FIRE COP","MV MB_ALU REG_RT2; FIRE COP","MV MB_ALU VAL_FOUR; FIRE COP","MV MB_ALU VAL_ONE; FIRE COP"],depends_on:["SELA","SELB"],fire_name:["svg_p:text3465"],draw_data:[["svg_p:path3281","svg_p:path3171","svg_p:path3169"],["svg_p:path3283"],["svg_p:path3295","svg_p:path3293"],["svg_p:path3297","svg_p:path3299"]],draw_name:[[],["svg_p:path3425","svg_p:path3427"]]};sim.ep.signals["MH"]={name:"MH",visible:true,type:"L",value:0,default_value:0,nbits:"2",behavior:["MV HPC_T12 CLK","MV HPC_T12 ACC_TIME","MV HPC_T12 ACC_PWR","NOP"],fire_name:["svg_p:text3147-5-0-1-8-4"],draw_data:[[],["svg_p:path3081-3-8-5-3"]],draw_name:[[],["svg_p:path3306-8-7-6"]]};sim.ep.signals["COP"]={name:"COP",visible:true,type:"L",value:0,default_value:0,nbits:"5",forbidden:true,behavior:["NOP_ALU; UPDATE_NZVC","AND ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","OR ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","NOT ALU_C6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","XOR ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","SRL ALU_C6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","SRA ALU_C6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","SL ALU_C6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","RR ALU_C6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","RL ALU_C6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","ADD ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","SUB ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","MUL ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","DIV ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","MOD ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","LUI ALU_C6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","FADD ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","FSUB ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","FMUL ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","FDIV ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","FCVT ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","FCLASS ALU_C6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","ADDU ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","SUBU ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","MULU ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","DIVU ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","NOP_ALU","NOP_ALU","NOP_ALU","NOP_ALU","NOP_ALU","NOP_ALU"],depends_on:["SELCOP"],fire_name:["svg_p:text3303"],draw_data:[["svg_p:path3237","svg_p:path3239","svg_p:path3261-8","svg_p:path3321","svg_p:path3901-6","svg_p:path3317-9"]],draw_name:[["svg_p:path3009","svg_p:path3301"]]};sim.ep.signals["SELP"]={name:"SELP",visible:true,type:"L",value:0,default_value:0,nbits:"2",behavior:["NOP","MV SELP_M7 REG_SR; UPDATE_FLAG SELP_M7 FLAG_U 0; FIRE M7","MV SELP_M7 REG_SR; UPDATE_FLAG SELP_M7 FLAG_I 1; FIRE M7","MV SELP_M7 REG_SR; UPDATE_FLAG SELP_M7 FLAG_C 31; UPDATE_FLAG SELP_M7 FLAG_V 30; UPDATE_FLAG SELP_M7 FLAG_N 29; UPDATE_FLAG SELP_M7 FLAG_Z 28; FIRE M7"],fire_name:["svg_p:text3703"],draw_data:[[],["svg_p:path3643"],["svg_p:path3705"],["svg_p:path3675","svg_p:path3331"]],draw_name:[[],["svg_p:path3697"]]};sim.ep.signals["SELA"]={name:"SELA",visible:true,type:"L",value:0,default_value:0,nbits:"5",behavior:["FIRE MR_RA"],depends_on:["RA"],fire_name:["svg_cu:text3164"],draw_data:[[]],draw_name:[[]]};sim.ep.signals["SELB"]={name:"SELB",visible:true,type:"L",value:0,default_value:0,nbits:"5",behavior:["FIRE MR_RB"],depends_on:["RB"],fire_name:["svg_cu:text3168"],draw_data:[[]],draw_name:[[]]};sim.ep.signals["SELC"]={name:"SELC",visible:true,type:"L",value:0,default_value:0,nbits:"5",behavior:["FIRE MR_RC"],depends_on:["RC"],fire_name:["svg_cu:text3172"],draw_data:[[]],draw_name:[[]]};sim.ep.signals["SELCOP"]={name:"SELCOP",visible:true,type:"L",value:0,default_value:0,nbits:"5",behavior:["FIRE MC"],depends_on:["COP"],fire_name:["svg_cu:text3312"],draw_data:[[]],draw_name:[[]]};sim.ep.signals["EXCODE"]={name:"EXCODE",visible:true,type:"L",value:0,default_value:0,nbits:"4",behavior:["FIRE T11"],fire_name:["svg_cu:text3312-6"],draw_data:[[]],draw_name:[]};sim.ep.signals["RA"]={name:"RA",visible:true,type:"L",value:0,default_value:0,nbits:"5",forbidden:true,behavior:["GET RA_T9 BR RA; FIRE_IFSET T9 1; FIRE_IFSET MA 0"],depends_on:["SELA"],fire_name:["svg_p:text3107"],draw_data:[[]],draw_name:[["svg_p:path3109"]]};sim.ep.signals["RB"]={name:"RB",visible:true,type:"L",value:0,default_value:0,nbits:"5",forbidden:true,behavior:["GET RB_T10 BR RB; FIRE_IFSET T10 1; FIRE_IFSET MB 0"],depends_on:["SELB"],fire_name:["svg_p:text3123"],draw_data:[[]],draw_name:[["svg_p:path3113"]]};sim.ep.signals["RC"]={name:"RC",visible:true,type:"L",value:0,default_value:0,nbits:"5",forbidden:true,behavior:["FIRE LC"],depends_on:["SELC"],fire_name:["svg_p:text3125"],draw_data:[[]],draw_name:[["svg_p:path3117"]]};sim.ep.signals["LC"]={name:"LC",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","SET BR RC BUS_IB"],fire_name:["svg_p:text3127"],draw_data:[["svg_p:path3153","svg_p:path3151","svg_p:path3129"]],draw_name:[["svg_p:path3121"]]};sim.ep.signals["SE"]={name:"SE",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MBITS SELEC_T3 0 REG_IR OFFSET SIZE 0 SE; FIRE T3; MOVE_BITS SBWA 4 1 SE; FIRE_IFCHANGED SBWA SE","MBITS SELEC_T3 0 REG_IR OFFSET SIZE 0 SE; FIRE T3; MOVE_BITS SBWA 4 1 SE; FIRE_IFCHANGED SBWA SE"],depends_on:["T3"],fire_name:["svg_p:text3593","svg_p:text3431"],draw_data:[[]],draw_name:[["svg_p:path3591","svg_p:path3447-7-7"]]};sim.ep.signals["SIZE"]={name:"SIZE",visible:true,type:"L",value:0,default_value:0,nbits:"5",behavior:["MBITS SELEC_T3 0 REG_IR OFFSET SIZE 0 SE; FIRE T3"],depends_on:["T3"],fire_name:["svg_p:text3363"],draw_data:[[]],draw_name:[["svg_p:path3355"]]};sim.ep.signals["OFFSET"]={name:"OFFSET",visible:true,type:"L",value:0,default_value:0,nbits:"5",behavior:["MBITS SELEC_T3 0 REG_IR OFFSET SIZE 0 SE; FIRE T3"],depends_on:["T3"],fire_name:["svg_p:text3707"],draw_data:[[]],draw_name:[["svg_p:path3359"]]};sim.ep.signals["MC"]={name:"MC",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MBIT COP REG_IR 0 5; FIRE COP;","CP_FIELD COP REG_MICROINS/SELCOP; FIRE COP;"],depends_on:["SELCOP"],fire_name:["svg_cu:text3322","svg_cu:text3172-1-5"],draw_data:[["svg_cu:path3320","svg_cu:path3142"],["svg_cu:path3318","svg_cu:path3502-6"]],draw_name:[[],["svg_cu:path3306"]]};sim.ep.signals["MR"]={name:"MR",verbal:["Copy from IR[SelA], from IR[SelB], and from IR[SelB] into RA, RB, and RC. ","Copy SelA, SelB, and SelB into RA, RB, and RC. "],visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV MR_RA MR; FIRE MR_RA; MV MR_RB MR; FIRE MR_RB; MV MR_RC MR; FIRE MR_RC;","MV MR_RA MR; FIRE MR_RA; MV MR_RB MR; FIRE MR_RB; MV MR_RC MR; FIRE MR_RC;"],depends_on:["SELA","SELB","SELC"],fire_name:["svg_cu:text3222","svg_cu:text3242","svg_cu:text3254","svg_cu:text3172-1"],draw_data:[["svg_cu:path3494","svg_cu:path3492","svg_cu:path3490","svg_cu:path3188","svg_cu:path3190","svg_cu:path3192","svg_cu:path3194","svg_cu:path3276","svg_cu:path3290","svg_cu:path3260","svg_cu:path3196","svg_cu:path3278","svg_cu:path3292","svg_cu:path3142","svg_cu:path3258-4","svg_cu:path3390-7","svg_cu:path3258","svg_cu:path3280"],["svg_cu:path3270","svg_cu:path3282","svg_cu:path3300","svg_cu:path3258","svg_cu:path3260","svg_cu:path3258-4","svg_cu:path3278","svg_cu:path3196","svg_cu:path3294","svg_cu:path3292","svg_cu:path3288","svg_cu:path3280","svg_cu:path3258","svg_cu:path3258-4","svg_cu:path3390-7"]],draw_name:[[],["svg_cu:path3220","svg_cu:path3240","svg_cu:path3252"]]};sim.ep.signals["MR_RA"]={name:"MR_RA",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MBIT_SN RA REG_IR REG_MICROINS/SELA 5; FIRE RA;","CP_FIELD RA REG_MICROINS/SELA; FIRE RA;"],fire_name:[],draw_data:[[]],draw_name:[[]]};sim.ep.signals["MR_RB"]={name:"MR_RB",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MBIT_SN RB REG_IR REG_MICROINS/SELB 5; FIRE RB;","CP_FIELD RB REG_MICROINS/SELB; FIRE RB;"],fire_name:[],draw_data:[[]],draw_name:[[]]};sim.ep.signals["MR_RC"]={name:"MR_RC",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MBIT_SN RC REG_IR REG_MICROINS/SELC 5; FIRE RC;","CP_FIELD RC REG_MICROINS/SELC; FIRE RC;"],fire_name:[],draw_data:[[]],draw_name:[[]]};sim.ep.signals["BW"]={name:"BW",verbal:["Select one byte (based on A1A0) from Word. ","Select two bytes (one Half Word based on A1A0) from Word. ","","Select the full Word. "],visible:true,type:"L",value:0,default_value:0,nbits:"2",behavior:["MOVE_BITS BWA 2 2 BW; MOVE_BITS SBWA 2 2 BW; FIRE_IFCHANGED BWA BW; FIRE SBWA; RESET_CHANGED BW","MOVE_BITS BWA 2 2 BW; MOVE_BITS SBWA 2 2 BW; FIRE_IFCHANGED BWA BW; FIRE SBWA; RESET_CHANGED BW","MOVE_BITS BWA 2 2 BW; MOVE_BITS SBWA 2 2 BW; FIRE_IFCHANGED BWA BW; FIRE SBWA; RESET_CHANGED BW","MOVE_BITS BWA 2 2 BW; MOVE_BITS SBWA 2 2 BW; FIRE_IFCHANGED BWA BW; FIRE SBWA; RESET_CHANGED BW"],fire_name:["svg_p:text3433"],draw_data:[["svg_p:path3061-2-6","svg_p:path3101-8","svg_p:path3535-8"]],draw_name:[[],[]]};sim.ep.signals["A1A0"]={name:"A1A0",visible:true,type:"L",value:0,default_value:0,nbits:"2",behavior:["MOVE_BITS BWA 0 2 A1A0; MOVE_BITS SBWA 0 2 A1A0; FIRE BWA; FIRE SBWA","MOVE_BITS BWA 0 2 A1A0; MOVE_BITS SBWA 0 2 A1A0; FIRE BWA; FIRE SBWA","MOVE_BITS BWA 0 2 A1A0; MOVE_BITS SBWA 0 2 A1A0; FIRE BWA; FIRE SBWA","MOVE_BITS BWA 0 2 A1A0; MOVE_BITS SBWA 0 2 A1A0; FIRE BWA; FIRE SBWA"],fire_name:["svg_p:text3603"],draw_data:[[],[]],draw_name:[[],[]]};sim.ep.signals["BWA"]={name:"BWA",visible:false,type:"L",value:0,default_value:0,nbits:"4",behavior:["BSEL BS_TD 0 8 REG_MBR 0; FIRE TD; FIRE R; FIRE W","BSEL BS_TD 8 8 REG_MBR 0; FIRE TD; FIRE R; FIRE W","BSEL BS_TD 16 8 REG_MBR 0; FIRE TD; FIRE R; FIRE W","BSEL BS_TD 24 8 REG_MBR 0; FIRE TD; FIRE R; FIRE W","BSEL BS_TD 0 16 REG_MBR 0; FIRE TD; FIRE R; FIRE W","BSEL BS_TD 0 16 REG_MBR 0; FIRE TD; FIRE R; FIRE W","BSEL BS_TD 0 16 REG_MBR 0; FIRE TD; FIRE R; FIRE W","BSEL BS_TD 0 16 REG_MBR 0; FIRE TD; FIRE R; FIRE W","BSEL BS_TD 16 16 REG_MBR 0; FIRE TD; FIRE R; FIRE W","BSEL BS_TD 16 16 REG_MBR 0; FIRE TD; FIRE R; FIRE W","BSEL BS_TD 16 16 REG_MBR 0; FIRE TD; FIRE R; FIRE W","BSEL BS_TD 16 16 REG_MBR 0; FIRE TD; FIRE R; FIRE W","MV BS_TD REG_MBR; FIRE TD; FIRE R; FIRE W","MV BS_TD REG_MBR; FIRE TD; FIRE R; FIRE W","MV BS_TD REG_MBR; FIRE TD; FIRE R; FIRE W","MV BS_TD REG_MBR; FIRE TD; FIRE R; FIRE W"],fire_name:["svg_p:text3533-5"],draw_data:[[],[]],draw_name:[[],[]]};sim.ep.signals["SBWA"]={name:"SBWA",visible:false,type:"L",value:0,default_value:0,nbits:"5",behavior:["BSEL BS_M1 0 8 BUS_DB 0; FIRE M1","BSEL BS_M1 0 8 BUS_DB 8; FIRE M1","BSEL BS_M1 0 8 BUS_DB 16; FIRE M1","BSEL BS_M1 0 8 BUS_DB 24; FIRE M1","BSEL BS_M1 0 16 BUS_DB 0; FIRE M1","BSEL BS_M1 0 16 BUS_DB 0; FIRE M1","BSEL BS_M1 0 16 BUS_DB 0; FIRE M1","BSEL BS_M1 0 16 BUS_DB 0; FIRE M1","BSEL BS_M1 0 16 BUS_DB 16; FIRE M1","BSEL BS_M1 0 16 BUS_DB 16; FIRE M1","BSEL BS_M1 0 16 BUS_DB 16; FIRE M1","BSEL BS_M1 0 16 BUS_DB 16; FIRE M1","MV BS_M1 BUS_DB; FIRE M1","MV BS_M1 BUS_DB; FIRE M1","MV BS_M1 BUS_DB; FIRE M1","MV BS_M1 BUS_DB; FIRE M1","BSEL BS_M1 0 8 BUS_DB 0; EXT_SIG BS_M1 7; FIRE M1","BSEL BS_M1 0 8 BUS_DB 8; EXT_SIG BS_M1 7; FIRE M1","BSEL BS_M1 0 8 BUS_DB 16; EXT_SIG BS_M1 7; FIRE M1","BSEL BS_M1 0 8 BUS_DB 24; EXT_SIG BS_M1 7; FIRE M1","BSEL BS_M1 0 16 BUS_DB 0; EXT_SIG BS_M1 15; FIRE M1","BSEL BS_M1 0 16 BUS_DB 0; EXT_SIG BS_M1 15; FIRE M1","BSEL BS_M1 0 16 BUS_DB 0; EXT_SIG BS_M1 15; FIRE M1","BSEL BS_M1 0 16 BUS_DB 0; EXT_SIG BS_M1 15; FIRE M1","BSEL BS_M1 0 16 BUS_DB 16; EXT_SIG BS_M1 15; FIRE M1","BSEL BS_M1 0 16 BUS_DB 16; EXT_SIG BS_M1 15; FIRE M1","BSEL BS_M1 0 16 BUS_DB 16; EXT_SIG BS_M1 15; FIRE M1","BSEL BS_M1 0 16 BUS_DB 16; EXT_SIG BS_M1 15; FIRE M1","MV BS_M1 BUS_DB; FIRE M1","MV BS_M1 BUS_DB; FIRE M1","MV BS_M1 BUS_DB; FIRE M1","MV BS_M1 BUS_DB; FIRE M1"],fire_name:[],draw_data:[[],[]],draw_name:[[],[]]};sim.ep.signals["IOR"]={name:"IOR",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","MOVE_BITS KBD_IOR 0 1 IOR; MOVE_BITS SCR_IOR 0 1 IOR; MOVE_BITS L3D_IOR 0 1 IOR; MOVE_BITS L3D_IOR 0 1 IOR; FIRE KBD_IOR; FIRE SCR_IOR; FIRE L3D_IOR; FIRE LEDM_IOR"],fire_name:["svg_p:text3715"],draw_data:[[],["svg_p:path3733","svg_p:path3491","svg_p:text3715"]],draw_name:[[],[]]};sim.ep.signals["IOW"]={name:"IOW",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","MOVE_BITS SCR_IOW 0 1 IOW; FIRE SCR_IOW; MOVE_BITS IO_IOW 0 1 IOW; FIRE IO_IOW; MOVE_BITS L3D_IOW 0 1 IOW; FIRE L3D_IOW; MOVE_BITS LEDM_IOW 0 1 IOW; FIRE LEDM_IOW"],fire_name:["svg_p:text3717"],draw_data:[[],["svg_p:path3735","svg_p:path3491","svg_p:text3717"]],draw_name:[[],[]]};sim.ep.signals["I"]={name:"I",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV FLAG_I VAL_ZERO; FIRE_IFSET SELP 2","MV FLAG_I VAL_ONE; FIRE_IFSET SELP 2"],fire_name:[],draw_data:[[],[]],draw_name:[[],[]]};sim.ep.signals["U"]={name:"U",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV FLAG_U VAL_ZERO; FIRE_IFSET SELP 2","MV FLAG_U VAL_ONE; FIRE_IFSET SELP 2"],fire_name:[],draw_data:[[],[]],draw_name:[[],[]]};sim.ep.signals["TEST_C"]={name:"TEST_C",visible:true,type:"L",value:0,default_value:0,nbits:"1",forbidden:true,behavior:["MV FLAG_C VAL_ZERO; FIRE_IFSET SELP 2","MV FLAG_C VAL_ONE; FIRE_IFSET SELP 3"],depends_on:["SELCOP","COP"],fire_name:["svg_p:text3701-3"],draw_data:[["svg_p:text3701-3"]],draw_name:[[]]};sim.ep.signals["TEST_V"]={name:"TEST_V",visible:true,type:"L",value:0,default_value:0,nbits:"1",forbidden:true,behavior:["MV FLAG_V VAL_ZERO; FIRE_IFSET SELP 2","MV FLAG_V VAL_ONE; FIRE_IFSET SELP 3"],depends_on:["SELCOP","COP"],fire_name:["svg_p:text3701-3-1"],draw_data:[["svg_p:text3701-3-1"]],draw_name:[[]]};sim.ep.signals["TEST_N"]={name:"TEST_N",visible:true,type:"L",value:0,default_value:0,nbits:"1",forbidden:true,behavior:["MV FLAG_N VAL_ZERO; FIRE_IFSET SELP 2","MV FLAG_N VAL_ONE; FIRE_IFSET SELP 3"],depends_on:["SELCOP","COP"],fire_name:["svg_p:text3701-3-2"],draw_data:[["svg_p:text3701-3-2"]],draw_name:[[]]};sim.ep.signals["TEST_Z"]={name:"TEST_Z",visible:true,type:"L",value:0,default_value:0,nbits:"1",forbidden:true,behavior:["MV FLAG_Z VAL_ZERO; FIRE_IFSET SELP 2","MV FLAG_Z VAL_ONE; FIRE_IFSET SELP 3"],depends_on:["SELCOP","COP"],fire_name:["svg_p:text3701-3-5"],draw_data:[["svg_p:text3701-3-5"]],draw_name:[[]]};sim.ep.signals["TEST_I"]={name:"TEST_I",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV FLAG_I VAL_ZERO; FIRE_IFSET SELP 2","MV FLAG_I VAL_ONE; FIRE_IFSET SELP 2"],depends_on:["CLK"],fire_name:["svg_p:text3669"],draw_data:[["svg_p:text3669"]],draw_name:[[]]};sim.ep.signals["TEST_U"]={name:"TEST_U",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV FLAG_U VAL_ZERO; FIRE_IFSET SELP 1","MV FLAG_U VAL_ONE; FIRE_IFSET SELP 1"],depends_on:["CLK"],fire_name:["svg_p:text3669-1"],draw_data:[["svg_p:text3669-1"]],draw_name:[[]]};sim.ep.signals["TEST_INTV"]={name:"TEST_INTV",visible:true,type:"L",value:0,default_value:0,nbits:"8",forbidden:true,behavior:["MBIT INTV TEST_INTV 0 32"],depends_on:["INT"],fire_name:["svg_p:tspan4225"],draw_data:[["svg_p:path3749"]],draw_name:[[]]};sim.ep.behaviors["NOP"]={nparameters:1,operation:function(s_expr){},verbal:function(s_expr){return""}};sim.ep.behaviors["NOP_ALU"]={nparameters:1,operation:function(s_expr){sim.ep.internal_states.alu_flags.flag_n=0;sim.ep.internal_states.alu_flags.flag_z=0;sim.ep.internal_states.alu_flags.flag_c=0;sim.ep.internal_states.alu_flags.flag_v=0},verbal:function(s_expr){return""}};sim.ep.behaviors["MV"]={nparameters:3,types:["X","X"],operation:function(s_expr){sim_elto_org=get_reference(s_expr[2]);sim_elto_dst=get_reference(s_expr[1]);newval=get_value(sim_elto_org);set_value(sim_elto_dst,newval)},verbal:function(s_expr){var sim_elto_org=get_reference(s_expr[2]);var newval=get_value(sim_elto_org);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy from "+show_verbal(s_expr[2])+" to "+show_verbal(s_expr[1])+" value "+show_value(newval)+". "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[2])+" ("+show_value(newval)+"). "}};sim.ep.behaviors["LOAD"]={nparameters:3,types:["X","X"],operation:function(s_expr){sim_elto_org=get_reference(s_expr[2]);sim_elto_dst=get_reference(s_expr[1]);newval=get_value(sim_elto_org);set_value(sim_elto_dst,newval)},verbal:function(s_expr){var sim_elto_org=get_reference(s_expr[2]);var newval=get_value(sim_elto_org);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Load from "+show_verbal(s_expr[2])+" to "+show_verbal(s_expr[1])+" value "+show_value(newval)+". "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[2])+" ("+show_value(newval)+"). "}};sim.ep.behaviors["CP_FIELD"]={nparameters:3,types:["X","X"],operation:function(s_expr){r=s_expr[2].split("/");sim_elto_org=get_reference(r[0]);newval=get_value(sim_elto_org);newval=newval[r[1]];if(typeof newval!="undefined"){sim_elto_dst=get_reference(s_expr[1]);set_value(sim_elto_dst,newval)}},verbal:function(s_expr){var newval=0;var r=s_expr[2].split("/");var sim_elto_org=get_reference(r[0]);var sim_elto_dst=get_reference(r[1]);if(typeof sim_elto_dst=="undefined")sim_elto_dst={};if(typeof sim_elto_org.value[r[1]]!="undefined")newval=sim_elto_org.value[r[1]];else if(typeof sim_elto_dst.default_value!="undefined")newval=sim_elto_dst.default_value;else newval="<undefined>";var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy from Field "+r[1]+" of "+show_verbal(r[0])+" to "+show_verbal(s_expr[1])+" value "+newval+". "}return show_verbal(s_expr[1])+" = "+show_verbal(r[0])+"."+r[1]+" ("+newval+"). "}};sim.ep.behaviors["NOT_ES"]={nparameters:3,types:["S","E"],operation:function(s_expr){set_value(sim.ep.signals[s_expr[1]],Math.abs(get_value(sim.ep.states[s_expr[2]])-1))},verbal:function(s_expr){var value=Math.abs(get_value(sim.ep.states[s_expr[2]])-1);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Set "+show_verbal(s_expr[1])+" with value "+show_value(value)+" (Logical NOT of "+s_expr[2]+"). "}return show_verbal(s_expr[1])+" = "+show_value(value)+" (Logical NOT "+s_expr[2]+"). "}};sim.ep.behaviors["GET"]={nparameters:4,types:["E","E","S"],operation:function(s_expr){set_value(sim.ep.states[s_expr[1]],get_value(sim.ep.states[s_expr[2]][sim.ep.signals[s_expr[3]].value]))},verbal:function(s_expr){var value=get_value(sim.ep.states[s_expr[2]][sim.ep.signals[s_expr[3]].value]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Set "+show_verbal(s_expr[1])+" with value "+show_value(value)+" (Register File "+s_expr[3]+"). "}return show_verbal(s_expr[1])+" = "+show_value(value)+" (Register File "+s_expr[3]+"). "}};sim.ep.behaviors["SET"]={nparameters:4,types:["E","S","E"],operation:function(s_expr){set_value(sim.ep.states[s_expr[1]][sim.ep.signals[s_expr[2]].value],get_value(sim.ep.states[s_expr[3]]))},verbal:function(s_expr){var value=get_value(sim.ep.states[s_expr[3]]);var o_ref=sim.ep.states[s_expr[1]][sim.ep.signals[s_expr[2]].value];var o_verbal=o_ref.name;if(typeof o_ref.verbal!="undefined")o_verbal=o_ref.verbal;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy to "+o_verbal+" the value "+show_value(value)+". "}return o_verbal+" = "+show_value(value)+". "}};sim.ep.behaviors["AND"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])&get_value(sim.ep.states[s_expr[3]]);set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])&get_value(sim.ep.states[s_expr[3]]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU AND with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (AND). "}};sim.ep.behaviors["OR"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])|get_value(sim.ep.states[s_expr[3]]);set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])|get_value(sim.ep.states[s_expr[3]]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU OR with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (OR). "}};sim.ep.behaviors["NOT"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=~get_value(sim.ep.states[s_expr[2]]);set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=~get_value(sim.ep.states[s_expr[2]]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU NOT with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (NOT). "}};sim.ep.behaviors["XOR"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])^get_value(sim.ep.states[s_expr[3]]);set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])^get_value(sim.ep.states[s_expr[3]]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU XOR with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (XOR). "}};sim.ep.behaviors["SRL"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])>>>1;set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])>>>1;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Shift Right Logical with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (SRL). "}};sim.ep.behaviors["SRA"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])>>1;set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])>>1;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Shift Right Arithmetic with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (SRA). "}};sim.ep.behaviors["SL"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])<<1;set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=result>>>31},verbal:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])<<1;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Shift Left with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (SL). "}};sim.ep.behaviors["RR"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])>>>1|(get_value(sim.ep.states[s_expr[2]])&1)<<31;set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])>>>1|(get_value(sim.ep.states[s_expr[2]])&1)<<31;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Right Rotation with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (RR). "}};sim.ep.behaviors["RL"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])<<1|(get_value(sim.ep.states[s_expr[2]])&2147483648)>>>31;set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])<<1|(get_value(sim.ep.states[s_expr[2]])&2147483648)>>>31;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Left Rotation with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (LR). "}};sim.ep.behaviors["ADD"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var b=get_value(sim.ep.states[s_expr[3]])<<0;var result=a+b;set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=a>>>31&&b>>>31;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var b=get_value(sim.ep.states[s_expr[3]])<<0;var result=a+b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU ADD with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (ADD). "}};sim.ep.behaviors["SUB"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var b=get_value(sim.ep.states[s_expr[3]])<<0;var result=a-b;set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=a>>>31&&b>>>31;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var b=get_value(sim.ep.states[s_expr[3]])<<0;var result=a-b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU SUB with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (SUB). "}};sim.ep.behaviors["MUL"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var b=get_value(sim.ep.states[s_expr[3]])<<0;var result=a*b;set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=0;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var b=get_value(sim.ep.states[s_expr[3]])<<0;var result=a*b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU MUL with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (MUL). "}};sim.ep.behaviors["DIV"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var b=get_value(sim.ep.states[s_expr[3]])<<0;if(0==b){set_value(sim.ep.states[s_expr[1]],0);sim.ep.internal_states.alu_flags.flag_n=0;sim.ep.internal_states.alu_flags.flag_z=1;sim.ep.internal_states.alu_flags.flag_v=1;sim.ep.internal_states.alu_flags.flag_c=0;return}var result=Math.floor(a/b);set_value(sim.ep.states[s_expr[1]],result);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var b=get_value(sim.ep.states[s_expr[3]])<<0;if(0==b){return"ALU DIV zero by zero (oops!). "}var result=Math.floor(a/b);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU DIV with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (DIV). "}};sim.ep.behaviors["MOD"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var b=get_value(sim.ep.states[s_expr[3]])<<0;if(0==b){set_value(sim.ep.states[s_expr[1]],0);sim.ep.internal_states.alu_flags.flag_n=0;sim.ep.internal_states.alu_flags.flag_z=1;sim.ep.internal_states.alu_flags.flag_v=1;sim.ep.internal_states.alu_flags.flag_c=0;return}var result=a%b;set_value(sim.ep.states[s_expr[1]],result);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var b=get_value(sim.ep.states[s_expr[3]])<<0;if(0==b){return"ALU MOD zero by zero (oops!). "}var result=a%b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU MOD with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (MOD). "}};sim.ep.behaviors["LUI"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])<<16;set_value(sim.ep.states[s_expr[1]],result);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])<<16;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Load Upper Immediate with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (LUI). "}};sim.ep.behaviors["ADDU"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])>>>0;var b=get_value(sim.ep.states[s_expr[3]])>>>0;var result=a+b;set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=0;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])>>>0;var b=get_value(sim.ep.states[s_expr[3]])>>>0;var result=a+b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU ADDU with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (ADDU). "}};sim.ep.behaviors["SUBU"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])>>>0;var b=get_value(sim.ep.states[s_expr[3]])>>>0;var result=a-b;set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=0;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])>>>0;var b=get_value(sim.ep.states[s_expr[3]])>>>0;var result=a-b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU SUBU with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (SUBU). "}};sim.ep.behaviors["MULU"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])>>>0;var b=get_value(sim.ep.states[s_expr[3]])>>>0;var result=a*b;set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=0;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])>>>0;var b=get_value(sim.ep.states[s_expr[3]])>>>0;var result=a*b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU MULU with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (MULU). "}};sim.ep.behaviors["DIVU"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])>>>0;var b=get_value(sim.ep.states[s_expr[3]])>>>0;if(0==b){set_value(sim.ep.states[s_expr[1]],0);sim.ep.internal_states.alu_flags.flag_n=0;sim.ep.internal_states.alu_flags.flag_z=1;sim.ep.internal_states.alu_flags.flag_v=1;sim.ep.internal_states.alu_flags.flag_c=0;return}var result=Math.floor(a/b);set_value(sim.ep.states[s_expr[1]],result);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])>>>0;var b=get_value(sim.ep.states[s_expr[3]])>>>0;if(0==b){return"ALU DIVU zero by zero (oops!). "}var result=Math.floor(a/b);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU DIVU with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (DIVU). "}};sim.ep.behaviors["FADD"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]]);var b=get_value(sim.ep.states[s_expr[3]]);var result=hex2float(a)+hex2float(b);set_value(sim.ep.states[s_expr[1]],float32_to_uint(result));sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=0;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]]);var b=get_value(sim.ep.states[s_expr[3]]);var result=hex2float(a)+hex2float(b);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU FADD with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (FADD). "}};sim.ep.behaviors["FSUB"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]]);var b=get_value(sim.ep.states[s_expr[3]]);var result=hex2float(a)-hex2float(b);set_value(sim.ep.states[s_expr[1]],float32_to_uint(result));sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=0;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]]);var b=get_value(sim.ep.states[s_expr[3]]);var result=hex2float(a)-hex2float(b);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU FSUB with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (FSUB). "}};sim.ep.behaviors["FMUL"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]]);var b=get_value(sim.ep.states[s_expr[3]]);var result=hex2float(a)*hex2float(b);set_value(sim.ep.states[s_expr[1]],float32_to_uint(result));sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=0;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]]);var b=get_value(sim.ep.states[s_expr[3]]);var result=hex2float(a)*hex2float(b);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU FMUL with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (FMUL). "}};sim.ep.behaviors["FDIV"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]]);var b=get_value(sim.ep.states[s_expr[3]]);var result=hex2float(a)/hex2float(b);set_value(sim.ep.states[s_expr[1]],float32_to_uint(result));sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=0;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]]);var b=get_value(sim.ep.states[s_expr[3]]);var result=hex2float(a)-hex2float(b);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU FDIV with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (FDIV). "}};sim.ep.behaviors["FCVT"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])>>>0;var b=get_value(sim.ep.states[s_expr[3]]);var result=a;switch(b){case 1:result=hex2float(result);result=Math.trunc(result);break;case 2:result=hex2float(result);result=Math.round(result);break;case 4:result=result.toFixed(5);result=parseFloat(result);result=float2decimal(result);break;default:break}set_value(sim.ep.states[s_expr[1]],result);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=0;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])>>>0;var b=get_value(sim.ep.states[s_expr[3]]);var result=a;switch(b){case 1:result=hex2float(result);result=Math.trunc(result);break;case 2:result=hex2float(result);result=Math.round(result);break;case 4:result=result.toFixed(5);result=parseFloat(result);result=float2decimal(result);break;default:break}var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU FCVT with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (FCVT). "}};sim.ep.behaviors["FCLASS"]={nparameters:3,types:["E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])>>>0;var result=float_class(a);set_value(sim.ep.states[s_expr[1]],result);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=0;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[1]])>>>0;var result=float_class(a);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU FCLASS with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (FCLASS). "}};sim.ep.behaviors["PLUS1"]={nparameters:3,types:["E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var result=a+1;set_value(sim.ep.states[s_expr[1]],result>>>0)},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var result=a+1;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy to "+show_verbal(s_expr[1])+" "+show_verbal(s_expr[2])+" plus one with result "+show_value(result)+". "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[2])+" + 1"+" ("+show_value(result)+"). "}};sim.ep.behaviors["PLUS4"]={nparameters:3,types:["E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var result=a+4;set_value(sim.ep.states[s_expr[1]],result>>>0)},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var result=a+4;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy to "+show_verbal(s_expr[1])+" "+show_verbal(s_expr[2])+" plus four with result "+show_value(result)+". "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[2])+" + 4"+" ("+show_value(result)+"). "}};sim.ep.behaviors["SET_TT"]={nparameters:3,types:["E","I"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[1]])<<0;var b=parseInt(s_expr[2]);var m=Math.pow(2,b);var r=a|m;set_value(sim.ep.states[s_expr[1]],r);update_cpu_bus_fire(r,b)},verbal:function(s_expr){return""}};sim.ep.behaviors["RST_TT"]={nparameters:3,types:["E","I"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[1]])<<0;var b=parseInt(s_expr[2]);var m=Math.pow(2,b);var r=a&~m;set_value(sim.ep.states[s_expr[1]],r);update_cpu_bus_fire(r,b)},verbal:function(s_expr){return""}};sim.ep.behaviors["CHECK_RTD"]={nparameters:1,operation:function(s_expr){var number_active_tri=parseInt(simhw_sim_signal("TD").value)+parseInt(simhw_sim_signal("R").value);update_system_bus_fire(number_active_tri)},verbal:function(s_expr){return""}};sim.ep.behaviors["MBIT"]={nparameters:5,types:["X","X","I","I"],operation:function(s_expr){var sim_elto_dst=get_reference(s_expr[1]);var sim_elto_org=get_reference(s_expr[2]);var offset=parseInt(s_expr[3]);var size=parseInt(s_expr[4]);var n1=get_value(sim_elto_org).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(offset+size-1),size);set_value(sim_elto_dst,parseInt(n2,2))},verbal:function(s_expr){var sim_elto_dst=get_reference(s_expr[1]);var sim_elto_org=get_reference(s_expr[2]);var offset=parseInt(s_expr[3]);var size=parseInt(s_expr[4]);var n1=get_value(sim_elto_org).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(offset+size-1),size);var n3=parseInt(n2,2);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy from "+show_verbal(s_expr[2])+" to "+show_verbal(s_expr[1])+" value "+show_value(n3)+" (copied "+size+" bits from bit "+offset+"). "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[2])+" ("+show_value(n3)+", "+size+" bits from bit "+offset+"). "}};sim.ep.behaviors["MBIT_SN"]={nparameters:5,types:["S","E","E","I"],operation:function(s_expr){var base=0;var r=s_expr[3].split("/");if(1==r.length)base=get_value(sim.ep.states[s_expr[3]]);else if(typeof sim.ep.states[r[0]].value[r[1]]!="undefined")base=sim.ep.states[r[0]].value[r[1]];else if(typeof sim.ep.signals[r[1]].default_value!="undefined")base=sim.ep.signals[r[1]].default_value;else if(typeof sim.ep.states[r[1]].default_value!="undefined")base=sim.ep.states[r[1]].default_value;else ws_alert("WARN: undefined state/field pair -> "+r[0]+"/"+r[1]);var offset=parseInt(s_expr[4]);var n1=get_value(sim.ep.states[s_expr[2]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;var n3=n2.substr(31-(base+offset-1),offset);set_value(sim.ep.signals[s_expr[1]],parseInt(n3,2))},verbal:function(s_expr){var base=0;var r=s_expr[3].split("/");if(1==r.length)base=get_value(sim.ep.states[s_expr[3]]);else if(typeof sim.ep.states[r[0]].value[r[1]]!="undefined")base=sim.ep.states[r[0]].value[r[1]];else if(typeof sim.ep.signals[r[1]].default_value!="undefined")base=sim.ep.signals[r[1]].default_value;else if(typeof sim.ep.states[r[1]].default_value!="undefined")base=sim.ep.states[r[1]].default_value;else ws_alert("WARN: undefined state/field pair -> "+r[0]+"/"+r[1]);var offset=parseInt(s_expr[4]);var n1=get_value(sim.ep.states[s_expr[2]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;var n3=n2.substr(31-(base+offset-1),offset);var from_elto="";if(1==r.length)from_elto=show_verbal(s_expr[3]);else from_elto=show_verbal(s_expr[2])+"["+r[1]+"] ";var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy from "+from_elto+"into "+show_verbal(s_expr[1])+" "+"value "+parseInt(n3,2)+". "}return show_verbal(s_expr[1])+" = "+from_elto+" ("+parseInt(n3,2)+"). "}};sim.ep.behaviors["SBIT_SIGNAL"]={nparameters:4,types:["X","I","I"],operation:function(s_expr){sim_elto_dst=get_reference(s_expr[1]);var new_value=sim_elto_dst.value;var mask=1<>>0)},verbal:function(s_expr){sim_elto_dst=get_reference(s_expr[1]);var new_value=sim_elto_dst.value;var mask=1<>>0)}};sim.ep.behaviors["UPDATE_FLAG"]={nparameters:4,types:["X","X","I"],operation:function(s_expr){sim_elto_org=get_reference(s_expr[2]);sim_elto_dst=get_reference(s_expr[1]);var new_value=sim_elto_dst.value&~(1<>>0)},verbal:function(s_expr){sim_elto_org=get_reference(s_expr[2]);sim_elto_dst=get_reference(s_expr[1]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Update "+show_verbal(s_expr[2])+" to value "+sim_elto_org.value+". "}return show_verbal(s_expr[1])+"."+show_verbal(s_expr[3])+" = "+sim_elto_org.value+". "}};sim.ep.behaviors["MBITS"]={nparameters:8,types:["E","I","E","S","S","I","S"],operation:function(s_expr){var offset=parseInt(sim.ep.signals[s_expr[4]].value);var size=parseInt(sim.ep.signals[s_expr[5]].value);var n1=get_value(sim.ep.states[s_expr[3]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(offset+size-1),size);var n3="00000000000000000000000000000000".substring(0,32-n2.length)+n2;if("1"==sim.ep.signals[s_expr[7]].value&&"1"==n2.substr(0,1)){n3="11111111111111111111111111111111".substring(0,32-n2.length)+n2}set_value(sim.ep.states[s_expr[1]],parseInt(n3,2))},verbal:function(s_expr){var offset=parseInt(sim.ep.signals[s_expr[4]].value);var size=parseInt(sim.ep.signals[s_expr[5]].value);var n1=get_value(sim.ep.states[s_expr[3]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(offset+size-1),size);var n3="00000000000000000000000000000000".substring(0,32-n2.length)+n2;if("1"==sim.ep.signals[s_expr[7]].value&&"1"==n2.substr(0,1)){n3="11111111111111111111111111111111".substring(0,32-n2.length)+n2}n1=parseInt(n3,2);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return" Copy from "+show_verbal(s_expr[3])+" to "+show_verbal(s_expr[1])+" value "+show_value(n1)+" (copied "+size+" bits from bit "+offset+"). "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[3])+" ("+show_value(n1)+", "+size+" bits from bit "+offset+"). "}};sim.ep.behaviors["BSEL"]={nparameters:6,types:["E","I","I","E","I"],operation:function(s_expr){var posd=parseInt(s_expr[2]);var poso=parseInt(s_expr[5]);var len=parseInt(s_expr[3]);var n1=get_value(sim.ep.states[s_expr[4]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(poso+len)+1,len);var n3="00000000000000000000000000000000".substring(0,32-n2.length)+n2;var n4="00000000000000000000000000000000".substr(0,posd);n3=n3+n4;set_value(sim.ep.states[s_expr[1]],parseInt(n3,2))},verbal:function(s_expr){var posd=parseInt(s_expr[2]);var len=parseInt(s_expr[3]);var poso=parseInt(s_expr[5]);var n1=get_value(sim.ep.states[s_expr[4]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(poso+len)+1,len);var n3="00000000000000000000000000000000".substring(0,32-n2.length)+n2;var n4="00000000000000000000000000000000".substr(0,posd);n3=n3+n4;var n5=parseInt(n3,2);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy from "+show_verbal(s_expr[4])+" to "+show_verbal(s_expr[1])+" value "+show_value(n5)+" (copied "+len+" bits, from bit "+poso+" of "+s_expr[4]+" to bit "+posd+" of "+s_expr[1]+"). "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[4])+" ("+show_value(n5)+", "+len+" bits, from bit "+poso+" of "+s_expr[4]+" to bit "+posd+" of "+s_expr[1]+"). "}};sim.ep.behaviors["EXT_SIG"]={nparameters:3,types:["E","I"],operation:function(s_expr){var n1=get_value(sim.ep.states[s_expr[1]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;var n3=n2.substr(31-s_expr[2],31);var n4=n3;if("1"==n2[31-s_expr[2]]){n4="11111111111111111111111111111111".substring(0,32-n3.length)+n4}set_value(sim.ep.states[s_expr[1]],parseInt(n4,2))},verbal:function(s_expr){var n1=get_value(sim.ep.states[s_expr[1]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;var n3=n2.substr(31-s_expr[2],31);var n4=n3;if("1"==n2[31-s_expr[2]]){n4="11111111111111111111111111111111".substring(0,32-n3.length)+n4}var n5=parseInt(n4,2);return"Sign Extension with value "+show_value(n5)+". "}};sim.ep.behaviors["MOVE_BITS"]={nparameters:5,types:["S","I","I","S"],operation:function(s_expr){var posd=parseInt(s_expr[2]);var poso=0;var len=parseInt(s_expr[3]);var n1=sim.ep.signals[s_expr[4]].value.toString(2);n1="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n1=n1.substr(31-poso-len+1,len);var n2=sim.ep.signals[s_expr[1]].value.toString(2);n2="00000000000000000000000000000000".substring(0,32-n2.length)+n2;var m1=n2.substr(0,32-(posd+len));var m2=n2.substr(31-posd+1,posd);var n3=m1+n1+m2;set_value(sim.ep.signals[s_expr[1]],parseInt(n3,2))},verbal:function(s_expr){return""}};sim.ep.behaviors["MOVE_BITSE"]={nparameters:6,types:["S","I","I","E","I"],operation:function(s_expr){var posd=parseInt(s_expr[2]);var poso=parseInt(s_expr[5]);var len=parseInt(s_expr[3]);var n1=get_value(sim.ep.states[s_expr[4]]).toString(2);n1="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n1=n1.substr(31-poso-len+1,len);var n2=sim.ep.signals[s_expr[1]].value.toString(2);n2="00000000000000000000000000000000".substring(0,32-n2.length)+n2;var m1=n2.substr(0,32-(posd+len));var m2=n2.substr(31-posd+1,posd);var n3=m1+n1+m2;set_value(sim.ep.signals[s_expr[1]],parseInt(n3,2))},verbal:function(s_expr){return""}};sim.ep.behaviors["DECO"]={nparameters:1,operation:function(s_expr){sim.ep.states["INEX"].value=0;var oi=decode_instruction(sim.ep.internal_states.FIRMWARE,sim.ep.ctrl_states.ir,get_value(sim.ep.states["REG_IR"]));if(null==oi.oinstruction){ws_alert("ERROR: undefined instruction code in IR ("+"co:"+oi.op_code.toString(2)+", "+"cop:"+oi.cop_code.toString(2)+")");sim.ep.states["ROM_MUXA"].value=0;sim.ep.states["INEX"].value=1;return-1}var rom_addr=oi.op_code<<6;if(typeof oi.oinstruction.cop!="undefined"){rom_addr=rom_addr+oi.cop_code}if(typeof sim.ep.internal_states["ROM"][rom_addr]=="undefined"){ws_alert("ERROR: undefined rom address "+rom_addr+" in firmware");sim.ep.states["ROM_MUXA"].value=0;return-1}sim.ep.states["ROM_MUXA"].value=sim.ep.internal_states["ROM"][rom_addr];var val=get_value(sim.ep.states["DECO_INS"]);set_value(sim.ep.states["DECO_INS"],val+1);var pc=get_value(sim.ep.states["REG_PC"])-4;var decins=get_deco_from_pc(pc);set_value(sim.ep.states["REG_IR_DECO"],decins);show_dbg_ir(get_value(sim.ep.states["REG_IR_DECO"]))},verbal:function(s_expr){return"Decode instruction. "}};sim.ep.behaviors["FIRE"]={nparameters:2,types:["S"],operation:function(s_expr){if(sim.ep.internal_states.fire_stack.indexOf(s_expr[1])!=-1){return}sim.ep.internal_states.fire_stack.push(s_expr[1]);update_draw(sim.ep.signals[s_expr[1]],sim.ep.signals[s_expr[1]].value);if("L"==sim.ep.signals[s_expr[1]].type){update_state(s_expr[1])}sim.ep.internal_states.fire_stack.pop(s_expr[1])},verbal:function(s_expr){return""}};sim.ep.behaviors["FIRE_IFSET"]={nparameters:3,types:["S","I"],operation:function(s_expr){if(get_value(sim.ep.signals[s_expr[1]])!=parseInt(s_expr[2])){return}sim.ep.behaviors["FIRE"].operation(s_expr)},verbal:function(s_expr){return""}};sim.ep.behaviors["FIRE_IFCHANGED"]={nparameters:3,types:["S","X"],operation:function(s_expr){sim_elto=get_reference(s_expr[2]);if(sim_elto.changed==false){return}sim.ep.behaviors["FIRE"].operation(s_expr)},verbal:function(s_expr){return""}};sim.ep.behaviors["RESET_CHANGED"]={nparameters:2,types:["X"],operation:function(s_expr){sim_elto=get_reference(s_expr[1]);sim_elto.changed=false},verbal:function(s_expr){return""}};sim.ep.behaviors["CLOCK"]={nparameters:1,operation:function(s_expr){var new_maddr=null;var mcelto=null;var t0=performance.now();var val=get_value(sim.ep.states["CLK"]);set_value(sim.ep.states["CLK"],val+1);set_value(sim.ep.states["TTCPU"],0);new_maddr=get_value(sim.ep.states["REG_MICROADDR"]);mcelto=sim.ep.internal_states["MC"][new_maddr];if(typeof mcelto!=="undefined"&&false==mcelto.is_native){for(var i=0;i>>0},set_value:function(elto,value){var origin="";var r_value=main_memory_get_program_counter();if(r_value!=null){origin="PC=0x"+r_value.toString(16)}var melto={value:value>>>0,source_tracking:[origin],comments:null};var valref=main_memory_set(sim.ep.internal_states.MP,elto,melto);show_main_memory(sim.ep.internal_states.MP,elto,typeof valref==="undefined",true);return value}};sim.ep.internal_states.segments={};sim.ep.internal_states.MP_wc=0;sim.ep.internal_states.MP={};sim.ep.internal_states.CM_cfg=[];sim.ep.internal_states.CM=[];sim.ep.signals.MRDY={name:"MRDY",visible:true,type:"L",value:0,default_value:0,nbits:"1",depends_on:["CLK"],behavior:["FIRE_IFCHANGED MRDY C","FIRE_IFCHANGED MRDY C"],fire_name:["svg_p:tspan3916","svg_p:text3909"],draw_data:[[],["svg_p:path3895","svg_p:path3541"]],draw_name:[[],[]]};sim.ep.signals.R={name:"R",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; CHECK_RTD","MEM_READ BUS_AB BUS_DB BWA MRDY CLK; FIRE MRDY; CHECK_RTD"],fire_name:["svg_p:text3533-5-2","svg_p:text3713"],draw_data:[[],["svg_p:path3557","svg_p:path3571"]],draw_name:[[],[]]};sim.ep.signals.W={name:"W",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","MEM_WRITE BUS_AB BUS_DB BWA MRDY CLK; FIRE MRDY"],fire_name:["svg_p:text3533-5-08","svg_p:text3527","svg_p:text3431-7"],draw_data:[[],["svg_p:path3559","svg_p:path3575","svg_p:path3447-7"]],draw_name:[[],[]]};sim.ep.behaviors.MEM_READ={nparameters:6,types:["E","E","S","S","E"],operation:function(s_expr){var address=sim.ep.states[s_expr[1]].value;var dbvalue=sim.ep.states[s_expr[2]].value;var bw=sim.ep.signals[s_expr[3]].value;var clk=get_value(sim.ep.states[s_expr[5]]);sim.ep.signals[s_expr[4]].value=0;var remain=get_value(sim.ep.internal_states.MP_wc);if(typeof sim.ep.events.mem[clk-1]!="undefined"&&sim.ep.events.mem[clk-1]>0){remain=sim.ep.events.mem[clk-1]-1}var first_time=typeof sim.ep.events.mem[clk]=="undefined";sim.ep.events.mem[clk]=remain;if(remain>0){return}address=address&4294967292;var value=main_memory_getvalue(sim.ep.internal_states.MP,address);var full_redraw=false;if(typeof value==="undefined"){value=0;full_redraw=true}dbvalue=main_memory_fusionvalues(dbvalue,value,bw);sim.ep.states[s_expr[2]].value=dbvalue>>>0;sim.ep.signals[s_expr[4]].value=1;show_main_memory(sim.ep.internal_states.MP,address,full_redraw,false);if(first_time&&sim.ep.internal_states.CM.length>0){cache_memory_access(sim.ep.internal_states.CM[0],address,"read",clk)}},verbal:function(s_expr){var verbal="";var address=sim.ep.states[s_expr[1]].value;var dbvalue=sim.ep.states[s_expr[2]].value;var bw=sim.ep.signals[s_expr[3]].value;var clk=get_value(sim.ep.states[s_expr[5]]);var bw_type="word";if(0==(bw&12))bw_type="byte";else if(1==(bw&12))bw_type="half";var value=main_memory_getvalue(sim.ep.internal_states.MP,address);if(typeof value==="undefined")value=0;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){verbal="Try to read a "+bw_type+" from memory "+"at address 0x"+address.toString(16)+" with value 0x"+value.toString(16)+". "}verbal="Memory output = 0x"+value.toString(16)+" (Read a "+bw_type+" from 0x"+address.toString(16)+"). ";return verbal}};sim.ep.behaviors.MEM_WRITE={nparameters:6,types:["E","E","S","S","E"],operation:function(s_expr){var address=sim.ep.states[s_expr[1]].value;var dbvalue=sim.ep.states[s_expr[2]].value;var bw=sim.ep.signals[s_expr[3]].value;var clk=get_value(sim.ep.states[s_expr[5]]);sim.ep.signals[s_expr[4]].value=0;var remain=get_value(sim.ep.internal_states.MP_wc);if(typeof sim.ep.events.mem[clk-1]!="undefined"&&sim.ep.events.mem[clk-1]>0){remain=sim.ep.events.mem[clk-1]-1}var first_time=typeof sim.ep.events.mem[clk]=="undefined";sim.ep.events.mem[clk]=remain;if(remain>0){return}address=address&4294967292;var value=main_memory_getvalue(sim.ep.internal_states.MP,address);var full_redraw=false;if(typeof value==="undefined"){value=0;full_redraw=true}value=main_memory_fusionvalues(value,dbvalue,bw);var origin="";var r_value=main_memory_get_program_counter();if(r_value!=null){origin="PC=0x"+r_value.toString(16)}var melto={value:value>>>0,source_tracking:[origin],comments:null};var valref=main_memory_set(sim.ep.internal_states.MP,address,melto);sim.ep.signals[s_expr[4]].value=1;show_main_memory(sim.ep.internal_states.MP,address,full_redraw,true);if(first_time&&sim.ep.internal_states.CM.length>0){cache_memory_access(sim.ep.internal_states.CM[0],address,"write",clk)}},verbal:function(s_expr){var verbal="";var address=sim.ep.states[s_expr[1]].value;var dbvalue=sim.ep.states[s_expr[2]].value;var bw=sim.ep.signals[s_expr[3]].value;var clk=get_value(sim.ep.states[s_expr[5]]);var bw_type="word";if(0==(bw&12))bw_type="byte";else if(1==(bw&12))bw_type="half";var value=main_memory_getvalue(sim.ep.internal_states.MP,address);if(typeof value==="undefined")value=0;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){verbal="Try to write a "+bw_type+" to memory "+"at address 0x"+address.toString(16)+" with value "+value.toString(16)+". "}verbal="Memory[0x"+address.toString(16)+"] = "+"0x"+value.toString(16)+" (Write a "+bw_type+" to 0x"+address.toString(16)+"). ";return verbal}};sim.ep.behaviors.MEMORY_RESET={nparameters:1,operation:function(s_expr){sim.ep.events.mem={}},verbal:function(s_expr){return"Reset main memory (all values will be zeroes). "}};sim.ep.elements.memory={name:"Main memory",description:"Main memory subsystem",type:"subcomponent",belongs:"MEMORY",states:{addr:{ref:"BUS_AB"},data:{ref:"BUS_DB"},mrdy:{ref:"MRDY"}},signals:{be:{ref:"BWA"},r:{ref:"R"},w:{ref:"W"}},states_inputs:["addr","data"],states_outputs:["mrdy","data"],signals_inputs:["be","r","w"],signals_output:[]};sim.ep.components.IO={name:"IO",version:"1",abilities:["IO_TIMER"],details_name:["IO_STATS","IO_CONFIG"],details_fire:[["svg_p:text3775"],[]],write_state:function(vec){return vec},read_state:function(o,check){return false},get_state:function(reg){return null},get_value:function(elto){var associated_state=simhw_internalState_get("io_hash",elto);var value=get_value(simhw_sim_state(associated_state))>>>0;set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_signal("IOR"),1);compute_behavior("FIRE IOR");value=get_value(simhw_sim_state("BUS_DB"));return value},set_value:function(elto,value){var associated_state=simhw_internalState_get("io_hash",elto);set_value(simhw_sim_state(associated_state),value);set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_state("BUS_DB"),value);set_value(simhw_sim_signal("IOW"),1);compute_behavior("FIRE IOW");return value}};sim.ep.internal_states.io_int_factory=[];sim.ep.internal_states.io_int_factory[0]={period:0,probability:.5,accumulated:0,active:false};sim.ep.internal_states.io_int_factory[1]={period:0,probability:.5,accumulated:0,active:false};sim.ep.internal_states.io_int_factory[2]={period:0,probability:.5,accumulated:0,active:false};sim.ep.internal_states.io_int_factory[3]={period:0,probability:.5,accumulated:0,active:false};sim.ep.internal_states.io_int_factory[4]={period:0,probability:.5,accumulated:0,active:false};sim.ep.internal_states.io_int_factory[5]={period:0,probability:.5,accumulated:0,active:false};sim.ep.internal_states.io_int_factory[6]={period:0,probability:.5,accumulated:0,active:false};sim.ep.internal_states.io_int_factory[7]={period:0,probability:.5,accumulated:0,active:false};var IOSR_ID=4352;var IOCR_ID=4356;var IODR_ID=4360;sim.ep.internal_states.io_hash[IOSR_ID]="IOSR";sim.ep.internal_states.io_hash[IOCR_ID]="IOCR";sim.ep.internal_states.io_hash[IODR_ID]="IODR";sim.ep.states.IOSR={name:"IOSR",verbal:"IO State Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.IOCR={name:"IOCR",verbal:"IO Control Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.IODR={name:"IODR",verbal:"IO Data Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.signals.INT={name:"INT",visible:true,type:"L",value:0,default_value:0,nbits:"1",depends_on:["CLK"],behavior:["FIRE C","FIRE C"],fire_name:["svg_p:tspan4199"],draw_data:[[],["svg_p:path3809"]],draw_name:[[],[]]};sim.ep.signals.IORDY={name:"IORDY",visible:true,type:"L",value:0,default_value:0,nbits:"1",depends_on:["CLK"],behavior:["FIRE_IFCHANGED IORDY C","FIRE_IFCHANGED IORDY C"],fire_name:["svg_p:tspan4089","svg_p:path3793","svg_p:text3911"],draw_data:[[],["svg_p:path3897"]],draw_name:[[],[]]};sim.ep.signals.IO_IOR={name:"IO_IOR",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","IO_IOR BUS_AB BUS_DB IOSR IOCR IODR CLK; FIRE SBWA"],fire_name:["svg_p:tspan4173"],draw_data:[[],["svg_p:path3795","svg_p:path3733"]],draw_name:[[],[]]};sim.ep.signals.IO_IOW={name:"IO_IOW",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","IO_IOW BUS_AB BUS_DB IOSR IOCR IODR CLK; FIRE SBWA"],fire_name:["svg_p:text3785-0-6-0-5-5"],draw_data:[[],["svg_p:path3805","svg_p:path3733"]],draw_name:[[],[]]};sim.ep.signals.IO_IE={name:"IO_IE",visible:true,type:"L",value:1,default_value:1,nbits:"1",behavior:["NOP","IO_CHK_I CLK INT INTV; FIRE C"],fire_name:[],draw_data:[[],[]],draw_name:[[],[]]};sim.ep.signals.INTA={name:"INTA",visible:true,type:"L",value:1,default_value:0,nbits:"1",behavior:["NOP","INTA CLK INT INTA BUS_DB INTV; FIRE BW; FIRE C"],fire_name:["svg_p:text3785-0-6-0-5-5-1-1"],draw_data:[[],["svg_p:path3807","svg_p:path3737"]],draw_name:[[],[]]};sim.ep.behaviors.IO_IOR={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.ep.states[s_expr[1]]);var iosr=get_value(sim.ep.states[s_expr[3]]);var iocr=get_value(sim.ep.states[s_expr[4]]);var iodr=get_value(sim.ep.states[s_expr[5]]);if(bus_ab==IOSR_ID)set_value(sim.ep.states[s_expr[2]],iosr);if(bus_ab==IOCR_ID)set_value(sim.ep.states[s_expr[2]],iocr);if(bus_ab==IODR_ID)set_value(sim.ep.states[s_expr[2]],iodr)},verbal:function(s_expr){var verbal="";var bus_ab=get_value(sim.ep.states[s_expr[1]]);var iosr=get_value(sim.ep.states[s_expr[3]]);var iocr=get_value(sim.ep.states[s_expr[4]]);var iodr=get_value(sim.ep.states[s_expr[5]]);if(bus_ab==IOSR_ID)verbal="I/O device read at IOSR of value "+iosr+". ";if(bus_ab==IOCR_ID)verbal="I/O device read at IOCR of value "+iocr+". ";if(bus_ab==IODR_ID)verbal="I/O device read at IODR of value "+iodr+". ";return verbal}};sim.ep.behaviors.IO_IOW={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.ep.states[s_expr[1]]);var bus_db=get_value(sim.ep.states[s_expr[2]]);if(bus_ab!=IOSR_ID&&bus_ab!=IOCR_ID&&bus_ab!=IODR_ID){return}if(bus_ab==IOSR_ID)set_value(sim.ep.states[s_expr[3]],bus_db);if(bus_ab==IOCR_ID)set_value(sim.ep.states[s_expr[4]],bus_db);if(bus_ab==IODR_ID)set_value(sim.ep.states[s_expr[5]],bus_db);var iocr_id=get_value(sim.ep.states[s_expr[4]]);var iodr_id=get_value(sim.ep.states[s_expr[5]]);if(iocr_id<0||iocr_id>7)return;set_var(sim.ep.internal_states.io_int_factory[iocr_id].period,iodr_id);set_var(sim.ep.internal_states.io_int_factory[iocr_id].probability,1);if(0==iodr_id){set_var(sim.ep.internal_states.io_int_factory[iocr_id].probability,0)}},verbal:function(s_expr){var verbal="";var bus_ab=get_value(sim.ep.states[s_expr[1]]);var bus_db=get_value(sim.ep.states[s_expr[2]]);if(bus_ab==IOSR_ID)verbal="I/O device write at IOSR with value "+bus_db+". ";if(bus_ab==IOCR_ID)verbal="I/O device write at IOCR with value "+bus_db+". ";if(bus_ab==IODR_ID)verbal="I/O device write at IODR with value "+bus_db+". ";return verbal}};sim.ep.behaviors.IO_CHK_I={nparameters:4,types:["E","S","E"],operation:function(s_expr){var clk=get_value(sim.ep.states[s_expr[1]]);for(var i=sim.ep.internal_states.io_int_factory.length-1;i>=0;i--){if(get_var(sim.ep.internal_states.io_int_factory[i].period)==0)continue;if(get_var(sim.ep.internal_states.io_int_factory[i].active)==true){set_value(sim.ep.signals[s_expr[2]],1);set_value(sim.ep.states[s_expr[3]],i)}if(clk%get_var(sim.ep.internal_states.io_int_factory[i].period)==0){if(Math.random()>get_var(sim.ep.internal_states.io_int_factory[i].probability))continue;var acc=get_var(sim.ep.internal_states.io_int_factory[i].accumulated);set_var(sim.ep.internal_states.io_int_factory[i].accumulated,acc+1);set_var(sim.ep.internal_states.io_int_factory[i].active,true);if(typeof sim.ep.events.io[clk]=="undefined"){sim.ep.events.io[clk]=[]}sim.ep.events.io[clk].push(i);set_value(sim.ep.signals[s_expr[2]],1);set_value(sim.ep.states[s_expr[3]],i)}}},verbal:function(s_expr){return"Check I/O Interruption. "}};sim.ep.behaviors.INTA={nparameters:6,types:["E","S","S","E","E"],operation:function(s_expr){var clk=get_value(sim.ep.states[s_expr[1]]);if(typeof sim.ep.events.io[clk]!="undefined"){set_value(sim.ep.states[s_expr[4]],sim.ep.events.io[clk][0]);return}set_value(sim.ep.signals[s_expr[2]],0);set_value(sim.ep.states[s_expr[5]],0);for(var i=0;i>>0;set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_signal("IOR"),1);compute_behavior("FIRE IOR");value=get_value(simhw_sim_state("BUS_DB"));return value},set_value:function(elto,value){var associated_state=simhw_internalState_get("io_hash",elto);set_value(simhw_sim_state(associated_state),value);set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_state("BUS_DB"),value);set_value(simhw_sim_signal("IOW"),1);compute_behavior("FIRE IOW");return value}};sim.ep.internal_states.l3d_dim=4;sim.ep.internal_states.l3d_neltos=Math.pow(sim.ep.internal_states.l3d_dim,3);sim.ep.internal_states.l3d_state=Array.from({length:sim.ep.internal_states.l3d_neltos},(()=>({active:false})));sim.ep.internal_states.l3d_frame="0".repeat(sim.ep.internal_states.l3d_neltos);var L3DSR_ID=8448;var L3DCR_ID=8452;var L3DDR_ID=8456;sim.ep.internal_states.io_hash[L3DSR_ID]="L3DSR";sim.ep.internal_states.io_hash[L3DCR_ID]="L3DCR";sim.ep.internal_states.io_hash[L3DDR_ID]="L3DDR";sim.ep.states.L3DSR={name:"L3DSR",verbal:"L3D State Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.L3DCR={name:"L3DCR",verbal:"L3D Control Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.L3DDR={name:"L3DDR",verbal:"L3D Data Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.signals.L3D_IOR={name:"L3D_IOR",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","L3D_IOR BUS_AB BUS_DB L3DSR L3DCR L3DDR CLK; FIRE SBWA"],fire_name:["svg_p:tspan4173"],draw_data:[[],["svg_p:path3795","svg_p:path3733"]],draw_name:[[],[]]};sim.ep.signals.L3D_IOW={name:"L3D_IOW",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","L3D_IOW BUS_AB BUS_DB L3DSR L3DCR L3DDR CLK; FIRE SBWA; L3D_SYNC"],fire_name:["svg_p:text3785-0-6-0-5-5"],draw_data:[[],["svg_p:path3805","svg_p:path3733"]],draw_name:[[],[]]};sim.ep.behaviors.L3D_IOR={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.ep.states[s_expr[1]]);var iosr=get_value(sim.ep.states[s_expr[3]]);var iocr=get_value(sim.ep.states[s_expr[4]]);var iodr=get_value(sim.ep.states[s_expr[5]]);if(bus_ab==L3DCR_ID){set_value(sim.ep.states[s_expr[2]],iocr)}if(bus_ab==L3DDR_ID){set_value(sim.ep.states[s_expr[2]],iodr)}if(bus_ab==L3DSR_ID){var x=(iodr&4278190080)>>24;var y=(iodr&16711680)>>16;var z=(iodr&65280)>>8;var p=z*Math.pow(sim.ep.internal_states.l3d_dim,2)+y*sim.ep.internal_states.l3d_dim+x;var s=get_var(sim.ep.internal_states.l3d_state[p].active);set_value(sim.ep.states[s_expr[2]],s)}},verbal:function(s_expr){var verbal="";var bus_ab=get_value(sim.ep.states[s_expr[1]]);var iosr=get_value(sim.ep.states[s_expr[3]]);var iocr=get_value(sim.ep.states[s_expr[4]]);var iodr=get_value(sim.ep.states[s_expr[5]]);if(bus_ab==L3DSR_ID)verbal="I/O device read at L3DSR of value "+iosr+". ";if(bus_ab==L3DCR_ID)verbal="I/O device read at L3DCR of value "+iocr+". ";if(bus_ab==L3DDR_ID)verbal="I/O device read at L3DDR of value "+iodr+". ";return verbal}};sim.ep.behaviors.L3D_IOW={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.ep.states[s_expr[1]]);var bus_db=get_value(sim.ep.states[s_expr[2]]);if(bus_ab!=L3DSR_ID&&bus_ab!=L3DCR_ID&&bus_ab!=L3DDR_ID){return}if(bus_ab==L3DSR_ID){set_value(sim.ep.states[s_expr[3]],bus_db)}if(bus_ab==L3DDR_ID){set_value(sim.ep.states[s_expr[5]],bus_db)}if(bus_ab==L3DCR_ID){set_value(sim.ep.states[s_expr[4]],bus_db);var x=(bus_db&4278190080)>>24;var y=(bus_db&16711680)>>16;var z=(bus_db&65280)>>8;var p=z*Math.pow(sim.ep.internal_states.l3d_dim,2)+y*sim.ep.internal_states.l3d_dim+x;var s=(bus_db&255)!=0;set_var(sim.ep.internal_states.l3d_state[p].active,s)}},verbal:function(s_expr){var verbal="";var bus_ab=get_value(sim.ep.states[s_expr[1]]);var bus_db=get_value(sim.ep.states[s_expr[2]]);if(bus_ab==L3DSR_ID)verbal="I/O device write at L3DSR with value "+bus_db+". ";if(bus_ab==L3DCR_ID)verbal="I/O device write at L3DCR with value "+bus_db+". ";if(bus_ab==L3DDR_ID)verbal="I/O device write at L3DDR with value "+bus_db+". ";return verbal}};sim.ep.behaviors.L3D_RESET={nparameters:1,operation:function(s_expr){sim.ep.events.l3d={};var n=sim.ep.internal_states.l3d_state.length;for(var i=0;i>>0;set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_signal("IOR"),1);compute_behavior("FIRE IOR");value=get_value(simhw_sim_state("BUS_DB"));return value},set_value:function(elto,value){var associated_state=simhw_internalState_get("io_hash",elto);set_value(simhw_sim_state(associated_state),value);set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_state("BUS_DB"),value);set_value(simhw_sim_signal("IOW"),1);compute_behavior("FIRE IOW");return value}};sim.ep.internal_states.ledm_dim=24;sim.ep.internal_states.ledm_neltos=Math.pow(sim.ep.internal_states.ledm_dim,2);sim.ep.internal_states.ledm_state=Array.from({length:sim.ep.internal_states.ledm_neltos},(()=>({color:0})));sim.ep.internal_states.ledm_colors=colors_clone("");sim.ep.internal_states.ledm_frame="0".repeat(sim.ep.internal_states.ledm_neltos);var LEDMSR_ID=12544;var LEDMCR_ID=12548;var LEDMDR_ID=12552;sim.ep.internal_states.io_hash[LEDMSR_ID]="LEDMSR";sim.ep.internal_states.io_hash[LEDMCR_ID]="LEDMCR";sim.ep.internal_states.io_hash[LEDMDR_ID]="LEDMDR";sim.ep.states.LEDMSR={name:"LEDMSR",verbal:"LEDM State Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.LEDMCR={name:"LEDMCR",verbal:"LEDM Control Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.LEDMDR={name:"LEDMDR",verbal:"LEDM Data Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.signals.LEDM_IOR={name:"LEDM_IOR",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","LEDM_IOR BUS_AB BUS_DB LEDMSR LEDMCR LEDMDR CLK; FIRE SBWA"],fire_name:["svg_p:tspan4173"],draw_data:[[],["svg_p:path3795","svg_p:path3733"]],draw_name:[[],[]]};sim.ep.signals.LEDM_IOW={name:"LEDM_IOW",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","LEDM_IOW BUS_AB BUS_DB LEDMSR LEDMCR LEDMDR CLK; FIRE SBWA; LEDM_SYNC"],fire_name:["svg_p:text3785-0-6-0-5-5"],draw_data:[[],["svg_p:path3805","svg_p:path3733"]],draw_name:[[],[]]};sim.ep.behaviors.LEDM_IOR={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.ep.states[s_expr[1]]);var iosr=get_value(sim.ep.states[s_expr[3]]);var iocr=get_value(sim.ep.states[s_expr[4]]);var iodr=get_value(sim.ep.states[s_expr[5]]);if(bus_ab==LEDMCR_ID){set_value(sim.ep.states[s_expr[2]],iocr)}if(bus_ab==LEDMDR_ID){set_value(sim.ep.states[s_expr[2]],iodr)}if(bus_ab==LEDMSR_ID){var x=(iodr&4278190080)>>24;var y=(iodr&16711680)>>16;var p=y*sim.ep.internal_states.ledm_dim+x;var s=get_var(sim.ep.internal_states.ledm_state[p].color);set_value(sim.ep.states[s_expr[2]],s)}},verbal:function(s_expr){var verbal="";var bus_ab=get_value(sim.ep.states[s_expr[1]]);var iosr=get_value(sim.ep.states[s_expr[3]]);var iocr=get_value(sim.ep.states[s_expr[4]]);var iodr=get_value(sim.ep.states[s_expr[5]]);if(bus_ab==LEDMSR_ID)verbal="I/O device read at LEDMSR of value "+iosr+". ";if(bus_ab==LEDMCR_ID)verbal="I/O device read at LEDMCR of value "+iocr+". ";if(bus_ab==LEDMDR_ID)verbal="I/O device read at LEDMDR of value "+iodr+". ";return verbal}};sim.ep.behaviors.LEDM_IOW={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.ep.states[s_expr[1]]);var bus_db=get_value(sim.ep.states[s_expr[2]]);switch(bus_ab){case LEDMSR_ID:set_value(sim.ep.states[s_expr[3]],bus_db);break;case LEDMDR_ID:set_value(sim.ep.states[s_expr[5]],bus_db);break;case LEDMCR_ID:set_value(sim.ep.states[s_expr[4]],bus_db);break;default:break}if(LEDMCR_ID==bus_ab){var dr=get_value(sim.ep.states[s_expr[5]]);if(16&bus_db){var x=(dr&4278190080)>>24;var y=(dr&16711680)>>16;var s=dr&255;set_value(sim.ep.states[s_expr[3]],1);if(x>=sim.ep.internal_states.ledm_dim&&y>=sim.ep.internal_states.ledm_dim){set_value(sim.ep.states[s_expr[3]],-1);return}var p=y*sim.ep.internal_states.ledm_dim+x;set_var(sim.ep.internal_states.ledm_state[p].color,s)}if(32&bus_db){set_value(sim.ep.states[s_expr[3]],1);var s=0;var neltos=sim.ep.internal_states.ledm_neltos;for(var p=0;p>0);set_var(sim.ep.internal_states.ledm_state[p+1].color,(s&65280)>>8);set_var(sim.ep.internal_states.ledm_state[p+2].color,(s&16711680)>>16);set_var(sim.ep.internal_states.ledm_state[p+3].color,(s&4278190080)>>24)}}if(64&bus_db){set_value(sim.ep.states[s_expr[3]],1);var s=0;var c="";var neltos=sim.ep.internal_states.ledm_colors.length;for(var p=0;p>>8;s=s.toString(16);c="#"+simcoreui_pack(s,6);sim.ep.internal_states.ledm_colors[p]=c}neltos=sim.ep.internal_states.ledm_neltos;for(var p=0;p>24;var y=(dr&16711680)>>16;var s=dr&255;verbal="I/O device write at LEDMCR with value "+bus_db+" (set pixel x:"+x+", y:"+y+", with color:"+s+"). "}if(64&bus_db){verbal="I/O device write at LEDMCR with value "+bus_db+" (set color palette at:"+bus_db+"). "}break;default:break}return verbal}};sim.ep.behaviors.LEDM_RESET={nparameters:1,operation:function(s_expr){sim.ep.events.ledm={};sim.ep.internal_states.ledm_colors=colors_clone("");for(var i=0;i>>0;if(value!=0){vec.CPU["R"+i]={type:"register",default_value:0,id:"R"+i,op:"=",value:"0x"+value.toString(16)}}}for(var i=0;i>>0;if(value!=0){vec.CPU[internal_reg[i]]={type:"register",default_value:0,id:internal_reg[i],op:"=",value:"0x"+value.toString(16)}}}return vec},read_state:function(vec,check){if(typeof vec.CPU=="undefined")vec.CPU={};var key=check["id"].toUpperCase().trim();var val=parseInt(check["value"]).toString(16);if("REGISTER"==check["type"].toUpperCase().trim()){vec.CPU[key]={type:"register",default_value:0,id:key,op:check["condition"],value:"0x"+val};return true}return false},get_state:function(reg){var r_reg=reg.toUpperCase().trim();if(typeof sim.poc.states["REG_"+r_reg]!="undefined"){var value=get_value(sim.poc.states["REG_"+r_reg])>>>0;return"0x"+value.toString(16)}r_reg=r_reg.replace("R","");var index=parseInt(r_reg);if(typeof sim.poc.states.BR[index]!="undefined"){var value=get_value(sim.poc.states.BR[index])>>>0;return"0x"+value.toString(16)}return null},get_value:function(elto){if(Number.isInteger(elto))index=elto;else index=parseInt(elto);if(isNaN(index))return get_value(simhw_sim_state(elto))>>>0;return get_value(simhw_sim_states().BR[index])>>>0},set_value:function(elto,value){var pc_name=simhw_sim_ctrlStates_get().pc.state;if(Number.isInteger(elto))index=elto;else index=parseInt(elto);if(isNaN(index)){set_value(simhw_sim_state(elto),value);if(pc_name===elto){show_asmdbg_pc()}return value}return set_value(simhw_sim_states().BR[index],value)}};sim.poc.ctrl_states.pc={name:"PC",state:"REG_PC",is_pointer:true};sim.poc.ctrl_states.sp={name:"SP",state:"BR.29",is_pointer:true};sim.poc.ctrl_states.fp={name:"FP",state:"BR.30",is_pointer:true};sim.poc.ctrl_states.ir={name:"IR",state:"REG_IR",default_eltos:{co:{begin:0,end:5,length:6},cop:{begin:27,end:31,length:5},oc:{begin:0,end:6,length:7}},is_pointer:false};sim.poc.ctrl_states.mpc={name:"mPC",state:"REG_MICROADDR",is_pointer:false};sim.poc.internal_states.MC={};sim.poc.internal_states.ROM={};sim.poc.internal_states.FIRMWARE=ws_empty_firmware;sim.poc.internal_states.io_hash={};sim.poc.internal_states.fire_stack=[];sim.poc.internal_states.tri_state_names=["T1","T2","T3","T6","T8","T9","T10","T11","T12"];sim.poc.internal_states.fire_visible={databus:false,internalbus:false};sim.poc.internal_states.filter_states=["REG_IR_DECO,col-12","REG_IR,col-auto","REG_PC,col-auto","REG_SR,col-auto","REG_RT1,col-auto","REG_MAR,col-auto","REG_MBR,col-auto","REG_MICROADDR,col-auto"];sim.poc.internal_states.filter_signals=["A0,0","B,0","C,0","SELA,5","SELB,5","SELC,2","SELCOP,0","MRA,0","MRB,0","MRC,0","MC,0","C0,0","C1,0","C2,0","C3,0","C4,0","C7,0","T1,0","T2,0","T3,0","T6,0","T8,0","T9,0","T10,0","T11,0","M1,0","M7,0","MA,0","MB,0","LC,0","SE,0","SIZE,0","OFFSET,0","BW,0","R,0","W,0","TA,0","TD,0","IOR,0","IOW,0","TEST_I,0","TEST_U,0"];sim.poc.internal_states.alu_flags={flag_n:0,flag_z:0,flag_v:0,flag_c:0};sim.poc.states.BR=[];sim.poc.states.BR[0]={name:"R0",verbal:"Register 0",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[1]={name:"R1",verbal:"Register 1",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[2]={name:"R2",verbal:"Register 2",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[3]={name:"R3",verbal:"Register 3",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[4]={name:"R4",verbal:"Register 4",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[5]={name:"R5",verbal:"Register 5",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[6]={name:"R6",verbal:"Register 6",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[7]={name:"R7",verbal:"Register 7",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[8]={name:"R8",verbal:"Register 8",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[9]={name:"R9",verbal:"Register 9",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[10]={name:"R10",verbal:"Register 10",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[11]={name:"R11",verbal:"Register 11",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[12]={name:"R12",verbal:"Register 12",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[13]={name:"R13",verbal:"Register 13",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[14]={name:"R14",verbal:"Register 14",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[15]={name:"R15",verbal:"Register 15",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[16]={name:"R16",verbal:"Register 16",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[17]={name:"R17",verbal:"Register 17",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[18]={name:"R18",verbal:"Register 18",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[19]={name:"R19",verbal:"Register 19",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[20]={name:"R20",verbal:"Register 20",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[21]={name:"R21",verbal:"Register 21",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[22]={name:"R22",verbal:"Register 22",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[23]={name:"R23",verbal:"Register 23",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[24]={name:"R24",verbal:"Register 24",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[25]={name:"R25",verbal:"Register 25",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[26]={name:"R26",verbal:"Register 26",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[27]={name:"R27",verbal:"Register 27",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[28]={name:"R28",verbal:"Register 28",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[29]={name:"R29",verbal:"Register 29",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[30]={name:"R30",verbal:"Register 30",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[31]={name:"R31",verbal:"Register 31",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[32]={name:"R32",verbal:"Register 32",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[33]={name:"R33",verbal:"Register 33",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[34]={name:"R34",verbal:"Register 34",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[35]={name:"R35",verbal:"Register 35",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[36]={name:"R36",verbal:"Register 36",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[37]={name:"R37",verbal:"Register 37",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[38]={name:"R38",verbal:"Register 38",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[39]={name:"R39",verbal:"Register 39",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[40]={name:"R40",verbal:"Register 40",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[41]={name:"R41",verbal:"Register 41",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[42]={name:"R42",verbal:"Register 42",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[43]={name:"R43",verbal:"Register 43",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[44]={name:"R44",verbal:"Register 44",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[45]={name:"R45",verbal:"Register 45",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[46]={name:"R46",verbal:"Register 46",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[47]={name:"R47",verbal:"Register 47",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[48]={name:"R48",verbal:"Register 48",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[49]={name:"R49",verbal:"Register 49",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[50]={name:"R50",verbal:"Register 50",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[51]={name:"R51",verbal:"Register 51",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[52]={name:"R52",verbal:"Register 52",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[53]={name:"R53",verbal:"Register 53",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[54]={name:"R54",verbal:"Register 54",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[55]={name:"R55",verbal:"Register 55",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[56]={name:"R56",verbal:"Register 56",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[57]={name:"R57",verbal:"Register 57",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[58]={name:"R58",verbal:"Register 58",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[59]={name:"R59",verbal:"Register 59",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[60]={name:"R60",verbal:"Register 60",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[61]={name:"R61",verbal:"Register 61",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[62]={name:"R62",verbal:"Register 62",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[63]={name:"R63",verbal:"Register 63",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["REG_PC"]={name:"PC",verbal:"Program Counter Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["REG_MAR"]={name:"MAR",verbal:"Memory Address Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["REG_MBR"]={name:"MBR",verbal:"Memory Data Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["REG_IR"]={name:"IR",verbal:"Instruction Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["REG_SR"]={name:"SR",verbal:"State Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["REG_RT1"]={name:"RT1",verbal:"Temporal Register 1",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["BUS_IB"]={name:"I_BUS",verbal:"Internal Bus",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["BUS_AB"]={name:"A_BUS",verbal:"Address Bus",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["BUS_CB"]={name:"C_BUS",verbal:"Control Bus",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["BUS_DB"]={name:"D_BUS",verbal:"Data Bus",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["RA_T9"]={name:"RA_T9",verbal:"Input of T9 Tristate",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["RB_T10"]={name:"RB_T10",verbal:"Input of T10 Tristate",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["HPC_T12"]={name:"HPC_T12",verbal:"Input of T12 Tristate",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["SELEC_T3"]={name:"SELEC_T3",verbal:"Input of T3 Tristate",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["ALU_T6"]={name:"ALU_T6",verbal:"Input of T6 Tristate",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["MA_ALU"]={name:"MA_ALU",verbal:"Input ALU via MA",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["MB_ALU"]={name:"MB_ALU",verbal:"Input ALU via MB",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["FLAG_C"]={name:"FLAG_C",verbal:"Carry Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.poc.states["FLAG_V"]={name:"FLAG_V",verbal:"Overflow Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.poc.states["FLAG_N"]={name:"FLAG_N",verbal:"Negative Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.poc.states["FLAG_Z"]={name:"FLAG_Z",verbal:"Zero Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.poc.states["FLAG_I"]={name:"FLAG_I",verbal:"Interruption Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.poc.states["FLAG_U"]={name:"FLAG_U",verbal:"User Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.poc.states["REG_MICROADDR"]={name:"µADDR",verbal:"Microaddress Register",visible:true,nbits:"12",value:0,default_value:0,draw_data:["svg_cu:text4667"]};sim.poc.states["REG_MICROINS"]={name:"µINS",verbal:"Microinstruction Register",visible:true,nbits:"77",value:{},default_value:{},draw_data:[]};sim.poc.states["FETCH"]={name:"FETCH",verbal:"Input Fetch",visible:false,nbits:"12",value:0,default_value:0,draw_data:[]};sim.poc.states["ROM_MUXA"]={name:"ROM_MUXA",verbal:"Input ROM",visible:false,nbits:"12",value:0,default_value:0,draw_data:[]};sim.poc.states["SUM_ONE"]={name:"SUM_ONE",verbal:"Input next microinstruction",visible:false,nbits:"12",value:1,default_value:1,draw_data:[]};sim.poc.states["MUXA_MICROADDR"]={name:"MUXA_MICROADDR",verbal:"Input microaddress",visible:false,nbits:"12",value:0,default_value:0,draw_data:[]};sim.poc.states["MUXC_MUXB"]={name:"MUXC_MUXB",verbal:"Output of MUX C",visible:false,nbits:"1",value:0,default_value:0,draw_data:[]};sim.poc.states["INEX"]={name:"INEX",verbal:"Illegal Instruction Exception",visible:false,nbits:"1",value:0,default_value:0,draw_data:[]};sim.poc.states["BS_M1"]={name:"BS_M1",verbal:"from Memory",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["BS_TD"]={name:"BS_TD",verbal:"Memory",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["INTV"]={name:"INTV",verbal:"Interruption Vector",visible:false,nbits:"8",value:0,default_value:0,draw_data:[]};sim.poc.states["M1_C1"]={name:"M1_C1",verbal:"Input of Memory Data Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["M7_C7"]={name:"M7_C7",verbal:"Input of State Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["VAL_ZERO"]={name:"VAL_ZERO",verbal:"Wired Zero",visible:false,nbits:"1",value:0,default_value:0,draw_data:[]};sim.poc.states["VAL_ONE"]={name:"VAL_ONE",verbal:"Wired One",visible:false,nbits:"32",value:1,default_value:1,draw_data:[]};sim.poc.states["VAL_FOUR"]={name:"VAL_FOUR",verbal:"Wired Four",visible:false,nbits:"32",value:4,default_value:4,draw_data:[]};sim.poc.states["REG_IR_DECO"]={name:"IR_DECO",verbal:"Instruction Decoded",visible:true,nbits:"0",value:0,default_value:0,draw_data:[]};sim.poc.states["DECO_INS"]={name:"DECO_INS",verbal:"Instruction decoded in binary",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["CLK"]={name:"CLK",verbal:"Clock",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["ACC_TIME"]={name:"ACC_TIME",verbal:"Accumulated CPU time",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["TTCPU"]={name:"TTCPU",verbal:"Several Tristates to the internal data bus in CPU activated",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["ACC_PWR"]={name:"ACC_PWR",verbal:"Accumulated Energy Consumption",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.signals["C"]={name:"C",visible:true,type:"L",value:0,default_value:0,nbits:"4",behavior:["MV MUXC_MUXB VAL_ZERO; FIRE_IFCHANGED B MUXC_MUXB; RESET_CHANGED MUXC_MUXB","MBIT MUXC_MUXB INT 0 1; FIRE_IFCHANGED B MUXC_MUXB; RESET_CHANGED MUXC_MUXB","MBIT MUXC_MUXB IORDY 0 1; FIRE_IFCHANGED B MUXC_MUXB; RESET_CHANGED MUXC_MUXB","MBIT MUXC_MUXB MRDY 0 1; FIRE_IFCHANGED B MUXC_MUXB; RESET_CHANGED MUXC_MUXB","MBIT MUXC_MUXB REG_SR 0 1; FIRE_IFCHANGED B MUXC_MUXB; RESET_CHANGED MUXC_MUXB","MBIT MUXC_MUXB REG_SR 1 1; FIRE_IFCHANGED B MUXC_MUXB; RESET_CHANGED MUXC_MUXB","MBIT MUXC_MUXB REG_SR 28 1; FIRE_IFCHANGED B MUXC_MUXB; RESET_CHANGED MUXC_MUXB","MBIT MUXC_MUXB REG_SR 29 1; FIRE_IFCHANGED B MUXC_MUXB; RESET_CHANGED MUXC_MUXB","MBIT MUXC_MUXB REG_SR 30 1; FIRE_IFCHANGED B MUXC_MUXB; RESET_CHANGED MUXC_MUXB","MBIT MUXC_MUXB REG_SR 31 1; FIRE_IFCHANGED B MUXC_MUXB; RESET_CHANGED MUXC_MUXB","MV MUXC_MUXB INEX; FIRE_IFCHANGED B MUXC_MUXB; RESET_CHANGED MUXC_MUXB"],fire_name:["svg_cu:text3410"],draw_data:[["svg_cu:path3108"],["svg_cu:path3062"],["svg_cu:path3060"],["svg_cu:path3136"],["svg_cu:path3482"],["svg_cu:path3480"],["svg_cu:path3488"],["svg_cu:path3486"],["svg_cu:path3484"],["svg_cu:path3484-9"],["svg_cu:path3108-3","svg_cu:path3260-3-8-6","svg_cu:path3260-3-8","svg_cu:path3260-3"]],draw_name:[["svg_cu:path3496","svg_cu:path3414","svg_cu:path3194-08"]]};sim.poc.signals["B"]={name:"B",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV A1 MUXC_MUXB; FIRE A1","NOT_ES A1 MUXC_MUXB; FIRE A1"],depends_on:["CLK"],fire_name:["svg_cu:text3408"],draw_data:[["svg_cu:path3094-7","svg_cu:path3100-8-7","svg_cu:path3198-7","svg_cu:path3200-1"],["svg_cu:path3392","svg_cu:path3372","svg_cu:path3390","svg_cu:path3384","svg_cu:path3108-1","svg_cu:path3100-8-7","svg_cu:path3200-1","svg_cu:path3386"]],draw_name:[[],["svg_cu:path3194-0","svg_cu:path3138-8","svg_cu:path3498-6"]]};sim.poc.signals["A0"]={name:"A0",visible:false,type:"L",value:0,default_value:0,nbits:"1",behavior:["SBIT_SIGNAL A0A1 0 1; FIRE A0A1","SBIT_SIGNAL A0A1 1 1; FIRE A0A1"],depends_on:["CLK"],fire_name:["svg_cu:text3406"],draw_data:[["svg_cu:path3096"],["svg_cu:path3096"]],draw_name:[[],["svg_cu:path3138-8-1","svg_cu:path3098-2","svg_cu:path3124-2-5"]]};sim.poc.signals["A1"]={name:"A1",visible:false,type:"L",value:0,default_value:0,nbits:"1",behavior:["SBIT_SIGNAL A0A1 0 0; FIRE A0A1","SBIT_SIGNAL A0A1 1 0; FIRE A0A1"],depends_on:["CLK"],fire_name:[],draw_data:[["svg_cu:path3094"],["svg_cu:path3094"]],draw_name:[[]]};sim.poc.signals["A0A1"]={name:"A0A1",visible:true,type:"L",value:0,default_value:0,nbits:"2",behavior:["PLUS1 MUXA_MICROADDR REG_MICROADDR","CP_FIELD MUXA_MICROADDR REG_MICROINS/MADDR","MV MUXA_MICROADDR ROM_MUXA","MV MUXA_MICROADDR FETCH"],depends_on:["CLK"],fire_name:[],draw_data:[["svg_cu:path3102","svg_cu:path3100","svg_cu:path3098","svg_cu:path3100-9","svg_cu:path3088","svg_cu:path3082"],["svg_cu:path3104","svg_cu:path3134","svg_cu:path3500","svg_cu:path3416","svg_cu:path3124-2-4","svg_cu:path3124-2"],["svg_cu:path3504","svg_cu:path3100-8","svg_cu:path3234-9"],["svg_cu:path3124"]],draw_name:[[]]};sim.poc.signals["C0"]={name:"C0",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","MV REG_MAR BUS_IB"],fire_name:["svg_p:text3077"],draw_data:[["svg_p:path3081"]],draw_name:[["svg_p:path3075"]]};sim.poc.signals["C1"]={name:"C1",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","MV REG_MBR M1_C1"],fire_name:["svg_p:text3079"],draw_data:[["svg_p:path3055"]],draw_name:[["svg_p:path3073"]]};sim.poc.signals["C2"]={name:"C2",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","MV REG_PC BUS_IB; UPDATEDPC"],fire_name:["svg_p:text3179"],draw_data:[["svg_p:path3217"]],draw_name:[["svg_p:path3177"]]};sim.poc.signals["C3"]={name:"C3",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","MV REG_IR BUS_IB; DECO; FIRE_IFSET C 10"],fire_name:["svg_p:text3439"],draw_data:[["svg_p:path3339","svg_p:path3913-4"]],draw_name:[["svg_p:path3337"]]};sim.poc.signals["C4"]={name:"C4",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","MV REG_RT1 BUS_IB"],fire_name:["svg_p:tspan482"],draw_data:[["svg_p:path3339-4"]],draw_name:[["svg_p:path3337-0"]]};sim.poc.signals["C7"]={name:"C7",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","MV REG_SR M7_C7"],fire_name:["svg_p:text3655"],draw_data:[["svg_p:path3651-9"]],draw_name:[["svg_p:path3681"]]};sim.poc.signals["TA"]={name:"TA",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","MV BUS_AB REG_MAR"],fire_name:["svg_p:text3091"],draw_data:[["svg_p:path3083","svg_p:path3089","svg_p:path3597","svg_p:path3513","svg_p:path3601","svg_p:path3601-2","svg_p:path3187","svg_p:path3087","svg_p:path2995","svg_p:path3535"]],draw_name:[["svg_p:path3085"]]};sim.poc.signals["TD"]={name:"TD",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; CHECK_RTD","MV BUS_DB REG_MBR; FIRE R; FIRE W; CHECK_RTD"],fire_name:["svg_p:text3103"],draw_data:[["svg_p:path3093","svg_p:path3101","svg_p:path3587","svg_p:path3419-8","svg_p:path3071","svg_p:path3099","svg_p:path3097","svg_p:path3559-5","svg_p:path3419-1-0","svg_p:path3583","svg_p:path3419-1","svg_p:path3491","svg_p:path3641","svg_p:path3541"]],draw_name:[["svg_p:path3095"]]};sim.poc.signals["T1"]={name:"T1",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 0","MV BUS_IB REG_MBR; FIRE M7; FIRE M1; SET_TT TTCPU 0"],fire_name:["svg_p:text3105"],draw_data:[["svg_p:path3065","svg_p:path3071","svg_p:path3069","svg_p:path3049","svg_p:path3063-9","svg_p:path3071"]],draw_name:[["svg_p:path3067"]]};sim.poc.signals["T2"]={name:"T2",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 1","MV BUS_IB REG_PC; FIRE M7; FIRE M1; SET_TT TTCPU 1"],fire_name:["svg_p:text3449"],draw_data:[["svg_p:path3195","svg_p:path3199","svg_p:path3201","svg_p:path3049"]],draw_name:[["svg_p:path3329"]]};sim.poc.signals["T3"]={name:"T3",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 2","MV BUS_IB SELEC_T3; FIRE M7; FIRE M1; SET_TT TTCPU 2"],fire_name:["svg_p:text3451"],draw_data:[["svg_p:path3347","svg_p:path3349","svg_p:path3931","svg_p:path3345","svg_p:path3049"]],draw_name:[["svg_p:path3351"]]};sim.poc.signals["T6"]={name:"T6",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 3","MV BUS_IB ALU_T6; FIRE M7; FIRE M1; SET_TT TTCPU 3"],fire_name:["svg_p:text3457"],draw_data:[["svg_p:path3315","svg_p:path3589","svg_p:path3317","svg_p:path3163-2","svg_p:path3049","svg_p:path3317-9","svg_p:path3321","svg_p:path3261-8"]],draw_name:[["svg_p:path3319"]]};sim.poc.signals["T8"]={name:"T8",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 4","MV BUS_IB REG_SR; FIRE M7; FIRE M1; SET_TT TTCPU 4"],fire_name:["svg_p:text3657"],draw_data:[["svg_p:path3645","svg_p:path3651","svg_p:path3647","svg_p:path3049"]],draw_name:[["svg_p:path3649"]]};sim.poc.signals["T9"]={name:"T9",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 5","MV BUS_IB RA_T9; FIRE M7; FIRE M1; SET_TT TTCPU 5"],fire_name:["svg_p:text3147"],draw_data:[["svg_p:path3131","svg_p:path3143","svg_p:path3139","svg_p:path3049","svg_p:path3143-9"]],draw_name:[["svg_p:path3133"]]};sim.poc.signals["T10"]={name:"T10",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 6","MV BUS_IB RB_T10; FIRE M7; FIRE M1; SET_TT TTCPU 6"],fire_name:["svg_p:text3149"],draw_data:[["svg_p:path3135","svg_p:path3145","svg_p:path3141","svg_p:path3049","svg_p:path3145-5"]],draw_name:[["svg_p:path3137"]]};sim.poc.signals["T11"]={name:"T11",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 7","CP_FIELD BUS_IB REG_MICROINS/EXCODE; FIRE M7; FIRE M1; SET_TT TTCPU 7"],fire_name:["svg_p:text3147-5","svg_cu:tspan4426"],draw_data:[["svg_p:path3131-3","svg_p:path3081-3","svg_p:path3139-7","svg_p:path3049","svg_cu:path3081-3","svg_cu:path3139-7","svg_cu:path3502"]],draw_name:[["svg_p:path3133-6","svg_cu:path3133-6"]]};sim.poc.signals["T12"]={name:"T12",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 8","MV BUS_IB HPC_T12; FIRE M7; FIRE M1; SET_TT TTCPU 8"],fire_name:["svg_p:text3147-5-0-1-1"],draw_data:[["svg_p:path3131-3-8-4-31","svg_p:path3139-7-1-4-3","svg_cu:path3049"]],draw_name:[["svg_cu:path3133-6-9-7-5"]]};sim.poc.signals["M1"]={name:"M1",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV M1_C1 BUS_IB","MV M1_C1 BUS_DB"],depends_on:["C1"],fire_name:["svg_p:text3469"],draw_data:[["svg_p:path3063","svg_p:path3061","svg_p:path3059"],["svg_p:path3057","svg_p:path3641","svg_p:path3419","svg_p:path3583"]],draw_name:[[],["svg_p:path3447"]]};sim.poc.signals["M7"]={name:"M7",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV M7_C7 BUS_IB","MV M7_C7 REG_SR; UPDATE_FLAG M7_C7 FLAG_C 31; UPDATE_FLAG M7_C7 FLAG_V 30; UPDATE_FLAG M7_C7 FLAG_N 29; UPDATE_FLAG M7_C7 FLAG_Z 28"],depends_on:["C7"],fire_name:["svg_p:text3673"],draw_data:[["svg_p:path3691","svg_p:path3693","svg_p:path3659"],["svg_p:path3695"]],draw_name:[[],["svg_p:path3667"]]};sim.poc.signals["MA"]={name:"MA",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV MA_ALU RA_T9; FIRE COP","MV MA_ALU BUS_IB; FIRE COP"],depends_on:["SELA","SELB"],fire_name:["svg_p:text3463"],draw_data:[["svg_p:path3249","svg_p:path3161","svg_p:path3165"],["svg_p:path3279"]],draw_name:[[],["svg_p:path3423"]]};sim.poc.signals["MB"]={name:"MB",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV MB_ALU RB_T10; FIRE COP","MV MB_ALU REG_PC; FIRE COP"],depends_on:["SELA","SELB"],fire_name:["svg_p:text3465"],draw_data:[["svg_p:path3281","svg_p:path3171","svg_p:path3169"],["svg_p:path3283"]],draw_name:[[],["svg_p:path3425","svg_p:path3427"]]};sim.poc.signals["MH"]={name:"MH",visible:true,type:"L",value:0,default_value:0,nbits:"2",behavior:["MV HPC_T12 CLK","MV HPC_T12 ACC_TIME","MV HPC_T12 ACC_PWR","NOP"],fire_name:["svg_p:text3147-5-0-1-8-4"],draw_data:[[],["svg_p:path3081-3-8-5-3"]],draw_name:[[],["svg_p:path3306-8-7-6"]]};sim.poc.signals["COP"]={name:"COP",visible:true,type:"L",value:0,default_value:0,nbits:"5",forbidden:true,behavior:["NOP_ALU; UPDATE_NZVC","AND ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","OR ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","NOT ALU_T6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","XOR ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","SRL ALU_T6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","SRA ALU_T6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","SL ALU_T6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","RR ALU_T6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","RL ALU_T6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","ADD ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","SUB ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","MUL ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","DIV ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","MOD ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","LUI ALU_T6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","ADDFOUR ALU_T6 MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","ADDONE ALU_T6 MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","SUBFOUR ALU_T6 MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","SUBONE ALU_T6 MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","FADD ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","FSUB ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","FMUL ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","FDIV ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","FMOD ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","NOP_ALU","NOP_ALU","NOP_ALU","NOP_ALU","NOP_ALU","NOP_ALU","NOP_ALU"],depends_on:["SELCOP"],fire_name:["svg_p:text3303"],draw_data:[["svg_p:path3237","svg_p:path3239","svg_p:path3261-8","svg_p:path3321","svg_p:path3901-6","svg_p:path3317-9"]],draw_name:[["svg_p:path3009","svg_p:path3301"]]};sim.poc.signals["SELA"]={name:"SELA",visible:true,type:"L",value:0,default_value:0,nbits:"6",behavior:["FIRE_IFCHANGED MRA SELA; RESET_CHANGED SELA"],depends_on:["RA"],fire_name:["svg_cu:text3164"],draw_data:[[]],draw_name:[[]]};sim.poc.signals["SELB"]={name:"SELB",visible:true,type:"L",value:0,default_value:0,nbits:"6",behavior:["FIRE_IFCHANGED MRB SELB; RESET_CHANGED SELB"],depends_on:["RB"],fire_name:["svg_cu:text3168"],draw_data:[[]],draw_name:[[]]};sim.poc.signals["SELC"]={name:"SELC",visible:true,type:"L",value:0,default_value:0,nbits:"6",behavior:["FIRE_IFCHANGED MRC SELC; RESET_CHANGED SELC"],depends_on:["RC"],fire_name:["svg_cu:text3172"],draw_data:[[]],draw_name:[[]]};sim.poc.signals["SELCOP"]={name:"SELCOP",visible:true,type:"L",value:0,default_value:0,nbits:"5",behavior:["FIRE_IFCHANGED MC SELCOP; RESET_CHANGED SELCOP"],depends_on:["COP"],fire_name:["svg_cu:text3312"],draw_data:[[]],draw_name:[[]]};sim.poc.signals["EXCODE"]={name:"EXCODE",visible:true,type:"L",value:0,default_value:0,nbits:"4",behavior:["FIRE T11"],fire_name:["svg_cu:text3312-6"],draw_data:[[]],draw_name:[[]]};sim.poc.signals["RA"]={name:"RA",visible:true,type:"L",value:0,default_value:0,nbits:"6",forbidden:true,behavior:["GET RA_T9 BR RA; FIRE_IFSET T9 1; FIRE_IFSET MA 0"],depends_on:["SELA"],fire_name:["svg_p:text3107"],draw_data:[[]],draw_name:[["svg_p:path3109"]]};sim.poc.signals["RB"]={name:"RB",visible:true,type:"L",value:0,default_value:0,nbits:"6",forbidden:true,behavior:["GET RB_T10 BR RB; FIRE_IFSET T10 1; FIRE_IFSET MB 0"],depends_on:["SELB"],fire_name:["svg_p:text3123"],draw_data:[[]],draw_name:[["svg_p:path3113"]]};sim.poc.signals["RC"]={name:"RC",visible:true,type:"L",value:0,default_value:0,nbits:"6",forbidden:true,behavior:["FIRE LC"],depends_on:["SELC"],fire_name:["svg_p:text3125"],draw_data:[[]],draw_name:[["svg_p:path3117"]]};sim.poc.signals["LC"]={name:"LC",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","SET BR RC BUS_IB"],fire_name:["svg_p:text3127"],draw_data:[["svg_p:path3153","svg_p:path3151","svg_p:path3129"]],draw_name:[["svg_p:path3121"]]};sim.poc.signals["SE"]={name:"SE",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MBITS SELEC_T3 0 REG_RT1 OFFSET SIZE 0 SE; FIRE T3","MBITS SELEC_T3 0 REG_RT1 OFFSET SIZE 0 SE; FIRE T3"],depends_on:["T3"],fire_name:["svg_p:text3593"],draw_data:[[]],draw_name:[["svg_p:path3591","svg_p:path3447-7-7"]]};sim.poc.signals["SIZE"]={name:"SIZE",visible:true,type:"L",value:0,default_value:0,nbits:"5",behavior:["MBITS SELEC_T3 0 REG_RT1 OFFSET SIZE 0 SE; FIRE T3"],depends_on:["T3"],fire_name:["svg_p:text3363"],draw_data:[[]],draw_name:[["svg_p:path3355"]]};sim.poc.signals["OFFSET"]={name:"OFFSET",visible:true,type:"L",value:0,default_value:0,nbits:"5",behavior:["MBITS SELEC_T3 0 REG_RT1 OFFSET SIZE 0 SE; FIRE T3"],depends_on:["T3"],fire_name:["svg_p:text3707"],draw_data:[[]],draw_name:[["svg_p:path3359"]]};sim.poc.signals["MC"]={name:"MC",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MBIT COP REG_IR 0 5; FIRE_IFCHANGED COP MC","CP_FIELD COP REG_MICROINS/SELCOP; FIRE_IFCHANGED COP MC"],depends_on:["SELCOP"],fire_name:["svg_cu:text3322","svg_cu:text3172-1-5"],draw_data:[["svg_cu:path3320","svg_cu:path3142"],["svg_cu:path3318","svg_cu:path3502-6","svg_cu:path3232-6"]],draw_name:[[],["svg_cu:path3306"]]};sim.poc.signals["MRA"]={name:"MRA",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MBIT_SN RA REG_IR REG_MICROINS/SELA 5; FIRE RA;","CP_FIELD RA REG_MICROINS/SELA; FIRE RA;"],depends_on:["SELA"],fire_name:["svg_cu:text3222"],draw_data:[["svg_cu:path3494","svg_cu:path3492","svg_cu:path3490","svg_cu:path3142b","svg_cu:path3188","svg_cu:path3190","svg_cu:path3192","svg_cu:path3194","svg_cu:path3276","svg_cu:path3290","svg_cu:path3260"],["svg_cu:path3270","svg_cu:path3258","svg_cu:path3260","svg_cu:path3294","svg_cu:path3288","svg_cu:path3280"]],draw_name:[[],["svg_cu:path3220"]]};sim.poc.signals["MRB"]={name:"MRB",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MBIT_SN RB REG_IR REG_MICROINS/SELB 5; FIRE RB;","CP_FIELD RB REG_MICROINS/SELB; FIRE RB;"],depends_on:["SELB"],fire_name:["svg_cu:text3242"],draw_data:[["svg_cu:path3196","svg_cu:path3278","svg_cu:path3292"],["svg_cu:path3282","svg_cu:path3258-4","svg_cu:path3278","svg_cu:path3196"]],draw_name:[[],["svg_cu:path3240"]]};sim.poc.signals["MRC"]={name:"MRC",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MBIT_SN RC REG_IR REG_MICROINS/SELC 5; FIRE RC;","CP_FIELD RC REG_MICROINS/SELC; FIRE RC;"],depends_on:["SELC"],fire_name:["svg_cu:text3254"],draw_data:[["svg_cu:path3494","svg_cu:path3492","svg_cu:path3490","svg_cu:path3142b","svg_cu:path3188","svg_cu:path3190","svg_cu:path3192","svg_cu:path3194","svg_cu:path3276","svg_cu:path3290","svg_cu:path3232","svg_cu:path3292"],["svg_cu:path3300","svg_cu:path3294","svg_cu:path3292","svg_cu:path3288","svg_cu:path3232"]],draw_name:[[],["svg_cu:path3252"]]};sim.poc.signals["IOR"]={name:"IOR",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","MOVE_BITS SCR_IOR 0 1 IOR; FIRE SCR_IOR; MOVE_BITS IO_IOR 0 1 IOR; FIRE IO_IOR; MOVE_BITS L3D_IOR 0 1 IOR; FIRE L3D_IOR; MOVE_BITS KBD_IOR 0 1 IOR; FIRE KBD_IOR; MOVE_BITS LEDM_IOR 0 1 IOR; FIRE LEDM_IOR"],fire_name:[],draw_data:[[],["svg_p:path3733","svg_p:path3491","svg_p:text3715"]],draw_name:[[],[]]};sim.poc.signals["IOW"]={name:"IOW",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","MOVE_BITS SCR_IOW 0 1 IOW; FIRE SCR_IOW; MOVE_BITS IO_IOW 0 1 IOW; FIRE IO_IOW; MOVE_BITS L3D_IOW 0 1 IOW; FIRE L3D_IOW; MOVE_BITS LEDM_IOW 0 1 IOW; FIRE LEDM_IOW"],fire_name:[],draw_data:[[],["svg_p:path3735","svg_p:path3491","svg_p:text3717"]],draw_name:[[],[]]};sim.poc.signals["TEST_C"]={name:"TEST_C",visible:true,type:"L",value:0,default_value:0,nbits:"1",forbidden:true,behavior:["MV FLAG_C VAL_ZERO; FIRE M7","MV FLAG_C VAL_ONE; FIRE M7"],depends_on:["SELCOP"],fire_name:["svg_p:text3701-3"],draw_data:[["svg_p:text3701-3"]],draw_name:[[]]};sim.poc.signals["TEST_V"]={name:"TEST_V",visible:true,type:"L",value:0,default_value:0,nbits:"1",forbidden:true,behavior:["MV FLAG_V VAL_ZERO; FIRE M7","MV FLAG_V VAL_ONE; FIRE M7"],depends_on:["SELCOP"],fire_name:["svg_p:text3701-3-1"],draw_data:[["svg_p:text3701-3-1"]],draw_name:[[]]};sim.poc.signals["TEST_N"]={name:"TEST_N",visible:true,type:"L",value:0,default_value:0,nbits:"1",forbidden:true,behavior:["MV FLAG_N VAL_ZERO; FIRE M7","MV FLAG_N VAL_ONE; FIRE M7"],depends_on:["SELCOP"],fire_name:["svg_p:text3701-3-2"],draw_data:[["svg_p:text3701-3-2"]],draw_name:[[]]};sim.poc.signals["TEST_Z"]={name:"TEST_Z",visible:true,type:"L",value:0,default_value:0,nbits:"1",forbidden:true,behavior:["MV FLAG_Z VAL_ZERO; FIRE M7","MV FLAG_Z VAL_ONE; FIRE M7"],depends_on:["SELCOP"],fire_name:["svg_p:text3701-3-5"],draw_data:[["svg_p:text3701-3-5"]],draw_name:[[]]};sim.poc.signals["TEST_I"]={name:"TEST_I",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV FLAG_I VAL_ZERO; FIRE M7","MV FLAG_I VAL_ONE; FIRE M7"],depends_on:["CLK"],fire_name:["svg_cu:text3440"],draw_data:[["svg_cu:text3440"]],draw_name:[[]]};sim.poc.signals["TEST_U"]={name:"TEST_U",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV FLAG_U VAL_ZERO; FIRE M7","MV FLAG_U VAL_ONE; FIRE M7"],depends_on:["CLK"],fire_name:["svg_cu:text3442"],draw_data:[["svg_cu:text3442"]],draw_name:[[]]};sim.poc.signals["TEST_INTV"]={name:"TEST_INTV",visible:true,type:"L",value:0,default_value:0,nbits:"8",forbidden:true,behavior:["MBIT INTV TEST_INTV 0 32"],depends_on:["INT"],fire_name:["svg_p:tspan4225"],draw_data:[["svg_p:path3749"]],draw_name:[[]]};sim.poc.behaviors["NOP"]={nparameters:1,operation:function(s_expr){},verbal:function(s_expr){return""}};sim.poc.behaviors["NOP_ALU"]={nparameters:1,operation:function(s_expr){sim.poc.internal_states.alu_flags.flag_n=0;sim.poc.internal_states.alu_flags.flag_z=0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){return"Reset ALU flags. "}};sim.poc.behaviors["MV"]={nparameters:3,types:["X","X"],operation:function(s_expr){sim_elto_org=get_reference(s_expr[2]);sim_elto_dst=get_reference(s_expr[1]);newval=get_value(sim_elto_org);set_value(sim_elto_dst,newval)},verbal:function(s_expr){var sim_elto_org=get_reference(s_expr[2]);var newval=get_value(sim_elto_org);var verbose=get_cfg("verbal_verbose");if(verbose!=="short"){return"Copy from "+show_verbal(s_expr[2])+" to "+show_verbal(s_expr[1])+" value "+show_value(newval)+". "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[2])+" ("+show_value(newval)+"). "}};sim.poc.behaviors["LOAD"]={nparameters:3,types:["X","X"],operation:function(s_expr){sim_elto_org=get_reference(s_expr[2]);sim_elto_dst=get_reference(s_expr[1]);newval=get_value(sim_elto_org);set_value(sim_elto_dst,newval)},verbal:function(s_expr){var sim_elto_org=get_reference(s_expr[2]);var newval=get_value(sim_elto_org);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Load from "+show_verbal(s_expr[2])+" to "+show_verbal(s_expr[1])+" value "+show_value(newval)+". "}return show_verbal(s_expr[1])+" = "+show_value(newval)+" ( "+show_verbal(s_expr[2])+"). "}};sim.poc.behaviors["CP_FIELD"]={nparameters:3,types:["X","X"],operation:function(s_expr){r=s_expr[2].split("/");sim_elto_org=get_reference(r[0]);newval=get_value(sim_elto_org);newval=newval[r[1]];if(typeof newval!="undefined"){sim_elto_dst=get_reference(s_expr[1]);set_value(sim_elto_dst,newval)}},verbal:function(s_expr){var r=s_expr[2].split("/");var sim_elto_org=get_reference(r[0]);var newval=get_value(sim_elto_org);newval=newval[r[1]];if(typeof newval=="undefined")newval="<undefined>";else newval=show_value(newval);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return'Copy from "'+show_verbal(r[0])+'"['+r[1]+"] "+"to "+show_verbal(s_expr[1])+" (value "+newval+"). "}return show_verbal(s_expr[1])+" = "+show_verbal(r[0])+"."+r[1]+" ("+newval+"). "}};sim.poc.behaviors["NOT_ES"]={nparameters:3,types:["S","E"],operation:function(s_expr){set_value(sim.poc.signals[s_expr[1]],Math.abs(get_value(sim.poc.states[s_expr[2]])-1))},verbal:function(s_expr){var value=Math.abs(get_value(sim.poc.states[s_expr[2]])-1);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Set "+show_verbal(s_expr[1])+" with value "+show_value(value)+" (Logical NOT of "+s_expr[2]+"). "}return show_verbal(s_expr[1])+" = "+show_value(value)+" (Logical NOT "+s_expr[2]+"). "}};sim.poc.behaviors["GET"]={nparameters:4,types:["E","E","S"],operation:function(s_expr){set_value(sim.poc.states[s_expr[1]],get_value(sim.poc.states[s_expr[2]][sim.poc.signals[s_expr[3]].value]))},verbal:function(s_expr){var value=get_value(sim.poc.states[s_expr[2]][sim.poc.signals[s_expr[3]].value]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Set "+show_verbal(s_expr[1])+" with value "+show_value(value)+" (Register File "+s_expr[3]+"). "}return show_verbal(s_expr[1])+" = "+show_value(value)+" (Register File "+s_expr[3]+"). "}};sim.poc.behaviors["SET"]={nparameters:4,types:["E","S","E"],operation:function(s_expr){set_value(sim.poc.states[s_expr[1]][sim.poc.signals[s_expr[2]].value],get_value(sim.poc.states[s_expr[3]]))},verbal:function(s_expr){var value=get_value(sim.poc.states[s_expr[3]]);var o_ref=sim.poc.states[s_expr[1]][sim.poc.signals[s_expr[2]].value];var o_verbal=o_ref.name;if(typeof o_ref.verbal!="undefined")o_verbal=o_ref.verbal;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy to "+o_verbal+" the value "+show_value(value)+". "}return o_verbal+" = "+show_value(value)+". "}};sim.poc.behaviors["AND"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])&get_value(sim.poc.states[s_expr[3]]);set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])&get_value(sim.poc.states[s_expr[3]]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU AND with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (AND). "}};sim.poc.behaviors["OR"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])|get_value(sim.poc.states[s_expr[3]]);set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])|get_value(sim.poc.states[s_expr[3]]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU OR with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (OR). "}};sim.poc.behaviors["NOT"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=~get_value(sim.poc.states[s_expr[2]]);set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=~get_value(sim.poc.states[s_expr[2]]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU NOT with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (NOT). "}};sim.poc.behaviors["XOR"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])^get_value(sim.poc.states[s_expr[3]]);set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])^get_value(sim.poc.states[s_expr[3]]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU XOR with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (XOR). "}};sim.poc.behaviors["SRL"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])>>>1;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])>>>1;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Shift Right Logical with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (SRL). "}};sim.poc.behaviors["SRA"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])>>1;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])>>1;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Shift Right Arithmetic with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (SRA). "}};sim.poc.behaviors["SL"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])<<1;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])<<1;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Shift Left with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (SL). "}};sim.poc.behaviors["RR"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])>>>1|(get_value(sim.poc.states[s_expr[2]])&1)<<31;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])>>>1|(get_value(sim.poc.states[s_expr[2]])&1)<<31;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Right Rotation with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (RR). "}};sim.poc.behaviors["RL"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])<<1|(get_value(sim.poc.states[s_expr[2]])&2147483648)>>>31;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])<<1|(get_value(sim.poc.states[s_expr[2]])&2147483648)>>>31;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Left Rotation with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (LR). "}};sim.poc.behaviors["ADD"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a+b;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_c=a>>>31&&b>>>31;sim.poc.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.poc.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.poc.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a+b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU ADD with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (ADD). "}};sim.poc.behaviors["SUB"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a-b;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_c=a>>>31&&b>>>31;sim.poc.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.poc.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.poc.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a-b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU SUB with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (SUB). "}};sim.poc.behaviors["MUL"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a*b;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_c=0;sim.poc.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.poc.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.poc.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a*b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU MUL with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (MUL). "}};sim.poc.behaviors["DIV"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;if(0==b){set_value(sim.poc.states[s_expr[1]],0);sim.poc.internal_states.alu_flags.flag_n=0;sim.poc.internal_states.alu_flags.flag_z=1;sim.poc.internal_states.alu_flags.flag_v=1;sim.poc.internal_states.alu_flags.flag_c=0;return}var result=Math.floor(a/b);set_value(sim.poc.states[s_expr[1]],result);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;if(0==b){return"ALU DIV zero by zero (oops!). "}var result=Math.floor(a/b);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU DIV with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (DIV). "}};sim.poc.behaviors["MOD"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;if(0==b){set_value(sim.poc.states[s_expr[1]],0);sim.poc.internal_states.alu_flags.flag_n=0;sim.poc.internal_states.alu_flags.flag_z=1;sim.poc.internal_states.alu_flags.flag_v=1;sim.poc.internal_states.alu_flags.flag_c=0;return}var result=a%b;set_value(sim.poc.states[s_expr[1]],result);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;if(0==b){return"ALU MOD zero by zero (oops!). "}var result=a%b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU MOD with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (MOD). "}};sim.poc.behaviors["LUI"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])<<16;set_value(sim.poc.states[s_expr[1]],result);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])<<16;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Load Upper Immediate with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (LUI). "}};sim.poc.behaviors["ADDFOUR"]={nparameters:3,types:["E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a+4;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_c=a>>>31&&b>>>31;sim.poc.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.poc.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.poc.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a+4;return"ALU ADD 4 with result "+show_value(result)+". "}};sim.poc.behaviors["ADDONE"]={nparameters:3,types:["E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a+1;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_c=a>>>31&&b>>>31;sim.poc.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.poc.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.poc.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a+1;return"ALU ADD 1 with result "+show_value(result)+". "}};sim.poc.behaviors["SUBFOUR"]={nparameters:3,types:["E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a-4;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_c=a>>>31&&b>>>31;sim.poc.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.poc.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.poc.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a-4;return"ALU SUB 4 with result "+show_value(result)+". "}};sim.poc.behaviors["SUBONE"]={nparameters:3,types:["E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a-1;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_c=a>>>31&&b>>>31;sim.poc.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.poc.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.poc.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a-1;return"ALU SUB 1 with result "+show_value(result)+". "}};sim.poc.behaviors["FADD"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a.toFixed(2)+b.toFixed(2);set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_c=0;sim.poc.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.poc.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.poc.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a.toFixed(2)+b.toFixed(2);return"ALU Float ADD with result "+result+". "}};sim.poc.behaviors["FSUB"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a.toFixed(2)-b.toFixed(2);set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_c=0;sim.poc.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.poc.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.poc.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a.toFixed(2)-b.toFixed(2);return"ALU Float SUB with result "+result+". "}};sim.poc.behaviors["FMUL"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a.toFixed(2)*b.toFixed(2);set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_c=0;sim.poc.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.poc.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.poc.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a.toFixed(2)*b.toFixed(2);return"ALU Float MUL with result "+result+". "}};sim.poc.behaviors["FDIV"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;if(0==b){set_value(sim.poc.states[s_expr[1]],0);sim.poc.internal_states.alu_flags.flag_n=0;sim.poc.internal_states.alu_flags.flag_z=1;sim.poc.internal_states.alu_flags.flag_v=1;sim.poc.internal_states.alu_flags.flag_c=0;return}var result=Math.floor(a/b);set_value(sim.poc.states[s_expr[1]],result);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a.toFixed(2)/b.toFixed(2);return"ALU Float DIV with result "+result+". "}};sim.poc.behaviors["FMOD"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var result=(get_value(sim.poc.states[s_expr[2]])<<0)%(get_value(sim.poc.states[s_expr[3]])<<0);set_value(sim.poc.states[s_expr[1]],result);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a.toFixed(2)%b.toFixed(2);return"ALU Float MOD with result "+result+". "}};sim.poc.behaviors["LUI"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])<<16;set_value(sim.poc.states[s_expr[1]],result);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])<<16;return"ALU Load Upper Immediate with result "+show_value(result)+". "}};sim.poc.behaviors["PLUS1"]={nparameters:3,types:["E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a+1;set_value(sim.poc.states[s_expr[1]],result>>>0)},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a+1;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Add one to "+show_verbal(s_expr[2])+" and copy to "+show_verbal(s_expr[1])+" with result "+show_value(result)+". "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[2])+" + 1"+" ("+show_value(result)+"). "}};sim.poc.behaviors["PLUS4"]={nparameters:3,types:["E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a+4;set_value(sim.poc.states[s_expr[1]],result>>>0)},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a+4;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Add four to "+show_verbal(s_expr[2])+" and copy to "+show_verbal(s_expr[1])+" with result "+show_value(result)+". "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[2])+" + 4"+" ("+show_value(result)+"). "}};sim.poc.behaviors["SET_TT"]={nparameters:3,types:["E","I"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[1]])<<0;var b=parseInt(s_expr[2]);var m=Math.pow(2,b);var r=a|m;set_value(sim.poc.states[s_expr[1]],r);update_cpu_bus_fire(r,b)},verbal:function(s_expr){return""}};sim.poc.behaviors["RST_TT"]={nparameters:3,types:["E","I"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[1]])<<0;var b=parseInt(s_expr[2]);var m=Math.pow(2,b);var r=a&~m;set_value(sim.poc.states[s_expr[1]],r);update_cpu_bus_fire(r,b)},verbal:function(s_expr){return""}};sim.poc.behaviors["CHECK_RTD"]={nparameters:1,operation:function(s_expr){var number_active_tri=parseInt(simhw_sim_signal("TD").value)+parseInt(simhw_sim_signal("R").value);update_system_bus_fire(number_active_tri)},verbal:function(s_expr){return""}};sim.poc.behaviors["MBIT"]={nparameters:5,types:["X","X","I","I"],operation:function(s_expr){var sim_elto_dst=get_reference(s_expr[1]);var sim_elto_org=get_reference(s_expr[2]);var offset=parseInt(s_expr[3]);var size=parseInt(s_expr[4]);var n1=get_value(sim_elto_org).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(offset+size-1),size);set_value(sim_elto_dst,parseInt(n2,2))},verbal:function(s_expr){var sim_elto_dst=get_reference(s_expr[1]);var sim_elto_org=get_reference(s_expr[2]);var offset=parseInt(s_expr[3]);var size=parseInt(s_expr[4]);var n1=get_value(sim_elto_org).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(offset+size-1),size);var n3=parseInt(n2,2);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy from "+show_verbal(s_expr[2])+" to "+show_verbal(s_expr[1])+" value "+show_value(n3)+" (copied "+size+" bits from bit "+offset+"). "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[2])+" ("+show_value(n3)+", "+size+" bits from bit "+offset+"). "}};sim.poc.behaviors["MBIT_SN"]={nparameters:5,types:["S","E","E","I"],operation:function(s_expr){var base=0;var r=s_expr[3].split("/");if(1==r.length)base=get_value(sim.poc.states[s_expr[3]]);else if(typeof sim.poc.states[r[0]].value[r[1]]!="undefined")base=sim.poc.states[r[0]].value[r[1]];else if(typeof sim.poc.signals[r[1]].default_value!="undefined")base=sim.poc.signals[r[1]].default_value;else if(typeof sim.poc.states[r[1]].default_value!="undefined")base=sim.poc.states[r[1]].default_value;else ws_alert("WARN: undefined state/field pair -> "+r[0]+"/"+r[1]);var offset=parseInt(s_expr[4]);var n1=get_value(sim.poc.states[s_expr[2]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;var n3=n2.substr(31-(base+offset-1),offset);set_value(sim.poc.signals[s_expr[1]],parseInt(n3,2))},verbal:function(s_expr){var base=0;var r=s_expr[3].split("/");if(1==r.length)base=get_value(sim.poc.states[s_expr[3]]);else if(typeof sim.poc.states[r[0]].value[r[1]]!="undefined")base=sim.poc.states[r[0]].value[r[1]];else if(typeof sim.poc.signals[r[1]].default_value!="undefined")base=sim.poc.signals[r[1]].default_value;else if(typeof sim.poc.states[r[1]].default_value!="undefined")base=sim.poc.states[r[1]].default_value;else ws_alert("WARN: undefined state/field pair -> "+r[0]+"/"+r[1]);var offset=parseInt(s_expr[4]);var n1=get_value(sim.poc.states[s_expr[2]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;var n3=n2.substr(31-(base+offset-1),offset);var from_elto="";if(1==r.length)from_elto=show_verbal(s_expr[3]);else from_elto='"'+show_verbal(s_expr[2])+'"['+r[1]+"] ";var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy from "+from_elto+"into "+show_verbal(s_expr[1])+" "+"value "+parseInt(n3,2)+". "}return show_verbal(s_expr[1])+" = "+from_elto+" ("+parseInt(n3,2)+"). "}};sim.poc.behaviors["SBIT_SIGNAL"]={nparameters:4,types:["X","I","I"],operation:function(s_expr){sim_elto_dst=get_reference(s_expr[1]);var new_value=sim_elto_dst.value;var mask=1<>>0)},verbal:function(s_expr){sim_elto_dst=get_reference(s_expr[1]);var new_value=sim_elto_dst.value;var mask=1<>>0)}};sim.poc.behaviors["UPDATE_FLAG"]={nparameters:4,types:["X","X","I"],operation:function(s_expr){sim_elto_org=get_reference(s_expr[2]);sim_elto_dst=get_reference(s_expr[1]);var new_value=sim_elto_dst.value&~(1<>>0)},verbal:function(s_expr){sim_elto_org=get_reference(s_expr[2]);sim_elto_dst=get_reference(s_expr[1]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Update "+show_verbal(s_expr[2])+" to value "+sim_elto_org.value+". "}return show_verbal(s_expr[1])+"."+show_verbal(s_expr[3])+" = "+sim_elto_org.value+". "}};sim.poc.behaviors["MBITS"]={nparameters:8,types:["E","I","E","S","S","I","S"],operation:function(s_expr){var offset=parseInt(sim.poc.signals[s_expr[4]].value);var size=parseInt(sim.poc.signals[s_expr[5]].value);var n1=get_value(sim.poc.states[s_expr[3]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(offset+size-1),size);var n3="00000000000000000000000000000000".substring(0,32-n2.length)+n2;if("1"==sim.poc.signals[s_expr[7]].value&&"1"==n2.substr(0,1)){n3="11111111111111111111111111111111".substring(0,32-n2.length)+n2}set_value(sim.poc.states[s_expr[1]],parseInt(n3,2))},verbal:function(s_expr){var offset=parseInt(sim.poc.signals[s_expr[4]].value);var size=parseInt(sim.poc.signals[s_expr[5]].value);var n1=get_value(sim.poc.states[s_expr[3]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(offset+size-1),size);var n3="00000000000000000000000000000000".substring(0,32-n2.length)+n2;if("1"==sim.poc.signals[s_expr[7]].value&&"1"==n2.substr(0,1)){n3="11111111111111111111111111111111".substring(0,32-n2.length)+n2}n1=parseInt(n3,2);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return" Copy from "+show_verbal(s_expr[3])+" to "+show_verbal(s_expr[1])+" value "+show_value(n1)+" (copied "+size+" bits from bit "+offset+"). "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[3])+" ("+show_value(n1)+", "+size+" bits from bit "+offset+"). "}};sim.poc.behaviors["BSEL"]={nparameters:6,types:["E","I","I","E","I"],operation:function(s_expr){var posd=parseInt(s_expr[2]);var poso=parseInt(s_expr[5]);var len=parseInt(s_expr[3]);var n1=get_value(sim.poc.states[s_expr[4]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(poso+len)+1,len);var n3="00000000000000000000000000000000".substring(0,32-n2.length)+n2;var n4="00000000000000000000000000000000".substr(0,posd);n3=n3+n4;set_value(sim.poc.states[s_expr[1]],parseInt(n3,2))},verbal:function(s_expr){var posd=parseInt(s_expr[2]);var len=parseInt(s_expr[3]);var poso=parseInt(s_expr[5]);var n1=get_value(sim.poc.states[s_expr[4]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(poso+len)+1,len);var n3="00000000000000000000000000000000".substring(0,32-n2.length)+n2;var n4="00000000000000000000000000000000".substr(0,posd);n3=n3+n4;var n5=parseInt(n3,2);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy from "+show_verbal(s_expr[4])+" to "+show_verbal(s_expr[1])+" value "+show_value(n5)+" (copied "+len+" bits, from bit "+poso+" of "+s_expr[4]+" to bit "+posd+" of "+s_expr[1]+"). "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[4])+" ("+show_value(n5)+", "+len+" bits, from bit "+poso+" of "+s_expr[4]+" to bit "+posd+" of "+s_expr[1]+"). "}};sim.poc.behaviors["EXT_SIG"]={nparameters:3,types:["E","I"],operation:function(s_expr){var n1=get_value(sim.poc.states[s_expr[1]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;var n3=n2.substr(31-s_expr[2],31);var n4=n3;if("1"==n2[31-s_expr[2]]){n4="11111111111111111111111111111111".substring(0,32-n3.length)+n4}set_value(sim.poc.states[s_expr[1]],parseInt(n4,2))},verbal:function(s_expr){var n1=get_value(sim.poc.states[s_expr[1]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;var n3=n2.substr(31-s_expr[2],31);var n4=n3;if("1"==n2[31-s_expr[2]]){n4="11111111111111111111111111111111".substring(0,32-n3.length)+n4}var n5=parseInt(n4,2);return"Sign Extension with value "+show_value(n5)+". "}};sim.poc.behaviors["MOVE_BITS"]={nparameters:5,types:["S","I","I","S"],operation:function(s_expr){var posd=parseInt(s_expr[2]);var poso=0;var len=parseInt(s_expr[3]);var n1=sim.poc.signals[s_expr[4]].value.toString(2);n1="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n1=n1.substr(31-poso-len+1,len);var n2=sim.poc.signals[s_expr[1]].value.toString(2);n2="00000000000000000000000000000000".substring(0,32-n2.length)+n2;var m1=n2.substr(0,32-(posd+len));var m2=n2.substr(31-posd+1,posd);var n3=m1+n1+m2;set_value(sim.poc.signals[s_expr[1]],parseInt(n3,2))},verbal:function(s_expr){return""}};sim.poc.behaviors["MOVE_BITSE"]={nparameters:6,types:["S","I","I","E","I"],operation:function(s_expr){var posd=parseInt(s_expr[2]);var poso=parseInt(s_expr[5]);var len=parseInt(s_expr[3]);var n1=get_value(sim.poc.states[s_expr[4]]).toString(2);n1="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n1=n1.substr(31-poso-len+1,len);var n2=sim.poc.signals[s_expr[1]].value.toString(2);n2="00000000000000000000000000000000".substring(0,32-n2.length)+n2;var m1=n2.substr(0,32-(posd+len));var m2=n2.substr(31-posd+1,posd);var n3=m1+n1+m2;set_value(sim.poc.signals[s_expr[1]],parseInt(n3,2))},verbal:function(s_expr){return""}};sim.poc.behaviors["DECO"]={nparameters:1,operation:function(s_expr){sim.poc.states["INEX"].value=0;var oi=decode_instruction(sim.poc.internal_states.FIRMWARE,sim.poc.ctrl_states.ir,get_value(sim.poc.states["REG_IR"]));if(null==oi.oinstruction){ws_alert("ERROR: undefined instruction code in IR ("+"co:"+oi.op_code.toString(2)+", "+"cop:"+oi.cop_code.toString(2)+")");sim.poc.states["ROM_MUXA"].value=0;sim.poc.states["INEX"].value=1;return-1}var rom_addr=oi.op_code<<6;if(typeof oi.oinstruction.cop!="undefined"){rom_addr=rom_addr+oi.cop_code}if(typeof sim.poc.internal_states["ROM"][rom_addr]=="undefined"){ws_alert("ERROR: undefined rom address "+rom_addr+" in firmware");sim.poc.states["ROM_MUXA"].value=0;return-1}sim.poc.states["ROM_MUXA"].value=sim.poc.internal_states["ROM"][rom_addr];var val=get_value(sim.poc.states["DECO_INS"]);set_value(sim.poc.states["DECO_INS"],val+1);var pc=get_value(sim.poc.states["REG_PC"])-4;var decins=get_deco_from_pc(pc);set_value(sim.poc.states["REG_IR_DECO"],decins);show_dbg_ir(get_value(sim.poc.states["REG_IR_DECO"]))},verbal:function(s_expr){return"Decode instruction. "}};sim.poc.behaviors["FIRE"]={nparameters:2,types:["S"],operation:function(s_expr){if(sim.poc.internal_states.fire_stack.indexOf(s_expr[1])!=-1){return}sim.poc.internal_states.fire_stack.push(s_expr[1]);update_draw(sim.poc.signals[s_expr[1]],sim.poc.signals[s_expr[1]].value);if("L"==sim.poc.signals[s_expr[1]].type){update_state(s_expr[1])}sim.poc.internal_states.fire_stack.pop(s_expr[1])},verbal:function(s_expr){return""}};sim.poc.behaviors["FIRE_IFSET"]={nparameters:3,types:["S","I"],operation:function(s_expr){if(get_value(sim.poc.signals[s_expr[1]])!=parseInt(s_expr[2])){return}sim.poc.behaviors["FIRE"].operation(s_expr)},verbal:function(s_expr){return""}};sim.poc.behaviors["FIRE_IFCHANGED"]={nparameters:3,types:["S","X"],operation:function(s_expr){sim_elto=get_reference(s_expr[2]);if(sim_elto.changed==false)return;sim.poc.behaviors["FIRE"].operation(s_expr)},verbal:function(s_expr){return""}};sim.poc.behaviors["RESET_CHANGED"]={nparameters:2,types:["X"],operation:function(s_expr){sim_elto=get_reference(s_expr[1]);sim_elto.changed=false},verbal:function(s_expr){return""}};sim.poc.behaviors["CLOCK"]={nparameters:1,operation:function(s_expr){var new_maddr=null;var mcelto=null;var t0=performance.now();var val=get_value(sim.poc.states["CLK"]);set_value(sim.poc.states["CLK"],val+1);set_value(sim.poc.states["TTCPU"],0);new_maddr=get_value(sim.poc.states["REG_MICROADDR"]);mcelto=sim.poc.internal_states["MC"][new_maddr];if(typeof mcelto!=="undefined"&&false==mcelto.is_native){for(var i=0;i>>0},set_value:function(elto,value){var origin="";var r_value=main_memory_get_program_counter();if(r_value!=null){origin="PC=0x"+r_value.toString(16)}var melto={value:value>>>0,source_tracking:[origin],comments:null};var valref=main_memory_set(sim.poc.internal_states.MP,elto,melto);show_main_memory(sim.poc.internal_states.MP,elto,typeof valref==="undefined",true);return value}};sim.poc.internal_states.segments={};sim.poc.internal_states.MP={};sim.poc.internal_states.MP_wc=0;sim.poc.internal_states.CM_cfg=[];sim.poc.internal_states.CM=[];sim.poc.signals.MRDY={name:"MRDY",visible:true,type:"L",value:0,default_value:0,nbits:"1",depends_on:["CLK"],behavior:["FIRE_IFCHANGED MRDY C","FIRE_IFCHANGED MRDY C"],fire_name:["svg_p:tspan3916"],draw_data:[[],["svg_p:path3895","svg_p:path3541"]],draw_name:[[],[]]};sim.poc.signals.R={name:"R",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; CHECK_RTD","MEM_READ BUS_AB BUS_DB BW MRDY CLK; FIRE M1; FIRE MRDY; CHECK_RTD"],fire_name:["svg_p:text3533-5-2"],draw_data:[[],["svg_p:path3557","svg_p:path3571"]],draw_name:[[],[]]};sim.poc.signals.W={name:"W",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","MEM_WRITE BUS_AB BUS_DB BW MRDY CLK; FIRE M1; FIRE MRDY"],fire_name:["svg_p:text3533-5-08"],draw_data:[[],["svg_p:path3559","svg_p:path3575","svg_p:path3447-7"]],draw_name:[[],[]]};sim.poc.signals.BW={name:"BW",verbal:["Access to one byte from memory. ","Access to two bytes from memory. ","Access to three bytes from memory. ","Access to a word from memory. "],visible:true,type:"L",value:0,default_value:0,nbits:"2",behavior:["FIRE R; FIRE W","FIRE R; FIRE W","FIRE R; FIRE W","FIRE R; FIRE W"],fire_name:["svg_p:text3533-5-2-8"],draw_data:[["svg_p:path3557-0"]],draw_name:[[],[]]};sim.poc.behaviors.MEM_READ={nparameters:6,types:["E","E","S","S","E"],operation:function(s_expr){var address=sim.poc.states[s_expr[1]].value;var dbvalue=sim.poc.states[s_expr[2]].value;var bw=sim.poc.signals[s_expr[3]].value;var clk=get_value(sim.poc.states[s_expr[5]]);sim.poc.signals[s_expr[4]].value=0;var remain=get_value(sim.poc.internal_states.MP_wc);if(typeof sim.poc.events.mem[clk-1]!="undefined"&&sim.poc.events.mem[clk-1]>0){remain=sim.poc.events.mem[clk-1]-1}var first_time=typeof sim.poc.events.mem[clk]=="undefined";sim.poc.events.mem[clk]=remain;if(remain>0){return}var wordress=address&4294967292;var value=main_memory_getvalue(sim.poc.internal_states.MP,wordress);var full_redraw=false;if(typeof value==="undefined"){value=0;full_redraw=true}dbvalue=main_memory_extractvalues(value,bw,address&3);sim.poc.states[s_expr[2]].value=dbvalue>>>0;sim.poc.signals[s_expr[4]].value=1;show_main_memory(sim.poc.internal_states.MP,wordress,full_redraw,false);if(first_time&&sim.poc.internal_states.CM.length>0){cache_memory_access(sim.poc.internal_states.CM[0],address,"read",clk)}},verbal:function(s_expr){var verbal="";var address=sim.poc.states[s_expr[1]].value;var dbvalue=sim.poc.states[s_expr[2]].value;var bw=sim.poc.signals[s_expr[3]].value;var clk=get_value(sim.poc.states[s_expr[5]]);switch(bw){case 0:bw_type="byte";break;case 1:bw_type="half";break;case 2:bw_type="three bytes";break;case 3:bw_type="word";break}var value=main_memory_getvalue(sim.poc.internal_states.MP,address);if(typeof value==="undefined"){value=0}verbal="Try to read a "+bw_type+" from memory "+"at address 0x"+address.toString(16)+" with value "+value.toString(16)+". ";return verbal}};sim.poc.behaviors.MEM_WRITE={nparameters:6,types:["E","E","S","S","E"],operation:function(s_expr){var address=sim.poc.states[s_expr[1]].value;var dbvalue=sim.poc.states[s_expr[2]].value;var bw=sim.poc.signals[s_expr[3]].value;var clk=get_value(sim.poc.states[s_expr[5]]);sim.poc.signals[s_expr[4]].value=0;var remain=get_value(sim.poc.internal_states.MP_wc);if(typeof sim.poc.events.mem[clk-1]!="undefined"&&sim.poc.events.mem[clk-1]>0){remain=sim.poc.events.mem[clk-1]-1}var first_time=typeof sim.poc.events.mem[clk]=="undefined";sim.poc.events.mem[clk]=remain;if(remain>0){return}var wordress=address&4294967292;var value=main_memory_getvalue(sim.poc.internal_states.MP,wordress);var full_redraw=false;if(typeof value==="undefined"){value=0;full_redraw=true}value=main_memory_updatevalues(value,dbvalue,bw,address&3);var origin="";var r_value=main_memory_get_program_counter();if(r_value!=null){origin="PC=0x"+r_value.toString(16)}var melto={value:value>>>0,source_tracking:[origin],comments:null};var elto=main_memory_set(sim.poc.internal_states.MP,wordress,melto);sim.poc.signals[s_expr[4]].value=1;show_main_memory(sim.poc.internal_states.MP,wordress,full_redraw,true);if(first_time&&sim.poc.internal_states.CM.length>0){cache_memory_access(sim.poc.internal_states.CM[0],address,"write",clk)}},verbal:function(s_expr){var verbal="";var address=sim.poc.states[s_expr[1]].value;var dbvalue=sim.poc.states[s_expr[2]].value;var bw=sim.poc.signals[s_expr[3]].value;var clk=get_value(sim.poc.states[s_expr[5]]);switch(bw){case 0:bw_type="byte";break;case 1:bw_type="half";break;case 2:bw_type="three bytes";break;case 3:bw_type="word";break}var value=main_memory_getvalue(sim.poc.internal_states.MP,address);if(typeof value==="undefined"){value=0}verbal="Try to write a "+bw_type+" to memory "+"at address 0x"+address.toString(16)+" with value "+value.toString(16)+". ";return verbal}};sim.poc.behaviors.MEMORY_RESET={nparameters:1,operation:function(s_expr){sim.poc.events.mem={}},verbal:function(s_expr){return"Reset the memory (all values will be zeroes). "}};sim.poc.elements.memory={name:"Main memory",description:"Main memory subsystem",type:"subcomponent",belongs:"MEMORY",states:{addr:{ref:"BUS_AB"},data:{ref:"BUS_DB"},mrdy:{ref:"MRDY"}},signals:{bw:{ref:"BW"},r:{ref:"R"},w:{ref:"W"}},states_inputs:["addr","data"],states_outputs:["mrdy","data"],signals_inputs:["bw","r","w"],signals_output:[]};sim.poc.components.IO={name:"IO",version:"1",abilities:["IO_TIMER"],details_name:["IO_STATS","IO_CONFIG"],details_fire:[["svg_p:text3775"],[]],write_state:function(vec){return vec},read_state:function(o,check){return false},get_state:function(reg){return null},get_value:function(elto){var associated_state=simhw_internalState_get("io_hash",elto);var value=get_value(simhw_sim_state(associated_state))>>>0;set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_signal("IOR"),1);compute_behavior("FIRE IOR");value=get_value(simhw_sim_state("BUS_DB"));return value},set_value:function(elto,value){var associated_state=simhw_internalState_get("io_hash",elto);set_value(simhw_sim_state(associated_state),value);set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_state("BUS_DB"),value);set_value(simhw_sim_signal("IOW"),1);compute_behavior("FIRE IOW");return value}};sim.poc.internal_states.io_int_factory=[];sim.poc.internal_states.io_int_factory[0]={period:0,probability:.5,accumulated:0,active:false};sim.poc.internal_states.io_int_factory[1]={period:0,probability:.5,accumulated:0,active:false};sim.poc.internal_states.io_int_factory[2]={period:0,probability:.5,accumulated:0,active:false};sim.poc.internal_states.io_int_factory[3]={period:0,probability:.5,accumulated:0,active:false};sim.poc.internal_states.io_int_factory[4]={period:0,probability:.5,accumulated:0,active:false};sim.poc.internal_states.io_int_factory[5]={period:0,probability:.5,accumulated:0,active:false};sim.poc.internal_states.io_int_factory[6]={period:0,probability:.5,accumulated:0,active:false};sim.poc.internal_states.io_int_factory[7]={period:0,probability:.5,accumulated:0,active:false};var IOSR_ID=4352;var IOCR_ID=4356;var IODR_ID=4360;sim.poc.internal_states.io_hash[IOSR_ID]="IOSR";sim.poc.internal_states.io_hash[IOCR_ID]="IOCR";sim.poc.internal_states.io_hash[IODR_ID]="IODR";sim.poc.states.IOSR={name:"IOSR",verbal:"IO State Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.IOCR={name:"IOCR",verbal:"IO Control Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.IODR={name:"IODR",verbal:"IO Data Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.signals.INT={name:"INT",visible:true,type:"L",value:0,default_value:0,nbits:"1",depends_on:["CLK"],behavior:["FIRE C","FIRE C"],fire_name:["svg_p:tspan4199"],draw_data:[[],["svg_p:path3809"]],draw_name:[[],[]]};sim.poc.signals.IORDY={name:"IORDY",visible:true,type:"L",value:0,default_value:0,nbits:"1",depends_on:["CLK"],behavior:["FIRE_IFCHANGED IORDY C","FIRE_IFCHANGED IORDY C"],fire_name:["svg_p:tspan4089","svg_p:path3793","svg_p:tspan4089"],draw_data:[[],["svg_p:path3897"]],draw_name:[[],[]]};sim.poc.signals.IO_IOR={name:"IO_IOR",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","IO_IOR BUS_AB BUS_DB IOSR IOCR IODR CLK; FIRE M1"],fire_name:["svg_p:tspan4173"],draw_data:[[],["svg_p:path3795","svg_p:path3733"]],draw_name:[[],[]]};sim.poc.signals.IO_IOW={name:"IO_IOW",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","IO_IOW BUS_AB BUS_DB IOSR IOCR IODR CLK; FIRE M1"],fire_name:["svg_p:text3785-0-6-0-5-5"],draw_data:[[],["svg_p:path3805","svg_p:path3733"]],draw_name:[[],[]]};sim.poc.signals.IO_IE={name:"IO_IE",visible:true,type:"L",value:1,default_value:1,nbits:"1",behavior:["NOP","IO_CHK_I CLK INT INTV; FIRE C"],fire_name:[],draw_data:[[],[]],draw_name:[[],[]]};sim.poc.signals.INTA={name:"INTA",visible:true,type:"L",value:1,default_value:0,nbits:"1",behavior:["NOP","INTA CLK INT INTA BUS_DB INTV; FIRE M1; FIRE C"],fire_name:["svg_p:text3785-0-6-0-5-5-1-1"],draw_data:[[],["svg_p:path3807","svg_p:path3737"]],draw_name:[[],[]]};sim.poc.behaviors.IO_IOR={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.poc.states[s_expr[1]]);var iosr=get_value(sim.poc.states[s_expr[3]]);var iocr=get_value(sim.poc.states[s_expr[4]]);var iodr=get_value(sim.poc.states[s_expr[5]]);if(bus_ab==IOSR_ID)set_value(sim.poc.states[s_expr[2]],iosr);if(bus_ab==IOCR_ID)set_value(sim.poc.states[s_expr[2]],iocr);if(bus_ab==IODR_ID)set_value(sim.poc.states[s_expr[2]],iodr)},verbal:function(s_expr){var verbal="";var bus_ab=get_value(sim.poc.states[s_expr[1]]);var iosr=get_value(sim.poc.states[s_expr[3]]);var iocr=get_value(sim.poc.states[s_expr[4]]);var iodr=get_value(sim.poc.states[s_expr[5]]);if(bus_ab==IOSR_ID)verbal="I/O device read at IOSR of value "+iosr+". ";if(bus_ab==IOCR_ID)verbal="I/O device read at IOCR of value "+iocr+". ";if(bus_ab==IODR_ID)verbal="I/O device read at IODR of value "+iodr+". ";return verbal}};sim.poc.behaviors.IO_IOW={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.poc.states[s_expr[1]]);var bus_db=get_value(sim.poc.states[s_expr[2]]);if(bus_ab!=IOSR_ID&&bus_ab!=IOCR_ID&&bus_ab!=IODR_ID){return}if(bus_ab==IOSR_ID)set_value(sim.poc.states[s_expr[3]],bus_db);if(bus_ab==IOCR_ID)set_value(sim.poc.states[s_expr[4]],bus_db);if(bus_ab==IODR_ID)set_value(sim.poc.states[s_expr[5]],bus_db);var iocr_id=get_value(sim.poc.states[s_expr[4]]);var iodr_id=get_value(sim.poc.states[s_expr[5]]);if(iocr_id<0||iocr_id>7)return;set_var(sim.poc.internal_states.io_int_factory[iocr_id].period,iodr_id);set_var(sim.poc.internal_states.io_int_factory[iocr_id].probability,1);if(0==iodr_id)set_var(sim.poc.internal_states.io_int_factory[iocr_id].probability,0)},verbal:function(s_expr){var verbal="";var bus_ab=get_value(sim.poc.states[s_expr[1]]);var bus_db=get_value(sim.poc.states[s_expr[2]]);if(bus_ab==IOSR_ID)verbal="I/O device write at IOSR with value "+bus_db+". ";if(bus_ab==IOCR_ID)verbal="I/O device write at IOCR with value "+bus_db+". ";if(bus_ab==IODR_ID)verbal="I/O device write at IODR with value "+bus_db+". ";return verbal}};sim.poc.behaviors.IO_CHK_I={nparameters:4,types:["E","S","E"],operation:function(s_expr){var clk=get_value(sim.poc.states[s_expr[1]]);for(var i=sim.poc.internal_states.io_int_factory.length-1;i>=0;i--){if(get_var(sim.poc.internal_states.io_int_factory[i].period)==0)continue;if(get_var(sim.poc.internal_states.io_int_factory[i].active)==true){set_value(sim.poc.signals[s_expr[2]],1);set_value(sim.poc.states[s_expr[3]],i)}if(clk%get_var(sim.poc.internal_states.io_int_factory[i].period)==0){if(Math.random()>get_var(sim.poc.internal_states.io_int_factory[i].probability))continue;set_var(sim.poc.internal_states.io_int_factory[i].accumulated,get_var(sim.poc.internal_states.io_int_factory[i].accumulated)+1);set_var(sim.poc.internal_states.io_int_factory[i].active,true);if(typeof sim.poc.events.io[clk]=="undefined")sim.poc.events.io[clk]=[];sim.poc.events.io[clk].push(i);set_value(sim.poc.signals[s_expr[2]],1);set_value(sim.poc.states[s_expr[3]],i)}}},verbal:function(s_expr){return"Check I/O Interruption. "}};sim.poc.behaviors.INTA={nparameters:6,types:["E","S","S","E","E"],operation:function(s_expr){var clk=get_value(sim.poc.states[s_expr[1]]);if(typeof sim.poc.events.io[clk]!="undefined"){set_value(sim.poc.states[s_expr[4]],sim.poc.events.io[clk][0]);return}set_value(sim.poc.signals[s_expr[2]],0);set_value(sim.poc.states[s_expr[5]],0);for(var i=0;i>>0;set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_signal("L3DR"),1);compute_behavior("FIRE L3DR");value=get_value(simhw_sim_state("BUS_DB"));return value},set_value:function(elto,value){var associated_state=simhw_internalState_get("io_hash",elto);set_value(simhw_sim_state(associated_state),value);set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_state("BUS_DB"),value);set_value(simhw_sim_signal("L3DW"),1);compute_behavior("FIRE L3DW");return value}};sim.poc.internal_states.l3d_dim=4;sim.poc.internal_states.l3d_neltos=Math.pow(sim.poc.internal_states.l3d_dim,3);sim.poc.internal_states.l3d_state=Array.from({length:sim.poc.internal_states.l3d_neltos},(()=>({active:false})));sim.poc.internal_states.l3d_frame="0".repeat(sim.poc.internal_states.l3d_neltos);var L3DSR_ID=8448;var L3DCR_ID=8452;var L3DDR_ID=8456;sim.poc.internal_states.io_hash[L3DSR_ID]="L3DSR";sim.poc.internal_states.io_hash[L3DCR_ID]="L3DCR";sim.poc.internal_states.io_hash[L3DDR_ID]="L3DDR";sim.poc.states.L3DSR={name:"L3DSR",verbal:"L3D State Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.L3DCR={name:"L3DCR",verbal:"L3D Control Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.L3DDR={name:"L3DDR",verbal:"L3D Data Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.signals.L3D_IOR={name:"L3D_IOR",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","L3D_IOR BUS_AB BUS_DB L3DSR L3DCR L3DDR CLK; FIRE M1"],fire_name:["svg_p:tspan4173"],draw_data:[[],["svg_p:path3795","svg_p:path3733"]],draw_name:[[],[]]};sim.poc.signals.L3D_IOW={name:"L3D_IOW",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","L3D_IOW BUS_AB BUS_DB L3DSR L3DCR L3DDR CLK; FIRE M1; L3D_SYNC"],fire_name:["svg_p:text3785-0-6-0-5-5"],draw_data:[[],["svg_p:path3805","svg_p:path3733"]],draw_name:[[],[]]};sim.poc.behaviors.L3D_IOR={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.poc.states[s_expr[1]]);var iosr=get_value(sim.poc.states[s_expr[3]]);var iocr=get_value(sim.poc.states[s_expr[4]]);var iodr=get_value(sim.poc.states[s_expr[5]]);if(bus_ab==L3DCR_ID){set_value(sim.poc.states[s_expr[2]],iocr)}if(bus_ab==L3DDR_ID){set_value(sim.poc.states[s_expr[2]],iodr)}if(bus_ab==L3DCR_ID){var x=(iodr&4278190080)>>24;var y=(iodr&16711680)>>16;var z=(iodr&65280)>>8;var p=z*Math.pow(sim.poc.internal_states.l3d_dim,2)+y*sim.poc.internal_states.l3d_dim+x;var s=get_var(sim.poc.internal_states.l3d_state[p].active);set_value(sim.poc.states[s_expr[2]],s)}},verbal:function(s_expr){var verbal="";var bus_ab=get_value(sim.poc.states[s_expr[1]]);var iosr=get_value(sim.poc.states[s_expr[3]]);var iocr=get_value(sim.poc.states[s_expr[4]]);var iodr=get_value(sim.poc.states[s_expr[5]]);if(bus_ab==L3DSR_ID)verbal="I/O device read at L3DSR of value "+iosr+". ";if(bus_ab==L3DCR_ID)verbal="I/O device read at L3DCR of value "+iocr+". ";if(bus_ab==L3DDR_ID)verbal="I/O device read at L3DDR of value "+iodr+". ";return verbal}};sim.poc.behaviors.L3D_IOW={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.poc.states[s_expr[1]]);var bus_db=get_value(sim.poc.states[s_expr[2]]);if(bus_ab!=L3DSR_ID&&bus_ab!=L3DCR_ID&&bus_ab!=L3DDR_ID){return}if(bus_ab==L3DSR_ID){set_value(sim.poc.states[s_expr[3]],bus_db)}if(bus_ab==L3DDR_ID){set_value(sim.poc.states[s_expr[5]],bus_db)}if(bus_ab==L3DCR_ID){set_value(sim.poc.states[s_expr[4]],bus_db);var x=(bus_db&4278190080)>>24;var y=(bus_db&16711680)>>16;var z=(bus_db&65280)>>8;var p=z*Math.pow(sim.poc.internal_states.l3d_dim,2)+y*sim.poc.internal_states.l3d_dim+x;var s=(bus_db&255)!=0;var l3dstates=sim.poc.internal_states.l3d_state;set_var(l3dstates[p].active,s)}},verbal:function(s_expr){var verbal="";var bus_ab=get_value(sim.poc.states[s_expr[1]]);var bus_db=get_value(sim.poc.states[s_expr[2]]);if(bus_ab==L3DSR_ID)verbal="I/O device write at L3DSR with value "+bus_db+". ";if(bus_ab==L3DCR_ID)verbal="I/O device write at L3DCR with value "+bus_db+". ";if(bus_ab==L3DDR_ID)verbal="I/O device write at L3DDR with value "+bus_db+". ";return verbal}};sim.poc.behaviors.L3D_RESET={nparameters:1,operation:function(s_expr){sim.poc.events.l3d={};var n=sim.poc.internal_states.l3d_state.length;for(var i=0;i>>0;set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_signal("LEDMR"),1);compute_behavior("FIRE LEDMR");value=get_value(simhw_sim_state("BUS_DB"));return value},set_value:function(elto,value){var associated_state=simhw_internalState_get("io_hash",elto);set_value(simhw_sim_state(associated_state),value);set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_state("BUS_DB"),value);set_value(simhw_sim_signal("LEDMW"),1);compute_behavior("FIRE LEDMW");return value}};sim.poc.internal_states.ledm_dim=24;sim.poc.internal_states.ledm_neltos=Math.pow(sim.poc.internal_states.ledm_dim,2);sim.poc.internal_states.ledm_state=Array.from({length:sim.poc.internal_states.ledm_neltos},(()=>({color:0})));sim.poc.internal_states.ledm_colors=colors_clone("");sim.poc.internal_states.ledm_frame="0".repeat(sim.poc.internal_states.ledm_neltos);var LEDMSR_ID=12544;var LEDMCR_ID=12548;var LEDMDR_ID=12552;sim.poc.internal_states.io_hash[LEDMSR_ID]="LEDMSR";sim.poc.internal_states.io_hash[LEDMCR_ID]="LEDMCR";sim.poc.internal_states.io_hash[LEDMDR_ID]="LEDMDR";sim.poc.states.LEDMSR={name:"LEDMSR",verbal:"LEDM State Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.LEDMCR={name:"LEDMCR",verbal:"LEDM Control Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.LEDMDR={name:"LEDMDR",verbal:"LEDM Data Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.signals.LEDM_IOR={name:"LEDM_IOR",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","LEDM_IOR BUS_AB BUS_DB LEDMSR LEDMCR LEDMDR CLK; FIRE M1"],fire_name:["svg_p:tspan4173"],draw_data:[[],["svg_p:path3795","svg_p:path3733"]],draw_name:[[],[]]};sim.poc.signals.LEDM_IOW={name:"LEDM_IOW",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","LEDM_IOW BUS_AB BUS_DB LEDMSR LEDMCR LEDMDR CLK; FIRE M1; LEDM_SYNC"],fire_name:["svg_p:text3785-0-6-0-5-5"],draw_data:[[],["svg_p:path3805","svg_p:path3733"]],draw_name:[[],[]]};sim.poc.behaviors.LEDM_IOR={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.poc.states[s_expr[1]]);var iosr=get_value(sim.poc.states[s_expr[3]]);var iocr=get_value(sim.poc.states[s_expr[4]]);var iodr=get_value(sim.poc.states[s_expr[5]]);if(bus_ab==LEDMCR_ID){set_value(sim.poc.states[s_expr[2]],iocr)}if(bus_ab==LEDMDR_ID){set_value(sim.poc.states[s_expr[2]],iodr)}if(bus_ab==LEDMCR_ID){var x=(iodr&4278190080)>>24;var y=(iodr&16711680)>>16;var p=y*sim.poc.internal_states.ledm_dim+x;var s=get_var(sim.poc.internal_states.ledm_state[p].color);set_value(sim.poc.states[s_expr[2]],s)}},verbal:function(s_expr){var verbal="";var bus_ab=get_value(sim.poc.states[s_expr[1]]);var iosr=get_value(sim.poc.states[s_expr[3]]);var iocr=get_value(sim.poc.states[s_expr[4]]);var iodr=get_value(sim.poc.states[s_expr[5]]);if(bus_ab==LEDMSR_ID)verbal="I/O device read at LEDMSR of value "+iosr+". ";if(bus_ab==LEDMCR_ID)verbal="I/O device read at LEDMCR of value "+iocr+". ";if(bus_ab==LEDMDR_ID)verbal="I/O device read at LEDMDR of value "+iodr+". ";return verbal}};sim.poc.behaviors.LEDM_IOW={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.poc.states[s_expr[1]]);var bus_db=get_value(sim.poc.states[s_expr[2]]);switch(bus_ab){case LEDMSR_ID:set_value(sim.poc.states[s_expr[3]],bus_db);break;case LEDMDR_ID:set_value(sim.poc.states[s_expr[5]],bus_db);break;case LEDMCR_ID:set_value(sim.poc.states[s_expr[4]],bus_db);break;default:break}if(LEDMCR_ID==bus_ab){var dr=get_value(sim.poc.states[s_expr[5]]);if(16&bus_db){var x=(dr&4278190080)>>24;var y=(dr&16711680)>>16;var s=dr&255;set_value(sim.poc.states[s_expr[3]],1);if(x>=sim.poc.internal_states.ledm_dim&&y>=sim.poc.internal_states.ledm_dim){set_value(sim.poc.states[s_expr[3]],-1);return}var p=y*sim.poc.internal_states.ledm_dim+x;set_var(sim.poc.internal_states.ledm_state[p].color,s)}if(32&bus_db){set_value(sim.poc.states[s_expr[3]],1);var s=0;var neltos=sim.poc.internal_states.ledm_neltos;var ldmstates=sim.poc.internal_states.ledm_state;for(var p=0;p>0);set_var(sim.poc.internal_states.ledm_state[p+1].color,(s&65280)>>8);set_var(sim.poc.internal_states.ledm_state[p+2].color,(s&16711680)>>16);set_var(sim.poc.internal_states.ledm_state[p+3].color,(s&4278190080)>>24)}}if(64&bus_db){set_value(sim.poc.states[s_expr[3]],1);var s=0;var c="";var neltos=sim.poc.internal_states.ledm_colors.length;for(var p=0;p>>8;s=s.toString(16);c="#"+simcoreui_pack(s,6);sim.poc.internal_states.ledm_colors[p]=c}neltos=sim.poc.internal_states.ledm_neltos;for(var p=0;p>24;var y=(dr&16711680)>>16;var s=dr&255;verbal="I/O device write at LEDMCR with value "+bus_db+" (set pixel x:"+x+", y:"+y+", with color:"+s+"). "}if(64&bus_db){verbal="I/O device write at LEDMCR with value "+bus_db+" (set color palette at:"+bus_db+"). "}break;default:break}return verbal}};sim.poc.behaviors.LEDM_RESET={nparameters:1,operation:function(s_expr){sim.poc.events.ledm={};sim.poc.internal_states.ledm_colors=colors_clone("");for(var i=0;i>>0;if(value!=0){vec.CPU["R"+i]={type:"register",default_value:0,id:"R"+i,op:"=",value:"0x"+value.toString(16)}}}for(i=0;i>>0;if(value!=0){vec.CPU[internal_reg[i]]={type:"register",default_value:0,id:internal_reg[i],op:"=",value:"0x"+value.toString(16)}}}return vec},read_state:function(vec,check){if(typeof vec.CPU=="undefined"){vec.CPU={}}var key=check["id"].toUpperCase().trim();var val=parseInt(check["value"]).toString(16);if("REGISTER"==check["type"].toUpperCase().trim()){vec.CPU[key]={type:"register",default_value:0,id:key,op:check["condition"],value:"0x"+val};return true}return false},get_state:function(reg){var value=0;var r_reg=reg.toUpperCase().trim();if(typeof sim.rv.states["REG_"+r_reg]!="undefined"){value=get_value(sim.rv.states["REG_"+r_reg])>>>0;return"0x"+value.toString(16)}r_reg=r_reg.replace("R","");var index=parseInt(r_reg);if(typeof sim.rv.states.BR[index]!="undefined"){value=get_value(sim.rv.states.BR[index])>>>0;return"0x"+value.toString(16)}return null},get_value:function(elto){if(Number.isInteger(elto))index=elto;else index=parseInt(elto);if(isNaN(index))return get_value(simhw_sim_state(elto))>>>0;return get_value(simhw_sim_states().BR[index])>>>0},set_value:function(elto,value){var pc_name=simhw_sim_ctrlStates_get().pc.state;if(Number.isInteger(elto))index=elto;else index=parseInt(elto);if(isNaN(index)){set_value(simhw_sim_state(elto),value);if(pc_name===elto){show_asmdbg_pc()}return value}return set_value(simhw_sim_states().BR[index],value)}};sim.rv.ctrl_states.pc={name:"PC",state:"REG_PC",is_pointer:true};sim.rv.ctrl_states.sp={name:"SP",state:"BR.29",is_pointer:true};sim.rv.ctrl_states.fp={name:"FP",state:"BR.30",is_pointer:true};sim.rv.ctrl_states.ir={name:"IR",state:"REG_IR",default_eltos:{co:{begin:0,end:5,length:6},cop:{begin:28,end:31,length:4},oc:{begin:0,end:6,length:7},eoc:{type:2,bits:[[12,14],[25,31]],lengths:[3,7],length:10}},is_pointer:false};sim.rv.ctrl_states.mpc={name:"mPC",state:"REG_MICROADDR",is_pointer:false};sim.rv.internal_states.MC={};sim.rv.internal_states.ROM={};sim.rv.internal_states.FIRMWARE=ws_empty_firmware;sim.rv.internal_states.io_hash={};sim.rv.internal_states.fire_stack=[];sim.rv.internal_states.tri_state_names=[];sim.rv.internal_states.fire_visible={databus:false,internalbus:false};sim.rv.internal_states.filter_states=["REG_IR_DECO,col-12","REG_IR,col-auto","REG_PC,col-auto","REG_OUT,col-auto","REG_MICROADDR,col-auto"];sim.rv.internal_states.filter_signals=["CU,0","ALUOP,0","M1,0","M2,0","M3,0","M4,0","JUMP,0","PCWRITE,0","IMR,0","IRWRITE,0","RW,0","WOUT,0","DMR,0","DMW,0","WBE,0","SE,0"];sim.rv.internal_states.alu_flags={flag_n:0,flag_z:0};sim.rv.states.BR=[];sim.rv.states.BR[0]={name:"R0",verbal:"Register 0",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states.BR[1]={name:"R1",verbal:"Register 1",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states.BR[2]={name:"R2",verbal:"Register 2",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states.BR[3]={name:"R3",verbal:"Register 3",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states.BR[4]={name:"R4",verbal:"Register 4",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states.BR[5]={name:"R5",verbal:"Register 5",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states.BR[6]={name:"R6",verbal:"Register 6",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states.BR[7]={name:"R7",verbal:"Register 7",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states.BR[8]={name:"R8",verbal:"Register 8",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states.BR[9]={name:"R9",verbal:"Register 9",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states.BR[10]={name:"R10",verbal:"Register 10",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states.BR[11]={name:"R11",verbal:"Register 11",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states.BR[12]={name:"R12",verbal:"Register 12",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states.BR[13]={name:"R13",verbal:"Register 13",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states.BR[14]={name:"R14",verbal:"Register 14",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states.BR[15]={name:"R15",verbal:"Register 15",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states.BR[16]={name:"R16",verbal:"Register 16",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states.BR[17]={name:"R17",verbal:"Register 17",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states.BR[18]={name:"R18",verbal:"Register 18",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states.BR[19]={name:"R19",verbal:"Register 19",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states.BR[20]={name:"R20",verbal:"Register 20",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states.BR[21]={name:"R21",verbal:"Register 21",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states.BR[22]={name:"R22",verbal:"Register 22",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states.BR[23]={name:"R23",verbal:"Register 23",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states.BR[24]={name:"R24",verbal:"Register 24",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states.BR[25]={name:"R25",verbal:"Register 25",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states.BR[26]={name:"R26",verbal:"Register 26",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states.BR[27]={name:"R27",verbal:"Register 27",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states.BR[28]={name:"R28",verbal:"Register 28",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states.BR[29]={name:"R29",verbal:"Register 29",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states.BR[30]={name:"R30",verbal:"Register 30",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states.BR[31]={name:"R31",verbal:"Register 31",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states["REG_PC"]={name:"PC",verbal:"Program Counter Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states["REG_IR"]={name:"IR",verbal:"Instruction Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states["REG_OUT"]={name:"OUT",verbal:"Out Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states["M4_PC"]={name:"M4_PC",verbal:"Input PCWrite via M4",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states["RDATA"]={name:"RDATA",verbal:"Read data form Instruction Memory (Input Instruction Register via Instruction Memory)",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states["M2_ALU"]={name:"M2_ALU",verbal:"Input ALU via M2",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states["M3_ALU"]={name:"M3_ALU",verbal:"Input ALU via M3",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states["ALU_WOUT"]={name:"ALU_WOUT",verbal:"Input of OUT Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states["FLAG_N"]={name:"FLAG_N",verbal:"Negative Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.rv.states["FLAG_Z"]={name:"FLAG_Z",verbal:"Zero Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.rv.states["REG_MICROADDR"]={name:"µADDR",verbal:"Microaddress Register",visible:true,nbits:"12",value:0,default_value:0,draw_data:[]};sim.rv.states["REG_MICROINS"]={name:"µINS",verbal:"Microinstruction Register",visible:true,nbits:"77",value:{},default_value:{},draw_data:[]};sim.rv.states["FETCH"]={name:"FETCH",verbal:"Input Fetch",visible:false,nbits:"12",value:0,default_value:0,draw_data:[]};sim.rv.states["ROM_MUXA"]={name:"ROM_MUXA",verbal:"Input ROM",visible:false,nbits:"12",value:0,default_value:0,draw_data:[]};sim.rv.states["MUXA_MICROADDR"]={name:"MUXA_MICROADDR",verbal:"Input microaddress",visible:false,nbits:"12",value:0,default_value:0,draw_data:[]};sim.rv.states["MUXC_MUXB"]={name:"MUXC_MUXB",verbal:"Output of MUX C",visible:false,nbits:"1",value:0,default_value:0,draw_data:[]};sim.rv.states["INEX"]={name:"INEX",verbal:"Illegal Instruction Exception",visible:false,nbits:"1",value:0,default_value:0,draw_data:[]};sim.rv.states["DM_BS"]={name:"DM_BS",verbal:"From Data Memory to Byte/Word Selector",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states["BS_M1"]={name:"BS_M1",verbal:"From Byte/Word Selector to Mux 1",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states["VAL_ZERO"]={name:"VAL_ZERO",verbal:"Wired Zero",visible:false,nbits:"1",value:0,default_value:0,draw_data:[]};sim.rv.states["VAL_ONE"]={name:"VAL_ONE",verbal:"Wired One",visible:false,nbits:"32",value:1,default_value:1,draw_data:[]};sim.rv.states["VAL_FOUR"]={name:"VAL_FOUR",verbal:"Wired Four",visible:false,nbits:"32",value:4,default_value:4,draw_data:[]};sim.rv.states["VAL_IMM"]={name:"VAL_IMM",verbal:"Immediate Value Generator",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states["REG_IR_DECO"]={name:"IR_DECO",verbal:"Instruction Decoded",visible:true,nbits:"0",value:0,default_value:0,draw_data:[]};sim.rv.states["DECO_INS"]={name:"DECO_INS",verbal:"Instruction decoded in binary",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states["CLK"]={name:"CLK",verbal:"Clock",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states["ACC_TIME"]={name:"ACC_TIME",verbal:"Accumulated CPU time",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states["TTCPU"]={name:"TTCPU",verbal:"Several Tristates to the internal data bus in CPU activated",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states["ACC_PWR"]={name:"ACC_PWR",verbal:"Accumulated Energy Consumption",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.signals["CU"]={name:"CU",visible:true,type:"L",value:0,default_value:0,nbits:"3",behavior:["PLUS1 MUXA_MICROADDR REG_MICROADDR","CP_FIELD MUXA_MICROADDR REG_MICROINS/MADDR","MV MUXA_MICROADDR ROM_MUXA","MV MUXA_MICROADDR FETCH","JUMP_MADDR_N MUXA_MICROADDR REG_MICROINS/MADDR REG_MICROADDR 0","JUMP_MADDR_N MUXA_MICROADDR REG_MICROINS/MADDR REG_MICROADDR 1","JUMP_MADDR_Z MUXA_MICROADDR REG_MICROINS/MADDR REG_MICROADDR 0","JUMP_MADDR_Z MUXA_MICROADDR REG_MICROINS/MADDR REG_MICROADDR 1"],depends_on:["CLK"],fire_name:["svg_p:text7417"],draw_data:[["svg_p:path7391","svg_p:path7393","svg_p:path7395","svg_p:path7397","svg_p:path7399","svg_p:path7401"]],draw_name:[["svg_p:path7357","svg_p:path7329","svg_p:path7331"]]};sim.rv.signals["PCWRITE"]={name:"PCWRITE",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","LOAD REG_PC M4_PC; UPDATEDPC"],fire_name:["svg_p:text7155"],draw_data:[[]],draw_name:[["svg_p:path7145","svg_p:path7125","svg_p:path7127"]]};sim.rv.signals["JUMP"]={name:"JUMP",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","LOAD_J REG_PC M4_PC; UPDATEDPC_J"],fire_name:["svg_p:text7173"],draw_data:[[]],draw_name:[["svg_p:path7133","svg_p:path7143","svg_p:path7147","svg_p:path7135"]]};sim.rv.signals["IRWRITE"]={name:"IRWRITE",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","LOAD REG_IR RDATA; DECO"],fire_name:["svg_p:text7309"],draw_data:[["svg_p:path6711","svg_p_path:6713","svg_p:path6981","svg_p:path6903","svg_p:path6905"]],draw_name:[["svg_p:path7301"]]};sim.rv.signals["SIZE"]={name:"SIZE",visible:true,type:"L",value:0,default_value:0,nbits:"5",behavior:["NOP"],fire_name:[],draw_data:[[]],draw_name:[[]]};sim.rv.signals["GEN_IMM"]={name:"GEN_IMM",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","MBITS VAL_IMM 0 REG_IR OFFSET SIZE 0 SE_IMM"],fire_name:[],draw_data:[[]],draw_name:[[]]};sim.rv.signals["OFFSET"]={name:"OFFSET",visible:true,type:"L",value:0,default_value:0,nbits:"5",behavior:["NOP"],fire_name:[],draw_data:[[]],draw_name:[[]]};sim.rv.signals["SE_IMM"]={name:"SE",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","NOP"],fire_name:[],draw_data:[[]],draw_name:[[]]};sim.rv.signals["WOUT"]={name:"WOUT",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","LOAD REG_OUT ALU_WOUT"],fire_name:["svg_p:text7279"],draw_data:[["svg_p:path6837","svg_p:path6839"]],draw_name:[["svg_p:path7271"]]};sim.rv.signals["IMR"]={name:"IMR",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","READ_IM"],fire_name:["svg_p:text7213"],draw_data:[["svg_p:path6691","svg_p:path6693"]],draw_name:[["svg_p:path7205"]]};sim.rv.signals["REG_R1"]={name:"REG_R1",visible:true,type:"L",value:0,default_value:15,nbits:"5",behavior:["NOP"],fire_name:[],draw_data:[[]],draw_name:[[]]};sim.rv.signals["REG_R2"]={name:"REG_R2",visible:true,type:"L",value:0,default_value:20,nbits:"5",behavior:["NOP"],fire_name:[],draw_data:[[]],draw_name:[[]]};sim.rv.signals["REG_W2"]={name:"REG_W2",visible:true,type:"L",value:0,default_value:7,nbits:"5",behavior:["NOP"],fire_name:[],draw_data:[[]],draw_name:[[]]};sim.rv.states["M1_RW"]={name:"M1_RW",verbal:"Input Register File via M1",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states["W_DATA"]={name:"W_DATA",verbal:"Write Data",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states["R_DATA1"]={name:"R_DATA1",verbal:"Read Data 1",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.states["R_DATA2"]={name:"R_DATA2",verbal:"Read Data 2",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.rv.signals["RW"]={name:"RW",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["MBIT_SN REG_R1 REG_IR REG_MICROINS/REG_R1 5; GET R_DATA1 BR REG_R1; MBIT_SN REG_R2 REG_IR REG_MICROINS/REG_R2 5; GET R_DATA2 BR REG_R2","MBIT_SN REG_W2 REG_IR REG_MICROINS/REG_W2 5; SET BR REG_W2 M1_RW"],fire_name:["svg_p:text7299"],draw_data:[["svg_p:path6725","svg_p:path6727","svg_p:path6729","svg_p:path6731","svg_p:path6733","svg_p:path6735","svg_p:path6915","svg_p:path6913","svg_p:path6907","svg_p:path6909"]],draw_name:[["svg_p:path7291"]]};sim.rv.signals["M2"]={name:"M2",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV M2_ALU REG_PC; FIRE ALUOP","MV M2_ALU R_DATA1; FIRE ALUOP"],depends_on:["ALUOP"],fire_name:["svg_p:text7229"],draw_data:[["svg_p:path6691-3","svg_p:path6987","svg_p:path6989","svg_p:path6983","svg_p:path6991","svg_p:path6775","svg_p:path6777"],["svg_p:path6779","svg_p:path6781"]],draw_name:[[],["svg_p:path7199"]]};sim.rv.signals["M3"]={name:"M3",visible:true,type:"L",value:0,default_value:0,nbits:"2",behavior:["MV M3_ALU R_DATA2; FIRE ALUOP","MV M3_ALU VAL_FOUR; FIRE ALUOP","MV M3_ALU VAL_IMM; FIRE ALUOP","NOP"],fire_name:["svg_p:text7237"],depends_on:["ALUOP"],draw_data:[["svg_p:path6821","svg_p:path6823"],["svg_p:path7001","svg_p:path7003"],["svg_p:path7015","svg_p:path7013","svg_p:path6825","svg_p:path6827"]],draw_name:[[],["svg_p:path7197"]]};sim.rv.signals["M4"]={name:"M4",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV M4_PC REG_OUT","MV M4_PC ALU_WOUT"],depends_on:["PCWRITE"],fire_name:["svg_p:text7289"],draw_data:[["svg_p:path7075","svg_p:path7043","svg_p:path7045","svg_p:path7047","svg_p:path7123","svg_p:path7121","svg_p:path7041","svg_p:path7039","svg_p:path7035","svg_p:path7037"],["svg_p:path6837-6","svg_p:path7073","svg_p:path7115","svg_p:path7117","svg_p:path7119","svg_p:path7123","svg_p:path7121","svg_p:path7041","svg_p:path7039","svg_p:path7035","svg_p:path7037"]],draw_name:[[],["svg_p:path7281"]]};sim.rv.signals["ALUOP"]={name:"ALUOP",visible:true,type:"L",value:0,default_value:0,nbits:"5",behavior:["NOP_ALU; UPDATE_NZ","AND ALU_WOUT M2_ALU M3_ALU; UPDATE_NZ","OR ALU_WOUT M2_ALU M3_ALU; UPDATE_NZ","NOT ALU_WOUT M2_ALU; UPDATE_NZ","XOR ALU_WOUT M2_ALU M3_ALU; UPDATE_NZ","SRL ALU_WOUT M2_ALU; UPDATE_NZ","SRA ALU_WOUT M2_ALU; UPDATE_NZ","SL ALU_WOUT M2_ALU; UPDATE_NZ","RR ALU_WOUT M2_ALU; UPDATE_NZ","RL ALU_WOUT M2_ALU; UPDATE_NZ","ADD ALU_WOUT M2_ALU M3_ALU; UPDATE_NZ","SUB ALU_WOUT M2_ALU M3_ALU; UPDATE_NZ","MUL ALU_WOUT M2_ALU M3_ALU; UPDATE_NZ","DIV ALU_WOUT M2_ALU M3_ALU; UPDATE_NZ","MOD ALU_WOUT M2_ALU M3_ALU; UPDATE_NZ","LUI ALU_WOUT M2_ALU; UPDATE_NZ","ADDU ALU_WOUT M2_ALU M3_ALU; UPDATE_NZ","SUBU ALU_WOUT M2_ALU M3_ALU; UPDATE_NZ","MULU ALU_WOUT M2_ALU M3_ALU; UPDATE_NZ","DIVU ALU_WOUT M2_ALU M3_ALU; UPDATE_NZ","NOP_ALU","NOP_ALU","NOP_ALU","NOP_ALU","NOP_ALU","NOP_ALU","NOP_ALU","NOP_ALU","NOP_ALU","NOP_ALU","MV ALU_WOUT M2_ALU; UPDATE_NZ","MV ALU_WOUT M3_ALU; UPDATE_NZ"],fire_name:["svg_p:text7269"],draw_data:[["svg_p:path6845","svg_p:path6847","svg_p:path6841","svg_p:path6843"]],draw_name:[["svg_p:path7249"]]};sim.rv.signals.DMR={name:"DMR",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV DM_BS REG_OUT; FIRE WBE","MEM_READ M3_ALU DM_BS WBE CLK; FIRE WBE"],fire_name:["svg_p:text7589","svg_p:text7507"],draw_data:[[],["svg_p:path7525","svg_p:path6841-5","svg_p:path7577","svg_p:path7619","svg_p:path7623","svg_p:path7625","svg_p:path7571","svg_p:path7573"]],draw_name:[[],[]]};sim.rv.signals.DMW={name:"DMW",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","MEM_WRITE M3_ALU DM_BS WBE CLK"],fire_name:["svg_p:text7597","svg_p:text7515"],draw_data:[[],["svg_p:path7527","svg_p:path6841-5","svg_p:path7577","svg_p:path7619","svg_p:path7623","svg_p:path7625","svg_p:path7571","svg_p:path7573"]],draw_name:[[],[]]};sim.rv.signals["WBE"]={name:"WBE",visible:false,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV BS_M1 DM_BS","BWSEL BS_M1 DM_BS SE"],depends_on:["RW"],fire_name:["svg_p:text7555","svg_p:text7433"],draw_data:[["svg_p:path7075-2","svg_p:path7043-6","svg_p:path7203","svg_p:path7579","svg_p:path7581","svg_p:path7567","svg_p:path7569","svg_p:path7421","svg_p:path7423"]],draw_name:[["svg_p:path7529","svg_p:path7425"]]};sim.rv.signals["SE"]={name:"SE",visible:true,type:"L",value:0,default_value:0,nbits:"1",verbal:["If WBE is enabled, set the 24 superior bits of Word to 0.","If WBE is enabled, extend byte sign to Word."],behavior:["NOP","NOP"],fire_name:["svg_p:text7453"],draw_data:[[]],draw_name:[["svg_p:path7445"]]};sim.rv.signals["M1"]={name:"M1",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV M1_RW BS_M1","MV M1_RW FLAG_N"],depends_on:["RW"],fire_name:["svg_p:text7221"],draw_data:[["svg_p:path7021","svg_p:path7023","svg_p:path7565","svg_p:path6911","svg_p:path6895","svg_p:path6897"],["svg_p:path7621","svg_p:path7025","svg_p:path7017","svg_p:path7019","svg_p:path6899","svg_p:path6901"]],draw_name:[[],["svg_p:path7195"]]};sim.rv.signals["TEST_N"]={name:"TEST_N",visible:true,type:"L",value:0,default_value:0,nbits:"1",forbidden:true,behavior:["MV FLAG_N VAL_ZERO","MV FLAG_N VAL_ONE"],depends_on:["ALUOP"],fire_name:["svg_p:text7607","svg_p:text7185"],draw_data:[["svg_p:path7251"]],draw_name:[["svg_p:path7157"]]};sim.rv.signals["TEST_Z"]={name:"TEST_Z",visible:true,type:"L",value:0,default_value:0,nbits:"1",forbidden:true,behavior:["MV FLAG_Z VAL_ZERO","MV FLAG_Z VAL_ONE"],depends_on:["ALUOP"],fire_name:["svg_p:text7615","svg_p:text7193"],draw_data:[["svg_p:path7617"]],draw_name:[["svg_p:path7165"]]};sim.rv.behaviors["NOP"]={nparameters:1,operation:function(s_expr){},verbal:function(s_expr){return""}};sim.rv.behaviors["NOP_ALU"]={nparameters:1,operation:function(s_expr){sim.rv.internal_states.alu_flags.flag_n=0;sim.rv.internal_states.alu_flags.flag_z=0},verbal:function(s_expr){return""}};sim.rv.behaviors["MV"]={nparameters:3,types:["X","X"],operation:function(s_expr){sim_elto_org=get_reference(s_expr[2]);sim_elto_dst=get_reference(s_expr[1]);newval=get_value(sim_elto_org);set_value(sim_elto_dst,newval)},verbal:function(s_expr){var sim_elto_org=get_reference(s_expr[2]);var newval=get_value(sim_elto_org);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy from "+show_verbal(s_expr[2])+" to "+show_verbal(s_expr[1])+" value "+show_value(newval)+". "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[2])+" ("+show_value(newval)+"). "}};sim.rv.behaviors["LOAD"]={nparameters:3,types:["X","X"],operation:function(s_expr){var sim_elto_org=get_reference(s_expr[2]);var sim_elto_dst=get_reference(s_expr[1]);var newval=get_value(sim_elto_org);set_value(sim_elto_dst,newval)},verbal:function(s_expr){var sim_elto_org=get_reference(s_expr[2]);var newval=get_value(sim_elto_org);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Load from "+show_verbal(s_expr[2])+" to "+show_verbal(s_expr[1])+" value "+show_value(newval)+". "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[2])+" ("+show_value(newval)+"). "}};sim.rv.behaviors["LOAD_J"]={nparameters:3,types:["X","X"],operation:function(s_expr){if(!get_value(sim.rv.states["FLAG_N"])&&!get_value(sim.rv.states["FLAG_Z"])){return}var sim_elto_org=get_reference(s_expr[2]);var sim_elto_dst=get_reference(s_expr[1]);var newval=get_value(sim_elto_org);set_value(sim_elto_dst,newval)},verbal:function(s_expr){var sim_elto_org=get_reference(s_expr[2]);var sim_elto_dst=get_reference(s_expr[1]);var newval=get_value(sim_elto_org);return"Jump if N or Z (new value is '"+newval+"' )"}};sim.rv.behaviors["CP_FIELD"]={nparameters:3,types:["X","X"],operation:function(s_expr){r=s_expr[2].split("/");sim_elto_org=get_reference(r[0]);newval=get_value(sim_elto_org);newval=newval[r[1]];if(typeof newval!="undefined"){sim_elto_dst=get_reference(s_expr[1]);set_value(sim_elto_dst,newval)}},verbal:function(s_expr){var newval=0;var r=s_expr[2].split("/");var sim_elto_org=get_reference(r[0]);var sim_elto_dst=get_reference(r[1]);if(typeof sim_elto_dst=="undefined")sim_elto_dst={};if(typeof sim_elto_org.value[r[1]]!="undefined")newval=sim_elto_org.value[r[1]];else if(typeof sim_elto_dst.default_value!="undefined")newval=sim_elto_dst.default_value;else newval="<undefined>";var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy from Field "+r[1]+" of "+show_verbal(r[0])+" to "+show_verbal(s_expr[1])+" value "+newval+". "}return show_verbal(s_expr[1])+" = "+show_verbal(r[0])+"."+r[1]+" ("+newval+"). "}};sim.rv.behaviors["JUMP_MADDR_N"]={nparameters:5,types:["X","X","E","I"],operation:function(s_expr){if(get_value(sim.rv.states["FLAG_N"])!=parseInt(s_expr[4])){var a=get_value(sim.rv.states[s_expr[3]])<<0;var result=a+1;set_value(sim.rv.states[s_expr[1]],result>>>0)}else{r=s_expr[2].split("/");sim_elto_org=get_reference(r[0]);newval=get_value(sim_elto_org);newval=newval[r[1]];if(typeof newval!="undefined"){sim_elto_dst=get_reference(s_expr[1]);set_value(sim_elto_dst,newval)}}},verbal:function(s_expr){if(parseInt(s_expr[4])){return"Jump to REG_MICROINS/MADDR if Flag N = 1."}else{return"Jump to REG_MICROINS/MADDR if Flag N = 0."}}};sim.rv.behaviors["JUMP_MADDR_Z"]={nparameters:5,types:["X","X","E","I"],operation:function(s_expr){if(get_value(sim.rv.states["FLAG_Z"])!=parseInt(s_expr[4])){var a=get_value(sim.rv.states[s_expr[3]])<<0;var result=a+1;set_value(sim.rv.states[s_expr[1]],result>>>0)}else{r=s_expr[2].split("/");sim_elto_org=get_reference(r[0]);newval=get_value(sim_elto_org);newval=newval[r[1]];if(typeof newval!="undefined"){sim_elto_dst=get_reference(s_expr[1]);set_value(sim_elto_dst,newval)}}},verbal:function(s_expr){if(parseInt(s_expr[4])){return"Jump to REG_MICROINS/MADDR if Flag Z = 1."}else{return"Jump to REG_MICROINS/MADDR if Flag Z = 0."}}};sim.rv.behaviors["NOT_ES"]={nparameters:3,types:["S","E"],operation:function(s_expr){set_value(sim.rv.signals[s_expr[1]],Math.abs(get_value(sim.rv.states[s_expr[2]])-1))},verbal:function(s_expr){var value=Math.abs(get_value(sim.rv.states[s_expr[2]])-1);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Set "+show_verbal(s_expr[1])+" with value "+show_value(value)+" (Logical NOT of "+s_expr[2]+"). "}return show_verbal(s_expr[1])+" = "+show_value(value)+" (Logical NOT "+s_expr[2]+"). "}};sim.rv.behaviors["GET"]={nparameters:4,types:["E","E","S"],operation:function(s_expr){set_value(sim.rv.states[s_expr[1]],get_value(sim.rv.states[s_expr[2]][sim.rv.signals[s_expr[3]].value]))},verbal:function(s_expr){var value=get_value(sim.rv.states[s_expr[2]][sim.rv.signals[s_expr[3]].value]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Set "+show_verbal(s_expr[1])+" with value "+show_value(value)+" (Register File "+s_expr[3]+"). "}return show_verbal(s_expr[1])+" = "+show_value(value)+" (Register File "+s_expr[3]+"). "}};sim.rv.behaviors["SET"]={nparameters:4,types:["E","S","E"],operation:function(s_expr){set_value(sim.rv.states[s_expr[1]][sim.rv.signals[s_expr[2]].value],get_value(sim.rv.states[s_expr[3]]))},verbal:function(s_expr){var value=get_value(sim.rv.states[s_expr[3]]);var o_ref=sim.rv.states[s_expr[1]][sim.rv.signals[s_expr[2]].value];var o_verbal=o_ref.name;if(typeof o_ref.verbal!="undefined")o_verbal=o_ref.verbal;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy to "+o_verbal+" the value "+show_value(value)+". "}return o_verbal+" = "+show_value(value)+". "}};sim.rv.behaviors["AND"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var result=get_value(sim.rv.states[s_expr[2]])&get_value(sim.rv.states[s_expr[3]]);set_value(sim.rv.states[s_expr[1]],result>>>0);sim.rv.internal_states.alu_flags.flag_n=result<0?1:0;sim.rv.internal_states.alu_flags.flag_z=result==0?1:0},verbal:function(s_expr){var result=get_value(sim.rv.states[s_expr[2]])&get_value(sim.rv.states[s_expr[3]]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU AND with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (AND). "}};sim.rv.behaviors["OR"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var result=get_value(sim.rv.states[s_expr[2]])|get_value(sim.rv.states[s_expr[3]]);set_value(sim.rv.states[s_expr[1]],result>>>0);sim.rv.internal_states.alu_flags.flag_n=result<0?1:0;sim.rv.internal_states.alu_flags.flag_z=result==0?1:0},verbal:function(s_expr){var result=get_value(sim.rv.states[s_expr[2]])|get_value(sim.rv.states[s_expr[3]]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU OR with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (OR). "}};sim.rv.behaviors["NOT"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=~get_value(sim.rv.states[s_expr[2]]);set_value(sim.rv.states[s_expr[1]],result>>>0);sim.rv.internal_states.alu_flags.flag_n=result<0?1:0;sim.rv.internal_states.alu_flags.flag_z=result==0?1:0},verbal:function(s_expr){var result=~get_value(sim.rv.states[s_expr[2]]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU NOT with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (NOT). "}};sim.rv.behaviors["XOR"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var result=get_value(sim.rv.states[s_expr[2]])^get_value(sim.rv.states[s_expr[3]]);set_value(sim.rv.states[s_expr[1]],result>>>0);sim.rv.internal_states.alu_flags.flag_n=result<0?1:0;sim.rv.internal_states.alu_flags.flag_z=result==0?1:0},verbal:function(s_expr){var result=get_value(sim.rv.states[s_expr[2]])^get_value(sim.rv.states[s_expr[3]]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU XOR with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (XOR). "}};sim.rv.behaviors["SRL"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.rv.states[s_expr[2]])>>>1;set_value(sim.rv.states[s_expr[1]],result>>>0);sim.rv.internal_states.alu_flags.flag_n=result<0?1:0;sim.rv.internal_states.alu_flags.flag_z=result==0?1:0},verbal:function(s_expr){var result=get_value(sim.rv.states[s_expr[2]])>>>1;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Shift Right Logical with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (SRL). "}};sim.rv.behaviors["SRA"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.rv.states[s_expr[2]])>>1;set_value(sim.rv.states[s_expr[1]],result>>>0);sim.rv.internal_states.alu_flags.flag_n=result<0?1:0;sim.rv.internal_states.alu_flags.flag_z=result==0?1:0},verbal:function(s_expr){var result=get_value(sim.rv.states[s_expr[2]])>>1;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Shift Right Arithmetic with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (SRA). "}};sim.rv.behaviors["SL"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.rv.states[s_expr[2]])<<1;set_value(sim.rv.states[s_expr[1]],result>>>0);sim.rv.internal_states.alu_flags.flag_n=result<0?1:0;sim.rv.internal_states.alu_flags.flag_z=result==0?1:0},verbal:function(s_expr){var result=get_value(sim.rv.states[s_expr[2]])<<1;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Shift Left with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (SL). "}};sim.rv.behaviors["RR"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.rv.states[s_expr[2]])>>>1|(get_value(sim.rv.states[s_expr[2]])&1)<<31;set_value(sim.rv.states[s_expr[1]],result>>>0);sim.rv.internal_states.alu_flags.flag_n=result<0?1:0;sim.rv.internal_states.alu_flags.flag_z=result==0?1:0},verbal:function(s_expr){var result=get_value(sim.rv.states[s_expr[2]])>>>1|(get_value(sim.rv.states[s_expr[2]])&1)<<31;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Right Rotation with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (RR). "}};sim.rv.behaviors["RL"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.rv.states[s_expr[2]])<<1|(get_value(sim.rv.states[s_expr[2]])&2147483648)>>>31;set_value(sim.rv.states[s_expr[1]],result>>>0);sim.rv.internal_states.alu_flags.flag_n=result<0?1:0;sim.rv.internal_states.alu_flags.flag_z=result==0?1:0},verbal:function(s_expr){var result=get_value(sim.rv.states[s_expr[2]])<<1|(get_value(sim.rv.states[s_expr[2]])&2147483648)>>>31;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Left Rotation with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (LR). "}};sim.rv.behaviors["ADD"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.rv.states[s_expr[2]])<<0;var b=get_value(sim.rv.states[s_expr[3]])<<0;var result=a+b;set_value(sim.rv.states[s_expr[1]],result>>>0);sim.rv.internal_states.alu_flags.flag_n=result<0?1:0;sim.rv.internal_states.alu_flags.flag_z=result==0?1:0},verbal:function(s_expr){var a=get_value(sim.rv.states[s_expr[2]])<<0;var b=get_value(sim.rv.states[s_expr[3]])<<0;var result=a+b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU ADD with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (ADD). "}};sim.rv.behaviors["SUB"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.rv.states[s_expr[2]])<<0;var b=get_value(sim.rv.states[s_expr[3]])<<0;var result=a-b;set_value(sim.rv.states[s_expr[1]],result>>>0);sim.rv.internal_states.alu_flags.flag_n=result<0?1:0;sim.rv.internal_states.alu_flags.flag_z=result==0?1:0},verbal:function(s_expr){var a=get_value(sim.rv.states[s_expr[2]])<<0;var b=get_value(sim.rv.states[s_expr[3]])<<0;var result=a-b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU SUB with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (SUB). "}};sim.rv.behaviors["MUL"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.rv.states[s_expr[2]])<<0;var b=get_value(sim.rv.states[s_expr[3]])<<0;var result=a*b;set_value(sim.rv.states[s_expr[1]],result>>>0);sim.rv.internal_states.alu_flags.flag_n=result<0?1:0;sim.rv.internal_states.alu_flags.flag_z=result==0?1:0},verbal:function(s_expr){var a=get_value(sim.rv.states[s_expr[2]])<<0;var b=get_value(sim.rv.states[s_expr[3]])<<0;var result=a*b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU MUL with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (MUL). "}};sim.rv.behaviors["DIV"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.rv.states[s_expr[2]])<<0;var b=get_value(sim.rv.states[s_expr[3]])<<0;if(0==b){set_value(sim.rv.states[s_expr[1]],0);sim.rv.internal_states.alu_flags.flag_n=0;sim.rv.internal_states.alu_flags.flag_z=1;return}var result=Math.floor(a/b);set_value(sim.rv.states[s_expr[1]],result);sim.rv.internal_states.alu_flags.flag_n=result<0?1:0;sim.rv.internal_states.alu_flags.flag_z=result==0?1:0},verbal:function(s_expr){var a=get_value(sim.rv.states[s_expr[2]])<<0;var b=get_value(sim.rv.states[s_expr[3]])<<0;if(0==b){return"ALU DIV zero by zero (oops!). "}var result=Math.floor(a/b);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU DIV with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (DIV). "}};sim.rv.behaviors["MOD"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.rv.states[s_expr[2]])<<0;var b=get_value(sim.rv.states[s_expr[3]])<<0;if(0==b){set_value(sim.rv.states[s_expr[1]],0);sim.rv.internal_states.alu_flags.flag_n=0;sim.rv.internal_states.alu_flags.flag_z=1;return}var result=a%b;set_value(sim.rv.states[s_expr[1]],result);sim.rv.internal_states.alu_flags.flag_n=result<0?1:0;sim.rv.internal_states.alu_flags.flag_z=result==0?1:0},verbal:function(s_expr){var a=get_value(sim.rv.states[s_expr[2]])<<0;var b=get_value(sim.rv.states[s_expr[3]])<<0;if(0==b){return"ALU MOD zero by zero (oops!). "}var result=a%b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU MOD with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (MOD). "}};sim.rv.behaviors["LUI"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.rv.states[s_expr[2]])<<16;set_value(sim.rv.states[s_expr[1]],result);sim.rv.internal_states.alu_flags.flag_n=result<0?1:0;sim.rv.internal_states.alu_flags.flag_z=result==0?1:0},verbal:function(s_expr){var result=get_value(sim.rv.states[s_expr[2]])<<16;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Load Upper Immediate with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (LUI). "}};sim.rv.behaviors["ADDU"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.rv.states[s_expr[2]])>>>0;var b=get_value(sim.rv.states[s_expr[3]])>>>0;var result=a+b;set_value(sim.rv.states[s_expr[1]],result>>>0);sim.rv.internal_states.alu_flags.flag_n=result<0?1:0;sim.rv.internal_states.alu_flags.flag_z=result==0?1:0},verbal:function(s_expr){var a=get_value(sim.rv.states[s_expr[2]])>>>0;var b=get_value(sim.rv.states[s_expr[3]])>>>0;var result=a+b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU ADDU with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (ADDU). "}};sim.rv.behaviors["SUBU"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.rv.states[s_expr[2]])>>>0;var b=get_value(sim.rv.states[s_expr[3]])>>>0;var result=a-b;set_value(sim.rv.states[s_expr[1]],result>>>0);sim.rv.internal_states.alu_flags.flag_n=result<0?1:0;sim.rv.internal_states.alu_flags.flag_z=result==0?1:0},verbal:function(s_expr){var a=get_value(sim.rv.states[s_expr[2]])>>>0;var b=get_value(sim.rv.states[s_expr[3]])>>>0;var result=a-b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU SUBU with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (SUBU). "}};sim.rv.behaviors["MULU"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.rv.states[s_expr[2]])>>>0;var b=get_value(sim.rv.states[s_expr[3]])>>>0;var result=a*b;set_value(sim.rv.states[s_expr[1]],result>>>0);sim.rv.internal_states.alu_flags.flag_n=result<0?1:0;sim.rv.internal_states.alu_flags.flag_z=result==0?1:0},verbal:function(s_expr){var a=get_value(sim.rv.states[s_expr[2]])>>>0;var b=get_value(sim.rv.states[s_expr[3]])>>>0;var result=a*b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU MULU with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (MULU). "}};sim.rv.behaviors["DIVU"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.rv.states[s_expr[2]])>>>0;var b=get_value(sim.rv.states[s_expr[3]])>>>0;if(0==b){set_value(sim.rv.states[s_expr[1]],0);sim.rv.internal_states.alu_flags.flag_n=0;sim.rv.internal_states.alu_flags.flag_z=1;return}var result=Math.floor(a/b);set_value(sim.rv.states[s_expr[1]],result);sim.rv.internal_states.alu_flags.flag_n=result<0?1:0;sim.rv.internal_states.alu_flags.flag_z=result==0?1:0},verbal:function(s_expr){var a=get_value(sim.rv.states[s_expr[2]])>>>0;var b=get_value(sim.rv.states[s_expr[3]])>>>0;if(0==b){return"ALU DIVU zero by zero (oops!). "}var result=Math.floor(a/b);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU DIVU with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (DIVU). "}};sim.rv.behaviors["FADD"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.rv.states[s_expr[2]]);var b=get_value(sim.rv.states[s_expr[3]]);var result=hex2float(a)+hex2float(b);set_value(sim.rv.states[s_expr[1]],float32_to_uint(result));sim.rv.internal_states.alu_flags.flag_n=result<0?1:0;sim.rv.internal_states.alu_flags.flag_z=result==0?1:0},verbal:function(s_expr){var a=get_value(sim.rv.states[s_expr[2]]);var b=get_value(sim.rv.states[s_expr[3]]);var result=hex2float(a)+hex2float(b);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU FADD with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (FADD). "}};sim.rv.behaviors["FSUB"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.rv.states[s_expr[2]]);var b=get_value(sim.rv.states[s_expr[3]]);var result=hex2float(a)-hex2float(b);set_value(sim.rv.states[s_expr[1]],float32_to_uint(result));sim.rv.internal_states.alu_flags.flag_n=result<0?1:0;sim.rv.internal_states.alu_flags.flag_z=result==0?1:0},verbal:function(s_expr){var a=get_value(sim.rv.states[s_expr[2]]);var b=get_value(sim.rv.states[s_expr[3]]);var result=hex2float(a)-hex2float(b);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU FSUB with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (FSUB). "}};sim.rv.behaviors["FMUL"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.rv.states[s_expr[2]]);var b=get_value(sim.rv.states[s_expr[3]]);var result=hex2float(a)*hex2float(b);set_value(sim.rv.states[s_expr[1]],float32_to_uint(result));sim.rv.internal_states.alu_flags.flag_n=result<0?1:0;sim.rv.internal_states.alu_flags.flag_z=result==0?1:0},verbal:function(s_expr){var a=get_value(sim.rv.states[s_expr[2]]);var b=get_value(sim.rv.states[s_expr[3]]);var result=hex2float(a)*hex2float(b);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU FMUL with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (FMUL). "}};sim.rv.behaviors["FDIV"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.rv.states[s_expr[2]]);var b=get_value(sim.rv.states[s_expr[3]]);var result=hex2float(a)/hex2float(b);set_value(sim.rv.states[s_expr[1]],float32_to_uint(result));sim.rv.internal_states.alu_flags.flag_n=result<0?1:0;sim.rv.internal_states.alu_flags.flag_z=result==0?1:0},verbal:function(s_expr){var a=get_value(sim.rv.states[s_expr[2]]);var b=get_value(sim.rv.states[s_expr[3]]);var result=hex2float(a)-hex2float(b);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU FDIV with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (FDIV). "}};sim.rv.behaviors["FCVT"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.rv.states[s_expr[2]])>>>0;var b=get_value(sim.rv.states[s_expr[3]]);var result=a;switch(b){case 1:result=hex2float(result);result=Math.trunc(result);break;case 2:result=hex2float(result);result=Math.round(result);break;case 4:result=result.toFixed(5);result=parseFloat(result);result=float2decimal(result);break;default:break}set_value(sim.rv.states[s_expr[1]],result);sim.rv.internal_states.alu_flags.flag_n=result<0?1:0;sim.rv.internal_states.alu_flags.flag_z=result==0?1:0},verbal:function(s_expr){var a=get_value(sim.rv.states[s_expr[2]])>>>0;var b=get_value(sim.rv.states[s_expr[3]]);var result=a;switch(b){case 1:result=hex2float(result);result=Math.trunc(result);break;case 2:result=hex2float(result);result=Math.round(result);break;case 4:result=result.toFixed(5);result=parseFloat(result);result=float2decimal(result);break;default:break}var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU FCVT with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (FCVT). "}};sim.rv.behaviors["FCLASS"]={nparameters:3,types:["E","E"],operation:function(s_expr){var a=get_value(sim.rv.states[s_expr[2]])>>>0;var result=float_class(a);set_value(sim.rv.states[s_expr[1]],result);sim.rv.internal_states.alu_flags.flag_n=result<0?1:0;sim.rv.internal_states.alu_flags.flag_z=result==0?1:0},verbal:function(s_expr){var a=get_value(sim.rv.states[s_expr[1]])>>>0;var result=float_class(a);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU FCLASS with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (FCLASS). "}};sim.rv.behaviors["PLUS1"]={nparameters:3,types:["E","E"],operation:function(s_expr){var a=get_value(sim.rv.states[s_expr[2]])<<0;var result=a+1;set_value(sim.rv.states[s_expr[1]],result>>>0)},verbal:function(s_expr){var a=get_value(sim.rv.states[s_expr[2]])<<0;var result=a+1;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy to "+show_verbal(s_expr[1])+" "+show_verbal(s_expr[2])+" plus one with result "+show_value(result)+". "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[2])+" + 1"+" ("+show_value(result)+"). "}};sim.rv.behaviors["PLUS4"]={nparameters:3,types:["E","E"],operation:function(s_expr){var a=get_value(sim.rv.states[s_expr[2]])<<0;var result=a+4;set_value(sim.rv.states[s_expr[1]],result>>>0)},verbal:function(s_expr){var a=get_value(sim.rv.states[s_expr[2]])<<0;var result=a+4;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy to "+show_verbal(s_expr[1])+" "+show_verbal(s_expr[2])+" plus four with result "+show_value(result)+". "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[2])+" + 4"+" ("+show_value(result)+"). "}};sim.rv.behaviors["SET_TT"]={nparameters:3,types:["E","I"],operation:function(s_expr){var a=get_value(sim.rv.states[s_expr[1]])<<0;var b=parseInt(s_expr[2]);var m=Math.pow(2,b);var r=a|m;set_value(sim.rv.states[s_expr[1]],r);update_cpu_bus_fire(r,b)},verbal:function(s_expr){return""}};sim.rv.behaviors["RST_TT"]={nparameters:3,types:["E","I"],operation:function(s_expr){var a=get_value(sim.rv.states[s_expr[1]])<<0;var b=parseInt(s_expr[2]);var m=Math.pow(2,b);var r=a&~m;set_value(sim.rv.states[s_expr[1]],r);update_cpu_bus_fire(r,b)},verbal:function(s_expr){return""}};sim.rv.behaviors["MBIT"]={nparameters:5,types:["X","X","I","I"],operation:function(s_expr){var sim_elto_dst=get_reference(s_expr[1]);var sim_elto_org=get_reference(s_expr[2]);var offset=parseInt(s_expr[3]);var size=parseInt(s_expr[4]);var n1=get_value(sim_elto_org).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(offset+size-1),size);set_value(sim_elto_dst,parseInt(n2,2))},verbal:function(s_expr){var sim_elto_dst=get_reference(s_expr[1]);var sim_elto_org=get_reference(s_expr[2]);var offset=parseInt(s_expr[3]);var size=parseInt(s_expr[4]);var n1=get_value(sim_elto_org).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(offset+size-1),size);var n3=parseInt(n2,2);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy from "+show_verbal(s_expr[2])+" to "+show_verbal(s_expr[1])+" value "+show_value(n3)+" (copied "+size+" bits from bit "+offset+"). "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[2])+" ("+show_value(n3)+", "+size+" bits from bit "+offset+"). "}};sim.rv.behaviors["MBIT_SN"]={nparameters:5,types:["S","E","E","I"],operation:function(s_expr){var base=0;var r=s_expr[3].split("/");if(1==r.length)base=get_value(sim.rv.states[s_expr[3]]);else if(typeof sim.rv.states[r[0]].value[r[1]]!="undefined")base=sim.rv.states[r[0]].value[r[1]];else if(typeof sim.rv.signals[r[1]].default_value!="undefined")base=sim.rv.signals[r[1]].default_value;else if(typeof sim.rv.states[r[1]].default_value!="undefined")base=sim.rv.states[r[1]].default_value;else ws_alert("WARN: undefined state/field pair -> "+r[0]+"/"+r[1]);var offset=parseInt(s_expr[4]);var n1=get_value(sim.rv.states[s_expr[2]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;var n3=n2.substr(31-(base+offset-1),offset);set_value(sim.rv.signals[s_expr[1]],parseInt(n3,2))},verbal:function(s_expr){var base=0;var r=s_expr[3].split("/");if(1==r.length)base=get_value(sim.rv.states[s_expr[3]]);else if(typeof sim.rv.states[r[0]].value[r[1]]!="undefined")base=sim.rv.states[r[0]].value[r[1]];else if(typeof sim.rv.signals[r[1]].default_value!="undefined")base=sim.rv.signals[r[1]].default_value;else if(typeof sim.rv.states[r[1]].default_value!="undefined")base=sim.rv.states[r[1]].default_value;else ws_alert("WARN: undefined state/field pair -> "+r[0]+"/"+r[1]);var offset=parseInt(s_expr[4]);var n1=get_value(sim.rv.states[s_expr[2]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;var n3=n2.substr(31-(base+offset-1),offset);var from_elto="";if(1==r.length)from_elto=show_verbal(s_expr[3]);else from_elto=show_verbal(s_expr[2])+"["+r[1]+"] ";var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy from "+from_elto+"into "+show_verbal(s_expr[1])+" "+"value "+parseInt(n3,2)+". "}return show_verbal(s_expr[1])+" = "+from_elto+" ("+parseInt(n3,2)+"). "}};sim.rv.behaviors["SBIT_SIGNAL"]={nparameters:4,types:["X","I","I"],operation:function(s_expr){sim_elto_dst=get_reference(s_expr[1]);var new_value=sim_elto_dst.value;var mask=1<>>0)},verbal:function(s_expr){sim_elto_dst=get_reference(s_expr[1]);var new_value=sim_elto_dst.value;var mask=1<>>0)}};sim.rv.behaviors["UPDATE_FLAG"]={nparameters:4,types:["X","X","I"],operation:function(s_expr){sim_elto_org=get_reference(s_expr[2]);sim_elto_dst=get_reference(s_expr[1]);var new_value=sim_elto_dst.value&~(1<>>0)},verbal:function(s_expr){sim_elto_org=get_reference(s_expr[2]);sim_elto_dst=get_reference(s_expr[1]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Update "+show_verbal(s_expr[2])+" to value "+sim_elto_org.value+". "}return show_verbal(s_expr[1])+"."+show_verbal(s_expr[3])+" = "+sim_elto_org.value+". "}};sim.rv.behaviors["MBITS"]={nparameters:8,types:["E","I","E","S","S","I","S"],operation:function(s_expr){var offset=parseInt(sim.rv.signals[s_expr[4]].value);var size=parseInt(sim.rv.signals[s_expr[5]].value);var n1=get_value(sim.rv.states[s_expr[3]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(offset+size-1),size);var n3="00000000000000000000000000000000".substring(0,32-n2.length)+n2;if("1"==sim.rv.signals[s_expr[7]].value&&"1"==n2.substr(0,1)){n3="11111111111111111111111111111111".substring(0,32-n2.length)+n2}set_value(sim.rv.states[s_expr[1]],parseInt(n3,2))},verbal:function(s_expr){var offset=parseInt(sim.rv.signals[s_expr[4]].value);var size=parseInt(sim.rv.signals[s_expr[5]].value);var n1=get_value(sim.rv.states[s_expr[3]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(offset+size-1),size);var n3="00000000000000000000000000000000".substring(0,32-n2.length)+n2;if("1"==sim.rv.signals[s_expr[7]].value&&"1"==n2.substr(0,1)){n3="11111111111111111111111111111111".substring(0,32-n2.length)+n2}n1=parseInt(n3,2);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return" Copy from "+show_verbal(s_expr[3])+" to "+show_verbal(s_expr[1])+" value "+show_value(n1)+" (copied "+size+" bits from bit "+offset+"). "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[3])+" ("+show_value(n1)+", "+size+" bits from bit "+offset+"). "}};sim.rv.behaviors["BSEL"]={nparameters:6,types:["E","I","I","E","I"],operation:function(s_expr){var posd=parseInt(s_expr[2]);var poso=parseInt(s_expr[5]);var len=parseInt(s_expr[3]);var n1=get_value(sim.rv.states[s_expr[4]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(poso+len)+1,len);var n3="00000000000000000000000000000000".substring(0,32-n2.length)+n2;var n4="00000000000000000000000000000000".substr(0,posd);n3=n3+n4;set_value(sim.rv.states[s_expr[1]],parseInt(n3,2))},verbal:function(s_expr){var posd=parseInt(s_expr[2]);var len=parseInt(s_expr[3]);var poso=parseInt(s_expr[5]);var n1=get_value(sim.rv.states[s_expr[4]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(poso+len)+1,len);var n3="00000000000000000000000000000000".substring(0,32-n2.length)+n2;var n4="00000000000000000000000000000000".substr(0,posd);n3=n3+n4;var n5=parseInt(n3,2);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy from "+show_verbal(s_expr[4])+" to "+show_verbal(s_expr[1])+" value "+show_value(n5)+" (copied "+len+" bits, from bit "+poso+" of "+s_expr[4]+" to bit "+posd+" of "+s_expr[1]+"). "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[4])+" ("+show_value(n5)+", "+len+" bits, from bit "+poso+" of "+s_expr[4]+" to bit "+posd+" of "+s_expr[1]+"). "}};sim.rv.behaviors["BWSEL"]={nparameters:4,types:["E","E","S"],operation:function(s_expr){var posd=0;var poso=0;var len=8;var sign_ext=sim.rv.signals[s_expr[3]].value;var n1=get_value(sim.rv.states[s_expr[2]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(poso+len)+1,len);var n3="00000000000000000000000000000000".substring(0,32-n2.length)+n2;var n4="00000000000000000000000000000000".substr(0,posd);n3=n3+n4;if(sign_ext){var s1=n2;var s2="00000000000000000000000000000000".substring(0,32-s1.length)+s1;var s3=s2.substr(31-7,31);var s4=s3;if("1"==s2[31-7]){s4="11111111111111111111111111111111".substring(0,32-s3.length)+s4}set_value(sim.rv.states[s_expr[1]],parseInt(s4,2))}else{set_value(sim.rv.states[s_expr[1]],parseInt(n3,2))}},verbal:function(s_expr){var posd=0;var poso=0;var len=8;var sign_ext=sim.rv.signals[s_expr[3]].value;var n1=get_value(sim.rv.states[s_expr[2]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(poso+len)+1,len);var n3="00000000000000000000000000000000".substring(0,32-n2.length)+n2;var n4="00000000000000000000000000000000".substr(0,posd);n3=n3+n4;if(sign_ext){var s1=n2;var s2="00000000000000000000000000000000".substring(0,32-s1.length)+s1;var s3=s2.substr(31-7,31);var s4=s3;if("1"==s2[31-7]){s4="11111111111111111111111111111111".substring(0,32-s3.length)+s4}var value=parseInt(s4,2);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy from "+show_verbal(s_expr[2])+" to "+show_verbal(s_expr[1])+" value "+show_value(value)+ +" (copied "+len+" bits, from bit "+poso+" to bit "+(posd+8)+" with sign extension)."}else{return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[2])+" ("+show_value(value)+", "+len+" bits, from bit "+poso+" of "+s_expr[2]+" to bit "+(posd+8)+" of "+s_expr[1]+"). "}}else{var value=parseInt(n3,2);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy from "+show_verbal(s_expr[2])+" to "+show_verbal(s_expr[1])+" value "+show_value(value)+ +" (copied "+len+" bits, from bit "+poso+" to bit "+(posd+8)+" without sign extension)."}else{return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[2])+" ("+show_value(value)+", "+len+" bits, from bit "+poso+" of "+s_expr[2]+" to bit "+(posd+8)+" of "+s_expr[1]+"). "}}}};sim.rv.behaviors["EXT_SIG"]={nparameters:3,types:["E","I"],operation:function(s_expr){var n1=get_value(sim.rv.states[s_expr[1]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;var n3=n2.substr(31-s_expr[2],31);var n4=n3;if("1"==n2[31-s_expr[2]]){n4="11111111111111111111111111111111".substring(0,32-n3.length)+n4}set_value(sim.rv.states[s_expr[1]],parseInt(n4,2))},verbal:function(s_expr){var n1=get_value(sim.rv.states[s_expr[1]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;var n3=n2.substr(31-s_expr[2],31);var n4=n3;if("1"==n2[31-s_expr[2]]){n4="11111111111111111111111111111111".substring(0,32-n3.length)+n4}var n5=parseInt(n4,2);return"Sign Extension with value "+show_value(n5)+". "}};sim.rv.behaviors["MOVE_BITS"]={nparameters:5,types:["S","I","I","S"],operation:function(s_expr){var posd=parseInt(s_expr[2]);var poso=0;var len=parseInt(s_expr[3]);var n1=sim.rv.signals[s_expr[4]].value.toString(2);n1="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n1=n1.substr(31-poso-len+1,len);var n2=sim.rv.signals[s_expr[1]].value.toString(2);n2="00000000000000000000000000000000".substring(0,32-n2.length)+n2;var m1=n2.substr(0,32-(posd+len));var m2=n2.substr(31-posd+1,posd);var n3=m1+n1+m2;set_value(sim.rv.signals[s_expr[1]],parseInt(n3,2))},verbal:function(s_expr){return""}};sim.rv.behaviors["MOVE_BITSE"]={nparameters:6,types:["S","I","I","E","I"],operation:function(s_expr){var posd=parseInt(s_expr[2]);var poso=parseInt(s_expr[5]);var len=parseInt(s_expr[3]);var n1=get_value(sim.rv.states[s_expr[4]]).toString(2);n1="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n1=n1.substr(31-poso-len+1,len);var n2=sim.rv.signals[s_expr[1]].value.toString(2);n2="00000000000000000000000000000000".substring(0,32-n2.length)+n2;var m1=n2.substr(0,32-(posd+len));var m2=n2.substr(31-posd+1,posd);var n3=m1+n1+m2;set_value(sim.rv.signals[s_expr[1]],parseInt(n3,2))},verbal:function(s_expr){return""}};sim.rv.behaviors["READ_IM"]={nparameters:1,operation:function(s_expr){var address=get_value(sim.rv.states["REG_PC"]);var clk=get_value(sim.rv.states["CLK"]);var remain=get_value(sim.rv.internal_states.MP_wc);if(typeof sim.rv.events.mem[clk-1]!="undefined"&&sim.rv.events.mem[clk-1]>0){remain=sim.rv.events.mem[clk-1]-1}var first_time=typeof sim.rv.events.mem[clk]=="undefined";sim.rv.events.mem[clk]=remain;if(remain>0){return}address=address&4294967292;var value=main_memory_getvalue(sim.rv.internal_states.MP,address);var full_redraw=false;if(typeof value==="undefined"){value=0;full_redraw=true}show_main_memory(sim.rv.internal_states.MP,address,full_redraw,false);if(first_time&&sim.rv.internal_states.CM.length>0){cache_memory_access(sim.rv.internal_states.CM[0],address,"read",clk)}var ins=main_memory_getvalue(sim.rv.internal_states.MP,address);if(typeof ins==="undefined")ins=0;set_value(sim.rv.states["RDATA"],ins)},verbal:function(s_expr){var verbal="";var address=get_value(sim.rv.states["REG_PC"]);var value=main_memory_getvalue(sim.rv.internal_states.MP,address);if(typeof value==="undefined")value=0;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){verbal="Try to read an instruction from Instruction Memory "+"at address 0x"+address.toString(16)+" with value 0x"+value.toString(16)+". ";return verbal}verbal="Memory output = 0x"+value.toString(16)+" (Read an instruction from Instruction Memory"+" at address 0x"+address.toString(16)+"). ";return verbal}};sim.rv.behaviors["DECO"]={nparameters:1,operation:function(s_expr){sim.rv.states["INEX"].value=0;var oi=decode_instruction(sim.rv.internal_states.FIRMWARE,sim.rv.ctrl_states.ir,get_value(sim.rv.states["REG_IR"]));if(null==oi.oinstruction){ws_alert("ERROR: undefined instruction code in IR ("+"co:"+oi.op_code.toString(2)+", "+"cop:"+oi.cop_code.toString(2)+")");sim.rv.states["ROM_MUXA"].value=0;sim.rv.states["INEX"].value=1;return-1}var rom_addr=oi.op_code<<6;if(typeof oi.oinstruction.cop!="undefined"){rom_addr=rom_addr+oi.cop_code}if(typeof sim.rv.internal_states["ROM"][rom_addr]=="undefined"){ws_alert("ERROR: undefined rom address "+rom_addr+" in firmware");sim.rv.states["ROM_MUXA"].value=0;return-1}sim.rv.states["ROM_MUXA"].value=sim.rv.internal_states["ROM"][rom_addr];var val=get_value(sim.rv.states["DECO_INS"]);set_value(sim.rv.states["DECO_INS"],val+1);var pc=get_value(sim.rv.states["REG_PC"])-4;var decins=get_deco_from_pc(pc);set_value(sim.rv.states["REG_IR_DECO"],decins);show_dbg_ir(get_value(sim.rv.states["REG_IR_DECO"]))},verbal:function(s_expr){return"Decode instruction. "}};sim.rv.behaviors["FIRE"]={nparameters:2,types:["S"],operation:function(s_expr){if(sim.rv.internal_states.fire_stack.indexOf(s_expr[1])!=-1){return}sim.rv.internal_states.fire_stack.push(s_expr[1]);update_draw(sim.rv.signals[s_expr[1]],sim.rv.signals[s_expr[1]].value);if("L"==sim.rv.signals[s_expr[1]].type){update_state(s_expr[1])}sim.rv.internal_states.fire_stack.pop(s_expr[1])},verbal:function(s_expr){return""}};sim.rv.behaviors["FIRE_IFSET"]={nparameters:3,types:["S","I"],operation:function(s_expr){if(get_value(sim.rv.signals[s_expr[1]])!=parseInt(s_expr[2])){return}sim.rv.behaviors["FIRE"].operation(s_expr)},verbal:function(s_expr){return""}};sim.rv.behaviors["FIRE_IFCHANGED"]={nparameters:3,types:["S","X"],operation:function(s_expr){sim_elto=get_reference(s_expr[2]);if(sim_elto.changed==false){return}sim.rv.behaviors["FIRE"].operation(s_expr)},verbal:function(s_expr){return""}};sim.rv.behaviors["RESET_CHANGED"]={nparameters:2,types:["X"],operation:function(s_expr){sim_elto=get_reference(s_expr[1]);sim_elto.changed=false},verbal:function(s_expr){return""}};sim.rv.behaviors["CLOCK"]={nparameters:1,operation:function(s_expr){var new_maddr=null;var mcelto=null;var t0=performance.now();var val=get_value(sim.rv.states["CLK"]);set_value(sim.rv.states["CLK"],val+1);set_value(sim.rv.states["TTCPU"],0);new_maddr=get_value(sim.rv.states["REG_MICROADDR"]);mcelto=sim.rv.internal_states["MC"][new_maddr];if(typeof mcelto!=="undefined"&&false==mcelto.is_native){for(var i=0;i>>0},set_value:function(elto,value){var origin="";var r_value=main_memory_get_program_counter();if(r_value!=null){origin="PC=0x"+r_value.toString(16)}var melto={value:value>>>0,source_tracking:[origin],comments:null};var valref=main_memory_set(sim.rv.internal_states.MP,elto,melto);show_main_memory(sim.rv.internal_states.MP,elto,typeof valref==="undefined",true);return value}};sim.rv.internal_states.segments={};sim.rv.internal_states.MP_wc=0;sim.rv.internal_states.MP={};sim.rv.internal_states.CM_cfg=[];sim.rv.internal_states.CM=[];sim.rv.behaviors.MEM_READ={nparameters:5,types:["E","E","S","E"],operation:function(s_expr){var address="0x"+get_value(sim.rv.states[s_expr[1]]).toString(16);var dbvalue=get_value(sim.rv.states[s_expr[2]]);var bw=sim.rv.signals[s_expr[3]].value;var clk=get_value(sim.rv.states[s_expr[4]]);var remain=get_value(sim.rv.internal_states.MP_wc);if(typeof sim.rv.events.mem[clk-1]!="undefined"&&sim.rv.events.mem[clk-1]>0){remain=sim.rv.events.mem[clk-1]-1}var first_time=typeof sim.rv.events.mem[clk]=="undefined";sim.rv.events.mem[clk]=remain;if(remain>0){return}address=address&4294967292;var value=main_memory_getvalue(sim.rv.internal_states.MP,address);var full_redraw=false;if(typeof value==="undefined"){value=0;full_redraw=true}if(bw==1){var byte_s=0;dbvalue=main_memory_fusionvalues(dbvalue,value,byte_s)}else{dbvalue=value}set_value(sim.rv.states[s_expr[2]],dbvalue>>>0);show_main_memory(sim.rv.internal_states.MP,address,full_redraw,false);if(first_time&&sim.rv.internal_states.CM.length>0){cache_memory_access(sim.rv.internal_states.CM[0],address,"read",clk)}},verbal:function(s_expr){var verbal="";var address="0x"+get_value(sim.rv.states[s_expr[1]]).toString(16);var dbvalue=get_value(sim.rv.states[s_expr[2]]);var bw=sim.rv.signals[s_expr[3]].value;var clk=get_value(sim.rv.states[s_expr[4]]);var bw_type="word";if(bw==1)bw_type="byte";var value=main_memory_getvalue(sim.rv.internal_states.MP,address);if(typeof value==="undefined")value=0;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){verbal="Try to read a "+bw_type+" from memory "+"at address "+address+" with value 0x"+value.toString(16)+". "}verbal="Memory output = 0x"+value.toString(16)+" (Read a "+bw_type+" from "+address+"). ";return verbal}};sim.rv.behaviors.MEM_WRITE={nparameters:5,types:["E","E","S","E"],operation:function(s_expr){var address="0x"+get_value(sim.rv.states[s_expr[1]]).toString(16);var dbvalue=get_value(sim.rv.states[s_expr[2]]);var bw=sim.rv.signals[s_expr[3]].value;var clk=get_value(sim.rv.states[s_expr[4]]);var remain=get_value(sim.rv.internal_states.MP_wc);if(typeof sim.rv.events.mem[clk-1]!="undefined"&&sim.rv.events.mem[clk-1]>0){remain=sim.rv.events.mem[clk-1]-1}var first_time=typeof sim.rv.events.mem[clk]=="undefined";sim.rv.events.mem[clk]=remain;if(remain>0){return}address=address&4294967292;var value=main_memory_getvalue(sim.rv.internal_states.MP,address);var full_redraw=false;if(typeof value==="undefined"){value=0;full_redraw=true}if(bw==1){var byte_s=0;value=main_memory_fusionvalues(value,dbvalue,byte_s)}else{var byte_s=12;value=main_memory_fusionvalues(value,dbvalue,byte_s)}var origin="";var r_value=main_memory_get_program_counter();if(r_value!=null){origin="PC=0x"+r_value.toString(16)}var melto={value:value>>>0,source_tracking:[origin],comments:null};var valref=main_memory_set(sim.rv.internal_states.MP,address,melto);show_main_memory(sim.rv.internal_states.MP,address,full_redraw,true);if(first_time&&sim.rv.internal_states.CM.length>0){cache_memory_access(sim.rv.internal_states.CM[0],address,"write",clk)}},verbal:function(s_expr){var verbal="";var address="0x"+get_value(sim.rv.states[s_expr[1]]).toString(16);var dbvalue=get_value(sim.rv.states[s_expr[2]]);var bw=sim.rv.signals[s_expr[3]].value;var clk=get_value(sim.rv.states[s_expr[4]]);var bw_type="word";if(bw==1)bw_type="byte";var value=main_memory_getvalue(sim.rv.internal_states.MP,address);if(typeof value==="undefined")value=0;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){verbal="Try to write a "+bw_type+" to memory "+"at address "+address+" with value "+value.toString(16)+". "}verbal="Memory["+address+"] = "+"0x"+value.toString(16)+" (Write a "+bw_type+" to "+address+"). ";return verbal}};sim.rv.behaviors.MEMORY_RESET={nparameters:1,operation:function(s_expr){sim.rv.events.mem={}},verbal:function(s_expr){return"Reset main memory (all values will be zeroes). "}};sim.rv.elements.memory={name:"Main memory",description:"Main memory subsystem",type:"subcomponent",belongs:"MEMORY",states:{addr:{ref:"M3_ALU"},wdata:{ref:"REG_OUT"},rdata:{ref:"DM_BS"}},signals:{wbe:{ref:"WBE"},dmr:{ref:"DMR"},dmw:{ref:"DMW"}},states_inputs:["addr","wdata"],states_outputs:["rdata"],signals_inputs:["wbe","dmr","dmw"],signals_output:[]};function frm_nextToken(context){var tok="";var first="";var last="";var token_type="";while("# \t\n\r".indexOf(context.text[context.t])!=-1&&context.t0)line2=context.newlines[context.newlines.length-1]+1;var line1=0;if(context.newlines.length>1)line1=context.newlines[context.newlines.length-2]+1;var lowI=line1;var highI=Math.min(context.t-1,line2+32);for(;typeof context.text[highI+1]!="undefined"&&context.text[highI+1]!="\n";highI++);var line3=highI+2;highI++;for(;typeof context.text[highI+1]!="undefined"&&context.text[highI+1]!="\n";highI++);highI++;context.error=" "+""+"...\n";for(var i=lowI;i"+"(*) "+i18n_get_TagFor("compiler","PROBLEM AROUND LINE")+" "+context.line+": "+msgError+". ";simcore_ga("compile","compile.error","compile.error."+msgError);return context}function frm_getLabelContext(context){return{t:context.t,line:context.line,newlines:context.newlines.slice()}}function frm_setLabelContext(context,labelContext){context.t=labelContext.t;context.line=labelContext.line;context.newlines=labelContext.newlines}function frm_getComments(context){return context.comments.join("\n")}function frm_resetComments(context){context.comments=[]}function frm_nextNative(context){var first=context.t;var last=context.t;var braces=1;while(context.t=Math.pow(2,simhw_sim_signal(nombre_tok).nbits)){return frm_langError(context,i18n_get_TagFor("compiler","OUT OF RANGE")+"'"+frm_getToken(context)+"'")}frm_nextToken(context)}if(frm_isToken(context,",")){frm_nextToken(context)}}var acc_cmt=frm_getComments(context);microcomments.push(acc_cmt);frm_resetComments(context);microprograma.push(microInstruccionAux);context.contadorMC++;frm_nextToken(context);if(frm_isToken(context,","))frm_nextToken(context)}if(microprograma.length===0){return frm_langError(context,i18n_get_TagFor("compiler","EMPTY MICROCODE"))}frm_nextToken(context);return{NATIVE:"",microprograma:microprograma,microcomments:microcomments}}function read_native(context){var microprograma=[];var microcomments=[];if(!frm_isToken(context,"{")){return frm_langError(context,i18n_get_TagFor("compiler","OPEN BRACE NOT FOUND"))}frm_nextNative(context);var native_code=frm_getToken(context);microprograma.push({});microcomments.push("");frm_nextToken(context);return{NATIVE:native_code,microprograma:microprograma,microcomments:microcomments}}function firm_begin_read(context){var instruccionAux={};instruccionAux.name=frm_getToken(context);instruccionAux["mc-start"]=context.contadorMC;instruccionAux["is_native"]=false;frm_nextToken(context);if(frm_isToken(context,",")){frm_nextToken(context)}if(frm_isToken(context,"native")){instruccionAux["is_native"]=true;frm_nextToken(context);if(frm_isToken(context,",")){frm_nextToken(context)}context.etiquetas[context.contadorMC]="fetch"}if(true==instruccionAux.is_native)ret=read_native(context);else ret=firm_mcode_signals_read(context);if(typeof ret.error!="undefined"){return ret}instruccionAux.signature="begin";instruccionAux.signatureGlobal="begin";instruccionAux.signatureUser="begin";instruccionAux.signatureRaw="begin";instruccionAux.NATIVE=ret.NATIVE;instruccionAux.microcode=ret.microprograma;instruccionAux.microcomments=ret.microcomments;context.instrucciones.push(instruccionAux);context.contadorMC=context.contadorMC+9;return{}}function firm_pseudoinstructions_read(context){frm_nextToken(context);if(!frm_isToken(context,"{")){return frm_langError(context,i18n_get_TagFor("compiler","OPEN BRACE NOT FOUND"))}frm_nextToken(context);while(!frm_isToken(context,"}")){var pseudoInstructionAux={};var pseudoInitial={};pseudoInitial.signature="";pseudoInitial.name="";pseudoInitial.fields=[];pseudoInitial.name=frm_getToken(context);pseudoInitial.signature=pseudoInitial.signature+frm_getToken(context)+",";frm_nextToken(context);while(!frm_isToken(context,"{")){var pseudoFieldAux={};pseudoFieldAux.name="";pseudoFieldAux.type="";pseudoFieldAux.indirect=false;if(frm_isToken(context,"(")){frm_nextToken(context);pseudoFieldAux.name+=frm_getToken(context);frm_nextToken(context);if(!frm_isToken(context,")")){return frm_langError(context,i18n_get_TagFor("compiler","CLOSE PAREN. NOT FOUND"))}frm_nextToken(context);pseudoFieldAux.indirect=true}else{pseudoFieldAux.name+=frm_getToken(context);frm_nextToken(context)}if(!frm_isToken(context,"=")){return frm_langError(context,i18n_get_TagFor("compiler","EQUAL NOT FOUND")+" (for name=type)")}frm_nextToken(context);pseudoFieldAux.type+=frm_getToken(context).replace("num","inm");switch(pseudoFieldAux.type){case"reg":case"inm":case"addr":case"address":break;default:return frm_langError(context,i18n_get_TagFor("compiler","INVALID PARAMETER")+pseudoFieldAux.type+"."+i18n_get_TagFor("compiler","ALLOWED PARAMETER"))}pseudoInitial.fields.push(pseudoFieldAux);if(pseudoFieldAux.indirect==true)pseudoInitial.signature+="("+frm_getToken(context)+"),";else pseudoInitial.signature+=frm_getToken(context)+",";frm_nextToken(context);if(frm_isToken(context,",")){frm_nextToken(context)}}frm_nextToken(context);pseudoInitial.signature=pseudoInitial.signature.substr(0,pseudoInitial.signature.length-1).replace(/num/g,"inm");pseudoInstructionAux.initial=pseudoInitial;var contPseudoFinish=0;var pseudoFinishAux={};pseudoFinishAux.signature="";var inStart=0;var cont=false;while(!frm_isToken(context,"}")){if(inStart==0){for(i=0;i32*parseInt(instruccionAux.nwords)-1){return frm_langError(context,i18n_get_TagFor("compiler","STARTBIT OoR")+"'"+frm_getToken(context)+"'")}frm_nextToken(context);if(!frm_isToken(context,",")){return frm_langError(context,i18n_get_TagFor("compiler","COMMA NOT FOUND"))}frm_nextToken(context);instruccionAux.fields[camposInsertados].stopbit=frm_getToken(context);var stop=parseInt(instruccionAux.fields[camposInsertados].stopbit);if(stop>32*parseInt(instruccionAux.nwords)){return frm_langError(context,i18n_get_TagFor("compiler","STOPBIT OoR")+"'"+frm_getToken(context)+"'")}for(i=stop;i<=start;i++){if(typeof instruccionAux.overlapping[i]!="undefined"){return frm_langError(context,i18n_get_TagFor("compiler","OVERLAPPING FIELD")+instruccionAux.fields[camposInsertados].name)}instruccionAux.overlapping[i]=1}frm_nextToken(context);if(!frm_isToken(context,")")){return frm_langError(context,i18n_get_TagFor("compiler","CLOSE PAREN. NOT FOUND"))}frm_nextToken(context);if(instruccionAux.fields[camposInsertados].type=="address"){if(frm_getToken(context)!="abs"&&frm_getToken(context)!="rel"){return frm_langError(context,i18n_get_TagFor("compiler","INCORRECT ADDRESSING"))}instruccionAux.fields[camposInsertados].address_type=frm_getToken(context);frm_nextToken(context)}if(frm_isToken(context,",")){frm_nextToken(context)}return{}}function firm_instruction_read_fixed_fields(context,instruccionAux,xr_info,all_ones_co){var ret={};frm_nextToken(context);if(!frm_isToken(context,"co")){return frm_langError(context,i18n_get_TagFor("compiler","NO CO FIELD"))}ret=firm_instruction_co_read(context,instruccionAux,xr_info,all_ones_co);if(typeof ret.error!="undefined"){return ret}if(frm_isToken(context,"cop")){ret=firm_instruction_cop_read(context,instruccionAux);if(typeof ret.error!="undefined"){return ret}}if(frm_isToken(context,"nwords")){ret=firm_instruction_nword_read(context,instruccionAux);if(typeof ret.error!="undefined"){return ret}}var campos=instruccionAux.fields;var firma=instruccionAux.signature;var firmaUsuario=instruccionAux.signatureUser;var firmaGlobal=instruccionAux.signatureGlobal;var camposInsertados=0;while(camposInsertados32*parseInt(instruccionAux.nwords)-1){return frm_langError(context,i18n_get_TagFor("compiler","STARTBIT OoR")+"'"+frm_getToken(context)+"'")}frm_nextToken(context);if(!frm_isToken(context,":")){return frm_langError(context,i18n_get_TagFor("compiler","COLON NOT FOUND"))}frm_nextToken(context);tmp_fields.stopbit=frm_getToken(context);var stop=parseInt(tmp_fields.stopbit);if(stop>32*parseInt(instruccionAux.nwords)){return frm_langError(context,i18n_get_TagFor("compiler","STOPBIT OoR")+"'"+frm_getToken(context)+"'")}frm_nextToken(context);if(!frm_isToken(context,")")){return frm_langError(context,i18n_get_TagFor("compiler","CLOSE PAREN. NOT FOUND"))}frm_nextToken(context);if(!frm_isToken(context,"=")){return frm_langError(context,i18n_get_TagFor("compiler","EQUAL NOT FOUND"))}frm_nextToken(context);var tmp_name=frm_getToken(context);if(["oc","cop","funct"].includes(tmp_fields.type)){tmp_fields.value=tmp_name}else{tmp_fields.name=tmp_name;var index_name=-1;for(var i=0;i100){return frm_langError(context,i18n_get_TagFor("compiler","MORE 100 FIELDS"))}if(auxValue=="co"){return frm_langError(context,i18n_get_TagFor("compiler","CO AS FIELD NAME"))}if(auxValue=="nwords"){return frm_langError(context,i18n_get_TagFor("compiler","NW AS FIELD NAME"))}}if(frm_isToken(context,"(")){firma=firma+",(";if(plus_found)firmaUsuario=firmaUsuario+"+(";else firmaUsuario=firmaUsuario+" (";frm_nextToken(context);if(!frm_isToken(context,",")&&!frm_isToken(context,"(")&&!frm_isToken(context,")")){var campoAux={};campoAux.name=frm_getToken(context);instruccionAux.fields.push(campoAux);instruccionAux.numeroCampos++;firma=firma+frm_getToken(context);firmaUsuario=firmaUsuario+frm_getToken(context);frm_nextToken(context)}else{return frm_langError(context,i18n_get_TagFor("compiler","MISSING TOKEN ON")+"'"+context.co_cop[instruccionAux.co].signature+"'")}if(frm_isToken(context,")")){firma=firma+")";firmaUsuario=firmaUsuario+")";frm_nextToken(context)}else{return frm_langError(context,i18n_get_TagFor("compiler","MISSING ) ON")+"'"+context.co_cop[instruccionAux.co].signature+"'")}}firma=firma+",";firmaUsuario=firmaUsuario+" "}firma=firma.substr(0,firma.length-1);firma=firma.replace(/,,/g,",");firmaUsuario=firmaUsuario.substr(0,firmaUsuario.length-1);firmaUsuario=firmaUsuario.replace(/ /g," ");instruccionAux.signature=firma;instruccionAux.signatureGlobal=firma;instruccionAux.signatureUser=firmaUsuario;instruccionAux.signatureRaw=firmaUsuario;if(2==context.version){ret=firm_instruction_read_fields_v2(context,instruccionAux,xr_info,all_ones_co)}else{ret=firm_instruction_read_fixed_fields(context,instruccionAux,xr_info,all_ones_co)}if(typeof ret.error!="undefined"){return ret}ret={};if(true==instruccionAux.is_native)ret=read_native(context);else ret=firm_mcode_signals_read(context);if(typeof ret.error!="undefined")return ret;instruccionAux.NATIVE=ret.NATIVE;instruccionAux.microcode=ret.microprograma;instruccionAux.microcomments=ret.microcomments;context.instrucciones.push(instruccionAux);context.contadorMC=context.contadorMC+9;if(!frm_isToken(context,"}")){return frm_langError(context,i18n_get_TagFor("compiler","CLOSE BRACE NOT FOUND"))}frm_nextToken(context);return{}}function simlang_native_adapt_replaceSyscall(icode){var rc="";var me="";var ff="capi_print_char|capi_print_int|capi_print_float|capi_print_double|capi_print_string|"+"capi_read_char|capi_read_int|capi_read_float|capi_read_double|capi_read_string|"+"capi_sbrk|capi_exit";var re=new RegExp("("+ff+")\\(([^)]*)\\)","g");var match=re.exec(icode);while(match!==null){var f=match[1].trim();var p=match[2].trim().split(",");switch(f){case"capi_print_char":rc="// "+f+" \n"+"\tvar tmp1 = 0x000000FF & "+p[0]+" ;\n"+"\tset_screen_content(tmp1.toString()) ;\n";break;case"capi_print_int":rc="// "+f+" \n"+"\tset_screen_content("+p[0]+".toString()) ;\n";break;case"capi_print_float":rc="// "+f+" \n"+"\tvar tmp1 = hex2float("+p[0]+") ;\n"+"\tset_screen_content(tmp1.toString()) ;\n";break;case"capi_print_double":rc="// "+f+" \n"+"\tvar tmp1 = hex2float("+p[0]+") ;\n"+"\tset_screen_content(tmp1.toString()) ;\n";break;case"capi_print_string":rc="// "+f+" \n"+'\tvar tmp1 = "" ;\n'+'\tvar tmp2 = simcore_native_get_value("MEMORY", '+p[0]+") ;\n"+"\tfor (var k="+p[0]+"+1; (tmp2 !== 0) && (k<8*1024); k++) {\n"+"\t tmp1 += tmp2.toString() ;\n"+'\t tmp2 = simcore_native_get_value("MEMORY", k) ;\n'+"\t} ;\n"+"\tset_screen_content(tmp1) ;\n";break;case"capi_read_char":rc="// "+f+" \n"+"\tvar tmp1 = get_screen_content() ;\n"+"\tvar "+p[0]+" = 0x000000FF & parseInt(tmp1) ;\n";break;case"capi_read_int":rc="// "+f+" \n"+"\tvar tmp1 = get_screen_content() ;\n"+"\tvar "+p[0]+" = parseInt(tmp1) ;\n";break;case"capi_read_float":rc="// "+f+" \n"+"\tvar tmp1 = get_screen_content() ;\n"+"\tvar "+p[0]+" = parseFloat(tmp1) ;\n";break;case"capi_read_double":rc="// "+f+" \n"+"\tvar tmp1 = get_screen_content() ;\n"+"\tvar "+p[0]+" = parseFloat(tmp1) ;\n";break;case"capi_read_string":rc="// "+f+" \n"+"\tvar tmp1 = get_screen_content() ;\n"+"\tfor (var k=0; k<"+p[1]+"; k++) {\n"+'\t simcore_native_set_value("MEMORY", '+p[0]+"+k, tmp1[k]) ;\n"+"\t} ;\n";break;case"capi_sbrk":rc="// "+f+" \n"+"// TODO: _sbrk_("+p[0]+", "+p[1]+");\n";break;case"capi_exit":rc="// "+f+" \n"+"// exit by setting P.C. register outside text segment\n"+"\tvar pc_name = simhw_sim_ctrlStates_get().pc.state ;\n"+'\tsimcore_native_set_value("CPU", pc_name, 0x00000000) ;\n';break;default:rc="// "+f+" \n"+"// unknown syscall\n";break}me=new RegExp(f+"\\(([^)]*)\\)","g");icode=icode.replace(me,rc);match=re.exec(icode)}return icode}function simlang_native_adapt_provideRegister(icode,reg_log,rf_phy,reg_phy){var re=new RegExp(reg_log,"g");if(icode.search(re)!=-1){icode="var "+reg_log+" = simcore_native_get_value('"+rf_phy+"', "+reg_phy+") ;\n"+icode+"\n"+"simcore_native_set_value('"+rf_phy+"', "+reg_phy+", "+reg_log+") ;\n"}return icode}function simlang_native_adapt_providePC(icode){var re=/PC/g;if(icode.search(re)!=-1){icode="var pc_name = simhw_sim_ctrlStates_get().pc.state ;\n"+"var PC = simcore_native_get_value('CPU', pc_name) ;\n"+icode+"simcore_native_set_value('CPU', pc_name, PC) ;\n"}return icode}function simlang_native_adapt_replaceIf(icode){var re=new RegExp("[iI][fF]\\s*\\(([^\\\\)]*)\\)\\s*{([^\\\\}]*)}\\s*[eE][lL][sS][eE]{[^}]*}\\s*","g");if(icode.search(re)!=-1){var match=re.exec(icode);try{icode=icode.replace(re,"\n")}catch(e){console.log("Syntax error that cause a run-time error: "+e.toString());console.log(match)}}return icode}function simlang_native_adapt_addInitialTabTab(lines_code){var code_lines;code_lines=lines_code.split("\n");code_lines=code_lines.map((function(x){return"\t\t"+x}));return code_lines.join("\n")}function simlang_native_adapt_instructionDefinition(lines_code){var code_lines=lines_code.split(";");if(code_lines.length===1&&!lines_code.trim().startsWith("if")){lines_code=lines_code+";\n"}lines_code=simlang_native_adapt_replaceSyscall(lines_code);lines_code=simlang_native_adapt_provideRegister(lines_code,"HI","CPU","'REG_RT2'");lines_code=simlang_native_adapt_provideRegister(lines_code,"LO","CPU","'REG_RT1'");lines_code=simlang_native_adapt_provideRegister(lines_code,"ra","BR","31");lines_code=simlang_native_adapt_providePC(lines_code);lines_code=simlang_native_adapt_addInitialTabTab(lines_code);return lines_code}function simlang_native_adapt_getField(j,rf,reg){return"\t\t"+"var f_"+reg+" = "+"simcore_native_get_field_from_ir(fields, "+j+") ;\n"+"\t\t"+"var "+reg+" = "+"simcore_native_get_value('"+rf+"', f_"+reg+") ;\n"}function simlang_native_adapt_setField(j,rf,reg){return"\t\t"+"simcore_native_set_value('"+rf+"', f_"+reg+", "+reg+");\n"}function simlang_native_adapt_headerField(fname,tname,start,stop){return"\t"+tname+"("+start+":"+stop+")="+fname+",\n"}function simlang_native_beginMicrocode(){var o="";o+="\n"+"#\n"+"# WepSIM (https://wepsim.github.io/wepsim/)\n"+"#\n"+"\n"+"firmware_version = 2\n"+"\n"+"##\n"+"## Microcode Section\n"+"##\n"+"\n"+"begin,\n"+"native\n"+"{\n"+" // (once) initialize BR2 as FP register file\n"+' if (typeof BR2 === "undefined")\n'+" {\n"+" BR2 = [] ;\n"+" FCSR = 0 ;\n"+" for (var i=0; i<32; i++)\n"+" {\n"+" BR2[i] = {\n"+' name:"R"+i,\n'+' verbal:"Register "+i,\n'+" visible:true,\n"+' nbits:"32",\n'+" value:0,\n"+" default_value:0,\n"+" draw_data:[]\n"+" } ;\n"+" }\n"+" }\n"+"\n"+" // fetch\n"+' var addr = simcore_native_get_value("CPU", "REG_PC") ;\n'+' var value = simcore_native_get_value("MEMORY", addr) ;\n'+"\n"+' simcore_native_set_value("CPU", "REG_IR", value) ;\n'+' simcore_native_set_value("CPU", "REG_PC", addr + 4) ;\n'+"\n"+" simcore_native_deco() ;\n"+" simcore_native_go_opcode() ;\n"+"}\n";return o}function simlang_native_adapt_instructionSet(instruction_list){var o="";var gfields=[];var sfields=[];var hfields=[];var io={};var line_signature="";var signature_names="";var signature_order="";for(var i=0;i> 32);\n"+"\t\t "+io.fields[j].name+"2 = "+io.fields[j].name+" >> 32;\n"+"\t\t"+"simcore_native_set_value('BR2', "+"f_"+io.fields[j].name+"+0, "+io.fields[j].name+"1);\n"+"\t\t"+"simcore_native_set_value('BR2', "+"f_"+io.fields[j].name+"+1, "+io.fields[j].name+"2);\n";break;case"inm":hfields[k]=simlang_native_adapt_headerField(io.fields[j].name,"inm",io.fields[j].startbit,io.fields[j].stopbit);gfields[k]="\t\t"+"var "+io.fields[j].name+" = "+"simcore_native_get_field_from_ir(fields, "+(k-1)+") ;\n\t";break}}var co_cop="\t"+"co=111111,"+"\n";var lines_code=simlang_native_adapt_instructionDefinition(io.definition);if(lines_code.trim()!==""){lines_code="\t\t"+"// instruction specific code"+"\n"+lines_code+"\n"}var gfields_str=gfields.join("");if(gfields_str.trim()!==""){gfields_str="\t\t"+"// get fields values..."+"\n"+gfields_str+"\n"}var sfields_str=sfields.join("");if(sfields_str.trim()!==""){sfields_str="\t\t"+"// set fields values..."+"\n"+sfields_str+"\n"}o+="\n"+line_signature+" {"+"\n"+co_cop+"\t"+"nwords="+io.nwords+","+"\n"+hfields.join("")+"\t"+"native,"+"\n"+"\t"+"{\n"+gfields_str+"\n"+lines_code+"\n"+sfields_str+"\n"+"\t\t"+"// go fetch"+"\n"+"\t\t"+"simcore_native_go_maddr(0);"+"\n"+"\t"+"}"+"\n"+"}\n"}return o}function simlang_native_registerSection(register_list){var o="";var d="";var index=0;for(index=0;index=last_co){return frm_langError(context,i18n_get_TagFor("compiler","NO CO CODES"))}first_co=parseInt(r.label_co,2);curr_instruction.co=r.label_co;context.co_cop[r.label_co].signature=curr_instruction.signature;if(r.label_cop!==""){curr_instruction.cop=r.label_cop;context.co_cop[r.label_co].cop[r.label_cop]=curr_instruction.signature;context.co_cop[r.label_co].withcop=true}}var labelsFounded=0;if(context.labelsNotFound.length>0){for(i=0;i0){for(var j=0;j0){file+="registers"+"\n{\n";for(i=0;i0)line2=context.newlines[context.newlines.length-1]+1;var line1=0;if(context.newlines.length>1)line1=context.newlines[context.newlines.length-2]+1;var lowI=line1;var highI=Math.min(context.t-1,line2+32);for(;typeof context.text[highI+1]!="undefined"&&context.text[highI+1]!="\n";highI++);var line3=highI+2;highI++;for(;typeof context.text[highI+1]!="undefined"&&context.text[highI+1]!="\n";highI++);highI++;context.error=" "+""+"...\n";for(var i=lowI;i"+"(*) "+i18n_get_TagFor("compiler","PROBLEM AROUND LINE")+" "+context.line+": "+msgError+". ";simcore_ga("compile","compile.error","compile.error."+msgError);return context}function asm_getLabelContext(context){return{t:context.t,line:context.line,newlines:context.newlines.slice()}}function asm_setLabelContext(context,labelContext){context.t=labelContext.t;context.line=labelContext.line;context.newlines=labelContext.newlines}function asm_getComments(context){return context.comments.join("\n")}function asm_resetComments(context){context.comments=[]}sim_segments={".kdata":{name:".kdata",begin:0,end:255,color:"#FF99CC",kindof:"data"},".ktext":{name:".ktext",begin:256,end:4095,color:"#A9D0F5",kindof:"text"},".data":{name:".data",begin:4096,end:32767,color:"#FACC2E",kindof:"data"},".text":{name:".text",begin:32768,end:131071,color:"#BEF781",kindof:"text"},".stack":{name:".stack",begin:131071,end:1048576,color:"#F1F2A3",kindof:"stack"}};function segments_addr_within_text(address){return address>=sim_segments[".text"].begin&&address<=sim_segments[".text"].end||address>=sim_segments[".ktext"].begin&&address<=sim_segments[".ktext"].end}function segments_addr_within_data(address){return address>=sim_segments[".data"].begin&&address<=sim_segments[".data"].end||address>=sim_segments[".kdata"].begin&&address<=sim_segments[".kdata"].end}BYTE_LENGTH=8;WORD_BYTES=4;WORD_LENGTH=WORD_BYTES*BYTE_LENGTH;function isDecimal(n){var ret={number:0,isDecimal:false};if(n.length>1&&n[0]=="0"){return ret}if(typeof n==="string"&&n.includes(".")){return ret}if(!isNaN(parseFloat(n))&&isFinite(n)){ret.isDecimal=true;ret.number=parseInt(n);return ret}return ret}function isOctal(n){var ret={number:0,isDecimal:false};if(n.substring(0,1)=="0"){var octal=n.substring(1).replace(/\b0+/g,"");ret.number=parseInt(octal,8);ret.isDecimal=ret.number.toString(8)===octal;return ret}return ret}function isHex(n){var ret={number:0,isDecimal:false};if(n.substring(0,2).toLowerCase()=="0x"){var hex=n.substring(2).toLowerCase().replace(/\b0+/g,"");if(hex==""){hex="0"}ret.number=parseInt(hex,16);ret.isDecimal=ret.number.toString(16)===hex;return ret}return ret}function isChar(n){var ret={number:0,isDecimal:false};var ret1=treatControlSequences(n);if(true==ret1.error){return ret}var possible_value=ret1.string;if(possible_value[0]=="'"&&possible_value[2]=="'"||possible_value[0]=='"'&&possible_value[2]=='"'){ret.number=possible_value.charCodeAt(1);ret.isDecimal=true;return ret}return ret}function isFloat(n){var ret={number:0,isFloat:false};var non_float=/[a-df-zA-DF-Z]+/;if(non_float.test(n)===true){return ret}ret.number=parseFloat(n);ret.isFloat=!isNaN(ret.number);return ret}function get_decimal_value(possible_value){var ret={number:0,isDecimal:true};ret=isOctal(possible_value);if(ret.isDecimal===false){ret=isHex(possible_value)}if(ret.isDecimal===false){ret=isDecimal(possible_value)}if(ret.isDecimal===false){ret=isChar(possible_value)}return ret}function decimal2binary(number,size){var num_bits=number.toString(2);if(num_bits.length>WORD_LENGTH){return[num_bits,size-num_bits.length]}num_bits=(number>>>0).toString(2);if(number>=0){return[num_bits,size-num_bits.length]}num_bits="1"+num_bits.replace(/^[1]+/g,"");if(num_bits.length>size){return[num_bits,size-num_bits.length]}num_bits="1".repeat(size-num_bits.length)+num_bits;return[num_bits,size-num_bits.length]}function get_inm_value(value){var ret1={};var ret={number:0,isDecimal:false,isFloat:false};ret1=get_decimal_value(value);if(ret1.isDecimal==true){ret1.isFloat=false;return ret1}ret1=isFloat(value);if(ret1.isFloat==true){ret1.isDecimal=false;return ret1}return ret}directives={".kdata":{name:".kdata",kindof:"segment",size:0},".ktext":{name:".ktext",kindof:"segment",size:0},".data":{name:".data",kindof:"segment",size:0},".text":{name:".text",kindof:"segment",size:0},".byte":{name:".byte",kindof:"datatype",size:1},".half":{name:".half",kindof:"datatype",size:2},".word":{name:".word",kindof:"datatype",size:4},".float":{name:".float",kindof:"datatype",size:4},".double":{name:".double",kindof:"datatype",size:8},".ascii":{name:".ascii",kindof:"datatype",size:1},".asciiz":{name:".asciiz",kindof:"datatype",size:1},".space":{name:".space",kindof:"datatype",size:1},".string":{name:".string",kindof:"datatype",size:1},".zero":{name:".zero",kindof:"datatype",size:1},".align":{name:".align",kindof:"datatype",size:0}};function get_datatype_size(datatype){if(typeof directives[datatype]==="undefined"){console.log("ERROR: not defined datatype: "+datatype+"\n");return 0}return directives[datatype].size}function is_directive_kindof(text,kindof){if(typeof directives[text]==="undefined"){return false}return directives[text].kindof==kindof}function is_directive(text){return typeof directives[text]!=="undefined"}function is_directive_segment(text){return is_directive_kindof(text,"segment")}function is_directive_datatype(text){return is_directive_kindof(text,"datatype")}function isValidTag(tag){if(tag.trim()==""){return false}var ret=isDecimal(tag[0]);if(ret.isDecimal==true){return false}var myRegEx=/[^a-z,_\d]/i;return!myRegEx.test(tag)}function sum_array(a){return a.reduce((function(a,b){return a+b}),0)}function get_candidate(advance,instruction){var candidate=false;var candidates={};var signatures={};for(i=0;icandidates[i]){min=candidates[i];candidate=i}}}return candidate?parseInt(candidate):candidate}function reset_assembly(nwords){return"0".repeat(WORD_LENGTH*nwords)}function assembly_replacement(machineCode,num_bits,startbit,stopbit,free_space){var machineCodeAux=machineCode.substring(0,machineCode.length-startbit+free_space);machineCode=machineCodeAux+num_bits+machineCode.substring(machineCode.length-stopbit);return machineCode}function assembly_co_cop(machineCode,co,cop){var xr_info=simhw_sim_ctrlStates_get();if(co!==false)machineCode=assembly_replacement(machineCode,co,WORD_LENGTH,WORD_LENGTH-6,0);if(cop!==false)machineCode=assembly_replacement(machineCode,cop,xr_info.ir.default_eltos.cop.length,0,0);return machineCode}function writememory_and_reset(mp,gen,nwords){if(gen.byteWord>=WORD_BYTES){var melto={value:gen.machineCode,source_tracking:gen.track_source,comments:gen.comments};main_memory_set(mp,"0x"+gen.seg_ptr.toString(16),melto);gen.seg_ptr=gen.seg_ptr+WORD_BYTES;gen.byteWord=0;gen.track_source=[];gen.comments=[];gen.machineCode=reset_assembly(nwords)}}function is_end_of_file(context){return""===asm_getToken(context)&&context.t>=context.text.length}function read_data(context,datosCU,ret){var seg_name=asm_getToken(context);var gen={};gen.byteWord=0;gen.track_source=[];gen.comments=[];gen.machineCode=reset_assembly(1);gen.seg_ptr=ret.seg[seg_name].begin;asm_nextToken(context);while(!is_directive_segment(asm_getToken(context))&&!is_end_of_file(context)){var possible_tag="";while(!is_directive_datatype(asm_getToken(context))&&!is_end_of_file(context)){possible_tag=asm_getToken(context);if("TAG"!=asm_getTokenType(context)){if(""==possible_tag){possible_tag="[empty]"}return asm_langError(context,i18n_get_TagFor("compiler","NO TAG OR DIRECTIVE")+"'"+possible_tag+"'")}var tag=possible_tag.substring(0,possible_tag.length-1);if(!isValidTag(tag)){return asm_langError(context,i18n_get_TagFor("compiler","INVALID TAG FORMAT")+"'"+tag+"'")}if(context.firmware[tag]){return asm_langError(context,i18n_get_TagFor("compiler","TAG OR INSTRUCTION")+"'"+tag+"'")}if(ret.labels2[tag]){return asm_langError(context,i18n_get_TagFor("compiler","REPEATED TAG")+"'"+tag+"'")}ret.labels2[tag]="0x"+(gen.seg_ptr+gen.byteWord).toString(16);asm_nextToken(context)}if(is_end_of_file(context)){break}var possible_datatype=asm_getToken(context);if(".word"==possible_datatype||".half"==possible_datatype||".byte"==possible_datatype||".float"==possible_datatype||".double"==possible_datatype){var size=get_datatype_size(possible_datatype);asm_nextToken(context);var possible_value=asm_getToken(context);while(!is_directive(asm_getToken(context))&&!is_end_of_file(context)){var label_found=false;var ret1=get_inm_value(possible_value);var number=ret1.number;if(ret1.isDecimal==false&&ret1.isFloat==false){if(".word"!==possible_datatype){return asm_langError(context,i18n_get_TagFor("compiler","NO NUMERIC DATATYPE")+"'"+possible_value+"'")}if(!isValidTag(possible_value)){return asm_langError(context,i18n_get_TagFor("compiler","INVALID TAG FORMAT")+"'"+possible_value+"'")}if(context.firmware[possible_value]){return asm_langError(context,i18n_get_TagFor("compiler","TAG OR INSTRUCTION")+"'"+possible_value+"'")}number=0;label_found=true}if(ret1.isDecimal==true)a=decimal2binary(number,size*BYTE_LENGTH);else a=float2binary(number,size*BYTE_LENGTH);num_bits=a[0];free_space=a[1];if(free_space<0){return asm_langError(context,i18n_get_TagFor("compiler","EXPECTED VALUE")+possible_datatype+"' ("+size*BYTE_LENGTH+" bits), "+i18n_get_TagFor("compiler","BUT INSERTED")+possible_value+"' ("+num_bits.length+" bits) "+i18n_get_TagFor("compiler","INSTEAD"))}writememory_and_reset(ret.mp,gen,1);while((gen.seg_ptr+gen.byteWord)%size!=0){gen.byteWord++;writememory_and_reset(ret.mp,gen,1)}if(""!=possible_tag){ret.labels2[possible_tag.substring(0,possible_tag.length-1)]="0x"+(gen.seg_ptr+gen.byteWord).toString(16);possible_tag=""}if(label_found){ret.labels["0x"+gen.seg_ptr.toString(16)]={name:possible_value,addr:gen.seg_ptr,startbit:31,stopbit:0,rel:undefined,nwords:1,labelContext:asm_getLabelContext(context)}}gen.machineCode=assembly_replacement(gen.machineCode,num_bits,BYTE_LENGTH*(size+gen.byteWord),BYTE_LENGTH*gen.byteWord,free_space);gen.byteWord+=size;gen.track_source.push(possible_value);asm_nextToken(context);if(","==asm_getToken(context)){asm_nextToken(context)}if(is_directive(asm_getToken(context))||"TAG"==asm_getTokenType(context)||"."==asm_getToken(context)[0]){break}possible_value=asm_getToken(context)}}else if(".space"==possible_datatype||".zero"==possible_datatype){asm_nextToken(context);var possible_value=asm_getToken(context);var ret1=isDecimal(possible_value);possible_value=ret1.number;if(ret1.isDecimal==false){return asm_langError(context,i18n_get_TagFor("compiler","NO NUMBER OF BYTES")+"'"+possible_value+"'")}if(possible_value<0){return asm_langError(context,i18n_get_TagFor("compiler","NO POSITIVE NUMBER")+"'"+possible_value+"'")}for(i=0;i=0){return asm_langError(context,i18n_get_TagFor("compiler","INVALID ALIGN VALUE")+"'"+possible_value+"'. "+i18n_get_TagFor("compiler","REMEMBER ALIGN VAL"))}writememory_and_reset(ret.mp,gen,1);var align_offset=Math.pow(2,parseInt(possible_value));switch(align_offset){case 1:break;case 2:if(gen.byteWord&1==1)gen.byteWord++;break;default:writememory_and_reset(ret.mp,gen,1);while(gen.seg_ptr%align_offset!=0||gen.byteWord!=0){gen.byteWord++;writememory_and_reset(ret.mp,gen,1)}}asm_nextToken(context)}else if(".ascii"==possible_datatype||".asciiz"==possible_datatype||".string"==possible_datatype){asm_nextToken(context);var possible_value=asm_getToken(context);var ret1=treatControlSequences(possible_value);if(true==ret1.error){return asm_langError(context,ret1.string)}possible_value=ret1.string;while(!is_directive(asm_getToken(context))&&!is_end_of_file(context)){writememory_and_reset(ret.mp,gen,1);if('"'!==possible_value[0]){return asm_langError(context,i18n_get_TagFor("compiler","NO QUOTATION MARKS")+"'"+possible_value+"'")}if('"'!==possible_value[possible_value.length-1]){return asm_langError(context,i18n_get_TagFor("compiler","NOT CLOSED STRING"))}if(""==possible_value){return asm_langError(context,i18n_get_TagFor("compiler","NOT CLOSED STRING"))}if("STRING"!=asm_getTokenType(context)){return asm_langError(context,i18n_get_TagFor("compiler","NO QUOTATION MARKS")+"'"+possible_value+"'")}for(i=0;i0){var melto={value:gen.machineCode,source_tracking:gen.track_source,comments:gen.comments};main_memory_set(ret.mp,"0x"+gen.seg_ptr.toString(16),melto);gen.seg_ptr=gen.seg_ptr+WORD_BYTES}ret.seg[seg_name].end=gen.seg_ptr}function read_text(context,datosCU,ret){var seg_name=asm_getToken(context);var seg_ptr=ret.seg[seg_name].begin;var firmware=context.firmware;var pseudoInstructions=context.pseudoInstructions;var finish=[];var isPseudo=false;var pfinish=[];var npseudoInstructions=0;var pseudo_fields={};var counter=-1;var candidate;var error="";var registers={};for(i=0;i=signature_fields[j].length){if("TAG"!=asm_getTokenType(context)&&!firmware[value]&&!is_end_of_file(context)){advance[j]=0}continue}var field=firmware[instruction][j].fields[i];var size=field.startbit-field.stopbit+1;var label_found=false;var sel_found=false;switch(field.type){case"address":case"inm":if(isPseudo&&"sel"==value){counter++;var start=pfinish[counter++];var stop=pfinish[counter++];var value=pseudo_fields[pfinish[counter++]];counter++;sel_found=true}var ret1=get_inm_value(value);converted=ret1.number;if(ret1.isDecimal==false&&ret1.isFloat==false){error=i18n_get_TagFor("compiler","NO NUMERIC DATATYPE")+"'"+value+"'";if(value[0]=="'"){advance[j]=0;break}if(!isValidTag(value)){advance[j]=0;break}if(firmware[value]){error=i18n_get_TagFor("compiler","TAG OR INSTRUCTION")+"'"+value+"'";advance[j]=0;break}label_found=true}if(sel_found){if(ret1.isDecimal==true)res=decimal2binary(converted,WORD_LENGTH);else res=float2binary(converted,WORD_LENGTH);if(res[1]<0){return asm_langError(context,"'"+value+"' "+i18n_get_TagFor("compiler","BIGGER THAN")+WORD_LENGTH+" "+i18n_get_TagFor("compiler","BITS"))}if(label_found){s[i+1]=value}else{converted="0".repeat(res[1])+res[0];converted=converted.substring(WORD_LENGTH-start-1,WORD_LENGTH-stop);converted=parseInt(converted,2);s[i+1]="0x"+converted.toString(16)}}if(!label_found){if(ret1.isDecimal==true)var res=decimal2binary(converted,size);else var res=float2binary(converted,size);if(field.type=="address"&&"rel"==field.address_type){res=decimal2binary(converted,size)}}break;case"reg":if(typeof value==="undefined"){error=i18n_get_TagFor("compiler","INS. MISSING FIELD");advance[j]=0;break}var aux=false;if(value.startsWith("(")){if("(reg)"!=signature_fields[j][i]){error=i18n_get_TagFor("compiler","UNEXPECTED (REG)");advance[j]=0;break}if(counter==-1){asm_nextToken(context);value=asm_getToken(context)}else{value=pseudo_fields[pfinish[counter++]]}aux=true}else{if("(reg)"==signature_fields[j][i]){error=i18n_get_TagFor("compiler","EXPECTED (REG)")+"'"+value+"'";advance[j]=0;break}}if(typeof registers[value]==="undefined"){error=i18n_get_TagFor("compiler","EXPECTED REG")+"'"+value+"'";advance[j]=0;break}if(aux){s[i+1]="("+value+")";if(counter==-1){asm_nextToken(context);aux=asm_getToken(context)}else{aux=pfinish[counter++]}if(")"!=aux){error=i18n_get_TagFor("compiler","CLOSE PAREN. NOT FOUND");advance[j]=0;break}}var ret1=isDecimal(registers[value]);converted=ret1.number;var res=decimal2binary(converted,size);value=s[i+1];break;default:return asm_langError(context,i18n_get_TagFor("compiler","UNKNOWN 1")+"'"+field.type+"'")}if(advance[j]==1&&!label_found){if(res[1]<0){if(field.type=="address"&&"rel"==field.address_type){error="Relative value ("+(converted-seg_ptr-WORD_BYTES)+" in decimal)"+i18n_get_TagFor("compiler","NEEDS")+res[0].length+i18n_get_TagFor("compiler","SPACE FOR # BITS")+size+" "+i18n_get_TagFor("compiler","BITS")}else{error="'"+value+"'"+i18n_get_TagFor("compiler","NEEDS")+res[0].length+i18n_get_TagFor("compiler","SPACE FOR # BITS")+size+" "+i18n_get_TagFor("compiler","BITS")}advance[j]=0}}if(advance[j]==1&&!(isPseudo&&counter==-1)){binaryAux[j][i]={num_bits:label_found?false:res[0],free_space:label_found?false:res[1],startbit:field.startbit,stopbit:field.stopbit,rel:label_found?field.address_type:false,islabel:label_found,field_name:value,issel:sel_found,sel_start:start,sel_stop:stop}}}if(sum_array(advance)==0){break}if("TAG"==asm_getTokenType(context)||firmware[value]){break}}for(i=0;i0&&i0&&i==firmware[instruction].length-1){format+=" or "}format+="'"+firmware[instruction][i].signatureUser+"'"}if(format==""){format="'"+instruction+"' "+i18n_get_TagFor("compiler","UNKNOWN MC FORMAT")}var sum_res=sum_array(advance);if(sum_res==0){if(advance.length===1){return asm_langError(context,error+". "+i18n_get_TagFor("compiler","REMEMBER I. FORMAT")+format)}return asm_langError(context,i18n_get_TagFor("compiler","NOT MATCH MICRO")+" "+i18n_get_TagFor("compiler","REMEMBER I. FORMAT")+format+". "+i18n_get_TagFor("compiler","CHECK MICROCODE"))}if(sum_res>1){candidate=get_candidate(advance,firmware[instruction]);if(candidate===false){return asm_langError(context,i18n_get_TagFor("compiler","SEVERAL CANDIDATES")+format)}}if(isPseudo){if(counter==-1){var s_ori=s.join(" ");s_ori=s_ori.trim();var key="";var val="";pseudo_fields={};for(i=0;i1){s_ori=" "}if(pfinish[counter]=="\n"){counter++}}var machineCode=reset_assembly(firmware[instruction][candidate].nwords);machineCode=assembly_co_cop(machineCode,firmware[instruction][candidate].co,firmware[instruction][candidate].cop);var l_addr="";for(i=0;i=0;i--){if(icontext.text.length){break}}ret.seg[seg_name].end=seg_ptr}function simlang_compile_v1(text,datosCU){var context={};context.line=1;context.error=null;context.i=0;context.contadorMC=0;context.etiquetas={};context.labelsNotFound=[];context.instrucciones=[];context.co_cop={};context.registers=[];context.text=text;context.tokens=[];context.token_types=[];context.t=0;context.newlines=[];context.pseudoInstructions=[];context.stackRegister=null;context.firmware={};context.comments=[];for(i=0;i=0;j--){var melto={value:machineCode.substring(j*WORD_LENGTH,(j+1)*WORD_LENGTH),source_tracking:null,comments:null};main_memory_set(ret.mp,"0x"+auxAddr.toString(16),melto);auxAddr+=WORD_BYTES}}if(text_found){if(typeof ret.labels2["main"]==="undefined"&&typeof ret.labels2["kmain"]==="undefined"){return asm_langError(context,i18n_get_TagFor("compiler","NO MAIN OR KMAIN"))}}for(var key in ret.labels2){ret.revlabels2[ret.labels2[key]]=key}for(var skey in ret.seg){ret.revseg.push({begin:parseInt(ret.seg[skey].begin),name:skey})}return ret}function simlang_compile(text,datosCU){return simlang_compile_v1(text,datosCU)}
\ No newline at end of file
diff --git a/ws_dist/min.wepsim_node.js b/ws_dist/min.wepsim_node.js
index 97409c9e2..e2ac75e1e 100644
--- a/ws_dist/min.wepsim_node.js
+++ b/ws_dist/min.wepsim_node.js
@@ -35,7 +35,7 @@
Vuex.Store = class {
} ;
-var WSCFG={};function get_cfg(field){return WSCFG[field].value}function set_cfg(field,value){WSCFG[field].value=value}function update_cfg(field,value){WSCFG[field].value=value;simcore_record_append_new("Set configuration option "+field+" to "+value,'update_cfg("'+field+'","'+value+'");\n');simcore_ga("config","config."+WSCFG.version.value,"config."+WSCFG.version.value+"."+field+"."+value);save_cfg()}function is_cfg_empty(){return Object.keys(WSCFG).length===0}function save_cfg(){try{for(var item in WSCFG){localStorage.setItem("wepsim_"+item,get_cfg(item))}}catch(err){console.log("WepSIM can not save the configuration in a persistent way on this web browser,\n"+"found following error: \n"+err.message)}set_secondary_cfg()}function restore_cfg(){WSCFG=get_primary_cfg();set_secondary_cfg();if(localStorage===null){return}var default_value=null;var saved_value=null;for(var item in WSCFG){if(item==="version"){continue}default_value=get_cfg(item);set_cfg(item,localStorage.getItem("wepsim_"+item));if(WSCFG[item].type!="string"){try{saved_value=JSON.parse(get_cfg(item));set_cfg(item,saved_value)}catch(e){saved_value=null}}if(saved_value===null){set_cfg(item,default_value)}}set_secondary_cfg()}function reset_cfg(){WSCFG=get_primary_cfg();set_secondary_cfg();save_cfg()}function reset_cfg_values(){WSCFG=get_primary_cfg();set_secondary_cfg()}function upgrade_cfg(){var wscfg=get_primary_cfg();var item=null;for(item in wscfg){if(typeof WSCFG[item]==="undefined"){WSCFG[item]=wscfg[item]}if(WSCFG[item].value===null||WSCFG[item].value==="null"){WSCFG[item].value=wscfg[item].value}}if(wscfg.build.value!=WSCFG.build.value){for(item in wscfg){if(wscfg[item].upgrade){WSCFG[item]=wscfg[item]}}}set_secondary_cfg();save_cfg()}function is_mobile(){if(typeof navigator==="undefined"){return false}if(typeof navigator.userAgentData=="undefined"){return false}return navigator.userAgentData.mobile}function is_cordova(){return document.URL.indexOf("http://")===-1&&document.URL.indexOf("https://")===-1}function get_primary_cfg(){var wscfg={version:{upgrade:false,type:"string",value:"2.3.0"},build:{upgrade:true,type:"string",value:"2.3.0.20230415A"},color_data_active:{upgrade:false,type:"string",value:"#0066FF"},color_data_inactive:{upgrade:false,type:"string",value:"#000000"},color_name_active:{upgrade:false,type:"string",value:"#FF0000"},color_name_inactive:{upgrade:false,type:"string",value:"#000000"},size_active:{upgrade:false,type:"float",value:3},size_inactive:{upgrade:false,type:"float",value:1},is_byvalue:{upgrade:false,type:"boolean",value:false},CPUCU_show_graph:{upgrade:true,type:"boolean",value:true},RF_display_format:{upgrade:false,type:"string",value:"unsigned_16_fill"},RF_display_name:{upgrade:false,type:"string",value:"numerical"},MEM_display_format:{upgrade:true,type:"string",value:"unsigned_16_nofill"},MEM_show_segments:{upgrade:true,type:"boolean",value:false},MEM_show_source:{upgrade:true,type:"boolean",value:false},MEM_display_direction:{upgrade:true,type:"string",value:"h2l"},is_editable:{upgrade:false,type:"boolean",value:true},DBG_delay:{upgrade:false,type:"int",value:5},DBG_level:{upgrade:false,type:"string",value:"microinstruction"},DBG_limitins:{upgrade:false,type:"int",value:1e4},DBG_limitick:{upgrade:false,type:"int",value:1e3},DBG_skip_notifycolon:{upgrade:true,type:"boolean",value:false},ICON_theme:{upgrade:false,type:"string",value:"classic"},AS_enable:{upgrade:true,type:"boolean",value:true},AS_delay:{upgrade:true,type:"int",value:500},NOTIF_delay:{upgrade:false,type:"int",value:1e3},CPUCU_size:{upgrade:true,type:"int",value:7},C1C2_size:{upgrade:true,type:"int",value:8},SHOWCODE_label:{upgrade:false,type:"boolean",value:true},SHOWCODE_addr:{upgrade:false,type:"boolean",value:true},SHOWCODE_hex:{upgrade:false,type:"boolean",value:true},SHOWCODE_ins:{upgrade:false,type:"boolean",value:true},SHOWCODE_pins:{upgrade:false,type:"boolean",value:true},ws_mode:{upgrade:false,type:"string",value:"newbie"},ws_action:{upgrade:false,type:"string",value:"checkpoint"},is_interactive:{upgrade:false,type:"boolean",value:true},is_quick_interactive:{upgrade:false,type:"boolean",value:false},ws_idiom:{upgrade:false,type:"string",value:"en"},use_voice:{upgrade:false,type:"boolean",value:false},ws_skin_ui:{upgrade:false,type:"string",value:"classic"},ws_skin_user:{upgrade:false,type:"string",value:"only_asm:of:only_frequent:of"},ws_skin_dark_mode:{upgrade:false,type:"boolean",value:false},editor_theme:{upgrade:false,type:"string",value:"default"},editor_mode:{upgrade:false,type:"string",value:"default"},base_url:{upgrade:true,type:"string",value:"https://acaldero.github.io/wepsim/ws_dist/"},cfg_url:{upgrade:true,type:"string",value:"examples/configuration/default.json"},example_url:{upgrade:true,type:"string",value:"examples/examples_set/default.json"},hw_url:{upgrade:true,type:"string",value:"examples/hardware/hw.json"},max_json_size:{upgrade:true,type:"int",value:1*1024*1024},verbal_verbose:{upgrade:false,type:"string",value:"math"},extended_ui:{upgrade:false,type:"boolean",value:false},use_ga:{upgrade:false,type:"boolean",value:true}};if(is_mobile()){wscfg.NOTIF_delay.value=2e3;wscfg.ICON_theme.value="cat1";wscfg.CPUCU_size.value=7;wscfg.C1C2_size.value=14;wscfg.ws_skin_ui.value="compact"}return wscfg}function set_secondary_cfg(){var dbg_delay=get_cfg("DBG_delay");if(dbg_delay<5){cfg_show_rf_delay=350;cfg_show_eltos_delay=350;cfg_show_main_memory_delay=450;cfg_show_control_memory_delay=360;cfg_show_dbg_ir_delay=300;cfg_show_rf_refresh_delay=120}else{cfg_show_rf_delay=100;cfg_show_eltos_delay=100;cfg_show_main_memory_delay=150;cfg_show_control_memory_delay=120;cfg_show_dbg_ir_delay=100;cfg_show_rf_refresh_delay=30}cfg_show_asmdbg_pc_delay=50;if(dbg_delay<3)cfg_show_asmdbg_pc_delay=150}var ws_cfg_hash={};var ws_cfg_set=[];function cfgset_init(){var url_list=get_cfg("cfg_url");ws_cfg_set=wepsim_url_getJSON(url_list);for(var i=0;i"+index+"/"+ws_records.length+" "+msg)}if(ws_record_pb_obj!==null){var next_pbval=100*index/ws_records.length;ws_record_pb_obj.css("width",next_pbval+"%").attr("aria-valuenow",next_pbval)}}function simcore_record_playAt(index_current,index_last){if(ws_is_playing===false){simcore_record_showMsg(ws_last_played,"Stopped by user.");return}ws_last_played=index_current;if(index_current>=index_last){simcore_record_showMsg(index_last,"Done.");return}if(ws_records[index_current].description==="_pending event_"){simcore_record_playAt(index_current+1,index_last);return}eval(ws_records[index_current].element);var index_next=index_current+1;simcore_record_showMsg(index_next,ws_records[index_current].description);var wait_time=500;if(index_next0&&ws_records[ws_records.length-1].description==="_pending event_"){distance=ws_glowing_time}simcore_record_pushElto("_pending event_",";",distance)}}function simcore_record_resolve_pending(description,elto){if(ws_is_recording===true){var last_pending=ws_records.length;while(last_pending>0){last_pending--;if(ws_records[last_pending].description==="_pending event_"){break}}if(last_pending===0){simcore_record_setTimeBeforeNow(0);simcore_record_append_new(description,elto);return}ws_records[last_pending].description=description;ws_records[last_pending].element=elto;simcore_record_showMsg(0,"Recording...")}}function simcore_record_setTimeBeforeNow(distance){ws_last_time=Date.now()-distance}function simcore_record_addTimeAfterLast(distance){ws_last_time=ws_last_time+distance}function array_includes(arr,val){if(typeof arr.includes!="undefined"){return arr.includes(val)}for(var i=0;i0){e=i;n=n+1}}if(n>0){var tri_state_names=simhw_internalState("tri_state_names");var tri_name=tri_state_names[e];update_draw(simhw_sim_signal(tri_name),1)}if(n>1){update_bus_visibility("internalbus_fire","visible");simhw_internalState_set("fire_visible","internalbus",true);simhw_sim_state("BUS_IB").value=4294967295}else{update_bus_visibility("internalbus_fire","hidden");simhw_internalState_set("fire_visible","internalbus",false)}return n}function update_system_bus_fire(number_active_tri){if(simhw_internalState_get("fire_visible","databus")==true){update_bus_visibility("databus_fire","hidden");simhw_internalState_set("fire_visible","databus",false)}if(number_active_tri>1){update_bus_visibility("databus_fire","visible");simhw_internalState_set("fire_visible","databus",true);simhw_sim_state("BUS_DB").value=4294967295}return number_active_tri}function fn_updateE_now(key){if("E"==simhw_sim_signal(key).type){update_state(key)}}function fn_updateE_future(key){if(jit_fire_ndep[key]<1)fn_updateE_now(key);else return new Promise((function(resolve,reject){fn_updateE_now(key)}))}function fn_updateL_now(key){update_draw(simhw_sim_signal(key),simhw_sim_signal(key).value);if("L"==simhw_sim_signal(key).type){update_state(key)}}function fn_updateL_future(key){if(jit_fire_ndep[key]<1)fn_updateL_now(key);else return new Promise((function(resolve,reject){fn_updateL_now(key)}))}function update_state(key){var index_behavior=0;switch(simhw_sim_signal(key).behavior.length){case 0:return;break;case 1:index_behavior=0;break;default:index_behavior=simhw_sim_signal(key).value;if(simhw_sim_signal(key).behavior.lengthreg_maddr){break}assoc_i=i}if(-1==assoc_i){ws_alert("A new 'unknown' instruction is inserted,\n"+"please edit it (co, nwords, etc.) in the firmware textarea.");var new_ins=new Object;new_ins["name"]="unknown";new_ins["signature"]="unknown";new_ins["signatureGlobal"]="unknown";new_ins["co"]=0;new_ins["nwords"]=0;new_ins["mc-start"]=0;new_ins["fields"]=new Array;new_ins["microcode"]=new Array;new_ins["microcomments"]=new Array;SIMWARE["firmware"].push(new_ins);assoc_i=SIMWARE["firmware"].length-1}var pos=reg_maddr-parseInt(SIMWARE["firmware"][assoc_i]["mc-start"]);if(typeof SIMWARE["firmware"][assoc_i]["microcode"][pos]=="undefined"){SIMWARE["firmware"][assoc_i]["microcode"][pos]=new Object;SIMWARE["firmware"][assoc_i]["microcomments"][pos]=""}SIMWARE["firmware"][assoc_i]["microcode"][pos][key]=simhw_sim_signal(key).value;if(simhw_sim_signal(key).default_value==simhw_sim_signal(key).value){delete SIMWARE["firmware"][assoc_i]["microcode"][pos][key]}var bits=get_value(simhw_sim_state("REG_IR")).toString(2);bits="00000000000000000000000000000000".substring(0,32-bits.length)+bits;show_memories_values()}function propage_signal_update(key){if(true===get_cfg("is_interactive")){if(simhw_sim_signal(key).value!=simhw_sim_signal(key).default_value)simhw_sim_state("REG_MICROINS").value[key]=simhw_sim_signal(key).value;else delete simhw_sim_state("REG_MICROINS").value[key];var maddr_name=simhw_sim_ctrlStates_get().mpc.state;var curr_maddr=get_value(simhw_sim_state(maddr_name));var mc_obj=simhw_internalState("MC");var mcelto=control_memory_get(mc_obj,curr_maddr);if(typeof mcelto==="undefined"){mcelto={value:{},comments:null}}mcelto.value[key]=simhw_sim_signal(key).value;mcelto.comments=[];control_memory_set(mc_obj,curr_maddr,mcelto);update_signal_firmware(key);var SIMWARE=get_simware();document.getElementById("inputFirmware").value=saveFirmware(SIMWARE)}compute_behavior("FIRE "+key)}function update_memories(preSIMWARE){var i=0;set_simware(preSIMWARE);var SIMWARE=get_simware();simhw_internalState_reset("MC",{});var mc_obj=simhw_internalState("MC");var mcelto=null;for(i=0;i>23&255)-127;var mantissa=1+(hexvalue&8388607)/8388608;var valuef=sign*mantissa*Math.pow(2,exponent);if(-127===exponent)if(1===mantissa)valuef=sign===1?"+0":"-0";else valuef=sign*((hexvalue&8388607)/8388607)*Math.pow(2,-126);if(128===exponent)if(1===mantissa)valuef=sign===1?"+Inf":"-Inf";else valuef="NaN";return valuef}function uint_to_float32(value){var buf=new ArrayBuffer(4);new Uint32Array(buf)[0]=value;return new Float32Array(buf)[0]}function float32_to_uint(value){var buf=new ArrayBuffer(4);new Float32Array(buf)[0]=value;return new Uint32Array(buf)[0]}function float_class(a){var s=a&2147483648;s=s>>31;var e=a&2139095040;e=e>>23;var m=a&8388607;let rd=0;if(!m&&!e){rd=s?3:4}else if(!e){rd=s?2:6}else if(!(e^255)){if(m)rd=s?8:9;else rd=s?0:7}else{rd=s?1:5}return rd}function float_class_power2(a){var s=a&2147483648;s=s>>31;var e=a&2139095040;e=e>>23;var m=a&8388607;let rd=0;if(!m&&!e){rd=s?1<<3:1<<4}else if(!e){rd=s?1<<2:1<<6}else if(!(e^255)){if(m)rd=s?1<<8:1<<9;else rd=s?1<<0:1<<7}else{rd=s?1<<1:1<<5}return rd}function hex2char8(hexvalue){var valuec=[];valuec[0]=String.fromCharCode((hexvalue&4278190080)>>24);valuec[1]=String.fromCharCode((hexvalue&16711680)>>16);valuec[2]=String.fromCharCode((hexvalue&65280)>>8);valuec[3]=String.fromCharCode((hexvalue&255)>>0);return valuec}function simcoreui_pack(val,pack_size){var base_str="0".repeat(pack_size);return base_str.substring(0,pack_size-val.length)+val}function hex2bin(hexvalue){var valuebin=hexvalue.toString(2);valuebin=simcoreui_pack(valuebin,32);valuebin=valuebin.substring(0,4)+" "+valuebin.substring(4,8)+" "+valuebin.substring(8,12)+" "+valuebin.substring(12,16)+" "+valuebin.substring(16,20)+" "+valuebin.substring(20,24)+" "+valuebin.substring(24,28)+" "+valuebin.substring(28,32);return valuebin}function value2string(format,value){var fmt_value="";var fmt=format.split("_");switch(fmt[0]){case"unsigned":fmt_value=value.toString(fmt[1]).toUpperCase();break;case"float":fmt_value=hex2float(value);break;case"char":fmt_value="'"+String.fromCharCode(value)+"'";break;default:fmt_value=value.toString()}if(fmt[2]==="fill"){fmt_value=simcoreui_pack(fmt_value,8)}return fmt_value}function show_rf_names(){return simcore_action_ui("CPU",0,"show_rf_names")()}function get_screen_content(){return simcore_action_ui("SCREEN",0,"get_screen_content")()}function set_screen_content(screen){simcore_action_ui("SCREEN",0,"set_screen_content")(screen)}function get_keyboard_content(){return simcore_action_ui("KBD",0,"get_keyboard_content")()}function set_keyboard_content(keystrokes){simcore_action_ui("KBD",0,"set_keyboard_content")(keystrokes)}function show_main_memory(memory,index,redraw,updates){return simcore_action_ui("MEMORY",0,"show_main_memory")(memory,index,redraw,updates)}function show_control_memory(memory,index,redraw){return simcore_action_ui("MEMORY",0,"show_control_memory")(memory,index,redraw)}function show_cache_memory(memory){return simcore_action_ui("MEMORY",0,"show_cache_memory")(memory)}function show_memories_values(){var pc_name=simhw_sim_ctrlStates_get().pc.state;var reg_pc=get_value(simhw_sim_state(pc_name));show_main_memory(simhw_internalState("MP"),reg_pc,true,true);var maddr_name=simhw_sim_ctrlStates_get().mpc.state;var reg_maddr=get_value(simhw_sim_state(maddr_name));show_control_memory(simhw_internalState("MC"),reg_maddr,true);show_cache_memory(simhw_internalState("CM"))}function update_draw(obj,value){return simcore_action_ui("CPU",1,"update_draw")(obj,value)}function update_bus_visibility(bus_name,value){return simcore_action_ui("CPU",1,"update_bus_visibility")(bus_name,value)}function refresh(){for(var key in simhw_sim_signals()){update_draw(simhw_sim_signals()[key],simhw_sim_signals()[key].value)}show_dbg_ir(get_value(simhw_sim_state("REG_IR_DECO")))}function show_dbg_ir(value){return simcore_action_ui("MEMORY",0,"show_dbg_ir")(value)}function show_dbg_mpc(){return simcore_action_ui("MEMORY",0,"show_dbg_mpc")()}function show_asmdbg_pc(){return simcore_action_ui("MEMORY",0,"show_asmdbg_pc")()}function ws_alert(msg){if(typeof document==="undefined"){console.log(msg);return true}alert(msg);return true}function element_scroll_get(list_id){var offset=0;var obj_byid=$(list_id);if(obj_byid.length>0){offset=obj_byid[0].scrollTop}return offset}function element_scroll_set(list_id,offset){var obj_byid=$(list_id);if(obj_byid.length>0){obj_byid[0].scrollTop=offset}}function element_scroll_setRelative(list_id,obj_id,offset){var obj_byid=$(obj_id);if(obj_byid.length>0){var topPos=obj_byid[0].offsetTop;element_scroll_set(list_id,topPos+offset)}}var colors_schemes={color14:["#000000","#FFFFFF","#FF0000","#FF8800","#FFFF00","#88FF00","#00FF00","#00FF88","#00FFFF","#0088FF","#0000FF","#8800FF","#FF00FF","#FF0088"],color16:["#000000","#FFFFFF","#9D9D9D","#BE2633","#E06F8B","#493C2B","#A46422","#EB8931","#F7E26B","#2F484E","#44891A","#A3CE27","#1B2632","#005784","#31A2F2","#B2DCEF"],color256:["#000000","#800000","#008000","#808000","#000080","#800080","#008080","#c0c0c0","#808080","#ff0000","#00ff00","#ffff00","#0000ff","#ff00ff","#00ffff","#ffffff","#000000","#00005f","#000087","#0000af","#0000d7","#0000ff","#005f00","#005f5f","#005f87","#005faf","#005fd7","#005fff","#008700","#00875f","#008787","#0087af","#0087d7","#0087ff","#00af00","#00af5f","#00af87","#00afaf","#00afd7","#00afff","#00d700","#00d75f","#00d787","#00d7af","#00d7d7","#00d7ff","#00ff00","#00ff5f","#00ff87","#00ffaf","#00ffd7","#00ffff","#5f0000","#5f005f","#5f0087","#5f00af","#5f00d7","#5f00ff","#5f5f00","#5f5f5f","#5f5f87","#5f5faf","#5f5fd7","#5f5fff","#5f8700","#5f875f","#5f8787","#5f87af","#5f87d7","#5f87ff","#5faf00","#5faf5f","#5faf87","#5fafaf","#5fafd7","#5fafff","#5fd700","#5fd75f","#5fd787","#5fd7af","#5fd7d7","#5fd7ff","#5fff00","#5fff5f","#5fff87","#5fffaf","#5fffd7","#5fffff","#870000","#87005f","#870087","#8700af","#8700d7","#8700ff","#875f00","#875f5f","#875f87","#875faf","#875fd7","#875fff","#878700","#87875f","#878787","#8787af","#8787d7","#8787ff","#87af00","#87af5f","#87af87","#87afaf","#87afd7","#87afff","#87d700","#87d75f","#87d787","#87d7af","#87d7d7","#87d7ff","#87ff00","#87ff5f","#87ff87","#87ffaf","#87ffd7","#87ffff","#af0000","#af005f","#af0087","#af00af","#af00d7","#af00ff","#af5f00","#af5f5f","#af5f87","#af5faf","#af5fd7","#af5fff","#af8700","#af875f","#af8787","#af87af","#af87d7","#af87ff","#afaf00","#afaf5f","#afaf87","#afafaf","#afafd7","#afafff","#afd700","#afd75f","#afd787","#afd7af","#afd7d7","#afd7ff","#afff00","#afff5f","#afff87","#afffaf","#afffd7","#afffff","#d70000","#d7005f","#d70087","#d700af","#d700d7","#d700ff","#d75f00","#d75f5f","#d75f87","#d75faf","#d75fd7","#d75fff","#d78700","#d7875f","#d78787","#d787af","#d787d7","#d787ff","#d7af00","#d7af5f","#d7af87","#d7afaf","#d7afd7","#d7afff","#d7d700","#d7d75f","#d7d787","#d7d7af","#d7d7d7","#d7d7ff","#d7ff00","#d7ff5f","#d7ff87","#d7ffaf","#d7ffd7","#d7ffff","#ff0000","#ff005f","#ff0087","#ff00af","#ff00d7","#ff00ff","#ff5f00","#ff5f5f","#ff5f87","#ff5faf","#ff5fd7","#ff5fff","#ff8700","#ff875f","#ff8787","#ff87af","#ff87d7","#ff87ff","#ffaf00","#ffaf5f","#ffaf87","#ffafaf","#ffafd7","#ffafff","#ffd700","#ffd75f","#ffd787","#ffd7af","#ffd7d7","#ffd7ff","#ffff00","#ffff5f","#ffff87","#ffffaf","#ffffd7","#ffffff","#080808","#121212","#1c1c1c","#262626","#303030","#3a3a3a","#444444","#4e4e4e","#585858","#626262","#6c6c6c","#767676","#808080","#8a8a8a","#949494","#9e9e9e","#a8a8a8","#b2b2b2","#bcbcbc","#c6c6c6","#d0d0d0","#dadada","#e4e4e4","#eeeeee"]};function colors_clone(cs){var colors=colors_schemes[cs];if(typeof colors=="undefined"){colors=colors_schemes["color16"]}return colors.map((x=>x))}function simcore_init(with_ui){var ret={};ret.msg="";ret.ok=true;if(with_ui){restore_cfg()}else{reset_cfg_values()}return ret}function simcore_init_hw(simhw_name){var ret={};ret.msg="";ret.ok=true;var hwid=simhw_getIdByName(simhw_name);if(hwid<0){ret.msg="ERROR: unknown hardware: "+simhw_name+". \n";ret.ok=false;return ret}simhw_setActive(hwid);var ret1=simcore_init_ui({});if(false===ret1.ok){ret.msg=ret.msg;ret.ok=false;return ret}return ret}function simcore_welcome(){var ret={};ret.msg="";ret.ok=true;console.log("");console.log("██╗ ██╗███████╗██████╗ ███████╗██╗███╗ ███╗");console.log("██║ ██║██╔════╝██╔══██╗██╔════╝██║████╗ ████║");console.log("██║ █╗ ██║█████╗ ██████╔╝███████╗██║██╔████╔██║");console.log("██║███╗██║██╔══╝ ██╔═══╝ ╚════██║██║██║╚██╔╝██║");console.log("╚███╔███╔╝███████╗██║ ███████║██║██║ ╚═╝ ██║");console.log(" ╚══╝╚══╝ ╚══════╝╚═╝ ╚══════╝╚═╝╚═╝ ╚═╝");console.log("");console.log("Stable: https://github.com/wepsim/wepsim");console.log("Beta: https://github.com/acaldero/wepsim");console.log("");return ret}function simcore_init_ui(hash_detail2init){var ret={};ret.msg="";ret.ok=true;var detail_id=0;var sim_components=simhw_sim_components();for(var elto in sim_components){sim_components[elto].details_ui=[];for(var index in sim_components[elto].details_name){sim_components[elto].details_ui[index]={};detail_id=sim_components[elto].details_name[index];if(typeof hash_detail2init[detail_id]!=="undefined"){sim_components[elto].details_ui[index]=hash_detail2init[detail_id];sim_components[elto].details_ui[index].init()}}}return ret}function simcore_action_ui(component_name,detail_id,action_name){var sim_components=simhw_sim_components();if(typeof sim_components[component_name].details_ui[detail_id][action_name]==="undefined"){return simcore_do_nothing_handler}return sim_components[component_name].details_ui[detail_id][action_name]}function simcore_init_eventlistener(context,hash_detail2action,hash_signal2action){var context_obj=null;var r=[];var o=null;context_obj=document.getElementById(context).contentDocument;if(null==context_obj){console.log('warning: unreferenced graphic element context named "'+r[0]+'".');return}var sim_signals=simhw_sim_signals();for(var key in sim_signals){if(typeof hash_signal2action[key+"click"]==="undefined"){hash_signal2action[key+"click"]=function(key_value){return function(){hash_signal2action[""](key_value,"click")}}(key)}if(typeof hash_signal2action[key+"dblclick"]==="undefined"){hash_signal2action[key+"dblclick"]=function(key_value){return function(){hash_signal2action[""](key_value,"dblclick")}}(key)}for(var j=0;j\n"+"Please load some assembly code. ";ret.ok=false;return ret}var SIMWARE=get_simware();if(!(typeof curr_segments[".ktext"]!="undefined"&&SIMWARE.labels2.kmain)&&!(typeof curr_segments[".text"]!="undefined"&&SIMWARE.labels2.main)){ret.msg="labels 'kmain' (in .ktext) or 'main' (in .text) do not exist!";ret.ok=false;return ret}return ret}function simcore_packerror_at(reg_maddr,msg){var ret={};var hex_maddr="0x"+parseInt(reg_maddr).toString(16);ret.ok=false;ret.msg=msg+" at maddr="+hex_maddr+".";return ret}function simcore_check_if_can_continue2(reg_maddr,reg_pc){var ret={};ret.ok=true;ret.msg="";var curr_MC=simhw_internalState("MC");var mcelto=control_memory_get(curr_MC,reg_maddr);if(typeof mcelto==="undefined"){return simcore_packerror_at(reg_maddr,"Error: undefined microinstruction")}if(simhw_internalState_get("fire_visible","databus")==true||simhw_internalState_get("fire_visible","internalbus")==true){return simcore_packerror_at(reg_maddr,"Error: two or more tri-states are active")}var curr_segments=simhw_internalState("segments");if(reg_pc=curr_segments[".ktext"].begin){return ret}if(reg_pc=curr_segments[".text"].begin){return ret}if(mcelto.is_native&&0===reg_maddr){if(reg_pc==curr_segments[".ktext"].end||reg_pc==curr_segments[".text"].end){return ret}}if(false==mcelto.is_native&&0!==reg_maddr){if(reg_pc==curr_segments[".ktext"].end||reg_pc==curr_segments[".text"].end){return ret}}ret.ok=false;ret.msg="The program has finished because the PC register points outside .ktext/.text code segments";return ret}function simcore_check_if_can_continue(){var pc_name=simhw_sim_ctrlStates_get().pc.state;var reg_pc=parseInt(get_value(simhw_sim_state(pc_name)));var maddr_name=simhw_sim_ctrlStates_get().mpc.state;var reg_maddr=get_value(simhw_sim_state(maddr_name));return simcore_check_if_can_continue2(reg_maddr,reg_pc)}function simcore_reset(){var ret={};ret.msg="";ret.ok=true;var SIMWARE=get_simware();var curr_firm=simhw_internalState("FIRMWARE");var curr_segments=simhw_internalState("segments");var curr_MC=simhw_internalState("MC");var sim_components=simhw_sim_components();var ctrl_states=simhw_sim_ctrlStates_get();var pc_name=ctrl_states.pc.state;var pc_state=simhw_sim_state(pc_name);var sp_name=ctrl_states.sp.state;var sp_state=simhw_sim_state(sp_name);if(curr_firm.stackRegister!=null){sp_name=curr_firm.stackRegister;sp_state=simhw_sim_states().BR[sp_name];ctrl_states.sp.state="BR."+curr_firm.stackRegister}for(var elto in sim_components){var reset_signal_name=sim_components[elto].name+"_RESET";compute_general_behavior(reset_signal_name)}if(typeof curr_segments[".ktext"]!=="undefined"&&SIMWARE.labels2.kmain){set_value(pc_state,parseInt(SIMWARE.labels2.kmain));show_asmdbg_pc()}else if(typeof curr_segments[".text"]!=="undefined"&&SIMWARE.labels2.main){set_value(pc_state,parseInt(SIMWARE.labels2.main));show_asmdbg_pc()}if(typeof curr_segments[".stack"]!=="undefined"&&typeof sp_state!=="undefined"){set_value(sp_state,parseInt(curr_segments[".stack"].end)&4294967292)}var new_maddr=get_value(simhw_sim_state("MUXA_MICROADDR"));var mcelto=control_memory_get(curr_MC,new_maddr);if(typeof mcelto==="undefined"){mcelto={value:simhw_sim_state("REG_MICROINS").default_value,is_native:false}}var new_mins=get_value(mcelto);if(false==mcelto.is_native){compute_general_behavior("CLOCK")}show_dbg_ir(get_value(simhw_sim_state("REG_IR_DECO")));for(elto in sim_components){for(var index in sim_components[elto].details_name){if(typeof sim_components[elto].details_ui[index].reset!=="undefined"){sim_components[elto].details_ui[index].reset()}}}return ret}function simcore_execute_microinstruction(){var ret=simcore_check_if_can_continue();if(false===ret.ok){return ret}compute_general_behavior("CLOCK");show_dbg_mpc();return ret}function simcore_execute_microinstruction2(reg_maddr,reg_pc){var ret=simcore_check_if_can_continue2(reg_maddr,reg_pc);if(false===ret.ok){return ret}compute_general_behavior("CLOCK");show_dbg_mpc();return ret}function simcore_execute_microprogram(options){var ret=simcore_check_if_can_continue();if(false===ret.ok){return ret}var before_state=null;var after_state=null;var curr_mpc="";var curr_MC=simhw_internalState("MC");var maddr_name=simhw_sim_ctrlStates_get().mpc.state;var maddr_state=simhw_sim_state(maddr_name);if(typeof options.before_microinstruction==="undefined"){options.before_microinstruction=simcore_do_nothing_handler}if(typeof options.after_microinstruction==="undefined"){options.after_microinstruction=simcore_do_nothing_handler}var i_clks=0;var limitless=options.cycles_limit<0;var cur_addr=0;var mcelto=null;var oolimits=false;do{options.before_microinstruction(curr_MC,cur_addr);compute_general_behavior("CLOCK");i_clks++;options.after_microinstruction(curr_MC,cur_addr);if(limitless===false&&i_clks>=options.cycles_limit){ret.msg="Warning: clock cycles limit reached in a single instruction.";ret.ok=false;break}cur_addr=get_value(maddr_state);mcelto=control_memory_get(curr_MC,cur_addr);if(typeof mcelto==="undefined"){ret.msg="Error: undefined microinstruction at "+cur_addr+".";ret.ok=false;break}if(i_clks>=options.cycles_limit&&-1!=options.cycles_limit){oolimits=true}}while(false==oolimits&&0!=cur_addr);if(true==ret.ok&&mcelto.is_native){compute_general_behavior("CLOCK")}if(get_cfg("DBG_level")=="microinstruction"){show_dbg_mpc()}return ret}function simcore_execute_program(options){var ret={};ret.ok=true;ret.msg="";var curr_segments=simhw_internalState("segments");var pc_name=simhw_sim_ctrlStates_get().pc.state;var pc_state=simhw_sim_state(pc_name);var reg_pc=get_value(pc_state);var reg_pc_before=get_value(pc_state)-4;var code_begin=0;if(typeof curr_segments[".text"]!="undefined"&&typeof curr_segments[".text"].begin!="undefined")code_begin=parseInt(curr_segments[".text"].begin);var code_end=0;if(typeof curr_segments[".text"]!="undefined"&&typeof curr_segments[".text"].end!="undefined")code_end=parseInt(curr_segments[".text"].end);var kcode_begin=0;if(typeof curr_segments[".ktext"]!="undefined"&&typeof curr_segments[".ktext"].begin!="undefined")kcode_begin=parseInt(curr_segments[".ktext"].begin);var kcode_end=0;if(typeof curr_segments[".ktext"]!="undefined"&&typeof curr_segments[".ktext"].end!="undefined")kcode_end=parseInt(curr_segments[".ktext"].end);var ret1=null;var before_state=null;var after_state=null;var curr_pc="";var SIMWARE=get_simware();if(typeof options.verbalize!=="undefined"){set_cfg("verbal_verbose",options.verbalize)}if(typeof options.before_instruction==="undefined"){options.before_instruction=simcore_do_nothing_handler}if(typeof options.after_instruction==="undefined"){options.after_instruction=simcore_do_nothing_handler}var ins_executed=0;while(reg_pc=code_begin||reg_pc=kcode_begin){options.before_instruction(SIMWARE,reg_pc);ret1=simcore_execute_microprogram(options);if(false===ret1.ok){return ret1}options.after_instruction(SIMWARE,reg_pc);ins_executed++;if(ins_executed>options.instruction_limit&&-1!=options.instruction_limit){ret.ok=false;ret.msg="more than "+options.instruction_limit+" instructions executed before application ends.";return ret}reg_pc_before=reg_pc;reg_pc=get_value(pc_state)}return ret}function simcore_do_nothing_handler(){return null}function simcore_compile_firmware(textToMCompile){var ret={};ret.msg="";ret.ok=true;if(""==textToMCompile){ret.msg="Empty Firmware";ret.ok=false;return ret}var preSM=null;try{preSM=loadFirmware(textToMCompile);ret.simware=preSM}catch(e){ret.msg="ERROR: at line: "+e.lineNumber+" and column: "+e.columnNumber;ret.ok=false;return ret}if(preSM.error!=null){ret.msg=preSM.error;ret.ok=false;return ret}update_memories(preSM);simcore_reset();return ret}function simcore_compile_assembly(textToCompile){var ret={};ret.msg="";ret.ok=true;var SIMWARE=get_simware();if(SIMWARE.firmware.length===0){ret.msg="Empty microcode, please load the microcode first.";ret.ok=false;return ret}var SIMWAREaddon=simlang_compile(textToCompile,SIMWARE);ret.simware=SIMWAREaddon;if(SIMWAREaddon.error!=null){ret.msg=SIMWAREaddon.error;ret.ok=false;return ret}set_simware(SIMWAREaddon);update_memories(SIMWARE);simcore_reset();return ret}function simcore_hardware_export(hw_name){var ret={};ret.msg="{}";ret.ok=false;var hw_obj=simhw_getObjByName(hw_name);if(null===hw_obj){return ret}ret.ok=true;ret.msg=JSON.stringify(hw_obj,(function(key,value){if(typeof value==="function"){return"/Function("+value.toString()+")/"}return value}));return ret}function simcore_hardware_import(hw_json){var ret={};ret.msg="";ret.ok=true;hw_obj=JSON.parse(hw_json,(function(key,value){if(typeof value==="string"&&value.startsWith("/Function(")&&value.endsWith(")/")){value=value.substring(10,value.length-2);return eval("("+value+")")}return value}));simhw_add(hw_obj);return ret}function simcore_native_get_signal(elto){return get_value(simhw_sim_signal(elto))>>>0}function simcore_native_set_signal(elto,value){set_value(simhw_sim_signal(elto),value);compute_behavior("FIRE "+elto);return value}function simcore_native_get_value(component,elto){var index=0;var sim_components=simhw_sim_components();var compo_index=component;if("BR"===component)compo_index="CPU";if("DEVICE"===component)compo_index="IO";if(typeof sim_components[compo_index].get_value!=="undefined"){return sim_components[compo_index].get_value(elto)}return false}function simcore_native_set_value(component,elto,value){var index=0;var sim_components=simhw_sim_components();var compo_index=component;if("BR"===component)compo_index="CPU";if("DEVICE"===component)compo_index="IO";if(typeof sim_components[compo_index].set_value!=="undefined"){return sim_components[compo_index].set_value(elto,value)}return false}function simcore_native_get_fields(signature_raw){var SIMWARE=get_simware();for(var key in SIMWARE.firmware){if(SIMWARE.firmware[key].signatureRaw===signature_raw){return SIMWARE.firmware[key].fields}}}function simcore_native_get_field_from_ir(fields,index){if(typeof fields[index]==="undefined"){ws_alert("simcore_native_get_field_from_ir: index ("+index+") out of range.");return false}var value=get_value(simhw_sim_state("REG_IR"));var left_shift=31-parseInt(fields[index].startbit);var right_shift=parseInt(fields[index].stopbit);value=value<>>left_shift;value=value>>>right_shift;return value}function simcore_native_deco(){compute_behavior("DECO")}function simcore_native_go_maddr(maddr){set_value(simhw_sim_state("MUXA_MICROADDR"),maddr)}function simcore_native_go_opcode(){var maddr=get_value(simhw_sim_state("ROM_MUXA"));set_value(simhw_sim_state("MUXA_MICROADDR"),maddr)}function simcore_native_go_instruction(signature_raw){var SIMWARE=get_simware();for(var key in SIMWARE.firmware){if(SIMWARE.firmware[key].signatureRaw===signature_raw){var maddr=SIMWARE.firmware[key]["mc-start"];set_value(simhw_sim_state("MUXA_MICROADDR"),maddr);return}}}function simcore_simstate_checklist2state(checklist){var o={};var ret=false;checklist=checklist.replace(/;|==|!=|>=|<=|=|>|v!=""));for(var i=0;i"===expected_result[compo][elto].op)diff.fulfill=parseInt(diff.obtained)>parseInt(diff.expected);else if("<"===expected_result[compo][elto].op)diff.fulfill=parseInt(diff.obtained)="===expected_result[compo][elto].op)diff.fulfill=parseInt(diff.obtained)>=parseInt(diff.expected);else if("<="===expected_result[compo][elto].op)diff.fulfill=parseInt(diff.obtained)<=parseInt(diff.expected);else if("=="===expected_result[compo][elto].op)diff.fulfill=diff.expected==diff.obtained;else if("!="===expected_result[compo][elto].op)diff.fulfill=diff.expected!=diff.obtained;d.result.push(diff);if(diff.fulfill===false)d.errors++}}if(newones_too&&typeof obtained_result[compo]!="undefined"){for(elto in obtained_result[compo]){d.neltos_obtained++;if(typeof expected_result[compo]!="undefined"&&typeof expected_result[compo][elto]!="undefined"){continue}diff={};diff.expected=obtained_result[compo][elto].default_value;diff.obtained=obtained_result[compo][elto].value;diff.fulfill=diff.expected===diff.obtained;diff.elto_type=compo.toLowerCase();diff.elto_id=obtained_result[compo][elto].id;diff.elto_op="=";d.result.push(diff);if(diff.fulfill===false)d.errors++}}}return d}function simcore_simstate_diff_results(expected_result,obtained_result){return simcore_simstate_check_results(expected_result,obtained_result,true)}function simcore_simstate_diff_states(before_state_obj,after_state_obj){var before_arr=simcore_simstate_state2checklist(before_state_obj,"").split(";");var after_arr=simcore_simstate_state2checklist(after_state_obj,"").split(";");return after_arr.filter((function(elto){return!before_arr.includes(elto)})).join(";").trim()}function simcore_simstate_checkreport2txt(checklist){var o="";for(var i=0;i"+""+""+"Type "+"Identification Id. "+"Values in the clipboard state "+"Values in the selected state "+" "+" "+"";for(var i=0;i"+""+checklist[i].elto_type+" "+""+checklist[i].elto_id+" "+""+checklist[i].elto_op+" "+checklist[i].expected+" "+""+checklist[i].obtained+" "+""}o+=" "+"";return o}function simcore_voice_canSpeak(){if(typeof window.speechSynthesis=="undefined"){return false}if(false===get_cfg("use_voice")){return false}return true}function simcore_voice_speak(msg){var ssu=null;if(simcore_voice_canSpeak()){ssu=new SpeechSynthesisUtterance(msg);ssu.lang="es-ES";if("en"==get_cfg("ws_idiom"))ssu.lang="en-US";if("es"==get_cfg("ws_idiom"))ssu.lang="es-EN";window.speechSynthesis.speak(ssu)}}function simcore_voice_stopSpeak(){if(simcore_voice_canSpeak()){window.speechSynthesis.cancel()}}var simcore_rest={};function simcore_rest_reset(){simcore_rest={}}function simcore_rest_add(name,description){simcore_rest[name]={endpoint:description.endpoint,user:description.user,pass:description.pass,last_request:null}}function simcore_rest_list(){return simcore_rest}function simcore_rest_get(name){return simcore_rest[name]}function simcore_rest_call(name,method,uri,data){var rest_info=simcore_rest[name];if(typeof rest_info==="undefined"){return false}var api_endpoint=rest_info.endpoint;if(api_endpoint.value instanceof Vuex.Store){api_endpoint=get_value(api_endpoint)}if(api_endpoint.trim()===""){return false}var basic_auth="Basic "+btoa(rest_info.user+":"+rest_info.pass);var enc_data=JSON.stringify(data);var request={url:api_endpoint+uri,type:method,contentType:"application/json",accepts:"application/json",cache:false,dataType:"json",data:enc_data,beforeSend:function(xhr){if(rest_info.user.trim()!==""){xhr.setRequestHeader("Authorization",basic_auth)}},error:function(jqXHR){console.log("ajax error "+jqXHR.status)}};rest_info.last_request=$.ajax(request);return true}var simcore_notifications=[];function simcore_notifications_get(){return simcore_notifications}function simcore_notifications_reset(){simcore_notifications=[]}function simcore_notifications_add2(ntf){simcore_notifications.push({title:ntf.title,message:ntf.message,type:ntf.type,date:ntf.date})}function simcore_notifications_add(ntf_title,ntf_message,ntf_type,ntf_delay){simcore_notifications.push({title:$("").html(ntf_title).text(),message:$("
").html(ntf_message).text(),type:ntf_type,date:(new Date).getTime()})}function get_value(sim_obj){if(sim_obj.value instanceof Vuex.Store){return sim_obj.value.state.value}return sim_obj.value}function set_value(sim_obj,value){if(sim_obj.value instanceof Vuex.Store){sim_obj.value.commit("set_value",value);return}var old_value=sim_obj.value;sim_obj.value=value;if(old_value!=value){sim_obj.changed=true}}function reset_value(sim_obj){if(sim_obj.value instanceof Vuex.Store){set_value(sim_obj,sim_obj.default_value);return}if(typeof sim_obj.default_value=="object"){sim_obj.changed=true;sim_obj.value=Object.create(sim_obj.default_value);return}if(sim_obj instanceof Array){sim_obj.changed=true;for(var i=0;i",""":'"',"'":"'"};function treatHTMLSequences(text_with_html){var re=null;var key=null;for(key in html_sequences){re=new RegExp(key,"gi");text_with_html=text_with_html.replace(re,html_sequences[key])}return text_with_html}function control_memory_getkeys(memory){return Object.keys(memory)}function control_memory_get(memory,elto){return memory[elto]}function control_memory_set(memory,elto,melto){if(typeof melto.changed==="undefined")melto.changed=false;if(typeof melto.state==="undefined")melto.state=false;if(typeof melto.breakpoint==="undefined")melto.breakpoint=false;if(typeof melto.notify==="undefined")melto.notify=[];if(typeof melto.is_native==="undefined")melto.is_native=false;var comments_str="";if(null!=melto.comments){comments_str=melto.comments;if(melto.comments instanceof Array)comments_str=melto.comments.join("\n");melto.state=melto.state||comments_str.trim().split("state:").length>1;melto.breakpoint=melto.breakpoint||comments_str.trim().split("break:").length>1;melto.notify=comments_str.trim().split("notify:");for(var k=0;k";if(active_verbal.trim()==="")active_verbal="";return"Activated signals are: "+active_signals+". Associated actions are: "+active_verbal}function main_memory_getkeys(memory){return Object.keys(memory)}function main_memory_get(memory,elto){return memory[elto]}function main_memory_set(memory,elto,melto){if(typeof melto.changed==="undefined")melto.changed=false;if(typeof melto.state==="undefined")melto.state=false;if(typeof melto.breakpoint==="undefined")melto.breakpoint=false;if(typeof melto.notify==="undefined")melto.notify=[];if(typeof melto.is_assembly==="undefined")melto.is_assembly=false;if(typeof melto.source==="undefined")melto.source="";var comments_str="";if(null!=melto.comments){comments_str=melto.comments.join("\n");melto.state=melto.state||comments_str.trim().split("state:").length>1;melto.breakpoint=melto.breakpoint||comments_str.trim().split("break:").length>1;melto.notify=comments_str.trim().split("notify:");for(var k=0;k>8;if(2==filter_elto)dbvalue=(value&16711680)>>16;if(3==filter_elto)dbvalue=(value&4278190080)>>24;break;case 1:if(0==filter_elto)dbvalue=value&65535;if(1==filter_elto)dbvalue=value&65535;if(2==filter_elto)dbvalue=(value&4294901760)>>16;if(3==filter_elto)dbvalue=(value&4294901760)>>16;break;case 2:if(0==filter_elto)dbvalue=value&16777215;if(1==filter_elto)dbvalue=value&4294967040;break;case 3:dbvalue=value;break}return dbvalue}function main_memory_updatevalues(value,dbvalue,filter_size,filter_elto){switch(filter_size){case 0:if(0==filter_elto)value=value&4294967040|dbvalue&255;if(1==filter_elto)value=value&4294902015|(dbvalue&255)<<8;if(2==filter_elto)value=value&4278255615|(dbvalue&255)<<16;if(3==filter_elto)value=value&16777215|(dbvalue&255)<<24;break;case 1:if(0==filter_elto)value=value&4294901760|dbvalue&65535;if(1==filter_elto)value=value&4294901760|dbvalue&65535;if(2==filter_elto)value=value&65535|(dbvalue&65535)<<16;if(3==filter_elto)value=value&65535|(dbvalue&65535)<<16;break;case 2:if(0==filter_elto)value=value&4278190080|dbvalue&16777215;if(1==filter_elto)value=value&255|dbvalue&4294967040;break;case 3:value=dbvalue;break}return value}function main_memory_get_program_counter(){var r_ref=simhw_sim_ctrlStates_get().pc;var r_value=null;if(typeof r_ref!=="undefined"){r_ref=simhw_sim_state(r_ref.state)}if(typeof r_ref!=="undefined"){r_value=get_value(r_ref)}return r_value}function main_memory_get_baseaddr(){var r_ref=simhw_sim_ctrlStates_get();if(typeof r_ref==="undefined"){return null}var parts=null;var r_value=0;var r_ref2=null;var all_baseaddr={};for(var elto in r_ref){if(r_ref[elto].is_pointer==false){continue}parts=r_ref[elto].state.split(".");if(parts[0]=="BR"){r_value=4294967292;r_ref2=simhw_sim_states().BR[parts[1]]}else{r_value=0;r_ref2=simhw_sim_state(r_ref[elto].state)}if(typeof r_ref2!=="undefined"){r_value=get_value(r_ref2)}all_baseaddr[elto]=r_value}return all_baseaddr}function get_deco_from_pc(pc){var mp_obj=simhw_internalState("MP");if(typeof mp_obj==="undefined"||typeof mp_obj[pc]==="undefined"||typeof mp_obj[pc].source==="undefined"){return""}return mp_obj[pc].source}function get_verbal_from_current_pc(){var pc_name=simhw_sim_ctrlStates_get().pc.state;var reg_pc=get_value(simhw_sim_state(pc_name));var pc=parseInt(reg_pc)-4;var decins=get_deco_from_pc(pc);if(""==decins.trim()){decins="not jet defined"}return"Current instruction is: "+decins+" and PC points to "+show_value(pc)+". "}function cache_memory_update_stats(memory,address,parts,r_w,m_h,clock_timestamp){memory.stats.n_access++;memory.stats.last_addr=address;memory.stats.last_parts=parts;memory.stats.last_r_w=r_w;memory.stats.last_h_m=m_h;if(m_h=="miss"){memory.stats.n_misses++}else{memory.stats.n_hits++}memory.sets[parts.set].tags[parts.tag].n_access++;if(r_w=="write"){memory.sets[parts.set].tags[parts.tag].dirty=1}memory.sets[parts.set].tags[parts.tag].timestamp=clock_timestamp}function cache_memory_select_victim(memory,set){var keys=Object.keys(memory.sets[set].tags);var tag_victim=0;if(memory.cfg.replace_pol=="lfu"){tag_victim=keys[0];var tag_naccess=memory.sets[parts.set].tags[tag_victim].n_access;for(var i=1;imemory.sets[parts.set].tags[keys[i]].n_access){tag_victim=keys[i];tag_naccess=memory.sets[parts.set].tags[tag_victim].n_access}}}else if(memory.cfg.replace_pol=="fifo"){tag_victim=keys[0];var tag_stamp=memory.sets[parts.set].tags[tag_victim].timestamp;for(var i=1;imemory.sets[parts.set].tags[keys[i]].timestamp){tag_victim=keys[i];tag_stamp=memory.sets[parts.set].tags[tag_victim].timestamp}}}else if(memory.cfg.replace_pol=="first"){tag_victim=keys[0]}return tag_victim}function cache_memory_init(name,via_size,off_size,set_size,replace_pol,su_pol,next_cache){var c={stats:{},cfg:{},sets:{}};c.cfg.name=name;c.cfg.via_size=via_size;c.cfg.off_size=off_size;c.cfg.set_size=set_size;c.cfg.vps_size=via_size-set_size;c.cfg.tag_size=32-set_size-off_size;c.cfg.mask_tag=Math.pow(2,c.cfg.tag_size)-1>>>0;c.cfg.mask_set=Math.pow(2,c.cfg.set_size)-1>>>0;c.cfg.mask_off=Math.pow(2,c.cfg.off_size)-1>>>0;c.cfg.mask_tag=c.cfg.mask_tag<<32-c.cfg.tag_size>>>0;c.cfg.mask_set=c.cfg.mask_set<>>0;c.cfg.replace_pol=replace_pol;c.cfg.su_pol=su_pol;c.cfg.next_cache=next_cache;c.stats.n_access=0;c.stats.n_hits=0;c.stats.n_misses=0;c.stats.last_addr=0;c.stats.last_parts=cache_memory_split(c,0);c.stats.last_r_w="";c.stats.last_h_m="";return c}function cache_memory_init2(cfg){return cache_memory_init(cfg.name,cfg.via_size,cfg.off_size,cfg.set_size,cfg.replace_pol,cfg.su_pol,cfg.next_cache)}function cache_memory_init3(array_cm_cfg){var array_cm=[];for(var i=0;i>>0;parts.tag=(address&memory.cfg.mask_tag)>>>32-memory.cfg.tag_size;parts.set=(address&memory.cfg.mask_set)>>>memory.cfg.off_size;parts.offset=address&memory.cfg.mask_off;return parts}function cache_memory_access(memory,address,r_w,clock_timestamp){if(memory.cfg.su_pol!="unified"){if("split_i"==memory.cfg.su_pol&&segments_addr_within_text(address)==false){return false}if("split_d"==memory.cfg.su_pol&&segments_addr_within_data(address)==false){return false}}var parts=cache_memory_split(memory,address);if(typeof memory.sets[parts.set]=="undefined"){memory.sets[parts.set]={tags:{},number_tags:0}}if(typeof memory.sets[parts.set].tags[parts.tag]!="undefined"&&memory.sets[parts.set].tags[parts.tag].valid==1){cache_memory_update_stats(memory,address,parts,r_w,"hit",clock_timestamp);return true}if(typeof memory.sets[parts.set].number_tags>3){var tag_victim=cache_memory_select_victim(memory,parts.set);memory.sets[parts.set].tags[tag_victim].valid=0;memory.sets[parts.set].number_tags--}memory.sets[parts.set].tags[parts.tag]={n_access:0,valid:1,dirty:0};memory.sets[parts.set].number_tags++;cache_memory_update_stats(memory,address,parts,r_w,"miss",clock_timestamp);if(memory.cfg.next_cache!=null){cache_memory_access(memory.cfg.next_cache,address,r_w)}return false}var sim={systems:[],active:null,index:0};function simhw_add(newElto){var found=-1;for(var m=0;m=0&&sim.systems.length>=newActive){sim.active=sim.systems[newActive];sim.index=newActive}compile_behaviors();firedep_to_fireorder(jit_fire_dep);compute_references();compile_verbals()}function simhw_getIdByName(short_name){for(var m=0;m>>0).toString(16)}function check_behavior(){if(0==simhw_sim_signals().length){ws_alert("ALERT: empty signals!!!")}if(0==simhw_sim_states().length){ws_alert("ALERT: empty states!!!")}for(var key in simhw_sim_signals()){for(var key2 in simhw_sim_signal(key).behavior){var behaviors=simhw_sim_signal(key).behavior[key2].split(";");for(var i=0;i "+behavior_k[0]+" ("+behavior_i+")");return}if(behavior_k.length!=simhw_syntax_behavior(behavior_k[0]).nparameters){ws_alert("ALERT: Behavior has an incorrect number of elements --\x3e "+behavior_i+"/"+simhw_syntax_behavior(behavior_k[0]).nparameters);return}for(var j=1;j '"+behavior_i);return}else if("S"==t&&typeof simhw_sim_signal(s[0])=="undefined"){ws_alert("ALERT: Behavior has an undefined reference to a signal -> '"+behavior_i);return}else if("X"==t&&typeof simhw_sim_state(s[0])=="undefined"&&typeof simhw_sim_signal(s[0])=="undefined"){ws_alert("ALERT: Behavior has an undefined reference to a object state OR signal -> '"+behavior_i);return}}}}}}var jit_behaviors=false;var jit_verbals=false;var jit_fire_dep=null;var jit_fire_order=null;var jit_dep_network=null;var jit_fire_ndep=null;function firedep_to_fireorder(jit_fire_dep){var allfireto=false;jit_fire_order=[];jit_fire_ndep=[];for(var sig in simhw_sim_signals()){if(typeof jit_fire_dep[sig]=="undefined"){jit_fire_order.push(sig);continue}ndep=0;allfireto=false;for(var sigorg in jit_fire_dep[sig]){ndep++;if(jit_fire_dep[sig][sigorg]==simhw_sim_signal(sigorg).behavior.length){allfireto=true}}jit_fire_ndep[sig]=ndep;if(allfireto==false)jit_fire_order.push(sig)}}function compile_behaviors(){var jit_bes="";jit_fire_dep={};var sig_obj=null;var expr_obj=null;for(var sig in simhw_sim_signals()){jit_bes+="simhw_sim_signal('"+sig+"').behavior_fn = new Array();\n";for(var val in simhw_sim_signal(sig).behavior){var input_behavior=simhw_sim_signal(sig).behavior[val];var jit_be="";var s_exprs=input_behavior.split(";");for(var i=0;i"+v+"";if("Signals"!=enum_name)o+="("+(i+1)+") "+v;else o+="("+(i+1)+") "+hash_eltos[array_eltos[i]].ref+": "+v;if(i!=array_eltos.length-1){o+=str_enditem}}o+=". ";return o}function simhwelto_describe_component_enum(elto_path,array_eltos,hash_eltos,enum_name){var o="";o+=""+i18n_get_TagFor("hw","It has")+" "+" "+array_eltos.length+" "+""+i18n_get_TagFor("hw",enum_name)+" "+": "+simhwelto_describe_component_enum_aux(elto_path,array_eltos,hash_eltos,enum_name,", ");return o}function simhwelto_describe_component(elto_path,elto,format){var o="";o+=elto.description+"."+""+simhwelto_describe_component_enum(elto_path+":states:",elto.states_inputs,elto.states,"inputs")+" "+" "+simhwelto_describe_component_enum(elto_path+":states:",elto.states_outputs,elto.states,"outputs")+" "+" "+simhwelto_describe_component_enum(elto_path+":signals:",elto.signals_inputs,elto.signals,"signals")+" "+" ";if(format!="html"){o.replace(/<[^>]*>?/gm,"")}return o}var ep_def={sim_name:"Elemental Processor",sim_short_name:"ep",sim_img_processor:"examples/hardware/ep/images/processor.svg",sim_img_controlunit:"examples/hardware/ep/images/controlunit.svg",sim_img_cpu:"examples/hardware/ep/images/cpu.svg",components:{},states:{},signals:{},behaviors:{},elements:{},internal_states:{},ctrl_states:{},events:{}};simhw_add(ep_def);sim.ep.behaviors.PRINT_S={nparameters:2,types:["S"],operation:function(s_expr){console.log(s_expr[1]+": 0x"+sim.ep.signals[s_expr[1]].value.toString(16))},verbal:function(s_expr){return"Print value of signal "+s_expr[1]+": 0x"+sim.ep.signals[s_expr[1]].value.toString(16)+". "}};sim.ep.behaviors.PRINT_E={nparameters:2,types:["E"],operation:function(s_expr){console.log(s_expr[1]+": 0x"+sim.ep.states[s_expr[1]].value.toString(16))},verbal:function(s_expr){return"Print value of state "+s_expr[1]+": 0x"+sim.ep.states[s_expr[1]].value.toString(16)+". "}};sim.ep.components["CPU"]={name:"CPU",version:"1",abilities:["CPU"],details_name:["REGISTER_FILE","CONTROL_MEMORY","CLOCK","CPU_STATS"],details_fire:[["svg_p:text3029","svg_p:text3031"],["svg_cu:text3010"],["svg_p:text3459-7","svg_cu:text4138","svg_cu:text4138-7"],["svg_p:text3495"]],write_state:function(vec){if(typeof vec.CPU=="undefined"){vec.CPU={}}var internal_reg=["PC","SR"];var value=0;for(var i=0;i>>0;if(value!=0){vec.CPU["R"+i]={type:"register",default_value:0,id:"R"+i,op:"=",value:"0x"+value.toString(16)}}}for(i=0;i>>0;if(value!=0){vec.CPU[internal_reg[i]]={type:"register",default_value:0,id:internal_reg[i],op:"=",value:"0x"+value.toString(16)}}}return vec},read_state:function(vec,check){if(typeof vec.CPU=="undefined"){vec.CPU={}}var key=check["id"].toUpperCase().trim();var val=parseInt(check["value"]).toString(16);if("REGISTER"==check["type"].toUpperCase().trim()){vec.CPU[key]={type:"register",default_value:0,id:key,op:check["condition"],value:"0x"+val};return true}return false},get_state:function(reg){var value=0;var r_reg=reg.toUpperCase().trim();if(typeof sim.ep.states["REG_"+r_reg]!="undefined"){value=get_value(sim.ep.states["REG_"+r_reg])>>>0;return"0x"+value.toString(16)}r_reg=r_reg.replace("R","");var index=parseInt(r_reg);if(typeof sim.ep.states.BR[index]!="undefined"){value=get_value(sim.ep.states.BR[index])>>>0;return"0x"+value.toString(16)}return null},get_value:function(elto){if(Number.isInteger(elto))index=elto;else index=parseInt(elto);if(isNaN(index))return get_value(simhw_sim_state(elto))>>>0;return get_value(simhw_sim_states().BR[index])>>>0},set_value:function(elto,value){var pc_name=simhw_sim_ctrlStates_get().pc.state;if(Number.isInteger(elto))index=elto;else index=parseInt(elto);if(isNaN(index)){set_value(simhw_sim_state(elto),value);if(pc_name===elto){show_asmdbg_pc()}return value}return set_value(simhw_sim_states().BR[index],value)}};sim.ep.ctrl_states.pc={name:"PC",state:"REG_PC",is_pointer:true};sim.ep.ctrl_states.sp={name:"SP",state:"BR.29",is_pointer:true};sim.ep.ctrl_states.fp={name:"FP",state:"BR.30",is_pointer:true};sim.ep.ctrl_states.ir={name:"IR",state:"REG_IR",default_eltos:{co:{begin:0,end:5,length:6},cop:{begin:28,end:31,length:4}},is_pointer:false};sim.ep.ctrl_states.mpc={name:"mPC",state:"REG_MICROADDR",is_pointer:false};sim.ep.internal_states.MC={};sim.ep.internal_states.ROM={};sim.ep.internal_states.FIRMWARE=ws_empty_firmware;sim.ep.internal_states.io_hash={};sim.ep.internal_states.fire_stack=[];sim.ep.internal_states.tri_state_names=["T1","T2","T3","T4","T5","T6","T7","T8","T9","T10","T11","T12"];sim.ep.internal_states.fire_visible={databus:false,internalbus:false};sim.ep.internal_states.filter_states=["REG_IR_DECO,col-12","REG_IR,col-auto","REG_PC,col-auto","REG_MAR,col-auto","REG_MBR,col-auto","REG_RT1,col-auto","REG_RT2,col-auto","REG_RT3,col-auto","REG_SR,col-auto","REG_MICROADDR,col-auto"];sim.ep.internal_states.filter_signals=["A0,0","B,0","C,0","SELA,5","SELB,5","SELC,2","SELCOP,0","MR,0","MC,0","C0,0","C1,0","C2,0","C3,0","C4,0","C5,0","C6,0","C7,0","T1,0","T2,0","T3,0","T4,0","T5,0","T6,0","T7,0","T8,0","T9,0","T10,0","T11,0","M1,0","M2,0","M7,0","MA,0","MB,0","SELP,0","LC,0","SE,0","SIZE,0","OFFSET,0","BW,0","R,0","W,0","TA,0","TD,0","IOR,0","IOW,0","TEST_I,0","TEST_U,0"];sim.ep.internal_states.alu_flags={flag_n:0,flag_z:0,flag_v:0,flag_c:0};sim.ep.states.BR=[];sim.ep.states.BR[0]={name:"R0",verbal:"Register 0",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[1]={name:"R1",verbal:"Register 1",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[2]={name:"R2",verbal:"Register 2",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[3]={name:"R3",verbal:"Register 3",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[4]={name:"R4",verbal:"Register 4",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[5]={name:"R5",verbal:"Register 5",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[6]={name:"R6",verbal:"Register 6",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[7]={name:"R7",verbal:"Register 7",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[8]={name:"R8",verbal:"Register 8",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[9]={name:"R9",verbal:"Register 9",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[10]={name:"R10",verbal:"Register 10",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[11]={name:"R11",verbal:"Register 11",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[12]={name:"R12",verbal:"Register 12",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[13]={name:"R13",verbal:"Register 13",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[14]={name:"R14",verbal:"Register 14",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[15]={name:"R15",verbal:"Register 15",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[16]={name:"R16",verbal:"Register 16",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[17]={name:"R17",verbal:"Register 17",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[18]={name:"R18",verbal:"Register 18",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[19]={name:"R19",verbal:"Register 19",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[20]={name:"R20",verbal:"Register 20",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[21]={name:"R21",verbal:"Register 21",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[22]={name:"R22",verbal:"Register 22",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[23]={name:"R23",verbal:"Register 23",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[24]={name:"R24",verbal:"Register 24",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[25]={name:"R25",verbal:"Register 25",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[26]={name:"R26",verbal:"Register 26",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[27]={name:"R27",verbal:"Register 27",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[28]={name:"R28",verbal:"Register 28",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[29]={name:"R29",verbal:"Register 29",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[30]={name:"R30",verbal:"Register 30",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.BR[31]={name:"R31",verbal:"Register 31",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["REG_PC"]={name:"PC",verbal:"Program Counter Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["REG_MAR"]={name:"MAR",verbal:"Memory Address Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["REG_MBR"]={name:"MBR",verbal:"Memory Data Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["REG_IR"]={name:"IR",verbal:"Instruction Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["REG_RT1"]={name:"RT1",verbal:"Temporal 1 Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["REG_RT2"]={name:"RT2",verbal:"Temporal 2 Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["REG_RT3"]={name:"RT3",verbal:"Temporal 3 Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["REG_SR"]={name:"SR",verbal:"State Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["BUS_IB"]={name:"I_BUS",verbal:"Internal Bus",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["BUS_AB"]={name:"A_BUS",verbal:"Address Bus",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["BUS_CB"]={name:"C_BUS",verbal:"Control Bus",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["BUS_DB"]={name:"D_BUS",verbal:"Data Bus",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["C2_T2"]={name:"C2_T2",verbal:"Output of PC",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["RA_T9"]={name:"RA_T9",verbal:"Input of T9 Tristate",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["RB_T10"]={name:"RB_T10",verbal:"Input of T10 Tristate",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["HPC_T12"]={name:"HPC_T12",verbal:"Input of T12 Tristate",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["SELEC_T3"]={name:"SELEC_T3",verbal:"Input of T3 Tristate",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["SELP_M7"]={name:"SELP_M7",verbal:"Output of MUX SelP",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["ALU_C6"]={name:"ALU_C6",verbal:"Input of Temporal 3 Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["MA_ALU"]={name:"MA_ALU",verbal:"Input ALU via MA",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["MB_ALU"]={name:"MB_ALU",verbal:"Input ALU via MB",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["FLAG_C"]={name:"FLAG_C",verbal:"Carry Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.ep.states["FLAG_V"]={name:"FLAG_V",verbal:"Overflow Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.ep.states["FLAG_N"]={name:"FLAG_N",verbal:"Negative Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.ep.states["FLAG_Z"]={name:"FLAG_Z",verbal:"Zero Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.ep.states["FLAG_I"]={name:"FLAG_I",verbal:"Interruption Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.ep.states["FLAG_U"]={name:"FLAG_U",verbal:"User Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.ep.states["REG_MICROADDR"]={name:"µADDR",verbal:"Microaddress Register",visible:true,nbits:"12",value:0,default_value:0,draw_data:["svg_cu:text4667"]};sim.ep.states["REG_MICROINS"]={name:"µINS",verbal:"Microinstruction Register",visible:true,nbits:"77",value:{},default_value:{},draw_data:[]};sim.ep.states["FETCH"]={name:"FETCH",verbal:"Input Fetch",visible:false,nbits:"12",value:0,default_value:0,draw_data:[]};sim.ep.states["ROM_MUXA"]={name:"ROM_MUXA",verbal:"Input ROM",visible:false,nbits:"12",value:0,default_value:0,draw_data:[]};sim.ep.states["SUM_ONE"]={name:"SUM_ONE",verbal:"Input next microinstruction",visible:false,nbits:"12",value:1,default_value:1,draw_data:[]};sim.ep.states["MUXA_MICROADDR"]={name:"MUXA_MICROADDR",verbal:"Input microaddress",visible:false,nbits:"12",value:0,default_value:0,draw_data:[]};sim.ep.states["MUXC_MUXB"]={name:"MUXC_MUXB",verbal:"Output of MUX C",visible:false,nbits:"1",value:0,default_value:0,draw_data:[]};sim.ep.states["INEX"]={name:"INEX",verbal:"Illegal Instruction Exception",visible:false,nbits:"1",value:0,default_value:0,draw_data:[]};sim.ep.states["BS_M1"]={name:"BS_M1",verbal:"from Memory",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["BS_TD"]={name:"BS_TD",verbal:"Memory",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["INTV"]={name:"INTV",verbal:"Interruption Vector",visible:false,nbits:"8",value:0,default_value:0,draw_data:[]};sim.ep.states["M2_C2"]={name:"M2_C2",verbal:"Input of Program Counter",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["M1_C1"]={name:"M1_C1",verbal:"Input of Memory Data Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["M7_C7"]={name:"M7_C7",verbal:"Input of State Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["VAL_ZERO"]={name:"VAL_ZERO",verbal:"Wired Zero",visible:false,nbits:"1",value:0,default_value:0,draw_data:[]};sim.ep.states["VAL_ONE"]={name:"VAL_ONE",verbal:"Wired One",visible:false,nbits:"32",value:1,default_value:1,draw_data:[]};sim.ep.states["VAL_FOUR"]={name:"VAL_FOUR",verbal:"Wired Four",visible:false,nbits:"32",value:4,default_value:4,draw_data:[]};sim.ep.states["REG_IR_DECO"]={name:"IR_DECO",verbal:"Instruction Decoded",visible:true,nbits:"0",value:0,default_value:0,draw_data:[]};sim.ep.states["DECO_INS"]={name:"DECO_INS",verbal:"Instruction decoded in binary",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["CLK"]={name:"CLK",verbal:"Clock",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["ACC_TIME"]={name:"ACC_TIME",verbal:"Accumulated CPU time",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["TTCPU"]={name:"TTCPU",verbal:"Several Tristates to the internal data bus in CPU activated",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states["ACC_PWR"]={name:"ACC_PWR",verbal:"Accumulated Energy Consumption",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.signals["C"]={name:"C",visible:true,type:"L",value:0,default_value:0,nbits:"4",behavior:["MV MUXC_MUXB VAL_ZERO; FIRE B","MBIT MUXC_MUXB INT 0 1; FIRE B","MBIT MUXC_MUXB IORDY 0 1; FIRE B","MBIT MUXC_MUXB MRDY 0 1; FIRE B","MBIT MUXC_MUXB REG_SR 0 1; FIRE B","MBIT MUXC_MUXB REG_SR 1 1; FIRE B","MBIT MUXC_MUXB REG_SR 28 1; FIRE B","MBIT MUXC_MUXB REG_SR 29 1; FIRE B","MBIT MUXC_MUXB REG_SR 30 1; FIRE B","MBIT MUXC_MUXB REG_SR 31 1; FIRE B","MV MUXC_MUXB INEX; FIRE B"],fire_name:["svg_cu:text3410"],draw_data:[["svg_cu:path3108"],["svg_cu:path3062"],["svg_cu:path3060"],["svg_cu:path3136"],["svg_cu:path3482"],["svg_cu:path3480"],["svg_cu:path3488"],["svg_cu:path3486"],["svg_cu:path3484"],["svg_cu:path3484-9"],["svg_cu:path3108-3","svg_cu:path3260-3-8-6","svg_cu:path3260-3-8","svg_cu:path3260-3"]],draw_name:[["svg_cu:path3496","svg_cu:path3414","svg_cu:path3194-08"]]};sim.ep.signals["B"]={name:"B",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV A1 MUXC_MUXB; FIRE A1","NOT_ES A1 MUXC_MUXB; FIRE A1"],depends_on:["CLK"],fire_name:["svg_cu:text3408"],draw_data:[["svg_cu:path3100-8-7","svg_cu:path3108-1","svg_cu:path3200-1"],["svg_cu:path3392","svg_cu:path3372","svg_cu:path3390","svg_cu:path3384","svg_cu:path3100-8-7","svg_cu:path3386"]],draw_name:[[],["svg_cu:path3194-0","svg_cu:path3138-8","svg_cu:path3498-6"]]};sim.ep.signals["A0"]={name:"A0",visible:false,type:"L",value:0,default_value:0,nbits:"1",behavior:["SBIT_SIGNAL A0A1 0 1; FIRE A0A1","SBIT_SIGNAL A0A1 1 1; FIRE A0A1"],depends_on:["CLK"],fire_name:["svg_cu:text3406"],draw_data:[["svg_cu:path3096"],["svg_cu:path3096"]],draw_name:[[],["svg_cu:path3138-8-1","svg_cu:path3098-2","svg_cu:path3124-2-5"]]};sim.ep.signals["A1"]={name:"A1",visible:false,type:"L",value:0,default_value:0,nbits:"1",behavior:["SBIT_SIGNAL A0A1 0 0; FIRE A0A1","SBIT_SIGNAL A0A1 1 0; FIRE A0A1"],depends_on:["CLK"],fire_name:[],draw_data:[["svg_cu:path3094"],["svg_cu:path3094"]],draw_name:[[]]};sim.ep.signals["A0A1"]={name:"A0A1",visible:true,type:"L",value:0,default_value:0,nbits:"2",behavior:["PLUS1 MUXA_MICROADDR REG_MICROADDR","CP_FIELD MUXA_MICROADDR REG_MICROINS/MADDR","MV MUXA_MICROADDR ROM_MUXA","MV MUXA_MICROADDR FETCH"],depends_on:["CLK"],fire_name:[],draw_data:[["svg_cu:path3102","svg_cu:path3100","svg_cu:path3098","svg_cu:path3100-9","svg_cu:path3088","svg_cu:path3082"],["svg_cu:path3104","svg_cu:path3134","svg_cu:path3500","svg_cu:path3416"],["svg_cu:path3124-2-4","svg_cu:path3124-2","svg_cu:path3504","svg_cu:path3100-8","svg_cu:path3234-9"],["svg_cu:path3124"]],draw_name:[[]]};sim.ep.signals["C0"]={name:"C0",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","LOAD REG_MAR BUS_IB"],fire_name:["svg_p:text3077"],draw_data:[["svg_p:path3081"]],draw_name:[["svg_p:path3075"]]};sim.ep.signals["C1"]={name:"C1",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","LOAD REG_MBR M1_C1"],fire_name:["svg_p:text3079"],draw_data:[["svg_p:path3055"]],draw_name:[["svg_p:path3073"]]};sim.ep.signals["C2"]={name:"C2",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","LOAD REG_PC M2_C2; UPDATEDPC"],fire_name:["svg_p:text3179"],draw_data:[["svg_p:path3485"]],draw_name:[["svg_p:path3177"]]};sim.ep.signals["C3"]={name:"C3",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","LOAD REG_IR BUS_IB; DECO; FIRE_IFSET C 10"],fire_name:["svg_p:text3439"],draw_data:[["svg_p:path3339"]],draw_name:[["svg_p:path3337"]]};sim.ep.signals["C4"]={name:"C4",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","LOAD REG_RT1 BUS_IB"],fire_name:["svg_p:text3441"],draw_data:[["svg_p:path3263"]],draw_name:[["svg_p:path3255"]]};sim.ep.signals["C5"]={name:"C5",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","LOAD REG_RT2 BUS_IB"],fire_name:["svg_p:text3443"],draw_data:[["svg_p:path3277"]],draw_name:[["svg_p:path3269"]]};sim.ep.signals["C6"]={name:"C6",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","LOAD REG_RT3 ALU_C6"],fire_name:["svg_p:text3445"],draw_data:[["svg_p:path3325","svg_p:path3323","svg_p:path3321","svg_p:path3261-8","svg_p:path3317-9","svg_p:path3901-6-9"]],draw_name:[["svg_p:path3245"]]};sim.ep.signals["C7"]={name:"C7",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","LOAD REG_SR M7_C7"],fire_name:["svg_p:text3655"],draw_data:[["svg_p:path3651-9"]],draw_name:[["svg_p:path3681"]]};sim.ep.signals["TA"]={name:"TA",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","MV BUS_AB REG_MAR; MOVE_BITSE A1A0 0 2 BUS_AB 0; FIRE_IFCHANGED A1A0 A1A0"],fire_name:["svg_p:text3091"],draw_data:[["svg_p:path3061-2","svg_p:path3083","svg_p:path3089","svg_p:path3597","svg_p:path3513","svg_p:path3601","svg_p:path3601-2","svg_p:path3187","svg_p:path3087","svg_p:path2995","svg_p:path3535"]],draw_name:[["svg_p:path3085"]]};sim.ep.signals["TD"]={name:"TD",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; CHECK_RTD","MV BUS_DB BS_TD; MOVE_BITSE A1A0 0 2 BUS_AB 0; FIRE_IFCHANGED A1A0 A1A0; CHECK_RTD"],fire_name:["svg_p:text3103"],draw_data:[["svg_p:path3545","svg_p:path3093","svg_p:path3101","svg_p:path3587","svg_p:path3515","svg_p:path3071","svg_p:path3419","svg_p:path3099","svg_p:path3097","svg_p:path3559-5","svg_p:path3419-1-0","svg_p:path3583","svg_p:path3419-1","svg_p:path3491","svg_p:path3641","svg_p:path3541"]],draw_name:[["svg_p:path3095"]]};sim.ep.signals["T1"]={name:"T1",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 0","MV BUS_IB REG_MBR; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 0"],fire_name:["svg_p:text3105"],draw_data:[["svg_p:path3071","svg_p:path3065","svg_p:path3071","svg_p:path3049","svg_p:path3063-9","svg_p:path3071","svg_p:path3071","svg_p:path3069"]],draw_name:[["svg_p:path3067"]]};sim.ep.signals["T2"]={name:"T2",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 1","MV BUS_IB REG_PC; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 1"],fire_name:["svg_p:text3449"],draw_data:[["svg_p:path3195","svg_p:path3199","svg_p:path3201","svg_p:path3049"]],draw_name:[["svg_p:path3329"]]};sim.ep.signals["T3"]={name:"T3",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 2","MV BUS_IB SELEC_T3; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 2"],fire_name:["svg_p:text3451"],draw_data:[["svg_p:path3341","svg_p:path3347","svg_p:path3349","svg_p:path3931","svg_p:path3345","svg_p:path3049"]],draw_name:[["svg_p:path3351"]]};sim.ep.signals["T4"]={name:"T4",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 3","MV BUS_IB REG_RT1; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 3"],fire_name:["svg_p:text3453"],draw_data:[["svg_p:path3257","svg_p:path3261","svg_p:path3259","svg_p:path3049"]],draw_name:[["svg_p:path3305"]]};sim.ep.signals["T5"]={name:"T5",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 4","MV BUS_IB REG_RT2; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 4"],fire_name:["svg_p:text3455"],draw_data:[["svg_p:path3271","svg_p:path3275","svg_p:path3273","svg_p:path3049"]],draw_name:[["svg_p:path3307"]]};sim.ep.signals["T6"]={name:"T6",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 5","MV BUS_IB ALU_C6; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 5"],fire_name:["svg_p:text3457"],draw_data:[["svg_p:path3315","svg_p:path3589","svg_p:path3317","svg_p:path3163-2","svg_p:path3049","svg_p:path3321","svg_p:path3261-8","svg_p:path3317-9","svg_p:path3901-6-9"]],draw_name:[["svg_p:path3319"]]};sim.ep.signals["T7"]={name:"T7",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 6","MV BUS_IB REG_RT3; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 6"],fire_name:["svg_p:text3459"],draw_data:[["svg_p:path3309","svg_p:path3327","svg_p:path3311","svg_p:path3049"]],draw_name:[["svg_p:path3313"]]};sim.ep.signals["T8"]={name:"T8",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 7","MV BUS_IB REG_SR; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 7"],fire_name:["svg_p:text3657"],draw_data:[["svg_p:path3645","svg_p:path3651","svg_p:path3647","svg_p:path3049"]],draw_name:[["svg_p:path3649"]]};sim.ep.signals["T9"]={name:"T9",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 8","MV BUS_IB RA_T9; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 8"],fire_name:["svg_p:text3147"],draw_data:[["svg_p:path3131","svg_p:path3143","svg_p:path3139","svg_p:path3049","svg_p:path3143-9"]],draw_name:[["svg_p:path3133"]]};sim.ep.signals["T10"]={name:"T10",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 9","MV BUS_IB RB_T10; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 9"],fire_name:["svg_p:text3149"],draw_data:[["svg_p:path3135","svg_p:path3145","svg_p:path3141","svg_p:path3049","svg_p:path3145-5"]],draw_name:[["svg_p:path3137"]]};sim.ep.signals["T11"]={name:"T11",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 10","CP_FIELD BUS_IB REG_MICROINS/EXCODE; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 10"],fire_name:["svg_p:text3147-5","svg_cu:tspan4426"],draw_data:[["svg_cu:path3131-3","svg_p:path3131-3","svg_p:path3145","svg_p:path3081-3","svg_p:path3139-7","svg_p:path3049","svg_cu:path3081-3","svg_cu:path3139-7"]],draw_name:[["svg_p:path3133-6","svg_cu:path3133-6"]]};sim.ep.signals["T12"]={name:"T12",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 11","MV BUS_IB HPC_T12; FIRE M7; FIRE M2; FIRE M1; SET_TT TTCPU 11"],fire_name:["svg_p:text3147-5-0-1-1"],draw_data:[["svg_p:path3131-3-8-4-31","svg_p:path3139-7-1-4-3","svg_p:path3049","svg_p:path3081-3-8-5-3"]],draw_name:[["svg_p:path3133-6-9-7-5"]]};sim.ep.signals["M1"]={name:"M1",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV M1_C1 BUS_IB","MV M1_C1 BS_M1"],depends_on:["C1"],fire_name:["svg_p:text3469"],draw_data:[["svg_p:path3063","svg_p:path3061","svg_p:path3059"],["svg_p:path3057","svg_p:path3641","svg_p:path3419","svg_p:path3583"]],draw_name:[[],["svg_p:path3447"]]};sim.ep.signals["M2"]={name:"M2",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV M2_C2 BUS_IB","PLUS4 M2_C2 REG_PC"],depends_on:["C2"],fire_name:["svg_p:text3471"],draw_data:[["svg_p:path3217","svg_p:path3215","svg_p:path3213","svg_p:path3213-9"],["svg_p:path3211","svg_p:path3209","svg_p:path3193","svg_p:path3207","svg_p:path3197","svg_p:path3201"]],draw_name:[[],["svg_p:path3467","svg_p:path3467"]]};sim.ep.signals["M7"]={name:"M7",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV M7_C7 BUS_IB","MV M7_C7 SELP_M7"],depends_on:["C7"],fire_name:["svg_p:text3673"],draw_data:[["svg_p:path3691","svg_p:path3693","svg_p:path3659"],["svg_p:path3695"]],draw_name:[[],["svg_p:path3667"]]};sim.ep.signals["MA"]={name:"MA",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV MA_ALU RA_T9; FIRE COP","MV MA_ALU REG_RT1; FIRE COP"],depends_on:["SELA","SELB"],fire_name:["svg_p:text3463"],draw_data:[["svg_p:path3249","svg_p:path3161","svg_p:path3165"],["svg_p:path3279"]],draw_name:[[],["svg_p:path3423"]]};sim.ep.signals["MB"]={name:"MB",visible:true,type:"L",value:0,default_value:0,nbits:"2",behavior:["MV MB_ALU RB_T10; FIRE COP","MV MB_ALU REG_RT2; FIRE COP","MV MB_ALU VAL_FOUR; FIRE COP","MV MB_ALU VAL_ONE; FIRE COP"],depends_on:["SELA","SELB"],fire_name:["svg_p:text3465"],draw_data:[["svg_p:path3281","svg_p:path3171","svg_p:path3169"],["svg_p:path3283"],["svg_p:path3295","svg_p:path3293"],["svg_p:path3297","svg_p:path3299"]],draw_name:[[],["svg_p:path3425","svg_p:path3427"]]};sim.ep.signals["MH"]={name:"MH",visible:true,type:"L",value:0,default_value:0,nbits:"2",behavior:["MV HPC_T12 CLK","MV HPC_T12 ACC_TIME","MV HPC_T12 ACC_PWR","NOP"],fire_name:["svg_p:text3147-5-0-1-8-4"],draw_data:[[],["svg_p:path3081-3-8-5-3"]],draw_name:[[],["svg_p:path3306-8-7-6"]]};sim.ep.signals["COP"]={name:"COP",visible:true,type:"L",value:0,default_value:0,nbits:"5",forbidden:true,behavior:["NOP_ALU; UPDATE_NZVC","AND ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","OR ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","NOT ALU_C6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","XOR ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","SRL ALU_C6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","SRA ALU_C6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","SL ALU_C6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","RR ALU_C6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","RL ALU_C6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","ADD ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","SUB ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","MUL ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","DIV ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","MOD ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","LUI ALU_C6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","FADD ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","FSUB ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","FMUL ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","FDIV ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","FCVT ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","FCLASS ALU_C6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","ADDU ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","SUBU ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","MULU ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","DIVU ALU_C6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET SELP 3","NOP_ALU","NOP_ALU","NOP_ALU","NOP_ALU","NOP_ALU","NOP_ALU"],depends_on:["SELCOP"],fire_name:["svg_p:text3303"],draw_data:[["svg_p:path3237","svg_p:path3239","svg_p:path3261-8","svg_p:path3321","svg_p:path3901-6","svg_p:path3317-9"]],draw_name:[["svg_p:path3009","svg_p:path3301"]]};sim.ep.signals["SELP"]={name:"SELP",visible:true,type:"L",value:0,default_value:0,nbits:"2",behavior:["NOP","MV SELP_M7 REG_SR; UPDATE_FLAG SELP_M7 FLAG_U 0; FIRE M7","MV SELP_M7 REG_SR; UPDATE_FLAG SELP_M7 FLAG_I 1; FIRE M7","MV SELP_M7 REG_SR; UPDATE_FLAG SELP_M7 FLAG_C 31; UPDATE_FLAG SELP_M7 FLAG_V 30; UPDATE_FLAG SELP_M7 FLAG_N 29; UPDATE_FLAG SELP_M7 FLAG_Z 28; FIRE M7"],fire_name:["svg_p:text3703"],draw_data:[[],["svg_p:path3643"],["svg_p:path3705"],["svg_p:path3675","svg_p:path3331"]],draw_name:[[],["svg_p:path3697"]]};sim.ep.signals["SELA"]={name:"SELA",visible:true,type:"L",value:0,default_value:0,nbits:"5",behavior:["FIRE MR_RA"],depends_on:["RA"],fire_name:["svg_cu:text3164"],draw_data:[[]],draw_name:[[]]};sim.ep.signals["SELB"]={name:"SELB",visible:true,type:"L",value:0,default_value:0,nbits:"5",behavior:["FIRE MR_RB"],depends_on:["RB"],fire_name:["svg_cu:text3168"],draw_data:[[]],draw_name:[[]]};sim.ep.signals["SELC"]={name:"SELC",visible:true,type:"L",value:0,default_value:0,nbits:"5",behavior:["FIRE MR_RC"],depends_on:["RC"],fire_name:["svg_cu:text3172"],draw_data:[[]],draw_name:[[]]};sim.ep.signals["SELCOP"]={name:"SELCOP",visible:true,type:"L",value:0,default_value:0,nbits:"5",behavior:["FIRE MC"],depends_on:["COP"],fire_name:["svg_cu:text3312"],draw_data:[[]],draw_name:[[]]};sim.ep.signals["EXCODE"]={name:"EXCODE",visible:true,type:"L",value:0,default_value:0,nbits:"4",behavior:["FIRE T11"],fire_name:["svg_cu:text3312-6"],draw_data:[[]],draw_name:[]};sim.ep.signals["RA"]={name:"RA",visible:true,type:"L",value:0,default_value:0,nbits:"5",forbidden:true,behavior:["GET RA_T9 BR RA; FIRE_IFSET T9 1; FIRE_IFSET MA 0"],depends_on:["SELA"],fire_name:["svg_p:text3107"],draw_data:[[]],draw_name:[["svg_p:path3109"]]};sim.ep.signals["RB"]={name:"RB",visible:true,type:"L",value:0,default_value:0,nbits:"5",forbidden:true,behavior:["GET RB_T10 BR RB; FIRE_IFSET T10 1; FIRE_IFSET MB 0"],depends_on:["SELB"],fire_name:["svg_p:text3123"],draw_data:[[]],draw_name:[["svg_p:path3113"]]};sim.ep.signals["RC"]={name:"RC",visible:true,type:"L",value:0,default_value:0,nbits:"5",forbidden:true,behavior:["FIRE LC"],depends_on:["SELC"],fire_name:["svg_p:text3125"],draw_data:[[]],draw_name:[["svg_p:path3117"]]};sim.ep.signals["LC"]={name:"LC",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","SET BR RC BUS_IB"],fire_name:["svg_p:text3127"],draw_data:[["svg_p:path3153","svg_p:path3151","svg_p:path3129"]],draw_name:[["svg_p:path3121"]]};sim.ep.signals["SE"]={name:"SE",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MBITS SELEC_T3 0 REG_IR OFFSET SIZE 0 SE; FIRE T3; MOVE_BITS SBWA 4 1 SE; FIRE_IFCHANGED SBWA SE","MBITS SELEC_T3 0 REG_IR OFFSET SIZE 0 SE; FIRE T3; MOVE_BITS SBWA 4 1 SE; FIRE_IFCHANGED SBWA SE"],depends_on:["T3"],fire_name:["svg_p:text3593","svg_p:text3431"],draw_data:[[]],draw_name:[["svg_p:path3591","svg_p:path3447-7-7"]]};sim.ep.signals["SIZE"]={name:"SIZE",visible:true,type:"L",value:0,default_value:0,nbits:"5",behavior:["MBITS SELEC_T3 0 REG_IR OFFSET SIZE 0 SE; FIRE T3"],depends_on:["T3"],fire_name:["svg_p:text3363"],draw_data:[[]],draw_name:[["svg_p:path3355"]]};sim.ep.signals["OFFSET"]={name:"OFFSET",visible:true,type:"L",value:0,default_value:0,nbits:"5",behavior:["MBITS SELEC_T3 0 REG_IR OFFSET SIZE 0 SE; FIRE T3"],depends_on:["T3"],fire_name:["svg_p:text3707"],draw_data:[[]],draw_name:[["svg_p:path3359"]]};sim.ep.signals["MC"]={name:"MC",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MBIT COP REG_IR 0 5; FIRE COP;","CP_FIELD COP REG_MICROINS/SELCOP; FIRE COP;"],depends_on:["SELCOP"],fire_name:["svg_cu:text3322","svg_cu:text3172-1-5"],draw_data:[["svg_cu:path3320","svg_cu:path3142"],["svg_cu:path3318","svg_cu:path3502-6"]],draw_name:[[],["svg_cu:path3306"]]};sim.ep.signals["MR"]={name:"MR",verbal:["Copy from IR[SelA], from IR[SelB], and from IR[SelB] into RA, RB, and RC. ","Copy SelA, SelB, and SelB into RA, RB, and RC. "],visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV MR_RA MR; FIRE MR_RA; MV MR_RB MR; FIRE MR_RB; MV MR_RC MR; FIRE MR_RC;","MV MR_RA MR; FIRE MR_RA; MV MR_RB MR; FIRE MR_RB; MV MR_RC MR; FIRE MR_RC;"],depends_on:["SELA","SELB","SELC"],fire_name:["svg_cu:text3222","svg_cu:text3242","svg_cu:text3254","svg_cu:text3172-1"],draw_data:[["svg_cu:path3494","svg_cu:path3492","svg_cu:path3490","svg_cu:path3188","svg_cu:path3190","svg_cu:path3192","svg_cu:path3194","svg_cu:path3276","svg_cu:path3290","svg_cu:path3260","svg_cu:path3196","svg_cu:path3278","svg_cu:path3292","svg_cu:path3142","svg_cu:path3258-4","svg_cu:path3390-7","svg_cu:path3258","svg_cu:path3280"],["svg_cu:path3270","svg_cu:path3282","svg_cu:path3300","svg_cu:path3258","svg_cu:path3260","svg_cu:path3258-4","svg_cu:path3278","svg_cu:path3196","svg_cu:path3294","svg_cu:path3292","svg_cu:path3288","svg_cu:path3280","svg_cu:path3258","svg_cu:path3258-4","svg_cu:path3390-7"]],draw_name:[[],["svg_cu:path3220","svg_cu:path3240","svg_cu:path3252"]]};sim.ep.signals["MR_RA"]={name:"MR_RA",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MBIT_SN RA REG_IR REG_MICROINS/SELA 5; FIRE RA;","CP_FIELD RA REG_MICROINS/SELA; FIRE RA;"],fire_name:[],draw_data:[[]],draw_name:[[]]};sim.ep.signals["MR_RB"]={name:"MR_RB",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MBIT_SN RB REG_IR REG_MICROINS/SELB 5; FIRE RB;","CP_FIELD RB REG_MICROINS/SELB; FIRE RB;"],fire_name:[],draw_data:[[]],draw_name:[[]]};sim.ep.signals["MR_RC"]={name:"MR_RC",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MBIT_SN RC REG_IR REG_MICROINS/SELC 5; FIRE RC;","CP_FIELD RC REG_MICROINS/SELC; FIRE RC;"],fire_name:[],draw_data:[[]],draw_name:[[]]};sim.ep.signals["BW"]={name:"BW",verbal:["Select one byte (based on A1A0) from Word. ","Select two bytes (one Half Word based on A1A0) from Word. ","","Select the full Word. "],visible:true,type:"L",value:0,default_value:0,nbits:"2",behavior:["MOVE_BITS BWA 2 2 BW; MOVE_BITS SBWA 2 2 BW; FIRE_IFCHANGED BWA BW; FIRE SBWA; RESET_CHANGED BW","MOVE_BITS BWA 2 2 BW; MOVE_BITS SBWA 2 2 BW; FIRE_IFCHANGED BWA BW; FIRE SBWA; RESET_CHANGED BW","MOVE_BITS BWA 2 2 BW; MOVE_BITS SBWA 2 2 BW; FIRE_IFCHANGED BWA BW; FIRE SBWA; RESET_CHANGED BW","MOVE_BITS BWA 2 2 BW; MOVE_BITS SBWA 2 2 BW; FIRE_IFCHANGED BWA BW; FIRE SBWA; RESET_CHANGED BW"],fire_name:["svg_p:text3433"],draw_data:[["svg_p:path3061-2-6","svg_p:path3101-8","svg_p:path3535-8"]],draw_name:[[],[]]};sim.ep.signals["A1A0"]={name:"A1A0",visible:true,type:"L",value:0,default_value:0,nbits:"2",behavior:["MOVE_BITS BWA 0 2 A1A0; MOVE_BITS SBWA 0 2 A1A0; FIRE BWA; FIRE SBWA","MOVE_BITS BWA 0 2 A1A0; MOVE_BITS SBWA 0 2 A1A0; FIRE BWA; FIRE SBWA","MOVE_BITS BWA 0 2 A1A0; MOVE_BITS SBWA 0 2 A1A0; FIRE BWA; FIRE SBWA","MOVE_BITS BWA 0 2 A1A0; MOVE_BITS SBWA 0 2 A1A0; FIRE BWA; FIRE SBWA"],fire_name:["svg_p:text3603"],draw_data:[[],[]],draw_name:[[],[]]};sim.ep.signals["BWA"]={name:"BWA",visible:false,type:"L",value:0,default_value:0,nbits:"4",behavior:["BSEL BS_TD 0 8 REG_MBR 0; FIRE TD; FIRE R; FIRE W","BSEL BS_TD 8 8 REG_MBR 0; FIRE TD; FIRE R; FIRE W","BSEL BS_TD 16 8 REG_MBR 0; FIRE TD; FIRE R; FIRE W","BSEL BS_TD 24 8 REG_MBR 0; FIRE TD; FIRE R; FIRE W","BSEL BS_TD 0 16 REG_MBR 0; FIRE TD; FIRE R; FIRE W","BSEL BS_TD 0 16 REG_MBR 0; FIRE TD; FIRE R; FIRE W","BSEL BS_TD 0 16 REG_MBR 0; FIRE TD; FIRE R; FIRE W","BSEL BS_TD 0 16 REG_MBR 0; FIRE TD; FIRE R; FIRE W","BSEL BS_TD 16 16 REG_MBR 0; FIRE TD; FIRE R; FIRE W","BSEL BS_TD 16 16 REG_MBR 0; FIRE TD; FIRE R; FIRE W","BSEL BS_TD 16 16 REG_MBR 0; FIRE TD; FIRE R; FIRE W","BSEL BS_TD 16 16 REG_MBR 0; FIRE TD; FIRE R; FIRE W","MV BS_TD REG_MBR; FIRE TD; FIRE R; FIRE W","MV BS_TD REG_MBR; FIRE TD; FIRE R; FIRE W","MV BS_TD REG_MBR; FIRE TD; FIRE R; FIRE W","MV BS_TD REG_MBR; FIRE TD; FIRE R; FIRE W"],fire_name:["svg_p:text3533-5"],draw_data:[[],[]],draw_name:[[],[]]};sim.ep.signals["SBWA"]={name:"SBWA",visible:false,type:"L",value:0,default_value:0,nbits:"5",behavior:["BSEL BS_M1 0 8 BUS_DB 0; FIRE M1","BSEL BS_M1 0 8 BUS_DB 8; FIRE M1","BSEL BS_M1 0 8 BUS_DB 16; FIRE M1","BSEL BS_M1 0 8 BUS_DB 24; FIRE M1","BSEL BS_M1 0 16 BUS_DB 0; FIRE M1","BSEL BS_M1 0 16 BUS_DB 0; FIRE M1","BSEL BS_M1 0 16 BUS_DB 0; FIRE M1","BSEL BS_M1 0 16 BUS_DB 0; FIRE M1","BSEL BS_M1 0 16 BUS_DB 16; FIRE M1","BSEL BS_M1 0 16 BUS_DB 16; FIRE M1","BSEL BS_M1 0 16 BUS_DB 16; FIRE M1","BSEL BS_M1 0 16 BUS_DB 16; FIRE M1","MV BS_M1 BUS_DB; FIRE M1","MV BS_M1 BUS_DB; FIRE M1","MV BS_M1 BUS_DB; FIRE M1","MV BS_M1 BUS_DB; FIRE M1","BSEL BS_M1 0 8 BUS_DB 0; EXT_SIG BS_M1 7; FIRE M1","BSEL BS_M1 0 8 BUS_DB 8; EXT_SIG BS_M1 7; FIRE M1","BSEL BS_M1 0 8 BUS_DB 16; EXT_SIG BS_M1 7; FIRE M1","BSEL BS_M1 0 8 BUS_DB 24; EXT_SIG BS_M1 7; FIRE M1","BSEL BS_M1 0 16 BUS_DB 0; EXT_SIG BS_M1 15; FIRE M1","BSEL BS_M1 0 16 BUS_DB 0; EXT_SIG BS_M1 15; FIRE M1","BSEL BS_M1 0 16 BUS_DB 0; EXT_SIG BS_M1 15; FIRE M1","BSEL BS_M1 0 16 BUS_DB 0; EXT_SIG BS_M1 15; FIRE M1","BSEL BS_M1 0 16 BUS_DB 16; EXT_SIG BS_M1 15; FIRE M1","BSEL BS_M1 0 16 BUS_DB 16; EXT_SIG BS_M1 15; FIRE M1","BSEL BS_M1 0 16 BUS_DB 16; EXT_SIG BS_M1 15; FIRE M1","BSEL BS_M1 0 16 BUS_DB 16; EXT_SIG BS_M1 15; FIRE M1","MV BS_M1 BUS_DB; FIRE M1","MV BS_M1 BUS_DB; FIRE M1","MV BS_M1 BUS_DB; FIRE M1","MV BS_M1 BUS_DB; FIRE M1"],fire_name:[],draw_data:[[],[]],draw_name:[[],[]]};sim.ep.signals["IOR"]={name:"IOR",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","MOVE_BITS KBD_IOR 0 1 IOR; MOVE_BITS SCR_IOR 0 1 IOR; MOVE_BITS L3D_IOR 0 1 IOR; MOVE_BITS L3D_IOR 0 1 IOR; FIRE KBD_IOR; FIRE SCR_IOR; FIRE L3D_IOR; FIRE LEDM_IOR"],fire_name:["svg_p:text3715"],draw_data:[[],["svg_p:path3733","svg_p:path3491","svg_p:text3715"]],draw_name:[[],[]]};sim.ep.signals["IOW"]={name:"IOW",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","MOVE_BITS SCR_IOW 0 1 IOW; FIRE SCR_IOW; MOVE_BITS IO_IOW 0 1 IOW; FIRE IO_IOW; MOVE_BITS L3D_IOW 0 1 IOW; FIRE L3D_IOW; MOVE_BITS LEDM_IOW 0 1 IOW; FIRE LEDM_IOW"],fire_name:["svg_p:text3717"],draw_data:[[],["svg_p:path3735","svg_p:path3491","svg_p:text3717"]],draw_name:[[],[]]};sim.ep.signals["I"]={name:"I",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV FLAG_I VAL_ZERO; FIRE_IFSET SELP 2","MV FLAG_I VAL_ONE; FIRE_IFSET SELP 2"],fire_name:[],draw_data:[[],[]],draw_name:[[],[]]};sim.ep.signals["U"]={name:"U",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV FLAG_U VAL_ZERO; FIRE_IFSET SELP 2","MV FLAG_U VAL_ONE; FIRE_IFSET SELP 2"],fire_name:[],draw_data:[[],[]],draw_name:[[],[]]};sim.ep.signals["TEST_C"]={name:"TEST_C",visible:true,type:"L",value:0,default_value:0,nbits:"1",forbidden:true,behavior:["MV FLAG_C VAL_ZERO; FIRE_IFSET SELP 2","MV FLAG_C VAL_ONE; FIRE_IFSET SELP 3"],depends_on:["SELCOP","COP"],fire_name:["svg_p:text3701-3"],draw_data:[["svg_p:text3701-3"]],draw_name:[[]]};sim.ep.signals["TEST_V"]={name:"TEST_V",visible:true,type:"L",value:0,default_value:0,nbits:"1",forbidden:true,behavior:["MV FLAG_V VAL_ZERO; FIRE_IFSET SELP 2","MV FLAG_V VAL_ONE; FIRE_IFSET SELP 3"],depends_on:["SELCOP","COP"],fire_name:["svg_p:text3701-3-1"],draw_data:[["svg_p:text3701-3-1"]],draw_name:[[]]};sim.ep.signals["TEST_N"]={name:"TEST_N",visible:true,type:"L",value:0,default_value:0,nbits:"1",forbidden:true,behavior:["MV FLAG_N VAL_ZERO; FIRE_IFSET SELP 2","MV FLAG_N VAL_ONE; FIRE_IFSET SELP 3"],depends_on:["SELCOP","COP"],fire_name:["svg_p:text3701-3-2"],draw_data:[["svg_p:text3701-3-2"]],draw_name:[[]]};sim.ep.signals["TEST_Z"]={name:"TEST_Z",visible:true,type:"L",value:0,default_value:0,nbits:"1",forbidden:true,behavior:["MV FLAG_Z VAL_ZERO; FIRE_IFSET SELP 2","MV FLAG_Z VAL_ONE; FIRE_IFSET SELP 3"],depends_on:["SELCOP","COP"],fire_name:["svg_p:text3701-3-5"],draw_data:[["svg_p:text3701-3-5"]],draw_name:[[]]};sim.ep.signals["TEST_I"]={name:"TEST_I",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV FLAG_I VAL_ZERO; FIRE_IFSET SELP 2","MV FLAG_I VAL_ONE; FIRE_IFSET SELP 2"],depends_on:["CLK"],fire_name:["svg_p:text3669"],draw_data:[["svg_p:text3669"]],draw_name:[[]]};sim.ep.signals["TEST_U"]={name:"TEST_U",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV FLAG_U VAL_ZERO; FIRE_IFSET SELP 1","MV FLAG_U VAL_ONE; FIRE_IFSET SELP 1"],depends_on:["CLK"],fire_name:["svg_p:text3669-1"],draw_data:[["svg_p:text3669-1"]],draw_name:[[]]};sim.ep.signals["TEST_INTV"]={name:"TEST_INTV",visible:true,type:"L",value:0,default_value:0,nbits:"8",forbidden:true,behavior:["MBIT INTV TEST_INTV 0 32"],depends_on:["INT"],fire_name:["svg_p:tspan4225"],draw_data:[["svg_p:path3749"]],draw_name:[[]]};sim.ep.behaviors["NOP"]={nparameters:1,operation:function(s_expr){},verbal:function(s_expr){return""}};sim.ep.behaviors["NOP_ALU"]={nparameters:1,operation:function(s_expr){sim.ep.internal_states.alu_flags.flag_n=0;sim.ep.internal_states.alu_flags.flag_z=0;sim.ep.internal_states.alu_flags.flag_c=0;sim.ep.internal_states.alu_flags.flag_v=0},verbal:function(s_expr){return""}};sim.ep.behaviors["MV"]={nparameters:3,types:["X","X"],operation:function(s_expr){sim_elto_org=get_reference(s_expr[2]);sim_elto_dst=get_reference(s_expr[1]);newval=get_value(sim_elto_org);set_value(sim_elto_dst,newval)},verbal:function(s_expr){var sim_elto_org=get_reference(s_expr[2]);var newval=get_value(sim_elto_org);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy from "+show_verbal(s_expr[2])+" to "+show_verbal(s_expr[1])+" value "+show_value(newval)+". "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[2])+" ("+show_value(newval)+"). "}};sim.ep.behaviors["LOAD"]={nparameters:3,types:["X","X"],operation:function(s_expr){sim_elto_org=get_reference(s_expr[2]);sim_elto_dst=get_reference(s_expr[1]);newval=get_value(sim_elto_org);set_value(sim_elto_dst,newval)},verbal:function(s_expr){var sim_elto_org=get_reference(s_expr[2]);var newval=get_value(sim_elto_org);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Load from "+show_verbal(s_expr[2])+" to "+show_verbal(s_expr[1])+" value "+show_value(newval)+". "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[2])+" ("+show_value(newval)+"). "}};sim.ep.behaviors["CP_FIELD"]={nparameters:3,types:["X","X"],operation:function(s_expr){r=s_expr[2].split("/");sim_elto_org=get_reference(r[0]);newval=get_value(sim_elto_org);newval=newval[r[1]];if(typeof newval!="undefined"){sim_elto_dst=get_reference(s_expr[1]);set_value(sim_elto_dst,newval)}},verbal:function(s_expr){var newval=0;var r=s_expr[2].split("/");var sim_elto_org=get_reference(r[0]);var sim_elto_dst=get_reference(r[1]);if(typeof sim_elto_dst=="undefined")sim_elto_dst={};if(typeof sim_elto_org.value[r[1]]!="undefined")newval=sim_elto_org.value[r[1]];else if(typeof sim_elto_dst.default_value!="undefined")newval=sim_elto_dst.default_value;else newval="<undefined>";var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy from Field "+r[1]+" of "+show_verbal(r[0])+" to "+show_verbal(s_expr[1])+" value "+newval+". "}return show_verbal(s_expr[1])+" = "+show_verbal(r[0])+"."+r[1]+" ("+newval+"). "}};sim.ep.behaviors["NOT_ES"]={nparameters:3,types:["S","E"],operation:function(s_expr){set_value(sim.ep.signals[s_expr[1]],Math.abs(get_value(sim.ep.states[s_expr[2]])-1))},verbal:function(s_expr){var value=Math.abs(get_value(sim.ep.states[s_expr[2]])-1);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Set "+show_verbal(s_expr[1])+" with value "+show_value(value)+" (Logical NOT of "+s_expr[2]+"). "}return show_verbal(s_expr[1])+" = "+show_value(value)+" (Logical NOT "+s_expr[2]+"). "}};sim.ep.behaviors["GET"]={nparameters:4,types:["E","E","S"],operation:function(s_expr){set_value(sim.ep.states[s_expr[1]],get_value(sim.ep.states[s_expr[2]][sim.ep.signals[s_expr[3]].value]))},verbal:function(s_expr){var value=get_value(sim.ep.states[s_expr[2]][sim.ep.signals[s_expr[3]].value]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Set "+show_verbal(s_expr[1])+" with value "+show_value(value)+" (Register File "+s_expr[3]+"). "}return show_verbal(s_expr[1])+" = "+show_value(value)+" (Register File "+s_expr[3]+"). "}};sim.ep.behaviors["SET"]={nparameters:4,types:["E","S","E"],operation:function(s_expr){set_value(sim.ep.states[s_expr[1]][sim.ep.signals[s_expr[2]].value],get_value(sim.ep.states[s_expr[3]]))},verbal:function(s_expr){var value=get_value(sim.ep.states[s_expr[3]]);var o_ref=sim.ep.states[s_expr[1]][sim.ep.signals[s_expr[2]].value];var o_verbal=o_ref.name;if(typeof o_ref.verbal!="undefined")o_verbal=o_ref.verbal;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy to "+o_verbal+" the value "+show_value(value)+". "}return o_verbal+" = "+show_value(value)+". "}};sim.ep.behaviors["AND"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])&get_value(sim.ep.states[s_expr[3]]);set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])&get_value(sim.ep.states[s_expr[3]]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU AND with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (AND). "}};sim.ep.behaviors["OR"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])|get_value(sim.ep.states[s_expr[3]]);set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])|get_value(sim.ep.states[s_expr[3]]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU OR with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (OR). "}};sim.ep.behaviors["NOT"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=~get_value(sim.ep.states[s_expr[2]]);set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=~get_value(sim.ep.states[s_expr[2]]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU NOT with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (NOT). "}};sim.ep.behaviors["XOR"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])^get_value(sim.ep.states[s_expr[3]]);set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])^get_value(sim.ep.states[s_expr[3]]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU XOR with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (XOR). "}};sim.ep.behaviors["SRL"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])>>>1;set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])>>>1;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Shift Right Logical with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (SRL). "}};sim.ep.behaviors["SRA"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])>>1;set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])>>1;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Shift Right Arithmetic with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (SRA). "}};sim.ep.behaviors["SL"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])<<1;set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=result>>>31},verbal:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])<<1;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Shift Left with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (SL). "}};sim.ep.behaviors["RR"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])>>>1|(get_value(sim.ep.states[s_expr[2]])&1)<<31;set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])>>>1|(get_value(sim.ep.states[s_expr[2]])&1)<<31;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Right Rotation with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (RR). "}};sim.ep.behaviors["RL"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])<<1|(get_value(sim.ep.states[s_expr[2]])&2147483648)>>>31;set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])<<1|(get_value(sim.ep.states[s_expr[2]])&2147483648)>>>31;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Left Rotation with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (LR). "}};sim.ep.behaviors["ADD"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var b=get_value(sim.ep.states[s_expr[3]])<<0;var result=a+b;set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=a>>>31&&b>>>31;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var b=get_value(sim.ep.states[s_expr[3]])<<0;var result=a+b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU ADD with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (ADD). "}};sim.ep.behaviors["SUB"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var b=get_value(sim.ep.states[s_expr[3]])<<0;var result=a-b;set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=a>>>31&&b>>>31;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var b=get_value(sim.ep.states[s_expr[3]])<<0;var result=a-b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU SUB with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (SUB). "}};sim.ep.behaviors["MUL"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var b=get_value(sim.ep.states[s_expr[3]])<<0;var result=a*b;set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=0;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var b=get_value(sim.ep.states[s_expr[3]])<<0;var result=a*b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU MUL with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (MUL). "}};sim.ep.behaviors["DIV"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var b=get_value(sim.ep.states[s_expr[3]])<<0;if(0==b){set_value(sim.ep.states[s_expr[1]],0);sim.ep.internal_states.alu_flags.flag_n=0;sim.ep.internal_states.alu_flags.flag_z=1;sim.ep.internal_states.alu_flags.flag_v=1;sim.ep.internal_states.alu_flags.flag_c=0;return}var result=Math.floor(a/b);set_value(sim.ep.states[s_expr[1]],result);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var b=get_value(sim.ep.states[s_expr[3]])<<0;if(0==b){return"ALU DIV zero by zero (oops!). "}var result=Math.floor(a/b);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU DIV with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (DIV). "}};sim.ep.behaviors["MOD"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var b=get_value(sim.ep.states[s_expr[3]])<<0;if(0==b){set_value(sim.ep.states[s_expr[1]],0);sim.ep.internal_states.alu_flags.flag_n=0;sim.ep.internal_states.alu_flags.flag_z=1;sim.ep.internal_states.alu_flags.flag_v=1;sim.ep.internal_states.alu_flags.flag_c=0;return}var result=a%b;set_value(sim.ep.states[s_expr[1]],result);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var b=get_value(sim.ep.states[s_expr[3]])<<0;if(0==b){return"ALU MOD zero by zero (oops!). "}var result=a%b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU MOD with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (MOD). "}};sim.ep.behaviors["LUI"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])<<16;set_value(sim.ep.states[s_expr[1]],result);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.ep.states[s_expr[2]])<<16;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Load Upper Immediate with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (LUI). "}};sim.ep.behaviors["ADDU"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])>>>0;var b=get_value(sim.ep.states[s_expr[3]])>>>0;var result=a+b;set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=0;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])>>>0;var b=get_value(sim.ep.states[s_expr[3]])>>>0;var result=a+b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU ADDU with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (ADDU). "}};sim.ep.behaviors["SUBU"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])>>>0;var b=get_value(sim.ep.states[s_expr[3]])>>>0;var result=a-b;set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=0;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])>>>0;var b=get_value(sim.ep.states[s_expr[3]])>>>0;var result=a-b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU SUBU with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (SUBU). "}};sim.ep.behaviors["MULU"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])>>>0;var b=get_value(sim.ep.states[s_expr[3]])>>>0;var result=a*b;set_value(sim.ep.states[s_expr[1]],result>>>0);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=0;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])>>>0;var b=get_value(sim.ep.states[s_expr[3]])>>>0;var result=a*b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU MULU with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (MULU). "}};sim.ep.behaviors["DIVU"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])>>>0;var b=get_value(sim.ep.states[s_expr[3]])>>>0;if(0==b){set_value(sim.ep.states[s_expr[1]],0);sim.ep.internal_states.alu_flags.flag_n=0;sim.ep.internal_states.alu_flags.flag_z=1;sim.ep.internal_states.alu_flags.flag_v=1;sim.ep.internal_states.alu_flags.flag_c=0;return}var result=Math.floor(a/b);set_value(sim.ep.states[s_expr[1]],result);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_v=0;sim.ep.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])>>>0;var b=get_value(sim.ep.states[s_expr[3]])>>>0;if(0==b){return"ALU DIVU zero by zero (oops!). "}var result=Math.floor(a/b);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU DIVU with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (DIVU). "}};sim.ep.behaviors["FADD"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]]);var b=get_value(sim.ep.states[s_expr[3]]);var result=hex2float(a)+hex2float(b);set_value(sim.ep.states[s_expr[1]],float32_to_uint(result));sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=0;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]]);var b=get_value(sim.ep.states[s_expr[3]]);var result=hex2float(a)+hex2float(b);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU FADD with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (FADD). "}};sim.ep.behaviors["FSUB"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]]);var b=get_value(sim.ep.states[s_expr[3]]);var result=hex2float(a)-hex2float(b);set_value(sim.ep.states[s_expr[1]],float32_to_uint(result));sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=0;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]]);var b=get_value(sim.ep.states[s_expr[3]]);var result=hex2float(a)-hex2float(b);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU FSUB with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (FSUB). "}};sim.ep.behaviors["FMUL"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]]);var b=get_value(sim.ep.states[s_expr[3]]);var result=hex2float(a)*hex2float(b);set_value(sim.ep.states[s_expr[1]],float32_to_uint(result));sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=0;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]]);var b=get_value(sim.ep.states[s_expr[3]]);var result=hex2float(a)*hex2float(b);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU FMUL with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (FMUL). "}};sim.ep.behaviors["FDIV"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]]);var b=get_value(sim.ep.states[s_expr[3]]);var result=hex2float(a)/hex2float(b);set_value(sim.ep.states[s_expr[1]],float32_to_uint(result));sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=0;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]]);var b=get_value(sim.ep.states[s_expr[3]]);var result=hex2float(a)-hex2float(b);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU FDIV with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (FDIV). "}};sim.ep.behaviors["FCVT"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])>>>0;var b=get_value(sim.ep.states[s_expr[3]]);var result=a;switch(b){case 1:result=hex2float(result);result=Math.trunc(result);break;case 2:result=hex2float(result);result=Math.round(result);break;case 4:result=result.toFixed(5);result=parseFloat(result);result=float2decimal(result);break;default:break}set_value(sim.ep.states[s_expr[1]],result);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=0;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])>>>0;var b=get_value(sim.ep.states[s_expr[3]]);var result=a;switch(b){case 1:result=hex2float(result);result=Math.trunc(result);break;case 2:result=hex2float(result);result=Math.round(result);break;case 4:result=result.toFixed(5);result=parseFloat(result);result=float2decimal(result);break;default:break}var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU FCVT with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (FCVT). "}};sim.ep.behaviors["FCLASS"]={nparameters:3,types:["E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])>>>0;var result=float_class(a);set_value(sim.ep.states[s_expr[1]],result);sim.ep.internal_states.alu_flags.flag_n=result<0?1:0;sim.ep.internal_states.alu_flags.flag_z=result==0?1:0;sim.ep.internal_states.alu_flags.flag_c=0;sim.ep.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.ep.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.ep.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[1]])>>>0;var result=float_class(a);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU FCLASS with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (FCLASS). "}};sim.ep.behaviors["PLUS1"]={nparameters:3,types:["E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var result=a+1;set_value(sim.ep.states[s_expr[1]],result>>>0)},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var result=a+1;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy to "+show_verbal(s_expr[1])+" "+show_verbal(s_expr[2])+" plus one with result "+show_value(result)+". "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[2])+" + 1"+" ("+show_value(result)+"). "}};sim.ep.behaviors["PLUS4"]={nparameters:3,types:["E","E"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var result=a+4;set_value(sim.ep.states[s_expr[1]],result>>>0)},verbal:function(s_expr){var a=get_value(sim.ep.states[s_expr[2]])<<0;var result=a+4;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy to "+show_verbal(s_expr[1])+" "+show_verbal(s_expr[2])+" plus four with result "+show_value(result)+". "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[2])+" + 4"+" ("+show_value(result)+"). "}};sim.ep.behaviors["SET_TT"]={nparameters:3,types:["E","I"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[1]])<<0;var b=parseInt(s_expr[2]);var m=Math.pow(2,b);var r=a|m;set_value(sim.ep.states[s_expr[1]],r);update_cpu_bus_fire(r,b)},verbal:function(s_expr){return""}};sim.ep.behaviors["RST_TT"]={nparameters:3,types:["E","I"],operation:function(s_expr){var a=get_value(sim.ep.states[s_expr[1]])<<0;var b=parseInt(s_expr[2]);var m=Math.pow(2,b);var r=a&~m;set_value(sim.ep.states[s_expr[1]],r);update_cpu_bus_fire(r,b)},verbal:function(s_expr){return""}};sim.ep.behaviors["CHECK_RTD"]={nparameters:1,operation:function(s_expr){var number_active_tri=parseInt(simhw_sim_signal("TD").value)+parseInt(simhw_sim_signal("R").value);update_system_bus_fire(number_active_tri)},verbal:function(s_expr){return""}};sim.ep.behaviors["MBIT"]={nparameters:5,types:["X","X","I","I"],operation:function(s_expr){var sim_elto_dst=get_reference(s_expr[1]);var sim_elto_org=get_reference(s_expr[2]);var offset=parseInt(s_expr[3]);var size=parseInt(s_expr[4]);var n1=get_value(sim_elto_org).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(offset+size-1),size);set_value(sim_elto_dst,parseInt(n2,2))},verbal:function(s_expr){var sim_elto_dst=get_reference(s_expr[1]);var sim_elto_org=get_reference(s_expr[2]);var offset=parseInt(s_expr[3]);var size=parseInt(s_expr[4]);var n1=get_value(sim_elto_org).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(offset+size-1),size);var n3=parseInt(n2,2);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy from "+show_verbal(s_expr[2])+" to "+show_verbal(s_expr[1])+" value "+show_value(n3)+" (copied "+size+" bits from bit "+offset+"). "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[2])+" ("+show_value(n3)+", "+size+" bits from bit "+offset+"). "}};sim.ep.behaviors["MBIT_SN"]={nparameters:5,types:["S","E","E","I"],operation:function(s_expr){var base=0;var r=s_expr[3].split("/");if(1==r.length)base=get_value(sim.ep.states[s_expr[3]]);else if(typeof sim.ep.states[r[0]].value[r[1]]!="undefined")base=sim.ep.states[r[0]].value[r[1]];else if(typeof sim.ep.signals[r[1]].default_value!="undefined")base=sim.ep.signals[r[1]].default_value;else if(typeof sim.ep.states[r[1]].default_value!="undefined")base=sim.ep.states[r[1]].default_value;else ws_alert("WARN: undefined state/field pair -> "+r[0]+"/"+r[1]);var offset=parseInt(s_expr[4]);var n1=get_value(sim.ep.states[s_expr[2]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;var n3=n2.substr(31-(base+offset-1),offset);set_value(sim.ep.signals[s_expr[1]],parseInt(n3,2))},verbal:function(s_expr){var base=0;var r=s_expr[3].split("/");if(1==r.length)base=get_value(sim.ep.states[s_expr[3]]);else if(typeof sim.ep.states[r[0]].value[r[1]]!="undefined")base=sim.ep.states[r[0]].value[r[1]];else if(typeof sim.ep.signals[r[1]].default_value!="undefined")base=sim.ep.signals[r[1]].default_value;else if(typeof sim.ep.states[r[1]].default_value!="undefined")base=sim.ep.states[r[1]].default_value;else ws_alert("WARN: undefined state/field pair -> "+r[0]+"/"+r[1]);var offset=parseInt(s_expr[4]);var n1=get_value(sim.ep.states[s_expr[2]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;var n3=n2.substr(31-(base+offset-1),offset);var from_elto="";if(1==r.length)from_elto=show_verbal(s_expr[3]);else from_elto=show_verbal(s_expr[2])+"["+r[1]+"] ";var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy from "+from_elto+"into "+show_verbal(s_expr[1])+" "+"value "+parseInt(n3,2)+". "}return show_verbal(s_expr[1])+" = "+from_elto+" ("+parseInt(n3,2)+"). "}};sim.ep.behaviors["SBIT_SIGNAL"]={nparameters:4,types:["X","I","I"],operation:function(s_expr){sim_elto_dst=get_reference(s_expr[1]);var new_value=sim_elto_dst.value;var mask=1<>>0)},verbal:function(s_expr){sim_elto_dst=get_reference(s_expr[1]);var new_value=sim_elto_dst.value;var mask=1<>>0)}};sim.ep.behaviors["UPDATE_FLAG"]={nparameters:4,types:["X","X","I"],operation:function(s_expr){sim_elto_org=get_reference(s_expr[2]);sim_elto_dst=get_reference(s_expr[1]);var new_value=sim_elto_dst.value&~(1<>>0)},verbal:function(s_expr){sim_elto_org=get_reference(s_expr[2]);sim_elto_dst=get_reference(s_expr[1]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Update "+show_verbal(s_expr[2])+" to value "+sim_elto_org.value+". "}return show_verbal(s_expr[1])+"."+show_verbal(s_expr[3])+" = "+sim_elto_org.value+". "}};sim.ep.behaviors["MBITS"]={nparameters:8,types:["E","I","E","S","S","I","S"],operation:function(s_expr){var offset=parseInt(sim.ep.signals[s_expr[4]].value);var size=parseInt(sim.ep.signals[s_expr[5]].value);var n1=get_value(sim.ep.states[s_expr[3]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(offset+size-1),size);var n3="00000000000000000000000000000000".substring(0,32-n2.length)+n2;if("1"==sim.ep.signals[s_expr[7]].value&&"1"==n2.substr(0,1)){n3="11111111111111111111111111111111".substring(0,32-n2.length)+n2}set_value(sim.ep.states[s_expr[1]],parseInt(n3,2))},verbal:function(s_expr){var offset=parseInt(sim.ep.signals[s_expr[4]].value);var size=parseInt(sim.ep.signals[s_expr[5]].value);var n1=get_value(sim.ep.states[s_expr[3]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(offset+size-1),size);var n3="00000000000000000000000000000000".substring(0,32-n2.length)+n2;if("1"==sim.ep.signals[s_expr[7]].value&&"1"==n2.substr(0,1)){n3="11111111111111111111111111111111".substring(0,32-n2.length)+n2}n1=parseInt(n3,2);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return" Copy from "+show_verbal(s_expr[3])+" to "+show_verbal(s_expr[1])+" value "+show_value(n1)+" (copied "+size+" bits from bit "+offset+"). "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[3])+" ("+show_value(n1)+", "+size+" bits from bit "+offset+"). "}};sim.ep.behaviors["BSEL"]={nparameters:6,types:["E","I","I","E","I"],operation:function(s_expr){var posd=parseInt(s_expr[2]);var poso=parseInt(s_expr[5]);var len=parseInt(s_expr[3]);var n1=get_value(sim.ep.states[s_expr[4]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(poso+len)+1,len);var n3="00000000000000000000000000000000".substring(0,32-n2.length)+n2;var n4="00000000000000000000000000000000".substr(0,posd);n3=n3+n4;set_value(sim.ep.states[s_expr[1]],parseInt(n3,2))},verbal:function(s_expr){var posd=parseInt(s_expr[2]);var len=parseInt(s_expr[3]);var poso=parseInt(s_expr[5]);var n1=get_value(sim.ep.states[s_expr[4]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(poso+len)+1,len);var n3="00000000000000000000000000000000".substring(0,32-n2.length)+n2;var n4="00000000000000000000000000000000".substr(0,posd);n3=n3+n4;var n5=parseInt(n3,2);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy from "+show_verbal(s_expr[4])+" to "+show_verbal(s_expr[1])+" value "+show_value(n5)+" (copied "+len+" bits, from bit "+poso+" of "+s_expr[4]+" to bit "+posd+" of "+s_expr[1]+"). "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[4])+" ("+show_value(n5)+", "+len+" bits, from bit "+poso+" of "+s_expr[4]+" to bit "+posd+" of "+s_expr[1]+"). "}};sim.ep.behaviors["EXT_SIG"]={nparameters:3,types:["E","I"],operation:function(s_expr){var n1=get_value(sim.ep.states[s_expr[1]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;var n3=n2.substr(31-s_expr[2],31);var n4=n3;if("1"==n2[31-s_expr[2]]){n4="11111111111111111111111111111111".substring(0,32-n3.length)+n4}set_value(sim.ep.states[s_expr[1]],parseInt(n4,2))},verbal:function(s_expr){var n1=get_value(sim.ep.states[s_expr[1]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;var n3=n2.substr(31-s_expr[2],31);var n4=n3;if("1"==n2[31-s_expr[2]]){n4="11111111111111111111111111111111".substring(0,32-n3.length)+n4}var n5=parseInt(n4,2);return"Sign Extension with value "+show_value(n5)+". "}};sim.ep.behaviors["MOVE_BITS"]={nparameters:5,types:["S","I","I","S"],operation:function(s_expr){var posd=parseInt(s_expr[2]);var poso=0;var len=parseInt(s_expr[3]);var n1=sim.ep.signals[s_expr[4]].value.toString(2);n1="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n1=n1.substr(31-poso-len+1,len);var n2=sim.ep.signals[s_expr[1]].value.toString(2);n2="00000000000000000000000000000000".substring(0,32-n2.length)+n2;var m1=n2.substr(0,32-(posd+len));var m2=n2.substr(31-posd+1,posd);var n3=m1+n1+m2;set_value(sim.ep.signals[s_expr[1]],parseInt(n3,2))},verbal:function(s_expr){return""}};sim.ep.behaviors["MOVE_BITSE"]={nparameters:6,types:["S","I","I","E","I"],operation:function(s_expr){var posd=parseInt(s_expr[2]);var poso=parseInt(s_expr[5]);var len=parseInt(s_expr[3]);var n1=get_value(sim.ep.states[s_expr[4]]).toString(2);n1="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n1=n1.substr(31-poso-len+1,len);var n2=sim.ep.signals[s_expr[1]].value.toString(2);n2="00000000000000000000000000000000".substring(0,32-n2.length)+n2;var m1=n2.substr(0,32-(posd+len));var m2=n2.substr(31-posd+1,posd);var n3=m1+n1+m2;set_value(sim.ep.signals[s_expr[1]],parseInt(n3,2))},verbal:function(s_expr){return""}};sim.ep.behaviors["DECO"]={nparameters:1,operation:function(s_expr){sim.ep.states["INEX"].value=0;var oi=decode_instruction(sim.ep.internal_states.FIRMWARE,sim.ep.ctrl_states.ir,get_value(sim.ep.states["REG_IR"]));if(null==oi.oinstruction){ws_alert("ERROR: undefined instruction code in IR ("+"co:"+oi.op_code.toString(2)+", "+"cop:"+oi.cop_code.toString(2)+")");sim.ep.states["ROM_MUXA"].value=0;sim.ep.states["INEX"].value=1;return-1}var rom_addr=oi.op_code<<6;if(typeof oi.oinstruction.cop!="undefined"){rom_addr=rom_addr+oi.cop_code}if(typeof sim.ep.internal_states["ROM"][rom_addr]=="undefined"){ws_alert("ERROR: undefined rom address "+rom_addr+" in firmware");sim.ep.states["ROM_MUXA"].value=0;return-1}sim.ep.states["ROM_MUXA"].value=sim.ep.internal_states["ROM"][rom_addr];var val=get_value(sim.ep.states["DECO_INS"]);set_value(sim.ep.states["DECO_INS"],val+1);var pc=get_value(sim.ep.states["REG_PC"])-4;var decins=get_deco_from_pc(pc);set_value(sim.ep.states["REG_IR_DECO"],decins);show_dbg_ir(get_value(sim.ep.states["REG_IR_DECO"]))},verbal:function(s_expr){return"Decode instruction. "}};sim.ep.behaviors["FIRE"]={nparameters:2,types:["S"],operation:function(s_expr){if(sim.ep.internal_states.fire_stack.indexOf(s_expr[1])!=-1){return}sim.ep.internal_states.fire_stack.push(s_expr[1]);update_draw(sim.ep.signals[s_expr[1]],sim.ep.signals[s_expr[1]].value);if("L"==sim.ep.signals[s_expr[1]].type){update_state(s_expr[1])}sim.ep.internal_states.fire_stack.pop(s_expr[1])},verbal:function(s_expr){return""}};sim.ep.behaviors["FIRE_IFSET"]={nparameters:3,types:["S","I"],operation:function(s_expr){if(get_value(sim.ep.signals[s_expr[1]])!=parseInt(s_expr[2])){return}sim.ep.behaviors["FIRE"].operation(s_expr)},verbal:function(s_expr){return""}};sim.ep.behaviors["FIRE_IFCHANGED"]={nparameters:3,types:["S","X"],operation:function(s_expr){sim_elto=get_reference(s_expr[2]);if(sim_elto.changed==false){return}sim.ep.behaviors["FIRE"].operation(s_expr)},verbal:function(s_expr){return""}};sim.ep.behaviors["RESET_CHANGED"]={nparameters:2,types:["X"],operation:function(s_expr){sim_elto=get_reference(s_expr[1]);sim_elto.changed=false},verbal:function(s_expr){return""}};sim.ep.behaviors["CLOCK"]={nparameters:1,operation:function(s_expr){var new_maddr=null;var mcelto=null;var t0=performance.now();var val=get_value(sim.ep.states["CLK"]);set_value(sim.ep.states["CLK"],val+1);set_value(sim.ep.states["TTCPU"],0);new_maddr=get_value(sim.ep.states["REG_MICROADDR"]);mcelto=sim.ep.internal_states["MC"][new_maddr];if(typeof mcelto!=="undefined"&&false==mcelto.is_native){for(var i=0;i>>0},set_value:function(elto,value){var origin="";var r_value=main_memory_get_program_counter();if(r_value!=null){origin="PC=0x"+r_value.toString(16)}var melto={value:value>>>0,source_tracking:[origin],comments:null};var valref=main_memory_set(sim.ep.internal_states.MP,elto,melto);show_main_memory(sim.ep.internal_states.MP,elto,typeof valref==="undefined",true);return value}};sim.ep.internal_states.segments={};sim.ep.internal_states.MP_wc=0;sim.ep.internal_states.MP={};sim.ep.internal_states.CM_cfg=[];sim.ep.internal_states.CM=[];sim.ep.signals.MRDY={name:"MRDY",visible:true,type:"L",value:0,default_value:0,nbits:"1",depends_on:["CLK"],behavior:["FIRE_IFCHANGED MRDY C","FIRE_IFCHANGED MRDY C"],fire_name:["svg_p:tspan3916","svg_p:text3909"],draw_data:[[],["svg_p:path3895","svg_p:path3541"]],draw_name:[[],[]]};sim.ep.signals.R={name:"R",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; CHECK_RTD","MEM_READ BUS_AB BUS_DB BWA MRDY CLK; FIRE MRDY; CHECK_RTD"],fire_name:["svg_p:text3533-5-2","svg_p:text3713"],draw_data:[[],["svg_p:path3557","svg_p:path3571"]],draw_name:[[],[]]};sim.ep.signals.W={name:"W",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","MEM_WRITE BUS_AB BUS_DB BWA MRDY CLK; FIRE MRDY"],fire_name:["svg_p:text3533-5-08","svg_p:text3527","svg_p:text3431-7"],draw_data:[[],["svg_p:path3559","svg_p:path3575","svg_p:path3447-7"]],draw_name:[[],[]]};sim.ep.behaviors.MEM_READ={nparameters:6,types:["E","E","S","S","E"],operation:function(s_expr){var address=sim.ep.states[s_expr[1]].value;var dbvalue=sim.ep.states[s_expr[2]].value;var bw=sim.ep.signals[s_expr[3]].value;var clk=get_value(sim.ep.states[s_expr[5]]);sim.ep.signals[s_expr[4]].value=0;var remain=get_value(sim.ep.internal_states.MP_wc);if(typeof sim.ep.events.mem[clk-1]!="undefined"&&sim.ep.events.mem[clk-1]>0){remain=sim.ep.events.mem[clk-1]-1}var first_time=typeof sim.ep.events.mem[clk]=="undefined";sim.ep.events.mem[clk]=remain;if(remain>0){return}address=address&4294967292;var value=main_memory_getvalue(sim.ep.internal_states.MP,address);var full_redraw=false;if(typeof value==="undefined"){value=0;full_redraw=true}dbvalue=main_memory_fusionvalues(dbvalue,value,bw);sim.ep.states[s_expr[2]].value=dbvalue>>>0;sim.ep.signals[s_expr[4]].value=1;show_main_memory(sim.ep.internal_states.MP,address,full_redraw,false);if(first_time&&sim.ep.internal_states.CM.length>0){cache_memory_access(sim.ep.internal_states.CM[0],address,"read",clk)}},verbal:function(s_expr){var verbal="";var address=sim.ep.states[s_expr[1]].value;var dbvalue=sim.ep.states[s_expr[2]].value;var bw=sim.ep.signals[s_expr[3]].value;var clk=get_value(sim.ep.states[s_expr[5]]);var bw_type="word";if(0==(bw&12))bw_type="byte";else if(1==(bw&12))bw_type="half";var value=main_memory_getvalue(sim.ep.internal_states.MP,address);if(typeof value==="undefined")value=0;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){verbal="Try to read a "+bw_type+" from memory "+"at address 0x"+address.toString(16)+" with value 0x"+value.toString(16)+". "}verbal="Memory output = 0x"+value.toString(16)+" (Read a "+bw_type+" from 0x"+address.toString(16)+"). ";return verbal}};sim.ep.behaviors.MEM_WRITE={nparameters:6,types:["E","E","S","S","E"],operation:function(s_expr){var address=sim.ep.states[s_expr[1]].value;var dbvalue=sim.ep.states[s_expr[2]].value;var bw=sim.ep.signals[s_expr[3]].value;var clk=get_value(sim.ep.states[s_expr[5]]);sim.ep.signals[s_expr[4]].value=0;var remain=get_value(sim.ep.internal_states.MP_wc);if(typeof sim.ep.events.mem[clk-1]!="undefined"&&sim.ep.events.mem[clk-1]>0){remain=sim.ep.events.mem[clk-1]-1}var first_time=typeof sim.ep.events.mem[clk]=="undefined";sim.ep.events.mem[clk]=remain;if(remain>0){return}address=address&4294967292;var value=main_memory_getvalue(sim.ep.internal_states.MP,address);var full_redraw=false;if(typeof value==="undefined"){value=0;full_redraw=true}value=main_memory_fusionvalues(value,dbvalue,bw);var origin="";var r_value=main_memory_get_program_counter();if(r_value!=null){origin="PC=0x"+r_value.toString(16)}var melto={value:value>>>0,source_tracking:[origin],comments:null};var valref=main_memory_set(sim.ep.internal_states.MP,address,melto);sim.ep.signals[s_expr[4]].value=1;show_main_memory(sim.ep.internal_states.MP,address,full_redraw,true);if(first_time&&sim.ep.internal_states.CM.length>0){cache_memory_access(sim.ep.internal_states.CM[0],address,"write",clk)}},verbal:function(s_expr){var verbal="";var address=sim.ep.states[s_expr[1]].value;var dbvalue=sim.ep.states[s_expr[2]].value;var bw=sim.ep.signals[s_expr[3]].value;var clk=get_value(sim.ep.states[s_expr[5]]);var bw_type="word";if(0==(bw&12))bw_type="byte";else if(1==(bw&12))bw_type="half";var value=main_memory_getvalue(sim.ep.internal_states.MP,address);if(typeof value==="undefined")value=0;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){verbal="Try to write a "+bw_type+" to memory "+"at address 0x"+address.toString(16)+" with value "+value.toString(16)+". "}verbal="Memory[0x"+address.toString(16)+"] = "+"0x"+value.toString(16)+" (Write a "+bw_type+" to 0x"+address.toString(16)+"). ";return verbal}};sim.ep.behaviors.MEMORY_RESET={nparameters:1,operation:function(s_expr){sim.ep.events.mem={}},verbal:function(s_expr){return"Reset main memory (all values will be zeroes). "}};sim.ep.elements.memory={name:"Main memory",description:"Main memory subsystem",type:"subcomponent",belongs:"MEMORY",states:{addr:{ref:"BUS_AB"},data:{ref:"BUS_DB"},mrdy:{ref:"MRDY"}},signals:{be:{ref:"BWA"},r:{ref:"R"},w:{ref:"W"}},states_inputs:["addr","data"],states_outputs:["mrdy","data"],signals_inputs:["be","r","w"],signals_output:[]};sim.ep.components.IO={name:"IO",version:"1",abilities:["IO_TIMER"],details_name:["IO_STATS","IO_CONFIG"],details_fire:[["svg_p:text3775"],[]],write_state:function(vec){return vec},read_state:function(o,check){return false},get_state:function(reg){return null},get_value:function(elto){var associated_state=simhw_internalState_get("io_hash",elto);var value=get_value(simhw_sim_state(associated_state))>>>0;set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_signal("IOR"),1);compute_behavior("FIRE IOR");value=get_value(simhw_sim_state("BUS_DB"));return value},set_value:function(elto,value){var associated_state=simhw_internalState_get("io_hash",elto);set_value(simhw_sim_state(associated_state),value);set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_state("BUS_DB"),value);set_value(simhw_sim_signal("IOW"),1);compute_behavior("FIRE IOW");return value}};sim.ep.internal_states.io_int_factory=[];sim.ep.internal_states.io_int_factory[0]={period:0,probability:.5,accumulated:0,active:false};sim.ep.internal_states.io_int_factory[1]={period:0,probability:.5,accumulated:0,active:false};sim.ep.internal_states.io_int_factory[2]={period:0,probability:.5,accumulated:0,active:false};sim.ep.internal_states.io_int_factory[3]={period:0,probability:.5,accumulated:0,active:false};sim.ep.internal_states.io_int_factory[4]={period:0,probability:.5,accumulated:0,active:false};sim.ep.internal_states.io_int_factory[5]={period:0,probability:.5,accumulated:0,active:false};sim.ep.internal_states.io_int_factory[6]={period:0,probability:.5,accumulated:0,active:false};sim.ep.internal_states.io_int_factory[7]={period:0,probability:.5,accumulated:0,active:false};var IOSR_ID=4352;var IOCR_ID=4356;var IODR_ID=4360;sim.ep.internal_states.io_hash[IOSR_ID]="IOSR";sim.ep.internal_states.io_hash[IOCR_ID]="IOCR";sim.ep.internal_states.io_hash[IODR_ID]="IODR";sim.ep.states.IOSR={name:"IOSR",verbal:"IO State Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.IOCR={name:"IOCR",verbal:"IO Control Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.IODR={name:"IODR",verbal:"IO Data Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.signals.INT={name:"INT",visible:true,type:"L",value:0,default_value:0,nbits:"1",depends_on:["CLK"],behavior:["FIRE C","FIRE C"],fire_name:["svg_p:tspan4199"],draw_data:[[],["svg_p:path3809"]],draw_name:[[],[]]};sim.ep.signals.IORDY={name:"IORDY",visible:true,type:"L",value:0,default_value:0,nbits:"1",depends_on:["CLK"],behavior:["FIRE_IFCHANGED IORDY C","FIRE_IFCHANGED IORDY C"],fire_name:["svg_p:tspan4089","svg_p:path3793","svg_p:text3911"],draw_data:[[],["svg_p:path3897"]],draw_name:[[],[]]};sim.ep.signals.IO_IOR={name:"IO_IOR",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","IO_IOR BUS_AB BUS_DB IOSR IOCR IODR CLK; FIRE SBWA"],fire_name:["svg_p:tspan4173"],draw_data:[[],["svg_p:path3795","svg_p:path3733"]],draw_name:[[],[]]};sim.ep.signals.IO_IOW={name:"IO_IOW",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","IO_IOW BUS_AB BUS_DB IOSR IOCR IODR CLK; FIRE SBWA"],fire_name:["svg_p:text3785-0-6-0-5-5"],draw_data:[[],["svg_p:path3805","svg_p:path3733"]],draw_name:[[],[]]};sim.ep.signals.IO_IE={name:"IO_IE",visible:true,type:"L",value:1,default_value:1,nbits:"1",behavior:["NOP","IO_CHK_I CLK INT INTV; FIRE C"],fire_name:[],draw_data:[[],[]],draw_name:[[],[]]};sim.ep.signals.INTA={name:"INTA",visible:true,type:"L",value:1,default_value:0,nbits:"1",behavior:["NOP","INTA CLK INT INTA BUS_DB INTV; FIRE BW; FIRE C"],fire_name:["svg_p:text3785-0-6-0-5-5-1-1"],draw_data:[[],["svg_p:path3807","svg_p:path3737"]],draw_name:[[],[]]};sim.ep.behaviors.IO_IOR={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.ep.states[s_expr[1]]);var iosr=get_value(sim.ep.states[s_expr[3]]);var iocr=get_value(sim.ep.states[s_expr[4]]);var iodr=get_value(sim.ep.states[s_expr[5]]);if(bus_ab==IOSR_ID)set_value(sim.ep.states[s_expr[2]],iosr);if(bus_ab==IOCR_ID)set_value(sim.ep.states[s_expr[2]],iocr);if(bus_ab==IODR_ID)set_value(sim.ep.states[s_expr[2]],iodr)},verbal:function(s_expr){var verbal="";var bus_ab=get_value(sim.ep.states[s_expr[1]]);var iosr=get_value(sim.ep.states[s_expr[3]]);var iocr=get_value(sim.ep.states[s_expr[4]]);var iodr=get_value(sim.ep.states[s_expr[5]]);if(bus_ab==IOSR_ID)verbal="I/O device read at IOSR of value "+iosr+". ";if(bus_ab==IOCR_ID)verbal="I/O device read at IOCR of value "+iocr+". ";if(bus_ab==IODR_ID)verbal="I/O device read at IODR of value "+iodr+". ";return verbal}};sim.ep.behaviors.IO_IOW={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.ep.states[s_expr[1]]);var bus_db=get_value(sim.ep.states[s_expr[2]]);if(bus_ab!=IOSR_ID&&bus_ab!=IOCR_ID&&bus_ab!=IODR_ID){return}if(bus_ab==IOSR_ID)set_value(sim.ep.states[s_expr[3]],bus_db);if(bus_ab==IOCR_ID)set_value(sim.ep.states[s_expr[4]],bus_db);if(bus_ab==IODR_ID)set_value(sim.ep.states[s_expr[5]],bus_db);var iocr_id=get_value(sim.ep.states[s_expr[4]]);var iodr_id=get_value(sim.ep.states[s_expr[5]]);if(iocr_id<0||iocr_id>7)return;set_var(sim.ep.internal_states.io_int_factory[iocr_id].period,iodr_id);set_var(sim.ep.internal_states.io_int_factory[iocr_id].probability,1);if(0==iodr_id){set_var(sim.ep.internal_states.io_int_factory[iocr_id].probability,0)}},verbal:function(s_expr){var verbal="";var bus_ab=get_value(sim.ep.states[s_expr[1]]);var bus_db=get_value(sim.ep.states[s_expr[2]]);if(bus_ab==IOSR_ID)verbal="I/O device write at IOSR with value "+bus_db+". ";if(bus_ab==IOCR_ID)verbal="I/O device write at IOCR with value "+bus_db+". ";if(bus_ab==IODR_ID)verbal="I/O device write at IODR with value "+bus_db+". ";return verbal}};sim.ep.behaviors.IO_CHK_I={nparameters:4,types:["E","S","E"],operation:function(s_expr){var clk=get_value(sim.ep.states[s_expr[1]]);for(var i=sim.ep.internal_states.io_int_factory.length-1;i>=0;i--){if(get_var(sim.ep.internal_states.io_int_factory[i].period)==0)continue;if(get_var(sim.ep.internal_states.io_int_factory[i].active)==true){set_value(sim.ep.signals[s_expr[2]],1);set_value(sim.ep.states[s_expr[3]],i)}if(clk%get_var(sim.ep.internal_states.io_int_factory[i].period)==0){if(Math.random()>get_var(sim.ep.internal_states.io_int_factory[i].probability))continue;var acc=get_var(sim.ep.internal_states.io_int_factory[i].accumulated);set_var(sim.ep.internal_states.io_int_factory[i].accumulated,acc+1);set_var(sim.ep.internal_states.io_int_factory[i].active,true);if(typeof sim.ep.events.io[clk]=="undefined"){sim.ep.events.io[clk]=[]}sim.ep.events.io[clk].push(i);set_value(sim.ep.signals[s_expr[2]],1);set_value(sim.ep.states[s_expr[3]],i)}}},verbal:function(s_expr){return"Check I/O Interruption. "}};sim.ep.behaviors.INTA={nparameters:6,types:["E","S","S","E","E"],operation:function(s_expr){var clk=get_value(sim.ep.states[s_expr[1]]);if(typeof sim.ep.events.io[clk]!="undefined"){set_value(sim.ep.states[s_expr[4]],sim.ep.events.io[clk][0]);return}set_value(sim.ep.signals[s_expr[2]],0);set_value(sim.ep.states[s_expr[5]],0);for(var i=0;i>>0;set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_signal("IOR"),1);compute_behavior("FIRE IOR");value=get_value(simhw_sim_state("BUS_DB"));return value},set_value:function(elto,value){var associated_state=simhw_internalState_get("io_hash",elto);set_value(simhw_sim_state(associated_state),value);set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_state("BUS_DB"),value);set_value(simhw_sim_signal("IOW"),1);compute_behavior("FIRE IOW");return value}};sim.ep.internal_states.l3d_dim=4;sim.ep.internal_states.l3d_neltos=Math.pow(sim.ep.internal_states.l3d_dim,3);sim.ep.internal_states.l3d_state=Array.from({length:sim.ep.internal_states.l3d_neltos},(()=>({active:false})));sim.ep.internal_states.l3d_frame="0".repeat(sim.ep.internal_states.l3d_neltos);var L3DSR_ID=8448;var L3DCR_ID=8452;var L3DDR_ID=8456;sim.ep.internal_states.io_hash[L3DSR_ID]="L3DSR";sim.ep.internal_states.io_hash[L3DCR_ID]="L3DCR";sim.ep.internal_states.io_hash[L3DDR_ID]="L3DDR";sim.ep.states.L3DSR={name:"L3DSR",verbal:"L3D State Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.L3DCR={name:"L3DCR",verbal:"L3D Control Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.L3DDR={name:"L3DDR",verbal:"L3D Data Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.signals.L3D_IOR={name:"L3D_IOR",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","L3D_IOR BUS_AB BUS_DB L3DSR L3DCR L3DDR CLK; FIRE SBWA"],fire_name:["svg_p:tspan4173"],draw_data:[[],["svg_p:path3795","svg_p:path3733"]],draw_name:[[],[]]};sim.ep.signals.L3D_IOW={name:"L3D_IOW",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","L3D_IOW BUS_AB BUS_DB L3DSR L3DCR L3DDR CLK; FIRE SBWA; L3D_SYNC"],fire_name:["svg_p:text3785-0-6-0-5-5"],draw_data:[[],["svg_p:path3805","svg_p:path3733"]],draw_name:[[],[]]};sim.ep.behaviors.L3D_IOR={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.ep.states[s_expr[1]]);var iosr=get_value(sim.ep.states[s_expr[3]]);var iocr=get_value(sim.ep.states[s_expr[4]]);var iodr=get_value(sim.ep.states[s_expr[5]]);if(bus_ab==L3DCR_ID){set_value(sim.ep.states[s_expr[2]],iocr)}if(bus_ab==L3DDR_ID){set_value(sim.ep.states[s_expr[2]],iodr)}if(bus_ab==L3DSR_ID){var x=(iodr&4278190080)>>24;var y=(iodr&16711680)>>16;var z=(iodr&65280)>>8;var p=z*Math.pow(sim.ep.internal_states.l3d_dim,2)+y*sim.ep.internal_states.l3d_dim+x;var s=get_var(sim.ep.internal_states.l3d_state[p].active);set_value(sim.ep.states[s_expr[2]],s)}},verbal:function(s_expr){var verbal="";var bus_ab=get_value(sim.ep.states[s_expr[1]]);var iosr=get_value(sim.ep.states[s_expr[3]]);var iocr=get_value(sim.ep.states[s_expr[4]]);var iodr=get_value(sim.ep.states[s_expr[5]]);if(bus_ab==L3DSR_ID)verbal="I/O device read at L3DSR of value "+iosr+". ";if(bus_ab==L3DCR_ID)verbal="I/O device read at L3DCR of value "+iocr+". ";if(bus_ab==L3DDR_ID)verbal="I/O device read at L3DDR of value "+iodr+". ";return verbal}};sim.ep.behaviors.L3D_IOW={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.ep.states[s_expr[1]]);var bus_db=get_value(sim.ep.states[s_expr[2]]);if(bus_ab!=L3DSR_ID&&bus_ab!=L3DCR_ID&&bus_ab!=L3DDR_ID){return}if(bus_ab==L3DSR_ID){set_value(sim.ep.states[s_expr[3]],bus_db)}if(bus_ab==L3DDR_ID){set_value(sim.ep.states[s_expr[5]],bus_db)}if(bus_ab==L3DCR_ID){set_value(sim.ep.states[s_expr[4]],bus_db);var x=(bus_db&4278190080)>>24;var y=(bus_db&16711680)>>16;var z=(bus_db&65280)>>8;var p=z*Math.pow(sim.ep.internal_states.l3d_dim,2)+y*sim.ep.internal_states.l3d_dim+x;var s=(bus_db&255)!=0;set_var(sim.ep.internal_states.l3d_state[p].active,s)}},verbal:function(s_expr){var verbal="";var bus_ab=get_value(sim.ep.states[s_expr[1]]);var bus_db=get_value(sim.ep.states[s_expr[2]]);if(bus_ab==L3DSR_ID)verbal="I/O device write at L3DSR with value "+bus_db+". ";if(bus_ab==L3DCR_ID)verbal="I/O device write at L3DCR with value "+bus_db+". ";if(bus_ab==L3DDR_ID)verbal="I/O device write at L3DDR with value "+bus_db+". ";return verbal}};sim.ep.behaviors.L3D_RESET={nparameters:1,operation:function(s_expr){sim.ep.events.l3d={};var n=sim.ep.internal_states.l3d_state.length;for(var i=0;i>>0;set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_signal("IOR"),1);compute_behavior("FIRE IOR");value=get_value(simhw_sim_state("BUS_DB"));return value},set_value:function(elto,value){var associated_state=simhw_internalState_get("io_hash",elto);set_value(simhw_sim_state(associated_state),value);set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_state("BUS_DB"),value);set_value(simhw_sim_signal("IOW"),1);compute_behavior("FIRE IOW");return value}};sim.ep.internal_states.ledm_dim=24;sim.ep.internal_states.ledm_neltos=Math.pow(sim.ep.internal_states.ledm_dim,2);sim.ep.internal_states.ledm_state=Array.from({length:sim.ep.internal_states.ledm_neltos},(()=>({color:0})));sim.ep.internal_states.ledm_colors=colors_clone("");sim.ep.internal_states.ledm_frame="0".repeat(sim.ep.internal_states.ledm_neltos);var LEDMSR_ID=12544;var LEDMCR_ID=12548;var LEDMDR_ID=12552;sim.ep.internal_states.io_hash[LEDMSR_ID]="LEDMSR";sim.ep.internal_states.io_hash[LEDMCR_ID]="LEDMCR";sim.ep.internal_states.io_hash[LEDMDR_ID]="LEDMDR";sim.ep.states.LEDMSR={name:"LEDMSR",verbal:"LEDM State Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.LEDMCR={name:"LEDMCR",verbal:"LEDM Control Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.states.LEDMDR={name:"LEDMDR",verbal:"LEDM Data Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.ep.signals.LEDM_IOR={name:"LEDM_IOR",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","LEDM_IOR BUS_AB BUS_DB LEDMSR LEDMCR LEDMDR CLK; FIRE SBWA"],fire_name:["svg_p:tspan4173"],draw_data:[[],["svg_p:path3795","svg_p:path3733"]],draw_name:[[],[]]};sim.ep.signals.LEDM_IOW={name:"LEDM_IOW",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","LEDM_IOW BUS_AB BUS_DB LEDMSR LEDMCR LEDMDR CLK; FIRE SBWA; LEDM_SYNC"],fire_name:["svg_p:text3785-0-6-0-5-5"],draw_data:[[],["svg_p:path3805","svg_p:path3733"]],draw_name:[[],[]]};sim.ep.behaviors.LEDM_IOR={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.ep.states[s_expr[1]]);var iosr=get_value(sim.ep.states[s_expr[3]]);var iocr=get_value(sim.ep.states[s_expr[4]]);var iodr=get_value(sim.ep.states[s_expr[5]]);if(bus_ab==LEDMCR_ID){set_value(sim.ep.states[s_expr[2]],iocr)}if(bus_ab==LEDMDR_ID){set_value(sim.ep.states[s_expr[2]],iodr)}if(bus_ab==LEDMSR_ID){var x=(iodr&4278190080)>>24;var y=(iodr&16711680)>>16;var p=y*sim.ep.internal_states.ledm_dim+x;var s=get_var(sim.ep.internal_states.ledm_state[p].color);set_value(sim.ep.states[s_expr[2]],s)}},verbal:function(s_expr){var verbal="";var bus_ab=get_value(sim.ep.states[s_expr[1]]);var iosr=get_value(sim.ep.states[s_expr[3]]);var iocr=get_value(sim.ep.states[s_expr[4]]);var iodr=get_value(sim.ep.states[s_expr[5]]);if(bus_ab==LEDMSR_ID)verbal="I/O device read at LEDMSR of value "+iosr+". ";if(bus_ab==LEDMCR_ID)verbal="I/O device read at LEDMCR of value "+iocr+". ";if(bus_ab==LEDMDR_ID)verbal="I/O device read at LEDMDR of value "+iodr+". ";return verbal}};sim.ep.behaviors.LEDM_IOW={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.ep.states[s_expr[1]]);var bus_db=get_value(sim.ep.states[s_expr[2]]);switch(bus_ab){case LEDMSR_ID:set_value(sim.ep.states[s_expr[3]],bus_db);break;case LEDMDR_ID:set_value(sim.ep.states[s_expr[5]],bus_db);break;case LEDMCR_ID:set_value(sim.ep.states[s_expr[4]],bus_db);break;default:break}if(LEDMCR_ID==bus_ab){var dr=get_value(sim.ep.states[s_expr[5]]);if(16&bus_db){var x=(dr&4278190080)>>24;var y=(dr&16711680)>>16;var s=dr&255;set_value(sim.ep.states[s_expr[3]],1);if(x>=sim.ep.internal_states.ledm_dim&&y>=sim.ep.internal_states.ledm_dim){set_value(sim.ep.states[s_expr[3]],-1);return}var p=y*sim.ep.internal_states.ledm_dim+x;set_var(sim.ep.internal_states.ledm_state[p].color,s)}if(32&bus_db){set_value(sim.ep.states[s_expr[3]],1);var s=0;var neltos=sim.ep.internal_states.ledm_neltos;for(var p=0;p>0);set_var(sim.ep.internal_states.ledm_state[p+1].color,(s&65280)>>8);set_var(sim.ep.internal_states.ledm_state[p+2].color,(s&16711680)>>16);set_var(sim.ep.internal_states.ledm_state[p+3].color,(s&4278190080)>>24)}}if(64&bus_db){set_value(sim.ep.states[s_expr[3]],1);var s=0;var c="";var neltos=sim.ep.internal_states.ledm_colors.length;for(var p=0;p>>8;s=s.toString(16);c="#"+simcoreui_pack(s,6);sim.ep.internal_states.ledm_colors[p]=c}neltos=sim.ep.internal_states.ledm_neltos;for(var p=0;p>24;var y=(dr&16711680)>>16;var s=dr&255;verbal="I/O device write at LEDMCR with value "+bus_db+" (set pixel x:"+x+", y:"+y+", with color:"+s+"). "}if(64&bus_db){verbal="I/O device write at LEDMCR with value "+bus_db+" (set color palette at:"+bus_db+"). "}break;default:break}return verbal}};sim.ep.behaviors.LEDM_RESET={nparameters:1,operation:function(s_expr){sim.ep.events.ledm={};sim.ep.internal_states.ledm_colors=colors_clone("");for(var i=0;i>>0;if(value!=0){vec.CPU["R"+i]={type:"register",default_value:0,id:"R"+i,op:"=",value:"0x"+value.toString(16)}}}for(var i=0;i>>0;if(value!=0){vec.CPU[internal_reg[i]]={type:"register",default_value:0,id:internal_reg[i],op:"=",value:"0x"+value.toString(16)}}}return vec},read_state:function(vec,check){if(typeof vec.CPU=="undefined")vec.CPU={};var key=check["id"].toUpperCase().trim();var val=parseInt(check["value"]).toString(16);if("REGISTER"==check["type"].toUpperCase().trim()){vec.CPU[key]={type:"register",default_value:0,id:key,op:check["condition"],value:"0x"+val};return true}return false},get_state:function(reg){var r_reg=reg.toUpperCase().trim();if(typeof sim.poc.states["REG_"+r_reg]!="undefined"){var value=get_value(sim.poc.states["REG_"+r_reg])>>>0;return"0x"+value.toString(16)}r_reg=r_reg.replace("R","");var index=parseInt(r_reg);if(typeof sim.poc.states.BR[index]!="undefined"){var value=get_value(sim.poc.states.BR[index])>>>0;return"0x"+value.toString(16)}return null},get_value:function(elto){if(Number.isInteger(elto))index=elto;else index=parseInt(elto);if(isNaN(index))return get_value(simhw_sim_state(elto))>>>0;return get_value(simhw_sim_states().BR[index])>>>0},set_value:function(elto,value){var pc_name=simhw_sim_ctrlStates_get().pc.state;if(Number.isInteger(elto))index=elto;else index=parseInt(elto);if(isNaN(index)){set_value(simhw_sim_state(elto),value);if(pc_name===elto){show_asmdbg_pc()}return value}return set_value(simhw_sim_states().BR[index],value)}};sim.poc.ctrl_states.pc={name:"PC",state:"REG_PC",is_pointer:true};sim.poc.ctrl_states.sp={name:"SP",state:"BR.29",is_pointer:true};sim.poc.ctrl_states.fp={name:"FP",state:"BR.30",is_pointer:true};sim.poc.ctrl_states.ir={name:"IR",state:"REG_IR",default_eltos:{co:{begin:0,end:5,length:6},cop:{begin:27,end:31,length:5}},is_pointer:false};sim.poc.ctrl_states.mpc={name:"mPC",state:"REG_MICROADDR",is_pointer:false};sim.poc.internal_states.MC={};sim.poc.internal_states.ROM={};sim.poc.internal_states.FIRMWARE=ws_empty_firmware;sim.poc.internal_states.io_hash={};sim.poc.internal_states.fire_stack=[];sim.poc.internal_states.tri_state_names=["T1","T2","T3","T6","T8","T9","T10","T11","T12"];sim.poc.internal_states.fire_visible={databus:false,internalbus:false};sim.poc.internal_states.filter_states=["REG_IR_DECO,col-12","REG_IR,col-auto","REG_PC,col-auto","REG_SR,col-auto","REG_RT1,col-auto","REG_MAR,col-auto","REG_MBR,col-auto","REG_MICROADDR,col-auto"];sim.poc.internal_states.filter_signals=["A0,0","B,0","C,0","SELA,5","SELB,5","SELC,2","SELCOP,0","MRA,0","MRB,0","MRC,0","MC,0","C0,0","C1,0","C2,0","C3,0","C4,0","C7,0","T1,0","T2,0","T3,0","T6,0","T8,0","T9,0","T10,0","T11,0","M1,0","M7,0","MA,0","MB,0","LC,0","SE,0","SIZE,0","OFFSET,0","BW,0","R,0","W,0","TA,0","TD,0","IOR,0","IOW,0","TEST_I,0","TEST_U,0"];sim.poc.internal_states.alu_flags={flag_n:0,flag_z:0,flag_v:0,flag_c:0};sim.poc.states.BR=[];sim.poc.states.BR[0]={name:"R0",verbal:"Register 0",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[1]={name:"R1",verbal:"Register 1",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[2]={name:"R2",verbal:"Register 2",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[3]={name:"R3",verbal:"Register 3",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[4]={name:"R4",verbal:"Register 4",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[5]={name:"R5",verbal:"Register 5",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[6]={name:"R6",verbal:"Register 6",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[7]={name:"R7",verbal:"Register 7",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[8]={name:"R8",verbal:"Register 8",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[9]={name:"R9",verbal:"Register 9",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[10]={name:"R10",verbal:"Register 10",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[11]={name:"R11",verbal:"Register 11",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[12]={name:"R12",verbal:"Register 12",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[13]={name:"R13",verbal:"Register 13",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[14]={name:"R14",verbal:"Register 14",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[15]={name:"R15",verbal:"Register 15",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[16]={name:"R16",verbal:"Register 16",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[17]={name:"R17",verbal:"Register 17",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[18]={name:"R18",verbal:"Register 18",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[19]={name:"R19",verbal:"Register 19",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[20]={name:"R20",verbal:"Register 20",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[21]={name:"R21",verbal:"Register 21",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[22]={name:"R22",verbal:"Register 22",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[23]={name:"R23",verbal:"Register 23",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[24]={name:"R24",verbal:"Register 24",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[25]={name:"R25",verbal:"Register 25",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[26]={name:"R26",verbal:"Register 26",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[27]={name:"R27",verbal:"Register 27",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[28]={name:"R28",verbal:"Register 28",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[29]={name:"R29",verbal:"Register 29",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[30]={name:"R30",verbal:"Register 30",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[31]={name:"R31",verbal:"Register 31",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[32]={name:"R32",verbal:"Register 32",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[33]={name:"R33",verbal:"Register 33",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[34]={name:"R34",verbal:"Register 34",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[35]={name:"R35",verbal:"Register 35",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[36]={name:"R36",verbal:"Register 36",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[37]={name:"R37",verbal:"Register 37",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[38]={name:"R38",verbal:"Register 38",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[39]={name:"R39",verbal:"Register 39",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[40]={name:"R40",verbal:"Register 40",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[41]={name:"R41",verbal:"Register 41",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[42]={name:"R42",verbal:"Register 42",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[43]={name:"R43",verbal:"Register 43",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[44]={name:"R44",verbal:"Register 44",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[45]={name:"R45",verbal:"Register 45",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[46]={name:"R46",verbal:"Register 46",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[47]={name:"R47",verbal:"Register 47",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[48]={name:"R48",verbal:"Register 48",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[49]={name:"R49",verbal:"Register 49",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[50]={name:"R50",verbal:"Register 50",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[51]={name:"R51",verbal:"Register 51",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[52]={name:"R52",verbal:"Register 52",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[53]={name:"R53",verbal:"Register 53",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[54]={name:"R54",verbal:"Register 54",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[55]={name:"R55",verbal:"Register 55",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[56]={name:"R56",verbal:"Register 56",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[57]={name:"R57",verbal:"Register 57",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[58]={name:"R58",verbal:"Register 58",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[59]={name:"R59",verbal:"Register 59",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[60]={name:"R60",verbal:"Register 60",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[61]={name:"R61",verbal:"Register 61",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[62]={name:"R62",verbal:"Register 62",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.BR[63]={name:"R63",verbal:"Register 63",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["REG_PC"]={name:"PC",verbal:"Program Counter Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["REG_MAR"]={name:"MAR",verbal:"Memory Address Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["REG_MBR"]={name:"MBR",verbal:"Memory Data Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["REG_IR"]={name:"IR",verbal:"Instruction Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["REG_SR"]={name:"SR",verbal:"State Register",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["REG_RT1"]={name:"RT1",verbal:"Temporal Register 1",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["BUS_IB"]={name:"I_BUS",verbal:"Internal Bus",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["BUS_AB"]={name:"A_BUS",verbal:"Address Bus",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["BUS_CB"]={name:"C_BUS",verbal:"Control Bus",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["BUS_DB"]={name:"D_BUS",verbal:"Data Bus",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["RA_T9"]={name:"RA_T9",verbal:"Input of T9 Tristate",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["RB_T10"]={name:"RB_T10",verbal:"Input of T10 Tristate",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["HPC_T12"]={name:"HPC_T12",verbal:"Input of T12 Tristate",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["SELEC_T3"]={name:"SELEC_T3",verbal:"Input of T3 Tristate",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["ALU_T6"]={name:"ALU_T6",verbal:"Input of T6 Tristate",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["MA_ALU"]={name:"MA_ALU",verbal:"Input ALU via MA",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["MB_ALU"]={name:"MB_ALU",verbal:"Input ALU via MB",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["FLAG_C"]={name:"FLAG_C",verbal:"Carry Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.poc.states["FLAG_V"]={name:"FLAG_V",verbal:"Overflow Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.poc.states["FLAG_N"]={name:"FLAG_N",verbal:"Negative Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.poc.states["FLAG_Z"]={name:"FLAG_Z",verbal:"Zero Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.poc.states["FLAG_I"]={name:"FLAG_I",verbal:"Interruption Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.poc.states["FLAG_U"]={name:"FLAG_U",verbal:"User Flag",visible:true,nbits:"1",value:0,default_value:0,draw_data:[]};sim.poc.states["REG_MICROADDR"]={name:"µADDR",verbal:"Microaddress Register",visible:true,nbits:"12",value:0,default_value:0,draw_data:["svg_cu:text4667"]};sim.poc.states["REG_MICROINS"]={name:"µINS",verbal:"Microinstruction Register",visible:true,nbits:"77",value:{},default_value:{},draw_data:[]};sim.poc.states["FETCH"]={name:"FETCH",verbal:"Input Fetch",visible:false,nbits:"12",value:0,default_value:0,draw_data:[]};sim.poc.states["ROM_MUXA"]={name:"ROM_MUXA",verbal:"Input ROM",visible:false,nbits:"12",value:0,default_value:0,draw_data:[]};sim.poc.states["SUM_ONE"]={name:"SUM_ONE",verbal:"Input next microinstruction",visible:false,nbits:"12",value:1,default_value:1,draw_data:[]};sim.poc.states["MUXA_MICROADDR"]={name:"MUXA_MICROADDR",verbal:"Input microaddress",visible:false,nbits:"12",value:0,default_value:0,draw_data:[]};sim.poc.states["MUXC_MUXB"]={name:"MUXC_MUXB",verbal:"Output of MUX C",visible:false,nbits:"1",value:0,default_value:0,draw_data:[]};sim.poc.states["INEX"]={name:"INEX",verbal:"Illegal Instruction Exception",visible:false,nbits:"1",value:0,default_value:0,draw_data:[]};sim.poc.states["BS_M1"]={name:"BS_M1",verbal:"from Memory",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["BS_TD"]={name:"BS_TD",verbal:"Memory",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["INTV"]={name:"INTV",verbal:"Interruption Vector",visible:false,nbits:"8",value:0,default_value:0,draw_data:[]};sim.poc.states["M1_C1"]={name:"M1_C1",verbal:"Input of Memory Data Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["M7_C7"]={name:"M7_C7",verbal:"Input of State Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["VAL_ZERO"]={name:"VAL_ZERO",verbal:"Wired Zero",visible:false,nbits:"1",value:0,default_value:0,draw_data:[]};sim.poc.states["VAL_ONE"]={name:"VAL_ONE",verbal:"Wired One",visible:false,nbits:"32",value:1,default_value:1,draw_data:[]};sim.poc.states["VAL_FOUR"]={name:"VAL_FOUR",verbal:"Wired Four",visible:false,nbits:"32",value:4,default_value:4,draw_data:[]};sim.poc.states["REG_IR_DECO"]={name:"IR_DECO",verbal:"Instruction Decoded",visible:true,nbits:"0",value:0,default_value:0,draw_data:[]};sim.poc.states["DECO_INS"]={name:"DECO_INS",verbal:"Instruction decoded in binary",visible:true,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["CLK"]={name:"CLK",verbal:"Clock",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["ACC_TIME"]={name:"ACC_TIME",verbal:"Accumulated CPU time",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["TTCPU"]={name:"TTCPU",verbal:"Several Tristates to the internal data bus in CPU activated",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states["ACC_PWR"]={name:"ACC_PWR",verbal:"Accumulated Energy Consumption",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.signals["C"]={name:"C",visible:true,type:"L",value:0,default_value:0,nbits:"4",behavior:["MV MUXC_MUXB VAL_ZERO; FIRE_IFCHANGED B MUXC_MUXB; RESET_CHANGED MUXC_MUXB","MBIT MUXC_MUXB INT 0 1; FIRE_IFCHANGED B MUXC_MUXB; RESET_CHANGED MUXC_MUXB","MBIT MUXC_MUXB IORDY 0 1; FIRE_IFCHANGED B MUXC_MUXB; RESET_CHANGED MUXC_MUXB","MBIT MUXC_MUXB MRDY 0 1; FIRE_IFCHANGED B MUXC_MUXB; RESET_CHANGED MUXC_MUXB","MBIT MUXC_MUXB REG_SR 0 1; FIRE_IFCHANGED B MUXC_MUXB; RESET_CHANGED MUXC_MUXB","MBIT MUXC_MUXB REG_SR 1 1; FIRE_IFCHANGED B MUXC_MUXB; RESET_CHANGED MUXC_MUXB","MBIT MUXC_MUXB REG_SR 28 1; FIRE_IFCHANGED B MUXC_MUXB; RESET_CHANGED MUXC_MUXB","MBIT MUXC_MUXB REG_SR 29 1; FIRE_IFCHANGED B MUXC_MUXB; RESET_CHANGED MUXC_MUXB","MBIT MUXC_MUXB REG_SR 30 1; FIRE_IFCHANGED B MUXC_MUXB; RESET_CHANGED MUXC_MUXB","MBIT MUXC_MUXB REG_SR 31 1; FIRE_IFCHANGED B MUXC_MUXB; RESET_CHANGED MUXC_MUXB","MV MUXC_MUXB INEX; FIRE_IFCHANGED B MUXC_MUXB; RESET_CHANGED MUXC_MUXB"],fire_name:["svg_cu:text3410"],draw_data:[["svg_cu:path3108"],["svg_cu:path3062"],["svg_cu:path3060"],["svg_cu:path3136"],["svg_cu:path3482"],["svg_cu:path3480"],["svg_cu:path3488"],["svg_cu:path3486"],["svg_cu:path3484"],["svg_cu:path3484-9"],["svg_cu:path3108-3","svg_cu:path3260-3-8-6","svg_cu:path3260-3-8","svg_cu:path3260-3"]],draw_name:[["svg_cu:path3496","svg_cu:path3414","svg_cu:path3194-08"]]};sim.poc.signals["B"]={name:"B",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV A1 MUXC_MUXB; FIRE A1","NOT_ES A1 MUXC_MUXB; FIRE A1"],depends_on:["CLK"],fire_name:["svg_cu:text3408"],draw_data:[["svg_cu:path3094-7","svg_cu:path3100-8-7","svg_cu:path3198-7","svg_cu:path3200-1"],["svg_cu:path3392","svg_cu:path3372","svg_cu:path3390","svg_cu:path3384","svg_cu:path3108-1","svg_cu:path3100-8-7","svg_cu:path3200-1","svg_cu:path3386"]],draw_name:[[],["svg_cu:path3194-0","svg_cu:path3138-8","svg_cu:path3498-6"]]};sim.poc.signals["A0"]={name:"A0",visible:false,type:"L",value:0,default_value:0,nbits:"1",behavior:["SBIT_SIGNAL A0A1 0 1; FIRE A0A1","SBIT_SIGNAL A0A1 1 1; FIRE A0A1"],depends_on:["CLK"],fire_name:["svg_cu:text3406"],draw_data:[["svg_cu:path3096"],["svg_cu:path3096"]],draw_name:[[],["svg_cu:path3138-8-1","svg_cu:path3098-2","svg_cu:path3124-2-5"]]};sim.poc.signals["A1"]={name:"A1",visible:false,type:"L",value:0,default_value:0,nbits:"1",behavior:["SBIT_SIGNAL A0A1 0 0; FIRE A0A1","SBIT_SIGNAL A0A1 1 0; FIRE A0A1"],depends_on:["CLK"],fire_name:[],draw_data:[["svg_cu:path3094"],["svg_cu:path3094"]],draw_name:[[]]};sim.poc.signals["A0A1"]={name:"A0A1",visible:true,type:"L",value:0,default_value:0,nbits:"2",behavior:["PLUS1 MUXA_MICROADDR REG_MICROADDR","CP_FIELD MUXA_MICROADDR REG_MICROINS/MADDR","MV MUXA_MICROADDR ROM_MUXA","MV MUXA_MICROADDR FETCH"],depends_on:["CLK"],fire_name:[],draw_data:[["svg_cu:path3102","svg_cu:path3100","svg_cu:path3098","svg_cu:path3100-9","svg_cu:path3088","svg_cu:path3082"],["svg_cu:path3104","svg_cu:path3134","svg_cu:path3500","svg_cu:path3416","svg_cu:path3124-2-4","svg_cu:path3124-2"],["svg_cu:path3504","svg_cu:path3100-8","svg_cu:path3234-9"],["svg_cu:path3124"]],draw_name:[[]]};sim.poc.signals["C0"]={name:"C0",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","MV REG_MAR BUS_IB"],fire_name:["svg_p:text3077"],draw_data:[["svg_p:path3081"]],draw_name:[["svg_p:path3075"]]};sim.poc.signals["C1"]={name:"C1",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","MV REG_MBR M1_C1"],fire_name:["svg_p:text3079"],draw_data:[["svg_p:path3055"]],draw_name:[["svg_p:path3073"]]};sim.poc.signals["C2"]={name:"C2",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","MV REG_PC BUS_IB; UPDATEDPC"],fire_name:["svg_p:text3179"],draw_data:[["svg_p:path3217"]],draw_name:[["svg_p:path3177"]]};sim.poc.signals["C3"]={name:"C3",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","MV REG_IR BUS_IB; DECO; FIRE_IFSET C 10"],fire_name:["svg_p:text3439"],draw_data:[["svg_p:path3339","svg_p:path3913-4"]],draw_name:[["svg_p:path3337"]]};sim.poc.signals["C4"]={name:"C4",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","MV REG_RT1 BUS_IB"],fire_name:["svg_p:tspan482"],draw_data:[["svg_p:path3339-4"]],draw_name:[["svg_p:path3337-0"]]};sim.poc.signals["C7"]={name:"C7",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","MV REG_SR M7_C7"],fire_name:["svg_p:text3655"],draw_data:[["svg_p:path3651-9"]],draw_name:[["svg_p:path3681"]]};sim.poc.signals["TA"]={name:"TA",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","MV BUS_AB REG_MAR"],fire_name:["svg_p:text3091"],draw_data:[["svg_p:path3083","svg_p:path3089","svg_p:path3597","svg_p:path3513","svg_p:path3601","svg_p:path3601-2","svg_p:path3187","svg_p:path3087","svg_p:path2995","svg_p:path3535"]],draw_name:[["svg_p:path3085"]]};sim.poc.signals["TD"]={name:"TD",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; CHECK_RTD","MV BUS_DB REG_MBR; FIRE R; FIRE W; CHECK_RTD"],fire_name:["svg_p:text3103"],draw_data:[["svg_p:path3093","svg_p:path3101","svg_p:path3587","svg_p:path3419-8","svg_p:path3071","svg_p:path3099","svg_p:path3097","svg_p:path3559-5","svg_p:path3419-1-0","svg_p:path3583","svg_p:path3419-1","svg_p:path3491","svg_p:path3641","svg_p:path3541"]],draw_name:[["svg_p:path3095"]]};sim.poc.signals["T1"]={name:"T1",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 0","MV BUS_IB REG_MBR; FIRE M7; FIRE M1; SET_TT TTCPU 0"],fire_name:["svg_p:text3105"],draw_data:[["svg_p:path3065","svg_p:path3071","svg_p:path3069","svg_p:path3049","svg_p:path3063-9","svg_p:path3071"]],draw_name:[["svg_p:path3067"]]};sim.poc.signals["T2"]={name:"T2",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 1","MV BUS_IB REG_PC; FIRE M7; FIRE M1; SET_TT TTCPU 1"],fire_name:["svg_p:text3449"],draw_data:[["svg_p:path3195","svg_p:path3199","svg_p:path3201","svg_p:path3049"]],draw_name:[["svg_p:path3329"]]};sim.poc.signals["T3"]={name:"T3",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 2","MV BUS_IB SELEC_T3; FIRE M7; FIRE M1; SET_TT TTCPU 2"],fire_name:["svg_p:text3451"],draw_data:[["svg_p:path3347","svg_p:path3349","svg_p:path3931","svg_p:path3345","svg_p:path3049"]],draw_name:[["svg_p:path3351"]]};sim.poc.signals["T6"]={name:"T6",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 3","MV BUS_IB ALU_T6; FIRE M7; FIRE M1; SET_TT TTCPU 3"],fire_name:["svg_p:text3457"],draw_data:[["svg_p:path3315","svg_p:path3589","svg_p:path3317","svg_p:path3163-2","svg_p:path3049","svg_p:path3317-9","svg_p:path3321","svg_p:path3261-8"]],draw_name:[["svg_p:path3319"]]};sim.poc.signals["T8"]={name:"T8",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 4","MV BUS_IB REG_SR; FIRE M7; FIRE M1; SET_TT TTCPU 4"],fire_name:["svg_p:text3657"],draw_data:[["svg_p:path3645","svg_p:path3651","svg_p:path3647","svg_p:path3049"]],draw_name:[["svg_p:path3649"]]};sim.poc.signals["T9"]={name:"T9",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 5","MV BUS_IB RA_T9; FIRE M7; FIRE M1; SET_TT TTCPU 5"],fire_name:["svg_p:text3147"],draw_data:[["svg_p:path3131","svg_p:path3143","svg_p:path3139","svg_p:path3049","svg_p:path3143-9"]],draw_name:[["svg_p:path3133"]]};sim.poc.signals["T10"]={name:"T10",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 6","MV BUS_IB RB_T10; FIRE M7; FIRE M1; SET_TT TTCPU 6"],fire_name:["svg_p:text3149"],draw_data:[["svg_p:path3135","svg_p:path3145","svg_p:path3141","svg_p:path3049","svg_p:path3145-5"]],draw_name:[["svg_p:path3137"]]};sim.poc.signals["T11"]={name:"T11",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 7","CP_FIELD BUS_IB REG_MICROINS/EXCODE; FIRE M7; FIRE M1; SET_TT TTCPU 7"],fire_name:["svg_p:text3147-5","svg_cu:tspan4426"],draw_data:[["svg_p:path3131-3","svg_p:path3081-3","svg_p:path3139-7","svg_p:path3049","svg_cu:path3081-3","svg_cu:path3139-7","svg_cu:path3502"]],draw_name:[["svg_p:path3133-6","svg_cu:path3133-6"]]};sim.poc.signals["T12"]={name:"T12",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; RST_TT TTCPU 8","MV BUS_IB HPC_T12; FIRE M7; FIRE M1; SET_TT TTCPU 8"],fire_name:["svg_p:text3147-5-0-1-1"],draw_data:[["svg_p:path3131-3-8-4-31","svg_p:path3139-7-1-4-3","svg_cu:path3049"]],draw_name:[["svg_cu:path3133-6-9-7-5"]]};sim.poc.signals["M1"]={name:"M1",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV M1_C1 BUS_IB","MV M1_C1 BUS_DB"],depends_on:["C1"],fire_name:["svg_p:text3469"],draw_data:[["svg_p:path3063","svg_p:path3061","svg_p:path3059"],["svg_p:path3057","svg_p:path3641","svg_p:path3419","svg_p:path3583"]],draw_name:[[],["svg_p:path3447"]]};sim.poc.signals["M7"]={name:"M7",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV M7_C7 BUS_IB","MV M7_C7 REG_SR; UPDATE_FLAG M7_C7 FLAG_C 31; UPDATE_FLAG M7_C7 FLAG_V 30; UPDATE_FLAG M7_C7 FLAG_N 29; UPDATE_FLAG M7_C7 FLAG_Z 28"],depends_on:["C7"],fire_name:["svg_p:text3673"],draw_data:[["svg_p:path3691","svg_p:path3693","svg_p:path3659"],["svg_p:path3695"]],draw_name:[[],["svg_p:path3667"]]};sim.poc.signals["MA"]={name:"MA",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV MA_ALU RA_T9; FIRE COP","MV MA_ALU BUS_IB; FIRE COP"],depends_on:["SELA","SELB"],fire_name:["svg_p:text3463"],draw_data:[["svg_p:path3249","svg_p:path3161","svg_p:path3165"],["svg_p:path3279"]],draw_name:[[],["svg_p:path3423"]]};sim.poc.signals["MB"]={name:"MB",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV MB_ALU RB_T10; FIRE COP","MV MB_ALU REG_PC; FIRE COP"],depends_on:["SELA","SELB"],fire_name:["svg_p:text3465"],draw_data:[["svg_p:path3281","svg_p:path3171","svg_p:path3169"],["svg_p:path3283"]],draw_name:[[],["svg_p:path3425","svg_p:path3427"]]};sim.poc.signals["MH"]={name:"MH",visible:true,type:"L",value:0,default_value:0,nbits:"2",behavior:["MV HPC_T12 CLK","MV HPC_T12 ACC_TIME","MV HPC_T12 ACC_PWR","NOP"],fire_name:["svg_p:text3147-5-0-1-8-4"],draw_data:[[],["svg_p:path3081-3-8-5-3"]],draw_name:[[],["svg_p:path3306-8-7-6"]]};sim.poc.signals["COP"]={name:"COP",visible:true,type:"L",value:0,default_value:0,nbits:"5",forbidden:true,behavior:["NOP_ALU; UPDATE_NZVC","AND ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","OR ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","NOT ALU_T6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","XOR ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","SRL ALU_T6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","SRA ALU_T6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","SL ALU_T6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","RR ALU_T6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","RL ALU_T6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","ADD ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","SUB ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","MUL ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","DIV ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","MOD ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","LUI ALU_T6 MA_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","ADDFOUR ALU_T6 MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","ADDONE ALU_T6 MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","SUBFOUR ALU_T6 MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","SUBONE ALU_T6 MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","FADD ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","FSUB ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","FMUL ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","FDIV ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","FMOD ALU_T6 MA_ALU MB_ALU; UPDATE_NZVC; FIRE_IFSET T6 1; FIRE_IFSET M7 1","NOP_ALU","NOP_ALU","NOP_ALU","NOP_ALU","NOP_ALU","NOP_ALU","NOP_ALU"],depends_on:["SELCOP"],fire_name:["svg_p:text3303"],draw_data:[["svg_p:path3237","svg_p:path3239","svg_p:path3261-8","svg_p:path3321","svg_p:path3901-6","svg_p:path3317-9"]],draw_name:[["svg_p:path3009","svg_p:path3301"]]};sim.poc.signals["SELA"]={name:"SELA",visible:true,type:"L",value:0,default_value:0,nbits:"6",behavior:["FIRE_IFCHANGED MRA SELA; RESET_CHANGED SELA"],depends_on:["RA"],fire_name:["svg_cu:text3164"],draw_data:[[]],draw_name:[[]]};sim.poc.signals["SELB"]={name:"SELB",visible:true,type:"L",value:0,default_value:0,nbits:"6",behavior:["FIRE_IFCHANGED MRB SELB; RESET_CHANGED SELB"],depends_on:["RB"],fire_name:["svg_cu:text3168"],draw_data:[[]],draw_name:[[]]};sim.poc.signals["SELC"]={name:"SELC",visible:true,type:"L",value:0,default_value:0,nbits:"6",behavior:["FIRE_IFCHANGED MRC SELC; RESET_CHANGED SELC"],depends_on:["RC"],fire_name:["svg_cu:text3172"],draw_data:[[]],draw_name:[[]]};sim.poc.signals["SELCOP"]={name:"SELCOP",visible:true,type:"L",value:0,default_value:0,nbits:"5",behavior:["FIRE_IFCHANGED MC SELCOP; RESET_CHANGED SELCOP"],depends_on:["COP"],fire_name:["svg_cu:text3312"],draw_data:[[]],draw_name:[[]]};sim.poc.signals["EXCODE"]={name:"EXCODE",visible:true,type:"L",value:0,default_value:0,nbits:"4",behavior:["FIRE T11"],fire_name:["svg_cu:text3312-6"],draw_data:[[]],draw_name:[[]]};sim.poc.signals["RA"]={name:"RA",visible:true,type:"L",value:0,default_value:0,nbits:"6",forbidden:true,behavior:["GET RA_T9 BR RA; FIRE_IFSET T9 1; FIRE_IFSET MA 0"],depends_on:["SELA"],fire_name:["svg_p:text3107"],draw_data:[[]],draw_name:[["svg_p:path3109"]]};sim.poc.signals["RB"]={name:"RB",visible:true,type:"L",value:0,default_value:0,nbits:"6",forbidden:true,behavior:["GET RB_T10 BR RB; FIRE_IFSET T10 1; FIRE_IFSET MB 0"],depends_on:["SELB"],fire_name:["svg_p:text3123"],draw_data:[[]],draw_name:[["svg_p:path3113"]]};sim.poc.signals["RC"]={name:"RC",visible:true,type:"L",value:0,default_value:0,nbits:"6",forbidden:true,behavior:["FIRE LC"],depends_on:["SELC"],fire_name:["svg_p:text3125"],draw_data:[[]],draw_name:[["svg_p:path3117"]]};sim.poc.signals["LC"]={name:"LC",visible:true,type:"E",value:0,default_value:0,nbits:"1",behavior:["NOP","SET BR RC BUS_IB"],fire_name:["svg_p:text3127"],draw_data:[["svg_p:path3153","svg_p:path3151","svg_p:path3129"]],draw_name:[["svg_p:path3121"]]};sim.poc.signals["SE"]={name:"SE",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MBITS SELEC_T3 0 REG_RT1 OFFSET SIZE 0 SE; FIRE T3","MBITS SELEC_T3 0 REG_RT1 OFFSET SIZE 0 SE; FIRE T3"],depends_on:["T3"],fire_name:["svg_p:text3593"],draw_data:[[]],draw_name:[["svg_p:path3591","svg_p:path3447-7-7"]]};sim.poc.signals["SIZE"]={name:"SIZE",visible:true,type:"L",value:0,default_value:0,nbits:"5",behavior:["MBITS SELEC_T3 0 REG_RT1 OFFSET SIZE 0 SE; FIRE T3"],depends_on:["T3"],fire_name:["svg_p:text3363"],draw_data:[[]],draw_name:[["svg_p:path3355"]]};sim.poc.signals["OFFSET"]={name:"OFFSET",visible:true,type:"L",value:0,default_value:0,nbits:"5",behavior:["MBITS SELEC_T3 0 REG_RT1 OFFSET SIZE 0 SE; FIRE T3"],depends_on:["T3"],fire_name:["svg_p:text3707"],draw_data:[[]],draw_name:[["svg_p:path3359"]]};sim.poc.signals["MC"]={name:"MC",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MBIT COP REG_IR 0 5; FIRE_IFCHANGED COP MC","CP_FIELD COP REG_MICROINS/SELCOP; FIRE_IFCHANGED COP MC"],depends_on:["SELCOP"],fire_name:["svg_cu:text3322","svg_cu:text3172-1-5"],draw_data:[["svg_cu:path3320","svg_cu:path3142"],["svg_cu:path3318","svg_cu:path3502-6","svg_cu:path3232-6"]],draw_name:[[],["svg_cu:path3306"]]};sim.poc.signals["MRA"]={name:"MRA",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MBIT_SN RA REG_IR REG_MICROINS/SELA 5; FIRE RA;","CP_FIELD RA REG_MICROINS/SELA; FIRE RA;"],depends_on:["SELA"],fire_name:["svg_cu:text3222"],draw_data:[["svg_cu:path3494","svg_cu:path3492","svg_cu:path3490","svg_cu:path3142b","svg_cu:path3188","svg_cu:path3190","svg_cu:path3192","svg_cu:path3194","svg_cu:path3276","svg_cu:path3290","svg_cu:path3260"],["svg_cu:path3270","svg_cu:path3258","svg_cu:path3260","svg_cu:path3294","svg_cu:path3288","svg_cu:path3280"]],draw_name:[[],["svg_cu:path3220"]]};sim.poc.signals["MRB"]={name:"MRB",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MBIT_SN RB REG_IR REG_MICROINS/SELB 5; FIRE RB;","CP_FIELD RB REG_MICROINS/SELB; FIRE RB;"],depends_on:["SELB"],fire_name:["svg_cu:text3242"],draw_data:[["svg_cu:path3196","svg_cu:path3278","svg_cu:path3292"],["svg_cu:path3282","svg_cu:path3258-4","svg_cu:path3278","svg_cu:path3196"]],draw_name:[[],["svg_cu:path3240"]]};sim.poc.signals["MRC"]={name:"MRC",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MBIT_SN RC REG_IR REG_MICROINS/SELC 5; FIRE RC;","CP_FIELD RC REG_MICROINS/SELC; FIRE RC;"],depends_on:["SELC"],fire_name:["svg_cu:text3254"],draw_data:[["svg_cu:path3494","svg_cu:path3492","svg_cu:path3490","svg_cu:path3142b","svg_cu:path3188","svg_cu:path3190","svg_cu:path3192","svg_cu:path3194","svg_cu:path3276","svg_cu:path3290","svg_cu:path3232","svg_cu:path3292"],["svg_cu:path3300","svg_cu:path3294","svg_cu:path3292","svg_cu:path3288","svg_cu:path3232"]],draw_name:[[],["svg_cu:path3252"]]};sim.poc.signals["IOR"]={name:"IOR",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","MOVE_BITS SCR_IOR 0 1 IOR; FIRE SCR_IOR; MOVE_BITS IO_IOR 0 1 IOR; FIRE IO_IOR; MOVE_BITS L3D_IOR 0 1 IOR; FIRE L3D_IOR; MOVE_BITS KBD_IOR 0 1 IOR; FIRE KBD_IOR; MOVE_BITS LEDM_IOR 0 1 IOR; FIRE LEDM_IOR"],fire_name:[],draw_data:[[],["svg_p:path3733","svg_p:path3491","svg_p:text3715"]],draw_name:[[],[]]};sim.poc.signals["IOW"]={name:"IOW",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","MOVE_BITS SCR_IOW 0 1 IOW; FIRE SCR_IOW; MOVE_BITS IO_IOW 0 1 IOW; FIRE IO_IOW; MOVE_BITS L3D_IOW 0 1 IOW; FIRE L3D_IOW; MOVE_BITS LEDM_IOW 0 1 IOW; FIRE LEDM_IOW"],fire_name:[],draw_data:[[],["svg_p:path3735","svg_p:path3491","svg_p:text3717"]],draw_name:[[],[]]};sim.poc.signals["TEST_C"]={name:"TEST_C",visible:true,type:"L",value:0,default_value:0,nbits:"1",forbidden:true,behavior:["MV FLAG_C VAL_ZERO; FIRE M7","MV FLAG_C VAL_ONE; FIRE M7"],depends_on:["SELCOP"],fire_name:["svg_p:text3701-3"],draw_data:[["svg_p:text3701-3"]],draw_name:[[]]};sim.poc.signals["TEST_V"]={name:"TEST_V",visible:true,type:"L",value:0,default_value:0,nbits:"1",forbidden:true,behavior:["MV FLAG_V VAL_ZERO; FIRE M7","MV FLAG_V VAL_ONE; FIRE M7"],depends_on:["SELCOP"],fire_name:["svg_p:text3701-3-1"],draw_data:[["svg_p:text3701-3-1"]],draw_name:[[]]};sim.poc.signals["TEST_N"]={name:"TEST_N",visible:true,type:"L",value:0,default_value:0,nbits:"1",forbidden:true,behavior:["MV FLAG_N VAL_ZERO; FIRE M7","MV FLAG_N VAL_ONE; FIRE M7"],depends_on:["SELCOP"],fire_name:["svg_p:text3701-3-2"],draw_data:[["svg_p:text3701-3-2"]],draw_name:[[]]};sim.poc.signals["TEST_Z"]={name:"TEST_Z",visible:true,type:"L",value:0,default_value:0,nbits:"1",forbidden:true,behavior:["MV FLAG_Z VAL_ZERO; FIRE M7","MV FLAG_Z VAL_ONE; FIRE M7"],depends_on:["SELCOP"],fire_name:["svg_p:text3701-3-5"],draw_data:[["svg_p:text3701-3-5"]],draw_name:[[]]};sim.poc.signals["TEST_I"]={name:"TEST_I",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV FLAG_I VAL_ZERO; FIRE M7","MV FLAG_I VAL_ONE; FIRE M7"],depends_on:["CLK"],fire_name:["svg_cu:text3440"],draw_data:[["svg_cu:text3440"]],draw_name:[[]]};sim.poc.signals["TEST_U"]={name:"TEST_U",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["MV FLAG_U VAL_ZERO; FIRE M7","MV FLAG_U VAL_ONE; FIRE M7"],depends_on:["CLK"],fire_name:["svg_cu:text3442"],draw_data:[["svg_cu:text3442"]],draw_name:[[]]};sim.poc.signals["TEST_INTV"]={name:"TEST_INTV",visible:true,type:"L",value:0,default_value:0,nbits:"8",forbidden:true,behavior:["MBIT INTV TEST_INTV 0 32"],depends_on:["INT"],fire_name:["svg_p:tspan4225"],draw_data:[["svg_p:path3749"]],draw_name:[[]]};sim.poc.behaviors["NOP"]={nparameters:1,operation:function(s_expr){},verbal:function(s_expr){return""}};sim.poc.behaviors["NOP_ALU"]={nparameters:1,operation:function(s_expr){sim.poc.internal_states.alu_flags.flag_n=0;sim.poc.internal_states.alu_flags.flag_z=0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){return"Reset ALU flags. "}};sim.poc.behaviors["MV"]={nparameters:3,types:["X","X"],operation:function(s_expr){sim_elto_org=get_reference(s_expr[2]);sim_elto_dst=get_reference(s_expr[1]);newval=get_value(sim_elto_org);set_value(sim_elto_dst,newval)},verbal:function(s_expr){var sim_elto_org=get_reference(s_expr[2]);var newval=get_value(sim_elto_org);var verbose=get_cfg("verbal_verbose");if(verbose!=="short"){return"Copy from "+show_verbal(s_expr[2])+" to "+show_verbal(s_expr[1])+" value "+show_value(newval)+". "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[2])+" ("+show_value(newval)+"). "}};sim.poc.behaviors["LOAD"]={nparameters:3,types:["X","X"],operation:function(s_expr){sim_elto_org=get_reference(s_expr[2]);sim_elto_dst=get_reference(s_expr[1]);newval=get_value(sim_elto_org);set_value(sim_elto_dst,newval)},verbal:function(s_expr){var sim_elto_org=get_reference(s_expr[2]);var newval=get_value(sim_elto_org);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Load from "+show_verbal(s_expr[2])+" to "+show_verbal(s_expr[1])+" value "+show_value(newval)+". "}return show_verbal(s_expr[1])+" = "+show_value(newval)+" ( "+show_verbal(s_expr[2])+"). "}};sim.poc.behaviors["CP_FIELD"]={nparameters:3,types:["X","X"],operation:function(s_expr){r=s_expr[2].split("/");sim_elto_org=get_reference(r[0]);newval=get_value(sim_elto_org);newval=newval[r[1]];if(typeof newval!="undefined"){sim_elto_dst=get_reference(s_expr[1]);set_value(sim_elto_dst,newval)}},verbal:function(s_expr){var r=s_expr[2].split("/");var sim_elto_org=get_reference(r[0]);var newval=get_value(sim_elto_org);newval=newval[r[1]];if(typeof newval=="undefined")newval="<undefined>";else newval=show_value(newval);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return'Copy from "'+show_verbal(r[0])+'"['+r[1]+"] "+"to "+show_verbal(s_expr[1])+" (value "+newval+"). "}return show_verbal(s_expr[1])+" = "+show_verbal(r[0])+"."+r[1]+" ("+newval+"). "}};sim.poc.behaviors["NOT_ES"]={nparameters:3,types:["S","E"],operation:function(s_expr){set_value(sim.poc.signals[s_expr[1]],Math.abs(get_value(sim.poc.states[s_expr[2]])-1))},verbal:function(s_expr){var value=Math.abs(get_value(sim.poc.states[s_expr[2]])-1);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Set "+show_verbal(s_expr[1])+" with value "+show_value(value)+" (Logical NOT of "+s_expr[2]+"). "}return show_verbal(s_expr[1])+" = "+show_value(value)+" (Logical NOT "+s_expr[2]+"). "}};sim.poc.behaviors["GET"]={nparameters:4,types:["E","E","S"],operation:function(s_expr){set_value(sim.poc.states[s_expr[1]],get_value(sim.poc.states[s_expr[2]][sim.poc.signals[s_expr[3]].value]))},verbal:function(s_expr){var value=get_value(sim.poc.states[s_expr[2]][sim.poc.signals[s_expr[3]].value]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Set "+show_verbal(s_expr[1])+" with value "+show_value(value)+" (Register File "+s_expr[3]+"). "}return show_verbal(s_expr[1])+" = "+show_value(value)+" (Register File "+s_expr[3]+"). "}};sim.poc.behaviors["SET"]={nparameters:4,types:["E","S","E"],operation:function(s_expr){set_value(sim.poc.states[s_expr[1]][sim.poc.signals[s_expr[2]].value],get_value(sim.poc.states[s_expr[3]]))},verbal:function(s_expr){var value=get_value(sim.poc.states[s_expr[3]]);var o_ref=sim.poc.states[s_expr[1]][sim.poc.signals[s_expr[2]].value];var o_verbal=o_ref.name;if(typeof o_ref.verbal!="undefined")o_verbal=o_ref.verbal;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy to "+o_verbal+" the value "+show_value(value)+". "}return o_verbal+" = "+show_value(value)+". "}};sim.poc.behaviors["AND"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])&get_value(sim.poc.states[s_expr[3]]);set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])&get_value(sim.poc.states[s_expr[3]]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU AND with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (AND). "}};sim.poc.behaviors["OR"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])|get_value(sim.poc.states[s_expr[3]]);set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])|get_value(sim.poc.states[s_expr[3]]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU OR with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (OR). "}};sim.poc.behaviors["NOT"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=~get_value(sim.poc.states[s_expr[2]]);set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=~get_value(sim.poc.states[s_expr[2]]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU NOT with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (NOT). "}};sim.poc.behaviors["XOR"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])^get_value(sim.poc.states[s_expr[3]]);set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])^get_value(sim.poc.states[s_expr[3]]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU XOR with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (XOR). "}};sim.poc.behaviors["SRL"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])>>>1;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])>>>1;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Shift Right Logical with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (SRL). "}};sim.poc.behaviors["SRA"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])>>1;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])>>1;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Shift Right Arithmetic with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (SRA). "}};sim.poc.behaviors["SL"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])<<1;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])<<1;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Shift Left with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (SL). "}};sim.poc.behaviors["RR"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])>>>1|(get_value(sim.poc.states[s_expr[2]])&1)<<31;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])>>>1|(get_value(sim.poc.states[s_expr[2]])&1)<<31;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Right Rotation with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (RR). "}};sim.poc.behaviors["RL"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])<<1|(get_value(sim.poc.states[s_expr[2]])&2147483648)>>>31;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])<<1|(get_value(sim.poc.states[s_expr[2]])&2147483648)>>>31;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Left Rotation with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (LR). "}};sim.poc.behaviors["ADD"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a+b;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_c=a>>>31&&b>>>31;sim.poc.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.poc.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.poc.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a+b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU ADD with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (ADD). "}};sim.poc.behaviors["SUB"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a-b;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_c=a>>>31&&b>>>31;sim.poc.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.poc.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.poc.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a-b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU SUB with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (SUB). "}};sim.poc.behaviors["MUL"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a*b;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_c=0;sim.poc.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.poc.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.poc.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a*b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU MUL with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (MUL). "}};sim.poc.behaviors["DIV"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;if(0==b){set_value(sim.poc.states[s_expr[1]],0);sim.poc.internal_states.alu_flags.flag_n=0;sim.poc.internal_states.alu_flags.flag_z=1;sim.poc.internal_states.alu_flags.flag_v=1;sim.poc.internal_states.alu_flags.flag_c=0;return}var result=Math.floor(a/b);set_value(sim.poc.states[s_expr[1]],result);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;if(0==b){return"ALU DIV zero by zero (oops!). "}var result=Math.floor(a/b);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU DIV with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (DIV). "}};sim.poc.behaviors["MOD"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;if(0==b){set_value(sim.poc.states[s_expr[1]],0);sim.poc.internal_states.alu_flags.flag_n=0;sim.poc.internal_states.alu_flags.flag_z=1;sim.poc.internal_states.alu_flags.flag_v=1;sim.poc.internal_states.alu_flags.flag_c=0;return}var result=a%b;set_value(sim.poc.states[s_expr[1]],result);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;if(0==b){return"ALU MOD zero by zero (oops!). "}var result=a%b;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU MOD with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (MOD). "}};sim.poc.behaviors["LUI"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])<<16;set_value(sim.poc.states[s_expr[1]],result);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])<<16;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"ALU Load Upper Immediate with result "+show_value(result)+". "}return"ALU output = "+show_value(result)+" (LUI). "}};sim.poc.behaviors["ADDFOUR"]={nparameters:3,types:["E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a+4;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_c=a>>>31&&b>>>31;sim.poc.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.poc.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.poc.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a+4;return"ALU ADD 4 with result "+show_value(result)+". "}};sim.poc.behaviors["ADDONE"]={nparameters:3,types:["E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a+1;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_c=a>>>31&&b>>>31;sim.poc.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.poc.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.poc.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a+1;return"ALU ADD 1 with result "+show_value(result)+". "}};sim.poc.behaviors["SUBFOUR"]={nparameters:3,types:["E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a-4;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_c=a>>>31&&b>>>31;sim.poc.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.poc.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.poc.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a-4;return"ALU SUB 4 with result "+show_value(result)+". "}};sim.poc.behaviors["SUBONE"]={nparameters:3,types:["E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a-1;set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_c=a>>>31&&b>>>31;sim.poc.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.poc.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.poc.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a-1;return"ALU SUB 1 with result "+show_value(result)+". "}};sim.poc.behaviors["FADD"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a.toFixed(2)+b.toFixed(2);set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_c=0;sim.poc.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.poc.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.poc.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a.toFixed(2)+b.toFixed(2);return"ALU Float ADD with result "+result+". "}};sim.poc.behaviors["FSUB"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a.toFixed(2)-b.toFixed(2);set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_c=0;sim.poc.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.poc.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.poc.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a.toFixed(2)-b.toFixed(2);return"ALU Float SUB with result "+result+". "}};sim.poc.behaviors["FMUL"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a.toFixed(2)*b.toFixed(2);set_value(sim.poc.states[s_expr[1]],result>>>0);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_c=0;sim.poc.internal_states.alu_flags.flag_v=0;if(result<0&&a>=0&&b>=0)sim.poc.internal_states.alu_flags.flag_v=1;if(result>=0&&a<0&&b<0)sim.poc.internal_states.alu_flags.flag_v=1},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a.toFixed(2)*b.toFixed(2);return"ALU Float MUL with result "+result+". "}};sim.poc.behaviors["FDIV"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;if(0==b){set_value(sim.poc.states[s_expr[1]],0);sim.poc.internal_states.alu_flags.flag_n=0;sim.poc.internal_states.alu_flags.flag_z=1;sim.poc.internal_states.alu_flags.flag_v=1;sim.poc.internal_states.alu_flags.flag_c=0;return}var result=Math.floor(a/b);set_value(sim.poc.states[s_expr[1]],result);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a.toFixed(2)/b.toFixed(2);return"ALU Float DIV with result "+result+". "}};sim.poc.behaviors["FMOD"]={nparameters:4,types:["E","E","E"],operation:function(s_expr){var result=(get_value(sim.poc.states[s_expr[2]])<<0)%(get_value(sim.poc.states[s_expr[3]])<<0);set_value(sim.poc.states[s_expr[1]],result);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var b=get_value(sim.poc.states[s_expr[3]])<<0;var result=a.toFixed(2)%b.toFixed(2);return"ALU Float MOD with result "+result+". "}};sim.poc.behaviors["LUI"]={nparameters:3,types:["E","E"],operation:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])<<16;set_value(sim.poc.states[s_expr[1]],result);sim.poc.internal_states.alu_flags.flag_n=result<0?1:0;sim.poc.internal_states.alu_flags.flag_z=result==0?1:0;sim.poc.internal_states.alu_flags.flag_v=0;sim.poc.internal_states.alu_flags.flag_c=0},verbal:function(s_expr){var result=get_value(sim.poc.states[s_expr[2]])<<16;return"ALU Load Upper Immediate with result "+show_value(result)+". "}};sim.poc.behaviors["PLUS1"]={nparameters:3,types:["E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a+1;set_value(sim.poc.states[s_expr[1]],result>>>0)},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a+1;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Add one to "+show_verbal(s_expr[2])+" and copy to "+show_verbal(s_expr[1])+" with result "+show_value(result)+". "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[2])+" + 1"+" ("+show_value(result)+"). "}};sim.poc.behaviors["PLUS4"]={nparameters:3,types:["E","E"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a+4;set_value(sim.poc.states[s_expr[1]],result>>>0)},verbal:function(s_expr){var a=get_value(sim.poc.states[s_expr[2]])<<0;var result=a+4;var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Add four to "+show_verbal(s_expr[2])+" and copy to "+show_verbal(s_expr[1])+" with result "+show_value(result)+". "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[2])+" + 4"+" ("+show_value(result)+"). "}};sim.poc.behaviors["SET_TT"]={nparameters:3,types:["E","I"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[1]])<<0;var b=parseInt(s_expr[2]);var m=Math.pow(2,b);var r=a|m;set_value(sim.poc.states[s_expr[1]],r);update_cpu_bus_fire(r,b)},verbal:function(s_expr){return""}};sim.poc.behaviors["RST_TT"]={nparameters:3,types:["E","I"],operation:function(s_expr){var a=get_value(sim.poc.states[s_expr[1]])<<0;var b=parseInt(s_expr[2]);var m=Math.pow(2,b);var r=a&~m;set_value(sim.poc.states[s_expr[1]],r);update_cpu_bus_fire(r,b)},verbal:function(s_expr){return""}};sim.poc.behaviors["CHECK_RTD"]={nparameters:1,operation:function(s_expr){var number_active_tri=parseInt(simhw_sim_signal("TD").value)+parseInt(simhw_sim_signal("R").value);update_system_bus_fire(number_active_tri)},verbal:function(s_expr){return""}};sim.poc.behaviors["MBIT"]={nparameters:5,types:["X","X","I","I"],operation:function(s_expr){var sim_elto_dst=get_reference(s_expr[1]);var sim_elto_org=get_reference(s_expr[2]);var offset=parseInt(s_expr[3]);var size=parseInt(s_expr[4]);var n1=get_value(sim_elto_org).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(offset+size-1),size);set_value(sim_elto_dst,parseInt(n2,2))},verbal:function(s_expr){var sim_elto_dst=get_reference(s_expr[1]);var sim_elto_org=get_reference(s_expr[2]);var offset=parseInt(s_expr[3]);var size=parseInt(s_expr[4]);var n1=get_value(sim_elto_org).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(offset+size-1),size);var n3=parseInt(n2,2);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy from "+show_verbal(s_expr[2])+" to "+show_verbal(s_expr[1])+" value "+show_value(n3)+" (copied "+size+" bits from bit "+offset+"). "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[2])+" ("+show_value(n3)+", "+size+" bits from bit "+offset+"). "}};sim.poc.behaviors["MBIT_SN"]={nparameters:5,types:["S","E","E","I"],operation:function(s_expr){var base=0;var r=s_expr[3].split("/");if(1==r.length)base=get_value(sim.poc.states[s_expr[3]]);else if(typeof sim.poc.states[r[0]].value[r[1]]!="undefined")base=sim.poc.states[r[0]].value[r[1]];else if(typeof sim.poc.signals[r[1]].default_value!="undefined")base=sim.poc.signals[r[1]].default_value;else if(typeof sim.poc.states[r[1]].default_value!="undefined")base=sim.poc.states[r[1]].default_value;else ws_alert("WARN: undefined state/field pair -> "+r[0]+"/"+r[1]);var offset=parseInt(s_expr[4]);var n1=get_value(sim.poc.states[s_expr[2]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;var n3=n2.substr(31-(base+offset-1),offset);set_value(sim.poc.signals[s_expr[1]],parseInt(n3,2))},verbal:function(s_expr){var base=0;var r=s_expr[3].split("/");if(1==r.length)base=get_value(sim.poc.states[s_expr[3]]);else if(typeof sim.poc.states[r[0]].value[r[1]]!="undefined")base=sim.poc.states[r[0]].value[r[1]];else if(typeof sim.poc.signals[r[1]].default_value!="undefined")base=sim.poc.signals[r[1]].default_value;else if(typeof sim.poc.states[r[1]].default_value!="undefined")base=sim.poc.states[r[1]].default_value;else ws_alert("WARN: undefined state/field pair -> "+r[0]+"/"+r[1]);var offset=parseInt(s_expr[4]);var n1=get_value(sim.poc.states[s_expr[2]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;var n3=n2.substr(31-(base+offset-1),offset);var from_elto="";if(1==r.length)from_elto=show_verbal(s_expr[3]);else from_elto='"'+show_verbal(s_expr[2])+'"['+r[1]+"] ";var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy from "+from_elto+"into "+show_verbal(s_expr[1])+" "+"value "+parseInt(n3,2)+". "}return show_verbal(s_expr[1])+" = "+from_elto+" ("+parseInt(n3,2)+"). "}};sim.poc.behaviors["SBIT_SIGNAL"]={nparameters:4,types:["X","I","I"],operation:function(s_expr){sim_elto_dst=get_reference(s_expr[1]);var new_value=sim_elto_dst.value;var mask=1<>>0)},verbal:function(s_expr){sim_elto_dst=get_reference(s_expr[1]);var new_value=sim_elto_dst.value;var mask=1<>>0)}};sim.poc.behaviors["UPDATE_FLAG"]={nparameters:4,types:["X","X","I"],operation:function(s_expr){sim_elto_org=get_reference(s_expr[2]);sim_elto_dst=get_reference(s_expr[1]);var new_value=sim_elto_dst.value&~(1<>>0)},verbal:function(s_expr){sim_elto_org=get_reference(s_expr[2]);sim_elto_dst=get_reference(s_expr[1]);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Update "+show_verbal(s_expr[2])+" to value "+sim_elto_org.value+". "}return show_verbal(s_expr[1])+"."+show_verbal(s_expr[3])+" = "+sim_elto_org.value+". "}};sim.poc.behaviors["MBITS"]={nparameters:8,types:["E","I","E","S","S","I","S"],operation:function(s_expr){var offset=parseInt(sim.poc.signals[s_expr[4]].value);var size=parseInt(sim.poc.signals[s_expr[5]].value);var n1=get_value(sim.poc.states[s_expr[3]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(offset+size-1),size);var n3="00000000000000000000000000000000".substring(0,32-n2.length)+n2;if("1"==sim.poc.signals[s_expr[7]].value&&"1"==n2.substr(0,1)){n3="11111111111111111111111111111111".substring(0,32-n2.length)+n2}set_value(sim.poc.states[s_expr[1]],parseInt(n3,2))},verbal:function(s_expr){var offset=parseInt(sim.poc.signals[s_expr[4]].value);var size=parseInt(sim.poc.signals[s_expr[5]].value);var n1=get_value(sim.poc.states[s_expr[3]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(offset+size-1),size);var n3="00000000000000000000000000000000".substring(0,32-n2.length)+n2;if("1"==sim.poc.signals[s_expr[7]].value&&"1"==n2.substr(0,1)){n3="11111111111111111111111111111111".substring(0,32-n2.length)+n2}n1=parseInt(n3,2);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return" Copy from "+show_verbal(s_expr[3])+" to "+show_verbal(s_expr[1])+" value "+show_value(n1)+" (copied "+size+" bits from bit "+offset+"). "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[3])+" ("+show_value(n1)+", "+size+" bits from bit "+offset+"). "}};sim.poc.behaviors["BSEL"]={nparameters:6,types:["E","I","I","E","I"],operation:function(s_expr){var posd=parseInt(s_expr[2]);var poso=parseInt(s_expr[5]);var len=parseInt(s_expr[3]);var n1=get_value(sim.poc.states[s_expr[4]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(poso+len)+1,len);var n3="00000000000000000000000000000000".substring(0,32-n2.length)+n2;var n4="00000000000000000000000000000000".substr(0,posd);n3=n3+n4;set_value(sim.poc.states[s_expr[1]],parseInt(n3,2))},verbal:function(s_expr){var posd=parseInt(s_expr[2]);var len=parseInt(s_expr[3]);var poso=parseInt(s_expr[5]);var n1=get_value(sim.poc.states[s_expr[4]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n2=n2.substr(31-(poso+len)+1,len);var n3="00000000000000000000000000000000".substring(0,32-n2.length)+n2;var n4="00000000000000000000000000000000".substr(0,posd);n3=n3+n4;var n5=parseInt(n3,2);var verbose=get_cfg("verbal_verbose");if(verbose!=="math"){return"Copy from "+show_verbal(s_expr[4])+" to "+show_verbal(s_expr[1])+" value "+show_value(n5)+" (copied "+len+" bits, from bit "+poso+" of "+s_expr[4]+" to bit "+posd+" of "+s_expr[1]+"). "}return show_verbal(s_expr[1])+" = "+show_verbal(s_expr[4])+" ("+show_value(n5)+", "+len+" bits, from bit "+poso+" of "+s_expr[4]+" to bit "+posd+" of "+s_expr[1]+"). "}};sim.poc.behaviors["EXT_SIG"]={nparameters:3,types:["E","I"],operation:function(s_expr){var n1=get_value(sim.poc.states[s_expr[1]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;var n3=n2.substr(31-s_expr[2],31);var n4=n3;if("1"==n2[31-s_expr[2]]){n4="11111111111111111111111111111111".substring(0,32-n3.length)+n4}set_value(sim.poc.states[s_expr[1]],parseInt(n4,2))},verbal:function(s_expr){var n1=get_value(sim.poc.states[s_expr[1]]).toString(2);var n2="00000000000000000000000000000000".substring(0,32-n1.length)+n1;var n3=n2.substr(31-s_expr[2],31);var n4=n3;if("1"==n2[31-s_expr[2]]){n4="11111111111111111111111111111111".substring(0,32-n3.length)+n4}var n5=parseInt(n4,2);return"Sign Extension with value "+show_value(n5)+". "}};sim.poc.behaviors["MOVE_BITS"]={nparameters:5,types:["S","I","I","S"],operation:function(s_expr){var posd=parseInt(s_expr[2]);var poso=0;var len=parseInt(s_expr[3]);var n1=sim.poc.signals[s_expr[4]].value.toString(2);n1="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n1=n1.substr(31-poso-len+1,len);var n2=sim.poc.signals[s_expr[1]].value.toString(2);n2="00000000000000000000000000000000".substring(0,32-n2.length)+n2;var m1=n2.substr(0,32-(posd+len));var m2=n2.substr(31-posd+1,posd);var n3=m1+n1+m2;set_value(sim.poc.signals[s_expr[1]],parseInt(n3,2))},verbal:function(s_expr){return""}};sim.poc.behaviors["MOVE_BITSE"]={nparameters:6,types:["S","I","I","E","I"],operation:function(s_expr){var posd=parseInt(s_expr[2]);var poso=parseInt(s_expr[5]);var len=parseInt(s_expr[3]);var n1=get_value(sim.poc.states[s_expr[4]]).toString(2);n1="00000000000000000000000000000000".substring(0,32-n1.length)+n1;n1=n1.substr(31-poso-len+1,len);var n2=sim.poc.signals[s_expr[1]].value.toString(2);n2="00000000000000000000000000000000".substring(0,32-n2.length)+n2;var m1=n2.substr(0,32-(posd+len));var m2=n2.substr(31-posd+1,posd);var n3=m1+n1+m2;set_value(sim.poc.signals[s_expr[1]],parseInt(n3,2))},verbal:function(s_expr){return""}};sim.poc.behaviors["DECO"]={nparameters:1,operation:function(s_expr){sim.poc.states["INEX"].value=0;var oi=decode_instruction(sim.poc.internal_states.FIRMWARE,sim.poc.ctrl_states.ir,get_value(sim.poc.states["REG_IR"]));if(null==oi.oinstruction){ws_alert("ERROR: undefined instruction code in IR ("+"co:"+oi.op_code.toString(2)+", "+"cop:"+oi.cop_code.toString(2)+")");sim.poc.states["ROM_MUXA"].value=0;sim.poc.states["INEX"].value=1;return-1}var rom_addr=oi.op_code<<6;if(typeof oi.oinstruction.cop!="undefined"){rom_addr=rom_addr+oi.cop_code}if(typeof sim.poc.internal_states["ROM"][rom_addr]=="undefined"){ws_alert("ERROR: undefined rom address "+rom_addr+" in firmware");sim.poc.states["ROM_MUXA"].value=0;return-1}sim.poc.states["ROM_MUXA"].value=sim.poc.internal_states["ROM"][rom_addr];var val=get_value(sim.poc.states["DECO_INS"]);set_value(sim.poc.states["DECO_INS"],val+1);var pc=get_value(sim.poc.states["REG_PC"])-4;var decins=get_deco_from_pc(pc);set_value(sim.poc.states["REG_IR_DECO"],decins);show_dbg_ir(get_value(sim.poc.states["REG_IR_DECO"]))},verbal:function(s_expr){return"Decode instruction. "}};sim.poc.behaviors["FIRE"]={nparameters:2,types:["S"],operation:function(s_expr){if(sim.poc.internal_states.fire_stack.indexOf(s_expr[1])!=-1){return}sim.poc.internal_states.fire_stack.push(s_expr[1]);update_draw(sim.poc.signals[s_expr[1]],sim.poc.signals[s_expr[1]].value);if("L"==sim.poc.signals[s_expr[1]].type){update_state(s_expr[1])}sim.poc.internal_states.fire_stack.pop(s_expr[1])},verbal:function(s_expr){return""}};sim.poc.behaviors["FIRE_IFSET"]={nparameters:3,types:["S","I"],operation:function(s_expr){if(get_value(sim.poc.signals[s_expr[1]])!=parseInt(s_expr[2])){return}sim.poc.behaviors["FIRE"].operation(s_expr)},verbal:function(s_expr){return""}};sim.poc.behaviors["FIRE_IFCHANGED"]={nparameters:3,types:["S","X"],operation:function(s_expr){sim_elto=get_reference(s_expr[2]);if(sim_elto.changed==false)return;sim.poc.behaviors["FIRE"].operation(s_expr)},verbal:function(s_expr){return""}};sim.poc.behaviors["RESET_CHANGED"]={nparameters:2,types:["X"],operation:function(s_expr){sim_elto=get_reference(s_expr[1]);sim_elto.changed=false},verbal:function(s_expr){return""}};sim.poc.behaviors["CLOCK"]={nparameters:1,operation:function(s_expr){var new_maddr=null;var mcelto=null;var t0=performance.now();var val=get_value(sim.poc.states["CLK"]);set_value(sim.poc.states["CLK"],val+1);set_value(sim.poc.states["TTCPU"],0);new_maddr=get_value(sim.poc.states["REG_MICROADDR"]);mcelto=sim.poc.internal_states["MC"][new_maddr];if(typeof mcelto!=="undefined"&&false==mcelto.is_native){for(var i=0;i>>0},set_value:function(elto,value){var origin="";var r_value=main_memory_get_program_counter();if(r_value!=null){origin="PC=0x"+r_value.toString(16)}var melto={value:value>>>0,source_tracking:[origin],comments:null};var valref=main_memory_set(sim.poc.internal_states.MP,elto,melto);show_main_memory(sim.poc.internal_states.MP,elto,typeof valref==="undefined",true);return value}};sim.poc.internal_states.segments={};sim.poc.internal_states.MP={};sim.poc.internal_states.MP_wc=0;sim.poc.internal_states.CM_cfg=[];sim.poc.internal_states.CM=[];sim.poc.signals.MRDY={name:"MRDY",visible:true,type:"L",value:0,default_value:0,nbits:"1",depends_on:["CLK"],behavior:["FIRE_IFCHANGED MRDY C","FIRE_IFCHANGED MRDY C"],fire_name:["svg_p:tspan3916"],draw_data:[[],["svg_p:path3895","svg_p:path3541"]],draw_name:[[],[]]};sim.poc.signals.R={name:"R",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP; CHECK_RTD","MEM_READ BUS_AB BUS_DB BW MRDY CLK; FIRE M1; FIRE MRDY; CHECK_RTD"],fire_name:["svg_p:text3533-5-2"],draw_data:[[],["svg_p:path3557","svg_p:path3571"]],draw_name:[[],[]]};sim.poc.signals.W={name:"W",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","MEM_WRITE BUS_AB BUS_DB BW MRDY CLK; FIRE M1; FIRE MRDY"],fire_name:["svg_p:text3533-5-08"],draw_data:[[],["svg_p:path3559","svg_p:path3575","svg_p:path3447-7"]],draw_name:[[],[]]};sim.poc.signals.BW={name:"BW",verbal:["Access to one byte from memory. ","Access to two bytes from memory. ","Access to three bytes from memory. ","Access to a word from memory. "],visible:true,type:"L",value:0,default_value:0,nbits:"2",behavior:["FIRE R; FIRE W","FIRE R; FIRE W","FIRE R; FIRE W","FIRE R; FIRE W"],fire_name:["svg_p:text3533-5-2-8"],draw_data:[["svg_p:path3557-0"]],draw_name:[[],[]]};sim.poc.behaviors.MEM_READ={nparameters:6,types:["E","E","S","S","E"],operation:function(s_expr){var address=sim.poc.states[s_expr[1]].value;var dbvalue=sim.poc.states[s_expr[2]].value;var bw=sim.poc.signals[s_expr[3]].value;var clk=get_value(sim.poc.states[s_expr[5]]);sim.poc.signals[s_expr[4]].value=0;var remain=get_value(sim.poc.internal_states.MP_wc);if(typeof sim.poc.events.mem[clk-1]!="undefined"&&sim.poc.events.mem[clk-1]>0){remain=sim.poc.events.mem[clk-1]-1}var first_time=typeof sim.poc.events.mem[clk]=="undefined";sim.poc.events.mem[clk]=remain;if(remain>0){return}var wordress=address&4294967292;var value=main_memory_getvalue(sim.poc.internal_states.MP,wordress);var full_redraw=false;if(typeof value==="undefined"){value=0;full_redraw=true}dbvalue=main_memory_extractvalues(value,bw,address&3);sim.poc.states[s_expr[2]].value=dbvalue>>>0;sim.poc.signals[s_expr[4]].value=1;show_main_memory(sim.poc.internal_states.MP,wordress,full_redraw,false);if(first_time&&sim.poc.internal_states.CM.length>0){cache_memory_access(sim.poc.internal_states.CM[0],address,"read",clk)}},verbal:function(s_expr){var verbal="";var address=sim.poc.states[s_expr[1]].value;var dbvalue=sim.poc.states[s_expr[2]].value;var bw=sim.poc.signals[s_expr[3]].value;var clk=get_value(sim.poc.states[s_expr[5]]);switch(bw){case 0:bw_type="byte";break;case 1:bw_type="half";break;case 2:bw_type="three bytes";break;case 3:bw_type="word";break}var value=main_memory_getvalue(sim.poc.internal_states.MP,address);if(typeof value==="undefined"){value=0}verbal="Try to read a "+bw_type+" from memory "+"at address 0x"+address.toString(16)+" with value "+value.toString(16)+". ";return verbal}};sim.poc.behaviors.MEM_WRITE={nparameters:6,types:["E","E","S","S","E"],operation:function(s_expr){var address=sim.poc.states[s_expr[1]].value;var dbvalue=sim.poc.states[s_expr[2]].value;var bw=sim.poc.signals[s_expr[3]].value;var clk=get_value(sim.poc.states[s_expr[5]]);sim.poc.signals[s_expr[4]].value=0;var remain=get_value(sim.poc.internal_states.MP_wc);if(typeof sim.poc.events.mem[clk-1]!="undefined"&&sim.poc.events.mem[clk-1]>0){remain=sim.poc.events.mem[clk-1]-1}var first_time=typeof sim.poc.events.mem[clk]=="undefined";sim.poc.events.mem[clk]=remain;if(remain>0){return}var wordress=address&4294967292;var value=main_memory_getvalue(sim.poc.internal_states.MP,wordress);var full_redraw=false;if(typeof value==="undefined"){value=0;full_redraw=true}value=main_memory_updatevalues(value,dbvalue,bw,address&3);var origin="";var r_value=main_memory_get_program_counter();if(r_value!=null){origin="PC=0x"+r_value.toString(16)}var melto={value:value>>>0,source_tracking:[origin],comments:null};var elto=main_memory_set(sim.poc.internal_states.MP,wordress,melto);sim.poc.signals[s_expr[4]].value=1;show_main_memory(sim.poc.internal_states.MP,wordress,full_redraw,true);if(first_time&&sim.poc.internal_states.CM.length>0){cache_memory_access(sim.poc.internal_states.CM[0],address,"write",clk)}},verbal:function(s_expr){var verbal="";var address=sim.poc.states[s_expr[1]].value;var dbvalue=sim.poc.states[s_expr[2]].value;var bw=sim.poc.signals[s_expr[3]].value;var clk=get_value(sim.poc.states[s_expr[5]]);switch(bw){case 0:bw_type="byte";break;case 1:bw_type="half";break;case 2:bw_type="three bytes";break;case 3:bw_type="word";break}var value=main_memory_getvalue(sim.poc.internal_states.MP,address);if(typeof value==="undefined"){value=0}verbal="Try to write a "+bw_type+" to memory "+"at address 0x"+address.toString(16)+" with value "+value.toString(16)+". ";return verbal}};sim.poc.behaviors.MEMORY_RESET={nparameters:1,operation:function(s_expr){sim.poc.events.mem={}},verbal:function(s_expr){return"Reset the memory (all values will be zeroes). "}};sim.poc.elements.memory={name:"Main memory",description:"Main memory subsystem",type:"subcomponent",belongs:"MEMORY",states:{addr:{ref:"BUS_AB"},data:{ref:"BUS_DB"},mrdy:{ref:"MRDY"}},signals:{bw:{ref:"BW"},r:{ref:"R"},w:{ref:"W"}},states_inputs:["addr","data"],states_outputs:["mrdy","data"],signals_inputs:["bw","r","w"],signals_output:[]};sim.poc.components.IO={name:"IO",version:"1",abilities:["IO_TIMER"],details_name:["IO_STATS","IO_CONFIG"],details_fire:[["svg_p:text3775"],[]],write_state:function(vec){return vec},read_state:function(o,check){return false},get_state:function(reg){return null},get_value:function(elto){var associated_state=simhw_internalState_get("io_hash",elto);var value=get_value(simhw_sim_state(associated_state))>>>0;set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_signal("IOR"),1);compute_behavior("FIRE IOR");value=get_value(simhw_sim_state("BUS_DB"));return value},set_value:function(elto,value){var associated_state=simhw_internalState_get("io_hash",elto);set_value(simhw_sim_state(associated_state),value);set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_state("BUS_DB"),value);set_value(simhw_sim_signal("IOW"),1);compute_behavior("FIRE IOW");return value}};sim.poc.internal_states.io_int_factory=[];sim.poc.internal_states.io_int_factory[0]={period:0,probability:.5,accumulated:0,active:false};sim.poc.internal_states.io_int_factory[1]={period:0,probability:.5,accumulated:0,active:false};sim.poc.internal_states.io_int_factory[2]={period:0,probability:.5,accumulated:0,active:false};sim.poc.internal_states.io_int_factory[3]={period:0,probability:.5,accumulated:0,active:false};sim.poc.internal_states.io_int_factory[4]={period:0,probability:.5,accumulated:0,active:false};sim.poc.internal_states.io_int_factory[5]={period:0,probability:.5,accumulated:0,active:false};sim.poc.internal_states.io_int_factory[6]={period:0,probability:.5,accumulated:0,active:false};sim.poc.internal_states.io_int_factory[7]={period:0,probability:.5,accumulated:0,active:false};var IOSR_ID=4352;var IOCR_ID=4356;var IODR_ID=4360;sim.poc.internal_states.io_hash[IOSR_ID]="IOSR";sim.poc.internal_states.io_hash[IOCR_ID]="IOCR";sim.poc.internal_states.io_hash[IODR_ID]="IODR";sim.poc.states.IOSR={name:"IOSR",verbal:"IO State Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.IOCR={name:"IOCR",verbal:"IO Control Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.IODR={name:"IODR",verbal:"IO Data Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.signals.INT={name:"INT",visible:true,type:"L",value:0,default_value:0,nbits:"1",depends_on:["CLK"],behavior:["FIRE C","FIRE C"],fire_name:["svg_p:tspan4199"],draw_data:[[],["svg_p:path3809"]],draw_name:[[],[]]};sim.poc.signals.IORDY={name:"IORDY",visible:true,type:"L",value:0,default_value:0,nbits:"1",depends_on:["CLK"],behavior:["FIRE_IFCHANGED IORDY C","FIRE_IFCHANGED IORDY C"],fire_name:["svg_p:tspan4089","svg_p:path3793","svg_p:tspan4089"],draw_data:[[],["svg_p:path3897"]],draw_name:[[],[]]};sim.poc.signals.IO_IOR={name:"IO_IOR",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","IO_IOR BUS_AB BUS_DB IOSR IOCR IODR CLK; FIRE M1"],fire_name:["svg_p:tspan4173"],draw_data:[[],["svg_p:path3795","svg_p:path3733"]],draw_name:[[],[]]};sim.poc.signals.IO_IOW={name:"IO_IOW",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","IO_IOW BUS_AB BUS_DB IOSR IOCR IODR CLK; FIRE M1"],fire_name:["svg_p:text3785-0-6-0-5-5"],draw_data:[[],["svg_p:path3805","svg_p:path3733"]],draw_name:[[],[]]};sim.poc.signals.IO_IE={name:"IO_IE",visible:true,type:"L",value:1,default_value:1,nbits:"1",behavior:["NOP","IO_CHK_I CLK INT INTV; FIRE C"],fire_name:[],draw_data:[[],[]],draw_name:[[],[]]};sim.poc.signals.INTA={name:"INTA",visible:true,type:"L",value:1,default_value:0,nbits:"1",behavior:["NOP","INTA CLK INT INTA BUS_DB INTV; FIRE M1; FIRE C"],fire_name:["svg_p:text3785-0-6-0-5-5-1-1"],draw_data:[[],["svg_p:path3807","svg_p:path3737"]],draw_name:[[],[]]};sim.poc.behaviors.IO_IOR={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.poc.states[s_expr[1]]);var iosr=get_value(sim.poc.states[s_expr[3]]);var iocr=get_value(sim.poc.states[s_expr[4]]);var iodr=get_value(sim.poc.states[s_expr[5]]);if(bus_ab==IOSR_ID)set_value(sim.poc.states[s_expr[2]],iosr);if(bus_ab==IOCR_ID)set_value(sim.poc.states[s_expr[2]],iocr);if(bus_ab==IODR_ID)set_value(sim.poc.states[s_expr[2]],iodr)},verbal:function(s_expr){var verbal="";var bus_ab=get_value(sim.poc.states[s_expr[1]]);var iosr=get_value(sim.poc.states[s_expr[3]]);var iocr=get_value(sim.poc.states[s_expr[4]]);var iodr=get_value(sim.poc.states[s_expr[5]]);if(bus_ab==IOSR_ID)verbal="I/O device read at IOSR of value "+iosr+". ";if(bus_ab==IOCR_ID)verbal="I/O device read at IOCR of value "+iocr+". ";if(bus_ab==IODR_ID)verbal="I/O device read at IODR of value "+iodr+". ";return verbal}};sim.poc.behaviors.IO_IOW={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.poc.states[s_expr[1]]);var bus_db=get_value(sim.poc.states[s_expr[2]]);if(bus_ab!=IOSR_ID&&bus_ab!=IOCR_ID&&bus_ab!=IODR_ID){return}if(bus_ab==IOSR_ID)set_value(sim.poc.states[s_expr[3]],bus_db);if(bus_ab==IOCR_ID)set_value(sim.poc.states[s_expr[4]],bus_db);if(bus_ab==IODR_ID)set_value(sim.poc.states[s_expr[5]],bus_db);var iocr_id=get_value(sim.poc.states[s_expr[4]]);var iodr_id=get_value(sim.poc.states[s_expr[5]]);if(iocr_id<0||iocr_id>7)return;set_var(sim.poc.internal_states.io_int_factory[iocr_id].period,iodr_id);set_var(sim.poc.internal_states.io_int_factory[iocr_id].probability,1);if(0==iodr_id)set_var(sim.poc.internal_states.io_int_factory[iocr_id].probability,0)},verbal:function(s_expr){var verbal="";var bus_ab=get_value(sim.poc.states[s_expr[1]]);var bus_db=get_value(sim.poc.states[s_expr[2]]);if(bus_ab==IOSR_ID)verbal="I/O device write at IOSR with value "+bus_db+". ";if(bus_ab==IOCR_ID)verbal="I/O device write at IOCR with value "+bus_db+". ";if(bus_ab==IODR_ID)verbal="I/O device write at IODR with value "+bus_db+". ";return verbal}};sim.poc.behaviors.IO_CHK_I={nparameters:4,types:["E","S","E"],operation:function(s_expr){var clk=get_value(sim.poc.states[s_expr[1]]);for(var i=sim.poc.internal_states.io_int_factory.length-1;i>=0;i--){if(get_var(sim.poc.internal_states.io_int_factory[i].period)==0)continue;if(get_var(sim.poc.internal_states.io_int_factory[i].active)==true){set_value(sim.poc.signals[s_expr[2]],1);set_value(sim.poc.states[s_expr[3]],i)}if(clk%get_var(sim.poc.internal_states.io_int_factory[i].period)==0){if(Math.random()>get_var(sim.poc.internal_states.io_int_factory[i].probability))continue;set_var(sim.poc.internal_states.io_int_factory[i].accumulated,get_var(sim.poc.internal_states.io_int_factory[i].accumulated)+1);set_var(sim.poc.internal_states.io_int_factory[i].active,true);if(typeof sim.poc.events.io[clk]=="undefined")sim.poc.events.io[clk]=[];sim.poc.events.io[clk].push(i);set_value(sim.poc.signals[s_expr[2]],1);set_value(sim.poc.states[s_expr[3]],i)}}},verbal:function(s_expr){return"Check I/O Interruption. "}};sim.poc.behaviors.INTA={nparameters:6,types:["E","S","S","E","E"],operation:function(s_expr){var clk=get_value(sim.poc.states[s_expr[1]]);if(typeof sim.poc.events.io[clk]!="undefined"){set_value(sim.poc.states[s_expr[4]],sim.poc.events.io[clk][0]);return}set_value(sim.poc.signals[s_expr[2]],0);set_value(sim.poc.states[s_expr[5]],0);for(var i=0;i>>0;set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_signal("L3DR"),1);compute_behavior("FIRE L3DR");value=get_value(simhw_sim_state("BUS_DB"));return value},set_value:function(elto,value){var associated_state=simhw_internalState_get("io_hash",elto);set_value(simhw_sim_state(associated_state),value);set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_state("BUS_DB"),value);set_value(simhw_sim_signal("L3DW"),1);compute_behavior("FIRE L3DW");return value}};sim.poc.internal_states.l3d_dim=4;sim.poc.internal_states.l3d_neltos=Math.pow(sim.poc.internal_states.l3d_dim,3);sim.poc.internal_states.l3d_state=Array.from({length:sim.poc.internal_states.l3d_neltos},(()=>({active:false})));sim.poc.internal_states.l3d_frame="0".repeat(sim.poc.internal_states.l3d_neltos);var L3DSR_ID=8448;var L3DCR_ID=8452;var L3DDR_ID=8456;sim.poc.internal_states.io_hash[L3DSR_ID]="L3DSR";sim.poc.internal_states.io_hash[L3DCR_ID]="L3DCR";sim.poc.internal_states.io_hash[L3DDR_ID]="L3DDR";sim.poc.states.L3DSR={name:"L3DSR",verbal:"L3D State Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.L3DCR={name:"L3DCR",verbal:"L3D Control Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.L3DDR={name:"L3DDR",verbal:"L3D Data Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.signals.L3D_IOR={name:"L3D_IOR",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","L3D_IOR BUS_AB BUS_DB L3DSR L3DCR L3DDR CLK; FIRE M1"],fire_name:["svg_p:tspan4173"],draw_data:[[],["svg_p:path3795","svg_p:path3733"]],draw_name:[[],[]]};sim.poc.signals.L3D_IOW={name:"L3D_IOW",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","L3D_IOW BUS_AB BUS_DB L3DSR L3DCR L3DDR CLK; FIRE M1; L3D_SYNC"],fire_name:["svg_p:text3785-0-6-0-5-5"],draw_data:[[],["svg_p:path3805","svg_p:path3733"]],draw_name:[[],[]]};sim.poc.behaviors.L3D_IOR={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.poc.states[s_expr[1]]);var iosr=get_value(sim.poc.states[s_expr[3]]);var iocr=get_value(sim.poc.states[s_expr[4]]);var iodr=get_value(sim.poc.states[s_expr[5]]);if(bus_ab==L3DCR_ID){set_value(sim.poc.states[s_expr[2]],iocr)}if(bus_ab==L3DDR_ID){set_value(sim.poc.states[s_expr[2]],iodr)}if(bus_ab==L3DCR_ID){var x=(iodr&4278190080)>>24;var y=(iodr&16711680)>>16;var z=(iodr&65280)>>8;var p=z*Math.pow(sim.poc.internal_states.l3d_dim,2)+y*sim.poc.internal_states.l3d_dim+x;var s=get_var(sim.poc.internal_states.l3d_state[p].active);set_value(sim.poc.states[s_expr[2]],s)}},verbal:function(s_expr){var verbal="";var bus_ab=get_value(sim.poc.states[s_expr[1]]);var iosr=get_value(sim.poc.states[s_expr[3]]);var iocr=get_value(sim.poc.states[s_expr[4]]);var iodr=get_value(sim.poc.states[s_expr[5]]);if(bus_ab==L3DSR_ID)verbal="I/O device read at L3DSR of value "+iosr+". ";if(bus_ab==L3DCR_ID)verbal="I/O device read at L3DCR of value "+iocr+". ";if(bus_ab==L3DDR_ID)verbal="I/O device read at L3DDR of value "+iodr+". ";return verbal}};sim.poc.behaviors.L3D_IOW={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.poc.states[s_expr[1]]);var bus_db=get_value(sim.poc.states[s_expr[2]]);if(bus_ab!=L3DSR_ID&&bus_ab!=L3DCR_ID&&bus_ab!=L3DDR_ID){return}if(bus_ab==L3DSR_ID){set_value(sim.poc.states[s_expr[3]],bus_db)}if(bus_ab==L3DDR_ID){set_value(sim.poc.states[s_expr[5]],bus_db)}if(bus_ab==L3DCR_ID){set_value(sim.poc.states[s_expr[4]],bus_db);var x=(bus_db&4278190080)>>24;var y=(bus_db&16711680)>>16;var z=(bus_db&65280)>>8;var p=z*Math.pow(sim.poc.internal_states.l3d_dim,2)+y*sim.poc.internal_states.l3d_dim+x;var s=(bus_db&255)!=0;var l3dstates=sim.poc.internal_states.l3d_state;set_var(l3dstates[p].active,s)}},verbal:function(s_expr){var verbal="";var bus_ab=get_value(sim.poc.states[s_expr[1]]);var bus_db=get_value(sim.poc.states[s_expr[2]]);if(bus_ab==L3DSR_ID)verbal="I/O device write at L3DSR with value "+bus_db+". ";if(bus_ab==L3DCR_ID)verbal="I/O device write at L3DCR with value "+bus_db+". ";if(bus_ab==L3DDR_ID)verbal="I/O device write at L3DDR with value "+bus_db+". ";return verbal}};sim.poc.behaviors.L3D_RESET={nparameters:1,operation:function(s_expr){sim.poc.events.l3d={};var n=sim.poc.internal_states.l3d_state.length;for(var i=0;i>>0;set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_signal("LEDMR"),1);compute_behavior("FIRE LEDMR");value=get_value(simhw_sim_state("BUS_DB"));return value},set_value:function(elto,value){var associated_state=simhw_internalState_get("io_hash",elto);set_value(simhw_sim_state(associated_state),value);set_value(simhw_sim_state("BUS_AB"),elto);set_value(simhw_sim_state("BUS_DB"),value);set_value(simhw_sim_signal("LEDMW"),1);compute_behavior("FIRE LEDMW");return value}};sim.poc.internal_states.ledm_dim=24;sim.poc.internal_states.ledm_neltos=Math.pow(sim.poc.internal_states.ledm_dim,2);sim.poc.internal_states.ledm_state=Array.from({length:sim.poc.internal_states.ledm_neltos},(()=>({color:0})));sim.poc.internal_states.ledm_colors=colors_clone("");sim.poc.internal_states.ledm_frame="0".repeat(sim.poc.internal_states.ledm_neltos);var LEDMSR_ID=12544;var LEDMCR_ID=12548;var LEDMDR_ID=12552;sim.poc.internal_states.io_hash[LEDMSR_ID]="LEDMSR";sim.poc.internal_states.io_hash[LEDMCR_ID]="LEDMCR";sim.poc.internal_states.io_hash[LEDMDR_ID]="LEDMDR";sim.poc.states.LEDMSR={name:"LEDMSR",verbal:"LEDM State Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.LEDMCR={name:"LEDMCR",verbal:"LEDM Control Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.states.LEDMDR={name:"LEDMDR",verbal:"LEDM Data Register",visible:false,nbits:"32",value:0,default_value:0,draw_data:[]};sim.poc.signals.LEDM_IOR={name:"LEDM_IOR",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","LEDM_IOR BUS_AB BUS_DB LEDMSR LEDMCR LEDMDR CLK; FIRE M1"],fire_name:["svg_p:tspan4173"],draw_data:[[],["svg_p:path3795","svg_p:path3733"]],draw_name:[[],[]]};sim.poc.signals.LEDM_IOW={name:"LEDM_IOW",visible:true,type:"L",value:0,default_value:0,nbits:"1",behavior:["NOP","LEDM_IOW BUS_AB BUS_DB LEDMSR LEDMCR LEDMDR CLK; FIRE M1; LEDM_SYNC"],fire_name:["svg_p:text3785-0-6-0-5-5"],draw_data:[[],["svg_p:path3805","svg_p:path3733"]],draw_name:[[],[]]};sim.poc.behaviors.LEDM_IOR={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.poc.states[s_expr[1]]);var iosr=get_value(sim.poc.states[s_expr[3]]);var iocr=get_value(sim.poc.states[s_expr[4]]);var iodr=get_value(sim.poc.states[s_expr[5]]);if(bus_ab==LEDMCR_ID){set_value(sim.poc.states[s_expr[2]],iocr)}if(bus_ab==LEDMDR_ID){set_value(sim.poc.states[s_expr[2]],iodr)}if(bus_ab==LEDMCR_ID){var x=(iodr&4278190080)>>24;var y=(iodr&16711680)>>16;var p=y*sim.poc.internal_states.ledm_dim+x;var s=get_var(sim.poc.internal_states.ledm_state[p].color);set_value(sim.poc.states[s_expr[2]],s)}},verbal:function(s_expr){var verbal="";var bus_ab=get_value(sim.poc.states[s_expr[1]]);var iosr=get_value(sim.poc.states[s_expr[3]]);var iocr=get_value(sim.poc.states[s_expr[4]]);var iodr=get_value(sim.poc.states[s_expr[5]]);if(bus_ab==LEDMSR_ID)verbal="I/O device read at LEDMSR of value "+iosr+". ";if(bus_ab==LEDMCR_ID)verbal="I/O device read at LEDMCR of value "+iocr+". ";if(bus_ab==LEDMDR_ID)verbal="I/O device read at LEDMDR of value "+iodr+". ";return verbal}};sim.poc.behaviors.LEDM_IOW={nparameters:7,types:["E","E","E","E","E","E"],operation:function(s_expr){var bus_ab=get_value(sim.poc.states[s_expr[1]]);var bus_db=get_value(sim.poc.states[s_expr[2]]);switch(bus_ab){case LEDMSR_ID:set_value(sim.poc.states[s_expr[3]],bus_db);break;case LEDMDR_ID:set_value(sim.poc.states[s_expr[5]],bus_db);break;case LEDMCR_ID:set_value(sim.poc.states[s_expr[4]],bus_db);break;default:break}if(LEDMCR_ID==bus_ab){var dr=get_value(sim.poc.states[s_expr[5]]);if(16&bus_db){var x=(dr&4278190080)>>24;var y=(dr&16711680)>>16;var s=dr&255;set_value(sim.poc.states[s_expr[3]],1);if(x>=sim.poc.internal_states.ledm_dim&&y>=sim.poc.internal_states.ledm_dim){set_value(sim.poc.states[s_expr[3]],-1);return}var p=y*sim.poc.internal_states.ledm_dim+x;set_var(sim.poc.internal_states.ledm_state[p].color,s)}if(32&bus_db){set_value(sim.poc.states[s_expr[3]],1);var s=0;var neltos=sim.poc.internal_states.ledm_neltos;var ldmstates=sim.poc.internal_states.ledm_state;for(var p=0;p>0);set_var(sim.poc.internal_states.ledm_state[p+1].color,(s&65280)>>8);set_var(sim.poc.internal_states.ledm_state[p+2].color,(s&16711680)>>16);set_var(sim.poc.internal_states.ledm_state[p+3].color,(s&4278190080)>>24)}}if(64&bus_db){set_value(sim.poc.states[s_expr[3]],1);var s=0;var c="";var neltos=sim.poc.internal_states.ledm_colors.length;for(var p=0;p>>8;s=s.toString(16);c="#"+simcoreui_pack(s,6);sim.poc.internal_states.ledm_colors[p]=c}neltos=sim.poc.internal_states.ledm_neltos;for(var p=0;p>24;var y=(dr&16711680)>>16;var s=dr&255;verbal="I/O device write at LEDMCR with value "+bus_db+" (set pixel x:"+x+", y:"+y+", with color:"+s+"). "}if(64&bus_db){verbal="I/O device write at LEDMCR with value "+bus_db+" (set color palette at:"+bus_db+"). "}break;default:break}return verbal}};sim.poc.behaviors.LEDM_RESET={nparameters:1,operation:function(s_expr){sim.poc.events.ledm={};sim.poc.internal_states.ledm_colors=colors_clone("");for(var i=0;i0)line2=context.newlines[context.newlines.length-1]+1;var line1=0;if(context.newlines.length>1)line1=context.newlines[context.newlines.length-2]+1;var lowI=line1;var highI=Math.min(context.t-1,line2+32);for(;typeof context.text[highI+1]!="undefined"&&context.text[highI+1]!="\n";highI++);var line3=highI+2;highI++;for(;typeof context.text[highI+1]!="undefined"&&context.text[highI+1]!="\n";highI++);highI++;context.error=" "+""+"...\n";for(var i=lowI;i"+"(*) "+i18n_get_TagFor("compiler","PROBLEM AROUND LINE")+" "+context.line+": "+msgError+". ";simcore_ga("compile","compile.error","compile.error."+msgError);return context}function frm_getLabelContext(context){return{t:context.t,line:context.line,newlines:context.newlines.slice()}}function frm_setLabelContext(context,labelContext){context.t=labelContext.t;context.line=labelContext.line;context.newlines=labelContext.newlines}function frm_getComments(context){return context.comments.join("\n")}function frm_resetComments(context){context.comments=[]}function frm_nextNative(context){var first=context.t;var last=context.t;var braces=1;while(context.t=Math.pow(2,simhw_sim_signal(nombre_tok).nbits)){return frm_langError(context,i18n_get_TagFor("compiler","OUT OF RANGE")+"'"+frm_getToken(context)+"'")}frm_nextToken(context)}if(frm_isToken(context,",")){frm_nextToken(context)}}var acc_cmt=frm_getComments(context);microcomments.push(acc_cmt);frm_resetComments(context);microprograma.push(microInstruccionAux);context.contadorMC++;frm_nextToken(context);if(frm_isToken(context,","))frm_nextToken(context)}if(microprograma.length===0){return frm_langError(context,i18n_get_TagFor("compiler","EMPTY MICROCODE"))}frm_nextToken(context);return{NATIVE:"",microprograma:microprograma,microcomments:microcomments}}function read_native(context){var microprograma=[];var microcomments=[];if(!frm_isToken(context,"{")){return frm_langError(context,i18n_get_TagFor("compiler","OPEN BRACE NOT FOUND"))}frm_nextNative(context);var native_code=frm_getToken(context);microprograma.push({});microcomments.push("");frm_nextToken(context);return{NATIVE:native_code,microprograma:microprograma,microcomments:microcomments}}function firm_begin_read(context){var instruccionAux={};instruccionAux.name=frm_getToken(context);instruccionAux["mc-start"]=context.contadorMC;instruccionAux["is_native"]=false;frm_nextToken(context);if(frm_isToken(context,",")){frm_nextToken(context)}if(frm_isToken(context,"native")){instruccionAux["is_native"]=true;frm_nextToken(context);if(frm_isToken(context,",")){frm_nextToken(context)}context.etiquetas[context.contadorMC]="fetch"}if(true==instruccionAux.is_native)ret=read_native(context);else ret=firm_mcode_signals_read(context);if(typeof ret.error!="undefined"){return ret}instruccionAux.signature="begin";instruccionAux.signatureGlobal="begin";instruccionAux.signatureUser="begin";instruccionAux.signatureRaw="begin";instruccionAux.NATIVE=ret.NATIVE;instruccionAux.microcode=ret.microprograma;instruccionAux.microcomments=ret.microcomments;context.instrucciones.push(instruccionAux);context.contadorMC=context.contadorMC+9;return{}}function firm_pseudoinstructions_read(context){frm_nextToken(context);if(!frm_isToken(context,"{")){return frm_langError(context,i18n_get_TagFor("compiler","OPEN BRACE NOT FOUND"))}frm_nextToken(context);while(!frm_isToken(context,"}")){var pseudoInstructionAux={};var pseudoInitial={};pseudoInitial.signature="";pseudoInitial.name="";pseudoInitial.fields=[];pseudoInitial.name=frm_getToken(context);pseudoInitial.signature=pseudoInitial.signature+frm_getToken(context)+",";frm_nextToken(context);while(!frm_isToken(context,"{")){var pseudoFieldAux={};pseudoFieldAux.name="";pseudoFieldAux.type="";pseudoFieldAux.indirect=false;if(frm_isToken(context,"(")){frm_nextToken(context);pseudoFieldAux.name+=frm_getToken(context);frm_nextToken(context);if(!frm_isToken(context,")")){return frm_langError(context,i18n_get_TagFor("compiler","CLOSE PAREN. NOT FOUND"))}frm_nextToken(context);pseudoFieldAux.indirect=true}else{pseudoFieldAux.name+=frm_getToken(context);frm_nextToken(context)}if(!frm_isToken(context,"=")){return frm_langError(context,i18n_get_TagFor("compiler","EQUAL NOT FOUND")+" (for name=type)")}frm_nextToken(context);pseudoFieldAux.type+=frm_getToken(context).replace("num","inm");switch(pseudoFieldAux.type){case"reg":case"inm":case"addr":case"address":break;default:return frm_langError(context,i18n_get_TagFor("compiler","INVALID PARAMETER")+pseudoFieldAux.type+"."+i18n_get_TagFor("compiler","ALLOWED PARAMETER"))}pseudoInitial.fields.push(pseudoFieldAux);if(pseudoFieldAux.indirect==true)pseudoInitial.signature+="("+frm_getToken(context)+"),";else pseudoInitial.signature+=frm_getToken(context)+",";frm_nextToken(context);if(frm_isToken(context,",")){frm_nextToken(context)}}frm_nextToken(context);pseudoInitial.signature=pseudoInitial.signature.substr(0,pseudoInitial.signature.length-1).replace(/num/g,"inm");pseudoInstructionAux.initial=pseudoInitial;var contPseudoFinish=0;var pseudoFinishAux={};pseudoFinishAux.signature="";var inStart=0;var cont=false;while(!frm_isToken(context,"}")){if(inStart==0){for(i=0;i32*parseInt(instruccionAux.nwords)-1){return frm_langError(context,i18n_get_TagFor("compiler","STARTBIT OoR")+"'"+frm_getToken(context)+"'")}frm_nextToken(context);if(!frm_isToken(context,",")){return frm_langError(context,i18n_get_TagFor("compiler","COMMA NOT FOUND"))}frm_nextToken(context);instruccionAux.fields[camposInsertados].stopbit=frm_getToken(context);var stop=parseInt(instruccionAux.fields[camposInsertados].stopbit);if(stop>32*parseInt(instruccionAux.nwords)){return frm_langError(context,i18n_get_TagFor("compiler","STOPBIT OoR")+"'"+frm_getToken(context)+"'")}for(i=stop;i<=start;i++){if(typeof instruccionAux.overlapping[i]!="undefined"){return frm_langError(context,i18n_get_TagFor("compiler","OVERLAPPING FIELD")+instruccionAux.fields[camposInsertados].name)}instruccionAux.overlapping[i]=1}frm_nextToken(context);if(!frm_isToken(context,")")){return frm_langError(context,i18n_get_TagFor("compiler","CLOSE PAREN. NOT FOUND"))}frm_nextToken(context);if(instruccionAux.fields[camposInsertados].type=="address"){if(frm_getToken(context)!="abs"&&frm_getToken(context)!="rel"){return frm_langError(context,i18n_get_TagFor("compiler","INCORRECT ADDRESSING"))}instruccionAux.fields[camposInsertados].address_type=frm_getToken(context);frm_nextToken(context)}if(frm_isToken(context,",")){frm_nextToken(context)}return{}}function firm_instruction_read_fixed_fields(context,instruccionAux,xr_info,all_ones_co){var ret={};frm_nextToken(context);if(!frm_isToken(context,"co")){return frm_langError(context,i18n_get_TagFor("compiler","NO CO FIELD"))}ret=firm_instruction_co_read(context,instruccionAux,xr_info,all_ones_co);if(typeof ret.error!="undefined"){return ret}if(frm_isToken(context,"cop")){ret=firm_instruction_cop_read(context,instruccionAux);if(typeof ret.error!="undefined"){return ret}}if(frm_isToken(context,"nwords")){ret=firm_instruction_nword_read(context,instruccionAux);if(typeof ret.error!="undefined"){return ret}}var campos=instruccionAux.fields;var firma=instruccionAux.signature;var firmaUsuario=instruccionAux.signatureUser;var firmaGlobal=instruccionAux.signatureGlobal;var camposInsertados=0;while(camposInsertados32*parseInt(instruccionAux.nwords)-1){return frm_langError(context,i18n_get_TagFor("compiler","STARTBIT OoR")+"'"+frm_getToken(context)+"'")}frm_nextToken(context);if(!frm_isToken(context,":")){return frm_langError(context,i18n_get_TagFor("compiler","COLON NOT FOUND"))}frm_nextToken(context);tmp_fields.stopbit=frm_getToken(context);var stop=parseInt(tmp_fields.stopbit);if(stop>32*parseInt(instruccionAux.nwords)){return frm_langError(context,i18n_get_TagFor("compiler","STOPBIT OoR")+"'"+frm_getToken(context)+"'")}frm_nextToken(context);if(!frm_isToken(context,")")){return frm_langError(context,i18n_get_TagFor("compiler","CLOSE PAREN. NOT FOUND"))}frm_nextToken(context);if(!frm_isToken(context,"=")){return frm_langError(context,i18n_get_TagFor("compiler","EQUAL NOT FOUND"))}frm_nextToken(context);var tmp_name=frm_getToken(context);if(["oc","cop","funct"].includes(tmp_fields.type)){tmp_fields.value=tmp_name}else{tmp_fields.name=tmp_name;var index_name=-1;for(var i=0;i100){return frm_langError(context,i18n_get_TagFor("compiler","MORE 100 FIELDS"))}if(auxValue=="co"){return frm_langError(context,i18n_get_TagFor("compiler","CO AS FIELD NAME"))}if(auxValue=="nwords"){return frm_langError(context,i18n_get_TagFor("compiler","NW AS FIELD NAME"))}}if(frm_isToken(context,"(")){firma=firma+",(";if(plus_found)firmaUsuario=firmaUsuario+"+(";else firmaUsuario=firmaUsuario+" (";frm_nextToken(context);if(!frm_isToken(context,",")&&!frm_isToken(context,"(")&&!frm_isToken(context,")")){var campoAux={};campoAux.name=frm_getToken(context);instruccionAux.fields.push(campoAux);instruccionAux.numeroCampos++;firma=firma+frm_getToken(context);firmaUsuario=firmaUsuario+frm_getToken(context);frm_nextToken(context)}else{return frm_langError(context,i18n_get_TagFor("compiler","MISSING TOKEN ON")+"'"+context.co_cop[instruccionAux.co].signature+"'")}if(frm_isToken(context,")")){firma=firma+")";firmaUsuario=firmaUsuario+")";frm_nextToken(context)}else{return frm_langError(context,i18n_get_TagFor("compiler","MISSING ) ON")+"'"+context.co_cop[instruccionAux.co].signature+"'")}}firma=firma+",";firmaUsuario=firmaUsuario+" "}firma=firma.substr(0,firma.length-1);firma=firma.replace(/,,/g,",");firmaUsuario=firmaUsuario.substr(0,firmaUsuario.length-1);firmaUsuario=firmaUsuario.replace(/ /g," ");instruccionAux.signature=firma;instruccionAux.signatureGlobal=firma;instruccionAux.signatureUser=firmaUsuario;instruccionAux.signatureRaw=firmaUsuario;if(2==context.version){ret=firm_instruction_read_fields_v2(context,instruccionAux,xr_info,all_ones_co)}else{ret=firm_instruction_read_fixed_fields(context,instruccionAux,xr_info,all_ones_co)}if(typeof ret.error!="undefined"){return ret}ret={};if(true==instruccionAux.is_native)ret=read_native(context);else ret=firm_mcode_signals_read(context);if(typeof ret.error!="undefined")return ret;instruccionAux.NATIVE=ret.NATIVE;instruccionAux.microcode=ret.microprograma;instruccionAux.microcomments=ret.microcomments;context.instrucciones.push(instruccionAux);context.contadorMC=context.contadorMC+9;if(!frm_isToken(context,"}")){return frm_langError(context,i18n_get_TagFor("compiler","CLOSE BRACE NOT FOUND"))}frm_nextToken(context);return{}}function simlang_native_adapt_replaceSyscall(icode){var rc="";var me="";var ff="capi_print_char|capi_print_int|capi_print_float|capi_print_double|capi_print_string|"+"capi_read_char|capi_read_int|capi_read_float|capi_read_double|capi_read_string|"+"capi_sbrk|capi_exit";var re=new RegExp("("+ff+")\\(([^)]*)\\)","g");var match=re.exec(icode);while(match!==null){var f=match[1].trim();var p=match[2].trim().split(",");switch(f){case"capi_print_char":rc="// "+f+" \n"+"\tvar tmp1 = 0x000000FF & "+p[0]+" ;\n"+"\tset_screen_content(tmp1.toString()) ;\n";break;case"capi_print_int":rc="// "+f+" \n"+"\tset_screen_content("+p[0]+".toString()) ;\n";break;case"capi_print_float":rc="// "+f+" \n"+"\tvar tmp1 = hex2float("+p[0]+") ;\n"+"\tset_screen_content(tmp1.toString()) ;\n";break;case"capi_print_double":rc="// "+f+" \n"+"\tvar tmp1 = hex2float("+p[0]+") ;\n"+"\tset_screen_content(tmp1.toString()) ;\n";break;case"capi_print_string":rc="// "+f+" \n"+'\tvar tmp1 = "" ;\n'+'\tvar tmp2 = simcore_native_get_value("MEMORY", '+p[0]+") ;\n"+"\tfor (var k="+p[0]+"+1; (tmp2 !== 0) && (k<8*1024); k++) {\n"+"\t tmp1 += tmp2.toString() ;\n"+'\t tmp2 = simcore_native_get_value("MEMORY", k) ;\n'+"\t} ;\n"+"\tset_screen_content(tmp1) ;\n";break;case"capi_read_char":rc="// "+f+" \n"+"\tvar tmp1 = get_screen_content() ;\n"+"\tvar "+p[0]+" = 0x000000FF & parseInt(tmp1) ;\n";break;case"capi_read_int":rc="// "+f+" \n"+"\tvar tmp1 = get_screen_content() ;\n"+"\tvar "+p[0]+" = parseInt(tmp1) ;\n";break;case"capi_read_float":rc="// "+f+" \n"+"\tvar tmp1 = get_screen_content() ;\n"+"\tvar "+p[0]+" = parseFloat(tmp1) ;\n";break;case"capi_read_double":rc="// "+f+" \n"+"\tvar tmp1 = get_screen_content() ;\n"+"\tvar "+p[0]+" = parseFloat(tmp1) ;\n";break;case"capi_read_string":rc="// "+f+" \n"+"\tvar tmp1 = get_screen_content() ;\n"+"\tfor (var k=0; k<"+p[1]+"; k++) {\n"+'\t simcore_native_set_value("MEMORY", '+p[0]+"+k, tmp1[k]) ;\n"+"\t} ;\n";break;case"capi_sbrk":rc="// "+f+" \n"+"// TODO: _sbrk_("+p[0]+", "+p[1]+");\n";break;case"capi_exit":rc="// "+f+" \n"+"// exit by setting P.C. register outside text segment\n"+"\tvar pc_name = simhw_sim_ctrlStates_get().pc.state ;\n"+'\tsimcore_native_set_value("CPU", pc_name, 0x00000000) ;\n';break;default:rc="// "+f+" \n"+"// unknown syscall\n";break}me=new RegExp(f+"\\(([^)]*)\\)","g");icode=icode.replace(me,rc);match=re.exec(icode)}return icode}function simlang_native_adapt_provideRegister(icode,reg_log,rf_phy,reg_phy){var re=new RegExp(reg_log,"g");if(icode.search(re)!=-1){icode="var "+reg_log+" = simcore_native_get_value('"+rf_phy+"', "+reg_phy+") ;\n"+icode+"\n"+"simcore_native_set_value('"+rf_phy+"', "+reg_phy+", "+reg_log+") ;\n"}return icode}function simlang_native_adapt_providePC(icode){var re=/PC/g;if(icode.search(re)!=-1){icode="var pc_name = simhw_sim_ctrlStates_get().pc.state ;\n"+"var PC = simcore_native_get_value('CPU', pc_name) ;\n"+icode+"simcore_native_set_value('CPU', pc_name, PC) ;\n"}return icode}function simlang_native_adapt_replaceIf(icode){var re=new RegExp("[iI][fF]\\s*\\(([^\\\\)]*)\\)\\s*{([^\\\\}]*)}\\s*[eE][lL][sS][eE]{[^}]*}\\s*","g");if(icode.search(re)!=-1){var match=re.exec(icode);try{icode=icode.replace(re,"\n")}catch(e){console.log("Syntax error that cause a run-time error: "+e.toString());console.log(match)}}return icode}function simlang_native_adapt_addInitialTabTab(lines_code){var code_lines;code_lines=lines_code.split("\n");code_lines=code_lines.map((function(x){return"\t\t"+x}));return code_lines.join("\n")}function simlang_native_adapt_instructionDefinition(lines_code){var code_lines=lines_code.split(";");if(code_lines.length===1&&!lines_code.trim().startsWith("if")){lines_code=lines_code+";\n"}lines_code=simlang_native_adapt_replaceSyscall(lines_code);lines_code=simlang_native_adapt_provideRegister(lines_code,"HI","CPU","'REG_RT2'");lines_code=simlang_native_adapt_provideRegister(lines_code,"LO","CPU","'REG_RT1'");lines_code=simlang_native_adapt_provideRegister(lines_code,"ra","BR","31");lines_code=simlang_native_adapt_providePC(lines_code);lines_code=simlang_native_adapt_addInitialTabTab(lines_code);return lines_code}function simlang_native_adapt_getField(j,rf,reg){return"\t\t"+"var f_"+reg+" = "+"simcore_native_get_field_from_ir(fields, "+j+") ;\n"+"\t\t"+"var "+reg+" = "+"simcore_native_get_value('"+rf+"', f_"+reg+") ;\n"}function simlang_native_adapt_setField(j,rf,reg){return"\t\t"+"simcore_native_set_value('"+rf+"', f_"+reg+", "+reg+");\n"}function simlang_native_adapt_headerField(fname,tname,start,stop){return"\t"+tname+"("+start+":"+stop+")="+fname+",\n"}function simlang_native_beginMicrocode(){var o="";o+="\n"+"#\n"+"# WepSIM (https://wepsim.github.io/wepsim/)\n"+"#\n"+"\n"+"firmware_version = 2\n"+"\n"+"##\n"+"## Microcode Section\n"+"##\n"+"\n"+"begin,\n"+"native\n"+"{\n"+" // (once) initialize BR2 as FP register file\n"+' if (typeof BR2 === "undefined")\n'+" {\n"+" BR2 = [] ;\n"+" FCSR = 0 ;\n"+" for (var i=0; i<32; i++)\n"+" {\n"+" BR2[i] = {\n"+' name:"R"+i,\n'+' verbal:"Register "+i,\n'+" visible:true,\n"+' nbits:"32",\n'+" value:0,\n"+" default_value:0,\n"+" draw_data:[]\n"+" } ;\n"+" }\n"+" }\n"+"\n"+" // fetch\n"+' var addr = simcore_native_get_value("CPU", "REG_PC") ;\n'+' var value = simcore_native_get_value("MEMORY", addr) ;\n'+"\n"+' simcore_native_set_value("CPU", "REG_IR", value) ;\n'+' simcore_native_set_value("CPU", "REG_PC", addr + 4) ;\n'+"\n"+" simcore_native_deco() ;\n"+" simcore_native_go_opcode() ;\n"+"}\n";return o}function simlang_native_adapt_instructionSet(instruction_list){var o="";var gfields=[];var sfields=[];var hfields=[];var io={};var line_signature="";var signature_names="";var signature_order="";for(var i=0;i> 32);\n"+"\t\t "+io.fields[j].name+"2 = "+io.fields[j].name+" >> 32;\n"+"\t\t"+"simcore_native_set_value('BR2', "+"f_"+io.fields[j].name+"+0, "+io.fields[j].name+"1);\n"+"\t\t"+"simcore_native_set_value('BR2', "+"f_"+io.fields[j].name+"+1, "+io.fields[j].name+"2);\n";break;case"inm":hfields[k]=simlang_native_adapt_headerField(io.fields[j].name,"inm",io.fields[j].startbit,io.fields[j].stopbit);gfields[k]="\t\t"+"var "+io.fields[j].name+" = "+"simcore_native_get_field_from_ir(fields, "+(k-1)+") ;\n\t";break}}var co_cop="\t"+"co=111111,"+"\n";var lines_code=simlang_native_adapt_instructionDefinition(io.definition);if(lines_code.trim()!==""){lines_code="\t\t"+"// instruction specific code"+"\n"+lines_code+"\n"}var gfields_str=gfields.join("");if(gfields_str.trim()!==""){gfields_str="\t\t"+"// get fields values..."+"\n"+gfields_str+"\n"}var sfields_str=sfields.join("");if(sfields_str.trim()!==""){sfields_str="\t\t"+"// set fields values..."+"\n"+sfields_str+"\n"}o+="\n"+line_signature+" {"+"\n"+co_cop+"\t"+"nwords="+io.nwords+","+"\n"+hfields.join("")+"\t"+"native,"+"\n"+"\t"+"{\n"+gfields_str+"\n"+lines_code+"\n"+sfields_str+"\n"+"\t\t"+"// go fetch"+"\n"+"\t\t"+"simcore_native_go_maddr(0);"+"\n"+"\t"+"}"+"\n"+"}\n"}return o}function simlang_native_registerSection(register_list){var o="";var d="";var index=0;for(index=0;index=last_co){return frm_langError(context,i18n_get_TagFor("compiler","NO CO CODES"))}first_co=parseInt(r.label_co,2);curr_instruction.co=r.label_co;context.co_cop[r.label_co].signature=curr_instruction.signature;if(r.label_cop!==""){curr_instruction.cop=r.label_cop;context.co_cop[r.label_co].cop[r.label_cop]=curr_instruction.signature;context.co_cop[r.label_co].withcop=true}}var labelsFounded=0;if(context.labelsNotFound.length>0){for(i=0;i0){for(var j=0;j0){file+="registers"+"\n{\n";for(i=0;i0)line2=context.newlines[context.newlines.length-1]+1;var line1=0;if(context.newlines.length>1)line1=context.newlines[context.newlines.length-2]+1;var lowI=line1;var highI=Math.min(context.t-1,line2+32);for(;typeof context.text[highI+1]!="undefined"&&context.text[highI+1]!="\n";highI++);var line3=highI+2;highI++;for(;typeof context.text[highI+1]!="undefined"&&context.text[highI+1]!="\n";highI++);highI++;context.error=" "+""+"...\n";for(var i=lowI;i"+"(*) "+i18n_get_TagFor("compiler","PROBLEM AROUND LINE")+" "+context.line+": "+msgError+". ";simcore_ga("compile","compile.error","compile.error."+msgError);return context}function asm_getLabelContext(context){return{t:context.t,line:context.line,newlines:context.newlines.slice()}}function asm_setLabelContext(context,labelContext){context.t=labelContext.t;context.line=labelContext.line;context.newlines=labelContext.newlines}function asm_getComments(context){return context.comments.join("\n")}function asm_resetComments(context){context.comments=[]}sim_segments={".kdata":{name:".kdata",begin:0,end:255,color:"#FF99CC",kindof:"data"},".ktext":{name:".ktext",begin:256,end:4095,color:"#A9D0F5",kindof:"text"},".data":{name:".data",begin:4096,end:32767,color:"#FACC2E",kindof:"data"},".text":{name:".text",begin:32768,end:131071,color:"#BEF781",kindof:"text"},".stack":{name:".stack",begin:131071,end:1048576,color:"#F1F2A3",kindof:"stack"}};function segments_addr_within_text(address){return address>=sim_segments[".text"].begin&&address<=sim_segments[".text"].end||address>=sim_segments[".ktext"].begin&&address<=sim_segments[".ktext"].end}function segments_addr_within_data(address){return address>=sim_segments[".data"].begin&&address<=sim_segments[".data"].end||address>=sim_segments[".kdata"].begin&&address<=sim_segments[".kdata"].end}BYTE_LENGTH=8;WORD_BYTES=4;WORD_LENGTH=WORD_BYTES*BYTE_LENGTH;function isDecimal(n){var ret={number:0,isDecimal:false};if(n.length>1&&n[0]=="0"){return ret}if(typeof n==="string"&&n.includes(".")){return ret}if(!isNaN(parseFloat(n))&&isFinite(n)){ret.isDecimal=true;ret.number=parseInt(n);return ret}return ret}function isOctal(n){var ret={number:0,isDecimal:false};if(n.substring(0,1)=="0"){var octal=n.substring(1).replace(/\b0+/g,"");ret.number=parseInt(octal,8);ret.isDecimal=ret.number.toString(8)===octal;return ret}return ret}function isHex(n){var ret={number:0,isDecimal:false};if(n.substring(0,2).toLowerCase()=="0x"){var hex=n.substring(2).toLowerCase().replace(/\b0+/g,"");if(hex==""){hex="0"}ret.number=parseInt(hex,16);ret.isDecimal=ret.number.toString(16)===hex;return ret}return ret}function isChar(n){var ret={number:0,isDecimal:false};var ret1=treatControlSequences(n);if(true==ret1.error){return ret}var possible_value=ret1.string;if(possible_value[0]=="'"&&possible_value[2]=="'"||possible_value[0]=='"'&&possible_value[2]=='"'){ret.number=possible_value.charCodeAt(1);ret.isDecimal=true;return ret}return ret}function isFloat(n){var ret={number:0,isFloat:false};var non_float=/[a-df-zA-DF-Z]+/;if(non_float.test(n)===true){return ret}ret.number=parseFloat(n);ret.isFloat=!isNaN(ret.number);return ret}function get_decimal_value(possible_value){var ret={number:0,isDecimal:true};ret=isOctal(possible_value);if(ret.isDecimal===false){ret=isHex(possible_value)}if(ret.isDecimal===false){ret=isDecimal(possible_value)}if(ret.isDecimal===false){ret=isChar(possible_value)}return ret}function decimal2binary(number,size){var num_bits=number.toString(2);if(num_bits.length>WORD_LENGTH){return[num_bits,size-num_bits.length]}num_bits=(number>>>0).toString(2);if(number>=0){return[num_bits,size-num_bits.length]}num_bits="1"+num_bits.replace(/^[1]+/g,"");if(num_bits.length>size){return[num_bits,size-num_bits.length]}num_bits="1".repeat(size-num_bits.length)+num_bits;return[num_bits,size-num_bits.length]}function get_inm_value(value){var ret1={};var ret={number:0,isDecimal:false,isFloat:false};ret1=get_decimal_value(value);if(ret1.isDecimal==true){ret1.isFloat=false;return ret1}ret1=isFloat(value);if(ret1.isFloat==true){ret1.isDecimal=false;return ret1}return ret}directives={".kdata":{name:".kdata",kindof:"segment",size:0},".ktext":{name:".ktext",kindof:"segment",size:0},".data":{name:".data",kindof:"segment",size:0},".text":{name:".text",kindof:"segment",size:0},".byte":{name:".byte",kindof:"datatype",size:1},".half":{name:".half",kindof:"datatype",size:2},".word":{name:".word",kindof:"datatype",size:4},".float":{name:".float",kindof:"datatype",size:4},".double":{name:".double",kindof:"datatype",size:8},".ascii":{name:".ascii",kindof:"datatype",size:1},".asciiz":{name:".asciiz",kindof:"datatype",size:1},".space":{name:".space",kindof:"datatype",size:1},".string":{name:".string",kindof:"datatype",size:1},".zero":{name:".zero",kindof:"datatype",size:1},".align":{name:".align",kindof:"datatype",size:0}};function get_datatype_size(datatype){if(typeof directives[datatype]==="undefined"){console.log("ERROR: not defined datatype: "+datatype+"\n");return 0}return directives[datatype].size}function is_directive_kindof(text,kindof){if(typeof directives[text]==="undefined"){return false}return directives[text].kindof==kindof}function is_directive(text){return typeof directives[text]!=="undefined"}function is_directive_segment(text){return is_directive_kindof(text,"segment")}function is_directive_datatype(text){return is_directive_kindof(text,"datatype")}function isValidTag(tag){if(tag.trim()==""){return false}var ret=isDecimal(tag[0]);if(ret.isDecimal==true){return false}var myRegEx=/[^a-z,_\d]/i;return!myRegEx.test(tag)}function sum_array(a){return a.reduce((function(a,b){return a+b}),0)}function get_candidate(advance,instruction){var candidate=false;var candidates={};var signatures={};for(i=0;icandidates[i]){min=candidates[i];candidate=i}}}return candidate?parseInt(candidate):candidate}function reset_assembly(nwords){return"0".repeat(WORD_LENGTH*nwords)}function assembly_replacement(machineCode,num_bits,startbit,stopbit,free_space){var machineCodeAux=machineCode.substring(0,machineCode.length-startbit+free_space);machineCode=machineCodeAux+num_bits+machineCode.substring(machineCode.length-stopbit);return machineCode}function assembly_co_cop(machineCode,co,cop){var xr_info=simhw_sim_ctrlStates_get();if(co!==false)machineCode=assembly_replacement(machineCode,co,WORD_LENGTH,WORD_LENGTH-6,0);if(cop!==false)machineCode=assembly_replacement(machineCode,cop,xr_info.ir.default_eltos.cop.length,0,0);return machineCode}function writememory_and_reset(mp,gen,nwords){if(gen.byteWord>=WORD_BYTES){var melto={value:gen.machineCode,source_tracking:gen.track_source,comments:gen.comments};main_memory_set(mp,"0x"+gen.seg_ptr.toString(16),melto);gen.seg_ptr=gen.seg_ptr+WORD_BYTES;gen.byteWord=0;gen.track_source=[];gen.comments=[];gen.machineCode=reset_assembly(nwords)}}function is_end_of_file(context){return""===asm_getToken(context)&&context.t>=context.text.length}function read_data(context,datosCU,ret){var seg_name=asm_getToken(context);var gen={};gen.byteWord=0;gen.track_source=[];gen.comments=[];gen.machineCode=reset_assembly(1);gen.seg_ptr=ret.seg[seg_name].begin;asm_nextToken(context);while(!is_directive_segment(asm_getToken(context))&&!is_end_of_file(context)){var possible_tag="";while(!is_directive_datatype(asm_getToken(context))&&!is_end_of_file(context)){possible_tag=asm_getToken(context);if("TAG"!=asm_getTokenType(context)){if(""==possible_tag){possible_tag="[empty]"}return asm_langError(context,i18n_get_TagFor("compiler","NO TAG OR DIRECTIVE")+"'"+possible_tag+"'")}var tag=possible_tag.substring(0,possible_tag.length-1);if(!isValidTag(tag)){return asm_langError(context,i18n_get_TagFor("compiler","INVALID TAG FORMAT")+"'"+tag+"'")}if(context.firmware[tag]){return asm_langError(context,i18n_get_TagFor("compiler","TAG OR INSTRUCTION")+"'"+tag+"'")}if(ret.labels2[tag]){return asm_langError(context,i18n_get_TagFor("compiler","REPEATED TAG")+"'"+tag+"'")}ret.labels2[tag]="0x"+(gen.seg_ptr+gen.byteWord).toString(16);asm_nextToken(context)}if(is_end_of_file(context)){break}var possible_datatype=asm_getToken(context);if(".word"==possible_datatype||".half"==possible_datatype||".byte"==possible_datatype||".float"==possible_datatype||".double"==possible_datatype){var size=get_datatype_size(possible_datatype);asm_nextToken(context);var possible_value=asm_getToken(context);while(!is_directive(asm_getToken(context))&&!is_end_of_file(context)){var label_found=false;var ret1=get_inm_value(possible_value);var number=ret1.number;if(ret1.isDecimal==false&&ret1.isFloat==false){if(".word"!==possible_datatype){return asm_langError(context,i18n_get_TagFor("compiler","NO NUMERIC DATATYPE")+"'"+possible_value+"'")}if(!isValidTag(possible_value)){return asm_langError(context,i18n_get_TagFor("compiler","INVALID TAG FORMAT")+"'"+possible_value+"'")}if(context.firmware[possible_value]){return asm_langError(context,i18n_get_TagFor("compiler","TAG OR INSTRUCTION")+"'"+possible_value+"'")}number=0;label_found=true}if(ret1.isDecimal==true)a=decimal2binary(number,size*BYTE_LENGTH);else a=float2binary(number,size*BYTE_LENGTH);num_bits=a[0];free_space=a[1];if(free_space<0){return asm_langError(context,i18n_get_TagFor("compiler","EXPECTED VALUE")+possible_datatype+"' ("+size*BYTE_LENGTH+" bits), "+i18n_get_TagFor("compiler","BUT INSERTED")+possible_value+"' ("+num_bits.length+" bits) "+i18n_get_TagFor("compiler","INSTEAD"))}writememory_and_reset(ret.mp,gen,1);while((gen.seg_ptr+gen.byteWord)%size!=0){gen.byteWord++;writememory_and_reset(ret.mp,gen,1)}if(""!=possible_tag){ret.labels2[possible_tag.substring(0,possible_tag.length-1)]="0x"+(gen.seg_ptr+gen.byteWord).toString(16);possible_tag=""}if(label_found){ret.labels["0x"+gen.seg_ptr.toString(16)]={name:possible_value,addr:gen.seg_ptr,startbit:31,stopbit:0,rel:undefined,nwords:1,labelContext:asm_getLabelContext(context)}}gen.machineCode=assembly_replacement(gen.machineCode,num_bits,BYTE_LENGTH*(size+gen.byteWord),BYTE_LENGTH*gen.byteWord,free_space);gen.byteWord+=size;gen.track_source.push(possible_value);asm_nextToken(context);if(","==asm_getToken(context)){asm_nextToken(context)}if(is_directive(asm_getToken(context))||"TAG"==asm_getTokenType(context)||"."==asm_getToken(context)[0]){break}possible_value=asm_getToken(context)}}else if(".space"==possible_datatype||".zero"==possible_datatype){asm_nextToken(context);var possible_value=asm_getToken(context);var ret1=isDecimal(possible_value);possible_value=ret1.number;if(ret1.isDecimal==false){return asm_langError(context,i18n_get_TagFor("compiler","NO NUMBER OF BYTES")+"'"+possible_value+"'")}if(possible_value<0){return asm_langError(context,i18n_get_TagFor("compiler","NO POSITIVE NUMBER")+"'"+possible_value+"'")}for(i=0;i=0){return asm_langError(context,i18n_get_TagFor("compiler","INVALID ALIGN VALUE")+"'"+possible_value+"'. "+i18n_get_TagFor("compiler","REMEMBER ALIGN VAL"))}writememory_and_reset(ret.mp,gen,1);var align_offset=Math.pow(2,parseInt(possible_value));switch(align_offset){case 1:break;case 2:if(gen.byteWord&1==1)gen.byteWord++;break;default:writememory_and_reset(ret.mp,gen,1);while(gen.seg_ptr%align_offset!=0||gen.byteWord!=0){gen.byteWord++;writememory_and_reset(ret.mp,gen,1)}}asm_nextToken(context)}else if(".ascii"==possible_datatype||".asciiz"==possible_datatype||".string"==possible_datatype){asm_nextToken(context);var possible_value=asm_getToken(context);var ret1=treatControlSequences(possible_value);if(true==ret1.error){return asm_langError(context,ret1.string)}possible_value=ret1.string;while(!is_directive(asm_getToken(context))&&!is_end_of_file(context)){writememory_and_reset(ret.mp,gen,1);if('"'!==possible_value[0]){return asm_langError(context,i18n_get_TagFor("compiler","NO QUOTATION MARKS")+"'"+possible_value+"'")}if('"'!==possible_value[possible_value.length-1]){return asm_langError(context,i18n_get_TagFor("compiler","NOT CLOSED STRING"))}if(""==possible_value){return asm_langError(context,i18n_get_TagFor("compiler","NOT CLOSED STRING"))}if("STRING"!=asm_getTokenType(context)){return asm_langError(context,i18n_get_TagFor("compiler","NO QUOTATION MARKS")+"'"+possible_value+"'")}for(i=0;i0){var melto={value:gen.machineCode,source_tracking:gen.track_source,comments:gen.comments};main_memory_set(ret.mp,"0x"+gen.seg_ptr.toString(16),melto);gen.seg_ptr=gen.seg_ptr+WORD_BYTES}ret.seg[seg_name].end=gen.seg_ptr}function read_text(context,datosCU,ret){var seg_name=asm_getToken(context);var seg_ptr=ret.seg[seg_name].begin;var firmware=context.firmware;var pseudoInstructions=context.pseudoInstructions;var finish=[];var isPseudo=false;var pfinish=[];var npseudoInstructions=0;var pseudo_fields={};var counter=-1;var candidate;var error="";var registers={};for(i=0;i=signature_fields[j].length){if("TAG"!=asm_getTokenType(context)&&!firmware[value]&&!is_end_of_file(context)){advance[j]=0}continue}var field=firmware[instruction][j].fields[i];var size=field.startbit-field.stopbit+1;var label_found=false;var sel_found=false;switch(field.type){case"address":case"inm":if(isPseudo&&"sel"==value){counter++;var start=pfinish[counter++];var stop=pfinish[counter++];var value=pseudo_fields[pfinish[counter++]];counter++;sel_found=true}var ret1=get_inm_value(value);converted=ret1.number;if(ret1.isDecimal==false&&ret1.isFloat==false){error=i18n_get_TagFor("compiler","NO NUMERIC DATATYPE")+"'"+value+"'";if(value[0]=="'"){advance[j]=0;break}if(!isValidTag(value)){advance[j]=0;break}if(firmware[value]){error=i18n_get_TagFor("compiler","TAG OR INSTRUCTION")+"'"+value+"'";advance[j]=0;break}label_found=true}if(sel_found){if(ret1.isDecimal==true)res=decimal2binary(converted,WORD_LENGTH);else res=float2binary(converted,WORD_LENGTH);if(res[1]<0){return asm_langError(context,"'"+value+"' "+i18n_get_TagFor("compiler","BIGGER THAN")+WORD_LENGTH+" "+i18n_get_TagFor("compiler","BITS"))}if(label_found){s[i+1]=value}else{converted="0".repeat(res[1])+res[0];converted=converted.substring(WORD_LENGTH-start-1,WORD_LENGTH-stop);converted=parseInt(converted,2);s[i+1]="0x"+converted.toString(16)}}if(!label_found){if(ret1.isDecimal==true)var res=decimal2binary(converted,size);else var res=float2binary(converted,size);if(field.type=="address"&&"rel"==field.address_type){res=decimal2binary(converted,size)}}break;case"reg":if(typeof value==="undefined"){error=i18n_get_TagFor("compiler","INS. MISSING FIELD");advance[j]=0;break}var aux=false;if(value.startsWith("(")){if("(reg)"!=signature_fields[j][i]){error=i18n_get_TagFor("compiler","UNEXPECTED (REG)");advance[j]=0;break}if(counter==-1){asm_nextToken(context);value=asm_getToken(context)}else{value=pseudo_fields[pfinish[counter++]]}aux=true}else{if("(reg)"==signature_fields[j][i]){error=i18n_get_TagFor("compiler","EXPECTED (REG)")+"'"+value+"'";advance[j]=0;break}}if(typeof registers[value]==="undefined"){error=i18n_get_TagFor("compiler","EXPECTED REG")+"'"+value+"'";advance[j]=0;break}if(aux){s[i+1]="("+value+")";if(counter==-1){asm_nextToken(context);aux=asm_getToken(context)}else{aux=pfinish[counter++]}if(")"!=aux){error=i18n_get_TagFor("compiler","CLOSE PAREN. NOT FOUND");advance[j]=0;break}}var ret1=isDecimal(registers[value]);converted=ret1.number;var res=decimal2binary(converted,size);value=s[i+1];break;default:return asm_langError(context,i18n_get_TagFor("compiler","UNKNOWN 1")+"'"+field.type+"'")}if(advance[j]==1&&!label_found){if(res[1]<0){if(field.type=="address"&&"rel"==field.address_type){error="Relative value ("+(converted-seg_ptr-WORD_BYTES)+" in decimal)"+i18n_get_TagFor("compiler","NEEDS")+res[0].length+i18n_get_TagFor("compiler","SPACE FOR # BITS")+size+" "+i18n_get_TagFor("compiler","BITS")}else{error="'"+value+"'"+i18n_get_TagFor("compiler","NEEDS")+res[0].length+i18n_get_TagFor("compiler","SPACE FOR # BITS")+size+" "+i18n_get_TagFor("compiler","BITS")}advance[j]=0}}if(advance[j]==1&&!(isPseudo&&counter==-1)){binaryAux[j][i]={num_bits:label_found?false:res[0],free_space:label_found?false:res[1],startbit:field.startbit,stopbit:field.stopbit,rel:label_found?field.address_type:false,islabel:label_found,field_name:value,issel:sel_found,sel_start:start,sel_stop:stop}}}if(sum_array(advance)==0){break}if("TAG"==asm_getTokenType(context)||firmware[value]){break}}for(i=0;i0&&i0&&i==firmware[instruction].length-1){format+=" or "}format+="'"+firmware[instruction][i].signatureUser+"'"}if(format==""){format="'"+instruction+"' "+i18n_get_TagFor("compiler","UNKNOWN MC FORMAT")}var sum_res=sum_array(advance);if(sum_res==0){if(advance.length===1){return asm_langError(context,error+". "+i18n_get_TagFor("compiler","REMEMBER I. FORMAT")+format)}return asm_langError(context,i18n_get_TagFor("compiler","NOT MATCH MICRO")+" "+i18n_get_TagFor("compiler","REMEMBER I. FORMAT")+format+". "+i18n_get_TagFor("compiler","CHECK MICROCODE"))}if(sum_res>1){candidate=get_candidate(advance,firmware[instruction]);if(candidate===false){return asm_langError(context,i18n_get_TagFor("compiler","SEVERAL CANDIDATES")+format)}}if(isPseudo){if(counter==-1){var s_ori=s.join(" ");s_ori=s_ori.trim();var key="";var val="";pseudo_fields={};for(i=0;i1){s_ori=" "}if(pfinish[counter]=="\n"){counter++}}var machineCode=reset_assembly(firmware[instruction][candidate].nwords);machineCode=assembly_co_cop(machineCode,firmware[instruction][candidate].co,firmware[instruction][candidate].cop);var l_addr="";for(i=0;i=0;i--){if(icontext.text.length){break}}ret.seg[seg_name].end=seg_ptr}function simlang_compile_v1(text,datosCU){var context={};context.line=1;context.error=null;context.i=0;context.contadorMC=0;context.etiquetas={};context.labelsNotFound=[];context.instrucciones=[];context.co_cop={};context.registers=[];context.text=text;context.tokens=[];context.token_types=[];context.t=0;context.newlines=[];context.pseudoInstructions=[];context.stackRegister=null;context.firmware={};context.comments=[];for(i=0;i=0;j--){var melto={value:machineCode.substring(j*WORD_LENGTH,(j+1)*WORD_LENGTH),source_tracking:null,comments:null};main_memory_set(ret.mp,"0x"+auxAddr.toString(16),melto);auxAddr+=WORD_BYTES}}if(text_found){if(typeof ret.labels2["main"]==="undefined"&&typeof ret.labels2["kmain"]==="undefined"){return asm_langError(context,i18n_get_TagFor("compiler","NO MAIN OR KMAIN"))}}for(var key in ret.labels2){ret.revlabels2[ret.labels2[key]]=key}for(var skey in ret.seg){ret.revseg.push({begin:parseInt(ret.seg[skey].begin),name:skey})}return ret}function simlang_compile(text,datosCU){return simlang_compile_v1(text,datosCU)}var i18n={lang:{en:"English",es:"Español",it:"L'italiano - Google-translate",kr:"한국어 - Google-translate",hi:"हिन्दी - Google-translate",fr:"Français - Google-translate",pt:"Português - Google-translate",ja:"日本語 - Google-translate",zh_cn:"汉语 - Thanks to shiptux@github",ru:"русский язык - Google-translate",sv:"Svenska - Google-translate",de:"Deutsch - Google-translate"},eltos:{gui:{},cfg:{},examples:{},states:{},help:{},dialogs:{},compiler:{},hw:{},tutorial_welcome:{},tutorial_simpleusage:{},tour_intro:{}}};function i18n_init(){for(var l in i18n.lang){for(var e in i18n.eltos){i18n.eltos[e][l]={}}}return true}i18n_init();function i18n_update_tags(component){var ws_idiom=get_cfg("ws_idiom");i18n_update_tagsFor(component,ws_idiom)}function i18n_update_tagsFor(component,lang){if(typeof i18n.eltos[component]=="undefined"){return}var tags=document.querySelectorAll("span");Array.from(tags).forEach((function(value,index){var key=value.dataset.langkey;if(i18n.eltos[component][lang][key]){value.innerHTML=i18n.eltos[component][lang][key]}}))}function i18n_get(component,lang,key){if(typeof i18n.eltos[component]==="undefined"){return key}var translation=i18n.eltos[component][lang][key];if(typeof translation==="undefined"){return key}return translation}function i18n_get_TagFor(component,key){var ws_idiom;try{ws_idiom=get_cfg("ws_idiom")}catch(e){ws_idiom="en"}var translation=key+" ";if(typeof i18n.eltos[component][ws_idiom][key]!=="undefined"){translation=i18n.eltos[component][ws_idiom][key]}return translation}function i18n_get_select(div_name,str_onchange){var curr_val=get_cfg("ws_idiom");var o=" ";for(var l in i18n.lang){if(curr_val==l)o+="\t"+i18n.lang[l]+" ";else o+="\t"+i18n.lang[l]+" "}o+=" ";return o}function i18n_get_selectcfg(){var o=" ";for(var l in i18n.lang){o+="\t"+i18n.lang[l]+" "}o+=" ";return o}function i18n_get_welcome(){var o='";return o}i18n.eltos.gui.es={"Loading WepSIM...":"Cargando WepSIM...",About:"Sobre",Configuration:"Configuración",MicroCode:"MicroCódigo",Assembly:"Ensamblador",Simulator:"Simulador",Examples:"Ejemplos",Load:"Cargar",Save:"Guardar","Load/Save":"Cargar/Guardar",Restore:"Restaurar",Help:"Ayuda",Notifications:"Notificaciones",RecordBar:"Grabación",Input:"Entrada",Output:"Salida",Reload:"Reload",Checkpoint:"Checkpoint","Help Index":"Índice ayuda",Processor:"Procesador","Assembly Debugger":"Depurador de Ensamblador",Reset:"Reiniciar",microInstruction:"µInstrucción",Instruction:"Instrucción",Run:"Ejecutar","Hardware Summary":"Hardware Resumido",processor:"procesador",details:"detalles",microcode:"microcódigo",Signals:"Señales",Behaviors:"Comportamientos",States:"Estados","Control States":"Estados de Control",Dependencies:"Dependencias",Close:"Cerrar",Description:"Descripción",Show:"Mostrar","Show Main Memory":"Mostrar Memoria Principal",compile:"compilar",Compile:"Compilar","Please write the file name":"Por favor indique el nombre de fichero","Load from this File":"Cargar de este fichero",labels:"etiquetas",addr:"dir",ess:"ección",content:"contenido",assembly:"ensamblador",instructions:"instrucciones","simulator intro 1":"Puede seleccionar el hardware que se utilizará. El predeterminado es el hardware EP (Elemental Processor). Puede usar el selector de modo para cambiar el hardware utilizado","simulator intro 2":"A continuación necesita cargar el microcódigo (define el conjunto de instrucciones) y el código de ensamblador. Puede usar un ejemplo , cargarlo desde un archivo , o puede editar un nuevo microcódigo y un nuevo código de ensamblador .","simulator intro 3":"Finalmente, en el simulador puede ejecutar el microcódigo más el ensamblador cargado antes. Puede ejecutar ambos, en el nivel de microinstrucción o en el nivel de instrucción de ensamblador.","Prev.":"Anterior",Next:"Siguiente",End:"Fin","Disable tutorial mode":"Deshabilitar modo tutorial",Comment:"Comentar",Pause:"Pausar",Play:"Reproducir",Stop:"Parar",Record:"Grabar",Registers:"Registros","Control Memory":"Memoria de Control",Stats:"Estadísticas",Memory:"Memoria","Keyboard+Display":"Teclado+Pantalla","I/O Stats":"E/S Estadísticas","I/O Configuration":"E/S Configuración",Recent:"Reciente",Refresh:"Refrescar",Welcome:"Bienvenido+a","Microcode & Assembly":"WepSIM hardware","Pick firm/soft":"Firm/soft desde",Information:"Información",Native:"Nativo","MIPS32-like":"Basado en MIPS32",RISCV32:"RISCV32","Z80-like":"Basado en Z80",Actions:"Acciones",Utilities:"Utilidades","Information from":"Información de","Pick firm/soft from":"Cargar firm/soft desde","Welcome tutorial":"Tutorial de bienvenida","Assembly only":"Solo ensamblador","Micro & Assembly":"Micro y ensamblador",idiom:"idioma","quick config":"configuración rápida","Graph: quick interactive mode":"Gráfico: modo interactivo",_last_:"_last_"};i18n.eltos.tutorial_welcome.es={title_0:"¡Bienvenidos al simulador WepSIM!",message_0:" "+""+"
",title_1:"Cómo cargar algunos ejemplos.",message_1:" "+""+"
"+"Haga click en el botón de 'examples' y haga click en el 'título' del ejemplo que desea cargar."+" "+" ",title_2:"Cómo cargar algunos ejemplos.",message_2:" "+""+"
"+"Haga click en next instruction/microinstruction para ejecutar paso a paso. "+"Haga click en run para ejecutar hasta el primer punto de ruptura o el fin del programa en ensamblador."+" "+" ",title_3:"Cómo configurar WepSIM.",message_3:" "+""+"
"+"Haga click en el botón de configuración para configurar diversos aspectos de WepSIM para su comididad."+" "+" ",title_4:"Cómo conseguir la ayuda básica.",message_4:" "+""+"
"+"Haga click en el botón verde de ayuda 'help'. "+"Puede obtener la ayuda en Spanish/English, ir al índice de la ayuda o cerrar la pantalla de ayuda."+" "+" ",title_5:"¡Bienvenido a WepSIM!",message_5:" "+""+"
"+"Por favor explorer las secciones de la ayuda para más información. "+"Si hace click en el botón 'end' del tutorial entonces WepSIM cargará el primer ejemplo por usted. ¡Diviertase aprendiendo!"+" "+" "};i18n.eltos.tutorial_simpleusage.es={title_0:"WepSIM: microprogramar, ensamblar y simular",message_0:" "+""+"
",title_1:"WepSIM: microprogramar, ensamblar y simular",message_1:" "+""+"
"+"El primer paso es microprogramar el firmware a ser usado. "+"Por favor use el botón de 'Microcode' para ir a la pantalla de trabajo del microcódigo."+" ",title_2:"WepSIM: microprogramar, ensamblar y simular",message_2:" "+""+"
"+"La pantalla de microprogramación ofrece:"+""+"El editor de microcródigo. "+"El microcompilador. "+"El resumen del hardware y la ayuda. "+" "+"Una vez que el microcódigo esté listo (editado y compile sin errores) el siguiente paso el el código ensamblador."+" ",title_3:"WepSIM: microprogramar, ensamblar y simular",message_3:" "+""+"
"+"El segundo paso es programar el ensamblador a ser ejecutado. "+"Por favor use el botón de 'Assembly' para ir a la pantalla de ensamblador."+" ",title_4:"WepSIM: microprogramar, ensamblar y simular",message_4:" "+""+"
"+"La pantalla de programación en ensamblador ofrece:"+""+"El editor para el código ensamblador. "+"El compilador de ensamblador. "+"El visualizador de mapa de memoria y ayuda. "+" "+"Asegure antes de ir a la pantalla del simulador que su código este listo (editado y compilado sin errores)."+" ",title_5:"WepSIM: microprogramar, ensamblar y simular",message_5:" "+""+"
"+"El tercer paso es ejecutar el código ensamblador en el ensamblador. "+"La pantalla de simulación ofrece:"+""+"Las vista de ensamblador y hardware. "+"Los detalles de registros, memoria de control, memoria principal, etc. "+"Las acciones de reinicio, ejecución paso a paso o hasta punto de ruptura (o fin). "+" "+"Este tutorial ha introducido el uso típico de WepSIM para estudiantes y profesores. ¡Disfrute con WepSIM!."+" "};i18n.eltos.tour_intro.es={step1:"WepSIM ayudará a entender mejor cómo funciona un computador: "+"es visual, interactivo, integra interrupciones, llamadas al sistema, etc. "+" "+"Nosotros realmente creemos que WepSIM es una herramienta revolucionaria. "+"Este breve tour le muestra las partes clave de la interfaz de WepSIM.",step2:"En la esquina superior derecha está el selector de 'modo de ejecución'. "+" "+"Los usuarios pueden seleccionar:"+""+"El hardware con el que trabajar (ejemplo: procesador EP, POC, etc.) "+"El modo solo ensamblador, con instrucciones MIPS32 de enteros o RISC-V32 "+" ",step3:"En la esquina superior derecha el botón de ayuda abre el panel de ayuda asociado. "+" "+"El cuadro de diálogo permite el acceso a tutoriales, información, etc.",step4:"En la esquina superior izquierda, el botón de 'ejemplos' abre el panel asociado. "+" "+"Hay muchos ejemplos muy útiles para el aprendizaje incremental.",step5:"En la esquina superior izquierda está el botón de configuracion que abre el cuadro de diálogo de la configuración. "+" "+"Con la configuracióón se puede adaptar distintos aspectos de ejecución, interfaz de usuario/a, preferencias, etc.",step6:"¡Felicidades!. Ya conoce las partes clave de la interfaz de WepSIM. "+"Desde el panel de 'Ayuda' puede acceder al 'Tutorial de bienvenida'. para continuar aprendiendo. "};i18n.eltos.cfg.es={General:"General","Idiom for help, examples, etc.":"Idioma para ayuda, ejemplos, etc.","Notification speed: time before disapear":"Velocidad en notificaciones: tiempo en desaparecer","Dark Mode":"Modo oscuro",Editor:"Editor","Editor theme: light or dark":"Tema de editor: claro u oscuro",Light:"Claro",Dark:"Oscuro","Editor mode: vim, emacs, etc.":"Modo de edición: vim, emacs, etc.",Execution:"Ejecución","Running speed: execution speed":"Velocidad de ejecución",Slow:"Lento",Normal:"Normal",Fast:"Veloz","Step-by-step: element in run mode":"Paso-a-paso: elemento a ejecutar de uno a uno",Instructions:"Instrucciones",Instruction:"Instrucción","µinstructions":"µinstrucciones",microInstruction:"µInstrucción","Breakpoint icon: icon to be used for breakpoints":"Icono a ser usado en puntos de ruptura","Limit instructions: number of instructions to be executed":"Límite instrucciones: número de instrucciones a ser ejecutadas","Limit instruction ticks: to limit clock ticks":"Límite ticks: limitación de ticks de reloj por instrucción","Register file":"Banco de registros","Display format":"Formato de presentación","Register file names":"Nombre de los registros",Numbers:"Números",Labels:"Etiquetas","Editable registers: edit register file values":"Registros editables: editar los valores de los registros","Circuitry simulation":"Circuitería","Data-path color":"Color del camino de datos","Signal color":"Color de las señales activas","Show by value or by activation":"Mostrar por valor o por activación",Value:"Valor",Activation:"Activación","Interactive mode: signal value can be updated":"Modo interactivo: valores de las señales puede actualizarse","Quick interactive mode: quick update of signal value":"Modo interactivo-rápido: actualización rápida de valores de señales","(example)":"(ejemplo)",Accesibility:"Accesibilidad","Beginner view":"Vista principiante","Auto-scroll while executing":"Auto-scroll mientras en ejecución","Active voice: external voice control":"Activar voz: control por voz (externo)","Verbalization: textual or mathematical":"Tipo de verbalizar: texto o matemática","WepSIM User Interface views":"Vistas de la Interfaz de Usuarios+as",Privacy:"Privacidad",On:"On",Off:"Off",_last_:"_last_"};i18n.eltos.help.es={"Welcome tutorial":"Tutorial de bienvenida",help_01_01:"Abre el tutorial de bienvenida","Simple usage tutorial":"Tutorial simple de uso",help_01_02:"Tutorial de uso simple, ejemplo básico para microprogramar y programar en ensamblador","Execute example":"Ejecución de ejemplo",help_01_03:"Reproduce el tutorial de ejecución de ejemplo","Simulator: firmware":"Simulador: microcódigo",help_02_01:"Descripción de cómo trabajar en el simulador con el microcódigo","Microcode format":"Formato del microcódigo",help_02_02:"Sintáxis del microcódigo usado","Simulator: assembly":"Simulador: ensamblador",help_02_03:"Descripción de cómo trabajar en el simulador con el ensamblador","Assembly format":"Formato del ensamblador",help_02_04:"Sintáxis del ensamblador","Simulator: execution":"Simulador: ejecución",help_02_05:"Descripción de cómo ejecutar en el simulador el ensamblador y microcódigo","Simulated architecture":"Arquitectura del simulador",help_03_01:"Descripción de la arquitectura del procesador simulado","Simulated signals":"Señales simuladas",help_03_02:"Resumen de las señales principales del procesador elemental","Hardware summary":"Resumen del Hardware",help_03_03:"Resumen del hardware del procesador elemental simulado","License, platforms, etc.":"Licencia, plataformas, etc.",help_04_01:"Licencia de WepSIM, plataformas disponibles, tecnologías usadas",Authors:"Autores",help_04_02:"Autores de WepSIM"};i18n.eltos.states.es={States:"Estados",state:"estado",Current:"Actual","Current State":"Estado Actual",History:"Historia",None:"Ninguno","Empty history":"Historia vacía","Empty (only modified values are shown)":"Vacío (solo se muestra los valores modificados)",Differences:"Diferencias","differences with clipboard state":"diferencias con estado en portapapeles","Meets the specified requirements":"Iguales (cumple los requisitos)",history:"historial",Add:"Añadir","'Current State' to History":"'Estado Actual' al historial",Check:"Comprobar",Copy:"Copiar","to clipboard":"al portapapeles",Checkpoint:"Checkpoint","File name":"Nombre de fichero","Tag for checkpoint":"Etiqueta para checkpoint","File to be loaded":"Fichero a cargar","Save to File":"Guardar a fichero","State(s) to checkpoint":"Estados para checkpoint","Record to checkpoint":"Grabación para checkpoint","Browser cache":"Cache navegador","Session to be restore":"Sesión a restaurar",_last_:"_last_"};i18n.eltos.examples.es={"addv + seqv.":"addv + seqv.","Alloc.s":"Alloc.s","Dummy instruction":"Instrucción vacía",Exception:"Excepción",Instructions:"Instrucciones",Interruptions:"Interrupciones","Int. + syscall + except.":"Int. + syscall + excep.","I/O":"E/S",Looping:"Blucles","madd, mmul, mxch":"madd, mmul, mxch","Masks & shift":"Máscaras y desplazamientos",Matrix:"Matriz","Memory access":"Acceso a memoria","SC 1, 4-5, 8, 11-12":"SC 1, 4-5, 8, 11-12",Subrutine:"Subrutina","syscall 1, 4-5, 8, 11-12":"syscall 1, 4-5, 8, 11-12","System call":"Llamada a systema",Threads:"Hilos",Vector:"Vector","Compiler Explorer":"Compiler Explorer",Instructive:"Instructivo ",example_04_01:"Ejemplo avanzado con interrupciones, llamada al sistema y excepciones.",example_05_01:"Extensiones Específicas de Aplicación: addv + seqv.",example_05_03:"Extensiones Específicas de Aplicación: madd + mmul + mxch.",example_03_01:"Ejemplo con excepción de coma flotante.",example_03_02:"Ejemplo con interrupciones: fetch, RETI y .ktext/.kdata.",example_03_03:"Ejemplo con llamada al sistema.",example_03_04:"Ejemplo con convenio simple de pila.",example_04_04:"Examplo de malloc + free.",example_04_02:"Examplo de llamada a sistema para imprimir/leer enteros y string.",example_04_03:"Examplo de hilos.",example_03_01b:"Examplo con excepción de coma flotante.",example_03_02b:"Examplo con interrupciones: fetch, RETI y .ktext/.kdata.",example_02_01:"Examplo con acceso con E/S programada y segmento de .text/.data básico.",example_03_03b:"Examplo con llamada a sistema.",example_02_02:"Ejemplo extendido con más instrucciones y E/S (teclado y pantalla).",example_02_04:"Ejemplo extendido con subrutina y matriz.",example_02_03:"Ejemplo extendido con máscaras, desplazamiento y segmentos básicos.",example_01_01:"Ejemplo simple con fetch, instrucciones artiméticas y segmentos básicos.",example_01_04:"Ejemplo simple con fetch, salto y segmento básico de .text/.data.",example_01_03:"Ejemplo simple con fetch, salto y segmento básico de .text.",example_01_02:"Ejemplo simple con fetch, acceso a memoria, y segmento básico de .text/.data.",example_06_01:"Ejemplo de prueba.",example_06_02:"Ejemplo simple con Compiler Explorer.",Advanced:"Avanzado",Initial:"Inicial",Intermediate:"Intermedio",Laboratory:"Laboratorio","Operating Systems":"Sistemas Operativos",Extra:"Bonus",Special:"Especial","Load example":"Cargar ejemplo","Load Assembly only":"Cargar Ensamblador solo","Load Firmware only":"Cargar Firmware solo","Copy reference to clipboard":"Copiar referencia al portapapeles",Share:"Compartir","No examples available...":"No examples are available for the selected hardware","Simple example":"Ejemplo simple."};i18n.eltos.compiler.es={"PROBLEM AROUND LINE":"Problema entorno a la línea","NO TAG OR DIRECTIVE":"No es una etiqueta (ej.: tag1:) o directiva (ej.: .data) válida, se encontró: ","NO TAG, DIR OR INS":"No es una etiqueta (ej.: tag1:) directiva (ej.: .data) o instrucción válida, se encontró: ","INVALID TAG FORMAT":"Una etiqueta debe seguir un formato alfanumérico (comenzando con una letra o un guión bajo): ","TAG OR INSTRUCTION":"Una etiqueta no puede tener el mismo nombre que una instrucción: ","REPEATED TAG":"Etiqueta repetida: ","NO NUMERIC DATATYPE":"Se esperaba un valor para el tipo de datos numéricos, pero se encontró: ","NO POSITIVE NUMBER":"Se esperaba un número positivo, pero se encontró: ","NO NUMBER OF BYTES":"Se esperaba un número natural para los bytes a reservar en .space, pero se encontró: ","INVALID ALIGN VALUE":"Se esperaba que el parámetro align sea un número positivo, pero se encontró: ","REMEMBER ALIGN VAL":"Recuerde que el número para .align será una potencia de dos, consulte la documentación de MIPS","NOT CLOSED STRING":"La cadena de caracteres no está cerrada (posiblemente se olvidó de terminar con comillas)","NO QUOTATION MARKS":"Cadena prevista entre comillas, pero encontrado: ","UNEXPECTED DATATYPE":"Inesperada nombre de tipo de datos: ","INVALID SEGMENT NAME":"Se espera un segmento .data/.text/..., pero se encontró: ","NO MAIN OR KMAIN":"Tags 'main' o 'kmain' no están definidos en el segmento de texto (s). Es obligatorio para definir al menos una de esas etiquetas con el fin de ejecutar un programa","UNKNOWN 1":"Se produjo un error desconocido (1)","UNKNOWN 2":"Error inesperado (2)","REMEMBER I. FORMAT":"Recuerde que el formato de instrucción se ha definido como: ","SEVERAL CANDIDATES":"Instrucción y campos coincide con más de una instrucción posible. Por favor, compruebe el microcódigo. En la actualidad, el formato de la instrucción puede ser: ","NOT MATCH MICRO":"Instrucción y campos no coinciden con el formato de instrucción definido","CHECK MICROCODE":"Por favor, compruebe el microcódigo. Probablemente se olvidó de agregar un campo, un número no encaja en su rango, o simplemente usa una instrucción equivocada","LABEL NOT DEFINED":"Label used but not defined in the assembly code: ","INS. MISSING FIELD":"Falta un campo en la instrucción","UNEXPECTED (REG)":"Se esperaba un registro pero se encontró un registro entre paréntesis.","EXPECTED (REG)":"Registro esperado entre paréntesis, pero se encontró: ","EXPECTED REG":"Se esperaba un registro (e.g.: $1/$a0/...) pero se encontró: ","UNKNOWN ESCAPE CHAR":"Secuencia de escape desconocida","SPACE FOR # BITS":" bits en binario pero hay espacio para solo ",NEEDS:" necesita ","UNKNOWN MC FORMAT":"(unknown format in microcode)","LABEL NOT FOUND":"Esperada ':' no encontrada, se encontró: ","REPEATED LABEL":"Etiqueta repetida: ","INVALID LABEL FORMAT":"Formato de etiqueta no válido para: ","OPEN BRACE NOT FOUND":"Esperado '{' no encontrado","CLOSE BRACE NOT FOUND":"Esperado '}' no encontrado","OPEN PAREN. NOT FOUND":"Esperado '(' no encontrado","CLOSE PAREN. NOT FOUND":"Esperado ')' no encontrado","COMMA NOT FOUND":"Esperado ',' no encontrado","EQUAL NOT FOUND":"Esperado '=' no encontrado","SIGNAL NOT EXISTS":"Señal no existente: ","SIGNAL NO DIRECTLY":" no puede usarse directamente, por favor use las señales de la Unidad de Control en su lugar para generarlas.","INCORRECT BIN. FORMAT":"Formato binario incorrecto: ","OUT OF RANGE":"Valor fuera de rango: ","EMPTY MICROCODE":"No hay microcódigo","EMPTY NAME LIST":"Lista vacía de nombres asociada al registro: x=[]","DUPLICATE SP":"Definición de puntero de pila duplicada","NO SP":"Esperado token stack_pointer no encontrado","UNDEF. INSTR.":"Instrucción no definida: ","MORE 100 FIELDS":"Más de 100 campos en una sola instrucción.","CO AS FIELD NAME":"Campo de instrucción tiene 'co' como nombre.","NW AS FIELD NAME":"Campo de instrucción tiene 'nwords' como nombre.","NO CO FIELD":"Esperada palabra clave 'co' no encontrada","INCORRECT CO BIN.":"Formato binary incorrecto en 'co': ","INCORRECT COP BIN.":"Formato binary incorrecto en 'cop': ","INVALID PARAMETER":"Parámetro invalido: ","ALLOWED PARAMETER":"Solo se permite los siguientes campos: reg, num, inm, addr, address","MISSING TOKEN ON":"'token' no está despues de '(' en: ","MISSING ) ON":"')' no se encuentra en: ","CO ALREADY USED":"'co' ya se está usando por: ","CO+COP ALREADY USED":"'co+cop' is already been used by: ","NO NWORDS":"Palabra clave 'nwords' esperado no encontrada","INCORRECT ADDRESSING":"Tipo de direccionamiento incorrecto (abs o rel)","UNEXPECTED FIELD":"Encontrado un campo no esperado: ","CHECK ORDER":"Por favor compruebe el orden de los campos","STARTBIT OoR":"startbit fuera de rango: ","STOPBIT OoR":"stopbit fuera de rango: ","OVERLAPPING FIELD":"Campos que se solapan: ","BAD COP BIN. LEN.":"Longitud binaria incorrecta para 'cop': ","SP NOT DEFINED":"Registro puntero de pila no definido","NO LABEL FETCH":"Etiqueta 'fetch' no definida","NO LABEL BEGIN":"'begin' no encontrado","NO CO CODES":"No hay códigos suficientes en 'co' para instrucciones","NO LABEL MADDR":"Etiqueta MADDR no encontrada: ","INS. NAME":"Nombre de instrucción: '","NOT VALID FOR":"' no es válido para: ","BIGGER THAN":"es mayor que ",BITS:" bits","EXPECTED VALUE":"Valor se esperaba que quepa en un '","BUT INSERTED":"pero insertado ",INSTEAD:"en su lugar",_last_:"_last_"};i18n.eltos.hw.es={Component:"Componente",Element:"Elemento","States (In)":"Estados (In)","States (Out)":"Estados (Out)",Signals:"Señales","It has":"Tiene",inputs:"entradas",outputs:"salidas",signals:"señales",Graph:"Gráfico",Text:"Texto","Graph: split view":"Gráfico: vista dividida","Graph: interactive mode":"Gráfico: modo interactivo",name:"nombre",version:"versión",abilities:"habilidad",value:"valor",default_value:"valor por defecto",nbits:"nbit",type:"tipo",visible:"visible","EP:CPU_T1:STATES:IN":"La entrada es el valor del registro MBR","EP:CPU_T1:STATES:OUT":"La salida va al bus interno de datos","EP:CPU_T1:SIGNALS:CTL":"Confirma que el valor de entrad se copia a la salida","EP:CPU_T2:STATES:IN":"La entrada es el valor del registro de PC","EP:CPU_T2:STATES:OUT":"La salida va al bus interno","EP:CPU_T2:SIGNALS:CTL":"Confirmar que el valor de entrada se copia a la salida","EP:CPU_T3:STATES:IN":"La entrada es la salida del selector-IR","EP:CPU_T3:STATES:OUT":"La salida va al bus interno","EP:CPU_T3:SIGNALS:CTL":"Confirmar que el valor de entrada se copia a la salida","EP:CPU_T4:STATES:IN":"La entrada es el valor del registro RT1","EP:CPU_T4:STATES:OUT":"La salida va al bus interno","EP:CPU_T4:SIGNALS:CTL":"Confirmar que el valor de entrada se copia a la salida","EP:CPU_T5:STATES:IN":"La entrada es el valor del registro RT2","EP:CPU_T5:STATES:OUT":"La salida va al bus interno","EP:CPU_T5:SIGNALS:CTL":"Confirmar que el valor de entrada se copia a la salida","EP:CPU_T6:STATES:IN":"La entrada es la salida ALU","EP:CPU_T6:STATES:OUT":"La salida va al bus interno","EP:CPU_T6:SIGNALS:CTL":"Confirmar que el valor de entrada se copia a la salida","EP:CPU_T7:STATES:IN":"La entrada es el valor del registro RT3","EP:CPU_T7:STATES:OUT":"La salida va al bus interno","EP:CPU_T7:SIGNALS:CTL":"Confirmar que el valor de entrada se copia a la salida","EP:CPU_T8:STATES:IN":"La entrada es el valor del registro SR","EP:CPU_T8:STATES:OUT":"La salida va al bus interno","EP:CPU_T8:SIGNALS:CTL":"Confirmar que el valor de entrada se copia a la salida","EP:CPU_T9:STATES:IN":"La entrada es el valor de la salida del puerto A del banco de registros","EP:CPU_T9:STATES:OUT":"La salida va al bus interno","EP:CPU_T9:SIGNALS:CTL":"Confirmar que el valor de entrada se copia a la salida","EP:CPU_T10:STATES:IN":"La entrada es el valor de la salida del puerto B del banco de registros","EP:CPU_T10:STATES:OUT":"La salida va al bus interno","EP:CPU_T10:SIGNALS:CTL":"Confirmar que el valor de entrada se copia a la salida","EP:CPU_T11:STATES:IN":"La entrada es la salida de la microinstrucción/ExCode","EP:CPU_T11:STATES:OUT":"La salida va al bus interno","EP:CPU_T11:SIGNALS:CTL":"Confirmar que el valor de entrada se copia a la salida","EP:CPU_T12:STATES:IN":"La entrada es la salida de Hardware Performance Counter (HPC)","EP:CPU_T12:STATES:OUT":"La salida va al bus interno","EP:CPU_T12:SIGNALS:CTL":"Confirmar que el valor de entrada se copia a la salida","EP:CPU_TA:STATES:IN":"La entrada es la salida del registro MAR","EP:CPU_TA:STATES:OUT":"La salida va al bus de direcciones","EP:CPU_TA:SIGNALS:CTL":"Confirmar que el valor de entrada se copia a la salida","EP:CPU_TB:STATES:IN":"La entrada es la salida del selector de bytes","EP:CPU_TB:STATES:OUT":"La salida va al bus de datos","EP:CPU_TB:SIGNALS:CTL":"Confirmar que el valor de entrada se copia a la salida","EP:CPU_MUX_A:STATES:MUX_0":"Entrada 0 de MUX A, del banco de registros (A)","EP:CPU_MUX_A:STATES:MUX_1":"Entrada 1 de MUX A, del registro RT1","EP:CPU_MUX_A:STATES:MUX_O":"Salida a ALU, operador 0","EP:CPU_MUX_A:SIGNALS:MA":"Seleccione el valor de entrada para enviar a la salida","EP:CPU_MUX_B:STATES:MUX_0":"Entrada 0 de MUX B, del banco de registros (B)","EP:CPU_MUX_B:STATES:MUX_1":"Entrada 1 de MUX B, del registro RT2","EP:CPU_MUX_B:STATES:MUX_2":"Entrada 2 de MUX B, valor 4","EP:CPU_MUX_B:STATES:MUX_3":"Entrada 3 de MUX B, valor 1","EP:CPU_MUX_B:STATES:MUX_O":"Salida a ALU, operador 1","EP:CPU_MUX_B:SIGNALS:MB":"Seleccione el valor de entrada para enviar a la salida","EP:CPU_MUX_1:STATES:MUX_0":"Entrada 0 de MUX 1, desde bus interno","EP:CPU_MUX_1:STATES:MUX_1":"Entrada 1 de MUX 1, del selector de bytes","EP:CPU_MUX_1:STATES:MUX_O":"Salida a MBR, desde MUX 1","EP:CPU_MUX_1:SIGNALS:M1":"Seleccione el valor de entrada para enviar a la salida","EP:CPU_MUX_2:STATES:MUX_0":"Entrada 0 de MUX 2, desde bus interno","EP:CPU_MUX_2:STATES:MUX_1":"Entrada 1 de MUX 2, PC + 4","EP:CPU_MUX_2:STATES:MUX_O":"Salida a PC","EP:CPU_MUX_2:SIGNALS:M2":"Seleccione el valor de entrada para enviar a la salida","EP:CPU_MUX_7:STATES:MUX_0":"Entrada 0 de MUX 7, desde bus interno","EP:CPU_MUX_7:STATES:MUX_1":"Entrada 1 de MUX 7, desde el selector de banderas","EP:CPU_MUX_7:STATES:MUX_O":"Salida para registrar SR","EP:CPU_MUX_7:SIGNALS:M7":"Seleccione el valor de entrada para enviar a la salida","EP:CU_MUX_A:STATES:MUX_0":"Entrada 0 de MUX A, desde microADDR + 1","EP:CU_MUX_A:STATES:MUX_1":"Entrada 1 de MUX A, de co2maddr","EP:CU_MUX_A:STATES:MUX_2":"Entrada 2 de MUX A, desde microIR/MADDR","EP:CU_MUX_A:STATES:MUX_3":"Entrada 3 de MUX A, desde 0","EP:CU_MUX_A:STATES:MUX_O":"Salida a microADDR, desde MUX A","EP:CU_MUX_A:SIGNALS:A0":"mIR/A0","EP:CU_MUX_A:SIGNALS:A1":"Salida de la unidad de control MUX B","EP:CU_MUX_B:STATES:MUX_0":"Entrada 0 de MUX B, desde MUX C","EP:CU_MUX_B:STATES:MUX_1":"Entrada 1 de MUX B, de NOT (MUX C)","EP:CU_MUX_B:STATES:MUX_O":"Salida a MUX A/A1","EP:CU_MUX_B:SIGNALS:MB":"Seleccione el valor de entrada para enviar a la salida","EP:CU_MUX_C:STATES:MUX_0":"Entrada 0 de MUX C, desde 0","EP:CU_MUX_C:STATES:MUX_1":"Entrada 1 de MUX C, desde INT","EP:CU_MUX_C:STATES:MUX_2":"Entrada 2 de MUX C, de IORdy","EP:CU_MUX_C:STATES:MUX_3":"Entrada 3 de MUX C, de MRdy","EP:CU_MUX_C:STATES:MUX_4":"Entrada 4 de MUX C, desde SR/U","EP:CU_MUX_C:STATES:MUX_5":"Entrada 5 de MUX C, desde SR/I","EP:CU_MUX_C:STATES:MUX_6":"Entrada 6 de MUX C, desde SR/Z","EP:CU_MUX_C:STATES:MUX_7":"Entrada 7 de MUX C, desde SR/N","EP:CU_MUX_C:STATES:MUX_8":"Entrada 8 de MUX C, desde SR/V","EP:CU_MUX_C:STATES:MUX_9":"Entrada 9 de MUX C, desde SR/C","EP:CU_MUX_C:STATES:MUX_10":"Entrada 10 de MUX C, desde InEx","EP:CU_MUX_C:STATES:MUX_O":"Salida a MUX B","EP:CU_MUX_C:SIGNALS:CTL":"Salida de la unidad de control MUX C","EP:CU_MUX_RA:STATES:MUX_0":"Entrada 0 de MUX MR, desde IR [SelA + 0 ... SelA + 4]","EP:CU_MUX_RA:STATES:MUX_1":"Entrada 1 de MUX MR, de SelA","EP:CU_MUX_RA:STATES:MUX_O":"Salida a RA","EP:CU_MUX_RA:SIGNALS:CTL":"Seleccione el valor de entrada para enviar a la salida","EP:CU_MUX_RB:STATES:MUX_0":"Entrada 0 de MUX MR, desde IR [SelB + 0 ... SelB + 4]","EP:CU_MUX_RB:STATES:MUX_1":"Entrada 1 de MUX MR, de SelB","EP:CU_MUX_RB:STATES:MUX_O":"Salida a RB","EP:CU_MUX_RB:SIGNALS:MR":"Seleccione el valor de entrada para enviar a la salida","EP:CU_MUX_RC:STATES:MUX_0":"Entrada 0 de MUX MR, desde IR [SelC + 0 ... SelC + 4]","EP:CU_MUX_RC:STATES:MUX_1":"Entrada 1 de MUX MR, de SelC","EP:CU_MUX_RC:STATES:MUX_O":"Salida a RC","EP:CU_MUX_RC:SIGNALS:MR":"Seleccione el valor de entrada para enviar a la salida","EP:CU_MUX_MC:STATES:MUX_0":"Entrada 0 de MUX MC, desde IR3 ... IR0","EP:CU_MUX_MC:STATES:MUX_1":"Entrada 1 de MUX MC, de SelCop","EP:CU_MUX_MC:STATES:MUX_O":"Salida a COP","EP:CU_MUX_MC:SIGNALS:CTL":"Seleccione el valor de entrada para enviar a la salida","EP:CPU_MUX_H:STATES:MUX_0":"Entrada 0 de MUX H, del Hardware Performance Counter","EP:CPU_MUX_H:STATES:MUX_1":"Entrada 1 de MUX H, del Hardware Performance Counter","EP:CPU_MUX_H:STATES:MUX_2":"Entrada 2 de MUX H, del Hardware Performance Counter","EP:CPU_MUX_H:STATES:MUX_3":"Entrada 3 de MUX H, del Hardware Performance Counter","EP:CPU_MUX_H:STATES:MUX_O":"Salida a T12","EP:CPU_MUX_H:SIGNALS:MH":"Seleccione el valor de entrada para enviar a la salida","EP:MAR:STATES:IN":"La entrada es el bus interno","EP:MAR:STATES:OUT":"La salida va al estado Ta","EP:MAR:SIGNALS:C0":"Confirmar que la entrada está almacenada","EP:MBR:STATES:IN":"La entrada es la salida M1","EP:MBR:STATES:OUT":"La salida va al triestado T1","EP:MBR:SIGNALS:C1":"Confirmar que la entrada está almacenada","EP:PC:STATES:IN":"La entrada es la salida M2","EP:PC:STATES:OUT":"La salida va al triestado T2","EP:PC:SIGNALS:CTL":"Confirmar que la entrada está almacenada","EP:IR:STATES:IN":"La entrada es el bus interno","EP:IR:STATES:OUT":"La salida va al selector IR y al CU","EP:IR:SIGNALS:C3":"Confirmar que la entrada está almacenada","EP:RT1:STATES:IN":"La entrada es el bus interno","EP:RT1:STATES:OUT":"La salida va al triestado T4","EP:RT1:SIGNALS:CTL":"Confirmar que la entrada está almacenada","EP:RT2:STATES:IN":"La entrada es el bus interno","EP:RT2:STATES:OUT":"La salida va al triestado T5","EP:RT2:SIGNALS:CTL":"Confirmar que la entrada está almacenada","EP:RT3:STATES:IN":"La entrada es la salida de la ALU","EP:RT3:STATES:OUT":"La salida va al triestado T7","EP:RT3:SIGNALS:CTL":"Confirmar que la entrada está almacenada","EP:SR:STATES:IN":"La entrada es la salida del M7","EP:SR:STATES:OUT":"La salida va a la entrada T8 y la CU","EP:SR:SIGNALS:CTL":"Confirmar que la entrada está almacenada","EP:REGISTER_FILE:STATES:A":"Salida de RF a T9 y MA/0","EP:REGISTER_FILE:STATES:B":"Salida de RF a T10 y MB/0","EP:REGISTER_FILE:STATES:C":"Entrada a RF desde bus interno","EP:REGISTER_FILE:SIGNALS:RA":"Seleccione el registro cuyo valor se envía a A","EP:REGISTER_FILE:SIGNALS:RB":"Seleccione el registro cuyo valor se envía a B","EP:REGISTER_FILE:SIGNALS:RC":"Seleccione el registro donde se almacena el valor de C","EP:REGISTER_FILE:SIGNALS:LC":"Confirme que RC se va a actualizar","EP:CPU_ALU:STATES:A":"Salida del multiplexor MUX A","EP:CPU_ALU:STATES:B":"Salida del multiplexor MUX B","EP:CPU_ALU:STATES:ALU":"El resultado va a la entrada de T6 y RT3","EP:CPU_ALU:STATES:FLAGS":"Banderas C, V, N, Z actualizadas","EP:CPU_ALU:SIGNALS:COP":"Código de operación (+, -, *, ...)","EP:SELECT_SR:STATES:MUX_1":"Entrada 1 de SELECT-SR, bandera U","EP:SELECT_SR:STATES:MUX_2":"Entrada 2 de SELECT-SR, indicador I","EP:SELECT_SR:STATES:MUX_3":"Entrada 3 de SELECT-SR, marca C V N Z","EP:SELECT_SR:STATES:MUX_O":"Salida a MUX 7/1","EP:SELECT_SR:SIGNALS:SELP":"Seleccione el valor de entrada para enviar a la salida","EP:SELECT_IR:STATES:MUX_I":"Entrada de SELECT-IR desde IR","EP:SELECT_IR:STATES:MUX_O":"Salida a bus interno a través de T3","EP:SELECT_IR:SIGNALS:SE":"Extensión de señal","EP:SELECT_IR:SIGNALS:SIZE":"Tamaño","EP:SELECT_IR:SIGNALS:OFFSET":"Offset","EP:BYTE_SELECTOR:STATES:FROM_MBR":"Entrada del registro MBR","EP:BYTE_SELECTOR:STATES:FROM_DATA":"Entrada desde bus de datos","EP:BYTE_SELECTOR:STATES:BE":"Salida a BE","EP:BYTE_SELECTOR:STATES:TO_MBR":"Salida a M1/1","EP:BYTE_SELECTOR:STATES:TO_TD":"Salida a Td/entrada","EP:BYTE_SELECTOR:SIGNALS:W":"Escribir en la memoria principal","EP:BYTE_SELECTOR:SIGNALS:SE":"Extensión de señal","EP:BYTE_SELECTOR:SIGNALS:A1A0":"A1A0","EP:BYTE_SELECTOR:SIGNALS:BW":"Número de bytes para empaquetar","EP:MEMORY:STATES:ADDR":"Bus de direcciones","EP:MEMORY:STATES:DATA":"Bus de datos","EP:MEMORY:STATES:MRDY":"Memoria lista","EP:MEMORY:SIGNALS:BE":"BW + A1A0","EP:MEMORY:SIGNALS:R":"Leer","EP:MEMORY:SIGNALS:W":"Escribir","EP:IO:STATES:ADDR":"Bus de direcciones","EP:IO:STATES:DATA":"Bus de datos","EP:IO:SIGNALS:IOR":"Leer desde dispositivo IO","EP:IO:SIGNALS:IOW":"Escribir en el dispositivo IO","EP:KEYBOARD:STATES:ADDR":"Bus de direcciones","EP:KEYBOARD:STATES:DATA":"Bus de datos","EP:KEYBOARD:SIGNALS:IOR":"Leer desde el teclado","EP:DISPLAY:STATES:ADDR":"Bus de direcciones","EP:DISPLAY:STATES:DATA":"Bus de datos","EP:DISPLAY:SIGNALS:IOR":"Leer de la pantalla (desactivado)","EP:DISPLAY:SIGNALS:IOW":"Escribir en la pantalla","EP:L3D:STATES:ADDR":"Bus de direcciones","EP:L3D:STATES:DATA":"Bus de datos","EP:L3D:SIGNALS:IOR":"Leer desde L3D","EP:L3D:SIGNALS:IOW":"Escribir en L3D","EP:LEDM:STATES:ADDR":"Bus de direcciones","EP:LEDM:STATES:DATA":"Bus de datos","EP:LEDM:SIGNALS:IOR":"Leer desde LEDM","EP:LEDM:SIGNALS:IOW":"Escribir en LEDM","POC:CPU_T1:STATES:IN":"La entrada es el valor del registro MBR","POC:CPU_T1:STATES:OUT":"La salida va al bus interno","POC:CPU_T1:SIGNALS:CTL":"Confirmar que la salida está conectada a la entrada","POC:CPU_T2:STATES:IN":"La entrada es la salida del registro de PC","POC:CPU_T2:STATES:OUT":"La salida va al bus interno","POC:CPU_T2:SIGNALS:CTL":"Confirmar que la salida está conectada a la entrada","POC:CPU_T3:STATES:IN":"La entrada es el selector de salida del registro IR","POC:CPU_T3:STATES:OUT":"La salida va al bus interno","POC:CPU_T3:SIGNALS:CTL":"Confirmar que la salida está conectada a la entrada","POC:CPU_T6:STATES:IN":"La entrada es la salida ALU","POC:CPU_T6:STATES:OUT":"La salida va al bus interno","POC:CPU_T6:SIGNALS:CTL":"Confirmar que la salida está conectada a la entrada","POC:CPU_T8:STATES:IN":"La entrada es la salida del registro SR","POC:CPU_T8:STATES:OUT":"La salida va al bus interno","POC:CPU_T8:SIGNALS:CTL":"Confirmar que la salida está conectada a la entrada","POC:CPU_T9:STATES:IN":"La entrada es la salida en el puerto A del banco de registros","POC:CPU_T9:STATES:OUT":"La salida va al bus interno","POC:CPU_T9:SIGNALS:CTL":"Confirmar que la salida está conectada a la entrada","POC:CPU_T10:STATES:IN":"La entrada es la salida en el puerto B del banco de registros","POC:CPU_T10:STATES:OUT":"La salida va al bus interno","POC:CPU_T10:SIGNALS:CTL":"Confirmar que la salida está conectada a la entrada","POC:CPU_T11:STATES:IN":"La entrada es la salida MIR/ExCode","POC:CPU_T11:STATES:OUT":"La salida va al bus interno","POC:CPU_T11:SIGNALS:CTL":"Confirmar que la salida está conectada a la entrada","POC:CPU_TA:STATES:IN":"La entrada es la salida del registro MAR","POC:CPU_TA:STATES:OUT":"La salida va al bus de direcciones","POC:CPU_TA:SIGNALS:CTL":"Confirmar que la salida está conectada a la entrada","POC:CPU_TB:STATES:IN":"La entrada es la salida del selector de bytes","POC:CPU_TB:STATES:OUT":"La salida va al bus de datos","POC:CPU_TB:SIGNALS:CTL":"Confirmar que la salida está conectada a la entrada","POC:CPU_MUX_A:STATES:MUX_0":"Entrada 0 de MUX A, desde RF/A","POC:CPU_MUX_A:STATES:MUX_1":"Entrada 1 de MUX A, desde bus interno","POC:CPU_MUX_A:STATES:MUX_O":"Salida a ALU/0, desde MUX A","POC:CPU_MUX_A:SIGNALS:MA":"Seleccione el valor de entrada para enviar a la salida","POC:CPU_MUX_B:STATES:MUX_0":"Entrada 0 de MUX B, desde RF/B","POC:CPU_MUX_B:STATES:MUX_1":"Entrada 1 de MUX B, desde PC","POC:CPU_MUX_B:STATES:MUX_O":"Salida a ALU/1, desde MUX B","POC:CPU_MUX_B:SIGNALS:MB":"Seleccione el valor de entrada para enviar a la salida","POC:CPU_MUX_1:STATES:MUX_0":"Entrada 0 de MUX 1, desde bus interno","POC:CPU_MUX_1:STATES:MUX_1":"Entrada 1 de MUX 1, desde bus de datos","POC:CPU_MUX_1:STATES:MUX_O":"Salida a MBR, desde MUX 1","POC:CPU_MUX_1:SIGNALS:M1":"Seleccione el valor de entrada para enviar a la salida","POC:CPU_MUX_7:STATES:MUX_0":"Entrada 0 de MUX 7, desde bus interno","POC:CPU_MUX_7:STATES:MUX_1":"Entrada 1 de MUX 7, del selector de banderas","POC:CPU_MUX_7:STATES:MUX_O":"Salida a SR, desde MUX 7","POC:CPU_MUX_7:SIGNALS:M7":"Seleccione el valor de entrada para enviar a la salida","POC:CU_MUX_A:STATES:MUX_0":"Entrada 0 de MUX A, desde mADDR + 1","POC:CU_MUX_A:STATES:MUX_1":"Entrada 1 de MUX A, de co2maddr","POC:CU_MUX_A:STATES:MUX_2":"Entrada 2 de MUX A, desde mIR/MADDR","POC:CU_MUX_A:STATES:MUX_3":"Entrada 3 de MUX A, desde 0","POC:CU_MUX_A:STATES:MUX_O":"Salida a mADDR, desde MUX A","POC:CU_MUX_A:SIGNALS:A0":"mIR/A0","POC:CU_MUX_A:SIGNALS:A1":"Salida de la unidad de control MUX B","POC:CU_MUX_B:STATES:MUX_0":"Entrada 0 de MUX B, desde MUX C","POC:CU_MUX_B:STATES:MUX_1":"Entrada 1 de MUX B, de NOT (MUX C)","POC:CU_MUX_B:STATES:MUX_O":"Salida a MUX A/A1, desde MUX B","POC:CU_MUX_B:SIGNALS:MB":"Seleccione el valor de entrada para enviar a la salida","POC:CU_MUX_C:STATES:MUX_0":"Entrada 0 de MUX C, desde 0","POC:CU_MUX_C:STATES:MUX_1":"Entrada 1 de MUX C, desde INT","POC:CU_MUX_C:STATES:MUX_2":"Entrada 2 de MUX C, de IORdy","POC:CU_MUX_C:STATES:MUX_3":"Entrada 3 de MUX C, de MRdy","POC:CU_MUX_C:STATES:MUX_4":"Entrada 4 de MUX C, desde SR/U","POC:CU_MUX_C:STATES:MUX_5":"Entrada 5 de MUX C, desde SR/I","POC:CU_MUX_C:STATES:MUX_6":"Entrada 6 de MUX C, desde SR/Z","POC:CU_MUX_C:STATES:MUX_7":"Entrada 7 de MUX C, desde SR/N","POC:CU_MUX_C:STATES:MUX_8":"Entrada 8 de MUX C, desde SR/V","POC:CU_MUX_C:STATES:MUX_9":"Entrada 9 de MUX C, desde SR/C","POC:CU_MUX_C:STATES:MUX_10":"Entrada 10 de MUX C, desde InEx","POC:CU_MUX_C:STATES:MUX_O":"Salida a MUX B","POC:CU_MUX_C:SIGNALS:CTL":"Salida de la unidad de control MUX C","POC:CU_MUX_RA:STATES:MUX_0":"Entrada 0 de MUX MR, desde IR [SelA + 0 ... SelA + 4]","POC:CU_MUX_RA:STATES:MUX_1":"Entrada 1 de MUX MR, de SelA","POC:CU_MUX_RA:STATES:MUX_O":"Salida a RA","POC:CU_MUX_RA:SIGNALS:CTL":"Seleccione el valor de entrada para enviar a la salida","POC:CU_MUX_RB:STATES:MUX_0":"Entrada 0 de MUX MR, desde IR [SelB + 0 ... SelB + 4]","POC:CU_MUX_RB:STATES:MUX_1":"Entrada 1 de MUX MR, de SelB","POC:CU_MUX_RB:STATES:MUX_O":"Salida a RB","POC:CU_MUX_RB:SIGNALS:MR":"Seleccione el valor de entrada para enviar a la salida","POC:CU_MUX_RC:STATES:MUX_0":"Entrada 0 de MUX MR, desde IR [SelC + 0 ... SelC + 4]","POC:CU_MUX_RC:STATES:MUX_1":"Entrada 1 de MUX MR, de SelC","POC:CU_MUX_RC:STATES:MUX_O":"Salida a RC","POC:CU_MUX_RC:SIGNALS:MR":"Seleccione el valor de entrada para enviar a la salida","POC:CU_MUX_MC:STATES:MUX_0":"Entrada 0 de MUX MC, desde IR3 ... IR0","POC:CU_MUX_MC:STATES:MUX_1":"Entrada 1 de MUX MC, de SelCop","POC:CU_MUX_MC:STATES:MUX_O":"Salida a COP","POC:CU_MUX_MC:SIGNALS:CTL":"Seleccione el valor de entrada para enviar a la salida","POC:MAR:STATES:IN":"La entrada es el bus interno","POC:MAR:STATES:OUT":"La salida va al estado Ta","POC:MAR:SIGNALS:C0":"Confirmar que la entrada está almacenada","POC:MBR:STATES:IN":"La entrada es la salida M1","POC:MBR:STATES:OUT":"La salida va al triestado T1","POC:MBR:SIGNALS:C1":"Confirmar que la entrada está almacenada","POC:PC:STATES:IN":"La entrada es el bus interno","POC:PC:STATES:OUT":"La salida va al triestado T2","POC:PC:SIGNALS:CTL":"Confirmar que la entrada está almacenada","POC:IR:STATES:IN":"La entrada es el bus interno","POC:IR:STATES:OUT":"La salida va al selector IR y al CU","POC:IR:SIGNALS:C3":"Confirmar que la entrada está almacenada","POC:RT1:STATES:IN":"La entrada es el bus interno","POC:RT1:STATES:OUT":"La salida va al select-rt1","POC:RT1:SIGNALS:CTL":"Confirmar que la entrada está almacenada","POC:SR:STATES:IN":"La entrada es la salida del M7","POC:SR:STATES:OUT":"La salida va a la entrada T8 y la CU","POC:SR:SIGNALS:CTL":"Confirmar que la entrada está almacenada","POC:REGISTER_FILE:STATES:A":"Salida de RF a T9 y MA/0","POC:REGISTER_FILE:STATES:B":"Salida de RF a T10 y MB/0","POC:REGISTER_FILE:STATES:C":"Entrada a RF desde bus interno","POC:REGISTER_FILE:SIGNALS:RA":"Seleccione el registro cuyo valor se envía a A","POC:REGISTER_FILE:SIGNALS:RB":"Seleccione el registro cuyo valor se envía a B","POC:REGISTER_FILE:SIGNALS:RC":"Seleccione el registro donde se almacena el valor de C","POC:REGISTER_FILE:SIGNALS:LC":"Confirme que RC se va a actualizar","POC:CPU_ALU:STATES:A":"Salida del multiplexor MUX A","POC:CPU_ALU:STATES:B":"Salida del multiplexor MUX B","POC:CPU_ALU:STATES:ALU":"El resultado va a la entrada de T6 y RT3","POC:CPU_ALU:STATES:FLAGS":"Banderas C, V, N, Z actualizadas","POC:CPU_ALU:SIGNALS:COP":"Código de operación (+, -, *, ...)","POC:SELECT_RT1:STATES:MUX_I":"Entrada de SELECT-RT1 desde RT1","POC:SELECT_RT1:STATES:MUX_O":"Salida a bus interno a través de T3","POC:SELECT_RT1:SIGNALS:SE":"Extensión de señal","POC:SELECT_RT1:SIGNALS:SIZE":"Tamaño","POC:SELECT_RT1:SIGNALS:OFFSET":"Desplazamiento","POC:MEMORY:STATES:ADDR":"Bus de direcciones","POC:MEMORY:STATES:DATA":"Bus de datos","POC:MEMORY:STATES:MRDY":"Memoria lista","POC:MEMORY:SIGNALS:BW":"Ancho de bytes","POC:MEMORY:SIGNALS:R":"Leer","POC:MEMORY:SIGNALS:W":"Escribir","POC:IO:STATES:ADDR":"Bus de direcciones","POC:IO:STATES:DATA":"Bus de datos","POC:IO:SIGNALS:IOR":"Leer desde dispositivo IO","POC:IO:SIGNALS:IOW":"Escribir en el dispositivo IO","POC:KEYBOARD:STATES:ADDR":"Bus de direcciones","POC:KEYBOARD:STATES:DATA":"Bus de datos","POC:KEYBOARD:SIGNALS:IOR":"Leer desde el teclado","POC:DISPLAY:STATES:ADDR":"Bus de direcciones","POC:DISPLAY:STATES:DATA":"Bus de datos","POC:DISPLAY:SIGNALS:IOR":"Leer de la pantalla (desactivado)","POC:DISPLAY:SIGNALS:IOW":"Escribir en la pantalla","POC:L3D:STATES:ADDR":"Bus de direcciones","POC:L3D:STATES:DATA":"Bus de datos","POC:L3D:SIGNALS:IOR":"Leer desde L3D","POC:L3D:SIGNALS:IOW":"Escribir en L3D",_last_:"_last_"};i18n.eltos.dialogs.es={"Show/Hide ActionBar":"Mostrar/Ocultar barra","Show/Hide Slider":"Mostrar/Ocultar sliders","WepSIM User Interface skin":"Variante de Interfaz de Usuario para WepSIM","Initial intro":"Intro inicial","About WepSIM":"Sobre WepSIM",Title:"Título",Message:"Mensaje",Duration:"Duración","Confirm remove record...":"¿Seguro que quiere borrar la grabación actual?","Close or Reset...":"Por favor haga click en Cerrar para mantener la grabación o en Reiniciar para borrarla.","Sure Control Memory...":"¿Seguro que quiere salvar el contenido actual de la memoria de control en lugar del contenido del editor?.","Show/Hide labels":"Mostrar/Ocultar etiquetas","Show/Hide content":"Mostrar/Ocultar hexadecimal","Show/Hide assembly":"Mostrar/Ocultar ensamblador","Show/Hide pseudo-instructions":"Mostrar/Ocultar pseudo-instrucciones",Close:"Cerrar",details:"detalles",idiom:"idioma",_last_:"_last_"};i18n.eltos.gui.en={"Loading WepSIM...":"Loading WepSIM...",About:"About",Configuration:"Configuration",MicroCode:"MicroCode",Assembly:"Assembly",Simulator:"Simulator",Examples:"Examples",Load:"Load",Save:"Save","Load/Save":"Load/Save",Restore:"Restore",Help:"Help",Notifications:"Notifications",RecordBar:"RecordBar",Input:"Input",Output:"Output",Reload:"Reload",Checkpoint:"Checkpoint","Help Index":"Help Index",Processor:"Processor","Assembly Debugger":"Assembly Debugger",Reset:"Reset",microInstruction:"µInstruction",Instruction:"Instruction",Run:"Run","Hardware Summary":"Hardware Summary",processor:"processor",details:"details",microcode:"microcode",Signals:"Signals",Behaviors:"Behaviors",States:"States","Control States":"Control States",Dependencies:"Dependencies",Close:"Close",Description:"Description",Show:"Show","Show Main Memory":"Show Main Memory",compile:"compile",Compile:"Compile","Please write the file name":"Please write the file name","Load from this File":"Load from this File",labels:"labels",addr:"addr",ess:"ess",content:"content",assembly:"assembly",instructions:"instructions","simulator intro 1":"You can select the hardware to be used. The default one is the EP (Elemental Processor) hardware. "+"You can use the mode selector to change the hardware used.","simulator intro 2":"Then you need to load the microcode (defines the instruction set) and the assembly code. "+"You can use an example , "+"load it from a file , "+"or you can edit a new microcode "+" and a new assembly code .","simulator intro 3":"Finally, in the simulator you are able to execute the microcode plus assembly loaded before. "+"You can execute it both, at microinstruction level or assembly instruction level.","Prev.":"Prev.",Next:"Next",End:"End","Disable tutorial mode":"Disable tutorial mode",Comment:"Comment",Pause:"Pause",Play:"Play",Stop:"Stop",Record:"Record",Registers:"Registers","Control Memory":"Control Memory",Stats:"Stats",Memory:"Memory","Keyboard+Display":"Keyboard+Display","I/O Stats":"I/O Stats","I/O Configuration":"I/O Configuration",Recent:"Recent",Refresh:"Refresh",Welcome:"Welcome","Microcode & Assembly":"Microcode & Assembly","Pick firm/soft":"Pick firm/soft from",Information:"Information",Native:"Native","MIPS32-like":"MIPS32-like",RISCV32:"RISCV32","Z80-like":"Z80-like",Actions:"Actions",Utilities:"Utilities","Information from":"Information from","Pick firm/soft from":"Pick firm/soft from","Welcome tutorial":"Welcome tutorial","Assembly only":"Assembly only","Micro & Assembly":"Micro & Assembly",idiom:"idiom","quick config":"quick config","Graph: quick interactive mode":"Graph: quick interactive mode",_last_:"_last_"};i18n.eltos.tutorial_welcome.en={title_0:"Welcome to the WepSIM simulator!",message_0:" "+""+"
",title_1:"How to load some example.",message_1:" "+""+"
"+"Click in the 'example' button, then click in the example 'title' name. "+"Then the example for microcode and assembly is loaded and microcompiled and compiled. "+" "+" ",title_2:"How to execute an example.",message_2:" "+""+"
"+"Click on next instruction/microinstruction to execute step by step. "+"Click on run button to execute until the first breakpoint or the end of the assembly program."+" "+" ",title_3:"How to configure WepSIM.",message_3:" "+""+"
"+"Click in the 'configuration' button and users are able to customize different parts of WepSIM."+" "+" ",title_4:"How to get the basic help.",message_4:" "+""+"
"+"Please click in the green 'help' button to reach the help dialog. "+"You are able to switch idiom (Spanish/English), go to the help index, or close the help dialog."+" "+" ",title_5:"Welcome to WepSIM!",message_5:" "+""+"
"+"Please explorer the help sections for more information. "+"If you click on the end button of this tutorial, WepSIM is going to load the first example for you. Enjoy!"+" "+" "};i18n.eltos.tutorial_simpleusage.en={title_0:"Simple WepSIM experience: microprogramming and programming",message_0:" "+""+"
",title_1:"Simple WepSIM experience: microprogramming and programming",message_1:" "+""+"
"+"The first step is to microprogramming the firmware to be used. "+"Please use the 'Microcode' button to switch to the microcode screen."+" ",title_2:"Simple WepSIM experience: microprogramming and programming",message_2:" "+""+"
"+"The microprogramming screen provides:"+""+"The editor for the microcode. "+"The microcompiler. "+"The hardware summary and help. "+" "+"Once your code is ready (compiled without errors), next step is to go to the assembly screen."+" ",title_3:"Simple WepSIM experience: microprogramming and programming",message_3:" "+""+"
"+"The second step is to programming the assembly to be executed. "+"Please use the 'Assembly' button from both, the simulator screen or the microcode screen."+" ",title_4:"Simple WepSIM experience: microprogramming and programming",message_4:" "+""+"
"+"The programming screen provides:"+""+"The editor for the assembly code. "+"The assembly compiler. "+"The memory map viewer and help. "+" "+"Once your assebly code is ready (edited and compiled without errors) next step is to go into the simulation screen."+" ",title_5:"Simple WepSIM experience: microprogramming and programming",message_5:" "+""+"
"+"The third step is to execute the assembly code in the simulator. "+"The simulator screen provides:"+""+"The assembly and hardware view. "+"The detail view of registers, control memory, main memory, etc. "+"The reset, step by step or run until breakpoint/end actions. "+" "+"This tutorial has introduced the typical usage of WepSIM for students and teachers. Enjoy WepSIM!"+" "};i18n.eltos.tour_intro.en={step1:"WepSIM helps to better understand how a computer works: "+"it is visual, interactive, integrates from signals up to interruptions, system calls, exceptions, etc. "+" "+"We really believe WepSIM is a revolutionary teaching tool. "+"This brief tour introduces the key elements of its interface.",step2:"This button on the top-right is a quick access menu to differents 'work modes'. "+" "+"Users might select:"+""+"The hardware to work with (e.g. EP processor, etc.) "+"Assembly only mode, with integer MIPS32 or RISC-V32 instructions "+" ",step3:"On the top-right, the 'help' button opens the associated dialog. "+" "+"The help dialog summarizes the tutorials, descriptions, information, etc.",step4:"And on the left, the 'examples' button open the example dialog. "+" "+"There are many examples that can be used to learn incrementally.",step5:"On the top-left, the 'configuration' button opens the configuration dialog. "+" "+"It allows users to adapt several aspects of the execution, user interface, preferences, etc.",step6:"Congrats! You know the key elements in the WepSIM interface. "+"From the 'Help' dialog you can access the 'Welcome tutorial' to continue learning. "};i18n.eltos.cfg.en={General:"General","Idiom for help, examples, etc.":"Idiom for help, examples, etc.","Notification speed: time before disapear":"Notification speed: time before disapear","Dark Mode":"Dark mode",Editor:"Editor","Editor theme: light or dark":"Editor theme: light or dark",Light:"Light",Dark:"Dark","Editor mode: vim, emacs, etc.":"Editor mode: vim, emacs, etc.",Execution:"Execution","Running speed: execution speed":"Running speed: execution speed",Slow:"Slow",Normal:"Normal",Fast:"Fast","Step-by-step: element in run mode":"Step-by-step: element in run mode",Instructions:"Instructions",Instruction:"Instruction","µinstructions":"µinstructions",microInstruction:"µInstruction","Breakpoint icon: icon to be used for breakpoints":"Breakpoint icon: icon to be used for breakpoints","Limit instructions: number of instructions to be executed":"Limit instructions: number of instructions to be executed","Limit instruction ticks: to limit clock ticks":"Limit instruction ticks: clock ticks limit per instruction","Register file":"Register file","Display format":"Display format","Register file names":"Register file names",Numbers:"Numbers",Labels:"Labels","Editable registers: edit register file values":"Editable registers: edit register file values","Circuitry simulation":"Circuitry simulation","Data-path color":"Data-path color","Signal color":"Signal color","Show by value or by activation":"Show by value or by activation",Value:"Value",Activation:"Activation","Interactive mode: signal value can be updated":"Interactive mode: signal value can be updated","Quick interactive mode: quick update of signal value":"Quick interactive mode: quick update of signal value","(example)":"(example)",Accesibility:"Accesibility","Beginner view":"Beginner view","Auto-scroll while executing":"Auto-scroll while executing","Active voice: external voice control":"Active voice: external voice control","Verbalization: textual or mathematical":"Verbalization: textual or mathematical","WepSIM User Interface views":"WepSIM User Interface views",Privacy:"Privacy",On:"On",Off:"Off",_last_:"_last_"};i18n.eltos.help.en={"Welcome tutorial":"Welcome tutorial",help_01_01:"Open the welcome tutorial","Simple usage tutorial":"Simple usage tutorial",help_01_02:"Open the simple usage tutorial, for microprogramming and assembly programming","Execute example":"Execute example",help_01_03:"Play the execute example tutorial","Simulator: firmware":"Simulator: firmware",help_02_01:"How to work with the firmware to be loaded into the control memory","Microcode format":"Microcode format",help_02_02:"Syntax of the microcode used","Simulator: assembly":"Simulator: assembly",help_02_03:"How to work with the assembly that use the aforementioned firmware","Assembly format":"Assembly format",help_02_04:"Syntax of the assembly elements","Simulator: execution":"Simulator: execution",help_02_05:"How the simulator can execute the assembly and firmware","Simulated architecture":"Simulated architecture",help_03_01:"Description of the simulated processor architecture","Simulated signals":"Simulated signals",help_03_02:"Main signals summary of the simulated elemental processor","Hardware summary":"Hardware summary",help_03_03:"Reference card for the simulated elemental processor hardware","License, platforms, etc.":"License, platforms, etc.",help_04_01:"WepSIM license, supported platforms, technologies used",Authors:"Authors",help_04_02:"Authors of WepSIM"};i18n.eltos.states.en={States:"States",state:"state",Current:"Current","Current State":"Current State",History:"History",None:"None","Empty history":"Empty history","Empty (only modified values are shown)":"Empty (only modified values are shown)",Differences:"Differences","differences with clipboard state":"differences with clipboard state","Meets the specified requirements":"Meets the specified requirements",history:"history",Add:"Add","'Current State' to History":"'Current State' to History",Check:"Check",Copy:"Copy","to clipboard":"to clipboard",Checkpoint:"Checkpoint","File name":"File name","Tag for checkpoint":"Tag for checkpoint","File to be loaded":"File to be loaded","Save to File":"Save to File","State(s) to checkpoint":"State(s) to checkpoint","Record to checkpoint":"Record to checkpoint","Browser cache":"Browser cache","Session to be restore":"Session to be restore",_last_:"_last_"};i18n.eltos.examples.en={"addv + seqv.":"addv + seqv.","Alloc.s":"Alloc.s","Dummy instruction":"Dummy instruction",Exception:"Exception",Instructions:"Instructions",Interruptions:"Interruptions","Int. + syscall + except.":"Int. + syscall + except.","I/O":"I/O",Looping:"Looping","madd, mmul, mxch":"madd, mmul, mxch","Masks & shift":"Masks & shift",Matrix:"Matrix","Memory access":"Memory access","SC 1, 4-5, 8, 11-12":"SC 1, 4-5, 8, 11-12",Subrutine:"Subrutine","syscall 1, 4-5, 8, 11-12":"syscall 1, 4-5, 8, 11-12","System call":"System call",Threads:"Threads",Vector:"Vector","Compiler Explorer":"Compiler Explorer",Instructive:"Instructive ",example_04_01:"Advanced example with interruption, system call, and exception.",example_05_01:"Application-specific extension: addv + seqv.",example_05_03:"Application-specific extension: madd + mmul + mxch.",example_03_01:"Example with floating point exception.",example_03_02:"Example with interruptions support: fetch, RETI, and .ktext/.kdata.",example_03_03:"Example with system call support.",example_03_04:"Example with simple stack convention.",example_04_04:"Example of malloc + free.",example_04_02:"Example of syscall for printing/reading integer and string.",example_04_03:"Example of threads.",example_03_01b:"Example with floating point exception.",example_03_02b:"Example with interruptions support: fetch, RETI, and .ktext/.kdata.",example_02_01:"Example with programmed I/O access, and basic .text/.data segment.",example_03_03b:"Example with system call support.",example_02_02:"Extended example with more instructions and I/O (keyboard, display).",example_02_04:"Extended example with subrutine and matrix.",example_02_03:"More extended example with masks, shift, and basic .text/.data segment.",example_01_01:"Simple example with fetch, arithmetic instructions, and basic .text segment.",example_01_04:"Simple example with fetch, branch, and basic .text/.data segment.",example_01_03:"Simple example with fetch, branch, and basic .text segment.",example_01_02:"Simple example with fetch, memory access, and basic .text/.data segment.",example_06_01:"Test example.",example_06_02:"Simple Compiler Explorer example.",Advanced:"Advanced",Initial:"Initial",Intermediate:"Intermediate",Laboratory:"Laboratory","Operating Systems":"Operating Systems",Extra:"Bonus",Special:"Special","Load example":"Load example","Load Assembly only":"Load Assembly only","Load Firmware only":"Load Firmware only","Copy reference to clipboard":"Copy reference to clipboard",Share:"Share","No examples available...":"No examples are available for the selected hardware","Simple example":"Simple example."};i18n.eltos.compiler.en={"PROBLEM AROUND LINE":"Problem around line","NO TAG OR DIRECTIVE":"Not a valid tag (e.g.: tag1:) or directive (e.g.: .data), found ","NO TAG, DIR OR INS":"Not a valid tag (e.g.: tag1:) directive (e.g.: .data) or instruction, found ","INVALID TAG FORMAT":"A tag must follow an alphanumeric format, starting with a letter or underscore (e.g.: _tag1:) but found ","TAG OR INSTRUCTION":"A tag can not have the same name as an instruction ","REPEATED TAG":"Repeated tag ","NO NUMERIC DATATYPE":"Expected value for numeric datatype but found ","NO POSITIVE NUMBER":"Expected a positive number but found ","NO NUMBER OF BYTES":"Expected number of bytes to reserve in .space but found ","INVALID ALIGN VALUE":"Expected the align parameter as positive number but found ","REMEMBER ALIGN VAL":"Remember that number is the power of two for alignment, see MIPS documentation.","NOT CLOSED STRING":"String is not closed (forgot to end it with quotation marks)","NO QUOTATION MARKS":"Expected string between quotation marks but found ","UNEXPECTED DATATYPE":"Unexpected datatype name ","INVALID SEGMENT NAME":"Expected segment name (e.g.: .data/.text/...) but found ","NO MAIN OR KMAIN":"Tags 'main' or 'kmain' are not defined in the text segment(s). "+"It is compulsory to define at least one of those tags in order to execute a program","UNKNOWN 1":"An unknown error ocurred (1) for field type ","UNKNOWN 2":"Unexpected error (2)","REMEMBER I. FORMAT":"Remember that the instruction format has been defined as ","SEVERAL CANDIDATES":"Instruction and fields match with more than one instruction in microcode. "+"Please check the microcode. Currently, the instruction format can be ","NOT MATCH MICRO":"Instruction and fields don't match with microprogram. ","CHECK MICROCODE":"Please check the microcode. Probably you forgot to add a field, a number is out of range, or you just used a wrong instruction","LABEL NOT DEFINED":"Label used but not defined in the assembly code ","INS. MISSING FIELD":"Missing field in the instruction","UNEXPECTED (REG)":"Expected register but found register between parenthesis.","EXPECTED (REG)":"Expected register between parenthesis but found ","EXPECTED REG":"Expected valid register (e.g.: $1/$a0/...) but found ","UNKNOWN ESCAPE CHAR":"Unknown escape char","SPACE FOR # BITS":" bits in binary but there is space for only ",NEEDS:" needs ","UNKNOWN MC FORMAT":"(unknown format in microcode)","LABEL NOT FOUND":"Expected ':' not found, found token ","REPEATED LABEL":"Label is repeated ","INVALID LABEL FORMAT":"Label format is not valid for ","OPEN BRACE NOT FOUND":"Expected '{' not found","CLOSE BRACE NOT FOUND":"Expected '}' not found","OPEN PAREN. NOT FOUND":"Expected '(' not found","CLOSE PAREN. NOT FOUND":"Expected ')' not found","COMMA NOT FOUND":"Expected ',' not found","EQUAL NOT FOUND":"Expected '=' not found","SIGNAL NOT EXISTS":"Signal does not exists ","SIGNAL NO DIRECTLY":"signal cannot be used directly, please use the Control Unit signals instead.","INCORRECT BIN. FORMAT":"Incorrect binary format ","OUT OF RANGE":"Value out of range ","EMPTY MICROCODE":"Empty microcode","EMPTY NAME LIST":"Empty name list for register: x=[]","DUPLICATE SP":"Duplicate definition of stack pointer","NO SP":"Expected stack_pointer token not found","UNDEF. INSTR.":"Undefined instruction ","MORE 100 FIELDS":"More than 100 fields in a single instruction.","CO AS FIELD NAME":"Instruction field has 'co' as name.","NW AS FIELD NAME":"Instruction field has 'nwords' as name.","NO CO FIELD":"Expected keyword 'co' not found","INCORRECT CO BIN.":"Incorrect binary format on 'co' field ","INCORRECT COP BIN.":"Incorrect binary format on 'cop' field ","INVALID PARAMETER":"Invalid parameter ","ALLOWED PARAMETER":"It only allows the following fields: reg, num, inm, addr, address","MISSING TOKEN ON":"'token' is missing after '(' on ","MISSING ) ON":"')' is missing on ","CO ALREADY USED":"'co' is already been used by ","CO+COP ALREADY USED":"'co+cop' is already been used by ","NO NWORDS":"Expected keyword 'nwords' not found","INCORRECT ADDRESSING":"Type of addressing incorrect (abs or rel)","UNEXPECTED FIELD":"Unexpected field found ","CHECK ORDER":"Please check the order of the fields","STARTBIT OoR":"startbit out of range ","STOPBIT OoR":"stopbit out of range ","OVERLAPPING FIELD":"Overlapping field ","BAD COP BIN. LEN.":"Incorrect binary length for 'cop' field ","SP NOT DEFINED":"Stack pointer register was not defined","NO LABEL FETCH":"Label 'fetch' not defined","NO LABEL BEGIN":"'begin' not found","NO CO CODES":"There is not enough 'co' codes available for instructions","NO LABEL MADDR":"MADDR label not found ","INS. NAME":"Instruction name: ","NOT VALID FOR":"is not valid for ","BIGGER THAN":"is bigger than ",BITS:"bits","EXPECTED VALUE":"Expected value that fits in a '","BUT INSERTED":"but inserted ",INSTEAD:"instead",_last_:"_last_"};i18n.eltos.hw.en={Component:"Component",Element:"Element","States (In)":"States (In)","States (Out)":"States (Out)",Signals:"Signals","It has":"It has",inputs:"inputs",outputs:"outputs",signals:"signals","EP:CPU_T1:STATES:IN":"Input is the value of MBR register","EP:CPU_T1:STATES:OUT":"Output goes to the Internal Bus","EP:CPU_T1:SIGNALS:CTL":"Confirm that input value is copied to the output","EP:CPU_T2:STATES:IN":"Input is the value of PC register","EP:CPU_T2:STATES:OUT":"Output goes to the Internal Bus","EP:CPU_T2:SIGNALS:CTL":"Confirm that input value is copied to the output","EP:CPU_T3:STATES:IN":"Input is the output of the selector-IR","EP:CPU_T3:STATES:OUT":"Output goes to the Internal Bus","EP:CPU_T3:SIGNALS:CTL":"Confirm that input value is copied to the output","EP:CPU_T4:STATES:IN":"Input is the value of RT1 register","EP:CPU_T4:STATES:OUT":"Output goes to the Internal Bus","EP:CPU_T4:SIGNALS:CTL":"Confirm that input value is copied to the output","EP:CPU_T5:STATES:IN":"Input is the value of RT2 register","EP:CPU_T5:STATES:OUT":"Output goes to the Internal Bus","EP:CPU_T5:SIGNALS:CTL":"Confirm that input value is copied to the output","EP:CPU_T6:STATES:IN":"Input is the ALU output","EP:CPU_T6:STATES:OUT":"Output goes to the Internal Bus","EP:CPU_T6:SIGNALS:CTL":"Confirm that input value is copied to the output","EP:CPU_T7:STATES:IN":"Input is the value of RT3 register","EP:CPU_T7:STATES:OUT":"Output goes to the Internal Bus","EP:CPU_T7:SIGNALS:CTL":"Confirm that input value is copied to the output","EP:CPU_T8:STATES:IN":"Input is the value of SR register","EP:CPU_T8:STATES:OUT":"Output goes to the Internal Bus","EP:CPU_T8:SIGNALS:CTL":"Confirm that input value is copied to the output","EP:CPU_T9:STATES:IN":"Input is the value of the Register File port A output","EP:CPU_T9:STATES:OUT":"Output goes to the Internal Bus","EP:CPU_T9:SIGNALS:CTL":"Confirm that input value is copied to the output","EP:CPU_T10:STATES:IN":"Input is the value of the Register File port B output","EP:CPU_T10:STATES:OUT":"Output goes to the Internal Bus","EP:CPU_T10:SIGNALS:CTL":"Confirm that input value is copied to the output","EP:CPU_T11:STATES:IN":"Input is the microinstruction/ExCode output","EP:CPU_T11:STATES:OUT":"Output goes to the Internal Bus","EP:CPU_T11:SIGNALS:CTL":"Confirm that input value is copied to the output","EP:CPU_T12:STATES:IN":"Input is the HPC (hardware performance counter) output","EP:CPU_T12:STATES:OUT":"Output goes to the Internal Bus","EP:CPU_T12:SIGNALS:CTL":"Confirm that input value is copied to the output","EP:CPU_TA:STATES:IN":"Input is the MAR register output","EP:CPU_TA:STATES:OUT":"Output goes to the Address Bus","EP:CPU_TA:SIGNALS:CTL":"Confirm that input value is copied to the output","EP:CPU_TB:STATES:IN":"Input is the Byte Selector output","EP:CPU_TB:STATES:OUT":"Output goes to the data bus","EP:CPU_TB:SIGNALS:CTL":"Confirm that input value is copied to the output","EP:CPU_MUX_A:STATES:MUX_0":"Input 0 of MUX A, from Register File (A)","EP:CPU_MUX_A:STATES:MUX_1":"Input 1 of MUX A, from RT1 register","EP:CPU_MUX_A:STATES:MUX_O":"Output to ALU, operator 0","EP:CPU_MUX_A:SIGNALS:MA":"Select the input value to send to the output","EP:CPU_MUX_B:STATES:MUX_0":"Input 0 of MUX B, from Register File (B)","EP:CPU_MUX_B:STATES:MUX_1":"Input 1 of MUX B, from RT2 register","EP:CPU_MUX_B:STATES:MUX_2":"Input 2 of MUX B, value 4","EP:CPU_MUX_B:STATES:MUX_3":"Input 3 of MUX B, value 1","EP:CPU_MUX_B:STATES:MUX_O":"Output to ALU, operator 1","EP:CPU_MUX_B:SIGNALS:MB":"Select the input value to send to the output","EP:CPU_MUX_1:STATES:MUX_0":"Input 0 of MUX 1, from Internal Bus","EP:CPU_MUX_1:STATES:MUX_1":"Input 1 of MUX 1, from Byte Selector","EP:CPU_MUX_1:STATES:MUX_O":"Output to MBR, from MUX 1","EP:CPU_MUX_1:SIGNALS:M1":"Select the input value to send to the output","EP:CPU_MUX_2:STATES:MUX_0":"Input 0 of MUX 2, from Internal Bus","EP:CPU_MUX_2:STATES:MUX_1":"Input 1 of MUX 2, PC + 4","EP:CPU_MUX_2:STATES:MUX_O":"Output to PC","EP:CPU_MUX_2:SIGNALS:M2":"Select the input value to send to the output","EP:CPU_MUX_7:STATES:MUX_0":"Input 0 of MUX 7, from Internal Bus","EP:CPU_MUX_7:STATES:MUX_1":"Input 1 of MUX 7, from Flag Selector","EP:CPU_MUX_7:STATES:MUX_O":"Output to register SR","EP:CPU_MUX_7:SIGNALS:M7":"Select the input value to send to the output","EP:CU_MUX_A:STATES:MUX_0":"Input 0 of MUX A, from microADDR + 1","EP:CU_MUX_A:STATES:MUX_1":"Input 1 of MUX A, from co2maddr","EP:CU_MUX_A:STATES:MUX_2":"Input 2 of MUX A, from microIR/MADDR","EP:CU_MUX_A:STATES:MUX_3":"Input 3 of MUX A, from 0","EP:CU_MUX_A:STATES:MUX_O":"Output to microADDR, from MUX A","EP:CU_MUX_A:SIGNALS:A0":"mIR/A0","EP:CU_MUX_A:SIGNALS:A1":"Output of control unit MUX B","EP:CU_MUX_B:STATES:MUX_0":"Input 0 of MUX B, from MUX C","EP:CU_MUX_B:STATES:MUX_1":"Input 1 of MUX B, from NOT (MUX C)","EP:CU_MUX_B:STATES:MUX_O":"Output to MUX A/A1","EP:CU_MUX_B:SIGNALS:MB":"Select the input value to send to the output","EP:CU_MUX_C:STATES:MUX_0":"Input 0 of MUX C, from 0","EP:CU_MUX_C:STATES:MUX_1":"Input 1 of MUX C, from INT","EP:CU_MUX_C:STATES:MUX_2":"Input 2 of MUX C, from IORdy","EP:CU_MUX_C:STATES:MUX_3":"Input 3 of MUX C, from MRdy","EP:CU_MUX_C:STATES:MUX_4":"Input 4 of MUX C, from SR/U","EP:CU_MUX_C:STATES:MUX_5":"Input 5 of MUX C, from SR/I","EP:CU_MUX_C:STATES:MUX_6":"Input 6 of MUX C, from SR/Z","EP:CU_MUX_C:STATES:MUX_7":"Input 7 of MUX C, from SR/N","EP:CU_MUX_C:STATES:MUX_8":"Input 8 of MUX C, from SR/V","EP:CU_MUX_C:STATES:MUX_9":"Input 9 of MUX C, from SR/C","EP:CU_MUX_C:STATES:MUX_10":"Input 10 of MUX C, from InEx","EP:CU_MUX_C:STATES:MUX_O":"Output to MUX B","EP:CU_MUX_C:SIGNALS:CTL":"Output of control unit MUX C","EP:CU_MUX_RA:STATES:MUX_0":"Input 0 of MUX MR, from IR[SelA+0...SelA+4]","EP:CU_MUX_RA:STATES:MUX_1":"Input 1 of MUX MR, from SelA","EP:CU_MUX_RA:STATES:MUX_O":"Output to RA","EP:CU_MUX_RA:SIGNALS:CTL":"Select the input value to send to the output","EP:CU_MUX_RB:STATES:MUX_0":"Input 0 of MUX MR, from IR[SelB+0...SelB+4]","EP:CU_MUX_RB:STATES:MUX_1":"Input 1 of MUX MR, from SelB","EP:CU_MUX_RB:STATES:MUX_O":"Output to RB","EP:CU_MUX_RB:SIGNALS:MR":"Select the input value to send to the output","EP:CU_MUX_RC:STATES:MUX_0":"Input 0 of MUX MR, from IR[SelC+0...SelC+4]","EP:CU_MUX_RC:STATES:MUX_1":"Input 1 of MUX MR, from SelC","EP:CU_MUX_RC:STATES:MUX_O":"Output to RC","EP:CU_MUX_RC:SIGNALS:MR":"Select the input value to send to the output","EP:CU_MUX_MC:STATES:MUX_0":"Input 0 of MUX MC, from IR3...IR0","EP:CU_MUX_MC:STATES:MUX_1":"Input 1 of MUX MC, from SelCop","EP:CU_MUX_MC:STATES:MUX_O":"Output to COP","EP:CU_MUX_MC:SIGNALS:CTL":"Select the input value to send to the output","EP:CPU_MUX_H:STATES:MUX_0":"Input 0 of MUX H, of the Hardware Performance Counter","EP:CPU_MUX_H:STATES:MUX_1":"Input 1 of MUX H, of the Hardware Performance Counter","EP:CPU_MUX_H:STATES:MUX_2":"Input 2 of MUX H, of the Hardware Performance Counter","EP:CPU_MUX_H:STATES:MUX_3":"Input 3 of MUX H, of the Hardware Performance Counter","EP:CPU_MUX_H:STATES:MUX_O":"Output to T12","EP:CPU_MUX_H:SIGNALS:MH":"Select the input value to send to the output","EP:MAR:STATES:IN":"Input is the Internal Bus","EP:MAR:STATES:OUT":"Output goes to the Ta tristate","EP:MAR:SIGNALS:C0":"Confirm that input is stored","EP:MBR:STATES:IN":"Input is the M1 output","EP:MBR:STATES:OUT":"Output goes to the T1 tristate","EP:MBR:SIGNALS:C1":"Confirm that input is stored","EP:PC:STATES:IN":"Input is the M2 output","EP:PC:STATES:OUT":"Output goes to the T2 tristate","EP:PC:SIGNALS:CTL":"Confirm that input is stored","EP:IR:STATES:IN":"Input is the Internal Bus","EP:IR:STATES:OUT":"Output goes to the IR selector and the CU","EP:IR:SIGNALS:C3":"Confirm that input is stored","EP:RT1:STATES:IN":"Input is the Internal Bus","EP:RT1:STATES:OUT":"Output goes to the T4 tristate","EP:RT1:SIGNALS:CTL":"Confirm that input is stored","EP:RT2:STATES:IN":"Input is the Internal Bus","EP:RT2:STATES:OUT":"Output goes to the T5 tristate","EP:RT2:SIGNALS:CTL":"Confirm that input is stored","EP:RT3:STATES:IN":"Input is the output of the ALU","EP:RT3:STATES:OUT":"Output goes to the T7 tristate","EP:RT3:SIGNALS:CTL":"Confirm that input is stored","EP:SR:STATES:IN":"Input is the output of the M7","EP:SR:STATES:OUT":"Output goes to the T8 input and the CU","EP:SR:SIGNALS:CTL":"Confirm that input is stored","EP:REGISTER_FILE:STATES:A":"Output of RF to T9 and MA/0","EP:REGISTER_FILE:STATES:B":"Output of RF to T10 and MB/0","EP:REGISTER_FILE:STATES:C":"Input to RF from Internal Bus","EP:REGISTER_FILE:SIGNALS:RA":"Select the register which value is sent to A","EP:REGISTER_FILE:SIGNALS:RB":"Select the register which value is sent to B","EP:REGISTER_FILE:SIGNALS:RC":"Select the register where C's value is stored","EP:REGISTER_FILE:SIGNALS:LC":"Confirm that RC is going to be updated","EP:CPU_ALU:STATES:A":"Output from MUX A multiplexor","EP:CPU_ALU:STATES:B":"Output from MUX B multiplexor","EP:CPU_ALU:STATES:ALU":"Result goes to the input of T6 and RT3","EP:CPU_ALU:STATES:FLAGS":"Updated C,V,N,Z flags","EP:CPU_ALU:SIGNALS:COP":"Operation code (+, -, *, ...)","EP:SELECT_SR:STATES:MUX_1":"Input 1 of SELECT-SR, U flag","EP:SELECT_SR:STATES:MUX_2":"Input 2 of SELECT-SR, I flag","EP:SELECT_SR:STATES:MUX_3":"Input 3 of SELECT-SR, flags C V N Z","EP:SELECT_SR:STATES:MUX_O":"Output to MUX 7/1","EP:SELECT_SR:SIGNALS:SELP":"Select the input value to send to the output","EP:SELECT_IR:STATES:MUX_I":"Input of SELECT-IR from IR","EP:SELECT_IR:STATES:MUX_O":"Output to Internal Bus through T3","EP:SELECT_IR:SIGNALS:SE":"Sign Extension","EP:SELECT_IR:SIGNALS:SIZE":"Size","EP:SELECT_IR:SIGNALS:OFFSET":"Offset","EP:BYTE_SELECTOR:STATES:FROM_MBR":"Input from MBR register","EP:BYTE_SELECTOR:STATES:FROM_DATA":"Input from Data Bus","EP:BYTE_SELECTOR:STATES:BE":"Output to BE","EP:BYTE_SELECTOR:STATES:TO_MBR":"Output to M1/1","EP:BYTE_SELECTOR:STATES:TO_TD":"Output to Td/input","EP:BYTE_SELECTOR:SIGNALS:W":"Write into main memory","EP:BYTE_SELECTOR:SIGNALS:SE":"Sign Extension","EP:BYTE_SELECTOR:SIGNALS:A1A0":"A1A0","EP:BYTE_SELECTOR:SIGNALS:BW":"Number of bytes to pack","EP:MEMORY:STATES:ADDR":"Address bus","EP:MEMORY:STATES:DATA":"Data bus","EP:MEMORY:STATES:MRDY":"Memory ready","EP:MEMORY:SIGNALS:BE":"BW+A1A0","EP:MEMORY:SIGNALS:R":"Read","EP:MEMORY:SIGNALS:W":"Write","EP:IO:STATES:ADDR":"Address bus","EP:IO:STATES:DATA":"Data bus","EP:IO:SIGNALS:IOR":"Read from IO device","EP:IO:SIGNALS:IOW":"Write into the IO device","EP:KEYBOARD:STATES:ADDR":"Address bus","EP:KEYBOARD:STATES:DATA":"Data bus","EP:KEYBOARD:SIGNALS:IOR":"Read from keyboard","EP:DISPLAY:STATES:ADDR":"Address bus","EP:DISPLAY:STATES:DATA":"Data bus","EP:DISPLAY:SIGNALS:IOR":"Read from display (disabled)","EP:DISPLAY:SIGNALS:IOW":"Write into the display","EP:L3D:STATES:ADDR":"Address bus","EP:L3D:STATES:DATA":"Data bus","EP:L3D:SIGNALS:IOR":"Read from L3D","EP:L3D:SIGNALS:IOW":"Write into the L3D","EP:LEDM:STATES:ADDR":"Address bus","EP:LEDM:STATES:DATA":"Data bus","EP:LEDM:SIGNALS:IOR":"Read from LEDM","EP:LEDM:SIGNALS:IOW":"Write into the LEDM","POC:CPU_T1:STATES:IN":"Input is the value of MBR register","POC:CPU_T1:STATES:OUT":"Output goes to the Internal Bus","POC:CPU_T1:SIGNALS:CTL":"Confirm that output is connected to the input","POC:CPU_T2:STATES:IN":"Input is the PC register output","POC:CPU_T2:STATES:OUT":"Output goes to the Internal Bus","POC:CPU_T2:SIGNALS:CTL":"Confirm that output is connected to the input","POC:CPU_T3:STATES:IN":"Input is the IR register output selector","POC:CPU_T3:STATES:OUT":"Output goes to the Internal Bus","POC:CPU_T3:SIGNALS:CTL":"Confirm that output is connected to the input","POC:CPU_T6:STATES:IN":"Input is the ALU output","POC:CPU_T6:STATES:OUT":"Output goes to the Internal Bus","POC:CPU_T6:SIGNALS:CTL":"Confirm that output is connected to the input","POC:CPU_T8:STATES:IN":"Input is the SR register output","POC:CPU_T8:STATES:OUT":"Output goes to the Internal Bus","POC:CPU_T8:SIGNALS:CTL":"Confirm that output is connected to the input","POC:CPU_T9:STATES:IN":"Input is the output on port A of the register file","POC:CPU_T9:STATES:OUT":"Output goes to the Internal Bus","POC:CPU_T9:SIGNALS:CTL":"Confirm that output is connected to the input","POC:CPU_T10:STATES:IN":"Input is the output on port B of the register file","POC:CPU_T10:STATES:OUT":"Output goes to the Internal Bus","POC:CPU_T10:SIGNALS:CTL":"Confirm that output is connected to the input","POC:CPU_T11:STATES:IN":"Input is the MIR/ExCode output","POC:CPU_T11:STATES:OUT":"Output goes to the Internal Bus","POC:CPU_T11:SIGNALS:CTL":"Confirm that output is connected to the input","POC:CPU_TA:STATES:IN":"Input is the MAR register output","POC:CPU_TA:STATES:OUT":"Output goes to the address bus","POC:CPU_TA:SIGNALS:CTL":"Confirm that output is connected to the input","POC:CPU_TB:STATES:IN":"Input is the byte selector output","POC:CPU_TB:STATES:OUT":"Output goes to the data bus","POC:CPU_TB:SIGNALS:CTL":"Confirm that output is connected to the input","POC:CPU_MUX_A:STATES:MUX_0":"Input 0 of MUX A, from RF/A","POC:CPU_MUX_A:STATES:MUX_1":"Input 1 of MUX A, from Internal Bus","POC:CPU_MUX_A:STATES:MUX_O":"Output to ALU/0, from MUX A","POC:CPU_MUX_A:SIGNALS:MA":"Select the input value to send to the output","POC:CPU_MUX_B:STATES:MUX_0":"Input 0 of MUX B, from RF/B","POC:CPU_MUX_B:STATES:MUX_1":"Input 1 of MUX B, from PC","POC:CPU_MUX_B:STATES:MUX_O":"Output to ALU/1, from MUX B","POC:CPU_MUX_B:SIGNALS:MB":"Select the input value to send to the output","POC:CPU_MUX_1:STATES:MUX_0":"Input 0 of MUX 1, from Internal Bus","POC:CPU_MUX_1:STATES:MUX_1":"Input 1 of MUX 1, from data bus","POC:CPU_MUX_1:STATES:MUX_O":"Output to MBR, from MUX 1","POC:CPU_MUX_1:SIGNALS:M1":"Select the input value to send to the output","POC:CPU_MUX_7:STATES:MUX_0":"Input 0 of MUX 7, from Internal Bus","POC:CPU_MUX_7:STATES:MUX_1":"Input 1 of MUX 7, from Flag Selector","POC:CPU_MUX_7:STATES:MUX_O":"Output to SR, from MUX 7","POC:CPU_MUX_7:SIGNALS:M7":"Select the input value to send to the output","POC:CU_MUX_A:STATES:MUX_0":"Input 0 of MUX A, from mADDR + 1","POC:CU_MUX_A:STATES:MUX_1":"Input 1 of MUX A, from co2maddr","POC:CU_MUX_A:STATES:MUX_2":"Input 2 of MUX A, from mIR/MADDR","POC:CU_MUX_A:STATES:MUX_3":"Input 3 of MUX A, from 0","POC:CU_MUX_A:STATES:MUX_O":"Output to mADDR, from MUX A","POC:CU_MUX_A:SIGNALS:A0":"mIR/A0","POC:CU_MUX_A:SIGNALS:A1":"Output of control unit MUX B","POC:CU_MUX_B:STATES:MUX_0":"Input 0 of MUX B, from MUX C","POC:CU_MUX_B:STATES:MUX_1":"Input 1 of MUX B, from NOT (MUX C)","POC:CU_MUX_B:STATES:MUX_O":"Output to MUX A/A1, from MUX B","POC:CU_MUX_B:SIGNALS:MB":"Select the input value to send to the output","POC:CU_MUX_C:STATES:MUX_0":"Input 0 of MUX C, from 0","POC:CU_MUX_C:STATES:MUX_1":"Input 1 of MUX C, from INT","POC:CU_MUX_C:STATES:MUX_2":"Input 2 of MUX C, from IORdy","POC:CU_MUX_C:STATES:MUX_3":"Input 3 of MUX C, from MRdy","POC:CU_MUX_C:STATES:MUX_4":"Input 4 of MUX C, from SR/U","POC:CU_MUX_C:STATES:MUX_5":"Input 5 of MUX C, from SR/I","POC:CU_MUX_C:STATES:MUX_6":"Input 6 of MUX C, from SR/Z","POC:CU_MUX_C:STATES:MUX_7":"Input 7 of MUX C, from SR/N","POC:CU_MUX_C:STATES:MUX_8":"Input 8 of MUX C, from SR/V","POC:CU_MUX_C:STATES:MUX_9":"Input 9 of MUX C, from SR/C","POC:CU_MUX_C:STATES:MUX_10":"Input 10 of MUX C, from InEx","POC:CU_MUX_C:STATES:MUX_O":"Output to MUX B","POC:CU_MUX_C:SIGNALS:CTL":"Output of control unit MUX C","POC:CU_MUX_RA:STATES:MUX_0":"Input 0 of MUX MR, from IR[SelA+0...SelA+4]","POC:CU_MUX_RA:STATES:MUX_1":"Input 1 of MUX MR, from SelA","POC:CU_MUX_RA:STATES:MUX_O":"Output to RA","POC:CU_MUX_RA:SIGNALS:CTL":"Select the input value to send to the output","POC:CU_MUX_RB:STATES:MUX_0":"Input 0 of MUX MR, from IR[SelB+0...SelB+4]","POC:CU_MUX_RB:STATES:MUX_1":"Input 1 of MUX MR, from SelB","POC:CU_MUX_RB:STATES:MUX_O":"Output to RB","POC:CU_MUX_RB:SIGNALS:MR":"Select the input value to send to the output","POC:CU_MUX_RC:STATES:MUX_0":"Input 0 of MUX MR, from IR[SelC+0...SelC+4]","POC:CU_MUX_RC:STATES:MUX_1":"Input 1 of MUX MR, from SelC","POC:CU_MUX_RC:STATES:MUX_O":"Output to RC","POC:CU_MUX_RC:SIGNALS:MR":"Select the input value to send to the output","POC:CU_MUX_MC:STATES:MUX_0":"Input 0 of MUX MC, from IR3...IR0","POC:CU_MUX_MC:STATES:MUX_1":"Input 1 of MUX MC, from SelCop","POC:CU_MUX_MC:STATES:MUX_O":"Output to COP","POC:CU_MUX_MC:SIGNALS:CTL":"Select the input value to send to the output","POC:MAR:STATES:IN":"Input is the Internal Bus","POC:MAR:STATES:OUT":"Output goes to the Ta tristate","POC:MAR:SIGNALS:C0":"Confirm that input is stored","POC:MBR:STATES:IN":"Input is the M1 output","POC:MBR:STATES:OUT":"Output goes to the T1 tristate","POC:MBR:SIGNALS:C1":"Confirm that input is stored","POC:PC:STATES:IN":"Input is the internal bus","POC:PC:STATES:OUT":"Output goes to the T2 tristate","POC:PC:SIGNALS:CTL":"Confirm that input is stored","POC:IR:STATES:IN":"Input is the Internal Bus","POC:IR:STATES:OUT":"Output goes to the IR selector and the CU","POC:IR:SIGNALS:C3":"Confirm that input is stored","POC:RT1:STATES:IN":"Input is the Internal Bus","POC:RT1:STATES:OUT":"Output goes to the select-rt1","POC:RT1:SIGNALS:CTL":"Confirm that input is stored","POC:SR:STATES:IN":"Input is the output of the M7","POC:SR:STATES:OUT":"Output goes to the T8 input and the CU","POC:SR:SIGNALS:CTL":"Confirm that input is stored","POC:REGISTER_FILE:STATES:A":"Output of RF to T9 and MA/0","POC:REGISTER_FILE:STATES:B":"Output of RF to T10 and MB/0","POC:REGISTER_FILE:STATES:C":"Input to RF from Internal Bus","POC:REGISTER_FILE:SIGNALS:RA":"Select the register which value is sent to A","POC:REGISTER_FILE:SIGNALS:RB":"Select the register which value is sent to B","POC:REGISTER_FILE:SIGNALS:RC":"Select the register where C's value is stored","POC:REGISTER_FILE:SIGNALS:LC":"Confirm that RC is going to be updated","POC:CPU_ALU:STATES:A":"Output from MUX A multiplexor","POC:CPU_ALU:STATES:B":"Output from MUX B multiplexor","POC:CPU_ALU:STATES:ALU":"Result goes to the input of T6 and RT3","POC:CPU_ALU:STATES:FLAGS":"Updated C,V,N,Z flags","POC:CPU_ALU:SIGNALS:COP":"Operation code (+, -, *, ...)","POC:SELECT_RT1:STATES:MUX_I":"Input of SELECT-RT1 from RT1","POC:SELECT_RT1:STATES:MUX_O":"Output to Internal Bus through T3","POC:SELECT_RT1:SIGNALS:SE":"Sign Extension","POC:SELECT_RT1:SIGNALS:SIZE":"Size","POC:SELECT_RT1:SIGNALS:OFFSET":"Offset","POC:MEMORY:STATES:ADDR":"Address bus","POC:MEMORY:STATES:DATA":"Data bus","POC:MEMORY:STATES:MRDY":"Memory ready","POC:MEMORY:SIGNALS:BW":"Bytes Width","POC:MEMORY:SIGNALS:R":"Read","POC:MEMORY:SIGNALS:W":"Write","POC:IO:STATES:ADDR":"Address bus","POC:IO:STATES:DATA":"Data bus","POC:IO:SIGNALS:IOR":"Read from IO device","POC:IO:SIGNALS:IOW":"Write into the IO device","POC:KEYBOARD:STATES:ADDR":"Address bus","POC:KEYBOARD:STATES:DATA":"Data bus","POC:KEYBOARD:SIGNALS:IOR":"Read from keyboard","POC:DISPLAY:STATES:ADDR":"Address bus","POC:DISPLAY:STATES:DATA":"Data bus","POC:DISPLAY:SIGNALS:IOR":"Read from display (disabled)","POC:DISPLAY:SIGNALS:IOW":"Write into the display","POC:L3D:STATES:ADDR":"Address bus","POC:L3D:STATES:DATA":"Data bus","POC:L3D:SIGNALS:IOR":"Read from L3D","POC:L3D:SIGNALS:IOW":"Write into the L3D",_last_:"_last_"};i18n.eltos.dialogs.en={"Show/Hide ActionBar":"Show/Hide ActionBar","Show/Hide Slider":"Show/Hide Slider","WepSIM User Interface skin":"WepSIM User Interface skin","Initial intro":"Initial intro","About WepSIM":"About WepSIM",Title:"Title",Message:"Message",Duration:"Duration","Confirm remove record...":"Do you want to remove the actual record?","Close or Reset...":"Please click on Close to keep it, or click on the Reset button to remove it.","Sure Control Memory...":"Do you want me to save the current Control Memory contents rather than the editor contents?.","Show/Hide labels":"Show/Hide labels","Show/Hide content":"Show/Hide content","Show/Hide assembly":"Show/Hide assembly","Show/Hide pseudo-instructions":"Show/Hide pseudo-instructions",Close:"Close",details:"details",idiom:"idiom",_last_:"_last_"};i18n.eltos.gui.fr={"Loading WepSIM...":"Chargement de WepSIM ...",About:"À propos de",Configuration:"Configuration",MicroCode:"MicroCode",Assembly:"Assembly",Simulator:"Simulator",Examples:"Exemples",Load:"Charger",Save:"Enregistrer","Load/Save":"Charger/Enregistrer",Restore:"Restaurer",Help:"Aide",Notifications:"Les notifications",RecordBar:"La barre d'enregistrement",Input:"Entrée",Output:"Sortie",Reload:"Recharger",Checkpoint:"Point de contrôle","Help Index":"Index de l'aide",Processor:"Processeur","Assembly Debugger":"Débogueur d'assemblage",Reset:"Réinitialiser",microInstruction:"µInstruction",Instruction:"Instruction",Run:"Exécuter","Hardware Summary":"Résumé du matériel.",processor:"processeur",details:"détails",microcode:"microcode",Signals:"Signaux",Behaviors:"Comportements",States:"États","Control States":"États de contrôle",Dependencies:"Dépendances",Close:"Fermer",Description:"Détalle",Show:"Afficher","Show Main Memory":"Afficher la mémoire principale",compile:"compiler",Compile:"Compiler","Please write the file name":"Merci d'écrire le nom du fichier","Load from this File":"Charger à partir de ce fichier",labels:"étiquettes",addr:"adr",ess:"esse",content:"content",assembly:"assembly",instructions:"instructions","simulator intro 1":"Vous pouvez sélectionner le matériel à utiliser. Le matériel par défaut est le matériel EP (Elemental Processor). Vous pouvez utiliser le sélecteur de mode pour changer le matériel utilisé.","simulator intro 2":"Vous devez ensuite charger le microcode (définit le jeu d'instructions) et le code d'assemblage. Vous pouvez utiliser un exemple , chargez-le à partir d'un fichier , ou vous pouvez modifier un nouveau microcode et un nouveau code d'assemblage .","simulator intro 3":"Enfin, dans le simulateur, vous pouvez exécuter le microcode plus l'assembly chargé auparavant. Vous pouvez l'exécuter simultanément, au niveau de la microinstruction ou au niveau de l'instruction d'assemblage.","Prev.":"Prev.",Next:"Next",End:"End","Disable tutorial mode":"Désactiver le mode tutoriel",Comment:"Commentaire",Pause:"Pause",Play:"Lecture",Stop:"Arrêt",Record:"Enregistrement",Registers:"Registres","Control Memory":"Mémoire de contrôle",Stats:"Statistiques",Memory:"Mémoire","Keyboard+Display":"Clavier+Affichage","I/O Stats":"E/S Statistiques","I/O Configuration":"E/S Configuration",Recent:"Récent",Refresh:"Actualiser",Welcome:"Bienvenue","Microcode & Assembly":"WepSIM hardware","Pick firm/soft":"Choisissez le firmware/logiciel de",Information:"Informations de",Native:"Natif","MIPS32-like":"Code semblable à MIPS32",RISCV32:"RISCV32 Code","Z80-like":"Code semblable à Z80",Actions:"Actions",Utilities:"Utilitaires","Information from":"Information provenant de","Pick firm/soft from":"Choisissez ferme / doux de","Welcome tutorial":"Tutoriel de bienvenue","Assembly only":"Assemblée seulement","Micro & Assembly":"Micro et assemblage",idiom:"Langue","quick config":"configuration rapide","Graph: quick interactive mode":"Graphique : mode interactif rapide",_last_:"_last_"};i18n.eltos.tutorial_welcome.fr={title_0:"Bienvenue sur le simulateur WepSIM!",message_0:" "+""+"
",title_1:"Comment charger des exemples.",message_1:" "+""+"
"+"Cliquez sur le bouton 'exemple', puis sur le nom de l'exemple 'titre'. "+"Ensuite, l'exemple pour le microcode et l'assemblage est chargé, microcompilé et compilé. "+" "+" ",title_2:"Comment exécuter un exemple.",message_2:" "+""+"
"+"Cliquez sur l'instruction suivante/la microinstruction pour exécuter étape par étape. "+"Cliquez sur le bouton Exécuter pour exécuter jusqu'au premier point d'arrêt ou à la fin du programme d'assemblage."+" "+" ",title_3:"Comment configurer WepSIM.",message_3:" "+""+"
"+"Cliquez sur le bouton 'Configuration' pour permettre aux utilisateurs de personnaliser différentes parties de WepSIM."+" "+" ",title_4:"Comment obtenir l'aide de base.",message_4:" "+""+"
"+"Cliquez sur le bouton vert 'aide' pour accéder à la boîte de dialogue d'aide. "+"Vous pouvez changer d'idiome (Espagnol/Anglais), accéder à l'index de l'aide ou fermer la boîte de dialogue d'aide."+" "+" ",title_5:"Bienvenue sur le simulateur WepSIM!",message_5:" "+""+"
"+"Veuillez explorer les sections d'aide pour plus d'informations. "+"Si vous cliquez sur le bouton de fin de ce tutoriel, WepSIM va charger le premier exemple pour vous. Profitez-en!"+" "+" "};i18n.eltos.tutorial_simpleusage.fr={title_0:"Expérience WepSIM simple: microprogrammation et programmation",message_0:" "+""+"
",title_1:"Expérience WepSIM simple: microprogrammation et programmation",message_1:" "+""+"
"+"La première étape consiste à microprogrammer le firmware à utiliser. "+"Veuillez utiliser le bouton 'Microcode' pour passer à l'écran du microcode."+" ",title_2:"Expérience WepSIM simple: microprogrammation et programmation",message_2:" "+""+"
"+"L’écran de microprogrammation fournit:"+""+"L'éditeur du microcode. "+"Le microcompilateur. "+"Résumé du matériel et aide. "+" "+"Une fois que votre code est prêt (compilé sans erreurs), l'étape suivante consiste à accéder à l'écran d'assemblage."+" ",title_3:"Expérience WepSIM simple: microprogrammation et programmation",message_3:" "+""+"
"+"La deuxième étape consiste à programmer l'assemblage à exécuter. "+"Veuillez utiliser le bouton 'Assemblage' de l'écran du simulateur ou de l'écran du microcode."+" ",title_4:"Expérience WepSIM simple: microprogrammation et programmation",message_4:" "+""+"
"+"L'écran de programmation fournit:"+""+"L'éditeur du code d'assemblage. "+"Le compilateur d'assemblage. "+"La visionneuse de carte mémoire et l'aide. "+" "+"Une fois que votre code définitif est prêt (édité et compilé sans erreur), l'étape suivante consiste à accéder à l'écran de simulation."+" ",title_5:"Expérience WepSIM simple: microprogrammation et programmation",message_5:" "+""+"
"+"La troisième étape consiste à exécuter le code d'assemblage dans le simulateur. "+"L'écran du simulateur fournit:"+""+"La vue assemblage et matériel. "+"La vue détaillée des registres, de la mémoire de contrôle, de la mémoire principale, etc. "+"La réinitialisation, étape par étape ou exécution jusqu'au point d'arrêt/actions de fin. "+" "+"Ce tutoriel a introduit l'utilisation typique de WepSIM pour les étudiants et les enseignants. Profitez de WepSIM!"+" "};i18n.eltos.tour_intro.fr={step1:"WepSIM aide à mieux comprendre le fonctionnement d'un ordinateur:"+"visuel, interactif, il intègre des signaux jusqu’aux interruptions, appels système, exceptions, etc. "+" "+"Nous pensons vraiment que WepSIM est un outil pédagogique révolutionnaire."+"Cette brève visite présente les éléments clés de son interface.",step2:"Ce bouton en haut à droite est un menu d'accès rapide aux différents modes de travail. "+" "+"Les utilisateurs peuvent sélectionner:"+""+" Le matériel avec lequel travailler (processeur EP, etc.) "+" Mode assemblage uniquement, avec entier MIPS32 ou RISC-V32 instructions "+" ",step3:"En haut à droite, le bouton 'aide' ouvre la boîte de dialogue associée. "+" "+"La boîte de dialogue d'aide récapitule les tutoriels, les descriptions, les informations, etc.",step4:"Et à gauche, le bouton 'exemples' ouvre la boîte de dialogue des exemples. "+" "+"Il existe de nombreux exemples qui peuvent être utilisés pour apprendre progressivement.",step5:"En haut à gauche, le bouton 'configuration' ouvre la boîte de dialogue de configuration."+" "+"Il permet aux utilisateurs d'adapter plusieurs aspects de l'exécution, de l'interface utilisateur, des préférences, etc.",step6:"Félicitations! Vous connaissez les éléments clés de l'interface WepSIM. "+"Dans la boîte de dialogue 'Aide', vous pouvez accéder au 'didacticiel de bienvenue' pour continuer à apprendre. "};i18n.eltos.cfg.fr={General:"Général","Idiom for help, examples, etc.":"Idiome pour l'aide, exemples, etc.","Notification speed: time before disapear":"Vitesse de notification: heure avant la disparition","Dark Mode":"Mode sombre",Editor:"L'éditeur","Editor theme: light or dark":"Thème de l'éditeur: clair ou sombre",Light:"Clair",Dark:"Sombre","Editor mode: vim, emacs, etc.":"Mode éditeur: vim, emacs, etc.",Execution:"Exécution","Running speed: execution speed":"Vitesse d'exécution: vitesse d'exécution",Slow:"Lent",Normal:"Normal",Fast:"Rapide","Step-by-step: element in run mode":"Pas à pas: élément en mode d'exécution",Instructions:"Instructions",Instruction:"Instruction","µinstructions":"µinstructions",microInstruction:"µInstruction","Breakpoint icon: icon to be used for breakpoints":"Icône de point d'arrêt: icône à utiliser pour les points d'arrêt","Limit instructions: number of instructions to be executed":"Instructions limites: nombre d'instructions à exécuter","Limit instruction ticks: to limit clock ticks":"Limites des ticks d'instruction: nombre de ticks d'horloge nstruction","Register file":"Enregistrer un fichier","Display format":"Format d'affichage","Register file names":"Enregistrer un nom de fichier",Numbers:"Numéros",Labels:"Étiquettes","Editable registers: edit register file values":"Registres modifiables: modifier les valeurs du fichier de registre","Circuitry simulation":"Simulation de circuit","Data-path color":"Couleur du chemin de données","Signal color":"Couleur du signal","Show by value or by activation":"Afficher par valeur ou par activation",Value:"Valeur",Activation:"Activation","Interactive mode: signal value can be updated":"Mode interactif: la valeur du signal peut être mise à jour","Quick interactive mode: quick update of signal value":"Mode interactif rapide: mise à jour rapide de la valeur du signal","(example)":"(exemple)",Accesibility:"Accessibilité","Beginner view":"Vue débutant","Auto-scroll while executing":"Défilement automatique lors de l'exécution","Active voice: external voice control":"Voix active: commande vocale externe","Verbalization: textual or mathematical":"Verbalisation: textuelle ou mathématique","WepSIM User Interface views":"Vues de l'interface utilisateur WepSIM",Privacy:"Intimité",On:"Allumé",Off:"Éteint",_last_:"_last_"};i18n.eltos.help.fr={"Welcome tutorial":"Tutoriel de bienvenue",help_01_01:"Ouvrez le tutoriel de bienvenue","Simple usage tutorial":"Tutoriel d'utilisation simple",help_01_02:"Ouvrez le tutoriel d'utilisation simple, pour la microprogrammation et l'assemblage. programmation","Execute example":"Execute example",help_01_03:"Play the execute example tutorial","Simulator: firmware":"Simulateur: firmware",help_02_01:"Comment utiliser le firmware à charger dans la mémoire de contrôle","Microcode format":"Format du microcode",help_02_02:"Syntaxe du microcode utilisé","Simulator: assembly":"Simulateur: assemblage",help_02_03:"Comment utiliser l'assemblage utilisant le microprogramme susmentionné","Assembly format":"Format d'assemblage",help_02_04:"Syntaxe des éléments d'assemblage","Simulator: execution":"Simulateur: exécution",help_02_05:"Comment le simulateur peut exécuter l'assemblage et le firmware","Simulated architecture":"Architecture simulée",help_03_01:"Description de l'architecture du processeur simulé","Simulated signals":"Signaux simulés",help_03_02:"Résumé des signaux principaux du processeur élémentaire simulé","Hardware summary":"Résumé du matériel",help_03_03:"Carte de référence pour le matériel du processeur élémentaire simulé","License, platforms, etc.":"Licence, plates-formes, etc.",help_04_01:"Licence WepSIM, prise en charge plateformes, technologies utilisées",Authors:"Auteurs",help_04_02:"Auteurs de WepSIM"};i18n.eltos.states.fr={States:"États",state:"etat",Current:"Actuel","Current State":"État actuel",History:"Histoire",None:"Aucune","Empty history":"Historique vide","Empty (only modified values are shown)":"Vide (seules les valeurs modifiées sont affichées)",Differences:"Différences","differences with clipboard state":"Différences avec l'état du presse-papiers","Meets the specified requirements":"Répond aux exigences spécifiées",history:"historique",Add:"Ajouter","'Current State' to History":"'État actuel' à l'historique",Check:"Vérifier",Copy:"Copier","to clipboard":"dans le presse-papiers",Checkpoint:"Point de contrôle","File name":"Nom de fichier","Tag for checkpoint":"Balise pour point de contrôle","File to be loaded":"Fichier à charger","Save to File":"Enregistrer dans un fichier","State(s) to checkpoint":"État (s) au point de contrôle","Record to checkpoint":"Enregistrer au point de contrôle","Browser cache":"Cache du navigateur","Session to be restore":"Session à restaurer",_last_:"_last_"};i18n.eltos.examples.fr={"addv + seqv.":"addv + seqv.","Alloc.s":"Alloc.s","Dummy instruction":"Instruction fictive",Exception:"Exception",Instructions:"Instructions",Interruptions:"Interruptions","Int. + syscall + except.":"Int. + syscall + except.","I/O":"I/O",Looping:"En boucle","madd, mmul, mxch":"madd, mmul, mxch","Masks & shift":"Masques et décalage",Matrix:"Matrice","Memory access":"Accès mémoire","SC 1, 4-5, 8, 11-12":"SC 1, 4-5, 8, 11-12",Subrutine:"Subrutine","syscall 1, 4-5, 8, 11-12":"Appel système 1, 4-5, 8, 11-12","System call":"Appel système",Threads:"Fils",Vector:"Vecteur","Compiler Explorer":"Compiler Explorer",Instructive:"Instructive ",example_04_01:"Exemple avancé avec interruption, appel système et exception.",example_05_01:"Extension spécifique à l'application: addv + seqv.",example_05_03:"Extension spécifique à l'application: madd + mmul + mxch.",example_03_01:"Exemple avec exception de virgule flottante.",example_03_02:"Exemple avec prise en charge des interruptions: fetch, RETI et .ktext/.kdata.",example_03_03:"Exemple avec prise en charge des appels système.",example_03_04:"Exemple avec convention de pile simple.",example_04_04:"Exemple de malloc + free.",example_04_02:"Exemple de appel système pour l'impression/la lecture de nombres entiers et de chaînes.",example_04_03:"Exemple de fils.",example_03_01b:"Exemple avec exception en virgule flottante.",example_03_02b:"Exemple avec prise en charge des interruptions: fetch, RETI et .ktext/.kdata.",example_02_01:"Exemple avec accès I/O programmé et segment de base .text/.data.",example_03_03b:"Exemple avec prise en charge des appels système.",example_02_02:"Exemple étendu avec davantage d'instructions et d'E/S (clavier, affichage).",example_02_04:"Exemple étendu avec sous-programme et matrice.",example_02_03:"Exemple plus détaillé avec masques, décalage et segment de base .text/.data.",example_01_01:"Exemple simple avec récupération, instructions arithmétiques et segment de base .text.",example_01_04:"Exemple simple avec récupération, branche et segment de base .text/.data.",example_01_03:"Exemple simple avec fetch, branche et segment de base .text.",example_01_02:"Exemple simple avec récupération, accès à la mémoire et .text/.data de base segment.",example_06_01:"Exemple de test.",example_06_02:"Exemple de l'explorateur de compilateur simple.",Advanced:"Avancé",Initial:"Initiale",Intermediate:"Intermédiaire",Laboratory:"Laboratoire","Operating Systems":"Systèmes d'exploitation",Extra:"Bonus",Special:"Spécial","Load example":"Charger l'exemple","Load Assembly only":"Charger uniquement l'assemblage","Load Firmware only":"Charger uniquement le microprogramme","Copy reference to clipboard":"Copier la référence dans le presse-papiers",Share:"Partager","No examples available...":"Aucun exemple disponible pour le matériel sélectionné","Simple example":"Exemple simple"};i18n.eltos.compiler.fr={"PROBLEM AROUND LINE":"Problème autour de la ligne","NO TAG OR DIRECTIVE":"balise attendu ou directive, mais à cet jeton à la place:","NO TAG, DIR OR INS":"Pas une balise valide (par exemple: tag1 :) directive (par exemple: .data) ou instruction, trouvée: ","INVALID TAG FORMAT":"Une étiquette doit suivre un format alphanumérique (en commençant par une lettre ou un trait de soulignement):","TAG OR INSTRUCTION":"Une étiquette ne peut pas avoir le même nom qu'une instruction:","REPEATED TAG":"tag répétée:","NO NUMERIC DATATYPE":"Valeur attendue pour le type de données numérique, mais trouvé:","NO POSITIVE NUMBER":"Attendu un nombre positif mais trouvé:","NO NUMBER OF BYTES":"Nombre prévu d'octets à réserver à l'.space mais a constaté:","INVALID ALIGN VALUE":"Le paramètre align prévu un nombre positif mais trouvé:","REMEMBER ALIGN VAL":"Rappelez-vous que le numéro est la puissance de deux pour l'alignement, consultez la documentation MIPS.","NOT CLOSED STRING":"Chaîne est non fermée (oublié d'y mettre fin avec guillemets)","NO QUOTATION MARKS":"chaîne attendue entre guillemets mais trouvé:","UNEXPECTED DATATYPE":"Unexpected Nom du type de données:","INVALID SEGMENT NAME":"Attendu .data / .text / ... segment, mais trouvé:","NO MAIN OR KMAIN":"de principal »ou « kmain » ne sont pas définis dans le segment de texte Tags (s). Il est obligatoire de définir au moins un de ces balises afin d'exécuter un programme","UNKNOWN 1":"Une erreur inconnue est survenue (1) pour le type de terrain:","UNKNOWN 2":"Erreur inattendue (2)","REMEMBER I. FORMAT":"Rappelez-vous que le format d'instruction a été définie comme suit:","SEVERAL CANDIDATES":"Instruction et champs correspondent à plus d'un microprogrammes. S'il vous plaît vérifier le microcode. À l'heure actuelle, le format d'instruction peut être:","NOT MATCH MICRO":"Instruction et les champs ne correspondent pas aux microprogrammes.","CHECK MICROCODE":"S'il vous plaît vérifier le microcode. Probablement vous avez oublié d'ajouter un champ, un certain nombre est hors de portée, ou vous venez d'utiliser une instruction erronée","LABEL NOT DEFINED":"Étiquette utilisée mais non définie dans le code de montage:","INS. MISSING FIELD":"Champ manquant dans l'instruction","UNEXPECTED (REG)":"Registre attendu, mais le registre entre parenthèses.","EXPECTED (REG)":"Registre prévu entre parenthèses mais trouvé: ","EXPECTED REG":"Registre prévu (par exemple: $1/$a0/...) mais a trouvé: ","UNKNOWN ESCAPE CHAR":"Caractère d'échappement inconnu","SPACE FOR # BITS":" bits en binaire mais il n'y a de l'espace que pour ",NEEDS:" nécessite ","UNKNOWN MC FORMAT":"(unknown format in microcode)","LABEL NOT FOUND":"Attendu ':' introuvable, a trouvé jeton:","REPEATED LABEL":"Étiquette se répète:","INVALID LABEL FORMAT":"Format d'étiquette est pas valable pour:","OPEN BRACE NOT FOUND":"Attendu '{' not found","CLOSE BRACE NOT FOUND":"Attendu '}' not found","OPEN PAREN. NOT FOUND":"Attendu '(' not found","CLOSE PAREN. NOT FOUND":"Attendu ')' not found","COMMA NOT FOUND":"Attendu '' not found","EQUAL NOT FOUND":"Attendu '=' not found","SIGNAL NOT EXISTS":"Signal n'existe pas:","SIGNAL NO DIRECTLY":"signal ne peut pas être utilisé directement, s'il vous plaît utiliser les signaux Unité de commande à la place.","INCORRECT BIN. FORMAT":"format binaire incorrect:","OUT OF RANGE":"Valeur hors de portée:","EMPTY MICROCODE":"vide microcode","EMPTY NAME LIST":"liste de noms vide pour le registre: x = []","DUPLICATE SP":"définition en double du pointeur de pile","NO SP":"stack_pointer prévue à jetons pas trouvé","UNDEF. INSTR.":"instruction non définie:","MORE 100 FIELDS":"Plus de 100 champs dans une seule instruction.","CO AS FIELD NAME":"champ d'instruction a « co » comme nom.","NW AS FIELD NAME":"champ d'instruction a « nwords » comme nom.","NO CO FIELD":"mot-clé attendu 'co' not found","INCORRECT CO BIN.":"format binaire incorrect sur 'co':","INCORRECT COP BIN.":"format binaire incorrect sur « flic »:","INVALID PARAMETER":"Paramètre invalide:","ALLOWED PARAMETER":"Il permet uniquement les champs suivants: reg, num, INM, adr, adresse","MISSING TOKEN ON":"« Jeton » est porté disparu après « ( » sur:","MISSING ) ON":"« ) » Est manquante sur:","CO ALREADY USED":"« Co » est déjà utilisé par:","CO+COP ALREADY USED":"« Co + op » est déjà utilisé par:","NO NWORDS":"mot-clé attendu 'nwords' not found","INCORRECT ADDRESSING":"Type d'adressage incorrectes (abs ou rel)","UNEXPECTED FIELD":"champ inattendu trouvé:","CHECK ORDER":"Veuillez vérifier l'ordre des champs","STARTBIT OoR":"startbit hors de portée:","STOPBIT OoR":"STOPBIT hors de portée:","OVERLAPPING FIELD":"terrain Chevauchement:","BAD COP BIN. LEN.":"longueur binaire incorrect pour « flic »:","SP NOT DEFINED":"registre pointeur pile n'a pas été défini","NO LABEL FETCH":"Label « chercher » non définie","NO LABEL BEGIN":"« Commencer » introuvable","NO CO CODES":"Il n'y a pas assez de codes « co » disponible pour les instructions","NO LABEL MADDR":"étiquette MADDR introuvable:","INS. NAME":"Nom de l'instruction: '","NOT VALID FOR":"'Est pas valable pour:","BIGGER THAN":"est plus grand que",BITS:"bits","EXPECTED VALUE":"Valeur attendue qui correspond à un '","BUT INSERTED":"mais inséré",INSTEAD:"au lieu",_last_:"_last_"};i18n.eltos.hw.fr={Component:"Composant",Element:"Élément","States (In)":"États (In)","States (Out)":"États (Out)",Signals:"Signaux","It has":"Il a",inputs:"entrées",outputs:"sorties",signals:"signaux",Graph:"Graphique",Text:"Texte","Graph: split view":"Graphique : vue fractionnée","Graph: interactive mode":"Graphique : mode interactif",name:"Nom",version:"version",abilities:"capacités",value:"valeur",default_value:"valeur par défaut",nbits:"nbits",type:"taper",visible:"visible","EP:CPU_T1:STATES:IN":"L'entrée est la valeur du registre MBR","EP:CPU_T1:STATES:OUT":"La sortie va au bus interne","EP:CPU_T1:SIGNALS:CTL":"Confirmez que la valeur d'entrée est copiée vers la sortie","EP:CPU_T2:STATES:IN":"L'entrée est la valeur du registre PC","EP:CPU_T2:STATES:OUT":"La sortie va au bus interne","EP:CPU_T2:SIGNALS:CTL":"Confirmez que la valeur d'entrée est copiée vers la sortie","EP:CPU_T3:STATES:IN":"L'entrée est la sortie du sélecteur-IR","EP:CPU_T3:STATES:OUT":"La sortie va au bus interne","EP:CPU_T3:SIGNALS:CTL":"Confirmez que la valeur d'entrée est copiée vers la sortie","EP:CPU_T4:STATES:IN":"L'entrée est la valeur du registre RT1","EP:CPU_T4:STATES:OUT":"La sortie va au bus interne","EP:CPU_T4:SIGNALS:CTL":"Confirmez que la valeur d'entrée est copiée vers la sortie","EP:CPU_T5:STATES:IN":"L'entrée est la valeur du registre RT2","EP:CPU_T5:STATES:OUT":"La sortie va au bus interne","EP:CPU_T5:SIGNALS:CTL":"Confirmez que la valeur d'entrée est copiée vers la sortie","EP:CPU_T6:STATES:IN":"L'entrée est la sortie ALU","EP:CPU_T6:STATES:OUT":"La sortie va au bus interne","EP:CPU_T6:SIGNALS:CTL":"Confirmez que la valeur d'entrée est copiée dans la sortie","EP:CPU_T7:STATES:IN":"L'entrée est la valeur du registre RT3","EP:CPU_T7:STATES:OUT":"La sortie va au bus interne","EP:CPU_T7:SIGNALS:CTL":"Confirmez que la valeur d'entrée est copiée dans la sortie","EP:CPU_T8:STATES:IN":"L'entrée est la valeur du registre SR","EP:CPU_T8:STATES:OUT":"La sortie va au bus interne","EP:CPU_T8:SIGNALS:CTL":"Confirmez que la valeur d'entrée est copiée dans la sortie","EP:CPU_T9:STATES:IN":"L'entrée est la valeur de la sortie du port A du fichier de registre","EP:CPU_T9:STATES:OUT":"La sortie va au bus interne","EP:CPU_T9:SIGNALS:CTL":"Confirmez que la valeur d'entrée est copiée vers la sortie","EP:CPU_T10:STATES:IN":"L'entrée est la valeur de la sortie du port B du fichier de registre","EP:CPU_T10:STATES:OUT":"La sortie va au bus interne","EP:CPU_T10:SIGNALS:CTL":"Confirmez que la valeur d'entrée est copiée vers la sortie","EP:CPU_T11:STATES:IN":"L'entrée est la sortie de la micro-instruction/ExCode","EP:CPU_T11:STATES:OUT":"La sortie va au bus interne","EP:CPU_T11:SIGNALS:CTL":"Confirmez que la valeur d'entrée est copiée dans la sortie","EP:CPU_T12:STATES:IN":"L'entrée est la sortie HPC (compteur de performance matérielle)","EP:CPU_T12:STATES:OUT":"La sortie va au bus interne","EP:CPU_T12:SIGNALS:CTL":"Confirmez que la valeur d'entrée est copiée dans la sortie","EP:CPU_TA:STATES:IN":"L'entrée est la sortie du registre MAR","EP:CPU_TA:STATES:OUT":"La sortie va au bus d'adresse","EP:CPU_TA:SIGNALS:CTL":"Confirmez que la valeur d'entrée est copiée dans la sortie","EP:CPU_TB:STATES:IN":"L'entrée est la sortie du sélecteur d'octets","EP:CPU_TB:STATES:OUT":"La sortie va au bus de données","EP:CPU_TB:SIGNALS:CTL":"Confirmez que la valeur d'entrée est copiée dans la sortie","EP:CPU_MUX_A:STATES:MUX_0":"Entrée 0 du MUX A, à partir du fichier de registre (A)","EP:CPU_MUX_A:STATES:MUX_1":"Entrée 1 du MUX A, du registre RT1","EP:CPU_MUX_A:STATES:MUX_O":"Sortie vers ALU, opérateur 0","EP:CPU_MUX_A:SIGNALS:MA":"Sélectionnez la valeur d'entrée à envoyer à la sortie","EP:CPU_MUX_B:STATES:MUX_0":"Entrée 0 du MUX B, à partir du fichier de registre (B)","EP:CPU_MUX_B:STATES:MUX_1":"Entrée 1 du MUX B, du registre RT2","EP:CPU_MUX_B:STATES:MUX_2":"Entrée 2 du MUX B, valeur 4","EP:CPU_MUX_B:STATES:MUX_3":"Entrée 3 du MUX B, valeur 1","EP:CPU_MUX_B:STATES:MUX_O":"Sortie vers ALU, opérateur 1","EP:CPU_MUX_B:SIGNALS:MB":"Sélectionnez la valeur d'entrée à envoyer à la sortie","EP:CPU_MUX_1:STATES:MUX_0":"Entrée 0 du MUX 1, du bus interne","EP:CPU_MUX_1:STATES:MUX_1":"Entrée 1 du MUX 1, du sélecteur d'octet","EP:CPU_MUX_1:STATES:MUX_O":"Sortie vers MBR, à partir du MUX 1","EP:CPU_MUX_1:SIGNALS:M1":"Sélectionnez la valeur d'entrée à envoyer à la sortie","EP:CPU_MUX_2:STATES:MUX_0":"Entrée 0 du MUX 2, du bus interne","EP:CPU_MUX_2:STATES:MUX_1":"Entrée 1 de MUX 2, PC + 4","EP:CPU_MUX_2:STATES:MUX_O":"Sortie vers PC","EP:CPU_MUX_2:SIGNALS:M2":"Sélectionnez la valeur d'entrée à envoyer à la sortie","EP:CPU_MUX_7:STATES:MUX_0":"Entrée 0 du MUX 7, du bus interne","EP:CPU_MUX_7:STATES:MUX_1":"Entrée 1 du MUX 7, du sélecteur de drapeau","EP:CPU_MUX_7:STATES:MUX_O":"Sortie pour enregistrer SR","EP:CPU_MUX_7:SIGNALS:M7":"Sélectionnez la valeur d'entrée à envoyer à la sortie","EP:CU_MUX_A:STATES:MUX_0":"Entrée 0 du MUX A, de microADDR + 1","EP:CU_MUX_A:STATES:MUX_1":"Entrée 1 du MUX A, de co2maddr","EP:CU_MUX_A:STATES:MUX_2":"Entrée 2 du MUX A, du microIR/MADDR","EP:CU_MUX_A:STATES:MUX_3":"Entrée 3 du MUX A, à partir de 0","EP:CU_MUX_A:STATES:MUX_O":"Sortie vers microADDR, du MUX A","EP:CU_MUX_A:SIGNALS:A0":"mIR/A0","EP:CU_MUX_A:SIGNALS:A1":"Sortie de l'unité de contrôle MUX B","EP:CU_MUX_B:STATES:MUX_0":"Entrée 0 du MUX B, du MUX C","EP:CU_MUX_B:STATES:MUX_1":"Entrée 1 du MUX B, de NOT (MUX C)","EP:CU_MUX_B:STATES:MUX_O":"Sortie vers MUX A/A1","EP:CU_MUX_B:SIGNALS:MB":"Sélectionnez la valeur d'entrée à envoyer à la sortie","EP:CU_MUX_C:STATES:MUX_0":"Entrée 0 du MUX C, à partir de 0","EP:CU_MUX_C:STATES:MUX_1":"Entrée 1 du MUX C, de INT","EP:CU_MUX_C:STATES:MUX_2":"Entrée 2 du MUX C, de IORdy","EP:CU_MUX_C:STATES:MUX_3":"Entrée 3 du MUX C, de MRdy","EP:CU_MUX_C:STATES:MUX_4":"Entrée 4 du MUX C, de SR/U","EP:CU_MUX_C:STATES:MUX_5":"Entrée 5 du MUX C, de SR/I","EP:CU_MUX_C:STATES:MUX_6":"Entrée 6 du MUX C, de SR/Z","EP:CU_MUX_C:STATES:MUX_7":"Entrée 7 du MUX C, de SR/N","EP:CU_MUX_C:STATES:MUX_8":"Entrée 8 du MUX C, de SR/V","EP:CU_MUX_C:STATES:MUX_9":"Entrée 9 du MUX C, de SR/C","EP:CU_MUX_C:STATES:MUX_10":"Entrée 10 du MUX C, depuis InEx","EP:CU_MUX_C:STATES:MUX_O":"Sortie vers MUX B","EP:CU_MUX_C:SIGNALS:CTL":"Sortie de l'unité de contrôle MUX C","EP:CU_MUX_RA:STATES:MUX_0":"Entrée 0 du MUX MR, de IR[SelA+0...SelA+4]","EP:CU_MUX_RA:STATES:MUX_1":"Entrée 1 du MUX MR, de SelA","EP:CU_MUX_RA:STATES:MUX_O":"Sortie vers RA","EP:CU_MUX_RA:SIGNALS:CTL":"Sélectionnez la valeur d'entrée à envoyer à la sortie","EP:CU_MUX_RB:STATES:MUX_0":"Entrée 0 du MUX MR, de IR[SelB+0...SelB+4]","EP:CU_MUX_RB:STATES:MUX_1":"Entrée 1 du MUX MR, de SelB","EP:CU_MUX_RB:STATES:MUX_O":"Sortie vers RB","EP:CU_MUX_RB:SIGNALS:MR":"Sélectionnez la valeur d'entrée à envoyer à la sortie","EP:CU_MUX_RC:STATES:MUX_0":"Entrée 0 du MUX MR, de IR[SelC+0...SelC+4]","EP:CU_MUX_RC:STATES:MUX_1":"Entrée 1 du MUX MR, de SelC","EP:CU_MUX_RC:STATES:MUX_O":"Sortie vers RC","EP:CU_MUX_RC:SIGNALS:MR":"Sélectionnez la valeur d'entrée à envoyer à la sortie","EP:CU_MUX_MC:STATES:MUX_0":"Entrée 0 du MUX MC, de IR3...IR0","EP:CU_MUX_MC:STATES:MUX_1":"Entrée 1 du MUX MC, de SelCop","EP:CU_MUX_MC:STATES:MUX_O":"Sortie vers COP","EP:CU_MUX_MC:SIGNALS:CTL":"Sélectionnez la valeur d'entrée à envoyer à la sortie","EP:CPU_MUX_H:STATES:MUX_0":"Entrée 0 du MUX H, du compteur de performances matérielles","EP:CPU_MUX_H:STATES:MUX_1":"Entrée 1 du MUX H, du compteur de performances matérielles","EP:CPU_MUX_H:STATES:MUX_2":"Entrée 2 du MUX H, du compteur de performances matérielles","EP:CPU_MUX_H:STATES:MUX_3":"Entrée 3 du MUX H, du compteur de performances matérielles","EP:CPU_MUX_H:STATES:MUX_O":"Sortie vers T12","EP:CPU_MUX_H:SIGNALS:MH":"Sélectionnez la valeur d'entrée à envoyer à la sortie","EP:MAR:STATES:IN":"L'entrée est le bus interne","EP:MAR:STATES:OUT":"La sortie va au tristate Ta","EP:MAR:SIGNALS:C0":"Confirmez que l'entrée est stockée","EP:MBR:STATES:IN":"L'entrée est la sortie M1","EP:MBR:STATES:OUT":"La sortie va au tristate T1","EP:MBR:SIGNALS:C1":"Confirmez que l'entrée est stockée","EP:PC:STATES:IN":"L'entrée est la sortie M2","EP:PC:STATES:OUT":"La sortie va au tristate T2","EP:PC:SIGNALS:CTL":"Confirmez que l'entrée est stockée","EP:IR:STATES:IN":"L'entrée est le bus interne","EP:IR:STATES:OUT":"La sortie va au sélecteur IR et à la CU","EP:IR:SIGNALS:C3":"Confirmez que l'entrée est stockée","EP:RT1:STATES:IN":"L'entrée est le bus interne","EP:RT1:STATES:OUT":"La sortie va au tristate T4","EP:RT1:SIGNALS:CTL":"Confirmez que l'entrée est stockée","EP:RT2:STATES:IN":"L'entrée est le bus interne","EP:RT2:STATES:OUT":"La sortie va au tristate T5","EP:RT2:SIGNALS:CTL":"Confirmez que l'entrée est stockée","EP:RT3:STATES:IN":"L'entrée est la sortie de l'ALU","EP:RT3:STATES:OUT":"La sortie va au tristate T7","EP:RT3:SIGNALS:CTL":"Confirmez que l'entrée est stockée","EP:SR:STATES:IN":"L'entrée est la sortie du M7","EP:SR:STATES:OUT":"La sortie va à l'entrée T8 et à la CU","EP:SR:SIGNALS:CTL":"Confirmez que l'entrée est stockée","EP:REGISTER_FILE:STATES:A":"Sortie de RF vers T9 et MA/0","EP:REGISTER_FILE:STATES:B":"Sortie de RF vers T10 et MB/0","EP:REGISTER_FILE:STATES:C":"Entrée vers RF à partir du bus interne","EP:REGISTER_FILE:SIGNALS:RA":"Sélectionnez le registre dont la valeur est envoyée à A","EP:REGISTER_FILE:SIGNALS:RB":"Sélectionnez le registre dont la valeur est envoyée à B","EP:REGISTER_FILE:SIGNALS:RC":"Sélectionnez le registre où la valeur de C est stockée","EP:REGISTER_FILE:SIGNALS:LC":"Confirmez que RC va être mis à jour","EP:CPU_ALU:STATES:A":"Sortie du multiplexeur MUX A","EP:CPU_ALU:STATES:B":"Sortie du multiplexeur MUX B","EP:CPU_ALU:STATES:ALU":"Le résultat va à l'entrée de T6 et RT3","EP:CPU_ALU:STATES:FLAGS":"Mises à jour des drapeaux C,V,N,Z","EP:CPU_ALU:SIGNALS:COP":"Code opération (+, -, *, ...)","EP:SELECT_SR:STATES:MUX_1":"Entrée 1 de SELECT-SR, drapeau U","EP:SELECT_SR:STATES:MUX_2":"Entrée 2 de SELECT-SR, je flag","EP:SELECT_SR:STATES:MUX_3":"Entrée 3 de SELECT-SR, flags C V N Z","EP:SELECT_SR:STATES:MUX_O":"Sortie vers MUX 7/1","EP:SELECT_SR:SIGNALS:SELP":"Sélectionnez la valeur d'entrée à envoyer à la sortie","EP:SELECT_IR:STATES:MUX_I":"Entrée de SELECT-IR depuis IR","EP:SELECT_IR:STATES:MUX_O":"Sortie vers le bus interne via T3","EP:SELECT_IR:SIGNALS:SE":"Signer l'extension","EP:SELECT_IR:SIGNALS:SIZE":"Taille","EP:SELECT_IR:SIGNALS:OFFSET":"Décalage","EP:BYTE_SELECTOR:STATES:FROM_MBR":"Entrée du registre MBR","EP:BYTE_SELECTOR:STATES:FROM_DATA":"Entrée du bus de données","EP:BYTE_SELECTOR:STATES:BE":"Sortie vers BE","EP:BYTE_SELECTOR:STATES:TO_MBR":"Sortie vers M1/1","EP:BYTE_SELECTOR:STATES:TO_TD":"Sortie vers Td/entrée","EP:BYTE_SELECTOR:SIGNALS:W":"Écrire dans la mémoire principale","EP:BYTE_SELECTOR:SIGNALS:SE":"Signer l'extension","EP:BYTE_SELECTOR:SIGNALS:A1A0":"A1A0","EP:BYTE_SELECTOR:SIGNALS:BW":"Nombre d'octets à emballer","EP:MEMORY:STATES:ADDR":"Bus d'adresses","EP:MEMORY:STATES:DATA":"Bus de données","EP:MEMORY:STATES:MRDY":"Mémoire prête","EP:MEMORY:SIGNALS:BE":"BW+A1A0","EP:MEMORY:SIGNALS:R":"Lire","EP:MEMORY:SIGNALS:W":"Ecrire","EP:IO:STATES:ADDR":"Bus d'adresses","EP:IO:STATES:DATA":"Bus de données","EP:IO:SIGNALS:IOR":"Lire depuis le périphérique IO","EP:IO:SIGNALS:IOW":"Écrire dans le périphérique IO","EP:KEYBOARD:STATES:ADDR":"Bus d'adresses","EP:KEYBOARD:STATES:DATA":"Bus de données","EP:KEYBOARD:SIGNALS:IOR":"Lire depuis le clavier","EP:DISPLAY:STATES:ADDR":"Bus d'adresses","EP:DISPLAY:STATES:DATA":"Bus de données","EP:DISPLAY:SIGNALS:IOR":"Lire à partir de l'affichage (désactivé)","EP:DISPLAY:SIGNALS:IOW":"Écrire dans l'écran","EP:L3D:STATES:ADDR":"Bus d'adresses","EP:L3D:STATES:DATA":"Bus de données","EP:L3D:SIGNALS:IOR":"Lire depuis L3D","EP:L3D:SIGNALS:IOW":"Écrire dans le L3D","EP:LEDM:STATES:ADDR":"Bus d'adresses","EP:LEDM:STATES:DATA":"Bus de données","EP:LEDM:SIGNALS:IOR":"Lire depuis LEDM","EP:LEDM:SIGNALS:IOW":"Écrire dans le LEDM","POC:CPU_T1:STATES:IN":"L'entrée est la valeur du registre MBR","POC:CPU_T1:STATES:OUT":"La sortie va au bus interne","POC:CPU_T1:SIGNALS:CTL":"Confirmez que la sortie est connectée à l'entrée","POC:CPU_T2:STATES:IN":"L'entrée est la sortie du registre PC","POC:CPU_T2:STATES:OUT":"La sortie va au bus interne","POC:CPU_T2:SIGNALS:CTL":"Confirmez que la sortie est connectée à l'entrée","POC:CPU_T3:STATES:IN":"L'entrée est le sélecteur de sortie du registre IR","POC:CPU_T3:STATES:OUT":"La sortie va au bus interne","POC:CPU_T3:SIGNALS:CTL":"Confirmez que la sortie est connectée à l'entrée","POC:CPU_T6:STATES:IN":"L'entrée est la sortie ALU","POC:CPU_T6:STATES:OUT":"La sortie va au bus interne","POC:CPU_T6:SIGNALS:CTL":"Confirmez que la sortie est connectée à l'entrée","POC:CPU_T8:STATES:IN":"L'entrée est la sortie du registre SR","POC:CPU_T8:STATES:OUT":"La sortie va au bus interne","POC:CPU_T8:SIGNALS:CTL":"Confirmez que la sortie est connectée à l'entrée","POC:CPU_T9:STATES:IN":"L'entrée est la sortie sur le port A du fichier registre","POC:CPU_T9:STATES:OUT":"La sortie va au bus interne","POC:CPU_T9:SIGNALS:CTL":"Confirmez que la sortie est connectée à l'entrée","POC:CPU_T10:STATES:IN":"L'entrée est la sortie sur le port B du fichier registre","POC:CPU_T10:STATES:OUT":"La sortie va au bus interne","POC:CPU_T10:SIGNALS:CTL":"Confirmez que la sortie est connectée à l'entrée","POC:CPU_T11:STATES:IN":"L'entrée est la sortie MIR/ExCode","POC:CPU_T11:STATES:OUT":"La sortie va au bus interne","POC:CPU_T11:SIGNALS:CTL":"Confirmez que la sortie est connectée à l'entrée","POC:CPU_TA:STATES:IN":"L'entrée est la sortie du registre MAR","POC:CPU_TA:STATES:OUT":"La sortie va au bus d'adresse","POC:CPU_TA:SIGNALS:CTL":"Confirmez que la sortie est connectée à l'entrée","POC:CPU_TB:STATES:IN":"L'entrée est la sortie du sélecteur d'octet","POC:CPU_TB:STATES:OUT":"La sortie va au bus de données","POC:CPU_TB:SIGNALS:CTL":"Confirmez que la sortie est connectée à l'entrée","POC:CPU_MUX_A:STATES:MUX_0":"Entrée 0 du MUX A, de RF/A","POC:CPU_MUX_A:STATES:MUX_1":"Entrée 1 du MUX A, du bus interne","POC:CPU_MUX_A:STATES:MUX_O":"Sortie vers ALU/0, depuis MUX A","POC:CPU_MUX_A:SIGNALS:MA":"Sélectionnez la valeur d'entrée à envoyer à la sortie","POC:CPU_MUX_B:STATES:MUX_0":"Entrée 0 du MUX B, de RF/B","POC:CPU_MUX_B:STATES:MUX_1":"Entrée 1 du MUX B, du PC","POC:CPU_MUX_B:STATES:MUX_O":"Sortie vers ALU/1, depuis MUX B","POC:CPU_MUX_B:SIGNALS:MB":"Sélectionnez la valeur d'entrée à envoyer à la sortie","POC:CPU_MUX_1:STATES:MUX_0":"Entrée 0 du MUX 1, du bus interne","POC:CPU_MUX_1:STATES:MUX_1":"Entrée 1 du MUX 1, du bus de données","POC:CPU_MUX_1:STATES:MUX_O":"Sortie vers MBR, à partir du MUX 1","POC:CPU_MUX_1:SIGNALS:M1":"Sélectionnez la valeur d'entrée à envoyer à la sortie","POC:CPU_MUX_7:STATES:MUX_0":"Entrée 0 du MUX 7, du bus interne","POC:CPU_MUX_7:STATES:MUX_1":"Entrée 1 du MUX 7, du sélecteur de drapeau","POC:CPU_MUX_7:STATES:MUX_O":"Sortie vers SR, à partir de MUX 7","POC:CPU_MUX_7:SIGNALS:M7":"Sélectionnez la valeur d'entrée à envoyer à la sortie","POC:CU_MUX_A:STATES:MUX_0":"Entrée 0 du MUX A, de mADDR + 1","POC:CU_MUX_A:STATES:MUX_1":"Entrée 1 du MUX A, de co2maddr","POC:CU_MUX_A:STATES:MUX_2":"Entrée 2 du MUX A, de mIR/MADDR","POC:CU_MUX_A:STATES:MUX_3":"Entrée 3 du MUX A, à partir de 0","POC:CU_MUX_A:STATES:MUX_O":"Sortie vers mADDR, du MUX A","POC:CU_MUX_A:SIGNALS:A0":"mIR/A0","POC:CU_MUX_A:SIGNALS:A1":"Sortie de l'unité de contrôle MUX B","POC:CU_MUX_B:STATES:MUX_0":"Entrée 0 du MUX B, du MUX C","POC:CU_MUX_B:STATES:MUX_1":"Entrée 1 du MUX B, de NOT (MUX C)","POC:CU_MUX_B:STATES:MUX_O":"Sortie vers MUX A/A1, depuis MUX B","POC:CU_MUX_B:SIGNALS:MB":"Sélectionnez la valeur d'entrée à envoyer à la sortie","POC:CU_MUX_C:STATES:MUX_0":"Entrée 0 du MUX C, à partir de 0","POC:CU_MUX_C:STATES:MUX_1":"Entrée 1 du MUX C, de INT","POC:CU_MUX_C:STATES:MUX_2":"Entrée 2 du MUX C, de IORdy","POC:CU_MUX_C:STATES:MUX_3":"Entrée 3 du MUX C, de MRdy","POC:CU_MUX_C:STATES:MUX_4":"Entrée 4 du MUX C, de SR/U","POC:CU_MUX_C:STATES:MUX_5":"Entrée 5 du MUX C, de SR/I","POC:CU_MUX_C:STATES:MUX_6":"Entrée 6 du MUX C, de SR/Z","POC:CU_MUX_C:STATES:MUX_7":"Entrée 7 du MUX C, de SR/N","POC:CU_MUX_C:STATES:MUX_8":"Entrée 8 du MUX C, de SR/V","POC:CU_MUX_C:STATES:MUX_9":"Entrée 9 du MUX C, de SR/C","POC:CU_MUX_C:STATES:MUX_10":"Entrée 10 du MUX C, depuis InEx","POC:CU_MUX_C:STATES:MUX_O":"Sortie vers MUX B","POC:CU_MUX_C:SIGNALS:CTL":"Sortie de l'unité de contrôle MUX C","POC:CU_MUX_RA:STATES:MUX_0":"Entrée 0 du MUX MR, de IR[SelA+0...SelA+4]","POC:CU_MUX_RA:STATES:MUX_1":"Entrée 1 du MUX MR, de SelA","POC:CU_MUX_RA:STATES:MUX_O":"Sortie vers RA","POC:CU_MUX_RA:SIGNALS:CTL":"Sélectionnez la valeur d'entrée à envoyer à la sortie","POC:CU_MUX_RB:STATES:MUX_0":"Entrée 0 du MUX MR, de IR[SelB+0...SelB+4]","POC:CU_MUX_RB:STATES:MUX_1":"Inpu t 1 du MUX MR, de SelB","POC:CU_MUX_RB:STATES:MUX_O":"Sortie vers RB","POC:CU_MUX_RB:SIGNALS:MR":"Sélectionnez la valeur d'entrée à envoyer à la sortie","POC:CU_MUX_RC:STATES:MUX_0":"Entrée 0 du MUX MR, de IR[SelC+0...SelC+4]","POC:CU_MUX_RC:STATES:MUX_1":"Entrée 1 du MUX MR, de SelC","POC:CU_MUX_RC:STATES:MUX_O":"Sortie vers RC","POC:CU_MUX_RC:SIGNALS:MR":"Sélectionnez la valeur d'entrée à envoyer à la sortie","POC:CU_MUX_MC:STATES:MUX_0":"Entrée 0 du MUX MC, de IR3...IR0","POC:CU_MUX_MC:STATES:MUX_1":"Entrée 1 du MUX MC, de SelCop","POC:CU_MUX_MC:STATES:MUX_O":"Sortie vers COP","POC:CU_MUX_MC:SIGNALS:CTL":"Sélectionnez la valeur d'entrée à envoyer à la sortie","POC:MAR:STATES:IN":"L'entrée est le bus interne","POC:MAR:STATES:OUT":"La sortie va au tristate Ta","POC:MAR:SIGNALS:C0":"Confirmez que l'entrée est stockée","POC:MBR:STATES:IN":"L'entrée est la sortie M1","POC:MBR:STATES:OUT":"La sortie va au tristate T1","POC:MBR:SIGNALS:C1":"Confirmez que l'entrée est stockée","POC:PC:STATES:IN":"L'entrée est le bus interne","POC:PC:STATES:OUT":"La sortie va au tristate T2","POC:PC:SIGNALS:CTL":"Confirmez que l'entrée est stockée","POC:IR:STATES:IN":"L'entrée est le bus interne","POC:IR:STATES:OUT":"La sortie va au sélecteur IR et à la CU","POC:IR:SIGNALS:C3":"Confirmez que l'entrée est stockée","POC:RT1:STATES:IN":"L'entrée est le bus interne","POC:RT1:STATES:OUT":"La sortie va au select-rt1","POC:RT1:SIGNALS:CTL":"Confirmez que l'entrée est stockée","POC:SR:STATES:IN":"L'entrée est la sortie du M7","POC:SR:STATES:OUT":"La sortie va à l'entrée T8 et à la CU","POC:SR:SIGNALS:CTL":"Confirmez que l'entrée est stockée","POC:REGISTER_FILE:STATES:A":"Sortie de RF vers T9 et MA/0","POC:REGISTER_FILE:STATES:B":"Sortie de RF vers T10 et MB/0","POC:REGISTER_FILE:STATES:C":"Entrée vers RF depuis le bus interne","POC:REGISTER_FILE:SIGNALS:RA":"Sélectionnez le registre dont la valeur est envoyée à A","POC:REGISTER_FILE:SIGNALS:RB":"Sélectionnez le registre dont la valeur est envoyée à B","POC:REGISTER_FILE:SIGNALS:RC":"Sélectionnez le registre où la valeur de C est stockée","POC:REGISTER_FILE:SIGNALS:LC":"Confirmez que RC va être mis à jour","POC:CPU_ALU:STATES:A":"Sortie du multiplexeur MUX A","POC:CPU_ALU:STATES:B":"Sortie du multiplexeur MUX B","POC:CPU_ALU:STATES:ALU":"Le résultat va à l'entrée de T6 et RT3","POC:CPU_ALU:STATES:FLAGS":"Drapeaux C,V,N,Z mis à jour","POC:CPU_ALU:SIGNALS:COP":"Code opération (+, -, *, ...)","POC:SELECT_RT1:STATES:MUX_I":"Entrée de SELECT-RT1 depuis RT1","POC:SELECT_RT1:STATES:MUX_O":"Sortie vers le bus interne via T3","POC:SELECT_RT1:SIGNALS:SE":"Signer l'extension","POC:SELECT_RT1:SIGNALS:SIZE":"Taille","POC:SELECT_RT1:SIGNALS:OFFSET":"Décalage","POC:MEMORY:STATES:ADDR":"Bus d'adresses","POC:MEMORY:STATES:DATA":"Bus de données","POC:MEMORY:STATES:MRDY":"Mémoire prête","POC:MEMORY:SIGNALS:BW":"Largeur d'octets","POC:MEMORY:SIGNALS:R":"Lire","POC:MEMORY:SIGNALS:W":"Ecrire","POC:IO:STATES:ADDR":"Bus d'adresses","POC:IO:STATES:DATA":"Bus de données","POC:IO:SIGNALS:IOR":"Lire depuis le périphérique IO","POC:IO:SIGNALS:IOW":"Écrire dans le périphérique IO","POC:KEYBOARD:STATES:ADDR":"Bus d'adresses","POC:KEYBOARD:STATES:DATA":"Bus de données","POC:KEYBOARD:SIGNALS:IOR":"Lire depuis le clavier","POC:DISPLAY:STATES:ADDR":"Bus d'adresses","POC:DISPLAY:STATES:DATA":"Bus de données","POC:DISPLAY:SIGNALS:IOR":"Lire depuis l'écran (désactivé)","POC:DISPLAY:SIGNALS:IOW":"Écrire dans l'écran","POC:L3D:STATES:ADDR":"Bus d'adresses","POC:L3D:STATES:DATA":"Bus de données","POC:L3D:SIGNALS:IOR":"Lire depuis L3D","POC:L3D:SIGNALS:IOW":"Écrire dans le L3D",_last_:"_last_"};i18n.eltos.dialogs.fr={"Show/Hide ActionBar":"Afficher/masquer la barre d'action","Show/Hide Slider":"Afficher/masquer le curseur","WepSIM User Interface skin":"Apparence de l'interface utilisateur WepSIM","Initial intro":"Intro initiale","About WepSIM":"À propos de WepSIM",Title:"Titre",Message:"Message",Duration:"Durée","Confirm remove record...":"Voulez-vous supprimer l'enregistrement en cours?","Close or Reset...":"Cliquez sur Fermer pour le conserver, ou cliquez sur le bouton Réinitialiser pour le supprimer.","Sure Control Memory...":"Voulez-vous que je sauvegarde le contenu actuel de la mémoire de contrôle plutôt que le contenu de l'éditeur?.","Show/Hide labels":"Afficher/masquer les étiquettes","Show/Hide content":"Afficher/masquer le contenu","Show/Hide assembly":"Afficher/masquer l'assemblage","Show/Hide pseudo-instructions":"Afficher/masquer les pseudo-instructions",Close:"Fermer",details:"détails",idiom:"idiome",_last_:"_last_"};i18n.eltos.gui.kr={"Loading WepSIM...":"WepSIM로드 중...",About:"소개",Configuration:"구성",MicroCode:"마이크로 코드",Assembly:"어셈블리",Simulator:"모의 실험 장치",Examples:"예제들",Load:"하중",Save:"구하다","Load/Save":"하중/구하다",Restore:"복원",Help:"도움",Notifications:"알림",RecordBar:"기록 막대",Input:"입력",Output:"산출",Reload:"재 장전",Checkpoint:"검문소","Help Index":"도움말 색인",Processor:"프로세서","Assembly Debugger":"어셈블리 디버거",Reset:"다시 놓기",microInstruction:"µ교수",Instruction:"교수",Run:"조업","Hardware Summary":"하드웨어 요약",processor:"프로세서",details:"세부",microcode:"마이크로 코드",Signals:"신호",Behaviors:"행동",States:"주","Control States":"제어 상태",Dependencies:"종속성",Close:"닫기",Description:"기술",Show:"보여주기","Show Main Memory":"주 메모리보기",compile:"보여주기",Compile:"보여주기","Please write the file name":"파일 이름을 적어주세요.","Load from this File":"이 파일에서로드",labels:"라벨",addr:"주소",ess:" ",content:"함유량",assembly:"어셈블리",instructions:"명령","simulator intro 1":"사용할 하드웨어를 선택할 수 있습니다. 기본 하드웨어는 EP (Elemental Processor) 하드웨어입니다. 모드 선택기 를 반환하십시오.","simulator intro 2":"그런 다음 마이크로 코드 (명령 세트 정의)와 어셈블리 코드를로드해야합니다. 예 , 파일에서로드 또는 새로운 마이크로 코드 및 새로운 어셈블리 코드 .","simulator intro 3":"마지막으로, 시뮬레이터에서 이전에로드 된 마이크로 코드와 어셈블리를 실행할 수 있습니다. 마이크로 명령 레벨이나 어셈블리 명령 레벨에서 둘 다 실행할 수 있습니다.","Prev.":"너무 이른",Next:"다음 것",End:"끝","Disable tutorial mode":"자습서 모드 사용 안함",Comment:"의견을 남기다",Pause:"일시 정지하다",Play:"연주하다",Stop:"그치다",Record:"기록하다",Registers:"등록부","Control Memory":"제어 메모리",Stats:"통계",Memory:"기억","Keyboard+Display":"키보드 + 표시","I/O Stats":"E/S 통계","I/O Configuration":"E/S 구성",Recent:"충적세",Welcome:"환영합니다",Refresh:"새롭게 하다","Microcode & Assembly":"WepSIM 하드웨어","Pick firm/soft":"에서 펌웨어 / 소프트웨어 선택",Information:"정보 출처",Native:"원주민","MIPS32-like":"MIPS32와 같은 코드",RISCV32:"RISCV32 코드","Z80-like":"Z80와 같은 코드",Actions:"행위",Utilities:"유용","Information from":"정보","Pick firm/soft from":"회사 / 소프트 선택","Welcome tutorial":"환영 튜토리얼","Assembly only":"조립 만","Micro & Assembly":"마이크로 및 조립",idiom:"언어","quick config":"빠른 구성","Graph: quick interactive mode":"그래프: 빠른 대화형 모드",_last_:"_last_"};i18n.eltos.tutorial_welcome.kr={title_0:"WepSIM 시뮬레이터에 오신 것을 환영합니다",message_0:" "+""+"
",title_1:"몇 가지 예제를로드하는 방법",message_1:" "+""+"
"+" '예제'버튼을 클릭하고 예제 'title'이름을 클릭하십시오. "+"그런 다음 마이크로 코드 및 어셈블리 예제가로드되고 마이크로 컴파일되고 컴파일됩니다. "+" "+" ",title_2:"예제를 실행하는 방법.",message_2:" "+""+"
"+"다음 명령어/마이크로 명령어를 클릭하면 단계별로 실행됩니다. "+"첫 번째 중단 점이나 어셈블리 프로그램이 끝날 때까지 실행하려면 실행 버튼을 클릭하십시오."+" "+" ",title_3:"WepSIM을 구성하는 방법",message_3:" "+""+"
"+" '구성'버튼을 클릭하면 사용자가 WepSIM의 다른 부분을 사용자 정의 할 수 있습니다."+" "+" ",title_4:"기본 도움말을 얻는 방법",message_4:" "+""+"
"+"녹색 '도움말'버튼을 클릭하면 도움말 대화 상자가 나타납니다. "+"관용구 (스페인어/영어)를 전환하거나 도움말 색인으로 이동하거나 도움말 대화 상자를 닫을 수 있습니다."+" "+" ",title_5:"WepSIM에 오신 것을 환영합니다",message_5:" "+""+"
"+"자세한 내용은 도움말 섹션을 탐색하십시오. "+"이 튜토리얼의 끝 버튼을 클릭하면 WepSIM이 첫 번째 예제를로드합니다. 즐기십시오!"+" "+" "};i18n.eltos.tutorial_simpleusage.kr={title_0:"간단한 WepSIM 경험 : 마이크로 프로그래밍 및 프로그래밍",message_0:" "+""+"
",title_1:"간단한 WepSIM 경험 : 마이크로 프로그래밍 및 프로그래밍",message_1:" "+""+"
"+"첫 번째 단계는 사용할 펌웨어를 마이크로 프로그래밍하는 것입니다. "+"마이크로 코드 화면으로 전환하려면 '마이크로 코드'버튼을 사용하십시오."+" ",title_2:"간단한 WepSIM 경험 : 마이크로 프로그래밍 및 프로그래밍",message_2:" "+""+"
"+"마이크로 프로그래밍 화면은 다음을 제공합니다."+""+" 마이크로 코드 편집기. "+" 마이크로 컴파일러. "+" 하드웨어 요약 및 도움. "+" "+"일단 코드가 준비되면 (오류없이 컴파일 된) 다음 단계는 어셈블리 화면으로 이동하는 것입니다."+" ",title_3:"간단한 WepSIM 경험 : 마이크로 프로그래밍 및 프로그래밍",message_3:" "+""+"
"+"두 번째 단계는 실행될 어셈블리를 프로그래밍하는 것입니다. "+"시뮬레이터 화면이나 마이크로 코드 화면에서 '어셈블리'버튼을 사용하십시오."+" ",title_4:"간단한 WepSIM 경험 : 마이크로 프로그래밍 및 프로그래밍",message_4:" "+""+"
"+"프로그래밍 화면에서는 다음을 제공합니다."+""+" 어셈블리 코드 편집기. "+" 어셈블리 컴파일러. "+" 메모리 맵 뷰어 및 도움말. "+" "+"일단 당신의 assebly 코드가 준비되면 (오류없이 편집되고 컴파일 된) 다음 단계는 시뮬레이션 화면으로 들어가는 것입니다."+" ",title_5:"간단한 WepSIM 경험 : 마이크로 프로그래밍 및 프로그래밍",message_5:" "+""+"
"+"세 번째 단계는 시뮬레이터에서 어셈블리 코드를 실행하는 것입니다. "+"시뮬레이터 화면은 다음을 제공합니다 :"+""+" 어셈블리 및 하드웨어보기 "+" 레지스터, 제어 메모리, 메인 메모리 등의 상세보기 "+" 단계별로 재설정하거나 중단 점/종료 작업까지 실행하십시오. "+" "+"이 튜토리얼은 학생 및 교사를위한 WepSIM의 일반적인 사용법을 소개했습니다. WepSIM을 즐기십시오!"+" "};i18n.eltos.tour_intro.kr={step1:"WepSIM을 사용하면 컴퓨터 작동 방식을 더 잘 이해할 수 있습니다."+"시각적이며 대화 형이며 신호에서 중단, 시스템 호출, 예외 등을 통합합니다."+" "+"우리는 WepSIM이 혁신적인 교육 도구라고 믿습니다."+"이 간단한 둘러보기는 인터페이스의 핵심 요소를 소개합니다.",step2:"오른쪽 상단의이 버튼은 다른 '작업 모드'에 대한 빠른 액세스 메뉴입니다. "+" "+"사용자는 다음을 선택할 수 있습니다."+""+" 사용할 하드웨어 (예 : EP 프로세서 등) "+" 정수 MIPS32 또는 RISC-V32 명령어가있는 어셈블리 전용 모드"+" ",step3:"오른쪽 상단의 '도움말'버튼을 누르면 관련 대화 상자가 열립니다. "+" "+"도움말 대화 상자는 자습서, 설명, 정보 등을 요약합니다.",step4:"왼쪽에는 'examples' 버튼이 예제 대화 상자를 엽니 다. "+" "+"점진적으로 배우는 데 사용할 수있는 많은 예가 있습니다.",step5:"왼쪽 상단에 'configuration' 버튼이 구성 대화 상자를 엽니 다. +"+" "+"사용자가 실행, 사용자 인터페이스, 환경 설정 등의 여러 측면을 적용 할 수있게 해줍니다.",step6:"축하합니다! WepSIM 인터페이스의 핵심 요소를 알고 계십니다. "+" '도움말'대화 상자에서 '환영 자습서'에 액세스하여 학습을 계속할 수 있습니다. "};i18n.eltos.cfg.kr={General:"일반","Idiom for help, examples, etc.":"도움, 예제 등을위한 관용구","Notification speed: time before disapear":"알림 속도 : 사라지기 전의 시간","Dark Mode":"다크 모드",Editor:"편집자","Editor theme: light or dark":"편집기 테마 : 밝거나 어두움",Light:"빛",Dark:"어두운","Editor mode: vim, emacs, etc.":"편집기 모드 : vim, emacs 등",Execution:"실행","Running speed: execution speed":"실행 속도 : 실행 속도",Slow:"느린",Normal:"표준",Fast:"빠른","Step-by-step: element in run mode":"단계별 : 실행 모드의 요소",Instructions:"교수",Instruction:"교수","µinstructions":"µ교수",microInstruction:"µ교수","Breakpoint icon: icon to be used for breakpoints":"중단 점 아이콘 : 중단 점에 사용될 아이콘","Limit instructions: number of instructions to be executed":"제한 명령어 : 실행될 명령어의 수","Limit instruction ticks: to limit clock ticks":"명령어 틱 제한 : 명령어 당 클록 틱 제한","Register file":"등록 파일","Display format":"표시 형식","Register file names":"파일 이름 등록",Numbers:"번호",Labels:"레이블","Editable registers: edit register file values":"편집 가능한 레지스터 : 레지스터 파일 값 편집","Circuitry simulation":"회로 시뮬레이션","Data-path color":"데이터 경로 색상","Signal color":"신호 색상","Show by value or by activation":"가치 또는 활성화로 보여라",Value:"가치",Activation:"활성화","Interactive mode: signal value can be updated":"대화 형 모드 : 신호 값을 업데이트 할 수 있습니다","Quick interactive mode: quick update of signal value":"빠른 대화 형 모드 : 신호 값의 빠른 업데이트","(example)":"(예)",Accesibility:"접근성","Beginner view":"초보자보기","Auto-scroll while executing":"실행 중 자동 스크롤","Active voice: external voice control":"활성 음성 : 외부 음성 제어","Verbalization: textual or mathematical":"언어학 : 텍스트 또는 수학","WepSIM User Interface views":"WepSIM 사용자 인터페이스보기",Privacy:"은둔",On:"On",Off:"Off",_last_:"_last_"};i18n.eltos.help.kr={"Welcome tutorial":"환영 자습서",help_01_01:"환영하는 자습서 열기","Simple usage tutorial":"간단한 사용법 자습서",help_01_02:"마이크로 프로그래밍 및 어셈블리 프로그래밍을위한 간단한 사용법 자습서 열기","Execute example":"Execute example",help_01_03:"Play the execute example tutorial","Simulator: firmware":"시뮬레이터 : 펌웨어",help_02_01:"펌웨어를 제어 메모리에로드하는 방법","Microcode format":"마이크로 코드 형식",help_02_02:"사용 된 마이크로 코드의 구문","Simulator: assembly":"시뮬레이터 : 어셈블리",help_02_03:"앞서 언급 한 펌웨어를 사용하는 어셈블리 작업 방법","Assembly format":"어셈블리 형식",help_02_04:"어셈블리 요소의 구문","Simulator: execution":"시뮬레이터 : 실행",help_02_05:"시뮬레이터가 어셈블리 및 펌웨어를 실행할 수있는 방법","Simulated architecture":"시뮬레이션 된 아키텍처",help_03_01:"시뮬레이트 된 프로세서 아키텍처에 대한 설명","Simulated signals":"시뮬레이션 된 신호",help_03_02:"시뮬레이션 된 기본 프로세서의 주요 신호 요약","Hardware summary":"하드웨어 요약",help_03_03:"시뮬레이트 된 기본 프로세서 하드웨어에 대한 참조 카드","License, platforms, etc.":"라이센스, 플랫폼 등",help_04_01:"WEPSIM 라이센스, 지원 플랫폼, 사용 된 기술",Authors:"저자",help_04_02:"WepSIM의 저자"};i18n.eltos.states.kr={States:"주",state:"상태",Current:"현재","Current State":"현재 상태",History:"역사",None:"없음","Empty history":"비어있는 기록","Empty (only modified values are shown)":"비어 있음 (수정 된 값만 표시됨)",Differences:"차이점","differences with clipboard state":"클립 보드 상태와의 차이점","Meets the specified requirements":"지정된 요구 사항 충족",history:"역사",Add:"추가","'Current State' to History":"역사에 ''현재 국가 ",Check:"확인",Copy:"복사","to clipboard":"클립 보드에",Checkpoint:"검사 점","File name":"파일 이름","Tag for checkpoint":"검사 점을위한 태그","File to be loaded":"로드 할 파일","Save to File":"파일에 저장","State(s) to checkpoint":"검사 점의 상태","Record to checkpoint":"체크 포인트에 기록","Browser cache":"브라우저 캐시","Session to be restore":"복원 할 세션",_last_:"_last_"};i18n.eltos.examples.kr={"addv + seqv.":"addv + seqv.","Alloc.s":"Alloc.s","Dummy instruction":"Dummy instruction",Exception:"Exception",Instructions:"Instructions",Interruptions:"Interruptions","Int. + syscall + except.":"Int. + syscall + except.","I/O":"I/O",Looping:"Looping","madd, mmul, mxch":"madd, mmul, mxch","Masks & shift":"Masks & shift",Matrix:"Matrix","Memory access":"Memory access","SC 1, 4-5, 8, 11-12":"SC 1, 4-5, 8, 11-12",Subrutine:"Subrutine","syscall 1, 4-5, 8, 11-12":"syscall 1, 4-5, 8, 11-12","System call":"System call",Threads:"Threads",Vector:"Vector","Compiler Explorer":"Compiler Explorer",Instructive:"유익한 ",example_04_01:"중단, 시스템 호출 및 예외가있는 고급 예제",example_05_01:"응용 프로그램 관련 확장 프로그램 : addv + seqv.",example_05_03:"응용 프로그램 관련 확장 프로그램 : madd + mmul + mxch.",example_03_01:"부동 소수점 예외가있는 실용적인 예제",example_03_02:"인터럽트를 지원하는 지침적인 예 : fetch, RETI 및 .ktext/.kdata.",example_03_03:"시스템 호출을 지원하는 지침적인 예",example_03_04:"간단한 스택 규칙을 사용한 예제.",example_04_04:"malloc + free 예제",example_04_02:"정수 및 문자열 인쇄/읽기 용 syscall 예제",example_04_03:"스레드의 예",example_03_01b:"부동 소수점 예외가있는 예",example_03_02b:"중단이있는 예 : fetch, RETI 및 .ktext/.kdata.",example_02_01:"프로그래밍 된 I/O 액세스 및 기본. 텍스트 /. 데이터 세그먼트가있는 예",example_03_03b:"시스템 호출 지원 예제",example_02_02:"더 많은 지침과 I/O (키보드, 디스플레이)가있는 확장 예제.",example_02_04:"서브 루틴 및 행렬이있는 확장 된 예제",example_02_03:"마스크, 시프트 및 기본. 텍스트 /. 데이터 세그먼트가있는 확장 된 예제입니다.",example_01_01:"가져 오기, 산술 명령어 및 기본. 텍스트 세그먼트가있는 간단한 예제입니다.",example_01_04:"가져 오기, 분기 및 기본. 텍스트 /. 데이터 세그먼트가있는 간단한 예제입니다.",example_01_03:"가져 오기, 분기 및 기본 .text 세그먼트가있는 간단한 예제입니다.",example_01_02:"가져 오기, 메모리 액세스 및 기본. 텍스트 /. 데이터 세그먼트가있는 간단한 예제입니다.",example_06_01:"테스트 예.",example_06_02:"간단한 컴파일러 탐색기 예제.",Advanced:"많은",Initial:"머리 글자",Intermediate:"중급",Laboratory:"실험실","Operating Systems":"운영체제",Extra:"보너스",Special:"특별한","Load example":"로드 예제","Load Assembly only":"로드 어셈블리 전용","Load Firmware only":"펌웨어로드 전용","Copy reference to clipboard":"클립 보드에 참조 복사",Share:"몫","No examples available...":"선택한 하드웨어에 대한 예제가 없습니다","Simple example":"간단한 예"};i18n.eltos.compiler.ko={"PROBLEM AROUND LINE":"라인 주변의 문제","NO TAG OR DIRECTIVE":"태그 또는 지시 예상하지만,이 대신 토큰을 발견 : ","NO TAG, DIR OR INS":"유효한 태그 (예 : tag1 :) 지시문 (예 : .data) 또는 명령어가 없습니다.: ","INVALID TAG FORMAT":"태그는 (문자 나 밑줄로 시작하는) 영숫자 형식을 따라야합니다 : ","TAG OR INSTRUCTION":"태그는 명령과 동일한 이름을 가질 수 없습니다 : ","REPEATED TAG":"반복 태그 : ","NO NUMERIC DATATYPE":"수치 데이터 만 발견에 대한 기대 값 : ","NO POSITIVE NUMBER":"양수를 예상하지만, 발견","NO NUMBER OF BYTES":"바이트의 예상 수는 .space에 예약 만 발견합니다 : ","INVALID ALIGN VALUE":"양수하지만 발견으로 정렬 매개 변수는 예상 : ","REMEMBER ALIGN VAL":"MIPS 설명서를 참조하십시오, 그 숫자는 정렬을위한 두 가지의 힘을 기억하십시오.","NOT CLOSED STRING":"문자열이 닫혀 있지 않습니다 (인용 부호로 종료하는 것을 잊었다)","NO QUOTATION MARKS":"인용 부호하지만 발견과 예상 문자열 : ","UNEXPECTED DATATYPE":"예기치 않은 데이터 유형 이름 : ","INVALID SEGMENT NAME":".DATA /는 .text / ... 세그먼트 예상하지만 발견 : ","NO MAIN OR KMAIN":"태그 '주'또는 'KMAIN'는 텍스트 세그먼트 (들)에 정의되어 있지 않습니다. 이 프로그램을 실행하기 위해 해당 태그 중 적어도 하나를 정의하는 의무","UNKNOWN 1":"알 수없는 오류가 필드 유형 (1) 발생","UNKNOWN 2":"예기치 못한 오류 (2)","REMEMBER I. FORMAT":"명령어 형식은 다음과 같이 정의되어 있는지 기억 : ","SEVERAL CANDIDATES":"수업 및 필드는 하나 이상의 마이크로 프로그램과 일치합니다. 마이크로 코드를 확인하시기 바랍니다. 현재 명령의 형식은 다음과 같습니다","NOT MATCH MICRO":"수업 및 필드는 마이크로 프로그램과 일치하지 않습니다.","CHECK MICROCODE":"마이크로 코드를 확인하시기 바랍니다. 아마 당신은 필드를 추가하는 것을 잊었다 숫자는 공간에 맞지 않는, 또는 당신은 단지 잘못된 명령을 사용","LABEL NOT DEFINED":"레이블 어셈블리 코드에 정의되지 않고 사용 : ","INS. MISSING FIELD":"명령어에서 필드 누락","UNEXPECTED (REG)":"레지스터를 예상하지만, 괄호 사이에 레지스터를 발견했다.","EXPECTED (REG)":"괄호하지만 발견 사이의 예상 레지스터 :","EXPECTED REG":"예상 레지스터 (예를 들어 : $1/$a0/...)하지만 발견","UNKNOWN ESCAPE CHAR":"알 수없는 이스케이프 문자","SPACE FOR # BITS":" 이진 비트이지만 공간이 있습니다 ",NEEDS:" 필요해 ","UNKNOWN MC FORMAT":"(unknown format in microcode)","LABEL NOT FOUND":"'<레이블> :'예상 찾을 수없는 토큰 발견","REPEATED LABEL":"라벨이 반복된다 : ","INVALID LABEL FORMAT":"라벨 형식이 유효하지 않습니다 : ","OPEN BRACE NOT FOUND":"예상 '{'을 (를) 찾을 수 없습니다","CLOSE BRACE NOT FOUND":"'}'예상을 찾을 수 없습니다","OPEN PAREN. NOT FOUND":"'('예상을 찾을 수 없습니다","CLOSE PAREN. NOT FOUND":"')'예상을 찾을 수 없습니다","COMMA NOT FOUND":"예상 ','을 (를) 찾을 수 없습니다","EQUAL NOT FOUND":"'='예상을 찾을 수 없습니다","SIGNAL NOT EXISTS":"신호가없는 존재하지 않습니다 : ","SIGNAL NO DIRECTLY":"신호가 직접 사용할 수 없습니다, 대신 제어 장치의 신호를 사용하십시오.","INCORRECT BIN. FORMAT":"잘못된 바이너리 형식 : ","OUT OF RANGE":"값이 범위를 벗어 : ","EMPTY MICROCODE":"빈 마이크로","EMPTY NAME LIST":"레지스터 이름 빈리스트 : X = []","DUPLICATE SP":"스택 포인터의 중복 정의","NO SP":"예상 stack_pointer를 찾을 수 없습니다 토큰","UNDEF. INSTR.":"정의되지 않은 명령어 : ","MORE 100 FIELDS":"단일 명령에 100 개 이상의 필드.","CO AS FIELD NAME":"명령 필드는 이름으로 '공동'이있다.","NW AS FIELD NAME":"명령 필드는 'nwords'이름이있다.","NO CO FIELD":"발견되지 예상 키워드 '공동'","INCORRECT CO BIN.":"'공동'에 대한 잘못된 바이너리 형식 : ","INCORRECT COP BIN.":"'경찰'에 대한 잘못된 바이너리 형식 : ","INVALID PARAMETER":"잘못된 매개 변수: ","ALLOWED PARAMETER":"등록, NUM, INM, 요지, 주소 : 그것은 단지 다음과 같은 필드가 있습니다","MISSING TOKEN ON":"'토큰'에 '('실종입니다 : ","MISSING ) ON":"')을'에 누락되었습니다","CO ALREADY USED":"'공동'는 이미 의해 사용된다 : ","CO+COP ALREADY USED":"'+ 연산 공동는'이미 의해 사용된다 : ","NO NWORDS":"발견되지 예상 키워드 'nwords'","INCORRECT ADDRESSING":"잘못된 (절대치 또는 REL을) 주소의 입력","UNEXPECTED FIELD":"예기치 않은 필드를 찾을 수 : ","CHECK ORDER":"필드 순서를 확인하세요.","STARTBIT OoR":"범위를 벗어 startbit : ","STOPBIT OoR":"범위를 벗어 stopbit : ","OVERLAPPING FIELD":"필드 겹치는 : ","BAD COP BIN. LEN.":"'경찰'에 대한 잘못된 진 길이 : ","SP NOT DEFINED":"스택 포인터 레지스터가 정의되지 않았습니다","NO LABEL FETCH":"라벨 정의되지 않은 '가져 오기'","NO LABEL BEGIN":"를 찾을 수 없습니다 '시작'","NO CO CODES":"지침은 충분히 '공동'코드를 사용할 수 없다","NO LABEL MADDR":"MADDR 레이블을 찾을 수 없습니다 : ","INS. NAME":"명령 이름 '","NOT VALID FOR":"'유효하지 않습니다 : ","BIGGER THAN":"보다 큰",BITS:"비트","EXPECTED VALUE":"예상 값하는에 맞는 '","BUT INSERTED":"하지만 삽입",INSTEAD:"대신",_last_:"_last_"};i18n.eltos.hw.kr={Component:"구성 요소",Element:"요소","States (In)":"상태 (In)","States (Out)":"상태 (Out)",Signals:"신호","It has":"그것은 가지고있다",inputs:"입력",outputs:"출력",signals:"신호",Graph:"그래픽",Text:"텍스트","Graph: split view":"그래프: 분할 보기","Graph: interactive mode":"그래프: 대화형 모드",name:"이름",version:"버전",abilities:"능력",value:"값",default_value:"기본값",nbits:"nbits",type:"유형",visible:"보이는","EP:CPU_T1:STATES:IN":"입력은 MBR 레지스터의 값입니다.","EP:CPU_T1:STATES:OUT":"출력이 내부 버스로 간다","EP:CPU_T1:SIGNALS:CTL":"입력값이 출력으로 복사되었는지 확인","EP:CPU_T2:STATES:IN":"입력은 PC 레지스터의 값입니다.","EP:CPU_T2:STATES:OUT":"출력이 내부 버스로 간다","EP:CPU_T2:SIGNALS:CTL":"입력값이 출력으로 복사되었는지 확인","EP:CPU_T3:STATES:IN":"입력은 선택기-IR의 출력입니다.","EP:CPU_T3:STATES:OUT":"출력이 내부 버스로 이동합니다.","EP:CPU_T3:SIGNALS:CTL":"입력값이 출력으로 복사되었는지 확인","EP:CPU_T4:STATES:IN":"입력은 RT1 레지스터의 값입니다.","EP:CPU_T4:STATES:OUT":"출력이 내부 버스로 이동합니다.","EP:CPU_T4:SIGNALS:CTL":"입력값이 출력으로 복사되었는지 확인","EP:CPU_T5:STATES:IN":"입력은 RT2 레지스터의 값입니다.","EP:CPU_T5:STATES:OUT":"출력은 내부 버스로 간다","EP:CPU_T5:SIGNALS:CTL":"입력 값이 출력에 복사되었는지 확인","EP:CPU_T6:STATES:IN":"입력은 ALU 출력입니다.","EP:CPU_T6:STATES:OUT":"출력이 내부 버스로 이동합니다.","EP:CPU_T6:SIGNALS:CTL":"입력값이 출력으로 복사되었는지 확인","EP:CPU_T7:STATES:IN":"입력은 RT3 레지스터의 값입니다.","EP:CPU_T7:STATES:OUT":"출력이 내부 버스로 이동합니다.","EP:CPU_T7:SIGNALS:CTL":"입력값이 출력으로 복사되었는지 확인","EP:CPU_T8:STATES:IN":"입력은 SR 레지스터의 값입니다","EP:CPU_T8:STATES:OUT":"출력이 내부 버스로 이동합니다.","EP:CPU_T8:SIGNALS:CTL":"입력값이 출력으로 복사되었는지 확인","EP:CPU_T9:STATES:IN":"입력은 레지스터 파일 포트 A 출력의 값입니다.","EP:CPU_T9:STATES:OUT":"출력이 내부 버스로 이동합니다.","EP:CPU_T9:SIGNALS:CTL":"입력값이 출력으로 복사되었는지 확인","EP:CPU_T10:STATES:IN":"입력은 레지스터 파일 포트 B 출력의 값입니다.","EP:CPU_T10:STATES:OUT":"출력이 내부 버스로 이동합니다.","EP:CPU_T10:SIGNALS:CTL":"입력값이 출력으로 복사되었는지 확인","EP:CPU_T11:STATES:IN":"입력은 마이크로 명령어/ExCode 출력입니다.","EP:CPU_T11:STATES:OUT":"출력이 내부 버스로 이동합니다.","EP:CPU_T11:SIGNALS:CTL":"입력값이 출력으로 복사되었는지 확인","EP:CPU_T12:STATES:IN":"입력은 HPC(하드웨어 성능 카운터) 출력입니다.","EP:CPU_T12:STATES:OUT":"출력이 내부 버스로 이동합니다.","EP:CPU_T12:SIGNALS:CTL":"입력값이 출력으로 복사되었는지 확인","EP:CPU_TA:STATES:IN":"입력은 MAR 레지스터 출력입니다.","EP:CPU_TA:STATES:OUT":"출력이 주소 버스로 이동합니다.","EP:CPU_TA:SIGNALS:CTL":"입력 값이 출력에 복사되었는지 확인","EP:CPU_TB:STATES:IN":"입력은 바이트 선택기 출력입니다.","EP:CPU_TB:STATES:OUT":"출력이 데이터 버스로 이동합니다.","EP:CPU_TB:SIGNALS:CTL":"입력 값이 출력에 복사되었는지 확인","EP:CPU_MUX_A:STATES:MUX_0":"레지스터 파일(A)에서 MUX A의 0을 입력하십시오.","EP:CPU_MUX_A:STATES:MUX_1":"RT1 레지스터에서 MUX A의 입력 1","EP:CPU_MUX_A:STATES:MUX_O":"ALU에 출력, 연산자 0","EP:CPU_MUX_A:SIGNALS:MA":"출력으로 보낼 입력 값 선택","EP:CPU_MUX_B:STATES:MUX_0":"레지스터 파일(B)에서 MUX B의 0을 입력하십시오.","EP:CPU_MUX_B:STATES:MUX_1":"RT2 레지스터에서 MUX B의 입력 1","EP:CPU_MUX_B:STATES:MUX_2":"MUX B의 입력 2, 값 4","EP:CPU_MUX_B:STATES:MUX_3":"MUX B의 입력 3, 값 1","EP:CPU_MUX_B:STATES:MUX_O":"ALU에 출력, 연산자 1","EP:CPU_MUX_B:SIGNALS:MB":"출력으로 보낼 입력 값 선택","EP:CPU_MUX_1:STATES:MUX_0":"내부 버스에서 MUX 1의 입력 0","EP:CPU_MUX_1:STATES:MUX_1":"바이트 선택기에서 MUX 1의 입력 1","EP:CPU_MUX_1:STATES:MUX_O":"MUX 1에서 MBR로 출력","EP:CPU_MUX_1:SIGNALS:M1":"출력으로 보낼 입력 값 선택","EP:CPU_MUX_2:STATES:MUX_0":"내부 버스에서 MUX 2의 입력 0","EP:CPU_MUX_2:STATES:MUX_1":"MUX 2의 입력 1, PC + 4","EP:CPU_MUX_2:STATES:MUX_O":"PC로 출력","EP:CPU_MUX_2:SIGNALS:M2":"출력으로 보낼 입력 값 선택","EP:CPU_MUX_7:STATES:MUX_0":"내부 버스에서 MUX 7의 입력 0","EP:CPU_MUX_7:STATES:MUX_1":"플래그 선택기에서 MUX 7의 입력 1","EP:CPU_MUX_7:STATES:MUX_O":"SR을 등록하기 위한 출력","EP:CPU_MUX_7:SIGNALS:M7":"출력으로 보낼 입력 값 선택","EP:CU_MUX_A:STATES:MUX_0":"microADDR + 1에서 MUX A의 0 입력","EP:CU_MUX_A:STATES:MUX_1":"co2maddr에서 MUX A의 입력 1","EP:CU_MUX_A:STATES:MUX_2":"microIR/MADDR에서 MUX A의 입력 2","EP:CU_MUX_A:STATES:MUX_3":"0에서 MUX A의 3을 입력합니다.","EP:CU_MUX_A:STATES:MUX_O":"MUX A에서 microADDR로 출력","EP:CU_MUX_A:SIGNALS:A0":"mIR/A0","EP:CU_MUX_A:SIGNALS:A1":"제어 장치 MUX B의 출력","EP:CU_MUX_B:STATES:MUX_0":"MUX C에서 MUX B의 입력 0","EP:CU_MUX_B:STATES:MUX_1":"NOT(MUX C)에서 MUX B의 입력 1","EP:CU_MUX_B:STATES:MUX_O":"MUX A/A1로 출력","EP:CU_MUX_B:SIGNALS:MB":"출력으로 보낼 입력 값 선택","EP:CU_MUX_C:STATES:MUX_0":"MUX C의 0을 0에서 입력","EP:CU_MUX_C:STATES:MUX_1":"INT에서 MUX C의 입력 1","EP:CU_MUX_C:STATES:MUX_2":"IORdy에서 MUX C의 입력 2","EP:CU_MUX_C:STATES:MUX_3":"MRdy에서 MUX C의 입력 3","EP:CU_MUX_C:STATES:MUX_4":"SR/U에서 MUX C의 입력 4","EP:CU_MUX_C:STATES:MUX_5":"SR/I에서 MUX C의 입력 5","EP:CU_MUX_C:STATES:MUX_6":"SR/Z에서 MUX C의 입력 6","EP:CU_MUX_C:STATES:MUX_7":"SR/N에서 MUX C의 7번 입력","EP:CU_MUX_C:STATES:MUX_8":"SR/V에서 MUX C의 입력 8","EP:CU_MUX_C:STATES:MUX_9":"SR/C에서 MUX C의 9번 입력","EP:CU_MUX_C:STATES:MUX_10":"InEx에서 MUX C의 10번 입력","EP:CU_MUX_C:STATES:MUX_O":"MUX B로 출력","EP:CU_MUX_C:SIGNALS:CTL":"제어 장치 MUX C의 출력","EP:CU_MUX_RA:STATES:MUX_0":"IR[SelA+0...SelA+4]에서 MUX MR의 입력 0","EP:CU_MUX_RA:STATES:MUX_1":"SelA에서 MUX MR의 입력 1","EP:CU_MUX_RA:STATES:MUX_O":"RA로 출력","EP:CU_MUX_RA:SIGNALS:CTL":"출력으로 보낼 입력 값 선택","EP:CU_MUX_RB:STATES:MUX_0":"IR[SelB+0...SelB+4]에서 MUX MR의 입력 0","EP:CU_MUX_RB:STATES:MUX_1":"SelB에서 MUX MR의 입력 1","EP:CU_MUX_RB:STATES:MUX_O":"RB로 출력","EP:CU_MUX_RB:SIGNALS:MR":"출력으로 보낼 입력 값 선택","EP:CU_MUX_RC:STATES:MUX_0":"IR[SelC+0...SelC+4]에서 MUX MR의 0을 입력합니다.","EP:CU_MUX_RC:STATES:MUX_1":"SelC에서 MUX MR의 입력 1","EP:CU_MUX_RC:STATES:MUX_O":"RC로 출력","EP:CU_MUX_RC:SIGNALS:MR":"출력으로 보낼 입력 값 선택","EP:CU_MUX_MC:STATES:MUX_0":"IR3...IR0에서 MUX MC의 입력 0","EP:CU_MUX_MC:STATES:MUX_1":"SelCop에서 MUX MC의 입력 1","EP:CU_MUX_MC:STATES:MUX_O":"COP에 출력","EP:CU_MUX_MC:SIGNALS:CTL":"출력으로 보낼 입력 값 선택","EP:CPU_MUX_H:STATES:MUX_0":"하드웨어 성능 카운터의 MUX H의 입력 0","EP:CPU_MUX_H:STATES:MUX_1":"하드웨어 성능 카운터의 MUX H의 입력 1","EP:CPU_MUX_H:STATES:MUX_2":"하드웨어 성능 카운터의 MUX H의 입력 2","EP:CPU_MUX_H:STATES:MUX_3":"하드웨어 성능 카운터의 MUX H의 입력 3","EP:CPU_MUX_H:STATES:MUX_O":"T12로 출력","EP:CPU_MUX_H:SIGNALS:MH":"출력으로 보낼 입력 값 선택","EP:MAR:STATES:IN":"입력은 내부 버스입니다","EP:MAR:STATES:OUT":"출력이 Ta tristate로 이동합니다.","EP:MAR:SIGNALS:C0":"입력이 저장되었는지 확인","EP:MBR:STATES:IN":"입력은 M1 출력입니다.","EP:MBR:STATES:OUT":"출력이 T1 tristate로 이동합니다.","EP:MBR:SIGNALS:C1":"입력이 저장되었는지 확인","EP:PC:STATES:IN":"입력은 M2 출력입니다.","EP:PC:STATES:OUT":"출력이 T2 tristate로 이동합니다.","EP:PC:SIGNALS:CTL":"입력이 저장되었는지 확인","EP:IR:STATES:IN":"입력은 내부 버스입니다","EP:IR:STATES:OUT":"출력은 IR 선택기와 CU로 간다","EP:IR:SIGNALS:C3":"입력이 저장되었는지 확인","EP:RT1:STATES:IN":"입력은 내부 버스입니다","EP:RT1:STATES:OUT":"출력이 T4 tristate로 이동합니다.","EP:RT1:SIGNALS:CTL":"입력이 저장되었는지 확인","EP:RT2:STATES:IN":"입력은 내부 버스입니다","EP:RT2:STATES:OUT":"출력이 T5 tristate로 이동합니다.","EP:RT2:SIGNALS:CTL":"입력이 저장되었는지 확인","EP:RT3:STATES:IN":"입력은 ALU의 출력입니다.","EP:RT3:STATES:OUT":"출력이 T7 tristate로 이동합니다.","EP:RT3:SIGNALS:CTL":"입력이 저장되었는지 확인","EP:SR:STATES:IN":"입력은 M7의 출력입니다","EP:SR:STATES:OUT":"출력이 T8 입력 및 CU로 이동합니다.","EP:SR:SIGNALS:CTL":"입력이 저장되었는지 확인","EP:REGISTER_FILE:STATES:A":"T9 및 MA/0에 대한 RF 출력","EP:REGISTER_FILE:STATES:B":"T10 및 MB/0에 대한 RF 출력","EP:REGISTER_FILE:STATES:C":"내부 버스에서 RF로 입력","EP:REGISTER_FILE:SIGNALS:RA":"A에 값을 보낼 레지스터를 선택하십시오.","EP:REGISTER_FILE:SIGNALS:RB":"B에 값을 보낼 레지스터 선택","EP:REGISTER_FILE:SIGNALS:RC":"C 값이 저장된 레지스터를 선택하십시오.","EP:REGISTER_FILE:SIGNALS:LC":"RC가 업데이트될 것인지 확인","EP:CPU_ALU:STATES:A":"MUX A 멀티플렉서의 출력","EP:CPU_ALU:STATES:B":"MUX B 멀티플렉서의 출력","EP:CPU_ALU:STATES:ALU":"결과는 T6 및 RT3의 입력으로 이동합니다.","EP:CPU_ALU:STATES:FLAGS":"C,V,N,Z 플래그 업데이트","EP:CPU_ALU:SIGNALS:COP":"작업 코드(+, -, *, ...)","EP:SELECT_SR:STATES:MUX_1":"SELECT-SR, U 플래그의 입력 1","EP:SELECT_SR:STATES:MUX_2":"SELECT-SR의 입력 2, I 플래그","EP:SELECT_SR:STATES:MUX_3":"SELECT-SR의 입력 3, 플래그 C V N Z","EP:SELECT_SR:STATES:MUX_O":"MUX 7/1로 출력","EP:SELECT_SR:SIGNALS:SELP":"출력으로 보낼 입력 값 선택","EP:SELECT_IR:STATES:MUX_I":"IR에서 SELECT-IR 입력","EP:SELECT_IR:STATES:MUX_O":"T3을 통해 내부 버스로 출력","EP:SELECT_IR:SIGNALS:SE":"서명 확장","EP:SELECT_IR:SIGNALS:SIZE":"크기","EP:SELECT_IR:SIGNALS:OFFSET":"오프셋","EP:BYTE_SELECTOR:STATES:FROM_MBR":"MBR 레지스터에서 입력","EP:BYTE_SELECTOR:STATES:FROM_DATA":"데이터 버스에서 입력","EP:BYTE_SELECTOR:STATES:BE":"BE로 출력","EP:BYTE_SELECTOR:STATES:TO_MBR":"M1/1로 출력","EP:BYTE_SELECTOR:STATES:TO_TD":"Td로 출력/입력","EP:BYTE_SELECTOR:SIGNALS:W":"메인 메모리에 쓰기","EP:BYTE_SELECTOR:SIGNALS:SE":"서명 확장","EP:BYTE_SELECTOR:SIGNALS:A1A0":"A1A0","EP:BYTE_SELECTOR:SIGNALS:BW":"팩할 바이트 수","EP:MEMORY:STATES:ADDR":"주소 버스","EP:MEMORY:STATES:DATA":"데이터 버스","EP:MEMORY:STATES:MRDY":"메모리 준비됨","EP:MEMORY:SIGNALS:BE":"BW+A1A0","EP:MEMORY:SIGNALS:R":"읽기","EP:MEMORY:SIGNALS:W":"쓰기","EP:IO:STATES:ADDR":"주소 버스","EP:IO:STATES:DATA":"데이터 버스","EP:IO:SIGNALS:IOR":"IO 장치에서 읽기","EP:IO:SIGNALS:IOW":"IO 장치에 쓰기","EP:KEYBOARD:STATES:ADDR":"주소 버스","EP:KEYBOARD:STATES:DATA":"데이터 버스","EP:KEYBOARD:SIGNALS:IOR":"키보드에서 읽기","EP:DISPLAY:STATES:ADDR":"주소 버스","EP:DISPLAY:STATES:DATA":"데이터 버스","EP:DISPLAY:SIGNALS:IOR":"디스플레이에서 읽기(비활성화)","EP:DISPLAY:SIGNALS:IOW":"디스플레이에 쓰기","EP:L3D:STATES:ADDR":"주소 버스","EP:L3D:STATES:DATA":"데이터 버스","EP:L3D:SIGNALS:IOR":"L3D에서 읽기","EP:L3D:SIGNALS:IOW":"L3D에 쓰기","EP:LEDM:STATES:ADDR":"주소 버스","EP:LEDM:STATES:DATA":"데이터 버스","EP:LEDM:SIGNALS:IOR":"LEDM에서 읽기","EP:LEDM:SIGNALS:IOW":"LEDM에 쓰기","POC:CPU_T1:STATES:IN":"입력은 MBR 레지스터의 값입니다.","POC:CPU_T1:STATES:OUT":"출력이 내부 버스로 이동합니다.","POC:CPU_T1:SIGNALS:CTL":"출력이 입력에 연결되었는지 확인","POC:CPU_T2:STATES:IN":"입력은 PC 레지스터 출력입니다.","POC:CPU_T2:STATES:OUT":"출력이 내부 버스로 이동합니다.","POC:CPU_T2:SIGNALS:CTL":"출력이 입력에 연결되었는지 확인","POC:CPU_T3:STATES:IN":"입력은 IR 레지스터 출력 선택기입니다.","POC:CPU_T3:STATES:OUT":"출력이 내부 버스로 간다","POC:CPU_T3:SIGNALS:CTL":"출력이 입력에 연결되었는지 확인","POC:CPU_T6:STATES:IN":"입력은 ALU 출력입니다.","POC:CPU_T6:STATES:OUT":"출력이 내부 버스로 이동합니다.","POC:CPU_T6:SIGNALS:CTL":"출력이 입력에 연결되었는지 확인","POC:CPU_T8:STATES:IN":"입력은 SR 레지스터 출력입니다.","POC:CPU_T8:STATES:OUT":"출력이 내부 버스로 간다","POC:CPU_T8:SIGNALS:CTL":"출력이 입력에 연결되었는지 확인","POC:CPU_T9:STATES:IN":"입력은 레지스터 파일의 포트 A에 대한 출력입니다.","POC:CPU_T9:STATES:OUT":"출력이 내부 버스로 간다","POC:CPU_T9:SIGNALS:CTL":"출력이 입력에 연결되었는지 확인","POC:CPU_T10:STATES:IN":"입력은 레지스터 파일의 포트 B에 대한 출력입니다.","POC:CPU_T10:STATES:OUT":"출력이 내부 버스로 이동합니다.","POC:CPU_T10:SIGNALS:CTL":"출력이 입력에 연결되었는지 확인","POC:CPU_T11:STATES:IN":"입력은 MIR/ExCode 출력입니다.","POC:CPU_T11:STATES:OUT":"출력이 내부 버스로 간다","POC:CPU_T11:SIGNALS:CTL":"출력이 입력에 연결되었는지 확인","POC:CPU_TA:STATES:IN":"입력은 MAR 레지스터 출력입니다.","POC:CPU_TA:STATES:OUT":"출력이 주소 버스로 이동합니다.","POC:CPU_TA:SIGNALS:CTL":"출력이 입력에 연결되어 있는지 확인","POC:CPU_TB:STATES:IN":"입력은 바이트 선택기 출력입니다.","POC:CPU_TB:STATES:OUT":"출력이 데이터 버스로 이동합니다.","POC:CPU_TB:SIGNALS:CTL":"출력이 입력에 연결되었는지 확인","POC:CPU_MUX_A:STATES:MUX_0":"RF/A에서 MUX A의 0 입력","POC:CPU_MUX_A:STATES:MUX_1":"내부 버스에서 MUX A의 입력 1","POC:CPU_MUX_A:STATES:MUX_O":"MUX A에서 ALU/0으로 출력","POC:CPU_MUX_A:SIGNALS:MA":"출력으로 보낼 입력 값 선택","POC:CPU_MUX_B:STATES:MUX_0":"RF/B에서 MUX B의 0 입력","POC:CPU_MUX_B:STATES:MUX_1":"PC에서 MUX B의 입력 1","POC:CPU_MUX_B:STATES:MUX_O":"MUX B에서 ALU/1로 출력","POC:CPU_MUX_B:SIGNALS:MB":"출력으로 보낼 입력 값 선택","POC:CPU_MUX_1:STATES:MUX_0":"내부 버스에서 MUX 1의 입력 0","POC:CPU_MUX_1:STATES:MUX_1":"데이터 버스에서 MUX 1의 입력 1","POC:CPU_MUX_1:STATES:MUX_O":"MUX 1에서 MBR로 출력","POC:CPU_MUX_1:SIGNALS:M1":"출력으로 보낼 입력 값 선택","POC:CPU_MUX_7:STATES:MUX_0":"내부 버스에서 MUX 7의 입력 0","POC:CPU_MUX_7:STATES:MUX_1":"플래그 선택기에서 MUX 7의 입력 1","POC:CPU_MUX_7:STATES:MUX_O":"MUX 7에서 SR로 출력","POC:CPU_MUX_7:SIGNALS:M7":"출력으로 보낼 입력 값 선택","POC:CU_MUX_A:STATES:MUX_0":"mADDR + 1에서 MUX A의 0을 입력","POC:CU_MUX_A:STATES:MUX_1":"co2maddr에서 MUX A의 입력 1","POC:CU_MUX_A:STATES:MUX_2":"mIR/MADDR에서 MUX A의 입력 2","POC:CU_MUX_A:STATES:MUX_3":"MUX A의 입력 3, 0부터","POC:CU_MUX_A:STATES:MUX_O":"MUX A에서 mADDR로 출력","POC:CU_MUX_A:SIGNALS:A0":"mIR/A0","POC:CU_MUX_A:SIGNALS:A1":"제어 장치 MUX B의 출력","POC:CU_MUX_B:STATES:MUX_0":"MUX C에서 MUX B의 입력 0","POC:CU_MUX_B:STATES:MUX_1":"NOT(MUX C)에서 MUX B의 입력 1","POC:CU_MUX_B:STATES:MUX_O":"MUX B에서 MUX A/A1로 출력","POC:CU_MUX_B:SIGNALS:MB":"출력으로 보낼 입력 값 선택","POC:CU_MUX_C:STATES:MUX_0":"0에서 MUX C의 0을 입력하십시오.","POC:CU_MUX_C:STATES:MUX_1":"INT에서 MUX C의 입력 1","POC:CU_MUX_C:STATES:MUX_2":"IORdy에서 MUX C의 입력 2","POC:CU_MUX_C:STATES:MUX_3":"MRdy에서 MUX C의 입력 3","POC:CU_MUX_C:STATES:MUX_4":"SR/U에서 MUX C의 4번 입력","POC:CU_MUX_C:STATES:MUX_5":"SR/I에서 MUX C의 입력 5","POC:CU_MUX_C:STATES:MUX_6":"SR/Z에서 MUX C의 입력 6","POC:CU_MUX_C:STATES:MUX_7":"SR/N에서 MUX C의 7번 입력","POC:CU_MUX_C:STATES:MUX_8":"SR/V에서 MUX C의 8번 입력","POC:CU_MUX_C:STATES:MUX_9":"SR/C에서 MUX C의 9번 입력","POC:CU_MUX_C:STATES:MUX_10":"InEx에서 MUX C의 10번 입력","POC:CU_MUX_C:STATES:MUX_O":"MUX B로 출력","POC:CU_MUX_C:SIGNALS:CTL":"제어 장치 MUX C의 출력","POC:CU_MUX_RA:STATES:MUX_0":"IR[SelA+0...SelA+4]에서 MUX MR의 입력 0","POC:CU_MUX_RA:STATES:MUX_1":"SelA에서 MUX MR의 입력 1","POC:CU_MUX_RA:STATES:MUX_O":"RA로 출력","POC:CU_MUX_RA:SIGNALS:CTL":"출력으로 보낼 입력 값 선택","POC:CU_MUX_RB:STATES:MUX_0":"IR[SelB+0...SelB+4]에서 MUX MR의 입력 0","POC:CU_MUX_RB:STATES:MUX_1":"입력 SelB의 MUX MR 중 1개","POC:CU_MUX_RB:STATES:MUX_O":"RB로 출력","POC:CU_MUX_RB:SIGNALS:MR":"출력으로 보낼 입력 값 선택","POC:CU_MUX_RC:STATES:MUX_0":"IR[SelC+0...SelC+4]에서 MUX MR의 입력 0","POC:CU_MUX_RC:STATES:MUX_1":"SelC에서 MUX MR의 입력 1","POC:CU_MUX_RC:STATES:MUX_O":"RC로 출력","POC:CU_MUX_RC:SIGNALS:MR":"출력으로 보낼 입력 값 선택","POC:CU_MUX_MC:STATES:MUX_0":"IR3...IR0에서 MUX MC의 0 입력","POC:CU_MUX_MC:STATES:MUX_1":"SelCop에서 MUX MC의 입력 1","POC:CU_MUX_MC:STATES:MUX_O":"COP에 출력","POC:CU_MUX_MC:SIGNALS:CTL":"출력으로 보낼 입력 값 선택","POC:MAR:STATES:IN":"입력은 내부 버스입니다","POC:MAR:STATES:OUT":"출력이 Ta tristate로 이동합니다.","POC:MAR:SIGNALS:C0":"입력이 저장되었는지 확인","POC:MBR:STATES:IN":"입력은 M1 출력입니다.","POC:MBR:STATES:OUT":"출력이 T1 tristate로 이동합니다.","POC:MBR:SIGNALS:C1":"입력이 저장되었는지 확인","POC:PC:STATES:IN":"입력은 내부 버스입니다","POC:PC:STATES:OUT":"출력이 T2 tristate로 이동합니다.","POC:PC:SIGNALS:CTL":"입력이 저장되었는지 확인","POC:IR:STATES:IN":"입력은 내부 버스입니다","POC:IR:STATES:OUT":"IR 선택기와 CU로 출력이 이동합니다.","POC:IR:SIGNALS:C3":"입력이 저장되었는지 확인","POC:RT1:STATES:IN":"입력은 내부 버스입니다","POC:RT1:STATES:OUT":"출력이 select-rt1로 이동합니다.","POC:RT1:SIGNALS:CTL":"입력이 저장되었는지 확인","POC:SR:STATES:IN":"입력은 M7의 출력입니다.","POC:SR:STATES:OUT":"출력이 T8 입력 및 CU로 이동합니다.","POC:SR:SIGNALS:CTL":"입력이 저장되었는지 확인","POC:REGISTER_FILE:STATES:A":"T9 및 MA/0에 대한 RF 출력","POC:REGISTER_FILE:STATES:B":"T10 및 MB/0에 대한 RF 출력","POC:REGISTER_FILE:STATES:C":"내부 버스에서 RF로 입력","POC:REGISTER_FILE:SIGNALS:RA":"A에 값을 보낼 레지스터를 선택하십시오.","POC:REGISTER_FILE:SIGNALS:RB":"값을 B로 보낼 레지스터를 선택하십시오.","POC:REGISTER_FILE:SIGNALS:RC":"C 값이 저장된 레지스터를 선택하십시오.","POC:REGISTER_FILE:SIGNALS:LC":"RC가 업데이트될 것인지 확인","POC:CPU_ALU:STATES:A":"MUX A 멀티플렉서의 출력","POC:CPU_ALU:STATES:B":"MUX B 멀티플렉서의 출력","POC:CPU_ALU:STATES:ALU":"결과는 T6 및 RT3의 입력으로 이동합니다.","POC:CPU_ALU:STATES:FLAGS":"C,V,N,Z 플래그 업데이트","POC:CPU_ALU:SIGNALS:COP":"작업 코드(+, -, *, ...)","POC:SELECT_RT1:STATES:MUX_I":"RT1에서 SELECT-RT1 입력","POC:SELECT_RT1:STATES:MUX_O":"T3을 통해 내부 버스로 출력","POC:SELECT_RT1:SIGNALS:SE":"서명 확장","POC:SELECT_RT1:SIGNALS:SIZE":"크기","POC:SELECT_RT1:SIGNALS:OFFSET":"오프셋","POC:MEMORY:STATES:ADDR":"주소 버스","POC:MEMORY:STATES:DATA":"데이터 버스","POC:MEMORY:STATES:MRDY":"메모리 준비됨","POC:MEMORY:SIGNALS:BW":"바이트 너비","POC:MEMORY:SIGNALS:R":"읽기","POC:MEMORY:SIGNALS:W":"쓰기","POC:IO:STATES:ADDR":"주소 버스","POC:IO:STATES:DATA":"데이터 버스","POC:IO:SIGNALS:IOR":"IO 장치에서 읽기","POC:IO:SIGNALS:IOW":"IO 장치에 쓰기","POC:KEYBOARD:STATES:ADDR":"주소 버스","POC:KEYBOARD:STATES:DATA":"데이터 버스","POC:KEYBOARD:SIGNALS:IOR":"키보드에서 읽기","POC:DISPLAY:STATES:ADDR":"주소 버스","POC:DISPLAY:STATES:DATA":"데이터 버스","POC:DISPLAY:SIGNALS:IOR":"디스플레이에서 읽기(비활성화)","POC:DISPLAY:SIGNALS:IOW":"디스플레이에 쓰기","POC:L3D:STATES:ADDR":"주소 버스","POC:L3D:STATES:DATA":"데이터 버스","POC:L3D:SIGNALS:IOR":"L3D에서 읽기","POC:L3D:SIGNALS:IOW":"L3D에 쓰기",_last_:"_last_"};i18n.eltos.dialogs.kr={"Show/Hide ActionBar":"ActionBar 표시 / 숨기기","Show/Hide Slider":"슬라이더 표시 / 숨기기","WepSIM User Interface skin":"WepSIM 사용자 인터페이스 스킨","Initial intro":"초기 소개","About WepSIM":"WepSIM 소개",Title:"제목",Message:"메시지",Duration:"재생 시간","Confirm remove record...":"현재 레코드를 제거 하시겠습니까?","Close or Reset...":"계속하려면 닫기를 클릭하고, 단추를 클릭하여 제거하십시오.","Sure Control Memory...":"편집기 내용이 아닌 현재 컨트롤 메모리 내용을 저장 하시겠습니까?","Show/Hide labels":"레이블 표시 / 숨기기","Show/Hide content":"콘텐츠 표시 / 숨기기","Show/Hide assembly":"어셈블리 표시 / 숨기기","Show/Hide pseudo-instructions":"의사 명령어 표시 / 숨기기",Close:"닫다",details:"세부",idiom:"관용구",_last_:"_last_"};i18n.eltos.gui.ja={"Loading WepSIM...":"WepSIMを読み込んでいます...",About:"について",Configuration:"設定",MicroCode:"マイクロコード",Assembly:"アセンブリ",Simulator:"シミュレータ",Examples:"例",Load:"負荷",Save:"保存する","Load/Save":"負荷/保存する",Restore:"リストア",Help:"助けて",Notifications:"通知",RecordBar:"レコードバー",Input:"入力",Output:"出力",Reload:"リロード",Checkpoint:"チェックポイント","Help Index":"ヘルプインデックス",Processor:"プロセッサ","Assembly Debugger":"アセンブリデバッガ",Reset:"リセット",microInstruction:"μインストラクション",Instruction:"命令",Run:"実行する","Hardware Summary":"ハードウェア概要",processor:"プロセッサ",details:"詳細",microcode:"マイクロコード",Signals:"シグナル",Behaviors:"ふるまい",States:"州","Control States":"制御状態",Dependencies:"依存関係",Close:"閉じる",Description:"説明",Show:"見せる","Show Main Memory":"メインメモリを表示",compile:"コンパイル",Compile:"コンパイル","Please write the file name":"ファイル名を書いてください","Load from this File":"このファイルから読み込む",labels:"ラベル",addr:"addr",ess:"エス",content:"コンテンツ",assembly:"アセンブリ",instructions:"説明書","simulator intro 1":"使用するハードウェアを選択できます。デフォルトのハードウェアはEP(Elemental Processor)ハードウェアです。 モードセレクタ を使用して、使用するハードウェアを変更します。","simulator intro 2":"次に、マイクロコード(命令セットを定義)とアセンブリコードをロードする必要があります。 例 、ファイルから読み込む 、または新しいマイクロコード および新しいアセンブリコード 。","simulator intro 3":"最後に、シミュレーターでは、以前にロードされたマイクロコードとアセンブリを実行できます。 マイクロ命令レベルまたはアセンブリ命令レベルで両方を実行できます。","Prev.":"前",Next:"次",End:"終わり","Disable tutorial mode":"チュートリアルモードを無効にする",Comment:"コメント",Pause:"一時停止",Play:"遊びます",Stop:"やめる",Record:"記録",Registers:"「登録簿」","Control Memory":"「コントロールメモリ」",Stats:"統計",Memory:"「記憶」","Keyboard+Display":"キーボード+ディスプレイ","I/O Stats":"I/O 統計","I/O Configuration":"I/O 設定",Recent:"最近",Refresh:"更新する",Welcome:"ようこそ","Microcode & Assembly":"WepSIMハードウェア","Pick firm/soft":"からファームウェア/ソフトウェアを選択",Information:"からの情報",Native:"ネイティブ","MIPS32-like":"MIPS32のようなコード",RISCV32:"RISCV32コード","Z80-like":"Z80のようなコード",Actions:"行動",Utilities:"ユーティリティ","Information from":"からの情報 ","Pick firm/soft from":"からしっかり/ソフトを選ぶ","Welcome tutorial":"ウェルカムチュートリアル","Assembly only":"組み立てのみ","Micro & Assembly":"マイクロ&アセンブリ",idiom:"言語","quick config":"クイック構成","Graph: quick interactive mode":"グラフ:クイックインタラクティブモード",_last_:"_last_"};i18n.eltos.tutorial_welcome.ja={title_0:"WepSIMシミュレータへようこそ!",message_0:"
",title_1:"例を読み込む方法",message_1:"
「example」ボタンをクリックし、次に「title」名の例をクリックします。 次に、マイクロコードとアセンブリの例を読み込んでマイクロコンパイルし、コンパイル済み。 ",title_2:"例を実行する方法",message_2:"
次の命令/マイクロ命令をクリックすると、段階的に実行されます。 実行ボタンをクリックして、最初のブレークポイントまたはアセンブリプログラムの最後まで実行します。 ",title_3:"WepSIMの設定方法",message_3:"
「設定」ボタンをクリックすると、ユーザーはWepSIMのさまざまな部分をカスタマイズできます。 ",title_4:"基本的な助けを得る方法。",message_4:"
緑色の「ヘルプ」ボタンをクリックしてヘルプダイアログにアクセスしてください。 イディオム(スペイン語/英語)を切り替えることができます。ヘルプインデックスを作成するか、ヘルプダイアログを閉じます。 ",title_5:"WepSIMへようこそ!",message_5:"
詳細についてはヘルプセクションをご覧ください。 このチュートリアルの終了ボタンをクリックすると、WepSIMが最初の例をロードします。お楽しみください。 ",_last_:"_last_"};i18n.eltos.tutorial_simpleusage.ja={title_0:"簡単なWepSIMの経験:マイクロプログラミングとプログラミング",message_0:"
",title_1:"簡単なWepSIMの経験:マイクロプログラミングとプログラミング",message_1:"
最初のステップは、使用するファームウェアをマイクロプログラミングすることです。マイクロコード画面に切り替えるには、[マイクロコード]ボタンを使用してください。 ",title_2:"簡単なWepSIMの経験:マイクロプログラミングとプログラミング",message_2:"
マイクロプログラミング画面には、次のものがあります。 li>ハードウェアの概要とヘルプ コードの準備ができたら(エラーなしでコンパイルされたら)、次のステップはアセンブリ画面に進むことです。 ",title_3:"簡単なWepSIMの経験:マイクロプログラミングとプログラミング",message_3:"
次に、アセンブリを実行するようにプログラミングします。シミュレータ画面またはマイクロコード画面の両方から[アセンブリ]ボタンを使用してください。 ",title_4:"簡単なWepSIMの経験:マイクロプログラミングとプログラミング",message_4:"
プログラミング画面には、次のものがあります。 アセンブリコードのエディタ アセンブリコンパイラ メモリマップビューアとヘルプ アセンブリコードの準備が整ったら(エラーなしで編集およびコンパイル)、次のステップはシミュレーション画面に進むことです。 ",title_5:"簡単なWepSIMの経験:マイクロプログラミングとプログラミング",message_5:"
3番目のステップは、シミュレータでアセンブリコードを実行することです。 シミュレータ画面には、次のように表示されます。 アセンブリビューとハードウェアビュー レジスタ、制御メモリ、メインメモリなどの詳細ビュー リセット、ステップバイステップ、またはブレークポイント/終了アクションまで実行。 このチュートリアルでは、学生と教師のためのWepSIMの典型的な使い方を紹介しました。 WepSIMをお楽しみください。 ",_last_:"_last_"};i18n.eltos.tour_intro.ja={step1:"WepSIMは、コンピュータの動作をよりよく理解するのに役立ちます。視覚的、対話的、信号から割り込み、システムコール、例外などに統合されます。 WepSIMは革命的な教育ツールであると私たちは信じています。この短いツアーでは、そのインターフェースの重要な要素を紹介します。",step2:"右上のこのボタンは、さまざまな「作業モード」へのクイックアクセスメニューです。 ユーザーは次を選択できます。 使用するハードウェア(EPプロセッサなど) 整数MIPS32 またはRISC-V32 命令を使用したアセンブリ専用モード 最初に推奨されるチュートリアルモード;- ) ",step3:"右上の[ヘルプ]ボタンをクリックすると、関連するダイアログが開きます。 ヘルプダイアログには、チュートリアル、説明、情報などがまとめられています。",step4:"そして左側にある 'examples'ボタンをクリックするとダイアログの例が開きます。",step5:"左上の[設定]ボタンをクリックすると、設定ダイアログが開きます。 実行、ユーザーインターフェイス、設定などのさまざまな側面をユーザーが調整できます。",step6:"おめでとうございます。 WepSIMインターフェースの重要な要素を知っています。 [ヘルプ]ダイアログから[ようこそチュートリアル]にアクセスして、学習を続けることができます。 ",_last_:"_last_"};i18n.eltos.cfg.ja={General:"全般","Idiom for help, examples, etc.":"助けのための慣用句、例など","Notification speed: time before disapear":"通知速度:消えるまでの時間","Dark Mode":"ダークモード",Editor:"編集者","Editor theme: light or dark":"編集テーマ:明暗",Light:"光",Dark:"ダーク","Editor mode: vim, emacs, etc.":"エディタモード:vim、emacsなど",Execution:"実行","Running speed: execution speed":"走行速度:実行速度",Slow:"スロー",Normal:"普通",Fast:"速い","Step-by-step: element in run mode":"ステップバイステップ:実行モードの要素",Instructions:"説明書",Instruction:"命令","µinstructions":"マイクロインストラクション",microInstruction:"μインストラクション","Breakpoint icon: icon to be used for breakpoints":"ブレークポイントアイコン:ブレークポイントに使用されるアイコン","Limit instructions: number of instructions to be executed":"制限命令:実行する命令数","Limit instruction ticks: to limit clock ticks":"命令ティックを制限する:命令ごとのクロックティック数の制限","Register file":"ファイル登録","Display format":"表示フォーマット","Register file names":"ファイル名を登録する",Numbers:"番号",Labels:"ラベル","Editable registers: edit register file values":"編集可能レジスタ:レジスタファイル値の編集","Circuitry simulation":"回路シミュレーション","Data-path color":"データパスカラー","Signal color":"シグナルカラー","Show by value or by activation":"値別またはアクティブ化別に表示",Value:"値",Activation:"アクティベーション","Interactive mode: signal value can be updated":"インタラクティブモード:信号値を更新することができます","Quick interactive mode: quick update of signal value":"クイックインタラクティブモード:シグナル値のクイックアップデート","(example)":"(例)",Accesibility:"アクセシビリティ","Beginner view":"「ビギナービュー」","Auto-scroll while executing":"「実行中の自動スクロール」","Active voice: external voice control":"アクティブボイス:外部ボイスコントロール","Verbalization: textual or mathematical":"言語化:テキストまたは数学","WepSIM User Interface views":"WepSIMユーザーインターフェースビュー",Privacy:"プライバシー",On:"On",Off:"Off",_last_:"_last_"};i18n.eltos.help.ja={"Welcome tutorial":"ようこそチュートリアル",help_01_01:"ウェルカムチュートリアルを開く","Simple usage tutorial":"簡単な使い方のチュートリアル",help_01_02:"マイクロプログラミングとアセンブリプログラミングのための簡単な使い方のチュートリアルを開く","Execute example":"Execute example",help_01_03:"Play the execute example tutorial","Simulator: firmware":"シミュレータ:ファームウェア",help_02_01:"制御メモリにロードされるファームウェアを使用する方法","Microcode format":"マイクロコードフォーマット",help_02_02:"使用されているマイクロコードの構文","Simulator: assembly":"シミュレータ:組み立て",help_02_03:"上記のファームウェアを使用するアセンブリの使用方法","Assembly format":"組立フォーマット",help_02_04:"アセンブリ要素の構文","Simulator: execution":"シミュレータ:実行",help_02_05:"シミュレータがアセンブリとファームウェアを実行する方法","Simulated architecture":"シミュレーションアーキテクチャ",help_03_01:"シミュレートされたプロセッサアーキテクチャの説明","Simulated signals":"シミュレーション信号",help_03_02:"模擬要素プロセッサの主な信号の概要","Hardware summary":"ハードウェア概要",help_03_03:"シミュレートされた基本プロセッサーハードウェアの参照カード","License, platforms, etc.":"ライセンス、プラットフォームなど",help_04_01:"WepSIMライセンス、サポートされているプラットフォーム、使用されているテクノロジ",Authors:"作者",help_04_02:"WepSIMの作者",_last_:"_last_"};i18n.eltos.states.ja={States:"州",state:"州",Current:"現在","Current State":"現在の状態",History:"歴史",None:"無し","Empty history":"空の歴史","Empty (only modified values are shown)":"空(変更された値のみ表示)",Differences:"違い","differences with clipboard state":"クリップボードの状態との違い","Meets the specified requirements":"指定された要件を満たします",history:"歴史",Add:"追加する","'Current State' to History":"歴史に対する「現状」",Check:"チェック",Copy:"コピーする","to clipboard":"クリップボードへ",Checkpoint:"チェックポイント","File name":"ファイル名","Tag for checkpoint":"チェックポイントのタグ","File to be loaded":"ロードするファイル","Save to File":"ファイルに保存","State(s) to checkpoint":"チェックポイントまでの状態","Record to checkpoint":"チェックポイントへの記録","Browser cache":"ブラウザキャッシュ","Session to be restore":"復元するセッション",_last_:"_last_"};i18n.eltos.examples.ja={"addv + seqv.":"addv + seqv","Alloc.s":"同種","Dummy instruction":"ダミー指導",Exception:"例外",Instructions:"説明書",Interruptions:"中断","Int. + syscall + except.":"Int。 + syscall +以外。","I/O":"I/O",Looping:"ループ","madd, mmul, mxch":"助け、気分、こころ","Masks & shift":"マスク&シフト",Matrix:"マトリックス","Memory access":"メモリアクセス","SC 1, 4-5, 8, 11-12":"SC 1、4〜5、8、11〜12",Subrutine:"サブルーチン","syscall 1, 4-5, 8, 11-12":"システムコール1、4〜5、8、11〜12","System call":"システムコール",Threads:"スレッド",Vector:"ベクター","Compiler Explorer":"Compiler Explorer",Instructive:"有益な ",example_04_01:"割り込み、システムコール、および例外を含む高度な例",example_05_01:"アプリケーション固有の拡張子:addv + seqv。",example_05_03:"アプリケーション固有の拡張子:madd + mmul + mxch。",example_03_01:"浮動小数点例外を使用した有益な 例。",example_03_02:"割り込みをサポートする有益な 例:fetch、RETI、.ktext/.kdata。",example_03_03:"システムコールをサポートする有益な 例。",example_03_04:"簡単なスタック規則を使用した有益な b>例.",example_04_04:"malloc + freeの例",example_04_02:"整数と文字列を印刷/読み取りするためのsyscallの例。",example_04_03:"スレッドの例",example_03_01b:"浮動小数点例外を使用した例",example_03_02b:"割り込みをサポートする例:fetch、RETI、および.ktext/.kdata。",example_02_01:"プログラムされたI/Oアクセスと基本的な.text/.dataセグメントの例",example_03_03b:"システムコールサポートの例",example_02_02:"より多くの命令とI/O(キーボード、ディスプレイ)を含む拡張例。",example_02_04:"サブルーチンとマトリックスの拡張例",example_02_03:"マスク、シフト、および基本的な.text/.dataセグメントを含む、より拡張された例。",example_01_01:"フェッチ、算術命令、および基本的な.textセグメントを使用した簡単な例。",example_01_04:"フェッチ、ブランチ、そして基本的な.text/.dataセグメントを使った簡単な例。",example_01_03:"フェッチ、ブランチ、そして基本的な.textセグメントを使った簡単な例。",example_01_02:"フェッチ、メモリアクセス、および基本的な.text/.dataセグメントを使用した簡単な例。",example_06_01:"テスト例",example_06_02:"単純なコンパイラエクスプローラの例.",Advanced:"高度な",Initial:"初期",Intermediate:"中級",Laboratory:"実験室","Operating Systems":"オペレーティングシステム",Extra:"ボーナス",Special:"特殊","Load example":"ロード例","Load Assembly only":"荷重アセンブリのみ","Load Firmware only":"ファームウェアのみをロード","Copy reference to clipboard":"クリップボードへの参照のコピー",Share:"共有(アンドロイド)","No examples available...":"選択したハードウェアの例はありません","Simple example":"簡単な例",_last_:"_last_"};i18n.eltos.compiler.ja={"PROBLEM AROUND LINE":"ライン周辺の問題","NO TAG OR DIRECTIVE":"タグやディレクティブを期待したが、代わりにこのトークンが見つかりました:","NO TAG, DIR OR INS":"有効なタグ(例:tag1 :)ディレクティブ(例:.data)または命令が見つかりません: ","INVALID TAG FORMAT":"タグは、(文字または下線で始まる)英数字フォーマットに従わなければなりません。","TAG OR INSTRUCTION":"タグは、命令と同じ名前を持つことはできません。","REPEATED TAG":"繰り返さタグ:","NO NUMERIC DATATYPE":"数値データ型の値が期待されたが見つから:","NO POSITIVE NUMBER":"正の数を期待されたが見つから:","NO NUMBER OF BYTES":".SPACEで予約するバイト数を期待されたが見つから:","INVALID ALIGN VALUE":"正の数として整列パラメータを期待されたが見つから:","REMEMBER ALIGN VAL":"数は、アライメント用の2つの電源であることを忘れないでください、MIPSのマニュアルを参照してください。","NOT CLOSED STRING":"文字列が閉じていない(引用符でそれを終了するのを忘れました)","NO QUOTATION MARKS":"予想引用符の間の文字列ではなくが見つかりました:","UNEXPECTED DATATYPE":"予期しないデータ型名:","INVALID SEGMENT NAME":".dataの/の.text / ...セグメント期待されたが見つから:","NO MAIN OR KMAIN":"タグ「主」または「kmain」はテキスト・セグメント(単数または複数)で定義されていません。プログラムを実行するために、これらのタグのうちの少なくとも一つを定義することが義務付けられています","UNKNOWN 1":"不明なエラーがフィールドタイプのために(1)発生しました:","UNKNOWN 2":"予期しないエラー(2)","REMEMBER I. FORMAT":"命令フォーマットは次のように定義されていることに注意してください:","SEVERAL CANDIDATES":"命令とフィールドは、複数のマイクロプログラムで一致します。マイクロコードを確認してください。現在、命令フォーマットを指定できます。","NOT MATCH MICRO":"命令とフィールドはマイクロプログラムと一致しません。","CHECK MICROCODE":"マイクロコードを確認してください。おそらくあなたは、フィールドを追加するのを忘れ、番号が範囲外である、またはあなただけの間違った命令を使用します","LABEL NOT DEFINED":"ラベルは使用されるが、アセンブリコードで定義されていません。","INS. MISSING FIELD":"命令のフィールドがありません","UNEXPECTED (REG)":"予想されるレジスタが、括弧の間のレジスタを見つけました。","EXPECTED (REG)":"括弧が、見つかったの間に予想されるレジスタ:","EXPECTED REG":"予想されるレジスタ(例えば:$1/$a0/...)しかしが見つかりました:","UNKNOWN ESCAPE CHAR":"不明なエスケープ文字","SPACE FOR # BITS":" バイナリのビットですが、スペースがあります ",NEEDS:" が必要だ ","UNKNOWN MC FORMAT":"(unknown format in microcode)","LABEL NOT FOUND":"予想される「<ラベル>:」が見つかりません、トークンが見つかりました:","REPEATED LABEL":"ラベルが繰り返されます。","INVALID LABEL FORMAT":"ラベルフォーマットは有効ではありません。","OPEN BRACE NOT FOUND":"予想「{」が見つかりません","CLOSE BRACE NOT FOUND":"予想「}」が見つかりません","OPEN PAREN. NOT FOUND":"予想される「(」が見つかりません","CLOSE PAREN. NOT FOUND":"予想「)」が見つかりません","COMMA NOT FOUND":"予想される「」が見つかりません","EQUAL NOT FOUND":"予想「=」が見つかりません","SIGNAL NOT EXISTS":"信号が存在しません。","SIGNAL NO DIRECTLY":"信号を直接使用することはできません、代わりに、コントロールユニットの信号を使用してください。","INCORRECT BIN. FORMAT":"不正なバイナリフォーマット:","OUT OF RANGE":"範囲外の値:","EMPTY MICROCODE":"空のマイクロコード","EMPTY NAME LIST":"レジスタのための空の名前のリスト:X = []","DUPLICATE SP":"スタックポインタの重複定義","NO SP":"トークン期待stack_pointerが見つかりません。","UNDEF. INSTR.":"未定義命令:","MORE 100 FIELDS":"単一の命令で100の以上のフィールド。","CO AS FIELD NAME":"命令フィールドは、名前として「コ」を持っています。","NW AS FIELD NAME":"命令フィールドは、名前として「NWORDS」を有します。","NO CO FIELD":"予想されるキーワード「コ」が見つかりません","INCORRECT CO BIN.":"「コ」に関する誤ったバイナリフォーマット:","INCORRECT COP BIN.":"「警官」に関する誤ったバイナリフォーマット:","INVALID PARAMETER":"無効なパラメーター:","ALLOWED PARAMETER":"REG、NUM、INM、ADDR、住所:それは次のフィールドのみを許可します","MISSING TOKEN ON":"「トークンは、」オン「(」の後に欠落しています。","MISSING ) ON":"「)」に欠落しています。","CO ALREADY USED":"「コは」は既にによって使用されています。","CO+COP ALREADY USED":"「+コープは」は既にによって使用されています。","NO NWORDS":"予想されるキーワード「NWORDS」が見つかりません","INCORRECT ADDRESSING":"間違った(absまたはREL)をアドレッシングのタイプ","UNEXPECTED FIELD":"予期しないフィールドが見つかりました:","CHECK ORDER":"フィールドの順序を確認してください","STARTBIT OoR":"範囲外スタートビット:","STOPBIT OoR":"範囲外のストップビット:","OVERLAPPING FIELD":"オーバーラップするフィールド:","BAD COP BIN. LEN.":"「警官」の誤ったバイナリの長さ:","SP NOT DEFINED":"スタックポインタレジスタが定義されていませんでした","NO LABEL FETCH":"ラベル定義されていない「フェッチ」","NO LABEL BEGIN":"「開始」が見つかりません","NO CO CODES":"手順については、利用可能な十分な「コ」のコードはありません","NO LABEL MADDR":"MADDRラベルが見つかりません:","INS. NAME":'命令名: "',"NOT VALID FOR":"'の有効ではありません。","BIGGER THAN":"より大きい",BITS:"ビット","EXPECTED VALUE":'そのAに収まる "期待値',"BUT INSERTED":"しかし挿入",INSTEAD:"その代わり",_last_:"_last_"};i18n.eltos.hw.ja={Component:"コンポーネント",Element:"エレメント","States (In)":"州 (In)","States (Out)":"州 (Out)",Signals:"セニャレス","It has":"それは持っています",inputs:"入力",outputs:"出力",signals:"信号",Graph:"グラフィック",Text:"文章","Graph: split view":"「グラフ:分割ビュー」","Graph: interactive mode":"「グラフ:インタラクティブモード」",name:"名前",version:"バージョン",abilities:"「能力」",value:"価値",default_value:"default_value",nbits:"「nbits」",type:"タイプ",visible:"見える","EP:CPU_T1:STATES:IN":"入力はMBRレジスタの値です","EP:CPU_T1:STATES:OUT":"出力は内部バスに送られます","EP:CPU_T1:SIGNALS:CTL":"入力値が出力にコピーされていることを確認してください","EP:CPU_T2:STATES:IN":"入力はPCレジスタの値です","EP:CPU_T2:STATES:OUT":"出力は内部バスに送られます","EP:CPU_T2:SIGNALS:CTL":"入力値が出力にコピーされていることを確認してください","EP:CPU_T3:STATES:IN":"入力はセレクターIRの出力です","EP:CPU_T3:STATES:OUT":"出力は内部バスに送られます","EP:CPU_T3:SIGNALS:CTL":"入力値が出力にコピーされていることを確認してください","EP:CPU_T4:STATES:IN":"入力はRT1レジスタの値です","EP:CPU_T4:STATES:OUT":"出力は内部バスに送られます","EP:CPU_T4:SIGNALS:CTL":"入力値が出力にコピーされていることを確認してください","EP:CPU_T5:STATES:IN":"入力はRT2レジスタの値です","EP:CPU_T5:STATES:OUT":"出力は内部バスに送られます","EP:CPU_T5:SIGNALS:CTL":"入力値が出力にコピーされていることを確認してください","EP:CPU_T6:STATES:IN":"入力はALU出力です","EP:CPU_T6:STATES:OUT":"出力は内部バスに送られます","EP:CPU_T6:SIGNALS:CTL":"入力値が出力にコピーされていることを確認してください","EP:CPU_T7:STATES:IN":"入力はRT3レジスタの値です","EP:CPU_T7:STATES:OUT":"出力は内部バスに送られます","EP:CPU_T7:SIGNALS:CTL":"入力値が出力にコピーされていることを確認してください","EP:CPU_T8:STATES:IN":"入力はSRレジスタの値です","EP:CPU_T8:STATES:OUT":"出力は内部バスに送られます","EP:CPU_T8:SIGNALS:CTL":"入力値が出力にコピーされていることを確認してください","EP:CPU_T9:STATES:IN":"入力はレジスタファイルポートA出力の値です","EP:CPU_T9:STATES:OUT":"出力は内部バスに送られます","EP:CPU_T9:SIGNALS:CTL":"入力値が出力にコピーされていることを確認してください","EP:CPU_T10:STATES:IN":"入力はレジスタファイルポートB出力の値です","EP:CPU_T10:STATES:OUT":"出力は内部バスに送られます","EP:CPU_T10:SIGNALS:CTL":"入力値が出力にコピーされていることを確認してください","EP:CPU_T11:STATES:IN":"入力はマイクロ命令/ ExCode出力です","EP:CPU_T11:STATES:OUT":"出力は内部バスに送られます","EP:CPU_T11:SIGNALS:CTL":"入力値が出力にコピーされていることを確認してください","EP:CPU_T12:STATES:IN":"入力は HPC (ハードウェア パフォーマンス カウンター) の出力です","EP:CPU_T12:STATES:OUT":"出力は内部バスに送られます","EP:CPU_T12:SIGNALS:CTL":"入力値が出力にコピーされていることを確認してください","EP:CPU_TA:STATES:IN":"入力はMARレジスタ出力です","EP:CPU_TA:STATES:OUT":"出力はアドレスバスに送られます","EP:CPU_TA:SIGNALS:CTL":"入力値が出力にコピーされていることを確認してください","EP:CPU_TB:STATES:IN":"入力はバイトセレクター出力です","EP:CPU_TB:STATES:OUT":"出力はデータバスに送られます","EP:CPU_TB:SIGNALS:CTL":"入力値が出力にコピーされていることを確認してください","EP:CPU_MUX_A:STATES:MUX_0":"レジスタファイル(A)からのMUX Aの入力0","EP:CPU_MUX_A:STATES:MUX_1":"RT1レジスタからのMUX Aの入力1","EP:CPU_MUX_A:STATES:MUX_O":"ALUへの出力,オペレーター0","EP:CPU_MUX_A:SIGNALS:MA":"出力に送信する入力値を選択してください","EP:CPU_MUX_B:STATES:MUX_0":"レジスタファイル(B)からのMUX Bの入力0","EP:CPU_MUX_B:STATES:MUX_1":"RT2レジスタからのMUX Bの入力1","EP:CPU_MUX_B:STATES:MUX_2":"MUX Bの入力2,値4","EP:CPU_MUX_B:STATES:MUX_3":"MUX Bの入力3,値1","EP:CPU_MUX_B:STATES:MUX_O":"ALUへの出力,演算子1","EP:CPU_MUX_B:SIGNALS:MB":"出力に送信する入力値を選択してください","EP:CPU_MUX_1:STATES:MUX_0":"内部バスからのMUX1の入力0","EP:CPU_MUX_1:STATES:MUX_1":"バイトセレクタからのMUX1の入力1","EP:CPU_MUX_1:STATES:MUX_O":"MUX 1からMBRへの出力","EP:CPU_MUX_1:SIGNALS:M1":"出力に送信する入力値を選択してください","EP:CPU_MUX_2:STATES:MUX_0":"内部バスからのMUX2の入力0","EP:CPU_MUX_2:STATES:MUX_1":"MUX 2の入力1,PC + 4","EP:CPU_MUX_2:STATES:MUX_O":"PCへの出力","EP:CPU_MUX_2:SIGNALS:M2":"出力に送信する入力値を選択してください","EP:CPU_MUX_7:STATES:MUX_0":"内部バスからのMUX7の入力0","EP:CPU_MUX_7:STATES:MUX_1":"「フラグセレクタからのMUX7の入力1」","EP:CPU_MUX_7:STATES:MUX_O":"SRを登録するための出力","EP:CPU_MUX_7:SIGNALS:M7":"出力に送信する入力値を選択してください","EP:CU_MUX_A:STATES:MUX_0":"microADDR +1からのMUXAの入力0","EP:CU_MUX_A:STATES:MUX_1":"co2maddrからのMUXAの入力1","EP:CU_MUX_A:STATES:MUX_2":"microIR / MADDRからのMUXAの入力2","EP:CU_MUX_A:STATES:MUX_3":"MUX Aの入力3,0から","EP:CU_MUX_A:STATES:MUX_O":"MUX AからmicroADDRへの出力","EP:CU_MUX_A:SIGNALS:A0":"mIR / A0","EP:CU_MUX_A:SIGNALS:A1":"コントロールユニットMUXBの出力","EP:CU_MUX_B:STATES:MUX_0":"MUXCからのMUXBの入力0","EP:CU_MUX_B:STATES:MUX_1":"NOT(MUX C)からのMUX Bの入力1","EP:CU_MUX_B:STATES:MUX_O":"MUX A / A1への出力","EP:CU_MUX_B:SIGNALS:MB":"出力に送信する入力値を選択してください","EP:CU_MUX_C:STATES:MUX_0":"MUX Cの入力0,0から","EP:CU_MUX_C:STATES:MUX_1":"INTからのMUX Cの入力1","EP:CU_MUX_C:STATES:MUX_2":"IORdyからのMUXCの入力2","EP:CU_MUX_C:STATES:MUX_3":"MRdyからのMUXCの入力3","EP:CU_MUX_C:STATES:MUX_4":"SR / UからのMUXCの入力4","EP:CU_MUX_C:STATES:MUX_5":"SR / IからのMUXCの入力5","EP:CU_MUX_C:STATES:MUX_6":"SR / ZからのMUXCの入力6","EP:CU_MUX_C:STATES:MUX_7":"SR / NからのMUXCの入力7","EP:CU_MUX_C:STATES:MUX_8":"SR / VからのMUXCの入力8","EP:CU_MUX_C:STATES:MUX_9":"SR / CからのMUXCの入力9","EP:CU_MUX_C:STATES:MUX_10":"InExからのMUXCの入力10","EP:CU_MUX_C:STATES:MUX_O":"MUX Bへの出力","EP:CU_MUX_C:SIGNALS:CTL":"コントロールユニットMUXCの出力","EP:CU_MUX_RA:STATES:MUX_0":"IR [SelA + 0 ... SelA +4]からのMUXMRの入力0","EP:CU_MUX_RA:STATES:MUX_1":"SelAからのMUXMRの入力1","EP:CU_MUX_RA:STATES:MUX_O":"RAへの出力","EP:CU_MUX_RA:SIGNALS:CTL":"出力に送信する入力値を選択してください","EP:CU_MUX_RB:STATES:MUX_0":"IR [SelB + 0 ... SelB +4]からのMUXMRの入力0","EP:CU_MUX_RB:STATES:MUX_1":"SelBからのMUXMRの入力1","EP:CU_MUX_RB:STATES:MUX_O":"RBへの出力","EP:CU_MUX_RB:SIGNALS:MR":"出力に送信する入力値を選択してください","EP:CU_MUX_RC:STATES:MUX_0":"IR [SelC + 0 ... SelC +4]からのMUXMRの入力0","EP:CU_MUX_RC:STATES:MUX_1":"SelCからのMUXMRの入力1","EP:CU_MUX_RC:STATES:MUX_O":"RCへの出力","EP:CU_MUX_RC:SIGNALS:MR":"出力に送信する入力値を選択してください","EP:CU_MUX_MC:STATES:MUX_0":"IR3 ... IR0からのMUXMCの入力0","EP:CU_MUX_MC:STATES:MUX_1":"SelCopからのMUXMCの入力1","EP:CU_MUX_MC:STATES:MUX_O":"COPへの出力","EP:CU_MUX_MC:SIGNALS:CTL":"出力に送信する入力値を選択してください","EP:CPU_MUX_H:STATES:MUX_0":"ハードウェア パフォーマンス カウンターの MUX H の入力 0","EP:CPU_MUX_H:STATES:MUX_1":"ハードウェア パフォーマンス カウンターの MUX H の入力 1","EP:CPU_MUX_H:STATES:MUX_2":"ハードウェア パフォーマンス カウンターの MUX H の入力 2","EP:CPU_MUX_H:STATES:MUX_3":"ハードウェア パフォーマンス カウンターの MUX H の入力 3","EP:CPU_MUX_H:STATES:MUX_O":"T12へ出力","EP:CPU_MUX_H:SIGNALS:MH":"出力に送信する入力値を選択","EP:MAR:STATES:IN":"入力は内部バスです","EP:MAR:STATES:OUT":"出力はTaトライステートに送られます","EP:MAR:SIGNALS:C0":"入力が保存されていることを確認してください","EP:MBR:STATES:IN":"入力はM1出力です","EP:MBR:STATES:OUT":"出力はT1トライステートに送られます","EP:MBR:SIGNALS:C1":"入力が保存されていることを確認してください","EP:PC:STATES:IN":"入力はM2出力です","EP:PC:STATES:OUT":"出力はT2トライステートに送られます","EP:PC:SIGNALS:CTL":"入力が保存されていることを確認してください","EP:IR:STATES:IN":"入力は内部バスです","EP:IR:STATES:OUT":"出力はIRセレクターとCUに送られます","EP:IR:SIGNALS:C3":"入力が保存されていることを確認してください","EP:RT1:STATES:IN":"入力は内部バスです","EP:RT1:STATES:OUT":"出力はT4トライステートに送られます","EP:RT1:SIGNALS:CTL":"入力が保存されていることを確認してください","EP:RT2:STATES:IN":"入力は内部バスです","EP:RT2:STATES:OUT":"出力はT5トライステートに送られます","EP:RT2:SIGNALS:CTL":"入力が保存されていることを確認してください","EP:RT3:STATES:IN":"入力はALUの出力です","EP:RT3:STATES:OUT":"出力はT7トライステートに送られます","EP:RT3:SIGNALS:CTL":"入力が保存されていることを確認してください","EP:SR:STATES:IN":"「入力はM7の出力です」","EP:SR:STATES:OUT":"出力はT8入力とCUに送られます","EP:SR:SIGNALS:CTL":"入力が保存されていることを確認してください","EP:REGISTER_FILE:STATES:A":"T9およびMA / 0へのRFの出力","EP:REGISTER_FILE:STATES:B":"T10およびMB / 0へのRFの出力","EP:REGISTER_FILE:STATES:C":"内部バスからRFへの入力","EP:REGISTER_FILE:SIGNALS:RA":"値がAに送信されるレジスタを選択してください","EP:REGISTER_FILE:SIGNALS:RB":"値がBに送信されるレジスタを選択してください","EP:REGISTER_FILE:SIGNALS:RC":"Cの値が格納されているレジスタを選択してください","EP:REGISTER_FILE:SIGNALS:LC":"RCが更新されることを確認してください","EP:CPU_ALU:STATES:A":"MUX Aマルチプレクサからの出力","EP:CPU_ALU:STATES:B":"MUX Bマルチプレクサからの出力","EP:CPU_ALU:STATES:ALU":"結果はT6とRT3の入力に送られます","EP:CPU_ALU:STATES:FLAGS":"更新されたC,V,N,Zフラグ","EP:CPU_ALU:SIGNALS:COP":"オペコード(+,-,*,...)","EP:SELECT_SR:STATES:MUX_1":"SELECT-SRの入力1,Uフラグ","EP:SELECT_SR:STATES:MUX_2":"SELECT-SRの入力2,Iフラグ","EP:SELECT_SR:STATES:MUX_3":"SELECT-SRの入力3,フラグC V N Z","EP:SELECT_SR:STATES:MUX_O":"MUX 7/1への出力","EP:SELECT_SR:SIGNALS:SELP":"出力に送信する入力値を選択してください","EP:SELECT_IR:STATES:MUX_I":"IRからのSELECT-IRの入力","EP:SELECT_IR:STATES:MUX_O":"T3を介した内部バスへの出力","EP:SELECT_IR:SIGNALS:SE":"符号拡張","EP:SELECT_IR:SIGNALS:SIZE":"サイズ","EP:SELECT_IR:SIGNALS:OFFSET":"オフセット","EP:BYTE_SELECTOR:STATES:FROM_MBR":"MBRレジスタからの入力","EP:BYTE_SELECTOR:STATES:FROM_DATA":"データバスからの入力","EP:BYTE_SELECTOR:STATES:BE":"BEへの出力","EP:BYTE_SELECTOR:STATES:TO_MBR":"M1 / 1に出力","EP:BYTE_SELECTOR:STATES:TO_TD":"Tdへの出力/入力","EP:BYTE_SELECTOR:SIGNALS:W":"メインメモリに書き込む","EP:BYTE_SELECTOR:SIGNALS:SE":"符号拡張","EP:BYTE_SELECTOR:SIGNALS:A1A0":"A1A0","EP:BYTE_SELECTOR:SIGNALS:BW":"パックするバイト数","EP:MEMORY:STATES:ADDR":"アドレスバス","EP:MEMORY:STATES:DATA":"データバス","EP:MEMORY:STATES:MRDY":"メモリ準備完了","EP:MEMORY:SIGNALS:BE":"BW + A1A0","EP:MEMORY:SIGNALS:R":"読み取り","EP:MEMORY:SIGNALS:W":"書き込み","EP:IO:STATES:ADDR":"アドレスバス","EP:IO:STATES:DATA":"データバス","EP:IO:SIGNALS:IOR":"IOデバイスから読み取る","EP:IO:SIGNALS:IOW":"IOデバイスに書き込みます","EP:KEYBOARD:STATES:ADDR":"アドレスバス","EP:KEYBOARD:STATES:DATA":"データバス","EP:KEYBOARD:SIGNALS:IOR":"キーボードから読み取る","EP:DISPLAY:STATES:ADDR":"アドレスバス","EP:DISPLAY:STATES:DATA":"データバス","EP:DISPLAY:SIGNALS:IOR":"ディスプレイから読み取る(無効)","EP:DISPLAY:SIGNALS:IOW":"ディスプレイに書き込む","EP:L3D:STATES:ADDR":"アドレスバス","EP:L3D:STATES:DATA":"データバス","EP:L3D:SIGNALS:IOR":"L3Dから読み取る","EP:L3D:SIGNALS:IOW":"L3Dに書き込む","EP:LEDM:STATES:ADDR":"アドレスバス","EP:LEDM:STATES:DATA":"データバス","EP:LEDM:SIGNALS:IOR":"LEDMから読み取る","EP:LEDM:SIGNALS:IOW":"LEDMに書き込む","POC:CPU_T1:STATES:IN":"入力はMBRレジスタの値です","POC:CPU_T1:STATES:OUT":"出力は内部バスに送られます","POC:CPU_T1:SIGNALS:CTL":"出力が入力に接続されていることを確認してください","POC:CPU_T2:STATES:IN":"入力はPCレジスタ出力です","POC:CPU_T2:STATES:OUT":"出力は内部バスに送られます","POC:CPU_T2:SIGNALS:CTL":"出力が入力に接続されていることを確認してください","POC:CPU_T3:STATES:IN":"入力はIRレジスタ出力セレクターです","POC:CPU_T3:STATES:OUT":"出力は内部バスに送られます","POC:CPU_T3:SIGNALS:CTL":"出力が入力に接続されていることを確認してください","POC:CPU_T6:STATES:IN":"入力はALU出力です","POC:CPU_T6:STATES:OUT":"出力は内部バスに送られます","POC:CPU_T6:SIGNALS:CTL":"出力が入力に接続されていることを確認してください","POC:CPU_T8:STATES:IN":"入力はSRレジスタ出力です","POC:CPU_T8:STATES:OUT":"出力は内部バスに送られます","POC:CPU_T8:SIGNALS:CTL":"出力が入力に接続されていることを確認してください ","POC:CPU_T9:STATES:IN":"入力はレジスタファイルのポートAの出力です","POC:CPU_T9:STATES:OUT":"出力は内部バスに送られます","POC:CPU_T9:SIGNALS:CTL":"出力が入力に接続されていることを確認してください","POC:CPU_T10:STATES:IN":"入力はレジスタファイルのポートBの出力です","POC:CPU_T10:STATES:OUT":"出力は内部バスに送られます","POC:CPU_T10:SIGNALS:CTL":"出力が入力に接続されていることを確認してください","POC:CPU_T11:STATES:IN":"入力はMIR / ExCode出力です","POC:CPU_T11:STATES:OUT":"出力は内部バスに送られます","POC:CPU_T11:SIGNALS:CTL":"出力が入力に接続されていることを確認してください","POC:CPU_TA:STATES:IN":"入力はMARレジスタ出力です","POC:CPU_TA:STATES:OUT":"出力はアドレスバスに送られます","POC:CPU_TA:SIGNALS:CTL":"出力が入力に接続されていることを確認してください","POC:CPU_TB:STATES:IN":"入力はバイトセレクター出力です","POC:CPU_TB:STATES:OUT":"出力はデータバスに送られます","POC:CPU_TB:SIGNALS:CTL":"出力が入力に接続されていることを確認してください","POC:CPU_MUX_A:STATES:MUX_0":"RF / AからのMUXAの入力0","POC:CPU_MUX_A:STATES:MUX_1":"内部バスからのMUXAの入力1","POC:CPU_MUX_A:STATES:MUX_O":"MUXAからALU / 0への出力","POC:CPU_MUX_A:SIGNALS:MA":"出力に送信する入力値を選択してください","POC:CPU_MUX_B:STATES:MUX_0":"RF / BからのMUXBの入力0","POC:CPU_MUX_B:STATES:MUX_1":"PCからのMUXBの入力1","POC:CPU_MUX_B:STATES:MUX_O":"MUXBからALU / 1への出力","POC:CPU_MUX_B:SIGNALS:MB":"出力に送信する入力値を選択してください","POC:CPU_MUX_1:STATES:MUX_0":"内部バスからのMUX1の入力0","POC:CPU_MUX_1:STATES:MUX_1":"データバスからのMUX1の入力1","POC:CPU_MUX_1:STATES:MUX_O":"MUX 1からMBRへの出力","POC:CPU_MUX_1:SIGNALS:M1":"出力に送信する入力値を選択してください","POC:CPU_MUX_7:STATES:MUX_0":"内部バスからのMUX7の入力0","POC:CPU_MUX_7:STATES:MUX_1":"フラグセレクタからのMUX7の入力1","POC:CPU_MUX_7:STATES:MUX_O":"MUX 7からSRへの出力","POC:CPU_MUX_7:SIGNALS:M7":"出力に送信する入力値を選択してください","POC:CU_MUX_A:STATES:MUX_0":"mADDR +1からのMUXAの入力0","POC:CU_MUX_A:STATES:MUX_1":"co2maddrからのMUXAの入力1","POC:CU_MUX_A:STATES:MUX_2":"mIR / MADDRからのMUXAの入力2","POC:CU_MUX_A:STATES:MUX_3":"MUX Aの入力3,0から","POC:CU_MUX_A:STATES:MUX_O":"MUX AからmADDRへの出力","POC:CU_MUX_A:SIGNALS:A0":"mIR / A0","POC:CU_MUX_A:SIGNALS:A1":"コントロールユニットMUXBの出力","POC:CU_MUX_B:STATES:MUX_0":"MUXCからのMUXBの入力0","POC:CU_MUX_B:STATES:MUX_1":"NOT(MUX C)からのMUX Bの入力1","POC:CU_MUX_B:STATES:MUX_O":"MUXBからMUXA / A1への出力","POC:CU_MUX_B:SIGNALS:MB":"出力に送信する入力値を選択してください","POC:CU_MUX_C:STATES:MUX_0":"MUX Cの入力0,0から","POC:CU_MUX_C:STATES:MUX_1":"INTからのMUX Cの入力1","POC:CU_MUX_C:STATES:MUX_2":"IORdyからのMUXCの入力2","POC:CU_MUX_C:STATES:MUX_3":"MRdyからのMUXCの入力3","POC:CU_MUX_C:STATES:MUX_4":"SR / UからのMUXCの入力4","POC:CU_MUX_C:STATES:MUX_5":"SR / IからのMUXCの入力5","POC:CU_MUX_C:STATES:MUX_6":"SR / ZからのMUXCの入力6","POC:CU_MUX_C:STATES:MUX_7":"SR / NからのMUXCの入力7","POC:CU_MUX_C:STATES:MUX_8":"SR / VからのMUXCの入力8","POC:CU_MUX_C:STATES:MUX_9":"SR / CからのMUXCの入力9","POC:CU_MUX_C:STATES:MUX_10":"InExからのMUXCの入力10","POC:CU_MUX_C:STATES:MUX_O":"MUX Bへの出力","POC:CU_MUX_C:SIGNALS:CTL":"コントロールユニットMUXCの出力","POC:CU_MUX_RA:STATES:MUX_0":"IR [SelA + 0 ... SelA +4]からのMUXMRの入力0","POC:CU_MUX_RA:STATES:MUX_1":"SelAからのMUXMRの入力1","POC:CU_MUX_RA:STATES:MUX_O":"RAへの出力","POC:CU_MUX_RA:SIGNALS:CTL":"出力に送信する入力値を選択してください","POC:CU_MUX_RB:STATES:MUX_0":"IR [SelB + 0 ... SelB +4]からのMUXMRの入力0","POC:CU_MUX_RB:STATES:MUX_1":"Inpu SelBからのMUXMRのt1 ","POC:CU_MUX_RB:STATES:MUX_O":"RBへの出力","POC:CU_MUX_RB:SIGNALS:MR":"出力に送信する入力値を選択してください","POC:CU_MUX_RC:STATES:MUX_0":"IR [SelC + 0 ... SelC +4]からのMUXMRの入力0","POC:CU_MUX_RC:STATES:MUX_1":"SelCからのMUXMRの入力1","POC:CU_MUX_RC:STATES:MUX_O":"RCへの出力","POC:CU_MUX_RC:SIGNALS:MR":"出力に送信する入力値を選択してください","POC:CU_MUX_MC:STATES:MUX_0":"IR3 ... IR0からのMUXMCの入力0","POC:CU_MUX_MC:STATES:MUX_1":"SelCopからのMUXMCの入力1","POC:CU_MUX_MC:STATES:MUX_O":"COPへの出力","POC:CU_MUX_MC:SIGNALS:CTL":"出力に送信する入力値を選択してください","POC:MAR:STATES:IN":"入力は内部バスです","POC:MAR:STATES:OUT":"出力はTaトライステートに送られます","POC:MAR:SIGNALS:C0":"入力が保存されていることを確認してください","POC:MBR:STATES:IN":"入力はM1出力です","POC:MBR:STATES:OUT":"出力はT1トライステートに送られます","POC:MBR:SIGNALS:C1":"入力が保存されていることを確認してください","POC:PC:STATES:IN":"入力は内部バスです","POC:PC:STATES:OUT":"出力はT2トライステートに送られます","POC:PC:SIGNALS:CTL":"入力が保存されていることを確認してください","POC:IR:STATES:IN":"入力は内部バスです","POC:IR:STATES:OUT":"出力はIRセレクターとCUに送られます","POC:IR:SIGNALS:C3":"入力が保存されていることを確認してください","POC:RT1:STATES:IN":"入力は内部バスです","POC:RT1:STATES:OUT":"出力はselect-rt1に送られます","POC:RT1:SIGNALS:CTL":"入力が保存されていることを確認してください","POC:SR:STATES:IN":"入力はM7の出力です","POC:SR:STATES:OUT":"出力はT8入力とCUに送られます","POC:SR:SIGNALS:CTL":"入力が保存されていることを確認してください","POC:REGISTER_FILE:STATES:A":"T9およびMA / 0へのRFの出力","POC:REGISTER_FILE:STATES:B":"T10およびMB / 0へのRFの出力","POC:REGISTER_FILE:STATES:C":"内部バスからRFへの入力","POC:REGISTER_FILE:SIGNALS:RA":"値がAに送信されるレジスタを選択してください","POC:REGISTER_FILE:SIGNALS:RB":"値がBに送信されるレジスタを選択してください","POC:REGISTER_FILE:SIGNALS:RC":"Cの値が格納されているレジスタを選択してください","POC:REGISTER_FILE:SIGNALS:LC":"RCが更新されることを確認してください","POC:CPU_ALU:STATES:A":"MUX Aマルチプレクサからの出力","POC:CPU_ALU:STATES:B":"MUX Bマルチプレクサからの出力","POC:CPU_ALU:STATES:ALU":"結果はT6とRT3の入力に送られます","POC:CPU_ALU:STATES:FLAGS":"更新されたC,V,N,Zフラグ","POC:CPU_ALU:SIGNALS:COP":"オペコード(+,-,*,...)","POC:SELECT_RT1:STATES:MUX_I":"RT1からのSELECT-RT1の入力","POC:SELECT_RT1:STATES:MUX_O":"T3を介した内部バスへの出力","POC:SELECT_RT1:SIGNALS:SE":"符号拡張","POC:SELECT_RT1:SIGNALS:SIZE":"サイズ","POC:SELECT_RT1:SIGNALS:OFFSET":"オフセット","POC:MEMORY:STATES:ADDR":"アドレスバス","POC:MEMORY:STATES:DATA":"データバス","POC:MEMORY:STATES:MRDY":"メモリ準備完了","POC:MEMORY:SIGNALS:BW":"バイト幅","POC:MEMORY:SIGNALS:R":"読み取り","POC:MEMORY:SIGNALS:W":"書き込み","POC:IO:STATES:ADDR":"アドレスバス","POC:IO:STATES:DATA":"データバス","POC:IO:SIGNALS:IOR":"IOデバイスから読み取る","POC:IO:SIGNALS:IOW":"IOデバイスに書き込みます","POC:KEYBOARD:STATES:ADDR":"アドレスバス","POC:KEYBOARD:STATES:DATA":"データバス","POC:KEYBOARD:SIGNALS:IOR":"キーボードから読み取る","POC:DISPLAY:STATES:ADDR":"アドレスバス","POC:DISPLAY:STATES:DATA":"データバス","POC:DISPLAY:SIGNALS:IOR":"ディスプレイから読み取る(無効)","POC:DISPLAY:SIGNALS:IOW":"ディスプレイに書き込む","POC:L3D:STATES:ADDR":"アドレスバス","POC:L3D:STATES:DATA":"データバス","POC:L3D:SIGNALS:IOR":"L3Dから読み取る","POC:L3D:SIGNALS:IOW":"L3Dに書き込む",_last_:"_last_"};i18n.eltos.dialogs.ja={"Show/Hide ActionBar":"アクションバーの表示/非表示","Show/Hide Slider":"スライダーの表示/非表示","WepSIM User Interface skin":"WepSIMユーザーインターフェーススキン","Initial intro":"初期イントロ","About WepSIM":"WepSIMについて",Title:"タイトル",Message:"メッセージ",Duration:"期間","Confirm remove record...":"実際のレコードを削除しますか?","Close or Reset...":"閉じるには[閉じる]をクリックしてください。削除するには[リセット]ボタンをクリックしてください。","Sure Control Memory...":"エディタの内容ではなく現在のコントロールメモリの内容を保存してもよろしいですか。","Show/Hide labels":"ラベルの表示/非表示","Show/Hide content":"コンテンツの表示/非表示","Show/Hide assembly":"アセンブリを表示/隠す","Show/Hide pseudo-instructions":"擬似命令の表示/非表示",Close:"閉じる",details:"詳細",idiom:"熟語",_last_:"_last_"};i18n.eltos.gui.it={"Loading WepSIM...":"Caricamento WepSIM ...",About:"Informazioni",Configuration:"Configurazione",MicroCode:"MicroCode",Assembly:"Montaggio",Simulator:"Simulatore",Examples:"Esempi",Load:"Caricare",Save:"Salvare","Load/Save":"Caricare/Salvare",Restore:"Ristabilire",Help:"Aiuto",Notifications:"Notifiche",RecordBar:"RecordBar",Input:"Ingresso",Output:"Produzione",Reload:"Ricaricare",Checkpoint:"Posto di controllo","Help Index":"Indice della Guida",Processor:"Processore","Assembly Debugger":"Assembly Debugger",Reset:"Reset",microInstruction:"μIstruzione",Instruction:"istruzione",Run:"Correre","Hardware Summary":"Riepilogo Hardware",processor:"processore",details:"dettagli",microcode:"microcodice",Signals:"Segnali",Behaviors:"Comportamenti",States:"Stati","Control States":"Stati di controllo",Dependencies:"Dipendenze",Close:"Vicino",Description:"Descrizione",Show:"Mostrare","Show Main Memory":"Mostra la memoria principale",compile:"compilare",Compile:"Compilare","Please write the file name":"Si prega di scrivere il nome del file","Load from this File":"Carica da questo file",labels:"etichette",addr:"addr",ess:"ess",content:"soddisfare",assembly:"montaggio",instructions:"Istruzioni","simulator intro 1":"È possibile selezionare l'hardware da utilizzare. Quello predefinito è l'hardware EP (Elemental Processor). È possibile utilizzare il selettore di modalità per modificare l'hardware utilizzato.","simulator intro 2":"Quindi devi caricare il microcodice (definisce il set di istruzioni) e il codice assembly. Puoi usare un esempio , caricalo da un file , oppure puoi modificare un nuovo microcodice e un nuovo codice assembly . ","simulator intro 3":"Infine, nel simulatore è possibile eseguire il microcodice più assembly precedentemente caricato. È possibile eseguirlo entrambi, a livello di microistruzione o di istruzione di assembly.","Prev.":"Prev.",Next:"Il prossimo",End:"Fine","Disable tutorial mode":"Disattiva la modalità tutorial",Comment:"Commento",Pause:"Pausa",Play:"Giocare",Stop:"Fermare",Record:"Disco",Registers:"Registri","Control Memory":"Control Memory",Stats:"Statistiche",Memory:"Memoria","Keyboard+Display":"Tastiera+display","I/O Stats":"I/O Stats","I/O Configuration":"I/O Configurazione",Recent:"Recente",Refresh:"Ricaricare",Welcome:"Benvenuto","Microcode & Assembly":"Hardware WepSIM","Pick firm/soft":"Scegli il firmware / software da",Information:"Informazioni da",Native:"Nativo","MIPS32-like":"Codice simile a MIPS32",RISCV32:"RISCV32 Codice","Z80-like":"Codice simile a Z80",Actions:"Azioni",Utilities:"Utilità","Information from":"Informazioni da","Pick firm/soft from":"Scegli azienda / morbida da","Welcome tutorial":"Tutorial di benvenuto","Assembly only":"Solo assemblaggio","Micro & Assembly":"Micro e assemblaggio",idiom:"idioma","quick config":"configurazione rapida","Graph: quick interactive mode":"Grafico: modalità interattiva rapida",_last_:"_last_"};i18n.eltos.tutorial_welcome.it={title_0:"Benvenuto nel simulatore WepSIM!",message_0:"
",title_3:"Semplice esperienza WepSIM: microprogrammazione e programmazione",message_3:"
Il secondo passo è programmare l'assembly da eseguire. Si prega di utilizzare il pulsante 'Assembly' da entrambi, lo schermo del simulatore o lo schermo del microcodice. ",title_4:"Semplice esperienza WepSIM: microprogrammazione e programmazione",message_4:"
La schermata di programmazione fornisce: L'editor per il codice assembly. Il compilatore di assiemi. Il visualizzatore della mappa della memoria e l'aiuto. Una volta che il codice assebly è pronto (modificato e compilato senza errori), il passaggio successivo è passare alla schermata di simulazione. ",title_5:"Semplice esperienza WepSIM: microprogrammazione e programmazione",message_5:"
Il terzo passo è eseguire il codice assembly nel simulatore. Lo schermo del simulatore fornisce: La vista di assemblaggio e hardware . La vista dettagliata dei registri, della memoria di controllo, della memoria principale, ecc. Il reset, passo dopo passo o eseguito fino alle azioni di breakpoint/fine. Questo tutorial ha introdotto l'utilizzo tipico di WepSIM per studenti e insegnanti. Divertiti con WepSIM! ",_last_:"_last_"};i18n.eltos.tour_intro.it={step1:"WepSIM aiuta a capire meglio come funziona un computer: è visivo, interattivo, si integra da segnali fino a interruzioni, chiamate di sistema, eccezioni, ecc. Crediamo veramente che WepSIM sia uno strumento didattico rivoluzionario. Questo breve tour introduce gli elementi chiave della sua interfaccia.",step2:"Questo pulsante in alto a destra è un menu di accesso rapido alle diverse 'modalità di lavoro'. "+" "+"Gli utenti possono selezionare:"+""+"L'hardware con cui lavorare (ad es. processore EP, ecc.) "+"Modalità solo assembly, con MIPS32 interi o RISC-V 32 istruzioni "+" ",step3:'In alto a destra, il pulsante "Guida" apre la finestra di dialogo associata. La finestra di dialogo della guida riassume le esercitazioni, le descrizioni, le informazioni, ecc.',step4:"E a sinistra, il pulsante 'esempi' apre la finestra di dialogo di esempio. Ci sono molti esempi che possono essere usati per imparare in modo incrementale.",step5:"In alto a sinistra, il pulsante 'configurazione' apre la finestra di configurazione. Permette agli utenti di adattare diversi aspetti dell'esecuzione, dell'interfaccia utente, delle preferenze, ecc.",step6:"Congratulazioni! Conosci gli elementi chiave nell'interfaccia di WepSIM. Dalla finestra di dialogo 'Aiuto' puoi accedere al 'Tutorial di benvenuto' per continuare ad apprendere. ",_last_:"_last_"};i18n.eltos.cfg.it={General:"Generale","Idiom for help, examples, etc.":"Idioma per aiuto, esempi, ecc.","Notification speed: time before disapear":"Velocità di notifica: tempo prima che scompaia","Dark Mode":"Modalità scura",Editor:"editore","Editor theme: light or dark":"Tema dell'editor: chiaro o scuro",Light:"Luce",Dark:"Buio","Editor mode: vim, emacs, etc.":"Modalità Editor: vim, emacs, ecc.",Execution:"Esecuzione","Running speed: execution speed":"Velocità di esecuzione: velocità di esecuzione",Slow:"Lento",Normal:"Normale",Fast:"Veloce","Step-by-step: element in run mode":"Procedura dettagliata: elemento in modalità esecuzione",Instructions:"Istruzioni",Instruction:"istruzione","µinstructions":"μinstructions",microInstruction:"μInstruction","Breakpoint icon: icon to be used for breakpoints":"Icona punto di interruzione: icona da utilizzare per i punti di interruzione","Limit instructions: number of instructions to be executed":"Istruzioni limite: numero di istruzioni da eseguire","Limit instruction ticks: to limit clock ticks":"Limite di istruzione limite: limite di zecche dell'orologio per istruzione","Register file":"Register file","Display format":"Formato di visualizzazione","Register file names":"Registrare i nomi dei file",Numbers:"Numeri",Labels:"etichette","Editable registers: edit register file values":"Registri modificabili: modifica i valori del file di registro","Circuitry simulation":"Simulazione di circuiti","Data-path color":"Colore percorso dati","Signal color":"Colore del segnale","Show by value or by activation":"Mostra per valore o per attivazione",Value:"Valore",Activation:"Attivazione","Interactive mode: signal value can be updated":"Modalità interattiva: il valore del segnale può essere aggiornato","Quick interactive mode: quick update of signal value":"Modalità interattiva rapida: aggiornamento rapido del valore del segnale","(example)":"(esempio)",Accesibility:"Accessibilità","Beginner view":"Visualizzazione per principianti","Auto-scroll while executing":"Scorrimento automatico durante l'esecuzione","Active voice: external voice control":"Voce attiva: controllo vocale esterno","Verbalization: textual or mathematical":"Verbalizzazione: testuale o matematica","WepSIM User Interface views":"Viste dell'interfaccia utente di WepSIM",Privacy:"Privacy",On:"On",Off:"Off",_last_:"_last_"};i18n.eltos.help.it={"Welcome tutorial":"Welcome tutorial",help_01_01:"Apri il tutorial di benvenuto","Simple usage tutorial":"Tutorial di utilizzo semplice",help_01_02:"Apri il tutorial sull'uso semplice, per la microprogrammazione e la programmazione degli assiemi","Execute example":"Execute example",help_01_03:"Play the execute example tutorial","Simulator: firmware":"Simulator: firmware",help_02_01:"Come lavorare con il firmware da caricare nella memoria di controllo","Microcode format":"Formato microcodice",help_02_02:"Sintassi del microcodice utilizzato","Simulator: assembly":"Simulatore: assemblaggio",help_02_03:"Come lavorare con l'assembly che utilizza il firmware sopra menzionato","Assembly format":"Formato di assemblaggio",help_02_04:"Sintassi degli elementi di assieme","Simulator: execution":"Simulatore: esecuzione",help_02_05:"Come il simulatore può eseguire l'assemblaggio e il firmware","Simulated architecture":"Architettura simulata",help_03_01:"Descrizione dell'architettura del processore simulato","Simulated signals":"Segnali simulati",help_03_02:"Riassunto dei segnali principali del processore elementare simulato","Hardware summary":"Riepilogo hardware",help_03_03:"Scheda di riferimento per l'hardware del processore elementare simulato","License, platforms, etc.":"Licenza, piattaforme, ecc.",help_04_01:"Licenza WepSIM, piattaforme supportate, tecnologie utilizzate",Authors:"Autori",help_04_02:"Autori di WepSIM",_last_:"_last_"};i18n.eltos.states.it={States:"Stati",state:"stato",Current:"Attuale","Current State":"Stato attuale",History:"Storia",None:"Nessuna","Empty history":"Storia vuota","Empty (only modified values are shown)":"Vuoto (vengono mostrati solo i valori modificati)",Differences:"Differenze","differences with clipboard state":"differenze con lo stato degli appunti","Meets the specified requirements":"Soddisfa i requisiti specificati",history:"storia",Add:"Inserisci","'Current State' to History":"'Current State' to History",Check:"Dai un'occhiata",Copy:"Copia","to clipboard":"negli appunti",Checkpoint:"Posto di controllo","File name":"File name","Tag for checkpoint":"Tag per checkpoint","File to be loaded":"File da caricare","Save to File":"Salva su file","State(s) to checkpoint":"Stato / i al punto di controllo","Record to checkpoint":"Registra al punto di controllo","Browser cache":"Browser cache","Session to be restore":"Sessione da ripristinare",_last_:"_last_"};i18n.eltos.examples.it={"addv + seqv.":"addv + seqv.","Alloc.s":"Alloc.s","Dummy instruction":"Istruzione fittizia",Exception:"Eccezione",Instructions:"Istruzioni",Interruptions:"Interruzioni","Int. + syscall + except.":"Int. + syscall + tranne","I/O":"I/O",Looping:"Looping","madd, mmul, mxch":"Aiuto, umore, mente","Masks & shift":"Maschere e maiuscole",Matrix:"Matrice","Memory access":"Accesso alla memoria","SC 1, 4-5, 8, 11-12":"SC 1, 4-5, 8, 11-12",Subrutine:"Sottoprogramma","syscall 1, 4-5, 8, 11-12":"syscall 1, 4-5, 8, 11-12","System call":"Chiamata di sistema",Threads:"Filo",Vector:"Vettore","Compiler Explorer":"Compiler Explorer",Instructive:"Istruttivo ",example_04_01:"Esempio avanzato con interruzione, chiamata di sistema ed eccezione.",example_05_01:"Estensione specifica dell'applicazione: addv + seqv.",example_05_03:"Estensione specifica dell'applicazione: madd + mmul + mxch.",example_03_01:"Esempio con eccezione in virgola mobile.",example_03_02:"Esempio con supporto per interruzioni: fetch, RETI e .ktext/.kdata.",example_03_03:"Esempio con supporto per le chiamate di sistema.",example_03_04:"Esempio con una semplice convenzione di stack.",example_04_04:"Esempio di malloc + gratuito.",example_04_02:"Esempio di syscall per la stampa/lettura di interi e stringhe.",example_04_03:"Esempio di thread.",example_03_01b:"Esempio con eccezione in virgola mobile.",example_03_02b:"Esempio con supporto per interruzioni: fetch, RETI e .ktext/.kdata.",example_02_01:"Esempio con accesso I/O programmato e segmento .text/.data di base.",example_03_03b:"Esempio con supporto per le chiamate di sistema.",example_02_02:"Esempio esteso con più istruzioni e I/O (tastiera, display).",example_02_04:"Esempio esteso con subrutine e matrice.",example_02_03:"Esempio più esteso con maschere, maiuscole e segmento .text/.data di base.",example_01_01:"Semplice esempio con fetch, istruzioni aritmetiche e segmento .text di base.",example_01_04:"Semplice esempio con fetch, branch e basic .text/.data segment.",example_01_03:"Semplice esempio con fetch, ramo e segmento .text di base.",example_01_02:"Semplice esempio con recupero, accesso alla memoria e segmento .text/.data di base.",example_06_01:"Esempio di prova",example_06_02:"Esempio di Simple Compiler Explorer.",Advanced:"Avanzate",Initial:"Iniziale",Intermediate:"Intermedio",Laboratory:"Laboratorio","Operating Systems":"Sistemi operativi",Extra:"Bonus",Special:"Speciale","Load example":"Carica esempio","Load Assembly only":"Carica solo il gruppo","Load Firmware only":"Carica solo il firmware","Copy reference to clipboard":"Copia il riferimento negli appunti",Share:"Condividi","No examples available...":"Non sono disponibili esempi per l'hardware selezionato","Simple example":"Semplice esempio",_last_:"_last_"};i18n.eltos.compiler.it={"PROBLEM AROUND LINE":"Problema intorno alla linea","NO TAG OR DIRECTIVE":"Previsto tag o direttiva, ma trovato questo token invece: ","NO TAG, DIR OR INS":"Tag non valido (es .: tag1 :) direttiva (es .: .data) o istruzione, trovato: ","INVALID TAG FORMAT":"Un tag deve seguire un formato alfanumerico (che inizia con una lettera o di sottolineatura): ","TAG OR INSTRUCTION":"Un tag non può avere lo stesso nome di un'istruzione: ","REPEATED TAG":"tag ripetuta: ","NO NUMERIC DATATYPE":"Valore atteso per tipo di dato numerico ma ha trovato: ","NO POSITIVE NUMBER":"Previsto un numero positivo ma ha trovato: ","NO NUMBER OF BYTES":"Numero previsto di byte da riservare in .space ma ha trovato: ","INVALID ALIGN VALUE":"Previsto il parametro align come numero positivo ma ha trovato: ","REMEMBER ALIGN VAL":"Ricordate che il numero è la potenza di due per l'allineamento, consultare la documentazione MIPS.","NOT CLOSED STRING":"String non è chiuso (dimenticato di farla finita con le virgolette)","NO QUOTATION MARKS":"stringa prevista tra virgolette ma trovato: ","UNEXPECTED DATATYPE":"Nome imprevisto tipo di dati: ","INVALID SEGMENT NAME":"Previsto .data / .text / ... segmento ma ha trovato: ","NO MAIN OR KMAIN":"Tag 'principale' o 'kmain' non sono definiti nel segmento di testo (s). E 'obbligatorio definire almeno uno di questi tag al fine di eseguire un programma","UNKNOWN 1":"Si è verificato un errore sconosciuto (1) per il tipo di campo: ","UNKNOWN 2":"Errore imprevisto (2)","REMEMBER I. FORMAT":"Ricordare che il formato di istruzioni è stato definito come: ","SEVERAL CANDIDATES":"Istruzione e campi corrispondono con più di un microprogramma. Si prega di verificare il microcodice. Attualmente, il formato delle istruzioni può essere: ","NOT MATCH MICRO":"Istruzione e campi non corrispondono con microprogramma.","CHECK MICROCODE":"Si prega di verificare il microcodice. Probabilmente si è dimenticato di aggiungere un campo, un numero non rientra nel suo spazio, o semplicemente utilizzato un'istruzione sbagliata","INS. MISSING FIELD":"Campo mancante nell'istruzione","UNEXPECTED (REG)":"Registro previsto ma trovato registro tra parentesi.","EXPECTED (REG)":"Registro previsto tra parentesi ma ha trovato: ","EXPECTED REG":"Registro previsto (e.g.: $1/$a0/...) ma ha trovato: ","UNKNOWN ESCAPE CHAR":"Carattere di fuga sconosciuto","SPACE FOR # BITS":" bit in binario ma c'è spazio solo per ",NEEDS:" bisogno ","UNKNOWN MC FORMAT":"(unknown format in microcode)","LABEL NOT DEFINED":"Etichetta utilizzati ma non definiti nel codice assembly: ","LABEL NOT FOUND":"Previsto ':' non trovato, ha trovato token: ","REPEATED LABEL":"Etichetta si ripete: ","INVALID LABEL FORMAT":"formato etichetta non è valida per: ","OPEN BRACE NOT FOUND":"Previsto '{' non trovato","CLOSE BRACE NOT FOUND":"Previsto '}' non trovato","OPEN PAREN. NOT FOUND":"Previsto '(' non trovato","CLOSE PAREN. NOT FOUND":"Previsto ')' non trovato","COMMA NOT FOUND":"Previsto '' non trovato","EQUAL NOT FOUND":"Previsto '=' non trovato","SIGNAL NOT EXISTS":"Segnale non esiste: ","SIGNAL NO DIRECTLY":"segnale non può essere utilizzato direttamente, utilizza i segnali Control Unit invece.","INCORRECT BIN. FORMAT":"formato binario non corretto: ","OUT OF RANGE":"Valore fuori campo: ","EMPTY MICROCODE":"microcodice vuota","EMPTY NAME LIST":"elenco dei nomi vuoto per il registro: x = []","DUPLICATE SP":"definizione duplicata di stack pointer","NO SP":"stack_pointer atteso pedina non trovata","UNDEF. INSTR.":"l'istruzione non definita: ","MORE 100 FIELDS":"Più di 100 campi in una singola istruzione.","CO AS FIELD NAME":"campo istruzione ha 'co' come nome.","NW AS FIELD NAME":"campo istruzione ha 'nwords' come nome.","NO CO FIELD":"parola chiave 'co' prevista non trovato","INCORRECT CO BIN.":"formato binario non corretto di 'co': ","INCORRECT COP BIN.":"formato binario non corretto di 'poliziotto': ","INVALID PARAMETER":"Parametro non valido: ","ALLOWED PARAMETER":"Esso consente solo i seguenti campi: reg, num, inm, addr, indirizzo","MISSING TOKEN ON":"'Token' è mancante dopo '(' on: ","MISSING ) ON":"')' Manca il: ","CO ALREADY USED":"'Co' è già stato utilizzato da: ","CO+COP ALREADY USED":"'Co op +' è già stato utilizzato da: ","NO NWORDS":"parola chiave 'nwords' attesi non si trovano","INCORRECT ADDRESSING":"Tipo di indirizzamento non corretti (abs o rel)","UNEXPECTED FIELD":"campo imprevisto trovato: ","CHECK ORDER":"Si prega di controllare l'ordine dei campi","STARTBIT OoR":"startbit fuori campo: ","STOPBIT OoR":"stopbit fuori campo: ","OVERLAPPING FIELD":"campo Sovrapposizione: ","BAD COP BIN. LEN.":"lunghezza binario errato per 'cop': ","SP NOT DEFINED":"Pila registro puntatore non è stato definito","NO LABEL FETCH":"Etichetta 'prendere' non definita","NO LABEL BEGIN":"'Iniziare' non trovato","NO CO CODES":"Non c'è abbastanza 'CO' codici disponibili per le istruzioni","NO LABEL MADDR":"Maddr etichetta non trovato: ","INS. NAME":"Nome istruzione: '","NOT VALID FOR":"'Non è valido per: ","BIGGER THAN":"è più grande di",BITS:"bit","EXPECTED VALUE":"Valore atteso che si inserisce in un '","BUT INSERTED":"ma inserito",INSTEAD:"anziché",_last_:"_last_"};i18n.eltos.hw.it={Component:"Componente",Element:"Elemento","States (In)":"Stati (In)","States (Out)":"Stati (Out)",Signals:"Segnali","It has":"Ha",inputs:"ingressi",outputs:"uscite",signals:"segnali",Graph:"Grafico",Text:"Testo","Graph: split view":"Grafico: vista divisa","Graph: interactive mode":"Grafico: modalità interattiva",name:"nome",version:"versione",abilities:"abilità",value:"valore",default_value:"valore di default",nbits:"nbit",type:"genere",visible:"visibile","EP:CPU_T1:STATES:IN":"Input è il valore del registro MBR","EP:CPU_T1:STATES:OUT":"L'uscita va al bus interno","EP:CPU_T1:SIGNALS:CTL":"Conferma che il valore di ingresso viene copiato nell'uscita","EP:CPU_T2:STATES:IN":"L'ingresso è il valore del registro PC","EP:CPU_T2:STATES:OUT":"L'uscita va al bus interno","EP:CPU_T2:SIGNALS:CTL":"Conferma che il valore di ingresso viene copiato nell'uscita","EP:CPU_T3:STATES:IN":"L'ingresso è l'uscita del selettore-IR","EP:CPU_T3:STATES:OUT":"L'uscita va al bus interno","EP:CPU_T3:SIGNALS:CTL":"Conferma che il valore di ingresso viene copiato nell'uscita","EP:CPU_T4:STATES:IN":"L'ingresso è il valore del registro RT1","EP:CPU_T4:STATES:OUT":"L'uscita va al bus interno","EP:CPU_T4:SIGNALS:CTL":"Conferma che il valore di ingresso sia copiato nell'uscita","EP:CPU_T5:STATES:IN":"L'ingresso è il valore del registro RT2","EP:CPU_T5:STATES:OUT":"L'uscita va al bus interno","EP:CPU_T5:SIGNALS:CTL":"Conferma che il valore di ingresso viene copiato nell'uscita","EP:CPU_T6:STATES:IN":"L'ingresso è l'uscita ALU","EP:CPU_T6:STATES:OUT":"L'uscita va al bus interno","EP:CPU_T6:SIGNALS:CTL":"Conferma che il valore di ingresso viene copiato nell'uscita","EP:CPU_T7:STATES:IN":"L'ingresso è il valore del registro RT3","EP:CPU_T7:STATES:OUT":"L'uscita va al bus interno","EP:CPU_T7:SIGNALS:CTL":"Conferma che il valore di ingresso viene copiato nell'uscita","EP:CPU_T8:STATES:IN":"Input è il valore del registro SR","EP:CPU_T8:STATES:OUT":"L'uscita va al bus interno","EP:CPU_T8:SIGNALS:CTL":"Conferma che il valore di ingresso viene copiato nell'uscita","EP:CPU_T9:STATES:IN":"Input è il valore dell'output della porta A del file di registro","EP:CPU_T9:STATES:OUT":"L'uscita va al bus interno","EP:CPU_T9:SIGNALS:CTL":"Conferma che il valore di ingresso viene copiato nell'uscita","EP:CPU_T10:STATES:IN":"Input è il valore dell'output della porta B del file di registro","EP:CPU_T10:STATES:OUT":"L'uscita va al bus interno","EP:CPU_T10:SIGNALS:CTL":"Conferma che il valore di ingresso viene copiato nell'uscita","EP:CPU_T11:STATES:IN":"L'ingresso è la microistruzione/uscita ExCode","EP:CPU_T11:STATES:OUT":"L'uscita va al bus interno","EP:CPU_T11:SIGNALS:CTL":"Conferma che il valore di ingresso viene copiato nell'uscita","EP:CPU_T12:STATES:IN":"L'ingresso è l'uscita HPC (contatore delle prestazioni hardware)","EP:CPU_T12:STATES:OUT":"L'uscita va al bus interno","EP:CPU_T12:SIGNALS:CTL":"Conferma che il valore di ingresso viene copiato nell'uscita","EP:CPU_TA:STATES:IN":"L'ingresso è l'uscita del registro MAR","EP:CPU_TA:STATES:OUT":"L'uscita va al bus indirizzi","EP:CPU_TA:SIGNALS:CTL":"Conferma che il valore di ingresso sia copiato nell'uscita","EP:CPU_TB:STATES:IN":"L'ingresso è l'uscita del selettore di byte","EP:CPU_TB:STATES:OUT":"L'uscita va al bus dati","EP:CPU_TB:SIGNALS:CTL":"Conferma che il valore di ingresso viene copiato nell'uscita","EP:CPU_MUX_A:STATES:MUX_0":"Ingresso 0 del MUX A, da File Registro (A)","EP:CPU_MUX_A:STATES:MUX_1":"Ingresso 1 del MUX A, dal registro RT1","EP:CPU_MUX_A:STATES:MUX_O":"Uscita su ALU, operatore 0","EP:CPU_MUX_A:SIGNALS:MA":"Seleziona il valore di ingresso da inviare all'uscita","EP:CPU_MUX_B:STATES:MUX_0":"Ingresso 0 del MUX B, da File Registro (B)","EP:CPU_MUX_B:STATES:MUX_1":"Ingresso 1 del MUX B, dal registro RT2","EP:CPU_MUX_B:STATES:MUX_2":"Ingresso 2 del MUX B, valore 4","EP:CPU_MUX_B:STATES:MUX_3":"Ingresso 3 del MUX B, valore 1","EP:CPU_MUX_B:STATES:MUX_O":"Uscita su ALU, operatore 1","EP:CPU_MUX_B:SIGNALS:MB":"Seleziona il valore di ingresso da inviare all'uscita","EP:CPU_MUX_1:STATES:MUX_0":"Ingresso 0 del MUX 1, da Bus Interno","EP:CPU_MUX_1:STATES:MUX_1":"Ingresso 1 del MUX 1, da Byte Selector","EP:CPU_MUX_1:STATES:MUX_O":"Uscita su MBR, da MUX 1","EP:CPU_MUX_1:SIGNALS:M1":"Seleziona il valore di ingresso da inviare all'uscita","EP:CPU_MUX_2:STATES:MUX_0":"Ingresso 0 del MUX 2, da Bus Interno","EP:CPU_MUX_2:STATES:MUX_1":"Ingresso 1 di MUX 2, PC + 4","EP:CPU_MUX_2:STATES:MUX_O":"Uscita al PC","EP:CPU_MUX_2:SIGNALS:M2":"Seleziona il valore di ingresso da inviare all'uscita","EP:CPU_MUX_7:STATES:MUX_0":"Ingresso 0 del MUX 7, da Bus Interno","EP:CPU_MUX_7:STATES:MUX_1":"Ingresso 1 del MUX 7, da Flag Selector","EP:CPU_MUX_7:STATES:MUX_O":"Uscita per registrare SR","EP:CPU_MUX_7:SIGNALS:M7":"Seleziona il valore di ingresso da inviare all'uscita","EP:CU_MUX_A:STATES:MUX_0":"Ingresso 0 del MUX A, da microADDR + 1","EP:CU_MUX_A:STATES:MUX_1":"Ingresso 1 del MUX A, da co2maddr","EP:CU_MUX_A:STATES:MUX_2":"Ingresso 2 del MUX A, da microIR/MADDR","EP:CU_MUX_A:STATES:MUX_3":"Ingresso 3 del MUX A, da 0","EP:CU_MUX_A:STATES:MUX_O":"Uscita a microADDR, da MUX A","EP:CU_MUX_A:SIGNALS:A0":"mIR/A0","EP:CU_MUX_A:SIGNALS:A1":"Uscita centralina MUX B","EP:CU_MUX_B:STATES:MUX_0":"Ingresso 0 del MUX B, dal MUX C","EP:CU_MUX_B:STATES:MUX_1":"Ingresso 1 del MUX B, da NOT (MUX C)","EP:CU_MUX_B:STATES:MUX_O":"Uscita al MUX A/A1","EP:CU_MUX_B:SIGNALS:MB":"Seleziona il valore di ingresso da inviare all'uscita","EP:CU_MUX_C:STATES:MUX_0":"Ingresso 0 del MUX C, da 0","EP:CU_MUX_C:STATES:MUX_1":"Ingresso 1 del MUX C, da INT","EP:CU_MUX_C:STATES:MUX_2":"Ingresso 2 del MUX C, da IORdy","EP:CU_MUX_C:STATES:MUX_3":"Ingresso 3 del MUX C, da MRdy","EP:CU_MUX_C:STATES:MUX_4":"Ingresso 4 del MUX C, da SR/U","EP:CU_MUX_C:STATES:MUX_5":"Ingresso 5 del MUX C, da SR/I","EP:CU_MUX_C:STATES:MUX_6":"Ingresso 6 del MUX C, da SR/Z","EP:CU_MUX_C:STATES:MUX_7":"Ingresso 7 del MUX C, da SR/N","EP:CU_MUX_C:STATES:MUX_8":"Ingresso 8 del MUX C, da SR/V","EP:CU_MUX_C:STATES:MUX_9":"Ingresso 9 del MUX C, da SR/C","EP:CU_MUX_C:STATES:MUX_10":"Ingresso 10 del MUX C, da InEx","EP:CU_MUX_C:STATES:MUX_O":"Uscita al MUX B","EP:CU_MUX_C:SIGNALS:CTL":"Uscita della centralina MUX C","EP:CU_MUX_RA:STATES:MUX_0":"Ingresso 0 di MUX MR, da IR[SelA+0...SelA+4]","EP:CU_MUX_RA:STATES:MUX_1":"Ingresso 1 di MUX MR, da SelA","EP:CU_MUX_RA:STATES:MUX_O":"Uscita su RA","EP:CU_MUX_RA:SIGNALS:CTL":"Seleziona il valore di ingresso da inviare all'uscita","EP:CU_MUX_RB:STATES:MUX_0":"Ingresso 0 di MUX MR, da IR[SelB+0...SelB+4]","EP:CU_MUX_RB:STATES:MUX_1":"Ingresso 1 di MUX MR, da SelB","EP:CU_MUX_RB:STATES:MUX_O":"Uscita su RB","EP:CU_MUX_RB:SIGNALS:MR":"Seleziona il valore di ingresso da inviare all'uscita","EP:CU_MUX_RC:STATES:MUX_0":"Ingresso 0 di MUX MR, da IR[SelC+0...SelC+4]","EP:CU_MUX_RC:STATES:MUX_1":"Ingresso 1 di MUX MR, da SelC","EP:CU_MUX_RC:STATES:MUX_O":"Uscita su RC","EP:CU_MUX_RC:SIGNALS:MR":"Seleziona il valore di ingresso da inviare all'uscita","EP:CU_MUX_MC:STATES:MUX_0":"Ingresso 0 del MUX MC, da IR3...IR0","EP:CU_MUX_MC:STATES:MUX_1":"Ingresso 1 di MUX MC, da SelCop","EP:CU_MUX_MC:STATES:MUX_O":"Uscita su COP","EP:CU_MUX_MC:SIGNALS:CTL":"Seleziona il valore di ingresso da inviare all'uscita","EP:CPU_MUX_H:STATES:MUX_0":"Input 0 di MUX H, dell'Hardware Performance Counter","EP:CPU_MUX_H:STATES:MUX_1":"Input 1 di MUX H, dell'Hardware Performance Counter","EP:CPU_MUX_H:STATES:MUX_2":"Input 2 di MUX H, dell'Hardware Performance Counter","EP:CPU_MUX_H:STATES:MUX_3":"Input 3 di MUX H, dell'Hardware Performance Counter","EP:CPU_MUX_H:STATES:MUX_O":"Uscita su T12","EP:CPU_MUX_H:SIGNALS:MH":"Seleziona il valore di ingresso da inviare all'uscita","EP:MAR:STATES:IN":"L'ingresso è il bus interno","EP:MAR:STATES:OUT":"L'uscita va al tristato Ta","EP:MAR:SIGNALS:C0":"Conferma che l'ingresso è memorizzato","EP:MBR:STATES:IN":"L'ingresso è l'uscita M1","EP:MBR:STATES:OUT":"L'uscita va al tristato T1","EP:MBR:SIGNALS:C1":"Conferma che l'ingresso è memorizzato","EP:PC:STATES:IN":"L'ingresso è l'uscita M2","EP:PC:STATES:OUT":"L'uscita va al tristato T2","EP:PC:SIGNALS:CTL":"Conferma che l'ingresso è memorizzato","EP:IR:STATES:IN":"L'ingresso è il bus interno","EP:IR:STATES:OUT":"L'uscita va al selettore IR e alla CU","EP:IR:SIGNALS:C3":"Conferma che l'ingresso è memorizzato","EP:RT1:STATES:IN":"L'ingresso è il bus interno","EP:RT1:STATES:OUT":"L'uscita va al tristato T4","EP:RT1:SIGNALS:CTL":"Conferma che l'ingresso è memorizzato","EP:RT2:STATES:IN":"L'ingresso è il bus interno","EP:RT2:STATES:OUT":"L'uscita va al tristato T5","EP:RT2:SIGNALS:CTL":"Conferma che l'ingresso è memorizzato","EP:RT3:STATES:IN":"L'ingresso è l'uscita dell'ALU","EP:RT3:STATES:OUT":"L'uscita va al tristato T7","EP:RT3:SIGNALS:CTL":"Conferma che l'ingresso è memorizzato","EP:SR:STATES:IN":"L'ingresso è l'uscita dell'M7","EP:SR:STATES:OUT":"L'uscita va all'ingresso T8 e alla CU","EP:SR:SIGNALS:CTL":"Conferma che l'ingresso è memorizzato","EP:REGISTER_FILE:STATES:A":"Uscita di RF a T9 e MA/0","EP:REGISTER_FILE:STATES:B":"Uscita di RF a T10 e MB/0","EP:REGISTER_FILE:STATES:C":"Ingresso a RF dal bus interno","EP:REGISTER_FILE:SIGNALS:RA":"Seleziona il registro il cui valore viene inviato ad A","EP:REGISTER_FILE:SIGNALS:RB":"Seleziona il registro il cui valore viene inviato a B","EP:REGISTER_FILE:SIGNALS:RC":"Seleziona il registro in cui è memorizzato il valore di C","EP:REGISTER_FILE:SIGNALS:LC":"Conferma che RC sta per essere aggiornato","EP:CPU_ALU:STATES:A":"Uscita da multiplexor MUX A","EP:CPU_ALU:STATES:B":"Uscita da multiplexor MUX B","EP:CPU_ALU:STATES:ALU":"Il risultato va all'ingresso di T6 e RT3","EP:CPU_ALU:STATES:FLAGS":"Flag C,V,N,Z aggiornate","EP:CPU_ALU:SIGNALS:COP":"Codice operazione (+, -, *, ...)","EP:SELECT_SR:STATES:MUX_1":"Ingresso 1 di SELECT-SR, flag U","EP:SELECT_SR:STATES:MUX_2":"Ingresso 2 di SELECT-SR, flag I","EP:SELECT_SR:STATES:MUX_3":"Ingresso 3 di SELECT-SR, flag C V N Z","EP:SELECT_SR:STATES:MUX_O":"Uscita su MUX 7/1","EP:SELECT_SR:SIGNALS:SELP":"Seleziona il valore di ingresso da inviare all'uscita","EP:SELECT_IR:STATES:MUX_I":"Ingresso di SELECT-IR da IR","EP:SELECT_IR:STATES:MUX_O":"Uscita al bus interno tramite T3","EP:SELECT_IR:SIGNALS:SE":"Estensione firma","EP:SELECT_IR:SIGNALS:SIZE":"Dimensione","EP:SELECT_IR:SIGNALS:OFFSET":"Offset","EP:BYTE_SELECTOR:STATES:FROM_MBR":"Ingresso dal registro MBR","EP:BYTE_SELECTOR:STATES:FROM_DATA":"Ingresso dal bus dati","EP:BYTE_SELECTOR:STATES:BE":"Uscita su BE","EP:BYTE_SELECTOR:STATES:TO_MBR":"Uscita su M1/1","EP:BYTE_SELECTOR:STATES:TO_TD":"Uscita su Td/ingresso","EP:BYTE_SELECTOR:SIGNALS:W":"Scrivi nella memoria principale","EP:BYTE_SELECTOR:SIGNALS:SE":"Estensione firma","EP:BYTE_SELECTOR:SIGNALS:A1A0":"A1A0","EP:BYTE_SELECTOR:SIGNALS:BW":"Numero di byte da comprimere","EP:MEMORY:STATES:ADDR":"Bus indirizzi","EP:MEMORY:STATES:DATA":"Bus dati","EP:MEMORY:STATES:MRDY":"Memoria pronta","EP:MEMORY:SIGNALS:BE":"BW+A1A0","EP:MEMORY:SIGNALS:R":"Leggi","EP:MEMORY:SIGNALS:W":"Scrivi","EP:IO:STATES:ADDR":"Bus indirizzo","EP:IO:STATES:DATA":"Bus dati","EP:IO:SIGNALS:IOR":"Leggi dal dispositivo IO","EP:IO:SIGNALS:IOW":"Scrivi nell'IO Device","EP:KEYBOARD:STATES:ADDR":"Bus indirizzi","EP:KEYBOARD:STATES:DATA":"Bus dati","EP:KEYBOARD:SIGNALS:IOR":"Leggi da tastiera","EP:DISPLAY:STATES:ADDR":"Bus indirizzi","EP:DISPLAY:STATES:DATA":"Bus dati","EP:DISPLAY:SIGNALS:IOR":"Lettura da display (disabilitato)","EP:DISPLAY:SIGNALS:IOW":"Scrivi sul display","EP:L3D:STATES:ADDR":"Bus indirizzi","EP:L3D:STATES:DATA":"Bus dati","EP:L3D:SIGNALS:IOR":"Leggi da L3D","EP:L3D:SIGNALS:IOW":"Scrivi nell'L3D","EP:LEDM:STATES:ADDR":"Bus indirizzi","EP:LEDM:STATES:DATA":"Bus dati","EP:LEDM:SIGNALS:IOR":"Leggi da LEDM","EP:LEDM:SIGNALS:IOW":"Scrivi nell'LEDM","POC:CPU_T1:STATES:IN":"Input è il valore del registro MBR","POC:CPU_T1:STATES:OUT":"L'uscita va al bus interno","POC:CPU_T1:SIGNALS:CTL":"Conferma che l'uscita è collegata all'ingresso","POC:CPU_T2:STATES:IN":"L'ingresso è l'uscita del registro del PC","POC:CPU_T2:STATES:OUT":"L'uscita va al bus interno","POC:CPU_T2:SIGNALS:CTL":"Conferma che l'uscita è collegata all'ingresso","POC:CPU_T3:STATES:IN":"L'ingresso è il selettore di uscita del registro IR","POC:CPU_T3:STATES:OUT":"L'uscita va al bus interno","POC:CPU_T3:SIGNALS:CTL":"Conferma che l'uscita è collegata all'ingresso","POC:CPU_T6:STATES:IN":"L'ingresso è l'uscita ALU","POC:CPU_T6:STATES:OUT":"L'uscita va al bus interno","POC:CPU_T6:SIGNALS:CTL":"Conferma che l'uscita è collegata all'ingresso","POC:CPU_T8:STATES:IN":"L'ingresso è l'uscita del registro SR","POC:CPU_T8:STATES:OUT":"L'uscita va al bus interno","POC:CPU_T8:SIGNALS:CTL":"Conferma che l'uscita è collegata all'ingresso","POC:CPU_T9:STATES:IN":"L'input è l'output sulla porta A del file di registro","POC:CPU_T9:STATES:OUT":"L'uscita va al bus interno","POC:CPU_T9:SIGNALS:CTL":"Conferma che l'uscita è collegata all'ingresso","POC:CPU_T10:STATES:IN":"L'input è l'output sulla porta B del file di registro","POC:CPU_T10:STATES:OUT":"L'uscita va al bus interno","POC:CPU_T10:SIGNALS:CTL":"Conferma che l'uscita è collegata all'ingresso","POC:CPU_T11:STATES:IN":"L'ingresso è l'uscita MIR/ExCode","POC:CPU_T11:STATES:OUT":"L'uscita va al bus interno","POC:CPU_T11:SIGNALS:CTL":"Conferma che l'uscita è collegata all'ingresso","POC:CPU_TA:STATES:IN":"L'ingresso è l'uscita del registro MAR","POC:CPU_TA:STATES:OUT":"L'uscita va al bus indirizzi","POC:CPU_TA:SIGNALS:CTL":"Conferma che l'uscita è collegata all'ingresso","POC:CPU_TB:STATES:IN":"L'ingresso è l'uscita del selettore di byte","POC:CPU_TB:STATES:OUT":"L'uscita va al bus dati","POC:CPU_TB:SIGNALS:CTL":"Conferma che l'uscita è collegata all'ingresso","POC:CPU_MUX_A:STATES:MUX_0":"Ingresso 0 del MUX A, da RF/A","POC:CPU_MUX_A:STATES:MUX_1":"Ingresso 1 del MUX A, da Bus Interno","POC:CPU_MUX_A:STATES:MUX_O":"Uscita su ALU/0, da MUX A","POC:CPU_MUX_A:SIGNALS:MA":"Seleziona il valore di ingresso da inviare all'uscita","POC:CPU_MUX_B:STATES:MUX_0":"Ingresso 0 del MUX B, da RF/B","POC:CPU_MUX_B:STATES:MUX_1":"Ingresso 1 del MUX B, da PC","POC:CPU_MUX_B:STATES:MUX_O":"Uscita su ALU/1, da MUX B","POC:CPU_MUX_B:SIGNALS:MB":"Seleziona il valore di ingresso da inviare all'uscita","POC:CPU_MUX_1:STATES:MUX_0":"Ingresso 0 del MUX 1, da Bus Interno","POC:CPU_MUX_1:STATES:MUX_1":"Ingresso 1 del MUX 1, da bus dati","POC:CPU_MUX_1:STATES:MUX_O":"Uscita su MBR, da MUX 1","POC:CPU_MUX_1:SIGNALS:M1":"Seleziona il valore di ingresso da inviare all'uscita","POC:CPU_MUX_7:STATES:MUX_0":"Ingresso 0 del MUX 7, da Bus Interno","POC:CPU_MUX_7:STATES:MUX_1":"Ingresso 1 di MUX 7, da Flag Selector","POC:CPU_MUX_7:STATES:MUX_O":"Uscita su SR, da MUX 7","POC:CPU_MUX_7:SIGNALS:M7":"Seleziona il valore di ingresso da inviare all'uscita","POC:CU_MUX_A:STATES:MUX_0":"Ingresso 0 del MUX A, da mADDR + 1","POC:CU_MUX_A:STATES:MUX_1":"Ingresso 1 del MUX A, da co2maddr","POC:CU_MUX_A:STATES:MUX_2":"Ingresso 2 del MUX A, da mIR/MADDR","POC:CU_MUX_A:STATES:MUX_3":"Ingresso 3 del MUX A, da 0","POC:CU_MUX_A:STATES:MUX_O":"Uscita a mADDR, da MUX A","POC:CU_MUX_A:SIGNALS:A0":"mIR/A0","POC:CU_MUX_A:SIGNALS:A1":"Uscita della centralina MUX B","POC:CU_MUX_B:STATES:MUX_0":"Ingresso 0 del MUX B, dal MUX C","POC:CU_MUX_B:STATES:MUX_1":"Ingresso 1 del MUX B, da NOT (MUX C)","POC:CU_MUX_B:STATES:MUX_O":"Uscita al MUX A/A1, dal MUX B","POC:CU_MUX_B:SIGNALS:MB":"Seleziona il valore di ingresso da inviare all'uscita","POC:CU_MUX_C:STATES:MUX_0":"Ingresso 0 del MUX C, da 0","POC:CU_MUX_C:STATES:MUX_1":"Ingresso 1 del MUX C, da INT","POC:CU_MUX_C:STATES:MUX_2":"Ingresso 2 del MUX C, da IORdy","POC:CU_MUX_C:STATES:MUX_3":"Ingresso 3 del MUX C, da MRdy","POC:CU_MUX_C:STATES:MUX_4":"Ingresso 4 del MUX C, da SR/U","POC:CU_MUX_C:STATES:MUX_5":"Ingresso 5 del MUX C, da SR/I","POC:CU_MUX_C:STATES:MUX_6":"Ingresso 6 del MUX C, da SR/Z","POC:CU_MUX_C:STATES:MUX_7":"Ingresso 7 del MUX C, da SR/N","POC:CU_MUX_C:STATES:MUX_8":"Ingresso 8 del MUX C, da SR/V","POC:CU_MUX_C:STATES:MUX_9":"Ingresso 9 del MUX C, da SR/C","POC:CU_MUX_C:STATES:MUX_10":"Ingresso 10 del MUX C, da InEx","POC:CU_MUX_C:STATES:MUX_O":"Uscita al MUX B","POC:CU_MUX_C:SIGNALS:CTL":"Uscita della centralina MUX C","POC:CU_MUX_RA:STATES:MUX_0":"Ingresso 0 di MUX MR, da IR[SelA+0...SelA+4]","POC:CU_MUX_RA:STATES:MUX_1":"Ingresso 1 di MUX MR, da SelA","POC:CU_MUX_RA:STATES:MUX_O":"Uscita su RA","POC:CU_MUX_RA:SIGNALS:CTL":"Seleziona il valore di ingresso da inviare all'uscita","POC:CU_MUX_RB:STATES:MUX_0":"Ingresso 0 di MUX MR, da IR[SelB+0...SelB+4]","POC:CU_MUX_RB:STATES:MUX_1":"Inserimento t 1 di MUX MR, da SelB","POC:CU_MUX_RB:STATES:MUX_O":"Uscita su RB","POC:CU_MUX_RB:SIGNALS:MR":"Seleziona il valore di ingresso da inviare all'uscita","POC:CU_MUX_RC:STATES:MUX_0":"Ingresso 0 di MUX MR, da IR[SelC+0...SelC+4]","POC:CU_MUX_RC:STATES:MUX_1":"Ingresso 1 di MUX MR, da SelC","POC:CU_MUX_RC:STATES:MUX_O":"Uscita su RC","POC:CU_MUX_RC:SIGNALS:MR":"Seleziona il valore di ingresso da inviare all'uscita","POC:CU_MUX_MC:STATES:MUX_0":"Ingresso 0 di MUX MC, da IR3...IR0","POC:CU_MUX_MC:STATES:MUX_1":"Ingresso 1 di MUX MC, da SelCop","POC:CU_MUX_MC:STATES:MUX_O":"Uscita su COP","POC:CU_MUX_MC:SIGNALS:CTL":"Seleziona il valore di ingresso da inviare all'uscita","POC:MAR:STATES:IN":"L'ingresso è il bus interno","POC:MAR:STATES:OUT":"L'uscita va al tristato Ta","POC:MAR:SIGNALS:C0":"Conferma che l'ingresso è memorizzato","POC:MBR:STATES:IN":"L'ingresso è l'uscita M1","POC:MBR:STATES:OUT":"L'uscita va al tristato T1","POC:MBR:SIGNALS:C1":"Conferma che l'ingresso è memorizzato","POC:PC:STATES:IN":"L'ingresso è il bus interno","POC:PC:STATES:OUT":"L'uscita va al tristato T2","POC:PC:SIGNALS:CTL":"Conferma che l'ingresso è memorizzato","POC:IR:STATES:IN":"L'ingresso è il bus interno","POC:IR:STATES:OUT":"L'uscita va al selettore IR e alla CU","POC:IR:SIGNALS:C3":"Conferma che l'ingresso è memorizzato","POC:RT1:STATES:IN":"L'ingresso è il bus interno","POC:RT1:STATES:OUT":"L'uscita va a select-rt1","POC:RT1:SIGNALS:CTL":"Conferma che l'ingresso è memorizzato","POC:SR:STATES:IN":"L'ingresso è l'uscita di M7","POC:SR:STATES:OUT":"L'uscita va all'ingresso T8 e alla CU","POC:SR:SIGNALS:CTL":"Conferma che l'ingresso è memorizzato","POC:REGISTER_FILE:STATES:A":"Uscita di RF a T9 e MA/0","POC:REGISTER_FILE:STATES:B":"Uscita di RF a T10 e MB/0","POC:REGISTER_FILE:STATES:C":"Ingresso a RF dal bus interno","POC:REGISTER_FILE:SIGNALS:RA":"Seleziona il registro il cui valore viene inviato ad A","POC:REGISTER_FILE:SIGNALS:RB":"Seleziona il registro il cui valore viene inviato a B","POC:REGISTER_FILE:SIGNALS:RC":"Seleziona il registro in cui è memorizzato il valore di C","POC:REGISTER_FILE:SIGNALS:LC":"Conferma che RC sta per essere aggiornato","POC:CPU_ALU:STATES:A":"Uscita da multiplexor MUX A","POC:CPU_ALU:STATES:B":"Uscita da multiplexor MUX B","POC:CPU_ALU:STATES:ALU":"Il risultato va all'ingresso di T6 e RT3","POC:CPU_ALU:STATES:FLAGS":"Flag C,V,N,Z aggiornati","POC:CPU_ALU:SIGNALS:COP":"Codice operazione (+, -, *, ...)","POC:SELECT_RT1:STATES:MUX_I":"Ingresso di SELECT-RT1 da RT1","POC:SELECT_RT1:STATES:MUX_O":"Uscita al bus interno tramite T3","POC:SELECT_RT1:SIGNALS:SE":"Estensione firma","POC:SELECT_RT1:SIGNALS:SIZE":"Dimensione","POC:SELECT_RT1:SIGNALS:OFFSET":"Offset","POC:MEMORY:STATES:ADDR":"Bus indirizzi","POC:MEMORY:STATES:DATA":"Bus dati","POC:MEMORY:STATES:MRDY":"Memoria pronta","POC:MEMORY:SIGNALS:BW":"Larghezza byte","POC:MEMORY:SIGNALS:R":"Leggi","POC:MEMORY:SIGNALS:W":"Scrivi","POC:IO:STATES:ADDR":"Bus indirizzo","POC:IO:STATES:DATA":"Bus dati","POC:IO:SIGNALS:IOR":"Leggi dal dispositivo IO","POC:IO:SIGNALS:IOW":"Scrivi nell'IO Device","POC:KEYBOARD:STATES:ADDR":"Bus indirizzi","POC:KEYBOARD:STATES:DATA":"Bus dati","POC:KEYBOARD:SIGNALS:IOR":"Leggi da tastiera","POC:DISPLAY:STATES:ADDR":"Bus indirizzi","POC:DISPLAY:STATES:DATA":"Bus dati","POC:DISPLAY:SIGNALS:IOR":"Lettura dal display (disabilitato)","POC:DISPLAY:SIGNALS:IOW":"Scrivi sul display","POC:L3D:STATES:ADDR":"Bus indirizzi","POC:L3D:STATES:DATA":"Bus dati","POC:L3D:SIGNALS:IOR":"Leggi da L3D","POC:L3D:SIGNALS:IOW":"Scrivi nell'L3D",_last_:"_last_"};i18n.eltos.dialogs.it={"Show/Hide ActionBar":"Mostra / Nascondi ActionBar","Show/Hide Slider":"Mostra / nascondi cursore","WepSIM User Interface skin":"Skin dell'interfaccia utente WepSIM","Initial intro":"Intro iniziale","About WepSIM":"Informazioni su WepSIM",Title:"Titolo",Message:"Messaggio",Duration:"Durata","Confirm remove record...":"Vuoi rimuovere il record attuale?","Close or Reset...":"Fare clic su Chiudi per mantenerlo, o fare clic sul pulsante Ripristina per rimuoverlo.","Sure Control Memory...":"Vuoi che salvi i contenuti correnti della Control Memory piuttosto che i contenuti dell'editor ?.","Show/Hide labels":"Mostra / nascondi etichette","Show/Hide content":"Mostra / Nascondi contenuto","Show/Hide assembly":"Mostra / nascondi assembly","Show/Hide pseudo-instructions":"Mostra / nascondi pseudo-istruzioni",Close:"Vicino",details:"dettagli",idiom:"idioma",_last_:"_last_"};i18n.eltos.gui.pt={"Loading WepSIM...":"Carregando o WepSIM ...",About:"Sobre",Configuration:"Configuração",MicroCode:"MicroCode",Assembly:"Montagem",Simulator:"Simulador",Examples:"Exemplos",Load:"Carga",Save:"Guardar","Load/Save":"Carga/Guardar",Restore:"Restaurar",Help:"Ajuda",Notifications:"Notificações",RecordBar:"Barra de registro",Input:"Entrada",Output:"Saída",Reload:"Recarregar",Checkpoint:"Posto de controle","Help Index":"Índice de Ajuda",Processor:"Processador","Assembly Debugger":"Depurador de montagem",Reset:"Restabelecer",microInstruction:"µInstrução",Instruction:"Instrução",Run:"Corre","Hardware Summary":"Resumo de hardware",processor:"processador",details:"detalhes",microcode:"microcódigo",Signals:"Sinais",Behaviors:"Comportamentos",States:"Estados","Control States":"Estados de controle",Dependencies:"Dependências",Close:"Perto",Description:"Descrição",Show:"Exposição","Show Main Memory":"Mostrar memória principal",compile:"compilar",Compile:"Compilar","Please write the file name":"Por favor, escreva o nome do arquivo","Load from this File":"Carregar deste arquivo",labels:"rótulos",addr:"addr",ess:"ess",content:"conteúdo",assembly:"montagem",instructions:"instruções","simulator intro 1":"Você pode selecionar o hardware a ser usado. O padrão é o hardware EP (Elemental Processor). Você pode usar o dropdown o seletor de modo para alterar o hardware usado.","simulator intro 2":"Então você precisa carregar o microcódigo (define o conjunto de instruções) e o código assembly. Você pode usar um exemplo , carrega de um arquivo , ou você pode editar um novo microcódigo e um novo código de montagem .","simulator intro 3":"Finalmente, no simulador você é capaz de executar o microcódigo plus montado antes. Você pode executá-lo em nível de microinstrução ou em nível de instrução de montagem.","Prev.":"Prev.",Next:"Próximo",End:"Fim","Disable tutorial mode":"Desativar o modo tutorial",Comment:"Comente",Pause:"Pausa",Play:"Toque",Stop:"Pare",Record:"Registro",Registers:"Registos","Control Memory":"Control Memory",Stats:"Estatisticas",Memory:"Memória","Keyboard+Display":"Teclado + Display","I/O Stats":"Estatisticas de E/S","I/O Configuration":"Configuração de E/S",Recent:"Recente",Refresh:"Atualizar",Welcome:"Bem vindo","Microcode & Assembly":"WepSIM hardware","Pick firm/soft":"Escolha firmware/software de",Information:"Informação de",Native:"Nativo","MIPS32-like":"Semelhante ao MIPS32",RISCV32:"RISCV32","Z80-like":"Semelhante ao Z80",Actions:"Ações",Utilities:"Serviços de utilidade pública","Information from":"Informação de","Pick firm/soft from":"Escolha firme / macio de","Welcome tutorial":"Tutorial de boas-vindas","Assembly only":"Apenas montagem","Micro & Assembly":"Micro e Montagem",idiom:"língua","quick config":"configuração rápida","Graph: quick interactive mode":"Gráfico: modo interativo rápido",_last_:"_last_"};i18n.eltos.tutorial_welcome.pt={title_0:"Bem-vindo ao simulador WepSIM!",message_0:"
Este breve tutorial mostrará como: Carregue um exemplo. Execute um exemplo. Configure a simulação. Obter ajuda. ",title_1:"Como carregar algum exemplo.",message_1:"
Clique no botão' example ', depois clique no nome do exemplo' title '. Então o exemplo para microcode e assembly é carregado e microcompilado e compilado. ",title_2:"Como executar um exemplo",message_2:"
Clique na próxima instrução/microinstrução para executar passo a passo. Clique no botão de execução para executar até o primeiro ponto de interrupção ou o final do programa de montagem. ",title_3:"Como configurar o WepSIM.",message_3:"
Clique no botão' configuração 'e os usuários podem personalizar diferentes partes do WepSIM. ",title_4:"Como obter ajuda básica",message_4:"
Clique no botão verde' help 'para acessar a janela de ajuda. Você pode mudar de idioma (espanhol/inglês), vá para o índice de ajuda ou feche a caixa de diálogo de ajuda. ",title_5:"Bem vindo ao WepSIM!",message_5:"
Por favor, explore as seções de ajuda para mais informações. Se você clicar no botão final deste tutorial, o WepSIM carregará o primeiro exemplo para você. Aproveite! ",_last_:"_last_"};i18n.eltos.tutorial_simpleusage.pt={title_0:"Experiência simples em WepSIM: microprogramação e programação",message_0:"
Este breve tutorial mostrará como: Edite seu microcódigo. Edite sua montagem ( baseado no microcódigo anterior. Execute a montagem + microcódigo na simulação. ",title_1:"Experiência simples em WepSIM: microprogramação e programação",message_1:"
O primeiro passo é microprogramar o firmware a ser usado. Por favor, use o botão 'Microcode' para mudar para a tela do microcódigo. ",title_2:"Experiência simples em WepSIM: microprogramação e programação",message_2:"
A tela de microprogramação fornece: O editor para o microcódigo. O microcompilador. < li> O resumo de hardware e ajuda. Uma vez que seu código está pronto (compilado sem erros), o próximo passo é ir para a tela de montagem. ",title_3:"Experiência simples em WepSIM: microprogramação e programação",message_3:"
O segundo passo é programar a montagem a ser executada. Por favor, use o botão 'Assembly' de ambos, a tela do simulador ou a tela do microcódigo. ",title_4:"Experiência simples em WepSIM: microprogramação e programação",message_4:"
A tela de programação fornece: O editor para o código assembly. O compilador assembly. O visualizador do mapa de memória e ajuda. Uma vez que seu código está pronto (editado e compilado sem erros) o próximo passo é ir para a tela de simulação. ",title_5:"Experiência simples em WepSIM: microprogramação e programação",message_5:"
A terceira etapa é executar o código de montagem no simulador. A tela do simulador fornece: A exibição de montagem e hardware . A visualização detalhada dos registros, memória de controle, memória principal, etc. A redefinição, passo a passo ou é executada até as ações de ponto de interrupção/final. Este tutorial introduziu o uso típico do WepSIM para alunos e professores. Aproveite o WepSIM! ",_last_:"_last_"};i18n.eltos.tour_intro.pt={step1:"O WepSIM ajuda a entender melhor como funciona um computador: é visual, interativo, integra desde sinais até interrupções, chamadas de sistema, exceções, etc. Nós realmente acreditamos que o WepSIM é uma ferramenta de ensino revolucionária. Este breve tour apresenta os principais elementos de sua interface.",step2:"Este botão no canto superior direito é um menu de acesso rápido aos diferentes 'modos de trabalho'. "+" "+"Os usuários podem selecionar:"+""+"O hardware para trabalhar (por exemplo, processador EP, etc.) "+"Modo somente montagem, com instruções MIPS32 inteiras ou RISC-V32 "+" ",step3:"No canto superior direito, o botão 'ajuda' abre a caixa de diálogo associada. A caixa de diálogo de ajuda resume os tutoriais, descrições, informações etc.",step4:"E à esquerda, o botão 'exemplos' abre o diálogo de exemplo. Há muitos exemplos que podem ser usados para aprender de forma incremental.",step5:"No canto superior esquerdo, o botão 'configuração' abre o diálogo de configuração. Permite que os usuários adaptem vários aspectos da execução, interface do usuário, preferências, etc.",step6:"Parabéns! Você conhece os elementos-chave na interface do WepSIM. Na caixa de diálogo 'Ajuda', você pode acessar o 'tutorial de boas-vindas' para continuar aprendendo. ",_last_:"_last_"};i18n.eltos.cfg.pt={General:"Geral","Idiom for help, examples, etc.":"Idioma para ajuda, exemplos, etc.","Notification speed: time before disapear":"Velocidade de notificação: tempo antes de desaparecer","Dark Mode":"Modo escuro",Editor:"editor","Editor theme: light or dark":"Tema do editor: claro ou escuro",Light:"Leve",Dark:"Sombrio","Editor mode: vim, emacs, etc.":"Editor mode: vim, emacs, etc.",Execution:"Execução","Running speed: execution speed":"Velocidade de corrida: velocidade de execução",Slow:"Lento",Normal:"Normal",Fast:"Rápido","Step-by-step: element in run mode":"Passo-a-passo: elemento no modo de execução",Instructions:"Instruções",Instruction:"Instrução","µinstructions":"instruções",microInstruction:"µInstrução","Breakpoint icon: icon to be used for breakpoints":"Ícone de ponto de interrupção: ícone a ser usado para pontos de interrupção","Limit instructions: number of instructions to be executed":"Instruções de limite: número de instruções a serem executadas","Limit instruction ticks: to limit clock ticks":"Limite de ticks de instrução: clock ticks limit por instrução","Register file":"Registrar arquivo","Display format":"Formato de apresentação","Register file names":"Registre nomes de arquivos",Numbers:"Números",Labels:"Rótulos","Editable registers: edit register file values":"Registradores editáveis: edite os valores do arquivo de registro","Circuitry simulation":"Simulação de circuitos","Data-path color":"Cor do caminho de dados","Signal color":"Cor do sinal","Show by value or by activation":"Mostrar por valor ou por ativação",Value:"Valor",Activation:"Ativação","Interactive mode: signal value can be updated":"Modo interativo: valor do sinal pode ser atualizado","Quick interactive mode: quick update of signal value":"Modo interativo rápido: atualização rápida do valor do sinal","(example)":"(exemplo)",Accesibility:"Acessibilidade","Beginner view":"Visão iniciante","Auto-scroll while executing":"Auto-scroll durante a execução","Active voice: external voice control":"Voz ativa: controle de voz externo","Verbalization: textual or mathematical":"Verbalização: textual ou matemática","WepSIM User Interface views":"Visualizações da Interface do Usuário WepSIM",Privacy:"Privacidade",On:"On",Off:"Off",_last_:"_last_"};i18n.eltos.help.pt={"Welcome tutorial":"Welcome tutorial",help_01_01:"Abra o tutorial de boas vindas","Simple usage tutorial":"Tutorial de uso simples",help_01_02:"Abra o tutorial de uso simples, para programação de microprogramação e montagem","Execute example":"Execute example",help_01_03:"Play the execute example tutorial","Simulator: firmware":"Simulador: firmware",help_02_01:"Como trabalhar com o firmware a ser carregado na memória de controle","Microcode format":"Formato de microcódigo",help_02_02:"Sintaxe do microcódigo usado","Simulator: assembly":"Simulador: montagem",help_02_03:"Como trabalhar com o assembly que usa o firmware mencionado","Assembly format":"Formato de montagem",help_02_04:"Sintaxe dos elementos de montagem","Simulator: execution":"Simulador: execução",help_02_05:"Como o simulador pode executar a montagem e o firmware","Simulated architecture":"Arquitetura simulada",help_03_01:"Descrição da arquitetura do processador simulado","Simulated signals":"Sinais simulados",help_03_02:"Resumo dos sinais principais do processador elementar simulado","Hardware summary":"Resumo de hardware",help_03_03:"Cartão de referência para o hardware do processador elementar simulado","License, platforms, etc.":"Licença, plataformas, etc.",help_04_01:"Licença WepSIM, plataformas suportadas, tecnologias usadas",Authors:"Autores",help_04_02:"Autores do WepSIM",_last_:"_last_"};i18n.eltos.states.pt={States:"Estados",state:"estado",Current:"Atual","Current State":"Estado atual",History:"História",None:"Nenhum","Empty history":"História vazia","Empty (only modified values are shown)":"Vazio (apenas valores modificados são mostrados)",Differences:"Diferenças","differences with clipboard state":"diferenças com o estado da área de transferência","Meets the specified requirements":"Atende aos requisitos especificados",history:"história",Add:"Adicionar","'Current State' to History":"'Estado atual' para a história",Check:"Verifica",Copy:"Cópia de","to clipboard":"para a área de transferência",Checkpoint:"Ponto de verificação","File name":"Nome do arquivo","Tag for checkpoint":"Tag para checkpoint","File to be loaded":"Arquivo a ser carregado","Save to File":"Salvar em arquivo","State(s) to checkpoint":"Estado (s) para checkpoint","Record to checkpoint":"Gravar no ponto de verificação","Browser cache":"Cache do navegador","Session to be restore":"Sessão a ser restaurada",_last_:"_last_"};i18n.eltos.examples.pt={"addv + seqv.":"addv + seqv.","Alloc.s":"Alloc.s","Dummy instruction":"Instrução de manequim",Exception:"Exceção",Instructions:"Instruções",Interruptions:"Interrupções","Int. + syscall + except.":"Int. + syscall + exceto.","I/O":"I/O",Looping:"Looping","madd, mmul, mxch":"Ajuda, humor, mente","Masks & shift":"Máscaras e turno",Matrix:"Matriz","Memory access":"Acesso à memória","SC 1, 4-5, 8, 11-12":"SC 1, 4-5, 8, 11-12",Subrutine:"Sub-rotina","syscall 1, 4-5, 8, 11-12":"syscall 1, 4-5, 8, 11-12","System call":"Chamada de sistema",Threads:"Tópicos",Vector:"Vetor","Compiler Explorer":"Compiler Explorer",Instructive:"Instrutivo ",example_04_01:"Exemplo avançado com interrupção, chamada de sistema e exceção.",example_05_01:"Extensão específica do aplicativo: addv + seqv.",example_05_03:"Extensão específica da aplicação: madd + mmul + mxch.",example_03_01:"Exemplo com exceção de ponto flutuante.",example_03_02:"Exemplo com suporte a interrupções: fetch, RETI e .ktext/.kdata.",example_03_03:"Exemplo com suporte a chamadas do sistema.",example_03_04:"Exemplo com convenção de pilha simples.",example_04_04:"Exemplo de malloc + free.",example_04_02:"Exemplo de syscall para impressão/leitura de inteiros e string.",example_04_03:"Exemplo de encadeamentos.",example_03_01b:"Exemplo com exceção de ponto flutuante.",example_03_02b:"Exemplo com suporte a interrupções: fetch, RETI e .ktext/.kdata.",example_02_01:"Exemplo com acesso de E/S programado e segmento básico .text/.data.",example_03_03b:"Exemplo com suporte a chamada do sistema.",example_02_02:"Exemplo estendido com mais instruções e E/S (teclado, display).",example_02_04:"Exemplo estendido com subrutina e matriz.",example_02_03:"Exemplo mais extenso com máscaras, deslocamento e segmento básico .text/.data.",example_01_01:"Exemplo simples com busca, instruções aritméticas e segmento básico de texto.",example_01_04:"Exemplo simples com busca, ramificação e segmento básico .text/.data.",example_01_03:"Exemplo simples com busca, ramificação e segmento .text básico.",example_01_02:"Exemplo simples com busca, acesso à memória e segmento básico .text/.data.",example_06_01:"Exemplo de teste",example_06_02:"Exemplo simples do Explorador de Compiladores.",Advanced:"Advanced",Initial:"Inicial",Intermediate:"Intermediário",Laboratory:"Laboratório","Operating Systems":"Sistemas operacionais",Extra:"Bônus",Special:"Especial","Load example":"Carregar exemplo","Load Assembly only":"Carregar apenas o conjunto","Load Firmware only":"Carregar apenas firmware","Copy reference to clipboard":"Copiar referência à área de transferência",Share:"Compartilhar","No examples available...":"Não há exemplos disponíveis para o hardware selecionado","Simple example":"Exemplo simples.",_last_:"_last_"};i18n.eltos.compiler.pt={"PROBLEM AROUND LINE":"Problema em torno da linha","NO TAG OR DIRECTIVE":"Espera tag ou directiva, mas encontrou este token em vez disso: ","NO TAG, DIR OR INS":"Não foi encontrada uma tag válida (por exemplo: tag1 :) diretiva (por exemplo: .data) ou instrução: ","INVALID TAG FORMAT":"A tag deve seguir um formato alfanumérico (começando com uma letra ou sublinhado): ","TAG OR INSTRUCTION":"A tag não pode ter o mesmo nome que uma instrução: ","REPEATED TAG":"tag repetida: ","NO NUMERIC DATATYPE":"valor esperado para tipo de dados numérico, mas encontrou: ","NO POSITIVE NUMBER":"Espera um número positivo, mas encontrou: ","NO NUMBER OF BYTES":"Número esperado de bytes para reservar em .space mas encontrou: ","INVALID ALIGN VALUE":"Espera o parâmetro align como número positivo, mas encontrou: ","REMEMBER ALIGN VAL":"Lembre-se que o número é a potência de dois para um alinhamento, consulte a documentação MIPS.","NOT CLOSED STRING":"Cadeia não é fechado (esqueci de terminá-lo com aspas)","NO QUOTATION MARKS":"string esperado entre aspas, mas encontrado: ","UNEXPECTED DATATYPE":"Nome do tipo de dados inesperado: ","INVALID SEGMENT NAME":"Espera .data / .text / ... segmento, mas encontrou: ","NO MAIN OR KMAIN":"Tags 'principal' ou 'kmain' não são definidos no segmento de texto (s). É obrigatória a definir pelo menos uma dessas marcas, a fim de executar um programa","UNKNOWN 1":"Ocorreu um erro desconhecido (1) para o tipo de campo: ","UNKNOWN 2":"erro inesperado (2)","REMEMBER I. FORMAT":"Lembre-se que o formato de instrução tem sido definida como: ","SEVERAL CANDIDATES":"Instrução e campos de combinar com mais de um microprograma. Por favor, verifique o microcódigo. Atualmente, o formato de instrução pode ser: ","NOT MATCH MICRO":"Instrução e os campos não coincidirem com microprogram.","CHECK MICROCODE":"Por favor, verifique o microcódigo. Provavelmente você esqueceu de adicionar um campo, um número não se encaixa no seu espaço, ou você acabou de usar uma instrução errada","LABEL NOT DEFINED":"Rótulo usado mas não definido no código de montagem: ","INS. MISSING FIELD":"Campo faltando na instrução","UNEXPECTED (REG)":"Espera registo mas não encontrou registo entre parênteses.","EXPECTED (REG)":"Registo esperada entre parêntese, mas encontrou: ","EXPECTED REG":"Registo esperado (por exemplo: $1/$a0/...), mas encontrado: ","UNKNOWN ESCAPE CHAR":"Carácter de escape desconhecido","SPACE FOR # BITS":" bits em binário, mas há espaço apenas para ",NEEDS:" precisa ","UNKNOWN MC FORMAT":"(unknown format in microcode)","LABEL NOT FOUND":"Esperado ':' não encontrado, encontrado token: ","REPEATED LABEL":"Rótulo é repetido: ","INVALID LABEL FORMAT":"formato de etiqueta não é válida para: ","OPEN BRACE NOT FOUND":"Esperado '{' não encontrado","CLOSE BRACE NOT FOUND":"Esperado '}' não encontrado","OPEN PAREN. NOT FOUND":"Esperado '(' não encontrado","CLOSE PAREN. NOT FOUND":"Esperado ')' não encontrado","COMMA NOT FOUND":"Esperado '' não encontrado","EQUAL NOT FOUND":"Esperado '=' não encontrado","SIGNAL NOT EXISTS":"Sinal não existe: ","SIGNAL NO DIRECTLY":"sinal não pode ser usado diretamente, utilize os sinais Unidade de Controle vez.","INCORRECT BIN. FORMAT":"formato binário incorreto: ","OUT OF RANGE":"Valor fora do intervalo: ","EMPTY MICROCODE":"microcódigo vazia","EMPTY NAME LIST":"lista de nomes vazio para registo: x = []","DUPLICATE SP":"definição duplicado de ponteiro de pilha","NO SP":"stack_pointer esperada não token localizado","UNDEF. INSTR.":"instrução indefinido: ","MORE 100 FIELDS":"Mais de 100 campos em uma única instrução.","CO AS FIELD NAME":"campo de instrução tem 'co' como nome.","NW AS FIELD NAME":"campo de instrução tem 'nwords' como nome.","NO CO FIELD":"Espera palavra-chave 'co' não encontrado","INCORRECT CO BIN.":"formato binário incorreto no 'co': ","INCORRECT COP BIN.":"formato binário incorreto em 'polícia': ","INVALID PARAMETER":"Parâmetro inválido: ","ALLOWED PARAMETER":"Ele apenas permite que os seguintes campos: reg, num, inm, endereço, endereço","MISSING TOKEN ON":"'Simbólico' está em falta depois '(' em: ","MISSING ) ON":"')' Está faltando em: ","CO ALREADY USED":"'Co' já está sendo usado por: ","CO+COP ALREADY USED":"'Co + op' já está sendo usado por: ","NO NWORDS":"Esperados palavra-chave 'nwords' não encontrado","INCORRECT ADDRESSING":"Tipo de endereçamento incorreto (abs ou rel)","UNEXPECTED FIELD":"Campo inesperado encontrado: ","CHECK ORDER":"Verifique a ordem dos campos","STARTBIT OoR":"startbit fora do intervalo: ","STOPBIT OoR":"bit de paragem fora do intervalo: ","OVERLAPPING FIELD":"campo de sobreposição: ","BAD COP BIN. LEN.":"comprimento binário incorreto para 'polícia': ","SP NOT DEFINED":"Pilha de registro ponteiro não foi definida","NO LABEL FETCH":"Etiqueta 'buscar' não definido","NO LABEL BEGIN":"'Começar' não encontrado","NO CO CODES":"Não há 'co' códigos suficientes disponíveis para instruções","NO LABEL MADDR":"etiqueta maddr não encontrado: ","INS. NAME":"nome de instrução: '","NOT VALID FOR":"'Não é válido para: ","BIGGER THAN":"é maior do que",BITS:"bits","EXPECTED VALUE":"valor esperado que se encaixa em um '","BUT INSERTED":"mas inserido",INSTEAD:"em vez de",_last_:"_last_"};i18n.eltos.hw.pt={Component:"Componente",Element:"Elemento","States (In)":"Estados (In)","States (Out)":"Estados (Out)",Signals:"Sinais","It has":"Tem",inputs:"entradas",outputs:"saídas",signals:"sinais",Graph:"Gráfico",Text:"Texto","Graph: split view":"Gráfico: visão dividida","Graph: interactive mode":"Gráfico: modo interativo",name:"nome",version:"versão",abilities:"habilidades",value:"valor",default_value:"valor padrão",nbits:"nbits",type:"modelo",visible:"visível","EP:CPU_T1:STATES:IN":"A entrada é o valor do registro MBR","EP:CPU_T1:STATES:OUT":"A saída vai para o barramento interno","EP:CPU_T1:SIGNALS:CTL":"Confirme se o valor de entrada é copiado para a saída","EP:CPU_T2:STATES:IN":"A entrada é o valor do registro do PC","EP:CPU_T2:STATES:OUT":"A saída vai para o barramento interno","EP:CPU_T2:SIGNALS:CTL":"Confirme se o valor de entrada é copiado para a saída","EP:CPU_T3:STATES:IN":"A entrada é a saída do seletor-IR","EP:CPU_T3:STATES:OUT":"A saída vai para o barramento interno","EP:CPU_T3:SIGNALS:CTL":"Confirme se o valor de entrada é copiado para a saída","EP:CPU_T4:STATES:IN":"A entrada é o valor do registro RT1","EP:CPU_T4:STATES:OUT":"A saída vai para o barramento interno","EP:CPU_T4:SIGNALS:CTL":"Confirme se o valor de entrada é copiado para a saída","EP:CPU_T5:STATES:IN":"A entrada é o valor do registro RT2","EP:CPU_T5:STATES:OUT":"A saída vai para o barramento interno","EP:CPU_T5:SIGNALS:CTL":"Confirme se o valor de entrada é copiado para a saída","EP:CPU_T6:STATES:IN":"A entrada é a saída da ALU","EP:CPU_T6:STATES:OUT":"A saída vai para o barramento interno","EP:CPU_T6:SIGNALS:CTL":"Confirme se o valor de entrada é copiado para a saída","EP:CPU_T7:STATES:IN":"A entrada é o valor do registro RT3","EP:CPU_T7:STATES:OUT":"A saída vai para o barramento interno","EP:CPU_T7:SIGNALS:CTL":"Confirme se o valor de entrada é copiado para a saída","EP:CPU_T8:STATES:IN":"A entrada é o valor do registro SR","EP:CPU_T8:STATES:OUT":"A saída vai para o barramento interno","EP:CPU_T8:SIGNALS:CTL":"Confirme se o valor de entrada é copiado para a saída","EP:CPU_T9:STATES:IN":"A entrada é o valor da saída da porta A do arquivo de registro","EP:CPU_T9:STATES:OUT":"A saída vai para o barramento interno","EP:CPU_T9:SIGNALS:CTL":"Confirme se o valor de entrada é copiado para a saída","EP:CPU_T10:STATES:IN":"A entrada é o valor da saída da porta B do arquivo de registro","EP:CPU_T10:STATES:OUT":"A saída vai para o barramento interno","EP:CPU_T10:SIGNALS:CTL":"Confirme se o valor de entrada é copiado para a saída","EP:CPU_T11:STATES:IN":"A entrada é a saída de microinstrução/ExCode","EP:CPU_T11:STATES:OUT":"A saída vai para o barramento interno","EP:CPU_T11:SIGNALS:CTL":"Confirme se o valor de entrada é copiado para a saída","EP:CPU_T12:STATES:IN":"A entrada é a saída do HPC (contador de desempenho de hardware)","EP:CPU_T12:STATES:OUT":"A saída vai para o barramento interno","EP:CPU_T12:SIGNALS:CTL":"Confirme se o valor de entrada é copiado para a saída","EP:CPU_TA:STATES:IN":"A entrada é a saída do registro MAR","EP:CPU_TA:STATES:OUT":"A saída vai para o barramento de endereços","EP:CPU_TA:SIGNALS:CTL":"Confirme se o valor de entrada é copiado para a saída","EP:CPU_TB:STATES:IN":"A entrada é a saída do Seletor de bytes","EP:CPU_TB:STATES:OUT":"A saída vai para o barramento de dados","EP:CPU_TB:SIGNALS:CTL":"Confirme se o valor de entrada é copiado para a saída","EP:CPU_MUX_A:STATES:MUX_0":"Entrada 0 de MUX A, do arquivo de registro (A)","EP:CPU_MUX_A:STATES:MUX_1":"Entrada 1 do MUX A, do registro RT1","EP:CPU_MUX_A:STATES:MUX_O":"Saída para ALU, operador 0","EP:CPU_MUX_A:SIGNALS:MA":"Selecione o valor de entrada para enviar para a saída","EP:CPU_MUX_B:STATES:MUX_0":"Entrada 0 de MUX B, do arquivo de registro (B)","EP:CPU_MUX_B:STATES:MUX_1":"Entrada 1 de MUX B, do registro RT2","EP:CPU_MUX_B:STATES:MUX_2":"Entrada 2 de MUX B, valor 4","EP:CPU_MUX_B:STATES:MUX_3":"Entrada 3 de MUX B, valor 1","EP:CPU_MUX_B:STATES:MUX_O":"Saída para ALU, operador 1","EP:CPU_MUX_B:SIGNALS:MB":"Selecione o valor de entrada para enviar para a saída","EP:CPU_MUX_1:STATES:MUX_0":"Entrada 0 de MUX 1, do barramento interno","EP:CPU_MUX_1:STATES:MUX_1":"Entrada 1 de MUX 1, do Seletor de Byte","EP:CPU_MUX_1:STATES:MUX_O":"Saída para MBR, de MUX 1","EP:CPU_MUX_1:SIGNALS:M1":"Selecione o valor de entrada para enviar para a saída","EP:CPU_MUX_2:STATES:MUX_0":"Entrada 0 de MUX 2, do barramento interno","EP:CPU_MUX_2:STATES:MUX_1":"Entrada 1 de MUX 2, PC + 4","EP:CPU_MUX_2:STATES:MUX_O":"Saída para PC","EP:CPU_MUX_2:SIGNALS:M2":"Selecione o valor de entrada para enviar para a saída","EP:CPU_MUX_7:STATES:MUX_0":"Entrada 0 do MUX 7, do barramento interno","EP:CPU_MUX_7:STATES:MUX_1":"Input 1 of MUX 7, from Flag Selector","EP:CPU_MUX_7:STATES:MUX_O":"Saída para registrar SR","EP:CPU_MUX_7:SIGNALS:M7":"Selecione o valor de entrada para enviar para a saída","EP:CU_MUX_A:STATES:MUX_0":"Entrada 0 de MUX A, de microADDR + 1","EP:CU_MUX_A:STATES:MUX_1":"Entrada 1 de MUX A, de co2maddr","EP:CU_MUX_A:STATES:MUX_2":"Entrada 2 de MUX A, de microIR/MADDR","EP:CU_MUX_A:STATES:MUX_3":"Entrada 3 de MUX A, de 0","EP:CU_MUX_A:STATES:MUX_O":"Saída para microADDR, de MUX A","EP:CU_MUX_A:SIGNALS:A0":"mIR/A0","EP:CU_MUX_A:SIGNALS:A1":"Saída da unidade de controle MUX B","EP:CU_MUX_B:STATES:MUX_0":"Entrada 0 de MUX B, de MUX C","EP:CU_MUX_B:STATES:MUX_1":"Entrada 1 de MUX B, de NOT (MUX C)","EP:CU_MUX_B:STATES:MUX_O":"Saída para MUX A/A1","EP:CU_MUX_B:SIGNALS:MB":"Selecione o valor de entrada para enviar para a saída","EP:CU_MUX_C:STATES:MUX_0":"Entrada 0 de MUX C, de 0","EP:CU_MUX_C:STATES:MUX_1":"Entrada 1 de MUX C, de INT","EP:CU_MUX_C:STATES:MUX_2":"Entrada 2 de MUX C, de IORdy","EP:CU_MUX_C:STATES:MUX_3":"Entrada 3 de MUX C, de MRdy","EP:CU_MUX_C:STATES:MUX_4":"Entrada 4 de MUX C, de SR/U","EP:CU_MUX_C:STATES:MUX_5":"Entrada 5 de MUX C, de SR/I","EP:CU_MUX_C:STATES:MUX_6":"Entrada 6 de MUX C, de SR/Z","EP:CU_MUX_C:STATES:MUX_7":"Entrada 7 de MUX C, de SR/N","EP:CU_MUX_C:STATES:MUX_8":"Entrada 8 de MUX C, de SR/V","EP:CU_MUX_C:STATES:MUX_9":"Entrada 9 de MUX C, de SR/C","EP:CU_MUX_C:STATES:MUX_10":"Entrada 10 de MUX C, de InEx","EP:CU_MUX_C:STATES:MUX_O":"Saída para MUX B","EP:CU_MUX_C:SIGNALS:CTL":"Saída da unidade de controle MUX C","EP:CU_MUX_RA:STATES:MUX_0":"Entrada 0 de MUX MR, de IR [SelA + 0 ... SelA + 4]","EP:CU_MUX_RA:STATES:MUX_1":"Entrada 1 de MUX MR, de SelA","EP:CU_MUX_RA:STATES:MUX_O":"Saída para RA","EP:CU_MUX_RA:SIGNALS:CTL":"Selecione o valor de entrada para enviar para a saída","EP:CU_MUX_RB:STATES:MUX_0":"Entrada 0 de MUX MR, de IR [SelB + 0 ... SelB + 4]","EP:CU_MUX_RB:STATES:MUX_1":"Entrada 1 de MUX MR, de SelB","EP:CU_MUX_RB:STATES:MUX_O":"Saída para RB","EP:CU_MUX_RB:SIGNALS:MR":"Selecione o valor de entrada para enviar para a saída","EP:CU_MUX_RC:STATES:MUX_0":"Entrada 0 de MUX MR, de IR [SelC + 0 ... SelC + 4]","EP:CU_MUX_RC:STATES:MUX_1":"Entrada 1 de MUX MR, de SelC","EP:CU_MUX_RC:STATES:MUX_O":"Saída para RC","EP:CU_MUX_RC:SIGNALS:MR":"Selecione o valor de entrada para enviar para a saída","EP:CU_MUX_MC:STATES:MUX_0":"Entrada 0 de MUX MC, de IR3 ... IR0","EP:CU_MUX_MC:STATES:MUX_1":"Entrada 1 de MUX MC, de SelCop","EP:CU_MUX_MC:STATES:MUX_O":"Saída para COP","EP:CU_MUX_MC:SIGNALS:CTL":"Selecione o valor de entrada para enviar para a saída","EP:CPU_MUX_H:STATES:MUX_0":"Entrada 0 do MUX H, do Hardware Performance Counter","EP:CPU_MUX_H:STATES:MUX_1":"Entrada 1 do MUX H, do Hardware Performance Counter","EP:CPU_MUX_H:STATES:MUX_2":"Entrada 2 do MUX H, do Hardware Performance Counter","EP:CPU_MUX_H:STATES:MUX_3":"Entrada 3 do MUX H, do Hardware Performance Counter","EP:CPU_MUX_H:STATES:MUX_O":"Saída para T12","EP:CPU_MUX_H:SIGNALS:MH":"Selecione o valor de entrada para enviar para a saída","EP:MAR:STATES:IN":"A entrada é o barramento interno","EP:MAR:STATES:OUT":"A saída vai para o Ta tristate","EP:MAR:SIGNALS:C0":"Confirme se a entrada está armazenada","EP:MBR:STATES:IN":"A entrada é a saída M1","EP:MBR:STATES:OUT":"A saída vai para o tristate T1","EP:MBR:SIGNALS:C1":"Confirme se a entrada está armazenada","EP:PC:STATES:IN":"A entrada é a saída M2","EP:PC:STATES:OUT":"A saída vai para o tristate T2","EP:PC:SIGNALS:CTL":"Confirme se a entrada está armazenada","EP:IR:STATES:IN":"A entrada é o barramento interno","EP:IR:STATES:OUT":"A saída vai para o seletor IR e o CU","EP:IR:SIGNALS:C3":"Confirme se a entrada está armazenada","EP:RT1:STATES:IN":"A entrada é o barramento interno","EP:RT1:STATES:OUT":"A saída vai para o tristate T4","EP:RT1:SIGNALS:CTL":"Confirme se a entrada está armazenada","EP:RT2:STATES:IN":"A entrada é o barramento interno","EP:RT2:STATES:OUT":"A saída vai para o tristate T5","EP:RT2:SIGNALS:CTL":"Confirme se a entrada está armazenada","EP:RT3:STATES:IN":"A entrada é a saída da ALU","EP:RT3:STATES:OUT":"A saída vai para o tristate T7","EP:RT3:SIGNALS:CTL":"Confirme se a entrada está armazenada","EP:SR:STATES:IN":"A entrada é a saída do M7","EP:SR:STATES:OUT":"A saída vai para a entrada T8 e a CU","EP:SR:SIGNALS:CTL":"Confirme se a entrada está armazenada","EP:REGISTER_FILE:STATES:A":"Saída de RF para T9 e MA/0","EP:REGISTER_FILE:STATES:B":"Saída de RF para T10 e MB/0","EP:REGISTER_FILE:STATES:C":"Entrada para RF do Barramento Interno","EP:REGISTER_FILE:SIGNALS:RA":"Selecione o registro cujo valor é enviado para A","EP:REGISTER_FILE:SIGNALS:RB":"Selecione o registro cujo valor é enviado para B","EP:REGISTER_FILE:SIGNALS:RC":"Selecione o registro onde o valor de C está armazenado","EP:REGISTER_FILE:SIGNALS:LC":"Confirme que RC vai ser atualizado","EP:CPU_ALU:STATES:A":"Saída do multiplexador MUX A","EP:CPU_ALU:STATES:B":"Saída do multiplexador MUX B","EP:CPU_ALU:STATES:ALU":"Resultado vai para a entrada de T6 e RT3","EP:CPU_ALU:STATES:FLAGS":"Sinalizadores C, V, N, Z atualizados","EP:CPU_ALU:SIGNALS:COP":"Código de operação (+, -, *, ...)","EP:SELECT_SR:STATES:MUX_1":"Entrada 1 de SELECT-SR, sinalizador U","EP:SELECT_SR:STATES:MUX_2":"Entrada 2 de SELECT-SR, sinalizador","EP:SELECT_SR:STATES:MUX_3":"Entrada 3 de SELECT-SR, sinalizadores C V N Z","EP:SELECT_SR:STATES:MUX_O":"Saída para MUX 7/1","EP:SELECT_SR:SIGNALS:SELP":"Selecione o valor de entrada para enviar para a saída","EP:SELECT_IR:STATES:MUX_I":"Entrada de SELECT-IR do IR","EP:SELECT_IR:STATES:MUX_O":"Saída para barramento interno através de T3","EP:SELECT_IR:SIGNALS:SE":"Extensão de sinal","EP:SELECT_IR:SIGNALS:SIZE":"Size","EP:SELECT_IR:SIGNALS:OFFSET":"Offset","EP:BYTE_SELECTOR:STATES:FROM_MBR":"Entrada do registro MBR","EP:BYTE_SELECTOR:STATES:FROM_DATA":"Entrada do barramento de dados","EP:BYTE_SELECTOR:STATES:BE":"Saída para BE","EP:BYTE_SELECTOR:STATES:TO_MBR":"Saída para M1/1","EP:BYTE_SELECTOR:STATES:TO_TD":"Saída para Td/entrada","EP:BYTE_SELECTOR:SIGNALS:W":"Escreva na memória principal","EP:BYTE_SELECTOR:SIGNALS:SE":"Extensão de sinal","EP:BYTE_SELECTOR:SIGNALS:A1A0":"A1A0","EP:BYTE_SELECTOR:SIGNALS:BW":"Número de bytes para empacotar","EP:MEMORY:STATES:ADDR":"Address bus","EP:MEMORY:STATES:DATA":"Barramento de dados","EP:MEMORY:STATES:MRDY":"Memory ready","EP:MEMORY:SIGNALS:BE":"BW + A1A0","EP:MEMORY:SIGNALS:R":"Ler","EP:MEMORY:SIGNALS:W":"Write","EP:IO:STATES:ADDR":"Barramento de endereços","EP:IO:STATES:DATA":"Barramento de dados","EP:IO:SIGNALS:IOR":"Ler a partir do dispositivo IO","EP:IO:SIGNALS:IOW":"Escreva no dispositivo IO","EP:KEYBOARD:STATES:ADDR":"Barramento de endereços","EP:KEYBOARD:STATES:DATA":"Barramento de dados","EP:KEYBOARD:SIGNALS:IOR":"Ler do teclado","EP:DISPLAY:STATES:ADDR":"Address bus","EP:DISPLAY:STATES:DATA":"Data bus","EP:DISPLAY:SIGNALS:IOR":"Ler do display (desabilitado)","EP:DISPLAY:SIGNALS:IOW":"Escreva no display","EP:L3D:STATES:ADDR":"Barramento de endereços","EP:L3D:STATES:DATA":"Barramento de dados","EP:L3D:SIGNALS:IOR":"Ler a partir de L3D","EP:L3D:SIGNALS:IOW":"Escreva no L3D","EP:LEDM:STATES:ADDR":"Barramento de endereços","EP:LEDM:STATES:DATA":"Barramento de dados","EP:LEDM:SIGNALS:IOR":"Ler a partir de LEDM","EP:LEDM:SIGNALS:IOW":"Escreva no LEDM","POC:CPU_T1:STATES:IN":"A entrada é o valor do registro MBR","POC:CPU_T1:STATES:OUT":"A saída vai para o barramento interno","POC:CPU_T1:SIGNALS:CTL":"Confirme se a saída está conectada à entrada","POC:CPU_T2:STATES:IN":"A entrada é a saída do registro do PC","POC:CPU_T2:STATES:OUT":"A saída vai para o barramento interno","POC:CPU_T2:SIGNALS:CTL":"Confirme se a saída está conectada à entrada","POC:CPU_T3:STATES:IN":"A entrada é o seletor de saída do registro IR","POC:CPU_T3:STATES:OUT":"A saída vai para o barramento interno","POC:CPU_T3:SIGNALS:CTL":"Confirme se a saída está conectada à entrada","POC:CPU_T6:STATES:IN":"A entrada é a saída da ALU","POC:CPU_T6:STATES:OUT":"A saída vai para o barramento interno","POC:CPU_T6:SIGNALS:CTL":"Confirme se a saída está conectada à entrada","POC:CPU_T8:STATES:IN":"A entrada é a saída do registro SR","POC:CPU_T8:STATES:OUT":"A saída vai para o barramento interno","POC:CPU_T8:SIGNALS:CTL":" Confirme se a saída está conectada à entrada ","POC:CPU_T9:STATES:IN":"A entrada é a saída na porta A do arquivo de registro","POC:CPU_T9:STATES:OUT":"A saída vai para o barramento interno","POC:CPU_T9:SIGNALS:CTL":"Confirme se a saída está conectada à entrada","POC:CPU_T10:STATES:IN":"A entrada é a saída na porta B do arquivo de registro","POC:CPU_T10:STATES:OUT":"A saída vai para o barramento interno","POC:CPU_T10:SIGNALS:CTL":"Confirme se a saída está conectada à entrada","POC:CPU_T11:STATES:IN":"A entrada é a saída MIR/ExCode","POC:CPU_T11:STATES:OUT":"A saída vai para o barramento interno","POC:CPU_T11:SIGNALS:CTL":"Confirme se a saída está conectada à entrada","POC:CPU_TA:STATES:IN":"A entrada é a saída do registro MAR","POC:CPU_TA:STATES:OUT":"A saída vai para o barramento de endereços","POC:CPU_TA:SIGNALS:CTL":"Confirme se a saída está conectada à entrada","POC:CPU_TB:STATES:IN":"A entrada é a saída do seletor de bytes","POC:CPU_TB:STATES:OUT":"A saída vai para o barramento de dados","POC:CPU_TB:SIGNALS:CTL":"Confirme se a saída está conectada à entrada","POC:CPU_MUX_A:STATES:MUX_0":"Entrada 0 de MUX A, de RF/A","POC:CPU_MUX_A:STATES:MUX_1":"Entrada 1 do MUX A, do barramento interno","POC:CPU_MUX_A:STATES:MUX_O":"Saída para ALU/0, de MUX A","POC:CPU_MUX_A:SIGNALS:MA":"Selecione o valor de entrada para enviar para a saída","POC:CPU_MUX_B:STATES:MUX_0":"Entrada 0 de MUX B, de RF/B","POC:CPU_MUX_B:STATES:MUX_1":"Entrada 1 de MUX B, do PC","POC:CPU_MUX_B:STATES:MUX_O":"Saída para ALU/1, de MUX B","POC:CPU_MUX_B:SIGNALS:MB":"Selecione o valor de entrada para enviar para a saída","POC:CPU_MUX_1:STATES:MUX_0":"Entrada 0 de MUX 1, do barramento interno","POC:CPU_MUX_1:STATES:MUX_1":"Entrada 1 de MUX 1, do barramento de dados","POC:CPU_MUX_1:STATES:MUX_O":"Saída para MBR, de MUX 1","POC:CPU_MUX_1:SIGNALS:M1":"Selecione o valor de entrada para enviar para a saída","POC:CPU_MUX_7:STATES:MUX_0":"Entrada 0 do MUX 7, do barramento interno","POC:CPU_MUX_7:STATES:MUX_1":"Entrada 1 de MUX 7, do Seletor de Bandeira","POC:CPU_MUX_7:STATES:MUX_O":"Saída para SR, de MUX 7","POC:CPU_MUX_7:SIGNALS:M7":"Selecione o valor de entrada para enviar para a saída","POC:CU_MUX_A:STATES:MUX_0":"Entrada 0 de MUX A, de mADDR + 1","POC:CU_MUX_A:STATES:MUX_1":"Entrada 1 de MUX A, de co2maddr","POC:CU_MUX_A:STATES:MUX_2":"Entrada 2 de MUX A, de mIR/MADDR","POC:CU_MUX_A:STATES:MUX_3":"Entrada 3 de MUX A, de 0","POC:CU_MUX_A:STATES:MUX_O":"Saída para mADDR, de MUX A","POC:CU_MUX_A:SIGNALS:A0":"mIR/A0","POC:CU_MUX_A:SIGNALS:A1":"Saída da unidade de controle MUX B","POC:CU_MUX_B:STATES:MUX_0":"Entrada 0 de MUX B, de MUX C","POC:CU_MUX_B:STATES:MUX_1":"Entrada 1 de MUX B, de NOT (MUX C)","POC:CU_MUX_B:STATES:MUX_O":"Saída para MUX A/A1, de MUX B","POC:CU_MUX_B:SIGNALS:MB":"Selecione o valor de entrada para enviar para a saída","POC:CU_MUX_C:STATES:MUX_0":"Entrada 0 de MUX C, de 0","POC:CU_MUX_C:STATES:MUX_1":"Entrada 1 de MUX C, de INT","POC:CU_MUX_C:STATES:MUX_2":"Entrada 2 de MUX C, de IORdy","POC:CU_MUX_C:STATES:MUX_3":"Entrada 3 de MUX C, de MRdy","POC:CU_MUX_C:STATES:MUX_4":"Entrada 4 de MUX C, de SR/U","POC:CU_MUX_C:STATES:MUX_5":"Entrada 5 de MUX C, de SR/I","POC:CU_MUX_C:STATES:MUX_6":"Entrada 6 de MUX C, de SR/Z","POC:CU_MUX_C:STATES:MUX_7":"Entrada 7 de MUX C, de SR/N","POC:CU_MUX_C:STATES:MUX_8":"Entrada 8 de MUX C, de SR/V","POC:CU_MUX_C:STATES:MUX_9":"Entrada 9 de MUX C, de SR/C","POC:CU_MUX_C:STATES:MUX_10":"Entrada 10 de MUX C, de InEx","POC:CU_MUX_C:STATES:MUX_O":"Saída para MUX B","POC:CU_MUX_C:SIGNALS:CTL":"Saída da unidade de controle MUX C","POC:CU_MUX_RA:STATES:MUX_0":"Entrada 0 de MUX MR, de IR [SelA + 0 ... SelA + 4]","POC:CU_MUX_RA:STATES:MUX_1":"Entrada 1 de MUX MR, de SelA","POC:CU_MUX_RA:STATES:MUX_O":"Saída para RA","POC:CU_MUX_RA:SIGNALS:CTL":"Selecione o valor de entrada para enviar para a saída","POC:CU_MUX_RB:STATES:MUX_0":"Entrada 0 de MUX MR, de IR [SelB + 0 ... SelB + 4]","POC:CU_MUX_RB:STATES:MUX_1":"Inpu t 1 de MUX MR, da SelB ","POC:CU_MUX_RB:STATES:MUX_O":"Saída para RB","POC:CU_MUX_RB:SIGNALS:MR":"Selecione o valor de entrada para enviar para a saída","POC:CU_MUX_RC:STATES:MUX_0":"Entrada 0 de MUX MR, de IR [SelC + 0 ... SelC + 4]","POC:CU_MUX_RC:STATES:MUX_1":"Entrada 1 de MUX MR, de SelC","POC:CU_MUX_RC:STATES:MUX_O":"Saída para RC","POC:CU_MUX_RC:SIGNALS:MR":"Selecione o valor de entrada para enviar para a saída","POC:CU_MUX_MC:STATES:MUX_0":"Entrada 0 de MUX MC, de IR3 ... IR0","POC:CU_MUX_MC:STATES:MUX_1":"Entrada 1 de MUX MC, de SelCop","POC:CU_MUX_MC:STATES:MUX_O":"Saída para COP","POC:CU_MUX_MC:SIGNALS:CTL":"Selecione o valor de entrada para enviar para a saída","POC:MAR:STATES:IN":"A entrada é o barramento interno","POC:MAR:STATES:OUT":"A saída vai para o Ta tristate","POC:MAR:SIGNALS:C0":"Confirme se a entrada está armazenada","POC:MBR:STATES:IN":"A entrada é a saída M1","POC:MBR:STATES:OUT":"A saída vai para o tristate T1","POC:MBR:SIGNALS:C1":"Confirme se a entrada está armazenada","POC:PC:STATES:IN":"A entrada é o barramento interno","POC:PC:STATES:OUT":"A saída vai para o tristate T2","POC:PC:SIGNALS:CTL":"Confirme se a entrada está armazenada","POC:IR:STATES:IN":"A entrada é o barramento interno","POC:IR:STATES:OUT":"A saída vai para o seletor IR e o CU","POC:IR:SIGNALS:C3":"Confirme se a entrada está armazenada","POC:RT1:STATES:IN":"A entrada é o barramento interno","POC:RT1:STATES:OUT":"A saída vai para o select-rt1","POC:RT1:SIGNALS:CTL":"Confirme se a entrada está armazenada","POC:SR:STATES:IN":"A entrada é a saída do M7","POC:SR:STATES:OUT":"A saída vai para a entrada T8 e a CU","POC:SR:SIGNALS:CTL":"Confirme se a entrada está armazenada","POC:REGISTER_FILE:STATES:A":"Saída de RF para T9 e MA/0","POC:REGISTER_FILE:STATES:B":"Saída de RF para T10 e MB/0","POC:REGISTER_FILE:STATES:C":"Entrada para RF do Barramento Interno","POC:REGISTER_FILE:SIGNALS:RA":"Selecione o registro cujo valor é enviado para A","POC:REGISTER_FILE:SIGNALS:RB":"Selecione o registro cujo valor é enviado para B","POC:REGISTER_FILE:SIGNALS:RC":"Selecione o registro onde o valor de C está armazenado","POC:REGISTER_FILE:SIGNALS:LC":"Confirme que RC será atualizado","POC:CPU_ALU:STATES:A":"Saída do multiplexador MUX A","POC:CPU_ALU:STATES:B":"Saída do multiplexador MUX B","POC:CPU_ALU:STATES:ALU":"Resultado vai para a entrada de T6 e RT3","POC:CPU_ALU:STATES:FLAGS":"Sinalizadores C, V, N, Z atualizados","POC:CPU_ALU:SIGNALS:COP":"Código de operação (+, -, *, ...)","POC:SELECT_RT1:STATES:MUX_I":"Entrada de SELECT-RT1 de RT1","POC:SELECT_RT1:STATES:MUX_O":"Saída para barramento interno através de T3","POC:SELECT_RT1:SIGNALS:SE":"Extensão de Sinal","POC:SELECT_RT1:SIGNALS:SIZE":"Size","POC:SELECT_RT1:SIGNALS:OFFSET":"Offset","POC:MEMORY:STATES:ADDR":"Address bus","POC:MEMORY:STATES:DATA":"Data bus","POC:MEMORY:STATES:MRDY":"Memory ready","POC:MEMORY:SIGNALS:BW":"Bytes Width","POC:MEMORY:SIGNALS:R":"Read","POC:MEMORY:SIGNALS:W":"Write","POC:IO:STATES:ADDR":"Barramento de endereços","POC:IO:STATES:DATA":"Barramento de dados","POC:IO:SIGNALS:IOR":"Ler do dispositivo IO","POC:IO:SIGNALS:IOW":"Escreva no dispositivo IO","POC:KEYBOARD:STATES:ADDR":"Barramento de endereços","POC:KEYBOARD:STATES:DATA":"Barramento de dados","POC:KEYBOARD:SIGNALS:IOR":"Ler do teclado","POC:DISPLAY:STATES:ADDR":"Bus de endereços","POC:DISPLAY:STATES:DATA":"Data bus","POC:DISPLAY:SIGNALS:IOR":"Leitura do display (desabilitado)","POC:DISPLAY:SIGNALS:IOW":"Escreva no display","POC:L3D:STATES:ADDR":"Barramento de endereços","POC:L3D:STATES:DATA":"Barramento de dados","POC:L3D:SIGNALS:IOR":"Ler de L3D","POC:L3D:SIGNALS:IOW":"Escreva no L3D",_last_:"_last_"};i18n.eltos.dialogs.pt={"Show/Hide ActionBar":"Mostrar / Ocultar ActionBar","Show/Hide Slider":"Mostrar / Ocultar Slider","WepSIM User Interface skin":"Skin da Interface do Usuário WepSIM","Initial intro":"Introdução inicial","About WepSIM":"Sobre o WepSIM",Title:"Título",Message:"mensagem",Duration:"Duração","Confirm remove record...":"Você quer remover o registro real?","Close or Reset...":"Por favor, clique em Fechar para mantê-lo, ou clique no botão Redefinir para removê-lo.","Sure Control Memory...":"Você quer que eu salve o conteúdo atual da Control Memory em vez do conteúdo do editor ?.","Show/Hide labels":"Mostrar / ocultar etiquetas","Show/Hide content":"Mostrar / ocultar conteúdo","Show/Hide assembly":"Mostrar / ocultar montagem","Show/Hide pseudo-instructions":"Mostrar / ocultar pseudo-instruções",Close:"Perto",details:"detalhes",idiom:"idioma",_last_:"_last_"};i18n.eltos.gui.hi={"Loading WepSIM...":"WepSIM लोड हो रहा है ...",About:"के बारे में",Configuration:"विन्यास",MicroCode:"माइक्रोकोड",Assembly:"सभा",Simulator:"सिम्युलेटर",Examples:"उदाहरण",Load:"भार",Save:"सहेजें",Restore:"पुनर्स्थापित",Reload:"पुनः लोड करें",Checkpoint:"जांच की चौकी",Help:"मदद","Help Index":"सहायता सूचकांक",Processor:"प्रोसेसर","Assembly Debugger":"विधानसभा डीबगर",Reset:"रीसेट",microInstruction:"और # 181; निर्देश",Instruction:"अनुदेश",Run:"Daud","Hardware Summary":"हार्डवेयर सारांश",processor:"प्रोसेसर",details:"विवरण",microcode:"माइक्रोकोड",Signals:"सिग्नल",Behaviors:"व्यवहार",States:"राज्य अमेरिका","Control States":"नियंत्रण स्टेट्स",Dependencies:"निर्भरता",Close:"बंद करे",Description:"विवरण",Show:"प्रदर्शन","Show Main Memory":"दिखाएँ मुख्य मेमोरी",compile:"संकलन",Compile:"संकलन","Please write the file name":"कृपया फ़ाइल नाम लिखना","Load from this File":"इस फ़ाइल से लोड करें",labels:"लेबल",addr:"addr",ess:"ईएसएस",content:"सामग्री",assembly:"सभा",instructions:"अनुदेश","simulator intro 1":"आप हार्डवेयर प्रयोग की जाने वाली चुन सकते हैं। डिफ़ॉल्ट एक ईपी (मौलिक प्रोसेसर) हार्डवेयर है। आप मोड चयनकर्ता span> प्रयुक्त हार्डवेयर बदलने के लिए।","simulator intro 2":"तो फिर तुम <= 'पाठ-प्राथमिक bg-प्रकाश' onclick = 'wsweb_dialog_open ( \"उदाहरण\");' span class> माइक्रोकोड (परिभाषित करता है अनुदेश सेट) और विधानसभा कोड को लोड करने की जरूरत है आप उपयोग कर सकते हैं। एक उदाहरण span>, span> एक फ़ाइल से लोड, या आप कर सकते हैं संपादित करें एक नया माइक्रोकोड span> और एक नई विधानसभा कोड span >।","simulator intro 3":"अंत में, सिम्युलेटर में आप के साथ साथ माइक्रोकोड निष्पादित करने में सक्षम विधानसभा से पहले भरी हुई हैं। आप यह दोनों निष्पादित कर सकते हैं माइक्रो अनुदेश स्तर या विधानसभा अनुदेश स्तर पर,।","Prev.":"पिछला।",Next:"आगे",End:"समाप्त","Disable tutorial mode":"अक्षम ट्यूटोरियल मोड",Comment:"टिप्पणी",Pause:"ठहराव",Play:"खेल",Stop:"रुकें",Record:"अभिलेख",Registers:"रजिस्टर","Control Memory":"नियंत्रण मेमोरी",Stats:"आँकड़े",Memory:"स्मृति","Keyboard+Display":"कीबोर्ड + प्रदर्शन","I/O Stats":"आई / ओ आँकड़े","I/O Configuration":"आई / ओ विन्यास",Recent:"हाल का",Refresh:"ताज़ा करना",Welcome:"स्वागत हे","WepSIM hardware":"WepSIM हार्डवेयर","Pick firm/soft from":"से फर्म / नरम उठाओ","Information from":"इससे जानकारी",Native:"देशी","MIPS32-like code":"MIPS32 की तरह कोड","RISCV32 code":"RISCV32 कोड","Z80-like code":"Z80 की तरह कोड",Actions:"क्रिया",Utilities:"उपयोगिताएँ","Welcome tutorial":"आपका स्वागत है ट्यूटोरियल","Assembly only":"विधानसभा केवल","Micro & Assembly":"माइक्रो और विधानसभा",idiom:"मुहावरा","quick config":"त्वरित विन्यास","Graph: quick interactive mode":"ग्राफ: त्वरित इंटरैक्टिव मोड",_last_:"_last_"};i18n.eltos.tutorial_welcome.hi={title_0:"WepSIM सिम्युलेटर में आपका स्वागत है!",message_0:"<केंद्र> केंद्र>
यह संक्षिप्त ट्यूटोरियल आपको यह दिखाने जा रहा है कि कैसे: एक उदाहरण लोड करें। li> उदाहरण का चयन करें; li> सिमुलेशन को कॉन्फ़िगर करें। li> < a href = '#' onclick = 'sim_tutorial_goframe (\"स्वागत\", 0,4);>> सहायता प्राप्त करें। li> ol> h5>",title_1:"कुछ उदाहरण कैसे लोड करें।",message_1:"<केंद्र> केंद्र>
' उदाहरण 'बटन में क्लिक करें, फिर उदाहरण' शीर्षक 'नाम में क्लिक करें। फिर माइक्रोकोड और असेंबली के लिए उदाहरण लोड किया गया है और माइक्रो कंप्यूटर किया गया है। संकलित। h5>",title_2:"कैसे एक उदाहरण निष्पादित करने के लिए।",message_2:"<केंद्र> केंद्र>
कदम से कदम निष्पादित करने के लिए अगले निर्देश / microinstruction पर क्लिक करें। पहला ब्रेकपॉइंट या असेंबली प्रोग्राम के अंत तक निष्पादित करने के लिए रन बटन पर क्लिक करें। h5>",title_3:"WepSIM को कैसे कॉन्फ़िगर करें।",message_3:"<केंद्र> केंद्र>
' कॉन्फ़िगरेशन 'बटन में क्लिक करें और उपयोगकर्ता WepSIM के विभिन्न भागों को अनुकूलित करने में सक्षम हैं। h5>",title_4:"मूल सहायता कैसे प्राप्त करें।",message_4:"<केंद्र> केंद्र>
कृपया सहायता संवाद तक पहुंचने के लिए हरे' सहायता 'बटन में क्लिक करें। आप मुहावरे (स्पेनिश / अंग्रेजी) को स्विच करने में सक्षम हैं, पर जाएं। मदद इंडेक्स, या हेल्प डायलॉग बंद करें। h5>",title_5:"WepSIM में आपका स्वागत है!",message_5:"<केंद्र> केंद्र>
कृपया अधिक जानकारी के लिए सहायता अनुभाग देखें। यदि आप इस ट्यूटोरियल के अंतिम बटन पर क्लिक करते हैं, तो WepSIM आपके लिए पहला उदाहरण लोड करने जा रहा है। का आनंद लें! h5>",_last_:"_last_"};i18n.eltos.tutorial_simpleusage.hi={title_0:"सरल WepSIM अनुभव: माइक्रोप्रोग्रामिंग और प्रोग्रामिंग",message_0:"<केंद्र> केंद्र>
यह संक्षिप्त ट्यूटोरियल आपको यह दिखाने जा रहा है कि कैसे: सिमुलेशन में असेंबली / माइक्रोकोड निष्पादित करें। ",title_1:"सरल WepSIM अनुभव: माइक्रोप्रोग्रामिंग और प्रोग्रामिंग",message_1:"<केंद्र> केंद्र>
पहला कदम फर्मवेयर को माइक्रोप्रोग्राम करने के लिए उपयोग किया जाना है। कृपया माइक्रोकोड स्क्रीन पर स्विच करने के लिए 'माइक्रोकोड' बटन का उपयोग करें। ",title_2:"सरल WepSIM अनुभव: माइक्रोप्रोग्रामिंग और प्रोग्रामिंग",message_2:"<केंद्र> केंद्र>
माइक्रोप्रोग्रामिंग स्क्रीन प्रदान करता है: माइक्रोकोड के लिए संपादक। माइक्रो कंप्यूटर <। li> हार्डवेयर सारांश और मदद। एक बार जब आपका कोड तैयार हो जाता है (त्रुटियों के बिना संकलित), तो अगला चरण विधानसभा स्क्रीन पर जाना है। ",title_3:"सरल WepSIM अनुभव: माइक्रोप्रोग्रामिंग और प्रोग्रामिंग",message_3:"<केंद्र> केंद्र>
दूसरा चरण विधानसभा को निष्पादित करने के लिए प्रोग्रामिंग करना है। कृपया 'असेंबली' बटन का प्रयोग करें, सिम्युलेटर स्क्रीन या माइक्रोकोड स्क्रीन दोनों। ",title_4:"सरल WepSIM अनुभव: माइक्रोप्रोग्रामिंग और प्रोग्रामिंग",message_4:"<केंद्र> केंद्र>
प्रोग्रामिंग स्क्रीन प्रदान करता है: असेंबली कोड के लिए संपादक। असेंबली कंपाइलर। मेमोरी मैप व्यूअर और मदद। एक बार जब आपका assebly कोड तैयार हो जाता है (संपादित और त्रुटियों के बिना संकलित) तो अगला चरण सिमुलेशन स्क्रीन में जाना है। ",title_5:"सरल WepSIM अनुभव: माइक्रोप्रोग्रामिंग और प्रोग्रामिंग",message_5:"<केंद्र> केंद्र>
तीसरा चरण सिम्युलेटर में विधानसभा कोड निष्पादित करना है। सिम्युलेटर स्क्रीन प्रदान करता है: विधानसभा और हार्डवेयर दृश्य । > इस ट्यूटोरियल ने छात्रों और शिक्षकों के लिए WepSIM के विशिष्ट उपयोग की शुरुआत की है। WepSIM का आनंद लें! ",_last_:"_last_"};i18n.eltos.tour_intro.hi={step1:"WepSIM बेहतर तरीके से यह समझने में मदद करता है कि कंप्यूटर कैसे काम करता है: यह दृश्य है, इंटरैक्टिव है, संकेतों से लेकर रुकावट, सिस्टम कॉल, अपवाद आदि तक एकीकृत करता है। हम वास्तव में मानते हैं कि WepSIM एक क्रांतिकारी शिक्षण उपकरण है। यह संक्षिप्त दौरा इसके इंटरफेस के प्रमुख तत्वों का परिचय देता है।","step 2":"टॉप-राइट पर यह बटन डिफरेंशियल वर्क मोड के लिए क्विक एक्सेस मेनू है। "+" "+"उपयोगकर्ता चुन सकते हैं:"+""+" हार्डवेयर के साथ काम करने के लिए (जैसे EP प्रोसेसर, आदि।) i>"+" केवल मोड, पूर्णांक MIPS के साथ 32 sub> या RISC-V <उप> 32 sub> निर्देश i>"+" ",step3:"शीर्ष-दाईं ओर, 'मदद' बटन संबंधित संवाद खोलता है। मदद संवाद ट्यूटोरियल, विवरण, सूचना, आदि को सारांशित करता है।",step4:"और बाईं ओर, 'उदाहरण' बटन उदाहरण संवाद को खोलता है। कई उदाहरण हैं जिनका उपयोग आकस्मिक रूप से सीखने के लिए किया जा सकता है।",step5:"शीर्ष-बाईं ओर, 'कॉन्फ़िगरेशन' बटन कॉन्फ़िगरेशन संवाद खोलता है। यह उपयोगकर्ताओं को निष्पादन के कई पहलुओं, उपयोगकर्ता इंटरफ़ेस, वरीयताओं, आदि को अनुकूलित करने देता है।",step6:"Congrat! आप WepSIM इंटरफ़ेस के प्रमुख तत्वों को जानते हैं। 'सहायता' संवाद से आप सीखने को जारी रखने के लिए 'वेलकम ट्यूटोरियल' तक पहुँच सकते हैं। ",_last_:"_last_"};i18n.eltos.cfg.hi={General:"सामान्य","Idiom for help, examples, etc.":"मदद, उदाहरण आदि के लिए मुहावरा","Notification speed: time before disapear":"अधिसूचना गति: गायब होने से पहले का समय","Dark Mode":"डार्क मोड",Editor:"संपादक","Editor theme: light or dark":"संपादक विषय: प्रकाश या अंधेरा",Light:"रोशनी",Dark:"अंधेरा","Editor mode: vim, emacs, etc.":"संपादक मोड: vim, emacs, आदि।",Execution:"क्रियान्वयन","Running speed: execution speed":"दौड़ने की गति: निष्पादन की गति",Slow:"धीरे",Normal:"साधारण",Fast:"उपवास","Step-by-step: element in run mode":"चरण-दर-चरण: रन मोड में तत्व",Instructions:"अनुदेश",Instruction:"अनुदेश","µinstructions":"μinstructions",microInstruction:"μInstruction","Breakpoint icon: icon to be used for breakpoints":"ब्रेकप्वाइंट आइकन: ब्रेकप्वाइंट के लिए उपयोग किया जाने वाला आइकन","Limit instructions: number of instructions to be executed":"सीमा निर्देश: निष्पादित किए जाने वाले निर्देशों की संख्या","Limit instruction ticks: to limit clock ticks":"सीमा निर्देश टिक: घड़ी टिक प्रति निर्देश सीमा","Register file":"फ़ाइल रजिस्टर करें","Display format":"प्रारूप को प्रदर्शित करें","Register file names":"फ़ाइल नाम पंजीकृत करें",Numbers:"नंबर",Labels:"लेबल","Editable registers: edit register file values":"संपादन योग्य रजिस्टर: रजिस्टर फ़ाइल मूल्यों को संपादित करें","Circuitry simulation":"सर्किटरी सिमुलेशन","Data-path color":"डेटा-पथ का रंग","Signal color":"संकेत का रंग","Show by value or by activation":"मूल्य या सक्रियण द्वारा दिखाएं",Value:"मूल्य",Activation:"सक्रियण","Interactive mode: signal value can be updated":"इंटरएक्टिव मोड: सिग्नल वैल्यू को अपडेट किया जा सकता है","Quick interactive mode: quick update of signal value":"क्विक इंटरैक्टिव मोड: सिग्नल वैल्यू का त्वरित अपडेट","(example)":"(उदाहरण)",Accesibility:"सरल उपयोग","Beginner view":"Beginner view","Auto-scroll while executing":"Auto-scroll while executing","Active voice: external voice control":"सक्रिय आवाज: बाहरी आवाज नियंत्रण","Verbalization: textual or mathematical":"शब्दश: पाठ या गणितीय","WepSIM User Interface views":"WepSIM उपयोगकर्ता इंटरफ़ेस दृश्य",Privacy:"गोपनीयता",On:"On",Off:"Off",_last_:"_last_"};i18n.eltos.help.hi={"Welcome tutorial":"आपका स्वागत है ट्यूटोरियल",help_01_01:"स्वागत ट्यूटोरियल खोलें","Simple usage tutorial":"सरल उपयोग ट्यूटोरियल",help_01_02:"माइक्रोप्रोग्रामिंग और असेंबली प्रोग्रामिंग के लिए सरल उपयोग ट्यूटोरियल खोलें","Execute example":"Execute example",help_01_03:"Play the execute example tutorial","Simulator: firmware":"सिम्युलेटर: फर्मवेयर",help_02_01:"फर्मवेयर को नियंत्रण मेमोरी में लोड करने के लिए कैसे काम करें","Microcode format":"माइक्रोकोड प्रारूप",help_02_02:"उपयोग किए गए माइक्रोकोड का सिंटैक्स","Simulator: assembly":"सिम्युलेटर: विधानसभा",help_02_03:"विधानसभा के साथ कैसे काम करें जो उपर्युक्त फर्मवेयर का उपयोग करते हैं","Assembly format":"विधानसभा प्रारूप",help_02_04:"विधानसभा तत्वों का सिंटैक्स","Simulator: execution":"सिम्युलेटर: निष्पादन",help_02_05:"सिम्युलेटर विधानसभा और फर्मवेयर को कैसे निष्पादित कर सकता है","Simulated architecture":"नकली वास्तुकला",help_03_01:"नकली प्रोसेसर वास्तुकला का वर्णन","Simulated signals":"नकली संकेत",help_03_02:"मुख्य संकेत नकली तत्व प्रोसेसर का सारांश","Hardware summary":"हार्डवेयर सारांश",help_03_03:"सिम्युलेटेड एलिमेंटल प्रोसेसर हार्डवेयर के लिए संदर्भ कार्ड","License, platforms, etc.":"लाइसेंस, प्लेटफॉर्म, आदि।",help_04_01:"WepSIM लाइसेंस, समर्थित प्लेटफार्मों, प्रौद्योगिकियों का इस्तेमाल किया",Authors:"लेखक",help_04_02:"WepSIM के लेखक",_last_:"_last_"};i18n.eltos.states.hi={States:"राज्य अमेरिका",state:"राज्य ",Current:"वर्तमान","Current State":"वर्तमान स्थिति",History:"इतिहास",None:"कोई नहीं","Empty history":"खाली इतिहास","Empty (only modified values are shown)":"खाली (केवल संशोधित मान दिखाए गए हैं)",Differences:"मतभेद","differences with clipboard state":"क्लिपबोर्ड स्थिति के साथ अंतर","Meets the specified requirements":"निर्दिष्ट आवश्यकताओं को पूरा करता है",history:"इतिहास",Add:"जोड़ना","'Current State' to History":"इतिहास को 'वर्तमान स्थिति'",Check:"चेक",Copy:"प्रतिलिपि","to clipboard":"क्लिपबोर्ड पर",Checkpoint:"जांच की चौकी","File name":"फ़ाइल का नाम","Tag for checkpoint":"चौकी के लिए टैग","File to be loaded":"फ़ाइल लोड की जानी है","Save to File":"फाइल में बचाएं","State(s) to checkpoint":"चौकी के लिए राज्य (एस)","Record to checkpoint":"चौकी पर रिकॉर्ड","Browser cache":"ब्राउज़र कैश","Session to be restore":"सत्र बहाल होने के लिए",_last_:"_last_"};i18n.eltos.examples.hi={"addv + seqv.":"addv + seqv","Alloc.s":"Alloc.s","Dummy instruction":"डमी निर्देश",Exception:"अपवाद",Instructions:"अनुदेश",Interruptions:"व्यवधान","Int. + syscall + except.":"इंट। + syscall + को छोड़कर।","I/O":"एच / ओ",Looping:"लूपिंग","madd, mmul, mxch":"मदद, मंउल, मष्च","Masks & shift":"मास्क और बदलाव",Matrix:"मैट्रिक्स","Memory access":"मेमोरी एक्सेस","SC 1, 4-5, 8, 11-12":"एससी 1, 4-5, 8, 11-12",Subrutine:"सबरूटीन","syscall 1, 4-5, 8, 11-12":"syscall 1, 4-5, 8, 11-12","System call":"सिस्टम कॉल",Threads:"धागे",Vector:"वेक्टर","Compiler Explorer":"Compiler Explorer",Instructive:"शिक्षाप्रद ",example_04_01:"रुकावट, सिस्टम कॉल और अपवाद के साथ उन्नत उदाहरण।",example_05_01:"एप्लिकेशन-विशिष्ट एक्सटेंशन: addv + seqv।",example_05_03:"एप्लिकेशन-विशिष्ट एक्सटेंशन: मैड + mmul + mxch।",example_03_01:"अस्थायी बिंदु अपवाद के साथ शिक्षाप्रद b> उदाहरण।",example_03_02:" शिक्षाप्रद b> रुकावट के समर्थन के साथ उदाहरण: लाने के लिए, RETI, और .ktext / -kdata।",example_03_03:"सिस्टम कॉल समर्थन के साथ शिक्षाप्रद b> उदाहरण।",example_03_04:"सरल स्टैक सम्मेलन के साथ शिक्षाप्रद b> उदाहरण.",example_04_04:"मल्लोक + मुक्त का उदाहरण।",example_04_02:"पूर्णांक और स्ट्रिंग को मुद्रण / पढ़ने के लिए syscall का उदाहरण।",example_04_03:"धागे का उदाहरण।",example_03_01b:"अस्थायी बिंदु अपवाद के साथ उदाहरण।",example_03_02b:"रुकावट के समर्थन के साथ उदाहरण: लाने, RETI, और .ktext / .kdata।",example_02_01:"उदाहरण के साथ क्रमादेशित I / O पहुंच और मूलभूत .text / .data खंड",example_03_03b:"सिस्टम कॉल समर्थन के साथ उदाहरण।",example_02_02:"अधिक निर्देशों और I / O (कीबोर्ड, डिस्प्ले) के साथ विस्तारित उदाहरण।",example_02_04:"सबरूटीन और मैट्रिक्स के साथ विस्तारित उदाहरण।",example_02_03:"मास्क, शिफ्ट और बेसिक .text / .data सेगमेंट के साथ अधिक विस्तारित उदाहरण।",example_01_01:"लाने के साथ सरल उदाहरण, अंकगणितीय निर्देश और मूल .text खंड।",example_01_04:"भ्रूण, शाखा और मूल .text / .data खंड के साथ सरल उदाहरण।",example_01_03:"भ्रूण, शाखा, और मूल .text खंड के साथ सरल उदाहरण।",example_01_02:"फ़ेच, मेमोरी एक्सेस और बेसिक .text / .data खंड के साथ सरल उदाहरण",example_06_01:"उदाहरण का परीक्षण करें।",example_06_02:"सरल संकलक एक्सप्लोरर उदाहरण.",Advanced:"उन्नत",Initial:"प्रारंभिक",Intermediate:"मध्यम",Laboratory:"प्रयोगशाला","Operating Systems":"ऑपरेटिंग सिस्टम",Extra:"बोनस",Special:"विशेष","Load example":"लोड उदाहरण","Load Assembly only":"केवल विधानसभा लोड करें","Load Firmware only":"केवल फर्मवेयर लोड करें","Copy reference to clipboard":"क्लिपबोर्ड पर कॉपी संदर्भ",Share:"शेयर","No examples available...":"चयनित हार्डवेयर के लिए कोई उदाहरण उपलब्ध नहीं हैं","Simple example":"सरल उदाहरण है।",_last_:"_last_"};i18n.eltos.compiler.hi={"PROBLEM AROUND LINE":"Problem around line","NO TAG OR DIRECTIVE":"उम्मीद टैग या निर्देश लेकिन यह बजाय टोकन: ","NO TAG, DIR OR INS":"वैध टैग नहीं है (उदा .: टैग 1 :) निर्देश (जैसे: .डाटा) या निर्देश, पाया गया: ","INVALID TAG FORMAT":"टैग एक अक्षरांकीय प्रारूप का पालन करना चाहिए (एक पत्र या अंडरस्कोर के साथ शुरू): ","TAG OR INSTRUCTION":"एक टैग एक निर्देश के रूप में एक ही नाम नहीं कर सकते हैं: ","REPEATED TAG":"बार-बार टैग: ","NO NUMERIC DATATYPE":"सांख्यिक डेटाप्रकार लेकिन पाया के लिए अपेक्षित मूल्य: ","NO POSITIVE NUMBER":"एक सकारात्मक संख्या की अपेक्षा थी लेकिन पाया: ","NO NUMBER OF BYTES":"बाइट्स की अपेक्षित संख्या .space में आरक्षित लेकिन पाया करने के लिए: ","INVALID ALIGN VALUE":"धनात्मक संख्या लेकिन पाया के रूप में संरेखित पैरामीटर की उम्मीद: ","REMEMBER ALIGN VAL":"याद रखें कि संख्या संरेखण के लिए दो की शक्ति है, MIPS दस्तावेज़ देखें।","NOT CLOSED STRING":"स्ट्रिंग बंद नहीं है (उद्धरण चिह्नों के साथ इसे समाप्त करना भूल गया)","NO QUOTATION MARKS":"उद्धरण चिह्नों लेकिन पाया के बीच उम्मीद की स्ट्रिंग: ","UNEXPECTED DATATYPE":"अप्रत्याशित डेटाप्रकार नाम: ","INVALID SEGMENT NAME":"उम्मीद .data / .text / ... खंड लेकिन पाया: ","NO MAIN OR KMAIN":"टैग 'मुख्य' या 'kmain' पाठ खंड (रों) में परिभाषित नहीं कर रहे हैं। यह आदेश एक कार्यक्रम पर अमल करने में उन टैग का कम से कम एक परिभाषित करने के लिए अनिवार्य है","UNKNOWN 1":"फ़ील्ड प्रकार के लिए एक अज्ञात त्रुटि हुई (1): ","UNKNOWN 2":"अनपेक्षित त्रुटि (2)","REMEMBER I. FORMAT":"याद रखें कि अनुदेश प्रारूप के रूप में परिभाषित किया गया है: ","SEVERAL CANDIDATES":"निर्देश और खेतों से अधिक सूक्ष्म प्रोग्राम के साथ मेल खाते हैं। माइक्रोकोड की जांच करें। वर्तमान में, अनुदेश प्रारूप हो सकता है: ","NOT MATCH MICRO":"निर्देश और खेतों माइक्रो प्रोग्राम के साथ मेल नहीं खाते।","CHECK MICROCODE":"माइक्रोकोड की जांच करें। शायद आप एक क्षेत्र को जोड़ने के लिए भूल गया, एक नंबर अपने अंतरिक्ष में फिट नहीं करता है, या आप बस एक गलत अनुदेश का इस्तेमाल किया","INS. MISSING FIELD":"शिक्षा में क्षेत्र गुम","UNEXPECTED (REG)":"उम्मीद रजिस्टर लेकिन कोष्ठक के बीच रजिस्टर पाया।","EXPECTED (REG)":"कोष्ठक लेकिन पाया के बीच उम्मीद रजिस्टर:","EXPECTED REG":"उम्मीद रजिस्टर (उदा .: $ 1 / $ a0 / ...) लेकिन पाया:","UNKNOWN ESCAPE CHAR":"अज्ञात बच चार","SPACE FOR # BITS":" बाइनरी में बिट्स लेकिन केवल के लिए जगह है ",NEEDS:" इसकी जरूरत है ","UNKNOWN MC FORMAT":"(unknown format in microcode)","LABEL NOT DEFINED":"लेबल थे, लेकिन नहीं विधानसभा कोड में परिभाषित: ","LABEL NOT FOUND":"उम्मीद ':' नहीं मिला, टोकन पाया: ","REPEATED LABEL":"लेबल दोहराया है: ","INVALID LABEL FORMAT":"लेबल प्रारूप के लिए मान्य नहीं है: ","OPEN BRACE NOT FOUND":"उम्मीद '{' नहीं मिला","CLOSE BRACE NOT FOUND":"उम्मीद '}' नहीं मिला","OPEN PAREN. NOT FOUND":"उम्मीद '(' नहीं मिला","CLOSE PAREN. NOT FOUND":"उम्मीद ')' नहीं मिला","COMMA NOT FOUND":"उम्मीद ',' नहीं मिला","EQUAL NOT FOUND":"उम्मीद '=' नहीं मिला","SIGNAL NOT EXISTS":"सिग्नल मौजूद नहीं करता है: ","SIGNAL NO DIRECTLY":"संकेत सीधे नहीं किया जा सकता, नियंत्रण इकाई संकेतों के बजाय का उपयोग करें।","INCORRECT BIN. FORMAT":"गलत द्विपदीय प्रारूप: ","OUT OF RANGE":"सीमा से बाहर मूल्य: ","EMPTY MICROCODE":"खाली माइक्रोकोड","EMPTY NAME LIST":"रजिस्टर के लिए खाली नाम सूची: x = []","DUPLICATE SP":"ढेर सूचक की डुप्लीकेट परिभाषा","NO SP":"उम्मीद stack_pointer नहीं मिला टोकन","UNDEF. INSTR.":"अपरिभाषित अनुदेश: ","MORE 100 FIELDS":"एक एकल अनुदेश में 100 से अधिक क्षेत्रों।","CO AS FIELD NAME":"निर्देश क्षेत्र नाम के रूप में 'सह' है।","NW AS FIELD NAME":"निर्देश क्षेत्र नाम के रूप में 'nwords' है।","NO CO FIELD":"उम्मीद कीवर्ड 'सह' नहीं मिली","INCORRECT CO BIN.":"'सह' पर गलत द्विपदीय प्रारूप: ","INCORRECT COP BIN.":"'पुलिस' पर गलत द्विपदीय प्रारूप: ","INVALID PARAMETER":"अमान्य मापदंड: ","ALLOWED PARAMETER":"रेग, संख्या, INM, addr, पता: यह केवल निम्नलिखित क्षेत्रों की अनुमति देता है","MISSING TOKEN ON":"'टोकन' पर के बाद '(' याद आ रही है: ","MISSING ) ON":"')' पर याद आ रही है: ","CO ALREADY USED":"'सह' पहले से ही द्वारा इस्तेमाल किया गया है: ","CO+COP ALREADY USED":"'सह + सेशन' पहले से ही द्वारा इस्तेमाल किया गया है: ","NO NWORDS":"उम्मीद कीवर्ड 'nwords' नहीं मिली","INCORRECT ADDRESSING":"गलत (पेट या rel) को संबोधित करने का टाइप करें","UNEXPECTED FIELD":"अप्रत्याशित क्षेत्र पाया: ","CHECK ORDER":"कृपया खेतों का क्रम जांचें ","STARTBIT OoR":"सीमा से बाहर startbit: ","STOPBIT OoR":"सीमा से बाहर stopbit: ","OVERLAPPING FIELD":"ओवरलैपिंग क्षेत्र: ","BAD COP BIN. LEN.":"'पुलिस' के लिए गलत द्विआधारी लंबाई: ","SP NOT DEFINED":"ढेर सूचक रजिस्टर परिभाषित नहीं किया गया था","NO LABEL FETCH":"लेबल 'लाने' को परिभाषित नहीं किया","NO LABEL BEGIN":"'शुरू' नहीं मिली","NO CO CODES":"वहाँ निर्देश के लिए पर्याप्त 'सह' कोड उपलब्ध नहीं है","NO LABEL MADDR":"MADDR लेबल नहीं मिला: ","INS. NAME":"निर्देश का नाम: '","NOT VALID FOR":"'के लिए मान्य नहीं है: ","BIGGER THAN":"के अपेक्षा बड़ा है",BITS:"बिट्स","EXPECTED VALUE":"उम्मीद मूल्य है कि एक में फिट '","BUT INSERTED":"लेकिन डाला",INSTEAD:"बजाय",_last_:"_last_"};i18n.eltos.hw.hi={Component:"Component",Element:"Element","States (In)":"States (In)","States (Out)":"States (Out)",Signals:"Signals","It has":"It has",inputs:"inputs",outputs:"outputs",signals:"signals",Graph:"ग्राफिक",Text:"मूलपाठ","Graph: split view":"ग्राफ: स्प्लिट व्यू","Graph: interactive mode":"ग्राफ: इंटरेक्टिव मोड",name:"नाम",version:"संस्करण",abilities:"क्षमता",value:"मूल्य",default_value:"डिफ़ॉल्ट मान",nbits:"एनबिट्स",type:"प्रकार",visible:"दृश्यमान","EP:CPU_T1:STATES:IN":"इनपुट एमबीआर रजिस्टर का मान है","EP:CPU_T1:STATES:OUT":"आउटपुट आंतरिक बस में जाता है","EP:CPU_T1:SIGNALS:CTL":"पुष्टि करें कि इनपुट मान आउटपुट में कॉपी किया गया है","EP:CPU_T2:STATES:IN":"इनपुट पीसी रजिस्टर का मान है","EP:CPU_T2:STATES:OUT":"आउटपुट आंतरिक बस में जाता है","EP:CPU_T2:SIGNALS:CTL":"पुष्टि करें कि इनपुट मान आउटपुट में कॉपी किया गया है","EP:CPU_T3:STATES:IN":"इनपुट चयनकर्ता-आईआर का आउटपुट है","EP:CPU_T3:STATES:OUT":"आउटपुट आंतरिक बस में जाता है","EP:CPU_T3:SIGNALS:CTL":"पुष्टि करें कि इनपुट मान आउटपुट में कॉपी किया गया है","EP:CPU_T4:STATES:IN":"इनपुट RT1 रजिस्टर का मान है","EP:CPU_T4:STATES:OUT":"आउटपुट आंतरिक बस में जाता है","EP:CPU_T4:SIGNALS:CTL":"पुष्टि करें कि इनपुट मान आउटपुट में कॉपी किया गया है","EP:CPU_T5:STATES:IN":"इनपुट RT2 रजिस्टर का मान है","EP:CPU_T5:STATES:OUT":"आउटपुट आंतरिक बस में जाता है","EP:CPU_T5:SIGNALS:CTL":"पुष्टि करें कि इनपुट मान आउटपुट में कॉपी किया गया है","EP:CPU_T6:STATES:IN":"इनपुट ALU आउटपुट है","EP:CPU_T6:STATES:OUT":"आउटपुट आंतरिक बस में जाता है","EP:CPU_T6:SIGNALS:CTL":"पुष्टि करें कि इनपुट मान आउटपुट में कॉपी किया गया है","EP:CPU_T7:STATES:IN":"इनपुट RT3 रजिस्टर का मान है","EP:CPU_T7:STATES:OUT":"आउटपुट इंटरनल बस में जाता है","EP:CPU_T7:SIGNALS:CTL":"पुष्टि करें कि इनपुट मान आउटपुट में कॉपी किया गया है","EP:CPU_T8:STATES:IN":"इनपुट SR रजिस्टर का मान है","EP:CPU_T8:STATES:OUT":"आउटपुट आंतरिक बस में जाता है","EP:CPU_T8:SIGNALS:CTL":"पुष्टि करें कि इनपुट मान आउटपुट में कॉपी किया गया है","EP:CPU_T9:STATES:IN":"इनपुट रजिस्टर फ़ाइल पोर्ट A आउटपुट का मान है","EP:CPU_T9:STATES:OUT":"आउटपुट इंटरनल बस में जाता है","EP:CPU_T9:SIGNALS:CTL":"पुष्टि करें कि इनपुट मान आउटपुट में कॉपी किया गया है","EP:CPU_T10:STATES:IN":"इनपुट रजिस्टर फ़ाइल पोर्ट B आउटपुट का मान है","EP:CPU_T10:STATES:OUT":"आउटपुट आंतरिक बस में जाता है","EP:CPU_T10:SIGNALS:CTL":"पुष्टि करें कि इनपुट मान आउटपुट में कॉपी किया गया है","EP:CPU_T11:STATES:IN":"इनपुट माइक्रोइंस्ट्रक्शन/एक्सकोड आउटपुट है","EP:CPU_T11:STATES:OUT":"आउटपुट इंटरनल बस में जाता है","EP:CPU_T11:SIGNALS:CTL":"पुष्टि करें कि इनपुट मान आउटपुट में कॉपी किया गया है","EP:CPU_T12:STATES:IN":"इनपुट HPC (हार्डवेयर परफॉर्मेंस काउंटर) आउटपुट है","EP:CPU_T12:STATES:OUT":"आउटपुट इंटरनल बस में जाता है","EP:CPU_T12:SIGNALS:CTL":"पुष्टि करें कि इनपुट मान आउटपुट में कॉपी किया गया है","EP:CPU_TA:STATES:IN":"इनपुट MAR रजिस्टर आउटपुट है","EP:CPU_TA:STATES:OUT":"आउटपुट एड्रेस बस में जाता है","EP:CPU_TA:SIGNALS:CTL":"पुष्टि करें कि इनपुट मान आउटपुट में कॉपी किया गया है","EP:CPU_TB:STATES:IN":"इनपुट बाइट चयनकर्ता आउटपुट है","EP:CPU_TB:STATES:OUT":"आउटपुट डेटा बस में जाता है","EP:CPU_TB:SIGNALS:CTL":"पुष्टि करें कि इनपुट मान आउटपुट में कॉपी किया गया है","EP:CPU_MUX_A:STATES:MUX_0":"MUX A का इनपुट 0, रजिस्टर फ़ाइल (A) से","EP:CPU_MUX_A:STATES:MUX_1":"RT1 रजिस्टर से MUX A का इनपुट 1","EP:CPU_MUX_A:STATES:MUX_O":"एएलयू को आउटपुट, ऑपरेटर 0","EP:CPU_MUX_A:SIGNALS:MA":"आउटपुट को भेजने के लिए इनपुट मान का चयन करें","EP:CPU_MUX_B:STATES:MUX_0":"MUX B का इनपुट 0, रजिस्टर फ़ाइल (B) से","EP:CPU_MUX_B:STATES:MUX_1":"RT2 रजिस्टर से MUX B का इनपुट 1","EP:CPU_MUX_B:STATES:MUX_2":"MUX B का इनपुट 2, मान 4","EP:CPU_MUX_B:STATES:MUX_3":"MUX B का इनपुट 3, मान 1","EP:CPU_MUX_B:STATES:MUX_O":"ALU को आउटपुट, ऑपरेटर 1","EP:CPU_MUX_B:SIGNALS:MB":"आउटपुट को भेजने के लिए इनपुट मान का चयन करें","EP:CPU_MUX_1:STATES:MUX_0":"MUX 1 का इनपुट 0, आंतरिक बस से","EP:CPU_MUX_1:STATES:MUX_1":"MUX 1 का इनपुट 1, बाइट चयनकर्ता से","EP:CPU_MUX_1:STATES:MUX_O":"आउटपुट से MBR, MUX 1 से","EP:CPU_MUX_1:SIGNALS:M1":"आउटपुट को भेजने के लिए इनपुट मान का चयन करें","EP:CPU_MUX_2:STATES:MUX_0":"MUX 2 का इनपुट 0, आंतरिक बस से","EP:CPU_MUX_2:STATES:MUX_1":"MUX 2 का इनपुट 1, PC + 4","EP:CPU_MUX_2:STATES:MUX_O":"पीसी से आउटपुट","EP:CPU_MUX_2:SIGNALS:M2":"आउटपुट को भेजने के लिए इनपुट मान चुनें","EP:CPU_MUX_7:STATES:MUX_0":"MUX 7 का इनपुट 0, आंतरिक बस से","EP:CPU_MUX_7:STATES:MUX_1":"फ्लैग चयनकर्ता से एमयूएक्स 7 का इनपुट 1","EP:CPU_MUX_7:STATES:MUX_O":"SR रजिस्टर करने के लिए आउटपुट","EP:CPU_MUX_7:SIGNALS:M7":"आउटपुट को भेजने के लिए इनपुट मान का चयन करें","EP:CU_MUX_A:STATES:MUX_0":"MUX A का इनपुट 0, microADDR + 1 से","EP:CU_MUX_A:STATES:MUX_1":"MUX A का इनपुट 1, co2maddr से","EP:CU_MUX_A:STATES:MUX_2":"MUX A का इनपुट 2, microIR/MADDR से","EP:CU_MUX_A:STATES:MUX_3":"MUX A का इनपुट 3, 0 से","EP:CU_MUX_A:STATES:MUX_O":"MUX A से माइक्रोएडीडीआर में आउटपुट","EP:CU_MUX_A:SIGNALS:A0":"mIR/A0","EP:CU_MUX_A:SIGNALS:A1":"कंट्रोल यूनिट MUX B का आउटपुट","EP:CU_MUX_B:STATES:MUX_0":"MUX B का इनपुट 0, MUX C से","EP:CU_MUX_B:STATES:MUX_1":"MUX B का इनपुट 1, NOT (MUX C) से","EP:CU_MUX_B:STATES:MUX_O":"MUX A/A1 के लिए आउटपुट","EP:CU_MUX_B:SIGNALS:MB":"आउटपुट को भेजने के लिए इनपुट मान का चयन करें","EP:CU_MUX_C:STATES:MUX_0":"MUX C का इनपुट 0, 0 से","EP:CU_MUX_C:STATES:MUX_1":"INT से MUX C का इनपुट 1,","EP:CU_MUX_C:STATES:MUX_2":"IORdy से MUX C का इनपुट 2","EP:CU_MUX_C:STATES:MUX_3":"MRdy से MUX C का इनपुट 3","EP:CU_MUX_C:STATES:MUX_4":"SR/U से MUX C का इनपुट 4","EP:CU_MUX_C:STATES:MUX_5":"MR/I से MUX C का इनपुट 5","EP:CU_MUX_C:STATES:MUX_6":"SR/Z से MUX C का इनपुट 6","EP:CU_MUX_C:STATES:MUX_7":"SR/N से MUX C का इनपुट 7","EP:CU_MUX_C:STATES:MUX_8":"SR/V से MUX C का इनपुट 8","EP:CU_MUX_C:STATES:MUX_9":"SR/C से MUX C का इनपुट 9","EP:CU_MUX_C:STATES:MUX_10":"InEx से MUX C का इनपुट 10","EP:CU_MUX_C:STATES:MUX_O":"MUX B के लिए आउटपुट","EP:CU_MUX_C:SIGNALS:CTL":"कंट्रोल यूनिट MUX C का आउटपुट","EP:CU_MUX_RA:STATES:MUX_0":"IR से MUX MR का इनपुट 0 [SelA+0...SelA+4]","EP:CU_MUX_RA:STATES:MUX_1":"MUX MR का इनपुट 1, SelA से","EP:CU_MUX_RA:STATES:MUX_O":"RA को आउटपुट","EP:CU_MUX_RA:SIGNALS:CTL":"आउटपुट को भेजने के लिए इनपुट मान का चयन करें","EP:CU_MUX_RB:STATES:MUX_0":"IR से MUX MR का इनपुट 0 [SelB+0...SelB+4]","EP:CU_MUX_RB:STATES:MUX_1":"MUX MR का इनपुट 1, SelB से","EP:CU_MUX_RB:STATES:MUX_O":"RB को आउटपुट","EP:CU_MUX_RB:SIGNALS:MR":"आउटपुट को भेजने के लिए इनपुट मान का चयन करें","EP:CU_MUX_RC:STATES:MUX_0":"IR से MUX MR का इनपुट 0 [SelC+0...SelC+4]","EP:CU_MUX_RC:STATES:MUX_1":"MUX MR का इनपुट 1, SelC से","EP:CU_MUX_RC:STATES:MUX_O":"RC को आउटपुट","EP:CU_MUX_RC:SIGNALS:MR":"आउटपुट को भेजने के लिए इनपुट मान का चयन करें","EP:CU_MUX_MC:STATES:MUX_0":"IR3 से MUX MC का इनपुट 0...IR0","EP:CU_MUX_MC:STATES:MUX_1":"MUX MC का इनपुट 1, SelCop से","EP:CU_MUX_MC:STATES:MUX_O":"COP को आउटपुट","EP:CU_MUX_MC:SIGNALS:CTL":"आउटपुट को भेजने के लिए इनपुट मान का चयन करें","EP:CPU_MUX_H:STATES:MUX_0":"हार्डवेयर प्रदर्शन काउंटर के MUX H का इनपुट 0 ","EP:CPU_MUX_H:STATES:MUX_1":"हार्डवेयर प्रदर्शन काउंटर के MUX H का इनपुट 1 ","EP:CPU_MUX_H:STATES:MUX_2":"हार्डवेयर प्रदर्शन काउंटर के MUX H का इनपुट 2 ","EP:CPU_MUX_H:STATES:MUX_3":"हार्डवेयर प्रदर्शन काउंटर के MUX H का इनपुट 2 ","EP:CPU_MUX_H:STATES:MUX_O":"T12 के लिए आउटपुट","EP:CPU_MUX_H:SIGNALS:MH":"आउटपुट को भेजने के लिए इनपुट मान का चयन करें","EP:MAR:STATES:IN":"इनपुट इज द इंटरनल बस","EP:MAR:STATES:OUT":"आउटपुट टा ट्रिस्टेट को जाता है","EP:MAR:SIGNALS:C0":"पुष्टि करें कि इनपुट स्टोर हो गया है","EP:MBR:STATES:IN":"इनपुट M1 आउटपुट है","EP:MBR:STATES:OUT":"आउटपुट T1 ट्रिस्टेट में जाता है","EP:MBR:SIGNALS:C1":"पुष्टि करें कि इनपुट संग्रहीत है","EP:PC:STATES:IN":"इनपुट M2 आउटपुट है","EP:PC:STATES:OUT":"आउटपुट T2 ट्रिस्टेट में जाता है","EP:PC:SIGNALS:CTL":"पुष्टि करें कि इनपुट संग्रहीत है","EP:IR:STATES:IN":"इनपुट इज द इंटरनल बस","EP:IR:STATES:OUT":"आउटपुट IR चयनकर्ता और CU को जाता है","EP:IR:SIGNALS:C3":"पुष्टि करें कि इनपुट संग्रहीत है","EP:RT1:STATES:IN":"इनपुट आंतरिक बस है","EP:RT1:STATES:OUT":"आउटपुट T4 ट्रिस्टेट में जाता है","EP:RT1:SIGNALS:CTL":"पुष्टि करें कि इनपुट संग्रहीत है","EP:RT2:STATES:IN":"इनपुट इंटरनल बस है","EP:RT2:STATES:OUT":"आउटपुट T5 ट्रिस्टेट में जाता है","EP:RT2:SIGNALS:CTL":"पुष्टि करें कि इनपुट संग्रहीत है","EP:RT3:STATES:IN":"इनपुट ALU का आउटपुट है","EP:RT3:STATES:OUT":"आउटपुट T7 ट्रिस्टेट में जाता है","EP:RT3:SIGNALS:CTL":"पुष्टि करें कि इनपुट संग्रहीत है","EP:SR:STATES:IN":"इनपुट M7 का आउटपुट है","EP:SR:STATES:OUT":"आउटपुट T8 इनपुट और CU में जाता है","EP:SR:SIGNALS:CTL":"पुष्टि करें कि इनपुट स्टोर हो गया है","EP:REGISTER_FILE:STATES:A":"RF से T9 और MA/0 का आउटपुट","EP:REGISTER_FILE:STATES:B":"RF से T10 और MB/0 का आउटपुट","EP:REGISTER_FILE:STATES:C":"आंतरिक बस से RF में इनपुट","EP:REGISTER_FILE:SIGNALS:RA":"उस रजिस्टर का चयन करें जिसका मान A को भेजा गया है","EP:REGISTER_FILE:SIGNALS:RB":"उस रजिस्टर का चयन करें जिसका मान B को भेजा गया है","EP:REGISTER_FILE:SIGNALS:RC":"उस रजिस्टर का चयन करें जहां C का मान संग्रहीत है","EP:REGISTER_FILE:SIGNALS:LC":"पुष्टि करें कि RC अपडेट होने जा रहा है","EP:CPU_ALU:STATES:A":"MUX A मल्टीप्लेक्स से आउटपुट","EP:CPU_ALU:STATES:B":"MUX B मल्टीप्लेक्स से आउटपुट","EP:CPU_ALU:STATES:ALU":"परिणाम T6 और RT3 के इनपुट पर जाता है","EP:CPU_ALU:STATES:FLAGS":"अपडेटेड C,V,N,Z फ़्लैग्स","EP:CPU_ALU:SIGNALS:COP":"ऑपरेशन कोड (+, -, *, ...)","EP:SELECT_SR:STATES:MUX_1":"SELECT-SR का इनपुट 1, U फ्लैग","EP:SELECT_SR:STATES:MUX_2":"SELECT-SR का इनपुट 2, मैं फ़्लैग करता हूँ","EP:SELECT_SR:STATES:MUX_3":"SELECT-SR का इनपुट 3, C V N Z को फ़्लैग करता है","EP:SELECT_SR:STATES:MUX_O":"MUX 7/1 के लिए आउटपुट","EP:SELECT_SR:SIGNALS:SELP":"आउटपुट को भेजने के लिए इनपुट मान का चयन करें","EP:SELECT_IR:STATES:MUX_I":"IR से SELECT-IR का इनपुट","EP:SELECT_IR:STATES:MUX_O":"T3 के माध्यम से आंतरिक बस में आउटपुट","EP:SELECT_IR:SIGNALS:SE":"साइन एक्सटेंशन","EP:SELECT_IR:SIGNALS:SIZE":"आकार","EP:SELECT_IR:SIGNALS:OFFSET":"ऑफ़सेट","EP:BYTE_SELECTOR:STATES:FROM_MBR":"MBR रजिस्टर से इनपुट","EP:BYTE_SELECTOR:STATES:FROM_DATA":"डेटा बस से इनपुट","EP:BYTE_SELECTOR:STATES:BE":"आउटपुट टू बीई","EP:BYTE_SELECTOR:STATES:TO_MBR":"आउटपुट टू M1/1","EP:BYTE_SELECTOR:STATES:TO_TD":"आउटपुट टू टीडी/इनपुट","EP:BYTE_SELECTOR:SIGNALS:W":"मुख्य मेमोरी में लिखें","EP:BYTE_SELECTOR:SIGNALS:SE":"साइन एक्सटेंशन","EP:BYTE_SELECTOR:SIGNALS:A1A0":"A1A0","EP:BYTE_SELECTOR:SIGNALS:BW":"पैक करने के लिए बाइट्स की संख्या","EP:MEMORY:STATES:ADDR":"एड्रेस बस","EP:MEMORY:STATES:DATA":"डेटा बस","EP:MEMORY:STATES:MRDY":"मेमोरी तैयार","EP:MEMORY:SIGNALS:BE":"बीडब्ल्यू + ए 1 ए 0","EP:MEMORY:SIGNALS:R":"पढ़ें","EP:MEMORY:SIGNALS:W":"लिखें","EP:IO:STATES:ADDR":"एड्रेस बस","EP:IO:STATES:DATA":"डेटा बस","EP:IO:SIGNALS:IOR":"IO डिवाइस से पढ़ें","EP:IO:SIGNALS:IOW":"IO डिवाइस में लिखें","EP:KEYBOARD:STATES:ADDR":"पता बस","EP:KEYBOARD:STATES:DATA":"डेटा बस","EP:KEYBOARD:SIGNALS:IOR":"कीबोर्ड से पढ़ें","EP:DISPLAY:STATES:ADDR":"एड्रेस बस","EP:DISPLAY:STATES:DATA":"डेटा बस","EP:DISPLAY:SIGNALS:IOR":"डिस्प्ले से पढ़ें (अक्षम)","EP:DISPLAY:SIGNALS:IOW":"डिस्प्ले में लिखें","EP:L3D:STATES:ADDR":"एड्रेस बस","EP:L3D:STATES:DATA":"डेटा बस","EP:L3D:SIGNALS:IOR":"L3D से पढ़ें","EP:L3D:SIGNALS:IOW":"L3D में लिखें","EP:LEDM:STATES:ADDR":"एड्रेस बस","EP:LEDM:STATES:DATA":"डेटा बस","EP:LEDM:SIGNALS:IOR":"LEDM से पढ़ें","EP:LEDM:SIGNALS:IOW":"LEDM में लिखें","POC:CPU_T1:STATES:IN":"इनपुट एमबीआर रजिस्टर का मान है","POC:CPU_T1:STATES:OUT":"आउटपुट आंतरिक बस में जाता है","POC:CPU_T1:SIGNALS:CTL":"पुष्टि करें कि आउटपुट इनपुट से जुड़ा है","POC:CPU_T2:STATES:IN":"इनपुट पीसी रजिस्टर आउटपुट है","POC:CPU_T2:STATES:OUT":"आउटपुट आंतरिक बस में जाता है","POC:CPU_T2:SIGNALS:CTL":"पुष्टि करें कि आउटपुट इनपुट से जुड़ा है","POC:CPU_T3:STATES:IN":"इनपुट IR रजिस्टर आउटपुट चयनकर्ता है","POC:CPU_T3:STATES:OUT":"आउटपुट आंतरिक बस में जाता है","POC:CPU_T3:SIGNALS:CTL":"पुष्टि करें कि आउटपुट इनपुट से जुड़ा है","POC:CPU_T6:STATES:IN":"इनपुट ALU आउटपुट है","POC:CPU_T6:STATES:OUT":"आउटपुट आंतरिक बस में जाता है","POC:CPU_T6:SIGNALS:CTL":"पुष्टि करें कि आउटपुट इनपुट से जुड़ा है","POC:CPU_T8:STATES:IN":"इनपुट SR रजिस्टर आउटपुट है","POC:CPU_T8:STATES:OUT":"आउटपुट आंतरिक बस में जाता है","POC:CPU_T8:SIGNALS:CTL":"पुष्टि करें कि आउटपुट इनपुट से जुड़ा है","POC:CPU_T9:STATES:IN":"इनपुट रजिस्टर फ़ाइल के पोर्ट A पर आउटपुट है","POC:CPU_T9:STATES:OUT":"आउटपुट आंतरिक बस में जाता है","POC:CPU_T9:SIGNALS:CTL":"पुष्टि करें कि आउटपुट इनपुट से जुड़ा है","POC:CPU_T10:STATES:IN":"इनपुट रजिस्टर फ़ाइल के पोर्ट B पर आउटपुट है","POC:CPU_T10:STATES:OUT":"आउटपुट आंतरिक बस में जाता है","POC:CPU_T10:SIGNALS:CTL":"पुष्टि करें कि आउटपुट इनपुट से जुड़ा है","POC:CPU_T11:STATES:IN":"इनपुट MIR/ExCode आउटपुट है","POC:CPU_T11:STATES:OUT":"आउटपुट आंतरिक बस में जाता है","POC:CPU_T11:SIGNALS:CTL":"पुष्टि करें कि आउटपुट इनपुट से जुड़ा है","POC:CPU_TA:STATES:IN":"इनपुट MAR रजिस्टर आउटपुट है","POC:CPU_TA:STATES:OUT":"आउटपुट एड्रेस बस में जाता है","POC:CPU_TA:SIGNALS:CTL":"पुष्टि करें कि आउटपुट इनपुट से जुड़ा है","POC:CPU_TB:STATES:IN":"इनपुट बाइट चयनकर्ता आउटपुट है","POC:CPU_TB:STATES:OUT":"आउटपुट डेटा बस में जाता है","POC:CPU_TB:SIGNALS:CTL":"पुष्टि करें कि आउटपुट इनपुट से जुड़ा है","POC:CPU_MUX_A:STATES:MUX_0":"एमयूएक्स ए का इनपुट 0, आरएफ/ए से","POC:CPU_MUX_A:STATES:MUX_1":"MUX A का इनपुट 1, आंतरिक बस से","POC:CPU_MUX_A:STATES:MUX_O":"एमयूएक्स ए से एएलयू/0 के लिए आउटपुट","POC:CPU_MUX_A:SIGNALS:MA":"आउटपुट को भेजने के लिए इनपुट मान का चयन करें","POC:CPU_MUX_B:STATES:MUX_0":"एमयूएक्स बी का इनपुट 0, आरएफ/बी से","POC:CPU_MUX_B:STATES:MUX_1":"PC से MUX B का इनपुट 1,","POC:CPU_MUX_B:STATES:MUX_O":"आउटपुट टू ALU/1, MUX B से","POC:CPU_MUX_B:SIGNALS:MB":"आउटपुट को भेजने के लिए इनपुट मान का चयन करें","POC:CPU_MUX_1:STATES:MUX_0":"MUX 1 का इनपुट 0, आंतरिक बस से","POC:CPU_MUX_1:STATES:MUX_1":"डेटा बस से MUX 1 का इनपुट 1, डेटा बस से","POC:CPU_MUX_1:STATES:MUX_O":"आउटपुट से MBR, MUX 1 से","POC:CPU_MUX_1:SIGNALS:M1":"आउटपुट को भेजने के लिए इनपुट मान का चयन करें","POC:CPU_MUX_7:STATES:MUX_0":"MUX 7 का इनपुट 0, आंतरिक बस से","POC:CPU_MUX_7:STATES:MUX_1":"फ्लैग चयनकर्ता से MUX 7 का इनपुट 1","POC:CPU_MUX_7:STATES:MUX_O":"एमयूएक्स 7 से एसआर को आउटपुट","POC:CPU_MUX_7:SIGNALS:M7":"आउटपुट को भेजने के लिए इनपुट मान का चयन करें","POC:CU_MUX_A:STATES:MUX_0":"MUX A का इनपुट 0, mADDR + 1 से","POC:CU_MUX_A:STATES:MUX_1":"MUX A का इनपुट 1, co2maddr से","POC:CU_MUX_A:STATES:MUX_2":"MIR/MADDR से MUX A का इनपुट 2","POC:CU_MUX_A:STATES:MUX_3":"MUX A का इनपुट 3, 0 से","POC:CU_MUX_A:STATES:MUX_O":"आउटपुट से mADDR, MUX A से","POC:CU_MUX_A:SIGNALS:A0":"mIR/A0","POC:CU_MUX_A:SIGNALS:A1":"कंट्रोल यूनिट MUX B का आउटपुट","POC:CU_MUX_B:STATES:MUX_0":"MUX B का इनपुट 0, MUX C से","POC:CU_MUX_B:STATES:MUX_1":"MUX B का इनपुट 1, NOT (MUX C) से","POC:CU_MUX_B:STATES:MUX_O":"MUX A/A1 से MUX B से आउटपुट","POC:CU_MUX_B:SIGNALS:MB":"आउटपुट को भेजने के लिए इनपुट मान का चयन करें","POC:CU_MUX_C:STATES:MUX_0":"MUX C का इनपुट 0, 0 से","POC:CU_MUX_C:STATES:MUX_1":"INT से MUX C का इनपुट 1,","POC:CU_MUX_C:STATES:MUX_2":"IORdy से MUX C का इनपुट 2","POC:CU_MUX_C:STATES:MUX_3":"MRdy से MUX C का इनपुट 3","POC:CU_MUX_C:STATES:MUX_4":"SR/U से MUX C का इनपुट 4","POC:CU_MUX_C:STATES:MUX_5":"MR/I से MUX C का इनपुट 5","POC:CU_MUX_C:STATES:MUX_6":"SR/Z से MUX C का इनपुट 6","POC:CU_MUX_C:STATES:MUX_7":"MUX C का इनपुट 7, SR/N से","POC:CU_MUX_C:STATES:MUX_8":"SR/V से MUX C का इनपुट 8","POC:CU_MUX_C:STATES:MUX_9":"SR/C से MUX C का इनपुट 9","POC:CU_MUX_C:STATES:MUX_10":"InEx से MUX C का इनपुट 10","POC:CU_MUX_C:STATES:MUX_O":"एमयूएक्स बी के लिए आउटपुट","POC:CU_MUX_C:SIGNALS:CTL":"कंट्रोल यूनिट MUX C का आउटपुट","POC:CU_MUX_RA:STATES:MUX_0":"IR से MUX MR का इनपुट 0 [SelA+0...SelA+4]","POC:CU_MUX_RA:STATES:MUX_1":"MUX MR का इनपुट 1, SelA से","POC:CU_MUX_RA:STATES:MUX_O":"RA को आउटपुट","POC:CU_MUX_RA:SIGNALS:CTL":"आउटपुट को भेजने के लिए इनपुट मान का चयन करें","POC:CU_MUX_RB:STATES:MUX_0":"IR से MUX MR का इनपुट 0 [SelB+0...SelB+4]","POC:CU_MUX_RB:STATES:MUX_1":"इनपुट MUX MR का 1, SelB से","POC:CU_MUX_RB:STATES:MUX_O":"आरबी को आउटपुट","POC:CU_MUX_RB:SIGNALS:MR":"आउटपुट को भेजने के लिए इनपुट मान का चयन करें","POC:CU_MUX_RC:STATES:MUX_0":"IR से MUX MR का इनपुट 0 [SelC+0...SelC+4]","POC:CU_MUX_RC:STATES:MUX_1":"MUX MR का इनपुट 1, SelC से","POC:CU_MUX_RC:STATES:MUX_O":"RC को आउटपुट","POC:CU_MUX_RC:SIGNALS:MR":"आउटपुट को भेजने के लिए इनपुट मान का चयन करें","POC:CU_MUX_MC:STATES:MUX_0":"IR3 से MUX MC का इनपुट 0...IR0","POC:CU_MUX_MC:STATES:MUX_1":"MUX MC का इनपुट 1, SelCop से","POC:CU_MUX_MC:STATES:MUX_O":"COP को आउटपुट","POC:CU_MUX_MC:SIGNALS:CTL":"आउटपुट को भेजने के लिए इनपुट मान का चयन करें","POC:MAR:STATES:IN":"इनपुट इंटरनल बस है","POC:MAR:STATES:OUT":"आउटपुट टा ट्रिस्टेट को जाता है","POC:MAR:SIGNALS:C0":"पुष्टि करें कि इनपुट संग्रहीत है","POC:MBR:STATES:IN":"इनपुट M1 आउटपुट है","POC:MBR:STATES:OUT":"आउटपुट T1 ट्रिस्टेट में जाता है","POC:MBR:SIGNALS:C1":"पुष्टि करें कि इनपुट संग्रहीत है","POC:PC:STATES:IN":"इनपुट आंतरिक बस है","POC:PC:STATES:OUT":"आउटपुट T2 ट्रिस्टेट में जाता है","POC:PC:SIGNALS:CTL":"पुष्टि करें कि इनपुट संग्रहीत है","POC:IR:STATES:IN":"इनपुट आंतरिक बस है","POC:IR:STATES:OUT":"आउटपुट IR चयनकर्ता और CU को जाता है","POC:IR:SIGNALS:C3":"पुष्टि करें कि इनपुट संग्रहीत है","POC:RT1:STATES:IN":"इनपुट आंतरिक बस है","POC:RT1:STATES:OUT":"आउटपुट चयन-आरटी 1 पर जाता है","POC:RT1:SIGNALS:CTL":"पुष्टि करें कि इनपुट संग्रहीत है","POC:SR:STATES:IN":"इनपुट M7 का आउटपुट है","POC:SR:STATES:OUT":"आउटपुट T8 इनपुट और CU में जाता है","POC:SR:SIGNALS:CTL":"पुष्टि करें कि इनपुट संग्रहीत है","POC:REGISTER_FILE:STATES:A":"RF से T9 और MA/0 का आउटपुट","POC:REGISTER_FILE:STATES:B":"RF से T10 और MB/0 का आउटपुट","POC:REGISTER_FILE:STATES:C":"आंतरिक बस से RF में इनपुट","POC:REGISTER_FILE:SIGNALS:RA":"उस रजिस्टर का चयन करें जिसका मान A को भेजा गया है","POC:REGISTER_FILE:SIGNALS:RB":"उस रजिस्टर का चयन करें जिसका मान B को भेजा गया है","POC:REGISTER_FILE:SIGNALS:RC":"उस रजिस्टर का चयन करें जहां C का मान संग्रहीत है","POC:REGISTER_FILE:SIGNALS:LC":"पुष्टि करें कि RC अपडेट होने जा रहा है","POC:CPU_ALU:STATES:A":"एमयूएक्स ए मल्टीप्लेक्स से आउटपुट","POC:CPU_ALU:STATES:B":"एमयूएक्स बी मल्टीप्लेक्स से आउटपुट","POC:CPU_ALU:STATES:ALU":"परिणाम T6 और RT3 के इनपुट पर जाता है","POC:CPU_ALU:STATES:FLAGS":"अपडेटेड सी, वी, एन, जेड फ्लैग","POC:CPU_ALU:SIGNALS:COP":"ऑपरेशन कोड (+, -, *, ...)","POC:SELECT_RT1:STATES:MUX_I":"RT1 से SELECT-RT1 का इनपुट","POC:SELECT_RT1:STATES:MUX_O":"T3 के माध्यम से आंतरिक बस में आउटपुट","POC:SELECT_RT1:SIGNALS:SE":"साइन एक्सटेंशन","POC:SELECT_RT1:SIGNALS:SIZE":"आकार","POC:SELECT_RT1:SIGNALS:OFFSET":"ऑफ़सेट","POC:MEMORY:STATES:ADDR":"एड्रेस बस","POC:MEMORY:STATES:DATA":"डेटा बस","POC:MEMORY:STATES:MRDY":"मेमोरी तैयार","POC:MEMORY:SIGNALS:BW":"बाइट्स चौड़ाई","POC:MEMORY:SIGNALS:R":"पढ़ें","POC:MEMORY:SIGNALS:W":"लिखें","POC:IO:STATES:ADDR":"पता बस","POC:IO:STATES:DATA":"डेटा बस","POC:IO:SIGNALS:IOR":"IO डिवाइस से पढ़ें","POC:IO:SIGNALS:IOW":"IO डिवाइस में लिखें","POC:KEYBOARD:STATES:ADDR":"पता बस","POC:KEYBOARD:STATES:DATA":"डेटा बस","POC:KEYBOARD:SIGNALS:IOR":"कीबोर्ड से पढ़ें","POC:DISPLAY:STATES:ADDR":"एड्रेस बस","POC:DISPLAY:STATES:DATA":"डेटा बस","POC:DISPLAY:SIGNALS:IOR":"डिस्प्ले से पढ़ें (अक्षम)","POC:DISPLAY:SIGNALS:IOW":"डिस्प्ले में लिखें","POC:L3D:STATES:ADDR":"एड्रेस बस","POC:L3D:STATES:DATA":"डेटा बस","POC:L3D:SIGNALS:IOR":"L3D से पढ़ें","POC:L3D:SIGNALS:IOW":"L3D में लिखें",_last_:"_last_"};i18n.eltos.dialogs.hi={"Show/Hide ActionBar":"दिखाएँ / छिपाएँ ActionBar","Show/Hide Slider":"स्लाइडर दिखाएँ / छिपाएँ","WepSIM User Interface skin":"WepSIM यूजर इंटरफेस स्किन","Initial intro":"प्रारंभिक परिचय","About WepSIM":"WepSIM के बारे में",Title:"शीर्षक",Message:"संदेश",Duration:"अवधि","Confirm remove record...":"क्या आप वास्तविक रिकॉर्ड निकालना चाहते हैं?","Close or Reset...":"कृपया इसे रखने के लिए Close पर क्लिक करें, या इसे हटाने के लिए रीसेट बटन पर क्लिक करें।","Sure Control Memory...":"क्या आप चाहते हैं कि मैं संपादक नियंत्रण सामग्री के बजाय वर्तमान नियंत्रण मेमोरी सामग्री को बचाऊं।","Show/Hide labels":"लेबल दिखाएं / छिपाएँ","Show/Hide content":"सामग्री दिखाएं / छिपाएँ","Show/Hide assembly":"दिखाएँ / छिपाएँ विधानसभा","Show/Hide pseudo-instructions":"छद्म निर्देश दिखाएं / छिपाएं",Close:"बंद करे",details:"details",idiom:"idiom",_last_:"_last_"};i18n.eltos.gui.zh_cn={"Loading WepSIM...":"正在加载WepSIM ...",About:"关于",Configuration:"配置",MicroCode:"微代码",Assembly:"汇编",Simulator:"模拟器",Examples:"例子",Load:"加载",Save:"保存","Load/Save":"加载/保存",Restore:"恢复",Help:"帮助",Notifications:"通知",RecordBar:"记录栏",Input:"输入",Output:"输出",Reload:"重载",Checkpoint:"存档","Help Index":"帮助索引",Processor:"处理器","Assembly Debugger":"汇编调试器",Reset:"重启",microInstruction:"μ指令",Instruction:"指令",Run:"运行","Hardware Summary":"硬件摘要",processor:"处理器",details:"细节",microcode:"微代码",Signals:"信号",Behaviors:"行为",States:"状态","Control States":"控制状态",Dependencies:"依赖",Close:"关",Description:"描述",Show:"显示","Show Main Memory":"显示主内存",compile:"编译",Compile:"编译","Please write the file name":"文件名另存为","Load from this File":"从本地文件加载",labels:"标签",addr:"地址",ess:"ESS",content:"内容",assembly:"汇编",instructions:"说明","simulator intro 1":"您可以选择要使用的硬件。默认的是EP(元素处理器)硬件。 您可以使用模式选择器 更改使用的硬件。","simulator intro 2":"然后你需要加载微代码(定义指令集)和汇编代码。”你可以使用示例 ,从文件加载它 ,或者您可以编辑新的微码 和新的汇编代码 。","simulator intro 3":"最后,在模拟器中,您可以执行微码加上之前加载的程序集。 您可以在微指令级别或汇编指令级别执行它。","Prev.":"上一个",Next:"下一个",End:"结束","Disable tutorial mode":"禁用教程模式",Comment:"评论",Pause:"暂停",Play:"播放",Stop:"停止",Record:"录制",Registers:"寄存器","Control Memory":"控制存储器",Stats:"统计",Memory:"内存","Keyboard+Display":"键盘+显示","I/O Stats":"I/O 统计","I/O Configuration":"I/O 配置",Recent:"最近",Refresh:"刷新",Welcome:"欢迎","Microcode & Assembly":"WepSIM硬件","Pick firm/soft":"选择 固件/软件",Information:"信息",Native:"本机","MIPS32-like":"类 MIPS32",RISCV32:"RISCV32","Z80-like":"类 Z80",Actions:"动作",Utilities:"组件","Information from":"来自的信息","Pick firm/soft from":"选择固件/软件","Welcome tutorial":"欢迎教程","Assembly only":"仅汇编","Micro & Assembly":"微代码与组装",idiom:"语言","quick config":"快速配置","Graph: quick interactive mode":"图形:快速交互模式",_last_:"_last_"};i18n.eltos.tutorial_welcome.zh_cn={title_0:"欢迎来到WepSIM模拟器!",message_0:"
这个简短的教程将向您展示如何: