表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
36/36

エピ27 MZ80のディスプレイに書いたプログラム


 ***


 エピ27 MZ80のディスプレイに書いたプログラム


 ***


 ディスプレイコードを D000h〜 番地に書込むと対応する文字が画面に表示されます。MZ80のハードウェアはそうなっているのです。


 D000h〜D3FFh 番地には2114というRAMが2個あります。1個で 1024 x4ビットで、2個で 1024 バイトです。回路図を見ると、このRAMを繰り返し読み出してフォントデータが入っているROMを参照してビデオ信号を作ってます。


 D000h〜D3FFh 番地は、その1バイトが画面上の1文字と対応する特殊なメモリです。


 ですが。CPUからはメモリとして普通に読み書きできるのです。書込みだけではなくて読出しもできる。つまり。D000h〜 番地に機械語のプログラムを書き込んで、そこにジャンプしたら、...実行できるのです。


 画面にデータを書き込むのは、...GETL の1行入力中ならキーボードから入力できる。つまりプログラムを書ける? これは!


 今回はそんな話です。


 ***


 マイコン老人会の方にはお馴染みのフレーズ「ネ木1ネキイチネ木4ネキヨンイッて」とは、画面に書いた機械語なのです(...、個人の妄想です。宜しくお願い致します)。


 挿絵(By みてみん)

 内容はROMルーチンの 0021h と 0024h をコールするものです。

 プログラムを LOAD した直後ならROMワークエリアの 10F0h〜116Fh には値が残っていて、これを流用して 0021h と 0024h をコールすればプログラムを SAVE できる、と言う次第です。


 ググると実際の使い方の指南や、更に詳しい解説をするページが見つかります。中でも「シャープ博物館」と言う名のサイトの「画面に直接マシン語を書く?」という記事はお薦めです(参考文献の[W02])。「ネ木1ネ木4」が生まれた経緯が説明されていて。更には機械語入力ツールを画面に書いています。


 ディスプレイコードでZ80の機械語を書く人がいるとは。格好良い!


 *

 *

 *


 月刊アスキーの1980年8月号に掲載された読者投稿「あっとおどろく(?)プログラム」がこの話の始まりでした。


 この時に示されたのは次の 35 文字です(注:画面では1行で入力します)。


 挿絵(By みてみん)


 編集部は「簡単な暗号です。是非解き明かして下さい」とコメントしています。


 宜しい。ならば戦争、...ではなくて逆アセンブルデコードしましょう。

 MZ80のディスプレイコードとZ80の機械語を知っていれば簡単な作業です。紙面の写真から文字を判別するのが一番難しいかもね。投稿者と編集部の補足を頼りに推測したけど、...。多分合っていると思いますが違ってたらゴメンね。


   D000: 2178D0 : LD HL,D078h

   D003: 1600  : LD D,00h

   D005: 0E10  : LD C,10h

   D007: 0610  : LD B,10h

   D009: 7A   : LD A,D

   D00A: 77   : LD (HL),A

   D00B: 23   : INC HL

   D00C: 23   : INC HL

   D00D: 14   : INC D

   D00E: 05   : DEC B

   D00F: AF   : XOR A

   D010: B8   : CP B

   D011: C209D0 : JP NZ,D009h

   D014: C5   : PUSH BC

   D015: 010800 : LD BC,0008h

   D018: 09   : ADD HL,BC

   D019: C1   : POP BC

   D01A: 0D   : DEC C

   D01B: AF   : XOR A

   D01C: B9   : CP C

   D01D: C207D0 : JP NZ,D007h

   D020: C38200 : JP 0082h


 あ〜〜、なるほどですね。コードを整理してBASIC風に書き直すと、


   10 HL=D078h : D=00h

   20 FOR C = 16 TO 1 STEP -1

   30  FOR B = 16 TO 1 STEP -1

   40   [HL]=D : HL=HL+2 : D=D+1

   50  NEXT B

   60  HL=HL+8

   70 NEXT C

   80 JP 0082h


 [HL] に D を転送するのが目的。

 D は 00h〜FFh と変化。HL は D078h = D000h+40*3 から +2 増を 16 回した後 +8 する。つまり 2*16+8 = 40 増える。これを 16 回繰り返す。


 つまり、画面の4行目から16x16で全ディスプレイコードを表示するのです。


 全国の素朴なマイコン少年たち(中高生だよ)がこの 35 文字を入力して、GOTO$D000 したら...。吃驚するのが目に浮びます。きっとすごく楽しい体験だよ。


 *


 夏休みとかにね。自分で組み立てた鉱石ラジオのイヤホンから聞こえる音声とか。何でもよいので。お父様はお子様に原始的な体験を沢山させてあげて下さいな。ブラックボックスてんこ盛りなデジタル体験の前にね。


 *

 *

 *


 「ネ木1ネ木4」の起源となった月刊アスキー1980年11月号の読者投稿は、8月号を見て投稿したものですって。


 それから、アスキー編集部は「→」を「アッチヤジルシ」と呼び、「スペース」も略さずに詠唱してます。詠唱は大切ね。


 *


 「ネ木1ネ木4」を逆アセンブルすると(...「→」はカーソル制御文字、「_」はスペース)、


   ネ   :AF   :XOR A

   木1_ :D42100 :CALL NC,0021h

   ネ   :AF   :XOR A 

   木4_ :D42400 :CALL NC,0024h

   →__ :C30000 :JP 0000h


 です。うーん。読者投稿のより洗練されてます。当時のパソコン雑誌の編集部はマニアの巣窟だからな。燃え上がったのかも。


 でもこれが最適かなと考えていたら、


   Q__ :110000 :LD DE,0000h

   金   :D5   :PUSH DE

   ┣4  :1E24  :LD E,24h

   金   :D5   :PUSH DE

   →1_ :C32100 :JP 0021h 


 というコードを思い付きました。


   ネ木1_ネ木4_→__

   Q__金┣4金→1_


 1バイト短くできたよ。スペースもカウントするとだけど。


 *


 けど。「キューキンヨンキンイッてイチ」か。...。


 「ネ木1ネキイチネ木4ネキヨンイッて」の方がゴロが良くて覚え易くてキー入力も良さそう。


 ゴロが良いのはポイントですよね。「ネ木1 ネ木4」の別解として、DCh (CALL C,nm) を使い、C のセットを 37h (scf) で行なうと、「┃円1_┃円4_→__」になります。タテエンイチ,タテエンヨン,...。ちょっとしょんぼりする。そもタテ線が難しい。


 キー入力もね。「┃」もだけど。C のクリアを BFh (cp A) で行なうと「ー」(カナの長音)なんだけど、マイナスとかグラフィック文字の横長と紛らわしくて減点。

 「ネ」(AFh, xor A) は分かり易いのです。「テ」(97h, sub A) も良いかもだけどさ。うーむ。


 *


 ググっていたら「ネ木1_ネ木4_→コ_」というコード?を見つけました。「コ」はカタカナのコで、ディスプレイコードは 82h です。

 最後の命令を


   →コ_ :C38200 :JP 0082h


 として、セーブ終了後にSP1002のメインループに戻すのです。0000h に行って初期化から始めても特に困らないと思いますけど、メインループに戻った方がスマートかな。ちょっとした改良ですね。

 これに倣うと、


   Qコ_金┣4金→1_ (キュウ,コキン,ト,ヨンキン,イッテ,イチ)


 ど、どうかな? 少しゴロが良くなってなくない?


 *

 **

 ***


 間違いの指摘とか疑問とか、ご意見・ご感想とかありましたら、どうぞ感想欄に!


 ***

2026.5.1 微推敲

2026.5.2 微推敲

2026.5.3 微推敲。連日かよ

2026.5.8 エピタイ修正



評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

↑ページトップへ