]> Vexing Labs - forthdeck.git/commitdiff
Start on gpio
authorAdam Shamblin <adam@vexingworkshop.com>
Mon, 16 May 2022 03:01:36 +0000 (21:01 -0600)
committerAdam Shamblin <adam@vexingworkshop.com>
Mon, 16 May 2022 03:01:36 +0000 (21:01 -0600)
gpio.fs [new file with mode: 0644]
terminal.fs

diff --git a/gpio.fs b/gpio.fs
new file mode 100644 (file)
index 0000000..e4fdd2c
--- /dev/null
+++ b/gpio.fs
@@ -0,0 +1,13 @@
+\ Functions for managing GPIO pins
+
+\ User bank IO registers
+$40014000 constant IO_BANK0_BASE
+
+: pins ( -- )
+  $30 $00 DO I u. 4 +LOOP ;
+
+: pin-status ( -- )
+  cr
+  30 0 DO
+    I u.
+    I 8 * IO_BANK0_BASE + @ hex. cr LOOP ;
index 6275df47d5f2f2a0ef22e523fe4a6497e75db0df..34a5e2fcb1fbd171f8e4622dc9cdcb41b3a1d908 100644 (file)
@@ -1,37 +1,47 @@
+\ Emit escape codes
 : ESC[ ( -- ) 27 emit 91 emit ;
 
-: erase ( n -- )
-  0 ?DO $08 emit LOOP ;
-
-: countdown ( n -- )
-  cr ." Counting... "
-  0 ?DO I . 2 ERASE LOOP ;
+\ Movement
+: [home] ( -- ) ESC[ ." H" ;
+: at-xy ( column row -- ) 1+ swap 1+ swap ESC[ u. ." ;" u. ." H" ;
 
 \ Foreground colors
-: [black]   ( -- ) ESC[ ." 30m " ;
-: [red]     ( -- ) ESC[ ." 31m " ;
-: [green]   ( -- ) ESC[ ." 32m " ;
-: [yellow]  ( -- ) ESC[ ." 33m " ;
-: [blue]    ( -- ) ESC[ ." 34m " ;
-: [magenta] ( -- ) ESC[ ." 35m " ;
-: [cyan]    ( -- ) ESC[ ." 36m " ;
+: [color] ( n -- ) ESC[ u. ." m" ;
+: [black]   ( -- ) 30 [color] ;
+: [red]     ( -- ) 31 [color] ;
+: [green]   ( -- ) 32 [color] ;
+: [yellow]  ( -- ) 33 [color] ;
+: [blue]    ( -- ) 34 [color] ;
+: [magenta] ( -- ) 35 [color] ;
+: [cyan]    ( -- ) 36 [color] ;
 
 \ Background colors
-: [black/bg]    ( -- ) ESC[ ." 40m " ;
-: [red/bg]      ( -- ) ESC[ ." 41m " ;
-: [green/bg]    ( -- ) ESC[ ." 42m " ;
-: [yellow/bg]   ( -- ) ESC[ ." 43m " ;
-: [blue/bg]     ( -- ) ESC[ ." 44m " ;
-: [magenta/bg]  ( -- ) ESC[ ." 45m " ;
-: [cyan/bg]     ( -- ) ESC[ ." 46m " ;
+: [black/bg]    ( -- ) ESC[ ." 40m" ;
+: [red/bg]      ( -- ) ESC[ ." 41m" ;
+: [green/bg]    ( -- ) ESC[ ." 42m" ;
+: [yellow/bg]   ( -- ) ESC[ ." 43m" ;
+: [blue/bg]     ( -- ) ESC[ ." 44m" ;
+: [magenta/bg]  ( -- ) ESC[ ." 45m" ;
+: [cyan/bg]     ( -- ) ESC[ ." 46m" ;
 
 \ Attributes
-: [bold]      ( -- ) ESC[ ." 1m " ;
-: [dim]       ( -- ) ESC[ ." 2m " ;
-: [smso]      ( -- ) ESC[ ." 3m " ;
-: [underline] ( -- ) ESC[ ." 4m " ;
-: [blink]     ( -- ) ESC[ ." 5m " ;
-: [reverse]   ( -- ) ESC[ ." 7m " ;
+: [bold]      ( -- ) ESC[ ." 1m" ;
+: [dim]       ( -- ) ESC[ ." 2m" ;
+: [smso]      ( -- ) ESC[ ." 3m" ;
+: [underline] ( -- ) ESC[ ." 4m" ;
+: [blink]     ( -- ) ESC[ ." 5m" ;
+: [reverse]   ( -- ) ESC[ ." 7m" ;
 
 \ Reset to default colors
-: [reset]   ( -- ) ESC[ ." 0m " ;
+: [reset]   ( -- ) ESC[ ." 0m" ;
+
+: rainbow ( -- )
+  [red] ." r"
+  [yellow] ." a"
+  [green] ." i"
+  [blue] ." n"
+  [cyan] ." b"
+  [magenta] ." o"
+  [red] ." w"
+  [reset] ;
+