• 検索結果がありません。

BASIC 言語実習用エラー自動記録システム

N/A
N/A
Protected

Academic year: 2021

シェア "BASIC 言語実習用エラー自動記録システム"

Copied!
14
0
0

読み込み中.... (全文を見る)

全文

(1)

BASIC言

語実習用エ ラー自動記録 システム

Hideki NIsHIDA: Automated Error AcqШsition System for Tralllmg he PrograF―g Language,BASIC (1991年 8月31日 受理) 1 1よ

に 本学部では

,教

員養成ヨースの学生 に対する情報処理入門教育 として「 コンピュータ実習」 「情報基礎実習」「家庭情報処理実習」などい くつかの授業科 目が開設 されている。 これ らの授 業では主 にプログラミング言語

BASICを

用いた教育がなされている1)O。 入門教育 としてプ ログラミング言語 を教 えることの是非や

,BASIC言

語が適切か と言 う問題 も無 いわけではな いが

,種

々のアプリケーションソフ トの入手が予算的に困難な現状では

,や

むを得 ないことで ある。

BASIC言

語 はインタープ リタ方式であるため

,作

成 したプログラムが編集画面か ら直ちに 実行で き

,

しか も細かい約束が少ないので

,本

学部の学生のように将来情報処理関係 の技術者 になる可能性 は低 く本質的にはいわゆる文科系の学生 にとって馴染みやすい といえる。 しか も 言語 を用いた簡単 なプログラミング技術 を修得 させ ることはコンピュータによる処理の仕組み 即 ち分岐や繰 り返 し

,ジ

ャンプ といった単純 な機能の組合せが複雑かつ高度 な処理の基本 に なっていることを理解 させ る上で効果的であ り

,ま

たコンピュータに限 らず一般の問題解決に おいて もその手順 を論理的

,体

系的に組み立てるための訓練 にもなる。 このようにこれ らの授業科 日では

BASIC言

語 を使 ってはいて も言語その ものを教 えること が主 目的ではな く

,BASIC言

語 を手段 として情報処理の仕組みを教 えることを目的 としてい ると考えることがで き

,現

状ではそれな りに効果 をあげている。

BASIC言

語 をクラス単位で実習す るに当たって

,本

学部ではすでに独 自の

CAI方

式が考 え られている。。 この方式 はそれぞれの学習者が理解力に応 じて個別の進度で実習 を進めること が出来る点で優れている。一方

,こ

の方式は学習者が課題の意味を十分には理解・消化で きな くて もファンクションキーを押せば先へ進 むことがで きるという欠点 を持 ってお り

,エ

ラーの 原因や対処の仕方力洋Jらないまま次々と先 に進んで しまう光景 も時折見受けられる。 このよう に多人数相手の しか も実習形式の授業の場合

,実

習補助者が授業中絶 えず巡回 して質問やエ ラー等に対応 していて も全ての学習者が確実に理解 しているかどうかを↓巴握することは困難で あ り

,つ

まづ きを見落 としていることが多いと思われる。 本報告では

,学

習者がプログラムを編集

,実

行する過程で発生 させたエラーの内容や頻度 を 樹* 英 西

*技

術教室

(2)

逐一 自動記録する常駐型システムを開発 した。このシステムを用いれば内容の理解度

,定

着の

程度 を把握で き

,実

習方法や指導内容の改善 に資することがで きる。

2

システムの概要

本 システムの開発 に使用 したパ ソコンは

NEC PC-9801Eで

あ り

,そ

の機器構成は標準的な

ものである。

PC-9801シ

リーズであればこれ以外の機種で も動作可能である。

PC-9801シ

リーズで使われている

N88 BASICに

,NEC社

のパ ソコン用の標準

OSと

して 準備 されている N88日 本語

BASIC(86)(以

下DISKぃ

BASICと

略す

)と

,MS‐

DOS上

で動 くイ ンタープ リタシステム N88日 本語

BASIC(86)(MS―

DOS版

)(以

下DOS―

BASICと

略す

)と

があるが

,

本 システムでは実際に授業で使 われているDOS‐

BASICを

対象 とした。 開発 に実 際 に使用 した

OSは

MS‐

DOS V3 1,BASICイ

ンタープリタは N88日 本語

BASIC(86)(MS―

DOS版

)3.0で

ある。 発生エ ラーに関する情報 を随時デ ィスクに記録するためには

,記

録プログラムは勿論の事, そのプログラムをインタープリタの機能や動作 を損なう事 な くメモ リー中へ常駐 させ る方法, エ ラーを検出して常駐プログラムヘ制御を渡す方法などを工夫 しなければならない。以下にこ れ らについて述べ る。

2-1

エラー検出の方法

BASICで

,エ

ラーが発生す るとそれ までにおこなっていた処理 を中断 して

,警

告音 を鳴 らし

,デ

ィスプ レイ画面にエ ラーメ ッセージを表示 してコマ ン ドレベルに復帰す る。エ ラー メ ッセージの表示はエ ラー発生時にのみ起 こる特異的な現象であ り

,こ

れを検出 して本システ ムの中心 となるエラー情報記録 プログラムを実行 させることにより

,エ

ラー発生直後の様 々な 情報 を得 ることが出来る。 DOS‐

BASICの

内部構造については一般 には公開されていないが

,す

でに内容が公開 されて いるDISK―

BASICと

共通す る部分が多 く

,あ

る程度は推測す ることが出来 る働。DISK‐

BASIC

で は このエ ラーメ ッセエジの表示 にソフ トウェア割 り込 み

C4H番

が使 われてい る。DOS‐

BASICで

のエ ラーメ ッセージ表示 には本研 究 における解析 の結果

C4.番

の割 り込みは使用 可能であるに も関わ らず使 われてお らず

,C6H番

の割 り込 みが使 われているこ とが明か と なった。 本 システムではこの割 り込み

C6Hの

ジャンプ先ア ドレスをエ ラー記録 プログラムの先頭 ア ドレスに変更することでエラーが発生する度にインタープリタか ら記録 プログラムに一旦制御 を移す こととしている。 しか し

,こ

の割 り込みはエラーメ ッセージ表示以外 にも使われている ので

,記

録プログラムの入口で

,エ

ラーか どうかの判定が必要である。

2-2

エ ラー情報の取得方法 DOS‐

BASIC上

でエ ラーが発生 した場合

,エ

ラーコー ド

,エ

ラー発生行番号

,エ

ラーの起 こったテキス トの行内容

,直

前 にダイレク トモー ドで入力 した文字列などをワークエ リアか ら 得 ることが出来 る。 またエ ラーが発生 した 日時はMS‐

DOSの

システムコール③を利用 して知 ることが出来る。記録プログラムでそれらのデータの取得 に利用 した機能やア ドレスを表 1に

(3)

1

エ ラーに関する各種情報の取得方法 取 得 方 法 取得時のデータの表現形式 年 月 日 時 分 秒 エラーコー ド エラー発生行番号 テキス ト内容 ダイレク ト入力内容 MttDOSシステムコール

16進

数値 ファンクション2AH 年2バイ ト, 月1バイ ト, 日1バイ ト MS‐DOSシステムコール

16進

数値 ファンクション

2CH

時1バイ ト,分1バイ ト,秒1バイ ト BASICワークエ リア システム制御情報領域

16進

数値, 1バイ ト オフセ ットア ドレス6E2H BASICワークエ リア システム制御情報領域 16進数値, 2バイ ト オフセ ットア ドレス6EO. BASICワークエ リア

中間コー ドによる内部形式 テキス ト領域 B′婚ICワークエ リア システム制御情報領域

アスキー形式 オフセ ットア ドレス lC00H システム制御情報領域のセグメントアドレスは,インタープリタ起動後に調べてデータ収録プログラム中に追記 する。 一覧 に して示す。表 中の システ ム制御情報領域 お よびテキス ト領域 のセ グメ ン トア ドレス は

COMMAND.COMの

バ ー ジ ョンやデバ イス ドライバ使用 の有無

,DOS‐

BASICの

バ ージ ョンな

どに よって異 なる。 これ ら値 は DOS‐

BASICの

関数

SEGPTR(7),SEGPTR(6)に

よって知 る こ とが出来 るD。

2-3

システムの ソフ トウェア構成 と組込み方法 本 システ ムで はイ ンタープ リタ起動 に引 き続 きエ ラー情 報 の記録 プログラム をメモ リー中に 組 み込 んで常 駐 させ て お き

,実

習 中 にエ ラーの発 生 を検 出 した場 合 ソフ トウェア割 り込 み に よってこのプログラムに制御 を移 し

,情

報収集作 業 を実行 した後 再 びイ ンタープ リタに制御 を 渡す事 と して い る。 また集 め られ たデ ー タは後 日ま とめて解析 され る。 この ように本エ ラー記 録 ・解析 システ ムに必要 な内容 は大 き く分 ける と組込 み

,記

,解

