Skip to the content
2 layers137 × 140.7 mmX1 SD, the printed circuit board in 3D

X1、X1turboでSD-CARDからのアプリケーション起動、BASICなどのアプリケーションからSD-CARDへのロード、セーブを実現するものです

Size
137 × 140.7 mm
Copper layers
2
Thickness
1.6 mm
Parts
40
Nets
105
Pads
465
Tracks, vias
2,040, 65
Pours
2
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
26 Sep 2023
Updated
23 Jan 2026

Overview

X1 SD is an open-source printed circuit board by yanataka60, from the yanataka60/X1_SD repository on GitHub, published under the MIT licence. It is a 2-layer board of 137 × 140.7 mm with 40 parts on 105 nets, routed with 2,040 tracks and 65 vias.

It is built around the 74LS27P-E, 74LS273PC and 74LS32SC, with the 74LS04PC, 74LS10PC and 74LS139PC among its other parts. Its parts include 14 capacitors, 14 ICs, 6 connectors and 2 resistors. It belongs with the AVR (ATmega, ATtiny) boards of this library.

Main components

7

README

README.md

SHARP X1、X1turboにSD-CARDからロード、セーブ機能

X1_SD

 X1、X1turbo、X1turboZでSD-CARDからのアプリケーション起動とBASICなどのアプリケーションからSD-CARDへのロード、セーブを実現するものです。

 電源ONで起動するSD対応LauncherからはF又はLコマンドでSDからアプリケーションをLOAD実行ができます。

 LOAD実行範囲は、0000h~FF1Fhです。アプリケーション、ゲームを起動させるにはほぼ問題ないと思います。

 起動出来るのは、1段でロードできるCMTアプリケーションのみです。多段ロードで起動するCMTアプリケーションには対応していません。

 アプリケーション中でのSD-CARDとのロード、セーブについては、アプリケーションごとにSD-CARD対応化を行う必要があり、現在対応できているものは以下のとおりです。

アプリケーション名掲載誌
BASIC CZ-8CB01
S-OS SWORD TAPE版Oh!MZ '86/2月号 '87/3,'89/2再掲載
TTLインタプリタOh!MZ '84/10月号
EDAS for X1月刊I/O '84/6月号
エディタ・アセンブラ渡辺英行・沼倉 均共著「マシン語プログラミング入門」
Stellarコンパイラ渡辺英行、高橋秀樹共著「X1ハイテックファイル」

 X1turbo、X1turboZで利用するときは、RESOLUTIONスイッチを「STANDARD」にしてください。

 X1_SDはX1用アプリケーションを対象としており、X1_SD LauncherもX1用BASICからMONITOR部分を切り出して利用しています。

 なお、Arduino、ROMへ書き込むための機器が別途必要となります。

回路図

X1_SD X1_SD

部品

番号品名数量備考
J2、J3のいずれか
J2Micro_SD_Card_Kit1秋月電子通商 AE-microSD-LLCNV (注1)
J3MicroSD Card Adapter1Arduino等に使われる5V電源に対応したもの (注3)
J42x22Pinコネクタ1秋月電子通商 PH-2x40SGなど 拡張スロットの無いCZ-800に接続するときに必要です
J52x25Pinコネクタ1秋月電子通商 PH-2x40SGなど CZ-801に接続するときに必要です
J61x2Pinコネクタ1秋月電子通商 PH-1x40RG(2)など
R1、R21kΩ2
U174LS041
U274LS301
U374LS101
U4、U774LS272
U5、U874LS2732
U6、U974LS322
U1074LS1391
U1174LS5411
U1282551
U1327512/27C512相当品1
U14Arduino_Pro_Mini_5V1Atmega328版を使用 168版は不可。(注2)
C1、C3-C14積層セラミックコンデンサ 0.1uF6
C2電解コンデンサ 16v100uF1
S13Pスライドスイッチ1秋月電子通商 SS12D01G4など
ピンヘッダ2Pin分Arduino_Pro_MiniにはA4、A5用のピンヘッダが付いていないため別途調達が必要です 秋月電子通商 PH-1x40SGなど
ピンソケット(任意)26Pin分Arduino_Pro_Miniを取り外し可能としたい場合に調達します 秋月電子通商 FHU-1x42SGなど
2.54mmピッチ2x25Pinフラットケーブル1拡張スロットの無いCZ-800、CZ-801に接続するときに必要です(注4)

   注1)秋月電子通商 AE-microSD-LLCNVのJ1ジャンパはショートしてください。

   注2)Arduino Pro MiniはA4、A5ピンも使っています。

   注3)Arduino等に使われる5V電源に対応したMicroSD Card Adapterも正しく信号を繋げば使えるとご報告いただきました。

   注4)拡張スロットの無いCZ-800に接続するときには本来2.54mmピッチ2x22Pinフラットケーブルですが、手に入りにくいので2.54mmピッチ2x25Pinフラットケーブルでも接続できます。CZ-801の接続には2.54mmピッチ2x25Pinフラットケーブルが必要です。

MicroSD Card Adapterを使う

J3に取り付けます。

