dnjiro’s 9VAe blog

誰でもアニメが作れる無料ソフト9VAeきゅうべえ開発者のブログ

X68000 Z 実機でアプリ開発する方法:ひとコマ解説

X68000 Z 実機で、アプリ開発する方法をまとめます。MicroPython 用SDはこちらX-BASICとMicroPythonの対応、X68K関数表はこちら

ほかの解説動画はこちら

X68000 Z 資料

参考にした記事はこちらです。

X68000 Z ツール入手先

 

X68000 Z アプリ開発用SDカードの作り方

X68000 Z 用SDカードをつくる方法です。FAT32でフォーマットされたSDカードと、DiskExplorer が必要です。Human68K(OS)が起動するSDカードを作りましょう。


音声で解説した動画

  1. DiskExplorer ダウンロード
  2. Lhaplus ダウンロード
  3. ブランクXDFダウンロード
  4. HumanSys ダウンロード
  5. SDカードの直下に「automount.xdf」という名前でいれておく

 

X68000との出会い

lanmaが発展した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フォルダにいれておくと上下左右矢印キーで以前入力した命令を修正して実行できるので、ものすごく便利です。ぜひ入れましょう。

  1. Human68K コマンドで、KEY を実行
  2. U (更新)
  3. 入力は、[KEY.SYS]、(2回目以降は前回作成した key.his )
  4. 出力は、key.his
  5. 処理を開始。次の4つのキーを変更「F」「2」「5」「Ctrl+W同時押し」「Enter」のように押すと設定できます。
    F25 ^W
    F26 ^S
    F27 ^D
    F28 ^E
  6. Enter 2回で終了。KEY.HIS ができます。
  7. KEY.HIS を、\HIS フォルダにコピー。移動でもよいがオリジナルをのこしておくと安心。
  8. 作成した KEY.HIS をSDカードにいれておき、新しいフロッピーのHISフォルダにコピーできるようにしておくと便利です。

 

コマンドパス、LIB、INCLUDE の設定

もう1枚のフロッピー(Bドライブ)にコンパイラーをいれますが、それが使えるようにパスや設定文字列を、Aドライブの autoexec.bat に書きます。

PDFマニュアル(p.56)

    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を複製して以下をいれます。

  1. XCシステムディスク2をダウンロードして、LHAを展開。ブランクXDFにコピーします。CCフォルダに、Cコンパイラがはいっています。
  2. XCシステムディスク修正パッチを展開。MATH.H, MOUSE.H を、INCLUDEフォルダに上書きします。
  3. automount.xdf という名前に変更します。これをBドライブにいれます。

 

アセンブラ、リンカーをAドライブのBINにいれる

  1. HAS.x をダウンロード。Aドライブにいれる Humanフロッピーの BINフォルダの中に、HAS.Xをいれます。
  2. HLK.X をダウンロード。Humanフロッピーの BINフォルダの中に、HLK301.Xをいれ、HLK.Xに名前を変更しておきます。
  3. 空いた領域にソースをいれれば、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
 
XCコンパイラオプション
/Fs アセンブラ生成して終了
/W BASICライブラリを使う
/Y IOCS&DOSコールライブラリを使う
   
 
アセンブラオプション
/u 未定義シンボルを外部参照にする
   
 
リンカーオプション
-l 環境変数lib をライブラリパスにする

 

使い方

  1. mcc test01
  2. mas test01
  3. mlk test01
  4. test01
  5. これで線がひけるはずです。一番下に移動させると終了します

 

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の描画関数がつかえます。すごいので 別の記事にまとめました

  1. 上のZIPをダウンロード。解凍して、XDFファイルにいれる。名前を automount.xdf にするか、X68000Z フォルダにいれて、Bドライブにいれる。
  2. Aドライブで、ed autoexec.bat とし、PATHの最後に b:¥; を追加
  3. B:ドライブの micropyt.x を、python.x にリネームしとくと便利
  4. python で対話モードにはいったら、Ctrl+Dで終了

MicroPython 参考資料

 

