all repos — xyw @ 64345b1903b465ca0ec1c960896ecc206baa02f9

A minimal virtual machine and assembler for terminals.

examples/print8.xyw

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
; Assumes .include "devices.xyw"
 
; Printing subroutine
; a8 -- | [xy]
.label print8
  POPx 
  ; If value is less than 10, print single digit
  PSHx $A LTH print8.single JCNw
  ; Divide by 10: stack becomes [remainder, quotient]
  PSHx $A DIV
  ; Save remainder to y for later
  SWP POPy
  ; Call print8 recursively with quotient (still on stack)
  print8 JSRw
  ; Print the saved remainder
  PSHy $30 ADD terminal.output STB
  CLRxy
  RTS
  .label print8.single
    ; Print single digit
    PSHx $30 ADD terminal.output STB 
    CLRx
    RTS