みなさんお元気ですか? 頭はよくまわっても春の陽気で気持ちが
ボケる、そんな桜の舞う季節。今日は大学生でBASIC開発環境を
作っていたフランスのFred氏、その頃に作られたAmigaOSで動作
するPureBasic AmigaOS が、最近オープンソースとなり
一般に公開されています。ライセンス公開条件はLGPLとなっていて
色々な用途で使えるような自由なものです。
68K、これを知ってる人がPureBasicのコミュにはいないので、こちらに
振ってみました。68Kでハック経験のある人には面白いかもしれません。
Download the full version of PureBasic 4.00 (OpenSource)
http://www.purebasic.com/download.php3
Amigaの書庫LZXを解凍するツール
http://xavprods.free.fr/lzx/
AmigaのCPUはモトローラ68000です
http://ja.wikipedia.org/wiki/MC68000
噂レベルでハンドアセンブルで書かれていると聞いて
いたんですが、実際、どこからどこまで信じていいのか、分からなかった
のです。このソースを眺めてみるとすべての命令がハンドアセンブルw
ライセンスLGPL、2Dライブラリ、箱と点の部分抜粋(for 68K)
コード: 全て選択
name "BoxFill", "(x,y,Width,Height)"
flags NoResult
amigalibs _GraphicsBase, a6
params d0_w, d1_w, d2_w, d3_w
debugger 1, _InitCheck
.BoxFill_TEST:
MOVEM.l d2-d3,-(a7)
ADD.w d0, d2
ADD.w d1, d3
CMP.w d0, d2 ; are in the clock order like
BHI _NBF_Ok_X ; requested by RectFill()
EXG d0, d2 ;
_NBF_Ok_X: ;
CMP.w d1, d3 ;
BHI _NBF_Ok_Y ;
EXG d1, d3 ;
_NBF_Ok_Y: ;
MOVEA.l _RastPort(a5), a1 ; Get *RastPort
JSR _RectFill(a6) ; RectFill(rp, x, y, x2, y2) - a1/d0/d1/d2/d3
MOVEM.l (a7)+,d2-d3
RTS
endfunc 1
;---------------------------------------------------------------------------------------
name "Plot", "(x,y)
flags NoResult | InLine
amigalibs _GraphicsBase, a6
params d0_w, d1_w
debugger 2, _InitCheck
MOVEA.l _RastPort(a5), a1 ; Get *RastPort
I_JSR _WritePixel(a6) ; WritePixel(rp, x, y) - a1/d0/d1
endfunc 2