@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@W!( L(1   Y I`  d  Ld M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr d M * @  $ % CC$$)%1 Udߥ$9%: !0 S$%} DD˙`  }J)Lr J  ((  p L ()   J}L= ( L 0q A    IB JC;? D W } LL  ` W )LA!  ߰")-݆ p" } $G@LL 08`Q")<2Q0 -G$Ș݆ UL# ; p8(()(0ʥ)NQ` }$GȘ݆LU )L ݆ L GȘ ݆LL )W>Z   HH)H }p h  hyhy D L> L JJ    ! LA*` BF }7'8  M HN H` 8 Z  \LdJJ!"! GFE@F (!L }EE !E^ ^ E E7EȩEdE/EȩE  D } .L }  ;F d  ;?F7F? ( .   Z D LL d } . D  L    p  E` , d)  D L) 0BM݊L݉} ML  N݆ L NLML [ TEqEHȱEqEh 0Gȹ G} HLL GɛL  LFREE SECTORS G) *Gȩ GȽG GȌ*jj >G} C8jJ3j2CD( C202C ԠBX` N 1? l LlD:RAMDISK}.COMLu L1 L ;LHL  T`  `1  ɐ     `TU  } L ? .  t`GBJ ~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI4 0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D1:MEM.SAV J y08 B|DEHI$} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D1:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J  (` 9 V⪍ ઍ  -o} 3E:}DISK OPERATING SYSTEM II VERSION COPYRIGHT 1984 ATARI CORP.A. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDG(}E J. DUPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRES)}SF. LOCK FILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES P. FORMAT SINGLEL !N'*}#"&))9(&*)/h)''-&؆莟R'S  vL/ˢ L }Insert DOS 2.0s, type Y Λx +}DEfHI 1莏#q! @ y0ɛ8A0,' ȅ 1 1ild! 1L!NO SUCH ITEMSELECT,} ITEM OR FOR MENU! 0 .z:*{}.|{ 1 0 0JB 18L%|DL-}%DIRECTORY--SEARCH SPEC,LIST FILE?[# 0 0 &|D3" 1L!NOT A DISK FILEN !B 1L!E# 1 !BD.}ED:}:1BJ|DE 1DEBHI 1 h0ߢ 0./}  0?詛 1 y0YЛ 1 ;#L" ;#L! BL1TYPE "Y" TO DELETE...DELETE FILE SPEC0}COPY--FROM, TO?OPTION NOT ALLOWED697 FREE SECTORS COPYING---D8:COPY32.COMl# 0|D .L/%#1}##JB|DE 1BHID#E 1#0: B 1L!#͑### B 1#c$0SY2}S1}:## # # .#Ƚ# # 𩛙## 1,#PD#ELJ- <.BJD#E 3}1 1HH 0hh|DL%1}:̳# L% #D#EL% 1 0 . .0O% 1L!WILD CARDS NOT A4}LLOWED IN DESTINATION 0 <.|K}E PROGRAM AREACAUTION: A "Y" INVALIDATES MEM.SAV.FE! +L1   `*  70 2 2?} 0.* 1 y0 0)INSERT BOTH DISKS, TYPE RETURN^, 1 y038逍 N, 1L! ,@}C, t*  Lx+, 0 ^, 1 y0 , ,0,0 ,L+ ,I0 ,Vǭ0A}Ξ, 0 }, 1 y0C,ШC, 0K'!" H H 'h h Lx+!EF 5L1L!D,I,HhB}` NOT ENOUGH ROOMINSERT SOURCE DISK,TYPE RETURNINSERT DESTINATION DISK,TYPE RETURNC}`  `8 rL1`-* 1P* 1 y0Y`hhL!NAME OF FILE TO MOVE?- 0 0|DL% <.D},^ 1 70 0 .@L# .BJ 1  DEHIB V L1 ,} 1 70,L.  E}JB|,#P#DE 1 HI BDEHHII 1 B 1 ,^ 1 70,0La- B V,#PF},^ 1 70 0L#L!-* 1P* 1 y0Yj383}mm ݭG}}`8}``|* ? ɛ,`|:-)| / 1L!`DESTINATION CANT BE DOH}S.SYS0 0H{ 24Δ 28/L!/) 2 Π 2 0 ξI}hAΞB,0 J 1 BDEHI,HÝDE 1HIHIDELSAVE-GIVE J}FILE,START,END(,INIT,RUN)O S0 1`BDEPHI V` S0H 1 L!K}0 0 1L~0`PLEASE TYPE 1 LETTER,0`hhL! 70 1L0L<1 ,;ɛ7,"ɛ:ݦ1ݥL}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{NAMEM} TOO LONG B VL!` L1I H1EΝDL1|mDiE` V0`8d/8 i:222 1 LN}!ERROR- 162ɛ+,' 20*.. өr2 1``2TOO MANY DIGITSINVALID HEXAO}DECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8 uP} ECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8 u 7SLJL KL E7S LL\B[Q R}$VOLKSFORTH-83 3 S}.8 COMPILED 11AUG06CSil歰 END-TRACE5!iL'!RECOVER9hhƻƺL:J!NOOP T}i!ORIGIN; t!S0;!R0; !DP; !OFFSET;!BASE;!OUTPUT;!INPUT;! ERRORHANDLER;!V U}OC-LINK;!UDP; !SP@ "¥â¥8ƦL "SP!7"L /"UP@O"L" G"UP!^" V}iL V"RP@"L" }"RP!"L`" ">R"8ơLm" "R>"8ƦeL "R W}@"8ƦL "RDROP" #EXIT#L" #?EXIT-#i(L##EXECUTEQ#iL X}E#PERFORM:#O##i#C@#±éL}#C!#±ȱˆiL#CTOGGLE:4%#&C$###@#± Y}ñ‘L#!#±ȱȱL##+!$±ȱaȱqL$$DROPm"1$SWAPE$Š Ȣ¡ Z}L<$DUPr$8ƦȱLj$?DUP$LLr$$OVER$8ƦȱL$ROT$à [}¥Ñ‘ȱáÑL$-ROT:$$# %NIP:C$8$#%UNDER:C$$#,%PICK:&- "%##>%R \}OLL:p$"E% "p$&"&-/8$#U%2SWAP:$"$"#x%2DROP#%2DUP:$$#%+%ȡqqLi"%OR%ȡ |}^}U@U@_}P`}* @ a}   b}   c} d}e}f} @  g}  @*h}U@i}U@j}k}UUUUTl}m}n}UU@UU@@o}U@TP@p}@@q}r}s}t}@u}Pv}UU@UU@Uw}Ux}y}z}{}ZLi"%AND%ȡ11Li"%XOR&ȡQQLi"&-#&ȱ8ᥑȱLi"&NOTC&᥁񥑥L }};&NEGATE^&8S&DNEGATEo&8񥑥Ȋ񥑥᥁񥑥L e榢`c&D+& &ȱeđȱeőeeÑ ~}L&1+&aLiL&2+&&3+''''1-!'8LL'2-?'8'TRUE; }D'FALSE;Q'"-1K'_'!0Y'h'1;p'2;z'3;'4;'ON:K'C$##'OFF:Y'C$##'CLIT'8 }ƦL'LIT'8ƦiL'LITERAL:p$'%>+ 0'0#0'0# (0<=($ }L6(0=S(L(UWITHINi( &±ð ıŰLD( ](<(±åi榥Q0±L?( (U<(± }i榡±ðLA(LD(:'%)#!(>:C$(#!(0>:\&(#!(0<>:Q(A&#! )U>:C$(#!)=:!&Q(#!))D0=:% }Q(#!7)D=:m&&=)#!G)D<:$%!&>+ ("%"%+%(#: #>+C$8$#"X)MIN:%(y)")MAX:%(y)")UMAX:%(y)")U }MIN:%)y)")EXTEND:p$(#")DABS:)>+m&#")ABS:)>+\&#: #"&p$"$"C$""##)(DO:$!&*#*(?DO:$! }&$>+*"p$#%"8$##/*BOUNDS:$%C$##T*ENDLOOPu*L"$i*(LOOP*a iLL$|*(+LOOP* }aqjQi(L%*I*8ƦqqL%*J +&+BRANCH+a¥q…L& }+?BRANCH@+i(L''4+>MARK:0Y'0#'X+>RESOLVE:0$!&C$##'l++`+t'#),THE }N:)t'+w+#)),ELSE:t'+0+`+C$w+K'#)>,BEGIN:+~'#)[,WHILE:~'+~'0>+`+'%#:+p$'-)>+ 8$w++#)m,RE }PEAT:~'+0+,#),UNTIL:~'+0>+,#*,DO:0%*`+'#*,?DO:06*`+'#*,LOOP:'+0*0s*w+#*-+LOOP:'+ }0*0s*w+#*-LEAVE:s*"='p$#%"#+7-UM*[-¡ȆĆŢ&&&eŅȱeąĐܥőȥđ‘ÁL, }S-M*:p$(p$">+\&C$p$(>+ \&"A&"Y-">+m&#,-*:Y-8$#,-2*- *L:p$%#:K'BDIVISION OVERFLOW#-- }UM/MOD,.DZƥi榡ñȱȱĢf8Ǩư&Ȑ„&&&&ߠffÐ V!.#đȥÑȥ‘L/!.M/ }MOD:p$")$(>+4%%C$*."(>+\&$>+ C$"%C$' ##/.2/. jjL0./MOD:")".#0./:."%#0/MOD: }.8$#0/*/MOD:"-".#0%/*/:-/"%#0;/U/MOD:Y'C$*.#0J/UD/MOD:"Y'"*."C$"*."#1^/CMOVE/ & L }ƑL/2/CMOVE>/ &eŅeDžäƑĘL2/MOVE:"%(>+"/#"/#3/PLACE:$" }$$&"/##3 0COUNT10ii8ƦL#3'0ERASE:Y'k0#4R0FILLm0 &¦ L5 }d0HERE:!##50PAD:0'B%#50ALLOT:!$#50,:0#~'0#50C,:0#t'0#50COMPILE:"p$&"#0#60#T }IB96 1>TIB961>IN96&1BLK9621SPAN96>1TIB: 1##6K1QUERY:Q1'PIE1#1#,1'81'#7[1SCAN:"p$ }\ transient Assembler clv10oct87 \ Basis: Forth Dimensions VOL III No. 5) \ internal loading 04may85BP/re) \ Fort}h-6502 Assembler clv10oct87 \ Basis: Forth Dimensions VOL III No. 5) CR .( Loading 6502 resident Assembler...) CR}Onlyforth Assembler also definitions \ Forth-83 6502-Assembler 20oct87re : end-code context 2- @ context ! ; } Create index$0909 , $1505 , $0115 , $8011 ,$8009 , $1D0D , $8019 , $8080 ,$0080 , $1404 , $8014 , $8080 ,$8080 , $1C0}C , $801C , $2C80 ,| Variable mode: Mode: ( n -) Create c, Does> ( -) c@ mode ! ;0 Mode: .A 1 M}ode: # 2 | Mode: mem 3 Mode: ,X4 Mode: ,Y 5 Mode: X)6 Mode: )Y $F Mode: ) \ upmode cpu } 20oct87re | : upmode ( addr0 f0 - addr1 f1) IF mode @ 8 or mode ! THEN 1 mode @ $F and ?dup IF 0 DO} dup + LOOP THEN over 1+ @ and 0= ;: cpu ( 8b -) Create c, Does> ( -) c@ c, mem ; 00 cpu brk $18 cpu clc $}D8 cpu cld$58 cpu cli $B8 cpu clv $CA cpu dex$88 cpu dey $E8 cpu inx $C8 cpu iny$EA cpu nop $48 cpu pha $08 cpu php$68 cp}u pla $28 cpu plp $40 cpu rti$60 cpu rts $38 cpu sec $F8 cpu sed$78 cpu sei $AA cpu tax $A8 cpu tay$BA cpu tsx $8A cpu txa} $9A cpu txs$98 cpu tya \ m/cpu 20oct87re : m/cpu ( mode opcode -) Create c, , Does> dup} 1+ @ $80 and IF $10 mode +! THEN over $FF00 and upmode upmode IF mem true Abort" invalid" THEN c@ mode @ index + c@ + c, }mode @ 7 and IF mode @ $F and 7 < IF c, ELSE , THEN THEN mem ;$1C6E $60 m/cpu adc $1C6E $20 m/cpu and $1C6E $C0 m/c}pu cmp $1C6E $40 m/cpu eor $1C6E $A0 m/cpu lda $1C6E $00 m/cpu ora $1C6E $E0 m/cpu sbc $1C6C $80 m/cpu sta $0D0D $01 m/}cpu asl $0C0C $C1 m/cpu dec $0C0C $E1 m/cpu inc $0D0D $41 m/cpu lsr $0D0D $21 m/cpu rol $0D0D $61 m/cpu ror $0414 $81 m}/cpu stx $0486 $E0 m/cpu cpx $0486 $C0 m/cpu cpy $1496 $A2 m/cpu ldx $0C8E $A0 m/cpu ldy $048C $80 m/cpu sty $0480 $14 }m/cpu jsr $8480 $40 m/cpu jmp $0484 $20 m/cpu bit\ Assembler conditionals 20oct87re | : range? ( branch -- bran}ch ) dup abs $7F u> Abort" out of range " ; : [[ ( BEGIN) here ;: ?] ( UNTIL) c, here 1+ - range? c, ; : ?[ ( IF) } c, here 0 c, ;: ?[[ ( WHILE) ?[ swap ;: ]? ( THEN) here over c@ IF swap ! ELSE over 1+ - range? swap c! THEN ;} : ][ ( ELSE) here 1+ 1 jmp swap here over 1+ - range? swap c! ; : ]] ( AGAIN) jmp ;: ]]? ( REPEAT) jmp ]? ;} \ Assembler conditionals 20oct87re $90 Constant CS $B0 Constant CC$D0 Constant 0= $F0 Constant 0<>$10 }Constant 0< $30 Constant 0>=$50 Constant VS $70 Constant VC: not $20 [ Forth ] xor ;: beq 0<> ?] ; : bmi} 0>= ?] ;: bne 0= ?] ; : bpl 0< ?] ;: bcc CS ?] ; : bvc VS ?] ;: bcs CC ?] ; : bvs VC ?] ;\} 2inc/2dec winc/wdec 20oct87re : 2inc ( adr -- ) dup lda clc 2 # adc dup sta CS ?[ swap 1+ inc ]? ;: 2}dec ( adr -- ) dup lda sec 2 # sbc dup sta CC ?[ swap 1+ dec ]? ;: winc ( adr -- ) dup inc 0= ?[ swap }1+ inc ]? ;: wdec ( adr -- ) dup lda 0= ?[ over 1+ dec ]? dec ; : ;c: recover jsr end-code ] 0 last ! 0 ; }\ ;code Code code> bp/re03feb85 Onlyforth : Assembler Assembler [ Assembler ] mem ;: ;Code [compile] Doe}s> -3 allot [compile] ; -2 allot Assembler ; immediate : Code Create here dup 2- ! Assembler ; : >label ( adr} -) here | Create immediate swap , 4 hallot heap 1 and hallot ( 6502-alig) here 4 - heap 4 cmove heap last @ count} $1F and + ! dp ! Does> ( - adr) @ state @ IF [compile] Literal THEN ; : Label [ Assembler ] here >la}bel Assembler ; Onlyforth %>+$#"!&>+'C$&C$+ ##71SKIP:"p$>+$#"-)>+'C$&C$+ ##71/STRING:$)$$%%!&#a{8 `81 }CAPITAL2 1L9 2 CAPITALIZE02±á…ĈLȱ 1L=2S2Ƞ.1eąĭ/1eŅ8.1¥/1ð .1 }/1L2=ѥťL2ąƥŅǡѥť(ȥ8.1ȥ/1e榠 ȱÈȑ }±  L=!2SOURCE:Q11##=3WORD:!3Q2#=-3PARSE:"!3,1#1$C$"1"$!&p$")!&,1$#=>3NAME:B43.2# }#>p3STATE9>3EASCII:B43#>+(#>3,":'"F30$&00#>3"LIT:""4%/0%""#>3(":3#>3":0 }33#?3(.":3/0H#?4.":0 43#?4A(:')F3%#?)4B.(:')F3H#?;4A\:,1#D /&D-,1##?N4B\\:M,1##?j }4\NEEDS:w3U>"%>+R4#?{4HEX:'!##?4DECIMAL:' !##@4DIGIT?:'0!&p$' )>+'!&p$' )>+!#$) }$+#8$Y'#@4 ACCUMULATE:C$"C$!#Y-8$$!#Y-&"#@5CONVERT:&/04>+5+'#:*6#Q(#:/0K'*6$#:'/0#A25D }PL9:>+ #%8$ #Y'#:>+ #8$">+m&$8$x5#&$+#8$K'#:'&+>+ ' K'#'$+>+ 'K'#'H+>+ 'K'#'%+> }+~'K'#Y'#:',$-)C$'.-)%#:x5#K'-)+#t'x5$#9Cr5NUMBER?:!VAp$/0*6#x5'Y'"''$R5|5\5'-+>+ #K'" }R5|5\55>+ !#R5|5\54Q(|556R55\54Q(>+h56Q(|5x5'R55\5+#C06NUMBER::6$Q(B?(>+)#D6LAST9:6#$ }#D6HIDE:6>+ ='#<###D6REVEAL:6>+ ='<###D 7RECURSIVE:7#:6>+ 4%#%$#8$#D*7 IMMEDIATE:'@<7# }DT7RESTRICT:'<7#El7 CLEARSTACK7ȱLE7HALLOT:!#$!&C$ "&p$$!&p$!#~'E%$!&/7!##E7HEAP: }!#'#E7HEAP?:7M"g(#:p$0$!&p$77C$/7$!&6$7#8ơiqeHeL+:"6#V:##F7DO }ES>:0O8'L00$8#:p$'%'-)!&#:0'%'-)>+p$p$&0$!&&/t'6$t'0#G_8?HEAD9G8|:8#+#K'8## }H8WARNING9:8#+#6#<#="%>+CC6#: 4EXISTS ^H#H8CREATE:081#0<##0w3#p$t'' g(A&B INVALID NAME0 }6#&088#>+ t'8$p$y808' <7y8!#+88$7Y'0O8LC89Ʊǥi榡ıLD(đáāLi }áH8)e…h) H…håаЪL&J!9>NAME:!#p$>+%'!&C$9$>+%%#+"%#:/0'%%#J :NAME>: }p$>:C$#' %>+##JN:>BODY:&#Jp:.NAME:$>+p$7>+ 4|/0'%H+ 4???CC#K:::*96<##<#?Y'O88 }ơieLK:;:Y'+0#?7#K:CONSTANT:*90O88ƦȱLK;VARIABLE:*9~'0#L8; }UALLOT:p$"#%')B USERAREA FULL"#C$"$#LO;USER:*9~'X;0O88ƦeeLL;ALIAS:*96#p$# }' %>+ '0+' <7>:##M;VP9<<<M;CURRENT9+^Hp$&:CC+8$#Pa=(FIND=)Ơªȱ…ÆLD( })e…ǩeÅȤƱˈȑǑLA(=±á…)8e…å) L">‘8Ʀ 0IȘ }$LT=FIND:#+='4%#=>+"%=#$;&)>+ C$='+"%Y'#TN>':w3U>Q(BWHAT?#T>[COMPILE]: }>0#T>[']:>(#T> NULLSTRING?:p$#Q(p$>+"%#iȱiLU> >INTERPRET>]?V ?NOTFOUND"@??V? NO.EXTEN }SIONS:BWHAT?#V/? INTERPRET:?:@w3U>$>+t'%>+O#?B COMPILE ONLY>+#:6Q(>+)??:@w3U>$>+)>+O#?0?>+#: }6$>+)>+C$((+)??WM?A[:']?<@?3'#W?]:'?<@?3'#:K'BCRASH#X?DEFER:*9'?0O8HȱhL }X@(IS:"p$&"###:#')?#$-)C$'?#-)%A&B NOT DEFERRED#X6@BIS:>p$L@x:3#>+ 0<@0###:A' (B TIGHT }STACK76>+p$7>+V:+'!&jGK'BDICTIONARY FULL#Y{@?STACK@ 8ȥ  V!@#ťȱ妠L V!K'B STACK }EMPTYZ@.STATUS"@p!9""##Z5APUSH:"C$p$"#"CA""#[OARDEPTH:!#"&!&.#[nADEPTH: "!#C$!&.#:3#>+ } 4] # 4 OK#\A(QUIT:?AHc1Y?A+\A'QUIT"@A\AQUIT:!#"?A\A STANDARDI/O:' !'/#\A'ABORT"@p!\B }ABORT:73! BBA]&BSCR9]+BB#,1#MB#A]SB(ABORT":3C$>+"7"!s }##8$#:3C$>+!s##8$#^BABORT":0B3#^BERROR":0B3#_BBL; _B -TRAILINGC &eÅŤ }ØHL+L+`BSPACE:BH#`;CSPACES:Y'6*CC*s*#:0='#aMCHOLD:K'fC$fC###apC<#:fCfC##aC#> }:%fC#fC$!&#aCSIGN:(>+'-wC#aC#:!#g/$' $(>+'%'0%wC#aC#S:C%=)>+#bCD.R:%4%)C }C$CC$$)$!&VCH#b D.R:C$)$D#b5DU.R:Y'C$D#bHDD.:Y'DCC#bZD.:)_D#bkDU.:Y'_D#cyD.S: "!#$!& }' )]*6**#~D~'*s*#cDC/L;(cDL/S;dDPAUSEdDLOCK:p$#M"-)>+8$#p$#>+D+M"C$##dDUNLOCK:p }$D'#h8hLȱi榢L`"e EFILE;eSEPREV99e_EB/BUF;ppELIMIT;p~EFIRS }T9:#' %#:V:4%&(C$7%#:7!#""#$>+^p$"'!&""#"$'p$"(C$"&V:(%>+."7>+"&E>+$"&E>+ } "&>:&)+ #+#*Fiȱiɠ…ʱ…5ȥɐ ĥLoFʥ˰ ʁ±ʑLFʅ¥˅LFFLm": }!#$>+p$"'!&(F"+#:M"&p$#M"!&>+(%#C$0g(>+p$#&#$#'+#+%#:!(F1<%* %*#%g(>+ '<*#' }*s*%<#%g(>+ '<<##:$FFF7C$!&7!#Y'6##uECLEAR:0p$M"&G!##uFG(FORGET:p$7B IS SYMBOLE&G#u`G }FORGET:>p$' #(B PROTECTED:p$7>+V:+='='jG#uGEMPTY:' #M"&G'" #"##vGSAVE:0M"&G!#p$='='#$='# }#$Q(>+M"}!'/#vGBYE:p!M#:YIK-)>+K' ##vHSTOP?:eI>+*H*HY'#v>H?CR:ID' !&)>+H#:*9p$0&O8L }$8#!#%s##wXHOUTPUT::*9?O8L$8!##wHEMITHwHCRHwHTYPEHwHDELHwHPAGEHwHATH wHAT?H wH }ROW:H8$#wHCOL:H"%#:*9p$0&O8L$8#!#%s##w IINPUT::*9?O8L$8!##w7IKEY&IwSIKEY?&Iw^IDECODE&IwjI }EXPECT&IxSEAL:Y''+ }#:Y'fE#EE##yxI'COLD"@p!:IIJ= 4volksFORTH-83 REV 3.81.03HKy J'RESTART"@p!:'A<@AQJ' #!#'p!<@"B.B }zFJCOLDJJHHX i­ iù J J @ ! i iȱ ȱhhK } L{wJRESTART KJHWHLJ;KiL+%H$H`,K !KL+;@KLJKLBKJ65KEY:>KDK>+HK*K#QK }#BS;~mK#CR;yK#ESC;K65DECODE:sK+>+p$>+H'#K+>+ p$E1##"%%"C$#"H&#K65EXPECT:E1#Y' }p$E1#(>+ YIsI+%CC#KKEYBOARDHIYKKKKHH`L(EMIT3L LLm";()L65EMIT:1L#JL65CR:KSL }#[L65DEL:sKSLCCsKSL#lL65PAGE:'}H#L65AT:'U#'T##L65AT?:'T#'U##L65TYPE:]*6* *#H*s }*#LDISPLAYHSLbLLtLLLLMJ J l LB/BLK;MR/O;$MW/O;0MR/W; +Y?+P#NB File Error#[PINCLUDED:P#"*MNp$'(>+8$jP0'PZ01#,1 }#+ 4 FileError:oD.B"P##PFILE":P'PBk00'PBk0'"43/0PC$/PY'#PHINCLUDE":PP#|#QFORTH-83:#}8Q } ASSEMBLER<RR<}PUSHA;+}_QPUSH0A;+}mQPUSH;+}|QRP;}QUP;}QSP;}QIP;}QN;}QPUTA; }}QW;}QSETUP;&~QNEXT;~QXYNEXT;J~QPOPTWO;#~RPOP;m"IQ SAVE-SYSTEM:''#}!'!&'#0 }'#P6MN8$p$''$O8$p$}!'!&0}!'!&!&&$O8$''#''#' '#p$''$O8$N8$#:'Np$'(>+ } 4 File Error:oD.B8$P#H''P#vO'(>+8$'C$H+%P#N8$H#RDIR:3D:*.*/0R#SDIR":PR#  |HEX8FFF SP!022F CONSTANT SDMCTL026F CONSTANT GPRIORD000 CONSTANT HPOS0D01D CONSTANT GRACTLD407 CONSTANT PMBASE}230 CONSTANT SDLSTLD40B CONSTANT VCOUNTA000 CONSTANT SCREEN0BF60 CONSTANT SCREEN102C0 CONSTANT PCOLR002C4 CONST}ANT COLOR002C5 CONSTANT COLOR102C6 CONSTANT COLOR202C8 CONSTANT COLOR40278 CONSTANT STICK0D004 CONSTANT P0PFD01E }CONSTANT HITCLRVARIABLE XPOSVARIABLE YPOSVARIABLE TESTXYVARIABLE MILLIVARIABLE ODLISTVARIABLE COLOR0OVARIABLE} COLOR1OVARIABLE COLOR2OVARIABLE COLOR4OVARIABLE ZCVARIABLE ZZ VARIABLE ZAVARIABLE ZA1VARIABLE DLIST -2 ALLOT}70 C, 70 C, 70 C,4D C, SCREEN0 ,0D0D , 0D0D , 0D0D , 0D0D ,0D0D , 0D0D , 0D0D , 0D0D ,0D0D , 0D0D , 0D0D , 0D0D ,}0D0D , 0D0D , 0D0D , 0D0D ,0D0D , 0D0D , 0D0D , 0D0D ,0D0D , 0D0D , 0D0D , 0D0D ,0D0D , 0D0D , 0D0D , 0D0D ,0D0D , }: HALLO-WELT CR ." Hallo Welt. Hier ist volksForth" CR KEY DROP ;' HALLO-WELT IS 'COLDSAVESAVE-SYSTEM D:!}HALLO.COM 0D0D , 0D0D , 0D0D ,0D0D , 0D0D , 0D0D , 0D0D ,0D0D , 0D0D , 0D0D , 0D C,42 C, SCREEN1 ,0202 , 02 ,41 C, DLIST ,}VARIABLE SPRITE0 9 ALLOTFF SPRITE0 C!81 SPRITE0 1 + C!81 SPRITE0 2 + C!81 SPRITE0 3 + C!81 SPRITE0 4 + C!81 S}PRITE0 5 + C!81 SPRITE0 6 + C!81 SPRITE0 7 + C!FF SPRITE0 8 + C!: GCLS SCREEN0 C80 0 FILL ;: READ-DATSCREEN0} C80 SOURCE-ID @ READ-FILESOURCE-ID @ CLOSE-FILE ;: INCLUDED-DATSOURCE-ID @ >R R/O OPEN-FILE DUP $80 < IF DROP}SOURCE-ID ! READ-DAT ELSE." FEHLER:" . ABORT THEN R> SOURCE-ID ! ;: FILE-DAT"FNBUF $50 BL FILL HERE $50 BL FILL A}SCII " WORDCOUNT FNBUF SWAP CMOVE FNBUF 0 INCLUDED-DAT ;: FILE-DATFNBUF $50 BL FILL " D:MULBI.BIN"COUNT FNBUF SW}AP CMOVE FNBUF 0 INCLUDED-DAT ;: INITPMSDMCTL C@ 1C OR SDMCTL C!3 GRACTL C!1 GPRIOR C!90 PMBASE C! ;: DEL}AYZZ @ 0 DOLOOP ;: PM0POS9400 FF 0 FILLSPRITE0 9400 YPOS C@ + 9 MOVEXPOS C@ HPOS0 C!DELAY ;: BEWEGE } PAGE ZA1 ! BEGIN FF ZZ !STICK0 C@DUP 0E = IF YPOS C@ 1 - YPOS C! 1 TESTXY C! 1 ZA @ + DUP ZA  }! . CR PM0POS THENDUP 0D = IF YPOS C@ 1 + YPOS C! 2 TESTXY C! 1 ZA @ + DUP ZA ! . CR PM0POS THENDUP 07 = IF XPOS C@ 1 } + XPOS C! 3 TESTXY C! 1 ZA @ + DUP ZA ! . CR PM0POS THEN 0B = IF XPOS C@ 1 - XPOS C! 4 TESTXY C! 1 ZA @ + DUP ZA ! .  }CR PM0POS THENP0PF C@ 0 > IF500 ZZ ! TESTXY C@ 1 = IF YPOS C@ 4 + YPOS C! 1 ZC @ + ZC ! PM0POS THENTESTXY } C@ 2 = IF YPOS C@ 4 - YPOS C! 1 ZC @ + ZC ! PM0POS THENTESTXY C@ 3 = IF XPOS C@ 4 - XPOS C! 1 ZC @ + ZC ! PM0POS THEN}TESTXY C@ 4 = IF XPOS C@ 4 + XPOS C! 1 ZC @ + ZC ! PM0POS THENTHEN ZC @ A = IF ZA1 @ ZA ! THEN 1} HITCLR C!0 TESTXY C!ZA @ ZA1 @ = UNTIL 0 ZC ! 0 ZA ! 0 ZA1 !PAGE ." wegpunkte/colli erreicht ! " CR ;}: INITINITPM70 PCOLR0 C!0C COLOR4 C!DLIST SDLSTL !4 2BF C!FILE-DAT32 DUP XPOS C! YPOS C! PM0POS}0 ZC !0 ZA !0 ZA1 !DECIMAl ;}i榡±ðLA(LD(:'%)#!(>:C$(#!(0>:\&(#!(0<>:Q(A&#! )U>:C$(#!)=:!&Q(#!))D0=:%}Q(#!7)D=:m&&=)#!G)D<:$%!&>+ ("%"%+%(#: #>+C$8$#"X)MIN:%(y)")MAX:%(y)")UMAX:%(y)")U}MIN:%)y)")EXTEND:p$(#")DABS:)>+m&#")ABS:)>+\&#: #"&p$"$"C$""##)(DO:$!&*#*(?DO:$!}&$>+*"p$#%"8$##/*BOUNDS:$%C$##T*ENDLOOPu*L"$i*(LOOP*a iLL$|*(+LOOP*}aqjQi(L%*I*8ƦqqL%*J +&+BRANCH+a¥q…L&}+?BRANCH@+i(L''4+>MARK:0Y'0#'X+>RESOLVE:0$!&C$##'l++`+t'#),THE}N:)t'+w+#)),ELSE:t'+0+`+C$w+K'#)>,BEGIN:+~'#)[,WHILE:~'+~'0>+`+'%#:+p$'-)>+ 8$w++#)m,RE}PEAT:~'+0+,#),UNTIL:~'+0>+,#*,DO:0%*`+'#*,?DO:06*`+'#*,LOOP:'+0*0s*w+#*-+LOOP:'+}0*0s*w+#*-LEAVE:s*"='p$#%"#+7-UM*[-¡ȆĆŢ&&&eŅȱeąĐܥőȥđ‘ÁL,}S-M*:p$(p$">+\&C$p$(>+ \&"A&"Y-">+m&#,-*:Y-8$#,-2*- *L:p$%#:K'BDIVISION OVERFLOW#--}UM/MOD,.DZƥi榡ñȱȱĢf8Ǩư&Ȑ„&&&&ߠffÐ V!.#đȥÑȥ‘L/!.M/}MOD:p$")$(>+4%%C$*."(>+\&$>+ C$"%C$' ##/.2/. jjL0./MOD:")".#0./:."%#0/MOD: }.8$#0/*/MOD:"-".#0%/*/:-/"%#0;/U/MOD:Y'C$*.#0J/UD/MOD:"Y'"*."C$"*."#1^/CMOVE/ & L!}ƑL/2/CMOVE>/ &eŅeDžäƑĘL2/MOVE:"%(>+"/#"/#3/PLACE:$""}$$&"/##3 0COUNT10ii8ƦL#3'0ERASE:Y'k0#4R0FILLm0 &¦ L5#}d0HERE:!##50PAD:0'B%#50ALLOT:!$#50,:0#~'0#50C,:0#t'0#50COMPILE:"p$&"#0#60#T$}IB96 1>TIB961>IN96&1BLK9621SPAN96>1TIB: 1##6K1QUERY:Q1'PIE1#1#,1'81'#7[1SCAN:"p$%}>+$#"!&>+'C$&C$+ ##71SKIP:"p$>+$#"-)>+'C$&C$+ ##71/STRING:$)$$%%!&#a{8 `81&}CAPITAL2 1L9 2 CAPITALIZE02±á…ĈLȱ 1L=2S2Ƞ.1eąĭ/1eŅ8.1¥/1ð .1'}/1L2=ѥťL2ąƥŅǡѥť(ȥ8.1ȥ/1e榠 ȱÈȑ(}±  L=!2SOURCE:Q11##=3WORD:!3Q2#=-3PARSE:"!3,1#1$C$"1"$!&p$")!&,1$#=>3NAME:B43.2#)}#>p3STATE9>3EASCII:B43#>+(#>3,":'"F30$&00#>3"LIT:""4%/0%""#>3(":3#>3":0*}33#?3(.":3/0H#?4.":0 43#?4A(:')F3%#?)4B.(:')F3H#?;4A\:,1#D /&D-,1##?N4B\\:M,1##?j+}4\NEEDS:w3U>"%>+R4#?{4HEX:'!##?4DECIMAL:' !##@4DIGIT?:'0!&p$' )>+'!&p$' )>+!#$),}$+#8$Y'#@4 ACCUMULATE:C$"C$!#Y-8$$!#Y-&"#@5CONVERT:&/04>+5+'#:*6#Q(#:/0K'*6$#:'/0#A25D-}PL9:>+ #%8$ #Y'#:>+ #8$">+m&$8$x5#&$+#8$K'#:'&+>+ ' K'#'$+>+ 'K'#'H+>+ 'K'#'%+>.}+~'K'#Y'#:',$-)C$'.-)%#:x5#K'-)+#t'x5$#9Cr5NUMBER?:!VAp$/0*6#x5'Y'"''$R5|5\5'-+>+ #K'"/}R5|5\55>+ !#R5|5\54Q(|556R55\54Q(>+h56Q(|5x5'R55\5+#C06NUMBER::6$Q(B?(>+)#D6LAST9:6#$0}#D6HIDE:6>+ ='#<###D6REVEAL:6>+ ='<###D 7RECURSIVE:7#:6>+ 4%#%$#8$#D*7 IMMEDIATE:'@<7#1}DT7RESTRICT:'<7#El7 CLEARSTACK7ȱLE7HALLOT:!#$!&C$ "&p$$!&p$!#~'E%$!&/7!##E7HEAP:2}!#'#E7HEAP?:7M"g(#:p$0$!&p$77C$/7$!&6$7#8ơiqeHeL+:"6#V:##F7DO3}ES>:0O8'L00$8#:p$'%'-)!&#:0'%'-)>+p$p$&0$!&&/t'6$t'0#G_8?HEAD9G8|:8#+#K'8##4}H8WARNING9:8#+#6#<#="%>+CC6#: 4EXISTS ^H#H8CREATE:081#0<##0w3#p$t'' g(A&B INVALID NAME05}6#&088#>+ t'8$p$y808' <7y8!#+88$7Y'0O8LC89Ʊǥi榡ıLD(đáāLi6}áH8)e…h) H…håаЪL&J!9>NAME:!#p$>+%'!&C$9$>+%%#+"%#:/0'%%#J :NAME>:7}p$>:C$#' %>+##JN:>BODY:&#Jp:.NAME:$>+p$7>+ 4|/0'%H+ 4???CC#K:::*96<##<#?Y'O888}ơieLK:;:Y'+0#?7#K:CONSTANT:*90O88ƦȱLK;VARIABLE:*9~'0#L8;9}UALLOT:p$"#%')B USERAREA FULL"#C$"$#LO;USER:*9~'X;0O88ƦeeLL;ALIAS:*96#p$#:}' %>+ '0+' <7>:##M;VP9<<<M;CURRENT9+^Hp$&:CC+8$#Pa=(FIND=)Ơªȱ…ÆLD(>})e…ǩeÅȤƱˈȑǑLA(=±á…)8e…å) L">‘8Ʀ 0IȘ?}$LT=FIND:#+='4%#=>+"%=#$;&)>+ C$='+"%Y'#TN>':w3U>Q(BWHAT?#T>[COMPILE]:@}>0#T>[']:>(#T> NULLSTRING?:p$#Q(p$>+"%#iȱiLU> >INTERPRET>]?V ?NOTFOUND"@??V? NO.EXTENA}SIONS:BWHAT?#V/? INTERPRET:?:@w3U>$>+t'%>+O#?B COMPILE ONLY>+#:6Q(>+)??:@w3U>$>+)>+O#?0?>+#:B}6$>+)>+C$((+)??WM?A[:']?<@?3'#W?]:'?<@?3'#:K'BCRASH#X?DEFER:*9'?0O8HȱhLC}X@(IS:"p$&"###:#')?#$-)C$'?#-)%A&B NOT DEFERRED#X6@BIS:>p$L@x:3#>+ 0<@0###:A' (B TIGHT D}STACK76>+p$7>+V:+'!&jGK'BDICTIONARY FULL#Y{@?STACK@ 8ȥ  V!@#ťȱ妠L V!K'B STACK E}EMPTYZ@.STATUS"@p!9""##Z5APUSH:"C$p$"#"CA""#[OARDEPTH:!#"&!&.#[nADEPTH: "!#C$!&.#:3#>+ F} 4] # 4 OK#\A(QUIT:?AHc1Y?A+\A'QUIT"@A\AQUIT:!#"?A\A STANDARDI/O:' !'/#\A'ABORT"@p!\BG}ABORT:73! BBA]&BSCR9]+BB#,1#MB#A]SB(ABORT":3C$>+"7"!sH}##8$#:3C$>+!s##8$#^BABORT":0B3#^BERROR":0B3#_BBL; _B -TRAILINGC &eÅŤ I}ØHL+L+`BSPACE:BH#`;CSPACES:Y'6*CC*s*#:0='#aMCHOLD:K'fC$fC###apC<#:fCfC##aC#>J}:%fC#fC$!&#aCSIGN:(>+'-wC#aC#:!#g/$' $(>+'%'0%wC#aC#S:C%=)>+#bCD.R:%4%)CK}C$CC$$)$!&VCH#b D.R:C$)$D#b5DU.R:Y'C$D#bHDD.:Y'DCC#bZD.:)_D#bkDU.:Y'_D#cyD.S: "!#$!&L}' )]*6**#~D~'*s*#cDC/L;(cDL/S;dDPAUSEdDLOCK:p$#M"-)>+8$#p$#>+D+M"C$##dDUNLOCK:pM}$D'#h8hLȱi榢L`"e EFILE;eSEPREV99e_EB/BUF;ppELIMIT;p~EFIRSN}T9:#' %#:V:4%&(C$7%#:7!#""#$>+^p$"'!&""#"$'p$"(C$"&V:(%>+."7>+"&E>+$"&E>+O} "&>:&)+ #+#*Fiȱiɠ…ʱ…5ȥɐ ĥLoFʥ˰ ʁ±ʑLFʅ¥˅LFFLm":P}!#$>+p$"'!&(F"+#:M"&p$#M"!&>+(%#C$0g(>+p$#&#$#'+#+%#:!(F1<%* %*#%g(>+ '<*#'Q}*s*%<#%g(>+ '<<##:$FFF7C$!&7!#Y'6##uECLEAR:0p$M"&G!##uFG(FORGET:p$7B IS SYMBOLE&G#u`GR}FORGET:>p$' #(B PROTECTED:p$7>+V:+='='jG#uGEMPTY:' #M"&G'" #"##vGSAVE:0M"&G!#p$='='#$='#S}#$Q(>+M"}!'/#vGBYE:p!M#:YIK-)>+K' ##vHSTOP?:eI>+*H*HY'#v>H?CR:ID' !&)>+H#:*9p$0&O8LT}$8#!#%s##wXHOUTPUT::*9?O8L$8!##wHEMITHwHCRHwHTYPEHwHDELHwHPAGEHwHATH wHAT?H wHU}ROW:H8$#wHCOL:H"%#:*9p$0&O8L$8#!#%s##w IINPUT::*9?O8L$8!##w7IKEY&IwSIKEY?&Iw^IDECODE&IwjIV}EXPECT&IxSEAL:Y''+W}#:Y'fE#EE##yxI'COLD"@p!:IIJ= 4volksFORTH-83 REV 3.81.03HKy J'RESTART"@p!:'A<@AQJ' #!#'p!<@"B.BX}zFJCOLDJJHHX i­ iù J J @ ! i iȱ ȱhhK Y} L{wJRESTART KJHWHLJ;KiL+%H$H`,K !KL+;@KLJKLBKJ65KEY:>KDK>+HK*K#QKZ}#BS;~mK#CR;yK#ESC;K65DECODE:sK+>+p$>+H'#K+>+ p$E1##"%%"C$#"H&#K65EXPECT:E1#Y'[}p$E1#(>+ YIsI+%CC#KKEYBOARDHIYKKKKHH`L(EMIT3L LLm";()L65EMIT:1L#JL65CR:KSL\}#[L65DEL:sKSLCCsKSL#lL65PAGE:'}H#L65AT:'U#'T##L65AT?:'T#'U##L65TYPE:]*6* *#H*s]}*#LDISPLAYHSLbLLtLLLLMJ J l LB/BLK;MR/O;$MW/O;0MR/W; +Y?+P#NB File Error#[PINCLUDED:P#"*MNp$'(>+8$jP0'PZ01#,1e}#+ 4 FileError:oD.B"P##PFILE":P'PBk00'PBk0'"43/0PC$/PY'#PHINCLUDE":PP#|#QFORTH-83:#}8Qf} ASSEMBLER<RR<}PUSHA;+}_QPUSH0A;+}mQPUSH;+}|QRP;}QUP;}QSP;}QIP;}QN;}QPUTA;g}}QW;}QSETUP;&~QNEXT;~QXYNEXT;J~QPOPTWO;#~RPOP;m"BYE S  _|b%DOS SYSb*'DUP SYSB]MULBI BINBiQFTH COMBFJOYTEX F gVFORTH COMBvCALL F BAS65 F BFSAVE F sSAVESYS F 0AS65 F OTAS65 F  SIEVE F SAVESYS F 4TH F (README TXTHANDBOOKTXTCR .( Build 4TH.COM from plain kernel )\needs SAVE-SYSTEM INCLUDE" D:SAVESYS.F"SAVESAVE-SYSTEM D:4TH.COMCR.( 4TH.COM!r} saved )CR : SAVE-SYSTEM $FFFF $600 ! ORIGIN 8 - $602 ! HERE $604 ! FILE" W/O OPEN-FILE DROP DUP $600 6 ROT WRI%t}TE-FILE ( save header ) DROP DUP ORIGIN 8 - HERE ORIGIN 8 - - 1+ ROT WRITE-FILE DROP $02E0 $602 ! $02E1 %u} $604 ! $2000 $606 ! DUP $602 6 ROT WRITE-FILE DROP CLOSE-FILE DROP ;$[( Call Machine Routine at "addr" )( return value is A-Reg and Y-Reg)HEX CODE CALL ( addr -- res ) 4C # lda n sta Sw}P x) lda n 1+ sta SP )y lda n 2+ sta n jsr n sta n 1+ sty 00 # ldx 01 # ldy n lda SP x) sta n 1x}+ lda SP )y sta next jmp end-code&EMPTYZ@.STATUS"@p!9""##Z5APUSH:"C$p$"#"CA""#[OARDEPTH:!#"&!&.#[nADEPTH: "!#C$!&.#:3#>+ z} 4] # 4 OK#\A(QUIT:?AHc1Y?A+\A'QUIT"@A\AQUIT:!#"?A\A STANDARDI/O:' !'/#\A'ABORT"@p!\B{}ABORT:73! BBA]&BSCR9]+BB#,1#MB#A]SB(ABORT":3C$>+"7"!s|}##8$#:3C$>+!s##8$#^BABORT":0B3#^BERROR":0B3#_BBL; _B -TRAILINGC &eÅŤ }}ØHL+L+`BSPACE:BH#`;CSPACES:Y'6*CC*s*#:0='#aMCHOLD:K'fC$fC###apC<#:fCfC##aC#>~}:%fC#fC$!&#aCSIGN:(>+'-wC#aC#:!#g/$' $(>+'%'0%wC#aC#S:C%=)>+#bCD.R:%4%)C}C$CC$$)$!&VCH#b D.R:C$)$D#b5DU.R:Y'C$D#bHDD.:Y'DCC#bZD.:)_D#bkDU.:Y'_D#cyD.S: "!#$!&}' )]*6**#~D~'*s*#cDC/L;(cDL/S;dDPAUSEdDLOCK:p$#M"-)>+8$#p$#>+D+M"C$##dDUNLOCK:p}$D'#h8hLȱi榢L`"e EFILE;eSEPREV99e_EB/BUF;ppELIMIT;p~EFIRS}T9:#' %#:V:4%&(C$7%#:7!#""#$>+^p$"'!&""#"$'p$"(C$"&V:(%>+."7>+"&E>+$"&E>+} "&>:&)+ #+#*Fiȱiɠ…ʱ…5ȥɐ ĥLoFʥ˰ ʁ±ʑLFʅ¥˅LFFLm":}!#$>+p$"'!&(F"+#:M"&p$#M"!&>+(%#C$0g(>+p$#&#$#'+#+%#:!(F1<%* %*#%g(>+ '<*#'}*s*%<#%g(>+ '<<##:$FFF7C$!&7!#Y'6##uECLEAR:0p$M"&G!##uFG(FORGET:p$7B IS SYMBOLE&G#u`G}FORGET:>p$' #(B PROTECTED:p$7>+V:+='='jG#uGEMPTY:' #M"&G'" #"##vGSAVE:0M"&G!#p$='='#$='#}#$Q(>+M"}!'/#vGBYE:p!.M#:YIK-)>+K' ##vHSTOP?:eI>+*H*HY'#v>H?CR:ID' !&)>+H#:*9p$0&O8L}$8#!#%s##wXHOUTPUT::*9?O8L$8!##wHEMITHwHCRHwHTYPEHwHDELHwHPAGEHwHATH wHAT?H wH}ROW:H8$#wHCOL:H"%#:*9p$0&O8L$8#!#%s##w IINPUT::*9?O8L$8!##w7IKEY&IwSIKEY?&Iw^IDECODE&IwjI}EXPECT&IxSEAL:Y''+}#:Y'fE#EE##yxI'COLD"@T:IIHJ= 4volksFORTH-83 REV 3.81.03H Ky J'RESTART"@p!:'A<@ASJ' #!#'p!<@"B}.BzHJCOLDJJHHX i­ iù J J  ! i iȱ ȱhhK } L{yJRESTART KJHYHLJ;KiL+%H$H`/K $KL+;CKLMKLEKK65KEY:AKDK>+KK-K#}TK#BS;~pK#CR;|K#ESC;K65DECODE:vK+>+p$>+H'#K+>+ p$E1##"%%"C$#"H&#K65EXPECT:E1}#Y'p$E1#(>+ YIsI+%CC#KKEYBOARDHI\KKKKHH` L(EMIT6L LLm"9;(,L65EMIT:t'GL$4L#Q}L65CR:KZLGL#KL /&KL-GL##hL65DEL:vKZLCCvKZL'GL$#L65PAGE:GL'#L65AT:C$KL-%GL##L65AT?:GL#K}L.')C$#L65TYPE:]*6* *#H*s*#LDISPLAYHZLoLLLLLL0MJ J l MB/BLK;?MR/O;MMW/O;}YMR/W; eMIO-OPEN;qM IO-GETREC;M IO-GETCHR;M IO-PUTREC; M IO-PUTCHR; MIO-CLOSE; MICF}LG;@MICCOM;BMICSTA;CMICBAL;DNICBAH;ENICBLL;H NICBLH;I.NICAX1;J+Y?+9P#NB File Error#PINCLUDED}:9P#"SMNp$'(>+8$P0'PZ01#,1#+ 4 FileError:oD.B"9P##PFILE":GP'PBk00'PBk0'"43/0GPC$/GPY'#}QHINCLUDE": QP#|LQFORTH-83:#}aQ ASSEMBLER<9R9R<}PUSHA;+}QPUSH0A;+}QPUSH;+}QRP;}QUP;}}QSP;}QIP;}QN;}QPUTA;}QW;}QSETUP;&~RNEXT;~RXYNEXT;J~RPOPTWO;#~*RPOP;m"}rQ SAVE-SYSTEM:''#}!'!&'#0'# Q_MN8$p$''$O8$p$}!'!&0}!'!&!&&$O8$''#''#' '}#p$''$O8$N8$#:'Np$'(>+ 4 File Error:oD.B8$9P#H''9P#O'(>+8$'C$H+%9P#N8$H#ERDI}R:3D:*.*/0R#:SDIR": QR#RSCALLlSL¡ñ „âÑLcS?SPARTA:'#'S-)#SCOMTAB:' #}#SBUFOFS:S' %#SZCRNAME:S'%jS8$#SGETPARM:p$p$p$'%C$%**#'-)>+*?-*s*C$!&#SFNAME:S'!}%S#)TPARM:S'$%S#@TRESETBUF:Y'S#S#VTPARAMS:aTY'SGTC$8$p$>+C$&C$Q(>+aT#oT(TIME):S%##T}HOUR:'T#TMINUTE:'T#TSECOND:'T#TLAUNCH:xT>+ HS1TP#  Y;&NEGATE^&8S&DNEGATEo&8񥑥Ȋ񥑥᥁񥑥L e榢`c&D+& &ȱeđȱeőeeÑ}L&1+&aLiL&2+&&3+''''1-!'8LL'2-?'8'TRUE;}D'FALSE;Q'"-1K'_'!0Y'h'1;p'2;z'3;'4;'ON:K'C$##'OFF:Y'C$##'CLIT'8}ƦL'LIT'8ƦiL'LITERAL:p$'%>+ 0'0#0'0# (0<=($}L6(0=S(L(UWITHINi( &±ð ıŰLD( ](<(±åi榥Q0±L?( (U<(±}i榡±ðLA(LD(:'%)#!(>:C$(#!(0>:\&(#!(0<>:Q(A&#! )U>:C$(#!)=:!&Q(#!))D0=:%}Q(#!7)D=:m&&=)#!G)D<:$%!&>+ ("%"%+%(#: #>+C$8$#"X)MIN:%(y)")MAX:%(y)")UMAX:%(y)")U}MIN:%)y)")EXTEND:p$(#")DABS:)>+m&#")ABS:)>+\&#: #"&p$"$"C$""##)(DO:$!&*#*(?DO:$!}&$>+*"p$#%"8$##/*BOUNDS:$%C$##T*ENDLOOPu*L"$i*(LOOP*a iLL$|*(+LOOP*}aqjQi(L%*I*8ƦqqL%*J +&+BRANCH+a¥q…L&}+?BRANCH@+i(L''4+>MARK:0Y'0#'X+>RESOLVE:0$!&C$##'l++`+t'#),THE}N:)t'+w+#)),ELSE:t'+0+`+C$w+K'#)>,BEGIN:+~'#)[,WHILE:~'+~'0>+`+'%#:+p$'-)>+ 8$w++#)m,RE}PEAT:~'+0+,#),UNTIL:~'+0>+,#*,DO:0%*`+'#*,?DO:06*`+'#*,LOOP:'+0*0s*w+#*-+LOOP:'+}0*0s*w+#*-LEAVE:s*"='p$#%"#+7-UM*[-¡ȆĆŢ&&&eŅȱeąĐܥőȥđ‘ÁL,}S-M*:p$(p$">+\&C$p$(>+ \&"A&"Y-">+m&#,-*:Y-8$#,-2*- *L:p$%#:K'BDIVISION OVERFLOW#--}UM/MOD,.DZƥi榡ñȱȱĢf8Ǩư&Ȑ„&&&&ߠffÐ V!.#đȥÑȥ‘L/!.M/}MOD:p$")$(>+4%%C$*."(>+\&$>+ C$"%C$' ##/.2/. jjL0./MOD:")".#0./:."%#0/MOD:}.8$#0/*/MOD:"-".#0%/*/:-/"%#0;/U/MOD:Y'C$*.#0J/UD/MOD:"Y'"*."C$"*."#1^/CMOVE/ & L}ƑL/2/CMOVE>/ &eŅeDžäƑĘL2/MOVE:"%(>+"/#"/#3/PLACE:$"}$$&"/##3 0COUNT10ii8ƦL#3'0ERASE:Y'k0#4R0FILLm0 &¦ L5}d0HERE:!##50PAD:0'B%#50ALLOT:!$#50,:0#~'0#50C,:0#t'0#50COMPILE:"p$&"#0#60#T}IB96 1>TIB961>IN96&1BLK9621SPAN96>1TIB: 1##6K1QUERY:Q1'PIE1#1#,1'81'#7[1SCAN:"p$}>+$#"!&>+'C$&C$+ ##71SKIP:"p$>+$#"-)>+'C$&C$+ ##71/STRING:$)$$%%!&#a{8 `81}CAPITAL2 1L9 2 CAPITALIZE02±á…ĈLȱ 1L=2S2Ƞ.1eąĭ/1eŅ8.1¥/1ð .1}/1L2=ѥťL2ąƥŅǡѥť(ȥ8.1ȥ/1e榠 ȱÈȑ}±  L=!2SOURCE:Q11##=3WORD:!3Q2#=-3PARSE:"!3,1#1$C$"1"$!&p$")!&,1$#=>3NAME:B43.2#}#>p3STATE9>3EASCII:B43#>+(#>3,":'"F30$&00#>3"LIT:""4%/0%""#>3(":3#>3":0}33#?3(.":3/0H#?4.":0 43#?4A(:')F3%#?)4B.(:')F3H#?;4A\:,1#D /&D-,1##?N4B\\:GM,1##?j}4\NEEDS:w3U>"%>+R4#?{4HEX:'!##?4DECIMAL:' !##@4DIGIT?:'0!&p$' )>+'!&p$' )>+!#$)}$+#8$Y'#@4 ACCUMULATE:C$"C$!#Y-8$$!#Y-&"#@5CONVERT:&/04>+5+'#:*6#Q(#:/0K'*6$#:'/0#A25D}PL9:>+ #%8$ #Y'#:>+ #8$">+m&$8$x5#&$+#8$K'#:'&+>+ ' K'#'$+>+ 'K'#'H+>+ 'K'#'%+>}+~'K'#Y'#:',$-)C$'.-)%#:x5#K'-)+#t'x5$#9Cr5NUMBER?:!VAp$/0*6#x5'Y'"''$R5|5\5'-+>+ #K'"}R5|5\55>+ !#R5|5\54Q(|556R55\54Q(>+h56Q(|5x5'R55\5+#C06NUMBER::6$Q(B?(>+)#D6LAST9:6#$}#D6HIDE:6>+ ='#<###D6REVEAL:6>+ ='<###D 7RECURSIVE:7#:6>+ 4%#%$#8$#D*7 IMMEDIATE:'@<7#}DT7RESTRICT:'<7#El7 CLEARSTACK7ȱLE7HALLOT:!#$!&C$ "&p$$!&p$!#~'E%$!&/7!##E7HEAP:}!#'#E7HEAP?:7M"g(#:p$0$!&p$77C$/7$!&6$7#8ơiqeHeL+:"6#V:##F7DO}ES>:0O8'L00$8#:p$'%'-)!&#:0'%'-)>+p$p$&0$!&&/t'6$t'0#G_8?HEAD9G8|:8#+#K'8##}H8WARNING9:8#+#6#<#="%>+CC6#: 4EXISTS ^H#H8CREATE:081#0<##0w3#p$t'' g(A&B INVALID NAME0}6#&088#>+ t'8$p$y808' <7y8!#+88$7Y'0O8LC89Ʊǥi榡ıLD(đáāLi}áH8)e…h) H…håаЪL&J!9>NAME:!#p$>+%'!&C$9$>+%%#+"%#:/0'%%#J :NAME>:}p$>:C$#' %>+##JN:>BODY:&#Jp:.NAME:$>+p$7>+ 4|/0'%H+ 4???CC#K:::*96<##<#?Y'O88}ơieLK:;:Y'+0#?7#K:CONSTANT:*90O88ƦȱLK;VARIABLE:*9~'0#L8;}UALLOT:p$"#%')B USERAREA FULL"#C$"$#LO;USER:*9~'X;0O88ƦeeLL;ALIAS:*96#p$#}' %>+ '0+' <7>:##M;VP9<+^Hp$&:CC+8$#Pa=(FIND=)Ơªȱ…ÆLD(})e…ǩeÅȤƱˈȑǑLA(=±á…)8e…å) L">‘8Ʀ 0IȘ}$LT=FIND:#+='4%#=>+"%=#$;&)>+ C$='+"%Y'#TN>':w3U>Q(BWHAT?#T>[COMPILE]:}>0#T>[']:>(#T> NULLSTRING?:p$#Q(p$>+"%#iȱiLU> >INTERPRET>]?V ?NOTFOUND"@??V? NO.EXTEN}SIONS:BWHAT?#V/? INTERPRET:?:@w3U>$>+t'%>+O#?B COMPILE ONLY>+#:6Q(>+)??:@w3U>$>+)>+O#?0?>+#:}6$>+)>+C$((+)??WM?A[:']?<@?3'#W?]:'?<@?3'#:K'BCRASH#X?DEFER:*9'?0O8HȱhL}X@(IS:"p$&"###:#')?#$-)C$'?#-)%A&B NOT DEFERRED#X6@BIS:>p$L@x:3#>+ 0<@0###:A' (B TIGHT }STACK76>+p$7>+V:+'!&jGK'BDICTIONARY FULL#Y{@?STACK@ 8ȥ  V!@#ťȱ妠L V!K'B STACK }EMPTYZ@.STATUS"@p!9""##Z5APUSH:"C$p$"#"CA""#[OARDEPTH:!#"&!&.#[nADEPTH: "!#C$!&.#:3#>+ } 4] # 4 OK#\A(QUIT:?AHc1Y?A+\A'QUIT"@A\AQUIT:!#"?A\A STANDARDI/O:' !'/#\A'ABORT"@p!\B}ABORT:73! BBA]&BSCR9]+BB#,1#MB#A]SB(ABORT":3C$>+"7"!s}##8$#:3C$>+!s##8$#^BABORT":0B3#^BERROR":0B3#_BBL; _B -TRAILINGC &eÅŤ }ØHL+L+`BSPACE:BH#`;CSPACES:Y'6*CC*s*#:0='#aMCHOLD:K'fC$fC###apC<#:fCfC##aC#>}:%fC#fC$!&#aCSIGN:(>+'-wC#aC#:!#g/$' $(>+'%'0%wC#aC#S:C%=)>+#bCD.R:%4%)C}C$CC$$)$!&VCH#b D.R:C$)$D#b5DU.R:Y'C$D#bHDD.:Y'DCC#bZD.:)_D#bkDU.:Y'_D#cyD.S: "!#$!&}' )]*6**#~D~'*s*#cDC/L;(cDL/S;dDPAUSEdDLOCK:p$#M"-)>+8$#p$#>+D+M"C$##dDUNLOCK:p}$D'#h8hLȱi榢L`"e EFILE;eSEPREV99e_EB/BUF;ppELIMIT;p~EFIRS}T9:#' %#:V:4%&(C$7%#:7!#""#$>+^p$"'!&""#"$'p$"(C$"&V:(%>+."7>+"&E>+$"&E>+} "&>:&)+ #+#*Fiȱiɠ…ʱ…5ȥɐ ĥLoFʥ˰ ʁ±ʑLFʅ¥˅LFFLm":}!#$>+p$"'!&(F"+#:M"&p$#M"!&>+(%#C$0g(>+p$#&#$#'+#+%#:!(F1<%* %*#%g(>+ '<*#'}*s*%<#%g(>+ '<<##:$FFF7C$!&7!#Y'6##uECLEAR:0p$M"&G!##uFG(FORGET:p$7B IS SYMBOLE&G#u`G}FORGET:>p$' #(B PROTECTED:p$7>+V:+='='jG#uGEMPTY:' #M"&G'" #"##vGSAVE:0M"&G!#p$='='#$='#}#$Q(>+M"}!'/#vGBYE:p!.M#:YIK-)>+K' ##vHSTOP?:eI>+*H*HY'#v>H?CR:ID' !&)>+H#:*9p$0&O8L}$8#!#%s##wXHOUTPUT::*9?O8L$8!##wHEMITHwHCRHwHTYPEHwHDELHwHPAGEHwHATH wHAT?H wH}ROW:H8$#wHCOL:H"%#:*9p$0&O8L$8#!#%s##w IINPUT::*9?O8L$8!##w7IKEY&IwSIKEY?&Iw^IDECODE&IwjI}EXPECT&IxSEAL:Y''+}#:Y'fE#EE##yxI'COLD"@p!:IIHJ= 4volksFORTH-83 REV 3.81.03H Ky J'RESTART"@p!:'A<@ASJ' #!#'p!<@"B}.BzHJCOLDJJHHX i­ iù J J  ! i iȱ ȱhhK } L{yJRESTART KJHYHLJ;KiL+%H$H`/K $KL+;CKLMKLEKK65KEY:AKDK>+KK-K#}TK#BS;~pK#CR;|K#ESC;K65DECODE:vK+>+p$>+H'#K+>+ p$E1##"%%"C$#"H&#K65EXPECT:E1}#Y'p$E1#(>+ YIsI+%CC#KKEYBOARDHI\KKKKHH` L(EMIT6L LLm"9;(,L65EMIT:t'GL$4L#Q}L65CR:KZLGL#KL /&KL-GL##hL65DEL:vKZLCCvKZL'GL$#L65PAGE:GL'#L65AT:C$KL-%GL##L65AT?:GL#K}L.')C$#L65TYPE:]*6* *#H*s*#LDISPLAYHZLoLLLLLL0MJ J l MB/BLK;?MR/O;MMW/O;}YMR/W; eMIO-OPEN;qM IO-GETREC;M IO-GETCHR;M IO-PUTREC; M IO-PUTCHR; MIO-CLOSE; MICF}LG;@MICCOM;BMICSTA;CMICBAL;DNICBAH;ENICBLL;H NICBLH;I.NICAX1;J+Y?+9P#NB File Error#PINCLUDED}:9P#"SMNp$'(>+8$P0'PZ01#,1#+ 4 FileError:oD.B"9P##PFILE":GP'PBk00'PBk0'"43/0GPC$/GPY'#}QHINCLUDE": QP#|LQFORTH-83:#}aQ ASSEMBLERUO#3!#UCONT:T##T&#U#:p$'ND 4:#:p$#'ND#:p$#':D#:'$I!&Y')VC#>US:WUCCrU'VCp$/0Hp$#%&~}U#UN:WUeU~'VCp$#::&~U#UL:WUeU&~U#UD:%C$WU'VCC$Y'%* rU&*s*'VC%H~U#UC:t'U#VB:WUeUp$}#$%'ND&~U#!VUNRAVEL: # # #H 4TRACE DUMP IS H"!#!&>+"p$'NDCC='#::H+\B#@VUNNESTVL#}VCREATE::*96<##<#Y'?#9RWCMP:$p$ɴC$&&#9V9 999같9ް99"/0%%""C$/#VCPUSH:"}%$""$&!&p$"0W""#:'R0LM?ACCc1Y?'0 ##WRANGE:V'p$V#&p$#'V-)>+'V##WVVi}桭VVL9W#i歭VVVV֥VVLWVVVVV V!V#>+"V'"VVAVVAp$='iWW}VAt'W$""W"!VA!VA='p$V#HW#VCp$'ND#p$'NDCC::'I!&Y')VCD3VA81VA,1VA'AVA'?VA1VAQ11#"W!VA"!#'B }W<@AA#XWLL:p$#':#+>+x:#'YI#+>+x:#!#%#X#'H#+>+x:#!#%#X#'kM#+>+ x:#X# }#'L$-)>+ #'%#:: 4can't be DEBUGgedA#aWNEST:V##X8$V'#LYUNNEST:V'V'#gYENDLOOP:V#'%V## }~Y%UNBUG3!Y(DEBUG:XiWV'V'W'RX#RDEBUG:>Y#YTRACE':>p$YO#3!#  I!&Y')VCD3VA81VA,1VA'Aa\ Sieve benchmarkCR .( Loading Sieve Benchmark... ) CROnlyforth: allot ( u --) dup sp@ here - $180 - u> abort" no ro2 }om" allot ;&8192 Constant sizeCreate flags size allot: do-prime ( -- #primes ) flags size 1 fill 0 size 0 DO f2}lags I + c@ IF I 2* 3+ dup I + BEGIN dup size < WHILE 0 over flags + c! 2} over + REPEAT 2drop 1+ THEN LOOP ;: benchmark do-prime . ." Primzahlen" ;: .prim2}es size 0 DO flags I + c@ IF I 2* 3+ . THEN ?cr stop? IF LEAVE THEN LOOP ;CR .( Start Benchmark ) CRbenchmark CR2}.primes CR.( Benchmark finished ) CR#::H+\B#VUNNESTrVL#gVCREATE::*96<##<#Y'?#9RWCMP:$0)CR .( Build 4TH.COM from plain kernel )\needs SAVE-SYSTEM INCLUDE" D:SAVESYS.F"SAVESAVE-SYSTEM D:4TH.COMCR.( 4TH.COM:} saved )CRVRANGE:V'p$V#&p$#'pV-)>+'V##cWVVi桭VVL9aW#i歭VV8 VolksForth Atari 8-bit ReadmeVersion 1.113. August 2006 (cas)VolksForth is a 16bit Forth Systemproduced by the german F>}orth Gesellschaft e.V. Main development of this system was done between 1985until 1989. The VolksForth Project wasrevived>} in 2005 with the goal to produce a managable Forthsystem for computer systems with restricted system resources.Some mod>}ern Forth Systems wereinfluenced by or were derived from VolksForth (GNU-Forth, bigForth).The current Version of VolskFor>}th is3.81. Work on Version 3.90 has been started.At this time VolksForth is available for this Systems:VolksForth MS-D>q}( Call Machine Routine at "addr" )( return value is A-Reg and Y-Reg)HEX CODE CALL ( addr -- res ) 4C # lda n sta S}P x) lda n 1+ sta SP )y lda n 2+ sta n jsr n sta n 1+ sty 00 # ldx 01 # ldy n lda SP x) sta n 1}+ lda SP )y sta next jmp end-code&: CREATE: create hide current @ context ! 0 ] ;=volksForth, Copyright (c) 1985-2005, Forthgesellschaft e.V. (www.forth-ev.de)All rights reserved.Redistribution and use "}in source and binary forms, with or without modification, are permitted provided that the following conditions are met: "} * Redistributions of source code must retain the above copyright notice, this list of conditions and " }the following disclaimer. * Redistributions in binary form must reproduce the above copy- right notice, this"!} list of conditions and the following disclaimer in the documentation and/or other materials provided ""} with the distribution. * Neither the name of the Forthgesellschaft e.V. nor the names of its contribut"#}ors may be used to endorse or promote products derived from this software without specific prior w"$}ritten permission.THIS SOFTWARE IS PROVIDED BY THE COPY-RIGHT HOLDERS AND CONTRIBUTORS "AS IS"AND ANY EXPRESS OR IMPLIED "%}WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITYAND FITNESS FOR A PARTICULAR PURPOSE A"&}RE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECI"'}AL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS "(}OFUSE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, ST")}RICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OFTHIS SOFTWARE, EVEN IF ADV"*}ISED OF THE POSSIBILITY OF SUCH DAMAGE. )CR.( List Directory Command for volksForth )-1 ?HEAD ! ( move head of DIRX in Heap ): DIRX &6 OPEN-FILE DUP $80 > IF .&,}" File Error:" . ABORT THEN DROP SOURCE-ID ! CR BEGIN $580 &18 SOURCE-ID @ READ-LINE $80 < WHILE DROP $580 SWAP TYP&-}E REPEAT 2DROP SOURCE-ID @ CLOSE-FILE DROP CR ;( Generic Directory listing for )( current directory ): DIR " D:*.*" C&.}OUNT DIRX ;( Directory Listing with Parameter )( Example: DIR" D2:*.COM": DIR" FILE" DIRX ;CR .( DIR and DIR" Command l&/}oaded )CR$ \ transient Assembler clv10oct87 \ Basis: Forth Dimensions VOL III No. 5) \ internal loading 04may85BP/re) \ Fort*1}h-6502 Assembler clv10oct87 \ Basis: Forth Dimensions VOL III No. 5) CR .( Loading 6502 resident Assembler...) CR*2}Onlyforth Assembler also definitions \ Forth-83 6502-Assembler 20oct87re : end-code context 2- @ context ! ; *3} Create index$0909 , $1505 , $0115 , $8011 ,$8009 , $1D0D , $8019 , $8080 ,$0080 , $1404 , $8014 , $8080 ,$8080 , $1C0*4}C , $801C , $2C80 ,| Variable mode: Mode: ( n -) Create c, Does> ( -) c@ mode ! ;0 Mode: .A 1 M*5}ode: # 2 | Mode: mem 3 Mode: ,X4 Mode: ,Y 5 Mode: X)6 Mode: )Y $F Mode: ) \ upmode cpu *6} 20oct87re | : upmode ( addr0 f0 - addr1 f1) IF mode @ 8 or mode ! THEN 1 mode @ $F and ?dup IF 0 DO*7} dup + LOOP THEN over 1+ @ and 0= ;: cpu ( 8b -) Create c, Does> ( -) c@ c, mem ; 00 cpu brk $18 cpu clc $*8}D8 cpu cld$58 cpu cli $B8 cpu clv $CA cpu dex$88 cpu dey $E8 cpu inx $C8 cpu iny$EA cpu nop $48 cpu pha $08 cpu php$68 cp*9}u pla $28 cpu plp $40 cpu rti$60 cpu rts $38 cpu sec $F8 cpu sed$78 cpu sei $AA cpu tax $A8 cpu tay$BA cpu tsx $8A cpu txa*:} $9A cpu txs$98 cpu tya \ m/cpu 20oct87re : m/cpu ( mode opcode -) Create c, , Does> dup*;} 1+ @ $80 and IF $10 mode +! THEN over $FF00 and upmode upmode IF mem true Abort" invalid" THEN c@ mode @ index + c@ + c, *<}mode @ 7 and IF mode @ $F and 7 < IF c, ELSE , THEN THEN mem ;$1C6E $60 m/cpu adc $1C6E $20 m/cpu and $1C6E $C0 m/c*=}pu cmp $1C6E $40 m/cpu eor $1C6E $A0 m/cpu lda $1C6E $00 m/cpu ora $1C6E $E0 m/cpu sbc $1C6C $80 m/cpu sta $0D0D $01 m/*>}cpu asl $0C0C $C1 m/cpu dec $0C0C $E1 m/cpu inc $0D0D $41 m/cpu lsr $0D0D $21 m/cpu rol $0D0D $61 m/cpu ror $0414 $81 m*?}/cpu stx $0486 $E0 m/cpu cpx $0486 $C0 m/cpu cpy $1496 $A2 m/cpu ldx $0C8E $A0 m/cpu ldy $048C $80 m/cpu sty $0480 $14 *@}m/cpu jsr $8480 $40 m/cpu jmp $0484 $20 m/cpu bit\ Assembler conditionals 20oct87re | : range? ( branch -- bran*A}ch ) dup abs $7F u> Abort" out of range " ; : [[ ( BEGIN) here ;: ?] ( UNTIL) c, here 1+ - range? c, ; : ?[ ( IF) *B} c, here 0 c, ;: ?[[ ( WHILE) ?[ swap ;: ]? ( THEN) here over c@ IF swap ! ELSE over 1+ - range? swap c! THEN ;*C} : ][ ( ELSE) here 1+ 1 jmp swap here over 1+ - range? swap c! ; : ]] ( AGAIN) jmp ;: ]]? ( REPEAT) jmp ]? ;*D} \ Assembler conditionals 20oct87re $90 Constant CS $B0 Constant CC$D0 Constant 0= $F0 Constant 0<>$10 *E}Constant 0< $30 Constant 0>=$50 Constant VS $70 Constant VC: not $20 [ Forth ] xor ;: beq 0<> ?] ; : bmi*F} 0>= ?] ;: bne 0= ?] ; : bpl 0< ?] ;: bcc CS ?] ; : bvc VS ?] ;: bcs CC ?] ; : bvs VC ?] ;\*G} 2inc/2dec winc/wdec 20oct87re : 2inc ( adr -- ) dup lda clc 2 # adc dup sta CS ?[ swap 1+ inc ]? ;: 2*H}dec ( adr -- ) dup lda sec 2 # sbc dup sta CC ?[ swap 1+ dec ]? ;: winc ( adr -- ) dup inc 0= ?[ swap *I}1+ inc ]? ;: wdec ( adr -- ) dup lda 0= ?[ over 1+ dec ]? dec ; : ;c: recover jsr end-code ] 0 last ! 0 ; *J}\ ;code Code code> bp/re03feb85 Onlyforth : Assembler Assembler [ Assembler ] mem ;: ;Code [compile] Doe*K}s> -3 allot [compile] ; -2 allot Assembler ; immediate : Code Create here dup 2- ! Assembler ; : >label ( adr*L} -) here | Create immediate swap , 4 hallot heap 1 and hallot ( 6502-alig) here 4 - heap 4 cmove heap last @ count*M} $1F and + ! dp ! Does> ( - adr) @ state @ IF [compile] Literal THEN ; : Label [ Assembler ] here >la*N}bel Assembler ; Onlyforth (%\ transient Assembler clv10oct87 \ Basis: Forth Dimensions VOL III No. 5) \ internal loading 04may85BP/re) \ Fort.P}h-6502 Assembler clv10oct87 \ Basis: Forth Dimensions VOL III No. 5) CR .( Loading 6502 transient Assembler...) CR.Q}Onlyforth Assembler also definitions here $800 hallot heap dp ! \ Forth-83 6502-Assembler 20oct87re.R} : end-code context 2- @ context ! ; Create index$0909 , $1505 , $0115 , $8011 ,$8009 , $1D0D , $8019 , $8080 ,$0.S}080 , $1404 , $8014 , $8080 ,$8080 , $1C0C , $801C , $2C80 ,| Variable mode: Mode: ( n -) Create c, Does> ( -) .T} c@ mode ! ;0 Mode: .A 1 Mode: # 2 | Mode: mem 3 Mode: ,X4 Mode: ,Y 5 Mode: X)6 Mod.U}e: )Y $F Mode: ) \ upmode cpu 20oct87re | : upmode ( addr0 f0 - addr1 f1) IF mode @ 8 or mod.V}e ! THEN 1 mode @ $F and ?dup IF 0 DO dup + LOOP THEN over 1+ @ and 0= ;: cpu ( 8b -) Create c, Does> ( -).W} c@ c, mem ; 00 cpu brk $18 cpu clc $D8 cpu cld$58 cpu cli $B8 cpu clv $CA cpu dex$88 cpu dey $E8 cpu inx $C8 cpu iny.X}$EA cpu nop $48 cpu pha $08 cpu php$68 cpu pla $28 cpu plp $40 cpu rti$60 cpu rts $38 cpu sec $F8 cpu sed$78 cpu sei $AA c.Y}pu tax $A8 cpu tay$BA cpu tsx $8A cpu txa $9A cpu txs$98 cpu tya \ m/cpu 20oct87re : m/cpu ( .Z}mode opcode -) Create c, , Does> dup 1+ @ $80 and IF $10 mode +! THEN over $FF00 and upmode upmode IF mem true Abort".[} invalid" THEN c@ mode @ index + c@ + c, mode @ 7 and IF mode @ $F and 7 < IF c, ELSE , THEN THEN mem ;$1C6E $60 m/c.\}pu adc $1C6E $20 m/cpu and $1C6E $C0 m/cpu cmp $1C6E $40 m/cpu eor $1C6E $A0 m/cpu lda $1C6E $00 m/cpu ora $1C6E $E0 m/.]}cpu sbc $1C6C $80 m/cpu sta $0D0D $01 m/cpu asl $0C0C $C1 m/cpu dec $0C0C $E1 m/cpu inc $0D0D $41 m/cpu lsr $0D0D $21 m.^}/cpu rol $0D0D $61 m/cpu ror $0414 $81 m/cpu stx $0486 $E0 m/cpu cpx $0486 $C0 m/cpu cpy $1496 $A2 m/cpu ldx $0C8E $A0 ._}m/cpu ldy $048C $80 m/cpu sty $0480 $14 m/cpu jsr $8480 $40 m/cpu jmp $0484 $20 m/cpu bit\ Assembler conditionals .`} 20oct87re | : range? ( branch -- branch ) dup abs $7F u> Abort" out of range " ; : [[ ( BEGIN) here ;: ?] ( UNTI.a}L) c, here 1+ - range? c, ; : ?[ ( IF) c, here 0 c, ;: ?[[ ( WHILE) ?[ swap ;: ]? ( THEN) here over c@ IF swap.b} ! ELSE over 1+ - range? swap c! THEN ; : ][ ( ELSE) here 1+ 1 jmp swap here over 1+ - range? swap c! ; : ]].c} ( AGAIN) jmp ;: ]]? ( REPEAT) jmp ]? ; \ Assembler conditionals 20oct87re $90 Constant CS $B0 Constant CC.d}$D0 Constant 0= $F0 Constant 0<>$10 Constant 0< $30 Constant 0>=$50 Constant VS $70 Constant VC: not $20 .e}[ Forth ] xor ;: beq 0<> ?] ; : bmi 0>= ?] ;: bne 0= ?] ; : bpl 0< ?] ;: bcc CS ?] ; : bvc VS ?].f} ;: bcs CC ?] ; : bvs VC ?] ;\ 2inc/2dec winc/wdec 20oct87re : 2inc ( adr -- ) dup lda clc 2 # adc.g} dup sta CS ?[ swap 1+ inc ]? ;: 2dec ( adr -- ) dup lda sec 2 # sbc dup sta CC ?[ swap 1+ dec ]? ;.h}: winc ( adr -- ) dup inc 0= ?[ swap 1+ inc ]? ;: wdec ( adr -- ) dup lda 0= ?[ over 1+ dec ]? dec ; : ;c: .i} recover jsr end-code ] 0 last ! 0 ; \ ;code Code code> bp/re03feb85 Onlyforth : Assembler Assembler [.j} Assembler ] mem ;: ;Code [compile] Does> -3 allot [compile] ; -2 allot Assembler ; immediate : Code Create h.k}ere dup 2- ! Assembler ; : >label ( adr -) here | Create immediate swap , 4 hallot heap 1 and hallot ( 6502-alig) h.l}ere 4 - heap 4 cmove heap last @ count $1F and + ! dp ! Does> ( - adr) @ state @ IF [compile] Literal THE.m}N ; : Label [ Assembler ] here >label Assembler ; dp ! Onlyforth CR .( .n}Assembler loaded...) CR,LLu ÝDEHILV 9 .l 9 .l  `` s$B BHp}I|DE V BLV nB,DE JLV B V BLVDEIʩ BꭝLu `}OS (Intel x86 Architecture i8086-ia64)VolksForth 6502 (Commodore 64, >r} Commodore Plus 4, Atari 8bit, Apple I)VolksForth Z80 (CP/M, Schneider CPC CP/M)Vol>s}ksForth 68000 (Atari ST)VolksForth is in work for this Systems:VolksForth MS-DOS (Atari Portfolio)VolksForth 6502 (App>t}le II)VolksForth Z80 (Schneider CPC AMSDOS)VolksForth 68000 (Mac Classic)CopyrightThe VolksForth Sources are made avail>u}-able under the terms of the BSD License http://www.opensource.org/licenses/bsd-license.phpThe Handbook is Copyright (c)>v} 1985 - 2006 Forth Gesellschaft e.V. ( Klaus Schleisiek, Ulrich Hoffmann, Bernd Pennemann, Georg Rehfeld and Dietrich Wei>w}neck).The Handbook, binary Files and Source-code for VolksForth as well as Informa-tion about Forth Gesellschaft are ava>x}ilable on the Forth Gesellschaft Webserver at http://www.forth-ev.de/(most of the Information is still in german. We are >y}planning to provide future versions with full englisch documentation)Information and Help about the Program-ming Languag>z}e Forth can be found in theInternet, starting with the Website ofthe Forthgesellschaft, or in the UsenetForum de.comp.lang>{}.forth (via Google Groups: http://groups.google.de/group/de.comp.lang.forth )Details on VolksForth 6502 (Atari 8bit)* >|}Requirements Atari 8bit with 48 KB RAM, Floppy Atari 800, 800XL, Atari 130 XE 600XL (+ Atari 1064), * Files This is >}}list of VolksForth Files in this Distribution. DISK 1: DOS.SYS DUP.SYS - Atari DOS 2.5 VFORTH.COM - the plain vol>~}ksForth kernel 4TH.COM - volksForth binary STAR4TH.COM - volksForth with SPARTA/REAL/BEW>}E DOS Extensions DEBUG.COM - volksForth with Debug Tools (Tracer etc) CALL>}.F - Sourcecode for CALL, to call Machine- language Suproutines CREATE.F - Sourcecode>} for CREATE DIR.F - Sourcecode for DIR and DIR" Commands, to list Diskdirectories AS65>}.F - Sourcecode for the resident 6502 Assembler TAS65.F - Sourcecode for the transien>}t 6502 Assembler (living in HEAP) SAVESYS.F - Sourcecode for SAVE-SYSTEM command SIEVE.F >} - Primes Sieve Benchmark 4TH.F - Build volksForth binary from plain kernel README.TXT - This Text>} COPYING - License Information Disk 2 DOS.SYS DUP.SYS - Atari DOS 2.5 4TH.COM - volksForth binary COPYING >} - License Information DEBUG.F - Script to build an volksForth with DEBUGGER TAS65.F >} - Sourcecode for the transient 6502 Assembler (living in HEAP) CREATE.F - Sourcecode fo>}r CREATE TOOLS.F - Debugging Tools TRACER.F - Interactive Tracer DEBUGT.F - more Debugging Tools SEE.F - >}build Decompiler without Disassembler SEE2.F - built Decompiler with Disassembler DISAS.>}F - 6502 Disassembler DECOMP.F - volksForth Decompiler DIS.F - build 6502 Disassembler MTASK.F - volksFor>}th Multitasker MTDEMO.F - Multitask Demo "RatRace" CALL.F - Sourcecode for CALL, to c>}all Machine- language Suproutines SPARTA.F - Sparta/Real/BEWE-DOS Support LAUNCH.F - S>}parta DOS CLI Support SPAR4TH.F - Build volksForth with Sparta-DOS Support TEST.F TEST2.F>} TEST3.F - Test Files for nested INCLUDE" * Editor This verion of volksForth for Atari 8bit does not>} contain an Editor for Sourcecode. An Forth Editor will be supplied for Version 3.90. We recommend Ken Siders KEDIT ( ht>}tp://atari.ksiders.tzo.com/ ) or the CompyShop Editor.* Emulator VolksForth 6502 Atari 8bit 3.81 has been tested in the>}: SAVE-SYSTEM $FFFF $600 ! ORIGIN 8 - $602 ! HERE $604 ! FILE" W/O OPEN-FILE DROP DUP $600 6 ROT WRI6}TE-FILE ( save header ) DROP DUP ORIGIN 8 - HERE ORIGIN 8 - - 1+ ROT WRITE-FILE DROP $02E0 $602 ! $02E1 6} $604 ! $2000 $606 ! DUP $602 6 ROT WRITE-FILE DROP CLOSE-FILE DROP ; DROP $02E0 $602 ! $02E2 4['#P6MN8$p$''$O8$p$}!'!&0}!'!&!&&$O8$''#''#' '#p$''$O8$N8$#:'Np$'(>+} 4 File Error:oD.B8$P#H''P#vO'(>+8$'C$H+%P#N8$H#RDIR:3D:*.*/0R#SDIR":PR#  | Atari 8bit Emulator "Atari800" (atari800.sourceforge.net)The Forth Live-Linux CD-ROM (availablein the Downloadsection of>} the ForthGesellschaft Website) includes thecurrent Versions of VolksForth directusable without Installation includingthe>} Handbooks as PDF-Files.Have fun with VolksForththe VolksForth Team<IR:3D:*.*/0R#:SDIR": QR#  4 File Error:oD.B8$9P#H''9P#O'(>+8$'C$H+%9P#N8$H#ERDI )THE VOLKSFORTH 6502 HANDBOOKCAN BE DOWNLOADED FOR FREEFROM THE FORTH GESELLSCHAFTWEBSITE.LOOK FOR THE ULTRAFORTH C=64HAB}NDBOOK FOR NOW ONHTTP://WWW.FORTH-EV.DEADED FOR FREEFROM THE FORTH GESELLSCHAFTWEBSITE.LOOK FOR THE ULTRAFORTH C=64HA@*