Forth kernel shared dll for i586-pc-linux/ELF in assembly, ANS-Forth standard compliant
Be the first to post a text review of lib4th. Rate and review a project by clicking thumbs up or thumbs down in the right column.
# --------------------------------------------------------------------------------- # # CHANGELOG - re <cvs log -D now lib4th> for more details - [hp, 1.1.01] # files a-4th-design.inc, ansdoc.inc, answset_idx always updated, accordingly # --------------------------------------------------------------------------------- # # # pse, NOTE that 0.x.xx versions are not necessarily binary-compatible because # almost every version implements new words and/or changed u.o.t. indices. # versionfilechanges 0.2.05 -released 27.2.01- 0.2.04lib4th.asm {'body}renamed from {loc'}, according to word's action which is applicable to any, global or local word. {local:}compiling & interpreting ok {locals|}ok - for use while compiling, only {build}expecting kref'd 4th-ptr for stg fetching routine. {to},{+to}fixed admin commitfor CVS maintanance & automatic TAG-vari update, cvrto switch between local and sourceforge CVS-root. src ...asmsources moved to src directory. tests f8...shfiles moved to tests directory. 0.2.03lib4th.asm(intermediate rel & sf CVS update) locals... - incomplete - 0.2.02lib4th.asm {imed} etcword-header flag values {lfa>body}ret ptr to data-"body" by lfa {max-xy}actual sizes stored by SIGWINCH to sysvari {vlist}names wrapping into next line fixed {rev-on},{rev-off} {out} count fixed {?eol}flag if @out at max-x {?cr}cr if @out at max-x {expect}bugfix: does'nt exceed length limit by more than 2, which is required for internal eol code storage. LOCALS wordset (almost) done: {(local)}basic local values assignation {to},{+to}modified for local values {#LOCALS}env. query def'd additionally: {loc'}body address of a local header, while compiling {locals}free cells of local storage {locals?}flag whether sufficient locals storage space {local:}local value defining word 0.2.01lib4th.asm {>loc}local dataspace de-/allocation {iopl},{ioperm} syscalls {p@},{p@s}etc. port access more multi-cell integer words: {nn>r},{nnr>} move counted group of cells to/from rp {n->}adjust to minimal size wo. loss of praecision {nnover}, {nnpick}, {nnroll}, {nnrot}, {nnswap} stack opr's (chnum)1st level channel numbers relocation removed <setkbd>/<svcons> file-name lenght bug for open fixed 0.2.00lib4th.asm {2rshifta}in float voc fixed wrt shift count > 31 {exp(2)}new, sing exp. to double, power of two {abort}{sp!} related bug fixed {+place}appending towards lower addr w. overlapping stgs bug fixed {s"} etc.newly done; intermediate string interpreting bug fixed for : name ... [ s" ... " ] ... ; etc., which compiled permanently, insted of returning the string data. <isegf>fixed {n->n},{un->un} signed & unsigned multi-cell integer format conversion {nrshift}, {nlshift} bitwise multi-cell shift opr's reloc.inc <kernref>bug fixed ndot.f8 hi-level, multi-cell integer to string conversion {n<#},{n#},{n#s},{n#>},{(n.)},{(n.)},{n.r},{un.r},{n.},{un.} nnum.f8 hi-level, multi-cell integer acquisition from string data {n>number},{nnumber},{nconstant} 0.1.11lib4th.asm <ttyt>"/dev/tty" substitutes <ttyn> "/dev/tty0" -(unsafe?)- {+to}new, "+!" into a {value} {cwd@}data-stack result modified to ( p1 u1 -- p2 u2 ) {close-file} invalidating duplicate channels tables fixed {kbd'}kbd-channel prepared at startup, executes faster multi-cell integer words completed/modified: {n+}, etc,arithmetic opr's expect cells count for each item, result leaves cells count in place {n+}, {n-}adjust 2nd count to 1st new: {n+-}, {nabs} {n0=}, {n1+}, {n1-}, {n=}, {ninvert}, {nnegate}, {nndup} {uns/mod}unsigned div multi-cell by sing {uns*}unsigned multiply multi-cell w. sing asm coding/"optimizing": xor & popmodified to <mov reg,imed> and <mov../lea..> combination which results to up to 20% faster execution of <bench.f8> read regchained register reads avoided (where possible) galign%assign-ed asm-vari, align 4 vs. 16 apparently no effect other than (much) longer codefile. inc/asmutils/* ok w. vers. 0.12, lib4th' <push> macro fixed. 0.1.10lib4th.asm {does>}newly done, apparently ok. {while}wrt multiple {while}s ans-compliant variant in {ans}-voc. {kbd}, {kbd-chan} keyboard channel and -number, read only. {kbd'}force next word to receiving input from keyboard channel. {source-chan} new {[defined]} new lib4th.so.0.1 new soname "lib4th.so.(rel).(ver)". inc/asmutils/* adapted to vers. 0.12 of asmutils, compiled binaries segfault! Makefile modified (no. 25) 0.1.09lib4th.asm {ENVIRONMENT?} and query-strings (4th words) implemented (ans-voc) (those silly, overly lengthy names efficiently prevent (thorough testing. nevertheless, all assumed to be ok... {evaluate}non-compiling (doesn't compile itself while interpreting) {m*/}revised, re-implemented {see}extended for minimal kernel disassembly. {ss}formerly {shell}, re-named to 'ss' for 'shell script'. {source}received bytes count bug fixed (was 'tib-max') set explicitely to {tib-max} for the rsp. input words. {tab}taking tab spacing from user vari (#tab). {vocs}termination bug fixed files core.f8unmodified version passed, though KBD' still required 0.1.08lib4th.asm {see}all newly done. {id.}can be used with lfa or ix. {does>}major rework; still w. problems, though... signal-handler(!) for recovery from single segfaults. div0 and division overflow results in {/}, {/mod}, {sm/rem}, {fm/mod}: 0/0 => 1; -n/0 => -(max); +n/0 => +(max) respective tests removed from program code files tt.fsanother test, the 'tetris' console-game, works. 0.1.07(all files) cleanup, bug-fixes 0.1.06lib4th.asm {push-io}, {pop-io} extended form save-/restore-input, w. local tib, for i/o storage/recovery with {included} files. {[>number]}by 0.1.05 introduced bug fixed {palign}names mod. to {paligned} etc., such that all {..aligned} words operate on an argument while {..align} ones operate somewhere in memory. signalhandlers modified, still preliminary emit/typeerror handling fixed system.inc _xchgmacro, speedup of up to 85% for <xchg> files tester.f8extended to check double prec. integers checking 0.1.05lib4th.asm {f8dir}new: install-dir of lib4th supplemental files new, signed doubles division opr. {dmod},{d/mod},{d/} removed {dmm/},{m*/},{m*/mod} {2@}, {2!}ANS compliant (big endian) twin in {ans}-voc. {aligned}fixed, -> crash, 'false' version works... bdump/ndumpafter dump/adump, inconsistent count sign fixed {[>number]}false chars count fixed {*/}, {*/mod}, {m/}, {sm/rem}, {fm/mod}, etc. division ovf values, signedness, exceptions fixed {search-wordlist} returns ix(!), fixed {value}defining modified, only {is} defining new or storing files 4th/4/tester.f8, core.f8ans compliance test. tests passed, those (3) very weird ones failed and no attempt will be made to "fixing" this! 0.1.04hi-level words by new/extended files in 4th/ dir. dfer.f8{defer} group of words extn.f8{v} utility, displays voc where a word belongs to leav.f8 -?-ans-mode {leave} misc.f8{frac.} display real fraction w. unlimited precision sdiv.f8signed doubles division seal.f8new word {no-env} stng.f8stdin-name w. chained definitions, {si-names?} sysm.f8new, {get/setresuid} lib4th.asm more on code, data etc, range checks. names (ex)changed, for 'common usage': getenv <=> envstg getarg => argstg {include}new: as included", but takes space delimited path string {2sdup}new: combines 2swap, 2dup {2sover}new: combines 2swap, 2over {path}new: return environmental vari stg. {path+name}new: test wheter existent, return filename w. prepended path {+place}manipulates up to MAX_PATH len of strings, appends <nul> {place}bugfix, appends <nul> {?prog}new: abort if ptr not in alterable program memory {prog?}range of words fixed, extended {see}restricted to user programmable address range {xec?}new: tf and addr if ix/ptr/addr (most probably) executeable Makefile modified, control scripts in admin/ directory 0.1.01 lib4th.asm revised memory management falsely introduced signedness wrt range checks, whether code, data, program, stacks, etc. fixed. modified versions control, Makefile 0.0.60lib4th.asm bugfix in {word} 0.0.57lib4th.asm i/o redirection by "channels" introduced 0.0.54lib4th.asm 1st CVS version, re cvs history for further changes 0.0.54lib4th.asm changes, bug-fixes: {'}, {interpret} on error, false text ref. bug fixed. (chans) channel definition tables implemented & active. {refill} ok w. redirected stdin file input. other 4th: {include"} combined {s"} and {included} Linux: {chdir}, {cwd@}, hi-level, from ./4th directory: {case} eaker's cases hi-level defn in "4th/defn.f8". {[if]}, etc re dpans A.15.6.2.2531/2/3 {pwd}, {open-dir}, {close-dir}, {.date} {sp!}, {[s]}, {cmc?}, {c-see}, {seal}, {xprotect} utility words, non-standard, experimental. Makefile modified (no. 15) 0.0.53lib4th.asm <ini4th> dataspace too small, fixed: call to <irp> instead of <irp.n> {accept} ctrl/I for cursor control w. console input, only, <tab> spacing can be used in 4th source files. {else} multiple {else} statements detection fixed. {head} header space allocation error: false operand size fixed, after <head.a>. {included}, etc <push/popiosrc> macroes modified, to getting nested calls errors fixed, local {tib} alloc; {tib-max} now being read from user vari. {ndup}, {3dup}, {3drop} ok additional words, ok: ANS: {wordlist}, {vocabulary} 0.0.52lib4th.asm {;} bug wrt terminating <ret>-code fixed due to which testfile #21 (defining words) failed. {save-input}, {restore-input} done 0.0.51lib4th.asm: {ini4th} application supplied entrypoint handling fixed does>, vocabulary, etc. all defining words done. {dmin}/{dmax} faster (calculating vers out-commented). cosmetic changes for the 1st public release. 0.0.50lib4th.asm: {accept} preliminary, minimal line editting ready & ok {bs}, {del}, {right}, {tab} {out} in-/decrement fixed. {dcm} a bit more 'intelligent'. vocabularies linkage extended to writable memory in data-space {create}, etc basic defining words & colon compiler done 0.0.49lib4th.asm: assembly wrt <cvoc> macro and <ilink> assembly parts, finally, I did manage to teaching "nasm" the forth linked lists and vocabularies! thus: major cleanup in words structure and linkage, all references pc-relative, +ve displacements wrt lower addr. vocabularies & search order functional. modules linkage by extd' vocabulary-type header. <crea> and <cvoc> macroes revised. word headers linkage (should now be) in final state, providing orderly search sequence and modules provisions. find, et al correctly scan stacked search order - instead of previously getting through voc-link chain. f8.asm, calc4th.asm modified to compile shorter binaries. 0.0.47lib4th.asm: .s and .rs preserve all regs to assist asm-level debugging. ?case added csol removed io-cons using TIOCGSID ioctl which is valid for Linux console as well as pty devices in an xterm/rxvt. vlist clean exit after <esc> vt.. related words modified to suit xterm and rxvt xy and other words added emit & type separate syscalls, faster {emit}, non-printing chars handling wrt {out} modified 0.0.46lib4th.asm: mayor cleanup in kbd & file char input primitives. ini4th modified to safe(?) bss start value and other more reasonable defaults, producing shorter code. START4TH macro adjusted accordingly. compare case independent otherwise equal stgs bug fixed errno, errno? added file wordsets ready 0.0.45lib4th.asm: {-trailing}, length bug fixed {cons?} et al, dectecting whether stdin/stdout is a console by ioctl and KBGKBTYPE, instead of i/o probing. multiple {while}s permitted in a {begin}-structure. enum?, signo, signo? added 0.0.44lib4th.asm: {dump} etc, tib corruption, {cons?} related bug fixed.
# --------------------------------------------------------------------------------- # # CHANGELOG - re <cvs log -D now lib4th> for more details - [hp, 1.1.01] # files a-4th-design.inc, ansdoc.inc, answset_idx always updated, accordingly # --------------------------------------------------------------------------------- # # # pse, NOTE that 0.1.xx versions are not necessaroly binary-compatible because # almost every version implements new words w. thus changed u.o.t. indices. # which is changed w. 0.2.xx and later versions to a more standardly behaviour, # i.e. new words will then be added to the end of the kernel wordlist or, a new # mayor version number issued. Everything else was binary-compatible, already, # due to all relative addressing. But, because the actual code entries could vary # with any new version, compatibility applies to u.o.t. referenced calls, only, # while {call-by-disp} mode compiled binaries should always be re-compiled. # versionfilechanges 0.2.03lib4th.asm 0.2.02lib4th.asm {imed} etcword-header flag values {lfa>body}ret ptr to data-"body" by lfa {max-xy}actual sizes stored by SIGWINCH to sysvari {vlist}names wrapping into next line fixed {rev-on},{rev-off} {out} count fixed {?eol}flag if @out at max-x {?cr}cr if @out at max-x {expect}bugfix: does'nt exceed length limit by more than 2, which are required for internal eol code storage. LOCALS wordset (almost) done: {(local)}basic local values assignation {to},{+to}modified for local values {#LOCALS}env. query def'd additionally: {loc'}body address of a local header, while compiling {locals}free cells of local storage {locals?}flag whether sufficient locals storage space {local:}local value defining word 0.2.01lib4th.asm {>loc}local dataspace de-/allocation {iopl},{ioperm} syscalls {p@},{p@s}etc. port access more multi-cell integer words: {nn>r},{nnr>} move counted group of cells to/from rp {n->}adjust to minimal size wo. loss of praecision {nnover}, {nnpick}, {nnroll}, {nnrot}, {nnswap} stack opr's (chnum)1st level channel numbers relocation removed <setkbd>/<svcons> file-name lenght bug for open fixed 0.2.00lib4th.asm {2rshifta}in float voc fixed wrt shift count > 31 {exp(2)}new, sing exp. to double, power of two {abort}{sp!} related bug fixed {+place}appending towards lower addr w. overlapping stgs bug fixed {s"} etc.newly done; intermediate string interpreting bug fixed for : name ... [ s" ... " ] ... ; etc., which compiled permanently, insted of returning the string data. <isegf>fixed {n->n},{un->un} signed & unsigned multi-cell integer format conversion {nrshift}, {nlshift} bitwise multi-cell shift opr's reloc.inc <kernref>bug fixed ndot.f8 hi-level, multi-cell integer to string conversion {n<#},{n#},{n#s},{n#>},{(n.)},{(n.)},{n.r},{un.r},{n.},{un.} nnum.f8 hi-level, multi-cell integer acquisition from string data {n>number},{nnumber},{nconstant} 0.1.11lib4th.asm <ttyt>"/dev/tty" substitutes <ttyn> "/dev/tty0" -(unsafe?)- {+to}new, "+!" into a {value} {cwd@}data-stack result modified to ( p1 u1 -- p2 u2 ) {close-file} invalidating duplicate channels tables fixed {kbd'}kbd-channel prepared at startup, executes faster multi-cell integer words completed/modified: {n+}, etc,arithmetic opr's expect cells count for each item, result leaves cells count in place {n+}, {n-}adjust 2nd count to 1st new: {n+-}, {nabs} {n0=}, {n1+}, {n1-}, {n=}, {ninvert}, {nnegate}, {nndup} {uns/mod}unsigned div multi-cell by sing {uns*}unsigned multiply multi-cell w. sing asm coding/"optimizing": xor & popmodified to <mov reg,imed> and <mov../lea..> combination which results to up to 20% faster execution of <bench.f8> read regchained register reads avoided (where possible) galign%assign-ed asm-vari, align 4 vs. 16 apparently no effect other than (much) longer codefile. inc/asmutils/* ok w. vers. 0.12, lib4th' <push> macro fixed. 0.1.10lib4th.asm {does>}newly done, apparently ok. {while}wrt multiple {while}s ans-compliant variant in {ans}-voc. {kbd}, {kbd-chan} keyboard channel and -number, read only. {kbd'}force next word to receiving input from keyboard channel. {source-chan} new {[defined]} new lib4th.so.0.1 new soname "lib4th.so.(rel).(ver)". inc/asmutils/* adapted to vers. 0.12 of asmutils, compiled binaries segfault! Makefile modified (no. 25) 0.1.09lib4th.asm {ENVIRONMENT?} and query-strings (4th words) implemented (ans-voc) (those silly, overly lengthy names efficiently prevent (thorough testing. nevertheless, all assumed to be ok... {evaluate}non-compiling (doesn't compile itself while interpreting) {m*/}revised, re-implemented {see}extended for minimal kernel disassembly. {ss}formerly {shell}, re-named to 'ss' for 'shell script'. {source}received bytes count bug fixed (was 'tib-max') set explicitely to {tib-max} for the rsp. input words. {tab}taking tab spacing from user vari (#tab). {vocs}termination bug fixed files core.f8unmodified version passed, though KBD' still required 0.1.08lib4th.asm {see}all newly done. {id.}can be used with lfa or ix. {does>}major rework; still w. problems, though... signal-handler(!) for recovery from single segfaults. div0 and division overflow results in {/}, {/mod}, {sm/rem}, {fm/mod}: 0/0 => 1; -n/0 => -(max); +n/0 => +(max) respective tests removed from program code files tt.fsanother test, the 'tetris' console-game, works. 0.1.07(all files) cleanup, bug-fixes 0.1.06lib4th.asm {push-io}, {pop-io} extended form save-/restore-input, w. local tib, for i/o storage/recovery with {included} files. {[>number]}by 0.1.05 introduced bug fixed {palign}names mod. to {paligned} etc., such that all {..aligned} words operate on an argument while {..align} ones operate somewhere in memory. signalhandlers modified, still preliminary emit/typeerror handling fixed system.inc _xchgmacro, speedup of up to 85% for <xchg> files tester.f8extended to check double prec. integers checking 0.1.05lib4th.asm {f8dir}new: install-dir of lib4th supplemental files new, signed doubles division opr. {dmod},{d/mod},{d/} removed {dmm/},{m*/},{m*/mod} {2@}, {2!}ANS compliant (big endian) twin in {ans}-voc. {aligned}fixed, -> crash, 'false' version works... bdump/ndumpafter dump/adump, inconsistent count sign fixed {[>number]}false chars count fixed {*/}, {*/mod}, {m/}, {sm/rem}, {fm/mod}, etc. division ovf values, signedness, exceptions fixed {search-wordlist} returns ix(!), fixed {value}defining modified, only {is} defining new or storing files 4th/4/tester.f8, core.f8ans compliance test. tests passed, those (3) very weird ones failed and no attempt will be made to "fixing" this! 0.1.04hi-level words by new/extended files in 4th/ dir. dfer.f8{defer} group of words extn.f8{v} utility, displays voc where a word belongs to leav.f8 -?-ans-mode {leave} misc.f8{frac.} display real fraction w. unlimited precision sdiv.f8signed doubles division seal.f8new word {no-env} stng.f8stdin-name w. chained definitions, {si-names?} sysm.f8new, {get/setresuid} lib4th.asm more on code, data etc, range checks. names (ex)changed, for 'common usage': getenv <=> envstg getarg => argstg {include}new: as included", but takes space delimited path string {2sdup}new: combines 2swap, 2dup {2sover}new: combines 2swap, 2over {path}new: return environmental vari stg. {path+name}new: test wheter existent, return filename w. prepended path {+place}manipulates up to MAX_PATH len of strings, appends <nul> {place}bugfix, appends <nul> {?prog}new: abort if ptr not in alterable program memory {prog?}range of words fixed, extended {see}restricted to user programmable address range {xec?}new: tf and addr if ix/ptr/addr (most probably) executeable Makefile modified, control scripts in admin/ directory 0.1.01 lib4th.asm revised memory management falsely introduced signedness wrt range checks, whether code, data, program, stacks, etc. fixed. modified versions control, Makefile 0.0.60lib4th.asm bugfix in {word} 0.0.57lib4th.asm i/o redirection by "channels" introduced 0.0.54lib4th.asm 1st CVS version, re cvs history for further changes 0.0.54lib4th.asm changes, bug-fixes: {'}, {interpret} on error, false text ref. bug fixed. (chans) channel definition tables implemented & active. {refill} ok w. redirected stdin file input. other 4th: {include"} combined {s"} and {included} Linux: {chdir}, {cwd@}, hi-level, from ./4th directory: {case} eaker's cases hi-level defn in "4th/defn.f8". {[if]}, etc re dpans A.15.6.2.2531/2/3 {pwd}, {open-dir}, {close-dir}, {.date} {sp!}, {[s]}, {cmc?}, {c-see}, {seal}, {xprotect} utility words, non-standard, experimental. Makefile modified (no. 15) 0.0.53lib4th.asm <ini4th> dataspace too small, fixed: call to <irp> instead of <irp.n> {accept} ctrl/I for cursor control w. console input, only, <tab> spacing can be used in 4th source files. {else} multiple {else} statements detection fixed. {head} header space allocation error: false operand size fixed, after <head.a>. {included}, etc <push/popiosrc> macroes modified, to getting nested calls errors fixed, local {tib} alloc; {tib-max} now being read from user vari. {ndup}, {3dup}, {3drop} ok additional words, ok: ANS: {wordlist}, {vocabulary} 0.0.52lib4th.asm {;} bug wrt terminating <ret>-code fixed due to which testfile #21 (defining words) failed. {save-input}, {restore-input} done 0.0.51lib4th.asm: {ini4th} application supplied entrypoint handling fixed does>, vocabulary, etc. all defining words done. {dmin}/{dmax} faster (calculating vers out-commented). cosmetic changes for the 1st public release. 0.0.50lib4th.asm: {accept} preliminary, minimal line editting ready & ok {bs}, {del}, {right}, {tab} {out} in-/decrement fixed. {dcm} a bit more 'intelligent'. vocabularies linkage extended to writable memory in data-space {create}, etc basic defining words & colon compiler done 0.0.49lib4th.asm: assembly wrt <cvoc> macro and <ilink> assembly parts, finally, I did manage to teaching "nasm" the forth linked lists and vocabularies! thus: major cleanup in words structure and linkage, all references pc-relative, +ve displacements wrt lower addr. vocabularies & search order functional. modules linkage by extd' vocabulary-type header. <crea> and <cvoc> macroes revised. word headers linkage (should now be) in final state, providing orderly search sequence and modules provisions. find, et al correctly scan stacked search order - instead of previously getting through voc-link chain. f8.asm, calc4th.asm modified to compile shorter binaries. 0.0.47lib4th.asm: .s and .rs preserve all regs to assist asm-level debugging. ?case added csol removed io-cons using TIOCGSID ioctl which is valid for Linux console as well as pty devices in an xterm/rxvt. vlist clean exit after <esc> vt.. related words modified to suit xterm and rxvt xy and other words added emit & type separate syscalls, faster {emit}, non-printing chars handling wrt {out} modified 0.0.46lib4th.asm: mayor cleanup in kbd & file char input primitives. ini4th modified to safe(?) bss start value and other more reasonable defaults, producing shorter code. START4TH macro adjusted accordingly. compare case independent otherwise equal stgs bug fixed errno, errno? added file wordsets ready 0.0.45lib4th.asm: {-trailing}, length bug fixed {cons?} et al, dectecting whether stdin/stdout is a console by ioctl and KBGKBTYPE, instead of i/o probing. multiple {while}s permitted in a {begin}-structure. enum?, signo, signo? added 0.0.44lib4th.asm: {dump} etc, tib corruption, {cons?} related bug fixed.
# CHANGELOG - re <cvs log -D now lib4th> for more details - [hp, 1.1.01] versionfilechanges NOTEDOES> should be working, now ("weird" coretest passed...) 0.1.09lib4th.asm {ENVIRONMENT?} and query-strings (4th words) implemented (ans-voc) (those silly, overly lengthy names efficiently prevent (thorough testing. nevertheless, all assumed to be ok... {evaluate}non-compiling (doesn't compile itself while interpreting) {see}extended for minimal kernel disassembly. {ss}formerly {shell}, re-named to 'ss' for 'shell script'. {source}received bytes count bug fixed (was 'tib-max') set explicitely to {tib-max} for the rsp. input words. {tab}taking tab spacing from user vari (#tab). {vocs}termination bug fixed files core.f8unmodified version passed, though KBD' still required 0.1.08lib4th.asm {see}all newly done. {id.}can be used with lfa or ix. {does>}major rework; still w. problems, though... signal-handler(!) for recovery from single segfaults. div0 and division overflow results in {/}, {/mod}, {sm/rem}, {fm/mod}: 0/0 => 1; -n/0 => -(max); +n/0 => +(max) respective tests removed from program code files tt.fsanother test, the 'tetris' console-game, works. 0.1.06lib4th.asm {push-io}, {pop-io} extended form save-/restore-input, w. local tib, for i/o storage/recovery with {included} files. {[>number]}by 0.1.05 introduced bug fixed {palign}names mod. to {paligned} etc., such that all {..aligned} words operate on an argument while {..align} ones operate somewhere in memory. signalhandlers modified, still preliminary emit/typeerror handling fixed system.inc _xchgmacro, speedup of up to 85% for <xchg> files tester.f8extended to check double prec. integers checking 0.1.05lib4th.asm {f8dir}new: install-dir of lib4th supplemental files {dmod}new: signed doubles division opr. {d/mod} " {d/} " {dmm/}removed {m*/} " {m*/mod} " {2@}, {2!}ANS compliant (big endian) twin in {ans}-voc. {aligned}fixed, -> crash, 'false' version works... bdump/ndumpafter dump/adump, inconsistent count sign fixed {[>number]}false chars count fixed {*/}, {*/mod}, {m/}, {sm/rem}, {fm/mod}, etc. division ovf values, signedness, exceptions fixed {search-wordlist} returns ix(!), fixed {value}defining modified, only {is} defining new or storing files 4th/4/tester.f8, core.f8ans compliance test. tests passed, those (3) very weird ones failed and no attempt will be made to "fixing" this! 0.1.04hi-level words by new/extended files in 4th/ dir. dfer.f8{defer} group of words extn.f8{v} utility, displays voc where a word belongs to leav.f8 -?-ans-mode {leave} misc.f8{frac.} display real fraction w. unlimited precision sdiv.f8signed doubles division seal.f8new word {no-env} stng.f8stdin-name w. chained definitions, {si-names?} sysm.f8new, {get/setresuid} lib4th.asm more on code, data etc, range checks. names (ex)changed, for 'common usage': getenv <=> envstg getarg => argstg {include}new: as included", but takes space delimited path string {2sdup}new: combines 2swap, 2dup {2sover}new: combines 2swap, 2over {path}new: return environmental vari stg. {path+name}new: test wheter existent, return filename w. prepended path {+place}manipulates up to MAX_PATH len of strings, appends <nul> {place}bugfix, appends <nul> {?prog}new: abort if ptr not in alterable program memory {prog?}range of words fixed, extended {see}restricted to user programmable address range {xec?}new: tf and addr if ix/ptr/addr (most probably) executeable Makefile modified, control scripts in admin/ directory 0.1.01 lib4th.asm revised memory management falsely introduced signedness wrt range checks, whether code, data, program, stacks, etc. fixed. modified versions control, Makefile 0.0.60lib4th.asm bugfix in {word} 0.0.57lib4th.asm i/o redirection by "channels" introduced 0.0.54lib4th.asm 1st CVS version, re cvs history for further changes 0.0.54lib4th.asm changes, bug-fixes: {'}, {interpret} on error, false text ref. bug fixed. (chans) channel definition tables implemented & active. {refill} ok w. redirected stdin file input. other 4th: {include"} combined {s"} and {included} Linux: {chdir}, {cwd@}, hi-level, from ./4th directory: {case} eaker's cases hi-level defn in "4th/defn.f8". {[if]}, etc re dpans A.15.6.2.2531/2/3 {pwd}, {open-dir}, {close-dir}, {.date} {sp!}, {[s]}, {cmc?}, {c-see}, {seal}, {xprotect} utility words, non-standard, experimental. Makefile modified (no. 15) 0.0.53lib4th.asm <ini4th> dataspace too small, fixed: call to <irp> instead of <irp.n> {accept} ctrl/I for cursor control w. console input, only, <tab> spacing can be used in 4th source files. {else} multiple {else} statements detection fixed. {head} header space allocation error: false operand size fixed, after <head.a>. {included}, etc <push/popiosrc> macroes modified, to getting nested calls errors fixed, local {tib} alloc; {tib-max} now being read from user vari. {ndup}, {3dup}, {3drop} ok additional words, ok: ANS: {wordlist}, {vocabulary} 0.0.52lib4th.asm {;} bug wrt terminating <ret>-code fixed due to which testfile #21 (defining words) failed. {save-input}, {restore-input} done 0.0.51lib4th.asm: {ini4th} application supplied entrypoint handling fixed does>, vocabulary, etc. all defining words done. {dmin}/{dmax} faster (calculating vers out-commented). cosmetic changes for the 1st public release. 0.0.50lib4th.asm: {accept} preliminary, minimal line editting ready & ok {bs}, {del}, {right}, {tab} {out} in-/decrement fixed. {dcm} a bit more 'intelligent'. vocabularies linkage extended to writable memory in data-space {create}, etc basic defining words & colon compiler done 0.0.49lib4th.asm: assembly wrt <cvoc> macro and <ilink> assembly parts, finally, I did manage to teaching "nasm" the forth linked lists and vocabularies! thus: major cleanup in words structure and linkage, all references pc-relative, +ve displacements wrt lower addr. vocabularies & search order functional. modules linkage by extd' vocabulary-type header. <crea> and <cvoc> macroes revised. word headers linkage (should now be) in final state, providing orderly search sequence and modules provisions. find, et al correctly scan stacked search order - instead of previously getting through voc-link chain. f8.asm, calc4th.asm modified to compile shorter binaries. 0.0.47lib4th.asm: .s and .rs preserve all regs to assist asm-level debugging. ?case added csol removed io-cons using TIOCGSID ioctl which is valid for Linux console as well as pty devices in an xterm/rxvt. vlist clean exit after <esc> vt.. related words modified to suit xterm and rxvt xy and other words added emit & type separate syscalls, faster {emit}, non-printing chars handling wrt {out} modified 0.0.46lib4th.asm: mayor cleanup in kbd & file char input primitives. ini4th modified to safe(?) bss start value and other more reasonable defaults, producing shorter code. START4TH macro adjusted accordingly. compare case independent otherwise equal stgs bug fixed errno, errno? added file wordsets ready 0.0.45lib4th.asm: {-trailing}, length bug fixed {cons?} et al, dectecting whether stdin/stdout is a console by ioctl and KBGKBTYPE, instead of i/o probing. multiple {while}s permitted in a {begin}-structure. enum?, signo, signo? added 0.0.44lib4th.asm: {dump} etc, tib corruption, {cons?} related bug fixed.
Be the first person to add a text review.
Copyright © 2010 Geeknet, Inc. All rights reserved. Terms of Use
Thanks for your rating!
Would you also like to write a review?
Thanks for your review!
Get credit for your review by logging in via OpenID. Click your account provider: