VolksForth/8080/CPM/tests/log2file.fth

96 lines
1.5 KiB
Forth
Raw Permalink Normal View History

\ *** Block No. 0, Hexblock 0
\ *** Block No. 1, Hexblock 1
\ log2file loadscreen phz 20aug23
1 3 +thru
\\
: .1x ( n -- ) $30 + dup $39 > IF 7 + THEN (emit ;
: .4x ( n -- )
ascii $ (emit 4 0 DO $10 u/mod LOOP drop .1x .1x .1x .1x
$20 (emit ;
: .2x ( n -- )
ascii $ (emit 2 0 DO $10 u/mod LOOP drop .1x .1x
$20 (emit ;
\ *** Block No. 2, Hexblock 2
\ logfile phz 20aug23
Dos also Forth definitions
$18 constant fcb\nam
create logfile ," LOGFILE TXT" fcb\nam allot 1 logfile c!
create logdma b/rec allot
variable logoffset 0 logoffset !
: logflush logdma dma! logfile $15 bdos $80 dma! ;
: logc! ( c -- )
logoffset @ dup >r logdma + c! r> 1+
dup logoffset ! b/rec =
IF logflush 0 logoffset ! THEN ;
\ *** Block No. 3, Hexblock 3
\ log-emit log-type log-cr alsologtofile pphz 03sep23
: log-emit ( char -- )
dup (emit logc! ;
: log-type ( addr count -- )
0 ?DO count log-emit LOOP drop ;
: log-cr ( -- )
(cr #cr logc! #lf logc! ;
Output: alsologtofile
log-emit log-cr log-type (del noop 2drop (at? ;
\ *** Block No. 4, Hexblock 4
\ logopen phz 20aug23
: logopen ( -- )
logfile filenamelen + 1+ fcb\nam erase
0 logoffset !
logfile killfile
logfile createfile
alsologtofile ;
: logclose ( -- )
cr display &26 logc! logflush logfile closefile ;