| |
Digger
Registered: Mar 2005 Posts: 437 |
VICE (x64) hot reloading
Does anyone know a way to pass a .prg file to already running x64 instance on macOS?
I am trying to optimize the launch time after compilation, killing and respawning x64 takes some time, even with memory injection enabled. |
|
| |
JackAsser
Registered: Jun 2002 Posts: 2014 |
Its not superstable but use remote monitor and the netcat in monitor args like:
echo -e bank ram\nf 0000 ffff 0\nl\file.prg\ 0\ng c000\n | nc localhost 6510
Your start code (in this case at $c000) should clear timers and ack pending irqs to increase stability |
| |
JackAsser
Registered: Jun 2002 Posts: 2014 |
Shouldit JAM which it will, simply run the cmd again |
| |
Digger
Registered: Mar 2005 Posts: 437 |
@JackAss: Thanks! I will check this out.
I've also found a similar thread here: http://csdb.dk/forums/?roomid=11&topicid=117433&showallposts=1#.. with some good suggestions.
And a CodeBase64 article by Compyx: http://codebase64.org/doku.php?id=base:using_a_running_vice_ses.. |
| |
oziphantom
Registered: Oct 2014 Posts: 490 |
Its in Compyx's article, but Ian's Fast Kernal really helps ;) |
| |
MagerValp
Registered: Dec 2001 Posts: 1078 |
As long as you have prg files associated with x64sc, just use:
bash$ open file.prg It'll reset and load in an already running x64sc, or launch x64sc if necessary. open basically does the same thing as double clicking a file in the Finder. |
| |
JackAsser
Registered: Jun 2002 Posts: 2014 |
Quote: @JackAss: Thanks! I will check this out.
I've also found a similar thread here: http://csdb.dk/forums/?roomid=11&topicid=117433&showallposts=1#.. with some good suggestions.
And a CodeBase64 article by Compyx: http://codebase64.org/doku.php?id=base:using_a_running_vice_ses..
My "injection" method, while a tiny bit unstable, gives you instant test turn around. I've added an inject-target in my Makefile and directly from Sublime assemble and inject then alt-tab to Vice for immediate check. It's a really sweet and fast setup. |
| |
Perplex
Registered: Feb 2009 Posts: 255 |
I'm using this bash script to communicate with x64sc through the remote monitor:
#!/bin/sh
# Reload program and label definitions into a running x64sc session
# Send command to emulator's remote monitor
send () {
echo "$1" | nc -N localhost 6510 >/dev/null
}
# Verify command line parameters
if test "$#" -lt 2; then
echo "Usage: $0 <program-file> <labels-file> [start-address]"
exit 1
fi
PROGRAM=$1
LABELS=$2
ADDRESS=$3
# Reset emulator
send "reset"
# Wait a bit for reset to finish when starting via RUN
# Assumes a kernal patched to bypass memory test
if ! test -n "$ADDRESS"; then sleep 0.1; fi
# Load new program file into memory
send "load \"$PROGRAM\" 0"
# Update labels
send "clear_labels"
send "load_labels \"$LABELS\""
if test -n "$ADDRESS"; then
# Start using supplied address
send "g $ADDRESS"
else
# Start by issuing RUN command using keyboard buffer
send "f 0277 027a 52 55 4e 0d"
send "f 00c6 00c6 04"
fi
Like it says in a comment, you need a kernal patched to bypass the memory test on reset (which is useless in an emulator anyway),
otherwise you'll have to extend the sleep delay argument to at least a couple of seconds. You can find info about patching the kernal
and loading code into a running emulator here: http://codebase64.org/doku.php?id=base:using_a_running_vice_ses.. |
| |
Kruthers
Registered: Jul 2016 Posts: 21 |
Quote: As long as you have prg files associated with x64sc, just use:
bash$ open file.prg It'll reset and load in an already running x64sc, or launch x64sc if necessary. open basically does the same thing as double clicking a file in the Finder.
I'm assuming that works on the mac b/c "finder", would love to find a way to do this under linux. Tried for hours one day to figure out how to script a "drag and drop" into an already-running vice but to no avail... |
| |
soci
Registered: Sep 2003 Posts: 480 |
I use this in Makefiles usually. It does an autostart through remote monitor or starts a new VICE if it's not listening yet. Of course everything is directly runnable or can be compiled so for testing.
XFLAGS := -autostartprgmode 1 -autostart-warp +truedrive +cart -remotemonitor
all: demo
-echo 'autostart "$(PWD)/$<"' | nc 127.0.0.1 6510 -q 1 2>/dev/null >/dev/null || (x64 $(XFLAGS) $< </dev/null 2>/dev/null >/dev/null) &
|
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
noone made a codenet clone for the remote binary interface yet? why? |
... 8 posts hidden. Click here to view all posts.... |
Previous - 1 | 2 - Next |