VolksForth/6502/UltraForth/CLV/EDIT
2020-07-15 09:27:49 +02:00

486 lines
170 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><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>"
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\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><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<><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>

<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<>+<00>NOOP <00>ORIGIN<49>+<00>S0<,<00>R0<,
<00>DP<, GOFFSET<,QBASE<,<00>OUTPUT<,<00>INPUT<,<00> ERRORHANDLER<,VOC-LINK<,<00>UDP<,<2C>*SP@=<12><07>$<24><14>%<25>$<24>8<><02><07>F<14><01><07><00>l5SP!<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><02><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><18><02><07><02>(P<>l <00>EXECUTE<54><13><07><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><>5<>with<74>hadows<77>>ramdisk<73>4of4<66>61<36>63<36>no<6E>hadows<77>>ramdisk<73>4of4<66>138<33>143<34>no<6E>hadows<77>>ramdisk<73>3of4<66>46<34>46<34>with<74>hadows<77>>ramdisk<73>now<6F>>file<6C>C--><3E><01>\<5C>..makecopy<70>2of4<66>clv20nov87<38>now<6F>rddel<65>"<22>1<EFBFBD>uf-quelle"<22>new<65>ame<6D>2of4<66>0<EFBFBD>30<33>no<6E>hadows<77>>ramdisk<73>now<6F>>fileHnow<6F>rddel<65>"<22>2<EFBFBD>uf-qait<69>disk#<23>1of4<66>...<2E>clv20nov87<38>:<3A>wait<69>key<65>drop<6F>;<3B>\<5C>wartet<65>auf<75>taste<74><65>ariable<6C>lastdisk<73>:<3A>bitte<74>cr<63>."<22>bitte<74>"<22>;<3B>:<3A>rein<69>."<22>einlegen!"<22>key<65>drop<6F>;<3B>:<3A>disk:<3A><>reate<74>last<73>@<40>,<2C><>oes><3E>@<40>dup<75>lastdisk<73>@<40>-<2D><>ƀbitte<74>dup<75>.name<6D>rein<69><6E><EFBFBD><EFBFBD>Όlastdisk<73>!<21>;<3B>disk:<3A>filefloppy<70>disk: <0B>1of4<66>disk:<3A>2of4<66>disk:<3A>3of4<66>disk:<3A>4of4<66>:<3A>nodisk<73>lastdisk<73>off<66>;<3B>nodisk<73>:<3A>disk#<23>0.0<EFBFBD>lastdisk<EFBFBD>@<40>convert<72>2drop<6F>;<3B>:<3A>sourcetape<70>bitte<74>."<22><>uell-<2D>ape"<22>rein<69>;<3B>:<3A>desttape<70>bitte<74>."<22><>iel<65>-<2D>ape"<22>rein<69>;<01>\<5C>>ramdisk<73>>file<6C>clv20nov87<38>:<3A>.scrs<72>(<28>f<EFBFBD>t<EFBFBD>--)<29>cr<63>lastdisk<73>@<40>.nov87<38><37>ier<65>ist<73>der<65>(fast)<29>komplette<74><65>opier-<2D>vorgang<6E>von<6F><6E>iskette<74>rev<65>3.8<EFBFBD>auf<EFBFBD><EFBFBD>assette<EFBFBD>niedergelegt.<2E><>as<61><73>opieren<65>ist<73>eine<6E>leidige<67><65>ache,<2C>ich<63>hoffe,<2C>ich<63>habe<62>nichts<74>vergessen.<2E><>alls<6C><73>hr<68>denkt,<2C>dass<73>etwas<61>auf<75><66>urer<65><72>assette<74>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>hadows<77>>ramdisk<73>now<6F>>fileHnow<6F>rddel<65>"<22>ramdisk"<22>new<65>ame<6D>4of4<66>21<32>31<33>with<74>hadows<77>>ramdisk<73>now<6F>>fileHnow<6F>rddel<65>"<22>tape"<22>new<65>ame<6D>4of4<66>0<EFBFBD>5<EFBFBD>with<74>hadows<77>>ramdisk<73>4of4<66>13<31>20<32>with<74>hadows<77>>ramdisk<73>now<6F>>fileHnow<6F>rddel<65>"<22>decompiler"del<65>"<22>infos"<22>new<65>ame<6D>1of4<66>0<EFBFBD>13<31>with<74>hadows<77>>ramdisk<73>2of4<66>0<EFBFBD>1<EFBFBD>no<6E>hadows<77>>ramdisk<73>3of4<66>0<EFBFBD>1<EFBFBD>no<6E>hadows<77>>ramdisk<73>4of4<66>0<EFBFBD>1<EFBFBD>no<6E>hadows<77>>ramdisk<73>now<6F>>fileHnow<6F>rddel<65>"<22>disk"<22>new<65>ame<6D>1of4<66>26<32>36<33>with<74>hadows<77>>ramdisk<73>now<6F>>fileHnow<6F>rddel<65>"<22>kleinkram"<22>new<65>ame<6D>1of4<66>14<31>2.multitasker"<22>docopy<70>now<6F>"<22><><EFBFBD>.printer"<22>docopy<70>now<6F>"<22><><EFBFBD>.c16<31>supertape"<22>docopy<70>now<6F>"<22><><EFBFBD>.ramdisk"<22>docopy<70>now<6F>"<22><><EFBFBD>.tape"<22>docopy<70>now<6F>"<22><><EFBFBD>.decompiler"<22>docopy<70>now<6F>"<22><><EFBFBD>.c64<36>1-grafik"<22>docopy<70>now<6F>"<22><><EFBFBD>.c64<36>2-grafik"<22>docopy<70>now<6F>"<22><><EFBFBD>.c64<36>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>type<70><65>scii<69>"<22>emit<69>;A:<3A>>ramdisk<73>(<28>[from<6F>to]<5D>shadow<6F>lag--)<29>>r<>2dup<75>.scrs<72>over<65>disk#<23>blk/drv<72>*<2A>+<2B>r><3E><>ƀ."<22>shadows"<22>sconvey<65><79><EFBFBD><EFBFBD>ŀconvey<65><79><EFBFBD><EFBFBD>΀;<3B>:<3A>>file<6C>filefloppy<70>saveramdisk<73>;\\<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><65>lias<61>no<6E>hadows<77><00>\<5C><>elp<6C>clv20nov87<38><37>ie<69>sind<6E>im<69><6D>ditor!!Averlassem<65>mit:<3A><run/stop><3E>aufrufen<65>mit:<3A>̀(<28>scr--)<29>z.<2E>.:<3A>1<EFBFBD>̾<EFBFBD>aechste<74><65>eite:<3A><ctrl>+Βvorige<67><65>eite:<3A><ctrl>+’<>hadow-<2D>eite:<3A><ctrl>+׃\\<5C>zu<7A><75>ape-<2D>opy<70>clv20new<65>ame<6D>3of4<66>47<34>56<35>with<74>hadows<77>>ramdisk<73>now<6F>>fileHnow<6F>rddel<65>"<22>multitasker"<22>new<65>ame<6D>3of4<66>57<35>62<36>with<74>hadows<77>>ramdisk<73>now<6F>>fileHnow<6F>rddel<65>"<22>printer"<22>new<65>ame<6D>3of4<66>63<36>84<38>with<74>hadows<77>>ramdisk<73>now<6F>>fileH--><3E><01>\<5C>..makecopy<70>4of4<66>1.<2E>eil<69>cclv20nov87<38>now<6F>rddel<65>"<22>c16 f4<66>clv20nov87<38>2<EFBFBD>6<EFBFBD>+thru<72>\<5C>kleinkram<61>laden<65>floppy<70>\<5C>wird<72>nachher<65>auf<75><66>ape<70>gespult<6C>:<3A>makecopy<70>\<5C>kopiert<72>alle<6C><65>isketten<65>now<6F>0<EFBFBD>drive<76>base<73>push<73>decimal<61>[<5B><>amdisk<73>]<5D>limit<69>$c000<30>u><3E>abort"<22>no<6E>room"<22>$c000<30>memtop<6F>rdnew<65><77><EFBFBD><EFBFBD>--><3E><01>\<5C>..makecopy<70>1of4<66>clv20nov87<38>now<6F>rd
ow<EFBFBD>"<22><><EFBFBD>.kleinkram"<22>docopy<70>now<6F>"<22><><EFBFBD>.1<EFBFBD>uf-quelle"<22>docopy<70>now<6F>"<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-quelle"<22>docopy<70>now<6F>"<22><><EFBFBD>.5<EFBFBD>uf-quelle"<22>docopy<70>now<6F>"<22><><EFBFBD>.assembler"<22>docopy<70>now<6F>"<22><><EFBFBD>.editor"<22>docopy<70>now<6F>"<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,<2C>die<69>wieder<65>auf<75><66>iskette<74>stehen<65>copy>tape-<2D>kopiert<72>die<69><65>ystem-<2D>iles<65>und<6E>die<69><65>amdisk-<2D>iles<65>von<6F><6E>iskette<74>auf<75><66>asette<74><65>uer<65>beides<65>braucht<68><74>hr<68>ein<69><6E>iskettenlaufwerk<72>-->\<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<6E>hadows<77>clv19nov87<38>:<3A>sconvey<65>(<28>[from<6F>to]<5D>destination--)<29>2<EFBFBD>pick<63>2<EFBFBD>pick<63>2<EFBFBD>pick<63>convey<65>[<5B><>ditor<6F>]<5D>shadow<6F>@<40>>r<>r@<40>+<2B>rot<6F>r@<40>+<2B>rot<6F>r@<40>+<2B>rot<6F>rdrop<6F>con
ows<EFBFBD>>ramdisk<73>now<6F>>file<6C>--><3E><01>\<5C>..makecopy<70>3of4<66>clv20nov87<38>now<6F>rddel<65>"<22>assembler"<22>new<65>ame<6D>3of4<66>2<EFBFBD>13<31>with<74>hadows<77>>ramdisk<73>now<6F>>fileHnow<6F>rddel<65>"<22>editor"<22>new<65>ame<6D>3of4<66>14<31>18<31>with<74>hadows<77>>ramdisk<73>3of4<66>19<31>45<34>with<74>hadows<77>>ramdisk<73>now<6F>>fileHnow<6F>rddel<65>"<22>tracer"<22>nn<>bei<65>einem<65>dieser<65><72>orte<74>etwas<61>schief<65>geht,<2C>besteht<68>die<69><65>oeglichkeit<69>an<61>der<65><72>telle,<2C>wo<77>der<65><72>ehler<65>auftrat<61>fortzufahren.<2E><>azu<7A>dient<6E>das<61><73>ort:Q<><51><EFBFBD><EFBFBD><EFBFBD>aber<65><72>orsicht:<3A><>enn<6E>ihr<68>etwas<61>veraendert<72>habt,<2C>kann<6E><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŀdas<61>nicht<68>wissen.<2E><00>\<5C>kopieren<65>auf<75><66>amdisks<6B>1odisk<73>4of4<66>90<39>100<30>no<6E>hadows<77>>ramdisk<73>now<6F>>fileHnow<6F>rddel<65>"<22>c64<36>grafdemo"<22>new<65>ame<6D>4of4<66>144<34>164<36>no<6E>hadows<77>>ramdisk<73>165<36>binary<72>4of4<66>165<36>169<36>no<6E>hadows<77>>ramdisk<73>now<6F>>fileHnow<6F>;i<02>\<5C>..tapecopy<70>clv20nov87<38>supertapeHnow<6F>"<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>1of4<66>clv20nov87<38>now<6F>rddel<65>"<22>infos"<22>new<65>ame<6D>1of4<66>0<EFBFBD>13<31>with<74>hadows<77>>ramdisk<73>2of4<66>0<EFBFBD>1<EFBFBD>no<6E>hadows<77>>ramdisk<73>3of4<66>0<EFBFBD>1<EFBFBD>no<6E>hadows<77>>ramdisk<73>4of4<66>0<EFBFBD>1<EFBFBD>no<6E>hadows<77>>ramdisk<73>now<6F>>fileHnow<6F>rddel<65>"<22>disk"<22>2<>no<6E>hadows<77>>ramdisk<73>now<6F>>fileHnow<6F>rddel<65>"<22>c64<36>2-grafik"<22>new<65>ame<6D>4of4<66>64<36>89<38>no<6E>hadows<77>>ramdisk<73>4of4<66>90<39>100<30>no<6E>hadows<77>>ramdisk<73>now<6F>>fileHnow<6F>rddel<65>"<22>c64<36>grafdemo"<22>new<65>ame<6D>4of4<66>144<34>164<36>no<6E>hadows<77>>ramdisk<73>165<36>binary<72>4of4<66>165<36>169<36>no<6E>hadows<77>>ramdisk<73>now<6F>>file0<>5<EFBFBD>with<74>hadows<77>>ramdisk<73>4of4<66>13<31>20<32>with<74>hadows<77>>ramdisk<73>now<6F>>fileHnow<6F>rddel<65>"<22>decompiler"<22>new<65>ame<6D>4of4<66>51<35>60<36>no<6E>hadows<77>>ramdisk<73>now<6F>>file<6C><65>--><3E><01>\<5C>..makecopy<70>4of4<66>2.<2E>eil<69>cclv20nov87<38>now<6F>rddel<65>"<22>c64<36>1-grafik"<22>new<65>ame<6D>4of4<66>0<EFBFBD>1<EFBFBD>no<6E>hadows<77>>ramdisk<73>4of4<66>6<EFBFBD>1oom<6F>room<6F>off<66>:<3A>docopy<70>(<28>string<6E>--)<29>room<6F>@<40>swap<61>2dup<75>from<6F>count<6E>bload<61>swap<61>to<74>count<6E>bsave<76>;<3B>:<3A>eot<6F>$1000<30>$1001<30>"<22>end-of-tape"<22>count<6E>3<EFBFBD>pick<63>3<EFBFBD>pick<63>3<EFBFBD>pick<63>3<EFBFBD>pick<63>$0207<30>csave<76>derr?<3F>drop<6F>$0201<30>csave<76>derr?<3F>drop<6F>;<3B><01>\<5C>>file<6C>new<65>ame<6D>>ramdisk<73>clv05dec87<38>:<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>]<5D>id<69>4<EFBFBD>+<2B>swap<61>cmove<76>;<3B>:<3A>.scrs<72>(<28>f<EFBFBD>t<EFBFBD>--)<29>cr<63>lastdisk<73>@<40>.name<6D>swap<61>.<2E>.<2E><>scii<69>"<22>emit<69>[<5B><>amdisk<73>]<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<>2dup<75>.scrs<72>over<65>disk#with<74>hadows<77>>ramdisk<73>now<6F>>fileH--><3E><01>\<5C>..makecopy<70>4of4<66>1.<2E>eil<69>cclv20nov87<38>now<6F>rddel<65>"<22>c16<31>supertape"<22>new<65>ame<6D>4of4<66>32<33>50<35>with<74>hadows<77>>ramdisk<73>now<6F>>fileHnow<6F>rddel<65>"<22>ramdisk"<22>new<65>ame<6D>4of4<66>21<32>31<33>with<74>hadows<77>>ramdisk<73>now<6F>>fileHnow<6F>rddel<65>"<22>tape"<22>new<65>ame<6D>4of4<66><03>(disk"<22>"lit<69>count<6E>(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"<22>s:file"<22>\<5C>loescht<68>file0<01>\<5C>docopy<70>room<6F>from<6F>to<74>eof<6F>clv03dec87<38><37>efer<65>from<6F>'<27>noop<6F><70>s<EFBFBD>from<6F><6D>efer<65>to<74>'<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><79><EFBFBD><EFBFBD>ŀconvey<65><79><EFBFBD><EFBFBD>΀;<3B>:<3A>>file<6C>filefloppy<70>saveramdisk<73>;Z<00>\<5C>sconvey<65>with/no<6E>hadows<77>clv19nov87<38>:<3A>sconvey<65>(<28>[from<6F>to]<5D>destination--)<29>2<EFBFBD>pick<63>2<EFBFBD>pick<63>2<EFBFBD>pick<63>convey<65>[<5B><>ditor<6F>]<5D>shadow<6F>@<40>>r<>r@<40>+<2B>rot<6F>r@<40>+<2B>rot<6F>r@<40>+<2B>rot<6F>rdrop<6F>con14<31>18<31>with<74>hadows<77>>ramdisk<73>3of4<66>19<31>45<34>with<74>hadows<77>>ramdisk<73>now<6F>>fileHnow<6F>rddel<65>"<22>tracer"<22>new<65>ame<6D>3of4<66>47<34>56<35>with<74>hadows<77>>ramdisk<73>now<6F>>fileHnow<6F>rddel<65>"<22>multitasker"<22>new<65>ame<6D>3of4<66>57<35>62<36>with<74>hadows<77>>ramdisk<73>now<6F>>fileHnow<6F>rddel<65>"<22>printer"<22>new<65>ame<6D>3of4<66>63<36>84<38>py<70>now<6F>"<22>c16ultraforth83"<22>docopy<70>now<6F>"<22>c64ultraforth83"<22>docopy<70>now<6F>"<22>c16demo"<22>docopy<70>now<6F>"<22>c64demo"<22>docopy<70>eot<6F>now<6F>;%<01>\<5C>disk"<22>cclv20nov87<38>:<3A>(disk<73>(<28>addr<64>len--)<29>\<5C>sendet<65>den<65>string<6E>an<61>die<69><65>isk<73>8<EFBFBD>&15<31>busopen<65>bustype<70>busoff<66>derror?<3F>drop<6F>8<EFBFBD>&15<31>busclose<73>;<3B>:
vey<EFBFBD>;G'<27>true<75><65>lias<61>with<74>hadows<77>'<27>false<73><65>lias<61>no<6E>hadows<77><00>\<5C>now<6F>cont<6E>clv03decclv05dec87<38><37>ariable<6C>lastnowA:<3A>now<6F>r@<40>lastnow<6F>!<21>;<3B>:<3A>cont<6E>lastnow<6F>@<40>>r<>;<3B>here<72>2-<2D>lastnow<6F>!<02>\<5C>relocating<6E>the<68>system<65>20oct87re<72>܀:<3A>relocate-tasks<6B>(<28>new<65>Ѐ--<2D>)<29>up@<40>dup<75><70><EFBFBD><EFBFBD><EFBFBD>΁1+<2B>un4<>91<39>120<32>no<6E>hadows<77>>ramdisk<73>now<6F>>fileHnow<6F>rddel<65>"<22>5<EFBFBD>uf-quelle"<22>new<65>ame<6D>2of4<66>121<32>169<36>no<6E>hadows<77>>ramdisk<73>now<6F>>file<6C>--><3E><01>\<5C>..makecopy<70>3of4<66>clv20nov87<38>now<6F>rddel<65>"<22>assembler"<22>new<65>ame<6D>3of4<66>2<EFBFBD>13<31>with<74>hadows<77>>ramdisk<73>now<6F>>fileHnow<6F>rddel<65>"<22>editor"<22>new<65>ame<6D>3of4<66> copy<70>now<6F>"<22><><EFBFBD>.c64<36>1-grafik*"<22>docopy<70>now<6F>"<22><><EFBFBD>.c64<36>2-grafik*"<22>docopy<70>now<6F>"<22><><EFBFBD>.c64<36>grafdemo*"<22>docopy<70>now<6F>"<22><><EFBFBD>.maketape*"<22>docopy<70>--><3E><00>\<5C>..copy>tape<70>system<65>iles<65>clv21nov87<38>[']<5D>floppy<70><79>s<EFBFBD>from<6F>[']<5D>supertape<70><65>s<EFBFBD>to<74>now<6F>"<22>c16tapeforth83"<22>docopy<70>now<6F>"<22>runme"<22>docoder<65>@<40>2dup<75>-<2D><><EFBFBD><EFBFBD><EFBFBD>Łrot<6F>drop<6F><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԁ2drop<6F>!<21>;<3B>:<3A>relocate<74>(<28>stacklen<65>rstacklen<65>--<2D>)<29>swap<61>origin<69>+<2B>2dup<75>+<2B>b/buf<75>+<2B>2+<2B>limit<69>u><3E>abort"<22>buffers?"<22>dup<75>pad<61>$100<30>+<2B>u<<3C>abort"<22>stack?"<22>over<65>udp<64>@<40>$40<34>+<2B>u<<3C>abort"<22>rstack?"<22>flush<73>empty<74>under<65>+<2B>origin<69>$<24><>+<2B>!<21>\<5C>r0<72>dup<75>re now<6F>rddel<65>"<22>1<EFBFBD>uf-quelle"<22>new<65>ame<6D>2of4<66>0<EFBFBD>30<33>no<6E>hadows<77>>ramdisk<73>now<6F>>fileHnow<6F>rddel<65>"<22>2<EFBFBD>uf-quelle"<22>new<65>ame<6D>2of4<66>31<33>60<36>no<6E>hadows<77>>ramdisk<73>now<6F>>fileHnow<6F>rddel<65>"<22>3<EFBFBD>uf-quelle"<22>new<65>ame<6D>2of4<66>61<36>90<39>no<6E>hadows<77>>ramdisk<73>now<6F>>fileHnow<6F>rddel<65>"<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<><3E>?]<5D>z<EFBFBD>it<69>sta<74>timer<65><72>tart<72>jsr<73>$17<31>#<23>lda<64>sndÀsta<74>\<5C><>ound<6E>ein<69>z<EFBFBD>yte<74>lda<64>rts<74>end-code<64><65>ode<64>justage<67>clsl<73>#<23>lda<64>clc<6C>inits<74>jsr<73>[[<5B>0<EFBFBD>#<23>lda<64>snd<6E>sta<74>\<5C>falsch<63>[[<5B>bit<69>esen<65>jsr<73>c<EFBFBD>ync<6E>yte<74>#<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>nur<75><72>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>copy<70>;<3B>:<3A>ramdisk><3E>(<28>--)<29>[<5B><>amdisk<73>]<5D>rd<72><64><EFBFBD><EFBFBD><EFBFBD>΀dup<75>@<40>+<2B>dup<75>@<40><><EFBFBD><EFBFBD><EFBFBD>Ő(<28>adr<64>)<29>dup<75>2+<2B>@<40>rcopy<70><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԋdrop<6F>;J:<3A>tape>disk<73><6B><EFBFBD><EFBFBD><EFBFBD>΀loadramdisk<73>ramdisk><3E><><EFBFBD><EFBFBD><EFBFBD>lv05dec87<38><37><EFBFBD>tility<74>zur<75><72>isksteuerung<6E><67><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>ape<70>auf<75><66>creen-<2D>isks<6B><73>rstellen<65>des<65><73>ape<70><01>\<5C><>irectory<72>maketape<70>clv05dec87<38><37>iese<73><65>amdisk<73>dient<6E>kopieren<65>auf<75><66>assette.Ddisk"<22>2<EFBFBD>relocate<74>3<EFBFBD>now<6F>cont<6E>4<EFBFBD>lastdis?<3F>pla<6C>pla<6C><61>abel<65>exits<74>x<EFBFBD>ass<73>otor<6F>ff<66>jsr<73>x<EFBFBD>ass<73>rt<72>ff<66>jsr<73>cli<6C>ram<61>xy<78>ext<78>jmp H\<5C>justage<67>clv03dec87<38><37>abel<65>bit<69>esen<65>\<5C>akt.<2E>yte<74>in<69><6E>Ҁzurueck<63>$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<6C>]?<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>empty<74>1<EFBFBD>+load<61>testsignal<61>empty<74>\needs<64>relocate<74>3<EFBFBD>load<61>decimal<61>'<27>tapeinit<69><74>s<EFBFBD>'restart<72>supertape<70>savesystem<65>ultraforth83"<22>empty<74>&16<31>load<61>copy>tape4<01>\\<5C>zu<7A>maketape<70>clv03dec87<38><37>ier<65>ist<73>der<65>(fast)<29>komplette<74><65>opier-<2D>vorgangsonstige<67><65>ystemadressen<65>$07c8<63>><3E>abel<65>s<EFBFBD>ime<6D>\<5C><>onstanten<65>$b5<62>><3E>abel<65>clsl<73>$ff<66>><3E>abel<65>clssh<73>$78<37>><3E>abel<65>clssl<73>$16<31>><3E>abel<65>c<EFBFBD>ync<6E>yteHG\<5C>wait<69>delay<61>inits/ex<65>clv03dec87<38><37>abel<65>wait<69>$10<31>#<23>lda<64>[[<5B>p<EFBFBD>imer<65><72>trl<72>bit<69>0<><3E>?]<5D><>abel<65>timer<65><72>tart<72>s<EFBFBD>ime<6D>lda<64>p<EFBFBD>imer…sta<74>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<74>-->E<01>\<5C>lastdisk<73>wait<69>disk#<23>1of4<66>...clv05dec87<38><37>ariable<6C>lastdisk<73>:<3A>wait<69>key<65>drop<6F>;<3B>\<5C>wartet<65>auf<75>taste<74>:<3A>bitte<74>cr<63>."<22>bitte<74>"<22>;<3B>:<3A>rein<69>."<22>einlegen!"<22>key<65>drop<6F>;<3B>:<3A>disk:<3A><>reate<74>last<73>@<40>,<2C><>oes><3E>@code<64>C\<5C>maketape<70>clv05dec87<38>:<3A>test<73>$8800<30>limit<69>=<3D>not<6F>$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>over<65>behind<6E>swap<61>-<2D>move<76>\<5C>$8800<30>rduse<73>\<5C>$8800<30>'<27>limit<69>>body<64>!<21>\<5C>\needs<64>relocate<74>$1b<31>load<61>\<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><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>anschliessend<6E>25<32><35><EFBFBD><EFBFBD>Āein<69>tape>disk-<2D>kopiert<72>alle<6C><65>amdisks<6B>vom<6F><6D>ape<70>in<69><6E>creen-<2D>isks<6B><73>enn<6E>bei<65>einem<65>dieser<65><72>orte<74>etwas<61>schief<65>geht,<2C>besteht<68>die<69><65>oeglichkeit<69>an<61>der<65><72>telle,<2C>wo<77>der<65><72>ehler<65>auftrat<61>fortzufahren.<2E><>azu<7A>dient<6E>das<61><73>ort:<3A><><EFBFBD><EFBFBD>Ԟaber<65><72>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>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.*׈<00>dBUSO <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><>\<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-REMOVEI0<49><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 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>
<00>?I?<3F><1B><><EFBFBD><15>4\-zEDIBOARD<52>?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<53>;q<><08>3"<08>9<EFBFBD>mJ9
\<13>+<2B>r
\<13>+<2B>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><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 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
<06><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 keyboard\<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>]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><><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;<08>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<49>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><13>o\<13>+ma"<08><18><08><13>n<EFBFBD><08><13>ma[ml<>J+n<>\<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>+#<17><08><>!?%F<17>5%<1B>9#
%#?<3F>><3E><00>J<><4A><EFBFBD>\<13><00>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><00>hINK-POT.*<2A><><00><><00><><00>i INIT-SYSTEM;i<><69><EFBFBD>lha<68>><3E><>vi<76>xi<78>ih<69>\h<><68>h<><03>l<><6C><EFBFBD>?<3F>@؍><3E><>i<EFBFBD><69><EFBFBD><EFBFBD>a<EFBFBD><61><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'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 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><4A><EFBFBD><EFBFBD>\<13>+z?<3F>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<>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\<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>+<2B>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<><02><07>F<14><02><07>l<13>RDROP1EXITf<13><02><0E><02>l=UNNEST^<13><02><0E><02>ls?EXIT<49><13><14><18><02><07><02>(P<>l <00>EXECUTE<54><13><07><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-Quellextey<08><01>" - 6502-Assembler<00><08><01>" - Full-Screen-Editor<00><08><01>" - Debugging Tools<00><08><01>" - Multitasker<00><08><01>" - Drucker-TreiberF<08><01>:<3A>:<3A><00>B<01>" Seite 4 -- Grafik/TapeL<01>" - Grafik 
<EFBFBD><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<><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><03><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>UNDER<45>+<2B><08>\<00>PICK<43>+#3;<12>"\<00>ROLL<4C>+<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 Tape<00>6<01>" - File c64demo - '' GrafikJ@<01>" - Hilfstexte & Kontaktadressen<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>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>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><>$<00>TRUE<55>+<2B><>$<00>FALSE<53>+$<00>"-1<>$<00>!0<>$<00>1<>+$<00>2<>+$B3<>+$L4<>+$VON<4F>+<2B><17>;\ t sein eigenes3H<00>" Diskettenverwaltungssystem, daher[R<00>" bitte immer die ganzen Disketten<00>|<00>" kopieren und nicht nur die Files!!!<00><12><00><00><12><00> 640:<3A> seitenvorschubG<12><00>" Die Disketten enthalten:M<01><00><01>" 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<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>%
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><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>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<>$<24><07><01>'l5^M/MOD<4F>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+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>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><02>,"" !$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><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><00>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<1C> 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>+<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>+<2B>P=<3D><><08><18><00><15><15><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>CMOVEF<1F> S<16>D$P F%<05>l <00>(<28>&HP4<>>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>\ 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><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<48>8<EFBFBD>8<EFBFBD><1B><>\<13>9<EFBFBD><1C>hH<68>l<1C><00>9BUFFER<45>+<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[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>/
>INTERPRET<45>/0x<00> 7<>(<28>(<28>7<>)<29>7l<37>7<EFBFBD>7(DISKERR<52>+<2B>$error ! r to retry <20>?<3F>
r<><19>
R<><16><16>3aborted\<13>A7DISKERRI0L7<4C>8R/WI0<49>g<EFBFBD>+<2B>z"<08><18>ja<17>"#<17>32<>2q3<71>z<17>a"F<17>"<08>8<><00>$write 8<><1B><>
<18><>t#<08>\<13>+a<17><08>t<17>\<13>+<2B>{82<>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>$<24>)<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>,ALSO<53>+<2B>,"

-<19>3Vocabulary stack fullD,"F<17>,[D,;\q<00>,TOSS<53>+/<18><><EFBFBD>,[\r<00>-
VOCABULARY<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>5U.<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>
6LIST<53>+<2B>3;<08>$Scr <20>3"<08>dxH5<48>$Dr `d<>56<><17><>.<00>><3E><00>?%F<17>5<EFBFBD>4<EFBFBD>3"<08>9%6$<1E>6<>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 symbol<6F>;=\<13><00>=FORGET<45>+;/<2F>/$"<19>3 protected<65>*<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<#<23>+<2B>4<EFBFBD>4;\<13>W4#><3E>+<2B><15>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>5U.R<>+<2B><17>[5\<13><00>5D.<2E>+<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>,fDERROR?<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><4A><EFBFBD><EFBFBD>\<13>+z?<3F>d?<3F>lm<><17>n\<13>+n<>l?4<> <20>\<13>++n<>l<EFBFBD>?<3F>?4<> <20>\<13>+n<><08>l<EFBFBD><15> n/<2F>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><>`<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>qeBUSOPEN<45>+
<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<55> 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<>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.*׈<00>dBUSO<53><03> @`<60>*)I <20>
I@<40>)$* @`<60>.`[lCBM>SCR<43>l<EFBFBD> <20>l<EFBFBD>l <00>lSCR>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><>+;<05>+<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><02><07><02><14>K<EFBFBD>O<EFBFBD> <20><11>6\I<><49>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>+<2B>a<EFBFBD>b\<13><00>bC64DEL<45>+
<18><>b<EFBFBD>4
<18><>b\<13>cC64PAGE<47>+
<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><>(<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><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 2VARIABLE<4C>+A)Z<17> \$l 2CONSTANT<4E>+A) ! !<21>(l<>(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>Ca#BS<42>+<00><00>a#CR<43>+
<00><00>a C64DECODE<44>+<2B>a@<1C><00><08>.?<3F>d<13>a@<1C>
<00>Q!;dP<12><15><13><08><13>
?#\<13><00>a C64EXPECT<43>+Q!;<08><17>Q!"<19>
<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>jSETUP<55>+S<16><00>jNEXT<58>+ <00>NjXYNEXT<58>+ha<68><00>jPOPTWO<57>+<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><07><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><06><04>!<10><00><05><14><04>H<><04><14>
<EFBFBD><04>H<><04><03><00><01><><02>`<60><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><00>l <00>-aC64KEY?]a<><61>
]<05><02><>hl<1C>qaGETKEY<45>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>{\DEXb\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> ]TAYb\<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;<08>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<49>3"<08><08><16><00>3;]M/CPU<50>+A)! !<21>(l<>(<28>#"
<18>1<16>
%[[<08>/<00>1<16>[<5B>[<5B>y[<5B><17>3invalidJ%["[<5B>J<13><15>[%["
1<16>%["
1
U<18><00>[<5B><00>[y[\ <00>]ADC<44>]`<60> <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><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'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<53>;q<><08>3"<08>9<EFBFBD>mJ9
\<13>+<2B>r
\<13>+<2B>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>+<2B>/<00>[<19> <00><><EFBFBD>^<5E><><EFBFBD><00>^\
kz ASSEMBLER<45>+?jy[\
|<7C>e;CODE<44>+)/<18><><EFBFBD> <20>+/<18><><EFBFBD> <20><>\
<00><>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
<10>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<><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\,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 keyboard\<13>+,m"0mJ<13>\,<00>vCURLIN<49>+
<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>\TlRVSON<4F>+
<12>b\ApRVSOFF<46>+
<18><>b\Tp***ULTRAFORTH83*** <00>prFORTH-GESELLSCHAFT<46>+%\<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
<1D>bjy<6A><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>
<00>?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><08><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\,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 keyboard\<13>+,m"0mJ<13>\,<00>vCURLIN<49>+
<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>+<2B><17><>\<00><>BLANK<4E>+?4<><34>\F<>HERE!<21>+H<>;\<13><00><>RESOLVE<56>+<2B><08>"<08><><EFBFBD><19><00>4<EFBFBD><08>*+<2B>$exists a;<08>dPPa"<08><08>'<00><08><><EFBFBD><15><19>3 resolve loop<15><><EFBFBD><08><00>"<08><08><18><1B><>\6<>
VOCABULARY<EFBFBD>+<-<2D> !X @<40>" !@<40>;\`<60> TRANSIENTv-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>(4112)<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<><19><00>*A<>Z<17>"<08><08><08>\<13>+"<08><08><00><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<>+<2B><>
<05>4<EFBFBD><34>a\#<00><>C<>+<2B>_<>\#<00><>B<>+<2B><><EFBFBD≯<08><><EFBFBD><08>
<05>5a\#<00><>DUMP<4D>+<2B><><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><>GHOST<53>+<2B>!"$<24>Ą<00>d<13><08>!;<00>\<00><>WORD,<2C>+<2B>ė\<00><>GDOES><3E>+Z<17><15>"<08>"dX <20><08><> !<21> !Z<17><>L;<08>(<28>;\<00><>G'<27>+$<24>ę<18>3?\(<28>'.<2E>+-Ÿ"<08><>@<1C><00>$/<18><>9.<2E><15><18>'?<3F>$Redefinition: X +3<>"<08>!;<08>+<2B><><EFBFBD>/<2F>&<26>;\<13>+<14>"<08><08><><EFBFBD>#<17><>9\<13>+6!/&<26>" !6!<>\%E;CODE<44>+<2B><17><1B>δ'9\%<00><><EFBFBD>DOES><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>& <0B><>BEGIN<49>&<16><>UNTIL&"<22><>WHILE<4C>&.<2E><>REf<>ROMOFF<46><46>l x<>ROMON<4F><4E>l <00><>>BYTE<54>ñh<><68><07>8<><02><07>F<14><><07>l<00><>BYTE><3E>áh<><18><02><07><02>ȑl <00><>>IMAGE<47>+<2B><>"<08><16><>"<08>\<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<17><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<>+<2B><>
<05>4<EFBFBD><34>a\#<00><>C<>+<2B>_<>\#<00><>B<>+<2B><><EFBFBD≯<08><><EFBFBD><08>
<05>5a\#<00><>DUMP<4D>+<2B><><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><><00><>TDP.*G<>B<>THERE<52>+H<>"\N<>DISPLACE.*<2A><00><>?THEAD.*<00><>TLAST.*<00>GLAST'.*<0E>TDOES>.*VO<1D>>IN:.*$,<2C>TVOC.*9<> TVOC-LINK.*<14><> !\<13>+<2B><><EFBFBD><EFBFBD> %<1B><>
?J<><4A><EFBFBD>\!.NAME<4D>+<2B><08><00>#<17><08><>
1k<><6B> <00>$??? <20>4<EFBFBD>>\<13>+<2B><08>%<00>a<17><08><>
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>+<2B>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¡<17><>\ <00><>>RESOLVE<56>+V<><56><08><16><08><>\ <00><><MARK<52>+V<>\ <00><><RESOLVE<56>+V<><56><16><>\ <00><> IMMEDIATE<54>+<14>"<08><08><00><08><>
@<16>O<>\ <00><>RESTRICT<43>+<14>"<08><08><00><08><>
<18><16>O<>\ <00><>'<27>+-Ÿ"<08><><EFBFBD><16>3?a"\ <09>|<7C>+<2B><>"<08><13><><EFBFBD>\ %<25>GCOMPILE<4C>+.*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<>+<00>NOOP <00>ORIGIN<49>+<00>S0<,<00>R0<,
<00>DP<, GOFFSET<,QBASE<,<00>OUTPUT<,<00> ;X <20>;\<11>HPREBUILD<4C>+<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<> ASSEMBLER<45>+<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><07><00>l5SP!<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>
$,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><>THEADER<45>+<14><><17>ɽĸ<17>;V<><56><EFBFBD>\<13>+<2B>\<13>+V<> !\<13>+<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>RDROP1EXITf<13><02><0E><02>l=UNNEST^<13><02><0E><02>ls?EXIT<49><13><14><18><02><07><02>(P<>l <00>EXECUTE<54><13><07><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><><18><1B><><EFBFBD><12><12><><EFBFBD>;a;\<13><00><>RESDOES><3E>+<2B><08>ĸ"<08><><EFBFBD><19>a;d<13><08><>\<13>(l<>(<28>"V<>;<08><>\<13>(l<>("<08><>\<00><> MOVE-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><> SAVE-TARGET<45>+

<02>e<EFBFBD><17>#<23>e<EFBFBD><11><0E>l +B<><42>(+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><02><01>l ,!<1B>Js<1B>PR-m<1B>BRANCH<43><18><0E><0E>$<24><0F><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<RESOLVD<>+<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><><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><>BOUNDS<44>+<2B><08><15>\*<00><><EFBFBD>ENDLOOP<4F><50><EFBFBD>l+<00><><EFBFBD>(LOOPL<50><18><01><02><02> <0B><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><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>\)WIB<49>+\!"\;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><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>"
CAPITALIZED"<22><07>$<24><07>%<25>$<24>&<26>D&P<05>l $<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<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><07>$<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><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>;\<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<><02><07>FlT8<00> ERASE<53>+<2B><17> \9<00> FILL<4C> <20> 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>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> +<2B>P=<3D><><08><18><00><15><15><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>CMOVEF<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><03><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>UNDER<45>+<2B><08>\<00>PICK<43>+#3;<12>"\<00>ROLL<4C>+<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>
<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<>$<24><07><01>'l5^M/MOD<4F> <0C><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<><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>
<EFBFBD><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><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>%
ACCUMULATE<EFBFBD>+<2B>P<12><08>"<08><1D><15>"<08><1D><16>\e<00>%CONE<>+X <20> !\.<00>?PAIRS<52>+<2B><16>3 unstructured\Ih<><68>lh<><00><>8<><02><07>F<14><><01>Ȣl/<00>CASE?b<1C> 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>+<2B>,<2C>"<08>a\<13>+<2B>,aD,\q<00>,ALSO<53>+<2B>,"

-<19>3Vocabulary stack fullD,"F<17>,[D,;\q<00>,TOSS<53>+/<18><><EFBFBD>,[\r<00>-
VOCABULARY<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>5U.<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>
6LIST<53>+<2B>3;<08>$Scr <20>3"<08>dxH5<48>$Dr `d<>56<><17><>.<00>><3E><00>?%F<17>5<EFBFBD>4<EFBFBD>3"<08>9%6$<1E>6<>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<><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>-q<00>,CURRENT.*<2A>-q<00>,CONTEXT<58>+<2B> <20>\<13><00>4HOLD<4C>+<2B><17>4[<08>4"<08>\<13><00>4<#<23>+<2B>4<EFBFBD>4;\<13>W4#><3E>+<2B><15>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>5U.R<>+<2B><17>[5\<13><00>5D.<2E>+<2B>[5<>4\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+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>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><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><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(QUIT<49>+<2B>1?<3F>!<21>/<2F>2<EFBFBD><1B><>\^3'QUITI0
3^3QUIT<49>+B"B0&3\^,3 STANDARDI/O<>+/*<10>ZD\^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>)"<08>~'"<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>1LOAD<41>+<2B><08><18>D!2D!;<08>!2<>!<21><17>1<EFBFBD>/\]2+LOAD<41>+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 (
CLEARSTACK.(<28><14><04>H<><04><14>l i(HALLOT<4F>+<2B>"<08><08><16>;a<17><15><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> <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><16><16>3 not deferred\z<00>0bIS<49>+;/<2F><08>0 +1$"<08>
6!<21>0 !d;\.*<00>+O2
 -<19>3 tight stacke1J<13><18><00>e1<65><13><17>3dictionary full<6C>$ still full \["1?STACK<43>1<EFBFBD> 8<><07>H<><14>P <09> <20>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<>\gB&'NUMBER?I0L&ge'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 /NOTFOUNDI0<49>/x<00>/
NO.EXTENSIONS<4E>+<2B>3Haeh?\xO/ INTERPRET<45>+<2B>/\<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>+<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
&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.<2E><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>/
>INTERPRET<45>/0x<00>;\<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>"<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>(<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>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<79>d

Neg7f<37>d<EFBFBD>\<13>g WRITESECTOR<4F>+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<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>,fDERROR?<3F>+d
Nef<>
0<><16>
?f<><08>a<EFBFBD><19><1B><><EFBFBD>?<3F><18>d\<13>+<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><>`<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>qeBUSOPEN<45>+
<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<><6C>?<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.*׈<00>dBUSO<03><>?<3F><><18><02><07><02><14>K<EFBFBD>O<EFBFBD> <20><11>6\I<><49>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>+<2B>a<EFBFBD>b\<13><00>bC64DEL<45>+
<18><>b<EFBFBD>4
<18><>b\<13>cC64PAGE<47>+
<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>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<17>"\,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>` EDIDECODE<44>+
<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<>a;[<19>3buffers?<3F><08> /<01><19>3stack?<3F>0"
@<40><19>3rstack?@:$><3E><15><15>

<EFBFBD>;<08><08><>}#"<08>#;
<06><16>
<14>;a\
<00><>
BYTES.MORE<52>+}<12><11><16>B"}<12><16><>\
 4<>BUFFERS<52>+%7$a;B"<08><16><08>a<>\<13>+Uj/<18>6<EFBFBD>2;<08>d2<>d<EFBFBD><17>e\<13>y<>
SAVESYSTEM<EFBFBD>+<2B>32<><17>3;<08>32<>3<EFBFBD>`x<>2<>U]<5D>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>{—d
F<17>e<EFBFBD>d;yf<79>3
save-error\<00><> BAMALLOCATE<54>+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<79>8<>\E<>+<2B><08><11><15><15>%7<>a;[<19>3buffers?<3F><08> /<01><19>3stack?<3F>0"
@<40><19>3rstack?@:$><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><>\<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-REMOVEI0<49><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><00>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>-<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<50>+<2B><17>:\<13>T:CONVEY<45>+<2B>#F<17><15><16><<19><16>3nein<69>:\<13><00>:LIMIT<49>+<00><>
;FIRST.*<2A>{<7B>; ALLOTBUFFER<45>+#;"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<>+<00>NOOP <00>ORIGIN<49>+<00>S0<,<00>R0<,
<00>DP<, GOFFSET<,QBASE<,<00>OUTPUT<,<00> INPUT<,<00> ERRORHANDLER<,VOC-LINK<,<00>UDP<,<2C>*SP@=<12><07>$<24><14>%<25>$<24>8<><02><07>F<14><01><07><00>l5SP!<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><15>_t9t&gct<63>g<EFBFBD>_t9t<39>gct<63>g\<00>t COPY2DISK<53>+<2B> <20>/<01>;[<19>3no room?<3F>$Source=0, Dest=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*byadcandaslbccbcsbeqbitbmibnebplbrkbvcbvsclccldcliclvcmpcpxcpydecdexdeyeorincinxinyjmpjsrldaldxldylsrnoporaphaphpplaplprolrorrtirtssbcsecsedseistastxstytaxtaytsxtxatxstya<79>o a z# ((zz (<28>o ,x ,y A<00> <20>5<> <20>qaa22A <00><00>qaa<10>"22A<00>.<00>.*#0,.*<2A>aq2<71><32><EFBFBD><EFBFBD><EFBFBD>+<1F><08>1<16><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>!<21><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<><4A><EFBFBD><EFBFBD>(l<>(<28><15> <20>J\Cm a% 2A
<00><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>
1F<17><17><>a?
<05>4%
$
<14><><EFBFBD><EFBFBD>
%<1B>lJ<6C><4A><EFBFBD>F<17>4%
$
<14><><EFBFBD><EFBFBD>
%<1B>lJ<6C><4A><EFBFBD>J<EFBFBD><4A><EFBFBD><15>\<00>lDUMP<4D>+<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\
UkBUFFERS<52>+%7$a;B"<08><16><08><16>k\<00>kRVSON<4F>+\lRVSOFF<46>+\,lUNLINK<4E>+\<13>+<2B>|455<>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><00><00>jPOP<4F>+<2B>3j.ST<53>+D!"<08>5\
kRELOCATE<54>+<2B><15>%7<>a;<3B><11>[<19>3kills all buffers<72><08> /<01><15><11><19>3cuts the dictionary<72>0"
@<40><19>3a tick
<EFBFBD><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>]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>wjPUSH<53>+<1C><00>jRP<52>+<00><00>jUP<55>+<00> INDEX<45>+#<17><08><>!?%F<17>5%<1B>9#
%#?<3F>><3E><00>J<><4A><EFBFBD>\<13><00>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><00>hINK-POT.*<2A><><00><><00><><00>i INIT-SYSTEM;i<><69><EFBFBD>lha<68>><3E><>vi<76>xi<78>ih<69>\h<><68>h<>J<EFBFBD>l<><6C><EFBFBD>?<3F>@؍><3E><>i<EFBFBD><69><EFBFBD><EFBFBD>a<EFBFBD><61><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<><02><07>F<14><02><07>l<13>RDROP1EXITf<13><02><0E><02>l=UNNEST^<13><02><0E><02>ls?EXIT<49><13><14><18><02><07><02>(P<>l <00>EXECUTE<54><13><07><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><><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>#WOR!IB<49>+\!"\;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><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>"
CAPITALIZED"<22><07>$<24><07>%<25>$<24>&<26>D&P<05>l !\: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 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<><02><07>FlT8<00> ERASE<53>+<2B><17> \9<00> FILL<4C> <20> 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>ʑ<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>CMOVEF<1F> S<16>D$P F%<05>l <00>(<28>&HP!%<25>l 3<00>M*<2A>+<2B><08><18>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>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<>$<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 unstructured\Ih<><68>lh<><00><>8<><02><07>F<14><><01>Ȣl/<00>CASE?b<1C> 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>!<07><0E>l +B<><42>(+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><02><01>l ,!<1B>Js<1B>PR-m<1B>BRANCH<43><18><0E><0E>$<24><0F><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!UMAX<41>+<2B><19>\)<00>UMIN<49>+<2B>[<19>\)<00>EXTEND<4E>+<2B><08>\)<0F>DABS<42>+<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><>BOUNDS<44>+<2B><08><15>\*<00><><EFBFBD>ENDLOOP<4F><50><EFBFBD>l+<00><><EFBFBD>(LOOPL<50><18><01><02><02> <0B><02><00><02>l <00><05><02><0F><>! 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!
$<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<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><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><>$<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><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>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><03><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>UNDER<45>+<2B><08>\<00>PICK<43>+#3;<12>"\<00>ROLL<4C>+<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<><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>"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>+
)"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>/<2F>2<EFBFBD><1B><>\^3'QUITI0
3^3QUIT<49>+B"B0&3\^,3 STANDARDI/O<>+/*<10>ZD\^c3'ABORTI0<49>^<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\]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>+B"<02>+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><16><16>3 not deferred\z<00>0bIS<49>+;/<2F><08>0 +1$"<08>
6!<21>0 !d;\.*<00>+O2
 -<19>3 tight stacke1J<13><18><00>e1<65><13><17>3dictionary full<6C>$ still full \["1?STACK<43>1<EFBFBD> 8<><07>H<><14>P <09> <20>h1\<13>g1<67>"/NOTFOUNDI0<49>/x<00>/
NO.EXTENSIONS<4E>+<2B>3Haeh?\xO/ INTERPRET<45>+<2B>/\<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.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[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>/
>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><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>(<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>"+<2B>,<2C>"<08>a\<13>+<2B>,aD,\q<00>,ALSO<53>+<2B>,"

-<19>3Vocabulary stack fullD,"F<17>,[D,;\q<00>,TOSS<53>+/<18><><EFBFBD>,[\r<00>-
VOCABULARY<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<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>"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+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>" <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><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><00>Z<17><16>1*<2A><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>)"<08>~'"<08>,"9.<2E><15><00>4~'"+<2B>$exists <20>>\l<00>)CREATE<54>+X D!" !" RSIVE<56>+<2B>'\<13>+<2B>'<27> <00>J<16><08><13>\hH' IMMEDIATE<54>+
@Z'\h<00>'RESTRICT<43>+
<18>Z'\i (
CLEARSTACK.(<28><14><04>H<><04><14>l i(HALLOT<4F>+<2B>"<08><08><16>;a<17><15><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&ge'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
&NUMBER?<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><08><13><08>\e<00>%
ACCUMULATE<EFBFBD>+<2B>P<12><08>"<08><1D><15>"<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><15>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>5U.R<>+<2B><17>[5\<13><00>5D.<2E>+<2B>[5<>4\#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><>`<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>qeBUSOPEN<45>+
<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<><6C>?<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.*<18><><00>dBUSO#<01><>?<3F><><18><02><07><02><14>K<EFBFBD>O<EFBFBD> <20><11>6\I<><49>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>+<2B>a<EFBFBD>b\<13><00>bC64DEL<45>+
<18><>b<EFBFBD>4
<18><>b\<13>cC64PAGE<47>+
<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>aCUROFF<46>a<EFBFBD><61><EFBFBD> <0C><>
<EFBFBD>l <00><00>aC64KEY<45>+<2B>a<EFBFBD>6[a<><1B><><EFBFBD>a<EFBFBD>a\<13>Ca#BS<42>+<00><00>a#CR<43>+
<00><00>a C64DECODE<44>+<2B>a@<1C><00><08>.?<3F>d<13>a@<1C>
<00>Q!;dP<12><15><13><08><13>
?#\<13><00>a C64EXPECT<43>+Q!;<08><17>Q!"<19>
<00>?I?<3F><1B><><EFBFBD><15>4\<13>@bKEYBOARD<52>?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><06><04>!<10><00><05><14><04>H<><04><14>
<EFBFBD><04>H<><04><03><00><01><><02>`<60><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><00>l <00>-aC64KEY?]a<><61>
]<05><02><>hl<1C>qaGETKEY<45>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>?DECODE~?<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<17>;"<08><08><18><1B><>\<13>+<2B>7;;#;;H;\<13>N?'COLDI0<49><11>+1@q@<40>-<2D>@:?<11> #??<3F>@\<13><00>@'RESTARTI0<49><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><00>?CRZ><02>?TYPEZ><04>?DELZ><06>(?PAGEZ><14>3?ATZ>
<EFBFBD>??AT?Z> <0C>i?ROW<4F>+o?<3F>\<13>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><00>=FORGET<45>+;/<2F>/$"<19>3 protected<65>*<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?#<07>'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><>\<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-REMOVEI0<49><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><00>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>-<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<50>+<2B><17>:\<13>T:CONVEY<45>+<2B>#F<17><15><16><<19><16>3nein<69>:\<13><00>:LIMIT<49>+<00><>
;FIRST.*X<><58>; ALLOTBUFFER<45>+#;"B"<08>%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-BUFFERS<52>+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>9Z"<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<><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><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<48>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>3aborted\<13>A7DISKERRI0L7<4C>8R/WI0<49>g<EFBFBD>+<2B>z"<08><18>ja<17>"#<17>32<>2q3<71>z<17>a"F<17>"<08>8<><00>$write 8<><1B><>
<18><>t#<08>\<13>+a<17><08>t<17>\<13>+<2B>{82<>2q3P<12>Z"<08><15>
<14>z#
;\<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.*X<>.*<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>#<0E><00>5.<2E>+<18><>5\<13><00>5U.<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>
6LIST<53>+<2B>3;<08>$Scr <20>3"<08>dxH5<48>$Dr `d<>56<><17><>.<00>><3E><00>?%F<17>5<EFBFBD>4<EFBFBD>3"<08>9%6$<1E>6<>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>eBUS@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<><16>
?f<><08>a<EFBFBD><19><1B><><EFBFBD>?<3F><18>d\<13>+<2B><01>+<2B><01>+