<< USBハードディスクイメージをつかった開発 >>

  • 灰色Z初号機は、アップデート 1.3.1 すれば、USBメモリSCSIハードディスクになります。複数のフロッピーにコンパイラーやライブラリを分ける必要がなくなるのでおすすめ。
  • X68000 Z の公式エミュレータマニュアル1.5PseudoSCSI に従って、FAT32USBメモリにハードディスクを作成します(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。エミュレータ起動

  • cd emacs と入力して A:¥emacs フォルダに移動
  • ed emacs.rc  などで、順番に3つのファイルを修正(保存終了は ESC E)
  1. emacs.rc 9行めを "A:¥EMACS¥em_plain.rc" に変更
  2. em_plain.rc 13行めを "A:¥EMACS¥" に変更
  3. 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 のようなリストをつかってライブラリ化しないとリンクできません。
  • X68000makefile の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 の使い方

  1. 上のテキストを makefile という名前で保存します。
  2. 同じフォルダの obj.txt には、main 以外の .o ファイルをすべていれます。この例では「aa.o bb.o cc.o」になります。
  3. サンプルプログラムを作ってみましょう。以下の内容を aa.c という名前で同じフォルダに作りましょう。同様に bb.c, cc.c も作りましょう。
    #include <stdio.h>
    void aa(void){ printf("aa\n"); }
  4. 以下の内容を、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);
    }
    
  5. 同じフォルダで「make.x」を実行すると、まずaa.c, bb.c, cc.c がコンパイルされ、obj.l というライブラリが作られます。その後、main.c がコンパイルされ、エラーがなければ main.x ができます。<注意>makeを実行する前に、date.x, time.x で日付、時刻を合わせておく必要があります。
  6. 「main.x」を実行すると aa bb cc と表示され、キーを押すと終了します。

 

GCC サンプルプログラム

ネット検索すると、次のサイトのソースがわかりやすそう。SHOT68K も参考になりそう。

 

ここで紹介した開発環境で、実際のアプリ開発した記事がこちら(9VAe X68k版)

 

内容:


解説動画の作り方

この記事の解説動画は、フリーソフト9VAeきゅうべえの「ひとコマ」機能で作成しています。

9VAeきゅうべえのダウンロード

上を見るとダウンロード、形の変形、SVGイラストをパーツ化する方法がわかります。

  • 9VAeきゅうべえで、キャプチャー画面に、矢印や説明を加え、ページに「ひとコマ」設定するだけで作れます。
  • FFmpeg を使って Youtube 動画にすることもできます。

 

画面キャプチャ方法

OS
画面キャプチャ方法
保存先
 Windows
クリップボード
 Mac
  • Shift + Command + 4 (ShiftキーはZの左、スペースでウィンドウ指定)
デスクトップ
 Android
  •  電源 + 音量Down
 adbコマンド (開発者向け)
  •  adb shell screencap -p /sdcard/screen.png
     adb pull /sdcard/screen.png
フォトアプリ>
ライブラリ>
Screenshots
 
iPhone / iPad
  •  ホームボタン + 電源ボタン
  • サイドボタン + 音量UP
写真>
アルバム>
スクリーンショット
 Linux Mint
  • Print Screen キー
クリップボード
ファイル
 Amazon Fire
  • 電源 + 音量Down 1秒長押し
  • USBケーブルでPCと接続し、
    設定>接続デバイス>USB>ファイル転送
ピクチャ >
スクリーンショット
 Chromebook
  • Shift + Ctrl + ウィンドウ一覧キー(上の中央のキー)
マイファイル >
ダウンロード
 X68000 Z
 

アニメ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で作成する素材動画

Windows

AviUtl

連番PNG または MP4

Mac/iPhone/iPad

iMovie

MP4 または QuickTime(古いMac)

Android

PowerDirector

GIF または MP4

作り方

 

      • もっと長いアニメを作ることもできます。以下をご覧ください。

9VAeきゅうべえ:長いアニメを作る方法 - Qiita

 

 

9VAeきゅうべえに関する質問