Saturday, 5 January 2019

TL/1 の続き

なんか楽しくデバッグしたんですが...

  生成コードが変

6800/6809が混じっているような。あぁ、そういえば...

  このコードは6800用のオリジナルのTL/1を6809に移植しようとして挫折した

ものでした。どうりで細かいコメントが入っているはずだよ。そんなことしてたんだ。なので、そのままでは動かない。

おそらく、コード生成まで6809で動くようにして、どいういうコードを生成するかを考えた辺りでやめたんじゃないかと。

まあでも、6800の上位互換なので動かすぐらいだったら。全部のステートメントをテストしようとしたら大変だけど、簡単な例題くらいなら。
このままだと、生成されるコードはダサいのだけど、 まぁ、動いたからいいかな。

Basic Master Lv3 では動いているらしいので、ちゃんとしたものはどっかにあるはず。

主なバグは10進数の入出力だった。MULの結果がAに入ると思っているコードだったり。

まぁ、これで若い頃に時間が取れなくてやり残したことはだいたいできたかな。 sbc09 TL/1 source


  OS9:tl1 tl1/test/t1.tl1

  Do 1
  2
  3
  4
  5
  6
  7
  8
  9
  10

  OS9:list tl1/test/t1.tl1
  % ** SPRITE TEST PROGRAM **
  PROC WAIT,TIME
  %--- MAIN ---
  VAR I
  BEGIN
   WRITE(1:"Do ")
   FOR I:=1 TO 10 DO [
    WRITE(1:I,CRLF)
    TIME
    ]
   WAIT
  END
  %-- PROCEDURE WAIT --
  WAIT
  VAR I,J,K
  BEGIN
   FOR I:=0 TO 1 DO [
    FOR J:=0 TO 255 DO [
     FOR K:=0 TO 255 DO []]]
  END
  %-- PROCEDURE TIME --
  TIME
  VAR I,J
  BEGIN
   FOR I:=0 TO 10 DO [
    FOR J:=0 TO 150 DO []]
  END

  380D: 9E 02     LDX     <$02
  380F: A7 00     STA     +$00,X
  3811: 86 0A     LDA     #$0A
  3813: 34 02     PSHS    A
  3815: 86 01     LDA     #$01
  3817: 97 01     STA     <$01
  3819: 9E 02     LDX     <$02
  381B: A6 00     LDA     +$00,X
  381D: BD B6 2F    JSR     $B62F
  3820: BD B6 BB    JSR     $B6BB
  3823: 86 01     LDA     #$01
  3825: BD 38 80    JSR     $3880
  3828: 35 02     PULS    A
  382A: A1 00     CMPA    +$00,X
  382C: 23 05     BLS     $3833
  382E: 6C 00     INC     +$00,X
  3830: 7E 38 13    JMP     $3813
  3833: 86 01     LDA     #$01
  3835: BD 38 3B    JSR     $383B

No comments: