エピ20 誤り訂正符号(CIRC)についてです。
***
CDの誤り訂正符号(CIRC)についてです。
CIRCは、Cross Interleaved Reed-solomon Code の頭文字です。クロスインタリーブとか、リードソロモンとか、カッコイイのですね。
でもCIRCの詳細に入る前に少し余談を...。
***
ご年配な方はご存知かご経験があるかと思いますが。昔のパソコン雑誌にはプログラムリストが掲載されていまして。
初期にはベーシックと機械語でした。当時のマイコン少年たちは(今は老、...いえなんてもないです)これを手入力していたそうです。カセットテープでの配布(有償)もありましたが。3,500 円とかで。今ならスキャンしてOCRですね。
当然に入力ミスがあって、プログラムが動かない(暴走する)のでプログラムリストと見比べて間違いを探すことになります。
ベーシックは、プログラムリストを見れば意味が分かり、暴走してもブレーク(実行中止)できて、デバッグ用の仕組み(トロンなど)も用意されているのですが。トロンが役に立ったかは不明ですけど。
機械語は、システムよりのプログラムだとアセンブルリストが掲載されることも無くはないのですが、多くは 16 進数のダンプリストです。紙面の都合でしょう。
それから機械語のプログラムは、暴走したらパソコンをリセットするしかなかったり。初期のマイコンには(標準では)OSは無かったからね。...、ワンボードの頃から CP/M というOSはありましたけど。PC-8001等はスイッチ・オン・ベーシックでした。
*
延々と続く 16 進数から入力ミスを探すなんて大変なことですね。
それで入力したプログラムを逆アセンブラでアセンブルリストに変換して、「CD」や「C9」とか「21」とは何かを学んで徐々に機械語に詳しくなるのです。逆アセンブラを使わずに 16 進数ダンプを目視で逆アセンブルできる方もいたとか。ソロバンの達人は暗算もできるのと似ている?
どうしても間違いが見つからないと、空きエリアにデバッグ用のサブルーチンを用意して、怪しい部分から呼び出してレジスタの値を画面表示したり、キー入力待ちにして暴走するタイミングを細かく調べたり、...と色々していたのでしょう(個人の妄想です)。
そうこうしている間に翌月号が出て、バグ報告があることも。
読者コーナーを読んでいたら「...チェックサムに虫がいっぱいいたのでお知らせします」という投稿を見つけて絶句、トホっ。
入力ミスを見つけているうちに(...かどうか分かりませんが)、プログラムリストの間違いを指摘できるまでにレベルアップした読者がいる?
*
閑話休題。
機械語の 16 進数ダンプリストには1行毎にチェックサムが付いていました。
チェックサムは1行の各バイトを加算した値の下位1バイトです。1バイトではなくて 16 進数で3桁(1.5 バイト)のことや、ダンプリストとは別に 128 バイト毎の合計を掲載するなど、雑誌や記事によって色々あったようです。記事によっては付いて無かったりもしましたが (;_;)
チェックサムが付いていれば、まずはそれを手掛かりとして間違いを探すことができるのです。
でも2バイトを間違うと、例えば「.. 11 22 ..」を「.. 22 11 ..」と入力してしまうとチェックサムは同じ値になってしまいます。単に加算しているだけですから。
これでは入力ミスが見つからないと考案されたのが「タテ・ヨコ・チェックサム」です。
タテ・ヨコ・チェックサムでは、ダンプリストを 256 バイト毎に、16 行 16 列にして、縦と横のチェックサムを計算するのです。集計表などで、縦と横で合計があるのと雰囲気は同じです。
タテ・ヨコ・チェックサムならば、「.. 11 22 ..」を「.. 22 11 ..」と間違えた場合、横方向のチェックサムでは違いが分かりませんが、縦方向のチェックサムが違うので、入力ミスが分かるのです!
データ通信などで使われるパリティビットには水平パリティと垂直パリティという、縦と横の2つのパリティが付いていることもありますが、これと発想は同じ。
*
探した範囲では、雑誌I/Oの1981年5月号でタテ・ヨコ・チェックサムの存在を確認しました。
5月号ではチェックサムの見方を解説していて、「"Sum:" で始まる部分が今回新しく付けた縦C.S.です」とあるので、これがタテ・ヨコ・チェックサムの最初かも知れません。
編集部の方が考案されたのかな。ありがとうございます。
*
タテ・ヨコ・チェックサムには、誤り訂正符号について2つの要素があります。
1つは 16 バイトについての「チェックサム」という符号を計算すること。もう1つは「タテ」と「ヨコ」でチェックサムが2つあることです。
CIRCにも2つの要素があって、それはタテ・ヨコ・チェックサムの2つの要素を強化したものなのです。
チェックサムは、CIRCではリードソロモン符号に相当します。単純な加算であるチェックサムよりも誤り訂正能力が強化されたものです。
タテ・ヨコは、クロスインタリーブに相当します。クロスインタリーブは、タテ・ヨコよりもやや複雑になっていることが違いますけど、基本は同じ。
各々について解説しましょう。どちらかを先にしようかな。ウキウキ!
***
**
*
もう少し余談をしてもよいよね? ...、あ、はいOKですね。
*
1980年前後の雑誌を読んでいると、ダンプリストの入力用プログラム(16 進数キー入力)やチェックサム計算プログラム、逆アセンブルリストの表示プログラム、機械語のステップ実行やブレークポイントの設置ができるデバック・ツール、...等などが掲載されています。
必要に迫られた方が開発したんでしょうね。多分。大人でプロな方ならアイスとかロジアナを使って効率的にデバッグできるのですけど、中高生ですから(大学生も入る?)。...あ、ロジアナの製作記事がある。誰だ?
機械語のステップ実行はどうやって実現したのでしょうか?
本文を読んでみると、プログラム(ソフト)で機械語の動作をエミュレートしたという記事と、マイコン自体にステップ実行を支援する素敵な回路があることに気がついて、それを利用したという記事がありました。
前者もすごいけど、後者もすごいよね。どうして気がつくのかと。
それは、雑誌I/Oには編集部の独自解析により作成されたマイコンの回路図が掲載されていたから、ですって。
そうなのかと探してみたら回路図を掲載した記事が沢山見つかりました。
・1979年11月号、MZ-80K全回路図、p.193〜
・1980年12月号、PC-8001全回路図、p.209〜
・1981年 3月号、ベーシックマスター・レベル3全回路図集、p.130〜、
・1981年 5月号、MZ80Bを解剖する、p.193〜(全回路図は p.209〜)
・1982年 3月号、ベーシックマスターJr.全回路図、p.291〜
・1982年11月号、PASOPIA全回路図公開、p.361〜
・1982年12月号、CASIO FP-1100全回路図、p.392の次〜
・1983年 3月号、SMC-70回路図集、p.369〜
・1983年 4月号、FM-7全回路図、p.281〜
・1983年 4月号、PC-6001解析+全回路図、p.301〜
・1983年 6月号、X1全回路図、p.329〜
・1983年 9月号、PASOPIA7全回路図、p.329〜
・1984年 6月号、日立MB-S1全回路図、p.321〜
・1984年 9月号、MZ-1500全回路図、p.337〜
・1985年 4月号、シャープX1Turbo全回路図、p.337〜
・1985年12月号、MZ-2500全回路図、p.329〜
・1987年 6月号、MZ-2861全回路図公開、p.172〜
・1987年 7月号、X68000全回路図、p.249〜
・1987年 8月号、PC-88VA全回路図公開、p.241〜
MZやPCを始めとしてメジャーなマイコンは回路図が出てますね。マイナーなのもありますが(笑)
公式のマニュアル類に回路図等が記載されている場合や、メーカから図面等の提供を受けた場合もあるようですけど。編集部にはマイコンにとても詳しい方が集まっていたのでしょう。
これが4大マイコン雑誌の力か。
目次を見ると、ソフトの記事と共にハードの記事も目に付きます。本体の改造や拡張ボード、周辺機器の作製記事などです。1990年代の「自作パソコン」とは世界が違う感じ。
*
マイコン少年たちの中にはナイコン少年とも言われるマイコンを所持していない方もいて、彼らは家電量販店のマイコンコーナやビットインなどに入り浸っていたと聞きます。ビットインは昼間はマイコン教室があって、夕方はマイコン少年たちにも開放されていたとか。
雑誌のプログラムリストを入力していると、横の席の人達が「ちょっといいかな」と話しかけてきて、彼らが入力したプログラムをコピーさせてくれたり(...、それ私が入力中のやん!)。
お返しに手持ちのカセットテープを出してみたりしてもボッチな奴の手持ちは知れていて、あぅあぅとするが、何故か来週の予定を交換することに。
そんな放課後も楽しそう。これも1980年代か(個人の妄想です)。
*
ハ レ タ ヒ ニ ハ、コ ウ エ ン ニ イコウ
***
間違いの指摘とか疑問とか、ご意見・ご感想とかありましたら、どうぞ感想欄に!
***
2025.4.6 微推敲。
2025.4.27 推敲。図を追加。
2025.5.1 微推敲。
2025.5.2 微推敲。
2025.5.4 微推敲。
2025.5.12 推敲。
2025.5.13 加筆と微推敲。
2025.5.14 微推敲。
2025.5.21 微推敲。
2025.5.22 微推敲。
2025.5.28 微推敲。
2025.7.4 微推敲。




