From f3bb035975630fa647507008e7a8e63faca2923b Mon Sep 17 00:00:00 2001 From: Adam Shamblin Date: Tue, 26 Jul 2022 18:06:32 -0600 Subject: [PATCH] Minor changes, add docs --- Makefile | 3 ++- doc/README.md | 1 + doc/rng.md | 18 ++++++++++++++++++ src/terminal.fs | 2 +- src/timer.fs | 1 + src/wordle.fs | 11 +++++------ 6 files changed, 28 insertions(+), 8 deletions(-) create mode 100644 doc/rng.md diff --git a/Makefile b/Makefile index ec57a30..5a1c48d 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,7 @@ # As recommended by the Mecrisp-Stellaris unofficial docs # @ https://mecrisp-stellaris-folkdoc.sourceforge.io/serial-terminals.html +TTY ?= /dev/ttyUSB0 HW_FLOW_CONTROL ?= 1 LINESPEED = "" @@ -9,7 +10,7 @@ ifeq ($(HW_FLOW_CONTROL), 0) endif connect: - picocom -b 115200 -f h /dev/ttyUSB0 \ + picocom -b 115200 -f h $(TTY) \ --imap lfcrlf,crcrlf \ --omap delbs,crlf \ --send-cmd "ascii-xfr -s $(LINESPEED)" diff --git a/doc/README.md b/doc/README.md index b98bdeb..dfdac99 100644 --- a/doc/README.md +++ b/doc/README.md @@ -13,6 +13,7 @@ available using the `forthdeck` project. * [GPIO](gpio.md) * [Terminal](terminal.md) * [UART](uart.md) +* [RNG](rng.md) * [Wordle](wordle.fs) ## System diff --git a/doc/rng.md b/doc/rng.md new file mode 100644 index 0000000..60acd9b --- /dev/null +++ b/doc/rng.md @@ -0,0 +1,18 @@ +--- +title: Random Number Generator +file: rng.fs +--- +# RNG + +The random number generator relies upon the rp2040's Ring Oscilator and it's +random bit register to generate a random integer. + +# Random Number Generator + +### random ( bits -- n ) + +Given a number of bits, leave a number within that range on the stack. + +```forth +8 random . 219 ok +``` diff --git a/src/terminal.fs b/src/terminal.fs index 0182ed4..723f143 100644 --- a/src/terminal.fs +++ b/src/terminal.fs @@ -59,7 +59,7 @@ : [cyan/bg] ( -- ) BG CYAN + [format] ; \ Attributes -: [bold] ( -- ) BOLD [format] ; +: [bold] ( -- ) BRIGHT [format] ; : [dim] ( -- ) DIM [format] ; : [italic] ( -- ) ITALIC [format] ; : [underline] ( -- ) UNDERLINE [format] ; diff --git a/src/timer.fs b/src/timer.fs index 7355d39..46e03b1 100644 --- a/src/timer.fs +++ b/src/timer.fs @@ -1,4 +1,5 @@ \ Words for dealing with the system timer peripheral +\ Section 4.6, rp2040 datasheet $e0000000 constant PPB_BASE PPB_BASE $e100 + constant NVIC_ISER \ Interrupt set-enable register diff --git a/src/wordle.fs b/src/wordle.fs index a148d01..953f2f7 100644 --- a/src/wordle.fs +++ b/src/wordle.fs @@ -12,6 +12,9 @@ CREATE lexicon SIZE ALLOT lexicon VARIABLE lex-ptr +: advance ( -- ) WORDSIZE lex-ptr +! ; +: store ( size addr -- ) lex-ptr @ SWAP MOVE advance ; + \ Given an address for storage, read and store \ a string to memory. : load-lexicon ( addr -- ) @@ -19,13 +22,9 @@ lexicon VARIABLE lex-ptr lex-ptr @ WORDSIZE ACCEPT WORDSIZE = WHILE - WORDSIZE lex-ptr +! + advance REPEAT ; -: advance ( -- ) WORDSIZE lex-ptr +! ; - -: store ( size addr -- ) lex-ptr @ SWAP MOVE advance ; - : fake-lexicon ( addr -- ) s" women" store s" nikau" store @@ -41,7 +40,7 @@ lexicon VARIABLE lex-ptr : char= ( char word index -- flag ) char@ = ; \ Select a random word from lexicon -: randword. ( -- addr ) 2 random word. ; +: randword. ( -- ) 2 random word. ; : randword@ ( -- addr ) 2 random word@ ; \ See if a word contains a letter -- 2.39.5