all repos — xyw @ f4ae1f7b2b4447693b14a4701aec895785f00871

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.ssp             $02
.macro system.usp             $03
.macro system.page            $04
.macro system.random          $05
.macro system.on_error        $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 $11 STB

;;; ASCII Characters
.macro NL $0A 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 note.c4   $0106  ; 262 Hz
.macro note.cs4  $0115  ; 277 Hz
.macro note.d4   $0126  ; 294 Hz
.macro note.ds4  $0137  ; 311 Hz
.macro note.e4   $014A  ; 330 Hz
.macro note.f4   $015D  ; 349 Hz
.macro note.fs4  $0172  ; 370 Hz
.macro note.g4   $0188  ; 392 Hz
.macro note.gs4  $019F  ; 415 Hz
.macro note.a4   $01B8  ; 440 Hz
.macro note.as4  $01D2  ; 466 Hz
.macro note.b4   $01EE  ; 494 Hz

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

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