아미가 어셈블리
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