Added buch of stuff

This commit is contained in:
douwe
2025-08-31 17:08:50 +02:00
parent 75770bb7ff
commit a232425980
32 changed files with 434 additions and 242 deletions

View File

@@ -0,0 +1,57 @@
class_name CPU
extends Node
signal cpu_tick
var cobor_vm := CoborVirtualMachine.new()
var running := false
var register_size := 8
var modules : Array[Module]
func _ready() -> void:
cobor_vm.set_registers(register_size,[])
var register_index := 1
for child in get_children():
if child is Module:
var module := child as Module
modules.push_back(module)
register_size += module.set_registers(register_index)
func run_step() -> void:
if not running:
cobor_vm.set_registers(register_size,[])
running = true
_tick()
func run() -> void:
if not running:
cobor_vm.set_registers(register_size,[])
running = true
$CPUClock.start()
func _tick()->void:
for module in modules:
module.early_tick()
var err := cobor_vm.run_step()
if not err.is_empty():
print(err)
if cobor_vm.get_program_counter() >= cobor_vm.get_program_size():
stop()
for module in modules:
module.late_tick()
emit_signal("cpu_tick")
func pause()->void:
$CPUClock.stop()
func stop()->void:
running = false
$CPUClock.stop()
func compile_code(source_code: String)->void:
var errors := cobor_vm.parse_source_code(source_code)
if errors.is_empty():
print("Compiling Ok!")
else:
for error in errors:
print(error)