1行掲示板です。情報提供などありましたらよろしくお願いします。
特に、記事の誤り訂正などは「ほかの方も読める記録が残る」ので、掲示板を推奨します。
長い内容など、メールで連絡を取りたい方は以下のアドレスへ。
各ページの下にも1行掲示板がついていますが、このページではそれら全てを集めて表示しています。
特定ページへの内容への意見は、そちらのページで書いていただけるとありがたいです。
また、日付にリンクがある場合は、そのリンクを辿ることで元ページを見ることが出来ます。
(日付にリンクがないものは、このページで書き込まれた意見です)
作者が怠惰なので、反応は遅いかもしれません。
申し訳ありませんが、現在意見投稿をできない状態にしています。
【名無し】 「変数共用」に引き放し法を追加して、(25+22*8+23*8-1+5=)389クロック48バイト。LDA #>12345 ;2 ASL A ;2 STA >0 ;3 LDA #<12345 ;2 ROL A ;2 STA >1 ;3 LDX #10 ;2 DEX ;2 STX >2 ;3 LDA #0 ;2 LDX #16 ;2 PLUS: ROL A ;2 SBC >2 ;3 BCC MINUS_AFTER ;3/2 PLUS_AFTER: ROL >0 ;5 ROL >1 ;5 DEX ;2 BNE PLUS ;3/2 BEQ END ;3 MINUS: ROL A ;2 ADC >2 ;3 BCS PLUS_AFTER ;3/2 MINUS_AFTER: ROL >0 ;5 ROL >1 ;5 DEX ;2 BNE MINUS ;3/2 SEC ;2 ADC >2 ;3 END: (2014-08-28 21:49:03)
【名無し】 「分岐改良」の筆算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)←最近 25 26 27 28 29 30 31 32 33 34 35 過去→