兵庫県加古郡高砂町（現高砂市）生まれ。1935年明治大学中退、松永健哉と出会い、紙芝居に関わる。その前年、東北大冷害の取材のために岩手県を訪れ、宮沢賢治とその前年の死去を知る。その後、賢治の実弟である宮沢清六の知遇を得て、賢治の事績について研究を始める。戦後は1948年民主紙芝居集団、1968年子どもの文化研究所に参加。また、農山漁村文化協会や全日本社会教育連合会に勤務した。1966年、宮沢賢治の編年体伝記『年譜宮澤賢治伝』（図書新聞社）を刊行する。従来の年譜や伝記より詳細な内容であった。すぐに売り切れ、版元から増刷を求められたが、資料が発掘中で賢治全集もまだ不完全として固辞したという。堀尾の賢治研究は、『校本宮澤賢治全集　第14巻』（筑摩書房、1977年）の「年譜」で集大成され、原稿用紙1000枚・300ページという、より詳細で浩瀚なものとなった。この「年譜」は1991年に抜粋された単独書籍として刊行された。堀尾の没後に編集された『【新】校本宮澤賢治全集』でも、その後の研究で考証が見直された箇所はあるものの、基本的には堀尾が作成した年譜がベースとなっている。1970年『こねこちゃん』で高橋五山賞受賞。1991年9月には、花巻市が設立した「宮沢賢治学会イーハトーブセンター」から宮沢賢治賞を受賞したが、その2ヶ月後に亡くなった。
VMEバスは、68000の持つピンをそのままバックプレーンに出力したようなものである。多くの場合、これは良い設計とは言えない。バスを使えるチップセットが限られてしまうからである。しかし、68000は 32ビットのフラットなメモリモデルを持つことが特徴であり、VMEは68000ベースの設計ではあるものの、68000の設計が汎用性が高いために広く使われるようになったのである。VMEはデータとアドレスそれぞれに分離した32ビットバスを持っている。実装としてのMC68000自身の物理外部バスとしては、アドレスは24ビットで、データは16ビットであるが、(内部)アーキテクチャとしては68000は32ビットであり（アドレス空間は24ビットだったが、32ビットへの拡張を前提にできた）、VMEの設計者はシリーズの将来のプロセッサでの、完全な32ビット実装を見据えていた。どちらのバス幅にも対応するため、VMEではふたつの Eurocard コネクタ P1 と P2 を使用する。P1 には 32本のピンが 3列あり、24ビットのアドレスバスと 16ビットのデータバス、その他の制御信号などがこのコネクタを通る。P2 にはもう一列のピンがあり、残りの アドレス 8ビット分と データ 16ビット分がセットされている。バスを制御するため、9本のarbitration bus（調停バス）が使用される。全ての通信はバスにセットされたarbiter module（調停モジュール）カードが制御する。ラウンドロビンと優先順位方式の2種類の調停モードが用意された。調停モードに関わらず、カードはバスマスターになるために4つある Bus Request 線のいずれかを low にする。ラウンドロビン調停の場合、Bus Request 線 BR0-BR3 をほぼ同時に low にしてバスマスターになろうとしたカードがあった場合に、調停モジュールはこれらをラウンドロビン・スケジューリングで順次バスマスターとするよう調停する。優先順位調停の場合、BR0-BR3 には固定の優先順位が割り当てられ（BR0 が最低で BR3 が最高）、調停モジュールは最も高い優先順位でバスマスターになろうとしているカードをバスマスターにする。調停モジュールがどの要求を受け付けるかを決定したら、対応する Bus Grant 線（BG0 - BG4）をアサートしてバスマスターの権利を与えることを通知する。複数のカードが同時に同じ BR 線でバスマスターになろうとしていた場合、調停モジュールに近い方が優先される。バスマスターとなったカードはバスが使用中であることを示すため、Bus Busy (BBSY*) をアサートする。この時点で最初に要求を出したカードがバスの使用権を得る。データを書き込むには、アドレスとデータをバスに出力し、address strobe線 と二本の data strobe線を low にしてデータがレディ状態であることを示し、書き込み線を low にして処理を実行する。data strobe が二本あるのは、その組み合わせによってデータサイズを指定するため（8ビット、16ビット、32ビット、そしてVME64ではさらに 64ビット）である。指定されたアドレスを持つカードはデータを読み込み、data transfer acknowledge線を low にして完了を知らせる（あるいは必要ならbus error線）。データの読み込みも基本的には同じだが、カードが最初にアドレスだけをバス上に出力し、READ ピンを引く。他のカードはそのアドレスのデータをバス上に出力し、data strobe を引いてデータがレディであることを示す。このような信号方式は非同期であり、PCIのようなバス全体のクロック同期が存在しない。ブロック転送プロトコルにより、複数のバス転送を一回のアドレスサイクルで出来るようになる。ブロック転送モードでは、最初の転送にアドレスサイクルが含まれ、その後の転送はデータサイクルだけとなる。スレーブはそれらが連続したアドレスに関するものであると解釈する。マスターがバスを解放する方法は2種類ある。Release When Done (RWD) では、マスターは転送が完了したときにバスを解放し、次の転送の際には再度調停が必要となる。Release On Request (ROR) の場合、マスターは転送が終わっても BBSY* をアサートし続け、バスを保持し続ける。ROR では、Bus Clear (BCLR*) が他のカードによってアサートされるまで、現マスターが制御を握り続ける。従って、一度に多量のデータ転送が必要となるようなカードでは、性能を最適化しやすい。これにより転送のレイテンシが減少するが、他のカードにとっては逆にレイテンシが大きくなる。VMEには割り込みバスも存在し、割り込み要求線（IRQ1 - IRQ7）は68000の7種類の優先順位付き割り込みに対応している。割り込みモジュールは、これら割り込み要求線のうちの1つをアサートすることで割り込み要求を発生させる。バス上の各モジュールは任意の割り込みを発生することが可能である。割り込み処理モジュールが対応する優先順位の割り込み要求を検出すると、割り込み処理モジュール自身が上に説明したような方法でバスマスターとなる。そして、アドレスバスにIRQ線の番号を2進数にしたものを出力することで（例えば IRQ5 なら 101）、割り込みベクターを読み取る。また、IACK 線をアサートし、ステータス/ID を読み取る。ステータス/IDを返すのは割り込みを発生したカードである。割り込み制御モジュール（通常、CPU）は、このステータス/IDを使って適切な割り込み処理ルーチンを呼び出す。VMEでの転送はすべてDMAであり、各カードがマスターにもスレーブにもなる。このあたりのコンセプトはバス規格によって様々である。たとえば、ISAバスでは、既存の「チャネル」モデルを使っている。すなわちホストCPUが全ての通信を制御する方式である（チャネル・コントローラ参照）。その点、VMEはコンセプトとしては非常に単純であるが、そのために各カード上に複雑なコントローラを必要とする。現在では、VME は各種CPUバスをサポートしている。インテル x86、HP PA-RISC、モトローラ 88000、PowerPC などである。