2022年6月22日水曜日

FT245通信カードとRAMディスクカードの合体カードの製作

 FT245カードとRAMディスクカードを合体させてみました

以前、秋月電子のFT245モジュールが品切れだった時期があり、それならという事で代わりにFT245RLチップを使ったカードを試作してみたことがあります。

それについては4月2日のブログ「FT245高速通信カードの改造の試み」で紹介しましたが、その試作機は秋月のFT245モジュールの回路をそのままそっくりプリント基板に実装したものでした。しかし、USBから電源を取る必要はないなど、不要なパーツを省くことで回路を簡単化できそうでした。

製作してみると、スペースに結構余裕ができましたので、これならさらに回路を追加することができるのではないかということで、表面実装のSRAMを用いればRAMディスクの回路を入れることができるのではと思いつきました。

それまではFM-7の32PスロットにはFDCカード、FT245通信カードの2枚が刺さっていましたので、RAMディスクカードを使う際には自作の32Pスロット拡張基板を使用していました。しかしFT245通信カードと512KBのRAMディスクカードを一枚に合体させれば、FM-7本体だけで収まることになり使い勝手が向上します。

ということで製作したものが下画像のカードです。今までのFT245カードや512KB RAMディスクと同様、TTL ICには74LSを使用しています。


試作第1作(74LS使用)

回路はどちらも実績があるものですので、配置に多少手間を掛けただけで完成しました。回路的には74LSだけでなく74HCも使用できるので、バッテリバックアップ機能の向上を期待して、全てのTTL ICを74HCにしたものも製作してみました。

USBコネクタとしてminiとmicroの両方を実装したのはどちらの接続ケーブルも使用できるようにするためです。上部に見えるスライドスイッチはFM-7からWindowsへの転送時にTXEフラグを読むか読まないかを切り替えるものです。(ソフトでの対応が必要です。)

実装としては、USB microコネクタの取り付けに最も苦労しました。0.65mmピッチのFT245RLチップはそれほど大変ではありませんでしたが、それよりも1.27mmピッチのHM628512の方が大変でした。ハンダの乗りがチップによって異なるようです。


74HCでの製作品


裏面

ドライブソフトはFT245通信カード用、RAMディスクカード用のそれぞれがもちろん使用できますが、両カードの開発者の「思い付きハードでソフトに七転八倒」さんが統合したものを制作されています。


FPGAボードで6809を作ってNitros9を走らせてみました

安価なFPGAボードでOS-9互換と言われているNitros9を走らせてみました

FPGAで6809を作ってOS9を動かす」というサイトを見て、同じFPGAボードを入手してNitros9を走らせようとしてみました。

 目的は2つありまして、一つはOS-9互換と言われていますが、本当なのかどうかを所有しているOS-9Level1(FM-7用)とLevel2(FM77AV40用)と比較して確認してみたいことと、もう一つは普段使用している自作の6809/6802DualボードでNitros9を走らせたいので、その前準備のためということです。

入手したFPGAボードは下画像のものです。ALTERAのCyclone IIのEP2C5が載っています。他に購入したのは3.3Vで動作するSRAMのみで、あとは全て手持ちの部品で済ませました。


購入したFPGAカード

ネットの情報に従って、裏面のR1, R2, R9, R10は取り外してあります。

その裏面

基板も使いまわしなので余計な穴が開いていたりします...

3.3Vの512KB SRAMが載っていますが、もう一個載せられるようにスペースを空けてあります。


製作したボード

まず最初の試みとして慣れているFLEX9を動作させる方が簡単かと思って、同じ著者の「FPGAで6809を作ってFLEXを動かすぞ」という記事の通りにインストールしてみることにしましたが、うまくいきませんでした。

コンパイルはエラー無く終了し、書き込みも一瞬で無事に終了します。コンフィグROMへの書き込みもできましたが、RAMでもROMでも動作しないのです。

FPGAに書き込んだ6809がまず動作してメッセージが表示され、続いてSDカードに書き込んだFLEX9が読み込まれて走るはずですが、画面には何も表示されません。SDカードを読みに行く気配がないので、それ以前のFPGAに書き込んだプログラムの動作がダメなようです。

一部Verilogで書かれているので、VHDLならともかくVerilogの細かいところは良く分かりません。

これはあかんということで、FLEX9ではなくOS-9の方も試みたのですが、やはり画面には何も表示されず、SDカードを読みにいく以前の段階に問題があるという状態でした。


ハードが悪いのかそれともソフトのせいか

何しろ回路が手配線なのでハードのミスがあるかもしれず、悪いのは回路なのかFPGAデータなのか、それともSDカードに書き込んだファイルなのかが全く分からず、途方に暮れるばかりでした。

そんな時に「Multicomp Cyclone II-CでCP/Mが動いた」という記事を見つけました。これも同じFPGAボードを使用しており、かつSDカードに書き込むイメージファイルも既に用意されていましたので、FPGA用のプログラムをそのままコンパイルして書き込み、さらに用意されているイメージファイルをSDカードにそのまま書き込むことで、あっさりとCP/Mが動作しました。


Z80書き込み中


CP/M3.0起動直後


CP/M3.0動作中


ハードには問題がなかった

この結果、ハードには問題がないことが確認できましたので、あとはFPGAに書き込むプログラムとSDカードに書き込むイメージファイルの作成という事に注力することができます。

FLEXとOS-9を走らせる記事は、こうすればできますよという手順を詳細に解説したというものではなく、分かっている人には分かるという書き方ですので、私のような素人には引っかかる個所が多すぎます。

ということで、あちこちを修正しながらコンパイルして実行することを繰り返しましたが、やはりSDカードを読みに行く前段階の、FPGAに書き込んだプログラムが動作しない状態から脱却できません...(VHDファイルのセット、コンパイル、実行の手順を数百回も繰り返したおかげで、操作手順だけは目を瞑っていても出来るぐらいになってしまいました...)


オリジナルのファイルで動作させることができた

結局、ブログ中のファイルを諦めて、元々のファイルから始めることにしてGithubにある「nealcrook/multicomp6809」をダウンロードし、その中のMicrocomputerPCBフォルダ中のMicrocomputer.vhdから作成することにしました。これについても色々と試行錯誤をしましたが、何とか6809を立ち上げることができました。

これはシリアル出力に設定してコンパイルした場合の出力画面です。まずCamelForthが立ち上がり、Enterー>OK表示ー>NITROS9入力でNitros9が立ち上がり、日付の入力の後、dir /d0でドライブ0の内容が表示されています。


シリアル出力の場合

こちらはビデオ出力に設定してコンパイルした場合で、PS/2キーボードから操作できます。


ビデオ出力の場合

なお、シリアル出力とビデオ出力の切り替えですが、VHDファイルの該当部分を有効・無効化するだけではダメで、シリアル出力に設定した場合はブログの著者による数か所の変更が必要なようです。(元のmulticomp6809中のVHDファイルと比較すると変更部が分かります。)

SDカードに書き込むデータファイルですが、ブログに書かれていますようにLinux環境で行いましたが、書かれていますようにbin\create_sd_imageをそのまま実行してもエラーで止まってしまいますので、実行行を一行ずつ手作業で修正しながら行いました。どうも、著者はLinuxかMac環境のようで(ファイルの改行コードが0x0D,0x0Aでなく0x0Aになっていた)、それもあって私のWindows環境では難しかったのかもしれません。

蛇足ですが、FPGAは便利なものですね。コンパイルに1分程度かかりますが、その手間をかけるだけで同じボードがZ80や6809に変身するのですから。また、ROMに書き込めば電源スイッチONで即起動しますし。

しかし、一ヶ月以上の試行錯誤の結果として何とか動作したので良かったのですが、つくづく自分の知識の無さを痛感しました。未だに理解しきれていない部分が多いですし、おまけに、何故かQuartus IIの13.0sp1をLinuxにインストールできない状態が続いています。


この後は

この後は、まず手持ちのOS-9L1, L2とどの位の互換性があるのかを確認してみたいと思います。その次には、いよいよ自作のボードマイコンへのNitros9の移植に挑戦したいです。


2022年6月12日日曜日

SDカードを6809のアセンブラで読み書きしてみる

SDカードを6809のアセンブラを用いてSPIモードで読み書きしてみました


 以前からSDカードに興味がありましたが、難しそうで手を出せずにいました。昨年ですがSPIモードでセンサを読み書きしてみたところ、I2Cよりもかなり簡単だという印象を持ちました。

「6821PIAからアセンブラによるSPI通信でセンサーを制御する(2021年11月3日)」

その経験からSPIモードでのSDカードの読み書きなら割と簡単にできるのではないかと試してみることにしました。

参考にしたのは、いつもお世話になっている中日電工の菱田さんのブログの「[新連載]マイコン独立大作戦「SDカードインターフェースの製作」第1回~第32回」です。いつも貴重な情報をありがとうございます。

ということで、回路はブログ第8回の5V-3.3V変換部をそのまま使わせてもらい、元記事は82C55でコントロールしているのですが、私は6809/6802Dualマイコンに搭載している68B21を使用しました。


実験回路の画像と接続図を示します

画像左に立ててあるのが6809/6802Dualボードで68B21からフラットケーブルで実験回路に接続しています。


実験回路


ブロック図


68B21のポートAは出力モードのままで入力もできる便利な機能を持っているので、ポートAのみで入出力を行なっています。クロックSCKは1ビット出力のCA2を利用しています。このCA2によるクロックの周波数は私のプログラムではおよそ30.7KHzでした。

5V-3.3Vインターフェースはインバータひとつで構成しているために信号が反転してしまいますのでプログラムの方で考慮します。

秋月電子のSDカードモジュールは5V電源から3.3Vを生成するようになっていますので、インターフェース回路にその3.3Vも供給しています。


プログラム作成

プログラム作成ですが、Windows上で行いました。

Windows上のエディタ(私はEmEditorを使っています)でソースを作成し、それをWindows上で動作する自作の6809クロスアセンブラでアセンブルして、できたmotファイルを6809/6802DualボードのモニタのLコマンドで読み込んで実行します。

その手順を画像で紹介します。

エディタでプログラムリストを作成します。


エディタで作成中

できたプログラムをアセンブラに放り込んでアセンブルします。


アセンブル中

実行画面でLコマンドを用いてロードします。通常、このロードプログラムの画面は最初に起動するだけで操作する必要はありませんので閉じておきます。

ロードプログラム動作中

実行画面です。Lコマンドで読み込み、Gコマンドで実行します。

ロードして実行中

プログラムに修正の必要があれば、上記の手順を繰り返します。

実際にSDカードを読み書きできるようになるまでには結構はまってしまう個所もあり、中日電工さんのブログの他に、「えるむ by ChaN」さん、「SDカード」さんや「SDカードの操作」さんのブログなども参考にさせていただきました。ありがとうございます。

とりあえず完成したプログラムですが、SDカードとSDHCカードの両方が読み書きできるものとSDカードのみを読み書きするものの2本立てとしました。

目的としている6809/6802DualボードのFlex9に組み込むためには少しでも短いほうが良いので、SD専用とする予定ですが、折角ですのでSDHCカードも読み書きできることを確かめたという事です。

