LoginSignup
0
0

More than 1 year has passed since last update.

3byteのリセットコマンド(PC-98)

Posted at

PC-98

3バイトのリセットコマンドの中身

ずいぶん前にどこからか拾ってきたリセットコマンドはたったの3バイト。
どんな中身か調べてみた。

sdasm.exeで逆アセンブルした。いつまでも逆アセンブルが終わらないので、途中でctrl+Cして出力されたものをVzで追ったら下のような部分があった。

1E61:0100 E6F0                  out     0F0h,al 
1E61:0102 1A00                  sbb     al,[bx+si] 

この2行をもとにつぎのようなコードを作成し、アセンブラにかける。

開発環境
Turbo Assembler Version 2.0 Copyright (c) 1988, 1990 Borland International

r7.asm
;;;  r7.com
code segment
	assume cs:code, ds:code
	org 100h
start:
	out 0f0h,al
	sbb al,[bx+si]
code ends
end start

すると、4バイトのcomファイルができる。
逆アセンブルしても、結果は一緒。

1E61:0100 E6F0                  out     0F0h,al 
1E61:0102 1A00                  sbb     al,[bx+si] 

unixtoolのodでダンプすると、やっぱり一緒。
でも、r7.comは2行目が4になっている。

A:\>od -x r7.com
0000000  f0e6 001a
0000004

A:\>od -x r.com
0000000  f0e6 001a
0000003

r7.comをedix.comでダンプすると次のようになった。

segoffset +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F  sum 0123456789abcdef
3E53:0000 E6 F0 1A 00 00 00 00 00-00 00 00 00 00 00 00 00  :F0 跼..............
---------------------------------------------------------------
check_sum E6 F0 1A 00 00 00 00 00 00 00 00 00 00 00 00 00  :F0

r.com(3バイト)をedix.comでダンプすると、

segoffset +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F  sum 0123456789abcdef
3E7D:0000 E6 F0 1A 00 00 00 00 00-00 00 00 00 00 00 00 00  :F0 跼..............
---------------------------------------------------------------
check_sum E6 F0 1A 00 00 00 00 00 00 00 00 00 00 00 00 00  :F0

やっぱり同じに見える。
でも、vzで読み込むと、4バイトのほうは次のようになっている。
(^Z^@は制御文字)

跼^Z^@

3バイトのほうは

の1文字だけ。
そこで、4バイトのほうをVzで読んで^Z^@を消して保存。
すると、ファイルサイズが3バイトになった。

-a--rwx       3 Apr  3 2022 16:18 r7b.com

このファイルを起動すると、無事(?)リセットされた。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0