析 とい う三つ の機 能 に分 け ることが 出来 る。 これ らの 目的 に使用す るプログラムはそれぞれ機 能 と使用環境 が大 き く異 な るため,

(1)ERR1000.BAS :シ

ステムの組込 みプログラム

(2)ERRORo CCIM :エ

ラー情報記録 プログラム

(3)CNVTOASC.BAS i記

録 されたデー タの解析

,表

示 プ ログラム の三つ に分 けて個別 に作成 されている。各 プログラムの具体 的 な働 きは次章 に述べ る。 機械語 で記述 された記録 プログラムの メモ リーヘ の書 き込 み は,

N88BASIC/T:RUN"ERR1000.BAS''

とい う内容 のバ ッチ フ ァイル

BASIC.BATに

よって イ ンター プ リタ起動 に引 き続 き自動 的 に 行 われ

,組

込 み用 プ ロ グ ラム

ERR1000.BASに

よって メモ リーの フ リーエ リア上 限付近 に格 納

(BLOAD)さ

れ る。 この記録 プログ ラムは実 習者が プ ログ ラム を作成 した り実行 した りす る間 もメモ リー中 に常駐 し

,BASICの CLEAR文

を実行 しない限 り消 えるこ とはない。一方 組 込 み に用 い た プ ロ グ ラム

ERR1000.BASは

必 要 な処理 を行 った後 自 ら消滅 し

,通

常 の コマ ン ドレベ ルで実習者 による使用 を待 つ状態 になる。

(4)

システム組込 みの一連 の流 れ を図1に示 す。

3

プ ログラムの内容 前述 の ご と く本 システ ムで は三つ の プログ ラ ムが必要である。以下 にこれ らの プログラムの 内容 を詳 しく述べ る。

3-1

組込 み プログ ラム

(ERR1000,BAS)

このプログラムの働 き (機能

)は

次 の

4つ

で あ る。

(1)機

械語 プ ログ ラム領域 を64キ ロバ イ ト確 保 し

,そ

のセ グメ ン トア ドレス を

SEGPTR

(2)関 数 にて調 べ

,そ

の領域 の オフセ ッ ト ア ドレス

100Hか

ら記録 プログ ラム を書 き 込 む。

(2)エ

ラー情報の取得 に不可欠なシステム制御 情報領域 のセ グメ ン トア ドレス を

SEGPTR

(7)関数 に よって調 べ

,こ

れ を記録 プログ ラムの オ フセ ッ トア ドレス

1lBH,1lCHに

書 き込 む。

(3)ソ

フ トウェア割 り込 み

INT C6Hに

よって記録 プログラムが トリガ され る よう

,本

来 の ソフ トウェア割 り込 み

C6H番

の ジ ャンプ先 ア ドレス を

,通

常 は使 われて い ない ジ ャ ンプ テ ーブルの

FFH番

の位置 に移動 してお き

,C6H番

には新 しい ジ ャンプ先 と して記録 プロ グラムが常駐 してい るア ドレス を書 き込 む (ベク ターテーブルの変 更)。

(4)以

上 の作 業 の後

,BASIC起

動 時 の初 期 画面 を再表示 し

,さ

らに組込 み プログ ラム をメ モ リーか ら消去 して

BASICの

コマ ン ドレベルに戻 る。 これ らの機 能の一部 には DOS―

BASICに

固有 の関数 を利用 しなけれ ばな らない ものがあ るの で

,こ

の プログラムは DOS‐

BASICで

記述 されてお り

,

リス トを末尾 の付 図1に掲載 した。

3-2

記録 プ ログラム

(ERROR.COM)

記録 プログ ラム

ERROR.COMの

お もな働 きはエ ラーに関す る各種 の情報 をデ ィス クに記録 す る こ とで あ る。 この プ ログ ラム は割 り込 み

C6Hが

発 生す る度 に稼働 す る常 駐型 プ ログ ラム としなければならないので

,ア

セ ンブ リー言語

MASMの

書式 に したがって記述 されアセ ンブ ルされた機械語プログラムである。 このプログラム全体の大 まかな働 きを図

2に

フローチ ャー トで示す。 このプログラムは本来の割 り込み

C6Hに

寄生する形 を取 っているので

,プ

ログラムを終了 した時点では各 レジスタなどを完全 にもとの状態の戻 しておかなければならない。 このためプ ログラムの先頭でスタ ックセグメン トとスタ ックポイン トを保存 し

,新

たに独 自のス タック領 域 を定義 してこのプログラムで使用する全ての レジスタをそこに待避 させ

,プ

ログラム終了直 組 込 み 用 バ ッチ フ アイ ルBASIC.BAT イ ン ター プ リタ起 動 ERR1000.BASのロー ド

,実

行 ERROR.COMの ロー ドと ベ クター テー ブルの変 更 ERR1000.BASの イ肖滅 とBASICの コマ ン ドレベ ル ヘ の復 帰 組 込 み 完 了 図

1

システムの組込み と起動

(5)

SS e SPの 保 存 新 し い ス タ ッ ク 領 域 の 定 義 レ ジ ス タ の 返 避 ・判 定

/

YES 処 理 エ ラ ‐ 収 録 レ ジ ス タ の 復 帰 SS e SPの 復 帰 IRET 図

2 ERROR,COMに

よる処 理 の流 れ 前 に各 レジス タを復帰 させ て い る。割 り込 み

INT C6Hは

エ ラーメ ッセージ表示 以外 に も様 々 な機能 を持 ってお り

,エ

ラー発生時以外 とこも度 々呼 ばれ るので

,記

録 プ ログ ラムの入 口で まず

BASICワ

ー クエ リアのエ ラー コー ドを調べ

,エ

ラーで 呼 ばれ たので無 けれ ば直 ち に本 来 の

INT C6H処

理 に分 岐 させ て い る。一方 エ ラー コー ドの値 が

0以

外 で あれ ばエ ラーが発 生 した もの とみ な して情報収集作 業 を実行 した後

,本

来 の

INT C6Hを

実行 す る こ とと してい る。 図

2中

,収

録処理 とな ってい る部分が エ ラー情報 の記録 をお こな うサ ブル ーチ ンで あ り

,こ

の部分の内容 は図

3に

フローチ ャー トで示 した。 ドライブ

Aの

デ イス クには

,予

めデ ー タ記録 用 の シーケ ンシ ャル フ ァイル

ERROR.DATが

作成 されてい なければな らない。 記録 処 理 で は まず

ERROR.DATフ

ァイル を追加 モ ー ドで オープ ン し

,エ

ラーコー ド

,年

,月

,

,時,分

, デ ー タ フ ア イ ル の OPEN エ ラ ー ヨ ー ドの 取 出 し 日 付・ 時 刻 の 取 出 し フ ア イ ル ポ イ ン タ の 移 動 フ ア イ ル ヘ の 日 付

