第5回:AUTORUN TOOL・改

シャープのPC-E500など一部のポケコンでは、電源を入れると自動的にBASICプログラムを実行してくれる
いわゆる「AUTO RUN機能」というものがあります。

このAUTO RUN機能は便利なのですが、残念ながらE200/G800シリーズには搭載されていません。
そこで、「ないものは作る!」の精神で松田淳氏がE200/G800シリーズ用の『AUTORUN TOOL』を制作し、
ポケコンジャーナル91年9月号で発表されました。

しかし松田淳氏のプログラムでは、C言語を搭載している機種やアセンブラを起動させると
うまく動かなくなるので、一部改良したものをここで公開します。

▼準備するもの▼

『RUN』で実行できるBASICプログラムを用意しておいてください。

▼入力方法▼

「AUTORUN TOOL・改」用に新たにユーザーエリアを確保する必要はありません。
40H〜0BFHまで「AUTORUN TOOL・改 ダンプリスト」を手で入力して下さい。
※短いプログラムなのでシリアル転送用のインテルヘキサ形式のリストは用意されていません。ご了承ください。

(注意!)ソースリストを入力してアセンブルする事はできません。
なぜならポケコン実機の場合、ソースリストの最初の行のORG命令の
先頭アドレスが100Hよりも小さなアドレスに設定した場合、アセンブル時にエラーが出るからです。

▼実行方法▼

RUN MODEで、POKE &H50,&HC3[RETURN]としてください。
※CALLではなくPOKEなので注意してください。

プログラムを実行しても見た目は何も変わりませんが、
この時点で「AUTORUN TOOL・改」は機能しているので一度電源を落としてください。
そして再び電源を入れると自動的にBASICプログラムを実行するようになります。

「AUTORUN TOOL・改」を解除したい時はRUN MODEで、[SHIFT]+[OFF]を押してください。
これで次回から電源を入れてもBASICプログラムは自動的には実行されなくなります。

▼プログラムを分析してみる▼

オリジナル版はダンプリストで掲載されていたので、まずは逆アセンブルしてソースリストを作ってみました。
予想以上に高度なプログラムだったので正直ほとんど分かりませんでしたが・・・

かろうじて理解できた事は、この『AUTORUN TOOL』はポケコンの電源を入れると
ポケコンが勝手に[SHIFT]+[V]、[RETURN]の順でキーを押していってくれるプログラムである、という事でした。
やっぱりポケコンは奥が深いなぁ。

▼悪用禁止!!▼

勘のいい人ならお気付きかも知れませんが、キーコード(ソースリスト540行〜)を変える事により、
オリジナルの「AUTO ◯◯◯ TOOL」が簡単に作れてしまいます。

しかし、これを悪用するとウイルスなみの卑劣なソフトも作れてしまいます。
ここではやり方は説明しませんが、くれぐれも悪用だけはしないでください。



「AUTORUN TOOL・改」ダンプリスト

0040:
(59)
 4D 41 43 48 49 4E 45 20
 4C 41 4E 47 55 41 47 45
0050:
(37)
 00 59 00 CD 7B 00 C3 B8
 BF AF 32 50 00 3E C3 2A
0060:
(DE)
 51 00 11 16 00 19 22 FB
 78 32 FA 78 C3 53 00 FE
0070:
(C3)
 01 20 07 F5 3E C3 32 50
 00 F1 C9 C3 A6 00 00 00
0080:
(03)
 00 00 00 00 00 00 22 FE
 78 32 FD 78 FB C9 00 00
0090:
(B1)
 2A 8E 00 7C B5 C8 00 7E
 23 B7 20 02 67 6F 22 8E
00A0:
(91)
 00 C1 E1 D1 C1 C9 3E B4
 32 8E 00 F3 21 90 00 3E
00B0:
(C8)
 C3 C3 86 00 94 28 00 00
 00 00 00 00 00 00 00 00


(参考)「AUTORUN TOOL・改」ソースリスト
オリジナル版を逆ハンドアセンブルして、更にプログラムに手を加えたものです。

10      ORG  40H
20      DB   ’MACHINE LANGUAGE’;おまじない
30STA:  DB   0          ;0C3Hになったり0になったり
40LA6:  DB   59H,0      ;NEXに行く為
50LA2:  CALL LA1
60      JP   0BFB8H
70NEX:  XOR  A
80      LD   (STA),A
90      LD   A,0C3H
100     LD   HL,(LA6)
110     LD   DE,16H
120     ADD  HL,DE
130     LD   (78FBH),HL ;LA8に行く為
140     LD   (78FAH),A
150     JP   LA2
160LA8: CP   1
170     JR   NZ,LA3
180     PUSH AF
190     LD   A,0C3H
200     LD   (STA),A
210     POP  AF
220LA3: RET
230LA1: JP   LA9
240     NOP             ;意味無し?
250     DS   7          ;7FH〜85Hまで空ける
260LA0: LD   (78FEH),HL
270     LD   (78FDH),A
280     EI
290     RET
300LA4: DW   0
310LA5: LD   HL,(LA4)
320     LD   A,H
330     OR   L
340     RET  Z
350     NOP             ;意味無し?
360     LD   A,(HL)
370     INC  HL
380     OR   A
390     JR   NZ,LA7
400     LD   H,A        ;この2つで
410     LD   L,A        ;「LD HL,0」になります
420LA7: LD   (LA4),HL
430     POP  BC
440     POP  HL
450     POP  DE
460     POP  BC
470     RET
480LA9: LD   A,0B4H     ;この5行分は
490     LD   (LA4),A    ;7FH〜85Hのプログラムを
500     DI              ;移動させてきたもので
510     LD   HL,LA5     ;ここがAUTORUN TOOLの
520     LD   A,0C3H     ;「改」の部分です
530     JP   LA0
540     DB   94H        ;[SHIFT]+[V]のキーコード
550     DB   28H        ;[RETURN]のキーコード
560     DB   0          ;キー入力ENDコード(必要)
570     DS   9          ;0B7H〜0BFHまで「00」で埋める

※「AUTORUN TOOL」は松田淳氏に著作権があります。



もっと知りたいINDEX第1回第2回第3回第4回第5回第6回第7回第8回

TOPページに戻る
 
  inserted by FC2 system