MFM_DISK& NNNNNNNNNNNNNNNNNNNNNN,ԩRILԍOPQ ,  2`(N (N N /N Inserer la disquette source Inserer la disquette cible Presser une touche pour continuer Inserer les disquettes pour une copie duNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN_NNNNNNNNNNNNNNNNNNNNNNHH.HH) . hh.h,0LX5H͠h)@S) ؠ Eީ T٩0H)**i0 h) M٩ MLԩ- )R %LA  I%(h,`Hx,   nNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNnNNNNNNNNNNNNNNNNNNNNNNNO ,*P&) ԍ 0  )X) 0NOLcխ0NOLu,Lhhh  )\0)@)  Ր 8h`) LԊHHH; ԍhhNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  h`l` ߩ @ȩ C(բ,,,Ď OdPL֭  ȩ (`,,,Ďк ֩.` ֩,,,ąNMM` F֮(` FoNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN6NNNNNNNNNNNNNNNNNNNNNN֮ę(`$?` !֩ F֢iǭĬ` 7 ٨i V؍Č n f֭Ĭč ֢i` F֮Ĭ`3456 ֢9 V؍78, :3 4G3DNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNcNNNNNNNNNNNNNNNNNNNNNN43 Vخ:蘝٭3 4# V؍HH hh9 ֢Ю ֭78L=֭ª L֊©MFUNM N8fUH1Mh hI1MMM$Ui & & &M# `H)m¢†!he  H)hF jF jF(NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPNNNNNNNNNNNNNNNNNNNNNN j8*` @MM M` I @1MMM`He NMh`)`iA, `% T٩ D, 0SF/ M٩/ M٩Ơ`֍`      - () Nom: Erreur de lecture type 'ecriture type DisquevNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN@NNNNNNNNNNNNNNNNNNNNNN face piste secteur isquette protegee Abandonner,Recommencer,Ignorer ? ֩ )Ģ) (P` ߩ = !( `٠%% *4% ;+ P8,  [ [L  %%*¬¢) ¬¢)ˆNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN sNNNNNNNNNNNNNNNNNNNNNNs%` secteurs libres, fichier(@,12`?, 0ߍ-./0 " 8/-*0.+ 's,(P 0 Lۢ ,L Mް3L۠!H!ٳ0آܝ! * Mސhhh(`h! *׮ܝ  f֢$+ ׭-^NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN &NNNNNNNNNNNNNNNNNNNNNN. ++ ޹ ޹HH ֭MNȱM*hh 5m96m&&')m6 @'$% =֭78 Lܭ78$% S n (LfBAK(U`,L ' 8fU ļ =֢ (`T),C[NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN(P,)0 -.8*+-m*H/.m+0$U 12R S,(P6H. Eޭ- E [h Eh E [٥T E [٭2 Eޭ1 E [%$hiRSRRS  1PQ ޘH,(p 1ޠȹ‘P*h ޘUFU()))TkRNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN PNNNNNNNNNNNNNNNNNNNNNN,*LHH =hh`8hh`(`,(pLV*`$80b½ H H8ĨMĆNNĩMhh =֭ ٢! nLfְ% ֩8`R Si H h =֭ ٢:NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN aNNNNNNNNNNNNNNNNNNNNNNRSRRS est protegeHIxh`?????????BAK 'ߝ8$fU 'L  MސB` ;׮ B4% $U0 )NO% OްʩL[ߩP®$8PPʩPP78 =֭P פPP f f­78 FNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN2NNNNNNNNNNNNNNNNNNNNNN֭HHč hh nL߭ ??L? 'L ;yPQR?İ ę * % ֩$PQR F(% ֩1 f ֠ 0` ?`,T * )THXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNLf ;`L (O/N) ? detruit existe deja -->  =֢ `  a L֢L Placer la disquette a initialiser dans le lecteur Voulez-vous recommencer (O/N) ? Formater (O/N) ? Formatage face Formatage termine , ,KNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNL` ֭.,00-,/0 ))fa T ֩ ֩ĭ )„! ,  H*hŒ©O$8POP #PO(% `٢ `% (`)N O% QL%x ֩  n()Oi6NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN`aL-Tȩ # TT,٩ͭ 0 (8 ޠ5`T9 )ȥSȥRi Me:e֥RmQ…R`x†Q /biL1(` ߩij(dPkNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN@|NNNNNNNNNNNNNNNNNNNNNNFT$d$q0X%e ߐ X` ļ `a =֠Q Vk un ް8fk0fd $q0  鰬8fT$dP bc =8V?ę  '$$p0P  Mސ,f$eX`#5fe8fkPQ$kYHfk V؍ ٥bfNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN/NNNNNNNNNNNNNNNNNNNNNNc ֠ P)3H4 heiiHjm6jhm9ij( 78ghhk uQn$dLgh78ij956LVܐ lmoȆRS RSR,SR%  $T0 1չ L$T oRSlm`$T0`a`bc`X; WNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN&NNNNNNNNNNNNNNNNNNNNNN٩ %(L backup Backup termine Formatage disquette cible (O/N) ?  xFS8U(Ơ W٩ e (`0X )%LOfS,N%x !֢†PQaocbaQ`oFMbNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN6 NNNNNNNNNNNNNNNNNNNNNN mUX (`x$S Q8fSa`Qocb8fM m!FSUОHHe hhЋ(`hh(`$SH1PR $M L V h`h QRбЧ`P`q`  HȱhBNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNLP֠i' ? hFȄM MF  D  hL LL  LP֮H`! ȅ`H \BC eHehi`Ȅ Ȅ` t  L֠ GJȱKF`LHINDM)8*H!MOh<NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN PBNNNNNNNNNNNNNNNNNNNNNNAMO`8$P L$V0 L # 9L֠,, Hh`LܐN Hȱh =LN3456  'ʩ9ȱ(  =֢ $4:3 4Q343 Vخ:蘝٭3 4- V؍HcNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN csNNNNNNNNNNNNNNNNNNNNNNH ֩ hh9 ֢Ф ֮ ļ =֭ m5 ȭ m6  5m96}ĝĭ6}ĝ f n֠L-.ȊL  ,ab,G aȱb`DATLLܢ Lx !FW '<8fW ש#QNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN@&'78$% S f n֭ =֩ t 8RS  đȽ đ T ?H)h =TTTȭ$hR,L)đ M(  B P֠ `HIH  HСNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN` M,G0L# L֢L PREe0Te) $ePR` T S`$ea` P STRʊP  . (`FV 8fV,FV8fV R$Vb0݅e P $e0`T Pe ae bP S$e0` STS$Vp-.-.P УLz L6MNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNxFQ S P H8Rh,G0`L֠ `  # (`L8$xfQ ,GΩ F-. HH- .ѭ-8N.!N$Q i8NȊ Ph h z8z FF 8 MeMMF M 9HH݉NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN L HH BCeP Ȅ LeHTS` a b$e0S `LMN h$Q a` T ` Se  iL%$Q%BC hh hh (`hhhh(`JK!Ff f fP NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN`LLL ' ļ =֭88-../-.() ܩ8./ .eȱ.e,- u ߿e../`.  ` .Hȱ.h) L࠿ ` u./3 ufNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN3 ` u H ', uh H.ȱ.h.mm u.q../L,,--`L 43$3 P 33,34` _ }LH8 2 L u', NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNdNNNNNNNNNNNNNNNNNNNNNN-./0  = Hȱh e `MESSAGE$ h b  a +  : 1 L~2 L~ L  u '0 L8 ȱ a 1 L2 L L dNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNB7NNNNNNNNNNNNNNNNNNNNNN < ( L`9  ɥɦ ɠ$pՊʩL2ɤ ɧ Ȱi( ɡ (( ɠЕ ȱ aȌ e -ȱ. L9DD` NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNqNNNNNNNNNNNNNNNNNNNNNN ~aa ɥɧ iL'вɡLLɤȥ  /   LJL ǠU    i  ɡɧɥ`hhL~ u&ɢߩtNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN u e+,- :  L8$&+(8`i (`, ɠ'` ɠhh`+` ɠ 14`hh`,`L  ` e?/0cNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN۠NNNNNNNNNNNNNNNNNNNNNN-.Lk IDXH, PLMNL8H)hFjFjFj]`$Qijab`@ ]=I=Fjiȍ-.` -ȱ.ij`eL#-.׎-.L $88HҠ(NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN` votre nom:.F Gmot de passe:.C@ T CQOBALGAQ JAU MAR PAV SAS GEO1JEO2MEO3GHCNREPERTOIREJHCNECRIREPF@N*RETOUR SOMMAIRESM@NCHOIX:MH@NLIRESX@MH@NCREERSX@ ok. mot de passeELQ TYP.UAaucun messageUAmessage le plus rBecentUAdernier messageCAT message de UA GA,gNA,gQAQ autres messages SUITE / RETOUR U dBetruire GANNULATION R sortir ISOMMAIRE+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHA vous Becrivez Aa Q HDAbal inconnueEA,gLA,gNRBRETOUROTB-PGBCORRECTION , . ANNULATIONQTB/RRBSUITETAvalidation HQ ENVOI UAabandonner U SOMMAIRE FA OR LISTE DES BALSCAT UAT gR gT VBautresNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN bals : SUITE/RETOUR ou SOMMAIREDAC _ e kL _ hLb _/0 \L _LM _!H! } h b,h!`L_BAK _ H Jh ` _  LYaucun fichier ! _H55?x }J NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ˞NNNNNNNNNNNNNNNNNNNNNN> T )Ģ(i TL T(h``nv`X,0  `@Afichier inexistantplus assez de placeerreur de typeformat inconnulecteur absent@AtNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNL LLLLLLNLLLL8LLYLL5LL7LaLLQL'L3L@LLLrLTLLLL"LLWLOL#L LVLSL'L;LLLLLLLLLfLnLVL=L!LOLLLRLLLLL;L&L2STRATSED V2.0c (c) 1986 ORIC International FNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN a8NNNNNNNNNNNNNNNNNNNNNNA <> 6                nmNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN R NNNNNNNNNNNNNNNNNNNNNNL>.LB.ALL>wP=>=>#8 N ONcLI8 HűʕhąȈąiĐLLP HLI Ļ`CLIԐ HLC HȱǠhLHHiĘeȅLP HȱLI iHiLI eHȱeLI hhLP HHiȱi/NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNZNNNNNNNNNNNNNNNNNNNNNNL BRANC HȱąhLR ?BRANC+ iĐLP 0 (LOOPL ˺ hhhhhhL3 A (+LOOP~ ˵HH}h}hLd r (DO HHHHHHiĐLi (?DO ͵L EXECUTŶNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN4kNNNNNNNNNNNNNNNNNNNNNN ǵL R ˺HLI    + EXI: hhLP 1 UNNES: T HLK  Ci LP C x LP b C LP N DROШ LP DUе HLI SWA HLK OVE HLI TUC HhHcNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN'&NNNNNNNNNNNNNNNNNNNNNNLI % NI Lk  RO" HLK r -ROD HLK  FLIf LP ?DUЩ ) L q SP HLI SP LP ] RP ˺HLI RP ˵Lk R hhLP > HHLP PIC >ZNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHȱLI CMOV  v ļƽLP L CMOVE>  v eeeeƽLP ƼƿƾL] ; ANĉ 55Lk 3 Oҟ Lk XOҶ UULk NO HLI TRUž FALSž CSE NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNaNNNNNNNNNNNNNNNNNNNNNNLi CRESEI!Li CTOGGL*ULi O:Lk 3OFQLk IfuuLP NEGATŃ8LP 8LP ABӱ0LP `+uuLi  x  266FNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN4NNNNNNNNNNNNNNNNNNNNNNLP 2  vvLP U2vvLP 1,LP %1<LP 2NuuLP G2d8LP 5UM|666uuuLP tU*|UM/MO *66866ƼLk 0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNLP 0LP 0$0LP 0<>LP RLk 6I #OU )SC 4#LIN PRIO >CURREN "VSTAT $BAS &JDP (pBN *dCS ,R .{HL 0SPA 2LAS 4CONTEX 6END @B̾ C/̾ @FIRSԾ xLIMzNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGNNNNNNNNNNNNNNNNNNNNNNIԾ B/BUƾ #VOCӾ TI¾ (KEY2H H )HH)HhLp KEٗ 0((?KEY`Lp K?KEٗ ^U(EMITqɑɩqɑɵLk EMIԗ }t(CR%ȑqɑɩqɑLP iCҗ FIL v ľƿLP LERASũ )NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNvNNNNNNNNNNNNNNNNNNNNNNL BLAN˩ L COUN Lp TYPũ  BJ : L SPACũ L FSPACEө  mNJ gL VSTATLINž +HEة wv L Hz L ~DECIMA̩ wv L Dz L HOMũ L oKCL˩ @6 u(L BS-IΩ }L FW-IΩ }L DOWN-Z/NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNIΩ }L UP-IΩ }L CLө }FOL CLL-IΩ }L NOOJLP /CR-IΩ v L DEL-IΩ ) : N   L c(CHAR d *L MCHAҗ CTR CTRL H44HH"U8HH 5H)HHs)H4HHHHH NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN yNNNNNNNNNNNNNNNNNNNNNNH`0 EXPECԩ v  ) XQ ) AR dR  T P) Rl T  L QUER٩ $ P R v O%OL ^MIΩ !)  L MAة !)  L ABETWEEΩ   L WITHIΩ :L DuuuuLi NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN *NNNNNNNNNNNNNNNNNNNNNNDNEGAT 8LP S>ĩ L #?DNEGATũ ) F L DABө <L *ĩ !  z <L M/MOĩ x )  ! O   )  ) :  L rMU/MOĩ    L W z L 1/MOĩ ) zL NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN  L MOĩ  L */MOĩ \ zL /  L UPPEA v ZPLP a{8 `HLEAVphhhhhhLP *?LEAVňLP fHERũ R L PAĩ  PdL 7-TRAILINǩ  !d:g :J L }COM v ļ Lp :.NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNHLI ȸPLp CAPS-COM v ļ! Z ZŻ Lp HLI ȸP۩Lp CAP JCOMPARũ QR ) o qL DIGI}800 08 0 HLK HLK sDOUBLE R *<L UCONVERԩ * g wR {)  wR z wR z)    LPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN $NNNNNNNNNNNNNNNNNNNNNN (NUMBER?  *g -P 6 v  g , /) Jv  .B ) T  g PL BOUNDө d L ^NUMBER g / g wR { )  nJ )     L qNUMBEҗ R0RPˠɪLP ABORԗ p-?ERROҗ WHERŗ NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNqNNNNNNNNNNNNNNNNNNNNNN(?ERROR ) /R ) #%R R N2N 1L (ABORT"    d L ?MISSINǩ ) 2 > inconnu dans ce contexteL 3(NUMBER { ]L HOLĩ 6 R L < v L R# R  L SIGΩ )  -L  wR  GNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNBNNNNNNNNNNNNNNNNNNNNNN )  d 0dL #ө ! ) L (U. L U 42NL @U.ҩ 4 _2L -(.  L  m2NL .ҩ m _2L g(UD. L OUD 2NL (D. O L D 2NL D.ҩ  NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNQNNNNNNNNNNNNNNNNNNNNNN_2L SKI v ż8PޠʕLP SCAO v ż8PޠʕLP F/STRINǩ  dB L MOVũ B !)  <    L PLACũ ! * L SOURCŗ ,PARSE-WORĩ  %R NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNbNNNNNNNNNNNNNNNNNNNNNN  M  <d%v L PARSũ %R  M  <%L WORĩ  d L # )+L r 8L HASȖ v ) eHeLI (FIND v ʥLp eeQ)?*ȱQ "eNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN0NNNNNNNNNNNNNNNNNNNNNNe*Lp HLI PFINĩ RO  z / dR ) v RR Rv P) h  v R  J <L DEFINEĩ ZQR )  ?,L S?STAC˩ R > pile vide > pile pleineL |DONE lR kR OL INTERPREԩ іNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNeNNNNNNNNNNNNNNNNNNNNNN)     )  ) L ALLOԩ L  v , L C  , L D ?COMЩ lR >en definition seulementL U COMPILũ ] L R 8 L $ IMMEDIATũ @R (L 4 LITERA̩ 6 ) I  6 8 L DLITERA̩ L ASCIɩ NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNVNNNNNNNNNNNNNNNNNNNNNNZ*g lR ) ! L CONTRO̩ Z*g @lR ) 6! L ! ]L 8!['ݩ ] !L V!?EXEé lR >hors definNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNition seulementL !. ! )+2L !?PAIRө k>controles mal appairesL ">MAR˩ 8 L K">RESOLVũ  v L !definition incompleteL #TRAVERSũ d  g ) $ L x#N2NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN[NNNNNNNNNNNNNNNNNNNNNN>LIN˩ bL $L>NAMũ LL $BODY bL %NAME $*L %LINK L$*L (%>BOD٩ LL N%>NAMũ :6 $L \%>LIN˩ :6 $bL :%HIDũ R %R `R v L p%REVEA̩ R % `R v L $CREATũ #6 8 L %CONSTANԩ #6 8 8 L %VARIABLũ PNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNeNNNNNNNNNNNNNNNNNNNNNN#6 8 8 L $USEҩ #6 8 8 L &ASSEMBLEҗ %(;CODE R 0%v L %;CODũ $ <&#%.&L 2&(;USES R R 0%v L J&;USEө $ l&#%L b&DOES <& LI 6 8 L "&AVO |&CODũ %% bv R &v .&L &CRASȩ >vecteur non initialiseL BNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNN&DEFEҩ #6 8 6 &8 L % $`R v #6 8 %#L & $ L %#L 8'#BUFFERӾ 'FIL 98Y'>SIZž Jd'>BUFFERө l'L p'>ENĩ bL 'BUFFER {'dL 'LATEST R d'!R P LR `'R P ) ' ' dR L &ABSENT ' {'NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNv 'U' ](!R P LR `'R P ) T( {'  {' d {'<  'n dJ ( dR L 'UPDATũ ' d8L 'DISCARĩ ' dOL J'WRITE-BLOC˗ ;'READ-BLOC˗ ;j(MISSINǩ 'bR ) (' ('bO`'R {'Lv ' R {' dv {{QNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 6NNNNNNNNNNNNNNNNNNNNNN' dO{' dU' < L (BUFFEҩ ') <) (' dR L )BLOC˩ ') a) (' ( dR L (EMPTY-BUFFERө {' 'U' )6 v d!v d dJ )L (SAVE-BUFFERө 'U' ) R *) ) dR ) ) ( dO dJ ) L NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN FNNNNNNNNNNNNNNNNNNNNNN >)FLUSȩ )s)L *RD* v ˥x!)!)!( Ox!!(PHLI )WRm* v ˥x!)!)!( Ox!!(PHLI (DISK-ERR > erreur disqueL *RESERVž e*S/Ծ *RDBLOC˩ TsNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN uNNNNNNNNNNNNNNNNNNNNNN dR R *d  <+!* * *** 6 d J +L *WRBLOC˩ dR R *d  +!* * k*** 6 d J k+L *.FILŗ =@+?STOЩ p) + Q PL *(IS  R V%v L L c)Iө lR ) + + +demarrage a chaudL X,COLĩ T,+,L +LOAė ,,(LOAD R %R %Ov + %v v L ,(SOURCE R x ) ,F) ,$R L M,VOCABULAR٩ %8 1NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN8 8 8 R 8 v <&L v L ,DEFINITIONө R `v L ,FORT->67=y,SEA̩ L:L !-(ABORT R +,L f-LISԩ  :v +! ecran no   -/ N F)/ d2+J - L |-TERMINA̗ 6;-.VERSIOΗ o6-DEFAULԗ ;-kNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHELLϩ `0C-/-s)-"!FORTH 83-STANDARD --L -(COLD>. ɭ ʹ ɈlƩ,ũآL3.DEPTȩ R  L -.ө p.x ) . .p./ : NJ . .! pile vide L h.H wR wv Ewv L .PROMPԗ .O- R L .O˩ !OkwjjNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN3NNNNNNNNNNNNNNNNNNNNNNR P) / . ;/ P) '/ # ;/ P) 8/ % ;/ * p.L .?LOADINǩ R >sur disque seulement L E/?ENOUGȩ p.:>pas assez de parametresL $,-- P/%OL .ܩ P/%R %L /THRթ |/* // ,J /L /ID   x ) t|NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFINNNNNNNNNNNNNNNNNNNNNN0 0  J 0 NL /ALSϩ  L:< L /PREVIOUө  L   dOL r/ONLn080162M-<&L V-!Lv v L 8L ALSϩ "0L FORTȩ C-L 0DEFINITIONө /-L ORDEҩ ! contexte :  0 R x ) 0"%d%/LJ 0 !vocab7NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNulaire courant : `R "%d%/L 0VOCө R "%d%/R ) *1 L .2 R LR L E12 B v Lv L Z12CONSTANԩ %8 8 <&L J1L m12VARIABLũ y1<&L L 40LARGESԩ   1!R ) 1B  R LJ 1 L Y0WORDө R    1 <'NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN +NNNNNNNNNNNNNNNNNNNNNN+ ) 22 % g  0R d) &2/R v  1L 0WORDө 1L 1TRIͩ  v2!R ! ) j2R  Z2 v LJ V2L D2(FORGET R >dictionnaire protege R !) 2R  2 v ) 2! K2R  2 v L 1FORGEԩ ZQR ) 2 ?`R ŧNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN R ]x%2L 2FORBIĩ ZQR ) 13 ?`R  R ]x% !R k) Y3R  I3 R v L 3BIOl3z3̤͆˦$̄͆hϦLk 1OPCȩ ̒  j3L 3CLCȩ ̒  dj3L 3CAL333 LP c3BAN3x)*ɭ!)ɍ!fNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN(Lk z2DUMЩ wR wv  2N  T4 / dg 2NJ :4  z4 / dg   ~J ]4 d+) 4 wv L 0INDEة |/* 4/ N/ F)2+J 4L 4A-IΩ 6 Lg L 3C-IΩ -_,L 4X-IΩ <) 5 \GNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNL 4CURSOҩ }L 4Aԩ } @d} @d}L 3BASIé r!COM6 ]   36 3L 4LOC˩ `0C-/-R R 6 v 6  v 6  v R 6 v v L 25BYũ b56 ..:5L 5IN˩  ̒ O j3L [5PAPEҩ  d ̒ O j3L 5(KBD NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ̒ Rj3L 5QWERT٩ 5L 6AZERT٩ 5L 6ACCENԩ 5L 5VERSIOΩ r!V2.4 KERNEL L 5(.VERSION I62L b6(TERMINAL 6 6 u r!FTH6 ]  L -6INSERԩ     d <  L ?6REPLACũ  L y6DELETũ    ") 7!QNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  dB  d L 6FOUN 5SEARCȩ 7O * \7_) R778n * J B7 7R L 6LINũ 6 <>hors limites ecran :R F)dL !7CLEAҩ :v %)s(L j7(COPY F) 'v s(L 7COPٗ 77?RANGũ  > hors limite NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNs L 7CAPACIT 0DO-=88=pas de STRATSED L EXԃ1]DR֩  6 dg >lecteur absent 6  6  L 18.DR֩ R 6 g Ad!-: 36 .!secteurs libres 3L q8EXTu7NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN w8Zw8  L 8NAME Β v $j3 g >nom de fichier incorrect 6 g 8L 9FILENAMũ T8Z9L ]9BDO9ˌ9ʎx!)!)!(̤ͦ ̄͆hx!!(˭LP M8SEARCȩ }}9* g  L 9SEARCH }9* g ]NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN L }8XSAVũ 6 , 6 /v 6 -v 6 ( k}9*L :XLOAĩ 6 (v b}9*L v9FILE T8R 3`'R 6 6 g d *  6  d 6 g 3L 9?FILũ h99 >fichier inexistant L :OPEN-FILũ `'R g 8 dg dg 6 ** dg : J>NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 0NNNNNNNNNNNNNNNNNNNNNN8v L 6:(DEFAULT r!*99 >pas de fichier par defaut W::!fichier par defaut : +L O:RECORD R 3 6 dg 6 dg 3L ^;FILE-REAĩ dR R 8R 7:   ;!h; *** 6 d J ;L ;FILE-WRITũ dR R ANNNNNNNNNNNNNNNNNNNNNNNNNNNNNN $NNNNNNNNNNNNNNNNNNNNNN 8R 7:   3fichier existant  9NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNVwNNNNNNNNNNNNNNNNNNNNNN7s)6 6 d6 @:W::* 0=/ 7J (= *<:L <.NAMũ R 36 6 g d 2!. d2 dg :  !.K3L <(.FILE `'R x ) = g Ad - * 2!. d2N!/ L 8OPEΩ :W::L 7TAKũ <=s), *<:L =NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNeFNNNNNNNNNNNNNNNNNNNNNNCAԩ +8R 4L =DIҩ h99) 5>@=9+ ) 5>@= #>8L NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNv NNNNNNNNNNNNNNNNNNNNNN@       3NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNE:NNNNNNNNNNNNNNNNNNNNNN\ F83DEV : extension de F83KER 2 LOAD CR .( PRINTER DE BASE ) TAKE FUNCT CR .( FUNCTIONS ) TAKE EDITOR CR .( EDITOR ) _NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNݕNNNNNNNNNNNNNNNNNNNNNNTAKE SCREENS CR .( SCREENS ) TAKE DESAS CR .( DESAS ) TAKE SEE CR .( SEE ) CR .( mise a jour de la version : ) NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCR VERSION TYPE CR VERSION EXPECT CR .( F83DEV ) YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"`NNNNNNNNNNNNNNNNNNNNNN\ (PRINT) (PEMIT) PON POFF modifie 18AOU89 TBONLY DEFINITIONS ALSO FORTH VOCABULARY PRINTER FORTH ALSO PRINTER ALSO DEFINITIONS HEX `NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNQNNNNNNNNNNNNNNNNNNNNNN: (PRINT) 1 #OUT +! 0CC C! 48 ( vecteur XLPRBI ) BIOS ; : (PCR) 0D (PRINT) 0A (PRINT) #OUT OFF 1 #LINE +! ; VARIABLE PR : PON 0 0E OPCH PR ON ; j(NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNDNNNNNNNNNNNNNNNNNNNNNN: POFF 0 0E CLCH PR OFF ; : P-IN PR @ IF POFF ELSE PON THEN ; ' P-IN CTRL1 CONTROL P 2* + ! ( active CTRL-P ) : ON-LINE 2 20D ( variable FLGTEL ) CRESET LNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNw3NNNNNNNNNNNNNNNNNNNNNN 8 0 DO 1E ( vecteur XTSTLP ) BIOS LOOP 20D C@ 2 AND 2 <> ABORT" imprimante non connectee " ; ONLY FORTH DEFINITIONS DECIMAL ZNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNg NNNNNNNNNNNNNNNNNNNNNN\ ASSEMBLAGE SOUS ASSEMBLER HERE 100 ALLOT TAKE ASM NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN T.LB.ALLVwPb[b[-P N ONcLI8 HűʕhąȈąiĐLLP HLI Ļ`CLIԐ HLC HȱǠhLHHiĘeȅLP HȱLI iHiLI eHȱeLI hhLP HHiȱiTNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN!NNNNNNNNNNNNNNNNNNNNNNL BRANC HȱąhLR ?BRANC+ iĐLP 0 (LOOPL ˺ hhhhhhL3 A (+LOOP~ ˵HH}h}hLd r (DO HHHHHHiĐLi (?DO ͵L EXECUTŶNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNrNNNNNNNNNNNNNNNNNNNNNN ǵL R ˺HLI    + EXI: hhLP 1 UNNES: T HLK  Ci LP C x LP b C LP N DROШ LP DUе HLI SWA HLK OVE HLI TUC HhHcNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNLI % NI Lk  RO" HLK r -ROD HLK  FLIf LP ?DUЩ ) L q SP HLI SP LP ] RP ˺HLI RP ˵Lk R hhLP > HHLP PIC >ZNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNTNNNNNNNNNNNNNNNNNNNNNNHȱLI CMOV  v ļƽLP L CMOVE>  v eeeeƽLP ƼƿƾL] ; ANĉ 55Lk 3 Oҟ Lk XOҶ UULk NO HLI TRUž FALSž CSE NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNgNNNNNNNNNNNNNNNNNNNNNNLi CRESEI!Li CTOGGL*ULi O:Lk 3OFQLk IfuuLP NEGATŃ8LP 8LP ABӱ0LP `+uuLi  x  266FNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN2NNNNNNNNNNNNNNNNNNNNNNLP 2  vvLP U2vvLP 1,LP %1<LP 2NuuLP G2d8LP 5UM|666uuuLP tU*|UM/MO *66866ƼLk 0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNLP 0LP 0$0LP 0<>LP RLk 6I #OU )SC 4#LIN PRIO >CURREN "VSTAT $BAS &JDP (pBN *dCS ,R .{HL 0SPA 2LAS 4CONTEX 6END @B̾ C/̾ @FIRSԾ xLIMzNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN wNNNNNNNNNNNNNNNNNNNNNNIԾ B/BUƾ #VOCӾ TI¾ (KEY2H H HH)HhLp KEٗ @((?KEY`Lp K?KEٗ ^U(EMITqɑɩqɑɵLk EMIԗ }t(CR%ȑqɑɩqɑLP iCҗ FIL v ľƿLP LERASũ @NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN DNNNNNNNNNNNNNNNNNNNNNNL BLAN˩ L COUN Lp TYPũ  BJ : L SPACũ L FSPACEө  mNJ gL VSTATLINž +HEة wv L Hz L ~DECIMA̩ wv L Dz L HOMũ L oKCL˩ @6 u(L BS-IΩ }L FW-IΩ }L DOWN-Z/NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN }NNNNNNNNNNNNNNNNNNNNNNIΩ }L UP-IΩ }L CLө }FOL CLL-IΩ }L NOOJLP /CR-IΩ v L DEL-IΩ ) : N   L c(CHAR d *L MCHAҗ CTR CTRL ?44HH"U8H> 5H)HHs)H4HHHHHbhNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN LNNNNNNNNNNNNNNNNNNNNNNH`0 EXPECԩ v  ) XQ ) AR dR  T P) Rl T  L QUER٩ $ P R v O%OL ^MIΩ !)  L MAة !)  L ABETWEEΩ   L WITHIΩ :L DuuuuLi NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNDNEGAT 8LP S>ĩ L #?DNEGATũ ) F L DABө <L *ĩ !  z <L M/MOĩ x )  ! O   )  ) :  L rMU/MOĩ    L W z L 1/MOĩ ) zL NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN.NNNNNNNNNNNNNNNNNNNNNN  L MOĩ  L */MOĩ \ zL /  L UPPEA v ZPLP a{8 `HLEAVphhhhhhLP *?LEAVňLP fHERũ R L PAĩ  PdL 7-TRAILINǩ  !d:g :J L }COM v ļ Lp :.NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNcNNNNNNNNNNNNNNNNNNNNNNHLI ȸPLp CAPS-COM v ļ! Z ZŻ Lp HLI ȸP۩Lp CAP JCOMPARũ QR ) o qL DIGI}800 08 0 HLK HLK sDOUBLE R *<L UCONVERԩ * g wR {)  wR z wR z)    LPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNRNNNNNNNNNNNNNNNNNNNNNN (NUMBER?  *g -P 6 v  g , /) Jv  .B ) T  g PL BOUNDө d L ^NUMBER g / g wR { )  nJ )     L qNUMBEҗ R0RPˠɪLP ABORԗ p-?ERROҗ WHERŗ ENNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN(?ERROR ) /R ) #%R R N2N 1L (ABORT"    d L ?MISSINǩ ) 2 > inconnu dans ce contexteL 3(NUMBER { ]L HOLĩ 6 R L < v L R# R  L SIGΩ )  -L  wR  GNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN*NNNNNNNNNNNNNNNNNNNNNN )  d 0dL #ө ! ) L (U. L U 42NL @U.ҩ 4 _2L -(.  L  m2NL .ҩ m _2L g(UD. L OUD 2NL (D. O L D 2NL D.ҩ  NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN_2L SKI v ż8PޠʕLP SCAO v ż8PޠʕLP F/STRINǩ  dB L MOVũ B !)  <    L PLACũ ! * L SOURCŗ ,PARSE-WORĩ  %R NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN:NNNNNNNNNNNNNNNNNNNNNN  M  <d%v L PARSũ %R  M  <%L WORĩ  d L # )+L r 8L HASȖ v ) eHeLI (FIND v ʥLp eeQ)?*ȱQ "eNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNe*Lp HLI PFINĩ RO  z / dR ) v RR Rv P) h  v R  J <L DEFINEĩ ZQR )  ?,L S?STAC˩ R > pile vide > pile pleineL |DONE lR kR OL INTERPREԩ іNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXNNNNNNNNNNNNNNNNNNNNNN)     )  ) L ALLOԩ L  v , L C  , L D ?COMЩ lR >en definition seulementL U COMPILũ ] L R 8 L $ IMMEDIATũ @R (L 4 LITERA̩ 6 ) I  6 8 L DLITERA̩ L ASCIɩ NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNiNNNNNNNNNNNNNNNNNNNNNNZ*g lR ) ! L CONTRO̩ Z*g @lR ) 6! L ! ]L 8!['ݩ ] !L V!?EXEé lR >hors definNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNWNNNNNNNNNNNNNNNNNNNNNNition seulementL !. ! )+2L !?PAIRө k>controles mal appairesL ">MAR˩ 8 L K">RESOLVũ  v L !definition incompleteL #TRAVERSũ d  g ) $ L x#N2NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN>LIN˩ bL $L>NAMũ LL $BODY bL %NAME $*L %LINK L$*L (%>BOD٩ LL N%>NAMũ :6 $L \%>LIN˩ :6 $bL :%HIDũ R %R `R v L p%REVEA̩ R % `R v L $CREATũ #6 8 L %CONSTANԩ #6 8 8 L %VARIABLũ PNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  NNNNNNNNNNNNNNNNNNNNNN#6 8 8 L $USEҩ #6 8 8 L &ASSEMBLEҗ C-%(;CODE R 0%v L %;CODũ $ <&#%.&L 2&(;USES R R 0%v L J&;USEө $ l&#%L b&DOES <& LI 6 8 L "&AVO |&CODũ %% bv R &v .&L &CRASȩ >vecteur non initialiseL 1NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN :NNNNNNNNNNNNNNNNNNNNNN&DEFEҩ #6 8 6 &8 L % $`R v #6 8 %#L & $ L %#L 8'#BUFFERӾ 'FIL 98Y'>SIZž Jd'>BUFFERө l'L p'>ENĩ bL 'BUFFER {'dL 'LATEST R d'!R P LR `'R P ) ' ' dR L &ABSENT ' {'NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNoNNNNNNNNNNNNNNNNNNNNNNv 'U' ](!R P LR `'R P ) T( {'  {' d {'<  'n dJ ( dR L 'UPDATũ ' d8L 'DISCARĩ ' dOL J'WRITE-BLOC˗ ;'READ-BLOC˗ ;j(MISSINǩ 'bR ) (' ('bO`'R {'Lv ' R {' dv {{QNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\NNNNNNNNNNNNNNNNNNNNNN' dO{' dU' < L (BUFFEҩ ') <) (' dR L )BLOC˩ ') a) (' ( dR L (EMPTY-BUFFERө {' 'U' )6 v d!v d dJ )L (SAVE-BUFFERө 'U' ) R *) ) dR ) ) ( dO dJ ) L NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNN >)FLUSȩ )s)L *RD* v ˥x!)!)!( Ox!!(PHLI )WRm* v ˥x!)!)!( Ox!!(PHLI (DISK-ERR > erreur disqueL *RESERVž e*S/Ծ *RDBLOC˩ TsNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN|NNNNNNNNNNNNNNNNNNNNNN dR R *d  <+!* * *** 6 d J +L *WRBLOC˩ dR R *d  +!* * k*** 6 d J k+L *.FILŗ =@+?STOЩ p) + Q PL *(IS  R V%v L L c)Iө lR ) + + +demarrage a chaudL X,COLĩ T,+,L +LOAė ,,(LOAD R %R %Ov + %v v L ,(SOURCE R x ) ,F) ,$R L M,VOCABULAR٩ %8 1NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN \(NNNNNNNNNNNNNNNNNNNNNN8 8 8 R 8 v <&L v L ,DEFINITIONө R `v L ,FORT-VO@T[y,SEA̩ L:L !-(ABORT R +,L f-LISԩ  :v +! ecran no   -/ N F)/ d2+J - L |-TERMINA̗ 6;-.VERSIOΗ o6-DEFAULԗ ;-݋NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN oNNNNNNNNNNNNNNNNNNNNNNHELLϩ `0C-/-s)-"!FORTH 83-STANDARD --L -(COLD>. ɭ ʹ ɈlƩ,ũآL3.DEPTȩ R  L -.ө p.x ) . .p./ : NJ . .! pile vide L h.H wR wv Ewv L .PROMPԗ .O- R L .O˩ !OkwjjNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNR P) / . ;/ P) '/ # ;/ P) 8/ % ;/ * p.L .?LOADINǩ R >sur disque seulement L E/?ENOUGȩ p.:>pas assez de parametresL $,-- P/%OL .ܩ P/%R %L /THRթ |/* // ,J /L /ID   x ) t|NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ſNNNNNNNNNNNNNNNNNNNNNN0 0  J 0 NL /ALSϩ  L:< L /PREVIOUө  L   dOL r/ONLn0PbA1EM-<&L V-!Lv v L 8L ALSϩ "0L FORTȩ C-L 0DEFINITIONө /-L ORDEҩ ! contexte :  0 R x ) 0"%d%/LJ 0 !vocab+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNulaire courant : `R "%d%/L 0VOCө R "%d%/R ) *1 L .2 R LR L E12 B v Lv L Z12CONSTANԩ %8 8 <&L J1L m12VARIABLũ y1<&L L 40LARGESԩ   1!R ) 1B  R LJ 1 L Y0WORDө R    1 <'NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN+ ) 22 % g  0R d) &2/R v  1L 0WORDө 1L 1TRIͩ  v2!R ! ) j2R  Z2 v LJ V2L D2(FORGET R >dictionnaire protege R !) 2R  2 v ) 2! K2R  2 v L 1FORGEԩ ZQR ) 2 ?`R ŧNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN R ]x%2L 2FORBIĩ ZQR ) 13 ?`R  R ]x% !R k) Y3R  I3 R v L 3BIOl3z3̤͆˦$̄͆hϦLk 1OPCȩ ̒  j3L 3CLCȩ ̒  dj3L 3CAL333 LP c3BAN3x)*ɭ!)ɍ!fNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN(Lk z2DUMЩ wR wv  2N  T4 / dg 2NJ :4  z4 / dg   ~J ]4 d+) 4 wv L 0INDEة |/* 4/ N/ F)2+J 4L 4A-IΩ 6 Lg L 3C-IΩ -_,L 4X-IΩ <) 5 \GNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ՁNNNNNNNNNNNNNNNNNNNNNNL 4CURSOҩ }L 4Aԩ } @d} @d}L 3BASIé r!COM6 ]   36 3L 4LOC˩ `0C-/-R R 6 v 6  v 6  v R 6 v v L 25BYũ b56 ..:5L 5IN˩  ̒ O j3L [5PAPEҩ  d ̒ O j3L 5(KBD NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN ̒ Rj3L 5QWERT٩ 5L 6AZERT٩ 5L 6ACCENԩ 5L 5VERSIOΩ r!V2.4 DEVELOPPEMENTL 5(.VERSION I62L b6(TERMINAL 6 6 u r!FTH6 ]  L -6INSERԩ     d <  L ?6REPLACũ  L y6DELETũ    ") 7!5NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 'NNNNNNNNNNNNNNNNNNNNNN  dB  d L 6FOUN 5SEARCȩ 7O * \7_) R778n * J B7 7R L 6LINũ 6 <>hors limites ecran :R F)dL !7CLEAҩ :v %)s(L j7(COPY F) 'v s(L 7COPٗ 77?RANGũ  > hors limite NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN LNNNNNNNNNNNNNNNNNNNNNNs L 7CAPACIT 0DO-=88=pas de STRATSED L EXԃ1]DR֩  6 dg >lecteur absent 6  6  L 18.DR֩ R 6 g Ad!-: 36 .!secteurs libres 3L q8EXTiNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ENNNNNNNNNNNNNNNNNNNNNN w8Zw8  L 8NAME Β v $j3 g >nom de fichier incorrect 6 g 8L 9FILENAMũ T8Z9L ]9BDO9ˌ9ʎx!)!)!(̤ͦ }̄͆hx!!(˭LP M8SEARCȩ }}9* g  L 9SEARCH }9* g GNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN *tNNNNNNNNNNNNNNNNNNNNNN L }8XSAVũ 6 , 6 /v 6 -v 6 ( k}9*L :XLOAĩ 6 (v b}9*L v9FILE T8R 3`'R 6 6 g d *  6  d 6 g 3L 9?FILũ h99 >fichier inexistant L :OPEN-FILũ `'R g 8 dg dg 6 ** dg : J>NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 99NNNNNNNNNNNNNNNNNNNNNN8v L 6:(DEFAULT r!*99 >pas de fichier par defaut W::!fichier par defaut : +L O:RECORD R 3 6 dg 6 dg 3L ^;FILE-REAĩ dR R 8R 7:   ;!h; *** 6 d J ;L ;FILE-WRITũ dR R ANNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  NNNNNNNNNNNNNNNNNNNNNN 8R 7:   3fichier existant  9NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN7s)6 6 d6 @:W::* 0=/ 7J (= *<:L <.NAMũ R 36 6 g d 2!. d2 dg :  !.K3L <(.FILE `'R x ) = g Ad - * 2!. d2N!/ L 8OPEΩ :W::L 7TAKũ <=s), *<:L =NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNCAԩ +8R 4L =DIҩ h99) 5>@=9+ ) 5>@= #>8L 8PRINTE->>#8(PRINT 0 ̒ Hj3L S>(PCR ]> ]>0OFL q>P >POΩ  3>8L >POFƩ  3>OL >P-IΩ >R ) >> >>L ON-LINũ 6   ? 0~NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNj3J >6 g  k>imprimante non connectee L 7FUNC 0UAe)=-@[060a@@)@12?FONCTIOΩ 6 xg  <) ?46 yg  :?dR x ) ? ) ?  g ?/ g  J ?6 xg  <) ?U ?L >(KEYFULNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN mRNNNNNNNNNNNNNNNNNNNNNNNCT 0 ) @ L 6ASSIGΩ TXԩ ZL #LOCATũ R L A#LEAĩ Aq7 L A#AFTEҩ Aq7 d L wAȩ q7L ũ q7s(L Aө   NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  0NNNNNNNNNNNNNNNNNNNNNNB/ q7 / *q7 6 | BAL Aĩ A  BB/ *q7 / q7 J 0BAL B(DISPLAY A2 ~A2A L FBDISPLAٗ NkBԩ v AuBL Aͩ uBL yB̩ :R -RBL ҩ  q76L BЩ A}ABL Bɩ ABL BTOЩ v L BFINĩ A NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 8NNNNNNNNNNNNNNNNNNNNNNR *7> pas trouve g dL BΩ BuBL $CƩ }A(CL 0C© g BL Bة }ABg Ag 6s(uBL LCTIL̩ A}AA*7> pas trouveg d6s(uBL BENTER PL CENTEҩ *f$R L FS ALLUMũ FR (:FR d1FR d(L PFAFFICHũ ER ER LFR dCFR dFR FR  F! FR  (d ER d J FYFL GFCHANGE wFMODIFIEĩ F8L FCADRũ (FR FR FRM>NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN }lNNNNNNNNNNNNNNNNNNNNNN  1Fv  ER FR  CFv 1F FR  :Fv  ER FR  LFv :FL EDESCENĩ (FR *ER P) yG(FO G(FFL FMONTũ (FR ) GER :(Fv  G6 (FFL GA-LA-LIGNũ _GFOCFO1FOL #FRETOUҩ GER :Fv FL GAVANCũ FR *ER wNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNP) HG HFFL GRECULũ FR ) 1HG ;H6 FFL UGTLINũ ER ER (FR dL =HTR EHFR dL GINSCRIԩ _H *ER FR :< GFL kHEFFACũ _H * ER FR : ER ER (FR *d: FL YHDETRUIԩ HHL HDEBUԩ FR ) I(FO IbNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNFOFL HFIΩ EHER  ER :Fv FL HDROITũ CFR FR dER ) UICFFL FGAUCHũ CFR ") |I6 CF6 FL IBAө LFR FR dER ) ILF(FL *IHAUԩ LFR ") I6 LF6 (FL ~IBLOԩ _HER FR FL ID̩ EH ER d ER (NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNFR :ER  ER ER ER :dER FL WICOUPũ (FR *ER P) KJI JEH ER dER (FR :ER < IEHER d FR d ER FR  EHER dFR FR FL +JCOLLũ (FR *ER k) KEHER d_HER  _HER dER FR (FEHER  ) JI6 (FNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNFL ILIMITEө ER ER :L KPOINTũ KER (Fv Fv FL HMOԩ _HER FR M ER .KL %KDET-MOԩ _H ER FR M   _H dER FR  FL DKMOT-Aҩ _H ER  :g P ) K: K ER  :g k ) K: KER .0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNKL J?SHIFԩ 6 xg  L KAVANCE/DROITũ L) 8L3I :LGL IRECULE/GAUCHũ L) ZL`I \LHL LMONTE/HAUԩ L) yLI {LGL lKDESCEND/BAө L) LI L_GL }LXBLO ^LYBLO LTOOL-'[X[,WEC g R 8PDIͩ % , <&L dL @PTABLSPBRK2ORA5???0???0???0ORA2ASL2???0PHP0ORA7ASL1???0???0ORA9ASL9???0BPL8ORA6???0???0???0ORA3ASL3???0CLC0ORA;???0???0???0ORA:ASL:???0JSR9AND5???0???0BIT2ANNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNND3ROL2???0PLP0AND7ROL1???0BIT9AND9ROL9???0BMI8AND6???0???0???0AND3ROL3???0SEC0AND;???0???0???0AND:ROL:???0RTI0EOR5???0???0???0EOR2LSR2???0PHA0EOR7LSR1???0JMP9EOR9LSR9???0BVC8EOR6???0???0???0EOR3LSR3???0CLI0EOR;???0???0???0EOR:LSR:???0RTS0ADC5???0???0???0A`NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN (NNNNNNNNNNNNNNNNNNNNNNDC2ROR2???0PLA0ADC7ROR1???0JMP  vX L PX.UNNESԩ !; L xX.FINISȩ W L IWEXECUTION-CLAS^W 6 )  J |O | !><&L r!l&X.EXECUTION-CLAS>WWWWWWWWW/NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ONNNNNNNNNNNNNNNNNNNNNNWX%X%X[XX%XXWL X.PF V% 2_ WYYYZZNZL Z(SEE wNNNNNNNNNNNNNNNNNNNNNN\ ECRAN EXEMPLE POUR LES DEBUTANTS \ Definition de caracteres GRAS ONLY FORTH DEFINITIONS DECIMAL CLS : GRAS 47096 46344 DO I DUP C@ DUP 2/ OR SWAP C! LOOP ; XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN mNNNNNNNNNNNNNNNNNNNNNN : POLICE 127 32 DO I EMIT LOOP ; POLICE CR .( appuyez sur une touche ) KEY DROP NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN \NNNNNNNNNNNNNNNNNNNNNNGRAS CR .( appuyez sur une touche ) KEY DROP QWERTY NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN JNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN yNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ,NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  HERE 0 # LDY, 66 STY, BEGIN, 0 ,X LDA, 60 ,Y STA, INX, INY, 6 # CPY, 0= UNTIL, RTS, CONSTANT >F .NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNHERE 0 # LDY, 66 STY, BEGIN, 0 ,X LDA, 68 ,Y STA, INX, INY, 6 # CPY, 0= UNTIL, 6D LDA, 65 EOR, 6D STA, RTS, CONSTANT >A DECIMAL xNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN>4NNNNNNNNNNNNNNNNNNNNNN--> YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ PRIMITIVES ONLY FORTH DEFINITIONS ALSO HEX CODE (FIN) ( adr--- ) \ chaine terminee par zero 1 ,X LDY, 0 ,X LDA, INX, INX, XSAVE STX, NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN BRK, 69 C, XSAVE LDX, F> JSR, NEXT JMP, ;C CREATE SMATH 30 ALLOT CODE F. >F JSR, XSAVE STX, 10 # LDY, BEGIN, 100 ,Y LDA, SMATH ,Y STA, DEY, 0< UNTIL, (bNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN BRK, 2B C, 10 # LDY, BEGIN, SMATH ,Y LDA, 100 ,Y STA, DEY, 0< UNTIL, XSAVE LDX, NEXT JMP, ;C : F# BL WORD COUNT OVER + OFF (FIN) STATE @ IF SWAP ROT lNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 3 0 DO [COMPILE] LITERAL LOOP THEN ; IMMEDIATE DECIMAL --> NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ PRIMITIVES OPR FUNCT ONLY FORTH ALSO DEFINITIONS HEX CODE FOPR 0 ,X LDA, >MARK STA, INX, INX, >F JSR, >A JSR, XSAVE STX, NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN 60 LDA, BRK, >RESOLVE FF C, XSAVE LDX, F> JSR, NEXT JMP, ;C : F+ 6A FOPR ; : F- 6B FOPR ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN: F* 6C FOPR ; : F/ 6D FOPR ; : F^ 6E FOPR ; DECIMAL ANNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN--> YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN . NNNNNNNNNNNNNNNNNNNNNN\ FUNCTIONS ONLY FORTH DEFINITIONS ALSO HEX CODE FFUNC 0 ,X LDA, >MARK STA, INX, INX, >F JSR, XSAVE STX, 60 LDA, NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ;NNNNNNNNNNNNNNNNNNNNNN BRK, >RESOLVE FF C, XSAVE LDX, F> JSR, NEXT JMP, ;C : FSIN 70 FFUNC ; : FCOS 71 FFUNC ; : FTAN 72 FFUNC ; : FATN 73 FFUNC ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHhNNNNNNNNNNNNNNNNNNNNNN: FEXP 74 FFUNC ; : FLN 75 FFUNC ; : FLOG 76 FFUNC ; : FRND 77 FFUNC ; : FSQR 78 FFUNC ; : FRAD 79 FFUNC ; : FDEG 7A FFUNC ; : FINT 7B FFUNC ; DNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN{YNNNNNNNNNNNNNNNNNNNNNN: FCHS 6F FFUNC ; : FRAND 7D FFUNC ; DECIMAL --> \:NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNhNNNNNNNNNNNNNNNNNNNNNN\ PASSAGES F <-> S ONLY FORTH DEFINITIONS ALSO HEX CODE U>F 0 ,X LDY, 1 ,X LDA, INX, INX, XSAVE STX, BRK, 80 C, XSAVE LDX, F> JSR, NEXT JMP, ;C "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN[%NNNNNNNNNNNNNNNNNNNNNN \ attention gestions des erreurs : donne zero si hors limites CODE F>U 8B STY, >F JSR, XSAVE STX, TSX, DEX, DEX, 89 STX, BNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN.NNNNNNNNNNNNNNNNNNNNNN BRK, 82 C, XSAVE LDX, PHA, 8B LDA, 0= IF, TYA, PUSH JMP, THEN, PLA, 0 # LDA, PUSH0A JMP, ;C DECIMAL rNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN{NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNN\ Fonctions speciales ONLY FORTH ALSO DEFINITIONS HEX CODE FABS 0 # LDA, 5 ,X STA, NEXT JMP, ;C NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCODE F0< INX, INX, INX, INX, 1 ,X LDA, 0 ,X STA, NEXT JMP, ;C DECIMAL iNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN&NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNuNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNDNNNNNNNNNNNNNNNNNNNNNN\ ETUDE DES FLOTTANTS DECIMAL : FH. 3 ?ENOUGH CR 3 0 DO FLIP H. LOOP ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNzNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN KNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN )NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN XNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN kNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN>NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN@       NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ Touches de fonctions 02JAN87 MZ, modifie 18AOU89 TBONLY FORTH DEFINITIONS DECIMAL VARIABLE FUNCT 31 2* ALLOT FUNCT 64 ERASE DNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN-NNNNNNNNNNNNNNNNNNNNNNHEX : FONCTION 278 ( variable KBDSHT ) C@ 1 AND 0<> IF X-IN THEN 279 ( variable KBDKEY ) C@ 1F AND 2* FUNCT + @ ?DUP IF COUNT DUP 7F > IF 1F AND THEN \ cas d'un nfa JNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN BOUNDS DO I C@ 7F AND CHAR LOOP THEN 278 C@ 1 AND 0<> IF CR-IN ELSE BL CHAR THEN ; ' FONCTION CTRL1 ! : (KEYFUNCT) (KEY) DUP 7F > IF DROP 0 THEN ; FNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN' (KEYFUNCT) IS KEY EAEA 133C ! \ re-autorise les codes > 128 dans (KEY) DECIMAL --> }NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ Fonctions : affectations de mots Forth 02JAN87 MZONLY FORTH DEFINITIONS HEX : ASSIGN ' >NAME SWAP 1F AND 2* FUNCT + ! ; ASCII W ASSIGN WORDS NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN^NNNNNNNNNNNNNNNNNNNNNNASCII F ASSIGN FORTH ASCII O ASSIGN ONLY ASCII E ASSIGN EMPTY-BUFFERS ASCII S ASSIGN SAVE-BUFFERS NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN-oNNNNNNNNNNNNNNNNNNNNNNASCII A ASSIGN ALSO ASCII P ASSIGN PREVIOUS DECIMAL --> fNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNx (NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN =QNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN `NNNNNNNNNNNNNNNNNNNNNN\ Listage des controles et fonctions 02JAN87 MZONLY FORTH DEFINITIONS HEX : .CTRL 1E 1 DO CR SPACE ." CTRL-" ASCII @ I + EMIT ." : " ,NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNCTRL1 I 2* + @ >NAME ID. ?STOP ?LEAVE LOOP ; : .FUNCT 20 0 DO FUNCT I 2* + @ ?DUP IF CR ." FUNCT-" I 40 + EMIT ." : " COUNT DUP 7F > IF 1F AND THEN 0 DO COUNT 7F AND rNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNEMIT LOOP DROP THEN ?STOP ?LEAVE LOOP CR ; ASCII C ASSIGN" .CTRL .FUNCT" DECIMAL CR .( liste des controles :) .CTRL _NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCR .( liste des fonctions :) .FUNCT EXIT ءNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN¤NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNLNNNNNNNNNNNNNNNNNNNNNN@       NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN}NNNNNNNNNNNNNNNNNNNNNN\ EDITOR -1- 06OCT86 MZ\ ONLY DEFINITIONS ALSO FORTH VOCABULARY EDITOR HEX ALSO EDITOR ALSO DEFINITIONS ljNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNhNNNNNNNNNNNNNNNNNNNNNN: TXT 1 WORD COUNT PAD PLACE ; : #LOCATE R# @ C/L /MOD ; : #LEAD #LOCATE LINE ROT NIP ; : #AFTER #LOCATE LINE >R OVER + R> ROT - ; SNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN[NNNNNNNNNNNNNNNNNNNNNN: H LINE PAD PLACE ; : E LINE BLANK UPDATE ; : S DUP 1 - 0E ?DO I LINE DROP I 1+ LINE CMOVE -1 +LOOP E ; @cNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN: D DUP H 0F DUP ROT ?DO I 1+ LINE DROP I LINE CMOVE LOOP E ; : (DISPLAY) CR #LEAD TYPE 7E EMIT #AFTER TYPE #LOCATE . DROP ; DEFER DISPLAY ' (DISPLAY) IS DISPLAY : T DUP C/L * R# ! H DISPLAY ; --> SNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN=NNNNNNNNNNNNNNNNNNNNNN\ EDITOR -2- 06OCT86 MZ\ : M R# +! DISPLAY ; : L SCR @ LIST (DISPLAY) ; f NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN KNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN xNNNNNNNNNNNNNNNNNNNNNN\ EDITOR -3- 06OCT86 MZ, modifie 15AOU89 TB\ : FIND PAD COUNT #AFTER DROP B/BUF R# @ - SEARCH 0= ABORT" pas trouve " PAD C@ + R# +! ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN CNNNNNNNNNNNNNNNNNNNNNN: N FIND DISPLAY ; : F TXT N ; : B PAD C@ NEGATE M ; : X TXT FIND PAD C@ NEGATE R# +! #AFTER PAD C@ DELETE UPDATE DISPLAY ; : TILL #AFTER TXT PAD COUNT #AFTER SEARCH 0= 1NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN rNNNNNNNNNNNNNNNNNNNNNNABORT" pas trouve" PAD C@ + DELETE UPDATE DISPLAY ; --> NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN!NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ EDITOR -4- 06OCT86 MZ\ HEX : ENTER? OVER = ; : ENTER PAD C/L 1+ BLANK QUERY TIB #TIB @ PAD PLACE ; ɄNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN]NNNNNNNNNNNNNNNNNNNNNN: NULL? #TIB @ 0= ; DECIMAL : NEW [ FORTH ] 16 0 DO CR I 3 .R SPACE I ENTER? IF ENTER NULL? IF 127 EMIT I LINE -TRAILING TYPE ELSE I [ EDITOR ] R 1+ THEN ELSE >NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNlNNNNNNNNNNNNNNNNNNNNNN[ FORTH ] I LINE -TRAILING TYPE THEN LOOP DROP ; : UNDER [ FORTH ] 1+ 16 0 DO CR I 3 .R SPACE I ENTER? IF ENTER NULL? IF 127 EMIT I LINE -TRAILING TYPE ELSE I [ EDITOR ] I 1+ THEN ,NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN[ FORTH ] ELSE I LINE -TRAILING TYPE THEN LOOP DROP ; : C TXT PAD COUNT #AFTER INSERT PAD C@ R# +! UPDATE DISPLAY ; : CLEAN 2 ?ENOUGH 1+ SWAP DO [ FORTH ] I [ EDITOR ] CLEAR LOOP FLUSH ; : PS -1 SCR +! ; : NS 1 SCR +! ; --> S!NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNYNNNNNNNNNNNNNNNNNNNNNN\ EDITOR -5- 06OCT86 MZ, modifie 15AOU89 TB\ : ID " 15AOU89 TB" ; : GET-ID ID TYPE 10 0 DO BS-IN LOOP ID EXPECT CR ; cNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNjNNNNNNNNNNNNNNNNNNNNNN: STAMP GET-ID ID 1 LINE DROP 10 - SWAP CMOVE UPDATE ; : DONE 1 BUFFER# 6 + @ IF STAMP THEN PREVIOUS SAVE-BUFFERS ; DEFER ED ' L IS ED : FRESH 1 BUFFER# READ-BLOCK DISCARD TOP ED ; >NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN6NNNNNNNNNNNNNNNNNNNNNN: (WHERE) SCR ! R# ! ALSO EDITOR (DISPLAY) ; ' (WHERE) IS WHERE ALSO FORTH DEFINITIONS : EDIT 1 ?ENOUGH SCR ! TOP ALSO EDITOR ED ; P)NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONLY FORTH DEFINITIONS DECIMAL %NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNTNNNNNNNNNNNNNNNNNNNNNN@ (           NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNeNNNNNNNNNNNNNNNNNNNNNN\ Editeur plein ecran SCREENS 06OCT86 MZONLY DEFINITIONS FORTH VOCABULARY SCREENS ALSO SCREENS DEFINITIONS DECIMAL VARIABLE TBUF VARIABLE TC VARIABLE TL NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN[NNNNNNNNNNNNNNNNNNNNNN\ adresse, nb de col et lig. du texte VARIABLE SCREEN VARIABLE SC VARIABLE SL \ adresse, nb de col et lig. de ecran VARIABLE RX VARIABLE RY VARIABLE CX VARIABLE CY NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN jNNNNNNNNNNNNNNNNNNNNNNVARIABLE SX VARIABLE SY \ coordonnees pointeur texte, curseur ecran, position ecran : ALLUME 128 SCREEN @ 40 CY @ * + CX @ + CTOGGLE ; : AFFICHE TBUF @ TC @ SY @ * + SX @ + SCREEN @ SL @ 0 DO !NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 9NNNNNNNNNNNNNNNNNNNNNN2DUP SC @ CMOVE 40 + SWAP TC @ + SWAP LOOP 2DROP ALLUME ; VARIABLE CHANGED : MODIFIED CHANGED ON ; --> YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN\ SCREENS mouvements curseur 06OCT86 MZ: CADRE RY @ RX @ DUP SC @ 2/ MIN DUP CX ! - DUP TC @ SC @ - MIN DUP SX ! - CX +! DUP SL @ 2/ MIN DUP CY ! - DUP TL @ SL @ - MIN DUP SY ! - CY +! NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN zNNNNNNNNNNNNNNNNNNNNNN; : DESCEND RY @ 1+ TL @ = IF RY OFF ELSE 1 RY +! THEN CADRE ; : MONTE RY @ 0= IF TL @ 1- RY ! ELSE -1 RY +! THEN CADRE ; : A-LA-LIGNE DESCEND RX OFF SX OFF CX OFF ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN INNNNNNNNNNNNNNNNNNNNNN: RETOUR MONTE TC @ 1- RX ! CADRE ; : AVANCE RX @ 1+ TC @ = IF A-LA-LIGNE ELSE 1 RX +! THEN CADRE ; : RECULE RX @ 0= IF RETOUR ELSE -1 RX +! CADRE THEN ; --> NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN/NNNNNNNNNNNNNNNNNNNNNN\ SCREENS commandes generales 06OCT86 MZ: TLINE TBUF @ TC @ RY @ * + ; : TR@ TLINE RX @ + ; : INSCRIT TR@ DUP DUP 1+ TC @ RX @ NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN C! AVANCE MODIFIED ; : EFFACE TR@ DUP 1+ SWAP TC @ RX @ - 1- CMOVE BL TBUF @ TC @ RY @ 1+ * + 1- C! MODIFIED ; : DETRUIT RECULE EFFACE ; GNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN: DEBUT RX @ 0= IF RY OFF ELSE RX OFF THEN CADRE ; : FIN TLINE TC @ -TRAILING NIP TC @ 1- MIN RX ! CADRE ; : DROITE SX @ SC @ + TC @ < IF 1 SX +! 1 RX +! THEN ; : GAUCHE SX @ 0> IF -1 SX +! -1 RX +! THEN ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNzwNNNNNNNNNNNNNNNNNNNNNN: BAS SY @ SL @ + TL @ < IF 1 SY +! 1 RY +! THEN ; : HAUT SY @ 0> IF -1 SY +! -1 RY +! THEN ; --> GNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN/$NNNNNNNNNNNNNNNNNNNNNN\ SCREENS commandes transferts 06OCT86 MZ: BLOT TR@ TC @ RX @ - BLANK MODIFIED ; : DL TLINE DUP TC @ + SWAP TL @ RY @ - 1- TC @ * CMOVE TBUF @ TC @ TL @ 1- * + TC @ BLANK MODIFIED ; !NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN: COUPE RY @ 1+ TL @ = IF BLOT ELSE TLINE DUP TC @ + TL @ RY @ - 1- TC @ * CMOVE> BLOT TLINE TC @ + DUP RX @ + SWAP TC @ RX @ - CMOVE TLINE TC @ 2* + RX @ - RX @ BLANK THEN MODIFIED ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN: COLLE RY @ 1+ TL @ <> IF TLINE TC @ + TR@ TC @ CMOVE TR@ TC @ + TC @ RX @ - BLANK 1 RY +! TLINE TC @ -TRAILING NIP 0= IF DL THEN -1 RY +! THEN MODIFIED ; BNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN--> YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ SCREENS commandes controles 06OCT86 MZ: LIMITES 0 MAX TC @ TL @ * 1- MIN ; : POINTE LIMITES TC @ /MOD RY ! RX ! CADRE ; : MOT TR@ TC @ RX @ - BL SCAN BL SKIP DROP TBUF @ - POINTE ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN: DET-MOT TR@ DUP TC @ RX @ - BL SCAN BL SKIP >R SWAP R@ CMOVE TR@ R@ + TC @ RX @ - R> - BLANK MODIFIED ; : MOT-AR TR@ BEGIN DUP TBUF @ > OVER 1- C@ BL = AND WHILE 1- REPEAT BEGIN DUP TBUF @ > OVER 1- C@ BL <> AND WHILE 1- ` NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN REPEAT TBUF @ - POINTE ; : ?SHIFT 632 C@ 1 AND ; : AVANCE/DROITE ?SHIFT IF DROITE ELSE AVANCE THEN ; : RECULE/GAUCHE ?SHIFT IF GAUCHE ELSE RECULE THEN ; TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN: MONTE/HAUT ?SHIFT IF HAUT ELSE MONTE THEN ; : DESCEND/BAS ?SHIFT IF BAS ELSE DESCEND THEN ; --> FNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN\ SCREENS commandes de blocs 06OCT86 MZVARIABLE XBLOC VARIABLE YBLOC : RY @ YBLOC @ - DUP 0 1 BETWEEN fNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN IF TC @ * RX @ + XBLOC @ - 0 MAX TC @ MIN PAD C! ELSE DROP THEN ; : COPIE PAD COUNT TR@ TC @ RX @ - INSERT TR@ PAD C@ + TBUF @ - POINTE MODIFIED ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  +NNNNNNNNNNNNNNNNNNNNNN: -FIN KCLK FIN ; \ empeche clic clavier direct sur ctrl- F --> MdNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ?NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNjINNNNNNNNNNNNNNNNNNNNNN\ SCREENS edition 06OCT86 MZCREATE CTRLED ] NOOP NOOP NOOP EFFACE NOOP NOOP [ : EDITION AFFICHE BEGIN KEY DUP 27 = NOT WHILE DUP 127 = IF DROP DETRUIT ELSE qNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNJ5NNNNNNNNNNNNNNNNNNNNNN DUP 32 < IF 2* CTRLED + @ EXECUTE ELSE INSCRIT THEN THEN AFFICHE REPEAT DROP ; --> >eNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNyNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN+ZNNNNNNNNNNNNNNNNNNNNNNFORTHF83 v2.4 )NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN~ NNNNNNNNNNNNNNNNNNNNNN)&&NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNM8NNNNNNNNNNNNNNNNNNNNNNceNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNԯNNNNNNNNNNNNNNNNNNNNNNF83KER COM 7DEVELOP FTHF83DEV COMTBONJOUR COM WORK FTH !FLOAT FTH !FUNCT FTHEDITOR FTHSCREENS FTH!DESAS FTHSEE FTH ASM FTH1CASEOFENDFTH HRS FTHF83ASS COM\3NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN LEXICOR FTH" !DEBUG FTH$ CALENDAR FTH%)ERATHOS FTH STRINGVARFTH%FILES FTH!JANUS FTH!MODULES FTH!MACROS FTH!PRINTER2 FTHSORT FTHDAO FTH!MONITOR FTH!TASKER FTHTAQUIN FTH )VvNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNDOS FTH!DIA FTH!TEXTOR FTH!UTILITY FTH!TELEDOS FTH WORK1 FTH !SWORDS FTH SWORDS CMDNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN đNNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ]NNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN n7NNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN;dNNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNUNNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN()NNNNNNNNNNNNNNNNNNNNNN\ EDITOR en mode SCREENS 06OCT86 MZ, modifie 15AOU89 TBONLY FORTH ALSO SCREENS ALSO EDITOR DEFINITIONS DECIMAL : L64 64 TC ! 16 TL ! 48082 SCREEN ! 38 SC ! 16 SL ! ; : L32 32 TC ! 32 TL ! 48082 SCREEN ! 32 SC ! 24 SL ! ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN]NNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN;NNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN*NNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNyNNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNvNNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN GNNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN %NNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN +NNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN~NNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNmNNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN^NNNNNNNNNNNNNNNNNNNNNN: TITRE CLS 2 1 AT 148 EMIT SC @ 1- SPACES 144 EMIT 3 1 AT .FILE ." ecran no " SCR ? 2 SL @ 2+ AT 148 EMIT SC @ 1- SPACES 144 EMIT CR ; : CONFIGURE TR@ TBUF @ - TC @ 64 = IF L32 ELSE L64 THEN TITRE NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN2NNNNNNNNNNNNNNNNNNNNNNPOINTE ; ' CONFIGURE CTRLED CONTROL P 2* + ! : (ED) CHANGED OFF SCR @ BLOCK TBUF ! L64 TITRE CURSOR R# @ POINTE EDITION TC @ RY @ * RX @ + R# ! CURSOR CHANGED @ IF UPDATE THEN ; ]NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNaNNNNNNNNNNNNNNNNNNNNNN: SCREENS-ON ['] (ED) IS DISPLAY ['] (ED) IS ED ; : SCREENS-OFF ['] (DISPLAY) IS DISPLAY ['] L IS ED ; SCREENS-ON CR .( editeur pleine page "SCREENS" compile ) ONLY FORTH DEFINITIONS DECIMAL NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPNNNNNNNNNNNNNNNNNNNNNN@        NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN9NNNNNNNNNNNNNNNNNNNNNN( CASE OF ENDOF ENDCASE ) ONLY FORTH DEFINITIONS ' FORTH IS ASSEMBLER HEX CREATE (OF) HERE DUP 2- ! NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNE8E8 , B538 , D5FE , D000 , B506 , D5FF , F001 , 4C03 , ' BRANCH 2+ , E8E8 , 4C C, ' ?BRANCH A + , : CASE ?COMP CSP @ !CSP 4 ; IMMEDIATE : OF 4 ?PAIRS COMPILE (OF) HERE 0 , 5 ; IMMEDIATE BNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN_NNNNNNNNNNNNNNNNNNNNNN: ENDOF 5 ?PAIRS COMPILE BRANCH HERE 0 , SWAP 2 [COMPILE] THEN 4 ; IMMEDIATE : ENDCASE 4 ?PAIRS COMPILE DROP BEGIN SP@ CSP @ = 0= WHILE 2 [COMPILE] THEN REPEAT CSP ! ; IMMEDIATE NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNlNNNNNNNNNNNNNNNNNNNNNNDECIMAL --> (NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN|NNNNNNNNNNNNNNNNNNNNNN( DESASSEMBLEUR 1 ) ONLY DEFINITIONS FORTH VOCABULARY TOOLS ALSO TOOLS DEFINITIONS DECIMAL DEFER C@ FORTH ' C@ TOOLS IS C@ DEFER @ FORTH ' @ TOOLS IS @ dNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ONNNNNNNNNNNNNNNNNNNNNN: DIM CREATE 4 * ALLOT DOES> SWAP 4 * + ; 256 DIM TABLE VARIABLE ADR : MEMO ADR @ C@ TABLE 3 TYPE SPACE ; : TYP ADR @ C@ TABLE 3 + C@ 48 - ; 0`NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN: NOCT TYP DUP 8 > SWAP 1 > + ABS 1+ ; : AFF 0 <# # # #> TYPE ; : AFF2 0 <# # # # # #> TYPE ; : ZONE ADR @ NOCT 0 DO DUP C@ AFF 1+ LOOP DROP 8 NOCT 2 * - SPACES ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN )NNNNNNNNNNNNNNNNNNNNNN: ADRESSE CR ADR @ AFF2 2 SPACES ; : Z1 ADR @ 1+ C@ AFF ; : Z2 ADR @ 1+ @ AFF2 ; : SUIVANT NOCT ADR +! ; --> _NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN nNNNNNNNNNNNNNNNNNNNNNN( DESASSEMBLEUR 2 ) : OPER TYP CASE 1 OF ." A" ENDOF 2 OF Z1 ENDOF 3 OF Z1 ." ,X" ENDOF 4 OF Z1 ." ,Y" ENDOF 5 OF ." (" Z1 ." ,X)" ENDOF 6 OF ." (" Z1 ." ),Y" ENDOF FBNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN _NNNNNNNNNNNNNNNNNNNNNN7 OF ." #" Z1 ENDOF 8 OF ADR @ DUP 1+ C@ DUP 127 > IF + 254 - ELSE + 2 + THEN AFF2 ENDOF 9 OF Z2 ENDOF 10 OF Z2 ." ,X" ENDOF 11 OF Z2 ." ,Y" ENDOF 12 OF ." (" Z2 ." )" ENDOF ENDCASE ; C7NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNALSO FORTH DEFINITIONS DECIMAL : DESAS BASE @ >R 16 BASE ! ADR ! BEGIN ADRESSE ZONE MEMO OPER SUIVANT ?STOP UNTIL CR R> BASE ! ; ALSO TOOLS DEFINITIONS LNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN=NNNNNNNNNNNNNNNNNNNNNN: INIT 256 0 DO I TABLE 3 0 DO DUP 63 SWAP C! 1+ LOOP 48 SWAP C! LOOP ; : !! TABLE 32 WORD COUNT DROP 4 ROT SWAP CMOVE ; INIT HEX --> P#NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNpNNNNNNNNNNNNNNNNNNNNNN( DESASSEMBLEUR 3 ) 6D !! ADC9 65 !! ADC2 69 !! ADC7 7D !! ADC: 79 !! ADC; 61 !! ADC5 71 !! ADC6 75 !! ADC3 2D !! AND9 25 !! AND3 29 !! AND7 3D !! AND: 39 !! AND; 21 !! AND5 31 !! AND6 DNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNANNNNNNNNNNNNNNNNNNNNNN35 !! AND3 0A !! ASL1 0E !! ASL9 06 !! ASL2 1E !! ASL: 16 !! ASL3 90 !! BCC8 B0 !! BCS8 F0 !! BEQ8 2C !! BIT9 24 !! BIT2 30 !! BMI8 D0 !! BNE8 10 !! BPL8 00 !! BRK2 50 !! BVC8 70 !! BVS8 18 !! CLC0 D8 !! CLD0 58 !! CLI0 ّNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNB8 !! CLV0 CD !! CMP9 C5 !! CMP2 C9 !! CMP7 DD !! CMP: D9 !! CMP; C1 !! CMP5 D1 !! CMP6 D5 !! CMP3 EC !! CPX9 E4 !! CPX2 E0 !! CPX7 CC !! CPY9 C4 !! CPY2 C0 !! CPY7 CE !! DEC9 C6 !! DEC2 DE !! DEC: D6 !! DEC3 CA !! DEX0 goNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN88 !! DEY0 4D !! EOR9 45 !! EOR2 49 !! EOR7 5D !! EOR: 59 !! EOR; 41 !! EOR5 51 !! EOR6 55 !! EOR3 EE !! INC9 E6 !! INC2 FE !! INC: F6 !! INC3 E8 !! INX0 C8 !! INY0 --> ȉNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN( DESASSEMBLEUR 4 ) 4C !! JMP9 6C !! JMP< 20 !! JSR9 AD !! LDA9 A5 !! LDA2 A9 !! LDA7 BD !! LDA: B9 !! LDA; A1 !! LDA5 B1 !! LDA6 B5 !! LDA3 AE !! LDX9 A6 !! LDX2 A2 !! LDX7 BE !! LDX; 5NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOsNNNNNNNNNNNNNNNNNNNNNNB6 !! LDX4 AC !! LDY9 A4 !! LDY2 A0 !! LDY7 BC !! LDY: B4 !! LDY3 4A !! LSR1 4E !! LSR9 46 !! LSR2 5E !! LSR: 56 !! LSR3 EA !! NOP0 0D !! ORA9 05 !! ORA2 09 !! ORA7 1D !! ORA: 19 !! ORA; 01 !! ORA5 11 !! ORA6 15 !! ORA3 bNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN|BNNNNNNNNNNNNNNNNNNNNNN48 !! PHA0 08 !! PHP0 68 !! PLA0 28 !! PLP0 2A !! ROL1 2E !! ROL9 26 !! ROL2 3E !! ROL: 36 !! ROL3 6A !! ROR1 6E !! ROR9 66 !! ROR2 7E !! ROR: 76 !! ROR3 40 !! RTI0 60 !! RTS0 ED !! SBC9 E5 !! SBC2 E9 !! SBC7 FD !! SBC: NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN)NNNNNNNNNNNNNNNNNNNNNNF9 !! SBC; E1 !! SBC5 F1 !! SBC6 F5 !! SBC3 38 !! SEC0 F8 !! SED0 78 !! SEI0 8D !! STA9 85 !! STA2 9D !! STA: --> 4NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN( DESASSEMBLEUR 5 ) 99 !! STA; 81 !! STA5 91 !! STA6 95 !! STA3 8E !! STX9 86 !! STX2 96 !! STX4 8C !! STY9 84 !! STY2 94 !! STY3 AA !! TAX0 A8 !! TAY0 BA !! TSX0 8A !! TXA0 9A !! TXS0 ӈNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN98 !! TYA0 DECIMAL FORGET INIT FORTH DEFINITIONS CR .( DESASSEMBLEUR ) 1NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 9/NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN l|NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN _MNNNNNNNNNNNNNNNNNNNNNN@         NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN\ DECOMPILATEUR 21OCT86 MZ, modifie 15AOU89 TBONLY FORTH ALSO TOOLS DEFINITIONS DECIMAL : OUT CR ." indice hors limites sur " DUP BODY> >NAME ID. ." maximum : " ? ." tente : " . QUIT ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN: MAP 2DUP @ U< IF 2+ SWAP 2* + ELSE OUT THEN ; : CASE: CONSTANT HIDE ] DOES> MAP @ EXECUTE ; : ASSOCIATIVE: CONSTANT DOES> DUP @ -ROT DUP @ 0 DO 2+ 2DUP @ = IF 2DROP DROP I 0 0 LEAVE THEN LOOP 2DROP ; O-NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN: .WORD DUP @ >NAME DUP C@ 64 AND IF ." [COMPILE] " THEN ID. 2+ ; : .CINLINE .WORD DUP C@ . 1+ ; : .INLINE .WORD DUP @ . 2+ ; : .BRANCH .WORD DUP @ U. 2+ ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN: .QUOTE .WORD .WORD ; : .STRING .WORD COUNT 2DUP TYPE SPACE + ; --> ENNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ DECOMPILATEUR 2 21OCT86 MZ: DOES? DUP 3 + SWAP C@ 76 = ; : .(;CODE) .WORD DOES? IF ." DOES> " ELSE DROP FALSE THEN ; : .UNNEST ." ; " DROP 0 ; TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN: .FINISH .WORD DROP 0 ; 16 ASSOCIATIVE: EXECUTION-CLASS ' CLIT , ' LIT , ' ?BRANCH , ' BRANCH , ' (LOOP) , ' (OF) , ' (DO) , ' (?DO) , qNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNdhNNNNNNNNNNNNNNNNNNNNNN' (+LOOP) , ' COMPILE , ' (.") , ' (ABORT") , ' (;CODE) , ' UNNEST , ' (") , ' (;USES) , 17 CASE: .EXECUTION-CLASS .CINLINE .INLINE .BRANCH .BRANCH .BRANCH .BRANCH .BRANCH 9NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN1;NNNNNNNNNNNNNNNNNNNNNN.BRANCH .BRANCH .QUOTE .STRING .STRING .(;CODE) .UNNEST .STRING .FINISH .WORD ; --> NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN\ DECOMPILATEUR 3 21OCT86 MZ, modifie 15AOU89 TB : .PFA >BODY BEGIN CR DUP 0 <# # # # # #> TYPE 2 SPACES DUP @ EXECUTION-CLASS .EXECUTION-CLASS DUP 0= ?STOP OR UNTIL DROP ; wNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN: .IMMEDIATE >NAME C@ 64 AND IF ." IMMEDIATE " THEN ; : .CONSTANT DUP >BODY ? ." constante " >NAME ID. ; : .VARIABLE DUP ." variable " >NAME ID. CR ." valeur = " >BODY ? ; zNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN: .: 6 SPACES ." : " DUP >NAME ID. .PFA ; : .DOES> DUP >NAME ID. ." DOES> " @ 1+ .PFA ; : .DEFER ." le vecteur de " DUP >NAME ID. ." est " >BODY @ >NAME ID. ; 8NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN: .OTHER DUP @ OVER >BODY = IF >NAME ID. ." est en code machine" EXIT THEN DUP @ C@ [ ' FORTH @ C@ ] LITERAL = IF .DOES> EXIT THEN >NAME ID. ." est inconnu" ; --> /NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ DECOMPILATEUR 4 21OCT86 MZ, modifie 15AOU89 TB: .USER-VARIABLE DUP ." variable-utilisateur " >NAME ID. CR ." valeur = " >BODY @ (UAREA) @ + ? ; 5 ASSOCIATIVE: DEF-CLASS &LNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN' QUIT @ , ' 0 @ , ' CAPS @ , ' KEY @ , ' BASE @ , 6 CASE: .DEF-CLASS .: .CONSTANT .VARIABLE .DEFER .USER-VARIABLE .OTHER ; : (SEE) BASE @ SWAP 16 BASE ! )NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNCR DUP DUP @ DEF-CLASS .DEF-CLASS .IMMEDIATE BASE ! CR ; ALSO FORTH DEFINITIONS : SEE ' (SEE) ; ONLY FORTH NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 4NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN !NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNtVNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGgNNNNNNNNNNNNNNNNNNNNNN@ 8 0              :'NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNT*NNNNNNNNNNNNNNNNNNNNNN\ Usual WAMB 6502 Assembler 10AUG86 MZ, modifie 15AOU89 TB\ modified for all F83's ONLY DEFINITIONS ALSO FORTH VOCABULARY (ASSEMBLER) ' (ASSEMBLER) IS ASSEMBLER ( if assembler a deferred voc. ) pNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNgNNNNNNNNNNNNNNNNNNNNNNALSO ASSEMBLER ALSO DEFINITIONS HEX DEFER PC ( program counter is deferred for all purposes ) ' DP IS PC ( PC is here for coded words ) \ compiling words : ڧNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN: ALLOT PC +! ; : C, PC @ C! 1 ALLOT ; : , PC @ ! 2 ALLOT ; : ," ASCII " PARSE TUCK PC @ SWAP MOVE ALLOT ; \ Backward and forward branches in absolute or relative mode : : $BE DUP -80 7F BETWEEN NOT ABORT" branchement hors limites " ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGNNNNNNNNNNNNNNNNNNNNNN : MARK PC @ DUP ; : RESOLVE DUP C@ 1F AND 10 = ( relative ? ) IF PC @ OVER 2+ - $BE SWAP 1+ C! ELSE 1+ PC @ SWAP ! THEN ; --> SNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNtNNNNNNNNNNNNNNNNNNNNNN\ Assembler addressing modes 10AUG86 MZ, modifie 15AOU89 TB\ 23 CONSTANT $MB 04 CONSTANT $MM ( both hold addressing mode ) : $!M ['] $MM >BODY ! ['] $MB >BODY ! ; : $SD 23 04 $!M ; jNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN)NNNNNNNNNNNNNNNNNNNNNN: $GM $MB 0F AND 4 * ; : $GB $MB F0 AND 10 / ; : $AZ $MB 0D AND 10 OR ['] $MB >BODY ! ; : $CA DUP FF00 AND 0= ; : $CB C, $SD PC @ 1+ - $BE C, ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN: $CC C, 3 AND ?DUP IF 2 AND IF , ELSE C, THEN THEN ; : $ME $SD TRUE ABORT" mode d'adressage incorrect" ; : $PT $GB SWAP $GM + $CC $SD ; : $CM $MM AND 0= IF $ME THEN ; DNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKNNNNNNNNNNNNNNNNNNNNNN: $DC $GM DUP 0C = SWAP 1C = OR IF $CA IF $AZ THEN THEN ; : $$M CREATE [ FORTH ] C, C, DOES> DUP C@ SWAP 1+ C@ $!M ; : $IM CREATE [ FORTH ] C, DOES> C@ [ ASSEMBLER ] C, $SD ; : $BR CREATE [ FORTH ] C, DOES> C@ $CB ; --> UNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNzNNNNNNNNNNNNNNNNNNNNNN\ Assembler addressing modes 10AUG86 MZ01 02 $$M .A 02 10 $$M # 08 27 $$M ,X 10 2B $$M () 20 26 $$M ,Y 40 14 $$M )Y 80 10 $$M X) : m1 CREATE [ FORTH ] C, C, DOES> DUP C@ >R 1+ C@ $CM PNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNDNNNNNNNNNNNNNNNNNNNNNN R@ 40 = R@ 14 = OR 0= IF ( NOT JMP OR JSR ) $DC THEN $MM 2 = IF 12 ['] $MB 2+ ! THEN R> $PT ; : m2 CREATE [ FORTH ] C, C, DOES> DUP C@ >R 1+ C@ $CM R@ A2 = R@ 82 = OR IF $GM 18 = IF 27 40 $!M THEN THEN }NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN uNNNNNNNNNNNNNNNNNNNNNN R@ 82 = R@ 80 = OR $GM 1C = AND IF $CA IF $AZ ELSE $ME THEN ELSE $DC THEN R> $PT ; \ Multi mode op-codes type 1 EE 61 m1 ADC, EE 21 m1 AND, EE C1 m1 CMP, EE 41 m1 EOR, NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN &NNNNNNNNNNNNNNNNNNNNNNEE A1 m1 LDA, EE 01 m1 ORA, EE E1 m1 SBC, EC 81 m1 STA, 14 40 m1 JMP, 04 14 m1 JSR, --> NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN\ Mnemonics 10AUG86 MZ\ Multi mode op-codes type 2 0D 02 m2 ASL, 0D 42 m2 LSR, 0D 22 m2 ROL, 0D 62 m2 ROR, 06 E0 m2 CPX, 06 C0 m2 CPY, 0C E2 m2 INC, 0C C2 m2 DEC, NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN dNNNNNNNNNNNNNNNNNNNNNN26 A2 m2 LDX, 0E A0 m2 LDY, 24 82 m2 STX, 0C 80 m2 STY, 04 20 m2 BIT, \ Implicite op-codes 00 $IM BRK, 18 $IM CLC, D8 $IM CLD, 58 $IM CLI, B8 $IM CLV, NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN WNNNNNNNNNNNNNNNNNNNNNNCA $IM DEX, 88 $IM DEY, E8 $IM INX, C8 $IM INY, EA $IM NOP, 48 $IM PHA, 08 $IM PHP, 68 $IM PLA, 28 $IM PLP, 40 $IM RTI, 60 $IM RTS, 38 $IM SEC, F8 $IM SED, 78 $IM SEI, AA $IM TAX, A8 $IM TAY, 98 $IM TYA, BA $IM TSX, 8A $IM TXA, 9A $IM TXS, PNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ Relative op-codes 90 $BR BCC, B0 $BR BCS, F0 $BR BEQ, 30 $BR BMI, D0 $BR BNE, 10 $BR BPL, 50 $BR BVC, 70 $BR BVS, --> NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN1NNNNNNNNNNNNNNNNNNNNNN\ Named references 10AUG86 MZ, modifie 15AOU89 TB: EQU CONSTANT ; \ Tests for stuctures B0 EQU CS F0 EQU 0= 30 EQU 0< 70 EQU VS CS EQU >= 0= EQU = NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNN: NOT 20 XOR ; \ System dependent constants and macros BC EQU N C4 EQU IP C7 EQU W C9 EQU UP CB EQU XSAVE 950 EQU NEXT 96B EQU POP 949 EQU PUSH 976 EQU SETUP 4NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN94B EQU PUT 970 EQU PUSH0A 969 EQU POPTWO : NEXT, NEXT JMP, ; : BOT 0 ,X ; \ Redefinable labels : (LABEL) R> DUP 2+ >R @ >BODY IN @ DEFINED IF NIP >BODY IN ! 0 CONSTANT NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSNNNNNNNNNNNNNNNNNNNNNN\ Assembler structured 10AUG86 MZ, modifie 15AOU89 TB\ conditionals \ Structures ( without control for easy cross over ) : IF, ( --- >mark ) >MARK ROT NOT $CB ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNbNNNNNNNNNNNNNNNNNNNNNN: THEN, ( >mark --- ) >RESOLVE ; : ELSE, ( >mark1 --- >mark2 ) CLV, >MARK BVC, SWAP >RESOLVE ; : BEGIN, ( --- mark ) IF, ; : AGAIN, ( mark --- ) SWAP AGAIN, THEN, ; \ Vocabulary adjustment : : END-CODE AVOC @ CONTEXT ! REVEAL ; : ;C END-CODE ; BNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNENNNNNNNNNNNNNNNNNNNNNN: ASM (ASSEMBLER) $SD ; ( add secutity to addressing mode ) ' ASM IS ASSEMBLER ( standard mode preset with each calling ) CR .( 6502 ASSEMBLER compile ) ONLY FORTH DEFINITIONS DECIMAL ;NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ Cet ASSEMBLEUR 6502 pour F83 est defini dans un vocabulaire (ASSEMBLER) dans la mesure ou ASSEMBLER est un vocabulaire vectorise pour permettre une eventuelle cross-compilation d'un systeme a un autre. La vectorisation de ASSEMBLER est une modi- lNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN#NNNNNNNNNNNNNNNNNNNNNNfication aisee si non prevue dans votre F83. Le site d'assem- blage PC est lui-meme vectorise pour une meta-compilation hors du dictionnaire habituel. C, , ," compilent octet mot-16-bits ou chaine ASCII a partir de _9NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN3NNNNNNNNNNNNNNNNNNNNNNPC. MARK >RESOLVE permettent des references arriere ou avant sans utilisation de labels. Ces mots peuvent s'utiliser aussi bien pour des branchements @NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNabsolus ou relatifs sans precaution particuliere. Dans le cas des branchements relatifs limites de -128 a +127 un controle de distance est effectue. t*NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN UNNNNNNNNNNNNNNNNNNNNNN\ Modes d'adressage. Le 6502 possede 13 modes d'adressage : Implicite Accumulateur Absolu Immediat Relatif Indirect Indexe-X Indexe-Y Indexe-indirect-X Indirect-indexe-Y ACNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN fNNNNNNNNNNNNNNNNNNNNNNZero-page-absolu Zero-page-indexe-X Zero-page-indexe-Y. L'assembleur utilise la page zero autant que possible sans que l'utilisateur ait a faire la distinction. Les modes implicite, absolu ( normal ou 0-page ) et relatif oNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN \NNNNNNNNNNNNNNNNNNNNNNsont reconnus sans declaration du mode. Les branchements relatifs sont declares comme absolus et calcules de facon automatique. NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN mNNNNNNNNNNNNNNNNNNNNNN$$M cree les mots de declaration de modes $IM cree les mnemoniques des codes implicites $BR cree les mnemoniques des codes relatifs . NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN>NNNNNNNNNNNNNNNNNNNNNN\ Modes d'adressage. .A accumulateur - # immediat - ,X indexe-X - () indirect ,Y indexe-Y - )Y indirect-indexe - X) indexe-indirect m1 cree les mnemoniques multi-modes de type 1 NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN m2 cree les mnemoniques multi-modes de type 2 la syntaxe d'une instruction est en assembleur Forth : kNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNBNNNNNNNNNNNNNNNNNNNNNN [argument] [mode-adressage] mnemo, mnemoniques multi-modes : ADC, AND, CMP, EOR, k@NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNsNNNNNNNNNNNNNNNNNNNNNNLDA, ORA, SBC, STA, JMP, JSR, ^NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ Mnemoniques. multi-modes : ASL, LSR, ROL, ROR, CPX, CPY, INC, DEC, NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNLDX, LDY, STX, STY, BIT, implicites : BRK, CLC, CLD, CLI, CLV, NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNDEX, DEY, INX, INY, NOP, PHA, PHP, PLA, PLP, RTI, RTS, SEC, SED, SEI, TAX, TAY, TYA, TSX, TXA, TXS, (gNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNANNNNNNNNNNNNNNNNNNNNNNrelatifs : BCC, BCS, BEQ, BMI, BNE, BPL, BVC, BVS, uNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN3pNNNNNNNNNNNNNNNNNNNNNN\ Utilisation de references denommees. EQU definit une adresse ou un argument Les tests pre-compilent les branchements relatifs pour les structures. >= et = s'utilisent apres CMP, NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNf#NNNNNNNNNNNNNNNNNNNNNNNOT inverse les tests precedents. Adresses du proto-noyau F83 en 6502 pour la compilation de mots en code : elles dependent du systeme. BOT est la cellule pointee sur la pile. m?NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNUNNNNNNNNNNNNNNNNNNNNNNLes labels sont ici a usage multiple : un label peut marquer le debut d'une routine en delivrant son adresse comme son equivalent dans les autres F83 mais il peut egalement s'agir d'une marque redefinie a l'interieur d'une compilation ou NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNE,NNNNNNNNNNNNNNNNNNNNNNd'une macro et referencee par son nom en arriere ou en avant dans le cas ou la gestion sur la pile des references par MARK serait rendue trop complexe : dans ce cas un label est comme une variable redefinie sur place par LABEL . UNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN vNNNNNNNNNNNNNNNNNNNNNN\ Structures d'assemblage. Ces structures qui comme les mnemoniques se terminent par une virgule assemblent des ruptures de sequences en mode relatif. Aucun controle de parite des structures n'est effectue pour NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN #NNNNNNNNNNNNNNNNNNNNNNNpermettre au programmeur de jongler avec les references sur la pile et autoriser ainsi des branchements imbriques souvent utilises dans l'optimisation des programmes en assembleur. Les mots tels que SWAP ROT -ROT PICK etc sont simples a ZNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNutiliser pour croiser les references. END-CODE ou ;C achevent les definitions CODE Chaque appel du vocabulaire ASSEMBLER initialise les modes !NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNd'adressage reconnus implicitement. Ceci a ete ajoute pour le cas ou surviendrait une erreur d'assemblage dans un autre mode. NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN@ UNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ CASE OF ENDOF ENDCASE - POUR KERNEL 17AOU89 TB ONLY FORTH DEFINITIONS HEX NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNܻNNNNNNNNNNNNNNNNNNNNNN CREATE (OF) HERE DUP 2- ! E8E8 , B538 , D5FE , D000 , B506 , D5FF , F001 , 4C03 , ' BRANCH 2+ , E8E8 , 4C C, ' ?BRANCH A + , : CASE ?COMP CSP @ !CSP 4 ; IMMEDIATE cNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN : OF 4 ?PAIRS COMPILE (OF) HERE 0 , 5 ; IMMEDIATE : ENDOF 5 ?PAIRS COMPILE BRANCH HERE 0 , SWAP 2 [COMPILE] THEN 4 ; IMMEDIATE : ENDCASE 4 ?PAIRS COMPILE DROP BEGIN SP@ CSP @ = 0= ONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN WHILE 2 [COMPILE] THEN REPEAT CSP ! ; IMMEDIATE DECIMAL vNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN@       NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ HIRES & SOUNDS modifie 18AOU89 TBONLY FORTH DEFINITIONS HEX : HIRES 1A BIOS BF68 IS STATLINE ; : TEXT 19 BIOS BB80 IS STATLINE ; M'NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN: P1 4D ! ; : P2 4F ! ; : P3 51 ! ; : P4 53 ! ; : P5 55 ! ; : FB 40 * 57 C! ; 1 FB : CURSET P2 P1 90 BIOS ; : CURMOV P2 P1 91 BIOS ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNQlNNNNNNNNNNNNNNNNNNNNNN: DRAW P2 P1 8E BIOS ; : ADRAW P4 P3 P2 P1 8D BIOS ; : BOX P2 P1 94 BIOS ; : ABOX P4 P3 P2 P1 95 BIOS ; : CIRCLE P1 8F BIOS ; : HCHAR P1 0 P2 97 BIOS ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNb]NNNNNNNNNNNNNNNNNNNNNN: HFILL P3 P2 P1 96 BIOS ; --> NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN7NNNNNNNNNNNNNNNNNNNNNN\ SOUNDS : PING 9D BIOS ; : SHOOT 47 BIOS ; : EXPLODE 9C BIOS ; : ZAP 46 BIOS ; pNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN?NNNNNNNNNNNNNNNNNNNNNN: PLAY P4 P3 P2 P1 43 BIOS ; : SOUND P3 P2 P1 44 BIOS ; : MUSIC P4 P3 P2 P1 45 BIOS ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN--> YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN '0NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN rcNNNNNNNNNNNNNNNNNNNNNN\ TRIGONOMETRIE ONLY FORTH DEFINITIONS DECIMAL CREATE TRIGO 0 , 572 , 1144 , 1715 , 2286 , 2856 , 3425 , 3993 , 4560 , 5126 , 5690 , 6252 , 6813 , 7371 , 7927 , 8481 , =NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ARNNNNNNNNNNNNNNNNNNNNNN9032 , 9580 , 10126 , 10668 , 11207 , 11743 , 12275 , 12803 , 13328 , 13848 , 14364 , 14876 , 15383 , 15886 , 16384 , 16876 , 17364 , 17846 , 18323 , 18794 , 19260 , 19720 , 20173 , 20621 , 21062 , 21497 , 21925 , 22347 , DNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN22762 , 23170 , 23571 , 23964 , 24351 , 24730 , 25101 , 25465 , 25821 , 26169 , 26509 , 26841 , 27165 , 27481 , 27788 , 28087 , 28377 , 28659 , 28932 , 29196 , 29451 , 29697 , 29934 , 30162 , 30381 , 30591 , 30791 , 30982 , WNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN31163 , 31335 , 31498 , 31650 , 31794 , 31927 , 32051 , 32165 , 32269 , 32364 , 32448 , 32523 , 32587 , 32642 , 32687 , 32722 , 32747 , 32762 , 32767 , --> NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ FONCTIONS TRIGONOMETRIQUES ONLY FORTH DEFINITIONS DECIMAL : SIN* 2 ?ENOUGH 360 MOD DUP 180 > SWAP OVER IF 180 - THEN DUP 90 > IF 180 - ABS THEN 2* TRIGO + @ SWAP ?NEGATE NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN32767 */MOD SWAP 2* 0< IF 1+ THEN ; : COS* 90 SWAP - SIN* ; VARIABLE ANGLE : TOURNE ANGLE @ + 360 MOD ANGLE ! ; ;NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN: AVANCE ANGLE @ 2DUP COS* -ROT SIN* NEGATE DRAW ; : GAUCHE 90 TOURNE ; : DROITE -90 TOURNE ; : CARRE 4 0 DO DUP AVANCE GAUCHE LOOP DROP ; : -CARRE 4 0 DO DUP AVANCE DROITE LOOP DROP ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN: DEBUT HIRES 120 100 CURSET ANGLE OFF ; : ESSAI DEBUT 24 0 DO 15 TOURNE 50 CARRE LOOP ; ESSAI .( pas mal ? ) KEY DROP TEXT FORGET ESSAI NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN-NNNNNNNNNNNNNNNNNNNNNN\ CERCLES DECIMAL : POLY ( R N --- ) DUP >R [NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN~NNNNNNNNNNNNNNNNNNNNNN360 SWAP / DUP >R 2/ SIN* R@ ANGLE ! R> R> 0 DO 2DUP TOURNE AVANCE LOOP 2DROP ; HEX : HPOS 46 C@ 47 C@ ; DECIMAL .NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNN: -DRAW ( x2 y2 --- ) HPOS 2SWAP ADRAW ; : */A DUP >R */MOD SWAP 2* ABS R> > IF 1+ THEN ; : DEFORM 4 3 */A ; : CERCLE ( ox oy r --- ) NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN'NNNNNNNNNNNNNNNNNNNNNNDUP 3 PICK + 2 PICK CURSET 37 0 DO DUP I 10 * COS* 3 PICK + OVER I 10 * SIN* DEFORM 3 PICK + -DRAW LOOP DROP CURSET ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNA c [                           !!!!!!!!! ! ! ! ! !!!!""""""""" " " NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNANNNNNNNNNNNNNNNNNNNNNNL>.LB.ALLVwPccz[ N ONcLI8 HűʕhąȈąiĐLLP HLI Ļ`CLIԐ HLC HȱǠhLHHiĘeȅLP HȱLI iHiLI eHȱeLI hhLP HHiȱi_)NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNrNNNNNNNNNNNNNNNNNNNNNNL BRANC HȱąhLR ?BRANC+ iĐLP 0 (LOOPL ˺ hhhhhhL3 A (+LOOP~ ˵HH}h}hLd r (DO HHHHHHiĐLi (?DO ͵L EXECUTŶNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNbNNNNNNNNNNNNNNNNNNNNNN ǵL R ˺HLI    + EXI: hhLP 1 UNNES: T HLK  Ci LP C x LP b C LP N DROШ LP DUе HLI SWA HLK OVE HLI TUC HhHcNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN QNNNNNNNNNNNNNNNNNNNNNNLI % NI Lk  RO" HLK r -ROD HLK  FLIf LP ?DUЩ ) L q SP HLI SP LP ] RP ˺HLI RP ˵Lk R hhLP > HHLP PIC >ZNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNHȱLI CMOV  v ļƽLP L CMOVE>  v eeeeƽLP ƼƿƾL] ; ANĉ 55Lk 3 Oҟ Lk XOҶ UULk NO HLI TRUž FALSž CSE NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 7NNNNNNNNNNNNNNNNNNNNNNLi CRESEI!Li CTOGGL*ULi O:Lk 3OFQLk IfuuLP NEGATŃ8LP 8LP ABӱ0LP `+uuLi  x  266FNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN qNNNNNNNNNNNNNNNNNNNNNNLP 2  vvLP U2vvLP 1,LP %1<LP 2NuuLP G2d8LP 5UM|666uuuLP tU*|UM/MO *66866ƼLk 0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN @NNNNNNNNNNNNNNNNNNNNNNLP 0LP 0$0LP 0<>LP RLk 6I #OU )SC 4#LIN PRIO >CURREN "VSTAT $BAS &JDP (pBN *dCS ,R .{HL 0SPA 2LAS 4CONTEX 6END @B̾ C/̾ @FIRSԾ xLIMzNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNoNNNNNNNNNNNNNNNNNNNNNNIԾ B/BUƾ #VOCӾ TI¾ (KEY2H H HH)HhLp KEٗ @((?KEY`Lp K?KEٗ ^U(EMITqɑɩqɑɵLk EMIԗ }t(CR%ȑqɑɩqɑLP iCҗ FIL v ľƿLP LERASũ @NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN^NNNNNNNNNNNNNNNNNNNNNNL BLAN˩ L COUN Lp TYPũ  BJ : L SPACũ L FSPACEө  mNJ gL VSTATLINž +HEة wv L Hz L ~DECIMA̩ wv L Dz L HOMũ L oKCL˩ @6 u(L BS-IΩ }L FW-IΩ }L DOWN-Z/NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNIΩ }L UP-IΩ }L CLө }FOL CLL-IΩ }L NOOJLP /CR-IΩ v L DEL-IΩ ) : N   L c(CHAR d *L MCHAҗ CTR CTRL ?44HH"U8H> 5H)HHs)H4HHHHHbhNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNH`0 EXPECԩ v  ) XQ ) AR dR  T P) Rl T  L QUER٩ $ P R v O%OL ^MIΩ !)  L MAة !)  L ABETWEEΩ   L WITHIΩ :L DuuuuLi NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN%NNNNNNNNNNNNNNNNNNNNNNDNEGAT 8LP S>ĩ L #?DNEGATũ ) F L DABө <L *ĩ !  z <L M/MOĩ x )  ! O   )  ) :  L rMU/MOĩ    L W z L 1/MOĩ ) zL NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  L MOĩ  L */MOĩ \ zL /  L UPPEA v ZPLP a{8 `HLEAVphhhhhhLP *?LEAVňLP fHERũ R L PAĩ  PdL 7-TRAILINǩ  !d:g :J L }COM v ļ Lp :.NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN5NNNNNNNNNNNNNNNNNNNNNNHLI ȸPLp CAPS-COM v ļ! Z ZŻ Lp HLI ȸP۩Lp CAP JCOMPARũ QR ) o qL DIGI}800 08 0 HLK HLK sDOUBLE R *<L UCONVERԩ * g wR {)  wR z wR z)    LPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNfNNNNNNNNNNNNNNNNNNNNNN (NUMBER?  *g -P 6 v  g , /) Jv  .B ) T  g PL BOUNDө d L ^NUMBER g / g wR { )  nJ )     L qNUMBEҗ R0RPˠɪLP ABORԗ p-?ERROҗ WHERŗ ENNNNNNNNNNNNNNNNNNNNNNNNNNNNNNWNNNNNNNNNNNNNNNNNNNNNN(?ERROR ) /R ) #%R R N2N 1L (ABORT"    d L ?MISSINǩ ) 2 > inconnu dans ce contexteL 3(NUMBER { ]L HOLĩ 6 R L < v L R# R  L SIGΩ )  -L  wR  GNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNiNNNNNNNNNNNNNNNNNNNNNN )  d 0dL #ө ! ) L (U. L U 42NL @U.ҩ 4 _2L -(.  L  m2NL .ҩ m _2L g(UD. L OUD 2NL (D. O L D 2NL D.ҩ  NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN XNNNNNNNNNNNNNNNNNNNNNN_2L SKI v ż8PޠʕLP SCAO v ż8PޠʕLP F/STRINǩ  dB L MOVũ B !)  <    L PLACũ ! * L SOURCŗ ,PARSE-WORĩ  %R NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  NNNNNNNNNNNNNNNNNNNNNN  M  <d%v L PARSũ %R  M  <%L WORĩ  d L # )+L r 8L HASȖ v ) eHeLI (FIND v ʥLp eeQ)?*ȱQ "eNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN :NNNNNNNNNNNNNNNNNNNNNNe*Lp HLI PFINĩ RO  z / dR ) v RR Rv P) h  v R  J <L DEFINEĩ ZQR )  ?,L S?STAC˩ R > pile vide > pile pleineL |DONE lR kR OL INTERPREԩ іNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 5NNNNNNNNNNNNNNNNNNNNNN)     )  ) L ALLOԩ L  v , L C  , L D ?COMЩ lR >en definition seulementL U COMPILũ ] L R 8 L $ IMMEDIATũ @R (L 4 LITERA̩ 6 ) I  6 8 L DLITERA̩ L ASCIɩ NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNZ*g lR ) ! L CONTRO̩ Z*g @lR ) 6! L ! ]L 8!['ݩ ] !L V!?EXEé lR >hors definNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSNNNNNNNNNNNNNNNNNNNNNNition seulementL !. ! )+2L !?PAIRө k>controles mal appairesL ">MAR˩ 8 L K">RESOLVũ  v L !definition incompleteL #TRAVERSũ d  g ) $ L x#N2NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN@NNNNNNNNNNNNNNNNNNNNNN>LIN˩ bL $L>NAMũ LL $BODY bL %NAME $*L %LINK L$*L (%>BOD٩ LL N%>NAMũ :6 $L \%>LIN˩ :6 $bL :%HIDũ R %R `R v L p%REVEA̩ R % `R v L $CREATũ #6 8 L %CONSTANԩ #6 8 8 L %VARIABLũ PNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN5ENNNNNNNNNNNNNNNNNNNNNN#6 8 8 L $USEҩ #6 8 8 L &ASSEMBLEҗ c%(;CODE R 0%v L %;CODũ $ <&#%.&L 2&(;USES R R 0%v L J&;USEө $ l&#%L b&DOES <& LI 6 8 L "&AVO |&CODũ %% bv R &v .&L &CRASȩ >vecteur non initialiseL @"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN`NNNNNNNNNNNNNNNNNNNNNN&DEFEҩ #6 8 6 &8 L % $`R v #6 8 %#L & $ L %#L 8'#BUFFERӾ 'FIL 98Y'>SIZž Jd'>BUFFERө l'L p'>ENĩ bL 'BUFFER {'dL 'LATEST R d'!R P LR `'R P ) ' ' dR L &ABSENT ' {'NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNS'NNNNNNNNNNNNNNNNNNNNNNv 'U' ](!R P LR `'R P ) T( {'  {' d {'<  'n dJ ( dR L 'UPDATũ ' d8L 'DISCARĩ ' dOL J'WRITE-BLOC˗ ;'READ-BLOC˗ ;j(MISSINǩ 'bR ) (' ('bO`'R {'Lv ' R {' dv {{QNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNʰNNNNNNNNNNNNNNNNNNNNNN' dO{' dU' < L (BUFFEҩ ') <) (' dR L )BLOC˩ ') a) (' ( dR L (EMPTY-BUFFERө {' 'U' )6 v d!v d dJ )L (SAVE-BUFFERө 'U' ) R *) ) dR ) ) ( dO dJ ) L NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN >)FLUSȩ )s)L *RD* v ˥x!)!)!( Ox!!(PHLI )WRm* v ˥x!)!)!( Ox!!(PHLI (DISK-ERR > erreur disqueL *RESERVž e*S/Ծ *RDBLOC˩ TsNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN dR R *d  <+!* * *** 6 d J +L *WRBLOC˩ dR R *d  +!* * k*** 6 d J k+L *.FILŗ =@+?STOЩ p) + Q PL *(IS  R V%v L L c)Iө lR ) + + +demarrage a chaudL X,COLĩ T,+,L +LOAė ,,(LOAD R %R %Ov + %v v L ,(SOURCE R x ) ,F) ,$R L M,VOCABULAR٩ %8 1NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN8 8 8 R 8 v <&L v L ,DEFINITIONө R `v L ,FORT-VO@T[y,SEA̩ L:L !-(ABORT R +,L f-LISԩ  :v +! ecran no   -/ N F)/ d2+J - L |-TERMINA̗ 6;-.VERSIOΗ o6-DEFAULԗ ;-݋NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNHELLϩ `0C-/-s)-"!FORTH 83-STANDARD --L -(COLD>. ɭ ʹ ɈlƩ,ũآL3.DEPTȩ R  L -.ө p.x ) . .p./ : NJ . .! pile vide L h.H wR wv Ewv L .PROMPԗ .O- R L .O˩ !OkwjjNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNR P) / . ;/ P) '/ # ;/ P) 8/ % ;/ * p.L .?LOADINǩ R >sur disque seulement L E/?ENOUGȩ p.:>pas assez de parametresL $,-- P/%OL .ܩ P/%R %L /THRթ |/* // ,J /L /ID   x ) t|NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ڎNNNNNNNNNNNNNNNNNNNNNN0 0  J 0 NL /ALSϩ  L:< L /PREVIOUө  L   dOL r/ONLn0b[bA1EM-<&L V-!Lv v L 8L ALSϩ "0L FORTȩ C-L 0DEFINITIONө /-L ORDEҩ ! contexte :  0 R x ) 0"%d%/LJ 0 !vocabwNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN CNNNNNNNNNNNNNNNNNNNNNNulaire courant : `R "%d%/L 0VOCө R "%d%/R ) *1 L .2 R LR L E12 B v Lv L Z12CONSTANԩ %8 8 <&L J1L m12VARIABLũ y1<&L L 40LARGESԩ   1!R ) 1B  R LJ 1 L Y0WORDө R    1 <'NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN p(NNNNNNNNNNNNNNNNNNNNNN+ ) 22 % g  0R d) &2/R v  1L 0WORDө 1L 1TRIͩ  v2!R ! ) j2R  Z2 v LJ V2L D2(FORGET R >dictionnaire protege R !) 2R  2 v ) 2! K2R  2 v L 1FORGEԩ ZQR ) 2 ?`R ŧNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN%{NNNNNNNNNNNNNNNNNNNNNN R ]x%2L 2FORBIĩ ZQR ) 13 ?`R  R ]x% !R k) Y3R  I3 R v L 3BIOl3z3̤͆˦$̄͆hϦLk 1OPCȩ ̒  j3L 3CLCȩ ̒  dj3L 3CAL333 LP c3BAN3x)*ɭ!)ɍ!fNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNJNNNNNNNNNNNNNNNNNNNNNN(Lk z2DUMЩ wR wv  2N  T4 / dg 2NJ :4  z4 / dg   ~J ]4 d+) 4 wv L 0INDEة |/* 4/ N/ F)2+J 4L 4A-IΩ 6 Lg L 3C-IΩ -_,L 4X-IΩ <) 5 \GNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNL 4CURSOҩ }L 4Aԩ } @d} @d}L 3BASIé r!COM6 ]   36 3L 4LOC˩ `0C-/-R R 6 v 6  v 6  v R 6 v v L 25BYũ b56 ..:5L 5IN˩  ̒ O j3L [5PAPEҩ  d ̒ O j3L 5(KBD NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN66NNNNNNNNNNNNNNNNNNNNNN ̒ Rj3L 5QWERT٩ 5L 6AZERT٩ 5L 6ACCENԩ 5L 5VERSIOΩ r!V2.4 DEVELOPPEMENTL 5(.VERSION I62L b6(TERMINAL 6 6 u r!FTH6 ]  L -6INSERԩ     d <  L ?6REPLACũ  L y6DELETũ    ") 7!5NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN BNNNNNNNNNNNNNNNNNNNNNN  dB  d L 6FOUN 5SEARCȩ 7O * \7_) R778n * J B7 7R L 6LINũ 6 <>hors limites ecran :R F)dL !7CLEAҩ :v %)s(L j7(COPY F) 'v s(L 7COPٗ 77?RANGũ  > hors limite NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNs L 7CAPACIT 0DO-=88=pas de STRATSED L EXԃ1]DR֩  6 dg >lecteur absent 6  6  L 18.DR֩ R 6 g Ad!-: 36 .!secteurs libres 3L q8EXTiNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  NNNNNNNNNNNNNNNNNNNNNN w8Zw8  L 8NAME Β v $j3 g >nom de fichier incorrect 6 g 8L 9FILENAMũ T8Z9L ]9BDO9ˌ9ʎx!)!)!(̤ͦ }̄͆hx!!(˭LP M8SEARCȩ }}9* g  L 9SEARCH }9* g GNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 2NNNNNNNNNNNNNNNNNNNNNN L }8XSAVũ 6 , 6 /v 6 -v 6 ( k}9*L :XLOAĩ 6 (v b}9*L v9FILE T8R 3`'R 6 6 g d *  6  d 6 g 3L 9?FILũ h99 >fichier inexistant L :OPEN-FILũ `'R g 8 dg dg 6 ** dg : J>NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN8v L 6:(DEFAULT r!*99 >pas de fichier par defaut W::!fichier par defaut : +L O:RECORD R 3 6 dg 6 dg 3L ^;FILE-REAĩ dR R 8R 7:   ;!h; *** 6 d J ;L ;FILE-WRITũ dR R ANNNNNNNNNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNN 8R 7:   3fichier existant  9NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN gNNNNNNNNNNNNNNNNNNNNNN7s)6 6 d6 @:W::* 0=/ 7J (= *<:L <.NAMũ R 36 6 g d 2!. d2 dg :  !.K3L <(.FILE `'R x ) = g Ad - * 2!. d2N!/ L 8OPEΩ :W::L 7TAKũ <=s), *<:L =NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN wNNNNNNNNNNNNNNNNNNNNNNCAԩ +8R 4L =DIҩ h99) 5>@=9+ ) 5>@= #>8L 8PRINTE->>#8(PRINT 0 ̒ Hj3L S>(PCR ]> ]>0OFL q>P >POΩ  3>8L >POFƩ  3>OL >P-IΩ >R ) >> >>L ON-LINũ 6   ? 0~NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN DNNNNNNNNNNNNNNNNNNNNNNj3J >6 g  k>imprimante non connectee L 7FUNC 0UAe)=-@[060a@@)@12?FONCTIOΩ 6 xg  <) ?46 yg  :?dR x ) ? ) ?  g ?/ g  J ?6 xg  <) ?U ?L >(KEYFULNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNCT 0 ) @ L 6ASSIGΩ TXԩ ZL #LOCATũ R L A#LEAĩ Aq7 L A#AFTEҩ Aq7 d L wAȩ q7L ũ q7s(L Aө   NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNB/ q7 / *q7 6 | BAL Aĩ A  BB/ *q7 / q7 J 0BAL B(DISPLAY A2 ~A2A L FBDISPLAٗ NkBԩ v AuBL Aͩ uBL yB̩ :R -RBL ҩ  q76L BЩ A}ABL Bɩ ABL BTOЩ v L BFINĩ A NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN /NNNNNNNNNNNNNNNNNNNNNNR *7> pas trouve g dL BΩ BuBL $CƩ }A(CL 0C© g BL Bة }ABg Ag 6s(uBL LCTIL̩ A}AA*7> pas trouveg d6s(uBL BENTER PL CENTEҩ *f$R L FS ALLUMũ FR (:FR d1FR d(L PFAFFICHũ ER ER LFR dCFR dFR FR  F! FR  (d ER d J FYFL GFCHANGE wFMODIFIEĩ F8L FCADRũ (FR FR FRM>NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 1NNNNNNNNNNNNNNNNNNNNNN  1Fv  ER FR  CFv 1F FR  :Fv  ER FR  LFv :FL EDESCENĩ (FR *ER P) yG(FO G(FFL FMONTũ (FR ) GER :(Fv  G6 (FFL GA-LA-LIGNũ _GFOCFO1FOL #FRETOUҩ GER :Fv FL GAVANCũ FR *ER wNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN!NNNNNNNNNNNNNNNNNNNNNNP) HG HFFL GRECULũ FR ) 1HG ;H6 FFL UGTLINũ ER ER (FR dL =HTR EHFR dL GINSCRIԩ _H *ER FR :< GFL kHEFFACũ _H * ER FR : ER ER (FR *d: FL YHDETRUIԩ HHL HDEBUԩ FR ) I(FO IbNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN!NNNNNNNNNNNNNNNNNNNNNNFOFL HFIΩ EHER  ER :Fv FL HDROITũ CFR FR dER ) UICFFL FGAUCHũ CFR ") |I6 CF6 FL IBAө LFR FR dER ) ILF(FL *IHAUԩ LFR ") I6 LF6 (FL ~IBLOԩ _HER FR FL ID̩ EH ER d ER (NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN!ݔNNNNNNNNNNNNNNNNNNNNNNFR :ER  ER ER ER :dER FL WICOUPũ (FR *ER P) KJI JEH ER dER (FR :ER < IEHER d FR d ER FR  EHER dFR FR FL +JCOLLũ (FR *ER k) KEHER d_HER  _HER dER FR (FEHER  ) JI6 (FNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN!DNNNNNNNNNNNNNNNNNNNNNNFL ILIMITEө ER ER :L KPOINTũ KER (Fv Fv FL HMOԩ _HER FR M ER .KL %KDET-MOԩ _H ER FR M   _H dER FR  FL DKMOT-Aҩ _H ER  :g P ) K: K ER  :g k ) K: KER .0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN!w2NNNNNNNNNNNNNNNNNNNNNNKL J?SHIFԩ 6 xg  L KAVANCE/DROITũ L) 8L3I :LGL IRECULE/GAUCHũ L) ZL`I \LHL LMONTE/HAUԩ L) yLI {LGL lKDESCEND/BAө L) LI L_GL }LXBLO ^LYBLO LTOOL-'[X[,WEC g R 8PDIͩ % , <&L dL @PTABLSPBRK2ORA5???0???0???0ORA2ASL2???0PHP0ORA7ASL1???0???0ORA9ASL9???0BPL8ORA6???0???0???0ORA3ASL3???0CLC0ORA;???0???0???0ORA:ASL:???0JSR9AND5???0???0BIT2ANNNNNNNNNNNNNNNNNNNNNNNNNNNNNN! g NNNNNNNNNNNNNNNNNNNNNNND3ROL2???0PLP0AND7ROL1???0BIT9AND9ROL9???0BMI8AND6???0???0???0AND3ROL3???0SEC0AND;???0???0???0AND:ROL:???0RTI0EOR5???0???0???0EOR2LSR2???0PHA0EOR7LSR1???0JMP9EOR9LSR9???0BVC8EOR6???0???0???0EOR3LSR3???0CLI0EOR;???0???0???0EOR:LSR:???0RTS0ADC5???0???0???0A`NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN! T=NNNNNNNNNNNNNNNNNNNNNNDC2ROR2???0PLA0ADC7ROR1???0JMP  vX L PX.UNNESԩ !; L xX.FINISȩ W L IWEXECUTION-CLAS^W 6 )  J |O | !><&L r!l&X.EXECUTION-CLAS>WWWWWWWWW/NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN" *NNNNNNNNNNNNNNNNNNNNNNWX%X%X[XX%XXWL X.PF V% 2_ WYYYZZNZL Z(SEE wbranchement hors limMAR˩ [R L \RESOLVũ g  P) m\[R L[ *  w\*[R v L )\$M¾ #y\$M; \$!ͩ 6 \V%v 6 \V%v L \$Sĩ # \L \$Gͩ \  L \$G© \ L \$Aک \  6 \V%v NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNN L \$C 6 L ]$C© [\[R *[[L ]$Cé [ x ) U] ) S][ U][L 1]$Mũ \ >mode d'adressage incorrectL W]$Pԩ \ \d7]\L ]$Cͩ \ ) ]]]L ]$Dé \ P P ) ] ]) ]\L ]$$ͩ %I I <&L g *g \L ]$Iͩ |NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNN%I <&L g [\L ]$Bҩ %I <&L g ]L 8\.][]^,]'8^(]+A^,]& [)]@J^X]S^M %I I <&L g *g ] @P P ) ^]\P) ^ 6 \Lv ]L e^M %I I <&L g *g ] P P ) ^\ P) ^ ' @\ ZbNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNNP P \ P ) *_ ]) $_\ &_]] ,_] ]L ^ADCt^a2_ANDt^!0^CMPt^=_EORt^A\^LDAt^H_ORAt^i_SBCt^t_STAt^'^JMPt^@_JSRt^S_ASL^ ^_LSR^B _ROL^" _ROR^b _CPX^_CPY^_INC^ _DEC^ _LDX3NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNN^&_LDY^_STX^$`STY^ _BIT^ %`BRK^`CLC^:`CLD^D`CLI^XN`CLV^`DEX^b`DEY^_INX^v`INY^0`NOP^l`PHA^H`PHP^`PLA^h`PLP^(`RTI^@`RTS^`X`SEC^8`SED^`SEI^x`TAX^`TAYNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN" NNNNNNNNNNNNNNNNNNNNNN^`TYA^aTSX^ aTXA^aTXS^`BCC^+aBCS^5aBEQ^?aBMI^0IaBNE^SaBPL^]aBVC^PgaBVS^p`EQթ %L `CӾ !a0 a0 0qaVӾ pa> {a aNOԩ L aξ aIо a׾ aUо aXSAVž aNEXZNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN" NNNNNNNNNNNNNNNNNNNNNN P aPOо k bPUSȾ I aSETUо v bPUԾ K %bPUSH0 p /bPOPTWϾ i aNEXT b_L IbBOԩ =^L R SWAP DUP C@ R> C! C! ; : MELANGE ( adr long --- ) \ permute 2 caracteres pris 9NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"hNNNNNNNNNNNNNNNNNNNNNN 2DUP RDM + \ au hasard dans une chaine ROT ROT RDM + EXCHANGE ; --> @NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"#YNNNNNNNNNNNNNNNNNNNNNN\ Conception d'une table modifie 15AOU89 TB CREATE TABLE 676 ALLOT \ TABLE 26*26 de 676 octets \ F79 : 0 VARIABLE TABLE 674 ALLOT iNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN#VNNNNNNNNNNNNNNNNNNNNNN : ELEMENT ( ascii-1 ascii-2 --- adr ) \ donne l'adresse d'un ASCII A - SWAP ASCII A - \ element de la TABLE 26 * + TABLE + ; ONNNNNNNNNNNNNNNNNNNNNNNNNNNNNN#NNNNNNNNNNNNNNNNNNNNNN : RANG ( --- ) \ sert seulement a remplir TABLE [COMPILE] ASCII 26 0 DO BL WORD ( F79: ajouter HERE ) NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN#0NNNNNNNNNNNNNNNNNNNNNN NUMBER DROP OVER I ASCII A + ELEMENT C! LOOP DROP ; --> NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN#kNNNNNNNNNNNNNNNNNNNNNN\ Remplissage de la table des correspondances \ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z RANG A 0 5 5 5 1 5 5 5 4 5 5 5 4 4 1 5 5 5 5 5 4 5 5 5 4 5 RANG B 5 0 0 0 5 0 0 0 5 0 0 2 0 0 5 0 0 2 3 0 5 0 0 0 5 0 NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN#ZNNNNNNNNNNNNNNNNNNNNNNRANG C 5 0 3 0 5 0 0 2 5 0 3 2 3 3 5 3 0 2 3 3 5 0 0 0 5 0 RANG D 5 0 0 3 5 0 0 0 5 0 0 0 0 0 5 0 0 2 0 0 5 0 0 0 5 0 RANG E 1 5 5 5 0 5 5 5 4 5 5 5 4 4 1 5 5 5 5 5 4 5 5 5 4 5 RANG F 5 0 0 0 5 3 0 0 5 0 0 2 0 0 5 0 0 2 0 3 5 0 0 0 5 0 wNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN# NNNNNNNNNNNNNNNNNNNNNNRANG G 5 0 0 0 5 0 0 2 5 0 0 2 0 2 5 0 0 2 0 0 5 0 0 0 5 0 RANG H 5 0 0 0 5 0 0 0 5 0 0 0 0 0 5 0 0 0 0 0 5 0 0 0 5 0 RANG I 1 5 5 5 1 5 5 5 0 5 5 5 4 4 1 5 5 5 5 5 1 5 5 5 0 5 RANG J 5 0 0 0 5 0 0 0 5 0 0 0 0 0 5 0 0 0 0 0 5 0 0 0 5 0 NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN#8NNNNNNNNNNNNNNNNNNNNNNRANG K 5 0 0 0 5 0 0 0 5 0 0 2 0 0 5 0 0 2 0 0 5 0 0 0 5 0 RANG L 5 3 3 3 5 3 3 0 5 3 3 3 3 3 5 3 3 3 3 3 5 3 3 0 5 0 RANG M 5 3 0 0 5 0 0 0 5 0 0 0 3 3 5 3 0 0 3 3 5 0 0 0 5 0 --> NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN#NNNNNNNNNNNNNNNNNNNNNN\ Remplissage de la table (fin) \ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z RANG N 5 3 3 3 5 3 3 0 5 3 3 3 0 3 5 0 3 3 3 3 5 3 3 0 5 3 RANG O 1 5 5 5 1 5 5 5 4 5 5 5 4 4 0 5 5 5 5 5 4 5 5 5 4 5 !SNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN# 7NNNNNNNNNNNNNNNNNNNNNNRANG P 5 0 0 0 5 0 3 2 5 0 0 2 0 3 5 3 0 2 3 3 5 0 0 0 5 0 RANG Q 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 RANG R 5 3 3 3 5 3 3 2 5 3 3 3 3 3 5 3 3 3 3 3 5 3 3 3 5 3 RANG S 5 3 3 3 5 0 0 2 5 0 3 0 3 3 5 3 3 3 3 2 5 3 3 0 5 0 zNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN# dNNNNNNNNNNNNNNNNNNNNNNRANG T 5 0 0 0 5 0 0 2 5 0 0 3 3 0 5 0 0 2 3 3 5 0 0 0 5 0 RANG U 1 5 5 5 1 5 5 5 4 5 5 5 5 5 1 5 5 5 5 5 0 5 5 5 4 5 RANG V 5 0 0 0 5 0 0 0 5 0 0 2 0 0 5 0 0 2 0 0 5 0 0 0 5 0 RANG W 5 0 0 0 5 0 0 0 5 0 0 0 0 0 5 0 0 0 0 0 5 0 0 0 5 0 LNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN# UNNNNNNNNNNNNNNNNNNNNNNRANG X 5 0 3 0 5 0 0 0 5 0 0 0 0 0 5 3 0 0 0 3 5 0 0 0 5 0 RANG Y 1 5 5 5 1 5 5 0 0 0 5 5 5 5 1 5 5 5 5 5 1 5 5 5 0 5 RANG Z 5 0 0 0 5 0 0 0 5 0 0 0 0 0 5 0 0 0 0 0 5 0 0 0 5 0 FORGET RANG --> rNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN#  NNNNNNNNNNNNNNNNNNNNNN\ Fonction 'HARMONIE' d'un anagramme modifie 15AOU89 TB: HARMONIE ( adr long --- flag ) 0 SWAP 1- 0 DO OVER I + DUP C@ SWAP 1+ C@ ELEMENT C@ ΂NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN# NNNNNNNNNNNNNNNNNNNNNN ?DUP ( ou -DUP en F79 ) 0= IF DROP 0 LEAVE \ type interdit : on abandonne le mot ELSE 2DUP = OVER 4 < AND IF 2DROP 0 LEAVE \ deux types identiques NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN#FNNNNNNNNNNNNNNNNNNNNNN ELSE SWAP OVER 3 = SWAP DUP 0= SWAP 2 = OR AND \ cas du type 3 IF DROP 0 LEAVE THEN THEN THEN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN#uNNNNNNNNNNNNNNNNNNNNNN LOOP SWAP DROP DUP 0= SWAP 2 = OR 0= ; \ cas du type 2 en fin de mot --> olNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN#fNNNNNNNNNNNNNNNNNNNNNN\ ANA : affiche une serie d'anagrammes modifie 15AOU89 TB \ "harmonieux" NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN#UNNNNNNNNNNNNNNNNNNNNNN: ANA BL WORD \ prend le mot qui suit ANA COUNT \ F79: ajouter HERE avant COUNT BEGIN \ repeter : 2DUP MELANGE \ melanger deux lettres >3NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN$NNNNNNNNNNNNNNNNNNNNNN 2DUP HARMONIE \ est-ce un mot harmonieux ? IF CR 2DUP TYPE \ oui : l'afficher THEN \ non : passer au suivant ?STOP \ ?TERMINAL, ou TELEFORTH: ?TERMSTOPJNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN$RNNNNNNNNNNNNNNNNNNNNNN UNTIL \ jusqu'a ordre d'arret au clavier 2DROP ; }NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN$aNNNNNNNNNNNNNNNNNNNNNN\ AUTRE HARMONIQUE : JOLI 0 SWAP 1- 0 DO OVER I + DUP C@ SWAP 1+ C@ LIEN QNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN$FNNNNNNNNNNNNNNNNNNNNNN?DUP 0= IF DROP TRUE LEAVE ELSE 1- SWAP OVER OR 0= IF DROP TRUE LEAVE THEN THEN LOOP 1+ NIP ; 6NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN$wNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN$$NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN$NNNNNNNNNNNNNNNNNNNNNN\ VOYELLES ONLY FORTH DEFINITIONS DECIMAL VARIABLE TABLE-LETTRES 24 ALLOT : REMPLIR 26 0 DO BL WORD NUMBER DROP NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN$+NNNNNNNNNNNNNNNNNNNNNN TABLE-LETTRES I + C! LOOP ; \ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z REMPLIR 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 : ?VOYELLE ASCII A - TABLE-LETTRES + C@ ; x NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN$ NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN$ INNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN$ xNNNNNNNNNNNNNNNNNNNNNN@  $ $ $$$$%%%%%%%%% % % % % %`NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN$ qNNNNNNNNNNNNNNNNNNNNNN\ DEBUG-1 modifie 18AOU89 TB\ version compilee sans assembleur ONLY FORTH DEFINITIONS ALSO ASSEMBLER HEX VARIABLE VARIABLE 'DEBUG 0 C, NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN$ BNNNNNNNNNNNNNNNNNNNNNNHERE A0A9 , 508D , A909 , 8D01 , 0951 , B1A9 , 528D , 6009 , CONSTANT FNEXT HERE C5A5 , CD C, 1+ , C5C5 , 2F90 , 05D0 , AD C, HyNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN$NNNNNNNNNNNNNNNNNNNNNNIP> , C4C5 , 2690 , AD C, 'DEBUG 2+ , 0149 , 8D C, 'DEBUG 2+ , 1CF0 , 20 C, FNEXT , AD C, 'DEBUG , C785 , AD C, 'DEBUG 1+ , C885 , 00A0 , CACA , C5A5 , 0195 , C4A5 , 0095 , C64C , A000 , B101 , 4CC4 , 0954 , NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN$$NNNNNNNNNNNNNNNNNNNNNN CONSTANT DEBNEXT --> c,NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN$7NNNNNNNNNNNNNNNNNNNNNN\ DEBUG-2 CREATE PNEXT HERE DUP 2- ! 4CA9 , 508D , A909 , DEBNEXT 100 MOD C, 518D , A909 , DEBNEXT 100 / C, 528D , 4C09 , 0950 , NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN$NNNNNNNNNNNNNNNNNNNNNNCREATE FIX HERE DUP 2- ! 20 C, FNEXT , 504C , 09 C, : L.ID SWAP DUP ID. DUP NAME> 1- - + SPACES ; VARIABLE SLOW VARIABLE RES ]"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN%qNNNNNNNNNNNNNNNNNNNNNN: (DEBUG) 1 'DEBUG 2+ C! IP> ! YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN%eNNNNNNNNNNNNNNNNNNNNNN\ DEBUG 3 : TRACE >R .S R> @ >NAME 10 L.ID SLOW @ NOT ?KEY OR IF SLOW OFF RES OFF ." --> " KEY ASCII C OVER = IF SLOW @ NOT SLOW ! THEN ASCII F OVER = IF DROP BEGIN QUERY cNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN%NNNNNNNNNNNNNNNNNNNNNNRUN RES @ UNTIL THEN ASCII Q OVER = ABORT" Unbug " DROP THEN PNEXT ; ' TRACE 'DEBUG ! : DEBUG ' 2- DUP 'UNNEST (DEBUG) ; ^NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN%NNNNNNNNNNNNNNNNNNNNNN: RESUME RES ON 0 PNEXT ; ONLY FORTH DEFINITIONS DECIMAL --> QNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN%NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN%ۡNNNNNNNNNNNNNNNNNNNNNN\ AFFICHAGE ECRAN D'AIDE modifie 18AOU89 TBCLS CURSOR ACCENT 5 BLOCK 48040 B/BUF CMOVE KEY DROP CLS CURSOR QWERTY DNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN%˟NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN% NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN% NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN% NNNNNNNNNNNNNNNNNNNNNN MODE D'EMPLOI DU DEBOGUEUR --------------------------  Une fois lanc{ le d{bogage d'un mot par DEBUG toute ex{cution de ce mot se fait en mode trace paNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN% [NNNNNNNNNNNNNNNNNNNNNNs-@-pas avec affichage de la pile.  La suite de l'ex{cution du mot est command{e par l'appui de toute touche hormis trois touches sp{ciales :  ^,NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN% 4jNNNNNNNNNNNNNNNNNNNNNN  Cle tra\age se poursuit en continu.   Fl'utilisateur peut introduire une  commande FORTH pour visualiser ou  modifier l'environnement du mot  jusqu'@ l'ex{cution deRESUMEqui  rep|NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN%a9NNNNNNNNNNNNNNNNNNNNNNrend la suite du tra\age du mot.   Qquitte le d{bogueur et restitue le  fonctionnement normal du mot.  appuyez 1 touche quand ceci est lu  @NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN%RNNNNNNNNNNNNNNNNNNNNNN@ 0 (%%  wNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN%AENNNNNNNNNNNNNNNNNNNNNN\ CASE OF ENDOF ENDCASE 17AOU89 TB\ A compiler avec la version KERNEL ONLY FORTH DEFINITIONS NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN%rtNNNNNNNNNNNNNNNNNNNNNN HEX CREATE (OF) HERE DUP 2- ! E8E8 , B538 , D5FE , D000 , B506 , D5FF , F001 , 4C03 , ' BRANCH 2+ , E8E8 , 4C C, ' ?BRANCH A + , pNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN h/NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN^NNNNNNNNNNNNNNNNNNNNNN\ CALENDRIER PERPETUEL - Initialisations -1- 17JUL88 TB: MSG ( n x y -- ) AT CASE 1 OF 134 EMIT ." CALENDRIER PERPETUEL" ENDOF 2 OF 131 EMIT ." Jour correspondant @ une date" ENDOF aNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN2NNNNNNNNNNNNNNNNNNNNNN 3 OF 131 EMIT ." Nombre de jours entre deux dates" ENDOF 4 OF 130 EMIT ." Votre choix (ESC pour sortir):" ENDOF 5 OF 140 EMIT ." Appuyez sur une touche" ENDOF 6 OF 134 EMIT ." ESC: revenir au menu principal" ENDOF :3NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 7 OF 134 EMIT ." Autre touche pour recommencer" ENDOF ENDCASE ; : "Jour" ( -- ) ." Samedi DimancheLundi Mardi MercrediJeudi Vendredi" NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNTNNNNNNNNNNNNNNNNNNNNNN; : JOUR> ( n -- ) 8 * ['] "Jour" 5 + + 8 TYPE ; : TITRE ( -- ) CLS 1 9 4 MSG ; --> NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNgNNNNNNNNNNNNNNNNNNNNNN\ Initialisations -2- 17JUL88 TB : SUITE ( -- u ) 5 8 23 MSG KEY 8 23 AT 23 SPACES ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNwNNNNNNNNNNNNNNNNNNNNNN: MSGERR ( n -- ) 7 EMIT 5 21 AT 129 EMIT CASE 1 OF ." Jour de 1 @ 31!" ENDOF 2 OF ." Mois de 1 @ 12!" ENDOF 3 OF ." Ann{e sup{rieure @ 1581!" ENDOF =NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN DNNNNNNNNNNNNNNNNNNNNNN 4 OF ." 29 jours maximum en f{vrier!" ENDOF 5 OF ." Mois de 30 jours!" ENDOF 6 OF ." Ann{e non bissextile!" ENDOF ENDCASE VNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN SUITE DROP 5 21 AT 29 SPACES ; : INVERSE ( -- ) 22 EMIT ; : CHAMP ( x y -- ) AT INVERSE ." / / " INVERSE ; --> VNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN "NNNNNNNNNNNNNNNNNNNNNN\ Saisie d'une date, orientation suivant touche 17JUL88 TB : ENTREE ( n -- u ) PAD OVER INVERSE CURSOR EXPECT CURSOR INVERSE NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN `NNNNNNNNNNNNNNNNNNNNNN PAD + BL SWAP C! PAD 1- NUMBER? SWAP 2DROP ; : ROLL ( nk+1 nk nk-1 ... n1 k -- nk+1 nk-1 ... n1 nk ) DUP >R PICK SP@ DUP 2+ R> 1+ 2* CMOVE> DROP ; : >DATE ( x y -- j m a ) ")NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN QNNNNNNNNNNNNNNNNNNNNNN 2DUP CHAMP 2DUP AT 2 ENTREE OVER 3 PICK 3 + SWAP AT 2 ENTREE 3 ROLL 6 + 3 ROLL AT 4 ENTREE ; : CHOIX ( -- u ) 6 4 20 MSG NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 7 4 21 MSG SUITE 4 20 AT 31 SPACES 4 21 AT 30 SPACES 27 = ; --> NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN3NNNNNNNNNNNNNNNNNNNNNN\ Calcul facteur, jour et difference entre dates 17JUL88 TB : M* ( n2 n1 -- d | d = n2*n1 ) 2DUP XOR >R ABS SWAP ABS UM* R> ?DNEGATE ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN~NNNNNNNNNNNNNNNNNNNNNN: FACTEUR ( j m a -- facteur ) DUP 365 M* >R >R ROT 0 R> R> D+ >R >R OVER 1- 31 * 0 R> R> D+ >R >R SWAP DUP 3 < IF DROP 1- "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNN ELSE 4 * 23 + 10 / 0 DNEGATE R> R> D+ >R >R THEN DUP 4 / SWAP 100 / 1+ 3 4 /* - 0 R> R> D+ ; : JOUR ( j m a -- u ) FACTEUR 7 MU/MOD 2DROP ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN: DIFFERENCE ( j1 m1 a1 j2 m2 a1 -- difference ) FACTEUR >R >R FACTEUR R> R> DNEGATE D+ DABS ; --> ]NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ Test de la date 17JUL88 TB : ?DATE ( j m a -- j m a 1 | 0 ) 2 PICK DUP 1 < SWAP 31 > OR 1 SWAP 0= & NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN IF DROP OVER DUP 1 < SWAP 12 > OR 2 SWAP 0= IF DROP DUP 1582 < 3 SWAP 0= IF DROP OVER 3 PICK 29 > SWAP 2 = AND 4 SWAP 0= IF DROP OVER DUP 2DUP 4 = SWAP 6 = OR SWAP 9 = UNNNNNNNNNNNNNNNNNNNNNNNNNNNNNND}NNNNNNNNNNNNNNNNNNNNNN OR SWAP 11 = OR 3 PICK 31 = AND 5 SWAP 0= IF DROP OVER 2 = 3 PICK 29 = AND IF DUP 4 MOD 6 SWAP 0= IF DROP 0 THEN 6NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNwLNNNNNNNNNNNNNNNNNNNNNN ELSE 0 THEN THEN THEN THEN THEN THEN DUP 0> IF MSGERR DROP 2DROP 0 ELSE DROP 1 THEN ; -->  NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNN\ Jour correspondant a une date 17JUL88 TB : PROCEDURE1 ( -- ) TITRE 2 5 8 MSG (NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN.NNNNNNNNNNNNNNNNNNNNNN 6 12 AT 130 EMIT ." Entrez la date:" 135 EMIT BEGIN BEGIN 23 12 >DATE ?DATE ĔNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN UNTIL JOUR 15 16 AT 133 EMIT JOUR> SPACE CHOIX 15 16 AT 9 SPACES UNTIL ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 2!NNNNNNNNNNNNNNNNNNNNNN--> YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN grNNNNNNNNNNNNNNNNNNNNNN\ Nombre de jours entre deux dates 17JUL88 TB : PROCEDURE2 ( -- ) TITRE 3 3 8 MSG ulNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN TCNNNNNNNNNNNNNNNNNNNNNN 2 12 AT 130 EMIT ." Entrez les deux dates:" BEGIN 26 13 CHAMP 14 11 DO AgNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN BEGIN 26 I >DATE ?DATE UNTIL 2 +LOOP DIFFERENCE rNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN 10 15 AT 133 EMIT D. SPACE CHOIX 10 15 AT 20 SPACES UNTIL ; --> NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ Procedure principale 17JUL88 TB : CALENDAR ( -- ) ACCENT CURSOR BEGIN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN TITRE 2 8 AT 129 EMIT ." 1." 2 5 8 MSG 2 12 AT 129 EMIT ." 2." 3 5 12 MSG 4 3 16 MSG 0 BEGIN DROP 35 16 AT CURSOR KEY CURSOR DUP ׵NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ASCII 1 = OVER ASCII 2 = OR OVER 27 = OR UNTIL DUP ASCII 1 = IF PROCEDURE1 ELSE DUP ASCII 2 = NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN IF PROCEDURE2 THEN THEN 27 = UNTIL CLS 7 EMIT 130 EMIT ." Bye bye!" CR QWERTY CURSOR ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNuNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNF6NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNߡNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN@   O4NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ Crible d'Erathosthene FORTH DEFINITIONS DECIMAL 8190 CONSTANT SIZE \ pseudo-constante taille table 1 a n/2 NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN : PREMIERS ( n -- ) \ affiche nombre de premiers de 1 a n 4 MAX DUP 2/ 1- IS SIZE PAD SIZE 1 FILL 2 SIZE 0 'NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN DO PAD I + C@ IF I 2* 3 + DUP I + BEGIN DUP SIZE < WHILE 0 OVER PAD + C! OVER + NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN REPEAT DROP DROP 1+ THEN LOOP . ." Premiers entre 1 et " . ; --> NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN : LISTE ( -- ) \ affiche liste des nombres premiers calcules \ par PREMIERS CR 1 . 2 . SIZE 0 DO PAD I + C@ IF I 2* 3 + . THEN ?STOP NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ϟNNNNNNNNNNNNNNNNNNNNNN ?LEAVE LOOP ; \ Ce petit programme est un test bien connu illustrant la \ rapidite du FORTH : NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN VNNNNNNNNNNNNNNNNNNNNNN \ 10000 PREMIERS affiche le nombre de nombres premiers compris \ entre 1 et 10000 comptes delon le tres classique algorithme \ du crible d'Erathosthene (vers 284-192 av. J.C.) RNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN e9NNNNNNNNNNNNNNNNNNNNNN \ Vous pouvez controler la realite d'un comptage N PREMIERS en \ demandant a FORTH d'afficher la liste complete de ces nombres \ premiers par LISTE NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN0jNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN[NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN#'NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNVNNNNNNNNNNNNNNNNNNNNNN@ , $  NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ interpretation et execution d'une chaine 25avr87 MZONLY FORTH DEFINITIONS DECIMAL : EXECUTE$ ( adr len --- ) \ 1ere version DUP #TIB ! \ ------------ &NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN0NNNNNNNNNNNNNNNNNNNNNN TIB SWAP MOVE \ deplace la chaine dans TIB BLK OFF >IN OFF ; 0 0 2CONSTANT STR$ NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN: EXECUTE$ ( adr len --- ) \ 2eme version ['] STR$ >BODY 2! \ ------------ ['] STR$ IS SOURCE \ vectorise SOURCE sur STR$ >IN >R >IN OFF .NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN$NNNNNNNNNNNNNNNNNNNNNN RUN ['] (SOURCE) IS SOURCE \ retablit SOURCE et >IN R> >IN ! ; [?NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNwNNNNNNNNNNNNNNNNNNNNNN\ Interpretation et execution d'une chaine 25avr87 MZ0 0 2CONSTANT STR$ VARIABLE (>IN) : ?ERROR$ ( adr len flag --- ) \ gestion des erreurs dans DUP IF \ une SOURCE temporaire : kNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNN ['] (SOURCE) IS SOURCE \ restitue SOURCE d'origine ['] (?ERROR) IS ?ERROR (>IN) @ >IN ! THEN (?ERROR) ; : EXECUTE$ ( adr len --- ) \ 3eme version PNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNxNNNNNNNNNNNNNNNNNNNNNN ['] STR$ >BODY 2! \ ------------ ['] STR$ IS SOURCE ['] ?ERROR$ IS ?ERROR \ avec gestion d'erreurs >IN @ (>IN) ! >IN OFF NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN INNNNNNNNNNNNNNNNNNNNNN RUN ['] (?ERROR) IS ?ERROR ['] (SOURCE) IS SOURCE (>IN) @ >IN ! ; TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN\ Variables chaines 25avr87 MZ : " ( --- adr len ) STATE @ IF COMPILE (") ," \ en compilation qNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN +NNNNNNNNNNNNNNNNNNNNNN ELSE ASCII " PARSE \ en execution THEN ; IMMEDIATE : STRING ( lenmax --- ) \ mot de definition d'une .NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  NNNNNNNNNNNNNNNNNNNNNN ( --- adr len ) \ variable$ chaine CREATE DUP C, 0 C, ALLOT \ de longueur maximale DOES> 1+ COUNT ; \ lenmax $NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN: $! ( str strvar --- ) \ affectation securisee DROP 1- DUP 1- C@ ROT MIN \ d'une variable chaine SWAP PLACE ; KNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNN\ Principales fonctions sur chaines 25avr87 MZ: LEN$ ( strvar --- strvar lenmax ) \ longueur d'une variable$ OVER 2- C@ ; \ de type chaine =wNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNuNNNNNNNNNNNNNNNNNNNNNN: INPUT$ ( strvar --- ) \ entree au terminal OVER >R LEN$ NIP EXPECT \ d'une variable$ chaine SPAN @ R> 1- C! ; \ fonctions securisees : ,NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNfNNNNNNNNNNNNNNNNNNNNNN: RIGHT$ ( str1 len --- str2 ) \ partie droite 0 MAX OVER MIN >R + R@ - R> ; : LEFT$ ( str1 len --- str2 ) \ partie gauche u\NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNUNNNNNNNNNNNNNNNNNNNNNN 0 MAX MIN ; : MID$ ( str1 pos len --- str2 ) \ sous-chaine >R OVER SWAP - RIGHT$ R> LEFT$ ; /NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ Extraction d'un mot d'une chaine 25avr87 MZ : ITEM ( str1 n --- str2 ) \ isole le n-ieme 'mot' 1 MAX >R TUCK R> \ separe par des espaces bNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNRNNNNNNNNNNNNNNNNNNNNNN 0 DO ROT DROP \ dans une chaine BL SKIP OVER SWAP BL SCAN \ laisse une chaine vide LOOP \ si hors limites >NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNaNNNNNNNNNNNNNNNNNNNNNN DROP OVER - ; ANNNNNNNNNNNNNNNNNNNNNNNNNNNNNN8NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN\ Operateurs sur variables chaines 25avr87 MZ: INSERT$ ( str strvar pos --- ) \ inserre une chaine dans 0 MAX OVER MIN \ une variable$ a la -ROT LEN$ SWAP \ position pos bNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNZNNNNNNNNNNNNNNNNNNNNNN 4 PICK + OVER MIN 2 PICK 1- C! 2 PICK - >R + R> INSERT ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNkNNNNNNNNNNNNNNNNNNNNNN: APPEND$ ( str strvar --- ) \ ajoute une chaine a la DUP INSERT$ ; \ fin d'une variable$ NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNUNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN dNNNNNNNNNNNNNNNNNNNNNN\ Operateurs sur variables chaines 25avr87 MZ: ERASE$ ( strvar pos len --- ) \ detruit len caract. >R 0 MAX OVER MIN \ a la position pos 2DUP - R> MIN 0 MAX \ dans une variable$ 49NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 7NNNNNNNNNNNNNNNNNNNNNN 2 PICK OVER - 4 PICK 1- C! ROT OVER - 2 PICK - >R -ROT + TUCK + SWAP R> CMOVE ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN : SEARCH$ ( str strvar --- pos len ) \ cherche une chaine 2 PICK >R SEARCH \ dans une variable$ IF R> ELSE R> 2DROP 0 0 THEN ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN qNNNNNNNNNNNNNNNNNNNNNN : DELETE$ ( str strvar --- ) \ detruit une chaine 2DUP >R >R SEARCH$ \ dans une variable$ R> R> 2SWAP ERASE$ ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN BNNNNNNNNNNNNNNNNNNNNNN\ justification d'une chaine VARIABLE ADJUST VARIABLE LENJUST VARIABLE FLAGJUST VARIABLE INJUST : RECULE BEGIN INJUST @ 0 > ADJUST @ INJUST @ + DUP C@ BL = NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSWAP 1- C@ BL <> OR AND WHILE -1 INJUST +! REPEAT ; : JUSTIFY ( adr len --- ) DUP LENJUST ! 1- INJUST ! ADJUST ! FLAGJUST OFF BEGIN 9NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN$NNNNNNNNNNNNNNNNNNNNNNADJUST @ LENJUST @ + 1- C@ BL = WHILE RECULE INJUST @ 0= IF FLAGJUST @ 0= IF EXIT THEN LENJUST @ 1- INJUST ! ELSE FLAGJUST ON ADJUST @ INJUST @ + DUP 1- SWAP LENJUST @ INJUST @ - CMOVE> NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN7NNNNNNNNNNNNNNNNNNNNNNTHEN REPEAT ; ?NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ JUSTIFY ONLY FORTH ALSO DEFINITIONS HEX CODE JUSTIFY 2 # LDA, SETUP JSR, XSAVE STX, N LDX, 0= NOT IF, DEX, N STX, NkNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNqyNNNNNNNNNNNNNNNNNNNNNNBEGIN, N LDA, 0= IF, N 1- LDA, 0= NOT IF, XSAVE LDX, NEXT JMP, THEN, N STX, THEN, TXA, TAY, N 2+ )Y LDA, BL # CMP, = WHILE, N LDY, N 2+ )Y LDA, BL # CMP, = NOT IF, KNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN$*NNNNNNNNNNNNNNNNNNNNNNDEY, N 2+ )Y LDA, BL # CMP, = IF, 0 # LDA, N 1- STA, TXA, TAY, BEGIN, DEY, N 2+ )Y LDA, INY, N 2+ )Y STA, N CPY, = NOT WHILE, DEY, SWAP 0= UNTIL, THEN, ~NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNTHEN, THEN, N DEC, REPEAT, THEN, XSAVE LDX, NEXT JMP, ;C DECIMAL NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN@ (   PNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ STORE RECALL SAVE-SYSTEM 20MAY87 MZ, modifie 18AOU89 TB\ SCR-SAVE ONLY FORTH ALSO DOS HEX DEFINITIONS : STORE ( ad1 ad2 --- / ) oNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN2 ?ENOUGH FILENAME 40 XSAVE OPEN-FILE ; : RECALL ( --- ) FILENAME SEARCH NOT ABORT" fichier inexistant " 0 XLOAD 52C C@ 41 = IF 531 @ CALL THEN \ lancement si pgr NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOPEN-FILE ; : SAVE-SYSTEM ( --- ) EXT PAD SWAP CMOVE " COM" DROP EXT CMOVE FILENAME LOCK 900 HERE 41 XSAVE PAD EXT CMOVE OPEN-FILE ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN: SCR-SAVE BBA8 BFDF STORE ; DECIMAL NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN\ MORE 20MAY87 MZ, modifie 18AOU89 TBONLY FORTH ALSO DOS DEFINITIONS HEX : MORE BNK @ SWAP 0 BANK CAPACITY @ 2DUP + SWAP 1+ 1E ?RANGE >bNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNDUP 4 * DUP C202 @ > ABORT" disquette pleine " DUP 0 DO 77 BDOS DISK-ERR? \ cherche un secteur AY 0CC @ C10C CAPACITY @ 4 * I + 2* + ! \ dans le fcb LOOP wNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN DUP C40E 516 C@ + DUP C@ ROT + SWAP C! \ ajoute 4n secteurs C10A +! \ idem dans le fcb FILE @ D + @ 0CC ! 92 BDOS DISK-ERR? \ sauve FCB 9B BDOS DISK-ERR? \ sauve CAT kNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN %NNNNNNNNNNNNNNNNNNNNNN9E BDOS DISK-ERR? \ sauve MAP FILE! DUP CAPACITY +! 0 DO CAPACITY @ I - CLEAR LOOP SAVE-BUFFERS BANK ; DECIMAL #NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 4NNNNNNNNNNNNNNNNNNNNNN\ CONVEY 20MAY87 MZ, modifie 18AOU89 TBONLY FORTH ALSO DOS DEFINITIONS DECIMAL : ?READY CR ." appuyez sur une touche " KEY 27 = IF HELLO WARM THEN ; WNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNaGNNNNNNNNNNNNNNNNNNNNNN: ?CHANGE FCB C@ FCB1 C@ = IF CR ." inserez la disquette " IF ." cible " ELSE ." source " THEN .FILE ?READY ELSE DROP THEN ; : FROM SAVE-BUFFERS CR ." inserez la disquette source " ?READY [CNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNRvNNNNNNNNNNNNNNNNNNNNNN (FROM) OPEN ; : CONVEY ( first-from first-to number-of-blocks --- ) EMPTY-BUFFERS >R 2DUP < IF R@ + 1- NEGATE SWAP R@ + 1- NEGATE SWAP THEN R> 0 DO OVER I + ABS OVER I + ABS (COPY) NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNA;NNNNNNNNNNNNNNNNNNNNNN I #BUFFERS MOD #BUFFERS 1- = IF FCB1 FILE ! 1 ?CHANGE OPEN-FILE FLUSH FCB FILE ! 0 ?CHANGE OPEN-FILE THEN LOOP FCB1 FILE ! 1 ?CHANGE FCB FILE ! (TO) OPEN-FILE FLUSH 2DROP ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNr NNNNNNNNNNNNNNNNNNNNNN\ RENAME 20MAY87 MZ, modifie 18AOU89 TBONLY FORTH ALSO DOS DEFINITIONS HEX : RENAME FILENAME FCB C@ DRV FD C@ 1 AND ABORT" jokers interdits " NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNBNK @ 0 BANK 518 DUP FCB 1+ 0C CMOVE FCB 13 + C@ C400 + 0C CMOVE FCB 11 + DUP C@ SWAP 1+ C@ C400 WR# DISK-ERR? VNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNBANK ; DECIMAL hNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPNNNNNNNNNNNNNNNNNNNNNN\ FILE-DELETE ONLY FORTH ALSO DOS DEFINITIONS HEX : FILE-DELETE ( --- ) FILENAME 4D BDOS DISK-ERR? OPEN-FILE ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN&aNNNNNNNNNNNNNNNNNNNNNNDECIMAL NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNs2NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN@NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNP=NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN c NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 6_NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN nNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNɪNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNBNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNsNNNNNNNNNNNNNNNNNNNNNN@ (   NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNcNNNNNNNNNNNNNNNNNNNNNN\ METACOMPILATEUR A EN-TETES SEPARES : TASK ; ONLY DEFINITIONS ALSO FORTH VOCABULARY META VOCABULARY TARGET ALSO META DEFINITIONS zNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPNNNNNNNNNNNNNNNNNNNNNN: [FORTH] FORTH ; IMMEDIATE : SWITCH NOOP NOOP DOES> DUP @ CONTEXT @ SWAP CONTEXT ! OVER ! 2+ DUP @ CURRENT @ SWAP CURRENT ! SWAP ! ; : IN-TARGET ONLY TARGET DEFINITIONS ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHEX A000 CONSTANT TARGET-ORIGIN DECIMAL VARIABLE DP-T : THERE TARGET-ORIGIN + ; : C@-T THERE C@ ; : @-T THERE @ ; ܹNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN6NNNNNNNNNNNNNNNNNNNNNN: C!-T THERE C! ; : !-T THERE ! ; : HERE-T DP-T @ ; : ALLOT-T DP-T! ; : C,-T HERE-T C!-T 1 ALLOT-T ; : ,-T HERE-T !-T 2 ALLOT-T ; --> #NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN&NNNNNNNNNNNNNNNNNNNNNN\ METACOMPILATEUR -2- : S,-T 0 ?DO DUP C@ C,-T 1+ LOOP DROP ; 2NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN @NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN sNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN MNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN |NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN/NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNbNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN.NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN;NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNhNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNYNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNgNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN VNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 4NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN >NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNkNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNxNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN >KNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN kNNNNNNNNNNNNNNNNNNNNNN@ (   NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN X)NNNNNNNNNNNNNNNNNNNNNN\ MODULES PRE-COMPILES modifie 18AOU89 TBONLY DOS ALSO FORTH ALSO DEFINITIONS HEX : CMD A000 @ EXECUTE ; : COMMAND ( ) NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNEXT PAD SWAP CMOVE " CMD" DROP EXT CMOVE FILENAME [ DOS ] SEARCH [ FORTH ] PAD EXT CMOVE NOT ABORT" fichier-cmd inexistant " 0 XLOAD OPEN-FILE CMD ; =NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN \ version sans head-less \ : CREATE-CMD ( ecran --- ) \ HERE SWAP A002 DP ! LOAD LAST @ NAME> A000 ! FNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN\ FILENAME A000 HERE 40 XSAVE OPEN-FILE (FORGET) ; \ ONLY FORTH DEFINITIONS DECIMAL NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN\ COMPILATEUR DEUX-POINTS A EN-TETES SEPARES ONLY FORTH DEFINITIONS DECIMAL CREATE HEADLESS HEX 4C C, ' EMIT @ , ( pseudo-defered words ) DECIMAL VARIABLE DP-T 40960 DP-T ! ( #A000 ) ^}NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN: SWITCH DP @ DP-T @ DP ! DP-T ! ; : HLCFA DUP @ HEADLESS = IF 2+ @ THEN ; : ]-T STATE ON BEGIN ?STACK DEFINED DUP IF 0> IF EXECUTE ELSE HLCFA , THEN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  NNNNNNNNNNNNNNNNNNNNNN ELSE DROP NUMBER DOUBLE? IF [COMPILE] DLITERAL ELSE DROP [COMPILE] LITERAL THEN THEN TRUE DONE? UNTIL ; : M: : ; : M; [COMPILE] ; ; IMMEDIATE M: : !CSP CURRENT @ CONTEXT ! HEADER HEADLESS , DP-T @ , ,NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  NNNNNNNNNNNNNNNNNNNNNN SWITCH [ ' M: @ ] LITERAL , HIDE ]-T M; M: ; ?CSP COMPILE UNNEST SWITCH REVEAL [COMPILE] [ M; IMMEDIATE --> wNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  рNNNNNNNNNNNNNNNNNNNNNN\ HEADLESS META suite M: VARIABLE HEADER HEADLESS , DP-T @ , SWITCH ['] HEADLESS @ , 0 , SWITCH M; M: CONSTANT HEADER HEADLESS , DP-T @ , SWITCH <NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  HNNNNNNNNNNNNNNNNNNNNNN ['] 0 @ , , SWITCH M; ONLY DOS ALSO FORTH HEX : CREATE-CMD ( ecran --- ) HERE SWAP A002 DP-T ! LOAD LAST @ NAME> HLCFA A000 ! NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  {&NNNNNNNNNNNNNNNNNNNNNNFILENAME A000 DP-T @ 40 XSAVE OPEN-FILE (FORGET) ; ONLY FORTH DEFINITIONS DECIMAL NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN .uNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN DNNNNNNNNNNNNNNNNNNNNNN\ MODULES PRE-COMPILES modifie 18AOU89 TBONLY DOS ALSO FORTH ALSO DEFINITIONS HEX : CMD A000 @ EXECUTE ; : COMMAND ( ) NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  NNNNNNNNNNNNNNNNNNNNNNEXT PAD SWAP CMOVE " CMD" DROP EXT CMOVE FILENAME [ DOS ] SEARCH [ FORTH ] PAD EXT CMOVE NOT ABORT" fichier-cmd inexistant " 0 XLOAD OPEN-FILE CMD ; =NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN =8NNNNNNNNNNNNNNNNNNNNNN: CREATE-CMD ( ecran --- ) HERE SWAP A002 DP ! LOAD LAST @ NAME> A000 ! FILENAME A000 HERE 40 XSAVE OPEN-FILE (FORGET) ; ONLY FORTH DEFINITIONS DECIMAL NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN\ CREATE-CMD HEADLESS AVEC DEFERED-WORDS 7 LOAD ( metacompilateur headless ) ONLY DOS ALSO FORTH HEX : CREATE-CMD ( ecran --- ) JNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNHERE SWAP A002 DP-T ! LOAD LAST @ NAME> HLCFA A000 ! FILENAME A000 DP-T @ 40 XSAVE OPEN-FILE (FORGET) ; ONLY FORTH DEFINITIONS DECIMAL NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ZbNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN iSNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN <NNNNNNNNNNNNNNNNNNNNNN\ MODULES PRE-COMPILES HEAD-LESS modifie 18AOU89 TBONLY DOS ALSO FORTH ALSO DEFINITIONS HEX : CMD A000 @ EXECUTE ; : COMMAND ( ) 5\NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 1NNNNNNNNNNNNNNNNNNNNNNEXT PAD SWAP CMOVE " CMD" DROP EXT CMOVE FILENAME [ DOS ] SEARCH [ FORTH ] PAD EXT CMOVE NOT ABORT" fichier-cmd inexistant " 0 XLOAD OPEN-FILE CMD ; =NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN: CREATE-CMD ( ecran --- ) HERE A002 DP-T ! LOAD LAST @ NAME> HLCFA A000 ! FILENAME A000 DP-T @ 40 XSAVE OPEN-FILE (FORGET) ; ONLY FORTH DEFINITIONS DECIMAL [NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  ,>NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  ymNNNNNNNNNNNNNNNNNNNNNN\ COMPILATEUR DEUX-POINTS A EN-TETES SEPARES ONLY FORTH DEFINITIONS DECIMAL CREATE HEADLESS HEX 4C C, ' EMIT @ , ( pseudo-defered words ) DECIMAL VARIABLE DP-T 40960 DP-T ! ( #A000 ) ^}NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  J\NNNNNNNNNNNNNNNNNNNNNN: SWITCH DP @ DP-T @ DP ! DP-T ! ; : HLCFA DUP @ HEADLESS = IF 2+ @ THEN ; : ]-T STATE ON BEGIN ?STACK DEFINED DUP IF 0> IF EXECUTE ELSE HLCFA , THEN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  NNNNNNNNNNNNNNNNNNNNNN ELSE DROP NUMBER DOUBLE? IF [COMPILE] DLITERAL ELSE DROP [COMPILE] LITERAL THEN THEN TRUE DONE? UNTIL ; : M: : ; : M; [COMPILE] ; ; IMMEDIATE M: : !CSP CURRENT @ CONTEXT ! HEADER HEADLESS , DP-T @ , ,NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  NNNNNNNNNNNNNNNNNNNNNN SWITCH [ ' M: @ ] LITERAL , HIDE ]-T M; M: ; ?CSP COMPILE UNNEST SWITCH REVEAL [COMPILE] [ M; IMMEDIATE --> wNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN\ HEADLESS META suite M: VARIABLE HEADER HEADLESS , DP-T @ , SWITCH ['] HEADLESS @ , 0 , SWITCH M; M: CONSTANT HEADER HEADLESS , DP-T @ , SWITCH <NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN ['] 0 @ , , SWITCH M; M: DEFER HEADER HEADLESS , DP-T @ , SWITCH ['] EMIT @ , ['] CRASH , SWITCH M; M: TIC ' M; 5NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNM: ['] ?COMP TIC HLCFA [COMPILE] LITERAL M; IMMEDIATE M: ' STATE @ IF COMPILE ' ELSE ' HLCFA THEN M; IMMEDIATE M: IS STATE @ IF COMPILE (IS) ELSE TIC HLCFA >BODY ! THEN M; IMMEDIATE NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNONLY FORTH DEFINITIONS DECIMAL %NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN #NNNNNNNNNNNNNNNNNNNNNN@ (   4mNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN pNNNNNNNNNNNNNNNNNNNNNN\ passage LM a mot de haut niveau ONLY FORTH ALSO DEFINITIONS HEX CODE #CALL XSAVE STX, >MARK JSR, XSAVE LDX, NEXT JMP, жNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ANNNNNNNNNNNNNNNNNNNNNN>RESOLVE PLA, PLA, ' EXECUTE @ JMP, RTS, DECIMAL \ faire attention aux deux pla ]YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ,NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN JNNNNNNNNNNNNNNNNNNNNNN\ code call pour words modifie 18AOU89 TBONLY FORTH ALSO DEFINITIONS HEX CODE WORDS2 PLA, PLA, 4A # LDA, 0C7 STA, oNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN yNNNNNNNNNNNNNNNNNNNNNN 31 # LDA, 0C8 STA, 0C6 JMP, ;C DECIMAL \ s'utilise ' WORDS2 @ CALL NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN iNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  ZNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  NNNNNNNNNNNNNNNNNNNNNN\ JSR ONLY FORTH ALSO DEFINITIONS HEX CODE SUBR >MARK JSR, ' WORDS , HERE 2+ , ޥNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  RESOLVE CLC, PLA, 1 # ADC, W STA, PLA, 0 # ADC, W 1+ STA, W 1- JMP, ;C M`NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  NNNNNNNNNNNNNNNNNNNNNNDECIMAL NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  NNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ,NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN aNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN PNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ]NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN lNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN }NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN (NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 8NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN   NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  ^NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  mNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  RNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  cNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 0NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN LNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN }NNNNNNNNNNNNNNNNNNNNNN@   M NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN\ FRANCAIS-ANGLAIS TELESTRAT ONLY FORTH ALSO PRINTER DEFINITIONS DECIMAL : (A-EMIT) DUP CASE 64 OF DROP 170 (EMIT) ENDOF 8wNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN 91 OF DROP 203 (EMIT) ENDOF 92 OF DROP 204 (EMIT) ENDOF 93 OF DROP 205 (EMIT) ENDOF 123 OF DROP 219 (EMIT) ENDOF KNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN 124 OF DROP 220 (EMIT) ENDOF 125 OF DROP 221 (EMIT) ENDOF (EMIT) ENDCASE ; : ANGLAIS ['] (A-EMIT) IS EMIT ; YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  ONNNNNNNNNNNNNNNNNNNNNN: FRANCAIS ['] (EMIT) IS EMIT ; : LWIDTH 648 C! ; --> NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 8~NNNNNNNNNNNNNNNNNNNNNN\ PRINTER SEIKOSHA 550 06OCT86 MZHEX : ESC 1B [COMPILE] LITERAL COMPILE (PRINT) [COMPILE] ASCII COMPILE (PRINT) ; IMMEDIATE "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN m-NNNNNNNNNNNNNNNNNNNNNN: SPECIF ABS 0 <# # # # #> 0 DO COUNT (PRINT) LOOP DROP ; : PICA ESC H ; : ELITE ESC Q ; : ITALIC ESC B ; : MICRON ESC U ESC 7 ; : STANDARD ESC N ESC 6 ; : LARGE 1B (PRINT) E (PRINT) ; : -LARGE 1B (PRINT) F (PRINT) ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ^NNNNNNNNNNNNNNNNNNNNNN: BOLD ESC # ; : THIN ESC $ ; : CONDENSED ESC C ; : UNDERLINE ESC X ; : -UNDERLINE ESC Y ; : PAGE C (PRINT) #LINE OFF ; : MARGIN ESC L SPECIF ; : PAGE-LENGTH ESC Z SPECIF ; L NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN N"NNNNNNNNNNNNNNNNNNNNNN: CANCEL 18 (PRINT) ; DECIMAL --> NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  }NNNNNNNNNNNNNNNNNNNNNN\ PRINTER LIST 06OCT86 MZ, modifie 18AOU89 TBDECIMAL : LIST ( n--- ) ( liste l'ecran n ) 1 ?ENOUGH PON ANGLAIS CR .FILE ." ecran no " [NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  (@NNNNNNNNNNNNNNNNNNNNNN DUP SCR ! . 16 0 DO CR ." (" I 2 .R ." ) " I LINE -TRAILING TYPE LOOP CR CR POFF ; : BILIST ( n1,n2--- ) ( liste n1 et n2 ensemble type shadow ) 2 ?ENOUGH PON ANGLAIS CR CONDENSED )NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  qNNNNNNNNNNNNNNNNNNNNNN .FILE ." ecran no " OVER . 70 #OUT @ - SPACES .FILE ." ecran no " DUP . 16 0 DO CR I 2 .R SPACE OVER SCR ! I LINE TYPE SPACE DUP SCR ! I LINE -TRAILING TYPE LOOP -NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  NNNNNNNNNNNNNNNNNNNNNN 2DROP CR CR POFF ; ONLY FORTH DEFINITIONS lNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  NNNNNNNNNNNNNNNNNNNNNN\ LIST AVEC CADRE ONLY FORTH ALSO PRINTER DEFINITIONS DECIMAL : GRAPHE ( octet-haut octet-bas nombre --- ) ESC W SPECIF SWAP (PRINT) (PRINT) ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN: CADRE-HAUT 0 0 4 GRAPHE 128 255 2 GRAPHE 128 1 778 GRAPHE 128 255 2 GRAPHE ; : CADRE-BAS NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ׵NNNNNNNNNNNNNNNNNNNNNN0 0 4 GRAPHE 255 1 2 GRAPHE 128 1 778 GRAPHE 255 1 2 GRAPHE ; : BARRE-DEBUT 0 0 4 GRAPHE 255 255 2 GRAPHE PgNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN0 0 6 GRAPHE ; : BARRE ESC I 12 SPECIF 8 0 DO 0 (PRINT) LOOP 4 0 DO 255 (PRINT) LOOP 12 0 DO 0 (PRINT) LOOP ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN\ DEFINITION DE CARACTERES 16 LIGNES ONLY FORTH ALSO PRINTER DEFINITIONS : CARHD CREATE 24 0 DO C, LOOP DOES> ESC I 12 SPECIF 24 0 DO COUNT (PRINT) LOOP DROP ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNofNNNNNNNNNNNNNNNNNNNNNN0 0 0 0 0 0 0 0 255 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 CARHD BARRE 0 0 0 0 0 0 0 0 128 255 128 255 128 1 128 1 128 1 128 1 128 1 128 1 CARHD COIN-HG NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN:5NNNNNNNNNNNNNNNNNNNNNN128 1 128 1 128 1 128 1 128 255 128 255 0 0 0 0 0 0 0 0 0 0 0 0 CARHD COIN-HD 0 0 0 0 0 0 0 0 255 1 255 1 128 1 128 1 128 1 128 1 128 1 128 1 CARHD COIN-BG tNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN128 1 128 1 128 1 128 1 255 1 255 1 0 0 0 0 0 0 0 0 0 0 0 0 CARHD COIN-BD 128 1 128 1 128 1 128 1 128 1 128 1 128 1 128 1 128 1 128 1 128 1 128 1 CARHD TRAIT 1NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN@   @NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ QUICKSORT AND SWORD ( FD VI,5,25 ) ONLY DEFINITIONS ALSO FORTH VOCABULARY SORTER ALSO ALSO SORTER DEFINITIONS DECIMAL : RECURSE LAST @ NAME> , ; IMMEDIATE NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN DEFER PRECEDES ( a1 a2 --- f ) : QUICK ( a[m],a[n] -- ) {NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 2DUP OVER - 2/ -2 AND + @ >R 2DUP SWAP BEGIN BEGIN DUP @ R@ PRECEDES WHILE 2+ REPEAT SWAP BEGIN R@ OVER @ PRECEDES WHILE 2- REPEAT SWAP 2DUP U< NOT IF 2DUP 2DUP @ >R @ SWAP ! R> SWAP ! SWAP 2- SWAP 2+ THEN 2DUP U< \NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN UNTIL R> DROP ROT 2OVER 2OVER - + > IF 2SWAP THEN 2DUP U< IF RECURSE ELSE 2DROP THEN 2DUP U< IF RECURSE ELSE 2DROP THEN ; --> nNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN\ SORT modifie 18AOU89 TB: SORT ?DUP 0= ABORT" rien a trier " 1- 2* OVER + QUICK ; : (SORTED) R> DUP 2+ >R @ IS PRECEDES SORT ; : SORTED STATE @ IF COMPILE (SORTED) ELSE ' IS PRECEDES SORT *NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN THEN ; IMMEDIATE \ SWORD : NAMES CR CONTEXT @ BODY> >NAME ID. PAD C/L + DUP 4 0 DO 'NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN CONTEXT @ I 2* + BEGIN @ ?DUP WHILE DUP >R L>NAME OVER ! 2+ R> REPEAT LOOP OVER - 2/ ; : ?TAB #OUT @ NEGATE SWAP MOD SPACES ; VARIABLE RMARGIN 37 RMARGIN ! FNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN :NNNNNNNNNNNNNNNNNNNNNN: ?LINE #OUT @ + RMARGIN @ > IF CR THEN ; : TAB.ID DUP ?TAB OVER C@ 31 AND 1+ RMARGIN @ ROT MOD + ?LINE ID. ; --> NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN * NNNNNNNNNNNNNNNNNNNNNN\ SWORD modifie 18AOU89 TB9 CONSTANT NAME-TAB : .NAMES 0 DO DUP @ NAME-TAB TAB.ID 2+ ?STOP ?LEAVE LOOP DROP ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXNNNNNNNNNNNNNNNNNNNNNN: ID< ( nfa1 nfa2 --- f ) \ comparateur de NFA 2DUP COUNT 31 AND OVER + SWAP DO 1+ DUP C@ I C@ - IF C@ 127 AND I C@ 127 AND - DUP IF 0< SWAP ROT DROP THEN 0= LEAVE THEN LOOP IF C@ 31 AND SWAP NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNLiNNNNNNNNNNNNNNNNNNNNNNC@ 31 AND > THEN ; : SWORDS NAMES DUP . ." noms definis" CR 2DUP SORTED ID< .NAMES ; !ANNNNNNNNNNNNNNNNNNNNNNNNNNNNNN_$NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNlNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNLNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN'NNNNNNNNNNNNNNNNNNNNNN@ (   \RNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ DAO HIRES ONLY FORTH DEFINITIONS HEX : HPOS 46 C@ 47 C@ ; 2VARIABLE DEPART : CURSEUR 57 C@ 40 / 2 FB NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNENNNNNNNNNNNNNNNNNNNNNN BEGIN HPOS CURSET FALSE ?KEY ?DUP IF CASE ASCII [ OF -1 0 ENDOF ASCII ] OF 1 0 ENDOF ASCII ' OF 0 1 ENDOF ASCII = OF 0 -1 ENDOF ASCII \ OF 1 -1 ENDOF ASCII - OF -1 -1 ENDOF INNNNNNNNNNNNNNNNNNNNNNNNNNNNNNtNNNNNNNNNNNNNNNNNNNNNNASCII ; OF -1 1 ENDOF D OF 1 1 ENDOF 1B OF DROP TRUE 0 0 ENDOF ASCII T OF 1 FB 0 0 ENDOF ASCII D OF 2 FB HPOS CURSET 0 0 ENDOF [NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNJNNNNNNNNNNNNNNNNNNNNNNASCII A OF HPOS DEPART 2! 0 0 ENDOF --> ݦNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN {NNNNNNNNNNNNNNNNNNNNNN\ suite du mot CURSEUR ASCII L OF 57 C@ 40 / 1 FB DEPART 2@ HPOS ADRAW FB 0 0 ENDOF 0 0 ROT ENDCASE ELSE 0 0 THEN HPOS CURSET CURMOV HPOS CURSET UNTIL FB ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN (NNNNNNNNNNNNNNNNNNNNNNDECIMAL NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN oNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN \NNNNNNNNNNNNNNNNNNNNNN\ BARRES D'HISTO 3D ONLY FORTH DEFINITIONS DECIMAL 20 CONSTANT LARGEUR 5 CONSTANT EPAISSEUR VARIABLE HAUTEUR XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNVARIABLE ECHELLE 100 ECHELLE ! : BARRE ( n --- ) ECHELLE @ * 100 / HAUTEUR ! LARGEUR 0 DRAW 0 HAUTEUR @ NEGATE DRAW XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN:NNNNNNNNNNNNNNNNNNNNNNLARGEUR NEGATE 0 DRAW 0 HAUTEUR @ DRAW LARGEUR 0 DRAW EPAISSEUR DUP NEGATE DRAW 0 HAUTEUR @ NEGATE DRAW EPAISSEUR DUP NEGATE SWAP DRAW EPAISSEUR DUP NEGATE DRAW LARGEUR NEGATE 0 DRAW aNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN)NNNNNNNNNNNNNNNNNNNNNNEPAISSEUR DUP NEGATE SWAP DRAW 0 HAUTEUR @ DRAW ; --> oNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ HISTO3D (2) ONLY FORTH DEFINITIONS DECIMAL : IN# QUERY BL WORD NUMBER DROP ; VARIABLE NB-BARRE VARIABLE ORG-X VARIABLE ORG-Y NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN֛NNNNNNNNNNNNNNNNNNNNNNVARIABLE PAS : INITIALISATION CR ." origine des X ? " IN# ORG-X ! CR ." origine des Y ? " IN# ORG-Y ! NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCR ." largeur de barre ? " IN# IS LARGEUR CR ." epaisseur de barre ? " IN# IS EPAISSEUR CR ." pas entre 2 barres ? " IN# PAS ! CR ." nombre de barres ? " IN# NB-BARRE ! cNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCR ." echelle x N/100 ? " IN# ECHELLE ! ; --> }NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN)nNNNNNNNNNNNNNNNNNNNNNN\ HISTO3D (3) : HISTOGRAMME INITIALISATION ORG-X @ ORG-Y @ CURSET NB-BARRE @ 0 DO CR ." VALEUR " I 1+ . ." ? " IN# BARRE QNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN_NNNNNNNNNNNNNNNNNNNNNN0 FB PAS @ 0 CURMOV 1 FB LOOP ; gNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNO NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN|=NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNlNNNNNNNNNNNNNNNNNNNNNN\ BARRES PLEINES : BARRE-PLEINE ( hauteur --- ) ECHELLE @ * 100 / HAUTEUR ! LARGEUR 0 DO 0 HAUTEUR @ NEGATE DRAW 1 HAUTEUR @ NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN _2NNNNNNNNNNNNNNNNNNNNNNCURMOV LOOP LARGEUR NEGATE HAUTEUR @ NEGATE CURMOV EPAISSEUR DUP NEGATE DRAW LARGEUR 0 DRAW EPAISSEUR DUP NEGATE SWAP DRAW EPAISSEUR DUP NEGATE DRAW 0 HAUTEUR @ DRAW EPAISSEUR DUP NEGATE SWAP DRAW LARGEUR NEGATE 0 CURMOV ; 5NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  aNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 9PNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN\ SAUVE-DESSIN - REPREND modifie 18AOU89 TBONLY FORTH ALSO DOS HEX DEFINITIONS : STORE ( ad1 ad2 --- / ) 2 ?ENOUGH FILENAME 40 XSAVE OPEN-FILE ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN: RECALL ( --- ) FILENAME SEARCH NOT ABORT" fichier inexistant " 0 XLOAD 52C C@ 41 = IF 531 @ CALL THEN \ lancement si pgr OPEN-FILE ; mNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNƥNNNNNNNNNNNNNNNNNNNNNNONLY DOS ALSO FORTH DEFINITIONS : SAUVE-DESSIN A000 BF68 STORE ; : REPREND HIRES RECALL ; ONLY FORTH DECIMAL NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ W( ONLY FORTH DEFINITIONS DECIMAL 0 CONSTANT ECART : HEMIT HCHAR 3 FB ECART 0 CURMOV 1 FB ; 3NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN: W( ['] HEMIT IS EMIT [COMPILE] .( ['] (EMIT) IS EMIT ; SfNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN/NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN|NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNN@ (   NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN_NNNNNNNNNNNNNNNNNNNNNN\ EXTENSIONS TELESTRAT modifie 15AOU89 TB\ FONCTIONS HORLOGE ONLY FORTH DEFINITIONS HEX : CLOCK 14 STATLINE F + C! 10 STATLINE 19 + C! heNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNlNNNNNNNNNNNNNNNNNNNNNN STATLINE 10 + 0CC ! 3E BIOS ; : CLOCK-OFF 3D BIOS STATLINE F + C BLANK ; : TIME 2 ?ENOUGH 212 C! 213 C! 0 211 C! CLOCK ; DECIMAL NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN9NNNNNNNNNNNNNNNNNNNNNN--> YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ FENETRES modifie 15AOU89 TBONLY FORTH DEFINITIONS HEX : WINDOW 4 ?ENOUGH CREATE ROT >R ROT C, R> C, SWAP C, C, BB80 , DOES> 2 ?ENOUGH 0CC ! 3 AND 0CE C! 36 BIOS ; QBNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN )NNNNNNNNNNNNNNNNNNNNNNDECIMAL --> u9NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN |NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ONNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN sNNNNNNNNNNNNNNNNNNNNNN\ ESSAI DES FENETRES DECIMAL 0 39 1 27 WINDOW (PLEIN) 0 39 1 14 WINDOW (HAUT) NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN BNNNNNNNNNNNNNNNNNNNNNN0 39 15 27 WINDOW (BAS) : PLEIN 0 (PLEIN) 16 PAPER 6 INK ; : HAUT 0 (HAUT) 20 PAPER 7 INK ; : BAS 0 (BAS) 22 PAPER 0 INK ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN--> YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNmNNNNNNNNNNNNNNNNNNNNNN\ DEPTH IN STATLINE ONLY FORTH DEFINITIONS DECIMAL : (STATUS) DEPTH 0 <# # # #> STATLINE 2+ SWAP CMOVE CR ; ' (STATUS) IS STATUS wNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN;NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNnNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN]NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN7NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNdNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNUNNNNNNNNNNNNNNNNNNNNNN\ INITIALISATION D'UNE BANK RAM modifie 18AOU89 TBONLY FORTH ALSO DEFINITIONS HEX CODE RAMBANK ( n --- ) 1 # LDA, SETUP JSR, XSAVE STX, N LDA, 07 # AND, N STA, NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNkNNNNNNNNNNNNNNNNNNNNNNPHP, SEI, 321 LDA, F8 # AND, N ORA, 321 STA, 2 # LDA, FA # LDX, FFFE STX, FFFF STA, 2A # LDY, 321 LDA, F8 # AND, 0C9 )Y ORA, 321 STA, PLP, XSAVE LDX, NEXT JMP, ;C =NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ZNNNNNNNNNNNNNNNNNNNNNNDECIMAL NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 8NNNNNNNNNNNNNNNNNNNNNN\ RAMBANK initialisation sans assembler modifie 18AOU89 TBONLY FORTH DEFINITIONS HEX CREATE RAMBANK HERE DUP 2- ! 1A9 , 7620 , 8609 , A5F5 , 29E6 , 8507 , 8E6 , AD78 , HNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN MNNNNNNNNNNNNNNNNNNNNNN321 , F829 , E605 , 218D , A903 , A202 , 8EFA , FFFE , FF8D , A0FF , AD2A , 321 , F829 , C911 , 218D , 2803 , F5A6 , 504C , 09 C, DECIMAL ENNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ~NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN+NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN8NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMGNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN@   rNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN+%NNNNNNNNNNNNNNNNNNNNNN\ Sauvegarde automatique par MULTITASKER 15sep87 MZ\ pour F83 TELESTRAT ONLY FORTH DEFINITIONS DECIMAL 10 CONSTANT #TACHES \ nombre maximal de taches tNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN VARIABLE TACHES #TACHES 2* ALLOT \ liste des taches TACHES #TACHES 1+ 2* ERASE \ mise a zero de la liste GNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN : .TACHES ( --- ) \ affiche la liste des taches CR ." taches actives :" #TACHES 0 DO I 2* TACHES + @ ?DUP (NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN IF CR I 1+ 2 .R 2 SPACES >NAME ID. THEN LOOP CR ; --> NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ multitasker -2- 15sep87 MZ : TASKER ( --- ) \ executeur multi-tache : #TACHES 0 \ lance en sequence toutes NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN DO I 2* TACHES + @ ?DUP \ les taches de la liste IF EXECUTE \ quand le forth peut faire ELSE LEAVE THEN \ une pause. LOOP ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN : TACHE? ( cfa --- flag ) \ cherche une tache 0 #TACHES 0 DO DROP TACHES I 2* + 2DUP @ = W6NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN IF SWAP DROP 1 LEAVE ELSE DROP 0 THEN LOOP ; --> NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN\ multitasker -3- 15sep87 MZ : ACTIVE ( --- ) \ active une nouvelle tache ' 0 TACHE? NOT ABORT" trop de taches " ! ; $1NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ;NNNNNNNNNNNNNNNNNNNNNN : DESACTIVE ( --- ) \ supprime une tache ' TACHE? NOT ABORT" tache inconnue " DUP 2+ SWAP TACHES NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN *NNNNNNNNNNNNNNNNNNNNNN #TACHES 1+ 2* + 2 PICK - CMOVE ; --> 0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN]yNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNnHNNNNNNNNNNNNNNNNNNNNNN\ multitasker -4- 15sep87 MZHEX : TASKEY ( --- c ) \ action identique a KEY 248 C@ 80 OR 248 C! DNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN}NNNNNNNNNNNNNNNNNNNNNN BEGIN TASKER ?KEY ?DUP \ mais lance le multitasker UNTIL 248 C@ 7F AND \ en attendant que le clavier 248 C! DUP 7F > IF \ soit utlise. DROP 0 THEN ; \ idem functkey NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN4NNNNNNNNNNNNNNNNNNNNNNDECIMAL : MULTI ( --- ) \ autorise le multi-tache ['] TASKEY IS KEY ; : MONO ( --- ) \ retour en mono-tache gNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNjNNNNNNNNNNNNNNNNNNNNNN ['] (FUNCTKEY) IS KEY ; CR .( multitasker en place ) --> . NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNI9NNNNNNNNNNNNNNNNNNNNNN\ Sauvegarde automatique 15sep87 MZ 300 CONSTANT DELAI \ delai en secondes entre 2 sauvegardes \ automatiques : ici 5 minutes yNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNzNNNNNNNNNNNNNNNNNNNNNN 66 CONSTANT TIMER \ timer US sec du telestrat \ sur ORIC-1 ou ATMOS prenez le timer DELAI TIMER ! \ 630/#276 en centisecondes qmNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN: SAUVEGARDE ( --- ) \ tache de sauvegarde TIMER @ 0< \ le delai est-il ecoule ? IF DELAI TIMER ! \ oui : remise du timer a delai SAVE-BUFFERS \ et sauvegarde NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNЮNNNNNNNNNNNNNNNNNNNNNN THEN ; \ non : on ne fait rien MULTI ACTIVE SAUVEGARDE .TACHES YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ AUTRES APPLICATIONS *NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN@ 0 (   ZNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN\ Jeu de taquin -1- 19AOU89 TB ONLY FORTH DEFINITIONS HEX 3NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN j6NNNNNNNNNNNNNNNNNNNNNN: REDEFINITION ( c8 c7 ... c1 n -- ) 8 * 0B400 + DUP 8 + SWAP DO I C! LOOP ; : CARACTERES ( -- ) mNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN YNNNNNNNNNNNNNNNNNNNNNN 3F 3F 21 00 00 00 00 00 ASCII a REDEFINITION 07 03 03 03 03 03 03 07 ASCII b REDEFINITION 38 30 30 30 30 30 30 38 ASCII c REDEFINITION 00 00 00 00 00 21 3F 3F ASCII d REDEFINITION tNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNN 00 1E 1E 1E 1E 1E 1E 00 ASCII e REDEFINITION ; --> jNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN?eNNNNNNNNNNNNNNNNNNNNNN\ jeu de taquin -2- 19AOU89 TB : CARRE ( -- dessin terrain ) 7 0 DO CR LOOP \ positionnement vertical ?\NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN,(NNNNNNNNNNNNNNNNNNNNNN 0D SPACES \ positionnement lateral ASCII 9 1+ ASCII 0 DO I EMIT LOOP \ inscription des chiffres CR 0D SPACES 0A 0 DO ASCII a EMIT LOOP CR \ trace du bord superieur NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 0A 0 DO 0B SPACES I ASCII A + EMIT \ trace lettres et ASCII b EMIT 0A SPACES \ bords lateraux ASCII c EMIT CR LOOP 0D SPACES NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNjNNNNNNNNNNNNNNNNNNNNNN 0A 0 DO ASCII d EMIT LOOP ; \ trace du bord inferieur --> 6DNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN?NNNNNNNNNNNNNNNNNNNNNN\ jeu de taquin -3- 19AOU89 TB 0BD1F CONSTANT ORIGINE &NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNVARIABLE RND HERE RND ! : TIRAGE ( -- u entre 0 et 9 ) 0A RND @ 7ABD * 1899 + DUP RND ! UM* SWAP DROP ; 9nNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN+NNNNNNNNNNNNNNNNNNNNNN : TEST ( adr -- fl ) C@ ASCII e = ; UNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN--> YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNNNN\ jeu de taquin -4- 19AOU89 TB VARIABLE COMPTE NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNxNNNNNNNNNNNNNNNNNNNNNN: REMPLISSAGE ( -- ) 0 COMPTE ! BEGIN ORIGINE TIRAGE + TIRAGE 28 * + DUP TEST 0= IF ASCII e SWAP C! 1 COMPTE +! #NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNN ELSE DROP THEN COMPTE @ 40 = UNTIL ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN wNNNNNNNNNNNNNNNNNNNNNN --> NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN $NNNNNNNNNNNNNNNNNNNNNN\ jeu de taquin -5- 19AOU89 TB : GAGNE? ( -- fl ) 0 COMPTE ! I#NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN 8 0 DO I 28 * 8 0 DO I ORIGINE + 29 + OVER + TEST IF 1 COMPTE +! THEN LOOP DROP NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN LOOP COMPTE @ 40 = ; --> NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN /NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNzNNNNNNNNNNNNNNNNNNNNNN\ jeu de taquin -6- 19AOU89 TB: DECALE-LIGNE ( n -- ) 28 * ORIGINE + \ calcul ligne a decaler DUP C@ >R DUP DUP \ 1er temps jNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNNNN 9 + SWAP \ calculs parametres de boucle DO I 1+ C@ I C! LOOP \ 2eme temps R> SWAP 9 + C! ; \ 3eme temps UvNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNZNNNNNNNNNNNNNNNNNNNNNN: DECALE-COLONNE ( n -- ) ORIGINE + DUP \ calcul colonne a decaler C@ >R DUP DUP \ 1er temps 168 + SWAP \ calcul parametres de boucle ԨNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNiNNNNNNNNNNNNNNNNNNNNNN DO I 28 + C@ I C! 28 +LOOP \ 2eme temps R> SWAP 168 + C! ; \ 3eme temps --> DžNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ jeu de taquin -7- 19AOU89 TB : MOUVEMENTS ( -- ) BEGIN ̹NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNQNNNNNNNNNNNNNNNNNNNNNN KEY DUP ASCII 0 1- > OVER ASCII 9 1+ < AND IF ASCII 0 - DECALE-COLONNE 1 THEN DUP ASCII A 1- > OVER ASCII J 1+ < AND IF ASCII A - DECALE-LIGNE 1 THEN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN`NNNNNNNNNNNNNNNNNNNNNN 1 = UNTIL ; --> lcNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN=NNNNNNNNNNNNNNNNNNNNNN\ jeu de taquin -8- 19AOU89 TB VARIABLE SCORE 500 SCORE ! ZNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNhNNNNNNNNNNNNNNNNNNNNNNVARIABLE POINTS : AFFICHE ( -- ) HOME CR CR 6 SPACES NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN[NNNNNNNNNNNNNNNNNNNNNN 1B EMIT ASCII T EMIT ." MEILLEUR SCORE : " SCORE ? 1B EMIT ASCII P EMIT CR CR 6 SPACES 1B EMIT ASCII T EMIT NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKNNNNNNNNNNNNNNNNNNNNNN ." SCORE ACTUEL : " POINTS ? 1B EMIT ASCII P EMIT ; --> 1NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN xNNNNNNNNNNNNNNNNNNNNNN\ jeu de taquin -9- 19AOU89 TB : TAQUIN ( -- ) CARACTERES 3 INK 0 PAPER CLS 0 POINTS ! +NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN -NNNNNNNNNNNNNNNNNNNNNN CARRE AFFICHE REMPLISSAGE BEGIN MOUVEMENTS 1 POINTS +! AFFICHE GAGNE? UNTIL cNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN POINTS @ SCORE @ < IF POINTS @ SCORE ! AFFICHE THEN ; DECIMAL yNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ^NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN oNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ABORT" nom de fichier incorrect " 517 C@ DRV ; : FILENAME ?DOS BL WORD COUNT NAME! ; --> >NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKrNNNNNNNNNNNNNNNNNNNNNN\ DOS-3 BDOS modifie 19AOU89 TBONLY FORTH ALSO DOS DEFINITIONS HEX CREATE BDOS HERE DUP 2- ! CB86 , 128C , 0805 , 00B5 , 8D C, HERE 0 , o:NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN!NNNNNNNNNNNNNNNNNNNNNNCABA , 8ECA , 0513 , AD78 , 0321 , 0729 , BB85 , 21AD , 2903 , 8DF8 , 0321 , 0828 , CCA5 , CDA4 , CEA6 , 20 C, HERE SWAP ! FF00 , CC85 , CD84 , CE86 , 6808 , CF85 , AD78 , 0321 , BB05 , 218D , 2803 , CBA6 , 12AD , 9505 , 4C00 , 0950 , ,NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN-NNNNNNNNNNNNNNNNNNNNNN: SEARCH 7D BDOS DISK-ERR? 0CF C@ 2 AND 0= ; : SEARCH- 80 BDOS DISK-ERR? 0CF C@ 2 AND 0= ; : XSAVE ( ad1 ad2 ftype --- ) 52C C! 52F ! 52D ! C0 528 C! 6B BDOS DISK-ERR? ; -NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN=.NNNNNNNNNNNNNNNNNNNNNN: XLOAD ( vsalo0-1 --- ) 528 ! 62 BDOS DISK-ERR? ; : FILE! ?DOS BNK @ 0 BANK FILE @ C400 516 C@ + OVER 1+ 10 CMOVE 514 OVER 11 + 3 CMOVE 500 C@ SWAP C! BANK ; --> JNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN\ DOS-3 20MAI87 MZ, modifie 19AOU89 TB: ?FILE FILENAME SEARCH NOT ABORT" fichier inexistant " ; : OPEN-FILE ( ouvre fichier courant ) FILE @ DUP C@ DRV DUP D + C@ OVER E + C@ C100 RD# DISK-ERR? >NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN [LNNNNNNNNNNNNNNNNNNNNNNF + C@ 1- 4 / CAPACITY ! ; : (DEFAULT) CR " *" NAME! SEARCH NOT ABORT" pas de fichier par defaut " FILE! OPEN-FILE ." fichier par defaut : " .FILE ; 4NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN h}NNNNNNNNNNNNNNNNNNNNNN: RECORD# BNK @ SWAP 0 BANK 2* DUP C10C + C@ SWAP C10D + C@ ROT BANK ; : FILE-READ DUP 4 + @ SWAP @ DUP 1 CAPACITY @ ?RANGE 1- 4 * 4 0 DO 2DUP RECORD# NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN ROT RD# DISK-ERR? 1+ SWAP 100 + SWAP LOOP 2DROP ; : FILE-WRITE DUP 4 + @ SWAP @ DUP 1 CAPACITY @ ?RANGE 1- 4 * 4 0 DO 2DUP RECORD# ROT WR# DISK-ERR? 1+ SWAP 100 + SWAP LOOP 2DROP ; --> NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN\ DOS-3 20MAI87 MZ, modifie 19AOU89 TB: RDM-FILE ['] RDBLOCK IS READ-BLOCK ['] WRBLOCK IS WRITE-BLOCK FILE OFF 78 CAPACITY ! ; : DOS-FILE ['] FILE-READ IS READ-BLOCK ['] FILE-WRITE IS +NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNWRITE-BLOCK FCB FILE ! ; CREATE FCB1 B/FCB ALLOT : (FROM) FCB FCB1 B/FCB CMOVE ; : (TO) FCB1 FCB B/FCB CMOVE ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN: CREATE-FILE ( N --- ) 1 ?ENOUGH DUP (FROM) FILENAME SEARCH ABORT" fichier existant" DUP 1 1E ?RANGE EMPTY-BUFFERS 400 * 8FE + 900 SWAP 40 XSAVE FILE! OPEN-FILE NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN1+ 1 DO I CLEAR LOOP FLUSH (TO) OPEN-FILE ; --> qNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ DOS-3 20MAI87 MZHEX : .NAME BNK @ 0 BANK CR C400 516 C@ + DUP 9 TYPE ." ." DUP 9 + 3 TYPE E + C@ GNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSXNNNNNNNNNNNNNNNNNNNNNN1- 4 / 4 .R ." .K" BANK ; DECIMAL : (.FILE) FILE @ ?DUP IF DUP C@ ASCII A + EMIT ASCII - EMIT DUP 1+ 9 -TRAILING TYPE NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN." ." 10 + 3 TYPE SPACE ." / " THEN ; ' (.FILE) IS .FILE ONLY FORTH DEFINITIONS ALSO DOS ALSO HEX ' (DEFAULT) IS DEFAULT sNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN5:NNNNNNNNNNNNNNNNNNNNNN: OPEN ?FILE FILE! OPEN-FILE ; : TAKE (FROM) OPEN EMPTY-BUFFERS 1 LOAD FLUSH (TO) OPEN-FILE ; : CAT .FILE 1 CAPACITY @ INDEX ; DECIMAL --> (NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ DIR 20MAI87 MZHEX : DIR FILENAME [ DOS ] SEARCH IF .NAME BEGIN SEARCH- NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN?STOP NOT AND WHILE .NAME REPEAT THEN CR CR .DRV ; ONLY FORTH DECIMAL .NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ BDOS modifie 19AOU89 TBONLY FORTH DEFINITIONS HEX CREATE BDOS HERE DUP 2- ! (NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNCB86 , 7808 , 21AD , 2903 , 8507 , ADBB , 321 , F829 , 218D , 2803 , 00B5 , 8D C, HERE 9 + , CCA5 , CDA4 , CEA6 , 0020 , 85FF , 84CC , 86CD , 08CE , 8568 , CF C, 7808 , 21AD , 0503 , 8DBB , 0321 , A628 , NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN4CCB , 96B , DECIMAL NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN %NNNNNNNNNNNNNNNNNNNNNN\ DOS-3 BDOS 20MAI87 MZ, modifie 19AOU89 TBHEX CREATE BDOS HERE DUP 2- ! CB86 , 7808 , 21AD , 2903 , 8507 , ADBB , 321 , F829 , 218D , 2803 , 00B5 , 8D C, HERE 9 + , NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 5NNNNNNNNNNNNNNNNNNNNNNCCA5 , CDA4 , CEA6 , 0020 , 85FF , 84CC , 86CD , 08CE , 8568 , CF C, 7808 , 21AD , 0503 , 8DBB , 0321 , A628 , 4CCB , 96B , : SEARCH 7D BDOS CF C@ 2 AND 0= ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCfNNNNNNNNNNNNNNNNNNNNNN: SEARCH- 80 BDOS CF C@ 2 AND 0= ; : XSAVE ( ad1 ad2 ftype --- ) 52C C! 52F ! 52D ! C0 528 C! 6B BDOS ; : XLOAD ( vsalo0-1 --- ) 528 ! 62 BDOS ; =QNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNpWNNNNNNNNNNNNNNNNNNNNNN: FILE! ?DOS BNK @ 0 BANK FILE @ C400 516 C@ + OVER 1+ 10 CMOVE 514 OVER 11 + 3 CMOVE 500 C@ SWAP C! BANK ; --> NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNcNNNNNNNNNNNNNNNNNNNNNN@ (   *jNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNP+NNNNNNNNNNNNNNNNNNNNNN\ JUSTIFY UPC 07JUL87 MZ, modifie 19AOU89 TB\ sans assembler only forth definitions hex : TASK ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN%NNNNNNNNNNNNNNNNNNNNNNCREATE JUSTIFY ( adr len --- ) HERE DUP 2- ! 02A9 , 7620 , 8609 , A6CB , F0BC , CA41 , BC86 , BCA5 , 0BD0 , BBA5 , 05F0 , CBA6 , 504C , 8609 , 8ABC , B1A8 , C9BE , D020 , A427 , B1BC , C9BE , F020 , 881A , BEB1 , 20C9 , 13D0 , 00A9 , NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNpNNNNNNNNNNNNNNNNNNNNNNBB85 , A88A , B188 , C8BE , BE91 , BCC4 , 03F0 , D088 , C6F3 , B8BC , C250 , CBA6 , 504C , 09 C, CREATE UPC ( c --- c' ) HERE DUP 2- ! B5 , 5A20 , 9518 , 4C00 , 950 , oNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNdecimal --> :NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ DOUBLE LARGEUR 07JUL87 MZ, modifie 19AOU89 TBONLY FORTH DEFINITIONS HEX CREATE DOUBLE HERE DUP 2- ! CB86 , D0A2 , 07BD , 8DB6 , B400 , 03A0 , 7E6A , BA07 , 006E , NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN(NNNNNNNNNNNNNNNNNNNNNN7EB4 , BA07 , D088 , A0F3 , 6A03 , 077E , 6EB9 , B400 , 077E , 88B9 , F3D0 , 075E , 5EB9 , B907 , 075E , 5EBA , BA07 , D0CA , A6CD , 4CCB , 0950 , DECIMAL lNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN{NNNNNNNNNNNNNNNNNNNNNNDOUBLE --> NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNJNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNtNNNNNNNNNNNNNNNNNNNNNN\ DIA (1) 07JUL87 MZONLY FORTH DEFINITIONS DECIMAL VARIABLE HAUT VARIABLE ALT : CARAC ( n --- ) "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ENNNNNNNNNNNNNNNNNNNNNNALT @ IF DUP 32 - EMIT THEN EMIT ; : EXPA ALT ON 27 EMIT HAUT @ IF ASCII K EMIT ELSE ASCII I EMIT THEN ; : DBLIGNE HAUT @ NOT IF HAUT ON 4 EMIT THEN 548 C@ 2 MOD 9NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN IF DOWN-IN THEN ; : DBLE DBLIGNE 27 EMIT ASCII J EMIT ; : GROS DBLIGNE EXPA ; : NORM HAUT @ IF HAUT OFF 4 EMIT THEN ALT OFF ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 'NNNNNNNNNNNNNNNNNNNNNN: RETN 13 EMIT HAUT @ IF DOWN-IN THEN DOWN-IN NORM ; : LOCAT 48000 548 C@ 40 * + 544 C@ + ; : -CURSOR LOCAT C@ 588 C! CURSOR ; --> HNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN SNNNNNNNNNNNNNNNNNNNNNN\ DIA (2) 07JUL87 MZ: STO# CURSOR 46080 40960 3040 CMOVE -CURSOR ; : REC# CURSOR 40960 46080 3040 CMOVE -CURSOR ; : ATST 0 0 AT ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN `NNNNNNNNNNNNNNNNNNNNNN: INST CURSOR BL 548 C@ 40 * 48000 + 544 C@ DUP >R + DUP DUP 1+ 39 R> - CMOVE> C! -CURSOR ; : DETL CURSOR 548 C@ DUP 40 * 48000 + DUP 40 + SWAP ROT 27 SWAP - 40 * CMOVE 49080 40 BLANK -CURSOR ; '+NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN5NNNNNNNNNNNNNNNNNNNNNN: INLI CURSOR 548 C@ DUP 40 * 48000 + DUP 40 + ROT 27 SWAP - 40 * CMOVE> CONTROL N EMIT -CURSOR ; : JUSP CURSOR 48000 548 C@ 40 * + 40 JUSTIFY -CURSOR ; : DETC CURSOR LOCAT DUP 1+ SWAP 39 544 C@ - CMOVE NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN BL LOCAT 544 C@ - 39 + C! -CURSOR ; --> NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ DIA (3) 07JUL87 MZONLY FORTH DEFINITIONS DECIMAL CREATE CTRLDIA ] NOOP NORM HOME NOOP DBLE EXPA NOOP GROS NOOP NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN&NNNNNNNNNNNNNNNNNNNNNNNOOP NOOP NOOP NOOP RETN NOOP DETC JUSP NOOP REC# STO# NOOP INST NOOP NOOP DETL INLI NOOP NOOP ATST NOOP NOOP NOOP [ : EDIA \ mot d'edition DIA )NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN0NNNNNNNNNNNNNNNNNNNNNNCONTROL ] EMIT BEGIN KEY DUP CONTROL C <> WHILE DUP 32 < IF DUP 2* CTRLDIA + @ DUP ['] NOOP = IF DROP EMIT ELSE NIP EXECUTE THEN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNcNNNNNNNNNNNNNNNNNNNNNNELSE DUP 127 = IF DROP BS-IN SPACE BS-IN ELSE CARAC THEN THEN REPEAT STO# DROP CONTROL ] EMIT CLS 0 PAPER 6 INK ; --> NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNRNNNNNNNNNNNNNNNNNNNNNN\ DIA (4) 07JUL87 MZ, modifie 19AOU89 TBONLY FORTH DEFINITIONS ALSO HEX : DIA ( ) [ ALSO DOS ] {NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNANNNNNNNNNNNNNNNNNNNNNNEXT PAD SWAP CMOVE " SCR" DROP EXT CMOVE FILENAME SEARCH IF CURSOR HOME 0 XLOAD -CURSOR TRUE ELSE CR ." nouveau fichier ? " KEY UPC ASCII N <> THEN IF STO# DOUBLE EDIA ƿNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNrNNNNNNNNNNNNNNNNNNNNNN." pret pour marquage ? " KEY UPC ASCII N <> IF REC# CURSOR B400 BFDF 40 XSAVE CURSOR THEN THEN CLS 0 PAPER 6 INK QWERTY PAD EXT CMOVE OPEN-FILE ; ONLY FORTH DECIMAL 6NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN'NNNNNNNNNNNNNNNNNNNNNN--> YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ REDEF dans la zone de stockage dessin DECIMAL VARIABLE FORM-BASE : L1 47104 FORM-BASE ! ; : L0 46080 FORM-BASE ! ; L0 : STOJEU 46080 40960 1900 CMOVE ; 4NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN: REDEF 9 ?ENOUGH 8 * FORM-BASE @ + 1- DUP 8 + DO I C! -1 +LOOP L0 STOJEU ; : .FORM BASE @ SWAP 2 BASE ! 8 * FORM-BASE @ + 8 0 DO CR COUNT DUP 0 <# # # # # # # #> :NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 7NNNNNNNNNNNNNNNNNNNNNN TYPE SPACE H. LOOP DROP BASE ! ; : .JEU 4 1 DO CR 27 EMIT ASCII H EMIT I 32 * 32 0 DO I OVER + EMIT LOOP DROP LOOP 4 1 DO CR 27 EMIT ASCII I EMIT 32 I * 32 0 DO I OVER + DUP 113 < IF EMIT ELSE DROP THEN LOOP DROP LOOP ; !NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN bNNNNNNNNNNNNNNNNNNNNNNVARIABLE (RET) : RETURN (RET) ON ; : GOFORTH STO# (RET) OFF CLS 0 PAPER 6 INK BEGIN CR ." > " QUERY RUN (RET) @ UNTIL REC# HOME ; ' GOFORTH CTRLDIA CONTROL Q 2* + ! --> JNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN QNNNNNNNNNNNNNNNNNNNNNN\ RETOUR D'ERREUR DANS GOFORTH ONLY DOS ALSO FORTH DEFINITIONS HEX : OUPS REC# CURSOR B400 BFDF 40 XSAVE CURSOR OPEN-FILE ; ONLY FORTH DEFINITIONS DECIMAL _NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN lNNNNNNNNNNNNNNNNNNNNNNCR .( EDITEUR D'ECRAN DIA ) NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ]NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN?NNNNNNNNNNNNNNNNNNNNNN@ (   rNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNrNNNNNNNNNNNNNNNNNNNNNN\ JUSTIFY UPC LWC modifie 19AOU89 TB\ sans assembler only forth definitions hex : TASK ; dNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNCREATE JUSTIFY ( adr len --- ) HERE DUP 2- ! 02A9 , 7620 , 8609 , A6CB , F0BC , CA41 , BC86 , BCA5 , 0BD0 , BBA5 , 05F0 , CBA6 , 504C , 8609 , 8ABC , B1A8 , C9BE , D020 , A427 , B1BC , C9BE , F020 , 881A , BEB1 , 20C9 , 13D0 , 00A9 , NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNȄNNNNNNNNNNNNNNNNNNNNNNBB85 , A88A , B188 , C8BE , BE91 , BCC4 , 03F0 , D088 , C6F3 , B8BC , C250 , CBA6 , 504C , 09 C, CREATE UPC ( c --- c' ) HERE DUP 2- ! B5 , 5A20 , 9518 , 4C00 , 950 , oNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN: LWC DUP ASCII A ASCII Z BETWEEN IF 20 + THEN ; decimal --> ʈNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ EXTENSIONS ET FONCTIONS POUR SCREENS ONLY FORTH ALSO SCREENS DEFINITIONS HEX : .CTRLED 20 0 DO CR ." CTRL-" ASCII @ I + EMIT ." = " CTRLED I 2* + @ >NAME ID. ?STOP ?LEAVE LOOP CR ; |NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN7qNNNNNNNNNNNNNNNNNNNNNNCREATE FUNCTED 40 ALLOT : REMPLI 20 0 DO ['] NOOP FUNCTED I 2* + ! LOOP ; REMPLI FORGET REMPLI : .FUNCTED 20 0 DO CR ." FUNCT-" I ASCII @ + EMIT ." : " NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN@NNNNNNNNNNNNNNNNNNNNNNFUNCTED I 2* + @ >NAME ID. ?STOP ?LEAVE LOOP ; : FONCTION-ED 279 C@ 1F AND 2* FUNCTED + @ EXECUTE ; ' FONCTION-ED CTRLED ! : LOWER-C TR@ C@ LWC TR@ C! AVANCE MODIFIED ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNQNNNNNNNNNNNNNNNNNNNNNN: UPPER-C TR@ C@ UPC TR@ C! AVANCE MODIFIED ; ' LOWER-C FUNCTED CONTROL L 2* + ! ' UPPER-C FUNCTED CONTROL U 2* + ! DECIMAL --> gNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNb"NNNNNNNNNNNNNNNNNNNNNN\ FONCTIONS DE COMMANDES D'IMPRESSION ONLY FORTH ALSO SCREENS DEFINITIONS DECIMAL : POSE-COM 128 OR TR@ C! AVANCE MODIFIED ; : ANGLAIS QWERTY ASCII A POSE-COM ; m/NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNrNNNNNNNNNNNNNNNNNNNNNN: FRANCAIS ACCENT ASCII F POSE-COM ; : GRASSE ASCII G POSE-COM ; : FINE ASCII N POSE-COM ; : SOULIGNE ASCII S POSE-COM ; : -SOULIGNE ASCII Z POSE-COM ; : JUST-ED TLINE TC @ JUSTIFY MODIFIED ; INNNNNNNNNNNNNNNNNNNNNNNNNNNNNN A-NNNNNNNNNNNNNNNNNNNNNN' ANGLAIS FUNCTED CONTROL A 2* + ! ' FRANCAIS FUNCTED CONTROL F 2* + ! ' GRASSE FUNCTED CONTROL G 2* + ! ' FINE FUNCTED CONTROL N 2* + ! bNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ~NNNNNNNNNNNNNNNNNNNNNN' SOULIGNE FUNCTED CONTROL S 2* + ! ' -SOULIGNE FUNCTED CONTROL Z 2* + ! ' JUST-ED FUNCTED CONTROL J 2* + ! --> DYNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 'ONNNNNNNNNNNNNNNNNNNNNN\ DRIVERS ANGLAIS FRANCAIS ONLY FORTH ALSO PRINTER DEFINITIONS DECIMAL : A-PRINT DUP CASE 64 OF DROP 170 ENDOF 91 OF DROP 203 ENDOF NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN 92 OF DROP 204 ENDOF 93 OF DROP 205 ENDOF 123 OF DROP 219 ENDOF 124 OF DROP 220 ENDOF 125 OF DROP 221 ENDOF ENDCASE (PRINT) ; : F-PRINT DUP 126 = IF DROP 168 THEN (PRINT) ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNVARIABLE FRENCH --> LNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNغNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ PRINTER SEIKOSHA 550 06OCT86 MZHEX : ESC 1B [COMPILE] LITERAL COMPILE (PRINT) [COMPILE] ASCII COMPILE (PRINT) ; IMMEDIATE "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN: SPECIF ABS 0 <# # # # #> 0 DO COUNT (PRINT) LOOP DROP ; : PICA ESC H ; : ELITE ESC Q ; : ITALIC ESC B ; : MICRON ESC U ESC 7 ; : STANDARD ESC N ESC 6 ; : LARGE 1B (PRINT) E (PRINT) ; : -LARGE 1B (PRINT) F (PRINT) ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN: BOLD ESC # ; : THIN ESC $ ; : CONDENSED ESC C ; : UNDERLINE ESC X ; : -UNDERLINE ESC Y ; : PAGE C (PRINT) #LINE OFF ; : MARGIN ESC L SPECIF ; : PAGE-LENGTH ESC Z SPECIF ; L NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN: CANCEL 18 (PRINT) ; DECIMAL --> NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ COMMANDES D'IMPRESSION ONLY FORTH ALSO PRINTER DEFINITIONS DECIMAL : COM-PRINT CASE ASCII A OF FRENCH OFF SPACE ENDOF ASCII F OF FRENCH ON SPACE ENDOF ASCII G OF BOLD SPACE ENDOF ASCII N OF NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN THIN SPACE ENDOF ASCII S OF SPACE UNDERLINE ENDOF ASCII Z OF -UNDERLINE SPACE ENDOF ENDCASE ; : COM-EMIT DUP 128 > IF 127 AND COM-PRINT jNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNf\NNNNNNNNNNNNNNNNNNNNNN ELSE FRENCH @ IF F-PRINT ELSE A-PRINT THEN THEN ; --> FNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNUmNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN>NNNNNNNNNNNNNNNNNNNNNN\ COMMANDES D'IMPRESSION modifie 19AOU89 TBONLY PRINTER ALSO FORTH DEFINITIONS DECIMAL VARIABLE LECR : ?LECR CR ." listing ?" LECR KEY DUP EMIT UPC ASCII O = IF ON NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN3NNNNNNNNNNNNNNNNNNNNNN ELSE OFF THEN ; : EN-TETE LECR @ IF 4 MARGIN BOLD .FILE ." ecran no " SCR @ . THIN CR ELSE 6 MARGIN THEN ; : IMPRIME ( block --- ) DUP 1 CAPACITY @ ?RANGE ON-LINE ?LECR #NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN#1NNNNNNNNNNNNNNNNNNNNNN PICA FRENCH OFF ['] COM-EMIT IS EMIT ['] (PCR) IS CR SCR ! EN-TETE 16 0 DO LECR @ IF ." (" I 2 .R ." ) " THEN I LINE -TRAILING TYPE CR LOOP LECR @ IF CR CR THEN ['] (EMIT) IS EMIT ['] (CR) IS CR CR ; ؔNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNONLY FORTH >NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ESNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN vbNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN@ (   YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ ROLL modifie 19AOU89 TBONLY FORTH DEFINITIONS HEX CREATE ROLL HERE DUP 2- ! E8E8 , FEB5 , 1DF0 , 850A , 18BC , 658A , AABC , B5 , NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNB548 , 4801 , B5CA , 9500 , C602 , D0BC , 68F7 , 195 , 9568 , 4C00 , 950 , DECIMAL \ CODE ROLL ʒNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ INX, INX, FE ,X LDA, 0= NOT IF, \ .A ASL, N STA, CLC, \ TXA, N ADC, TAX, 0 ,X LDA, PHA, 1 ,X LDA, PHA, \ BEGIN, DEX, 0 ,X LDA, 2 ,X STA, NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ N DEC, 0= UNTIL, \ PLA, 1 ,X STA, PLA, 0 ,X STA, THEN, NEXT JMP, ;C =NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ J index de boucle externe modifie 19AOU89 TBONLY FORTH DEFINITIONS HEX CREATE J HERE DUP 2- ! DNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCB86 , BDBA , 107 , BD48 , 108 , CBA6 , 494C , 09 C, \ Index I' et J' de limites de boucles NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\ CREATE I' HERE DUP 2- ! \ CB86 , BDBA , 103 , BD48 , 104 , CBA6 , 494C , 09 C, \ CREATE J' HERE DUP 2- ! 5NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN#NNNNNNNNNNNNNNNNNNNNNN\ CB86 , BDBA , 109 , BD48 , 10A , CBA6 , 494C , 09 C, DECIMAL NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNvNNNNNNNNNNNNNNNNNNNNNN\ MARK and EMPTY ONLY FORTH DEFINITIONS DECIMAL : MARK CREATE DOES> (FORGET) ONLY FORTH DEFINITIONS ; MARK EMPTY LOCK NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNENNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNUNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN fNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 3NNNNNNNNNNNNNNNNNNNNNN\ JUSTIFY UPC 07JUL87 MZ, modifie 19AOU89 TB\ sans assembler only forth definitions hex : TASK ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNCREATE JUSTIFY ( adr len --- ) HERE DUP 2- ! 02A9 , 7620 , 8609 , A6CB , F0BC , CA41 , BC86 , BCA5 , 0BD0 , BBA5 , 05F0 , CBA6 , 504C , 8609 , 8ABC , B1A8 , C9BE , D020 , A427 , B1BC , C9BE , F020 , 881A , BEB1 , 20C9 , 13D0 , 00A9 , NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ANNNNNNNNNNNNNNNNNNNNNNBB85 , A88A , B188 , C8BE , BE91 , BCC4 , 03F0 , D088 , C6F3 , B8BC , C250 , CBA6 , 504C , 09 C, CREATE UPC ( c --- c' ) HERE DUP 2- ! B5 , 5A20 , 9518 , 4C00 , 950 , oNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN pNNNNNNNNNNNNNNNNNNNNNNdecimal --> :NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN#NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN_NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNnNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNtNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN!NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN4NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNVNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNgNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNYNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN hNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ;NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 1NNNNNNNNNNNNNNNNNNNNNN@   NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNdNNNNNNNNNNNNNNNNNNNNNN\ FICHIERS ACCES DIRECT SELON TELEFORTH ONLY FORTH ALSO DOS DEFINITIONS HEX CREATE FSTR 8082 , 2441 , 2020 , 2020 , 2020 , ( A$ ) 8082 , 2442 , 2020 , 2020 , 2020 , ( B$ ) NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNWNNNNNNNNNNNNNNNNNNNNNN 8082 , 2443 , 2020 , 2020 , 2020 , ( C$ ) 8082 , 2444 , 2020 , 2020 , 2020 , ( D$ ) HERE FSTR - CONSTANT FLEN CREATE FRW NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNDNNNNNNNNNNNNNNNNNNNNNN80A0 , 51A5 , D10 , 6084 , 80A5 , 6185 , 81A5 , 6285 , 50B8 , 8808 , 61B1 , 8091 , 1088 , 18F9 , 80A5 , 8069 , 8085 , 290 , 81E6 , 60 C, --> 6}NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNwNNNNNNNNNNNNNNNNNNNNNN\ CREATE FRW 80 # LDY, 51 LDA, 0< IF, \ 60 STY, 80 LDA, 61 STA, 81 LDA, 62 STA, ELSE, \ DEY, BEGIN, 61 )Y LDA, 80 )Y STA, DEY, 0< UNTIL, THEN, \ CLC, 80 LDA, 80 # ADC, 80 STA, CS IF, 81 INC, THEN, RTS, NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNuNNNNNNNNNNNNNNNNNNNNNN\ FICHIERS ACCES TELEFORTH (2) modifie 19AOU89 TBONLY FORTH ALSO DOS DEFINITIONS HEX : STARTUP ( initialise les vecteurs ) A000 7C0 ERASE 2 549 C! A000 542 ! 1 548 C! FFFF 544 ! &NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNW&NNNNNNNNNNNNNNNNNNNNNN321 C@ 7 AND 54C C! FRW 54D ! ; : USING STARTUP 8 52C C! FILENAME SEARCH IF 1D BDOS DROP 1A BDOS DISK-ERR? ELSE CR ." creer ? " KEY ASCII O = IF NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNdNNNNNNNNNNNNNNNNNNNNNN1D BDOS DROP 0 52D ! 400 52F ! 1A BDOS DISK-ERR? FSTR 6 @ DUP 503 ! FLEN CMOVE 08 @ 0C + @ CC ! 8F BDOS DISK-ERR? THEN THEN ; : RDM-R/W ( adr bloc r/w ) NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNIF 20 ELSE 23 THEN -ROT SWAP 80 ! 1+ 2* 1+ DUP 2- DO I 52D ! DUP BDOS DROP LOOP DROP ; ONLY FORTH DEFINITIONS DECIMAL --> pNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNαNNNNNNNNNNNNNNNNNNNNNN\ UTILITAIRE CONVERSION F83-TELEFORTH ONLY DOS ALSO FORTH DEFINITIONS DECIMAL : USING USING ; : CHARGE ( blk-teleforth blk-f83 --- ) )-NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNDUP SCR ! BUFFER SWAP 1 RDM-R/W UPDATE ; : SAUVE ( blk-f83 blk-teleforth --- ) SWAP DUP SCR ! BLOCK SWAP 0 RDM-R/W ; ONLY FORTH NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCR .( ouvrir fichier : USING FORTH.DAT ) CR .( 1 2 CHARGE : bloc 1 TELEFORTH -> bloc 2 F83 ) CR .( 1 2 SAUVE : bloc 1 F83 -> bloc 1 TELEFORTH ) њNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN\ BOOTUP DU TELEFORTH FORTH.DAT FORTH DEFINITIONS DECIMAL : \ \ ; IMMEDIATE CR ." forth TELEFORTH V2.0 " NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ޏNNNNNNNNNNNNNNNNNNNNNN;S FNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN t)NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN GNNNNNNNNNNNNNNNNNNNNNN@ (   NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKNNNNNNNNNNNNNNNNNNNNNN\ PARCOURS ONLY FORTH DEFINITIONS DECIMAL DEFER ACTION ( cfa --- ) : PARCOURS CR CONTEXT @ HERE 8 CMOVE BEGIN HERE 4 LARGEST NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN!zNNNNNNNNNNNNNNNNNNNNNN DUP 0<> ?STOP NOT AND WHILE DUP LINK> ACTION @ SWAP ! REPEAT 2DROP ; \ exemple liste de mot selon un type NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN27NNNNNNNNNNNNNNNNNNNNNNVARIABLE [CFA] : ?THIS DUP @ [CFA] @ = IF >NAME ID. ELSE DROP THEN ; : .KIND ' @ [CFA] ! ['] ?THIS IS ACTION PARCOURS ; : (.CODED) DUP DUP @ 2- = IF >NAME ID. ELSE DROP THEN ; FNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN: .CODED ['] (.CODED) IS ACTION PARCOURS ; CR .( mots deferes : ) .KIND EMIT CR .( variables : ) .KIND [CFA] CR .( mots en code : ) .CODED PNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN rNNNNNNNNNNNNNNNNNNNNNN\ redefinition de ['] et COMPILE ONLY FORTH DEFINITIONS DECIMAL : ['] R> DUP 2+ >R @ ; : COMPILE ?COMP ['] , ; CNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN !NNNNNNNNNNNNNNNNNNNNNN : TRUC ." truc " ; : TRAC ." trac " ; )8NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNDEFER CHOSE : BASCULE ['] CHOSE >BODY @ ['] TRUC = IF ['] TRAC IS CHOSE ELSE ['] TRUC IS CHOSE ݼNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN THEN CHOSE ; HNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 6NNNNNNNNNNNNNNNNNNNNNN\ interpreteur : MANY TIMES :: WHEN ONLY FORTH DEFINITIONS DECIMAL VARIABLE #TIMES : TIMES ( n --- ) NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN cNNNNNNNNNNNNNNNNNNNNNN 1 #TIMES +! #TIMES @ < IF 1 #TIMES ! ELSE >IN OFF THEN ; : MANY ( --- ) ?KEY NOT IF >IN OFF THEN ; : :: ( pseudo-definition immediatement executee ) аNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN PNNNNNNNNNNNNNNNNNNNNNN HIDE HERE >R [ ' : @ ] LITERAL , !CSP ] R@ EXECUTE R> DP ! ; \ when : re-execution du mot precedent : WHEN ( f --- ) `NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN @NNNNNNNNNNNNNNNNNNNNNN NOT IF R> 4 - >R THEN ;  NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  sNNNNNNNNNNNNNNNNNNNNNN\ essai de DEFINE ONLY DOS ALSO FORTH DEFINITIONS : DEFINE >IN @ OPEN >IN ! CREATE FILE @ HERE B/FCB CMOVE B/FCB ALLOT ?NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  &NNNNNNNNNNNNNNNNNNNNNNDOES> FILE @ B/FCB CMOVE OPEN-FILE ; ONLY FORTH NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  .NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN  NNNNNNNNNNNNNNNNNNNNNN\ MARK and EMPTY ONLY FORTH DEFINITIONS DECIMAL : MARK CREATE DOES> (FORGET) ONLY FORTH DEFINITIONS ; MARK EMPTY LOCK NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN LNNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN }NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 0NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNN\ Fichiers commandes et ecrans d'aide modifie 19AOU89 TBONLY DOS ALSO FORTH ALSO DEFINITIONS DECIMAL HEX : DEFINE-COM >IN @ FILENAME >IN ! CREATE 517 HERE D CMOVE D ALLOT l NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN!NNNNNNNNNNNNNNNNNNNNNNDOES> 517 D CMOVE [ DOS ] SEARCH NOT ABORT" fichier-com inexistant " 0 XLOAD ; : HELP " SCR" DROP EXT CMOVE FILENAME nNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN!ٕNNNNNNNNNNNNNNNNNNNNNN SEARCH NOT ABORT" ecran d'aide inexistant " 0 XLOAD KEY DROP CLS TERMINAL ; ONLY FORTH DECIMAL 3NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN!NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN!s3NNNNNNNNNNNNNNNNNNNNNN\ SUPER-MACROS assemblage forth-like ONLY DEFINITIONS FORTH VOCABULARY MACROS ALSO ASSEMBLER DEFINITIONS VARIABLE COMPIL ( flag compilation macro ) hNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN!@NNNNNNNNNNNNNNNNNNNNNN: IN-MACROS ONLY ASSEMBLER ALSO MACROS DEFINITIONS COMPIL ON ; : MACRO IN-MACROS CREATE PC @ [ FORTH ] , [ ASSEMBLER ] DOES> @ COMPIL @ IF JSR, ELSE CALL THEN ; ^NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN!QNNNNNNNNNNNNNNNNNNNNNN: END-MACRO ONLY FORTH ALSO ASSEMBLER DEFINITIONS COMPIL OFF ; \ pour metacompiler std remplacer macro par : et end-macro par \ ; NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN!&`NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN!6^NNNNNNNNNNNNNNNNNNNNNN\ MOTS CODES-LABELS REUTILISABLES ONLY FORTH ALSO DEFINITIONS HEX : CODE-LABEL CREATE HIDE CONTEXT @ AVOC ! ASSEMBLER ;CODE XSAVE STX, CLC, W LDA, 2 # ADC, ^1NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN! oNNNNNNNNNNNNNNNNNNNNNN >MARK STA, W 1+ LDA, 0 # ADC, >MARK STA, 20 C, SWAP >RESOLVE FF C, >RESOLVE FF C, XSAVE LDX, NEXT JMP, ONLY FORTH DEFINITIONS DECIMAL YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN! P ...code... RTS, ;C \ qui fonctionnent exactement comme CODE mais en creant aussi "!NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN! c NNNNNNNNNNNNNNNNNNNNNN\ dans leur pfa des routines reutilisables en bas niveau \ par ' >body JSR, uNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN! NNNNNNNNNNNNNNNNNNNNNN@   <,NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN! ɫNNNNNNNNNNNNNNNNNNNNNN\ Tris QUICKSORT et SWORDS 15aou87 MZ 3 6 thru exit SWORDSest un mot qui s'utilise comme WORDS pour lister leANNNNNNNNNNNNNNNNNNNNNNNNNNNNNN!NNNNNNNNNNNNNNNNNNNNNNpremier vocabulaire de contexte mais dans un ordrealphab{tique. L'int{r~t de ce programme adapt{ de l'article deWil BADEN parudans le n[ 5 deFORTH DIMENSIONSde Janvier 85 est de pr{senter0NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN!NNNNNNNNNNNNNNNNNNNNNNune m{thode g{n{rale de tri selon le puissant algorithme r{cur-sif du QUICKSORT. ParSORTon peut trier une table d'{l{ments 16 bits ( nombres,RNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN!NNNNNNNNNNNNNNNNNNNNNNadresses, index etc ) plac{e au dessus du PAD dans la limite del'espace m{moire disponible selon un comparateur quelconquevectoris{ dansPRECEDES.Le mot SWORDS n'en est qu'une desnombreuses applications possibles. NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN!NNNNNNNNNNNNNNNNNNNNNN\ Rappels oucompl{ments pour votre F83 15aou87 MZ( a -appel r{cursifdu mot en cours de compilation ) :RECURSElast @ name> , ; immediate NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNN( b -affichages ou impressions format{es) variableRMARGIN \ marge droite : nombre de colonnes C/L RMARGIN ! \ par exemple :?LINE( len --- ) \ CR automatique sans coupures de mots NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"BINNNNNNNNNNNNNNNNNNNNNN #out @ + rmargin @ > if cr then ; :?TAB ( len --- ) \ tabule@ la prochaine colonne multiple #out @ negate swap mod spaces ; nLNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"qxNNNNNNNNNNNNNNNNNNNNNN( c - utilitaire des listages tels que list,index,see,dir etc..) :?STOP( --- f ) \ suspend ou termine si touche false key? if drop key 13 = then ; \ les deux derniers manquent souvent sur les F83 standards tNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNN\ QUICKSORT 15aou87 MZonly forth definitions decimal deferPRECEDES( a1 a2 --- f ) \ comparateur de deux{l{ments NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNN :QUICK( a[m],a[n] -- ) \ trie de m@ n avec pivot m{dian 2dup over - 2/ -2 and + @ >R 2dup swap begin ENNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNN begin dup @ R@ PRECEDES while 2+ repeat swap begin R@ over @ PRECEDES while 2- repeat swap 2dup U< not if 2dup 2dup @ >R @ swap ! R> swap ! swap 2- swap 2+ then gNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNN 2dup U< until R> drop rot 2over 2over - + > if 2swap then 2dup U< if recurse else 2drop then 2dup U< if recurse else 2drop then ; wNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"NNNNNNNNNNNNNNNNNNNNNN\ SORT 15aou87 MZ :SORT( adr n --- ) \ trie n{l{mentsa[0]@a[n-1] ?dup 0= abort" nothing to sort " GNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN" NNNNNNNNNNNNNNNNNNNNNN 1- 2* over + QUICK ; :(SORTED)( adr n --- ) \ primitive de compilation R> dup 2+ >R @ is PRECEDES SORT ; UNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN" NNNNNNNNNNNNNNNNNNNNNN :SORTED( adr n --- ) state @ if compile (SORTED) else ' is PRECEDES SORT NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN" NNNNNNNNNNNNNNNNNNNNNN then ; immediate \ SORTED trie une table quelconque de n{l{ments \ selon unop{rateur de comparaison quelconque NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN" aFNNNNNNNNNNNNNNNNNNNNNN\ Application@ SWORDS 15aou87 MZ:NAMES( --- adr n ) \ construit la table du voc. context cr context @ body> >name .id pad c/l + dup NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN" RwNNNNNNNNNNNNNNNNNNNNNN #threads 0 do context @ I 2* + begin @ ?dup while dup >R l>name over ! 2+ R> repeat NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"$NNNNNNNNNNNNNNNNNNNNNN loop over - 2/ ; :TAB.ID( nfa len --- ) \ affiche un nomformat{ dans len dup ?tab over C@ 31 and 1+ rmargin @ rot mod + ?line .id ; 9 constantNAME-TAB \ largeur d'un champ de nom pNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"4NNNNNNNNNNNNNNNNNNNNNN:.NAMES( adr n --- ) \ affiche toute la table des n noms 0 do dup @ NAME-TAB TAB.ID 2+ ?stop ?leave \ \a va si vite sur un {cran... loop drop ; PNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"'XNNNNNNNNNNNNNNNNNNNNNN\ SWORDS 15aou87 MZ :ID<( nfa1 nfa2 --- f ) \ comparateur alpha de deux NFA 2dup count 31 and over + swap ?NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN"iNNNNNNNNNNNNNNNNNNNNNN do 1+ dup C@ i C@ - if C@ 127 and i C@ 127 and - dup if 0< -rot drop then 0= leave then NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN#aNNNNNNNNNNNNNNNNNNNNNN loop if C@ 31 and swap C@ 31 and > then ; :SWORDS( --- ) (NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN#4NNNNNNNNNNNNNNNNNNNNNN NAMES dup . ." names defined" cr 2dup SORTED ID< .NAMES ; 7NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN#NNNNNNNNNNNNNNNNNNNNNN\ SPECIFIQUE ORIC only forth definitions decimal : .ID ID. ; : ID. TRUE ABORT" pas ID. mais .ID !!! " ; [nNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN#[NNNNNNNNNNNNNNNNNNNNNN: key? ?key ; : ?key true abort" ?key non standard" ; 4 constant #THREADS : RECURSE LAST @ NAME> , ; IMMEDIATE *NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN#jNNNNNNNNNNNNNNNNNNNNNN 2 6 THRU CR .( SWORDS ACTIF ) NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN#9NNNNNNNNNNNNNNNNNNNNNN TNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN#NNNNNNNNNNNNNNNNNNNNNN@  ,2NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN#6NNNNNNNNNNNNNNNNNNNNNNˢ]ESORTE,W0¢ORECURSũ R %& L PRECEDEӗ &QUIC˩ !  6 dR ! R  8) pL ^  R 8) b r ! ) !!R R v v b L!) ^ mmd) ʠ8!) ؠD ڠ!) D L SORԩ x >nothNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN# NNNNNNNNNNNNNNNNNNNNNNing to sort : dDL -(SORTED L R +8L SORTEĩ lR ) Rr # Z#!+8L NAMEө R %C%g/d  R / dR x ) $ v L  J  L 7?TA© 0R  _L \RMARGI %?LINũ 0R dԡR ) L TAB.ILNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN# TNNNNNNNNNNNNNNNNNNNNNN g  *ԡR dg/L ʡNAME-TA¾ !.NAMEө  S R ,L+J A L