`時

刻 の 書 込 み エ ラ ー 行 番 号 の 取 出 し エ ラ ー 内 容 の 取 出 し フ ア イ ル ヘ の 行 番 号・ 内 容 の 書 込 み フ ァ イ ル の CしOSE 図

3

データ収録サブルーチ ンの処理の流れ

(6)

秒 に関す るデ ー タをメモ リか ら取 り出 して フ ァ イル に記録 している。年デー タのみ

2バ

イ ト他 は

1バ

イ トで あ り

,こ

れ らのデ ー タはフ ァイル 中で特 別 の意 味 を持 つ場合 が あ る

lFH以

下 の 数 値 をな くす ため に

20Hが

本 来 の値 に単 純 に 加 算 されてい る。 この後 デー タの区切 りと して 改行 コー ド

ODH,OAHを

記入す る。 続 いてエ ラー行番号 を取 り出 して ダイ レク ト 入力 によ り発生 した ものかプログラム実行過程 で発生 した ものか を判定 し

,ダ

イ レク ト入力で あ れ ば識 別 のための コー ド

30Hと

入力 内容 を, プ ロ グ ラムで あれ ば コー ド

31Hと

,エ

ラー行 番号 を もとにテキス ト領域 か ら対応 す る行 を捜 して リ ンクポ イ ンタ以下行 末 コー ド

00Hま

で を

,そ

の ままフ ァイル に記録す る。 ダイ レク ト 入 力 された内容 はアスキー形式で フ ァイルにHE 録 され

,プ

ログラムのエ ラーは中間コー ドに よ る内部 形 式 の まま記 録 され る。 中間 コー ド形 式 で 表 さ れ た テ キ ス ト内容 の 内

,00H,OAH,

ODH,lAHは

本 システ ムで記 録 す るデー タフ ァ イル 中で特別の意味 を持つので

,そ

れぞれEAH,

E8H,CAH,EFHに

変換 して い る。この うち

CAH,EFHは

もともと中間コー ドとしては未定 義 であるn。

_方

本来 は

EAHは

ISET命

令 に ,

E8Hは

CMD命

令 に対する中間コー ドとして定 義 されているつが

,こ

れ らの命令 は入門段階で 使 われ るこ とはないので これ らの変更 を行 って も支障 はない と考 え られ る。 一件 のエ ラーに関す る全 てのデータの記録 が終 わる と

,フ

ァイル をクローズ して メ イ ンプロ グ ラムに復帰す る。 このプログラムの リス トは末尾 の付 図

2か

ら付 図

6に

掲載 してい る。

3-3

解析・ 表示 プログラム

(CNVTOASC.BAS)

前 述 の ように

,記

録 す る時点で は処理時間 を短縮す るためエ ラー情報 の表現形式力ヽ種々異 な るので

,こ

れ らをデ ー タの区切 りとなる改行 コー ドやプログラムか ダイ レク トかの識 別 のため の コー ドな どを利用 して解析・表示時 に判別 し

,全

て アスキー形式 の文字列 に変換 して表示 し なければな らない。解析 ・表示 プログラム

CNVTOASC.BASの

フローチ ャー トを図

4に

示 す。 この プログ ラムで はフ ァイルか ら行単位 で読 み込 んだデー タを

1バ

イ トずつ調べ

,エ

ラー コー ド

,年

,月 ,

,時,分,秒

の デー タか らは

20Hを

引 い た後 十進形式 に変換 して表 示 し てい る。一方 中間コー ド形式で記録 されてい るエ ラー部分 のプログラムテキス トは記録時 に変 換 され た

EAH,E8H,CAH,EFHの

コー ドを

00H,OAH,ODH,lAHに

それ ぞ れ復元 した後

,ア

スキ ー形式 に直 して表示 している。エ ラーが ダイ レク ト入力 に よ り発生 した もの につ いて はそ 図

4 ChlVTOASC.BASの

処理の流れ デ ー タフ アイル のオ ー プ ン 1行読 み 措 て フ ァ イ ル か ら2行読 み 込 み 日 付 ,時Allの 復 元 。表 示 ダ イ レ ク ト入 力 か ど う か の 判 定 テ キ ス ト の 復 元 テ ■ ス ト の 表 示 フ アイル の クロー ズ

(7)

の内容が アスキー形式 で記録 されているので

,そ

の まま表示 してい る。 デ ー タの記録解析 の例 と して図

5に

試験 的 にエ ラー を発生 させ た後 の

ERROR.DATフ

ァイ ルの ダンプ結 果 を

,図

6に

CNVTOASC.BASに

よる これの解析表示結果 を示 した。行番号 の無 い もの は ダイ レク ト入力であ る。 これ らのデータは

CRT画

,プ

リンタ

,デ

イス クフ ァ イルのいず れ に も出力可能である。 このプログラムの リス トは約200行 あ り

,や

や長いので掲載 を割愛 した。 Dump Version 2.1 00000000 54 45 53 54 20 44 41 54-41 0D 36 E7 07 28 38 26 00000010 30 3B 22 0D OA 30 41 3D-00 0D OA 36 E7 07 28 38 00000020 26 30 33 2A OD OA 31 09-EA E8 EA 01 41 EA F1 00 00000030 0D OA lA 00 00 00 00 00-00 00 00 00 00 00 00 00

TEST DATA.6.。 (8&

0;"..OA=...6.。 (8 &0;*。 .1..ヨヒ.A... 図

5 ERROR.DATフ

ァイルの ダ ンプ例 ERR= 22 1991: 8:24 ERR= 22 1991: 8:24 16:27: 2 16:27:10 A= 10 A= 図

6

図 5に 示すデータの解析結果

4

使用結果 と検 討 本学技術専 攻及 び家庭専攻 の

2年

次学生計20名 に夕すす る実習授業で本 システムを利用 して は じめの

4週

間エ ラーの記録 テス トをお こな った。記録 され た実 際 のデー タの一例 を図

7に

示す。 これ らの試験 的 な利用 と実際 に集 まった生 のデータか ら

,こ

の システムに関 して以下の点が 明 らか となった。

(1)シ

ステムは意図 した通 り良好 に作動す る。

(2)エ

ラーが起 こる とその都度 デー タをデ ィスクに記録す るので

,エ

ラーメ ッセ ージの表示 や ビープ音 の発生 までの間に

1秒

程度 の時 間遅 れが生 ず る。 この間デ イスクのアクセス音が 出る。

(3)起

動 時 にイ ンタープ リタの初期画面が三度表示 され る こ とになるので

,画

面が一瞬 ち ら つ く。 他

)イ

ンタープ リタの起動方法が正規 の場合 と異 なるので

,指

導 がやや煩雑 で あ る。

(5)デ

ー タは内部表現の まま記録 されるものが多いので

,フ

ァイルサ イズが コ ンパ ク トである。 脩

)エ

ラーの具体 的な内容 と秒単位 までのエ ラー発生時刻力渭己録 され るので

,一

つ のエ ラー

(8)

ERR= 2 1991: 4:17 ERR= 13 1991: 5:11 ERR= 53 1991: 5:11 ERR= 53 1991: 5:11 ERR= 2 1991: 5:11 ERR= 2 1991: 5:11 ERR= 22 19911 5118 ERR= 22 19911 5:18 ERR= 2 1991: 5:18 ERR= 2 1991: 5:18 ERR= 2 1991: 5:18 ERR= 13 1991: 5:18 ERR= 51 1991: 5:18 ERR= 2 19911 5,18 ERR= 2 1991: 5118 ERR= 11 1991: 5:18 ERR= 2 1991: 5:25 ERR= 2 1991: 5,25 ERR= 2 1991: 5:25 15:14:40 9:58:45 10:25:ll 10:31:57 10:34:39 10:35:10 8:27:50 8:41: l 8:45:44 8:47: 6 8:54:41 8:56:35 9:24: 7 9:27:27 9:50: 7 9:531 9 8:26:58 8:32:28 8:33: 3 10 PRANT LOAD 2B:TESTl" FILES "B″ LOAD "TESTl TEST LOAD "B:TEST2",A SAVE SAVE OK L FIKES とOAD SIMIZU-5 YAB=5 A B=5 LISTND

40Y2=(X-2)^2+1/(X―

OK OX 35 PRIN L;"Il― レル" 図

7

授業で収録されたデータの一例 が発生 してか らそれ を修正す るのに どんな経過 をた どったか

,修

正 に どれだけの時 間を要 したか

,等

が手 に とるようにわか る。

(7)問

題解決の手順 における論理上の間違いはチ ェ ックで きない。 (2)及

n3)は

技術 的 な問題点で あ るが

,実

用上 は問題 ない と思 われ る。他)につ いては混乱 を招 く恐 れが ない とは言 えないが

,理

由 をは っ き り説 明す るこ とに よ り避 け られ る。(5)につ いては デー タが暗号化 されて記録 されてい る と考 えることもで き

,デ

ー タの無 断 目的タト使用 に対す る 簡単 な保護 に もな ってい る。脩)につ いて は単 に命令 を理解 しているか どうかで な く本人の思考 能力 の優 劣 まで わか って しま うので

,本

システムの使用 に当た って は本人の了解 をとることが 必要 と考 え られ

,さ

らにデ ー タの取扱 には注意 を要す る。(7)は困難 な課題 で

,こ

の システムの 限界である。 この他

,試

験 的 に利 用 した期 間の実 習 で は

BASICの

起 動

,プ

ロ グ ラムの入力・編 集・保 存・呼 出 し 。実行

,入

出力命令

,代

入 あた りの範 囲 を扱 ったのでエ ラーの一般 的 な傾 向 と して はダイ レク ト命令 のエ ラーが意外 に多か った。 イ ンタープ リタ上であ るに もかかわ らず

OSの

命令 を使用 した り

,プ

ログラム実行 中であ るに も関わ らず編集 しようと した りす るな ど

,OS,

イ ンタープ リタ

,BASIC言

語 で書 い た プロ グ ラムの実行過程

,と

い うように使用環境 にい く つかの階層が ある中で 自分 のいる位置が把握で きていない点が明 らか に伺 えた。

(9)

5

ま 本報告 で は

,エ

ラーの内容 を逐一 自動記録す る常駐型 システムを開発 した。試験 的 にデ ータ 収集 を行 った ところ内容 の理解度

,定

着 の程度 を詳細 に才巴握 で き

,

きわめて有効 であ るこ とが 確 かめ られた。 本 システ ムで考案 したエ ラー検 出方法 は

,エ

ラー発生時 にイ ンタープ リタが用意 してい るエ ラーメ ッセ ー ジ以外 の詳 しい説 明や修正 の ヒン トな どを画面 に表示す ることに も利用 で き

,一

斉授 業 にお け る きめ細 か な指 導 に も応用可能 であ る。 また

,そ

の場 に居合 わせ な くて も一種 の 学習履歴 が残 るので

,後

か らで も指示

,指

,助

言が可能であ る。 さらに学習者 自身が

,分

か らなか った ところの復習 に利用す るこ ともで きる。 この ように様 々な応用 の可能性 が あるが, これ を教育 的 にどう活用す るか は今後 の課題 として残 る。 引 用 文 献 山岸正明:鳥取大学教育学部研究報告 教育科学,27(1985),65. 山岸正明:鳥取大学教育学部研究報告 教育科学,30(1988),19. 山岸正明:鳥取大学教育学部研究報告 教育科学,32(1990),45. 山岸正明

,西

田英樹

,安

藤由和

,和

泉澤正隆

,清

水寛厚

,岡

田昭明, 学部研究報告 教育科学,30(1988),39. 浅野泰之

,壁

谷正洋

,金

磯善博

,桑

野雅彦IPC-9801システム解析 MS―

DOS TM3 1プ

ログラマーズ リファレンスマニュアル. N88-日 本語 BASIC(86)(MS―

DOS版

)30ユ

ーザーマニュアル. 大塚譲

,浜

崎修 :鳥 取大学教育 (上

)(ア

スキー出版局,1983) Abstract

A resident pЮ gram to record contents of eFOrS automaticaly wllich occば during training he pЮ

gral―

g

language BASIC was budt, Tlais program can be t ggered by every errors and can record the date, tlle tと ne,

the eFOr COde, the とne nulnber and contents of the ine or characters directly typed. These data will be

(10)

1000 1010 1020 1030 1040 1050 1060 1070 1080 1090 1100 1130 1140 1150 116.0 1170 1180 1190 1200 1210 1220 1230 1240 1250 1260 1270 1280 1290 1300 1310 1320 1330 1340 1350 1360 1370 1380 1390 1400 1410 1420 1430 = .Save ″ERR1000.BAS",A CLS CLEAR etl10oo DEF SEG=SECPTR(2) BiSECPTR(2) BH=INT(B/256) BL=B―BH*256 A・SECPTR(7) AHEINT(A/256) AL=A―AH=256 DEF SEC=SECPTR(2)

BLOAD ''ERROR.COM″,&H100 POXE&HllB,AL

POXE &HllC,AH DEF SEC=0

'ADDRESS OF ORIGXNAL INT C6

00・PEEK(&H318)

Cl=PEEX(&H319) C2=PEEK(&H31A) C3=PEEX(&H31B)

IF 001Cl*256=O AND C2+C3r256=B THEN *STARTG

'ADDRESS OF NEW INT CS POKE &1318,0 POXE &H319,1 POXE &H31AェBL POKE &H31BすBH 'INT FF AS INT C6 ,OxE 81HaFC,C0 POKE &18FD,Cl POKE &H3FE,C2 POKE &H3FF,C3 *STARTG

PRINT ''NEC N-88 BASIC(86)version 4.0"

PRINT ″Copyrite (C) 1984,85,36 by NEC Corporation' PRINT "453108 3yteS free″

NEW END

(11)

ぢERROR.ASI CODE SECMENT AISSUME C.S,CODE,DSiCODE ORG 100H START: PUSI AX MOV CS:[04001],`.S MOV CS:[0402H],SP PUSH CS POP SS MOV SP,04110H PJSH DS PUSH cS POP DS. PUSH BX PUSH CX PUSH DX Pus.H SI PUSE ES PUSH DI P'SHF MOV AX,0000H MOV ES,AX MOV BH,ES:[oOF2H] CMP BH,0 」E P CALI MAIN P: POPF POP ,1 POP ES POP SI PO' DX POP CX POP BX POP DS MOV SS,CS:[0400H] MOV SP,CSi[0402H] POP AX INT OFFH IRET MAIN: ; ―― … … ― ― ― ‐ ‐ ― ― ‐‐ ― ― ‐ ― ― ― 一 ‐ ‐ ― FCREATt MOV AH,3DH

