wat-js
cc65
wat-js | cc65 | |
---|---|---|
4 | 24 | |
257 | 2,202 | |
- | 1.1% | |
10.0 | 9.6 | |
over 6 years ago | 9 days ago | |
JavaScript | C | |
MIT License | zlib License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
wat-js
-
C Is Not a Low-level Language – Your computer is not a fast PDP-11
Well Forth is possibly the most minimal VM over a platform, as evidenced by openfirmware.
It does have problems scaling though, in that if you've seen one Forth, you've seen one Forth ie. The variations required to fit a platform make them semi-incompatible.
That's not to say that a more lispy Forth wouldn't be useful though, in that a concatenative syntax allows us to pass custom datastructures around like APL, and CPS (delimited continuations with lexically scoped dynamic binding would come from the lisp side (see https://github.com/manuel/wat-js).
Memory management in Forth can handle multiple memory types eg. https://flashforth.com/ so adding something like ref counting (https://github.com/zigalenarcic/minilisp/blob/main/main.c) to handle the dynamic list side of things might mesh well.
In any case, if you're looking for a self hosting lisp that runs on bare metal, https://github.com/attila-lendvai/maru has been out for a few years.
- The Workflow Pattern
-
Brett Slatkin: Why am I building a new functional programming language?
https://github.com/manuel/wat-js
If you have delimited continuations then you can construct coroutines/threads/await/async, promises etc.
I guess that this might be suitable for many scenarios thanks to nodejs, but the runtimes it relies on are not exactly small.
- The Mysteries of Lisp (2015)
cc65
- C Compiler Assembler and Runtime for C64
-
C Is Not a Low-level Language – Your computer is not a fast PDP-11
True. The code generated by https://cc65.github.io/ is pretty decent but there are a few places where hand-rolled assembler will perform much better when you need it. Although I've made things for 6502-based systems in C with this handy compiler (thanks cc65 contributors!).
Is there something intrinsic to how C handles addressing that makes segmented architectures more painful than they ought to be? Or maybe is there a language where segmented addressing is easier?
I hadn't really thought about it in a while. :)
-
Best practice to store context for a C compiler
cc65
-
How did people learn to make games in the 80s
There's tools like cc65 that let you write C code for the NES.
-
i need some serious help learing the VICE emulator for c64.
You can use any text editor for coding and the tutorial uses cc65 for compiling assembly to machine code.
-
Has anyone used LLVM/Clang to create modern NES games?
You can use cc65 https://cc65.github.io/ but because you are compiling it in a limit hardware the cc65 has its rules and recommendations to follow in order to get the most optimal binaries, and more specifically I read this when I made the "Pong" game for NES as a practice long time ago https://nesdoug.com/ , I hope it helps, happy coding!
-
My custom single board computer, 65c02-based with multitasking support
What assembler/tools did you use anyways? Personally I'd recommend ca65 from the cc65 C compiler utility. It's very powerful, open source, and kept updated (unlike a lot of ancient 6502 tools, like WDC's)
-
A Graphical OS for the Atari 8-bit
It really is a cool project. https://github.com/cc65/cc65
It provides some template configuration files describing different memory layouts. And provides common libraries for input/output.
There's also a LLVM fork for MOS: https://github.com/llvm-mos/llvm-mos
They've got some interesting hacks with ZeroPage memory and register allocation: https://llvm-mos.org/wiki/Code_generation_overview
Interesting if you geek out on that kind of research.
- cc65 - a freeware C compiler for 6502 based systems
- Action
What are some alternatives?
minilisp - A small lisp interpreter with reference counting memory management aimed at interactive game development
llvm-mos - Port of LLVM to the MOS 6502 and related processors
conductor - Conductor is a microservices orchestration engine.
6502 - DB6502: 65C02 based computer inspired by BE6502
wekan-node20 - Database connect test with Node.js 20, Bun and Deno. Creating single executeables with Bun and Deno.
cc65-tools - Docker image for CC65 and tools
Kind - A next-gen functional language
wcc - wo4mei3's c compiler written in ocaml
fdraw - Fast Apple II hi-res graphics
6502-Breadboard-Computer - code for my breadboard computer
py65816 - Emulate 65816-based microcomputer systems in Python
py65 - Emulate 6502-based microcomputer systems in Python