diff --git a/README.md b/README.md index c825d6e..4e61152 100644 --- a/README.md +++ b/README.md @@ -6,8 +6,8 @@ Livecoding a Commodore 64 in a language compiled on a modern PC written via an e In a real hardware setup, the editor, which is integrated with the compiler, runs the show. In this setup, running it is simple. Running it interactively is almost as simple. -To first enter an environment in which the editor can be easily loaded, enter Lisp using the command `ros run -- --load asdf-paths.lisp`. Then load the editor by typing `(asdf:load-system "editor")`. The editor can now be started by typing `(editor:main "/dev/")` where `` is the terminal you wish to have the editor run on. This is most likely `/dev/ttyUSB0`, but may be something like `/dev/pts/3` if you're testing without a real VT220. **If the host program is likely to change during the editor process's life time**, add `:refresh-asm-functions-p t` to the call to `EDITOR::MAIN`, after the terminal path. This will ensure it reads the host program's listing before each compile to find the addresses of built-in functions. +If you have Roswell installed, running the editor can be done by running one of the two start scripts, `run-editor-real.ros` for situations where the host program will not change, and `run-editor-preview.ros` for situations where it may. These are run like any other script from the shell. The scripts must be given a parameter in the form `/dev/` where `` is the terminal you wish to have the editor run on. This is most likely `/dev/ttyUSB0`, but may be something like `/dev/pts/3` if you're testing without a real VT220. -The editor should now run. Keybindings will eventually be listed, but for now the source code is the canonical list of bindings. +The editor should now run. Keybindings will eventually be listed, but for now the source code is the canonical list of bindings. A *clear screen* command is required before anything will show on the display. The editor will, when the *compile* command is issued, perform a compilation, write statistics and IR to standard output, save both the source code and 6502 binary to the current working directory, then attempt to upload the code to the C64 via a serial device on `/dev/ttyACM0`. This path should ideally not change, but if the need arises, it can be changed simply be changing the variable `USC::*C64-TTY*`. In the event this transfer fails to begin, for example if the serial device is missing, a warning is printed to standard output, but the editor does not display anything. Saved files are unaffected by a failed transfer. diff --git a/editor/binary-build.lisp b/editor/binary-build.lisp index 2453307..fc82e67 100644 --- a/editor/binary-build.lisp +++ b/editor/binary-build.lisp @@ -11,7 +11,7 @@ terminal giving the pts as a command-line parameter.~%")) (defun main (tty &key refresh-asm-functions-p) (format t "C64 Livecoding editor, v~A~%" #.(asdf:component-version (asdf:find-system '#:user-side-compiler))) - (let ((tty (probe-file tty))) + (let ((tty (or (ignore-errors (probe-file tty)) nil))) (unless tty (batch-help) (abort)) diff --git a/run-editor-preview.ros b/run-editor-preview.ros new file mode 100755 index 0000000..c79c3d5 --- /dev/null +++ b/run-editor-preview.ros @@ -0,0 +1,23 @@ +#!/bin/sh +#|-*- mode:lisp -*-|# +#| +exec ros -Q -- $0 "$@" +|# +(progn ;;init forms + (ros:ensure-asdf) + (when (member :asdf3 *features*) + (asdf:initialize-source-registry + '(:source-registry (:tree :here) + :inherit-configuration))) + #-quicklisp (error "Quicklisp must be available to your Roswell install.") + #+quicklisp (ql:quickload '() :silent t) + #+quicklisp (ql:quickload '#:editor :silent t)) + +(defpackage :ros.script.run-editor-preview.3962771665 + (:use :cl)) +(in-package :ros.script.run-editor-preview.3962771665) + +(defun main (&rest argv) + (declare (ignorable argv)) + (editor:main (first argv) :refresh-asm-functions-p t)) +;;; vim: set ft=lisp lisp: diff --git a/run-editor-real.ros b/run-editor-real.ros new file mode 100755 index 0000000..882d2f8 --- /dev/null +++ b/run-editor-real.ros @@ -0,0 +1,23 @@ +#!/bin/sh +#|-*- mode:lisp -*-|# +#| +exec ros -Q -- $0 "$@" +|# +(progn ;;init forms + (ros:ensure-asdf) + (when (member :asdf3 *features*) + (asdf:initialize-source-registry + '(:source-registry (:tree :here) + :inherit-configuration))) + #-quicklisp (error "Quicklisp must be available to your Roswell install.") + #+quicklisp (ql:quickload '() :silent t) + #+quicklisp (ql:quickload '#:editor :silent t)) + +(defpackage :ros.script.run-editor-real.3962771235 + (:use :cl)) +(in-package :ros.script.run-editor-real.3962771235) + +(defun main (&rest argv) + (declare (ignorable argv)) + (editor:main (first argv) :refresh-asm-functions-p nil)) +;;; vim: set ft=lisp lisp: