summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Bridle <ben@derelict.engineering>2025-09-13 06:28:59 +1200
committerBen Bridle <ben@derelict.engineering>2025-09-13 07:50:11 +1200
commitb452cc1a0afdfe863b5dd92b8bd9d05fd9e347a8 (patch)
tree47865f566107dfd983b07e0dff25e02144c5c743
parent60bfb4f0f675ab4cb9b07d6fcd772d46d6b7222a (diff)
downloadbedrock-js-b452cc1a0afdfe863b5dd92b8bd9d05fd9e347a8.zip
Zero the cycle counter in WASM core on reset
This was incrementing higher and higher each time the program was re-run after halting.
-rw-r--r--bedrock-core.wat1
-rw-r--r--bedrock.js76
2 files changed, 39 insertions, 38 deletions
diff --git a/bedrock-core.wat b/bedrock-core.wat
index 4aa8173..9ce04c1 100644
--- a/bedrock-core.wat
+++ b/bedrock-core.wat
@@ -35,6 +35,7 @@
;; Re-initialise pointers.
(func (export "reset")
+ (global.set $cc (i64.const 0))
(global.set $ip (global.get $ip-base))
(global.set $wp (global.get $wp-base))
(global.set $rp (global.get $rp-base)) )
diff --git a/bedrock.js b/bedrock.js
index 551a57c..b5c7e19 100644
--- a/bedrock.js
+++ b/bedrock.js
@@ -29,47 +29,47 @@ let wasmBytecode = Uint8Array.from(atob(
'AAUDAQACBmMSfgFCAAt/AUEAC38BQYCCBAt/AUGAhAQLfwBBAAt/AEGAggQLfwBBgIQEC38AQQALfwBBAQt/AEECC38AQQMLfwBBBAt/AEEFC38AQQYLfwBBBwt/AEEIC38AQQkLfwBBCgsHkQIkBm1l' +
'bW9yeQIABXJlc2V0AAICY2MAAwJpcAAEAndwAAUCcnAABgV3cHNoMQAHBXdwc2gyAAgFcnBzaDEACQVycHNoMgAKBXdwc2hiAAsFcnBzaGIADAV3cG9wMQANBXdwb3AyAA4FcnBvcDEADwVycG9wMgAQ' +
'BW1wb3AxABEFbXBvcDIAEgV3Z2V0MQATBXdnZXQyABQFcmdldDEAFQVyZ2V0MgAWBW1nZXQxABcFbWdldDIAGAVkZ2V0MgAZBW1zZXQxABoFbXNldDIAGwVkc2V0MgAcBWlwbW92AB0Fd3Btb3YAHgVy' +
-'cG1vdgAfBHJvbDEAIARyb3IxACEEcm9sMgAiBHJvcjIAIwRldmFsACQK6CMjDgAjBCQBIwUkAiMGJAMLBAAjAAsEACMBCwcAIwUjAmsLBwAjBiMDawsQACMCQQFrJAIjAiAAOgAACxAAIwJBAmskAiMC' +
-'IAA7AQALEAAjA0EBayQDIwMgADoAAAsQACMDQQJrJAMjAyAAOwEACwwAQf8BQQAgABsQBwsMAEH/AUEAIAAbEAkLDgAjAi0AACMCQQFqJAILDgAjAi8BACMCQQJqJAILDgAjAy0AACMDQQFqJAMLDgAj' +
-'Ay8BACMDQQJqJAMLDgAjAS0AACMBQQFqJAELGgAjAS0AAEEIdCMBQQFqLQAAciMBQQJqJAELBwAjAi0AAAsHACMCLwEACwcAIwMtAAALBwAjAy8BAAsHACAALQAACxMAIAAtAABBCHQgAEEBai0AAHIL' +
-'EQAgABAAQQh0IABBAWoQAHILCQAgACABOgAACxoAIAAgAUEIdjoAACAAQQFqIAFB/wFxOgAACxkAIAAgAUEIdhABIABBAWogAUH/AXEQAXILCQAjASAAaiQBCwkAIwIgAGskAgsJACMDIABrJAMLFwAg' +
-'AUEHcSEBIAAgAXQgAEEIIAFrdnILFwAgAUEHcSEBIABBCCABa3QgACABdnILFwAgAUEPcSEBIAAgAXQgAEEQIAFrdnILFwAgAUEPcSEBIABBECABa3QgACABdnIL7R8CAX4BfyMAIACtfCEBA0ACQCAB' +
-'IwBRBEAMAQsjAEIBfCQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC' +
+'cG1vdgAfBHJvbDEAIARyb3IxACEEcm9sMgAiBHJvcjIAIwRldmFsACQK7CMjEgBCACQAIwQkASMFJAIjBiQDCwQAIwALBAAjAQsHACMFIwJrCwcAIwYjA2sLEAAjAkEBayQCIwIgADoAAAsQACMCQQJr' +
+'JAIjAiAAOwEACxAAIwNBAWskAyMDIAA6AAALEAAjA0ECayQDIwMgADsBAAsMAEH/AUEAIAAbEAcLDABB/wFBACAAGxAJCw4AIwItAAAjAkEBaiQCCw4AIwIvAQAjAkECaiQCCw4AIwMtAAAjA0EBaiQD' +
+'Cw4AIwMvAQAjA0ECaiQDCw4AIwEtAAAjAUEBaiQBCxoAIwEtAABBCHQjAUEBai0AAHIjAUECaiQBCwcAIwItAAALBwAjAi8BAAsHACMDLQAACwcAIwMvAQALBwAgAC0AAAsTACAALQAAQQh0IABBAWot' +
+'AAByCxEAIAAQAEEIdCAAQQFqEAByCwkAIAAgAToAAAsaACAAIAFBCHY6AAAgAEEBaiABQf8BcToAAAsZACAAIAFBCHYQASAAQQFqIAFB/wFxEAFyCwkAIwEgAGokAQsJACMCIABrJAILCQAjAyAAayQD' +
+'CxcAIAFBB3EhASAAIAF0IABBCCABa3ZyCxcAIAFBB3EhASAAQQggAWt0IAAgAXZyCxcAIAFBD3EhASAAIAF0IABBECABa3ZyCxcAIAFBD3EhASAAQRAgAWt0IAAgAXZyC+0fAgF+AX8jACAArXwhAQNA' +
+'AkAgASMAUQRADAELIwBCAXwkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC' +
'QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC' +
'QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC' +
'QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC' +
-'QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAQEQ7/AQABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQl' +
-'JicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsB' +
-'jAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AbUBtgG3AbgBuQG6AbsBvAG9Ab4BvwHAAcEBwgHDAcQB' +
-'xQHGAccByAHJAcoBywHMAc0BzgHPAdAB0QHSAdMB1AHVAdYB1wHYAdkB2gHbAdwB3QHeAd8B4AHhAeIB4wHkAeUB5gHnAegB6QHqAesB7AHtAe4B7wHwAfEB8gHzAfQB9QH2AfcB+AH5AfoB+wH8Af0B' +
-'/gH/AQsjCA8LEA8QBwz/AQtBfxAeDP4BCxAVEAcM/QELEBMQBwz8AQsQDRATIQIQByACEAcM+wELEA0QDSECEAcgAhAHDPoBCxANEA0QDSECEAcQByACEAcM+QELEA4kAQz4AQsQDiMBEAokAQz3AQsQ' +
-'DiECEA0EQCACJAELDPYBCxAOIQIQDQRAIwEQCiACJAELDPUBCxAOEBcQBwz0AQsQDhANEBoM8wELEA0QABAHDPIBCxANEA0QASECIAIEQCACDwsM8QELEA0QDWoQBwzwAQsQDSECEA0gAmsQBwzvAQsQ' +
-'DUEBahAHDO4BCxANQQFrEAcM7QELEA0QDUsQCwzsAQsQDRANSRALDOsBCxANEA1GEAsM6gELEA0iAhATIAIQB0cQCwzpAQsQDSECEA0gAnQQBwzoAQsQDSECEA0gAnYQBwznAQsQDSECEA0gAhAgEAcM' +
-'5gELEA0hAhANIAIQIRAHDOUBCxANEA1yEAcM5AELEA0QDXMQBwzjAQsQDRANcRAHDOIBCxANQf8BcxAHDOEBCwzgAQsQERAHDN8BC0EBEB0M3gELEBEiAhAHIAIQCQzdAQsQESICEAcgAhAHDNwBCxAR' +
-'EBMhAhAHIAIQBwzbAQsQERANIQIQByACEAcM2gELEBEQDRANIQIQBxAHIAIQBwzZAQsQEiQBDNgBCxASIwEQCiQBDNcBCxASIQIQDQRAIAIkAQsM1gELEBIhAhANBEAjARAKIAIkAQsM1QELEBIQFxAH' +
-'DNQBCxASEA0QGgzTAQsQERAAEAcM0gELEBEQDRABIQIgAgRAIAIPCwzRAQsQERANahAHDNABCxARIQIQDSACaxAHDM8BCxARQQFqEAcMzgELEBFBAWsQBwzNAQsQERANSxALDMwBCxAREA1JEAsMywEL' +
-'EBEQDUYQCwzKAQsQESICEBMgAhAHRxALDMkBCxARIQIQDSACdBAHDMgBCxARIQIQDSACdhAHDMcBCxARIQIQDSACECAQBwzGAQsQESECEA0gAhAhEAcMxQELEBEQDXIQBwzEAQsQERANcxAHDMMBCxAR' +
-'EA1xEAcMwgELEBFB/wFzEAcMwQELIwkPCxAQEAgMvwELQX4QHgy+AQsQFhAIDL0BCxAUEAgMvAELEA4QFCECEAggAhAIDLsBCxAOEA4hAhAIIAIQCAy6AQsQDhAOEA4hAhAIEAggAhAIDLkBCxAOJAEM' +
-'uAELEA4jARAKJAEMtwELEA4hAhAOBEAgAiQBCwy2AQsQDiECEA4EQCMBEAogAiQBCwy1AQsQDhAYEAgMtAELEA4QDhAbDLMBCxANEBkQCAyyAQsQDRAOEBwhAiACBEAgAg8LDLEBCxAOEA5qEAgMsAEL' +
-'EA4hAhAOIAJrEAgMrwELEA5BAWoQCAyuAQsQDkEBaxAIDK0BCxAOEA5LEAsMrAELEA4QDkkQCwyrAQsQDhAORhALDKoBCxAOIgIQFCACEAhHEAsMqQELEA0hAhAOIAJ0EAgMqAELEA0hAhAOIAJ2EAgM' +
-'pwELEA0hAhAOIAIQIhAIDKYBCxANIQIQDiACECMQCAylAQsQDhAOchAIDKQBCxAOEA5zEAgMowELEA4QDnEQCAyiAQsQDkH//wNzEAgMoQELIwoPCxASEAgMnwELQQIQHQyeAQsQEiICEAggAhAKDJ0B' +
-'CxASIgIQCCACEAgMnAELEBIQFCECEAggAhAIDJsBCxASEA4hAhAIIAIQCAyaAQsQEhAOEA4hAhAIEAggAhAIDJkBCxASJAEMmAELEBIjARAKJAEMlwELEBIhAhAOBEAgAiQBCwyWAQsQEiECEA4EQCMB' +
-'EAogAiQBCwyVAQsQEhAYEAgMlAELEBIQDhAbDJMBCxAREBkQCAySAQsQERAOEBwhAiACBEAgAg8LDJEBCxASEA5qEAgMkAELEBIhAhAOIAJrEAgMjwELEBJBAWoQCAyOAQsQEkEBaxAIDI0BCxASEA5L' +
-'EAsMjAELEBIQDkkQCwyLAQsQEhAORhALDIoBCxASIgIQFCACEAhHEAsMiQELEBEhAhAOIAJ0EAgMiAELEBEhAhAOIAJ2EAgMhwELEBEhAhAOIAIQIhAIDIYBCxARIQIQDiACECMQCAyFAQsQEhAOchAI' +
-'DIQBCxASEA5zEAgMgwELEBIQDnEQCAyCAQsQEkH//wNzEAgMgQELIwsPCxANEAkMfwtBfxAfDH4LEBMQCQx9CxAVEAkMfAsQDxAVIQIQCSACEAkMewsQDxAPIQIQCSACEAkMegsQDxAPEA8hAhAJEAkg' +
-'AhAJDHkLEBAkAQx4CxAQIwEQCCQBDHcLEBAhAhAPBEAgAiQBCwx2CxAQIQIQDwRAIwEQCCACJAELDHULEBAQFxAJDHQLEBAQDxAaDHMLEA8QABAJDHILEA8QDxABIQIgAgRAIAIPCwxxCxAPEA9qEAkM' +
-'cAsQDyECEA8gAmsQCQxvCxAPQQFqEAkMbgsQD0EBaxAJDG0LEA8QD0sQDAxsCxAPEA9JEAwMawsQDxAPRhAMDGoLEA8iAhAVIAIQCUcQDAxpCxAPIQIQDyACdBAJDGgLEA8hAhAPIAJ2EAkMZwsQDyEC' +
-'EA8gAhAgEAkMZgsQDyECEA8gAhAhEAkMZQsQDxAPchAJDGQLEA8QD3MQCQxjCxAPEA9xEAkMYgsQD0H/AXMQCQxhCyMMDwsQERAJDF8LQQEQHQxeCxARIgIQCSACEAcMXQsQESICEAkgAhAJDFwLEBEQ' +
-'FSECEAkgAhAJDFsLEBEQDyECEAkgAhAJDFoLEBEQDxAPIQIQCRAJIAIQCQxZCxASJAEMWAsQEiMBEAgkAQxXCxASIQIQDwRAIAIkAQsMVgsQEiECEA8EQCMBEAggAiQBCwxVCxASEBcQCQxUCxASEA8Q' +
-'GgxTCxAREAAQCQxSCxAREA8QASECIAIEQCACDwsMUQsQERAPahAJDFALEBEhAhAPIAJrEAkMTwsQEUEBahAJDE4LEBFBAWsQCQxNCxAREA9LEAwMTAsQERAPSRAMDEsLEBEQD0YQDAxKCxARIgIQFSAC' +
-'EAlHEAwMSQsQESECEA8gAnQQCQxICxARIQIQDyACdhAJDEcLEBEhAhAPIAIQIBAJDEYLEBEhAhAPIAIQIRAJDEULEBEQD3IQCQxECxAREA9zEAkMQwsQERAPcRAJDEILEBFB/wFzEAkMQQsjDQ8LEA4Q' +
-'Cgw/C0F+EB8MPgsQFBAKDD0LEBYQCgw8CxAQEBYhAhAKIAIQCgw7CxAQEBAhAhAKIAIQCgw6CxAQEBAQECECEAoQCiACEAoMOQsQECQBDDgLEBAjARAIJAEMNwsQECECEBAEQCACJAELDDYLEBAhAhAQ' +
-'BEAjARAIIAIkAQsMNQsQEBAYEAoMNAsQEBAQEBsMMwsQDxAZEAoMMgsQDxAQEBwhAiACBEAgAg8LDDELEBAQEGoQCgwwCxAQIQIQECACaxAKDC8LEBBBAWoQCgwuCxAQQQFrEAoMLQsQEBAQSxAMDCwL' +
-'EBAQEEkQDAwrCxAQEBBGEAwMKgsQECICEBYgAhAKRxAMDCkLEA8hAhAQIAJ0EAoMKAsQDyECEBAgAnYQCgwnCxAPIQIQECACECIQCgwmCxAPIQIQECACECMQCgwlCxAQEBByEAoMJAsQEBAQcxAKDCML' +
-'EBAQEHEQCgwiCxAQQf//A3MQCgwhCyMODwsQEhAKDB8LQQIQHQweCxASIgIQCiACEAgMHQsQEiICEAogAhAKDBwLEBIQFiECEAogAhAKDBsLEBIQECECEAogAhAKDBoLEBIQEBAQIQIQChAKIAIQCgwZ' +
-'CxASJAEMGAsQEiMBEAgkAQwXCxASIQIQEARAIAIkAQsMFgsQEiECEBAEQCMBEAggAiQBCwwVCxASEBgQCgwUCxASEBAQGwwTCxAREBkQCgwSCxAREBAQHCECIAIEQCACDwsMEQsQEhAQahAKDBALEBIh' +
-'AhAQIAJrEAoMDwsQEkEBahAKDA4LEBJBAWsQCgwNCxASEBBLEAwMDAsQEhAQSRAMDAsLEBIQEEYQDAwKCxASIgIQFiACEApHEAwMCQsQESECEBAgAnQQCgwICxARIQIQECACdhAKDAcLEBEhAhAQIAIQ' +
-'IhAKDAYLEBEhAhAQIAIQIxAKDAULEBIQEHIQCgwECxASEBBzEAoMAwsQEhAQcRAKDAILEBJB//8DcxAKDAELCyMHDws='), c => c.charCodeAt(0));
+'QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAEBEO/wEAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAh' +
+'IiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkB' +
+'igGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIB' +
+'wwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0B3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB' +
+'/AH9Af4B/wELIwgPCxAPEAcM/wELQX8QHgz+AQsQFRAHDP0BCxATEAcM/AELEA0QEyECEAcgAhAHDPsBCxANEA0hAhAHIAIQBwz6AQsQDRANEA0hAhAHEAcgAhAHDPkBCxAOJAEM+AELEA4jARAKJAEM' +
+'9wELEA4hAhANBEAgAiQBCwz2AQsQDiECEA0EQCMBEAogAiQBCwz1AQsQDhAXEAcM9AELEA4QDRAaDPMBCxANEAAQBwzyAQsQDRANEAEhAiACBEAgAg8LDPEBCxANEA1qEAcM8AELEA0hAhANIAJrEAcM' +
+'7wELEA1BAWoQBwzuAQsQDUEBaxAHDO0BCxANEA1LEAsM7AELEA0QDUkQCwzrAQsQDRANRhALDOoBCxANIgIQEyACEAdHEAsM6QELEA0hAhANIAJ0EAcM6AELEA0hAhANIAJ2EAcM5wELEA0hAhANIAIQ' +
+'IBAHDOYBCxANIQIQDSACECEQBwzlAQsQDRANchAHDOQBCxANEA1zEAcM4wELEA0QDXEQBwziAQsQDUH/AXMQBwzhAQsM4AELEBEQBwzfAQtBARAdDN4BCxARIgIQByACEAkM3QELEBEiAhAHIAIQBwzc' +
+'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'), c => c.charCodeAt(0));
// WebAssembly module compiled and ready to be instantiated.
let wasmModule;