diff --git a/README.md b/README.md new file mode 100644 index 0000000..fa1b9e6 --- /dev/null +++ b/README.md @@ -0,0 +1,29 @@ +# Honeylisp +## A hackable programming envrionment for the Apple II + +Honeylisp is a set of integrated tools designed to allow tight iteration when +developing low-level 6502 code. It is written in Fennel, a Lisp dialect that +compiles to Lua. You program the Apple II by writing Fennel code that generates +6502 assembly as simple lists-of-symbols. You can then interactively update +that code while it runs with simple commands in the lite editor. + +Honeylisp comprises: +* A hackable programmer's text editor (lite) + * Ported to the Love2D game engine framework (lite-hearted) + * A simple imgui-inspired library for quickly building custom editors +* An extensible 6502 assembler +* A Forth-like stack-based virtual machine for the 6502 +* Deep MAME integration (jeejah) + * Live interactive eval while your game is running + * Hot code reload + * TODO: snapshotting / rewind, rich symbols visible in the MAME debugger +* Actual hardware integration + * Supports uploading to the Apple II via the cassette port or a serial card + * TODO: Live interactive eval and hot code reload + +The main goal of the project is to support the creation of a game called Neut +Tower by its developer, but it is potentially generally interesting and useful +to others. Its design is focussed on the molding of the tool to your individual +needs; you are encouraged to fork it and modify any part to suit your taste. + + diff --git a/vendor/lite/data/core/command.lua b/vendor/lite/data/core/command.lua index 5164a13..8008d32 100644 --- a/vendor/lite/data/core/command.lua +++ b/vendor/lite/data/core/command.lua @@ -16,7 +16,7 @@ function command.add(predicate, map) predicate = function() return core.active_view:is(class) end end for name, fn in pairs(map) do - assert(not command.map[name], "command already exists: " .. name) +-- assert(not command.map[name], "command already exists: " .. name) command.map[name] = { predicate = predicate, perform = fn } end end diff --git a/vendor/lite/data/core/init.lua b/vendor/lite/data/core/init.lua index ce8a7f8..bff35c2 100644 --- a/vendor/lite/data/core/init.lua +++ b/vendor/lite/data/core/init.lua @@ -311,6 +311,7 @@ end function core.try(fn, ...) local err local ok, res = xpcall(fn, function(msg) + print(debug.traceback()) local item = core.error("%s", msg) item.info = debug.traceback(nil, 2):gsub("\t", "") err = msg diff --git a/vendor/lite/data/plugins/autoinsert.lua b/vendor/lite/data/plugins/autoinsert.lua new file mode 120000 index 0000000..3ab3e0e --- /dev/null +++ b/vendor/lite/data/plugins/autoinsert.lua @@ -0,0 +1 @@ +../../../lite-plugins/plugins/autoinsert.lua \ No newline at end of file diff --git a/vendor/lite/data/plugins/bracketmatch.lua b/vendor/lite/data/plugins/bracketmatch.lua new file mode 120000 index 0000000..c0f03a9 --- /dev/null +++ b/vendor/lite/data/plugins/bracketmatch.lua @@ -0,0 +1 @@ +../../../lite-plugins/plugins/bracketmatch.lua \ No newline at end of file diff --git a/vendor/lite/data/plugins/language_fennel.lua b/vendor/lite/data/plugins/language_fennel.lua new file mode 120000 index 0000000..d337b3f --- /dev/null +++ b/vendor/lite/data/plugins/language_fennel.lua @@ -0,0 +1 @@ +../../../lite-plugins/plugins/language_fennel.lua \ No newline at end of file diff --git a/vendor/lite/data/plugins/selectionhighlight.lua b/vendor/lite/data/plugins/selectionhighlight.lua new file mode 120000 index 0000000..8c8b129 --- /dev/null +++ b/vendor/lite/data/plugins/selectionhighlight.lua @@ -0,0 +1 @@ +../../../lite-plugins/plugins/selectionhighlight.lua \ No newline at end of file