Compare commits
3 Commits
c93b0b493b
...
49e2df75ca
Author | SHA1 | Date |
---|---|---|
randomuser | 49e2df75ca | |
randomuser | 7c4e3738ee | |
randomuser | 4a45350638 |
14
console.js
14
console.js
|
@ -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();
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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'
|
||||
]
|
||||
)
|
12
shell.nix
12
shell.nix
|
@ -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 ];
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue