1
0
mirror of https://github.com/mgcaret/of816.git synced 2024-12-29 17:31:57 +00:00
of816/utils
2020-10-21 23:24:29 -07:00
..
covrep.rb update utils to support indexing of headerless words 2020-10-21 23:24:29 -07:00
fs2asm.rb update utils to support indexing of headerless words 2020-10-21 23:24:29 -07:00
index2md.rb update utils to support indexing of headerless words 2020-10-21 23:24:29 -07:00
index.rb update utils to support indexing of headerless words 2020-10-21 23:24:29 -07:00
make_docs.sh start docgen automation 2020-01-13 16:58:39 -08:00
README.md add fs2asm.rb: forth-to-assembly converter 2020-10-21 18:26:41 -07:00

OF816 Utilities

index.rb

Usage: index.rb <file.s> [coverage.yml]

This will index the words appearing in an assembly source file and output YAML on STDOUT containing entries for each word along with the help text derived from comments preceding the word.

Help text is derived from comments of the form:

; H: ( -- ) example help text
; H: a second line

A word can be excluded from indexing if the word noindex is found on the line containing the dword or dwordq macro for the word:

dword MY_WORD,"MY-WORD" ; noindex

Test coverage data (see platforms/GoSXB) can be merged into the output in order to be used by the covrep.rb utility and a future documentation generator.

index2md.rb

Usage: index2md.rb index.yml

Convert index.yml to markdown on stdout for word documentation.

Efforts are made to add emphasis to stack effects and intelligently split separate semantics.

covrep.rb

Usage: covrep.rb index.yml

This takes the output (redirected to a file) from index.rb and produces a test coverage report, listing the covered and uncovered word counts, the words that are not covered, and the percentage of words that are covered.

Example:

Total words: 402
Covered words: 292
Uncovered words: 110
        SET-ORDER FORTH-WORDLIST CONTEXT GET-CURRENT GET-ORDER
        ALSO PREVIOUS SET-CURRENT ONLY SEAL
        ORDER DEFINITIONS .VERSION RESET-ALL BYE
        ABORT" ABORT UNUSED #IN COMPILE,
        UNALIGNED-L@ UNALIGNED-W@ UNALIGNED-L! UNALIGNED-W! 2>R
        N>R 2R> NR> 2R@ 2ROT
        <> U<= U> U>= <=
        AHEAD AGAIN WITHIN BETWEEN ?DO
        DNEGATE DABS D>S 2S>D (CR
        PAGE AT-XY SIGNUM U/MOD UD/MOD
        U* U# D.R D. U.0
        CMOVE CMOVE> COMPARE /STRING SEARCH
        WBFLIPS LBFLIPS LWFLIPS CPEEK WPEEK
        LPEEK CPOKE WPOKE LPOKE FCODE-REVISION
        FERROR SET-TOKEN GET-TOKEN RB@ RW@
        RL@ RB! RW! RL! $BYTE-EXEC
        BYTE-LOAD DUMP LEFT-PARSE-STRING PARSE-2INT SEARCH-WORDLIST
        $SEARCH $SOURCE-ID SOURCE-ID REFILL SHOWSTACK
        NOSHOWSTACK PARSE-NAME SLITERAL " COMPILE
        [COMPILE] WORDS (SEE) SEE (IS-USER-WORD)
        $VALUE :NONAME ;CODE WORDLIST VOCABULARY
        \ SAVE-INPUT $RESTORE-INPUT RESTORE-INPUT $FORGET
Coverage: 72%

fs2asm.rb

Convert Forth source code to assembly language equivalent.

Please read the comments at the beginning of the program for usage.