X68000 Z 実機で、アプリ開発する方法をまとめます。MicroPython 用SDはこちら、X-BASICとMicroPythonの対応、X68K関数表はこちら
ほかの解説動画はこちら。
- X68000 Z 資料
- X68000 Z ツール入手先
- X68000 Z アプリ開発用SDカードの作り方
- X68000との出会い
- lanmaが発展した9VAeきゅうべえ
- エディタED.x の使い方
- 矢印キー設定、キーのカスタマイズ
- コマンドパス、LIB、INCLUDE の設定
- XCコンパイラーフロッピー(XDF) の作り方
- アセンブラ、リンカーをAドライブのBINにいれる
- C サンプルプログラム(マウスで線を引く)
- コンパイル、アセンブル、リンク用バッチファイル
- BASICが起動しない場合
- X68000 Z の画面キャプチャ
- 複数のフロッピーの切り替え
- MicroPython 用フロッピーの作り方
- << USBハードディスクイメージをつかった開発 >>
- MicroEmacs(高機能エディタ)の使い方
- GCC(真理子版) Cコンパイラ
- 解説動画の作り方
X68000 Z 資料
参考にした記事はこちらです。
- X68000 Z 公式サイト(サポート>マニュアル)
- はじめての X68000 Z (note)
- X68000 の開発環境(Qiita)
- X68000 zで音楽を流す(MachiaWorks)
- OhX、OhMZなど
- X68K:IOCS
- iocsコール
- シャープサービスマニュアル
X68000 Z ツール入手先
- DiskExplorer(XDFファイル作成)
- ブランクXDFファイル (出典Twitter)
- X68000 LIBRARY 各種リソース
- C Compiler PRO-68K
- HAS,X(アセンブラ)
- HLK.X(リンカー)
- 使えるSDカード(SDHC 最大32GB FAT32)
- zombie.x(削除ファイル抽出)
X68000 Z アプリ開発用SDカードの作り方
X68000 Z 用SDカードをつくる方法です。FAT32でフォーマットされたSDカードと、DiskExplorer が必要です。Human68K(OS)が起動するSDカードを作りましょう。
- DiskExplorer ダウンロード
- Lhaplus ダウンロード
- ブランクXDFダウンロード
- HumanSys ダウンロード
- SDカードの直下に「automount.xdf」という名前でいれておく
X68000との出会い
- X68000は、筆者がはじめてアニメを作ったパソコンです。lanma.x というベクトルアニメエディタを自作し、ASCII や 電脳倶楽部で発表しました。下は当時作成したアニメです。登場人物は実在し、めちゃうけました。
lanmaが発展した9VAeきゅうべえ
- lanma は線、文字、音でしたが、そこにポリゴン塗り潰しやグラデーションを追加したものが、モーショングラフィックスアプリ9VAeです。Macやスマホにも移植しました。これを X68000Z でも動かしたい。
- ところが、9VAeのプロジェクトは数10MBあり、X68000 Z のフロッピーディスク(1.2MB)にはいらないことを発見。あきらめていたら・・
- 入手後5ヶ月で1GBのハードディスクが使えるようになりました!(瑞起からのお知らせ アップデートV1.3.1)すごーい!そこで、X68000 Z に9VAeを再移植。その開発ノウハウをまとめました。移植の詳細記事はこちら
本記事の前半は、フロッピーディスクでの開発方法。後半は1GBハードディスクでの開発方法です。実機でプログラム開発するならハードディスクイメージの導入をお勧めします。
エディタED.x の使い方
Human68Kから ed と入力して起動します。標準のテキストエディタです。PDFマニュアル(p.296)
EDの機能 | キー操作 |
終了 | ESC+Q |
上書き保存 | ESC+H |
全部保存して終了 | ESC+E |
ファイルを開く | ESC+F |
ファイルを閉じる | ESC+K |
ファイル切り替え | ESC+AまたはD |
矢印キー設定、キーのカスタマイズ
矢印キーでHuman68K で以前入力したコマンドを再入力できるようする設定。最初からいれておいてほしい。
key.his を HISフォルダにいれておくと上下左右矢印キーで以前入力した命令を修正して実行できるので、ものすごく便利です。ぜひ入れましょう。
- Human68K コマンドで、KEY を実行
- U (更新)
- 入力は、[KEY.SYS]、(2回目以降は前回作成した key.his )
- 出力は、key.his
- 処理を開始。次の4つのキーを変更「F」「2」「5」「Ctrl+W同時押し」「Enter」のように押すと設定できます。
F25 ^W
F26 ^S
F27 ^D
F28 ^E - Enter 2回で終了。KEY.HIS ができます。
- KEY.HIS を、\HIS フォルダにコピー。移動でもよいがオリジナルをのこしておくと安心。
- 作成した KEY.HIS をSDカードにいれておき、新しいフロッピーのHISフォルダにコピーできるようにしておくと便利です。
コマンドパス、LIB、INCLUDE の設定
もう1枚のフロッピー(Bドライブ)にコンパイラーをいれますが、それが使えるようにパスや設定文字列を、Aドライブの autoexec.bat に書きます。
ed autoexec.bat
PATH A:..........
の最後に ;b:¥(半角)などを追加します。下は、Cコンパイラ用のパスです。さらに、set lib, set include も追加します。
PATH A:..........;B:¥cc;
set lib=b:¥lib
set include=b:¥include
- X68000Zの電源ををOFF/ON して再起動。これでBドライブの cc が起動できるようになります。
- lib はライブラリの場所の設定で、リンカー用。include はコンパイラ用の定義です
- autoexec.bat は、Windowsの元の MSDOS からあって、起動時に最初に実行されるファイルです。
XCコンパイラーフロッピー(XDF) の作り方
ブランクの XDFを複製して以下をいれます。
- XCシステムディスク2をダウンロードして、LHAを展開。ブランクXDFにコピーします。CCフォルダに、Cコンパイラがはいっています。
- XCシステムディスク修正パッチを展開。MATH.H, MOUSE.H を、INCLUDEフォルダに上書きします。
- automount.xdf という名前に変更します。これをBドライブにいれます。
アセンブラ、リンカーをAドライブのBINにいれる
- HAS.x をダウンロード。Aドライブにいれる Humanフロッピーの BINフォルダの中に、HAS.Xをいれます。
- HLK.X をダウンロード。Humanフロッピーの BINフォルダの中に、HLK301.Xをいれ、HLK.Xに名前を変更しておきます。
- 空いた領域にソースをいれれば、2枚のSDカードで実機開発ができます。
C サンプルプログラム(マウスで線を引く)
ここまでできたら、マウスで画面に絵をかくプログラムを作ってみましょう。以下を ed で作成し、 test01.c という名前で、Aドライブ直下に保存しましょう。
test01.c
#include <stdlib.h> void main(){ int x=0,y=0,xx,yy; screen(1,2,0,1);
printf("Draw line with Mouse. Exit=Move to bottom\n"); for(;y<500;){ mspos(&xx,&yy); line(x,y,xx,yy,xx%256,-1); x=xx;y=yy; } screen(2,0,1,0); }
#include < > | < >のファイルの中身をいれる |
stdlib.h | Cの標準関数の定義がはいってる |
void main | voidは値を返さない。main からプログラムがスタート |
printf | テキスト画面に文字列を表示。¥nは改行 |
for(;y<500;) | yが500より小さい間、繰り返す |
screen(1,2,0,1) | 256色、512x512、グラフィックスON |
screen(2,0,1,0) | 高解像度テキスト、グラフィックスOFF |
line(x,y,xx,yy,xx%256,-1) | xx%256 は色、-1は実線(0にすると透明) |
mspos(&xx,&yy) | マウス座標の取得、xx,yyに値がはいる |
マウスを動かすと画面にいろんな色の線が引けます。上から500ドット以下に移動すると終了します。x-basicの関数を使っています。
コンパイル、アセンブル、リンク用バッチファイル
プロは makefile をつくるところですが、ファイル1個なので、バッチファイルが簡単。%1のところに引数がはいります。ed で以下のファイルをソースと同じ場所につくります。これを作っておくとオプションを入力しなくてもよいので便利。
mcc.bat :コンパイル
cc /Fs /W /Y %1.c
mas.bat:アセンブル
has /u %1.s
mlk.bat: リンク
hlk -l clib.l baslib.l doslib.l floatfnc.l iocslib.l %1.o
/Fs | アセンブラ生成して終了 |
/W | BASICライブラリを使う |
/Y | IOCS&DOSコールライブラリを使う |
/u | 未定義シンボルを外部参照にする |
-l | 環境変数lib をライブラリパスにする |
使い方
- mcc test01
- mas test01
- mlk test01
- test01
- これで線がひけるはずです。一番下に移動させると終了します
BASICが起動しない場合
- autoexec.bat で、PATH に b:¥basic2; を追加すれば、コマンドで、basic と入力して x-basic が起動できるはずですが、GPIO エラーが出ました。これは、BASIC2フォルダのなかの basic.cnf の最後の行頭に # をつけてコメントアウトすれば、起動できるようになります。
ed b:¥basic2¥basic.cnf
#FUNC = GPIB とする
X68000 Z の画面キャプチャ
エミュレータ(XM6)で実行し、Windowsでキャプチャするとよいです。
複数のフロッピーの切り替え
- SDカード直下の「X68000Z」フォルダに複数の XDF ファイルをいれておくと、起動時にどのXDFを使うか指定できます。X68000 と Z の間にスペースをいれてはいけません。
- フロッピースロットの下のボタンを2回おすと、XDFの切り替えができます。
MicroPython 用フロッピーの作り方
X68000の描画関数がつかえます。すごいので 別の記事にまとめました
- 上のZIPをダウンロード。解凍して、XDFファイルにいれる。名前を automount.xdf にするか、X68000Z フォルダにいれて、Bドライブにいれる。
- Aドライブで、ed autoexec.bat とし、PATHの最後に b:¥; を追加
- B:ドライブの micropyt.x を、python.x にリネームしとくと便利
- python で対話モードにはいったら、Ctrl+Dで終了
MicroPython 参考資料
<< USBハードディスクイメージをつかった開発 >>
- 灰色Z初号機は、アップデート 1.3.1 すれば、USBメモリがSCSIハードディスクになります。複数のフロッピーにコンパイラーやライブラリを分ける必要がなくなるのでおすすめ。
- X68000 Z の公式エミュレータマニュアル1.5PseudoSCSI に従って、FAT32のUSBメモリにハードディスクを作成します(Blackモデルもこの作業が必要みたい。)1GB (SCSIHDD.HDS) を選ぶとよいです(81Mは当時の容量)
- USBメモリをさして起動するとAドライブになります。
- フロッピースロット0がBドライブになるので、本記事前半のファイルをBドライブからAドライブにコピーするとよいです。copyall でフォルダをまるごとコピーできます(copyall b:¥フォルダ a:¥)。
- DiskExplorer をつかえば、パソコン上でハードディスクイメージにファイルをコピーできます(プロファイル「Human68k HDD SCSI」 で開く)
コピー先 A: | コピー元 B: | 内容 |
sys | sys¥opmdrv3.x | OPMDRV3 新しいゲームから取得 |
his | his¥key.his | コマンドライン矢印キー(上記) |
bin | bin¥micropyt.x | MicroPython |
bin | bin¥has.x | アセンブラ |
bin |
bin¥hlk.x bin¥lk.x |
リンカー |
cc | cc フォルダ | XCコンパイラー copyall b:¥cc a: |
include | include フォルダ | インクルードファイル |
lib | lib フォルダ | ライブラリ |
¥ | mcc.bat, mas.bat, mlk.bat |
開発用バッチ (make を使うなら不要) |
bin | make.x | ビルドツール、こちらから入手 |
bin | bin¥ar.x | ライブラリ作成 |
bin | ls.x, rm.x, touch.x | unixツール、こちらから入手 |
bin | grep.x | 検索ツール、こちらから入手 |
bin | zombie.x | 削除ファイル、フォルダの復元 |
emacs | em_r5b | エディタ。コピーしてemacsにリネーム |
gcc | gcc142 | gccコンパイラ。コピーしてgccにリネーム |
include | doscall.equ |
copy a:¥include¥doscall.mac a:¥include¥doscall.equ コピー後、FILES, NFILES の先頭の_を削除 |
SCSIハードディスク用 AUTOEXEC.BAT
Aドライブの autoexec.bat を、ed.x で編集して、パスを追加します。
ed a:¥autoexec.bat
PATHの後ろにコンパイラ用のパス、set lib, set include など を追加します。
PATH A:...省略.....;a:¥cc;a:¥bc;a:¥EMACS;a:¥gcc;
set lib=a:¥lib
set include=a:¥include
set ESHELL=command.x
set SLASH=¥
set GCC_OPTION=+
これでSDフロッピーディスクなしで実機でプログラム開発ができるようになります。
ESHELL, SLASHは、MicroEmacsエディタからエラーにジャンプするための設定。GCC_OPTION=+は GCC で //コメントが使えるようにする設定です。
ハードディスクイメージをPCで編集(DiskExplorer)
- USBメモリの ハードディスクイメージ「拡張子.hds」は、フロッピー作成に使った DiskExplorer で同じ編集ができます。.hdsファイルは DiskExplorerで開くよう設定しておくとよいでしょう。
- プロファイルを「Human68k HDD SCSI」(一番下)にして開きます。ファイルの中が見えると、ドラッグ&ドロップでファイルを出し入れ、右ボタンで名前の修正、削除もできます。
つかえない名前(pcm,opm,nul...)
DiskExplorer でつぎの名前のフォルダ、ファイルを作成すると移動も削除もできなくなります。使ってはいけません。
pcm opm midi clock nul lpt con prn aux aux0 aux1 aux2 aux3 aux4 aux5
MicroEmacs(高機能エディタ)の使い方
1GBハードディスクなら、MicroEmacs と GCC が同時に入れられます。
- MicroEmacsこちらからダウンロード、LHAで展開したフォルダ(em_r5b)を、ハードディスク直下にコピーし、EMACS に名称変更します
1GBハードディスクを X68000 Z の USB に差し込んで電源ON。エミュレータ起動
- emacs.rc 9行めを "A:¥EMACS¥em_plain.rc" に変更
- em_plain.rc 13行めを "A:¥EMACS¥" に変更
- em_dump.rc 13行めを "A:¥EMACS¥" に変更
- 詳細な説明は install.doc 。dired は設定しなくてもよいです(linuxツールが必要)。
MicroEmacsの機能 | キー操作 |
終了 | Ctrl+X Ctrl+C |
上書き保存 | Ctr+X Ctrl+S |
ヘルプ | HELP キー |
中止 | Ctrl+G |
ファイルを開く |
Ctrl+X Ctrl+F スペース または TAB で補完 |
バッファ切り替え | FN2 |
ウィンドウ分割 | Ctrl+X 2 |
ウィンドウを閉じる | Ctrl+X 0 または 1 |
ウィンドウ切り替え | Ctr+X o または p |
Shell バッファ | ESC x shell (Shift+FN10) |
ビルド |
shell の中で make |
エラー箇所へジャンプ |
エラー行で ESC x tag-jump (Shift+FN8) |
キーに割り当てられた機能をみる |
ESC x describe-key でキーを押す |
- MicroEmacs を使うと、Shellバッファの中で make を行い、発生したエラーから、エラー箇所を読み出せます。●makeを実行するまえに、date, time 命令で日付、時刻をあわせておくこと。
- ウィンドウを2分割し、複数のファイルを同時編集できます
- キー割り当ては、emacs¥custom¥keybind.el に書かれてます
- シフト+F9キーで、メニューが表示されます
- fgrep.el を追加すると複数ファイルから文字列検索できます。
GCC(真理子版) Cコンパイラ
- IOCSLIB.H を修正しないと、エラーが出ます。修正はこちら
- DOSCALL.EQU は、DOSCALL.MAC をコピーし、FILES, NFILES の行頭の_を削除します(そうしないと illegal relative error が出ます。情報はこちら(9))
- シャープのXCよりも高性能なCコンパイラーです。次のような違いがあります。
シャープXC |
GCC(真理子) | メモ |
X-BASIC から C にコンパイルできる。 X-BASIC で作るとデバッグが簡単 |
できない | X-BASIC |
XCより実行速度が速い エラーチェックが賢い |
性能 | |
コメントは /**/ のみ |
autoexec.bat に以下を入れれば、 コメントに // が使える set GCC_OPTION=+ |
コメント |
libgcc.a のリンクが必要 | ライブラリ | |
-cpp-stack=300000 -cc1-stack=300000 |
スタック増加 | |
/Gp2000 | シンボル増加 |
GCC / XC 用 Makefile サンプル
- main.c, aa.c, bb.c, cc.c 4つのファイルから main.x を作る例です
- X68K関数は、X-BASICで動作確認し XCで C に変換したものを使えると便利なので XCの lib, include フォルダをそのまま利用してます。
- GCC 以外に、make.x, ar.x, has.x, hlk.x が必要。また、次の3つのコピーが必要でした。(doscall.equ, has.x, hlk.x)
copy a:¥include¥doscall.mac a:¥include¥doscall.equ copy a:¥bin¥has.x a:¥bin¥as.x copy a:¥bin¥hlk.x a:¥bin¥lk.x
- malloc などヒープサイズを増やすには、-z-heapオプションをつけてGCCでリンクまで行う必要があります。サイズが大きいファイルをコンパイルするには、-cc1-stack. -ccp-stack を増やす必要があります。リンク数が多いと、obj.txt のようなリストをつかってライブラリ化しないとリンクできません。
- X68000 の makefile の1行の長さは、今の makefileより短いです。後ろの文字が無視されるので、動作がおかしい場合1行が長すぎるせいかもしれません 。
CC = GCC CFLAGS = -c -cc1-stack=300000 -cpp-stack=300000 -Wid-clash-33 -fstrength-reduce -fomit-frame-pointer -fno-defer-pop -Wall -O CFLAGH = -z-heap=3000000 -cc1-stack=300000 -cpp-stack=300000 -Wid-clash-33 -fstrength-reduce -fomit-frame-pointer -fno-defer-pop -Wall -O AS = HAS AFLAGS = /u LFLAGS = a:\lib\clib.l a:\lib\baslib.l a:\lib\doslib.l a:\lib\floatfnc.l a:\lib\iocslib.l a:\lib\libgcc.a #CC = CC #XC #CFLAGS = /Fc /W /Y /Gp5000 /Ga5000 #CFLAGH = /W /Y /Gp5000 /Ga5000 SOURCES = aa.c bb.c cc.c #...main以外のソース OBJECTS = $(SOURCES:.c=.o) TARGET = main.x ##### 作成ルール %.o :: %.c @ ECHO $(CC) $< @ $(CC) $< $(CFLAGS) -o $@ %.o :: %.s @ ECHO $(AS) $< @ $(AS) $< $(AFLAGS) -o $@ ###### all: $(TARGET) $(TARGET): obj.l main.c $(CC) $(CFLAGH) main.c obj.l $(LFLAGS) obj.l: $(OBJECTS) ar /i obj.txt obj.l clean: del /Y *.o del $(TARGET) #### インクルードファイルがある場合 #aa.o: aa.h
makefile の使い方
- 上のテキストを makefile という名前で保存します。
- 同じフォルダの obj.txt には、main 以外の .o ファイルをすべていれます。この例では「aa.o bb.o cc.o」になります。
- サンプルプログラムを作ってみましょう。以下の内容を aa.c という名前で同じフォルダに作りましょう。同様に bb.c, cc.c も作りましょう。
#include <stdio.h>
void aa(void){ printf("aa\n"); } - 以下の内容を、main.c という名前でいれましょう。main() という関数から実行がはじまります。aa(); bb(); cc(); で上の関数を読み出します。b_inkeyS はキー入力待ちの関数です。
#include <basic0.h>
void main(void) { char ky[258]; b_init(); aa(); bb(); cc(); b_inkeyS(ky); b_exit(0); } - 同じフォルダで「make.x」を実行すると、まずaa.c, bb.c, cc.c がコンパイルされ、obj.l というライブラリが作られます。その後、main.c がコンパイルされ、エラーがなければ main.x ができます。<注意>makeを実行する前に、date.x, time.x で日付、時刻を合わせておく必要があります。
- 「main.x」を実行すると aa bb cc と表示され、キーを押すと終了します。
GCC サンプルプログラム
ネット検索すると、次のサイトのソースがわかりやすそう。SHOT68K も参考になりそう。
ここで紹介した開発環境で、実際のアプリ開発した記事がこちら(9VAe X68k版)
内容:
- X68000 Z 資料
- X68000 Z ツール入手先
- X68000 Z アプリ開発用SDカードの作り方
- X68000との出会い
- lanmaが発展した9VAeきゅうべえ
- エディタED.x の使い方
- 矢印キー設定、キーのカスタマイズ
- コマンドパス、LIB、INCLUDE の設定
- XCコンパイラーフロッピー(XDF) の作り方
- アセンブラ、リンカーをAドライブのBINにいれる
- C サンプルプログラム(マウスで線を引く)
- コンパイル、アセンブル、リンク用バッチファイル
- BASICが起動しない場合
- X68000 Z の画面キャプチャ
- 複数のフロッピーの切り替え
- MicroPython 用フロッピーの作り方
- << USBハードディスクイメージをつかった開発 >>
- MicroEmacs(高機能エディタ)の使い方
- GCC(真理子版) Cコンパイラ
- 解説動画の作り方
解説動画の作り方
この記事の解説動画は、フリーソフト9VAeきゅうべえの「ひとコマ」機能で作成しています。
9VAeきゅうべえのダウンロード
- Android / Chromebook:9VAeきゅうべえAndroid版、9VAeDangla
- iPad / iPhone:9VAeDanga (Apple)、9VAePro (Apple)
- Win / Mac / Linux:無料ソフトでアニメを作ってみよう - Qiita
- Amazon Fire : 9VAeきゅうべえFire版 (Amazon)
- 9VAeのボタン説明、メニュー/キー
上を見るとダウンロード、形の変形、SVGイラストをパーツ化する方法がわかります。
- 9VAeきゅうべえで、キャプチャー画面に、矢印や説明を加え、ページに「ひとコマ」設定するだけで作れます。
- FFmpeg を使って Youtube 動画にすることもできます。
画面キャプチャ方法
|
||
|
||
|
ライブラリ> Screenshots |
|
|
|
アルバム> スクリーンショット |
|
ファイル |
|
|
スクリーンショット |
|
|
ダウンロード |
|
|
アニメGIF、動画出力
- 「ファイルメニュー>アニメGIF出力」または「動画出力」で、好きなサイズのアニメGIF または MP4動画 が作成できます。
Win / RaspberryPi / Linux版 でMP4動画を作るには FFmpeg が必要。Youtube解説 - スマホの場合、端末内の「9VAe」フォルダの中に出力されます。フォトアプリで、「端末内の写真>9VAe」で見ることができます。
- アニメGIFは、背景を透明にできます。音がいれられません。
- MP4動画には音が入れられます。Youtubeに投稿できます。Youtubeに投稿する場合、1秒30コマ、高さ720 または 1080 で出力するとよいでしょう。
9VAeをつかえば素材動画が作れる
- 9VAeきゅうべえを使えば、オリジナルの素材動画が簡単に作れます。
- Openclipart や FreeSVG などフリーのSVGイラストをつかって動くキャラクタが作れます。
- 動画編集ソフトで動画に合成できます。
OS |
無料動画ソフト |
9VAeで作れる素材 |
---|---|---|
MP4 連番PNG または MP4 |
||
MP4 MP4 |
||
PowerDirector |
MP4 GIF または MP4 |
作り方
9VAeきゅうべえに関する質問
- 9VAeに関する質問(Yahoo知恵袋)
- よくある質問(Qiita)
- 本記事の文章、図、アニメは複製自由です。教材、解説記事にご利用ください。