#11 Article 4132 Posted at 1990/03/26 00:27:14 by NOZOMU (MAP041) [PRG.ML1]

Subject: 今更mx1についての説明でふ。

mx1とは?

 現在CG・Techボードで使われているML1形式のグラフィックデータは、バイナリィ形式
のため、そのままではボード上でやりとりする事ができません。 そこで、ボード上で
あつかえるデータ形式とバイナリィ形式との、相互の変換をする必要があります。
その変換方式として考案されたのがmx1です。
 この手の変換ではishという形式が有名で、普及しています。 ishは大変優れた変換
形式で、通信時の文字化けや文字抜けも、ある程度までは訂正してしまいます。
では、なぜishを使わないかというと、ishは移植があまり簡単ではないので、ml1が
ishのない機種に移植された場合の事を考えて、より簡単な変換形式を用いました。


 mx1の変換形式

 バイナリィからテキスト形式への変換は、

 MSB  LSB
 76543210  76543210  76543210  76543210  76543210  76543210  76543210
 MSB  LSB                         ↓
 _7654321  _0765432  _1076543  _2107654  _3210765  _4321076  _5432107  _6543210
 (_は0固定)

 という変換をし、その7bitのデータを

$21,$23,$24,$25,$26,$28,$29,$2A,$2B,$2D,$2E,$2F,$30,$31,$32,$33
$34,$35,$36,$37,$38,$39,$3A,$3B,$3C,$3D,$3E,$3F,$41,$42,$43,$44
$45,$46,$47,$48,$49,$4A,$4B,$4C,$4D,$4E,$4F,$50,$51,$52,$53,$54
$55,$56,$57,$58,$59,$5A,$5B,$5D,$5E,$5F,$61,$62,$63,$64,$65,$66
$67,$68,$69,$6A,$6B,$6C,$6D,$6E,$6F,$70,$71,$72,$73,$74,$75,$76
$77,$78,$79,$7A,$7B,$7C,$7D,$7E,$A1,$A2,$A3,$A4,$A5,$A6,$A7,$A8
$A9,$AA,$AB,$AC,$AD,$AE,$AF,$B0,$B1,$B2,$B3,$B4,$B5,$B6,$B7,$B8
$B9,$BA,$BB,$BC,$BD,$BE,$BF,$C0,$C1,$C2,$C3,$C4,$C5,$C6,$C7,$C8

  というキャラクターコードに変換し、78biteごとに$0d,$0aを入れます。
 つまり1行78文字+CR・LFの80biteにします。
 そして、データの先頭に

@@@ file_name by handle : title ( ##lines) @@@

 データの最後に

@@@ file_name by handle : title (end of data) @@@

 という1行を加えます。  file_name は ml1データのファイルネーム、
handle と title はml1データのヘッダーから、 ## は上の2行を含んだ
mx1データの行数を入れます。


 テキスト形式からバイナリィ形式の変換は、この逆をやります。


 以上がmx1の変換形式です。 御不明の点などありましたら、MAP041 NOZOMUまで
mailにて御質問下さい。


*** emacsの文字→16進マクロが役に立ったなぁ。 NOZOMU ***

P.S.文中biteという表記はbyteの誤りです。(笑い)