,8(!; cE q0 \C)CC8`DCeECiD` RP h1$E ȍ @y b Y)hܭ]L]` q  DMD   u j)`0  ,p2 &28jJ1f02 9 g iJf0, 0ihiX1xԍӭ232002XԦ`  *'  } *(L `(  L l pL[,L] C i0  p  gފދLh ( LD 0  C  C  \i +$+0'; $(%)  b L[C `D P^߰")(݃   $DDG@НL]S")M T H0 G$Ș݃ b 8$}$%8(() T `$E0(0)8`$GE` P Li 8GD }L[ PH >iJ ;  yyB ' |L[ "E( % H$ H#`L]B  0 G LO<  ( d lH۪!A3 A jA !B EIC Y$E0 F  < 7 JN8Ndâ!,P h0ʠJd,6 ' r/ $ ɛ ` '  L[  l }-        L[L  }   ' L[   p  ` g  l }) g ' L[) ̠,L]T-0 |LM N݃:ː6UV LM N L(TU N,)MLL[IL3 GDIɛ ɜ DI  , JȊGм  G I) GȦ=*GG ȄI1200820I H1E 1h0hIGI2ȢI`FE 0ɛ rɛ$ l '蚦TTUV D`M L$:;Pyȱ$` r  iȱ$/:ȱ$VWyA**⩀ / `$***? mL]-+ȱ$ɛ m* ? g. $0f.?'@BrAsTt[ 0: gL  `$0`j`& CpCi s L0JCܢj? I#𴽎F ގМގ& & 0 C4 08L`0   | 레L] EGȽGȽG |  E` 8,  }EG)݀G)ȱGȱG`"!L] l!i栠$8  (IƭIp  h,g+j? 8 ii(Lq)! S S0$}) E9 `H)N,L]8GH Lq`gNgfj****8jHi h`  2J  &e2i`"%?&;^$IM ! ! <u hh`$Ev옝^! 1EHFHjm GHm H`u$Ev`L=? +`!,pFE ȄD8 q D&E`I0` i`+DOS SYSMOC.I  J ٍ = ) F)8`Ll T!U Ln JM -18    HH =D 1 :  /1[F:M #.! 0`>C #   #`>   eL'>/b;\I\o@ @LK~ L  % /e  L ; HH0S0N:;=91D,1ɛK$ɛ`:;ʾ  ,ɛ`XYȄ #`DTDRLUFFFCICLRSJ==CIYEEONSMDLNOOUAOOOARPLNCL#####PANVBNFR*),-PQORa/%<) j ө  RES L%-, # 3 0 %   4(H 4(`( 3  #  ZOiۨ L4RE 3 =F S Z +8 0+  FF % 4 4& 4(X)Y    # 4 ʤ Ȅ LF F LH hL4`*J 0 B B 0a   8    Lkl  )  : ` 0 } T T 7̀΀LIl `l 3   #/ ! R( 7 7   7 89i L7 ,(&   L480  ` Ln    `   HJJJJ h) ii0HI B V`0  ,BLV[J  B Vso Fhh` GH ,H hɐɀɡ)HDCȱCɛeCD먥D hN MSп` ED` OIH`hhXhh  nL Free FilesBreakI/O-Error 128Disk fullWrite protectedFile MismatchBad FilenameTURBO DOS (c) 1989 ver 2.5 RUN: Correction by KNS File lockedDevice doneDirectory fullFile not foundBad Load FileNot DOS 2JSBad HexAbort-> Source-> DestinationD1:+DOS SY b7L/L/^7~c7c7-/LI+ HʕhiLCLI# e H `EXECUT\ LBRANC| eHȱehLE 0BRANCȕ iLC (LOOP  hhhhL (+LOOP !HH}h}hL (DO!G!HHHHLC >!`!HL< Z!`!o!{!HL< DIGIu!!800 08 0  HL> HL> (FIND!! k Q)?-ȱQ #ieeHL< ȱȱȱеHL< ENCLOSź!+" k 8ȱLC LC EMI"j"8qȩqH L7hLU!KEa"" 97L#?TERMINẢ""iL#Cқ""H L7hLC CMOVŶ"" k LC L"U""666uuuLC U"4# *66866LU!AN-#q#5H5L> Oi##HL> XO##UHUL> SP##HL< SP##LC RP##LC ;##hhLC LEAV##LC >#$HHLC R $%$hhLC 0$7$ȔLC 00$L$*LC E$]$uuLC DW$v$uuuuLS!MINUo$$8LC DMINUӒ$$8L$OVEҪ$$HL< DRO$U!SWA$$HL> PIC$$8uuʵHL> DU$%HL< +%*%uuLS!TOGGL#%K%ULS!@%Z%HL> CT%o%LC h%~%LS!Cx%%LS!%% )(.'X% '|%-))HHieLC %%H)})#))#CONSTAN%%-)')HȱL< VARIABL%%%)iHeL< USE%%%)eHeL< &%5&%=&%E&%BM&% ABORTINIU&%/+ORIGI^&%) [$#Sn&&&R&&&TI‹&&& WIDTȔ&&& WARNINǞ&&&FENCŪ&&&Dи&&&VOC-LIN&&&SOURCE-I&&&I&&&OU&&&SC&&&OFFSE&&&CONTEX '&& CURREN'&&"STAT$'&&$BAS2'&&&DP>'&&(FLI'&&*CSS'&&,R]'&&.HLg'&&01p'%A&[$#2z'%I&[$#HERŇ'%&X%#ALLOԔ'%&(%#'%'|%I&'#C'%'%A&'#'%$[$#'%'5$#U'%'J$#''8PIȔLU!'%$'#RO(%$$#$$#SPAC"(%Z&h"#-DU4(%% %#TRAVERSD(%$$[$c $m%' $$#LATESW(%.'X%X%#LF}(%c '#CF(%I&'#NF(%c ') b(#PF(%A&b(c [$#!CS(% #c'|%#?ERRO(%$ 3- $#?COM(%:'X%5$c (#?EXE)%:'X%c (#?PAIR)%'c (#?CS-)%#c'X%'c (#?LOADINA)%&X%5$c (#COMPILY)% )#$%'$X%'#s)%9&:'|%#ݏ)%c :'|%#SMUDGŝ)%(c I%#HEج)%c E'|%#DECIMA)!%c E'|%#(;CODE)%#$(((|%#;COD)%H)}))))#Ğ/%%J$$#+/%J$ $#D+0%J$ $#AB0%%0#DAB%0%%0#MI30%$$( $$#MAB0%$$' $$#MZ0%$$#$+0$+0"#$0#Mr0%$$$:0^!+02##$^!#0$#$0$#0%"$#/MO(0%$/#$0#0%0$$#MO0%0$#*/MO0%$w0#$0#*0%0$$#M/MO1%$9&^!2##$$$2##$#MESSAG1%*MSG # 3#21%,5$9&($*.#FORGEK1%.'X% 'X%'c (O1%&X%'c (%(&|%(X%.'X%|%#BAC_1%'''#BEGIΜ1% )'A&#ENDI)ƭ1% )I&6)'$'$|%#THEο1%1#D1%})E!'Q&#LOO1%Q&6)}) 1#+LOO1%Q&6)})!1#UNTI2%A&6)}) 1#EN$2%,2#AGAI:2%A&6)}) 1#REPEAF2%$$N2#$#$I&'1#I\2%}) '9&'I&#ELSy2%I&6)}) '9&'$I&1I&#WHILŎ2%~2'#S*PACEӯ2%9&`0K( 9&E!<( #<2%,v'|%##2%$$v'X%,$'#SIG2%((J$ c -+#3%E'X%1((c $' c [$c 0[$+##3%"3$$#5$ #D.E3%$$$:02J3 32#$$'2s*#.\3%$/#$b3#D3%9&b3<(#3%/3#3%X%3#U3+%9&3#C/̸3% CAL3333 LC WORD3%c &|% 'X%X%&X%3( "9&&|%%Z-((X%%5$"# $# ` V䊨`R/3%R/I4% W/S4%CI]4o4LC FREEIOCg44 4JJJJHL< p@8`CLOSE-FILr44 54 B =4C,0HL> CREATE-FILŞ44LC DELETE-FIL44LC FLUSH-FIL44LC OPEN-FIL4 5 4BDEJK =4C0JJJJLC RENAME-FIL4V5LC READ-FILF5g5 54HIDEB =4C0HILC READ-LINY55 54H-IDEB =4C0HyDIyELC REFIḶ5%&X%) &X%5$&|%$$#WRITE-FIL516 54 BHIDE =4C0LC WRITE-LIN"6s6 54 BL96INCLUDE-FILd6%&|%6) ' . &X%4_/#INCLU.DE~6%O4 5) ' 6&X%49&&|%#FILE6%) Z&+'Z&+c ",`*) $") 9&#INCLUDE6%66#MO 7$7/ / l LC H C7h`%H$H`H Y7h`HH` ( FORTH-65 ASSEMBLER WFR-79JUN03 )( X-FORTH Version 01/2003 )HEXVOCABULARY ASSEMBLER IMMEDIATE ASSEMBLER DEFINITIONS( REGISTER ASSIGNMENT SPECIFIC TO IMPLEMENTATION )FF CONSTANT XSAVEFB CONSTANT WF0D CONSTANT UPF8 CONSTANT IPF0 CONSTANT N( NUCLEUS LOCATIONS ARE IMPLEMENTATION SPECIFIC )' (DO) 10 + CONSTANT POP' (DO) 0D + CONSTANT POPTWO' LIT 15 + CONSTANT PUT' LIT 13 + CONSTANT PUSH' LIT 18 + CONSTANT NEXT' EXECUTE NFA 11 - 1CONSTANT SETUP0 VARIABLE INDEX -2 ALLOT0909 , 1505 , 0115 , 8011 ,8009 , 1D0D , 8019 , 8080 ,0080 , 1404 , 8014 , 8080 ,8080 , 1C0C , 801C , 2C80 ,2 VARIABLE MODE: .A 0 MODE ! ;: # 1 MODE ! ;: MEM 2 MODE ! ;: ,X 3 MODE ! ;:2 ,Y 4 MODE ! ;: X) 5 MODE ! ;: )Y 6 MODE ! ;: ) F MODE ! ;: BOT ,X 0 ; ( ADDRESS THE BOTTOM OF THE STACK *): SEC ,X 2 ; ( ADDRESS SECOND ITEM ON STACK *): RP) ,X 101 ; ( ADDRESS BOTTOM OF RETURN STACK *)( UPMODE, CPU WFR-78OCT23 >HEX022F CONSTANT SDMCTL026F CONSTANT GPRIORD000 CONSTANT HPOS0D01D CONSTANT GRACTLD407 CONSTANT PMBASE230 CONSTANT SDLSTLD40B CONSTANT VCOUNTA000 CONSTANT SCREEN0BF60 CONSTANT SCREEN102C0 CONSTANT PCOLR002C4 CONSTANT COLOR0042C5 CONSTANT COLOR102C6 CONSTANT COLOR202C8 CONSTANT COLOR40278 CONSTANT STICK0D004 CONSTANT P0PFD01E CONSTANT HITCLR00 VARIABLE XPOS00 VARIABLE YPOS00 VARIABLE TESTXY00 VARIABLE MILLI00 VARIABLE ODLIST00 VARIABLE COLOR0O00 VAR5IABLE COLOR1O00 VARIABLE COLOR2O00 VARIABLE COLOR4O00 VARIABLE ZC00 VARIABLE ZZ00 VARIABLE ZA00 VARIABLE ZA100 VARIABLE DLIST -2 ALLOT70 C, 70 C, 70 C,4D C, SCREEN0 ,0D0D , 0D0D , 0D0D , 0D0D ,0D0D , 0D0D , 0D0D , 0D0D ,0D0D 6, 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 , 0D0D , 0D C,42 C, SCREEN1 ,0202 , 702 ,41 C, DLIST ,00 VARIABLE SPRITE0 9 ALLOTFF SPRITE0 C!81 SPRITE0 1 + C!81 SPRITE0 2 + C!81 SPRITE0 3 + C!81 SPRITE0 4 + C!81 SPRITE0 5 + C!81 SPRITE0 6 + C!81 SPRITE0 7 + C!FF SPRITE0 8 + C!: GCLS SCREEN0 C80 0 FILL ;:8 INITPMSDMCTL C@ 1C OR SDMCTL C!3 GRACTL C!1 GPRIOR C!B0 PMBASE C! ;: DELAYZZ @ 0 DOLOOP ;: PM0POSB400 FF 0 FILLSPRITE0 B400 YPOS C@ + 9 CMOVEXPOS C@ HPOS0 C!DELAY ;: READFILE" FILE" R/O OPEN-FILE 128 < IF9 SOURCE-ID ! SCREEN0 C80 SOURCE-ID @ READ-FILE SOURCE-ID @ CLOSE-FILE 0 SOURCE-ID ! ELSE ." Error open file" THEN ;: BEWEGE ZA1 !BEGINFF 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 ! PM<0POS THENTESTXY C@ 4 = IF XPOS C@ 4 + XPOS C! 1 ZC @ + ZC ! PM0POS THENTHEN ZC @ A = IF ZA1 @ ZA ! THEN1 HITCLR C!0 TESTXY C!ZA @ ZA1 @ = UNTIL 0 ZC ! 0 ZA ! 0 ZA1 !." wegpunkte/colli erreicht ! " CR ;: INI=TINITPM70 PCOLR0 C!0C COLOR4 C!DLIST SDLSTL !4 2BF C!32 DUP XPOS C! YPOS C! PM0POS0 ZC !0 ZA !0 ZA1 ! ;): UPMODE IF MODE @ 8 AND 0= IF 8 MODE +! THEN THEN 1 MODE @ 0F AND -DUP IF 0 DO DUP + LOOP THEN OVER 1+ @ AND 0= ;: CPU 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 CPU 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 CP@U TYA,( M/CPU, MULTI-MODE OP-CODES WFR-79MAR26 ): M/CPU DUP 1+ @ 80 AND IF 10 MODE +! THEN OVER FF00 AND UPMODE UPMODE IF MEM CR LATEST ID. 3 ERROR THENA C@ MODE C@ INDEX + C@ + C, MODE C@ 7 AND IF MODE C@ 0F AND 7 < IF C, ELSE , THEN THEN MEM ;1C6E 60 M/CPU ADC,1C6E 20 M/CPU AND,1C6E C0 M/CPU CMP,1C6E 40 M/CPUB 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 CC0 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 WFR-79MAR26 ): BEGIN, HERE 1 ; IMMEDIATE: UNTIL, ?EXEC >R 1 ?PAIRS R> C, HERE 1+ -D C, ; IMMEDIATE: IF, C, HERE 0 C, 2 ; IMMEDIATE: THEN, ?EXEC 2 ?PAIRS HERE OVER C@ IF SWAP ! ELSE OVER 1+ - SWAP C! THEN ; IMMEDIATE: ELSE, 2 ?PAIRS HERE 1+ 1 JMP, SWAP HERE OVER 1+ - SWAP C! 2 ; IMMEDIATE: NOT 20 +E ;( REVERSE ASSEMBLY TEST )90 CONSTANT CS ( ASSEMBLE TEST FOR CARRY SET )D0 CONSTANT 0= ( ASSEMBLER TEST FOR EQUAL ZERO )10 CONSTANT 0< ( ASSEMBLE TEST FOR LESS THAN ZERO )90 CONSTANT >= ( ASSEMBLE TEST FOR GREATER OR EQUAL ZERO )( >= IS OFNLY CORRECT AFTER SUB, OR CMP, )( USE OF ASSEMBLER WFR-79APR28 ): END-CODE ( END OF CODE DEFINITION *) CURRENT @ CONTEXT ! ?EXEC ?CSP SMUDGE ; IMMEDIATEFORTH DEFINITIONS DECIMAL: CODE ( CREATE WORD AT ASSEMBLY CODE LEVEL *) G?EXEC CREATE ~[COMPILE] ASSEMBLER ASSEMBLER MEM !CSP ; IMMEDIATE( LOCK ASSEMBLER INTO SYSTEM )' ASSEMBLER CFA ' ;CODE 8 + ! ( OVER-WRITE SMUDGE ) LATEST 12 +ORIGIN ! ( TOP NFA ) HERE 28 +ORIGIN ! ( FENCE ) HERE 30 +ORIGIN ! ( HDP ) ' ASSEMBLER 6 + 32 +ORIGIN ! ( VOC-LINK ) HERE FENCE !J8L$8#!#%s##wXHOUTPUT::*9?O8L$8!##wHEMITHwHCRHwHTYPEHwHDELHwHPAGEHwHATH wHAT?H wHROW:H8$#wHCOL:H"%#:*9p$0&O8L$8#!#%s##w IINPUT::*9?O8L$8!##w7IKEY&IwSIKEY?&Iw^IDECODE&IwjIEJXPECT&IxSEAL:Y''+#:Y'fE#EE##yxI'COLD"@p!:IIJ= 4volksFORTH-83 REV 3.81.03HKy J'RESTART"@p!:'A<@AQJ' #!#'p!<@"B.BzFJKCOLDJJHHX i­ iù J J @ ! i iȱ ȱhhK L{wJRESTART KJHWHLJ;KiL+%H$H`,K !KL+;@KLJKLBKJ65KEY:>KDK>+HK*K#QK#BS;~LmK#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#[L65DEML: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<}PURSHA;+}_QPUSH0A;+}mQPUSH;+}|QRP;}QUP;}QSP;}QIP;}QN;}QPUTA;}QW;}QSETUP;&~QNEXT;~QXYNEXT;J~QPOPTWO;#~RPOP;m"IQ SAVE-SYSTEM:''#}!'!&'#0'#P6MN8$p$''$O8$Sp$}!'!&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#  U@U@ UP* @ V       W  X @   Y  @*U@U@ Z [UUUUT \UU@UU@@U ]@TP@@@ ^ _@ `PUU@UU@UU a b c -HEX9FFF SP!9FFF S0 !230 CONSTANT SDLSTLD40B CONSTANT VCOUNTA000 CONSTANT SCREENBF60 CONSTANT SCREEN102C6 CONSTANT COLOR2VARIABLE AVARIABLE BVARIABLE ZC: SETDL ( ADDR -- ) BEGIN VCOUNT C@ 10 < UNTIL SDLSTL ! ;eVARIABLE DLIST -2 ALLOT70 C, 70 C, 70 C,62 C, SCREEN ,22 C, 22 C, 22 C, 22 C, 22 C, 22 C, 02 C,42 C, SCREEN1 ,02 C, 02 C, 02 C,41 C, DLIST ,: SETDLIST DLIST SETDL ;: DELAY ZC @ 0 DO LOOP ;: VSCROLL SCREEN 140 0 FILLf 0 A C! 104 B ! 21 SCREEN B @ + C! 22 SCREEN B @ + 1 + C! A C@ D405 C! 2A 0 DO A C@ 7 > IF B @ 28 - B ! SCREEN 140 0 FILL 21 SCREEN B @ + C! 22 SCREEN B @ + 1 + C! 0 A C! THEN A C@ gD405 C! A C@ 1 + A C! 800 ZC ! DELAY LOOP 7 A C! 2A 0 DO A C@ 0 = IF B @ 28 + B ! SCREEN 140 0 FILL 21 SCREEN B @ + C! 22 SCREEN B @ + 1 + C! 7 A C! THEN A C@ D405 C! A C@ 1 -h A C! 800 ZC ! DELAY LOOP ;: LOS SETDLIST 94 COLOR2 C! 4 2BF C! ; ^HEX9FFF SP!9FFF S0 !230 CONSTANT SDLSTLD40B CONSTANT VCOUNTA000 CONSTANT SCREENBF60 CONSTANT SCREEN102C6 CONSTANT COLOR2VARIABLE AVARIABLE BVARIABLE ZC: SETDL ( ADDR -- ) BEGIN VCOUNT C@ 10 < UNTIL SDLSTL ! ;jVARIABLE DLIST -2 ALLOT70 C, 70 C, 70 C,62 C, SCREEN ,22 C, 22 C, 22 C, 22 C, 22 C, 22 C, 2 C,42 C, SCREEN1 ,02 C, 02 C, 02 C,41 C, DLIST ,: SETDLIST DLIST SETDL ;: DELAY ZC @ 0 DO LOOP ;: VSCROLL SCREEN 140 0 FILLk 0 A C! 104 B ! 21 SCREEN B @ + C! 22 SCREEN B @ + 1 + C! A C@ D405 C! 31 0 DO A C@ 7 > IF B @ 28 - B ! SCREEN 140 0 FILL 21 SCREEN B @ + C! 22 SCREEN B @ + 1 + C! 0 A C! THEN A Cl@ D405 C! A C@ 1 + A C! 800 ZC ! DELAY LOOP ;: LOS SETDLIST 94 COLOR2 C! 4 2BF C! ;oIABLE COLOR1OVARIABLE COLOR2OVARIABLE COLOR4OVARIABLE ZCVARIABLE ZZVARIABLE ZAVARIABLE ZA1VARIABLE DLIST -2 ALLOT70 C, 70 C, 70 C,4D C, SCREEN0 ,0D0D , 0D0D , 0D0D , 0D0D ,0D0D , 0D0D , 0D0D , 0D0D ,0D0D , 0D0D , 0D0D , 0D0D n,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 , 0D C,42 C, SCREEN1 ,0202 , 02 C,41 C, DLIST ,oVARIABLE SPRITE0 9 ALLOTFF SPRITE0 C!81 SPRITE0 1 + C!81 SPRITE0 2 + C!81 SPRITE0 3 + C!81 SPRITE0 4 + C!81 SPRITE0 5 + C!81 SPRITE0 6 + C!81 SPRITE0 7 + C!FF SPRITE0 8 + C!: GCLS SCREEN0 C80 0 FILL ;: READ-DATSCREEN0 C80p SOURCE-ID @ READ-FILESOURCE-ID @ CLOSE-FILE ;: INCLUDED-DATSOURCE-ID @ >R R/O OPEN-FILE DUP $80 < IF DROPSOURCE-ID ! READ-DAT ELSE." FEHLER:" . ABORT THEN R> SOURCE-ID ! ;: FILE-DAT"FNBUF $50 BL FILL HERE $50 BL FILL ASCII " qWORDCOUNT FNBUF SWAP CMOVE FNBUF 0 INCLUDED-DAT ;: FILE-DATFNBUF $50 BL FILL " D:MULBI.BIN"COUNT FNBUF SWAP CMOVE FNBUF 0 INCLUDED-DAT ;: INITPMSDMCTL C@ 1C OR SDMCTL C!3 GRACTL C!1 GPRIOR C!B0 PMBASE C! ;: DELAYZZ @ r0 DOLOOP ;: PM0POSB400 FF 0 FILLSPRITE0 B400 YPOS C@ + 9 MOVESPRITE0 B400 YPOS C@ + C + 9 MOVEXPOS C@ HPOS0 C!DELAY ;: BEWEGE PAGE ZA1 !BEGINFF ZZ !STICK0 C@DUP 0E = IF YPOS C@ 1 - YPOS C! 1 TESTXY C!s 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 @t + 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 ! PuM0POS THENTESTXY C@ 4 = IF XPOS C@ 4 + XPOS C! 1 ZC @ + ZC ! PM0POS THENTHEN ZC @ A = IF ZA1 @ ZA ! THEN1 HITCLR C!0 TESTXY C!ZA @ ZA1 @ = UNTIL 0 ZC ! 0 ZA ! 0 ZA1 !PAGE ." wegpunkte/colli erreicht ! " CR ;v: INITINITPM 4 2BF C!70 PCOLR0 C!94 COLOR2 C!0C COLOR4 C!DLIST SDLSTL !FILE-DAT32 DUP XPOS C! YPOS C! PM0POS0 ZC !0 ZA !0 ZA1 !DECIMAl ;󛛛SPRITE0 B400 YPOS C@ + 9 MOVEXPOS C@ HPOS0 C!DELAY ;: BEWEGE32 DUP XPOS C! YPOS C! PM0POS0 ZA !BEGINFF ZC !STICK0 C@DUP 0E = IF YPOS C@ 1 - YPOS C! 1 TESTXY C! PM0POS THENDUP 0D = IF YPOS C@ 1 + YPOS C! 2 TESTXYx C! PM0POS THENDUP 07 = IF XPOS C@ 1 + XPOS C! 3 TESTXY C! PM0POS THEN0B = IF XPOS C@ 1 - XPOS C! 4 TESTXY C! PM0POS THENP0PF C@ 0 > IF500 ZC ! TESTXY C@ 1 = IF YPOS C@ 4 + YPOS C! 1 ZA @ + ZA ! PM0POS THENTESTXY C@ 2 = IF YPOyS C@ 4 - YPOS C! PM0POS THENTESTXY C@ 3 = IF XPOS C@ 4 - XPOS C! PM0POS THENTESTXY C@ 4 = IF XPOS C@ 4 + XPOS C! PM0POS THENTHEN1 HITCLR C!0 TESTXY C!ZA @ A = UNTILODLIST @ SDLSTL !COLOR0O C@ COLOR0 C!COLOR1O C@ COLORz1 C!COLOR2O C@ COLOR2 C!COLOR4O C@ COLOR4 C! ;: INITCOLOR0 C@ COLOR0O C!COLOR1 C@ COLOR1O C!COLOR2 C@ COLOR2O C!COLOR4 C@ COLOR4O C!SDLSTL @ ODLIST !INITPM70 PCOLR0 C!37 COLOR0 C!C7 COLOR1 C!87 COLOR2 C!0C {COLOR4 C!DLIST SDLSTL !FILE-DATBEWEGE ;<(ȥ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":033#?3(.":3/0H#?4.":0 43#?4A(:')F3%#?)4B.(:')F3H#?;4A\:,1#D /&D-,1##?N4B\\:M,1##?j4\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#A25DPL9:>+ #%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:##F7DOES>: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 NAME06#&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.EXTENSIONS: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ȱhLX@(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!\BABORT: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%)CC$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~EFIRST9:#' %#: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`GFORGET:>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 wHROW:H8$#wHCOL:H"%#:*9p$0&O8L$8#!#%s##w IINPUT::*9?O8L$8!##w7IKEY&IwSIKEY?&Iw^IDECODE&IwjIEXPECT&IxSEAL:Y''+#:Y'fE#EE##yxI'COLD"@p!:IIJ= 4volksFORTH-83 REV 3.81.03HKy J'RESTART"@p!:'A<@AQJ' #!#'p!<@"B.BzFJCOLDJJHHX 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"BYE S  \ 6502 Assembler clv10oct87\ Basis: Forth Dimensions VOL III No. 5)\ internal loading 04may85BP/re)\ Forth-6502 Assembler clv10oct87\ Basis: Forth Dimensions VOL III No. 5)CR .( Loading 6502 Assembler...) CROnlyforth 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 , $1C0C , $801C , $2C80 ,| Variable mode: Mode: ( n -) Create c, Does> ( -) c@ mode ! ;0 Mode: .A 1 Mode: #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 cpu 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/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 ;: ?] ( 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 ]? ;: 2dec ( 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/re03feb85Onlyforth: Assembler Assembler [ Assembler ] mem ;: ;Code [compile] Does> -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 >label Assembler ;Onlyforth( Call Machine Routine at "addr" )( return value is A-Reg and Y-Reg)HEX CODE CALL ( addr -- res ) 4C # lda n sta SP 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#@ READ-FILESOURCE-ID @ CLOSE-FILE ;: INCLUDED-DATSOURCE-ID @ >R R/O OPEN-FILE DUP $80 < IF DROPSOURCE-ID ! READ-DAT ELSE." FEHLER:" . ABORT THEN R> SOURCE-ID ! ;: FILE-DAT"FNBUF $50 BL FILL HERE $50 BL FILL ASCII " WORDCOUNT FNBUF SWAP CMOVE FNBUF 0 INCLUDED-DAT ;: FILE-DATFNBUF $50 BL FILL " D:MULBI.BIN"COUNT FNBUF SWAP CMOVE FNBUF 0 INCLUDED-DAT ;: INITPMSDMCTL C@ 1C OR SDMCTL C!3 GRACTL C!1 GPRIOR C!90 PMBASE C! ;: DELAYZZ @ 0 DOLOOP ;: PM0POS9400 FF 0 FILLSPRITE0 9400 YPOS C@ + 9 MOVESPRITE0 9400 YPOS C@ + C + 9 MOVEXPOS C@ HPOS0 C!DELAY ;: BEWEGE PAGE ZA1 !BEGINFF 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 THENTESTXY C@ 4 = IF XPOS C@ 4 + XPOS C! 1 ZC @ + ZC ! PM0POS THENTHEN ZC @ A = IF ZA1 @ ZA ! THEN1 HITCLR C!0 TESTXY C!ZA @ ZA1 @ = UNTIL 0 ZC ! 0 ZA ! 0 ZA1 !PAGE ." wegpunkte/colli erreicht ! " CR ;: INITINITPM 4 2BF C!70 PCOLR0 C!94 COLOR2 C!0C COLOR4 C!DLIST SDLSTL !FILE-DAT32 DUP XPOS C! YPOS C! PM0POS0 ZC !0 ZA !0 ZA1 !DECIMAl ;HEX8FFF SP!022F CONSTANT SDMCTL026F CONSTANT GPRIORD000 CONSTANT HPOS0D01D CONSTANT GRACTLD407 CONSTANT PMBASE230 CONSTANT SDLSTLD40B CONSTANT VCOUNT9000 CONSTANT SCREEN09CE0 CONSTANT SCREEN102C0 CONSTANT PCOLR002C4 CONSTANT COLOR002C5 CONSTANT COLOR102C6 CONSTANT COLOR202C8 CONSTANT COLOR40278 CONSTANT STICK0D004 CONSTANT P0PFD01E CONSTANT HITCLRVARIABLE XPOSVARIABLE YPOSVARIABLE TESTXYVARIABLE MILLIVARIABLE ODLISTVARIABLE COLOR0OVARIABLE COLOR 1OVARIABLE COLOR2OVARIABLE COLOR4OVARIABLE ZCVARIABLE ZZVARIABLE ZAVARIABLE ZA1VARIABLE DLIST -2 ALLOT70 C, 70 C, 70 C,4D C, SCREEN0 ,0D0D , 0D0D , 0D0D , 0D0D ,0D0D , 0D0D , 0D0D , 0D0D ,0D0D , 0D0D , 0D0D , 0D0D ,0D0D , 0 D0D , 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 , 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 SPRITE0 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 DROPSOURCE-ID ! READ-DAT ELSE." FEHLER:" . ABORT THEN R> SOURCE-ID ! ;: FILE-DAT"FNBUF $50 BL FILL HERE $50 BL FILL ASCII " WORDCOUNT FNBUF SWAP CMOVE FNBUF 0 INCLUDED-DAT ;: FILE-DATFNBUF $50 BL FILL " D:MULBI.BIN"COUNT FNBUF SWAP CMOVE FNBUF 0 INCLUDED-DAT ;: INITPMSDMCTL C@ 1C OR SDMCTL C!3 GRACTL C!1 GPRIOR C!A8 PMBASE C! ;: DELAYZZ @ 0 DOLOOP ;: PM0POSAC00 FF 0 FILLSPRITE0 AC00 YPOS C@ + 9 MOVESPRITE0 AC00 YPOS C@ + C + 9 MOVEXPOS C@ HPOS0 C!DELAY ;: BEWEGE PAGE ZA1 !BEGINFF ZZ !STICK0 C@DUP 0E = IF YPOS C@ 1 - YPOS C! 1 TESTXY C! 1 ZA @ + DU P 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 ! THEN1 HITCLR C!0 TESTXY C!ZA @ ZA1 @ = UNTIL 0 ZC ! 0 ZA ! 0 ZA1 !PAGE ." wegpunkte/colli erreicht ! " CR ;: INITIN ITPM70 PCOLR0 C!94 COLOR2 C!DLIST SDLSTL !FILE-DAT32 DUP XPOS C! YPOS C! PM0POS0 ZC !0 ZA !0 ZA1 ! 21 SCREEN1 C!22 SCREEN1 1 + C! ; INITPM70 PCOLR0 C!0C COLOR4 C!DLIST SDLSTL !4 2BF C!FILE-DAT32 DUP XPOS C! YPOS C! PM0POS0 ZC !0 ZA !0 ZA1 !DECIMAl ; ,#*,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 &¦ L5d0HERE:!##50PAD:0'B%#50ALLOT:!$ #50,:0#~'0#50C,:0#t'0#50COMPILE:"p$&"#0#60#TIB96 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 `81CAPITAL2 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":033#?3(.":3/0H#?4.":0 43#?4A(:')F3%#?)4B.(:')F3H#?;4A\:,1#D /&D-,1##?N4B\\:M,1##?j4\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#A25DPL9:>+ #%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:##F7DOES>: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 NAME06#&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.EXTENSIONS: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ȱhLX@(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!\BABORT: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%)CC$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~EFIRST9:#' %#:V:4%&(C$7%#:7!#""#$>+^p$"'!&""#"$'p$"(C$"&V:(%>+."7>+"&E>+$"&E>+ "&>:&)+ #+#*Fiȱiɠ…ʱ…5ȥɐ ĥLoFʥ˰ ʁ±ʑLFʅ¥˅L FFLm":!#$>+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`GFORGET:>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&O 8L$8#!#%s##wXHOUTPUT::*9?O8L$8!##wHEMITHwHCRHwHTYPEHwHDELHwHPAGEHwHATH wHAT?H wHROW:H8$#wHCOL:H"%#:*9p$0&O8L$8#!#%s##w IINPUT::*9?O8L$8!##w7IKEY&IwSIKEY?&Iw^IDECODE&IwjIE XPECT&IxSEAL:Y''+#:Y'fE#EE##yxI'COLD"@p!:IIJ= 4volksFORTH-83 REV 3.81.03HKy J'RESTART"@p!:'A<@AQJ' #!#'p!<@"B.BzFJ COLDJJHHX 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#[L65DE L: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<}PU SHA;+}_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#  }bDOS SYSBXFTH 65O/XASM F BTMULBI BINB 3XJOYTEX F iFSCROV F ASM F CALL F i  o  FJOYTEX2F FSAVE F Creation ATR: by Pajero/Madteam/Poland (pajero_pn@poczta.onet.pl)