From 7ec27fbeef41a63f535bbe1ba3668d9cb98c5ab7 Mon Sep 17 00:00:00 2001
From: Brad Nelson Requires v7.0.7.3+ -- ONLY Posix + ESP32 Requires v7.0.7.3+ -- ONLY Posix Requires v7.0.7.2+
{{FORTH}} uses a hybrid of Forth-79 and Forth-83 style vocabularies.
@@ -127,73 +90,6 @@ DEFINED? ( "name" -- xt|0 ) Check if a word exists (works at compile time too).
[THEN] ( -- ) Interpret time THEN.
- Requires v7.0.7.2+ for UDP Requires v7.0.6.5+
@@ -290,58 +186,3 @@ Capabilities and limitations:
ESP32forth Specific Words
{{COMMON}}
+{{FILES_COMMON}}
{{POSIX_COMMON}}
ESP32forth Bindings
diff --git a/site/common.html b/site/common.html
index eca4658..ccd8b98 100644
--- a/site/common.html
+++ b/site/common.html
@@ -46,43 +46,6 @@ REMAINING ( -- n ) Bytes remaining in Forth heap.
DUMP-FILE ( data data# fn fn# -- ) Write contents of a file throws on error.
-Shell Utilities
-
-cp ( "src" "dst" -- ) Copy "src" file to "dst".
-mv ( "src" "dst" -- ) Rename "src" file to "dst".
-rm ( "path" -- ) Remove "path" file.
-touch ( "path" -- ) Create "path" file if it doesn't exist.
-cat ( "path" -- ) Print contents of "path" file.
-ls ( "path" -- ) List files or directories in "path".
-
-
-cd ( "path" -- ) Change director to "path".
-mkdir ( "path" -- ) Create directory "path".
-rmdir ( "path" -- ) Remove directory "path".
-pwd ( -- ) Print current directory.
-
-
-Visual Editor
-
-VISUAL EDIT ( "path" --) Enters a visual editor opening file "path".
-
-NOTE: On ESP32 requires connection over an ANSI serial terminal like Putty.
-
-LIMITATIONS: Terminal doesn't know screen dimensions
- and is very redraw inefficient.
-
-Keys:
- Ctrl-S -- Save now.
- Ctrl-X / Ctrl-Q -- Quit, asking Y/N to save.
- Ctrl-L -- Redraw the screen.
- Backspace -- Delete a character backwards.
- Arrow Keys -- Movement.
- PgUp/PgDn -- Scroll up/down a page.
-
-
Vocabularies
Blocks
-
-USE ( "name" -- ) Use "name" as the blockfile, e.g. USE /spiffs/foo
-OPEN-BLOCKS ( a n -- ) Open a file as the block file
-LOAD ( n -- ) Evaluate a block
-THRU ( a b -- ) Load blocks a thru b
-LIST ( n -- ) List a block
-BLOCK ( n -- a ) Get a 1024 byte block
-BUFFER ( n -- a ) Get a 1024 byte block without regard to old contents
-UPDATE ( -- ) Mark the last block modified
-FLUSH ( -- ) Save and empty all buffers
-EMPTY-BUFFERS ( -- ) Empty all buffers
-SAVE-BUFFERS ( -- ) Save all buffers
-SCR ( -- a ) Pointer to last listed block
-
-
-Block Editor
-These words are available inside the EDITOR vocabulary.
-Note the block editor places newlines in the 63rd column of each line
-to make the block file readable in a text editor.
-
-WIPE ( -- ) Blank out the current block
-L ( -- ) List the current block
-D ( n -- ) Delete a line in the current block
-E ( n -- ) Clear a line in the current block
-R ( n "text" -- ) Replace a line in the current block
-A ( n "text" -- ) Add (insert) a line in the current block
-P ( -- ) Move to the previous block
-N ( -- ) Move to the next block
-
-
-Sockets
-sockets vocabulary.
-
-socket ( domain type protocol -- sock/err )
-setsockopt ( sock level optname optval optlen -- 0/err )
-bind ( sock addr addrlen -- 0/err )
-listen ( sock connections -- 0/err )
-sockaccept ( sock addr addrlen -- sock/err ) -- varies from bsd socks
-connect ( sock addr addrlen -- 0/err )
-select ( numfds readfds writefds errfds timeout -- fd/err )
-poll ( pollfds n timeout -- fd/err )
-send ( sock a n flags -- n/err )
-sendto ( sock a n flags addr addrlen -- n/err )
-sendmsg ( sock msg flags -- n/err )
-recv ( sock a n flags -- n/err )
-recvfrom ( sock a n flags addr addrlen -- n/err )
-recvmsg ( sock msg flags -- n/err )
-gethostbyname ( hostnamez -- hostent/0 )
-errno ( -- err ) -- ESP32 only as of v7.0.7.2
-
-sockaddr ( "name" -- ) creates a sockaddr structure
-->port@ ( a -- n ) get port from sockaddr
-->port! ( n a -- ) set port in sockaddr
-->addr@ ( a -- n ) get big-endian address from sockaddr
-->addr! ( n a -- ) set big-endian address in sockaddr
-ip. ( n -- ) Print address as x.y.z.w IP address.
-
-( Constants )
-SOCK_STREAM SOCK_DGRAM SOCK_RAW
-AF_INET
-sizeof(sockaddr_in)
-SOL_SOCKET
-SO_REUSEADDR
-
-
Floating-Point
(LOCAL) is also supported.
-
- -
-WARNING: Danger ahead.
-Snapshotting the dictionary may not be stable across reinstallations of the C build of Forth.
-
-A collection of non-standard words is provided that allow snapshotting -the dictionary and restoring it at startup, with a start word. -
- --SAVE ( "name" -- ) Saves a snapshot of the current dictionary to a file. -RESTORE ( "name" -- ) Restore a snapshot from a file. -REMEMBER ( -- ) Save a snapshot to the default file - (./myforth or /spiffs/myforth on ESP32). -STARTUP: ( "name" -- ) Save a snapshot to the default file arranging for - "name" to be run on startup. -REVIVE ( -- ) Restore the default filename. -RESET ( -- ) Delete the default filename. -- -
-Here's an example usage: -
- --: welcome ." Hello!" cr 100 0 do i . loop cr ; -startup: welcome -bye - -( Next boot will run a custom startup message ) - -reset - -( Reset removes the custom message ) -- -
-The INTERNALS vocabulary has some additional words
-for more control.
-
-SAVE-NAME ( a n -- ) Save a snapshot if the current vocabulary to a file. -RESTORE-NAME ( a n -- ) Restore a snapshot from a file. -'COLD ( -- a ) Address of the word that will be run on startup. -REMEMBER-FILENAME ( -- a n ) Deferred word specifying the platform specific - default snapshot filename. -diff --git a/site/files_common.html b/site/files_common.html new file mode 100644 index 0000000..f03f201 --- /dev/null +++ b/site/files_common.html @@ -0,0 +1,174 @@ + + +
Requires v7.0.7.3+ -- ONLY Posix + ESP32
++cp ( "src" "dst" -- ) Copy "src" file to "dst". +mv ( "src" "dst" -- ) Rename "src" file to "dst". +rm ( "path" -- ) Remove "path" file. +touch ( "path" -- ) Create "path" file if it doesn't exist. +cat ( "path" -- ) Print contents of "path" file. +ls ( "path" -- ) List files or directories in "path". ++
Requires v7.0.7.3+ -- ONLY Posix
++cd ( "path" -- ) Change director to "path". +mkdir ( "path" -- ) Create directory "path". +rmdir ( "path" -- ) Remove directory "path". +pwd ( -- ) Print current directory. ++ +
Requires v7.0.7.2+
++VISUAL EDIT ( "path" --) Enters a visual editor opening file "path". + +NOTE: On ESP32 requires connection over an ANSI serial terminal like Putty. + +LIMITATIONS: Terminal doesn't know screen dimensions + and is very redraw inefficient. + +Keys: + Ctrl-S -- Save now. + Ctrl-X / Ctrl-Q -- Quit, asking Y/N to save. + Ctrl-L -- Redraw the screen. + Backspace -- Delete a character backwards. + Arrow Keys -- Movement. + PgUp/PgDn -- Scroll up/down a page. ++ +
+USE ( "name" -- ) Use "name" as the blockfile, e.g. USE /spiffs/foo +OPEN-BLOCKS ( a n -- ) Open a file as the block file +LOAD ( n -- ) Evaluate a block +THRU ( a b -- ) Load blocks a thru b +LIST ( n -- ) List a block +BLOCK ( n -- a ) Get a 1024 byte block +BUFFER ( n -- a ) Get a 1024 byte block without regard to old contents +UPDATE ( -- ) Mark the last block modified +FLUSH ( -- ) Save and empty all buffers +EMPTY-BUFFERS ( -- ) Empty all buffers +SAVE-BUFFERS ( -- ) Save all buffers +SCR ( -- a ) Pointer to last listed block ++ +
EDITOR vocabulary.
+Note the block editor places newlines in the 63rd column of each line
+to make the block file readable in a text editor.
++WIPE ( -- ) Blank out the current block +L ( -- ) List the current block +D ( n -- ) Delete a line in the current block +E ( n -- ) Clear a line in the current block +R ( n "text" -- ) Replace a line in the current block +A ( n "text" -- ) Add (insert) a line in the current block +P ( -- ) Move to the previous block +N ( -- ) Move to the next block ++ +
Requires v7.0.7.2+ for UDP
+These words are available inside thesockets vocabulary.
++socket ( domain type protocol -- sock/err ) +setsockopt ( sock level optname optval optlen -- 0/err ) +bind ( sock addr addrlen -- 0/err ) +listen ( sock connections -- 0/err ) +sockaccept ( sock addr addrlen -- sock/err ) -- varies from bsd socks +connect ( sock addr addrlen -- 0/err ) +select ( numfds readfds writefds errfds timeout -- fd/err ) +poll ( pollfds n timeout -- fd/err ) +send ( sock a n flags -- n/err ) +sendto ( sock a n flags addr addrlen -- n/err ) +sendmsg ( sock msg flags -- n/err ) +recv ( sock a n flags -- n/err ) +recvfrom ( sock a n flags addr addrlen -- n/err ) +recvmsg ( sock msg flags -- n/err ) +gethostbyname ( hostnamez -- hostent/0 ) +errno ( -- err ) -- ESP32 only as of v7.0.7.2 + +sockaddr ( "name" -- ) creates a sockaddr structure +->port@ ( a -- n ) get port from sockaddr +->port! ( n a -- ) set port in sockaddr +->addr@ ( a -- n ) get big-endian address from sockaddr +->addr! ( n a -- ) set big-endian address in sockaddr +ip. ( n -- ) Print address as x.y.z.w IP address. + +( Constants ) +SOCK_STREAM SOCK_DGRAM SOCK_RAW +AF_INET +sizeof(sockaddr_in) +SOL_SOCKET +SO_REUSEADDR ++ +
+
+ +
+WARNING: Danger ahead.
+Snapshotting the dictionary may not be stable across reinstallations of the C build of Forth.
+
+A collection of non-standard words is provided that allow snapshotting +the dictionary and restoring it at startup, with a start word. +
+ ++SAVE ( "name" -- ) Saves a snapshot of the current dictionary to a file. +RESTORE ( "name" -- ) Restore a snapshot from a file. +REMEMBER ( -- ) Save a snapshot to the default file + (./myforth or /spiffs/myforth on ESP32). +STARTUP: ( "name" -- ) Save a snapshot to the default file arranging for + "name" to be run on startup. +REVIVE ( -- ) Restore the default filename. +RESET ( -- ) Delete the default filename. ++ +
+Here's an example usage: +
+ ++: welcome ." Hello!" cr 100 0 do i . loop cr ; +startup: welcome +bye + +( Next boot will run a custom startup message ) + +reset + +( Reset removes the custom message ) ++ +
+The INTERNALS vocabulary has some additional words
+for more control.
+
+SAVE-NAME ( a n -- ) Save a snapshot if the current vocabulary to a file. +RESTORE-NAME ( a n -- ) Restore a snapshot from a file. +'COLD ( -- a ) Address of the word that will be run on startup. +REMEMBER-FILENAME ( -- a n ) Deferred word specifying the platform specific + default snapshot filename. +diff --git a/site/linux.html b/site/linux.html index 81a1044..86efdad 100644 --- a/site/linux.html +++ b/site/linux.html @@ -61,9 +61,10 @@ limitations under the License.
+ueforth-pico-ice-{{VERSION}}.zip
+ Version: {{VERSION}} (Beta)
+
+Release Archive + - Prior Releases +
++http://github.com/flagxor/ueforth + - Complete Unprocessed Source Code +
+ ++ +NOTE: Although ueforth is licensed under Apache 2.0, +please be aware that binaries are built with SDKs that include other licenses including +MIT, +Raspberry Pi License, +and possibly others. +Be sure to consult a lawyer before using for comercial purposes. + +
+ ++Copyright 2023 Bradley D. Nelson + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. ++ +
+
+
+Initially µEforth can be interacted with over a serial port (over USB).
+One popular option is to use the serial port option on
+PuTTY.
+Be sure to config the serial port to: baud rate = 115200, data bits = 8, stop bits = 1, and parity = N.
+
internals vocabulary.
++MALLOC ( n -- a | 0 ) System malloc +SYSFREE ( a -- ) System free +REALLOC ( a n -- a | 0 ) System realloc ++ +
+MS ( n -- ) Pause for some number of milliseconds. +MS-TICKS ( -- n ) Time since start in milliseconds. +TERMINATE ( n -- ) Call system exit. ++ +
+R/O ( -- mode ) +R/W ( -- mode ) +W/O ( -- mode ) +BIN ( mode -- mode ) +CLOSE-FILE ( fh -- ior ) +OPEN-FILE ( a n mode -- fh ior ) +CREATE-FILE ( a n mode -- fh ior ) +DELETE-FILE ( a n -- ior ) +WRITE-FILE ( a n fh -- ior ) +READ-FILE ( a n fh -- n ior ) +FILE-POSITION ( fh -- n ior ) +REPOSITION-FILE ( n fh -- ior ) +FILE-SIZE ( fh -- n ior ) ++ +
ice vocabulary.
+See here
+for details on the underlying SDK.
++ice_cram_open ( -- ) Open FPGA config RAM connection. +ice_cram_write ( a n -- ) Write bytes to the FPGA config RAM connection. +ice_cram_close ( -- ) Close FPGA config RAM connection. + +ICE_FLASH_PAGE_SIZE ( -- n ) Get the size of a flash page. +ice_flash_init ( -- ) Init flash connection. +ice_flash_read ( addr a n -- ) Read from a flash address to a buffer. +ice_flash_erase_sector ( n -- ) Erase a flash sector. +ice_flash_program_page ( addr a -- ) Program a flash page. +ice_flash_erase_chip ( -- ) Erase whole flash. +ice_flash_wakeup ( -- ) Wakeup flash. +ice_flash_sleep ( -- ) Put flash in sleep mode. + +ice_fpga_init ( n -- ) Init FPGA to a clock speed in MHz. + Valid inputs: 1, 2, 3, 4, 6, 8, 12, 16, 24, 48 +ice_fpga_start ( -- ) Start FPGA. +ice_fpga_stop ( -- ) Stop FPGA. + +ice_led_init ( -- ) Initialize LED. +ice_led_red ( f -- ) Set on/off state of led red channel. +ice_led_green ( f -- ) Set on/off state of led green channel. +ice_led_blue ( f -- ) Set on/off state of led blue channel. + +ice_spi_init ( -- ) Initialize SPI. +ice_spi_init_cs_pin ( cs_pin active_high -- ) Init selecting more options. +ice_spi_chip_select ( n -- ) Set csn_pin to assert. + Also set the SPI TX and SCK pins to output/drive mode, + and keeps the RX pin to input/high-z mode. +ice_spi_chip_deselect ( n -- ) Set csn_pin to assert. + Also set the SPI TX and SCK pins back to input/high-z mode. +ice_spi_read_blocking ( a n -- ) Read from SPI into buffer. +ice_spi_write_blocking ( a n -- ) Write to SPI from buffer. + +ice_sram_init ( -- ) Initialize SRAM. +ice_sram_get_id ( a -- ) Read SRAM id into 8 byte buffer. +ice_sram_read_blocking ( addr a n -- ) Read from address in SRAM to memory. +ice_sram_write_blocking ( addr a n -- ) Write from memory to SRAM. +diff --git a/site/windows.html b/site/windows.html index d480a46..ba76d62 100644 --- a/site/windows.html +++ b/site/windows.html @@ -67,9 +67,10 @@ limitations under the License.