ここではSD、SDHCカード両用のプログラムのリストを紹介します。SDカード専用版との違いは初期化ルーチンとRead/Writeルーチンのセクタ番号の指定方法の違いのみで、特に初期化ルーチンはSD専用版に比べてかなり複雑です。


  1. 0001 *
  2. 0002 * SDHC-RW.TXT
  3. 0003 *
  4. 0004 * SD Read/Write on SBC
  5. 0005 *
  6. 0006 * 6821(PIA) Port A <--> SD
  7. 0007 *
  8. 0008 * SBC SD
  9. 0009 * CA2 2 --> 16 SCK
  10. 0010 * PA0 3 --> 15 CS
  11. 0011 * PA1 4 <-- 7 MISO
  12. 0012 * PA7 10 --> 20 MOSI
  13. 0013 * GND 31 -- 10 GND
  14. 0014 * VCC 33 -- 9 VCC
  15. 0015 *
  16. 0016 * cf. all data line is inverted
  17. 0017 *
  18. 0018 * PA output mode
  19. 0019 * CA2 1bit output
  20. 0020 *
  21. 0021 * READ/WRITE BUFFER $6600 - 67FF
  22. 0022 *
  23. 0023 * Original version '2022.06.11
  24. 0024 * Copyright by Y.Yamamoto
  25. 0025 *
  26. 0026 F800 MON EQU $F800
  27. 0027 F000 INCHA EQU $F000
  28. 0028 F002 OUTCHA EQU $F002
  29. 0029 FAA4 PSTRNG EQU $FAA4
  30. 0030
  31. 0031 6600 RWBUF EQU $6600
  32. 0032
  33. 0033 F0DC PADAT EQU $F0DC
  34. 0034 F0DD PACTL EQU PADAT+1
  35. 0035
  36. 0036 6000 ORG $6000
  37. 0037
  38. 0038 6000 20 07 START BRA MAIN
  39. 0039 6002 01 VN FCB 1
  40. 0040 6003 00 SCTN0 FCB 0 top adrs of sct
  41. 0041 6004 00 SCTN1 FCB 0
  42. 0042 6005 00 SCTN2 FCB 0
  43. 0043 6006 00 SCTN3 FCB 0
  44. 0044 6007 00 RESDAT FCB 0 response data
  45. 0045 6008 00 SDHC FCB 0 sd:0,sdhc:1
  46. 0046
  47. 0047 6009 MAIN EQU *
  48. 0048 *=====reset pia=====
  49. 0049 *portA:output
  50. 0050 6009 86 30 LDA #$30
  51. 0051 600B B7 F0DD STA PACTL select ddra, ca2:0
  52. 0052 600E 86 FF LDA #$FF
  53. 0053 6010 B7 F0DC STA PADAT set output mode
  54. 0054 6013 86 34 LDA #$34
  55. 0055 6015 B7 F0DD STA PACTL select peripheral,ca2:0
  56. 0056
  57. 0057 *for pia exist check
  58. 0058 6018 86 55 LDA #$55 test data
  59. 0059 601A B7 F0DC STA PADAT
  60. 0060 601D B6 F0DC LDA PADAT
  61. 0061 6020 81 55 CMPA #$55
  62. 0062 6022 27 09 BEQ INIT
  63. 0063 6024 8E 64A0 LDX #MERR
  64. 0064 6027 BD FAA4 JSR PSTRNG
  65. 0065 602A 7E F800 JMP MON
  66. 0066
  67. 0067 602D INIT EQU *
  68. 0068 602D 8D 3A BSR SDINIT
  69. 0069
  70. 0070 602F MENU EQU *
  71. 0071 602F BD 6384 JSR CRLF
  72. 0072 6032 8E 643F LDX #MSMENU
  73. 0073 6035 BD FAA4 JSR PSTRNG
  74. 0074
  75. 0075 6038 BD F000 JSR INCHA
  76. 0076 603B 81 31 CMPA #'1
  77. 0077 603D 26 05 BNE MEN2
  78. 0078 603F 17 0199 LBSR SDRD
  79. 0079 6042 20 EB BRA MENU
  80. 0080 6044 81 32 MEN2 CMPA #'2
  81. 0081 6046 26 05 BNE MEN3
  82. 0082 6048 17 0208 LBSR SDWRT
  83. 0083 604B 20 E2 BRA MENU
  84. 0084 604D 81 33 MEN3 CMPA #'3
  85. 0085 604F 26 05 BNE MEN4
  86. 0086 6051 17 0149 LBSR GETSD
  87. 0087 6054 20 D9 BRA MENU
  88. 0088 6056 81 34 MEN4 CMPA #'4
  89. 0089 6058 26 05 BNE MEN5
  90. 0090 605A 17 000C LBSR SDINIT
  91. 0091 605D 20 D0 BRA MENU
  92. 0092 605F 81 39 MEN5 CMPA #'9
  93. 0093 6061 26 CC BNE MENU
  94. 0094 6063 BD 6384 JSR CRLF
  95. 0095 6066 7E F800 JMP MON
  96. 0096 *
  97. 0097
  98. 0098 6069 SDINIT EQU *
  99. 0099 *---------- start ----------
  100. 0100 * cs:1,di:1,sck>74ms
  101. 0101 6069 86 FF LDA #$FF mosi:b7=H,miso:b1=H(for PIA),cs:b0=H
  102. 0102 606B 43 COMA
  103. 0103 606C B7 F0DC STA PADAT
  104. 0104 606F C6 50 LDB #80 80times
  105. 0105 6071 17 02D5 ISTT LBSR SETCKL
  106. 0106 6074 17 02DB LBSR SETCKH
  107. 0107 6077 5A DECB
  108. 0108 6078 26 F7 BNE ISTT
  109. 0109 *
  110. 0110 *---------- cmd 0 ----------
  111. 0111 607A SCMD0
  112. 0112 607A 17 02CC LBSR SETCKL
  113. 0113 607D C6 06 LDB #6
  114. 0114 607F 8E 6409 LDX #CMD0
  115. 0115 6082 A6 80 SC01 LDA ,X+
  116. 0116 6084 43 COMA
  117. 0117 6085 17 0250 LBSR SNDDAT
  118. 0118 6088 5A DECB
  119. 0119 6089 26 F7 BNE SC01
  120. 0120 *get response
  121. 0121 608B 5F CLRB
  122. 0122 608C GR00
  123. 0123 608C 5A DECB
  124. 0124 608D 1027 0141 LBEQ SDERR
  125. 0125 6091 17 0260 LBSR GETDAT
  126. 0126 6094 B6 6007 LDA RESDAT
  127. 0127 6097 43 COMA
  128. 0128 6098 17 02C0 LBSR DSPBIN disp response
  129. 0129 609B 81 01 CMPA #$01
  130. 0130 609D 26 ED BNE GR00
  131. 0131
  132. 0132 609F BD 6384 JSR CRLF
  133. 0133 *
  134. 0134 *---------- cmd 8 ----------
  135. 0135 60A2 SCMD8
  136. 0136 60A2 17 02A4 LBSR SETCKL
  137. 0137 60A5 C6 06 LDB #6
  138. 0138 60A7 8E 6421 LDX #CMD8
  139. 0139 60AA A6 80 SC80 LDA ,X+
  140. 0140 60AC 43 COMA
  141. 0141 60AD 17 0228 LBSR SNDDAT
  142. 0142 60B0 5A DECB
  143. 0143 60B1 26 F7 BNE SC80
  144. 0144 *get response
  145. 0145 60B3 GR80
  146. 0146 60B3 17 023E LBSR GETDAT
  147. 0147 60B6 B6 6007 LDA RESDAT
  148. 0148 60B9 43 COMA
  149. 0149 60BA 17 029E LBSR DSPBIN disp response
  150. 0150 60BD 81 01 CMPA #$01
  151. 0151 60BF 26 F2 BNE GR80
  152. 0152 60C1 C6 04 GR81 LDB #4
  153. 0153 60C3 17 022E GR82 LBSR GETDAT
  154. 0154 60C6 B6 6007 LDA RESDAT
  155. 0155 60C9 43 COMA
  156. 0156 60CA 17 028E LBSR DSPBIN disp response
  157. 0157 60CD 5A DECB
  158. 0158 60CE 26 F3 BNE GR82
  159. 0159
  160. 0160 60D0 BD 6384 JSR CRLF
  161. 0161 *
  162. 0162 *---------- cmd 58 ----------
  163. 0163 60D3 SCMD58
  164. 0164 60D3 17 0273 LBSR SETCKL
  165. 0165 60D6 C6 06 LDB #6
  166. 0166 60D8 8E 6427 LDX #CMD58
  167. 0167 60DB A6 80 SC581 LDA ,X+
  168. 0168 60DD 43 COMA
  169. 0169 60DE 17 01F7 LBSR SNDDAT
  170. 0170 60E1 5A DECB
  171. 0171 60E2 26 F7 BNE SC581
  172. 0172 *get response
  173. 0173 60E4 GR580
  174. 0174 60E4 17 020D LBSR GETDAT
  175. 0175 60E7 B6 6007 LDA RESDAT
  176. 0176 60EA 43 COMA
  177. 0177 60EB 17 026D LBSR DSPBIN disp response
  178. 0178 60EE 81 01 CMPA #$01
  179. 0179 60F0 26 F2 BNE GR580
  180. 0180 60F2 C6 04 GR581 LDB #4
  181. 0181 60F4 17 01FD GR582 LBSR GETDAT
  182. 0182 60F7 B6 6007 LDA RESDAT
  183. 0183 60FA 43 COMA
  184. 0184 60FB 17 025D LBSR DSPBIN disp response
  185. 0185 60FE 5A DECB
  186. 0186 60FF 26 F3 BNE GR582
  187. 0187
  188. 0188 6101 RPT41
  189. 0189 *---------- cmd 55 ----------
  190. 0190 6101 SCMD55
  191. 0191 6101 17 0245 LBSR SETCKL
  192. 0192 6104 C6 06 LDB #6
  193. 0193 6106 8E 642D LDX #CMD55
  194. 0194 6109 A6 80 SC551 LDA ,X+
  195. 0195 610B 43 COMA
  196. 0196 610C 17 01C9 LBSR SNDDAT
  197. 0197 610F 5A DECB
  198. 0198 6110 26 F7 BNE SC551
  199. 0199 *get response
  200. 0200 * CLRB
  201. 0201 6112 GR550
  202. 0202 * DECB
  203. 0203 * BEQ SDERR
  204. 0204 6112 17 01DF LBSR GETDAT
  205. 0205 6115 B6 6007 LDA RESDAT
  206. 0206 6118 43 COMA
  207. 0207 6119 17 023F LBSR DSPBIN disp response
  208. 0208 611C 81 01 CMPA #$01
  209. 0209 611E 26 F2 BNE GR550
  210. 0210
  211. 0211 6120 BD 6384 JSR CRLF
  212. 0212 *---------- acmd 41 ----------
  213. 0213 6123 ASCMD41
  214. 0214 6123 17 0223 LBSR SETCKL
  215. 0215 6126 C6 06 LDB #6
  216. 0216 6128 8E 6433 LDX #ACMD41
  217. 0217 612B A6 80 ASC411 LDA ,X+
  218. 0218 612D 43 COMA
  219. 0219 612E 17 01A7 LBSR SNDDAT
  220. 0220 6131 5A DECB
  221. 0221 6132 26 F7 BNE ASC411
  222. 0222 *get response
  223. 0223 6134 GR410
  224. 0224 6134 17 01BD LBSR GETDAT
  225. 0225 6137 B6 6007 LDA RESDAT
  226. 0226 613A 43 COMA
  227. 0227 613B 17 021D LBSR DSPBIN disp response
  228. 0228 613E 17 01B3 LBSR GETDAT
  229. 0229 6141 B6 6007 LDA RESDAT
  230. 0230 6144 43 COMA
  231. 0231 6145 17 0213 LBSR DSPBIN disp response
  232. 0232 6148 81 00 CMPA #$00
  233. 0233 614A 26 B5 BNE RPT41
  234. 0234
  235. 0235 614C BD 6384 JSR CRLF
  236. 0236
  237. 0237 *---------- second cmd 58 ----------
  238. 0238 614F SCMD258
  239. 0239 614F 17 01F7 LBSR SETCKL
  240. 0240 6152 C6 06 LDB #6
  241. 0241 6154 8E 6427 LDX #CMD58
  242. 0242 6157 A6 80 SC2581 LDA ,X+
  243. 0243 6159 43 COMA
  244. 0244 615A 17 017B LBSR SNDDAT
  245. 0245 615D 5A DECB
  246. 0246 615E 26 F7 BNE SC2581
  247. 0247 *get response
  248. 0248 6160 GR2580
  249. 0249 6160 17 0191 LBSR GETDAT
  250. 0250 6163 B6 6007 LDA RESDAT
  251. 0251 6166 43 COMA
  252. 0252 6167 17 01F1 LBSR DSPBIN disp response
  253. 0253 616A 81 00 CMPA #$00
  254. 0254 616C 26 F2 BNE GR2580
  255. 0255 616E 17 0183 LBSR GETDAT
  256. 0256 6171 B6 6007 LDA RESDAT
  257. 0257 6174 43 COMA
  258. 0258 6175 17 01E3 LBSR DSPBIN disp response
  259. 0259 6178 48 LSLA
  260. 0260 6179 48 LSLA
  261. 0261 617A 24 03 BCC GR2581
  262. 0262 617C 7C 6008 INC SDHC if sdhc then 1
  263. 0263 617F C6 03 GR2581 LDB #3
  264. 0264 6181 17 0170 GR2582 LBSR GETDAT
  265. 0265 6184 B6 6007 LDA RESDAT
  266. 0266 6187 43 COMA
  267. 0267 6188 17 01D0 LBSR DSPBIN disp response
  268. 0268 618B 5A DECB
  269. 0269 618C 26 F3 BNE GR2582
  270. 0270
  271. 0271 618E 8E 648E LDX #MSSD0
  272. 0272 6191 B6 6008 LDA SDHC
  273. 0273 6194 27 03 BEQ SD1
  274. 0274 6196 8E 6496 LDX #MSSD1
  275. 0275 6199 BD FAA4 SD1 JSR PSTRNG
  276. 0276
  277. 0277 619C 39 RTS
  278. 0278
  279. 0279 ****************************************
  280. 0280 * GET SD DATA ROUTINE
  281. 0281 * use CMD9
  282. 0282 ****************************************
  283. 0283 619D GETSD EQU *
  284. 0284 619D 17 01A9 LBSR SETCKL
  285. 0285 61A0 C6 06 LDB #6
  286. 0286 61A2 8E 6439 LDX #CMD9
  287. 0287 61A5 A6 80 SC91 LDA ,X+
  288. 0288 61A7 43 COMA
  289. 0289 61A8 17 012D LBSR SNDDAT
  290. 0290 61AB 5A DECB
  291. 0291 61AC 26 F7 BNE SC91
  292. 0292 61AE BD 6384 JSR CRLF
  293. 0293 *get response
  294. 0294 61B1 GR90
  295. 0295 61B1 17 0140 LBSR GETDAT
  296. 0296 61B4 B6 6007 LDA RESDAT
  297. 0297 61B7 43 COMA
  298. 0298 61B8 17 01A0 LBSR DSPBIN disp response
  299. 0299 61BB 81 00 CMPA #$00
  300. 0300 61BD 26 F2 BNE GR90
  301. 0301
  302. 0302 61BF BD 6384 JSR CRLF
  303. 0303 61C2 C6 14 LDB #16+1+2+1 fe,crcH,crcL,ff
  304. 0304 61C4 17 012D GR91 LBSR GETDAT
  305. 0305 61C7 B6 6007 LDA RESDAT
  306. 0306 61CA 43 COMA
  307. 0307 61CB 17 018D LBSR DSPBIN disp response
  308. 0308 61CE 5A DECB
  309. 0309 61CF 26 F3 BNE GR91
  310. 0310 61D1 39 RTS
  311. 0311
  312. 0312 *
  313. 0313 61D2 SDERR EQU *
  314. 0314 61D2 8E 64A0 LDX #MERR
  315. 0315 61D5 BD FAA4 JSR PSTRNG
  316. 0316 61D8 OKEND
  317. 0317 61D8 7E F800 JMP MON
  318. 0318 *
  319. 0319 ****************************************
  320. 0320 * READ ROUTINE
  321. 0321 * use CMD17
  322. 0322 * set sctno to $6005,6006
  323. 0323 * read data set to $6800-69FF
  324. 0324 ****************************************
  325. 0325 61DB SDRD EQU *
  326. 0326 61DB BD 6384 JSR CRLF
  327. 0327 61DE 17 012D LBSR INSCT
  328. 0328 *copy sct no to cmd param
  329. 0329 61E1 8E 6003 LDX #SCTN0
  330. 0330 61E4 108E 6416 LDY #CMD17+1
  331. 0331 61E8 C6 04 LDB #4
  332. 0332 61EA A6 80 CPY1 LDA ,X+
  333. 0333 61EC A7 A0 STA ,Y+
  334. 0334 61EE 5A DECB
  335. 0335 61EF 26 F9 BNE CPY1
  336. 0336 *send cmd
  337. 0337 61F1 17 0155 LBSR SETCKL
  338. 0338 61F4 C6 06 LDB #6
  339. 0339 61F6 8E 6415 LDX #CMD17
  340. 0340 61F9 A6 80 SDR1 LDA ,X+
  341. 0341 61FB 17 015D LBSR DSPBIN disp response
  342. 0342 61FE 43 COMA
  343. 0343 61FF 17 00D6 LBSR SNDDAT
  344. 0344 6202 5A DECB
  345. 0345 6203 26 F4 BNE SDR1
  346. 0346 *get response
  347. 0347 6205 SDR2
  348. 0348 6205 17 00EC LBSR GETDAT
  349. 0349 6208 B6 6007 LDA RESDAT
  350. 0350 620B 43 COMA
  351. 0351 620C 17 014C LBSR DSPBIN disp response
  352. 0352 620F 81 FE CMPA #$FE token?
  353. 0353 6211 26 F2 BNE SDR2
  354. 0354
  355. 0355 *get data
  356. 0356 6213 BD 6384 JSR CRLF
  357. 0357 6216 8E 6600 LDX #RWBUF <-temp buf
  358. 0358 6219 108E 0200 LDY #512
  359. 0359 621D C6 20 DSPDAT LDB #32
  360. 0360 621F 31 3F DSPD1 LEAY -1,Y
  361. 0361 6221 17 00D0 LBSR GETDAT
  362. 0362 6224 B6 6007 LDA RESDAT
  363. 0363 6227 43 COMA
  364. 0364 6228 A7 80 STA ,X+ save buf
  365. 0365 622A 17 012E LBSR DSPBIN disp data
  366. 0366 622D 108C 0000 CMPY #0
  367. 0367 6231 27 08 BEQ DSPD2
  368. 0368 6233 5A DECB
  369. 0369 6234 26 E9 BNE DSPD1
  370. 0370 6236 BD 6384 JSR CRLF
  371. 0371 6239 20 E2 BRA DSPDAT
  372. 0372
  373. 0373 623B BD 6384 DSPD2 JSR CRLF
  374. 0374 623E 17 00B3 LBSR GETDAT
  375. 0375 6241 B6 6007 LDA RESDAT
  376. 0376 6244 43 COMA
  377. 0377 6245 17 0113 LBSR DSPBIN crcH
  378. 0378 6248 17 00A9 LBSR GETDAT
  379. 0379 624B B6 6007 LDA RESDAT
  380. 0380 624E 43 COMA
  381. 0381 624F 17 0109 LBSR DSPBIN crcL
  382. 0382 6252 39 RTS
  383. 0383
  384. 0384 ****************************************
  385. 0385 * WRITE ROUTINE
  386. 0386 * use CMD24
  387. 0387 * set sctno to $6005,6006
  388. 0388 * write data from $6A00-6BFF
  389. 0389 ****************************************
  390. 0390 6253 SDWRT EQU *
  391. 0391 6253 8E 6482 LDX #MSWROK
  392. 0392 6256 BD FAA4 JSR PSTRNG
  393. 0393 6259 BD F000 JSR INCHA
  394. 0394 625C 84 DF ANDA #$DF
  395. 0395 625E 81 59 CMPA #'Y
  396. 0396 6260 27 01 BEQ SDWR1
  397. 0397 6262 39 RTS
  398. 0398 6263 BD 6384 SDWR1 JSR CRLF
  399. 0399 6266 17 00A5 LBSR INSCT
  400. 0400 *copy sct no to cmd param
  401. 0401 6269 8E 6003 LDX #SCTN0
  402. 0402 626C 108E 641C LDY #CMD24+1
  403. 0403 6270 C6 04 LDB #4
  404. 0404 6272 A6 80 CPY2 LDA ,X+
  405. 0405 6274 A7 A0 STA ,Y+
  406. 0406 6276 5A DECB
  407. 0407 6277 26 F9 BNE CPY2
  408. 0408 *send cmd
  409. 0409 6279 17 00CD LBSR SETCKL
  410. 0410 627C C6 06 LDB #6
  411. 0411 627E 8E 641B LDX #CMD24
  412. 0412 6281 A6 80 SDW1 LDA ,X+
  413. 0413 6283 17 00D5 LBSR DSPBIN disp response
  414. 0414 6286 43 COMA
  415. 0415 6287 8D 4F BSR SNDDAT
  416. 0416 6289 5A DECB
  417. 0417 628A 26 F5 BNE SDW1
  418. 0418 *get cmd response
  419. 0419 628C SDW2
  420. 0420 628C 8D 66 BSR GETDAT
  421. 0421 628E B6 6007 LDA RESDAT
  422. 0422 6291 43 COMA
  423. 0423 6292 17 00C6 LBSR DSPBIN disp response
  424. 0424 6295 81 00 CMPA #$00
  425. 0425 6297 26 F3 BNE SDW2
  426. 0426 *1byte skip
  427. 0427 6299 86 FF LDA #$FF
  428. 0428 629B 43 COMA
  429. 0429 629C 8D 3A BSR SNDDAT 1byte skip
  430. 0430 629E BD 6384 JSR CRLF
  431. 0431
  432. 0432 *send data packet
  433. 0433 62A1 8E 6600 LDX #RWBUF <-temp buf
  434. 0434 62A4 108E 0200 LDY #512
  435. 0435 *send data token
  436. 0436 62A8 86 FE LDA #$FE
  437. 0437 62AA 43 COMA
  438. 0438 62AB 8D 2B BSR SNDDAT data token
  439. 0439 62AD A6 80 SNDDT1 LDA ,X+
  440. 0440 62AF 43 COMA
  441. 0441 62B0 8D 26 BSR SNDDAT
  442. 0442 62B2 31 3F LEAY -1,Y
  443. 0443 62B4 26 F7 BNE SNDDT1
  444. 0444
  445. 0445 62B6 86 FF LDA #$FF
  446. 0446 62B8 43 COMA
  447. 0447 62B9 8D 1D BSR SNDDAT crcH
  448. 0448 62BB 8D 1B BSR SNDDAT crcL
  449. 0449 *get data response
  450. 0450 62BD CKRS
  451. 0451 62BD 8D 35 BSR GETDAT
  452. 0452 62BF B6 6007 LDA RESDAT
  453. 0453 62C2 43 COMA
  454. 0454 62C3 17 0095 LBSR DSPBIN disp response
  455. 0455 62C6 81 E5 CMPA #$E5 data response?
  456. 0456 62C8 26 F3 BNE CKRS
  457. 0457 *wait until busy
  458. 0458 62CA BUSY
  459. 0459 62CA 8D 28 BSR GETDAT
  460. 0460 62CC B6 6007 LDA RESDAT
  461. 0461 62CF 43 COMA
  462. 0462 62D0 17 0088 LBSR DSPBIN disp response
  463. 0463 62D3 81 FF CMPA #$FF
  464. 0464 62D5 26 F3 BNE BUSY
  465. 0465 62D7 39 RTS
  466. 0466 **************************************************
  467. 0467 *========== sub routine ==========
  468. 0468 *send data
  469. 0469 62D8 SNDDAT EQU *
  470. 0470 62D8 34 06 PSHS A,B
  471. 0471 62DA 7F 6007 CLR RESDAT
  472. 0472 62DD C6 08 LDB #8
  473. 0473 62DF 34 02 SNDD1 PSHS A
  474. 0474 62E1 84 FC ANDA #$FC
  475. 0475 62E3 8A 03 ORA #$03 miso:b1=H(for PIA),cs:b0=L
  476. 0476 62E5 B7 F0DC STA PADAT send data
  477. 0477 62E8 8D 5F BSR SETCKL
  478. 0478 62EA 35 02 PULS A
  479. 0479 62EC 48 LSLA
  480. 0480 62ED 8D 63 BSR SETCKH
  481. 0481 62EF 5A DECB
  482. 0482 62F0 26 ED BNE SNDD1
  483. 0483 62F2 35 86 PULS A,B,PC
  484. 0484
  485. 0485 *get data
  486. 0486 62F4 GETDAT EQU *
  487. 0487 62F4 34 06 PSHS A,B
  488. 0488 62F6 C6 08 LDB #8
  489. 0489 62F8 8D 4F GETD1 BSR SETCKL
  490. 0490 62FA 12 NOP
  491. 0491 62FB 12 NOP
  492. 0492 62FC 12 NOP
  493. 0493 62FD 8D 53 BSR SETCKH
  494. 0494 62FF B6 F0DC LDA PADAT get response
  495. 0495 6302 44 LSRA
  496. 0496 6303 44 LSRA b1->C
  497. 0497 6304 79 6007 ROL RESDAT C->b0
  498. 0498 6307 5A DECB
  499. 0499 6308 26 EE BNE GETD1
  500. 0500 630A 8D 3D BSR SETCKL
  501. 0501 630C 35 86 PULS A,B,PC
  502. 0502 *
  503. 0503
  504. 0504 *input SCT No
  505. 0505 630E INSCT EQU *
  506. 0506 630E 8E 647A LDX #MSSCT
  507. 0507 6311 BD FAA4 JSR PSTRNG
  508. 0508 6314 8D 79 BSR GET8CH get 8chr, convert 4bin
  509. 0509
  510. 0510 6316 7D 6008 TST SDHC
  511. 0511 6319 26 1D BNE CALCHC
  512. 0512 *SD card
  513. 0513 631B C6 03 LDB #3
  514. 0514 631D 8E 6004 LDX #SCTN1
  515. 0515 6320 108E 6003 LDY #SCTN0
  516. 0516 6324 A6 80 SFT1 LDA ,X+
  517. 0517 6326 A7 A0 STA ,Y+
  518. 0518 6328 5A DECB
  519. 0519 6329 26 F9 BNE SFT1
  520. 0520 632B 7F 6006 CLR SCTN3
  521. 0521 *calc top adrs of sct
  522. 0522 632E CALCSD EQU *
  523. 0523 632E 78 6006 LSL SCTN3
  524. 0524 6331 79 6005 ROL SCTN2
  525. 0525 6334 79 6004 ROL SCTN1
  526. 0526 6337 39 RTS
  527. 0527
  528. 0528 *SDHC card
  529. 0529 *calc top adrs of sct
  530. 0530 6338 CALCHC EQU *
  531. 0531 6338 8E 6003 LDX #SCTN0
  532. 0532 633B 108E 6416 LDY #CMD17+1
  533. 0533 633F C6 04 LDB #4
  534. 0534 6341 A6 80 CALCH1 LDA ,X+
  535. 0535 6343 A7 A0 STA ,Y+
  536. 0536 6345 5A DECB
  537. 0537 6346 26 F9 BNE CALCH1
  538. 0538 6348 39 RTS
  539. 0539
  540. 0540 *
  541. 0541 *set sck:L
  542. 0542 6349 SETCKL EQU *
  543. 0543 6349 34 02 PSHS A
  544. 0544 634B 86 3C LDA #$3C ca2=L
  545. 0545 634D B7 F0DD STA PACTL
  546. 0546 6350 35 82 PULS A,PC
  547. 0547
  548. 0548 *set sck:H
  549. 0549 6352 SETCKH EQU *
  550. 0550 6352 34 02 PSHS A
  551. 0551 6354 86 34 LDA #$34 ca2=H
  552. 0552 6356 B7 F0DD STA PACTL
  553. 0553 6359 35 82 PULS A,PC
  554. 0554
  555. 0555 *binary(A)->ascii(A)(B)
  556. 0556 635B DSPBIN EQU *
  557. 0557 635B 34 06 PSHS A,B
  558. 0558 635D 1F 89 TFR A,B
  559. 0559 635F 44 LSRA
  560. 0560 6360 44 LSRA
  561. 0561 6361 44 LSRA
  562. 0562 6362 44 LSRA
  563. 0563 6363 8A 30 ORA #$30
  564. 0564 6365 C4 0F ANDB #$0F
  565. 0565 6367 CA 30 ORB #$30
  566. 0566 6369 81 39 CMPA #$39
  567. 0567 636B 23 02 BLS BI21
  568. 0568 636D 8B 07 ADDA #$07
  569. 0569 636F C1 39 BI21 CMPB #$39
  570. 0570 6371 23 02 BLS BI22
  571. 0571 6373 CB 07 ADDB #$07
  572. 0572 6375 BD F002 BI22 JSR OUTCHA
  573. 0573 6378 1F 98 TFR B,A
  574. 0574 637A BD F002 JSR OUTCHA
  575. 0575 637D 86 20 LDA #$20
  576. 0576 637F BD F002 JSR OUTCHA
  577. 0577 6382 35 86 PULS A,B,PC
  578. 0578
  579. 0579 *crlf
  580. 0580 6384 CRLF EQU *
  581. 0581 6384 86 0D LDA #$0D
  582. 0582 6386 BD F002 JSR OUTCHA
  583. 0583 6389 86 0A LDA #$0A
  584. 0584 638B BD F002 JSR OUTCHA
  585. 0585 638E 39 RTS
  586. 0586
  587. 0587 *
  588. 0588 638F GET8CH EQU *
  589. 0589 *input chr
  590. 0590 638F 8E 64C6 LDX #INPBUF
  591. 0591 6392 5F CLRB
  592. 0592 6393 BD F000 CLOP JSR INCHA
  593. 0593 6396 81 0D CMPA #$0D
  594. 0594 6398 27 07 BEQ INEND
  595. 0595 639A A7 85 STA B,X
  596. 0596 639C 5C INCB
  597. 0597 639D C1 08 CMPB #8
  598. 0598 639F 25 F2 BLO CLOP
  599. 0599
  600. 0600 63A1 INEND
  601. 0601 *shift
  602. 0602 63A1 5D TSTB
  603. 0603 63A2 27 11 BEQ CL1
  604. 0604 63A4 8E 64C6 LDX #INPBUF
  605. 0605 63A7 3A ABX
  606. 0606 63A8 108E 64CE LDY #INPBUF+8
  607. 0607 63AC 34 04 PSHS B
  608. 0608 63AE A6 82 SFLOP LDA ,-X
  609. 0609 63B0 A7 A2 STA ,-Y
  610. 0610 63B2 5A DECB
  611. 0611 63B3 26 F9 BNE SFLOP
  612. 0612 *clr
  613. 0613 63B5 C6 08 CL1 LDB #8
  614. 0614 63B7 E0 E0 SUBB ,S+
  615. 0615 63B9 27 0A BEQ CLEND
  616. 0616 63BB 8E 64C6 LDX #INPBUF
  617. 0617 63BE 86 30 LDA #'0
  618. 0618 63C0 A7 80 CLLOP STA ,X+
  619. 0619 63C2 5A DECB
  620. 0620 63C3 26 FB BNE CLLOP
  621. 0621 63C5 CLEND
  622. 0622
  623. 0623 *convert to bin
  624. 0624 63C5 C6 04 LDB #4
  625. 0625 63C7 8E 64C6 LDX #INPBUF
  626. 0626 63CA 108E 6003 LDY #SCTN0
  627. 0627 63CE CVT1
  628. 0628 63CE A6 80 LDA ,X+
  629. 0629 63D0 8D 1F BSR CVBIN
  630. 0630 63D2 25 16 BCS EREND1
  631. 0631 63D4 48 LSLA
  632. 0632 63D5 48 LSLA
  633. 0633 63D6 48 LSLA
  634. 0634 63D7 48 LSLA
  635. 0635 63D8 34 02 PSHS A
  636. 0636 63DA A6 80 LDA ,X+
  637. 0637 63DC 8D 13 BSR CVBIN
  638. 0638 63DE 25 08 BCS EREND0
  639. 0639 63E0 AB E0 ADDA ,S+
  640. 0640 63E2 A7 A0 STA ,Y+
  641. 0641 63E4 5A DECB
  642. 0642 63E5 26 E7 BNE CVT1
  643. 0643 63E7 39 RTS
  644. 0644
  645. 0645 63E8 35 02 EREND0 PULS A
  646. 0646 63EA 8E 64B7 EREND1 LDX #MSERR
  647. 0647 63ED BD FAA4 JSR PSTRNG
  648. 0648 63F0 39 EEND RTS
  649. 0649
  650. 0650 *--------------------
  651. 0651 *ascii -> bin
  652. 0652 63F1 CVBIN EQU *
  653. 0653 63F1 80 30 SUBA #'0
  654. 0654 63F3 2B 11 BMI CVERR
  655. 0655 63F5 81 09 CMPA #9
  656. 0656 63F7 23 0A BLS CVBEND
  657. 0657 63F9 81 11 CMPA #$11
  658. 0658 63FB 25 09 BLO CVERR
  659. 0659 63FD 81 16 CMPA #$16
  660. 0660 63FF 22 05 BHI CVERR
  661. 0661 6401 80 07 SUBA #7
  662. 0662 6403 CVBEND
  663. 0663 6403 1C FE ANDCC #$FE reset C
  664. 0664 6405 39 RTS
  665. 0665 6406 1A 01 CVERR ORCC #$01 set C
  666. 0666 6408 39 RTS
  667. 0667 **************************************************
  668. 0668 *
  669. 0669 *========== parameter ==========
  670. 0670 6409 40 CMD0 FCB $40,$00,$00,$00,$00,$95 '@
  671. 0671 640F 41 CMD1 FCB $41,$00,$00,$00,$00,$FF 'A
  672. 0672 6415 51 CMD17 FCB $51,$00,$00,$00,$00,$FF 'Q
  673. 0673 641B 58 CMD24 FCB $58,$00,$00,$00,$00,$FF 'X
  674. 0674 6421 48 CMD8 FCB $48,$00,$00,$01,$AA,$87 'H
  675. 0675 6427 7A CMD58 FCB $7A,$00,$00,$00,$00,$FF 'z
  676. 0676 642D 77 CMD55 FCB $77,$00,$00,$00,$00,$FF 'w
  677. 0677 6433 69 ACMD41 FCB $69,$40,$FF,$80,$00,$FF 'i
  678. 0678 6439 49 CMD9 FCB $49,$00,$00,$00,$00,$FF 'I
  679. 0679
  680. 0680 *
  681. 0681 643F 31 MSMENU FCC /1:Read Sct, 2:Write Sct, 3:Get SD data, 4:SD Init, 9:End: /
  682. 0682 6479 04 FCB 4
  683. 0683 647A 53 MSSCT FCC /SctNo: /
  684. 0684 6481 04 FCB 4
  685. 0685 6482 57 MSWROK FCC /Write OK?: /
  686. 0686 648D 04 FCB 4
  687. 0687 648E 53 MSSD0 FCC /SD Card/
  688. 0688 6495 04 FCB 4
  689. 0689 6496 53 MSSD1 FCC /SDHC Card/
  690. 0690 649F 04 FCB 4
  691. 0691 64A0 53 MERR FCC /SD Initialize error!/,$0D,$0A
  692. 0692 64B6 04 FCB 4
  693. 0693 64B7 49 MSERR FCC /Input error!/,$0D,$0A
  694. 0694 64C5 04 FCB 4
  695. 0695 ***************************************
  696. 0696 64C6 FF INPBUF RMB 8
  697. 0697
  698. 0698 END START
  699.  
  700. 0 error(s), 0 warning(s) is detected.
  701.  
  702. Label address
  703. ACMD41 6433 ASC411 612B ASCMD41 6123 BI21 636F BI22 6375
  704. BUSY 62CA CALCH1 6341 CALCHC 6338 CALCSD 632E CKRS 62BD
  705. CL1 63B5 CLEND 63C5 CLLOP 63C0 CLOP 6393 CMD0 6409
  706. CMD1 640F CMD17 6415 CMD24 641B CMD55 642D CMD58 6427
  707. CMD8 6421 CMD9 6439 CPY1 61EA CPY2 6272 CRLF 6384
  708. CVBEND 6403 CVBIN 63F1 CVERR 6406 CVT1 63CE DSPBIN 635B
  709. DSPD1 621F DSPD2 623B DSPDAT 621D EEND 63F0 EREND0 63E8
  710. EREND1 63EA GET8CH 638F GETD1 62F8 GETDAT 62F4 GETSD 619D
  711. GR00 608C GR2580 6160 GR2581 617F GR2582 6181 GR410 6134
  712. GR550 6112 GR580 60E4 GR581 60F2 GR582 60F4 GR80 60B3
  713. GR81 60C1 GR82 60C3 GR90 61B1 GR91 61C4 INCHA F000
  714. INEND 63A1 INIT 602D INPBUF 64C6 INSCT 630E ISTT 6071
  715. MAIN 6009 MEN2 6044 MEN3 604D MEN4 6056 MEN5 605F
  716. MENU 602F MERR 64A0 MON F800 MSERR 64B7 MSMENU 643F
  717. MSSCT 647A MSSD0 648E MSSD1 6496 MSWROK 6482 OKEND 61D8
  718. OUTCHA F002 PACTL F0DD PADAT F0DC PSTRNG FAA4 RESDAT 6007
  719. RPT41 6101 RWBUF 6600 SC01 6082 SC2581 6157 SC551 6109
  720. SC581 60DB SC80 60AA SC91 61A5 SCMD0 607A SCMD258 614F
  721. SCMD55 6101 SCMD58 60D3 SCMD8 60A2 SCTN0 6003 SCTN1 6004
  722. SCTN2 6005 SCTN3 6006 SD1 6199 SDERR 61D2 SDHC 6008
  723. SDINIT 6069 SDR1 61F9 SDR2 6205 SDRD 61DB SDW1 6281
  724. SDW2 628C SDWR1 6263 SDWRT 6253 SETCKH 6352 SETCKL 6349
  725. SFLOP 63AE SFT1 6324 SNDD1 62DF SNDDAT 62D8 SNDDT1 62AD
  726. START 6000 VN 6002
 


プログラムのメニュー部です。

1:Read Sct, 2:Write Sct, 3:Get SD data, 4:SD Init, 9:End:
メニューの1や2を選択するとセクタ番号を聞いてくるので、入力するとそのセクタの内容が読み込まれたり、そのセクタにバッファの内容が書き込まれます。
3でSDの情報を表示したりすることもできます。

モニタ中のサブルーチンとして INCHA, OUTCHA, PSTRNG を使用していますが、それ以外は特別なものはないので、6809機で6821さえあればSDカードが読み書きできることになります。