########################################### # # A modular stack data structure using # a v0-based calling convention. # This approach reserves a dedicated # register for a stack pointer and as # a result is very simple and fast. # maximum stack size is 256 bytes. # ########################################### :alias stack-ptr vd : stack 0 0 0 0 0 0 0 0 : push i := stack i += stack-ptr save v0 stack-ptr += 1 ; : pop stack-ptr += -1 i := stack i += stack-ptr load v0 ; ########################################### # # Usage Example: # ########################################### : print # takes an arg in v0 i := hex v0 sprite va vb 5 va += 6 ; : main va := 3 vb := 3 v0 := 5 push v0 := 3 push v0 := 1 push pop print v0 := 9 push pop print pop print pop print # should print '1935'