VolksForth/archive/6502/CBM/CLV/EDIT.txt
2020-07-15 09:48:43 +02:00

4736 lines
174 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

clv06jan88
\ Directory of uf-Ed-clv06jan clv02feb88
3 files
4 .page in Forth
5 >scr CBM-Screencode-Conversion
6 scrAdr curAdr cols rows
7- 9 screen Output-Vektor
10-13 .page in Assembler
16-19 .page 2.versuch
20 Edi-Test
40 "
60 "
85ff shadows
\ test clv12jan88
$100 $100 Task testtask
multitask
: tt testtask activate
BEGIN $80 $c00 ctoggle pause REPEAT ;
\ revers on/off at top left corner
\ files clv20jan88
| : skp bus@ drop bus@ drop ;
| : wrd bus@ bus@ $100 * + . ;
| : str
BEGIN bus@ ?dup WHILE emit REPEAT ;
: files \ Filename kann folgen
(drv @ 8 +
dup 0 busopen
" $0:" count bustype
bl parse bustype
" *" count bustype
busoff derror? ?exit
dup 0 busin
skp skp \ Sector,Zeilenlink
BEGIN cr wrd str skp $90 c@ UNTIL
0 busclose derror? ?exit ;
\ .line .page in Forth clv11jan88
: >count ( ad l ad+ l- --ad+ l- ad cnt)
2swap 2 pick - ;
: .line ( adr len col--adr+ len- col)
>r 2dup #cr scan >count
r@ - swap r@ + swap
0 max cols umin type
dup IF 1- swap 1+ swap THEN r> ;
: xpage 0 0 at $0c00 $400 $2e fill ;
: .page1 ( adr len col-- adr+ len- col)
xpage rows 1
DO .line cr LOOP .line ;
\ >scr clv19jan88
: Char: Create ;code ( char--char')
sp x) lda tax .a lsr .a lsr .a lsr
.a lsr .a lsr .a asl tay iny iny
txa iny W )y and dey W )y ora
0 # ldx sp x) sta
1 # ldy next jmp end-code
Char: >scr ( +--or---+ +---and--+ )
( $0-1f) Ascii . c, 0 c,
( 20-3f) %00000000 c, %11111111 c,
( 40-5f) %00000000 c, %00011111 c,
( 60-7f) %00000000 c, %01011111 c,
( 80-9f) Ascii . c, 0 c,
( a0-bf) Ascii . c, 0 c,
( c0-df) %00000000 c, %01011111 c,
( e0-ff) Ascii . c, 0 c,
\needs scrAdr -->
\\ : C> Create does> ( char--char')
>r dup 2/ 2/ 2/ 2/ 2/ 2* r> +
dup c@ -rot 1+ c@ and or ;
\ scrAdr curAdr cols rows clv11jan88
$0c00 Constant scrAdr
Variable curAdr scrAdr curAdr !
&40 Constant cols
&25 Constant rows
\ screen Output-Vektor clv11jan88
\needs >scr 5 load \ CBM-Screencodes
\ & scrAdr ..
1 2 +thru
\\ curon/off muss gepatched werden, da
dummerweise nicht vektorisiert
' c64key >body Constant >curon
' c64key >body $a + Constant >curoff
: scrOn screen keyboard
['] scrcur dup >curon ! >curoff !
save ;
: scrOff display [ editor ] ediboard
['] curon >curon !
['] curoff >curoff ! save ;
\ ..screen.. clv11jan88
: scrpage scrAdr [ cols rows * ] Literal
bl fill scrAdr curAdr ! ;
: scroll
scrAdr dup cols + swap
[ cols rows 1- * ] Literal cmove
[ scrAdr cols rows 1- * + ] Literal
cols bl fill cols negate curAdr +! ;
: ?scroll
[ scrAdr cols rows * + ] Literal
curAdr @ - ?exit scroll ;
: scrcur
?scroll $80 curAdr @ ctoggle ;
\ ..screen clv11jan88
: scrat? ( --row col)
curAdr @ scrAdr - cols u/mod swap ;
: scrat ( row col--)
swap cols * + scrAdr + curAdr !
?scroll ;
: scrcr scrat? drop 1+ 0 scrat ;
: scremit ( char--) >scr \ cbmScreenCode
?scroll curAdr @ c! 1 curAdr +! ;
: scrtype ( adr +n--)
bounds ?DO I c@ scremit LOOP ;
: scrdel
-1 curAdr +! bl scremit -1 curAdr +! ;
Output: screen
scremit scrcr scrtype scrdel scrpage
scrat scrat? ;
\ .page clv14jan88
Onlyforth
\needs >scr 5 load \ CBM-Screencodes
' >scr >body >Label scrtab
Label (>scr ( AR=char;char') \ XR<>
\ converts char to CBM-Screencode
pha .a lsr .a lsr .a lsr .a lsr .a lsr
.a asl
tax pla inx scrtab ,x and
dex scrtab ,x ora
rts end-code
\ N:curCol +2:len +4:adr +6:actLn
\ +8:tmpCol +a:exitSp YR=col
-->
\ (emit 3.vers clv14jan88
Label neg ( XR=adr;) \ 2erKompl von adr
sec 0 # lda 0 ,x sbc 0 ,x sta
0 # lda 1 ,x sbc 1 ,x sta rts
Label pClr ( N+6:curLn,YR=col)
\ clears end of Line, exit on screenEnd
bl # lda
[[ cols # cpy 0<>
?[[ N 6 + )y sta iny ]]?
clc cols # lda N 6 + adc N 6 + sta
CS ?[ N 7 + inc ]? 0 # ldy
scrAdr cols rows * + $100 u/mod N 6 +
dup 1+ lda swap # cmp CC ?[ rts ]?
lda # cmp CC ?[ rts ]?
N $a + ldx txs \ Screen:End reached
N 2+ # ldx neg jsr 0 # ldx
3 # lda \ setback to stack
.A asl tay [[ SP dec dey 0= ?] tay dey
[[ N ,y lda SP )y sta dey 0= ?] iny
next jmp end-code
-->
\ pPut pGet pCol clv11jan88
Label pPut ( AR=char;)
\ puts char on screen. Noop if beyond
cols # cpy CC
?[ (>scr jsr 0 # ldx N 6 + )y sta iny
]? rts end-code
Label pGet ( ;AR:char,Z:char==#cr)
\ char from RAM. Ends Page if exhausted
N 4 + winc N 2+ winc
0<> ?[ N 4 + x) lda #cr # cmp rts ]?
[[ pClr jsr ]] end-code \ stream:end
Label pCol \ skips cols left of screen
N 8 + N 2dup lda sta 1+ lda 1+ sta
N 8 + dup winc # ldx neg jsr 0 # ldx
[[ N 8 + winc 0= ?[ rts ]?
pGet jsr 0=
?[ pClr jsr pCol jmp ]? ]] end-code
-->
\ .page clv14jan88
Code .page ( adr len col--ad+ len- col)
\ displays text at adr/len
\ interprets #cr,skips col (left of scr)
\ setup of N... y
3 # lda setup jsr N 2+ # ldx neg jsr
\ setup of actLn
N 6 + ' scrAdr >body 2dup
lda sta
1+ lda 1+ sta
tsx N $a + stx \ Exit SP
0 # ldx 0 # ldy
N 4 + wdec N 2+ wdec
\ MainLoop
[[ pCol jsr
[[ pGet jsr 0<> ?[[ pPut jsr ]]?
pClr jsr ]] end-code
\ .page 2.Versuch mit fOut/In clv25jan88
Onlyforth
\needs >scr 5 load \ CBM-Screencodes
' >scr >body >Label scrtab
Label (>scr ( AR=char;char') \ XR<>
\ converts char to CBM-Screencode
pha .a lsr .a lsr .a lsr .a lsr .a lsr
.a asl
tax pla inx scrtab ,x and
dex scrtab ,x ora
rts end-code
\ N:scrCol +2:adr +4:none +6:actLn
\ +8:tmpCol +a:exitSp YR=col
-->
\ (emit 3.vers clv25jan88
Label neg ( XR=adr;) \ 2erKompl von adr
sec 0 # lda 0 ,x sbc 0 ,x sta
0 # lda 1 ,x sbc 1 ,x sta rts
Label pClr ( N+6:curLn,YR=col)
\ clears end of Line, exit on screenEnd
bl # lda
[[ cols # cpy 0<>
?[[ N 6 + )y sta iny ]]?
clc cols # lda N 6 + adc N 6 + sta
CS ?[ N 7 + inc ]? 0 # ldy
scrAdr cols rows * + $100 u/mod N 6 +
dup 1+ lda swap # cmp CC ?[ rts ]?
lda # cmp CC ?[ rts ]?
N $a + ldx txs \ Screen:End reached
SP 2dec 0 # ldx 1 # ldy
N 2+ lda SP x) sta
N 3+ lda SP )y sta
next jmp end-code
-->
\ pPut pGet pCol clv25jan88
Label pPut ( AR=char;)
\ puts char on screen. Noop if beyond
cols # cpy CC
?[ (>scr jsr 0 # ldx N 6 + )y sta iny
]? rts end-code
Label pGet ( ;AR:char,Z:char==#cr)
\ char from RAM. Ends Page if exhausted
N 2+ winc
N 2+ lda fOut cmp 0= \ fOut reached?
?[ N 3 + lda fOut 1+ cmp 0=
?[ N 2+ fIn 2dup \ ..use fIn
lda sta 1+ lda 1+ sta ]? ]?
N 2+ lda fEnd cmp 0= \ fEnd reached?
?[ N 3 + lda fEnd 1+ cmp 0=
?[ [[ pClr jsr ]] ]? ]? \ ..clrPg
N 2 + x) lda #cr # cmp
rts end-code
-->
\ .page clv29jan88
Label pCol \ skips cols left of screen
N 8 + N 2dup lda sta 1+ lda 1+ sta
N 8 + dup winc # ldx neg jsr 0 # ldx
[[ N 8 + winc 0= ?[ rts ]?
pGet jsr 0=
?[ pClr jsr pCol jmp ]? ]] end-code
Code .page2 ( adr col--ad+)
\ uses fOut,fIn,fEnd
\ displays text at adr/len
\ interprets #cr,skips col (left of scr)
\ setup of N...
2 # lda setup jsr
\ setup of actLn
N 6 + ' scrAdr >body 2dup
lda sta 1+ lda 1+ sta
tsx N $a + stx \ Exit SP
0 # ldx 0 # ldy
N 2 + wdec
\ MainLoop
[[ pCol jsr
[[ pGet jsr 0<> ?[[ pPut jsr ]]?
pClr jsr ]] end-code
clv11jan88
clv11jan88
\ Edi-Test-3 clv22feb88
\ mit Transfers-Luecke, .page in Forth,
\ ziemlich langsam
: tt limit $e800 -
IF $e800 ['] limit >body ! &20 buffers
THEN ;
tt forget tt
Onlyforth
: rl [ blk @ ] Literal l ;
\needs memtop $fd00 Constant memtop
1 +load \ Variables
\needs >scr 5 load
2 &19 +thru
\ forget initFile 2 &19 +thru
: .x over u. ." :" type ;
: .. fBeg @ fOut @ over - .x
fIn @ fEnd @ over - .x cr ;
\ Variables clv25jan88
Variable lastKey
Variable curPos
Variable scrBeg Variable scrCol
Variable exitRP
Variable tab \ key-Tab
Create fName $20 allot
Variable fBeg Variable fEnd
Variable fOut \ Beginn von room
Variable fIn \ Ende von room
\ edi-test info clv25jan88
: wait BEGIN key? UNTIL ;
: sat cols 1- min swap rows 1- min swap
at ;
: .at 0 10 at 2dup swap . . ." AT" sat ;
Defer 'at ' .at Is 'at
: wderror? derror? dup IF wait THEN ;
Defer 'derror? ' wderror? Is 'derror?
: .v ( adr--) base push hex cr dup
@ 5 u.r ." " 2- >name .name ." !" ;
: .i cr .s curPos .v scrCol .v fbeg .v
scrbeg .v fOut .v fIn .v fend .v
cr fbeg @ 1- c@ . fend @ @ . cr ;
\ fileOut/In clv25jan88
: fType ( from u --)
fOut @ 2dup + ( fr u fOut@ fOut@+u )
dup fIn @ u> abort" no room" fOut !
( fr u fOut@) swap cmove ;
: fEmit ( char--) sp@ 1 fType drop ;
: fCr #cr fEmit ;
: fDel fOut @ 1- fBeg @ umax fOut ! ;
: fPage
fBeg @ fOut @ over - ( from count)
over fIn @ fOut @ - + swap cmove>
fBeg @ dup fOut !
fIn @ fOut @ - + fIn ! ;
: fAt 2drop ; : fAt? 0.0 ;
Output: fileOut
fEmit fCr fType fDel fPage fAt fAt? ;
: fKey? ( --flag) fIn @ fEnd @ u< ;
: fKey ( -- 8b)
fKey? IF fIn @ c@ 1 fIn +! exit THEN
$1a ;
Input: fileIn
fKey fKey? c64decode c64expect ;
\ tva cr? fe? clv30jan88
\needs Code .( ??! Code ??!) quit
Assembler
\needs wcmp .( ??! wcmp[debug] ??!) quit
Code cr? ( adr--adr flag)
SP x) lda N sta SP )y lda N 1+ sta
N x) lda #cr # cmp 0<> ?[
Label (fe?
N fEnd wcmp CC ?[
N fBeg wcmp CS ?[
0 # lda pushA jmp ]? ]? ]?
$ff # lda pushA jmp end-code
Code fe?
SP x) lda N sta SP )y lda N 1+ sta
(fe? jmp
Code c? ( adr--adr flag)
SP x) lda N sta SP )y lda N 1+ sta
N fIn wcmp CC ?[
N fOut wcmp CS ?[
0 # lda pushA jmp ]? ]?
$ff # lda pushA jmp end-code
\ c? bl? ..< ..> clv30jan88
\ fuer Laufzeitmessung:
: cr? cr? ; : fe? fe? ; : c? c? ;
( adr--adr flag)
: bl? cr? over c@ bl = or ; \ space
( adr--adr)
: c< 1- c? ?exit drop fOut @ 1- ;
: c> 1+ c? ?exit drop fIn @ ;
: bl> BEGIN c> bl? not UNTIL ;
: cr> c> ;
: w< BEGIN c< bl? UNTIL ; \ word
: w> BEGIN c> bl? UNTIL ;
: l< BEGIN c< cr? UNTIL ; \ line
: l> BEGIN c> cr? UNTIL ;
: p> rows 0 DO l> LOOP ;
: p< rows 0 DO l< LOOP ;
: l<? ( cur--cur col) dup dup l< 1+ - ;
\\
: fe? dup fBeg @ fEnd @ uwithin not ;
: cr? dup c@ #cr = swap fe? or ;
: c? dup fOut @ fIn @ uwithin not ;
\ initFile clv30jan88
: initFile $100 \ cursorRoom
fBeg @ 2dup + over fEnd @ swap -
cmove>
fBeg @ dup fOut ! over + fIn !
fEnd +! $0d0d fEnd @ !
fOut @ curPos ! ;
: moveroom ( curAdr --)
dup curPos ! c? not IF drop exit THEN
fOut @ u<
IF curPos @ fIn @ fOut @ - curPos @ +
fOut @ curPos @ -
dup negate dup fOut +! fIn +!
cmove>
ELSE fIn @ fOut @ curPos @ fIn @ -
dup dup fOut +! fIn +!
fOut @ curPos ! cmove THEN ;
\ baseMovements clv25jan88
: << ( --curAdr) curPos @ ;
: >> ( curAdr--)
fBeg @ umax fEnd @ umin moveroom ;
\ : c+ ( col+ cur-)
\ 1- l> >> << l< 1+ + ;
: <<c ( --col lin)
<< dup l< under - swap ;
: c>> ( col lin--) l> >> << l< + >> ;
: c+ ( col lin col+--col lin)
rot + swap ;
: c= ( col lin col=--col lin)
swap rot drop ;
\ executables clv28jan88
( --)
: begLn << l< cr> >> ;
: endLn << l> >> ;
: up <<c l< c>> ;
: down <<c l> c>> ;
: lastPg <<c p< c>> ;
: nextPg <<c p> c>> ;
: begPg <<c drop scrBeg @ c>> ;
: endPg <<c drop scrBeg @ p> l< c>> ;
: beg <<c drop fBeg @ c< c>> ;
: end <<c drop fEnd @ l< c>> ;
: right <<c 1 c+ c>> ;
: left <<c -1 c+ c>> ;
: begScr <<c scrCol @ c= c>> ;
: endScr <<c scrCol @ cols + 1- c= c>> ;
\ ..exe clv28jan88
: doChar << dup fOut @ - 0 max 0
?DO bl fEmit LOOP
lastKey @ fEmit c> >> ;
: backDel curPos @ fOut @ =
IF fdel THEN left ;
: delChar right backDel ;
: exitEd exitRp @ rp! ;
: info at? 5 0 at
2dup swap cr . . ." at" .i
wait at ;
: help tab @ BEGIN count WHILE
dup @ >name .name 2+ REPEAT
drop wait ;
\ leer clv28jan88
\ writeFile readFile clv25jan88
Onlyforth
: writeFile 0 (drv !
8 2 busopen fName count bustype
" ,p,w" count bustype busoff
'derror? ?exit
8 2 busout 0 0 bus! bus!
fEnd @ fBeg @
BEGIN 2dup - WHILE
dup c@ bus! c> REPEAT busoff
8 2 busclose 'derror? ?exit ;
: readFile 0 (drv !
8 2 busopen fName count bustype
" ,p,r" count bustype busoff
'derror? ?exit fBeg @
8 2 busin bus@ drop bus@ drop
BEGIN bus@ over c! 1+ $90 c@ UNTIL
fEnd ! busoff
8 2 busclose 'derror? ?exit initFile ;
\ files clv25jan88
| : skp bus@ drop bus@ drop ;
| : wrd bus@ bus@ $100 * + . ;
| : str
BEGIN bus@ ?dup WHILE emit REPEAT ;
: files \ Filename kann folgen
(drv @ 8 +
dup 0 busopen
" $0:" count bustype
bl parse bustype
" *" count bustype
busoff derror? ?exit
dup 0 busin
skp skp \ Sector,Zeilenlink
BEGIN cr wrd str skp $90 c@ UNTIL
0 busclose 'derror? ?exit wait ;
\ loadFile clv28jan88
\\ noch alt
: fLine #tib @ >tib @ + 1+
dup fEnd @ u> IF drop rdrop exit THEN
dup 1- l> over - #tib ! >tib !
>in off ;
: .fLine
cr >tib @ dup 5 u.r space
#tib @ type space ;
: xx
>tib push #tib push >in push r0 push
['] 'quit >body push
['] unnest Is 'quit
['] .status >body push
rp@ r0 ! page
['] .fLine Is .status
curPos @ >tib ! -1 #tib !
BEGIN fLine .status interpret REPEAT ;
: loadFile
curPos ! >r xx r> curPos @ wait ;
\ fconvey clv28jan88
\ noch ungetestet
: fConvey ( [from to]--)
1+ swap \ curPos @ -rot
?DO rows 0
DO #cr fEmit
J block I c/l * + c/l fType
LOOP 1 fDel LOOP ( drop ) ;
\ .page 4.Ver Forth clv30jan88
: pPut ( char--)
>scr curAdr @ c! 1 curAdr +! ;
: pSpc ( u--) \ puts u spaces
curAdr @ over bl fill curAdr +! ;
: leap rdrop rdrop rdrop rdrop ;
: .line ( col adr--col ad+)
over 0 ?DO c> cr?
IF cols pSpc leap THEN LOOP
cols 0 DO c> cr?
IF cols I - pSpc leap THEN
dup c@ pPut LOOP l> ;
: .page ( adr col--ad+)
\ interprets cr,skips cols left of scr
scrAdr curAdr !
swap rows 0 DO .line LOOP nip ;
\ -&21 #entries +! forget pPut 0 4 +thru
\ redraw show clv29jan88
: redraw curPos @
BEGIN scrBeg @ scrCol @ .page
over u< WHILE
dup p< scrBeg ! REPEAT drop ;
: cursor curPos @
scrBeg @ -1 -rot
BEGIN rot 1+ -rot
l> 2dup u< UNTIL
drop l<? scrCol @ -
rot swap ( col+ @ + ) 'at drop ;
: ?sR? curPos @
l<? ( col+ @ + ) dup cols - 1+
scrCol @ max min scrCol ! drop ;
: ?sB? curPos @ scrBeg @ u> ?exit
curPos @ l< scrBeg ! ;
: show ?sB? ?sr? key? ?exit
redraw key? ?exit cursor ;
\ 0 3 +thru
\ maintab clv25jan88
: A+ [compile] Ascii + ;
: Ctr -$40 A+ ; : Cbm $60 A+ ;
: Ct+ $40 A+ ;
: => c, ' , ;
Create maintab \ <key> c, ' word ,
Ctr ] => right Ct+ ] => left
Ctr q => down Ct+ q => up
Ctr u => begLn Ctr i => endLn
Ctr h => begPg Ctr j => endPg
Ctr g => lastPg Ctr k => nextPg
Ctr b => beg Ctr n => end
Ctr f => files \ Ctr l => loadFile
Ctr c => exitEd
Ctr t => backDel Ctr d => delChar
Ctr w => writeFile Ctr r => readFile
Ctr o => info
Ctr p => help
Ctr [ => redraw \ ESC
0 => doChar
\ 0 2 +thru
\ editop clv30jan88
: dokey
lastKey @ tab @ 3 -
BEGIN 3+ dup c@ WHILE 2dup c@ = UNTIL
nip 1+ @ execute ;
: editop
rp@ exitRP ! \ fuer exitEd
maintab tab !
BEGIN
key? 0= IF show THEN
key lastKey ! dokey REPEAT ;
\ edi3 test clv22feb88
: init
limit 1+
dup fBeg ! dup fEnd !
dup curPos !
drop
$0d fBeg @ 1- c!
0 scrCol ! fBeg @ 1- scrBeg !
initFile ;
: red editop
page ." end of edit" ;
: edit bl parse $20 umin fName place
init ( readFile ) red ;
\needs new \\
\ Edi-Test-1 clv22feb88
\ ohne read/write
: tt limit $e000 -
IF $e000 ['] limit >body ! 20 buffers
THEN ;
tt forget tt
Onlyforth
\needs memtop $fd00 Constant memtop
\needs .page &10 load
1 +load \ Variables ..
&12 +load \ Test
2 &10 +thru
&11 +load \ Test
\ Variables clv14jan88
Variable curPos Variable scrCol
Variable scrBeg Variable scrEnd
Variable fBeg Variable fEnd
Variable xroom Variable xroomlen
Variable tab
Variable col+
\ room clv11jan88
: ?enough ( n--n)
dup xroomlen @ > abort" no room" ;
: ?range ( adr n -- adr n)
over xroom @ u> abort" beyond room" ;
\ kriegt spaeter die verschieberei
: decroom ( n--n)
dup fEnd +!
dup xroom +! dup negate xroomlen +! ;
: room ( adr n -- adr n)
?enough ?range 2dup over +
( ad n ad=fr ad'=to )
xroom @ 2 pick - move ( adr n)
decroom ; \\
: room ( adr n -- adr)
?enough ?range
2dup + -rot >r ( ad'=to ad)
xroom @ over - ( ad' ad=fr cnt)
2 pick swap move ( ad' )
r> decroom ;
\ insert back clv14jan88
: fType ( adr from u -- adr')
swap >r room
2dup r> -rot cmove + ;
: fEmit ( adr char--adr')
>r rp@ 1 fType rdrop ;
: fDel ( adr u -- adr')
2dup - fBeg @ u< ( a u a'<beg? )
IF drop dup fBeg @ - 0 min THEN
negate room + ;
\ cursor-movement clv14jan88
( adr--adr')
\ setzt #cr vor und nach File voraus
: ?b fBeg @ umax ; : ?e fEnd @ umin ;
Code (cr>
sp x) lda N sta sp )y lda N 1+ sta
#cr # lda [[ N winc N x) cmp 0= ?]
N lda sp x) sta N 1+ lda sp )y sta
next jmp end-code
Code (cr<
sp x) lda N sta sp )y lda N 1+ sta
[[ N wdec #cr # lda N x) cmp 0= ?]
N lda sp x) sta N 1+ lda sp )y sta
next jmp end-code
: cr< ?b (cr< ; : cr> ?e (cr> ;
: pg< rows 0 DO cr< LOOP ;
: pg> 1- rows 1- 0 DO cr> LOOP ;
\\
: cr< ?b BEGIN 1- cr? UNTIL ;
: cr> ?e BEGIN 1+ cr? UNTIL ;
\ move-Base clv14jan88
: leftchars ( adr--adr u)
dup dup cr< 1+ - ;
: rightchars ( adr--adr u)
dup 1- cr> over - ;
: savCol dup dup cr< - col+ +! ;
: useCol dup cr> over - col+ @ over -
dup 0< IF + 0 THEN col+ ! + ;
: noCol col+ off ;
: cr? ( adr--adr flag) dup c@ #cr = ;
: ?eL ?e dup 1- cr> fEnd @ - ?exit cr< ;
\\
\ 0 6 +thru
\ executables clv14jan88
( rp char adr--rp char adr')
: begLn noCol cr< 1+ ;
: endLn noCol 1- cr> ;
: up savCol cr< cr< useCol ;
: down savCol 1- cr> ?eL useCol ;
: lastPg savCol pg< useCol ;
: nextPg savCol pg> ?eL useCol ;
: begPg savCol drop scrBeg @ 1- useCol ;
: endPg begPg nextPg ;
: beg savCol drop fBeg @ 1- useCol ;
: end savCol drop fEnd @ cr< useCol ;
: right cr? IF 1 col+ +! ELSE 1+ THEN ;
: left col+ @
IF -1 col+ +! ELSE 1- ?b THEN ;
\ ..exe clv14jan88
: doChar col+ @ 0 ?DO bl fEmit LOOP
noCol over fEmit ;
: backDel col+ @
IF left ELSE 1 fDel THEN ;
: delChar right backDel ;
: wait key drop ;
: exitEd nip swap rp! ;
: info at? 5 0 at
2dup swap cr . . ." at" .i
wait at ;
: help tab @ BEGIN count WHILE
dup @ >name .name 2+ REPEAT
drop wait ;
\ redraw show clv14jan88
: redraw BEGIN scrBeg @ fEnd @ over -
scrCol @ .page drop drop
over u< WHILE
dup pg< 1+ scrBeg ! REPEAT ;
( adr--adr')
: cursor \ dup curPos ! \ test
scrBeg @ 1- -1 -rot
BEGIN rot 1+ -rot
cr> 2dup u> not UNTIL
drop leftchars scrCol @ -
rot swap col+ @ + 'at ;
: ?sR? leftchars col+ @ + dup cols - 1+
scrCol @ max min scrCol ! ;
: ?sB? dup scrBeg @ u< not ?exit
dup begLn scrBeg ! ;
: show ?sB? ?sr? redraw cursor ;
\\
: ?sE? scrBeg @ pg> over u> ?exit
dup pg< 1+ scrBeg ! ;
: show ?sB? ?sr? ?se? redraw cursor ;
\ 0 3 +thru
\ maintab clv14jan88
: A+ [compile] Ascii + ;
: Ctr -$40 A+ ; : Cbm $60 A+ ;
: Ct+ $40 A+ ;
: => c, ' , ;
Create maintab \ <key> c, ' word ,
Ctr ] => right Ct+ ] => left
Ctr q => down Ct+ q => up
Ctr u => begLn Ctr i => endLn
\ Ctr y => lastLn Ctr o => nextLn
Ctr h => begPg Ctr j => endPg
Ctr g => lastPg Ctr k => nextPg
Ctr b => beg Ctr n => end
Ctr c => exitEd
Ctr t => backDel \ del-Taste
Ctr d => delChar
Ctr e => info
Ctr w => help
Ctr r => redraw
0 => doChar
\ 0 2 +thru
\ editop clv14jan88
: dokey ( adr char --adr)
tab @ 3 -
BEGIN 3+ dup c@ WHILE 2dup c@ = UNTIL
1+ @ ( adr char cfa )
>r swap r> execute nip ;
: editop ( adr--adr)
rp@ swap \ fuer exitEd
BEGIN
key? 0= IF show THEN
key maintab tab ! dokey REPEAT ;
\ edi1 test clv14jan88
: init limit $e000 u> abort" limit!!"
0 dup scrCol ! col+ !
limit 1+
dup scrBeg ! dup scrEnd !
dup fBeg ! dup fEnd !
dup curPos !
$0d fBeg @ 1- c! $0d0d fEnd @ !
dup $2 + xroom !
memtop xroom @ - xroomlen !
drop
;
: red curPos @ editop curPos !
page ." end of edit" ;
: edit init red ;
\ edi1test info clv14jan88
Defer 'at
: sat cols 1- min swap rows 1- min swap
at ;
: .at 0 10 at 2dup swap . . ." AT" sat ;
' sat Is 'at
: nc curoff begin stop? until ;
: .v ( adr--) base push hex cr
dup @ 5 u.r ." " 2- >name .name ." !"
;
: .i cr .s
scrCol .v
fbeg .v scrbeg .v
scrend .v fend .v
xroom .v xroomlen .v col+ .v
cr fbeg @ 1- c@ . fend @ @ .
cr ;
clv20jan88
clv20jan88
clv20jan88
clv20jan88
clv20jan88
clv20jan88
\ edi1test info clv20jan88
Defer 'at
: sat cols 1- min swap rows 1- min swap
at ;
: .at 0 10 at 2dup swap . . ." AT" sat ;
' sat Is 'at
: nc curoff begin stop? until ;
: .v ( adr--) base push hex cr
dup @ 5 u.r ." " 2- >name .name ." !"
;
: .i cr .s
curPos .v
scrCol .v
fbeg .v scrbeg .v
fend .v
xroom .v xroomlen .v col+ .v
cr fbeg @ 1- c@ . fend @ @ .
cr ;
\ Edi-Test-3 clv22feb88
\ schnell, obwohl room am Ende
: tt limit $e000 -
IF $e000 ['] limit >body ! 20 buffers
THEN ;
tt forget tt
Onlyforth
\needs memtop $fd00 Constant memtop
\needs .page &10 load
1 &19 +thru
\ Variables clv20jan88
Variable curPos Variable scrCol
Variable scrBeg \ Variable scrEnd
Variable col+
Create fName $20 allot
Variable fBeg Variable fEnd
Variable fPos
Variable exitRP
Variable xroom Variable xroomlen
Variable tab
\ room clv11jan88
: ?enough ( n--n)
dup xroomlen @ > abort" no room" ;
: ?range ( adr n -- adr n)
over xroom @ u> abort" beyond room" ;
\ kriegt spaeter die verschieberei
: decroom ( n--n)
dup fEnd +!
dup xroom +! dup negate xroomlen +! ;
: room ( adr n -- adr n)
?enough ?range 2dup over +
( ad n ad=fr ad'=to )
xroom @ 2 pick - move ( adr n)
decroom ; \\
: room ( adr n -- adr)
?enough ?range
2dup + -rot >r ( ad'=to ad)
xroom @ over - ( ad' ad=fr cnt)
2 pick swap move ( ad' )
r> decroom ;
\ fType/Emit/Del clv20jan88
: initRoom fEnd @
$0d0d over ! $2 + xroom !
memtop xroom @ - xroomlen ! ;
: fType ( adr from u -- adr')
swap >r room
2dup r> -rot cmove + ;
: fEmit ( adr char--adr')
>r rp@ 1 fType rdrop ;
: fDel ( adr u -- adr')
2dup - fBeg @ u< ( a u a'<beg? )
IF drop dup fBeg @ - 0 min THEN
negate room + ;
\ fKey/fExpect/fDecod clv20jan88
\\ noch unfertig:
: fPtr? ( --adr) fPos @ ;
: fKey? ( --flag) fPtr? fEnd @ u< ;
: fKey ( -- 8b)
fKey? IF fPtr? c@ ELSE oldIn THEN ;
: c64decode
( addr cnt1 key -- addr cnt2)
#bs case? IF dup IF del 1- THEN
exit THEN
#cr case? IF dup span ! exit THEN
>r 2dup + r@ swap c! r> emit 1+ ;
: c64expect ( addr len1 -- )
span ! 0
BEGIN dup span @ u<
WHILE key decode
REPEAT 2drop space ;
Input: fIn
c64key true c64decode c64expect ;
\ edi1test info clv20jan88
Defer 'at
: sat cols 1- min swap rows 1- min swap
at ;
: .at 0 10 at 2dup swap . . ." AT" sat ;
' sat Is 'at
: nc curoff begin stop? until ;
: .v ( adr--) base push hex cr
dup @ 5 u.r ." " 2- >name .name ." !"
;
: .i cr .s
curPos .v
scrCol .v
fbeg .v scrbeg .v
fend .v
xroom .v xroomlen .v col+ .v
cr fbeg @ 1- c@ . fend @ @ .
cr ;
\ cursor-movement clv14jan88
( adr--adr')
\ setzt #cr vor und nach File voraus
: ?b fBeg @ umax ; : ?e fEnd @ umin ;
Code (cr>
sp x) lda N sta sp )y lda N 1+ sta
#cr # lda [[ N winc N x) cmp 0= ?]
N lda sp x) sta N 1+ lda sp )y sta
next jmp end-code
Code (cr<
sp x) lda N sta sp )y lda N 1+ sta
[[ N wdec #cr # lda N x) cmp 0= ?]
N lda sp x) sta N 1+ lda sp )y sta
next jmp end-code
: cr< ?b (cr< ; : cr> ?e (cr> ;
: pg< rows 0 DO cr< LOOP ;
: pg> 1- rows 1- 0 DO cr> LOOP ;
\\
: cr< ?b BEGIN 1- cr? UNTIL ;
: cr> ?e BEGIN 1+ cr? UNTIL ;
\ move-Base clv20jan88
: leftchars ( adr--adr u)
dup dup cr< 1+ - ;
: rightchars ( adr--adr u)
dup 1- cr> over - ;
: savCol dup dup cr< - col+ +! ;
: useCol dup cr> over - col+ @ over -
dup 0< IF + 0 THEN col+ ! + ;
: noCol col+ off ;
: cr? ( adr--adr flag) dup c@ #cr = ;
: ?eL ?e dup 1- cr> fEnd @ - ?exit cr< ;
\ executables clv20jan88
( char adr-- char adr')
: begLn noCol cr< 1+ ;
: endLn noCol 1- cr> ;
: up savCol cr< cr< useCol ;
: down savCol 1- cr> ?eL useCol ;
: lastPg savCol pg< useCol ;
: nextPg savCol pg> ?eL useCol ;
: begPg savCol drop scrBeg @ 1- useCol ;
: endPg begPg nextPg ;
: beg savCol drop fBeg @ 1- useCol ;
: end savCol drop fEnd @ cr< useCol ;
: right cr? IF 1 col+ +! ELSE 1+ THEN ;
: left col+ @
IF -1 col+ +! ELSE 1- ?b THEN ;
\ ..exe clv21jan88
: doChar col+ @ 0 ?DO bl fEmit LOOP
noCol over fEmit ;
: backDel col+ @
IF left ELSE 1 fDel THEN ;
: delChar right backDel ;
: wait BEGIN key? UNTIL ;
: exitEd curPos ! drop exitRp @ rp! ;
: info at? 5 0 at
2dup swap cr . . ." at" .i
wait at ;
: help tab @ BEGIN count WHILE
dup @ >name .name 2+ REPEAT
drop wait ;
\ leer clv20jan88
\ writeFile clv20jan88
Onlyforth
: writeFile
8 2 busopen fName count bustype
" ,p,w" count bustype busoff
derror? ?exit
8 2 busout 0 0 bus! bus!
fBeg @ fEnd @ over - bustype busoff
8 2 busclose
0 (drv ! derror? ?exit ;
: readFile
0 (drv !
8 2 busopen fName count bustype
" ,p,r" count bustype busoff
derror? ?exit fBeg @
8 2 busin bus@ drop bus@ drop
BEGIN bus@ over c! 1+ $90 c@ UNTIL
fEnd ! busoff
8 2 busclose derror? ?exit initroom ;
\ leer clv20jan88
| : skp bus@ drop bus@ drop ;
| : wrd bus@ bus@ $100 * + . ;
| : str
BEGIN bus@ ?dup WHILE emit REPEAT ;
: files \ Filename kann folgen
(drv @ 8 +
dup 0 busopen
" $0:" count bustype
bl parse bustype
" *" count bustype
busoff derror? ?exit
dup 0 busin
skp skp \ Sector,Zeilenlink
BEGIN cr wrd str skp $90 c@ UNTIL
0 busclose derror? ?exit ;
\ leer clv20jan88
: fLine #tib @ >tib @ + 1+
dup fEnd @ u> IF drop rdrop exit THEN
dup 1- cr> over - #tib ! >tib !
>in off ;
: .fLine
cr >tib @ dup 5 u.r space
#tib @ type space ;
: xx
>tib push #tib push >in push r0 push
['] 'quit >body push
['] unnest Is 'quit
['] .status >body push
rp@ r0 ! page
['] .fLine Is .status
curPos @ >tib ! -1 #tib !
BEGIN fLine .status interpret REPEAT ;
: loadFile
curPos ! >r xx r> curPos @ wait ;
\ leer clv20jan88
: fConvey ( [from to]--)
1+ swap curPos @ -rot
?DO rows 0
DO #cr fEmit
J block I c/l * + c/l fType
LOOP 1 fDel LOOP drop ;
\ redraw show clv20jan88
: redraw BEGIN scrBeg @ fEnd @ over -
scrCol @ .page drop drop
over u< WHILE
dup pg< 1+ scrBeg ! REPEAT ;
( adr--adr')
: cursor \ dup curPos ! \ test
scrBeg @ 1- -1 -rot
BEGIN rot 1+ -rot
cr> 2dup u> not UNTIL
drop leftchars scrCol @ -
rot swap col+ @ + 'at ;
: ?sR? leftchars col+ @ + dup cols - 1+
scrCol @ max min scrCol ! ;
: ?sB? dup scrBeg @ u< not ?exit
dup begLn scrBeg ! ;
: show ?sB? ?sr? redraw cursor ;
\\ leer \\\\\\\\\\\\\\\\\\\\\ clv21jan88
\ \
\ \
\ \
\ \
\ \
\ \
\ \
\ \
\ \
\ \
\ \
\ \
\ \
\ \
\ \
\ \
\ \
\ \
\ \
\ \
\ \
\ \
\ \
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
\ maintab clv21jan88
: A+ [compile] Ascii + ;
: Ctr -$40 A+ ; : Cbm $60 A+ ;
: Ct+ $40 A+ ;
: => c, ' , ;
Create maintab \ <key> c, ' word ,
Ctr ] => right Ct+ ] => left
Ctr q => down Ct+ q => up
Ctr u => begLn Ctr i => endLn
Ctr h => begPg Ctr j => endPg
Ctr g => lastPg Ctr k => nextPg
Ctr b => beg Ctr n => end
Ctr f => files Ctr l => loadFile
Ctr c => exitEd
Ctr t => backDel Ctr d => delChar
Ctr w => writeFile Ctr r => readFile
Ctr o => info
Ctr p => help
\ Ctr ? => redraw
0 => doChar
\ 0 2 +thru
\ editop clv20jan88
: dokey ( adr char --adr)
tab @ 3 -
BEGIN 3+ dup c@ WHILE 2dup c@ = UNTIL
1+ @ ( adr char cfa )
>r swap r> execute nip ;
: editop
rp@ exitRP ! \ fuer exitEd
curPos @
BEGIN
key? 0= IF show THEN
key maintab tab ! dokey REPEAT ;
\ edi3 test clv21jan88
: init limit $e000 u> abort" limit!!"
0 dup scrCol ! col+ !
limit 1+
dup scrBeg !
dup fBeg ! dup fEnd !
dup curPos !
drop
$0d fBeg @ 1- c!
initroom ;
: red editop
page ." end of edit" ;
: edit bl parse $20 umin fName place
init readFile red ;
clv20jan88
\ editop clv13jan88
: dokey ( char--)
tab @ 3 -
BEGIN 3+ dup c@ WHILE 2dup c@ = UNTIL
1+ @ ( char cfa ) execute drop ;
: (editop
rp@ exitRp ! \ fuer exitEd
BEGIN key dokey REPEAT ;
: editop
tab push maintab tab !
show \ Task initialisieren
(editop
noshow ;
\ leer clv06jan88
 0<><30>E$<24><07>%l<>'QU<<19><07>$<24><07>%<25><18><02><07>
<02><14>E$<24><07>%<25>l<>l<>(<00>><3E>+<2B>U\()0><3E>
+<2B><16>\(70<><3E>+<2B><18>\(fU><3E>+<2B>\(v
=<3D>+<2B><16>\(<00>D0=<3D>+<16>\(<00>D=<3D>+<2B><16><16>
\(<00>D<<3C>+<15><15><16> -<19><15><15><00>\<13>+9
<13><00><08>\)<00>MIN<49>+<2B>-<19>\)EMAX<41>+<2B>
U<18>\)W
IB<EFBFBD>+\!"\;W!QUERY<52>+<2B>!
pW?
Q!"o!;<08>!<21>D!<21>\<<00>!SCAN<41>+P<12><08><1B><00>J
<13><16><00><17>#<17><08><1B><>9\< "SKIP<49>+P<12><08>
<EFBFBD><00>J<13><19><00><17>#<17><08><1B><>9\<;"/STRIN
G<EFBFBD>+<2B><03><15><08>z<15>\Ia<49>I{<7B> I)<29>I[<5B> <09>`=
<00>"CAPITAL<41>"<22> <20>"<22>l ><00>"
CAPITALIZED"<22>
<07>$<24><07>%<25>$<24>&<26>D&P<05>l <0E><1B><>\0<00>FREPEAT<41>+
F<17>6!<21>Q\0<00>EUNTIL<49>+F<17>6!<21>Q\1B
DO<EFBFBD>+6!<21><><EFBFBD>P\1C?DO<44>+6!<21><><EFBFBD>P\11DLO
OP<EFBFBD>+P<17>6!J<>6!<21><><EFBFBD>\1eE+LOOP<4F>+P<17>6!<21><>6
!<21><><EFBFBD>\1`<1D>LEAVE<56>+<2B><><EFBFBD><12><17>"<08>P\2<00>U
M*<2A><1D><07>$<24><07>%H<>&<26>'<27>'&&&%&$<24><18><07>'<27>'H<><07><>
&<26>&<26><06>%P<02>$JP|<7C>'<27>H<>&<26><07><01>$<24><07><0F><04><07><02>l
<00>CTOGGLE<4C>+<2B>Jn<16><08>\<13>@$<08><07>$<24>
<07>%<25>$<24><07>$l<00>!=<08><07>$<24><07>%H<><07>$H<><07><01>$l
<EFBFBD><13>7+!]<08><07>$<24><07>%H<><18>$<24>$H<><07><01>$lov
DROP<4F><00>SWAP<41><08><07><><03><07>$<24><><07>$<24><01>H<><00>
<EFBFBD>$<24><07><07><>$l<00>DUP<55><08>8<><02><07>F<14><03><07><01>
H<EFBFBD><07>l<00>?DUP<55><08>Pl l<>VOVER<45>


<00>(4112)<00>la<>l9al<61>P J6׮P<D7AE>T<EFBFBD><54>
Vc<56><63><EFBFBD>3t

.*ultraFORTH-83 3.80-C16+ <20><><EFBFBD><EFBFBD><0E><1D><><EFBFBD>
<EFBFBD><18><0E><02><0E><03><><EFBFBD><EFBFBD><0F><> END-TRACE<43><11><><EFBFBD><13><0E>
<08>Ʌ<15><02>l wRECOVER.*ȅȅ<1D>PFFl
<EFBFBD>+<00>NOOP <00>ORIGIN<49>+<00>S0<,<00>
R0<,
<00>DP<, GOFFSET<,QBASE<
,<00>OUTPUT<,<00>INPUT<,<00> ERROR
HANDLER<,VOC-LINK<,<00>UDP<,<2C>*
SP@=<12><07>$<24><14>%<25>$<24>8<><02><07>F<14><01><07><00>l5
SP!<21><12><07><><07><14><07>l _UP@<12>lg<00><12>
UP!<21><12><04><07><01><><07><00><00><01><18><02><07><02>l <00>RP
@<40><12>lg<00><12>RP!D<12>l<><00><12>>RR<12>8<><02><02>
F<03><07><02><07>l<>K<12>R><3E><12>8<><02><07>F<14><02><07>
<EFBFBD><07><18><02><02><02>l <00>R@<13>8<><02><07>F<14><02><07>
l<13>RDROP1EXITf<13><02><0E><02>l=
UNNEST^<13><02><0E><02>ls?EXIT<49><13><14>
<EFBFBD><02><07><02>(P<>l <00>EXECUTE<54><13><07><1C><07><1D><18>
<EFBFBD><07><02>l<00>PERFORM<52>+"<08>\<00>C@L<13><07>
$<24><07>%<25><00><07>$lEC!<21><13><07>$<24><07>%H<><07>$<24><>
5<>with<74>hadows<77>>ramdisk<73>4of4<66>61<36>63<36>no<6E>ha
dows<EFBFBD>>ramdisk<73>4of4<66>138<33>143<34>no<6E>hadows<77>>ram
disk<EFBFBD>3of4<EFBFBD>46<EFBFBD>46<EFBFBD>with<EFBFBD>hadows<EFBFBD>>ramdisk<73>now<6F>
>file<6C>C--><3E><01>\<5C>..makecopy<70>2of4<66>clv20nov8
7<EFBFBD>now<EFBFBD>rddel<EFBFBD>"<22>1<EFBFBD>uf-quelle"<22>new<65>ame<6D>2of4<66>0
<EFBFBD>30<EFBFBD>no<EFBFBD>hadows<EFBFBD>>ramdisk<73>now<6F>>fileHnow<6F>rdde
l<EFBFBD>"<22>2<EFBFBD>uf-qait<69>disk#<23>1of4<66>...<2E>clv20nov87
<EFBFBD>:<3A>wait<69>key<65>drop<6F>;<3B>\<5C>wartet<65>auf<75>taste<74><65>ar
iable<EFBFBD>lastdisk<EFBFBD>:<3A>bitte<74>cr<63>."<22>bitte<74>"<22>;<3B>:<3A>
rein<EFBFBD>."<22>einlegen!"<22>key<65>drop<6F>;<3B>:<3A>disk:<3A><>re
ate<EFBFBD>last<EFBFBD>@<40>,<2C><>oes><3E>@<40>dup<75>lastdisk<73>@<40>-<2D><>ƀ
bitte<EFBFBD>dup<EFBFBD>.name<6D>rein<69><6E><EFBFBD><EFBFBD>Όlastdisk<73>!<21>;<3B>di
sk:<3A>filefloppy<70>disk: <0B>1of4<66>disk:<3A>2of4<66>di
sk:<3A>3of4<66>disk:<3A>4of4<66>:<3A>nodisk<73>lastdisk<73>off
<EFBFBD>;<3B>nodisk<73>:<3A>disk#<23>0.0<EFBFBD>lastdisk<EFBFBD>@<40>convert<72>
2drop<EFBFBD>;<3B>:<3A>sourcetape<70>bitte<74>."<22><>uell-<2D>ape"
<EFBFBD>rein<EFBFBD>;<3B>:<3A>desttape<70>bitte<74>."<22><>iel<65>-<2D>ape"<22>r
ein<EFBFBD>;<01>\<5C>>ramdisk<73>>file<6C>clv20nov87<38>:<3A>.s
crs<EFBFBD>(<28>f<EFBFBD>t<EFBFBD>--)<29>cr<63>lastdisk<73>@<40>.nov87<38><37>ier
<EFBFBD>ist<EFBFBD>der<EFBFBD>(fast)<29>komplette<74><65>opier-<2D>vorgang
<EFBFBD>von<EFBFBD><EFBFBD>iskette<EFBFBD>rev<EFBFBD>3.8<EFBFBD>auf<EFBFBD><EFBFBD>assette<EFBFBD>nieder
gelegt.<2E><>as<61><73>opieren<65>ist<73>eine<6E>leidige<67><65>ac
he,<2C>ich<63>hoffe,<2C>ich<63>habe<62>nichts<74>vergessen.
<EFBFBD><EFBFBD>alls<EFBFBD><EFBFBD>hr<EFBFBD>denkt,<2C>dass<73>etwas<61>auf<75><66>urer<65><72>a
ssette<EFBFBD>fehlt,<2C>guckt<6B>bitte<74>hier<65>nach.<2E><>er
<03>supertape"<22>new<65>ame<6D>4of4<66>32<33>50<35>with<74>had
ows<EFBFBD>>ramdisk<73>now<6F>>fileHnow<6F>rddel<65>"<22>ramdis
k"<22>new<65>ame<6D>4of4<66>21<32>31<33>with<74>hadows<77>>ramdis
k<EFBFBD>now<EFBFBD>>fileHnow<6F>rddel<65>"<22>tape"<22>new<65>ame<6D>4of
4<EFBFBD>0<EFBFBD>5<EFBFBD>with<EFBFBD>hadows<EFBFBD>>ramdisk<73>4of4<66>13<31>20<32>wit
h<EFBFBD>hadows<EFBFBD>>ramdisk<73>now<6F>>fileHnow<6F>rddel<65>"<22>d
ecompiler"del<65>"<22>infos"<22>new<65>ame<6D>1of4<66>0<EFBFBD>1
3<EFBFBD>with<EFBFBD>hadows<EFBFBD>>ramdisk<73>2of4<66>0<EFBFBD>1<EFBFBD>no<6E>hadows
<EFBFBD>>ramdisk<73>3of4<66>0<EFBFBD>1<EFBFBD>no<6E>hadows<77>>ramdisk<73>4of
4<EFBFBD>0<EFBFBD>1<EFBFBD>no<EFBFBD>hadows<EFBFBD>>ramdisk<73>now<6F>>fileHnow<6F>rd
del<EFBFBD>"<22>disk"<22>new<65>ame<6D>1of4<66>26<32>36<33>with<74>hadow
s<EFBFBD>>ramdisk<73>now<6F>>fileHnow<6F>rddel<65>"<22>kleinkra
m"<22>new<65>ame<6D>1of4<66>14<31>2.multitasker"<22>docop
y<EFBFBD>now<EFBFBD>"<22><><EFBFBD>.printer"<22>docopy<70>now<6F>"<22><><EFBFBD>.c16<31>s
upertape"<22>docopy<70>now<6F>"<22><><EFBFBD>.ramdisk"<22>docopy
<EFBFBD>now<EFBFBD>"<22><><EFBFBD>.tape"<22>docopy<70>now<6F>"<22><><EFBFBD>.decompile
r"<22>docopy<70>now<6F>"<22><><EFBFBD>.c64<36>1-grafik"<22>docopy<70>n
ow<EFBFBD>"<22><><EFBFBD>.c64<36>2-grafik"<22>docopy<70>now<6F>"<22><><EFBFBD>.c64
<EFBFBD>grafdemo"<22>docopy<70>now<6F>;A<01>\<5C>wame<6D>swap<61>
.<2E>.<2E><>scii<69>"<22>emit<69>[<5B><>amdisk<73>]<5D>id<69>1+<2B>&16<31>ty
pe<EFBFBD><EFBFBD>scii<EFBFBD>"<22>emit<69>;A:<3A>>ramdisk<73>(<28>[from<6F>to]<5D>
shadow<EFBFBD>lag--)<29>>r<>2dup<75>.scrs<72>over<65>disk#<23>bl
k/drv<72>*<2A>+<2B>r><3E><>ƀ."<22>shadows"<22>sconvey<65><79><EFBFBD><EFBFBD>ŀ
convey<EFBFBD><EFBFBD><EFBFBD><EFBFBD>΀;<3B>:<3A>>file<6C>filefloppy<70>saveramd
isk<EFBFBD>;\\<5C>clv21nov87<38><37>ie<69>wichtigsten<65><6E>
vey<65>;G'<27>true<75><65>lias<61>with<74>hadows<77>'<27>false<73>
<EFBFBD>lias<EFBFBD>no<EFBFBD>hadows<EFBFBD><00>\<5C><>elp<6C>clv20nov87<38><37>ie<69>
sind<EFBFBD>im<EFBFBD><EFBFBD>ditor!!Averlassem<65>mit:<3A><run/stop
><3E>aufrufen<65>mit:<3A>̀(<28>scr--)<29>z.<2E>.:<3A>1<EFBFBD>̾<EFBFBD>aec
hste<EFBFBD><EFBFBD>eite:<3A><ctrl>+Βvorige<67><65>eite:<3A><ctrl>
+’<>hadow-<2D>eite:<3A><ctrl>+׃\\<5C>zu<7A><75>ape-<2D>
opy<EFBFBD>clv20new<65>ame<6D>3of4<66>47<34>56<35>with<74>hadows
<EFBFBD>>ramdisk<73>now<6F>>fileHnow<6F>rddel<65>"<22>multitask
er"<22>new<65>ame<6D>3of4<66>57<35>62<36>with<74>hadows<77>>ramdi
sk<EFBFBD>now<EFBFBD>>fileHnow<6F>rddel<65>"<22>printer"<22>new<65>ame
<EFBFBD>3of4<EFBFBD>63<EFBFBD>84<EFBFBD>with<EFBFBD>hadows<EFBFBD>>ramdisk<73>now<6F>>fil
eH--><3E><01>\<5C>..makecopy<70>4of4<66>1.<2E>eil<69>cclv20n
ov87<EFBFBD>now<EFBFBD>rddel<EFBFBD>"<22>c16 f4<66>clv20nov87<38>2<EFBFBD>6<EFBFBD>+
thru<EFBFBD>\<5C>kleinkram<61>laden<65>floppy<70>\<5C>wird<72>nach
her<EFBFBD>auf<EFBFBD><EFBFBD>ape<EFBFBD>gespult<EFBFBD>:<3A>makecopy<70>\<5C>kopiert
<EFBFBD>alle<EFBFBD><EFBFBD>isketten<EFBFBD>now<EFBFBD>0<EFBFBD>drive<EFBFBD>base<EFBFBD>push<EFBFBD>dec
imal<EFBFBD>[<5B><>amdisk<73>]<5D>limit<69>$c000<30>u><3E>abort"<22>no
<EFBFBD>room"<22>$c000<30>memtop<6F>rdnew<65><77><EFBFBD><EFBFBD>--><3E><01>\<5C>..m
akecopy<EFBFBD>1of4<EFBFBD>clv20nov87<EFBFBD>now<EFBFBD>rd
ow<EFBFBD>"<22><><EFBFBD>.k
leinkram"<22>docopy<70>now<6F>"<22><><EFBFBD>.1<EFBFBD>uf-quelle"<22>do
copy<EFBFBD>now<EFBFBD>"<22><><EFBFBD>.2<EFBFBD>uf-quelle"<22>docopy<70>now<6F>"<22><>
<EFBFBD>.3<EFBFBD>uf-quelle"<22>docopy<70>now<6F>"<22><><EFBFBD>.4<EFBFBD>uf-quell
e"<22>docopy<70>now<6F>"<22><><EFBFBD>.5<EFBFBD>uf-quelle"<22>docopy<70>no
w<EFBFBD>"<22><><EFBFBD>.assembler"<22>docopy<70>now<6F>"<22><><EFBFBD>.editor"
<EFBFBD>docopy<EFBFBD>now<EFBFBD>"<22><><EFBFBD>.tracer"<22>docopy<70>now<6F>"<22><><EFBFBD>
 orte<74>sind:<3A>makecopy<70>-<2D>erzeugt<67>aus<75>dem<65><6D>
creen-<2D><>ormat<61>der<65>4<EFBFBD><34>isk-<2D>eiten<65><6E>amdisks,
<EFBFBD>die<EFBFBD>wieder<EFBFBD>auf<EFBFBD><EFBFBD>iskette<EFBFBD>stehen<EFBFBD>copy>tape
-<2D>kopiert<72>die<69><65>ystem-<2D>iles<65>und<6E>die<69><65>amdis
k-<2D>iles<65>von<6F><6E>iskette<74>auf<75><66>asette<74><65>uer<65>bei
des<EFBFBD>braucht<EFBFBD><EFBFBD>hr<EFBFBD>ein<EFBFBD><EFBFBD>iskettenlaufwerk<EFBFBD>-->
\<01>\<5C>tape t<><74>ƀcompile<6C>(disk"<22>,"<22><><EFBFBD><EFBFBD>ŀn
"<22>(disk<73><6B><EFBFBD><EFBFBD>΀;<3B>immediate<74>\\<5C>z.<2E>.<2E>disk"<22>s:
file"<22>\<5C>loescht<68>fileZ<00>\<5C>sconvey<65>with/no
<EFBFBD>hadows<EFBFBD>clv19nov87<EFBFBD>:<3A>sconvey<65>(<28>[from<6F>to]<5D>
destination--)<29>2<EFBFBD>pick<63>2<EFBFBD>pick<63>2<EFBFBD>pick<63>conve
y<EFBFBD>[<5B><>ditor<6F>]<5D>shadow<6F>@<40>>r<>r@<40>+<2B>rot<6F>r@<40>+<2B>ro
t<EFBFBD>r@<40>+<2B>rot<6F>rdrop<6F>con
ows<EFBFBD>>ramdisk<73>now<6F>>f
ile<EFBFBD>--><3E><01>\<5C>..makecopy<70>3of4<66>clv20nov87<38>n
ow<EFBFBD>rddel<EFBFBD>"<22>assembler"<22>new<65>ame<6D>3of4<66>2<EFBFBD>13<31>w
ith<EFBFBD>hadows<EFBFBD>>ramdisk<73>now<6F>>fileHnow<6F>rddel<65>"
<EFBFBD>editor"<22>new<65>ame<6D>3of4<66>14<31>18<31>with<74>hadows<77>>
ramdisk<EFBFBD>3of4<EFBFBD>19<EFBFBD>45<EFBFBD>with<EFBFBD>hadows<EFBFBD>>ramdisk<73>n
ow<EFBFBD>>fileHnow<6F>rddel<65>"<22>tracer"<22>nn<>bei<65>ein
em<EFBFBD>dieser<EFBFBD><EFBFBD>orte<EFBFBD>etwas<EFBFBD>schief<EFBFBD>geht,<2C>besteh
t<EFBFBD>die<EFBFBD><EFBFBD>oeglichkeit<EFBFBD>an<EFBFBD>der<EFBFBD><EFBFBD>telle,<2C>wo<77>der<65>
<EFBFBD>ehler<EFBFBD>auftrat<EFBFBD>fortzufahren.<2E><>azu<7A>dient<6E>d
as<EFBFBD><EFBFBD>ort:Q<><51><EFBFBD><EFBFBD><EFBFBD>aber<65><72>orsicht:<3A><>enn<6E>ihr<68>etw
as<EFBFBD>veraendert<EFBFBD>habt,<2C>kann<6E><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŀdas<61>nic
ht<EFBFBD>wissen.<2E><00>\<5C>kopieren<65>auf<75><66>amdisks<6B>1o
disk<73>4of4<66>90<39>100<30>no<6E>hadows<77>>ramdisk<73>now
<EFBFBD>>fileHnow<6F>rddel<65>"<22>c64<36>grafdemo"<22>new<65>ame<6D>
4of4<EFBFBD>144<EFBFBD>164<EFBFBD>no<EFBFBD>hadows<EFBFBD>>ramdisk<73>165<36>binar
y<EFBFBD>4of4<EFBFBD>165<EFBFBD>169<EFBFBD>no<EFBFBD>hadows<EFBFBD>>ramdisk<73>now<6F>>fi
leHnow<EFBFBD>;i<02>\<5C>..tapecopy<70>clv20nov87<38>super
tapeHnow<EFBFBD>"<22><><EFBFBD>.infos"<22>docopy<70>now<6F>"<22><><EFBFBD>.disk
"<22>docopy<70>n
<00> bv16h4<68><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tv<74><76><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
\\ zu Files clv06jan88
SKP ignoriert 2 bytes
WRD gibt 2 bytes als Zahl aus
STR gibt einen 0-terminated string aus
Kanal-Nummer 0 gibt die aufbereitete
Version der Directory.
Der Rest ist auch zur Ausgabe jedes
Basic-Files brauchbar, da gleichs Form.
<00>1@$<24>'=<3D><00><00><00> RD.maket2
<20><01>\<5C>..makecopy<70>1o
f4<EFBFBD>clv20nov87<EFBFBD>now<EFBFBD>rddel<EFBFBD>"<22>infos"<22>new<65>ame<6D>
1of4<EFBFBD>0<EFBFBD>13<EFBFBD>with<EFBFBD>hadows<EFBFBD>>ramdisk<73>2of4<66>0<EFBFBD>1<EFBFBD>n
o<EFBFBD>hadows<EFBFBD>>ramdisk<73>3of4<66>0<EFBFBD>1<EFBFBD>no<6E>hadows<77>>ram
disk<EFBFBD>4of4<EFBFBD>0<EFBFBD>1<EFBFBD>no<EFBFBD>hadows<EFBFBD>>ramdisk<73>now<6F>>fil
eHnow<EFBFBD>rddel<EFBFBD>"<22>disk"<22>2<>no<6E>hadows<77>>ramdis
k<EFBFBD>now<EFBFBD>>fileHnow<6F>rddel<65>"<22>c64<36>2-grafik"<22>new
<EFBFBD>ame<EFBFBD>4of4<EFBFBD>64<EFBFBD>89<EFBFBD>no<EFBFBD>hadows<EFBFBD>>ramdisk<73>4of4<66>9
0<EFBFBD>100<EFBFBD>no<EFBFBD>hadows<EFBFBD>>ramdisk<73>now<6F>>fileHnow<6F>rd
del<EFBFBD>"<22>c64<36>grafdemo"<22>new<65>ame<6D>4of4<66>144<34>164<36>
no<EFBFBD>hadows<EFBFBD>>ramdisk<73>165<36>binary<72>4of4<66>165<36>16
9<EFBFBD>no<EFBFBD>hadows<EFBFBD>>ramdisk<73>now<6F>>file0<>5<EFBFBD>with<74>
hadows<EFBFBD>>ramdisk<73>4of4<66>13<31>20<32>with<74>hadows<77>>r
amdisk<EFBFBD>now<EFBFBD>>fileHnow<6F>rddel<65>"<22>decompiler"<22>
new<EFBFBD>ame<EFBFBD>4of4<EFBFBD>51<EFBFBD>60<EFBFBD>no<EFBFBD>hadows<EFBFBD>>ramdisk<73>now
<EFBFBD>>file<6C><65>--><3E><01>\<5C>..makecopy<70>4of4<66>2.<2E>eil<69>c
clv20nov87<EFBFBD>now<EFBFBD>rddel<EFBFBD>"<22>c64<36>1-grafik"<22>new<65>
ame<EFBFBD>4of4<EFBFBD>0<EFBFBD>1<EFBFBD>no<EFBFBD>hadows<EFBFBD>>ramdisk<73>4of4<66>6<EFBFBD>1
oom<6F>room<6F>off<66>:<3A>docopy<70>(<28>string<6E>--)<29>room
<EFBFBD>@<40>swap<61>2dup<75>from<6F>count<6E>bload<61>swap<61>to<74>cou
nt<EFBFBD>bsave<EFBFBD>;<3B>:<3A>eot<6F>$1000<30>$1001<30>"<22>end-of-tap
e"<22>count<6E>3<EFBFBD>pick<63>3<EFBFBD>pick<63>3<EFBFBD>pick<63>3<EFBFBD>pick<63>$020
7<EFBFBD>csave<EFBFBD>derr?<3F>drop<6F>$0201<30>csave<76>derr?<3F>drop
<EFBFBD>;<3B><01>\<5C>>file<6C>new<65>ame<6D>>ramdisk<73>clv05dec87
<EFBFBD>:<3A>new<65>ame<07>(<28>string--)<29>[<5B><>amdisk<73>]<5D>id<69>4
<EFBFBD>+<2B>&28<32>bl<62>fill<6C>count<6E>&28<32>umin<69>[<5B><>amdisk<73>]
<EFBFBD>id<EFBFBD>4<EFBFBD>+<2B>swap<61>cmove<76>;<3B>:<3A>.scrs<72>(<28>f<EFBFBD>t<EFBFBD>--)<29>cr
<EFBFBD>lastdisk<EFBFBD>@<40>.name<6D>swap<61>.<2E>.<2E><>scii<69>"<22>emit<69>[
<EFBFBD><EFBFBD>amdisk<EFBFBD>]<5D>id<69>1+<2B>&16<31>type<70><65>scii<69>"<22>emit<69>;A
:<3A>>ramdisk<73>(<28>[from<6F>to]<5D>shadow<6F>lag--)<29>>r<>2
dup<EFBFBD>.scrs<72>over<65>disk#with<74>hadows<77>>ramdis
k<EFBFBD>now<EFBFBD>>fileH--><3E><01>\<5C>..makecopy<70>4of4<66>1.<2E>e
il<EFBFBD>cclv20nov87<EFBFBD>now<EFBFBD>rddel<EFBFBD>"<22>c16<31>supertape"
<EFBFBD>new<EFBFBD>ame<EFBFBD>4of4<EFBFBD>32<EFBFBD>50<EFBFBD>with<EFBFBD>hadows<EFBFBD>>ramdisk<73>
now<EFBFBD>>fileHnow<6F>rddel<65>"<22>ramdisk"<22>new<65>ame<6D>4o
f4<EFBFBD>21<EFBFBD>31<EFBFBD>with<EFBFBD>hadows<EFBFBD>>ramdisk<73>now<6F>>fileHn
ow<EFBFBD>rddel<EFBFBD>"<22>tape"<22>new<65>ame<6D>4of4<66><03>(disk"<22>"
lit<EFBFBD>count<EFBFBD>(disk<73>;<3B>restrict<63>:<3A>disk"<22>state<74>
@<40>\<5C>string<6E>folgt<67><74>ƀcompile<6C>(disk"<22>,"<22><><EFBFBD><EFBFBD>
ŀn"<22>(disk<73><6B><EFBFBD><EFBFBD>΀;<3B>immediate<74>\\<5C>z.<2E>.<2E>disk"
<EFBFBD>s:file"<22>\<5C>loescht<68>file0<01>\<5C>docopy<70>room<6F>
from<EFBFBD>to<EFBFBD>eof<EFBFBD>clv03dec87<EFBFBD><EFBFBD>efer<EFBFBD>from<EFBFBD>'<27>noop<6F>
<EFBFBD>s<EFBFBD>from<EFBFBD><EFBFBD>efer<EFBFBD>to<EFBFBD>'<27>noop<6F><70>s<EFBFBD>to<74><6F>ariable<6C>r

<EFBFBD>blk/drv<72>*<2A>+<2B>r><3E><>ƀ."<22>shadows"<22>sconvey<65>
<EFBFBD><EFBFBD><EFBFBD>ŀconvey<EFBFBD><EFBFBD><EFBFBD><EFBFBD>΀;<3B>:<3A>>file<6C>filefloppy<70>sav
eramdisk<EFBFBD>;Z<00>\<5C>sconvey<65>with/no<6E>hadows<77>cl
v19nov87<EFBFBD>:<3A>sconvey<65>(<28>[from<6F>to]<5D>destinatio
n--)<29>2<EFBFBD>pick<63>2<EFBFBD>pick<63>2<EFBFBD>pick<63>convey<65>[<5B><>ditor
<EFBFBD>]<5D>shadow<6F>@<40>>r<>r@<40>+<2B>rot<6F>r@<40>+<2B>rot<6F>r@<40>+<2B>rot
<EFBFBD>rdrop<EFBFBD>con14<31>18<31>with<74>hadows<77>>ramdisk<73>3o
f4<EFBFBD>19<EFBFBD>45<EFBFBD>with<EFBFBD>hadows<EFBFBD>>ramdisk<73>now<6F>>fileHn
ow<EFBFBD>rddel<EFBFBD>"<22>tracer"<22>new<65>ame<6D>3of4<66>47<34>56<35>wit
h<EFBFBD>hadows<EFBFBD>>ramdisk<73>now<6F>>fileHnow<6F>rddel<65>"<22>m
ultitasker"<22>new<65>ame<6D>3of4<66>57<35>62<36>with<74>hadow
s<EFBFBD>>ramdisk<73>now<6F>>fileHnow<6F>rddel<65>"<22>printer"
<EFBFBD>new<EFBFBD>ame<EFBFBD>3of4<EFBFBD>63<EFBFBD>84<EFBFBD>py<70>now<6F>"<22>c16ultrafo
rth83"<22>docopy<70>now<6F>"<22>c64ultraforth83"<22>doco
py<EFBFBD>now<EFBFBD>"<22>c16demo"<22>docopy<70>now<6F>"<22>c64demo"<22>d
ocopy<EFBFBD>eot<EFBFBD>now<EFBFBD>;%<01>\<5C>disk"<22>cclv20nov87<38>:<3A>
(disk<73>(<28>addr<64>len--)<29>\<5C>sendet<65>den<65>string<6E>a
n<EFBFBD>die<EFBFBD><EFBFBD>isk<EFBFBD>8<EFBFBD>&15<31>busopen<65>bustype<70>busoff<66>d
error?<3F>drop<6F>8<EFBFBD>&15<31>busclose<73>;<3B>:
vey<EFBFBD>;G'<27>t
rue<EFBFBD><EFBFBD>lias<EFBFBD>with<EFBFBD>hadows<EFBFBD>'<27>false<73><65>lias<61>no<6E>ha
dows<EFBFBD><00>\<5C>now<6F>cont<6E>clv03decclv05dec87<38><37>ar
iable<EFBFBD>lastnowA:<3A>now<6F>r@<40>lastnow<6F>!<21>;<3B>:<3A>cont
<EFBFBD>lastnow<EFBFBD>@<40>>r<>;<3B>here<72>2-<2D>lastnow<6F>!<02>\<5C>re
locating<EFBFBD>the<EFBFBD>system<EFBFBD>20oct87re<EFBFBD>܀:<3A>relocat
e-tasks<6B>(<28>new<65>Ѐ--<2D>)<29>up@<40>dup<75><70><EFBFBD><EFBFBD><EFBFBD>΁1+<2B>un
4<>91<39>120<32>no<6E>hadows<77>>ramdisk<73>now<6F>>fileHn
ow<EFBFBD>rddel<EFBFBD>"<22>5<EFBFBD>uf-quelle"<22>new<65>ame<6D>2of4<66>121<32>
169<EFBFBD>no<EFBFBD>hadows<EFBFBD>>ramdisk<73>now<6F>>file<6C>--><3E><01>\
<EFBFBD>..makecopy<70>3of4<66>clv20nov87<38>now<6F>rddel<65>"<22>a
ssembler"<22>new<65>ame<6D>3of4<66>2<EFBFBD>13<31>with<74>hadows<77>>
ramdisk<EFBFBD>now<EFBFBD>>fileHnow<6F>rddel<65>"<22>editor"<22>new
<EFBFBD>ame<EFBFBD>3of4<EFBFBD> copy<70>now<6F>"<22><><EFBFBD>.c64<36>1-grafik*"<22>
docopy<EFBFBD>now<EFBFBD>"<22><><EFBFBD>.c64<36>2-grafik*"<22>docopy<70>now
<EFBFBD>"<22><><EFBFBD>.c64<36>grafdemo*"<22>docopy<70>now<6F>"<22><><EFBFBD>.make
tape*"<22>docopy<70>--><3E><00>\<5C>..copy>tape<70>system
<EFBFBD>iles<EFBFBD>clv21nov87<EFBFBD>[']<5D>floppy<70><79>s<EFBFBD>from<6F>[']<5D>s
upertape<EFBFBD><EFBFBD>s<EFBFBD>to<EFBFBD>now<EFBFBD>"<22>c16tapeforth83"<22>doco
py<EFBFBD>now<EFBFBD>"<22>runme"<22>docoder<65>@<40>2dup<75>-<2D><><EFBFBD><EFBFBD><EFBFBD>Ł
rot<EFBFBD>drop<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԁ2drop<EFBFBD>!<21>;<3B>:<3A>relocate<74>(<28>st
acklen<EFBFBD>rstacklen<EFBFBD>--<2D>)<29>swap<61>origin<69>+<2B>2dup<75>
+<2B>b/buf<75>+<2B>2+<2B>limit<69>u><3E>abort"<22>buffers?"<22>du
p<EFBFBD>pad<EFBFBD>$100<30>+<2B>u<<3C>abort"<22>stack?"<22>over<65>udp<64>@
<EFBFBD>$40<34>+<2B>u<<3C>abort"<22>rstack?"<22>flush<73>empty<74>und
er<EFBFBD>+<2B>origin<69>$<24><>+<2B>!<21>\<5C>r0<72>dup<75>re now<6F>rddel
<EFBFBD>"<22>1<EFBFBD>uf-quelle"<22>new<65>ame<6D>2of4<66>0<EFBFBD>30<33>no<6E>hado
ws<EFBFBD>>ramdisk<73>now<6F>>fileHnow<6F>rddel<65>"<22>2<EFBFBD>uf-qu
elle"<22>new<65>ame<6D>2of4<66>31<33>60<36>no<6E>hadows<77>>ramdi
sk<EFBFBD>now<EFBFBD>>fileHnow<6F>rddel<65>"<22>3<EFBFBD>uf-quelle"<22>new
<EFBFBD>ame<EFBFBD>2of4<EFBFBD>61<EFBFBD>90<EFBFBD>no<EFBFBD>hadows<EFBFBD>>ramdisk<73>now<6F>>f
ileHnow<EFBFBD>rddel<EFBFBD>"<22>4<EFBFBD>uf-quelle"<22>new<65>ame<6D>2of
clv06jan88
aus<75>[[<5B>p<EFBFBD>ass<73>lda<64>$10<31>#<23>and<6E>z<EFBFBD>it<69>cmp<6D>0<>
<EFBFBD>?]<5D>z<EFBFBD>it<69>sta<74>timer<65><72>tart<72>jsr<73>$17<31>#<23>lda<64>sn
dÀsta<EFBFBD>\<5C><>ound<6E>ein<69>z<EFBFBD>yte<74>lda<64>rts<74>end-code
<EFBFBD><EFBFBD>ode<EFBFBD>justage<EFBFBD>clsl<EFBFBD>#<23>lda<64>clc<6C>inits<74>jsr<73>[[
<EFBFBD>0<EFBFBD>#<23>lda<64>snd<6E>sta<74>\<5C>falsch<63>[[<5B>bit<69>esen<65>jsr
<EFBFBD>c<EFBFBD>ync<EFBFBD>yte<EFBFBD>#<23>cmp<6D>0=<3D>?]<5D>$ff<66>#<23>lda<64>snd<6E>sta<74>
\<5C>richtig<69>)<29>cr<63>.(<28>tape>disk<73>\<5C>kopiert<72>n
ur<EFBFBD><EFBFBD>amdisks!)<29>܀:<3A>rcopy<70>(<28>blk--)<29>blk/drv<72>
u/mod<6F>#disk<73>dup<75>1<EFBFBD>>drive<76>swap<61>0<EFBFBD>>drive<76>co
py<EFBFBD>;<3B>:<3A>ramdisk><3E>(<28>--)<29>[<5B><>amdisk<73>]<5D>rd<72><64><EFBFBD><EFBFBD><EFBFBD>
΀dup<EFBFBD>@<40>+<2B>dup<75>@<40><><EFBFBD><EFBFBD><EFBFBD>Ő(<28>adr<64>)<29>dup<75>2+<2B>@<40>rc
opy<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԋdrop<EFBFBD>;J:<3A>tape>disk<73><6B><EFBFBD><EFBFBD><EFBFBD>΀loadr
amdisk<EFBFBD>ramdisk><3E><><EFBFBD><EFBFBD><EFBFBD>lv05dec87<38><37><EFBFBD>tility<74>
zur<EFBFBD><EFBFBD>isksteuerung<EFBFBD><EFBFBD><EFBFBD><EFBFBD>creen-<2D>isks<6B>auf<75><66>ile
-<2D>isk<73><6B>ile-<2D>isk<73>auf<75><66>ape<70><65>amdisks<6B>von<6F><6E>ap
e<EFBFBD>auf<EFBFBD><EFBFBD>creen-<2D>isks<6B><73>rstellen<65>des<65><73>ape<70><01>
\<5C><>irectory<72>maketape<70>clv05dec87<38><37>iese<73><65>am
disk<EFBFBD>dient<EFBFBD>kopieren<EFBFBD>auf<EFBFBD><EFBFBD>assette.Ddisk"<22>2
<EFBFBD>relocate<EFBFBD>3<EFBFBD>now<EFBFBD>cont<EFBFBD>4<EFBFBD>lastdis?<3F>pla<6C>pla
<EFBFBD><EFBFBD>abel<EFBFBD>exits<EFBFBD>x<EFBFBD>ass<EFBFBD>otor<EFBFBD>ff<EFBFBD>jsr<EFBFBD>x<EFBFBD>ass<EFBFBD>rt<EFBFBD>f
f<EFBFBD>jsr<EFBFBD>cli<EFBFBD>ram<EFBFBD>xy<EFBFBD>ext<EFBFBD>jmp H\<5C>justage<67>clv
03dec87<EFBFBD><EFBFBD>abel<EFBFBD>bit<EFBFBD>esen<EFBFBD>\<5C>akt.<2E>yte<74>in<69><6E>Ҁz
urueck<EFBFBD>$10<31>#<23>lda<64>[[<5B>ptimer<65>ctrl<72>bit<69>0<><3E>?
]<5D>p<EFBFBD>ass<73>lda<64>$10<31>#<23>and<6E>z<EFBFBD>it<69>cmp<6D>0<><3E>?[<5B>clc
<EFBFBD>]?<3F>z<EFBFBD>it<69>sta<74>$10<31>#<23>lda<64>sndÀsta<74>\<5C><>ound<6E>
\\ altlasten cclv1jan88
Code >scr ( char--char')
sp x) lda tay .a lsr .a lsr .a lsr
.a lsr .a lsr .a asl
tax tya inx scrtab ,x and
dex scrtab ,x ora 0 # ldx sp x) sta
1 # ldy next jmp end-code
: t $18 0 at $100 0
DO cr I dup . dup emit
>scr dup . $fc8 c! LOOP ;
\\
: t0 $80 0 DO $100 0 DO I
( 9 sec) noop drop LOOP LOOP ;
: t1 $80 0 DO $100 0 DO I
( 60 sec) >scr drop LOOP LOOP ;
: t2 $80 0 DO $100 0 DO I
( 10 sec) cbm>scr drop LOOP LOOP ;
: t3 $80 0 DO $100 0 DO I
( 10 sec) >scr3 drop LOOP LOOP ;
<05>drop<6F>empty<74>-1<>+load<61>runme&tonkopf<70>empt
y<EFBFBD>1<EFBFBD>+load<61>testsignal<61>empty<74>\needs<64>relocat
e<EFBFBD>3<EFBFBD>load<EFBFBD>decimal<EFBFBD>'<27>tapeinit<69><74>s<EFBFBD>'restart<72>s
upertape<EFBFBD>savesystem<EFBFBD>ultraforth83"<22>empty<74>&
16<EFBFBD>load<EFBFBD>copy>tape4<01>\\<5C>zu<7A>maketape<70>clv03
dec87<EFBFBD><EFBFBD>ier<EFBFBD>ist<EFBFBD>der<EFBFBD>(fast)<29>komplette<74><65>opie
r-<2D>vorgangsonstige<67><65>ystemadressen<65>$07c8
<EFBFBD>><3E>abel<65>s<EFBFBD>ime<6D>\<5C><>onstanten<65>$b5<62>><3E>abel<65>cls
l<EFBFBD>$ff<66>><3E>abel<65>clssh<73>$78<37>><3E>abel<65>clssl<73>$16<31>>
<EFBFBD>abel<EFBFBD>c<EFBFBD>ync<EFBFBD>yteHG\<5C>wait<69>delay<61>inits/ex<65>
clv03dec87<EFBFBD><EFBFBD>abel<EFBFBD>wait<EFBFBD>$10<31>#<23>lda<64>[[<5B>p<EFBFBD>imer
<EFBFBD><EFBFBD>trl<EFBFBD>bit<EFBFBD>0<><3E>?]<5D><>abel<65>timer<65><72>tart<72>s<EFBFBD>ime<6D>
lda<EFBFBD>p<EFBFBD>imer…sta<EFBFBD>0<EFBFBD>#<23>oom<6F>@<40>u><3E>abort"<22>no<6E>
room"<22>[']<5D>floppy<70><79>s<EFBFBD>from<6F>[']<5D>supertape<70><65>s
<EFBFBD>to<EFBFBD>-->E<01>\<5C>lastdisk<73>wait<69>disk#<23>1of4<66>...
clv05dec87<EFBFBD><EFBFBD>ariable<EFBFBD>lastdisk<EFBFBD>:<3A>wait<69>key<65>d
rop<EFBFBD>;<3B>\<5C>wartet<65>auf<75>taste<74>:<3A>bitte<74>cr<63>."<22>bi
tte<EFBFBD>"<22>;<3B>:<3A>rein<69>."<22>einlegen!"<22>key<65>drop<6F>;<3B>:
<EFBFBD>disk:<3A><>reate<74>last<73>@<40>,<2C><>oes><3E>@code<64>C\
<EFBFBD>maketape<EFBFBD>clv05dec87<EFBFBD>:<3A>test<73>$8800<30>limit<69>=
<EFBFBD>not<EFBFBD>$8206<30>s0<73>@<40>=<3D>not<6F>or<6F>abort"<22>no<6E>room"<22>
;<3B>test<73>forget<65>test<73>\<5C><>amdisk<73>\<5C>rd<72>$8800<30>o
ver<EFBFBD>behind<EFBFBD>swap<EFBFBD>-<2D>move<76>\<5C>$8800<30>rduse<73>\<5C>$8
800<EFBFBD>'<27>limit<69>>body<64>!<21>\<5C>\needs<64>relocate<74>$1b
<EFBFBD>load<EFBFBD>\<5C>1<EFBFBD>buffersF.(<28><>nsert<72><74>ew<65>ape)<29>key
\\ Altlasten clv10jan88
\ geht:
Code x>scr ( char--char')
sp x) lda (>scr jsr 0 # ldx sp x) sta
1 # ldy next jmp end-code
\\ altes clv10jan88
\ geht:
Code xemit ( char--char flag)
N 6 + curAdr 2dup
lda sta 1+ lda 1+ sta
sp x) lda (emit jsr 0 # lda
CS ?[ $ff # lda ]?
pushA jmp end-code
Label endPg [[ (clrLn jsr CS ?]
Label endPg1
3 # lda .A asl tay
[[ SP dec dey 0= ?] tay dey
[[ N ,y lda SP )y sta dey 0= ?]
iny next jmp end-code
Code .page2 ( adr len col--ad+ len- col)
3 # lda setup jsr dey
curAdr ' scrAdr >body 2dup
lda sta N 6 + sta
1+ lda 1+ sta N 7 + sta
N 4 + wdec N 2+ winc
[[ N 4 + winc N 2+ wdec endPg beq
0 # ldx N 4 + x) lda
(emit jsr endPg1 bcs ]]
end-code
\\ altes clv10jan88
\\
Code t 1 # lda setup jsr
N wdec N lda pha N 1+ lda
push jmp end-code
Assembler also definitions
: wdec2 ( adr--) funktioniert nicht
dup dec 0= ?[ swap 1+ dec ]? ;
Onlyforth
Code t2 1 # lda setup jsr
N wdec2 N lda pha N 1+ lda
push jmp end-code
: tt 0 BEGIN 0 0 at dup 4 u.r
t stop? UNTIL drop ;
: tt2 0 BEGIN 0 0 at dup 4 u.r
t2 stop? UNTIL drop ;
\\ altes clv10jan88
: >count ( ad l ad+ l- --ad+ l- ad cnt)
2swap 2 pick - ;
\ : clrLn cols col DO bl emit LOOP ;
: .line ( adr len col--adr+ len- col)
>r 2dup #cr scan >count
r@ - swap r@ + swap
0 max cols umin type
dup IF 1- swap 1+ swap THEN r> ;
: xpage 0 0 at $0c00 $400 $2e fill ;
: .page ( adr len col-- adr+ len- col)
xpage rows 1
DO .line cr LOOP .line ;
CLEAR<41>+X <20>}=L;\<13><00>=(FORGET<45>+<2B><08>
(<28>3 is symbol<6F>;=\<13><00>=FORGET<45>+;/<2F>/$"
<19>3 protected<65>*<2A><08>(<28><00>*<2A><00><17>E=\<13>
<EFBFBD>=EMPTY<54>+/$"}=/2"0;\<13>>SAVE
<EFBFBD>+X }=%"<08><08><17>"<08><08>;"<08><08><18><1B><>}<12>/
D\<13>>>BYE<59>+<2B>9<EFBFBD>c\<13>+<2B>?P<17><19><00>9\
<EFBFBD><00>>STOP?<07>anschliessend<6E>25<32><35><EFBFBD><EFBFBD>Āein<69>ta
pe>disk-<2D>kopiert<72>alle<6C><65>amdisks<6B>vom<6F><6D>ape<70>i
n<EFBFBD><EFBFBD>creen-<2D>isks<6B><73>enn<6E>bei<65>einem<65>dieser<65><72>ort
e<EFBFBD>etwas<EFBFBD>schief<EFBFBD>geht,<2C>besteht<68>die<69><65>oeglich
keit<EFBFBD>an<EFBFBD>der<EFBFBD><EFBFBD>telle,<2C>wo<77>der<65><72>ehler<65>auftrat
<EFBFBD>fortzufahren.<2E><>azu<7A>dient<6E>das<61><73>ort:<3A><><EFBFBD><EFBFBD>Ԟ
aber<EFBFBD><EFBFBD>orsicht:<3A><>enn<6E><00>cC64TYPE<50>c<EFBFBD> S<16>
D$<24><16>& <20>b<EFBFBD><02>.<2E>><3E> l<><6C>?<3F>Hl<48>cl<63>b<EFBFBD><00>cDISPLA
Y<EFBFBD>><3E>bc<>cc5chc<68>c\<13>c<EFBFBD>><3E>lr<6C><72>JcB/BLK<4C>+
<EFBFBD><00>cBLK/DRV<52>+<2B><00><00>c(DRV.*<00>+d"
<14>\
<13>dDRIVE<56>+d$Z;\<13>(d>DRIVE<56>+d$<1E>
Z"<08>\<13>>dDRV?<3F>+Z"<08>dh\<13>ydDRVI
NIT<EFBFBD>+<2B>\<13><00>dI/O.*׈<00>dBUSO <09>'l<><<3C>(E,
<EFBFBD>)<29>-<2D> <0B>,<2C>$<24>,<2C>$lG<<3C>,<2C>$<24>-<2D>%l<><l<><12>+%"<08><08>
<00>PZ<17><16><<3C><12><1B><>\<13>+}#<17>"}<12><16>(<00>"
<08>X <20><18><00>"#"<08>;<08><17>"<08>N<><4E>\<13>+
%<12><R,<2C><> <00>%"z<15><18>
/<18>-%;/<18><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<15>,"z<15><18>
/<18>-<2D>,;\<13><00>;
CUSTOM-REMOVE
I0<EFBFBD><11>+<2B><08><'=M<{=<3D>(<28><08>i(L;<08>~';\<13><00>=
\ room clv06jan88
: ?enough ( n--n)
dup lastroom @ @ > abort" no room" ;
: ?range ( adr n -- adr n)
over lastroom @ u> abort" beyond room"
; \ kriegt spaeter die verschieberei
: room ( adr n -- adr')
?enough ?range
\ 2dup + -rot dup fEnd +!
>r dup dup r@ + ( adr adr adr to)
lastroom @ dup @ ( " oldroom oldlen)
r@ - over r> + ( oldrm nlen nrm)
dup lastroom ! ! ( adr adr to oldrom)
rot - move ;
\\ unfertig clv25jan88
User inFcb User outFcb
User >fcb
: Fcb Create $40 allot ;
: Fcb: Create dup c, does> c@ >fcb + ;
: fName ( adr cnt fcb--)
0 Fcb: fName $20 +
Fcb: fBeg 2+ Fcb: fEnd 2+
Fcb: fOut \ Beginn von Room
Fcb: fIn \ nach Room
drop
j<>bjy
<1B>b
k<>b
<1D>bjy<6A><08>\-zy EDIDE
CODE<EFBFBD>+
<18>@<1C>
m<>?d<13>a@<1C><m<><17>y<EFBFBD>Q!
"[<19><00>Q!"<08><><EFBFBD><EFBFBD><00><15>%JFl<46><08>#J<><4A><EFBFBD><EFBFBD>
Q!;d<13>m<>
.v<><13>v<EFBFBD>\-<00>y EDIEXPECT<43>
+<2B>wQ!;<08><17>Q!"<19>
<00>?I?<3F><1B><><EFBFBD><15>4\-zE
DIBOARD<EFBFBD>?La[a<>y z\<13>!y
SAVESYSTEM<EFBFBD>+<2B>32<>
<17>3;<08>32<>#$<1E><15>3;\<13>+<2B>3"<08><08>l#x<1F>l<EFBFBD>
<19><16>c<EFBFBD>K<19>l#6<1F>d?\<13>+<2B>l
<01>r\<13>+<2B>r<EFBFBD>3"<08>
9Sm<EFBFBD>;q<><08>3"<08>9<EFBFBD>mJ9
\<13>+<2B>r
\<13>+
<EFBFBD>r
\<13>+<2B>3"<08>9wmm<><17>l<EFBFBD>r<EFBFBD>\<13>+<2B>r<EFBFBD><08><17>3
[<08>r\<13>+<2B>r<EFBFBD><08><17>3[<08>r\<13>+<2B>r<EFBFBD><08>l"<08><08>q<EFBFBD>[<19>
<16><00><16>3[<08>r\<13>+<2B>r<EFBFBD>m"<08>3"m;<08>3;<08>r\
"q DIGDECODE<44>+<2B>a@(<28>()P<><50><18><04><07><02><14>
<03>'<27><07>&<26><><07>l<EFBFBD><18>$%P<10><18><06><07><02><14>l<><18>&A*<2A>
<EFBFBD><EFBFBD><07><07>$<00><10><>$PF%F$<24>&P<02>'l?k)k2!<21>k<EFBFBD> S
<EFBFBD><03><07>$<24><10><>l<><00>k2@l<><07>$<24><07>%<25>8<><02><07>F
<14><03>$<24><07><10>lha<00>k 2VARIABLE<4C>+A)Z<17> \$l
2CONSTANT<4E>+A) ! !<21>(l<>(l\<lUNLINK<4E>+<2B>
<17>/<18><07>k\<13><00>l <00>*)?*$* <09>F1<16><18>
<00>$not <20>$changed<65>Z1<16><00>9<EFBFBD>
1

<EFBFBD><19> <00>$, saved
1<16><1B><00>$ , loading?<3F>3
"<08>3"<08>w\,<xL<>+<2B>3<EFBFBD>cx\,TxR<>+<2B>3"cx\
,<00>x+L<>+<2B>3"<08>Xx\,<00>xV<>+;/<2F>*<2A><08>Z<17>
"\,yVIEW<45>+ y<><08>Xx<58><00>$
from key
board\<13>+,m"0mJ<13>\,<00>vCURLIN<49>+
<1B>b
\ @tva clv29jan88
Assembler also definitions
: tva ( source dest--)
swap 2dup lda sta 1+ lda 1+ sta ;
: @tva ( source^ dest--)
swap 2dup x) lda sta )y lda 1+ sta ;
Onlyforth
\\ alt
Label (cr?
N x) lda #cr # cmp 0<> ?[
Label (fe?
fBeg N 2+ tva
N N 2 + wcmp CS ?[
fEnd N 2+ tva
N N 2 + wcmp CC ?[
0 # lda pha push jmp ]? ]? ]?
$ff # lda pha push jmp end-code
<07><13> <04><13><>?<3F>x`<60>+iC64INIT<49>i `ilha
<01><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00>iC64FKEYSMi<4D>J0 <09><>i<EFBFBD>]lOi
lha{<00>ic(64<36>+$<24> <20><18>3
C) missing"/C)<29><19>
<1B><>\{<00>ibC)<29>+\{ jc(16<31>+\{jFORTH-83
<EFBFBD>+\<13>"j ASSEMBLERv-<2D><><EFBFBD><EFBFBD><EFBFBD>-<2D>PUSHA<48>+<1C>
ijPUSH0A<30>+<1C>wjPUSH<53>+<1C><00>jRP<52>+<00><00>
jUP<55>+<00>v<>qv<71>qv<71>qv\<13>+<2B><08><17><19><00>v
<EFBFBD>\(wq(PAD.*<00>+<2B> <20><08>v;<08>l3<1E><15> ma;
<EFBFBD>l<EFBFBD><15>&ma;<08>l<EFBFBD><15>m;<08>l3<1E><15>m;ma<17><17>ma
<17>/<18>p<EFBFBD> P ma"D<1F> m;/q<>
1P&
ma"D<1F>&m;\<13>+<2B> <20>v"<08><19><13>v\<13>+#$<24>+/
d*w;<08>p<EFBFBD>a\<13>+D!"<08><08><18>.wd<13>!"<08><17>3;<08>
p<EFBFBD>aIp<EFBFBD>3"<08><08><16><00>3; <18><03><15>P<12><08>D<1F><12>l
?4<> <20>\<13>+:n<><16><08>n<><08>l<EFBFBD> n<>l<EFBFBD><15><08><16>po\
<13>+|n<><08>
<08>b\<13>+ml<>#<17>m"nK[<19><08>+
nJml<><15><13>ma[\<13>+Ko<4B><08>|n\<13>+Ko<4B><08>
<EFBFBD>o\<13>+ma"<08><18><08><13>n<EFBFBD><08><13>ma[ml<>J+
n<EFBFBD>\<13>+<2B>ml<>n[<19><08>n<>ml<><15>lD<1F>l<EFBFBD>ma[
\<13>+;p<><08><13>n\<13>+;p<><08><13>o\<13>+<2B>l
INDEX<EFBFBD>+#
<EFBFBD><08><>!?%F<17>5%<1B>9#
%#?<3F>><3E><00>J<><4A><EFBFBD>\<13>
<EFBFBD>hFINDEX<45>+Cg<43><00>d#<17><08><>1?%F<17>5<EFBFBD> <20>
%33<1E>f&gP#
%#?<3F><12>><16><00>J<><4A><EFBFBD><EFBFBD>g\<13>
<EFBFBD>hINK-POT.*<2A><><00><><00><><00>i INIT-SYSTEM;
i<EFBFBD><EFBFBD><EFBFBD>lha<EFBFBD>><3E><>vi<76>xi<78>ih<69>\h<><68>h<><03>l<><6C><EFBFBD>?<3F>@؍>
<EFBFBD><EFBFBD>i<EFBFBD><EFBFBD><EFBFBD><EFBFBD>a<EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>i<><19><>i<><15><>i<>@<05><><EFBFBD>@
 P<17><19><08><13>S<><53>q<EFBFBD>m"<08><16>><3E>1<16><08><00><18>
s<><08>s<><08><1B><><EFBFBD>\<13>+?$
@<40>\.*<1F>
<EFBFBD> <0C><><EFBFBD><EFBFBD><EFBFBD><1E><><EFBFBD><EFBFBD><11><><13><> <0F>.*ss'sis
iu<EFBFBD>p>o>o<>r<EFBFBD>r<EFBFBD>r<EFBFBD>r<EFBFBD>o<EFBFBD>o<EFBFBD>p<EFBFBD>p;qr<>oppo&o|n<>
n<EFBFBD>n<EFBFBD>n<EFBFBD>n<EFBFBD>n<EFBFBD>n<EFBFBD>n<EFBFBD>opo^o<>p<EFBFBD>p<EFBFBD>n0v<30> S<16>$<24>H<EFBFBD><48>uI<75>
<EFBFBD>E&P<><50>
<EFBFBD><EFBFBD><EFBFBD>uh<EFBFBD><EFBFBD>ul<1C>+4m<34><13>6
<18><><17><>J<><4A><EFBFBD>\
<13>+4m2<>q n<>l<EFBFBD><15>J?4<><19>1:n<>1<16><08>
<18><>b\<13>+tn<74><08>m"<08><00>n<EFBFBD><08><13>n\<13>+ m"<08>
z?<3F>l<EFBFBD>[1<16><08>
<11>b\<13>+tn<74><08>
<1D>b\<13>+ n<>
lq4<EFBFBD><15>l<EFBFBD>K<19>l6<1F>d?<3F>\<13>+<2B>

<EFBFBD><17><><00>|n<>
<08><00>J<><4A><EFBFBD>\<13>+
<05><17><>
<18><>bJ<62><4A><EFBFBD><EFBFBD>\<13>+z?
<EFBFBD>d?<3F>lm<><17>n\<13>+n<>l?4<> <20>\<13>++n<>l<EFBFBD>?<3F>?4<>
<20>\<13>+n<><08>l<EFBFBD><15> n/<17>3;'q<>2<><17>v<EFBFBD>2
<EFBFBD>e>
F<17>e<EFBFBD><17>#<23>e<EFBFBD>$,p,w<> <20>e<EFBFBD>d
Fze<7A>

<17><16>/<01><1F><08>e<EFBFBD>eX <20><08><16>e<EFBFBD>d
F<17>e<EFBFBD>d;y
f<EFBFBD>3
save-error\<00>jEND-CODE<44>+D,<2C>"D,;
\<00>zINDEX.* <11> <09>
<19><><EFBFBD><EFBFBD><08><><EFBFBD><EFBFBD><EFBFBD>
<1C><>,.*<00>zMODE:<3A>+A)!<21>(l<>(J%[;\+
[.A;[h[#;[;[r[,X;[d?m"P<17>
5<EFBFBD>d?X #PFsW?Q!"<08><08>X <20><15>_'<27>m;d?
m"P<17>5{b<>d? ma"<08>l<EFBFBD><17>?<3F>W?Q!"<08><08>
m;d? mlt<>d?&ma"<08>l<EFBFBD><17>?<3F>W?Q!"<08><08>
&m;d?&mlt<>pIqd?\<13>+<2B>r<EFBFBD> ml<>3"<08>3"<08>9<EFBFBD>
<15>c<EFBFBD>3"<08>3k<33><18><00><17>
<00>3"<08>9<EFBFBD><16>3;<08>r\<13>+
<EFBFBD>r<EFBFBD>#t
u<EFBFBD>3"<08>'<00>?<3F>
r<><19>Rs<52><08><00>d
\ cursor-movement clv22jan88
\\ alt
( adr--adr')
\ setzt #cr vor und nach File voraus
: ?b fBeg @ umax ; : ?e fEnd @ umin ;
Code (cr>
sp x) lda N sta sp )y lda N 1+ sta
#cr # lda [[ N winc N x) cmp 0= ?]
N lda sp x) sta N 1+ lda sp )y sta
next jmp end-code
Code (cr<
sp x) lda N sta sp )y lda N 1+ sta
[[ N wdec #cr # lda N x) cmp 0= ?]
N lda sp x) sta N 1+ lda sp )y sta
next jmp end-code
: cr< ?b (cr< ; : cr> ?e (cr> ;
: pg< rows 0 DO cr< LOOP ;
: pg> 1- rows 1- 0 DO cr> LOOP ;
\\
: cr< ?b BEGIN 1- cr? UNTIL ;
: cr> ?e BEGIN 1+ cr? UNTIL ;
\ move-Base clv25jan88
\\ alt
: leftchars ( adr--adr u)
dup dup cr< 1+ - ;
: rightchars ( adr--adr u)
dup 1- cr> over - ;
: savCol dup dup cr< - col+ +! ;
: useCol dup cr> over - col+ @ over -
dup 0< IF + 0 THEN col+ ! + ;
: noCol col+ off ;
: cr? ( adr--adr flag) dup c@ #cr = ;
: ?eL ?e dup 1- cr> fEnd @ - ?exit cr< ;
 F<14><02><07><02><07><18><02><02><02>l <00>R@<13>8<>
<EFBFBD><07>F<14><02><07>l<13>RDROP1EXITf<13><02>
<0E><02>l=UNNEST^<13><02><0E><02>ls?EXI
T<EFBFBD><13><14><18><02><07><02>(P<>l <00>EXECUTE<54><13>
<EFBFBD><1C><07><1D><18><02><07><02>l<00>PERFORM<52>+"<08>\
<00>C@L<13><07>$<24><07>%<25><00><07>$lEC!<21><13><07>$<24><07>
%H<><07>$<24><>e 2 -- Quelltext des Systems
<08><01>640a<08><01>" Seite 3 -- Forth-Quelle
xtey<08><01>" - 6502-Assembler<00><08><01>" - Full
-Screen-Editor<00><08><01>" - Debugging Tools<00>
<08><01>" - Multitasker<00><08><01>" - Drucker-Trei
berF<08><01>:<3A>:<3A><00>B<01>" Seite 4 -- Grafik/T
apeL<01>" - Grafik 
<EFBFBD><04><07><02>l <00>CTO
GGLE<EFBFBD>+<2B>Jn<16><08>\<13>@$<08><07>$<24><07>%<25>$<24><07>$l
<00>!=<08><07>$<24><07>%H<><07>$H<><07><01>$l<><13>7+!]
<08><07>$<24><07>%H<><18>$<24>$H<><07><01>$lovDROP<4F><00>
SWAP<41><08><07><><03><07>$<24><><07>$<24><01>H<><00><07>$<24><07><07><>$l
<00>DUP<55><08>8<><02><07>F<14><03><07><01>H<><07>l<00>
?DUP<55><08>Pl l<>VOVER<45> <08>8<><02><07>
F<14><04><07>H<><07><01>l <00>ROT<15><03><07>%<25><01><07>
<EFBFBD><07><05><07>$<24>%<25><07><01>$<24>H<><07>%<25><07><07><04><07><07>%<25><07>l
-ROT<4F>+\sNIP<49>+<2B><08>\<00>UN
DER<EFBFBD>+<2B><08>\<00>PICK<43>+#3;<12>"\<00>RO
LL<EFBFBD>+<2B>P<12>;<12>a<17>#3<1E><1F>\<00>2SWAP<41>+
P<15>\<00>2DROP<4F>V2DUP<55>+<2B><08>\
File c16ultraforth83 - Systemkernf"<01>
" - File c64ultraforth83 - Systemkern<00>,
<01>" - File c16demo - Arbeitssystem mit Ta
pe<00>6<01>" - File c64demo - ''
GrafikJ@<01>" - Hilfstexte & Kontaktadr
essen<00>j<01>" - Diskettenutilities<00>t<01>
^<01>" Seit
<EFBFBD>+<2B>H<><07><07><07><><07><03><07>l<> <00>
ORH<><07><07><><07><07>l<> AND3H<>1<07>
<07><><07>1<07>l<> +XORpH<>q<07><07><><07>q<07>l<>
!h-<2D>H<>8<><07>H<><07><01><07><03>l<>!<00>NOT<4F>
<18><><07><07><><07>l !<00>NEGATE<54>8<><38>"<00>DNEGAT
E<EFBFBD>H8<48><38><07>H<><48><07><07><><07><07><01><><07>l
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><07>$<00>
<10><><18><07><07><02><14><00>`"<00>D+<2B><16> SH<><18>&<26>
H<EFBFBD><07>'<27><07><07>$<24><07><01><07>%<25>l #<00>1+%<17><18><07>l
<00><07><07><00>l #2+c<17>P<>#<3+p<17>PSv
<EFBFBD>PM\<17>PG#i1-<2D>8<><07><01>l<00><07><07><00>l #
<00>2-<2D><18><>$<00>TRUE<55>+<2B><>$<00>FALSE<53>+$<00>
"-1<>$<00>!0<>$<00>1<>+$<00>2<>+$B3<>
+$L4<>+$VON<4F>+<2B><17>;\ t sein ei
genes3H<00>" Diskettenverwaltungssystem,
daher[R<00>" bitte immer die ganzen Diske
tten<00>|<00>" kopieren und nicht nur die Fi
les!!!<00><12><00><00><12><00> 640:<3A> seitenvorschubG
<12><00>" Die Disketten enthalten:M<01><00>
<EFBFBD>" Seite 1 -- System-Diskette<01>" -
\ writeFile clv22jan88
\\ noch alt
Onlyforth
: writeFile
8 2 busopen fName count bustype
" ,p,w" count bustype busoff
derror? ?exit
8 2 busout 0 0 bus! bus!
fBeg @ fEnd @ over - bustype busoff
8 2 busclose
0 (drv ! derror? ?exit ;
: readFile
0 (drv !
8 2 busopen fName count bustype
" ,p,r" count bustype busoff
derror? ?exit fBeg @
8 2 busin bus@ drop bus@ drop
BEGIN bus@ over c! 1+ $90 c@ UNTIL
fEnd ! busoff
8 2 busclose derror? ?exit initFile ;
<11>#<23>\dL$b.(<28>+
)<29>##?\d<00>$a\<5C>+<2B>!"6h
#6$<1E>!;\d<00>$b\\<5C>+<2B>c<EFBFBD>!;\d %\NEEDS
<EFBFBD>+$<24>.<2E><15><00>$\d%HEX<45>+
<10>;\d7%D
ECIMAL<EFBFBD>+

<EFBFBD>;\ej%DIGIT?<3F>+
0<><16>
 [
<19>
<18><><16>
 [<19><00>"<08>[<19><08><13><08>\e
<EFBFBD>%
ACCUMULATE<EFBFBD>+<2B>P<12><08>"<08><1D><15>"<08><1D><16>
\e<00>%CON%<25>l 3<00>M*<2A>+<2B><08><18>P<12><00>
<EFBFBD><08><08><18>
<00><16><12>P<12><1D><12><00>\3<00>*<2A>+<2B><1D>
\3 2*5<1E>
<EFBFBD><07>*<2A>l <00>+<2B><17>3division
overflow\4.UM/MOD<4F><1E><07>)<29><07>(<28><18><02><07><02>
<14><07>%<25><07>$H<><07>'H<><07>&<26><18>*8<>%<25>)<29><>$<24>(<28>&*<2A><04>
$<24>%&'&&&%&$JPߠ<01>$<24>%<25> <20>b\<13>&<26>H<>%<25>H<>$
<EFBFBD><07><01>'l5^M/MOD<4F>d<13><1B><><EFBFBD>\<13>+<2B>
1
<EFBFBD>\n<00>*NAME><3E>+<2B>S*<2A>J
 1<16>"\n<00>*
>BODY<44>+a\n+.NAME<4D>+<2B><08><00><08>(<28><00>$
|<7C>
1#?<3F><00>$???<3F>4\o+CREATE:<3A>+A)<29>
'<27>,"D,;<08>0<EFBFBD>\oh+:<3A>+r+<2B>(<28>8<><02><02>F<03><0E>
<02><0F><02><18><02><0E><><1D>l o<00>+A;<3B>+<2B><17>6!\0<7F>'\
o<00>+CONSTANT<4E>+A) !<21>(<28>8<><02><07>D<>+<2B>#<23>"\
bQ#PARSE<53>+P<12>#<23>!"<08>"<22><08><08>"P<12><08><16><08>l
<19><16>![\b<00>#NAME<4D>+?4X#B"d\c$STATE.
*c)$eASCII<49>+?4X##J1$"<08>^\c7$,
"<22>+
"<22>#X <20>#<17> n \cw$<24>"LIT<49>+<2B><12><12><15> <20>
PP\c<00>$<24>("<22>+<2B>$\c<00>$A"<22>+6!<21>$\$\d<00>$<24>(
."<22>+<2B>$<24> #?\d<00>$B."<22>+6!<21>$\$\d<00>$a(<28>+
)
<01><1B><>\0<00>FREPEAT<41>+F<17>6!<21>Q\0<00>EUNT
IL<EFBFBD>+F<17>6!<21>Q\1BDO<44>+6!<21><><EFBFBD>P\1C?
DO<EFBFBD>+6!<21><><EFBFBD>P\11DLOOP<4F>+P<17>6!J<>6!<21><><EFBFBD>\
1eE+LOOP<4F>+P<17>6!<21><>6!<21><><EFBFBD>\1`<1D>LEAVE<56>+<2B>
<EFBFBD><EFBFBD><12><17>"<08>P\2<00>UM*<2A><1D><07>$<24><07>%H<>&<26>'<27>
'&&&%&$<24><18><07>'<27>'H<><07><>&<26>&<26><06>%P<02>$JP|<7C>'<27>H<>
&<26><07><01>$<24><07><02>,"" !$J<13><08>
 <20><18><16>3 inv
alid nameX ~';#<17> <20>)^)"<08><00>^)[<08>) !
<EFBFBD>(
 Z')L;<08>&)<29><08>'<27> !<21>(l<>(3*<2A><07>(<28><07>
)<29><18><02><07><02><14><07>&<26><07>'&Pl<><18>&<26><07>%<25>&<26><07>$%
Pl <00>$<18><02>$<24><02>%<25>$h8)<1F>$<24>$<24><02>%<25>) <20>
<EFBFBD>$h<>$<24>
$ȅ%<25>$E(P<><50>%E)P<>lcn<00>)>NAME<4D>+%"<08><08>
<EFBFBD>Z<17><16>1*<2A><08>z<15>H<>$ <20>"<22>$lQ"<22>"<22>*<2A><03>
<07>$<00><10><><18><>!<21>&<26>&<26><>!<21>'<27>'8<>$<24><>!<21>$<24>%<25><>!<21>%<25>
<EFBFBD><07><>!<21><07><>!l<>#<23><04>$%<25>=<3D>&QP<11>&P<02>'<27>$PF%F$
l$#<23>&<26>(<28>'<27>)<29>&Q<14>&P<02>'<27>$PF%F$(<28><14>*<2A>$%P<>
8<EFBFBD><02>&<26><07><>!H<>'<27><07><>!<18><04><07><07><02><14> <0C><04><07>$H<><04>
<01><07>%<25><>*<2A>$<24>(HF*<10><> <20>$<24>l b<00>"SOURCE<43>+D!
"<08><08><00>9<EFBFBD>cd<13>!o!"\b<00>#WORE<>+X <20> !
\.<00>?PAIRS<52>+<2B><16>3 unstructured\Ih<><68>
lh<><00><>8<><02><07>F<14><><01>Ȣl/<00>CASE?b
<EFBFBD> S<16>$AP <09>%QPl<><18>l08BIF<49>+6!<21><1B><1B>
\0\DTHEN<45>+=<3D><><17><1B>\0<00>DELSE<53>+<2B><17>6!<21>
<1B><1B><08><1B>\0<00>EBEGIN<49>+UF\0<00>EWHILE<4C>+
F<17>F6!<21><1B>/<18><>H\<13>+<2B><1B>/<18><><EFBFBD><19>
<00><08>
\ altes .line clv30jan88
BEGIN over WHILE swap 1- swap c>
dup cr? IF nip pClr exit THEN
REPEAT nip cols swap
BEGIN over WHILE swap 1- swap c>
dup cr? IF nip pClr exit THEN
dup c@ >scr curAdr @ c! 1 curAdr +!
REPEAT nip l> ;
\ .page 3.Ver Forth clv29jan88
\needs >scr 5 load \ CBM-Screencodes
: pPut ( char--)
>scr curAdr @ c! 1 curAdr +! ;
: xmod mod ;
: pClr curAdr @ dup scrAdr - cols xmod
cols swap - 2dup + curAdr ! bl fill ;
: pGet ( adr--adr+ char) c> dup c@ ;
: pCol ( col adr--col ad+)
over 0
?DO c> dup cr? IF c< leave THEN LOOP ;
: .page ( adr col--ad+)
\ interprets #cr,skips col (left of scr)
scrAdr curAdr ! swap rows 0
DO pCol cols 0
DO pGet over cr?
IF drop pClr c< leave THEN
pPut LOOP l>
LOOP nip ;
\ forget pPut 0 4 +thru
F<14><02><1C>H<><1C><01>l o<00>+VARIABLE<4C>+A)F<17>
\p|+UALLOT<4F>+<2B>0"<08>
<18>[<19>3
Userarea
full0"<08>0[\p<00>+USER<45>+A)F<17>+!<21>(<28>8<>
<02><07>F<14><02><18><04><07>H<EFBFBD><05><01>l p),ALIAS<41>+A)
~'"<08>J
 1<16> /<18><><EFBFBD> <20>
 Z'S*;\q]
,VP.*<00>-<2D>-<2D>-<2D>lq<00>,CURRENT.*<2A>-q<00>
,CONTEXT<58>VERT<52>+#<17> <20>%<25><00>%<25><1B><><EFBFBD>\<13>+<2B>
&"<08>\<13>+<2B> <20><17>&[\<13>+<2B><17> \fM%DPL.*<2A><><EFBFBD>+
<EFBFBD> 9<13><15>9<13>\<13>+<2B> 9<13><08><12><00><15>&"
#<17><08><13><08>\<13>+
&@<1C>

<EFBFBD>d
$@<1C>
<10>d
H@<1C>
<10>d
%@<1C>F<17>d<13>\
<EFBFBD>+
,<2C><08><19>
.<2E>\<13>+&"<08><17><19><13>&[\.
*g
&NUMBER?<3F>+<2B>+<2B>P=<3D><><08><18><00><15>
<EFBFBD><08><13><18><00><16><08> <00><13><15><08>9\5X2/
<1F>
<EFBFBD>ʑ<07><07>l6/MOD<4F>+P<18><><12>\6/
/<2F>+6<1F>\6dMOD<4F>+6<1F>\6r*/MOD<4F>+P<12>
<1D><12>\6<00>*/<2F>+<2B><1F>\6<00>U/MOD<4F>+<2B><17><08>\
6<00>UD/MOD<4F>+P<12><13><1E><12>P<12><1E>\7<00>CM
OVEF<1F> S<16>D$P F%<05>l <00>(<28>&HP4<>>D!"<08>
<EFBFBD><00>3;<08>!"<08>3;33\_<00>3<EFBFBD>(ABORT"<22>+<2B>$<24><08>
P,(<28><12>d<13>\<13>+<2B>$<24><08><12>d<13>\_V3
FABORT"<22>+6!<21>3\$\_4FERROR"<22>+6!<21>3\$\`%
4BL<42>+ `:4 -TRAILINGs4<73> S<16><07>&<18><07>%<25>'<27>$
<18><13><>&I <20> HP<02>%<25>h<EFBFBD>%l<1C>P<EFBFBD>F'F%<10><>l<1C>e4S
PACE<EFBFBD>+?4
?\<13><00>4SPACES<45>+<2B><17><><00>4J<34><4A><EFBFBD>\<13>
\ altes clv13jan88
: redraw
scrBeg @ 1+ fEnd @ over -
scrRow @ .page drop drop
scrEnd ! ;
( adr--adr)
: cursor
scrBeg @ 1- -1 -rot
BEGIN rot 1+ -rot
cr> 2dup u> not UNTIL
drop leftchars scrRow @ -
rot swap 'at ;
: ?sE? scrBeg @ pg> over u> ?exit
dup pg< 1+ scrBeg ! ;
: ?sR? leftchars dup cols - 1+
scrRow @ max min scrrow ! ;
: ?sB? dup scrBeg @ u< not ?exit
dup begLn scrBeg ! ;
\ altes clv13jan88
$100 $100 Task showTask
multitask
: (show
?sB? key? ?exit
?sR? key? ?exit
?sE? key? ?exit
redraw key? ?exit cursor curon ;
: show showTask activate
BEGIN curPos @ (show drop
pause REPEAT ;
: noshow showTask activate
clearstack r0 @ rp! stop ;
<15>8<><00>$read 8<>Y<><59>\<13>+7<>"<08>
"<08>a"<08><17><19><1B><>7<>6<EFBFBD>!8\<13>+aP<12>;Z"
<08>a;<08>t<17>7<>6\<13>+7"<08><08><00>z"<08>
<EFBFBD><1B><>\<13>+7"<08>"<08><18><1B><>z"<08>\<13>8CORE?<3F>
+87<38><15>\<13>f9(BUFFER<45>+87H8<48>8<EFBFBD><1B><>\<13>z9(
BLOCK<EFBFBD>+87H8<48>8<EFBFBD>8<EFBFBD><1B><>\<13>9<EFBFBD><1C>hH<68>l<1C><00>9BU
FFER<EFBFBD>+<2B>9<EFBFBD>9$<24><07>8<><02><07>F<14>&H
0<05>i<EFBFBD><69>H<EFBFBD><48>
<03><>$<24><><01>l v1.FIND<4E>+D,<2C>"<08><08>"<08><19>
<00><17>"9.<2E><00><15>.d<13><08>,a[<19>
<00><08><17><1B><><EFBFBD>
<15>\v<00>.'<27>+$<24>.<2E><18>3Haeh?\v7/I[COMPIL
E]<5D>+;/ !\vo/C[']<5D>+;/^\v<00>/ NULLSTRING
?<3F>+<2B>J<13><18><08><00>\H<18><1C><02>H<><1C><00><0F>l w
<EFBFBD>/
>INTERPRET<45>/0x<00> 7<>(<28>(<28>7<>)<29>7l<37>7<EFBFBD>
7(DISKERR<52>+<2B>$error ! r to retry <20>?<3F>

r<EFBFBD><19>
R<><16><16>3aborted\<13>A7DISKERRI0L
7<EFBFBD>8R/WI0<49>g<EFBFBD>+<2B>z"<08><18>ja<17>"#<17>3
2<>2q3<71>z<17>a"F<17>"<08>8<><00>$write
8<><1B><>
<18><>t#<08>\<13>+a<17><08>t<17>\<13>+<2B>{8
2<>2q3P<12>Z"<08><15>
<14>z
"<08>,;\<13>
+"<08><17>*+\s<00>-ORDER<45>+R,<2C><>%K-/<18><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
F<17>4<EFBFBD>,K-\sY-WORDS<44>+D,""<08><08>><3E>1<16><00>
><3E>a+<2B>4<EFBFBD><1B><><EFBFBD>\t.(FIND;.<2E><03><07>$<00><10><>&
)<1F>(<28><00>$<24>H<EFBFBD>$<24>%<25>$$P<07><01>l<>H<>$)E(P<><18><02>$
<EFBFBD>)<29><00>%<25>*<2A>(<28>&Q)PK<50>P<EFBFBD><50><03>*<2A><07><>)<29><07><>l<><18>.<2E><07>
$<24><07>%<25>$<24>&)8<>$<24>$<24><02>%<25>&) P <09>$<24><07>%lB.<2E>$<24><07>
 ;\<13><00>6UNLOCK<43>+<2B><08>6<EFBFBD>\<13>8<EFBFBD><05><04><><00><05>l<EFBFBD>
<04><06><04>H<><04><14><01><07><02><07><03><18><02><07><02><14>l<><12><00>
6FILE<,<1C>7PREV.*<2A>{.*<00> 7B/BUF<55>+<04>
<02>(Y"PH<>P<>`:7<><03><07>$<00><10><><18><04>&<26>&H<><04>'<27>
'<27>7<>(<28>7<>) )7P<1D><18><02><07><02><14><01><18>(<28><07>)<29><00>
lf<13>(<28>*<2A>)<29>+<2B>*<2A>(<28><01>*<2A>)(Pl )7P<37><50>(<28>*<2A><01>
(<28>*<2A>7<>(<28> +<2B>,<2C>"<08>a\<13>+<2B>,aD,\q<00>,A
LSO<EFBFBD>+<2B>,"

-<19>3Vocabulary stack fullD,"
F<17>,[D,;\q<00>,TOSS<53>+/<18><><EFBFBD>,[\r<00>-
VO
CABULARY<EFBFBD>+A)<29> !<21> !X %" !%;<08>(l<>(D,;
\r/-FORTHv-kzkzr<00>-ONLY<4C>-!@!@<40>-<2D>(l<>
(<28><17>,;D,;<08>,\r<00>- ONLYFORTH<54>+<2B>-<2D>-<2D>,<2C>-\
s<00>- DEFINITIONS<4E>+D,
<EFBFBD><00>5.<2E>+<18><>5\<13><00>5
U.<2E>+<2B><17>5\<13>C5.S<>+;<12>"<08><08>
 <03><><EFBFBD><EFBFBD><EFBFBD>%
"H5F<17><><EFBFBD><EFBFBD>\<13>R5C/L<>+)<00><00>5L/S<>+<00>
6
LIST<53>+<2B>3;<08>$Scr <20>3"<08>dxH5<48>$Dr `d<>5
6<EFBFBD><17><>.<00>><3E><00>?%F<17>5<EFBFBD>4<EFBFBD>3"<08>9%6$<1E>6
<EFBFBD>q4#?J<><4A><EFBFBD>?\<13>6PAUSE <00><00>6LOCK<43>+<2B>"
}<12><19><00>d<13>"<08><00>6<EFBFBD><1B><>}<12><08>CLEAR<41>+X
<20>}=L;\<13><00>=(FORGET<45>+<2B><08>(<28>3 is symb
ol<EFBFBD>;=\<13><00>=FORGET<45>+;/<2F>/$"<19>3 prote
cted<EFBFBD>*<2A><08>(<28><00>*<2A><00><17>E=\<13><00>=EMPTY<54>+/
$"}=/2"0;\<13>>SAVE<56>+X }=%"
<08><08><17>"<08><08>;"<08><08><18><1B><>}<12>/D\<13>>>
BYE<59>+<2B>9<EFBFBD>c\<13>+<2B>?P<17><19><00>9\<13><00>>STOP?
+<2B> <20>\<13><00>4HOLD<4C>+<2B><17>4[<08>4"<08>\<13><00>4<#
<EFBFBD>+<2B>4<EFBFBD>4;\<13>W4#><3E>+<2B><15>4"<08>4<EFBFBD><08>\<13><00>4SIG
N<EFBFBD>+<2B><18>
-E4\<13><00>4#<23>+<2B>"<08>
 <09>U<18>

<18><>
0<>E4\<13>5#S<>+5<><15><19><1B><>\<13>@5
D.R<>+z<15>)<29>|4e55<>4<15><08><19><08><16>4#?\<13>u
5.R<>+<2B><18>[5\<13>5U.R<>+<2B><17>[5\<13><00>5D.
<EFBFBD>+<2B>[5<>4\<13>\<13>e<EFBFBD><65><EFBFBD> S<16>& Ld<4C>&<26>><3E> <20><><EFBFBD>?<3F><>$
`<60><><EFBFBD>><3E> <20><><EFBFBD>?<3F><>&<26><>lha<68>}eBUSIN<49>+<2B>d<EFBFBD>6<EFBFBD>e\<13>
FeBUS!<21>e<EFBFBD><07>><3E> <20><><EFBFBD>?<3F>l<EFBFBD><12>ZeBUSTYPE<50>+<2B><><EFBFBD>
<EFBFBD> %J<13>eJ<65><4A><EFBFBD><EFBFBD>6\<13><00>eBUS@f<>><3E> <20><><EFBFBD>?<3F>l<1C>
fBUSINPUT<55>+<2B><><EFBFBD><EFBFBD> f%<1B>J<><4A><EFBFBD><EFBFBD>6\<13>,fDE
RROR?<3F>+d
Nef<>
0<><16>
?f<><08>a<EFBFBD><19><1B><>
<EFBFBD>?<3F><18>d\<13>+<2B><01>+<2B><01>+<2B>n<>l<EFBFBD><15>J?4<><19>1
:n<>1<16><08>
<18><>b\<13>+tn<74><08>m"<08><00>n<EFBFBD><08><13>n
\<13>+ m"<08>z?<3F>l<EFBFBD>[1<16><08>
<11>b\<13>+tn<74><08>

<1D>b\<13>+ n<>lq4<71><15>l<EFBFBD>K<19>l6<1F>d?<3F>\<13>+<2B>

<EFBFBD>
<17><><00>|n<><08><00>J<><4A><EFBFBD>\<13>+
<05><17><>
<18><>bJ<62>
<EFBFBD><EFBFBD><EFBFBD>\<13>+z?<3F>d?<3F>lm<><17>n\<13>+n<>l?4<> <20>\<13>++
n<EFBFBD>l<EFBFBD>?<3F>?4<> <20>\<13>+n<><08>l<EFBFBD><15> n/<2F>FF<46>d<EFBFBD>><3E> L
<EFBFBD><EFBFBD>?<3F><><01> <20><11>d<EFBFBD>6\<13><00> <20><11>d7<>6<EFBFBD><17>3 no dev
ice\<13><><EFBFBD><EFBFBD><EFBFBD>><3E> <20><><EFBFBD>?<3F><>`<60>><3E> <20><><EFBFBD>?<3F><>><3E> <20><><EFBFBD>?<3F><><EFBFBD><EFBFBD>
<05><>l<EFBFBD>d`<60>d<EFBFBD> Ld<4C><18><02><07><02>l<>d<EFBFBD><00>d?DEVICE<43>
+<2B>d<EFBFBD>6<EFBFBD>d\$e<><65><EFBFBD> S<16>& Ld<4C>&<26>><3E> <20><><EFBFBD>?<3F><>$ `<60>><3E>
<20><><EFBFBD>?<3F><>&<26><>lha<68>eBUSOUT<55>+<2B>d<EFBFBD>6"e\<13>qeBU
SOPEN<EFBFBD>+
<18>ze\<13><00>eBUSCLOSE<53>+
<18>ze<7A>d
<EFBFBD>
<EFBFBD> <0B>P<EFBFBD>l<EFBFBD>l<EFBFBD>m<EFBFBD> S<16>&<26>><05>'<27><19><00>& <20>l<EFBFBD>$H<>(<28><>
J<EFBFBD>
<EFBFBD> <20>$ @ml<6D>ml<6D>l<EFBFBD>m<EFBFBD> S<16>D$Pl<>l<EFBFBD>( <20>l<EFBFBD>&HP<48>
Um<EFBFBD> S<16>&<26>><05>'<27><19>'<27>$ <20>lQ&<26><05><>l<1C><10> @mJP<4A><50>
l<17>+;<12>l3<1E>\n<>h<EFBFBD>>ln<>JI(<28><><02>'<27>Hh<48>
I<EFBFBD>l-n<18>J<EFBFBD>Hh<48>I<EFBFBD>l<1C>+ n/<18><03><15>lq4<71><15> m
"\<13>++n n<>l<EFBFBD><15><17> m"<08>1\<13>+mJ<13>b<EFBFBD>\
<13>+tn<74><08><13><><00>cC64TYPE<50>c<EFBFBD> S<16>D$<24><16>& <20>b
<EFBFBD><02>.<2E>><3E> l<><6C>?<3F>Hl<48>cl<63>b<EFBFBD><00>cDISPLAY<41>><3E>bc<>c
c5chc<EFBFBD>c\<13>c<EFBFBD>><3E>lr<6C><72>JcB/BLK<4C>+<04><00>cBLK/D
RV<EFBFBD>+<2B><00><00>c(DRV.*<00>+d"
<14>\<13>dDRIV
E<EFBFBD>+d$Z;\<13>(d>DRIVE<56>+d$<1E>Z"<08>\<13>
>dDRV?<3F>+Z"<08>dh\<13>ydDRVINIT<49>+<2B>\<13>
<00>dI/O.*׈<00>dBUSO<53><03> @`<60>*)I <20>
I@<40>)
$* @`<60>.`[lCBM>SCR<43>l<EFBFBD> <20>l<EFBFBD>l <00>lSC
R>CBMHl<48> <20>l<EFBFBD>l <00>lEDITORv-2z2zej<65>+(<00>
+<00>+<2B>SHADOW.*u.*.*.*d.*<2A><>.*
.*<2A>[.*\.*<00>[.*<00>[<5B>+H<00>+J<00>+<19><>+;
<EFBFBD>+<15><>$<18>)<29>$<24><02>%<25>&<18>(<28>&<26><02>'`ym<79> S<16>&<26>><05>'<27>
<19>'<27>$ <20>l<EFBFBD>&<26><10> @mJP<4A><50>;<05><14> <09><00><04><>?<3F><><18>
<EFBFBD><07><02><14>K<EFBFBD>O<EFBFBD> <20><11>6\I<><49>I `I<><49>I<>``<60><00>b
P
RINTABLE?Vb<56> <20>b<EFBFBD>J<>l<1C>GbC64EMIT<49>b<EFBFBD> <20>
b<EFBFBD><02>.l<>b<EFBFBD><00>bC64CR<43>+<2B>a<EFBFBD>b\<13><00>bC64DEL<45>+

<EFBFBD><EFBFBD>b<EFBFBD>4
<18><>b\<13>cC64PAGE<47>+
<18><>b\<13>+cC64
ATjc<EFBFBD> S<16>&<26>$<18>><3E> <20><><EFBFBD>?<3F>lha<68>@cC64AT?<3F>c<EFBFBD>
8<EFBFBD><02><07>F<14><>8<>><3E> <20><><EFBFBD>?<3F><>(<28><><02>(h<><68><00><07>l<1C>
<EFBFBD>(<28>()P<><50><18><04><07><02><14><03>'<27><07>&<26><><07>l<EFBFBD><18>$%P
<EFBFBD><18><06><07><02><14>l<><18>&A*<2A><><EFBFBD><07><07>$<00><10><>$PF%F$<24>
&P<02>'l?k)k2!<21>k<EFBFBD> S<16><03><07>$<24><10><>l<><00>k2
@l<><07>$<24><07>%<25>8<><02><07>F<14><03>$<24><07><10>lha<00>k 2V
ARIABLE<EFBFBD>+A)Z<17> \$l 2CONSTANT<4E>+A) ! !<21>(
l<EFBFBD>(l\<lUNLINK<4E>+<2B><17>/<18><07>k\<13><00>l <00>*
)?*$* <09><>
<EFBFBD><EFBFBD>I<EFBFBD><00> <0B> <0C>l <00><00>aCUROFF<46>a<EFBFBD><61>
<EFBFBD> <0C><>
<EFBFBD>l <00><00>aC64KEY<45>+<2B>a<EFBFBD>6[a<><1B><><EFBFBD>a<EFBFBD>a\<13>C
a#BS<42>+<00><00>a#CR<43>+
<00><00>a C64DECODE<44>+<2B>a@
<EFBFBD><00><08>.?<3F>d<13>a@<1C>
<00>Q!;dP<12><15><13>
<08><13>
?#\<13><00>a C64EXPECT<43>+Q!;<08><17>Q!"
<EFBFBD>
<00>?I?<3F><1B><><EFBFBD><15>4\<13>@bKEYBOARD<52>?La[ablb
\<13><00>bCON!<21>b<EFBFBD><07>><3E> l<>~jSP<53>+<00><00>jIP<49>+
<00><00>jN<>+$<00><00>jPUTA<54>+<00><00>jW<>+<00><00>jSE
TUP<EFBFBD>+S<16><00>jNEXT<58>+ <00>NjXYNEXT<58>+ha<68><00>jP
OPTWO<EFBFBD>+<2B><00><00>jPOP<4F>+<2B>.3j.BLK<4C>+D!"<08><08>
<00>$ Blk H5<48>>\k(SEARCH5k<35><07><07>$<00><10><>
()<29>ɥ$%<25>á&A*<2A><11>$PF%F$<24>&P<02>'lek<65><07>$<00>
<EFBFBD><10><>&P<02>'<27>*P<02>+<2B>$PF%F$<24>(PF)F<>
3<EFBFBD>0(3<>d
<EFBFBD>@/.";/<18><11>0<EFBFBD>3<EFBFBD>3\<13><1B>9<11><00><10><18> <10>
<EFBFBD><04>!<10><00><05><14><04>H<><04><14>
<EFBFBD><04>H<><04><03><00><01><><02>`
<EFBFBD><00>@COLDa `i<18> <10><06>$<24>!<10><00>%<25><00><10>$HP<48> <20>
@ <20>9i<39>@\<13><00>@RESTART9a `i <20>@ <20>9i<39>@\<13>
<EFBFBD>l <00>-aC64KEY?]a<><61>
]<05><02><>hl<1C>qaGETK
EY<EFBFBD>a<EFBFBD>><3E> <20><><EFBFBD>?<3F>I<EFBFBD>P<02> l<1C><00>aCURON<4F>a<EFBFBD>J<18>H<EFBFBD>
\ cursor-movement clv14jan88
\ setzt #cr vor und nach File voraus
( adr--adr')
: ?b fBeg @ umax ; : ?e fEnd @ umin ;
: pg< rows 0 DO cr< LOOP ;
: pg> rows 0 DO cr> LOOP ;
\\
: cr? ( adr--adr flag) dup c@ #cr = ;
: cr< ?b BEGIN 1- cr? UNTIL ;
: cr> ?e BEGIN 1+ cr? UNTIL ;
\ executables clv14jan88
( rp char adr--rp char adr')
: lastLn cr< ?b ; : nextLn cr> ?e ;
: begLn cr< 1+ ; : endLn 1- cr> ;
: lastPg pg< ?b ; : nextPg pg> ?e ;
: begPg drop scrBeg @ ;
: endPg begPg nextPg ;
: beg drop fBeg @ ; : end drop fEnd @ ;
: right 1+ ?e ; : left 1- ?b ;
: wait key drop ;
: exitEd nip swap rp! ;
: dochar col+ off
over >r rp@ 1 insert rdrop ;
: backDel 1 back ;
\\
: delChar ;
z\CLDb\X<00>\CLIb\x<00>\CLVb\<5C>{\DEX
b\J<00>\DEYb\<5C><00>\INXb\<5C><00>\INYb\H<00>\
NOPb\<5C><00>\PHAb\h<00>\PHPb\H\PLAb\<5C>
S\PLPb\(<00>\RTIb\@<00>\RTSb\`<00>\SECb\
8<00>\SEDb\<5C>
]SEIb\<5C>]TAXb\<5C> ]TA
Yb\<5C>+]TSXb\<5C>6]TXAb\<5C>a]TXSb\<5C>l]
TYAb\<5C> wv<>qv<71>qv<71>qv\<13>+<2B><08><17><19><00>v
<EFBFBD>\(wq(PAD.*<00>+<2B> <20><08>v;<08>l3<1E><15> ma;
<EFBFBD>l<EFBFBD><15>&ma;<08>l<EFBFBD><15>m;<08>l3<1E><15>m;ma<17><17>ma
<17>/<18>p<EFBFBD> P ma"D<1F> m;/q<>
1P&
ma"D<1F>&m;\<13>+<2B> <20>v"<08><19><13>v\<13>+#$<24>+/
d*w;<08>p<EFBFBD>a\<13>+D!"<08><08><18>.wd<13>!"<08><17>3;<08>
p<EFBFBD>aIp<EFBFBD>3"<08><08><16><00>3;]M/CPU<50>+A)! !<21>(l<>
(<28>#"
<18>1<16>
%[[<08>/<00>1<16>[<5B>[<5B>y[
<EFBFBD><17>3invalidJ%["[<5B>J<13><15>[%["
1<16>
%["
1
U<18><00>[<5B><00>[y[\ <00>]ADC<44>]`
<EFBFBD> <00>]AND<4E>] <20> <00>]CMP<4D>]<5D><> ^EOR<4F>]@<40>
^LDA<44>]<5D><> ^ORA<52>]<00> )^SBC<42>]<5D><>
6^STA<54>]<5D><> c^ASL<53>]
p^DP<17><19><08>
<EFBFBD>S<><53>q<EFBFBD>m"<08><16>><3E>1<16><08><00><18>
s<><08>
s<EFBFBD><08><1B><><EFBFBD>\<13>+?$
@<40>\.*<1F>
<EFBFBD> <0C><><EFBFBD><EFBFBD><EFBFBD>
<1E><><EFBFBD><EFBFBD><11><><13><> <0F>.*ss'sisiu<69>p>o>o<>r<EFBFBD>
r<EFBFBD>r<EFBFBD>r<EFBFBD>o<EFBFBD>o<EFBFBD>p<EFBFBD>p;qr<>oppo&o|n<>n<EFBFBD>n<EFBFBD>n<EFBFBD>n<EFBFBD>n<EFBFBD>n
<EFBFBD>n<EFBFBD>opo^o<>p<EFBFBD>p<EFBFBD>n0v<30> S<16>$<24>H<EFBFBD><48>uI<75><49>E&P<><50>
<EFBFBD><EFBFBD><EFBFBD>
uh<EFBFBD><EFBFBD>ul<1C>+4m<34><13>6
<18><><17><>J<><4A><EFBFBD>\<13>+4m2<>q
\ altes clv13jan88
: redraw
scrBeg @ fEnd @ over -
scrRow @ .page drop drop
scrEnd ! ;
( adr--adr')
: cursor \ dup curPos ! \ test
scrBeg @ 1- -1 -rot
BEGIN rot 1+ -rot
cr> 2dup u> not UNTIL
drop leftchars scrRow @ -
rot swap at ;
: ?sE? scrBeg @ pg> over u> ?exit
dup pg< 1+ scrBeg ! ;
: ?sR? leftchars dup cols - 1+
scrRow @ max min scrRow ! ;
: ?sB? dup scrBeg @ u< not ?exit
dup begLn scrBeg ! ;
: show ?sB? ?sr? ?se? redraw cursor ;
\ 0 4 +thru
 `BMI<4D>+`c_\ \`BNE<4E>+<2B>_c_\ <00>`BPL<50>+
`c_\ <00>`BCC<43>+<2B>_c_\ <00>`BVC<56>+*`c_\ <00>
`BCS<43>+<2B>_c_\ <00>`BVS<56>+5`c_\ <00>`2INC<4E>+<2B>
"^`\Fv[<5B>]<5D>i^<5E>_z_<7A>#<17>^}_\ L`2DEC<45>+<2B>
"^]Fv[<^<5E>i^<5E>_z_<7A>#<17>^}_\ <00>`WINC<4E>+<2B>
<08>^<5E>_z_<7A>#<17>^}_\ <1E>WDEC<45>+<2B>"^<5E>_z_<7A>#<17>
^}_<>^\ ;#$<1E><15>3;\<13>+<2B>3"<08><08>l#x<1F>l<EFBFBD>
<19><16>c<EFBFBD>K<19>l#6<1F>d?\<13>+<2B>l
<01>r\<13>+<2B>r<EFBFBD>3"<08>
9Sm<EFBFBD>;q<><08>3"<08>9<EFBFBD>mJ9
\<13>+<2B>r
\<13>+
<EFBFBD>r
\<13>+<2B>3"<08>9wmm<><17>l<EFBFBD>r<EFBFBD>\<13>+<2B>r<EFBFBD><08><17>3
[<08>r\<13>+<2B>r<EFBFBD><08><17>3[<08>r\<13>+<2B>r<EFBFBD><08>l"<08><08>q<EFBFBD>[<19>
<16><00><16>3[<08>r\<13>+<2B>r<EFBFBD>m"<08>3"m;<08>3;<08>r\
"q DIGDECODE<44>+<2B>a@ <09>;C:<3A>+<2B><11>^<5E>z<EFBFBD>0<EFBFBD>~'
;<08>\ z<>RAM<41>+/?<3F>i^\ <00><>ROM<4F>+/><3E>i^\
 <00><>'NORMJSR<53>^ <00><>JSRI0<49><30> <00><>C16+JSR<53>+
<EFBFBD>/<00>[<19> <00><><EFBFBD>^<5E><><EFBFBD><00>^\
kz ASSEMBLER<45>
+?jy[\
|<7C>e;CODE<44>+)/<18><><EFBFBD> <20>+/<18><><EFBFBD> <20><>\
<EFBFBD><EFBFBD>CODE<44>+A)X <20><08>;<08><>\
<12>>LABEL<45>+X <20>)A
)<29> !Zi(<28>(<28>1i(X Z<17><16>(ZD<1F>
mp: Ip

<EFBFBD>4z?
 d?'qa
W?<3F>pQ!"'q#<17>\<13>+'qJ<13><13>
q\<13>+ n<> <20>l3D n<>l3
<18><> \<13>+<2B> n<>l3D\
<13>+<2B>9<EFBFBD>"\<13>+<2B>a<EFBFBD>6<EFBFBD>?<3F><1B><><EFBFBD>a\<13>+<2B>3"Z"<08>d
<EFBFBD><1F>\<13>+o?<3F>qIp<49><17>d?<3F>q<EFBFBD>$Scr # <20>5<EFBFBD>$Drv <20>
5<EFBFBD>3"Wq<57><18> <00>$not <20>$updated<65><17>d?/<18>p<EFBFBD>
#?F<17>4/q<>
1#?<3F>pd?<3F>qIq<49>\<13>+o?<3F><08>l
<00><17>3;'q<>2<><17>v<EFBFBD>2<>e>
F<17>e<EFBFBD><17>#<23>e<EFBFBD>$
,p,w<> <20>e<EFBFBD>d
Fze<7A>
<17><16>/<01><1F><08>e<EFBFBD>eX <20>
<08><16>e<EFBFBD>d
F<17>e<EFBFBD>d;yf<79>3
save-error\,Tx
R<>+<2B>3"cx\,<00>x+L<>+<2B>3"<08>Xx\,<00>xV<>+;/
<EFBFBD>*<2A><08>Z<17>"\,yVIEW<45>+ y<><08>Xx<58>
<EFBFBD>$
from keyboard\<13>+,m"0mJ<13>\,<00>vCURL
IN<EFBFBD>+
<1B>b
 <0C><16>ma[<08>ml<>n<>lD\<13>+<2B>ma"
<08><18><08><13>o<EFBFBD><08><13>p\<13>+m<><17>\<13>+m<><17>\Tl
RVSON<4F>+
<12>b\ApRVSOFF<46>+
<18><>b\Tp*
**ULTRAFORTH83*** <00>prFORTH-GESELLSCHAF
T<EFBFBD>+%\<00>lSTAMP$.*<00>+'
q#<17> n<>l<EFBFBD><15><08><16><08>m<EFBFBD>\qGETSTAMP<4D>+
2{b'q<>?<3F>$ your sta
j<>bjy
<1B>b
k<>b

<EFBFBD>bjy<EFBFBD><08>\-zy EDIDECODE<44>+
<18>@<1C>
m<>?
d<13>a@<1C><m<><17>y<EFBFBD>Q!"[<19><00>Q!"<08><><EFBFBD><EFBFBD><00>
<15>%JFl<46><08>#J<><4A><EFBFBD><EFBFBD>Q!;d<13>m<>
.v<><13>
v<EFBFBD>\-<00>y EDIEXPECT<43>+<2B>wQ!;<08><17>Q!"<19>
<EFBFBD>?I?<3F><1B><><EFBFBD><15>4\-zEDIBOARD<52>?La[a<>y z\<13>
!y
SAVESYSTEM<EFBFBD>+<2B>32<><17>3;<08>32<>^[,Y;[
<00>[X);[<00>[)Y;[<00>[);[<00>[>CODES.
*<2A>[.*! !JX <20> ;<08><00>[ NONRELOCATE<54>+<2B>[<5B>[
;\<13>+A)!<21>(l<>(J<13>["<08>"<08>\N[N[N[N[
N[N[
N[ <0C>+<2B>%["
%[;<08>%["
1<16>
<EFBFBD><00><17><>
<00><08>J<><4A><EFBFBD><EFBFBD>#"1<16>\<00>[CPU<50>+A
)!<21>(l<>(J<13>[y[\4\BRKb\o\CLCb\
F1<16><18> <00>$not <20>$changed<65>Z1<16><00>
9<EFBFBD>
1
<06><19> <00>$, saved
1<16><1B><00>$ ,
loading?<3F>3"<08>3"<08>w\,<xL<>+<2B>3<EFBFBD>cx\,Tx
R<>+<2B>3"cx\,<00>x+L<>+<2B>3"<08>Xx\,<00>xV<>+;/
<EFBFBD>*<2A><08>Z<17>"\,yVIEW<45>+ y<><08>Xx<58>
<EFBFBD>$
from keyboard\<13>+,m"0mJ<13>\,<00>vCURL
IN<EFBFBD>+
<1B>b
><3E>C,<2C>+6<>OƼf<>\p<>,<2C>+6<><36>
<EFBFBD>Ff<>\<00><>,"<22>+
"<22>#<23>u<><75>V‹<13>f<EFBFBD>\<00><>
FILL<4C>+z<15><><EFBFBD><EFBFBD> <00>%O<>J<EFBFBD><4A><EFBFBD><EFBFBD>\<00><>ERASE<53>+
<EFBFBD><17><>\<00><>BLANK<4E>+?4<><34>\F<>HERE!<21>+H<>;\
<13><00><>RESOLVE<56>+<2B><08>"<08><><EFBFBD><19><00>4<EFBFBD><08>*+<2B>$e
xists a;<08>dPPa"<08><08>'<00><08><><EFBFBD><15><19>3 r
esolve loop<15><><EFBFBD><08><00>"<08><08><18><1B><>\6<>
V
OCABULARY<EFBFBD>+<-<2D> !X @<40>" !@<40>;\`<60> TRANS
IENTv-9<><39>!@aT<61>+<2B><>\<00><>aH<61>+<2B>-\
C@<40>+D<><44><EFBFBD>J<13><>\<00><>C!<21>+D<><44><EFBFBD><EFBFBD><13><>\J<>
@<40>+<2B><08>Ƌ#<17>ƣ<EFBFBD>\<00><>!<21>+P<>#O<><4F>O<>\
<00><>CMOVE<56>+<2B><><EFBFBD><EFBFBD><00>J%O<>#J<><4A><EFBFBD><EFBFBD>\ <0B>
HERE<52>+V<>\/<2F>ALLOT<4F>+H<>[\ 

<00>(4
112)<00>la<>l9al<06> J6<00><00>{9uVc}b<>3<EFBFBD>
m
$ forw<72><00><><EFBFBD><16>3??<3F>$ resa<17>"
<05>5a
"<08><08>5<00>"<08><>@<1C><00>$ fdef<65><00><><EFBFBD><16>3
??<3F>$ rdefa"
<05>5\=<3D>"H';/<2F>+<2B>"<08><><EFBFBD><19>
a"1<16>
<00><08>9d\<13>+a<17>J
1<16><08>J?
4<EFBFBD><19><00>*A<>Z<17>"<08><08><08>\<13>+"<08><08>
<EFBFBD><08>ń
<00>a+<2B>><3E><1B><>\<00><> .UNRESOLVED<45>+%
"<08>Z<17>PEAT<41>F<17>4<EFBFBD><08><>H<EFBFBD><48><EFBFBD>a\"?<3F>D<>
+<2B><15><08>̋<08><17><>
<0B>#J<><4A><EFBFBD>F<17>4zk<>\#[<5B>L<>+
<EFBFBD><EFBFBD>
<05>4<EFBFBD><34>a\#<00><>C<>+<2B>_<>\#<00><>B<>+<2B><><EFBFBD≯
<EFBFBD><EFBFBD><EFBFBD><08>
<05>5a\#<00><>DUMP<4D>+<2B><><EFBFBD><EFBFBD>?%
_<>
<EFBFBD><08>><3E><00>
<14><><EFBFBD><EFBFBD>\#C<>VIEW<45>+
<EFBFBD>H<EFBFBD><EFBFBD><08>
Z
<17><16><>cx\$<00><> REDEFINITION<4F>+&<26>"<08>q<00>!2/
<18>/21$2D,23<32>"<08>!;<03> !<21> !<21>aJ<13>1<16>
nP<12><13>X <20><08><16>À(<13><15>;L;<08>(<28><12><15>
\V<>GFIND<4E>+<2B>P<12><17>[<08>.<2E><17>[\<00><>GH
OST<EFBFBD>+<2B>!"$<24>Ą<00>d<13><08>!;<00>\<00><>WORD,
<EFBFBD>+<2B>ė\<00><>GDOES><3E>+Z<17><15>"<08>"dX <20>
<EFBFBD><EFBFBD> !<21> !Z<17><>L;<08>(<28>;\<00><>G'<27>+$<24>ę
<EFBFBD>3?\(<28>'.<2E>+-Ÿ"<08><>@<1C><00>$/<18><>9.
<EFBFBD><15><18>'?<3F>$Redefinition: X +3<>"<08>!;<08>+
<EFBFBD><EFBFBD><EFBFBD>/<2F>&<26>;\<13>+<14>"<08><08><><EFBFBD>#<17><>9\<13>+6!/&<26>"
 !6!<>\%E;CODE<44>+<2B><17><1B>δ'9\%<00><><EFBFBD>DOE
S><3E><>%<00><>A;<3B>+<2B>+9\&K<><4B>DO#&Y<><59>?DO7&<00><>
<EFBFBD>LOOPl&<00><><EFBFBD>IF<49>&<00><><EFBFBD>THEN<45>&<00><>ELSE<53>&
<EFBFBD><EFBFBD>BEGIN<EFBFBD>&<16><>UNTIL&"<22><>WHILE<4C>&.<2E><>RE
f<>ROMOFF<46><46>l x<>ROMON<4F><4E>l <00><>>BYT
E<EFBFBD>ñh<><68><07>8<><02><07>F<14><><07>l<00><>BYTE><3E>á
h<EFBFBD><18><02><07><02>ȑl <00><>>IMAGE<47>+<2B><>"<08><16><>"
<EFBFBD>\<00><>>HEAP<41>+<2B>(<28><08><16>1<16><15>i(<28>(<28>D\<13>
+<2B>ȿ+<2B><><EFBFBD>+X 1$"<08>
D,"<08><00>,"<08>" !$<24>
J<13>
<1F><18><16>3 inval.Gname<6D><17>[J#<17> X F
<EFBFBD><15>z<15><> !<06>+<2B><><EFBFBD><EFBFBD>F<17>4<EFBFBD><08><>H<EFBFBD><48><EFBFBD>a\"?<3F>D<>
+<2B><15><08>̋<08><17><>
<0B>#J<><4A><EFBFBD>F<17>4zk<>\#[<5B>L<>+
<EFBFBD><EFBFBD>
<05>4<EFBFBD><34>a\#<00><>C<>+<2B>_<>\#<00><>B<>+<2B><><EFBFBD≯
<EFBFBD><EFBFBD><EFBFBD><08>
<05>5a\#<00><>DUMP<4D>+<2B><><EFBFBD><EFBFBD>?%
_<>
<EFBFBD><08>><3E><00>
<14><><EFBFBD><EFBFBD>\#C<>VIEW<45>+
<EFBFBD>H<EFBFBD><EFBFBD><08>
Z
<17><16><>cx\$<00><> REDEFINITION<4F>+&<26>"<08>q<00>!2/
<18>/21$2D,23<32>"<08>!;(~'"<08>
1<16>;L;
<08>(l<>("\
+<2B>LABEL<45>+<2B>[4<><34><EFBFBD>\<00><>IMAGE.
*<00><00><>TTOOLSv-<2D><><EFBFBD><EFBFBD><EFBFBD>l<00><>DEFININGv-:<3A>:<3A>
<EFBFBD><EFBFBD><00><>TDP.*G<>B<>THERE<52>+H<>"\N<>DISP
LACE.*<2A><00><>?THEAD.*<00><>TLAST.*<00>
GLAST'.*<0E>TDOES>.*VO<1D>>IN:.*$
,<2C>TVOC.*9<> TVOC-LINK.*<14><> !\<13>+<2B>
<EFBFBD><EFBFBD><EFBFBD> %<1B><>
?J<><4A><EFBFBD>\!.NAME<4D>+<2B><08><00>#<17>
<EFBFBD><EFBFBD>
1k<><6B> <00>$??? <20>4<EFBFBD>>\<13>+<2B><08>%<00>a<17><08>
<EFBFBD>
1<16>#<17><19>a<17>d<13><><EFBFBD>Y<>\!<00><>>NAME<4D>
+@<40>"<08><08><1B><00><15>"<08><><EFBFBD><08><00>d<13><08><1B><><EFBFBD>\<13>+
<EFBFBD>Z<17>5<EFBFBD>$:\<13>+<2B><08><>
<06>5\<13>+<2B><08><>P<17>5\"<00><>
S<>+<2B>̑4 <0B>P<17>4<EFBFBD>#<17><08><><08><><EFBFBD>#\"<19>N

AIRS<EFBFBD>+<2B><16>3 unstructured\ b<>>MARK<52>+V<>
<EFBFBD><17><>\ <00><>>RESOLVE<56>+V<><56><08><16><08><>\ <00><><MA
RK<EFBFBD>+V<>\ <00><><RESOLVE<56>+V<><56><16><>\ <00><> IMMED
IATE<EFBFBD>+<14>"<08><08><00><08><>
@<16>O<>\ <00><>RESTR
ICT<EFBFBD>+<14>"<08><08><00><08><>
<18><16>O<>\ <00><>'<27>+-Ÿ
"<08><><EFBFBD><16>3?a"\ <09>|<7C>+<2B><>"<08><13><><EFBFBD>\ %<25>
GCOMPILE<EFBFBD>+
.*ultraFORTH-83 3.80-C16+ <20><><EFBFBD><EFBFBD><0E><1D><><EFBFBD>
<EFBFBD><18><0E><02><0E><03><><EFBFBD><EFBFBD><0F><> END-TRACE<43><11><><EFBFBD><13><0E>
<08>Ʌ<15><02>l wRECOVER.*ȅȅ<1D>PFFl
<EFBFBD>+<00>NOOP <00>ORIGIN<49>+<00>S0<,<00>
R0<,
<00>DP<, GOFFSET<,QBASE<
,<00>OUTPUT<,<00> ;X <20>;\<11>HPREB
UILD<EFBFBD>+<2B><17>P<12> ^6!?<3F><><00>6!ʽ<><CABD><EFBFBD>
!<21><12>6!7ʡ\u<>DUMMY<4D>+<2B>\<00><>DO><3E>+
)X P<17>6!"<08><17>0\.*u<><75>Ǽ<EFBFBD>6<EFBFBD>f<EFBFBD><66><EFBFBD>O<EFBFBD>X<> AS
SEMBLER<EFBFBD>+<2B>ʘ[;<08><>\R<>>LABEL<45>+<2B>!"$<24><>
<15>!;<08><00><08>Ǹ<08><08>+\<00><>LABEL<45>+V<><56><EFBFBD><EFBFBD><EFBFBD>\
<17>CODE<44>+<1B>V<EFBFBD>a<17><><EFBFBD><EFBFBD>\ +<2B>?PINPUT<,
<00> ERRORHANDLER<,VOC-LINK<,<00>
UDP<,<2C>*SP@=<12><07>$<24><14>%<25>$<24>8<><02><07>F<14><01>
<EFBFBD><00>l5SP!<21><12><07><><07><14><07>l _UP@
<EFBFBD>lg<00><12>UP!<21><12><04><07><01><><07><00><00><01><18><02><07><02>
l <00>RP@<40><12>lg<00><12>RP!D<12>l<><00><12>>RR
<12>8<><02><02>F<03><07><02><07>l<>K<12>R><3E><12>8<><02><07>

$,p,w<> <20>e<EFBFBD>d

ze<7A><65>"/<01><1F><08>e<EFBFBD>eV<65><56>
<EFBFBD>"<08><> %<1B><><EFBFBD>eJ<65><4A><EFBFBD>

<02>e\,<2C>(THEADER<45>
+<2B><>"<08><00><17><>[V<><08>d<13>!"$<24><08>!;<08>J<13>

<20><18><16>3 inval. Tname<6D>J
<05>V<><56><08>D!"<08><>
V<EFBFBD>ɸ"<08><>;V¸<14>;<08>J#<17>f<><13>\<00><>TH
EADER<EFBFBD>+<14><><17>ɽĸ<17>;V<><56><EFBFBD>\<13>+<2B>\<13>+V<> !\
<EFBFBD>+<2B>!"A)<29>!F<14><02><07><02><07><18><02><02><02>l <00>
R@<13>8<><02><07>F<14><02><07>l<13>RDROP1
EXITf<13><02><0E><02>l=UNNEST^<13><02><0E><02>l
s?EXIT<49><13><14><18><02><07><02>(P<>l <00>E
XECUTE<EFBFBD><13><07><1C><07><1D><18><02><07><02>l<00>PERFOR
M<EFBFBD>+"<08>\<00>C@L<13><07>$<24><07>%<25><00><07>$lEC
!<21><13><07>$<24><07>%H<><07>$<24><><18><1B><><EFBFBD><12><12><><EFBFBD>;a;
\<13><00><>RESDOES><3E>+<2B><08>ĸ"<08><><EFBFBD><19>a;d<13>
<EFBFBD><EFBFBD>\<13>(l<>(<28>"V<>;<08><>\<13>(l<>("<08><>\<00><> MO
VE-THREADS<44>+@<40>"r<>"<08><08><08><00>"<08><08><17><><EFBFBD>Ƌ
"<08><08><1B><><EFBFBD>3some undef. Target-Vocs left<66>
\<13>+<2B>,"
<06>\<13>+
<18>1
<18><><19><00>f<>\<00>
<EFBFBD> SAVE-TARGET<45>+

<02>e<EFBFBD><17>#<23>e<EFBFBD><11><0E>l +
B<EFBFBD><EFBFBD>(+LOOP<4F><50><18><07><02><02><07><02><02>q<14><18><02><07><02>(
Dl ,<00><><EFBFBD>I'<1B><00>8<><02><07>F<18>HH<48><02><07><>HH<48>
<EFBFBD><01>l ,!<1B>Js<1B>PR-m<1B>BRANCH<43><18><0E><0E>$<24>
<EFBFBD><0E><0F>$<24>l -y<1B>?BRANCH<43><1B><14><18><02><07><02>
(<28>Kld.<00>>MARK<52>+X <20> !\.<00>>RESOLVE<56>+
X <20><08><16>;\.<00><MARK<52>+X \.M<RESOLV
D<>+<2B>#<23>"\bQ#PARSE<53>+P<12>#<23>!"<08>"<22><08><08>"
P<12><08><16><08>l<19><16>![\b<00>#NAME<4D>+?4X#B"d\
c$STATE.*c)$eASCII<49>+?4X##J1$"<08>
^\c7$,"<22>+
"<22>#X <20>#<17> n \cw$<24>"LIT<49>
+<2B><12><12><15> <20>PP\c<00>$<24>("<22>+<2B>$\c<00>$A"<22>+6!<21>
$\$\d<00>$<24>(."<22>+<2B>$<24> #?\d<00>$B."<22>+6!<21>$\$\d
<00>$a(<28>+
)UMAX<41>+<2B><19>\)<00>UMIN<49>+<2B>[
<19>\)<00>EXTEND<4E>+<2B><08>\)<0F>DABS<42>+<18><>
<EFBFBD>\)"<22>ABS<42>+<18><><00>\<13>+9<13>a<17>PP<12>
PP\*7<><37>(DO<44>+<2B><08>i<>\*<00><><EFBFBD>(?DO<44>+<2B><08><16>
<08>i<><69><12>"<08>P<12>\*<00><>BOUNDS<44>+<2B><08><15>\
*<00><><EFBFBD>ENDLOOP<4F><50><EFBFBD>l+<00><><EFBFBD>(LOOPL<50><18><01><02><02>
<EFBFBD><02><00><02>l <00><05><02><0F><>H<>$ <20>"<22>$lQ"<22>"<22>*<2A><03>
<07>$<00><10><><18><>!<21>&<26>&<26><>!<21>'<27>'8<>$<24><>!<21>$<24>%<25><>!<21>%<25>
<EFBFBD><07><>!<21><07><>!l<>#<23><04>$%<25>=<3D>&QP<11>&P<02>'<27>$PF%F$
l$#<23>&<26>(<28>'<27>)<29>&Q<14>&P<02>'<27>$PF%F$(<28><14>*<2A>$%P<>
8<EFBFBD><02>&<26><07><>!H<>'<27><07><>!<18><04><07><07><02><14> <0C><04><07>$H<><04>
<01><07>%<25><>*<2A>$<24>(HF*<10><> <20>$<24>l b<00>"SOURCE<43>+D!
"<08><08><00>9<EFBFBD>cd<13>!o!"\b<00>#WOR0<><30>E$<24>
<EFBFBD>%l<>'QU<<19><07>$<24><07>%<25><18><02><07><02><14>E$<24><07>%
<EFBFBD>l<>l<>(<00>><3E>+<2B>U\()0><3E>+<2B><16>\(7
0<><3E>+<2B><18>\(fU><3E>+<2B>\(v=<3D>+<2B><16>\
(<00>D0=<3D>+<16>\(<00>D=<3D>+<2B><16><16>\(<00>D<<3C>
+<15><15><16> -<19><15><15><00>\<13>+9<13><00><08>\
)<00>MIN<49>+<2B>-<19>\)EMAX<41>+<2B>U<18>\)W
IB<49>+\!"\;W!QUERY<52>+<2B>!
pW?Q!"o!;<08>!
<EFBFBD>D!<21>\<<00>!SCAN<41>+P<12><08><1B><00>J<13><16><00>
<EFBFBD>#<17><08><1B><>9\< "SKIP<49>+P<12><08><1B><00>J<13>
<EFBFBD><00><17>#<17><08><1B><>9\<;"/STRING<4E>+<2B><03><15>
<08>z<15>\Ia<49>I{<7B> I)<29>I[<5B> <09>`=<00>"CAPITA
L<EFBFBD>"<22> <20>"<22>l ><00>"
CAPITALIZED"<22><07>$<24><07>%<25>$<24>
&<26>D&P<05>l $<00>OFF<46>+<2B><17>;\%<00><17>CLIT 
<EFBFBD>8<><02><07>F<14><0E><07><><07>P<02>l %<18>LIT1<18>8<>
<02><07>F<14><0E><07><0E><07><18><02><0E><02>l %)GLITERAL
<EFBFBD>+<2B>/<00>1<16>
6!/ !d6!
!\&t0<<3C><18>
<03><>$<24><>l&~0=<3D><18><07><>P<EFBFBD>&<00>UWITHIN<49>
<18> S<16><01>E$<24><07>%<25>
<EFBFBD>E&<26><07>'<27><>l<EFBFBD>'<00><W<18>
<EFBFBD>$<24><07>%<25><18><02><07><02><14>%q\:Q PAD<41>+X
b<>
\:<00> ALLOT<4F>+L[\:<00> ,<2C>+X ;F<17> \:
!C,<2C>+X <20><13><17> \:!<21>COMPILE<4C>+<2B><12>aP"
!\;,!#TIB.*;h!>TIB.*`!savesystem
bv16d1here . decimal
;u!>IN.*;
<00>!BLK.*;<00>!SPAN.*;J!TD+<2B><16>
SH<><18>&<26>H<><07>'<27><07><07>$<24><07><01><07>%<25>l #<00>1+
%<17><18><07>l<00><07><07><00>l #2+c<17>P<>#<
3+p<17>PSv<17>PM\<17>PG#i1-<2D>8<><07><01>l<00>
<EFBFBD><07><00>l #<00>2-<2D><18><>$<00>TRUE<55>+<2B><>$<00>FA
LSE<EFBFBD>+$<00>"-1<>$<00>!0<>$<00>1<>+$<00>2<>
+$B3<>+$L4<>+$VON<4F>+<2B><17>;\
<07><>)<29>'lL7<00>CMOVE><3E><1F> S<18>%<25>'<27>'<18>%<25>)<29>
)<29>%<25>$<18><05><>(<28>&<26>P<EFBFBD>F'F)F%P<><50>l 7<00>MOVE<56>+P
<12><19><00><12>d<13>D\8% PLACE<43>+<2B>P<15>
#<17>, <20>\8f COUNT<4E> <20><07>$<18><01><07><07>%<25><00><07>
8<EFBFBD><02><07>FlT8<00> ERASE<53>+<2B><17> \9<00> FILL<4C>
<EFBFBD> S<16><>$<24>'<27>
<EFBFBD>(HP<48><50>)JP<4A><50>&<26><06>(HJP<4A><50>l :<00>
HERE<52>+L"<14>+<2B>H<><07><07><07><><07><03><07>l<> <00>
ORH<><07><07><><07><07>l<> AND3H<>1<07>
<07><><07>1<07>l<> +XORpH<>q<07><07><><07>q<07>l<>
!h-<2D>H<>8<><07>H<><07><01><07><03>l<>!<00>NOT<4F>
<18><><07><07><><07>l !<00>NEGATE<54>8<><38>"<00>DNEGAT
E<EFBFBD>H8<48><38><07>H<><48><07><07><><07><07><01><><07>l
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><07>$<00>
<10><><18><07><07><02><14><00>`"<00> +<2B>P=<3D><><08><18><00><15>
<EFBFBD><08><13><18><00><16><08> <00><13><15><08>9\5X2/
<1F>
<EFBFBD>ʑ<07><07>l6/MOD<4F>+P<18><><12>\6/
/<2F>+6<1F>\6dMOD<4F>+6<1F>\6r*/MOD<4F>+P<12>
<1D><12>\6<00>*/<2F>+<2B><1F>\6<00>U/MOD<4F>+<2B><17><08>\
6<00>UD/MOD<4F>+P<12><13><1E><12>P<12><1E>\7<00>CM
OVEF<1F> S<16>D$P F%<05>l <00>(<28>&HP
<08>8<><02><07>
F<14><04><07>H<><07><01>l <00>ROT<15><03><07>%<25><01><07>
<EFBFBD><07><05><07>$<24>%<25><07><01>$<24>H<><07>%<25><07><07><04><07><07>%<25><07>l
-ROT<4F>+\sNIP<49>+<2B><08>\<00>UN
DER<EFBFBD>+<2B><08>\<00>PICK<43>+#3;<12>"\<00>RO
LL<EFBFBD>+<2B>P<12>;<12>a<17>#3<1E><1F>\<00>2SWAP<41>+
P<15>\<00>2DROP<4F>V2DUP<55>+<2B><08>\
 %<25>l 3<00>M*<2A>+<2B><08><18>P<12><00><16><08><08><18>
<EFBFBD><16><12>P<12><1D><12><00>\3<00>*<2A>+<2B><1D>\3 2*
5<1E>
<EFBFBD><07>*<2A>l <00>+<2B><17>3division overflow\
4.UM/MOD<4F><1E><07>)<29><07>(<28><18><02><07><02><14><07>%<25><07>$H
<EFBFBD><07>'H<><07>&<26><18>*8<>%<25>)<29><>$<24>(<28>&*<2A><04>$<24>%&'&&&%&
$JPߠ<01>$<24>%<25> <20>b\<13>&<26>H<>%<25>H<>$<24><07><01>'l5
^M/MOD<4F> <0C><04><07><02>l <00>CTOGGLE<4C>+<2B>J
n<16><08>\<13>@$<08><07>$<24><07>%<25>$<24><07>$l<00>!=
<EFBFBD><07>$<24><07>%H<><07>$H<><07><01>$l<><13>7+!]<08><07>$<24><07>%H
<EFBFBD><18>$<24>$H<><07><01>$lovDROP<4F><00>SWAP<41><08>
<EFBFBD><EFBFBD><03><07>$<24><><07>$<24><01>H<><00><07>$<24><07><07><>$l<00>DUP
<EFBFBD><08>8<><02><07>F<14><03><07><01>H<><07>l<00>?DUP<55><08>
Pl l<>VOVER<45>
<EFBFBD><1B><>\0<00>FREPEAT<41>+
F<17>6!<21>Q\0<00>EUNTIL<49>+F<17>6!<21>Q\1B
DO<EFBFBD>+6!<21><><EFBFBD>P\1C?DO<44>+6!<21><><EFBFBD>P\11DLO
OP<EFBFBD>+P<17>6!J<>6!<21><><EFBFBD>\1eE+LOOP<4F>+P<17>6!<21><>6
!<21><><EFBFBD>\1`<1D>LEAVE<56>+<2B><><EFBFBD><12><17>"<08>P\2<00>U
M*<2A><1D><07>$<24><07>%H<>&<26>'<27>'&&&%&$<24><18><07>'<27>'H<><07><>
&<26>&<26><06>%P<02>$JP|<7C>'<27>H<>&<26><07><01>$<24><07><0E>#<23>\dL
$b.(<28>+
)<29>##?\d<00>$a\<5C>+<2B>!"6h#6$<1E>!;
\d<00>$b\\<5C>+<2B>c<EFBFBD>!;\d %\NEEDS<44>+$<24>.<2E><15>
<00>$\d%HEX<45>+
<10>;\d7%DECIMAL<41>+

<EFBFBD>;\ej%DIGIT?<3F>+
0<><16>
 [<19>
<18><><16>

 [<19><00>"<08>[<19><08><13><08>\e<00>%
ACCUMULA
TE<EFBFBD>+<2B>P<12><08>"<08><1D><15>"<08><1D><16>\e<00>%CON
E<>+X <20> !\.<00>?PAIRS<52>+<2B><16>3 unstructur
ed\Ih<><68>lh<><00><>8<><02><07>F<14><><01>Ȣl/
<00>CASE?b<1C> S<16>$AP <09>%QPl<><18>l08BI
F<EFBFBD>+6!<21><1B><1B>\0\DTHEN<45>+=<3D><><17><1B>\0<00>DEL
SE<EFBFBD>+<2B><17>6!<21><1B><1B><08><1B>\0<00>EBEGIN<49>+UF\0
<00>EWHILE<4C>+F<17>F6!<21><1B>/<18><>H\<13>+<2B><1B>/<18><>
<EFBFBD><19>
<00><08>+<2B>,<2C>"<08>a\<13>+<2B>,aD,\q<00>,A
LSO<EFBFBD>+<2B>,"

-<19>3Vocabulary stack fullD,"
F<17>,[D,;\q<00>,TOSS<53>+/<18><><EFBFBD>,[\r<00>-
VO
CABULARY<EFBFBD>+A)<29> !<21> !X %" !%;<08>(l<>(D,;
\r/-FORTHv-uur<00>-ONLY<4C>-!@!@<40>-<2D>(l<>
(<28><17>,;D,;<08>,\r<00>- ONLYFORTH<54>+<2B>-<2D>-<2D>,<2C>-\
s<00>- DEFINITIONS<4E>+D,<10><00>5.<2E>+<18><>5\<13><00>5
U.<2E>+<2B><17>5\<13>C5.S<>+;<12>"<08><08>
 <03><><EFBFBD><EFBFBD><EFBFBD>%
"H5F<17><><EFBFBD><EFBFBD>\<13>R5C/L<>+)<00><00>5L/S<>+<00>
6
LIST<53>+<2B>3;<08>$Scr <20>3"<08>dxH5<48>$Dr `d<>5
6<EFBFBD><17><>.<00>><3E><00>?%F<17>5<EFBFBD>4<EFBFBD>3"<08>9%6$<1E>6
<EFBFBD>q4#?J<><4A><EFBFBD>?\<13>6PAUSE <00><00>6LOCK<43>+<2B>"
}<12><19><00>d<13>"<08><00>6<EFBFBD><1B><>}<12>F<14><02><1C>
H<EFBFBD><1C><01>l o<00>+VARIABLE<4C>+A)F<17> \p|+UAL
LOT<EFBFBD>+<2B>0"<08>
<18>[<19>3
Userarea full0"<08>0
[\p<00>+USER<45>+A)F<17>+!<21>(<28>8<><02><07>F<14><02>
<18><04><07>H<EFBFBD><05><01>l p),ALIAS<41>+A)~'"<08>J

1<16> /<18><><EFBFBD> <20>
 Z'S*;\q],VP.*<00>-<2D>
-<2D>-<2D>-q<00>,CURRENT.*<2A>-q<00>,CONTEXT<58>
+<2B> <20>\<13><00>4HOLD<4C>+<2B><17>4[<08>4"<08>\<13><00>4<#
<EFBFBD>+<2B>4<EFBFBD>4;\<13>W4#><3E>+<2B><15>4"<08>4<EFBFBD><08>\<13><00>4SIG
N<EFBFBD>+<2B><18>
-E4\<13><00>4#<23>+<2B>"<08>
 <09>U<18>

<18><>
0<>E4\<13>5#S<>+5<><15><19><1B><>\<13>@5
D.R<>+z<15>)<29>|4e55<>4<15><08><19><08><16>4#?\<13>u
5.R<>+<2B><18>[5\<13>5U.R<>+<2B><17>[5\<13><00>5D.
<EFBFBD>+<2B>[5<>4\d<13><1B><><EFBFBD>\<13>+<2B>
1<16>\n<00>*N
AME><3E>+<2B>S*<2A>J
 1<16>"\n<00>*>BODY<44>+a
\n+.NAME<4D>+<2B><08><00><08>(<28><00>$|<7C>
1#?
<EFBFBD><00>$???<3F>4\o+CREATE:<3A>+A)<29>'<27>,"D,;<08>
0<EFBFBD>\oh+:<3A>+r+<2B>(<28>8<><02><02>F<03><0E><02><0F><02><18>
<EFBFBD><0E><><1D>l o<00>+A;<3B>+<2B><17>6!\0<7F>'\o<00>+CONS
TANT<EFBFBD>+A) !<21>(<28>8<><02><07>4<>>D!"<08><08><00>3;<08>!
"<08>3;33\_<00>3<EFBFBD>(ABORT"<22>+<2B>$<24><08>P,(<28><12>
d<13>\<13>+<2B>$<24><08><12>d<13>\_V3FABORT"<22>+6
!<21>3\$\_4FERROR"<22>+6!<21>3\$\`%4BL<42>+ `
:4 -TRAILINGs4<73> S<16><07>&<18><07>%<25>'<27>$<18><13><>&I <20>
HP<02>%<25>h<EFBFBD>%l<1C>P<EFBFBD>F'F%<10><>l<1C>e4SPACE<43>+?4
?
\<13><00>4SPACES<45>+<2B><17><><00>4J<34><4A><EFBFBD>\<13><04>,"" !
$J<13><08>
 <20><18><16>3 invalid nameX ~';#<17> <20>)
^)"<08><00>^)[<08>) !<21>(
 Z')L;<08>&)<29>
<EFBFBD>'<27> !<21>(l<>(3*<2A><07>(<28><07>)<29><18><02><07><02><14><07>&<26><07>'
&Pl<><18>&<26><07>%<25>&<26><07>$%Pl <00>$<18><02>$<24><02>%<25>$h8)
<1F>$<24>$<24><02>%<25>) <20>
<EFBFBD>$h<>$<24>$ȅ%<25>$E(P<><50>%E)P<>lcn
<EFBFBD>)>NAME<4D>+%"<08><08><00>Z<17><16>1*<2A><08>z<15>
"<08>a<17>\]<00>2DEPTH<54>+;<12>"<08><08>\<13>
+1$"<08><00>$
compilingd<13>$ ok\^G2(QUI
T<EFBFBD>+<2B>1?<3F>!<21>/<2F>2<EFBFBD><1B><>\^3'QUITI0
3^3QUI
T<EFBFBD>+B"B0&3\^,3 STANDARDI/O<>+/*<10>Z
D\^c3'ABORTI0<49>^<00>3ABORT<52>+,(<28><11>3q333
\_<00>3SCR.*_<00>3R#.*_<00>3(ERROR<4F>+q3<71>
4X +<2B> #?<3F><06><02><0E><18><1C><03><0E><><1C><0F><18>h<><68>l
<1C>+<2B>~'"<08>*;\j<00>(EDOES><3E>+6!<21>(
l!6!<21>(\
<13>+<2B>
<18>1
<18><><19>\<13>+X
<18>1
<18><><19><00><08>
#X <20><08>#<17><1F>~'[<08><17> \k<00>(?HEAD.*kv
)|<7C>+^)"<08><13>^);\l<00>)WARNING.*<00>+<2B>)"
<EFBFBD>~'"<08>,"9.<2E><15><00>4~'"+<2B>$exists <20>>\l
<00>)CREATE<54>+X D!" !<14>EH<><04><14><01>l <20>
<11><17>3 stack empty\\<00>1.STATUSI0 k.*<2A><12>
;\\<00>1<EFBFBD>PUSH<53>+<2B><12><08>P"P<12>1PP\\<00>1L
OAD<EFBFBD>+<2B><08><18>D!2D!;<08>!2<>!<21><17>1<EFBFBD>/\]2+LO
AD<EFBFBD>+D!"<08>#2\]c2THRU<52>+#<17><08><>
%#2J<32><4A><EFBFBD>
\]y2+THRU<52>+#<17><08><>
%k2J<32><4A><EFBFBD>\]<00>2c--><3E>
+<2B>D![<08>!<21><17>1\]<00>2RDEPTH<54>+BRSIVE<56>+<2B>'
\<13>+<2B>'<27> <00>J<16><08><13>\hH' IMMEDIATE<54>+
@Z'\h<00>'RESTRICT<43>+
<18>Z'\i (
CLEARSTA
CK.(<28><14><04>H<><04><14>l i(HALLOT<4F>+<2B>"<08><08>
<EFBFBD>;a<17><15><16><08>;F<17><15><08>, ,(<28>;\i@(
HEAP<EFBFBD>+<2B>"z\i<00>(HEAP?<3F>+<2B>(}<12>\<13>+<2B>X <20>
<08><16>i(<28>(<28>D<1F>(<28><08>~'[<08>'\<13>8<><02><02>F<03>
 <09>+A)/<18>0 !<21>(<28><02>hH<68><1C>ȅ<1C>lz<00>0(IS<49>
+<2B><12>aP";\<13>+"/I/"<08><08><19>/<18>/"<08>
<EFBFBD><16>3 not deferred\z<00>0bIS<49>+;/<2F><08>0 +1$"<08>

6!<21>0 !d;\.*<00>+O2
 -<19>3 tight stack
e1J<13><18><00>e1<65><13><17>3dictionary full<6C>$ st
ill full \["1?STACK<43>1<EFBFBD> 8<><07>H<><14>P <09>
<EFBFBD>h1\<13>g1<67>
2<EFBFBD><08> <20>&;&<26><17>P<12><17><15>%&<26>%
-@<1C>9<13>P<12>%&<26>%o&<26> <00>;<08>%&<26>%<25>%<25>
&<26>%<25>&<26>%)&<26>%<25>%<25><18><1B><>&<26>&<26>&&<26><17>%)&<26>%<25>T
<EFBFBD>\gB&'NUMBER?I0L&ge'NUMBER<45>+p'<27><08><18>3
?<3F><18><18>\hv'LAST.*<00>+~'"<08>\h<00>'H
IDE<EFBFBD>+<2B>'<27> <00>"<08>,";\h<00>'REVEAL<41>+<2B>'<27>
<00><17>,";\h<00>'IRECU /NOTFOUNDI0<49>/x<00>/
NO.EXTENSIONS<4E>+<2B>3Haeh?\xO/ INTERPRET<45>+
<EFBFBD>/\<00>+<2B>1$<24>.<2E><08><00>1<16><00><13>/<2F>3 compile
only<6C>/<2F>p'<27><18>I/<2F>/\<13>+<2B>1$<24>.<2E><08><<19>
<00><13>/ !<21>/<2F>/<2F>p'<27><08><<19><00>^^<18>I/<2F>
/\y<00>/a[<5B>+/0<>0<EFBFBD>/1$<24>\y{0]<5D>+/;0<>0<EFBFBD>/
1$<24>\<13>+<2B><17>3Crash\z<00>0DEFER VERT<52>+#<17>
<20>%<25><00>%<25><1B><><EFBFBD>\<13>+<2B>&"<08>\<13>+<2B> <20><17>&[\<13>+
<EFBFBD><17> \fM%DPL.*<2A><><EFBFBD>+<2B> 9<13><15>9<13>\<13>+<2B>
9<13><08><12><00><15>&"#<17><08><13><08>\<13>+
&@<1C>


<EFBFBD>d
$@<1C>
<10>d
H@<1C>
<10>d

%@<1C>F<17>d<13>\<13>+
,<2C><08><19>
.<2E>\<13>
+&"<08><17><19><13>&[\.*g
&NUMBER?<3F>+<2B>

$<24><07>8<><02><07>F<14>&H
0<05>i<EFBFBD><69>H<EFBFBD><48><03><>$<24><><01>
l v1.FIND<4E>+D,<2C>"<08><08>"<08><19><00><17>"9.
<EFBFBD><00><15>.d<13><08>,a[<19>
<00><08><17><1B><><EFBFBD><15>\v<00>.
'<27>+$<24>.<2E><18>3Haeh?\v7/I[COMPILE]<5D>+;/ !\
vo/C[']<5D>+;/^\v<00>/ NULLSTRING?<3F>+<2B>J<13><18>
<08><00>\H<18><1C><02>H<><1C><00><0F>l w<00>/
>INTERP
RET<EFBFBD>/0x<00>;\<13><00>6UNLOCK<43>+<2B><08>6<EFBFBD>\<13>8<EFBFBD>
<EFBFBD><04><><00><05>l<EFBFBD><04><06><04>H<><04><14><01><07><02><07><03><18><02><07>
<EFBFBD><14>l<><12><00>6FILE<,<1C>7PREV.*<2A>{.*<00> 7
B/BUF<55>+<04><02>(Y"PH<>P<>`:7<><03><07>$<00><10><><18>
<EFBFBD>&<26>&H<><04>'<27>'<27>7<>(<28>7<>) )7P<1D><18><02><07><02><14><01>
<18>(<28><07>)<29><00>lf<13>(<28>*<2A>)<29>+<2B>*<2A>(<28><01>*<2A>)(Pl )
7P<EFBFBD><EFBFBD>(<28>*<2A><01>(<28>*<2A>7<>(<28>"<08>,;\<13>+"<08><17>*+\
s<00>-ORDER<45>+R,<2C><>%K-/<18><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>F<17>4<EFBFBD>,K-\
sY-WORDS<44>+D,""<08><08>><3E>1<16><00>><3E>a+<2B>4<EFBFBD>
<1B><><EFBFBD>\t.(FIND;.<2E><03><07>$<00><10><>&)<1F>(<28><00>$<24>H
<EFBFBD>$<24>%<25>$$P<07><01>l<>H<>$)E(P<><18><02>$<24>)<29><00>%<25>*<2A>(
<EFBFBD>&Q)PK<50>P<EFBFBD><50><03>*<2A><07><>)<29><07><>l<><18>.<2E><07>$<24><07>%<25>$<24>&)
8<>$<24>$<24><02>%<25>&) P <09>$<24><07>%lB.<2E>$<24><07>v<02>+<2B><08>f
<19>
6dP<17><15><08>f<19><00>f<EFBFBD>
6
<11>d
<13><08>f<19><00>f<EFBFBD>
6
<18>d<13>f<EFBFBD>
6
<1E>
\<13>+<2B>f#<17>\<13>+<2B>2t%<25>|4e5<65>
,E4e5<65>4\<13>+
<01>of
READSECTOR<EFBFBD>+d
ze<7A>$u1:13,0,<2C> <20>e
<EFBFBD>f<EFBFBD>e<EFBFBD>d<EFBFBD>6yf<EFBFBD>d

Neg7f<37>d<EFBFBD>\<13>g WRITESE
CTOR<EFBFBD>+d
ze<7A>$b-p:13,0<> <20>e<EFBFBD>dd

ze
\<13>e<EFBFBD><65><EFBFBD> S<16>& Ld<4C>&<26>><3E> <20><><EFBFBD>?<3F><>$ `<60><><EFBFBD>><3E> <20><>
<EFBFBD>?<3F><>&<26><>lha<68>}eBUSIN<49>+<2B>d<EFBFBD>6<EFBFBD>e\<13>FeBUS!<21>e
<EFBFBD><07>><3E> <20><><EFBFBD>?<3F>l<EFBFBD><12>ZeBUSTYPE<50>+<2B><><EFBFBD><EFBFBD> %J<13>eJ
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>6\<13><00>eBUS@f<>><3E> <20><><EFBFBD>?<3F>l<1C>fBUSINP
UT<EFBFBD>+<2B><><EFBFBD><EFBFBD> f%<1B>J<><4A><EFBFBD><EFBFBD>6\<13>,fDERROR?<3F>+d
Nef<>
0<><16>
?f<><08>a<EFBFBD><19><1B><><EFBFBD>?<3F><18>d\
<EFBFBD>+<2B><01>+<2B><01>+FF<46>d<EFBFBD>><3E> L<><4C>?<3F><><01> <20><11>d<EFBFBD>6\<13><00>
 <20><11>d7<>6<EFBFBD><17>3 no device\<13><><EFBFBD><EFBFBD><EFBFBD>><3E> <20><><EFBFBD>?<3F><>`
<EFBFBD>><3E> <20><><EFBFBD>?<3F><>><3E> <20><><EFBFBD>?<3F><><EFBFBD><EFBFBD><05><>l<EFBFBD>d`<60>d<EFBFBD> Ld<4C><18><02>
<07><02>l<>d<EFBFBD><00>d?DEVICE<43>+<2B>d<EFBFBD>6<EFBFBD>d\$e<><65><EFBFBD> S<16>&
Ld<4C>&<26>><3E> <20><><EFBFBD>?<3F><>$ `<60>><3E> <20><><EFBFBD>?<3F><>&<26><>lha<68>eBU
SOUT<EFBFBD>+<2B>d<EFBFBD>6"e\<13>qeBUSOPEN<45>+
<18>ze\<13><00>e
BUSCLOSE<53>+
<18>ze<7A>d<00>cC64TYPE<50>c<EFBFBD> S<16>
D$<24><16>& <20>b<EFBFBD><02>.<2E>><3E> l<><6C>?<3F>Hl<48>cl<63>b<EFBFBD><00>cDISPLA
Y<EFBFBD>><3E>bc<>cc5chc<68>c\<13>c<EFBFBD>><3E>lr<6C><72>JcB/BLK<4C>+
<EFBFBD><00>cBLK/DRV<52>+<2B><00><00>c(DRV.*<00>+d"
<14>\
<13>dDRIVE<56>+d$Z;\<13>(d>DRIVE<56>+d$<1E>
Z"<08>\<13>>dDRV?<3F>+Z"<08>dh\<13>ydDRVI
NIT<EFBFBD>+<2B>\<13><00>dI/O.*׈<00>dBUSO<03><>?<3F><><18>
<EFBFBD><07><02><14>K<EFBFBD>O<EFBFBD> <20><11>6\I<><49>I `I<><49>I<>``<60><00>b
P
RINTABLE?Vb<56> <20>b<EFBFBD>J<>l<1C>GbC64EMIT<49>b<EFBFBD> <20>
b<EFBFBD><02>.l<>b<EFBFBD><00>bC64CR<43>+<2B>a<EFBFBD>b\<13><00>bC64DEL<45>+

<EFBFBD><EFBFBD>b<EFBFBD>4
<18><>b\<13>cC64PAGE<47>+
<18><>b\<13>+cC64
ATjc<EFBFBD> S<16>&<26>$<18>><3E> <20><><EFBFBD>?<3F>lha<68>@cC64AT?<3F>c<EFBFBD>
8<EFBFBD><02><07>F<14><>8<>><3E> <20><><EFBFBD>?<3F><>(<28><><02>(h<><68><00><07>l<1C>
v<>ft<66><17>
_<EFBFBD>/<18><07>\+<00>^EDIT<49>+Ki<4B>3;<08>
xt^/_
<18>d?*y<>$Scr <20>5<EFBFBD>$Drv <20>5<EFBFBD>F1<16><18>
 <00>$not <20>$changed<65>Z1<16><00>9<EFBFBD>
1

<06><19> <00>$, saved
1<16><1B><00>$ , loading?<3F>
3"<08>3"<08>^\,<00>_L<>+<2B>3<EFBFBD>}_\,`R<>+<2B>3"}_
\,`+L<>+<2B>3"<08>`\,.`V<>+;/<2F>*<2A><08>Z
<EFBFBD>"\,a`VIEW<45>+e`<60><08>`<60><00>$
from
keyboard\<13>+<2B>t"<08>tJ<13>\,N]CURLIN<49>+
<1B>
b
j<>b<EFBFBD>`
<1B>b
k<>b
<1D>b<EFBFBD>`<60><08>\-<00>` EDIDE
CODE<EFBFBD>+
<18>@<1C>
>t<>?d<13>a@<1C><>t<><17>`<60>Q!
"[<19><00>Q!"<08><><EFBFBD><EFBFBD><00><15>%Jt<><08>#J<><4A><EFBFBD><EFBFBD>
Q!;d<13>bt<62>
<12>]<5D><13>]<5D>\-D` EDIEXPECT<43>
+t^Q!;<08><17>Q!"<19>
<00>?I?<3F><1B><><EFBFBD><15>4\-:<3A>
EDIBOARD<52>?La[aP`f<>\<13>+}<12>#<17>"<08><15><16>
<15><08><1B><><EFBFBD>;\
[`RELOCATE<54>+<2B><08><11><15><15>%7
<EFBFBD>a;[<19>3buffers?<3F><08> /<01><19>3stack?<3F>
0"
@<40><19>3rstack?@:$><3E><15><15>

<EFBFBD>;<08>
<EFBFBD><EFBFBD>}#"<08>#;
<06><16>
<14>;a\
<00><>
BYTE
S.MORE<52>+}<12><11><16>B"}<12><16><>\
 4<>BUFFER
S<EFBFBD>+%7$a;B"<08><16><08>a<>\<13>+Uj/<18>6<EFBFBD>2;<08>d
2<>d<EFBFBD><17>e\<13>y<>
SAVESYSTEM<EFBFBD>+<2B>32<><17>3;<08>32
<EFBFBD>3<EFBFBD>`x<>2<>U]<5D>2<>e>
F<17>e<EFBFBD><17>#<23>e<EFBFBD>$,p,
w<EFBFBD> <20>e<EFBFBD>d
Fze<7A>
<17><16>/<01><1F><08>e<EFBFBD>eX <20><08>
{—d
F<17>e<EFBFBD>d;yf<79>3
save-error\<00><> BA
MALLOCATE<EFBFBD>+Cg<43><13>
<12>&g<><18><00> Z<17>
<18><>
w <20>
<12><17>g<EFBFBD><08>g

ze<7A>$i0<69> <20>e<EFBFBD>d\*<2A>
FORMATDISK<EFBFBD>+

ze<7A>$n0:<3A> <20>e<EFBFBD><17>#<23>e<EFBFBD>dyf
<EFBFBD>8<>\E<>+<2B><08><11><15><15>%7<>a;[<19>3buffers?<3F>
<08> /<01><19>3stack?<3F>0"
@<40><19>3rstac
k?@:$><3E><15><15>

<EFBFBD>;<08><08><>}#"<08>#;
<06><16>

<14>;a\
<00><>
BYTES.MORE<52>+}<12><11><16>B"
}<12><16><>\
 <09>'l<><<3C>(E,<2C>)<29>-<2D> <0B>,<2C>$<24>,<2C>$lG<<3C>,<2C>
$<24>-<2D>%l<><l<><12>+%"<08><08><00>PZ<17><16><<3C><12><1B><>\
<EFBFBD>+}#<17>"}<12><16>(<00>"<08>X <20><18><00>"#"<08>
;<08><17>"<08>N<><4E>\<13>+%<12><R,<2C><> <00>%"z<15>
<EFBFBD>
/<18>-%;/<18><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><15>,"z<15><18>
/<18>-<2D>,;
\<13><00>;
CUSTOM-REMOVEI0<49><11>+<2B><08><'=M<{=<3D>(<28>
<EFBFBD>i(L;<08>~';\<13><00>=
;""<08>;%7#;[\<13>
<EFBFBD>; ALL-BUFFERS<52>+#;"7;#;"<08><19><1B><>\<13>+J

1\<13>+<2B>*<2A>#<19><08>(\<13>+<2B>(%"P<12>"<08><08>^
<00>PZ<17>P<12>"P<12><08><17><19>a<17>*1<16>
.<13>(<28>Z<>a|;<3B><00>a<17>;<3B> aS*a<17>
<19><1B><>9<13><1B><>\<13><<3C><05><07>$<00><10><><18><04><06>*H<><04><00>+
<EFBFBD><01>$<24>,<2C>$<24>-,<2C>5<EFBFBD>,E*<2A>-<2D>+<2B> <0B>,E&<26>- <16>h:J<><4A><EFBFBD>
<EFBFBD><00><12><17><><00>h:<3A><17><17>J<><4A><EFBFBD><EFBFBD>9<EFBFBD>\<13>8:COPY
<EFBFBD>+<2B><17>:\<13>T:CONVEY<45>+<2B>#F<17><15><16><<19><16>3n
ein<EFBFBD>:\<13><00>:LIMIT<49>+<00><>
;FIRST.*<2A>{<7B>; A
LLOTBUFFER<EFBFBD>+#;"B"<08>%7a<19>%7<>#;[#;"
<08>{87"<08>;7;\<13>);
FREEBUFFER<EFBFBD>+#;"
;%7<><19>.#;"!87<>"#;"<08><16>"<08><1B><>#
\\ altes clv11jan88
Code xpClr ( curLn--)
1 # lda setup jsr
N 6 + N 2dup lda sta 1+ lda 1+ sta


<00>(4112)<00>la<>l9al<18> J6<00><12><18>Y<EFBFBD>
Vc?z<>3<01>

.*ultraFORTH-83 3.80-C16+ <20><><EFBFBD><EFBFBD><0E><1D><><EFBFBD>
<EFBFBD><18><0E><02><0E><03><><EFBFBD><EFBFBD><0F><> END-TRACE<43><11><><EFBFBD><13><0E>
<08>Ʌ<15><02>l wRECOVER.*ȅȅ<1D>PFFl
<EFBFBD>+<00>NOOP <00>ORIGIN<49>+<00>S0<,<00>
R0<,
<00>DP<, GOFFSET<,QBASE<
,<00>OUTPUT<,<00> INPUT<,<00> ERROR
HANDLER<,VOC-LINK<,<00>UDP<,<2C>*
SP@=<12><07>$<24><14>%<25>$<24>8<><02><07>F<14><01><07><00>l5
SP!<21><12><07><><07><14><07>l _UP@<12>lg<00><12>
UP!<21><12><04><07><01><><07><00><00><01><18><02><07><02>l <00>RP
@<40><12>lg<00><12>RP!D<12>l<><00><12>>RR<12>8<><02><02>
F<03><07><02><07>l<>K<12>R><3E><12>8<><02><07>EECTOR<4F>+<2B>
<EFBFBD>_t9t&gct<63>g<EFBFBD>_t9t<39>gct<63>g\<00>t COPY2DISK<53>
+<2B> <20>/<01>;[<19>3no room?<3F>$Source=0, D
est=1<>?<3F>?<3F>2t%<25>/<18><02><>!%<1B>5%9t<39>5<EFBFBD>5?
<18><>b<EFBFBD>%<1B>t<EFBFBD><17><><EFBFBD><EFBFBD><EFBFBD>\<00>t 2DISK1551<35>+@:


<0F>e<EFBFBD>$%9<> <20>e<EFBFBD>dyf<79>\?<3F>r"<08><08>P<12><08><17>
<08><12><15>:<3A><00><>%<1B>9<EFBFBD>J9J<39><4A><EFBFBD><EFBFBD>9\<00>rCOPY
\ .page altes clv11jan88
Code .page3 ( adr len col--ad+ len- col)
\ setup of N... y
3 # lda setup jsr N 2+ # ldy neg jsr
\ setup of actLn
N 6+ ' scrAdr >body 2dup
lda sta
1+ lda 1+ sta
tsx N 9 + stx \ Exit SP
0 # ldx 0 # ldy
N 4 + wdec N 2+ wdec pCol jsr
[[ pGet jsr 0=
?[ pClr jsr pCol jsr
][ pPut jsr ]? ]] end-code
: .page5 page .page3 ;
D<13> <20>J<><4A><EFBFBD><EFBFBD><15>(l<>(<28> P<12>$<1E><15>#?\<13>o
*byadcandaslbccbcsbeqbitbmibnebplbrkbvcb
vsclccldcliclvcmpcpxcpydecdexdeyeorincinx
inyjmpjsrldaldxldylsrnoporaphaphpplaplpro
lrorrtirtssbcsecsedseistastxstytaxtaytsxt
xatxstya<EFBFBD>o a z# ((zz (<28>o
,x ,y A<00> <20>5<> <20>qaa
22A <00><00>qaa<10>"22A
<00>.<00>.*#0,.*<2A>aq2<71><32><EFBFBD><EFBFBD><EFBFBD>+<1F><08>1
<EFBFBD><00><18>d<1F>
1|n<>J<13>
1Rn<52>
J\.*<2A><>.*<2A><><EFBFBD>+<2B><08>1<16><00>
<18><><19><00>F<17>
n<EFBFBD>Pm<50><08>P1"o;o;\<13>+A)<29>!
<EFBFBD><08><17><><EFBFBD>P<12>X##X  <09><13><17><><EFBFBD><EFBFBD><EFBFBD><12>d?<3F>l33\
_mTOOLSv-<2D>p<EFBFBD>pej<65>+A)<29><17><>?4X#_'<27> !J<>
<EFBFBD><EFBFBD><EFBFBD>(l<>(<28><15> <20>J\Cm a% 2A
<EFBFBD><00>2aa(' (22(A<00>(-<00>
(*a!$ !22!A <00>!<00>!+a)
& )R2)A
<00>)/<00>)a2a162221A
<00>2<EFBFBD>187q qa a432 2
zl<7A>$z
<14><><EFBFBD><EFBFBD> %J
?J<><4A><EFBFBD>\<13>+<2B><15><19>&lF<17>55l<35>4
\<13>+<2B><15><19>&l<><17>55l\<13>+<2B><08>/<18><>1<16>
1
F<17><17><>a?
<05>4%
$
<14><><EFBFBD><EFBFBD>
%<1B>lJ<6C><4A><EFBFBD>F
<EFBFBD>4%
$
<14><><EFBFBD><EFBFBD>
%<1B>lJ<6C><4A><EFBFBD>J<EFBFBD><4A><EFBFBD><15>\<00>l
DUMP<EFBFBD>+<2B>2=%Ml<4D><6C><EFBFBD><EFBFBD>%<1B>l<EFBFBD>><3E><00>
<14><><EFBFBD><EFBFBD>?
\/mZ<>+z?<3F>Pdl
<14>
<07>/<18><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> %
et to moon with no return@:$><3E><08><15><11><15>

<EFBFBD>;<08><11><15><08>#;
<06><16>
<14>;a\
k
BYTES.MORE<52>+}<12><11><16>B"}<12>#k\
UkBUF
FERS<EFBFBD>+%7$a;B"<08><16><08><16>k\<00>kRVSON<4F>+\
lRVSOFF<46>+\,lUNLINK<4E>+\<13>+<2B>|455
<EFBFBD>4#?<3F>4\<13>+<2B><><EFBFBD><EFBFBD> %JhlJ<6C><4A><EFBFBD>\;lDLN<4C>+?<3F>
Z<17>5<EFBFBD>4<EFBFBD>
~jSP<53>+<00><00>jIP<49>+<00><00>jN<>+$
<00><00>jPUTA<54>+<00><00>jW<>+<00><00>jSETUP<55>+S<16><00>
jNEXT<58>+ <00>NjXYNEXT<58>+ha<68><00>jPOPTWO<57>+<2B>
<EFBFBD><00>jPOP<4F>+<2B>3j.ST<53>+D!"<08>5\
kRELOCA
TE<EFBFBD>+<2B><15>%7<>a;<3B><11>[<19>3kills all buffer
s<EFBFBD><08> /<01><15><11><19>3cuts the dictionary<72>
0"
@<40><19>3a tick
<EFBFBD><13> <04><13><>?<3F>x`<60>+iC
64INIT<EFBFBD>i `ilha<01><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><00>iC64F
KEYSMi<EFBFBD>J0 <09><>i<EFBFBD>]lOilha{<00>ic(64<36>+$<24> <20><18>3
C) missing"/C)<29><19><1B><>\{<00>ibC)<29>+\{ jc
(16<31>+\{jFORTH-83<38>+\<13>"j ASSEMBLERv-<2D>
j<EFBFBD>j<EFBFBD>-<2D>PUSHA<48>+<1C>ijPUSH0A<30>+<1C>wjPU
SH<EFBFBD>+<1C><00>jRP<52>+<00><00>jUP<55>+<00> INDEX<45>+#
<EFBFBD><08><>!?%F<17>5%<1B>9#
%#?<3F>><3E><00>J<><4A><EFBFBD>\<13>
<EFBFBD>hFINDEX<45>+Cg<43><00>d#<17><08><>1?%F<17>5<EFBFBD> <20>
%33<1E>f&gP#
%#?<3F><12>><16><00>J<><4A><EFBFBD><EFBFBD>g\<13>
<EFBFBD>hINK-POT.*<2A><><00><><00><><00>i INIT-SYSTEM;
i<EFBFBD><EFBFBD><EFBFBD>lha<EFBFBD>><3E><>vi<76>xi<78>ih<69>\h<><68>h<>J<EFBFBD>l<><6C><EFBFBD>?<3F>@؍>
<EFBFBD><EFBFBD>i<EFBFBD><EFBFBD><EFBFBD><EFBFBD>a<EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>i<><19><>i<><15><>i<>@<05><><EFBFBD>@
!F<14><02><07><02><07><18><02><02><02>l <00>R@<13>8<>
<EFBFBD><07>F<14><02><07>l<13>RDROP1EXITf<13><02>
<0E><02>l=UNNEST^<13><02><0E><02>ls?EXI
T<EFBFBD><13><14><18><02><07><02>(P<>l <00>EXECUTE<54><13>
<EFBFBD><1C><07><1D><18><02><07><02>l<00>PERFORM<52>+"<08>\
<00>C@L<13><07>$<24><07>%<25><00><07>$lEC!<21><13><07>$<24><07>
%H<><07>$<24><>!H<>$ <20>"<22>$lQ"<22>"<22>*<2A><03><07>$<00><10><>
<EFBFBD><EFBFBD>!<21>&<26>&<26><>!<21>'<27>'8<>$<24><>!<21>$<24>%<25><>!<21>%<25>
<EFBFBD><07><>!<21><07><>!
l<EFBFBD>#<23><04>$%<25>=<3D>&QP<11>&P<02>'<27>$PF%F$l$#<23>&<26>(<28>'<27>
)<29>&Q<14>&P<02>'<27>$PF%F$(<28><14>*<2A>$%P<>8<EFBFBD><02>&<26><07><>!
H<EFBFBD>'<27><07><>!<18><04><07><07><02><14> <0C><04><07>$H<><04><01><07>%<25><>*<2A>$
<EFBFBD>(HF*<10><> <20>$<24>l b<00>"SOURCE<43>+D!"<08><08><00>9
<EFBFBD>cd<13>!o!"\b<00>#WOR!IB<49>+\!"\;W!QUER
Y<EFBFBD>+<2B>!
pW?Q!"o!;<08>!<21>D!<21>\<<00>!SCAN<41>+P
<EFBFBD><08><1B><00>J<13><16><00><17>#<17><08><1B><>9\< "SK
IP<EFBFBD>+P<12><08><1B><00>J<13><19><00><17>#<17><08><1B><>9\<
;"/STRING<4E>+<2B><03><15><08>z<15>\Ia<49>I{<7B> I
)<29>I[<5B> <09>`=<00>"CAPITAL<41>"<22> <20>"<22>l ><00>"
CAP
ITALIZED"<22><07>$<24><07>%<25>$<24>&<26>D&P<05>l !\:Q P
AD<EFBFBD>+X
b<>\:<00> ALLOT<4F>+L[\:<00> ,<2C>+X
;F<17> \:!C,<2C>+X <20><13><17> \:!<21>COMPILE<4C>+
<EFBFBD><12>aP" !\;,!#TIB.*
;h!>TIB.*`!s
avesystem tvdold
;u
!>IN.*
;<00>!BLK.*;<00>!SPAN.*
;J!T
!<02><>)<29>'lL7<00>CMOVE><3E><1F> S<18>%<25>'<27>'<18>%<25>)<29>
)<29>%<25>$<18><05><>(<28>&<26>P<EFBFBD>F'F)F%P<><50>l 7<00>MOVE<56>+P
<12><19><00><12>d<13>D\8% PLACE<43>+<2B>P<15>
#<17>, <20>\8f COUNT<4E> <20><07>$<18><01><07><07>%<25><00><07>
8<EFBFBD><02><07>FlT8<00> ERASE<53>+<2B><17> \9<00> FILL<4C>
<EFBFBD> S<16><>$<24>'<27>
<EFBFBD>(HP<48><50>)JP<4A><50>&<26><06>(HJP<4A><50>l :<00>
HERE<52>+L"!+<2B>P=<3D><><08><18><00><15><15><08><13><18>
<00><16><08> <00><13><15><08>9\5X2/<1F>
<EFBFBD>ʑ
<EFBFBD><07>l6/MOD<4F>+P<18><><12>\6//<2F>+6<1F>\
6dMOD<4F>+6<1F>\6r*/MOD<4F>+P<12><1D><12>\6<00>
*/<2F>+<2B><1F>\6<00>U/MOD<4F>+<2B><17><08>\6<00>UD/M
OD<EFBFBD>+P<12><13><1E><12>P<12><1E>\7<00>CMOVEF<1F> S
<EFBFBD>D$P F%<05>l <00>(<28>&HP!%<25>l 3<00>M*<2A>+<2B><08>
<EFBFBD>P<12><00><16><08><08><18>
<00><16><12>P<12><1D><12><00>\3
<00>*<2A>+<2B><1D>\3 2*5<1E>
<EFBFBD><07>*<2A>l <00>+<2B><17>3
division overflow\4.UM/MOD<4F><1E><07>)<29><07>(
<EFBFBD><18><02><07><02><14><07>%<25><07>$H<><07>'H<><07>&<26><18>*8<>%<25>)<29><>
$<24>(<28>&*<2A><04>$<24>%&'&&&%&$JPߠ<01>$<24>%<25> <20>b\<13>&
<EFBFBD>H<>%<25>H<>$<24><07><01>'l5^M/MOD<4F>!<05><1B><>\0<00>
FREPEAT<41>+F<17>6!<21>Q\0<00>EUNTIL<49>+F<17>6!<21>
Q\1BDO<44>+6!<21><><EFBFBD>P\1C?DO<44>+6!<21><><EFBFBD>P
\11DLOOP<4F>+P<17>6!J<>6!<21><><EFBFBD>\1eE+LOOP<4F>
+P<17>6!<21><>6!<21><><EFBFBD>\1`<1D>LEAVE<56>+<2B><><EFBFBD><12><17>"<08>
P\2<00>UM*<2A><1D><07>$<24><07>%H<>&<26>'<27>'&&&%&$<24><18>
<07>'<27>'H<><07><>&<26>&<26><06>%P<02>$JP|<7C>'<27>H<>&<26><07><01>$<24><07>
!E<>+X <20> !\.<00>?PAIRS<52>+<2B><16>3 unstructur
ed\Ih<><68>lh<><00><>8<><02><07>F<14><><01>Ȣl/
<00>CASE?b<1C> S<16>$AP <09>%QPl<><18>l08BI
F<EFBFBD>+6!<21><1B><1B>\0\DTHEN<45>+=<3D><><17><1B>\0<00>DEL
SE<EFBFBD>+<2B><17>6!<21><1B><1B><08><1B>\0<00>EBEGIN<49>+UF\0
<00>EWHILE<4C>+F<17>F6!<21><1B>/<18><>H\<13>+<2B><1B>/<18><>
<EFBFBD><19>
<00><08>!<07><0E>l +B<><42>(+LOOP<4F><50><18><07><02><02>
<EFBFBD><02><02>q<14><18><02><07><02>(Dl ,<00><><EFBFBD>I'<1B><00>8<><02>
<07>F<18>HH<48><02><07><>HH<48><02><01>l ,!<1B>Js<1B>PR-
m<1B>BRANCH<43><18><0E><0E>$<24><0F><0E><0F>$<24>l -y<1B>?BRA
NCH<EFBFBD><1B><14><18><02><07><02>(<28>Kld.<00>>MARK<52>+X
<EFBFBD> !\.<00>>RESOLVE<56>+X <20><08><16>;\.<00><MA
RK<EFBFBD>+X \.M<RESOLV!UMAX<41>+<2B><19>\)<00>
UMIN<49>+<2B>[<19>\)<00>EXTEND<4E>+<2B><08>\)<0F>DA
BS<EFBFBD>+<18><><00>\)"<22>ABS<42>+<18><><00>\<13>+9<13>a
<17>PP<12>PP\*7<><37>(DO<44>+<2B><08>i<>\*<00><><EFBFBD>(
?DO<44>+<2B><08><16><08>i<><69><12>"<08>P<12>\*<00><>BOUND
S<EFBFBD>+<2B><08><15>\*<00><><EFBFBD>ENDLOOP<4F><50><EFBFBD>l+<00><><EFBFBD>(LOOPL
<EFBFBD><18><01><02><02> <0B><02><00><02>l <00><05><02><0F><>! 0<><30>E$<24>
<EFBFBD>%l<>'QU<<19><07>$<24><07>%<25><18><02><07><02><14>E$<24><07>%
<EFBFBD>l<>l<>(<00>><3E>+<2B>U\()0><3E>+<2B><16>\(7
0<><3E>+<2B><18>\(fU><3E>+<2B>\(v=<3D>+<2B><16>\
(<00>D0=<3D>+<16>\(<00>D=<3D>+<2B><16><16>\(<00>D<<3C>
+<15><15><16> -<19><15><15><00>\<13>+9<13><00><08>\
)<00>MIN<49>+<2B>-<19>\)EMAX<41>+<2B>U<18>\)W
!
$<00>OFF<46>+<2B><17>;\%<00><17>CLIT <18>8<><02><07>F
<14><0E><07><><07>P<02>l %<18>LIT1<18>8<><02><07>F<14><0E>
<07><0E><07><18><02><0E><02>l %)GLITERAL<41>+<2B>/<00>1
<EFBFBD>
6!/ !d6!
!\&t0<<3C><18><03><>$<24><>l
&~0=<3D><18><07><>P<EFBFBD>&<00>UWITHIN<49><18> S<16><01>
E$<24><07>%<25>
<EFBFBD>E&<26><07>'<27><>l<EFBFBD>'<00><W<18><07>$<24><07>%<25><18>
<02><07><02><14>%q! D+<2B><16> SH<><18>&<26>H<><07>'<27><07><07>
$<24><07><01><07>%<25>l #<00>1+%<17><18><07>l<00><07><07><00>
l #2+c<17>P<>#<3+p<17>PSv<17>PM\<17>PG
#i1-<2D>8<><07><01>l<00><07><07><00>l #<00>2-<2D><18>
<EFBFBD>$<00>TRUE<55>+<2B><>$<00>FALSE<53>+$<00>"-1<>$<00>
!0<>$<00>1<>+$<00>2<>+$B3<>+$L4<>
+$VON<4F>+<2B><17>;\! <0C>+<2B>H<><07><07><07><><07>
<EFBFBD><07>l<> <00>ORH<><07><07><><07><07>l<> A
ND3H<>1<07><07><><07>1<07>l<> +XORpH<>q<07><07>
<EFBFBD><07>q<07>l<>!h-<2D>H<>8<><07>H<><07><01><07><03>l<>
!<00>NOT<4F><18><><07><07><><07>l !<00>NEGATE<54>8<><38>"
<00>DNEGATE<54>H8<48><38><07>H<><48><07><07><><07><07><01><><07>l
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><07>$<00><10><><18><07><07><02><14><00>`"<00>!
<08>8<><02><07>
F<14><04><07>H<><07><01>l <00>ROT<15><03><07>%<25><01><07>
<EFBFBD><07><05><07>$<24>%<25><07><01>$<24>H<><07>%<25><07><07><04><07><07>%<25><07>l
-ROT<4F>+\sNIP<49>+<2B><08>\<00>UN
DER<EFBFBD>+<2B><08>\<00>PICK<43>+#3;<12>"\<00>RO
LL<EFBFBD>+<2B>P<12>;<12>a<17>#3<1E><1F>\<00>2SWAP<41>+
P<15>\<00>2DROP<4F>V2DUP<55>+<2B><08>\
!<0E><04><07><02>l <00>CTOGGLE<4C>+<2B>Jn<16><08>\<13>
@$<08><07>$<24><07>%<25>$<24><07>$l<00>!=<08><07>$<24><07>%H<>
<07>$H<><07><01>$l<><13>7+!]<08><07>$<24><07>%H<><18>$<24>$H<>
<EFBFBD><01>$lovDROP<4F><00>SWAP<41><08><07><><03><07>$<24><>
<EFBFBD>$<24><01>H<><00><07>$<24><07><07><>$l<00>DUP<55><08>8<><02><07>
F<14><03><07><01>H<><07>l<00>?DUP<55><08>Pl l<>
VOVER<45>"D<>+<2B>#<23>"\bQ#PARSE<53>+P<12>#<23>!"
<EFBFBD>"<22><08><08>"P<12><08><16><08>l<19><16>![\b<00>#NAME<4D>+
?4X#B"d\c$STATE.*c)$eASCII<49>+?4X##
J1$"<08>^\c7$,"<22>+
"<22>#X <20>#<17> n \
cw$<24>"LIT<49>+<2B><12><12><15> <20>PP\c<00>$<24>("<22>+<2B>$\c
<00>$A"<22>+6!<21>$\$\d<00>$<24>(."<22>+<2B>$<24> #?\d<00>$B."<22>
+6!<21>$\$\d<00>$a(<28>+
)"4<>>D!"<08><08><00>3;<08>!
"<08>3;33\_<00>3<EFBFBD>(ABORT"<22>+<2B>$<24><08>P,(<28><12>
d<13>\<13>+<2B>$<24><08><12>d<13>\_V3FABORT"<22>+6
!<21>3\$\_4FERROR"<22>+6!<21>3\$\`%4BL<42>+ `
:4 -TRAILINGs4<73> S<16><07>&<18><07>%<25>'<27>$<18><13><>&I <20>
HP<02>%<25>h<EFBFBD>%l<1C>P<EFBFBD>F'F%<10><>l<1C>e4SPACE<43>+?4
?
\<13><00>4SPACES<45>+<2B><17><><00>4J<34><4A><EFBFBD>\<13>""<08>a<17>
\]<00>2DEPTH<54>+;<12>"<08><08>\<13>+1$"<08><00>$
compilingd<13>$ ok\^G2(QUIT<49>+<2B>1?<3F>!<21>/
<EFBFBD>2<EFBFBD><1B><>\^3'QUITI0
3^3QUIT<49>+B"B0
&3\^,3 STANDARDI/O<>+/*<10>ZD\^c3'A
BORTI0<EFBFBD>^<00>3ABORT<52>+,(<28><11>3q333\_<00>3SCR.
*_<00>3R#.*_<00>3(ERROR<4F>+q3<71>4X +<2B> #?<3F>
"<14>EH<><04><14><01>l <20><11><17>3 stack empty\\
<00>1.STATUSI0
k.*<2A><12>;\\<00>1<EFBFBD>PUSH<53>+<2B><12><08>
P"P<12>1PP\\<00>1LOAD<41>+<2B><08><18>D!2D!;<08>
!2<>!<21><17>1<EFBFBD>/\]2+LOAD<41>+D!"<08>#2\]c2T
HRU<EFBFBD>+#<17><08><>
%#2J<32><4A><EFBFBD>\]y2+THRU<52>+#<17><08><>
%k2J<32><4A><EFBFBD>\]<00>2c--><3E>+<2B>D![<08>!<21><17>1\]<00>2
RDEPTH<EFBFBD>+B"<02>+A)/<18>0 !<21>(<28><02>hH<68><1C>ȅ<1C>l
z<00>0(IS<49>+<2B><12>aP";\<13>+"/I/"<08><08><19>
/<18>/"<08><16><16>3 not deferred\z<00>0bIS<49>+;/<2F>
<08>0 +1$"<08>
6!<21>0 !d;\.*<00>+O2
 -<19>3 t
ight stacke1J<13><18><00>e1<65><13><17>3dictionary
full<6C>$ still full \["1?STACK<43>1<EFBFBD> 8<><07>
H<EFBFBD><14>P <09> <20>h1\<13>g1<67>"/NOTFOUNDI0<49>/x<00>/
NO.EXTENSIONS<4E>+<2B>3Haeh?\xO/ INTERPRET<45>+
<EFBFBD>/\<00>+<2B>1$<24>.<2E><08><00>1<16><00><13>/<2F>3 compile
only<6C>/<2F>p'<27><18>I/<2F>/\<13>+<2B>1$<24>.<2E><08><<19>
<00><13>/ !<21>/<2F>/<2F>p'<27><08><<19><00>^^<18>I/<2F>
/\y<00>/a[<5B>+/0<>0<EFBFBD>/1$<24>\y{0]<5D>+/;0<>0<EFBFBD>/
1$<24>\<13>+<2B><17>3Crash\z<00>0DEFER"$<24><07>8<><02>
<07>F<14>&H
0<05>i<EFBFBD><69>H<EFBFBD><48><03><>$<24><><01>l v1.FI
ND<EFBFBD>+D,<2C>"<08><08>"<08><19><00><17>"9.<2E><00><15>.d<13>
<08>,a[<19>
<00><08><17><1B><><EFBFBD><15>\v<00>.'<27>+$<24>.<2E><18>3
Haeh?\v7/I[COMPILE]<5D>+;/ !\vo/C[']<5D>+;
/^\v<00>/ NULLSTRING?<3F>+<2B>J<13><18><08><00>\H
<EFBFBD><1C><02>H<><1C><00><0F>l w<00>/
>INTERPRET<45>/0x<00>
""<08>,;\<13>+"<08><17>*+\s<00>-ORDER<45>+R,<2C><>%
K-/<18><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>F<17>4<EFBFBD>,K-\sY-WORDS<44>+D,""<08>
<EFBFBD>><3E>1<16><00>><3E>a+<2B>4<EFBFBD><1B><><EFBFBD>\t.(FIND;.<2E>
<03><07>$<00><10><>&)<1F>(<28><00>$<24>H<EFBFBD>$<24>%<25>$$P<07><01>l<>H<>$
)E(P<><18><02>$<24>)<29><00>%<25>*<2A>(<28>&Q)PK<50>P<EFBFBD><50><03>*<2A><07><>)<29>
<EFBFBD><EFBFBD>l<><18>.<2E><07>$<24><07>%<25>$<24>&)8<>$<24>$<24><02>%<25>&) P <09>$<24>
<EFBFBD>%lB.<2E>$<24><07>"+<2B>,<2C>"<08>a\<13>+<2B>,aD,\q<00>,A
LSO<EFBFBD>+<2B>,"

-<19>3Vocabulary stack fullD,"
F<17>,[D,;\q<00>,TOSS<53>+/<18><><EFBFBD>,[\r<00>-
VO
CABULARY<EFBFBD>+A)<29> !<21> !X %" !%;<08>(l<>(D,;
\r/-FORTHv-f<>f<EFBFBD>r<00>-ONLY<4C>-<15><15><>-<2D>(l<>
(<28><17>,;D,;<08>,\r<00>- ONLYFORTH<54>+<2B>-<2D>-<2D>,<2C>-\
s<00>- DEFINITIONS<4E>+D,"F<14><02><1C>H<><1C><01>l
o<00>+VARIABLE<4C>+A)F<17> \p|+UALLOT<4F>+<2B>0"
<08>
<18>[<19>3
Userarea full0"<08>0[\p<00>+
USER<EFBFBD>+A)F<17>+!<21>(<28>8<><02><07>F<14><02><18><04><07>H<EFBFBD><05>
<01>l p),ALIAS<41>+A)~'"<08>J
 1<16> /<18><>
<EFBFBD> <20>
 Z'S*;\q],VP.*<00>-<2D>-<2D>-<2D>-
q<00>,CURRENT.*<2A>-q<00>,CONTEXT<58>"d<13><1B><><EFBFBD>\
<13>+<2B>
1<16>\n<00>*NAME><3E>+<2B>S*<2A>J
 1<16>
"\n<00>*>BODY<44>+a\n+.NAME<4D>+<2B><08><00>
<08>(<28><00>$|<7C>
1#?<3F><00>$???<3F>4\o+CR
EATE:<3A>+A)<29>'<27>,"D,;<08>0<EFBFBD>\oh+:<3A>+r+<2B>(<28>8<>
<02><02>F<03><0E><02><0F><02><18><02><0E><><1D>l o<00>+A;<3B>+<2B><17>
6!\0<7F>'\o<00>+CONSTANT<4E>+A) !<21>(<28>8<><02><07>
" <09>,"" !$J<13><08>
 <20><18><16>3 invalid nameX
~';#<17> <20>)^)"<08><00>^)[<08>) !<21>(
 Z')L
;<08>&)<29><08>'<27> !<21>(l<>(3*<2A><07>(<28><07>)<29><18><02><07>
<EFBFBD><14><07>&<26><07>'&Pl<><18>&<26><07>%<25>&<26><07>$%Pl <00>$<18>
<EFBFBD>$<24><02>%<25>$h8)<1F>$<24>$<24><02>%<25>) <20>
<EFBFBD>$h<>$<24>$ȅ%<25>$E(P<>
<EFBFBD>%E)P<>lcn<00>)>NAME<4D>+%"<08><08><00>Z<17><16>1*
<EFBFBD><08>z<15>"
<EFBFBD><02><0E><18><1C><03><0E><><1C><0F><18>h<><68>l
<1C>+<2B>~'"<08>*;\j<00>(EDOES><3E>+6!<21>(
l!6!<21>(\
<13>+<2B>
<18>1
<18><><19>\<13>+X
<18>1
<18><><19><00><08>
#X <20><08>#<17><1F>~'[<08><17> \k<00>(?HEAD.*kv
)|<7C>+^)"<08><13>^);\l<00>)WARNING.*<00>+<2B>)"
<EFBFBD>~'"<08>,"9.<2E><15><00>4~'"+<2B>$exists <20>>\l
<00>)CREATE<54>+X D!" !" RSIVE<56>+<2B>'\<13>+<2B>'<27>
<EFBFBD>J<16><08><13>\hH' IMMEDIATE<54>+
@Z'\h<00>'
RESTRICT<43>+
<18>Z'\i (
CLEARSTACK.(<28><14><04>
H<EFBFBD><04><14>l i(HALLOT<4F>+<2B>"<08><08><16>;a<17>
<EFBFBD><16><08>;F<17><15><08>, ,(<28>;\i@(HEAP<41>+<2B>"
z\i<00>(HEAP?<3F>+<2B>(}<12>\<13>+<2B>X <20><08><16>i(<28>(<28>
D<1F>(<28><08>~'[<08>'\<13>8<><02><02>F<03>" 2<><08> <20>&;
&<26><17>P<12><17><15>%&<26>%
-@<1C>9<13>P<12>%&<26>%
o&<26> <00>;<08>%&<26>%<25>%<25>&<26>%<25>&<26>%)&<26>%<25>%<25><18><1B><>
&<26>&<26>&&<26><17>%)&<26>%<25>T<>\gB&'NUMBER?I0L&g
e'NUMBER<45>+p'<27><08><18>3?<3F><18><18>\hv'LAST
.*<00>+~'"<08>\h<00>'HIDE<44>+<2B>'<27> <00>"<08>,";
\h<00>'REVEAL<41>+<2B>'<27>
<00><17>,";\h<00>'IRECU
"
VERT<EFBFBD>+#<17> <20>%<25><00>%<25><1B><><EFBFBD>\<13>+<2B>&"<08>\<13>+<2B>
<20><17>&[\<13>+<2B><17> \fM%DPL.*<2A><><EFBFBD>+<2B> 9<13><15>
9<13>\<13>+<2B> 9<13><08><12><00><15>&"#<17><08><13><08>
\<13>+
&@<1C>

<EFBFBD>d
$@<1C>
<10>d
H@
<1C>
<10>d
%@<1C>F<17>d<13>\<13>+
,<2C><08><19>

.<2E>\<13>+&"<08><17><19><13>&[\.*g
&NU
MBER?<3F>+<2B>"<0E>#<23>\dL$b.(<28>+
)<29>##?\d<00>$a
\<5C>+<2B>!"6h#6$<1E>!;\d<00>$b\\<5C>+<2B>c<EFBFBD>!;\d
%\NEEDS<44>+$<24>.<2E><15><00>$\d%HEX<45>+
<10>
;\d7%DECIMAL<41>+

<EFBFBD>;\ej%DIGIT?<3F>+
0<><16>
 [<19>
<18><><16>
 [<19><00>"<08>[<19>
<EFBFBD><13><08>\e<00>%
ACCUMULATE<EFBFBD>+<2B>P<12><08>"<08><1D>
<EFBFBD>"<08><1D><16>\e<00>%CON#+<2B> <20>\<13><00>4HOLD<4C>+<2B>
<17>4[<08>4"<08>\<13><00>4<#<23>+<2B>4<EFBFBD>4;\<13>W4#><3E>+<2B>
<EFBFBD>4"<08>4<EFBFBD><08>\<13><00>4SIGN<47>+<2B><18>
-E4\<13><00>4
#<23>+<2B>"<08>
 <09>U<18>
<18><>
0<>E4\<13>5
#S<>+5<><15><19><1B><>\<13>@5D.R<>+z<15>)<29>|4e55<>
4<15><08><19><08><16>4#?\<13>u5.R<>+<2B><18>[5\<13>5
U.R<>+<2B><17>[5\<13><00>5D.<2E>+<2B>[5<>4\#FF<46>d<EFBFBD>><3E> L
<EFBFBD><EFBFBD>?<3F><><01> <20><11>d<EFBFBD>6\<13><00> <20><11>d7<>6<EFBFBD><17>3 no dev
ice\<13><><EFBFBD><EFBFBD><EFBFBD>><3E> <20><><EFBFBD>?<3F><>`<60>><3E> <20><><EFBFBD>?<3F><>><3E> <20><><EFBFBD>?<3F><><EFBFBD><EFBFBD>
<05><>l<EFBFBD>d`<60>d<EFBFBD> Ld<4C><18><02><07><02>l<>d<EFBFBD><00>d?DEVICE<43>
+<2B>d<EFBFBD>6<EFBFBD>d\$e<><65><EFBFBD> S<16>& Ld<4C>&<26>><3E> <20><><EFBFBD>?<3F><>$ `<60>><3E>
<20><><EFBFBD>?<3F><>&<26><>lha<68>eBUSOUT<55>+<2B>d<EFBFBD>6"e\<13>qeBU
SOPEN<EFBFBD>+
<18>ze\<13><00>eBUSCLOSE<53>+
<18>ze<7A>d
#<00>cC64TYPE<50>c<EFBFBD> S<16>D$<24><16>& <20>b<EFBFBD><02>.<2E>><3E> l<>
<EFBFBD>?<3F>Hl<48>cl<63>b<EFBFBD><00>cDISPLAY<41>><3E>bc<>cc5chc<68>c\<13>
c<EFBFBD>><3E>lr<6C><72>JcB/BLK<4C>+<04><00>cBLK/DRV<52>+<2B><00><00>c
(DRV.*<00>+d"
<14>\<13>dDRIVE<56>+d$Z;
\<13>(d>DRIVE<56>+d$<1E>Z"<08>\<13>>dDRV?<3F>+
Z"<08>dh\<13>ydDRVINIT<49>+<2B>\<13><00>dI/O.*
<EFBFBD><EFBFBD><00>dBUSO#<01><>?<3F><><18><02><07><02><14>K<EFBFBD>O<EFBFBD> <20><11>6\I
<EFBFBD><EFBFBD>I `I<><49>I<>``<60><00>b
PRINTABLE?Vb<56> <20>b<EFBFBD>J<>
l<1C>GbC64EMIT<49>b<EFBFBD> <20>b<EFBFBD><02>.l<>b<EFBFBD><00>bC64CR<43>+
<EFBFBD>a<EFBFBD>b\<13><00>bC64DEL<45>+
<18><>b<EFBFBD>4
<18><>b\<13>cC64
PAGE<EFBFBD>+
<18><>b\<13>+cC64ATjc<6A> S<16>&<26>$<18>><3E> <20><>
<EFBFBD>?<3F>lha<68>@cC64AT?<3F>c<EFBFBD>8<><02><07>F<14><>8<>><3E> <20><><EFBFBD>
?<3F><>(<28><><02>(h<><68><00><07>l<1C>#
<EFBFBD><EFBFBD>I<EFBFBD><00> <0B> <0C>l <00><00>a
CUROFF<EFBFBD>a<EFBFBD><EFBFBD><EFBFBD> <0C><>
<EFBFBD>l <00><00>aC64KEY<45>+<2B>a<EFBFBD>6[a<><1B>
<EFBFBD><EFBFBD>a<EFBFBD>a\<13>Ca#BS<42>+<00><00>a#CR<43>+
<00><00>a C64DE
CODE<EFBFBD>+<2B>a@<1C><00><08>.?<3F>d<13>a@<1C>
<00>Q!;d
P<12><15><13><08><13>
?#\<13><00>a C64EXPECT<43>+Q!;
<EFBFBD><17>Q!"<19>
<00>?I?<3F><1B><><EFBFBD><15>4\<13>@bKEYBOARD
<EFBFBD>?La[ablb\<13><00>bCON!<21>b<EFBFBD><07>><3E> l#
3<EFBFBD>0(3<>d
<EFBFBD>@/.";/<18><11>0<EFBFBD>3<EFBFBD>3\<13><1B>9<11><00><10><18> <10>
<EFBFBD><04>!<10><00><05><14><04>H<><04><14>
<EFBFBD><04>H<><04><03><00><01><><02>`
<EFBFBD><00>@COLDa `i<18> <10><06>$<24>!<10><00>%<25><00><10>$HP<48> <20>
@ <20>9i<39>@\<13><00>@RESTART9a `i <20>@ <20>9i<39>@\<13>
<EFBFBD>l <00>-aC64KEY?]a<><61>
]<05><02><>hl<1C>qaGETK
EY<EFBFBD>a<EFBFBD>><3E> <20><><EFBFBD>?<3F>I<EFBFBD>P<02> l<1C><00>aCURON<4F>a<EFBFBD>J<18>H<EFBFBD>
#<04>(;\<13><00>?KEY~?<00><00>?KEY?~?<02><00>?DEC
ODE~?<04><00>?EXPECT~?<06>SEAL<41>+<2B>/<18>- +;
\<13>|?$ONLY<4C>-<2D><00>?%FORTH<54>-<2D><00>?%WORDS .<2E>
@
$ALSO<53>,<2C>@+DEFINITIONS<4E>-<2D>+%"<08><08>"<08>Z
<EFBFBD>;"<08><08><18><1B><>\<13>+<2B>7;;#;;H;\<13>N?'C
OLDI0<EFBFBD><11>+1@q@<40>-<2D>@:?<11> #??<3F>@\<13><00>@'REST
ARTI0<EFBFBD><11>+/#<05>+<2B>?<3F><00>><3E>><3E>\<13><00>>?CR<43>+<2B>?
6

<EFBFBD>[<19>?\<13>+A)<29>!a<17>(l<>(J<13>"<08><15>
\<13><00>>OUTPUT:<3A>+r+<2B>(l<>(<28>;\<13><00>>EMITZ>
<EFBFBD>?CRZ><02>?TYPEZ><04>?DELZ><06>(?PAG
EZ><14>3?ATZ>
<EFBFBD>??AT?Z> <0C>i?ROW<4F>+o?<3F>\
<EFBFBD>t?COL<4F>+o?<3F>\<13>+A)<29>!a<17>(l<>(J"<08><15>
\<13><00>?INPUT:<3A>+r+<2B>(l#CLEAR<41>+X <20>}=L;
\<13><00>=(FORGET<45>+<2B><08>(<28>3 is symbol<6F>;=\<13>
<EFBFBD>=FORGET<45>+;/<2F>/$"<19>3 protected<65>*<2A><08>(
<EFBFBD><00>*<2A><00><17>E=\<13><00>=EMPTY<54>+/$"}=/
2"0;\<13>>SAVE<56>+X }=%"<08><08><17>"<08>
<08>;"<08><08><18><1B><>}<12>/D\<13>>>BYE<59>+<2B>9<EFBFBD>c
\<13>+<2B>?P<17><19><00>9\<13><00>>STOP?#<07>'l<><<3C>(E,
<EFBFBD>)<29>-<2D> <0B>,<2C>$<24>,<2C>$lG<<3C>,<2C>$<24>-<2D>%l<><l<><12>+%"<08><08>
<00>PZ<17><16><<3C><12><1B><>\<13>+}#<17>"}<12><16>(<00>"
<08>X <20><18><00>"#"<08>;<08><17>"<08>N<><4E>\<13>+
%<12><R,<2C><> <00>%"z<15><18>
/<18>-%;/<18><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<15>,"z<15><18>
/<18>-<2D>,;\<13><00>;
CUSTOM-REMOVE
I0<EFBFBD><11>+<2B><08><'=M<{=<3D>(<28><08>i(L;<08>~';\<13><00>=
#;""<08>;%7#;[\<13><00>; ALL-BUFFERS<52>+#;"
7;#;"<08><19><1B><>\<13>+J
 1\<13>+<2B>*<2A>#<19><08>(
\<13>+<2B>(%"P<12>"<08><08>^<00>PZ<17>P<12>"P<12><08>
<17><19>a<17>*1<16>.<13>(<28>Z<>a|;<3B>
<EFBFBD>a<17>;<3B> aS*a<17><19><1B><>9<13><1B><>\<13><<3C><05><07>
$<00><10><><18><04><06>*H<><04><00>+<2B><01>$<24>,<2C>$<24>-,<2C>5<EFBFBD>,E*<2A>-
<EFBFBD>+<2B> <0B>,E&<26>-# <16>h:J<><4A><EFBFBD><EFBFBD><00><12><17><><00>h:<3A><17>
<EFBFBD>J<><4A><EFBFBD><EFBFBD>9<EFBFBD>\<13>8:COPY<50>+<2B><17>:\<13>T:CONVEY<45>
+<2B>#F<17><15><16><<19><16>3nein<69>:\<13><00>:LIMIT<49>+
<EFBFBD><EFBFBD>
;FIRST.*X<><58>; ALLOTBUFFER<45>+#;"B"
<EFBFBD>%7a<19>%7<>#;[#;"<08>{87"<08>;7;\<13>
);
FREEBUFFER<EFBFBD>+#;";%7<><19>.#;"!87<>
"#;"<08><16>"<08><1B><>##
\<13><00>9BLOCK<43>+<2B>9}9\
<13><00>9UPDATE<54>+
<18>7"z#<17>\<13>A9 SAVE-BU
FFERS<EFBFBD>+7<>69<><08>!8<><1B><>7<>6\<13><00>9
EMPTY
-BUFFERS<52>+7<>67"<08><08>
<00>{8<><1B><>7<>6\<13>
:FLUSH<53>+<2B>9:\<13>+<2B><08>9n9<6E>7"{8,9<><00>9
Z"<08><15><08>9<EFBFBD><17>;J9\<13>+<2B>9P<12><13><15>[P<12>
<19>1<16>$<13><16><12><17><><00>/<18><><EFBFBD># <15>8<>
<EFBFBD>$read 8<>Y<><59>\<13>+7<>"<08>"<08>a"<08><17>
<19><1B><>7<>6<EFBFBD>!8\<13>+aP<12>;Z"<08>a;<08>
t<17>7<>6\<13>+7"<08><08><00>z"<08><18><1B><>\<13>+7"
<08>"<08><18><1B><>z"<08>\<13>8CORE?<3F>+87<38><15>\<13>
f9(BUFFER<45>+87H8<48>8<EFBFBD><1B><>\<13>z9(BLOCK<43>+87H8
<EFBFBD>8<EFBFBD>8<EFBFBD><1B><>\<13>9<EFBFBD><1C>hH<68>l<1C><00>9BUFFER<45>+<2B>9<EFBFBD>9
# 7<>(<28>(<28>7<>)<29>7l<37>7<EFBFBD>7(DISKERR<52>+<2B>$error
! r to retry <20>?<3F>
r<><19>
R<><16><16>3abo
rted\<13>A7DISKERRI0L7<4C>8R/WI0<49>g<EFBFBD>+<2B>z"
<08><18>ja<17>"#<17>32<>2q3<71>z<17>a"F
<EFBFBD>"<08>8<><00>$write 8<><1B><>
<18><>t#<08>\
<13>+a<17><08>t<17>\<13>+<2B>{82<>2q3P<12>Z"<08>
<EFBFBD>
<14>z#
;\<13><00>6UNLOCK<43>+<2B><08>6<EFBFBD>\<13>8<EFBFBD>
<EFBFBD><04><><00><05>l<EFBFBD><04><06><04>H<><04><14><01><07><02><07><03><18><02><07>
<EFBFBD><14>l<><12><00>6FILE<,<1C>7PREV.*X<>.*<00> 7
B/BUF<55>+<04><02>(Y"PH<>P<>`:7<><03><07>$<00><10><><18>
<EFBFBD>&<26>&H<><04>'<27>'<27>7<>(<28>7<>) )7P<1D><18><02><07><02><14><01>
<18>(<28><07>)<29><00>lf<13>(<28>*<2A>)<29>+<2B>*<2A>(<28><01>*<2A>)(Pl )
7P<EFBFBD><EFBFBD>(<28>*<2A><01>(<28>*<2A>7<>(<28>#<0E><00>5.<2E>+<18><>5\<13><00>5
U.<2E>+<2B><17>5\<13>C5.S<>+;<12>"<08><08>
 <03><><EFBFBD><EFBFBD><EFBFBD>%
"H5F<17><><EFBFBD><EFBFBD>\<13>R5C/L<>+)<00><00>5L/S<>+<00>
6
LIST<53>+<2B>3;<08>$Scr <20>3"<08>dxH5<48>$Dr `d<>5
6<EFBFBD><17><>.<00>><3E><00>?%F<17>5<EFBFBD>4<EFBFBD>3"<08>9%6$<1E>6
<EFBFBD>q4#?J<><4A><EFBFBD>?\<13>6PAUSE <00><00>6LOCK<43>+<2B>"
}<12><19><00>d<13>"<08><00>6<EFBFBD><1B><>}<12>\<13>e<EFBFBD><65><EFBFBD>
S<16>& Ld<4C>&<26>><3E> <20><><EFBFBD>?<3F><>$ `<60><><EFBFBD>><3E> <20><><EFBFBD>?<3F><>&<26><>lha<68>
}eBUSIN<49>+<2B>d<EFBFBD>6<EFBFBD>e\<13>FeBUS!<21>e<EFBFBD><07>><3E> <20><><EFBFBD>?<3F>
l<EFBFBD><12>ZeBUSTYPE<50>+<2B><><EFBFBD><EFBFBD> %J<13>eJ<65><4A><EFBFBD><EFBFBD>6\<13><00>e
BUS@f<>><3E> <20><><EFBFBD>?<3F>l<1C>fBUSINPUT<55>+<2B><><EFBFBD><EFBFBD> 
f%<1B>J<><4A><EFBFBD><EFBFBD>6\<13>,fDERROR?<3F>+d
Nef<>
0
<EFBFBD><16>
?f<><08>a<EFBFBD><19><1B><><EFBFBD>?<3F><18>d\<13>+<2B><01>+<2B><01>+