diff --git a/console.js b/console.js index 3dba807..935c419 100644 --- a/console.js +++ b/console.js @@ -1,5 +1,5 @@ function main() { - let socket = new WebSocket("ws://localhost:8765"); + let socket = new WebSocket("ws://localhost:8764"); var ids = []; socket.onopen = function(e) { @@ -43,4 +43,4 @@ function main() { console.log(`[LOG] couldn't parse message ${e.data}`) } } -} main(); \ No newline at end of file +} main(); diff --git a/data/computer.desmos b/data/computer.desmos index ceba8ca..fb50f35 100644 --- a/data/computer.desmos +++ b/data/computer.desmos @@ -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] diff --git a/desmosisa/__init__.py b/desmosisa/__init__.py index 316bed5..b2d4638 100644 --- a/desmosisa/__init__.py +++ b/desmosisa/__init__.py @@ -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) diff --git a/desmosisa/asm.py b/desmosisa/asm.py new file mode 100644 index 0000000..e69de29 diff --git a/desmosisa/server.py b/desmosisa/server.py index 595dd64..cf32b57 100644 --- a/desmosisa/server.py +++ b/desmosisa/server.py @@ -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): diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..84d25ca --- /dev/null +++ b/setup.py @@ -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' + ] +) \ No newline at end of file diff --git a/shell.nix b/shell.nix index e811876..e2689da 100644 --- a/shell.nix +++ b/shell.nix @@ -1,10 +1,4 @@ { pkgs ? import {} }: -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 ]; + }