#99 Article 930 Posted at 1995/10/16 03:40:31 by MEX (MAP5294) [A.ML1]

Subject: Re: ML1で質問です。 /929

私はpasは良く知りませんが(笑) < 通が多そうなので(^^;
ML1ことは多少解りますので説明します。

で、連鎖の展開がおかしいのではないでしょうか。で、改善例ですが

### メイン
rensaread(xy+160,fgc); --> rensarand(xy,fgc);

### rensarand
>    if (dx <> -127) then
>      pixel[xy + dx] := color;
>    inc(xy,160+dx);

         |
         v

     if (dx <> -127) then begin
       inc(xy,160+dx);
       pixel[xy] := color;
     end;

すると動きました。(あくまで仮設ですが)
ちなみに下記の10色対応ディスプレイドライバ(笑)で表示しただけです(^^;
(お、知らん間にDOS汎用のML1ローダーできちゃった☆(恥))

  xy := 0;
  for i:=0 to 99 do begin
    for j:=0 to 159 do begin
      write(pixel[xy]);
      inc(xy);
    end;
    writeln('');
  end;

結果的には、rensareadの中では画面下をつっきてしまい、と連鎖終了を取ら
ないでexitしていました。連鎖がうまく取れないと110を次の長さに取得して
しまうので長さがおかしくなる以外にも、それに伴いEOD(長さ16000(+1))を取
れなくなり、帰ってこなくなる場合もあるようでした。
構造的にはEODを期待しないものでも良いのでしょうが、長さ取得(l := wyle
read+1;)の所でおりを見るのも一考かと思います。

以上、嘘言ってるかもしれません。:->

MAP5294 MEX
--------------
見た感じ1passで処理しているようでかわってて面白いです。
私も初め1passでdecodeさせて見ようと思っていたのですが
debugで死んだのであっさり一般的な2passの処理を書いた次第です。
ML1は幾分トリッキーな所がある(--;