MicroSD Card Adapterについているピンヘッダを除去してハンダ付けするのが一番確実ですが、J3の穴にMicroSD Card Adapterをぴったりと押しつけ、裏から多めにハンダを流し込むことでハンダ付けをする方法もあります。なお、この方法の時にはしっかりハンダ付けが出来たかテスターで導通を確認しておいた方が安心です。

ハンダ付けに自信のない方はJ2の秋月電子通商 AE-microSD-LLCNVをお使いください。AE-microSD-LLCNVならパワーLED、アクセスLEDが付いています。

MicroSD Card Adapter1

MicroSD Card Adapter2

MicroSD Card Adapter3

ROMへの書込み

 まず、BASIC CZ-8CB01からIOCS(0000h~149Fh)を抜き出し、バイナリファイルとして保存します。

 CZ-8FB01 V10、CZ-8FB01 V20も大丈夫だとは思いますが、検証していません。なお、X1turbo用BASICは使えません。

 DumpList Editorを使ってWav又はtapファイルを読み込み、「マシン語入力に送る」を実行します。

 マシン語の14A0h以降を削除します。(0000h~149Fhのマシン語にします)

IOCS_1

 「ファイル書出し」の「BIN(mot)ファイル書き出し(ヘッダ無し)(for他汎用)」を選択して「IOCS.bin」という名前で保存します。

IOCS_2

 保存した「IOCS.bin」の後ろにバイナリエディタ等を使ってBOOTフォルダ内の「boot.bin」を付け加えます。0000h~17F6hのファイルとなるはずです。

 次にファイルの先頭に以下に示す32Byteのヘッダを付加します。0000h~1816hのファイルとなります。

 [0000] 01 58 31 5F 53 44 20 42 4F 4F 54 20 20 20 20 20

 [0010] 20 20 F7 17 00 00 00 00 20 20 20 20 20 20 00 00

IOCS_3

 出来上がったら「X1_SD_BOOT.X1T」という名前で保存します。

 「X1_SD_BOOT.X1T」をROMライター(TL866II Plus等)を使って27512に書き込んでください。

ROMにBOOT LOADERを書き込む方式の追加

 前述のBASICからMONITORを抜き出してROMに書き込む方式は、自分が所有しているBASICから抜き出してROMに書き込むには問題が無いのですが、書き込み済みROMの配布はSHARPの著作権があるので出来ません。

 そこで前述で作成した「X1_SD_BOOT.X1T」をSD-CARDから読み込み起動するプログラムをROMに書き込む方式を追加しました。

 前述「ROMへの書込み」の手順により作成した「X1_SD_BOOT.X1T」をそのファイルネームのままでSD-CARDに保存してください。

 次の手順でROMに書き込んだ「BOOT_LOADER.X1T」によりSD-CARD上の「X1_SD_BOOT.X1T」が自動的に読み込まれます。

BOOT LOADERをROMに書き込む

 BOOT_LOADERフォルダにある「BOOT_LOADER.X1T」をROMに書き込みます。

Arduinoプログラム

 Arduino IDEを使ってArduinoフォルダ内のX1_SD.inoを書き込みます。

 SdFatライブラリを使用しているのでArduino IDEメニューのライブラリの管理からライブラリマネージャを立ち上げて「SdFat」をインストールしてください。

 「SdFat」で検索すれば見つかります。「SdFat」と「SdFat - Adafruit Fork」が見つかりますが「SdFat」のほうを使っています。

注)Arduinoを基板に直付けしている場合、Arduinoプログラムを書き込むときは、X1本体とは接続を外し、74LS04を外したうえで書き込んでください。

接続

拡張スロットが使える機体(拡張スロットのついたCZ-800、CZ-804、X1turbo等)の拡張スロットに差し込む

 X1_SD基板を拡張スロットに挿し込みます。

CZ-804 CONNECT

拡張スロットを装着していないCZ-800への接続

 X1本体のカバーを開けると拡張スロットを装着するためのコネクタがあるので以下の補助基板を挿し込むことでX1_SD基板とフラットケーブルで接続できるようになります。

CZ-800_EX_1 CZ-800_EX_2

補助基板回路図

X1_SD X1_SD

部品
番号品名数量備考
J22x22Pinコネクタ1秋月電子通商 PH-2x40SGなど
2.54mmピッチ2x22Pin又は2.54mmピッチ2x25Pinフラットケーブル1

J2の2x22Pinコネクタは基板裏側にハンダ付けします。

 本来2x22Pinのフラットケーブルでの接続ですが、手に入りにくいので2x25Pinフラットケーブルでも接続が可能です。

CZ-800_CONNECT_1

 補助基板はこのように挿し込みます。

CZ-800_CONNECT_2 CZ-800_CONNECT_3 CZ-800_CONNECT_4

 X1_SD基板側は、「for CZ-800」と表記のある2x22Pinコネクタにフラットケーブルを接続します。X1_SD基板への+5Vはフラットケーブルから供給されるので外部から供給する必要はありません。

CZ-800_CONNECT_5

外部拡張ユニット接続用拡張端子しかない機体(CZ-801等)に接続する場合

 拡張端子とX1_SDを2x25Pinフラットケーブルで接続します。

