樫樹の広場



1行掲示板です。情報提供などありましたらよろしくお願いします。

特に、記事の誤り訂正などは「ほかの方も読める記録が残る」ので、掲示板を推奨します。


長い内容など、メールで連絡を取りたい方は以下のアドレスへ。


各ページの下にも1行掲示板がついていますが、このページではそれら全てを集めて表示しています。

特定ページへの内容への意見は、そちらのページで書いていただけるとありがたいです。


また、日付にリンクがある場合は、そのリンクを辿ることで元ページを見ることが出来ます。

(日付にリンクがないものは、このページで書き込まれた意見です)


作者が怠惰なので、反応は遅いかもしれません。


申し訳ありませんが、現在意見投稿をできない状態にしています

【名無し】 「分岐改良」の筆算1段目をさらに前処理にまとめて146クロック39バイト。前処理を以下に変更します LDA #100 ;2 STA >3 ;3 ASL A ;2 STA >0 ;3 LDX #7 ;2 LDA #0 ;2 BCC LOOP ;3/2 ADC >3 ;3 BCC LOOP ;3 (ここからADD:) (2014-08-28 21:29:31)

あきよし】 高速化できそうであれば、メモリ配置などの工夫は有りだと思います。実際、プログラムを高速化したい時はデータ構造から見直すこと多いですし。 (2014-08-28 16:16:53)

あきよし】 ありがとうございます。内容更新しました。 (2014-08-28 16:14:24)

【m.ukai】 変数の格納アドレスを都合よくできれば(たとえばMX,MY は隣接するとか) 短くなりそうです。 (2014-08-27 18:11:27)

【m.ukai】 Z80、間接アドレス指定はレジスタ間接のほうが速いです。あとデータを 256B align させると、LD HL,GAMEPAD; LD B,(HL); DEC L;LD A,(HL);LD (HL),B;DEC L;LD (HL),A; XOR B; AND B; JR Z,END;DEC L;LD D,H;LD E,(HL);INC E; RES 4,E; LD (HL),E; ORG 100H PADHIST: DS 16; BUFPTR: DB 0; PAD_NEW: DB 0; PAD_OLD: DB 0; GAMEPAD: DB 0 で 120 clk かな。自己書き換えを許せばもう少し縮むかも。 (2014-08-27 17:59:56)

あきよし】 高速化・バグ指摘ありがとうございます。ページ追記・修正しました。 (2014-08-24 10:45:13)

あきよし】 美しいプログラムありがとうございます。記事を更新しました。 (2014-08-23 06:18:31)

【名無し】 LENTABLEに並ぶ値を-1して、BNE LOOP2をBPL LOOP2にするのもありですね。 (2014-08-20 21:02:13)

【名無し】 6502の方、LDY LENTABLE-1,XでYにセットされるのはコマンド長なので、これをそのままインデックス値にすると、LDA (0),YとCMP (2),Yが想定より一つ先を参照してしまうと思います。COMTABLEに並んだ値をそれぞれ-1しておくのが策でしょうか。 (2014-08-20 20:51:00)

【名無し】 被除数と商で同じメモリを共用しても良いなら、LDA #>12345 ;2 ASL A ;2 STA >0 ;3 LDA #<12345 ;2 ROL A ;2 STA >1 ;3 LDA #10 ;2 STA >2 ;3 LDA #0 ;2 LDX #16 ;2 LOOP: ROL A ;2 CMP >2 ;3 BCC SHIFT ;3/2 SBC >2 ;3 SHIFT: ROL >0 ;5 ROL >1 ;5 DEX ;2 BNE LOOP ;3/2 で400クロック32バイト(減算あり5回、なし11回)。商は>0,>1、剰余はAに。左詰めの前処理を加えれば軽くなりそうですがとりあえず。 (2014-08-20 20:45:57)

←最近 25 26 27 28 29 30 31 32 33 34 35 過去→

戻る
トップページへ

-- share --

0000

-- follow --




- Reverse Link -