~mstine/vending-machine-c64

The STL Lambda Lounge Vending Machine for the Commodore 64
finish coin return
add todo list
additional README improvements

refs

main
browse  log 

clone

read-only
https://git.sr.ht/~mstine/vending-machine-c64
read/write
git@git.sr.ht:~mstine/vending-machine-c64

You can also use your local clone with git send-email.

#Vending Machine C64

This repo contains the beginnings of an implementation of the Vending Machine Specification from the St. Louis Lambda Lounge language shootout (May 2009). The spec itself is found in VendingMachineSpecification.pdf.

I've used this spec over this years as a bit of a coding kata, and I routinely use it as a relatively non-trivial problem to go beyond "Hello World" in learning new languages.

The code is implemented in 6510 machine language using KickAssembler, which provides an interesting JavaScript-like scripting language at "compile-time" to help generate code. In addition, I'm developing the code using TDD and an RSpec-like framework called 64spec.

#Dependencies

  • Java (JDK) 8 or higher
  • VICE - the Versatile Commodore Emulator (tested with v3.7)
    • the x64sc executable should be on your path)

#Execution

$ ./gradlew build

This will assemble the .prg files and run the 64spec specifications.

#Want to See Spec Output on the C64 in All of Its 8-Bit Glory?

Just jump into build.gradle.kts and uncomment this line:

//    viceHeadless = false

#TODO List

  • [X] Insert Money
  • [X] Coin Return
  • [X] Service
  • [ ] Get Item
  • [ ] Machine Responses
  • [X] Machine State Tracking