MOV Dx,OFFSET FNAME MOV Aと,1

1N121H

」O ERROH MOV FILE,AX MOV DI,OFFSET BUFFl

ERRとNO: MOV AH,ES:[06E21] ADD AH,20H MOV [DI],IAI NENGETU: MOV AH.2AH INT 21H ADD CX.20H MOV ['I十 二],CX ADD DH,20H MOV [DI+3],DH ADD Dと,20H MOV EDIキ4],DL ADD AL,20H MOV [DI+5],AL JIXAN: MOV A―HP2CH INT 21H ADD CH,20H MOV EDIキ6],CH ADD Cと,20H MOV EDI+7],Cと ADD D■,20H MOV [DI ttB],DH

MOV BYTE PTR EDl+9],13 MOV BYTE PTR [DI+10],10 FPMOV:

MOV AH,42H

MOV Aと,2

MOV BX,FI LEI MOV CX,01FFFFH MOV DX,OFFFFH

付図

3

記録 プログラム

ERROR.ASMの

リス ト

(続き)

(12)

INT 21H FWRITE:

MOV AH,40H MOV BX,FILE

MOV DX,OFFSET BUFFl MOV CX,11

1NT 21H ER CODE CL:

MOV BYTE PTR ES:[06E2H],00H 」MP MDCODE

