Honeylisp is a programming environment for livecoding the Apple II, written in Fennel and based on the lite code editor. It also currently contains the work-in-progress code for an Apple II port of Neut Tower, as the development of this game is driving the development of the environment.
Find a file
Jeremy Penner e6eee86a91 Move repl / inspector to new imgui
* make views pin scrolling to bottom
* support multiline labels (no wordwrap yet)
* always expand groups (don't clear after populating form)
2021-12-25 13:26:00 -06:00
asm Hotswap works in MAME (once)! 2021-10-04 21:22:48 -04:00
bitsy Fix scaling 2021-07-03 22:13:04 -04:00
editor Move repl / inspector to new imgui 2021-12-25 13:26:00 -06:00
game somewhat better layered maps, simpler serialization 2021-11-17 21:46:38 -05:00
inspector Move repl / inspector to new imgui 2021-12-25 13:26:00 -06:00
lib upgrade to Fennel 1.0 2021-11-21 20:23:12 -05:00
link debugging udp 2021-12-20 12:25:28 -05:00
neutgs Fix mapedit layout, add inspector helper function for when pretty-print debugging is ugly 2021-12-22 15:36:29 -06:00
neuttower Arrow key support in Neut Tower 2021-07-24 21:39:59 -04:00
presentation Show my contact info on the "Questions" slide 2021-07-23 22:20:03 -04:00
ssc fix test program 2021-12-11 13:51:31 -05:00
support Add custom status bar, timer, section headings 2021-07-11 17:57:33 -04:00
vendor Add custom status bar, timer, section headings 2021-07-11 17:57:33 -04:00
8Bitsy.dsk Honeylisp project support, porting Neut Tower 2021-06-25 21:55:15 -04:00
conf.lua fennel implemention: love2d lite editor w/ custom commands & imgui 2020-09-16 22:34:36 -04:00
kfest2021.md First crack at KFest presentation 2021-06-18 21:31:21 -04:00
luars232.so Attempted blank slate for 8Bitsy (doesn't yet build) 2021-04-17 22:50:09 -04:00
main.lua Implement the Sufficiently Simple Syntax macro, some cleanup 2021-08-02 14:49:29 -04:00
NeutTower.dsk Arrow key support in Neut Tower 2021-07-24 21:39:59 -04:00
ProDOS_2_4_2.dsk The disk boots! 2021-01-02 16:32:43 -05:00
ProDOS_Blank.dsk fix hot code reload 2021-01-13 20:56:51 -05:00
README.md Delete dead code 2020-11-19 23:35:39 -05:00
Test.dsk Fix ProDOS bitmap parsing 2021-01-03 10:34:46 -05:00
thinks.txt add flags to tile editor, objects to map editor, textbox to imgui 2020-10-28 22:59:47 -04:00
todo.txt tiny bugfixes - I think this is the release version! 2021-02-17 14:07:58 -05:00
UdpDebug.dsk hot code reload works on hardware!! 2021-10-10 22:15:11 -04:00
wrap.fnl I'm drawing lots of tiles!! also support locals in inline asm 2021-09-05 23:29:16 -04:00

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.

Getting Started

Right now, Honeylisp is developed solely on Linux and is not tested on MacOS or Windows. You may have problems on those platforms.

Honeylisp assumes that you have LOVE2D and MAME installed on your system. Install them from your distribution's package manager.

To check out the code and launch the editor, run the following commands from a terminal:

$ git clone https://bitbucket.org/SpindleyQ/honeylisp.git
$ cd honeylisp
$ love .