Compare commits

...

3 Commits

Author SHA1 Message Date
randomuser 49e2df75ca temp commit 1; needs to be merged 2024-03-24 18:50:55 -05:00
randomuser 7c4e3738ee Merge branch 'main' of https://git.beepboop.systems/rndusr/desmos-computer 2024-02-01 17:11:12 -06:00
randomuser 4a45350638 add better console.log messages 2023-12-12 11:06:54 -06:00
7 changed files with 61 additions and 38 deletions

View File

@ -1,8 +1,9 @@
function main() {
let socket = new WebSocket("ws://localhost:8765");
let socket = new WebSocket("ws://localhost:8764");
var ids = [];
socket.onopen = function(e) {
console.log("[LOG] sending client ping")
socket.send("client ping");
}
@ -11,8 +12,9 @@ function main() {
console.log(message.message)
if (message.message === "clear") {
console.log("[LOG] removing expressions from the graph");
for(i in ids) {
console.log("removing")
console.log(`[LOG] removing expression ${ids[i]}`)
Calc.removeExpression({
id: ids[i],
})
@ -20,13 +22,13 @@ function main() {
ids = [];
} else if (message.message === "expression") {
console.log(`[LOG] adding expression ${message.payload} as id ${message.id}`);
Calc.setExpression({
type: "expression",
latex: message.payload,
id: message.id,
})
ids.push(message.id)
console.log(ids)
} else if (message.message === "ticker") {
var state = Calc.getState();
@ -38,9 +40,7 @@ function main() {
Calc.setState(JSON.stringify(state))
} else {
console.log("unknown message type.")
console.log(`[LOG] couldn't parse message ${e.data}`)
}
console.log(message);
}
}
} main();

View File

@ -37,6 +37,8 @@ id testing : B = [1, 4, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
: ibl(addr, b, c) = {less = 1 : ijmp(addr, 0, 0), jumped -> 1}
: isto(v, addr) = setlistval(addr, v)
: imov(from, target) = setlistval(target, B[from])
: ipsto(value, ptr) = setlistval(B[ptr], value)
# registers
# instruction pointer
@ -65,20 +67,22 @@ id testing : B = [1, 4, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
paramtwo -> B[addr + 2], \
paramthree -> B[addr + 3]
: exec = { \
inst = sto : isto(paramone, paramtwo), \
inst = add : iadd(paramone, paramtwo, paramthree), \
inst = cmp : icmp(paramone, paramtwo, paramthree), \
inst = eld : ield(paramone, paramtwo), \
inst = gld : igld(paramone, paramtwo), \
inst = lld : illd(paramone, paramtwo), \
inst = jmp : ijmp(paramone, paramtwo, paramthree), \
inst = be : ibe(paramone, paramtwo, paramthree), \
inst = bne : ibne(paramone, paramtwo, paramthree), \
inst = bg : ibg(paramone, paramtwo, paramthree), \
inst = bl : ibl(paramone, paramtwo, paramthree), \
inst = sub : isub(paramone, paramtwo, paramthree), \
inst = mul : imul(paramone, paramtwo, paramthree), \
inst = div : idiv(paramone, paramtwo, paramthree) \
inst = sto : isto(paramone, paramtwo), \
inst = psto : ipsto(paramone, paramtwo), \
inst = mov : imov(paramone, paramtwo), \
inst = add : iadd(paramone, paramtwo, paramthree), \
inst = cmp : icmp(paramone, paramtwo, paramthree), \
inst = eld : ield(paramone, paramtwo), \
inst = gld : igld(paramone, paramtwo), \
inst = lld : illd(paramone, paramtwo), \
inst = jmp : ijmp(paramone, paramtwo, paramthree), \
inst = be : ibe(paramone, paramtwo, paramthree), \
inst = bne : ibne(paramone, paramtwo, paramthree), \
inst = bg : ibg(paramone, paramtwo, paramthree), \
inst = bl : ibl(paramone, paramtwo, paramthree), \
inst = sub : isub(paramone, paramtwo, paramthree), \
inst = mul : imul(paramone, paramtwo, paramthree), \
inst = div : idiv(paramone, paramtwo, paramthree) \
}
: incip = {jumped = 0 : ip -> ip + instwidth[inst] + 1}
@ -91,6 +95,8 @@ id testing : B = [1, 4, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
: main = loopaction, loop
: sto = 1
: psto = 16
: mov = 17
: add = 2
: cmp = 3
: eld = 4
@ -106,4 +112,4 @@ id testing : B = [1, 4, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
: div = 14
: rst = 15
: instwidth = [2,3,1,1,1,1,1,1,1,1,3,3,3,3,0]
: instwidth = [2,3,1,1,1,1,1,1,1,1,3,3,3,3,0,2,2]

View File

@ -9,16 +9,21 @@ def get_overrides(file):
fd.close()
return data
def entry():
parser = argparse.ArgumentParser(
prog="desmos-sync",
description="Synchronize from local file to Desmos calculator",
)
def define_args(parser):
parser.add_argument('--copy', action="store_true", help="copy the client side JS to clipboard")
parser.add_argument('--assemble', nargs=2, help="assemble the file INFILE and write the resultant overrides to OUTFILE")
parser.add_argument('--run', help="specify file to start the desmos server for")
parser.add_argument('--overrides', help="specify file that contains overrides for desmos expressions")
def entry():
parser = argparse.ArgumentParser(
prog="desmosisa",
description="a smörgåsbord of utilities for desmos, including some implementations of an desmos-based isa",
)
define_args(parser)
args = parser.parse_args()
if args.overrides:
args.overrides = get_overrides(args.overrides)

0
desmosisa/asm.py Normal file
View File

View File

@ -96,8 +96,10 @@ async def serv(websocket, file, overrides={}):
)
async def start_server(file, overrides):
print("starting server")
wrapper = functools.partial(serv, file=file, overrides=overrides)
async with serve(wrapper, "localhost", 8765):
async with serve(wrapper, "localhost", 8764):
print("starting server for realz")
await asyncio.Future()
def main(file, overrides):

16
setup.py Normal file
View File

@ -0,0 +1,16 @@
import setuptools
setuptools.setup(
name='desmos-sync',
version='0.1',
author='Ryan Marina',
description='synchronize Desmos expressions between the local filesystem and the web calculator',
packages=["desmossync"],
entry_points = {
"console-scripts": [ "desmos-sync=desmossync.cli.entry" ]
},
install_requires=[
'setuptools',
'websockets',
'watchdog'
]
)

View File

@ -1,10 +1,4 @@
{ pkgs ? import <nixpkgs> {} }:
let
my-python-packages = ps: with ps; [
pip
pkgs.python311Packages.websockets
pkgs.python311Packages.watchdog
pkgs.python311Packages.pyperclip
];
my-python = pkgs.python3.withPackages my-python-packages;
in my-python.env
pkgs.mkShell {
nativeBuildInputs = with pkgs.python311Packages; [ websockets watchdog pyperclip ];
}