en:pfw:library
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
en:pfw:library [2024-08-25 17:59] – [A little extra] willem | en:pfw:library [2024-09-04 13:16] (current) – [The viewer] willem | ||
---|---|---|---|
Line 17: | Line 17: | ||
* '' | * '' | ||
* '' | * '' | ||
+ | * '' | ||
===== Pseudo code ===== | ===== Pseudo code ===== | ||
Line 34: | Line 35: | ||
Function: .LIB ( -- ) | Function: .LIB ( -- ) | ||
Print all chapter headers in a human readable form. | Print all chapter headers in a human readable form. | ||
+ | | ||
+ | Function: VIEW ( " | ||
+ | When the keyword " | ||
+ | otherwise issue an error message | ||
| | ||
Function: FROM ( " | Function: FROM ( " | ||
Line 95: | Line 100: | ||
: 2TUCK 2swap 2over ; ( x1 x2 x3 x4 -- x3 x4 x1 x2 x3 x4 )<0D> | : 2TUCK 2swap 2over ; ( x1 x2 x3 x4 -- x3 x4 x1 x2 x3 x4 )<0D> | ||
<09> | <09> | ||
- | |||
\ 2ROT< | \ 2ROT< | ||
\ Rotate third double to top of stack< | \ Rotate third double to top of stack< | ||
: 2ROT 2>r 2swap 2r> 2swap ;<0D> | : 2ROT 2>r 2swap 2r> 2swap ;<0D> | ||
<09> | <09> | ||
- | |||
\ -2ROT< | \ -2ROT< | ||
\ Rotate top double to third double position on the stack< | \ Rotate top double to third double position on the stack< | ||
Line 273: | Line 276: | ||
</ | </ | ||
+ | ===== A viewer for the library ===== | ||
+ | |||
+ | This viewer shows 16 or less lines at a time. | ||
+ | It stops at a <09> character, prints a divider line and waits for user input. | ||
+ | When the spacebar was hit, it goes on displaying the next chapter. | ||
+ | Any other key leaves the viewer. | ||
+ | |||
+ | <code forth> | ||
+ | ( A library consists of 09 {tab}, 0D {cr} and ASCII chars ) | ||
+ | ( ranging from blank to ~ others chars are not allowed ) | ||
+ | \ Show the library source code of a chapter | ||
+ | : .LINE ( a1 -- a2 ch ) begin c@+ dup BL < 0= while emit repeat ; | ||
+ | : .DIVIDER | ||
+ | |||
+ | : LIBTYPE | ||
+ | begin | ||
+ | 10 0 do \ Max. 16 lines at a time | ||
+ | cr .line 09 = \ End of source chapter? | ||
+ | if .divider leave then \ Show divider & ready | ||
+ | loop | ||
+ | dup libhere < while \ More library source to be done? | ||
+ | key BL <> if drop exit then \ Yes, ask key, stop on non space | ||
+ | repeat | ||
+ | |||
+ | : VIEW ( " | ||
+ | |||
+ | </ | ||
===== A sample library source ===== | ===== A sample library source ===== | ||
This examples shows how many different code parts can be used inside the library.\\ | This examples shows how many different code parts can be used inside the library.\\ | ||
Line 291: | Line 321: | ||
chapter RESTORE-LIB | chapter RESTORE-LIB | ||
v: inside | v: inside | ||
- | | + | |
cr .( Libhere ) libhere u. | cr .( Libhere ) libhere u. | ||
cr .( Size ) libhere lib - dm . .( bytes ) | cr .( Size ) libhere lib - dm . .( bytes ) | ||
- | freeze | ||
v: fresh | v: fresh | ||
%% | %% | ||
Line 350: | Line 379: | ||
cr .( Size is about 174 kBytes ) | cr .( Size is about 174 kBytes ) | ||
- | <09>\ RESTORE-LIB | + | |
v: inside | v: inside | ||
- | | + | |
cr .( Libhere ) libhere u. | cr .( Libhere ) libhere u. | ||
cr .( Size ) libhere lib - dm . .( bytes ) | cr .( Size ) libhere lib - dm . .( bytes ) | ||
- | freeze | ||
v: fresh | v: fresh | ||
- | <09>\ VIEW | + | |
( A library consists of 09 {tab}, 0D {cr} and ASCII chars ) | ( A library consists of 09 {tab}, 0D {cr} and ASCII chars ) | ||
( ranging from blank to ~ others chars are not allowed ) | ( ranging from blank to ~ others chars are not allowed ) | ||
Line 379: | Line 407: | ||
v: fresh | v: fresh | ||
- | <09>\ PIN SQUERY | + | |
( GPIO -- ) \ Change GPIO pin for S? | ( GPIO -- ) \ Change GPIO pin for S? | ||
need [IF] | need [IF] | ||
Line 388: | Line 416: | ||
cr .( Test S? ) s? . | cr .( Test S? ) s? . | ||
- | <09>\ 12MHZ | + | |
\ change clock frequency | \ change clock frequency | ||
dm 12 0 cfg ! \ Set frequency in MHz | dm 12 0 cfg ! \ Set frequency in MHz | ||
Line 397: | Line 425: | ||
==== A little extra ==== | ==== A little extra ==== | ||
- | Loading a lot of library | + | Loading a lot of library |
Note that '' | Note that '' | ||
<code forth> | <code forth> | ||
v: inside | v: inside | ||
- | : NEED( | + | : NEED( |
begin bl-word count \ Read next keyword | begin bl-word count \ Read next keyword | ||
- | 2dup s" )" s<> | + | 2dup s" )" s<> |
- | while needed | + | while needed |
2drop ; \ Ready | 2drop ; \ Ready | ||
v: fresh | v: fresh |
en/pfw/library.1724601545.txt.gz · Last modified: 2024-08-25 17:59 by willem