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
システムの概要本 システムの開発 に使用 したパ ソコンは
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に表
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は
必 要 な処理 を行 った後 自 ら消滅 し,通
常 の コマ ン ドレベ ルで実習者 による使用 を待 つ状態 になる。システム組込 みの一連 の流 れ を図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
システムの組込み と起動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
データ収録サブルーチ ンの処理の流れ秒 に関す るデ ー タをメモ リか ら取 り出 して フ ァ イル に記録 している。年デー タのみ
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の 復 元 。表 示 ダ イ レ ク ト入 力 か ど う か の 判 定 テ キ ス ト の 復 元 テ ■ ス ト の 表 示 フ アイル の クロー ズの内容が アスキー形式 で記録 されているので
,そ
の まま表示 してい る。 デ ー タの記録解析 の例 と して図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 00TEST 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)デ
ー タは内部表現の まま記録 されるものが多いので,フ
ァイルサ イズが コ ンパ ク トである。 脩)エ
ラーの具体 的な内容 と秒単位 までのエ ラー発生時刻力渭己録 され るので,一
つ のエ ラー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言
語 で書 い た プロ グ ラムの実行過程,と
い うように使用環境 にい く つかの階層が ある中で 自分 のいる位置が把握で きていない点が明 らか に伺 えた。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) AbstractA resident pЮ gram to record contents of eFOrS automaticaly wllich occば during training he pЮ
gral―
glanguage 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
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
ぢ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の
リス ト(続き)
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の
リス ト (続き)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