summaryrefslogtreecommitdiff
path: root/themes/test7/test7.gb
diff options
context:
space:
mode:
Diffstat (limited to 'themes/test7/test7.gb')
-rw-r--r--themes/test7/test7.gb136
1 files changed, 136 insertions, 0 deletions
diff --git a/themes/test7/test7.gb b/themes/test7/test7.gb
new file mode 100644
index 0000000..c5fcae4
--- /dev/null
+++ b/themes/test7/test7.gb
@@ -0,0 +1,136 @@
+/true 0 0 eq def
+/false 0 0 ne def
+
+/t_none 0 def
+/t_int 1 def
+/t_string 4 def
+/t_end 11 def
+/t_ptr 12 def
+
+/.undef 0 t_none settype def
+/.end 0 t_end settype def
+
+/cvp { t_ptr settype } def
+/cvs { t_string settype } def
+/cvn { t_int settype } def
+
+/sprintf { dup cvp length exch snprintf } def
+
+/string { 1 add malloc cvs } def
+
+/clearscreen {
+ 0xb8000 2 0xb8000 160 25 mul add 1 sub {
+ cvp 0x0720 putword
+ } for
+} def
+
+% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+% pc speaker beep.
+%
+% ( freq duration -- )
+%
+% freq in Hz, duration in microseconds.
+%
+/beep {
+ exch
+ 0x61 inbyte
+ dup 3 or 0x61 exch outbyte
+ 0x43 0xb6 outbyte
+ exch 2386360 exch div
+
+ dup 0x42 exch outbyte
+ 8 shr 0x42 exch outbyte
+
+ exch usleep
+
+ 0x61 exch 0xfc and outbyte
+} def
+
+
+/waitkey { { getkey dup 0 ne { exit } { pop } ifelse } loop } def
+
+/print {
+ exch 80 mul
+ rot add 2 mul 0xb8000 add cvp
+ exch { over exch putbyte 2 add } forall
+ pop
+} def
+
+/print.number {
+ 32 string
+ exch over
+ "%08x" exch sprintf
+ dup 4 1 roll print
+ free
+} def
+
+
+/showinfo {
+ 40 1
+ 0x46c cvp getdword print.number
+ 50 1
+ test4 print.number
+
+ 40 2
+ test2 getdword print.number
+ 50 2
+ test2 4 add getdword print.number
+
+ 60 2
+ test6 getdword print.number
+ 70 2
+ test6 4 add getdword print.number
+
+ 60 1
+ test5 print.number
+
+ 40 3
+ test3 print.number
+
+ 50 3
+ sound.getsamplerate print.number
+
+} def
+
+clearscreen
+
+/wav1 "s01_en.wav" findfile def
+/wav3 "foo.wav" findfile def
+
+0 0 wav1 cvn print.number
+20 0 wav1 cvn print.number
+
+50 sound.setvolume
+
+{
+ showinfo
+
+ getkey 0xff and
+ dup 0 ne { dup 1 string dup 0 4 -1 roll put 1 24 2 index print free } if
+ dup 'q' eq { exit } if
+ dup 'V' eq { 100 sound.setvolume } if
+ dup 'v' eq { 50 sound.setvolume } if
+ dup 'd' eq { sound.done } if
+ dup 'b' eq { 3000 50000 beep } if
+ dup 's' eq { 2000 sound.setsamplerate } if
+ dup 'm' eq {
+ 0 memsize 0 10 rot print.number 10 10 rot print.number
+ 1 memsize 0 11 rot print.number 10 11 rot print.number
+ 2 memsize 0 12 rot print.number 10 12 rot print.number
+ } if
+ dup '1' eq { wav1 wav.play } if
+ dup '3' eq { wav3 wav.play } if
+ dup '2' eq {
+ /wav2 "s05_en.wav" findfile def
+ 10 0 wav2 cvn print.number
+ wav2 wav.play
+ wav2 free
+ } if
+
+ pop
+} loop
+
+
+dtrace
+
+true