ERROR:

MOV DX,OFFSET ER_MSG MOV AH,9 1NT 21H 」MP FCLOSE MDCODE: MOV SI,2280H MOV LPNEXT,SI MOV LNP,4 MOV AX,ESI[06EOH] CMP AX,OFFFFH 」NZ AAA

MOV DI,OFFSET BUFF2 MOV AH,30H MOV [DI],AH INC DI MOV SI,1000H DCM: INC LNP MOV AH,ES:[SI] CMP AH,0 」E FCLOSE3 CAとと D A lA MOV EDI],AH INC DI INC SI 」MP DCM AAA: MOV SI,LPNEXT MOV DI,OFFSET BUFF2 MOV CX,ES:[SI] 付図

4

記録プログラム

ERROR.SMの

リス ト (続き) CMP CX,0 MOV LNP,4 」Z FCLOSE3 MOV LNP,CX ADD LNP,3 ADD LPNEXT,CX MOV BX,ES:ESI+2] CMP AX,BX 」NZ AAA DEC CX MOV AH,31H MOV [DI],AH INC DI INC LNP LP: MOV AH,ES:[SI] CALと D A lA MOV [DI],AH INC DI INC SI L00P とP FCとOSE3:

MOV BYTE PTR [DI],0 MOV BYTE PTR EDI+1],13 MOV BYTE PTR [DI+2],10 MOV BYTE PTR [DI+3],lAH FWRITE2:

