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() { function main() {
let socket = new WebSocket("ws://localhost:8765"); let socket = new WebSocket("ws://localhost:8764");
var ids = []; var ids = [];
socket.onopen = function(e) { socket.onopen = function(e) {
console.log("[LOG] sending client ping")
socket.send("client ping"); socket.send("client ping");
} }
@ -11,8 +12,9 @@ function main() {
console.log(message.message) console.log(message.message)
if (message.message === "clear") { if (message.message === "clear") {
console.log("[LOG] removing expressions from the graph");
for(i in ids) { for(i in ids) {
console.log("removing") console.log(`[LOG] removing expression ${ids[i]}`)
Calc.removeExpression({ Calc.removeExpression({
id: ids[i], id: ids[i],
}) })
@ -20,13 +22,13 @@ function main() {
ids = []; ids = [];
} else if (message.message === "expression") { } else if (message.message === "expression") {
console.log(`[LOG] adding expression ${message.payload} as id ${message.id}`);
Calc.setExpression({ Calc.setExpression({
type: "expression", type: "expression",
latex: message.payload, latex: message.payload,
id: message.id, id: message.id,
}) })
ids.push(message.id) ids.push(message.id)
console.log(ids)
} else if (message.message === "ticker") { } else if (message.message === "ticker") {
var state = Calc.getState(); var state = Calc.getState();
@ -38,9 +40,7 @@ function main() {
Calc.setState(JSON.stringify(state)) Calc.setState(JSON.stringify(state))
} else { } 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} : ibl(addr, b, c) = {less = 1 : ijmp(addr, 0, 0), jumped -> 1}
: isto(v, addr) = setlistval(addr, v) : isto(v, addr) = setlistval(addr, v)
: imov(from, target) = setlistval(target, B[from])
: ipsto(value, ptr) = setlistval(B[ptr], value)
# registers # registers
# instruction pointer # 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], \ paramtwo -> B[addr + 2], \
paramthree -> B[addr + 3] paramthree -> B[addr + 3]
: exec = { \ : exec = { \
inst = sto : isto(paramone, paramtwo), \ inst = sto : isto(paramone, paramtwo), \
inst = add : iadd(paramone, paramtwo, paramthree), \ inst = psto : ipsto(paramone, paramtwo), \
inst = cmp : icmp(paramone, paramtwo, paramthree), \ inst = mov : imov(paramone, paramtwo), \
inst = eld : ield(paramone, paramtwo), \ inst = add : iadd(paramone, paramtwo, paramthree), \
inst = gld : igld(paramone, paramtwo), \ inst = cmp : icmp(paramone, paramtwo, paramthree), \
inst = lld : illd(paramone, paramtwo), \ inst = eld : ield(paramone, paramtwo), \
inst = jmp : ijmp(paramone, paramtwo, paramthree), \ inst = gld : igld(paramone, paramtwo), \
inst = be : ibe(paramone, paramtwo, paramthree), \ inst = lld : illd(paramone, paramtwo), \
inst = bne : ibne(paramone, paramtwo, paramthree), \ inst = jmp : ijmp(paramone, paramtwo, paramthree), \
inst = bg : ibg(paramone, paramtwo, paramthree), \ inst = be : ibe(paramone, paramtwo, paramthree), \
inst = bl : ibl(paramone, paramtwo, paramthree), \ inst = bne : ibne(paramone, paramtwo, paramthree), \
inst = sub : isub(paramone, paramtwo, paramthree), \ inst = bg : ibg(paramone, paramtwo, paramthree), \
inst = mul : imul(paramone, paramtwo, paramthree), \ inst = bl : ibl(paramone, paramtwo, paramthree), \
inst = div : idiv(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} : 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 : main = loopaction, loop
: sto = 1 : sto = 1
: psto = 16
: mov = 17
: add = 2 : add = 2
: cmp = 3 : cmp = 3
: eld = 4 : 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 : div = 14
: rst = 15 : 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() fd.close()
return data return data
def entry(): def define_args(parser):
parser = argparse.ArgumentParser(
prog="desmos-sync",
description="Synchronize from local file to Desmos calculator",
)
parser.add_argument('--copy', action="store_true", help="copy the client side JS to clipboard") 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('--run', help="specify file to start the desmos server for")
parser.add_argument('--overrides', help="specify file that contains overrides for desmos expressions") 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() args = parser.parse_args()
if args.overrides: if args.overrides:
args.overrides = get_overrides(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): async def start_server(file, overrides):
print("starting server")
wrapper = functools.partial(serv, file=file, overrides=overrides) 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() await asyncio.Future()
def main(file, overrides): 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> {} }: { pkgs ? import <nixpkgs> {} }:
let pkgs.mkShell {
my-python-packages = ps: with ps; [ nativeBuildInputs = with pkgs.python311Packages; [ websockets watchdog pyperclip ];
pip }
pkgs.python311Packages.websockets
pkgs.python311Packages.watchdog
pkgs.python311Packages.pyperclip
];
my-python = pkgs.python3.withPackages my-python-packages;
in my-python.env