all repos — xyw @ 56e2988e6a6ef18d17c848016e3d4bde93434a0e

A minimal virtual machine and assembler for terminals.

examples/lib/macros.xyw

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
;;; Devices

;system
.macro system.state              $00
.macro system.error              $01
.macro system.page               $02
.macro system.random             $03
.macro system.on_error           $04
.macro system.image_exec         $06

;terminal
.macro terminal.input            $10
.macro terminal.output           $11
.macro terminal.on_keypress      $12
.macro terminal.on_argument      $14

;clock
.macro clock.year                $20
.macro clock.month               $22
.macro clock.monthday            $23
.macro clock.weekday             $24
.macro clock.hour                $25
.macro clock.minute              $26
.macro clock.second              $27
.macro clock.timer               $28
.macro clock.on_timer            $2A

;file
.macro file.path                 $30
.macro file.type                 $32
.macro file.size                 $33
.macro file.success              $35
.macro file.length               $37
.macro file.read                 $39
.macro file.write                $3B
.macro file.operation            $3D

;beeper
.macro beeper.pitch              $40
.macro beeper.length             $42
.macro beeper.level              $44

;;; Utilities
.macro MOD DIV POP
.macro LBYTE SWP POP
.macro PUTC terminal.output STB

;;; ASCII Characters
.macro NL $0A PUTC
.macro CR $0D PUTC
.macro SP $20 PUTC

;;; Argument separators
.macro arg.sep $1E
.macro arg.end $1D

;;; Errors
.macro error.file.not_found     $31
.macro error.file.access_denied $32
.macro error.file.invalid_op    $33
.macro error.file.io_error      $34

;;; File operations
.macro file.op.read   $01
.macro file.op.write  $02
.macro file.op.append $03
.macro file.op.delete $04

;;; File types
.macro file.type.unspecified $00
.macro file.type.file $01
.macro file.type.directory $02

;;; Beeper notes
.macro ps   $0000  ; pause (no sound)
.macro c4   $0106  ; 262 Hz
.macro cs4  $0115  ; 277 Hz
.macro d4   $0126  ; 294 Hz
.macro ds4  $0137  ; 311 Hz
.macro e4   $014A  ; 330 Hz
.macro f4   $015D  ; 349 Hz
.macro fs4  $0172  ; 370 Hz
.macro g4   $0188  ; 392 Hz
.macro gs4  $019F  ; 415 Hz
.macro a4   $01B8  ; 440 Hz
.macro as4  $01D2  ; 466 Hz
.macro b4   $01EE  ; 494 Hz

.macro c5   $020B  ; 523 Hz
.macro cs5  $022A  ; 554 Hz
.macro d5   $024B  ; 587 Hz
.macro ds5  $026E  ; 622 Hz
.macro e5   $0293  ; 659 Hz
.macro f5   $02BA  ; 698 Hz
.macro fs5  $02E4  ; 740 Hz
.macro g5   $0310  ; 784 Hz
.macro gs5  $033F  ; 831 Hz
.macro a5   $0370  ; 880 Hz
.macro as5  $03A4  ; 932 Hz
.macro b5   $03DC  ; 988 Hz

.macro c6   $0417  ; 1047 Hz
.macro cs6  $0455  ; 1109 Hz
.macro d6   $0497  ; 1175 Hz
.macro ds6  $04DD  ; 1245 Hz
.macro e6   $0527  ; 1319 Hz
.macro f6   $0575  ; 1397 Hz
.macro fs6  $05C8  ; 1480 Hz
.macro g6   $0620  ; 1568 Hz
.macro gs6  $067D  ; 1661 Hz
.macro a6   $06E0  ; 1760 Hz
.macro as6  $0749  ; 1865 Hz
.macro b6   $07B8  ; 1976 Hz