CZ-801_CONNECT_1

 拡張端子には+5Vが出ていないので外部からX1_SD基板へ+5Vを供給する必要があります。私は、プロッタプリンタのコネクタから取りました。右から3番目と4番目のピンが+5Vです。

CZ-801_CONNECT_2

 X1_SD基板側は、「for CZ-801C」と表記のある2x25Pinコネクタにフラットケーブルを接続します。本体から取り出した+5VはコネクタJ6に挿し込みます。J6は2Pinとも+5Vですのでどちらに挿し込んでも構いません。

CZ-801_CONNECT_3

 本体側の拡張端子にフラットケーブルを接続するときにはケーブルの折り返しが上に来るように接続してください。

CZ-801_CONNECT_4

 このように折り返しを下にして接続すると接触不良で正常に動作しないことがあります。

CZ-801_CONNECT_5

SD-CARD

 出来れば8GB以下のSDカードを用意してください。

 ArduinoのSdFatライブラリは、SD規格(最大2GB)、SDHC規格(2GB~32GB)に対応していますが、SDXC規格(32GB~2TB)には対応していません。

 また、SDHC規格のSDカードであっても32GB、16GBは相性により動作しないものがあるようです。

 FAT16又はFAT32が認識できます。NTFSは認識できません。

 ルートに置かれたX1Tファイルのみ認識できます。(X1T以外のファイル、フォルダも表示されますがLOAD実行の対象になりません)

 ファイル名は「.X1T」を除いて32文字まで、ただし半角カタカナ、及び一部の記号はArduinoが認識しないので使えません。パソコンでファイル名を付けるときはアルファベット、数字および空白でファイル名をつけてください。

X1Tファイルの作成

 X1エミュレータ用CMTファイルはTAP形式が一般的ですが、X1_SDではマシン語にヘッダ(FCB)を付加したバイナリファイルを扱い、拡張子をX1Tとしています。

 ヘッダ(FCB)の構造

アドレス内容説明
00モード01:マシン語,02:BASIC,03:ASC,04:その他
01~0Dファイル名13文字分
0E~10拡張子3文字
11パスワード無指定時は20h
12~13データ長
14~15データ先頭アドレス
16~17実行アドレス
18~1Cファイル作成年月日無指定時は20h
1D~1Fシステム格納アドレスCMT,X1_SDの場合は00h,00h,00h

X1T作成例(サンダーフォースをX1Tファイル化)

 1) DumpListEditorを起動し、対象マシンとして「X1」を選択

 2)サンダーフォースのWav又はTapファイルをDumpListEditorにドロップする。

X1T_1

 3)「マシン語入力に送る」をクリックするとマシン語入力画面に切り替わる。

X1T_2

 4)ここで表示される以下の3つの情報をメモします。

// PROG AREA = 0000-FEFF

// PROG SIZE = FF00 (65280BYTE)

// EXEC ADRS = 0000

 5)「ファイル書出し」の「BIN(mot)ファイル書き出し(ヘッダ無し)(for他汎用)」を選択して適当な名前(例 THUNDER FORCE.bin)で保存します。

X1T_3

 6)保存したファイル(例 THUNDER FORCE.bin)をバイナリエディタ等で開き、先程のFCBの構造に基づいて32Byteのヘッダを付加し、拡張子をX1Tとし適当な名前(例 THUNDER FORCE.X1T)を付けて保存します。

X1T_4

 7)SDカードにコピーします。

 8)他のアプリケーションも同様にX1TファイルにしてSDカードにコピーしてください。ただし、起動可能なアプリケーションは機械語で1段ロードの物に限ります。

 9)雑誌等に掲載されたアプリケーション、ゲーム等でIOCSを必要とするものはIOCSも含めたX1Tファイルを作るか、X1_SD対応BASIC CZ-8CB01を起動してから当該アプリケーション、ゲームを起動してください。

操作方法

 電源ON、又はリセットでX1_SD Launcherのコマンド入力待ちになるので以下のコマンドが使えます。

 X1のMONITORで使えるD,M,G,Tコマンドは同じように使えます。

 X1の起動プロセスは、FDD、ROM、CMTの順です。X1_SDを装着したままCMTからLOADしたい場合は、Cキーを押したままで電源ON、又はリセットしてください。

 以下、SD-CARD内のファイルに付けられるファイル名をDOSファイル名、X1T形式ファイルのFCB内ファイル名をFCBファイル名とします。

L DOSファイル名[CR]

 DOSファイル名で指定したバイナリファイルをLOADして実行します。

 「.X1T」は省略可能です。

 LとDOSファイル名の間に空白が有っても無くても構いません。また、空白はいくつあっても構いません。

 LOAD実行可能範囲は0000h~FF1Fhです。

 なお、LOADするアプリケーションのLOAD範囲外のメインRAMは最少のSDアクセスルーチン(FF20h~FF7Dh)以外ゼロ埋めクリアされます。Launcherも消去されるのでIOCSを使用するアプリケーションをLOADしたい場合はIOCSを連結してLOADしてください。

例)

*L TEST[CR]