MOV AH,40H MOV BX,FILE

MOV DX,OFFSET BUFF2 MOV CX,LNP INT 21H FCLOSE: MOV AH,3EH INT 21H ER CODE CL2:

MOV BYTE PTR ESt[06EOH],00H RET D A lA: CMP AH,ODH 」NE PASl MOV AH,OCAH 付図

5

記録 プログラム

ERROR.ASMの

リス ト (続き)

(13)

PASl: CMP Al,OAH 」NE PAS2 MOV Al,OE8H PAS21 CMP AH,lAH 」NE PAS3 10V Al,OEFl PAIS3: CMP A■,001 JNE PAS4 MOV AH,OEAH PAS4: RET

ER●MSG DB ''File can't Open.$″ FNAME DB 'ERROR.DAT',0

FILE DW l(?)

おUFFl つB 20 (?) LNP DW l (?)

LPNEXT DW l(?)

BUFF2 つB 255 (?) GODE ENDS END START 付図

6

記録プ ログラふ

ERROR.ASMの

リス ト (続き)

(14)

表 1  エ ラーに関する各種情報の取得方法 取 得 方 法 取得時のデータの表現形式 年 月 日 時 分 秒 エラーコー ド エラー発生行番号 テキス ト内容 ダイレク ト入力内容 MttDOSシ ステムコール            16進 数値ファンクション2AH                    年2バ イ ト ,  月 1バ イ ト ,  日 1バ イ トMS‐DOSシステムコール           16進数値ファンクション2CH          時1バイ ト,分1バイ ト,秒1バイ トBA

参照

関連したドキュメント

In the recent survey of DLSU students which was conducted immediately after the 2016 SEND INBOUND program, 100% of the students agreed that the SEND Program should continue in

全小中学校で、自学自習力支援システムを有効活用し、児童・生徒の学習意欲を高め、自学自習力をはぐ

※2019 年(平成 31 年)4 月 1 日から 2024 年(令和 6 年)3 月 31 日までの 5

自己最高記録 Personal Best.. 生年月日/Date of Birth

 文学部では今年度から中国語学習会が 週2回、韓国朝鮮語学習会が週1回、文学

(申込締切)②助成部門 2017 年9月 30 日(土) ②学生インターン部門 2017 年7月 31

1月 2月 3月 4月 5月 6月 7月 8月 9月10月 11月 12月1月 2月 3月 4月 5月 6月 7月 8月 9月10月 11月 12月1月 2月 3月.

使用言語 日本語 選考要件. 登録届を提出するまでに個別面談を受けてください。留学中で直接面談 できない場合は Skype か