TriOS/forth/hss.lib

61 lines
1.4 KiB
Plaintext

hex
ifnot: lib:hss
: lib:hss ;
\ kommandoformate
ifnot: adm:fkt! \ ( fkt -- )
: adm:fkt! b[ [a!] ]b ;
ifnot: adm:fkt!b! \ ( b fkt -- )
: adm:fkt!b! b[ [a!] [a!] ]b ;
ifnot: adm:fkt!b!b! \ ( b b fkt -- )
: adm:fkt!b!b! b[ [a!] [a!] [a!] ]b ;
ifnot: adm:fkt!b!w@ \ ( b fkt -- w )
: adm:fkt!b!w@ b[ [a!] [a!] [a.w@] ]b ;
ifnot: adm:fkt!s!b@ \ ( cstr fkt -- b )
: adm:fkt!s!b@ b[ [a!] [a.s!] [a@] ]b ;
\ hss-funktionen
\ ( cstr -- err ) - hss-datei laden
ifnot: hss:load
: hss:load dup if 64 adm:fkt!s!b@ then ;
\ ( -- ) - datei im puffer abspielen
ifnot: hss:play
: hss:play 65 adm:fkt! ;
\ ( -- ) - player stop
ifnot: hss:stop
: hss:stop 66 adm:fkt! ;
\ ( -- ) - player pause
ifnot: hss:pause
: hss:pause 67 adm:fkt! ;
\ hreg ( regnr -- 16b )
\ 0 iEndFlag iRowFlag iEngineC iBeatC iRepeat Player
\ 5 iNote iOktave iVolume iEffekt iInstrument Kanal 1
\ 10 iNote iOktave iVolume iEffekt iInstrument Kanal 2
\ 15 iNote iOktave iVolume iEffekt iInstrument Kanal 3
\ 20 iNote iOktave iVolume iEffekt iInstrument Kanal 4
\
\ iEndFlag Repeat oder Ende wurde erreicht
\ iRowFlag Trackerzeile (Row) ist fertig
\ iEngineC Patternzähler
\ iBeatC Beatzähler (Anzahl der Rows)
\ iRepeat Zähler für Loops
ifnot: hss:reg
: hss:reg 69 b[ [a!] [a!] [a.w@] ]b ;
\ hvol ( vol -- ) - lautstärke 0..15
ifnot: hss:vol
: hss:vol 6A adm:fkt!b! ;