*L TEST.x1t[CR]

*LTEST[CR]

*L  TEST[CR]

F[CR]

 SD-CARDルートディレクトリにあるファイルの一覧を表示します。20件表示したところで指示待ちになるので打ち切るならESC、SHIFT+BREAK又は↑を入力すると打ち切られ、Bキーで前の20件に戻ります。それ以外のキーで次の20件を表示します。

 行頭に「*L」を付加して表示してあるので実行したいファイルにカーソルキーを合わせて[CR]キーを押すだけでLOAD、実行が可能です。

 表示される順番は、登録順となりファイル名アルファベッド順などのソートした順で表示することはできません。

 LOAD実行可能範囲は0000h~FF1Fhです。

F x[CR]

ファイル名がxで始まるファイルの一覧を表示します。20件表示したところで指示待ちになるので打ち切るならESC、SHIFT+BREAK又は↑を入力すると打ち切られ、Bキーで前の20件に戻ります。それ以外のキーで次の20件を表示します。

xはX1のキーボードから入力可能な32文字までの文字列です。(数字、記号、アルファベット)

 Fとxの間に空白が有っても無くても構いません。また、空白はいくつあっても構いません。

 LOAD実行可能範囲は0000h~FF1Fhです。

例)

*F S[CR]

*F SP[CR]

*F BASIC S[CR]

*FS[CR]

*F  S[CR]

アプリケーションからのLOAD

 L、LOAD等アプリケーションが指定したコマンドの後ろにはFCBファイル名を指定可となっていますが、指定せずにL、LOAD等のコマンドのみで[CR]キーを押します。

 CMTの場合にはここでPLAYボタンを押すよう指示が出るところですが、「DOS FILE:」と表示して行入力待ちになっているのでDOSファイル名を入力して[CR]キーを押します。この時、「.X1T」の入力は省略できます。

 DOSファイル名は「.X1T」を除いて32文字まで、ただし半角カタカナ、及び一部の記号はArduinoが認識しないので使えません。パソコンでファイル名を付けるときはアルファベット、数字および空白でファイル名をつけてください。

例)BASIC CZ-8CB01では

× LOAD "TEST"[CR]

○ LOAD[CR]

 DOS FILE:TEST[CR]

○ LOAD[CR]

 DOS FILE:TEST.X1T[CR]

** 参考 **

 S-OS SWORDでの運用に当たっては起動直後に「DV S:」としてデバイスを各SYSTEMデバイスとしてください。

 FUZZY BASICだけかもしれませんが共通フォーマットデバイスのままだとLOADコマンドでFCBファイル名の省略ができませんでした。

LOAD時の特殊コマンド

 「DOS FILE:」と表示して行入力待ちになったときに以下の特殊コマンドが使用可能です。

*F[CR]
*F x[CR]

 Launcherコマンド入力待ちからのF、F xと全く同等のファイル一覧機能が使えます。

 検索結果の行頭には「DOS FILE:」を付加して表示してあるのでLOADしたいファイルにカーソルキーを合わせて[CR]キーを押すだけでLOADが可能です。

アプリケーションからのSAVE

 CMTの時と同様にアプリケーションの指定する入力方法、ルールでファイル名等を入力して保存してください。

 ただし、半角カタカナはArduinoが認識できないため、使用できません。アルファベット、数字および空白で指定してください。

 SAVE時は、入力したファイル名がFCBファイル名、DOSファイル名の両方に適用されます。

 DOSファイル名としての「.X1T」は自動的に付加されます。

例)BASIC CZ-8CB01では

○ SAVE "TEST"[CR]

操作上の注意

 「SD-CARD INITIALIZE ERROR」と表示されたときは、SD-CARDをいったん抜き再挿入したうえでArduinoをリセットしてください。

 SD-CARDにアクセスしていない時に電源が入ったままで SD-CARDを抜いた後、再挿入しSD-CARDにアクセスすると「SD-CARD INITIALIZE ERROR」となる場合があります。再挿入した場合にはSD-CARDにアクセスする前にArduinoを必ずリセットしてください。

 SD-CARDの抜き差しは電源を切った状態で行うほうがより確実です。

 (2024.3.13) SD-CARDにアクセスしていない時に電源が入ったままでSD-CARDを抜くと再度SD-CARDを挿入してもSD-CARDにアクセスできない問題を解消しました。(Arduinoを最新版に書き換えてください)

 再度SD-CARDを挿入した後、Fコマンド、Lコマンド、LOAD、SAVE等でSD-CARDに3回ほどアクセスすれば復旧します。

アプリケーションからSD-CARDとのLOAD、SAVEをするための対応

BASIC CZ-8CB01

 BASIC CZ-8CB01にSDアクセス用ルーチンを付加してX1Tファイルを作成します。

 ROMへの書込みの為にBASIC CZ-8CB01をバイナリファイルとしたのと同様の操作をしてBASIC CZ-8CB01のバイナリファイルを作成します。

 DumpList Editorを使ってWav又はtapファイルを読み込み、「マシン語入力に送る」を実行します。

