Quality of life improvements
This commit is contained in:
parent
74d184597e
commit
6e85ecda80
29
README.md
Normal file
29
README.md
Normal file
|
@ -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.
|
||||||
|
|
||||||
|
|
2
vendor/lite/data/core/command.lua
vendored
2
vendor/lite/data/core/command.lua
vendored
|
@ -16,7 +16,7 @@ function command.add(predicate, map)
|
||||||
predicate = function() return core.active_view:is(class) end
|
predicate = function() return core.active_view:is(class) end
|
||||||
end
|
end
|
||||||
for name, fn in pairs(map) do
|
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 }
|
command.map[name] = { predicate = predicate, perform = fn }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
1
vendor/lite/data/core/init.lua
vendored
1
vendor/lite/data/core/init.lua
vendored
|
@ -311,6 +311,7 @@ end
|
||||||
function core.try(fn, ...)
|
function core.try(fn, ...)
|
||||||
local err
|
local err
|
||||||
local ok, res = xpcall(fn, function(msg)
|
local ok, res = xpcall(fn, function(msg)
|
||||||
|
print(debug.traceback())
|
||||||
local item = core.error("%s", msg)
|
local item = core.error("%s", msg)
|
||||||
item.info = debug.traceback(nil, 2):gsub("\t", "")
|
item.info = debug.traceback(nil, 2):gsub("\t", "")
|
||||||
err = msg
|
err = msg
|
||||||
|
|
1
vendor/lite/data/plugins/autoinsert.lua
vendored
Symbolic link
1
vendor/lite/data/plugins/autoinsert.lua
vendored
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
../../../lite-plugins/plugins/autoinsert.lua
|
1
vendor/lite/data/plugins/bracketmatch.lua
vendored
Symbolic link
1
vendor/lite/data/plugins/bracketmatch.lua
vendored
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
../../../lite-plugins/plugins/bracketmatch.lua
|
1
vendor/lite/data/plugins/language_fennel.lua
vendored
Symbolic link
1
vendor/lite/data/plugins/language_fennel.lua
vendored
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
../../../lite-plugins/plugins/language_fennel.lua
|
1
vendor/lite/data/plugins/selectionhighlight.lua
vendored
Symbolic link
1
vendor/lite/data/plugins/selectionhighlight.lua
vendored
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
../../../lite-plugins/plugins/selectionhighlight.lua
|
Loading…
Reference in a new issue