From 535fe631741ebe273878731b64423f1af9510eea Mon Sep 17 00:00:00 2001 From: Roman Boykov Date: Thu, 19 Mar 2026 00:21:16 +0300 Subject: [PATCH] Impl MEM BP, StateSave, BP with Expr, Toolbar --- bin/split.py | 21 ++++++++ gval/random_test.go | 124 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 145 insertions(+) create mode 100755 bin/split.py create mode 100644 gval/random_test.go diff --git a/bin/split.py b/bin/split.py new file mode 100755 index 0000000..ebe55c4 --- /dev/null +++ b/bin/split.py @@ -0,0 +1,21 @@ +#! /usr/bin/python3 +file_path = 'Disketa.okd' +sector = 1 +try: + with open(file_path, 'rb') as fi: + # Read the entire content of the file + while True: + # Read 4 bytes at a time + byte_chunk = fi.read(128) + if not byte_chunk: + break + sn = str(sector).zfill(5) + with open("sector-" + sn +'.dat', 'wb') as fo: + fo.write(byte_chunk) + fo.close() + sector += 1 + fi.close() +except FileNotFoundError: + print(f"Error: The file '{file_path}' was not found.") +except Exception as e: + print(f"An error occurred: {e}") diff --git a/gval/random_test.go b/gval/random_test.go new file mode 100644 index 0000000..a721e02 --- /dev/null +++ b/gval/random_test.go @@ -0,0 +1,124 @@ +package gval + +// Courtesy of abrander +// ref: https://gist.github.com/abrander/fa05ae9b181b48ffe7afb12c961b6e90 +import ( + "fmt" + "math/rand" + "testing" + "time" +) + +var ( + hello = "hello" + empty struct{} + empty2 *string + + values = []interface{}{ + -1, + 0, + 12, + 13, + "", + "hello", + &hello, + nil, + "nil", + empty, + empty2, + true, + false, + time.Now(), + rune('r'), + int64(34), + time.Duration(0), + "true", + "false", + "\ntrue\n", + "\nfalse\n", + "12", + "nil", + "arg1", + "arg2", + int(12), + int32(12), + int64(12), + complex(1.0, 1.0), + []byte{0, 0, 0}, + []int{0, 0, 0}, + []string{}, + "[]", + "{}", + "\"\"", + "\"12\"", + "\"hello\"", + ".*", + "==", + "!=", + ">", + ">=", + "<", + "<=", + "=~", + "!~", + "in", + "&&", + "||", + "^", + "&", + "|", + ">>", + "<<", + "+", + "-", + "*", + "/", + "%", + "**", + "-", + "!", + "~", + "?", + ":", + "??", + "+", + "-", + "*", + "/", + "%", + "**", + "&", + "|", + "^", + ">>", + "<<", + ",", + "(", + ")", + "[", + "]", + "\n", + "\000", + } +) + +const SEED = 1487873697990155515 + +func BenchmarkRandom(bench *testing.B) { + rand.Seed(SEED) + for i := 0; i < bench.N; i++ { + num := rand.Intn(3) + 2 + expression := "" + + for n := 0; n < num; n++ { + expression += fmt.Sprintf(" %s", getRandom(values)) + } + + Evaluate(expression, nil) + } +} + +func getRandom(haystack []interface{}) interface{} { + i := rand.Intn(len(haystack)) + return haystack[i] +}