CZ-8CB01_1

 PROG AREAは、0000-9E0Fとなっていると思います。

 「ファイル書出し」の「BIN(mot)ファイル書き出し(ヘッダ無し)(for他汎用)」を選択して「CZ-8CB01.bin」という名前で保存します。

 保存した「CZ-8CB01.bin」の後ろにバイナリエディタ等を使ってSD_ACCESS_BASIC_CZ-8CB01フォルダ内の「SD_ACCESS_BASIC_CZ-8CB01.bin」を付け加えます。0000h~A267hのファイルとなるはずです。

 次にファイルの先頭に以下に示す32Byteのヘッダを付加します。0000h~A287hのファイルとなります。

 なお、実行開始アドレスは、9E10hです。

 [0000] 01 42 41 53 49 43 20 43 5A 38 43 42 30 31 20 20

 [0010] 20 20 68 A2 00 00 10 9E 20 20 20 20 20 20 00 00

CZ-8CB01_2

 出来上がったら「BASIC CZ8CB01_SD.X1T」という名前で保存し、SDカードにコピーします。

 Launcherから「BASIC CZ8CB01_SD.X1T」を選択してロードするとX1_SD対応BASIC CZ8CB01が起動します。

 起動直後に必ずCLEAR &HF800又はLIMIT &HF800を実行してください。SDカードアクセスルーチンはF800h~FC9Fhに配置されています。

 SAVEコマンドにAオプションをつけることでアスキー形式でのSAVEも出来ますが、SAVE、LOADに非常に時間が掛かります。気長にお待ちください。

DumpListEditorで入力したBASICプログラムをX1T形式に変換する方法

 DumpListEditorを使えばWindowsパソコンでBASIC CZ-8CB01用のBASICプログラムが入力できますが、保存方法がテキスト形式又はTAP形式のみでそのままX1T形式で保存することが出来ません。

 以下の方法でX1T形式に変換してください。

 OCRからの変換、キーボードからの入力等でBASICプログラムを入力します。

CZ-8CB01_3

 「ファイル整理画面にPaste」をクリックしてファイル整理画面に送ります。

CZ-8CB01_4

 「マシン語入力に送る」をクリックしてマシン語入力画面に送ります。

CZ-8CB01_5

 ここで表示される「PROG SIZE」を控えておきます。

 「ファイル書出し」の「BIN(mot)ファイル書き出し(ヘッダ無し)(for他汎用)」を選択し任意のファイル名で保存します。

 バイナリエディタ等を使って保存したファイルを読み込み、先頭に以下に示す32Byteのヘッダを付加して保存します。

アドレス内容説明
00モード02h
01~0Dファイル名13文字分
0E~10拡張子3文字
11パスワード20h
12~13データ長PROG SIZEで表示されたサイズの上位、下位を逆にします
14~150000h
16~170000h
18~1Cファイル作成年月日20h
1D~1Fシステム格納アドレス00h,00h,00h

例)

CZ-8CB01_6

なお、今のところ、X1T形式で保存されたBASICプログラムをDumpListEditorで編集する方法はありません。

S-OS SWORD

 Oh!MZ '86/2月号に掲載されたS-OS SWORDをX1_SD対応とすることでOh!MZ誌及びOh!X誌に連載されたTHE SENTINELのプログラムがFDD、CMT無しでも利用できるようになります。

 Oh!MZ誌掲載のダンプリストから入力したテープ専用版SWORDが必要ですが、大石様のWEB THE SENTINEL http://www.retropc.net/ohishi/s-os/ からsword.binがダウンロードできます。『X1/C/D/Cs/Ck/F/G/Twin (1986.2,1987.3,1989.2)』版をダウンロードしてください。

 ダウンロードしたX1Sword-1989-02.zipを解凍するとbinariesフォルダにsword.bin(6,101Byte)があります。

 まず、sword.binに以下のパッチを当て、テープ専用版に修正します。

ADDRESS実ADDRESS修正前修正後
0AA61FA6C3 4F 23C3 37 1C
0AA91FA9C3 7C 23C3 32 1C
0AAC1FACC3 2D 23C3 2D 1C
0AAF1FAFC3 B3 22C3 28 1C
0B002000C3C9
0B032003C3C9
0B062006C3 19 24C3 73 1B
0B092009C3 FA 22C3 18 1B
0B0C200CC3C9
0B0F200FC3C9
0B122012C3C9
0B152015C3C9

 修正が終わったら1600h(実アドレス2B00h)以降は、ディスクI/Oで必要ありませんので0000h~15FFhまでを保存します。

 BASIC CZ-8CB01から抜き出したIOCS(0000h~149Fh)、テープ専用版sword.bin(1500h~2AFFh)、SD_ACCESS_SOS_SWORDフォルダ内の「SD_ACCESS_SOS_SWORD.bin」(2B00h~2F38h)の3つをバイナリエディタ等を使ってIOCS、sword.bin、SD_ACCESS_SOS_SWORD.binの順番に連結します。IOCSの後ろの14A0h~1AFFhまでは00hで埋めてください。

 0000h~2F38hのファイルとなります。

 次にファイルの先頭に以下に示す32Byteのヘッダを付加します。0000h~2F58hのファイルとなります。

 なお、実行開始アドレスは、2B00hです。

 [0000] 01 53 2D 4F 53 20 53 57 4F 52 44 5F 53 44 20 20

 [0010] 20 20 39 2F 00 00 00 2B 20 20 20 20 20 20 00 00

