Amiga组装
ASM-一- 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