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-26 22:35] – [The library is just bare ASCII] 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 | ||
%% | %% |
en/pfw/library.1724704531.txt.gz · Last modified: 2024-08-26 22:35 by willem