SWORD

 出来上がったら「SWORD_SD.X1T」という名前で保存し、SDカードにコピーします。

 S-OS SWORD起動直後に「DV S:」としてSYSTEMデバイスに切り替えておいた方が無難です。なお、SDカードアクセスルーチンはF800h~FC80hに配置されます。

 S-OS用のアプリケーションも大石様のWEB THE SENTINEL http://www.retropc.net/ohishi/s-os/ からダウンロードできます。

 公開されているアプリケーションの多くは、obj形式となっていますのでX1T形式のヘッダに付け替えます。

 先頭の10Byteがobj形式のヘッダですので削除し、32Byteのヘッダを付加してX1T形式にしたうえでSDカードにコピーします。

例)INVADER GAME (1987.4)

S-OS_1

S-OS_2

C-GRACE

 徳間書店発行のテクノポリスに掲載されたC-GRACE用にLauncherを作ってみました。

 BASIC CZ-8CB01から抜き出したIOCS(0000h~149Fh)、SD_ACCESS_C-GRACEフォルダ内の「SD_ACCESS_C-GRACE.bin」(14A0h~5FFFh)、C-GRACE Executerのバイナリファイル(6000h~7FFFh)を用意します。

 バイナリエディタ等を使って3つのファイルをIOCS、SD_ACCESS_C-GRACE.bin、C-GRACE Executerの順番に連結します。0000h~7FFFhのファイルとなるはずです。

 次にファイルの先頭に以下に示す32Byteのヘッダを付加します。0000h~801Fhのファイルとなります。

 なお、実行開始アドレスは、0000hです。

 [0000] 01 43 2D 47 52 41 43 45 20 20 20 20 20 20 20 20

 [0010] 20 20 00 80 00 00 00 00 20 20 20 20 20 20 00 00

C-GRACE_1

 出来上がったら「C-GRACE_SD.X1T」という名前で保存し、SDカードにコピーします。

 C-GRACE用のデータも32Byteのヘッダを付加してX1T形式にしたうえでSDカードにコピーします。

アドレス内容説明
00モード01h
01~0Dファイル名13文字分
0E~10拡張子3文字
11パスワード20h
12~13データ長各データのファイルサイズによる
14~15データ先頭アドレス00h,20h
16~17実行アドレス6000h
18~1Cファイル作成年月日20h
1D~1Fシステム格納アドレス00h,00h,00h

C-GRACE_2

 Launcherから「C-GRACE_SD.X1T」を選択してロードするとC-GRACE Launcherが起動します。

 C-GRACE LauncherからFコマンド、LコマンドでC-GRACEデータファイルを選択して読み込みます。

 CGの描画が終わるとキー入力待ちになるので何かキーを押すとグラフィック画面が消えて、C-GRACE Launcherのコマンド待ちに戻ります。

TTLインタプリタ

 Oh!MZ '84/10月号に掲載されたTTLインタプリタです。

 BASIC CZ-8CB01から抜き出したIOCS(0000h~149Fh)、SD_ACCESS_TTLフォルダ内の「SD_ACCESS_TTL.bin」(14A0h~192Eh)、TTLインタプリタのオブジェクト(B000h~BBFFh)の3つをバイナリエディタ等を使ってIOCS、SD_ACCESS_TTL.bin、TTLインタプリタのオブジェクトの順番に連結します。TTLインタプリタのオブジェクトはSD_ACCESS_TTL.binの直後(192Fh~)に連結します。

 0000h~252Ehのファイルとなります。

 次にファイルの先頭に以下に示す32Byteのヘッダを付加します。0000h~254Ehのファイルとなります。

 なお、実行開始アドレスは、14A0hです。

 [0000] 01 54 54 4C 2D 58 31 5F 53 44 20 20 20 20 20 20

 [0010] 20 20 2F 25 00 00 A0 14 20 20 20 20 20 20 00 00

TTL

 出来上がったら「TTL-X1_SD.X1T」という名前で保存し、SDカードにコピーします。

 なお、SDカードアクセスルーチンは14A0h~192Ehに配置されます。

EDAS for X1

 月刊I/O '84/6月号に掲載されたEDAS for X1です。

 BASIC CZ-8CB01から抜き出したIOCS(0000h~149Fh)、EDAS for X1のオブジェクト(14A0h~34FFh)、SD_ACCESS_EDASフォルダ内の「SD_ACCESS_EDAS.bin」(3500h~3945h)の3つをバイナリエディタ等を使ってIOCS、EDAS for X1のオブジェクト、SD_ACCESS_EDAS.binの順番に連結します。

 0000h~3945hのファイルとなります。

 次にファイルの先頭に以下に示す32Byteのヘッダを付加します。0000h~254Ehのファイルとなります。

 なお、実行開始アドレスは、3500hです。

 [0000] 01 45 44 41 53 5F 58 31 5F 53 44 20 20 20 20 20

 [0010] 20 20 46 39 00 00 00 35 20 20 20 20 20 20 00 00

