Amigaアセンブリ
ASM-One- 228 219文字、172バイトのコンパイル(168バイト最適化)
Amigaアセンブリで単一の行を最後にコーディングしてから20年が経ちました。:-)
Amigaは、空白の画面をセットアップするという点でPCよりも少し複雑であったため、できるだけ多くのセットアップと分解を取り除こうとしました。割り込みやマルチタスクを無効にすることはありません。二重のWaitTOFはありません。ビューの置換なし。など。私はこれを最速で最も汚いデモ用に書いたことすらなかったでしょう。これはこれを意味します:
- 悪い習慣です
- 完全に安全ではないかもしれません
- 常に機能するとは限りません
- それらの免責事項があったとしても、おそらく20年間の怠慢されたアセンブリのために愚かな間違いがあります。
...エミュレートされたA500およびA1200でテストされていますが、高速メモリの有無は問いません。標準の実行可能ファイルにコンパイルします。マウスクリックが終了します。
l=$dff080
move.l 4,a6
lea g,a1
jsr -408(a6)
move.l d0,a1
move.l 38(a1),d4
jsr -412(a6)
move.l #c,l
w:btst #6,$bfe001
bne w
move.l d4,l
rts
g:dc.b "graphics.library",0
SECTION d,DATA_C
c:dc 256,512,384,0,-1,-2
少ないゴルフ:
COP1LC equ $dff080
move.l $4, a6 ; ExecBase
lea gfxname, a1
jsr -408(a6) ; OpenLibrary (old, hence no need for clearing d0)
move.l d0, a1
move.l 38(a1), d4 ; store copper list
jsr -414(a6) ; CloseLibrary
; Yeah, if I had a penny for the times I saw that left out
; but I just... can't...
move.l #copper,COP1LC ; write copper list
wait:
btst #6, $bfe001 ; Check mouse click
bne wait
move.l d4, COP1LC ; restore copper list
rts
gfxname:
dc.b "graphics.library", 0
SECTION data, DATA_C
copper:
dc.w $0100, $0200 ; disable bitplanes
dc.w $0180, $0000 ; color 0 = black
dc.w $ffff, $fffe ; end