EDAS

 出来上がったら「EDAS_X1_SD.X1T」という名前で保存し、SDカードにコピーします。

 なお、SDカードアクセスルーチンはF800h~FC8Dhに配置されます。

X1エディタ・アセンブラ

 渡辺英行・沼倉 均共著「マシン語プログラミング入門」に掲載されたエディタ・アセンブラです。

 BASIC CZ-8CB01から抜き出したIOCS(0000h~149Fh)、エディタ・アセンブラのオブジェクト(14A0h~4A9Fh)、SD_ACCESS_X1_EDITOR_ASSEMBLERフォルダ内の「SD_ACCESS_X1_EDITOR_ASMBLR.bin」(4AA0h~4ECDh)の3つをバイナリエディタ等を使ってIOCS、エディタ・アセンブラのオブジェクト、SD_ACCESS_X1_EDITOR_ASMBLR.binの順番に連結します。

 0000h~4ECDhのファイルとなります。

 次にファイルの先頭に以下に示す32Byteのヘッダを付加します。0000h~4EEDhのファイルとなります。

 なお、実行開始アドレスは、4AA0hです。

 [0000] 01 58 31 5F 45 44 20 41 53 53 45 4D 42 4C 20 20

 [0010] 20 20 CE 4E 00 00 A0 4A 20 20 20 20 20 20 00 00

X1_EDITOR_ASSEMBLER

 出来上がったら「X1_EDITOR_ASSEMBLER_SD.X1T」という名前で保存し、SDカードにコピーします。

 なお、SDカードアクセスルーチンはF800h~FC75hに配置されます。

Stellarコンパイラ

 渡辺英行、高橋秀樹共著「X1ハイテックファイル」に掲載されたStellarコンパイラです。

 BASIC CZ-8CB01から抜き出したIOCS(0000h~149Fh)、Stellarコンパイラのオブジェクト(14A0h~67DFh)、SD_ACCECC_STELLARフォルダ内の「SD_ACCESS_STELLAR.bin」(67E0h~6C1Ah)の3つをバイナリエディタ等を使ってIOCS、Stellarコンパイラのオブジェクト、SD_ACCESS_STELLAR.binの順番に連結します。

 0000h~6C1Ahのファイルとなります。

 次にファイルの先頭に以下に示す32Byteのヘッダを付加します。0000h~6C3Ahのファイルとなります。

 なお、実行開始アドレスは、67E0hです。

 [0000] 01 53 74 65 6C 6C 61 72 5F 53 44 20 20 20 20 20

 [0010] 20 20 1B 6C 00 00 E0 67 20 20 20 20 20 20 00 00

STELLAR

 出来上がったら「Stellar_SD.x1t」という名前で保存し、SDカードにコピーします。

 なお、SDカードアクセスルーチンはAB7Dh~AFFFhに配置されます。

EMMボード for X1からの起動

 拙作EMMボード for X1をバッテリーバックアップに対応させたのでX1_SDを起動させる時にEMM_for_X1からの起動も選択できるようにBOOT LOADERを修正してみました。

 https://github.com/yanataka60/EMM_for_X1

 「0」~「3」キーを押しながら電源ON時又はIPLリセットすることで「EMM0」~「EMM3」のHuBASICから起動させることが出来ます。

 なお、EMMの00000番地が「01h」でなければEMMからの起動はせずにX1_SD Launcherが起動しますが、00000番地以降に異常があってもチェックはしていないので最悪暴走します。

 起動させたいEMMにはDISK版HuBASICの「Format & Copy」から「2...COPY ALL」を使ってDISK版HuBASICをコピーします。

 実機のFDDからEMMにコピーしてもよいですが、エミュレーター上でDISK版HuBASICのEMMのイメージを作成し、EMMMENUのEMMLOADでEMMに書き込む方法もあります。

BOOT LOADERをROMに書き込む

 EMMフォルダにある「BOOT_LOADER.X1T」をROMに書き込みます。

謝辞

 基板の作成に当たり以下のデータを使わせていただきました。ありがとうございました。

 Arduino Pro Mini

  https://github.com/g200kg/kicad-lib-arduino

 AE-microSD-LLCNV

  https://github.com/kuninet/PC-8001-SD-8kRAM

 ドキュメントの誤りを発見していただきました、ゆうじろう様。ありがとうございました。

追記

2023.10.26 SD対応アプリケーションにStellarコンパイラを追加。

2023.10.26 BASIC CZ-8CB01からSD-CARDとのLOAD、SAVEをするための対応の説明中のヘッダに誤りがありました。

2023.12.25 BASICから抽出したMONITORを修正して作成したX1_SD_BOOT.X1TをROMに書き込む方式以外にX1_SD_BOOT.X1TをSD-CARDから読み込むプログラムをROMに書き込む方式を追加した。

2024.1.15 SDカードは8GB以下が望ましいことを追記。

2024.1.26 BOOT LOADERのバグを修正。

2024.3.13 電源が入ったままでSD-CARDを抜くと再度SD-CARDを挿入してもSD-CARDにアクセスできない問題を解消した。

2025.12.4 kuran_kuranさんにArduinoプログラムのバグを発見していただきました。精査した結果、不要な処理が含まれていることが原因であったため不要な処理部分を削除しました。なお、未修正のままでも実害はありません。kuran_kuranさん、ありがとうございました。

Parts

40
QtyValueFootprintReferences
130.1uFCapacitor_THT:C_Rect_L4.0mm_W2.5mm_P2.50mmC1, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
4MountingHole_3.2mm_M3MountingHole:MountingHole_3.2mm_M3MH1, MH2, MH3, MH4
21kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR1, R2
274LS27Package_DIP:DIP-14_W7.62mm_LongPadsU4, U7
274LS273Package_DIP:DIP-20_W7.62mm_LongPadsU6, U9
274LS32Package_DIP:DIP-14_W7.62mm_LongPadsU5, U8
1100uFCapacitor_THT:CP_Radial_D5.0mm_P2.50mmC2
127512Package_DIP:DIP-28_W15.24mm_LongPadsU13
174LS04Package_DIP:DIP-14_W7.62mm_LongPadsU1
174LS10Package_DIP:DIP-14_W7.62mm_LongPadsU3
174LS139Package_DIP:DIP-16_W7.62mm_LongPadsU10
174LS30Package_DIP:DIP-14_W7.62mm_LongPadsU2
174LS541Package_DIP:DIP-20_W7.62mm_LongPadsU11
18255Package_DIP:DIP-40_W15.24mm_LongPadsU12
1Arduino_Pro_Mini_5VMZ-2000_SD_3_2:Arduino_Pro_MiniU14
1MicroSD Card AdapterConnector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_VerticalJ3
1Micro_SD_Card_KitMZ-2000_SD_3_2:AE-microSD-LLCNVJ2
1for CZ-800Connector_PinHeader_2.54mm:PinHeader_2x22_P2.54mm_VerticalJ4
1for CZ-801Connector_PinHeader_2.54mm:PinHeader_2x25_P2.54mm_VerticalJ5
1for CZ-801Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_HorizontalJ6
1for Card-Slotmz-2000:BUS_MZ2000J1

More from yanataka60/X1_SD

1
  • 2 layers79 × 61.3 mmCZ800EX, the printed circuit board in 3D

    CZ800EX

    yanataka60/X1_SD

    X1、X1turboでSD-CARDからのアプリケーション起動、BASICなどのアプリケーションからSD-CARDへのロード、セーブを実現するものです

    2 parts6MIT

Similar boards

  • 2 layers630 × 300 mmSecretBase, the printed circuit board in 3D

    SecretBase

    stonedDiscord/SecretBase

    SEGA Secret Base Arcade Game

    441 parts
  • 2 layers476.5 × 299.5 mmVideo, the printed circuit board in 3D

    Video

    stonedDiscord/MonacoGP

    Sega MonacoGP TTL Boards

    208 parts1
  • 2 layers426 × 307 mmI7000, the printed circuit board in 3D

    I7000

    felipesanches/Itautec_I7000_KICAD

    Esquemáticos do computador Itautec I-7000 G desenhados a partir de inspeção do circuito das PCBs

    115 parts
  • 2 layers254 × 134.6 mmZ80-CPU, the printed circuit board in 3D

    Z80-CPU

    CatspersCoffee/S100-Boards

    S-100 bus boards designed and built: Z80 and 80386 CPU cards, SRAM/DRAM memory, CPLD/FPGA I/O and SPI boards, an 18-slot backplane and bus terminator.

    163 parts
  • 6 layers244 × 244 mmRetroslop, the printed circuit board in 3D

    Retroslop

    CPTforever/8088-MicroATX-Computer

    A 8088 based, IBM 5150 like computer compatible with the MicroATX motherboard form factor.

    193 parts
  • 2 layers190 × 100 mmVga, the printed circuit board in 3D

    Vga

    tetrix450/masic-vga

    MASIC VGA adapter schematics and PCB

    64 partsMIT
  • 2 layers279.4 × 203.2 mmZ180GDC, the printed circuit board in 3D

    Z180GDC

    lynchaj/rhyophyre

    Single Board Computer featuring Zilog Z180 processor and NEC µPD7220 Graphics Display Controller

    249 parts12
  • 2 layers301.9 × 194.8 mmTRS80 Model I EI RevD, the printed circuit board in 3D

    TRS80 Model I EI RevD

    RetroStack/TRS-80-Model-I-Expansion-Interface-Rev-D

    Hardware Replica of the TRS-80 Model I Expansion Interface - Revision D

    185 partsMIT

Questions

How big is the X1 SD PCB?

It measures 137 × 140.7 mm and has 2 copper layers, 1.6 mm thick.

What parts does the X1 SD use?

40 parts, built around the 74LS27P-E, 74LS273PC, 74LS32SC and 74LS04PC. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the X1 SD KiCad files?

From the yanataka60/X1_SD repository on GitHub, at the commit this page was made from: the board is Kicad/X1_SD.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the X1 SD design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).