home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1998 January (DVD)
/
VPR980100.ISO
/
DRIVER
/
IBM
/
VW200
/
VW200_2.EXE
/
VWSAMPLE
/
VW200API.INC
< prev
next >
Wrap
Text File
|
1995-11-28
|
31KB
|
884 lines
ifndef VW200API_INC
define VW200API_INC
;=============================================================================
; VW-200 Application Program Interface(API) 使用方法
;
; include VW200API.INC ;;本ファイルの読み込み
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; API ClearScreen ;;API API_No の形で記述します。
; ;; API_No は下記の一覧を参照。
;
; ld hl,#0104h ;;API のパラメータは事前に設定する事。
; API Locate ;;
;
; ld xp,#pod message ;;IX を利用する API では XP の設定に
; ld ix,#lod Message ;;注意してください。
; API PutStr2 ;;
;=============================================================================
;=============================================================================
; APIシステム定数
;=============================================================================
define API_Vector 0c0800h ; 固定:変更しないでください。
define APIVERS 200h ; バージョン(100h=TC-100 200h=VW-200)
;=============================================================================
; API マクロ
;=============================================================================
API macro apino
push ep
ld ep,#pod API_Vector
ld nb,#boc API_Vector
call [lod (apino*2+API_Vector)]
pop ep
endm
;=============================================================================
; API_H マクロ (GPset, GPointで使用)
;=============================================================================
API_H macro apino
push ep
push hl
ld hl, ix
ld ix, iy
ld iy, hl
ld ep, #pod API_Vector
ld nb, #boc API_Vector
call [lod (apino*2+API_Vector)]
ld hl, ix
ld ix, iy
ld iy, hl
pop hl
pop ep
endm
;=============================================================================
; API 一覧
;
; API呼び出しは実際の番号ではなく、ここに記載されているAPI名で使用してくださ
; い。
; 今後、API拡張などでAPI番号の変更が行われた場合でも、再アセンブルで対応する
; 事が可能になります。
;=============================================================================
;=============================================================================
; システム制御
;=============================================================================
define PowerOff 1
;
; VW-200の電源をオフにする。
;
; IN: 無
;
; OUT: 無効(戻りません)
;
; Reg. 無効
;-----------------------------------------------------------------------------
define PowerSaveLock 2
;
; パワーセーブを行わない設定にする。
;
; IN: 無
;
; OUT: 無
;
; Reg. 全保存
;-----------------------------------------------------------------------------
define PowerSaveUnlock 3
;
; パワーセーブを行う設定にする。
;
; IN: 無
;
; OUT: 無
;
; Reg. 全保存
;-----------------------------------------------------------------------------
define WaitState 4
;
; SMC88のウェイト制御を行う。
;
; IN: A ウェイト数 0(fast)~7(slow)
;
; OUT: A 元のウェイト数
;
; Reg. A以外保存
;=============================================================================
; 画面設定関連
;=============================================================================
define Refresh 5
;
; 画面を仮想バッファに従って再描画する。
;
; IN: 無
;
; OUT: 無
;
; Reg. 全保存
;-----------------------------------------------------------------------------
define Screen 6
;
; VW-200の画面モードを設定する。
;
; IN: A 画面モード SCR_VW200V16 縦画面表示 行間なし
; SCR_VW200H16 横画面表示 行間なし
; SCR_VW200V18 縦画面表示 行間あり
; SCR_VW200H18 横画面表示 行間あり
;
;
; OUT: A 元の画面モード 上記の値以外に
; SCR_TC100 TC-100互換モード(デフォルト)
; が返されます。
;
; Reg. A以外保存
;=============================================================================
; 文字出力、インジケーター制御
;=============================================================================
define PutChar 7
;
; 指定位置に1文字出力する。
;
; IN: BA 出力文字(SBCS:JISコード DBCS:シフトJISコード)
; L X座標
; H Y座標
;
; OUT: 無
;
; Reg. 全保存
;-----------------------------------------------------------------------------
define PutChar2 8
;
; カレント位置に1文字出力する。
;
; IN: BA 出力文字(SBCS:JISコード DBCS:シフトJISコード)
;
; OUT: 無
;
; Reg. 全保存
;-----------------------------------------------------------------------------
define PutStr 9
;
; 指定位置から文字列を出力する。
;
; IN: XP,IX 出力文字列(SBCS:JISコード DBCS:シフトJISコード)
; L X座標
; H Y座標
;
; OUT: 無
;
; Reg. 全保存
;-----------------------------------------------------------------------------
define PutStr2 10
;
; カレント位置から文字列を出力する。
;
; IN: XP,IX 出力文字列(SBCS:JISコード DBCS:シフトJISコード)
;
; OUT: 無
;
; Reg. 全保存
;-----------------------------------------------------------------------------
define PutNum 11
;
; 指定位置に数値を出力する。
;
; IN: IX 出力数値
; A 出力桁数
; B サプレスモード PNM_ZEROFILL 0埋め
; PNM_SUPPRESS 0サプレス
; L X座標
; H Y座標
;
; OUT: 無
;
; Reg. 全保存
;-----------------------------------------------------------------------------
define PutNum2 12
;
; カレント位置に数値を出力する。
;
; IN: IX 出力数値
; A 出力桁数
; B サプレスモード PNM_ZEROFILL 0埋め
; PNM_SUPPRESS 0サプレス
;
; OUT: 無
;
; Reg. 全保存
;-----------------------------------------------------------------------------
define Indicator 13
;
; インジケーターの制御を行う。
;
; IN: A 番号 IND_UPARROW 上矢印(縦位置基準)
; IND_RIGHTARROW 右矢印(縦位置基準)
; IND_LEFTARROW 左矢印(縦位置基準)
; IND_DOWNARROW 下矢印(縦位置基準)
; IND_USER1 ユーザー1
; IND_USER2 ユーザー2
; IND_USER3 ユーザー3
; IND_USER4 ユーザー4
; IND_CALC 電卓
; IND_CLOCK 時計
; IND_SMALL 小文字
; IND_ALPHA 英字
; IND_NUM 数字
; IND_KANA カナ
; IND_INSERT 挿入
; IND_BATT バッテリー警告
;
; B 状態 OFF 消灯
; ON 点灯
;
; OUT: 無
;
; Reg. 全保存
;=============================================================================
; キー入力
;=============================================================================
define InKey 14
;
; 1文字入力を行う。
; 入力なしでもリターンします。
;
; IN: 無
;
; OUT: A キーコード KCD_NONE 入力なし
; KCD_INSERT 挿入
; KCD_DELETE 削除
; KCD_OK OK
; KCD_CCE C
; KCD_TIME 時刻設定
; KCD_RM RM
; KCD_CM CM
; KCD_MPLUS M+
; KCD_MMINUS M-
; KCD_UP ↑
; KCD_DOWN ↓
; KCD_LEFT ←
; KCD_RIGHT →
; JISコード 入力文字
;
; Reg. A以外保存
;-----------------------------------------------------------------------------
define InKeyWait 15
;
; 1文字入力を行う。
; 入力されるまで待ちます。
;
; IN: 無
;
; OUT: A キーコード InKeyキーコード参照
; (KCD_NONEは戻りません)
;
; Reg. A以外保存
;-----------------------------------------------------------------------------
define SenseKey 16
;
; キー入力を先読みする。
;
; IN: 無
;
; OUT: A キーコード InKeyキーコード参照
;
; Reg. A以外保存
;-----------------------------------------------------------------------------
define ReadKey 17
;
; リアルタイムキー読み込みを行う。
;
; IN: 無
;
; OUT: A スキャンコード KSC_NONE 入力無し
; KSC_0~KSC_9 0~9キー
; KSC_PLUS +キー
; KSC_MINUS -キー
; KSC_MUL ×キー
; KSC_DIV ÷キー
; KSC_PERCENT %キー
; KSC_CCE Cキー
; KSC_EQUAL =キー -+- 同コード
; (KSC_OK) OKキー -+
; KSC_DOT .キー
; KSC_UP ↑キー
; KSC_DOWN ↓キー
; KSC_LEFT ←キー
; KSC_RIGHT →キー
;
; L 下段スキャン情報(bit0-7)
; B 中段スキャン情報(bit0-7)
; H 上段スキャン情報(bit0-7)
;
; Reg. BA,HL以外保存
;-----------------------------------------------------------------------------
define Input 18
;
; 指定位置から1行入力を行う。
;
; IN: XP,IX 入力バッファアドレス(A+1のサイズが必要)
; A 入力長
; B 初期カーソル位置
; L X座標
; H Y座標
;
; OUT: A 終了キー InKeyキーコード参照
; B 終了時カーソル位置
;
; Reg. BA以外保存
;-----------------------------------------------------------------------------
define Input2 19
;
; カレント位置から1行入力を行う。
;
; IN: XP,IX 入力バッファアドレス(A+1のサイズが必要)
; A 入力長
; B 初期カーソル位置
;
; OUT: A 終了キー InKeyキーコード参照
; B 終了時カーソル位置
;
; Reg. BA以外保存
;=============================================================================
; 画面操作
;=============================================================================
define GetChar 20
;
; 指定位置の文字コードを読み出す。
;
; IN: L X座標
; H Y座標
;
; OUT: A 文字コード
; B 属性 ATR_SBCS SBCS
; ATR_DBCS1 DBCS 1st
; ATR_DBCS2 DBCS 2nd
;
; Reg. BA以外保存
;-----------------------------------------------------------------------------
define GetChar2 21
;
; カレント位置の文字コードを読み出す。
;
; IN: 無
;
; OUT: A 文字コード
; B 属性 ATR_SBCS SBCS
; ATR_DBCS1 DBCS 1st
; ATR_DBCS2 DBCS 2nd
;
; Reg. BA以外保存
;-----------------------------------------------------------------------------
define ClearScreen 22
;
; 画面を消去する。
;
; IN: 無
;
; OUT: 無
;
; Reg. 全保存
;=============================================================================
; カーソル関連
;=============================================================================
define CursorOn 23
;
; カーソル表示を有効にする。(点滅状態)
;
; IN: 無
;
; OUT: 無
;
; Reg. 全保存
;-----------------------------------------------------------------------------
define CursorOff 24
;
; カーソル表示を無効にする。(消灯状態)
;
; IN: 無
;
; OUT: 無
;
; Reg. 全保存
;-----------------------------------------------------------------------------
define Locate 25
;
; カーソルを指定位置に移動する。
;
; IN: L X座標
; H Y座標
;
; OUT: 無
;
; Reg. 全保存
;-----------------------------------------------------------------------------
define GetPos 26
;
; カーソルのカレント位置を取得する。
;
; IN: 無
;
; OUT: L X座標
; H Y座標
;
; Reg. HL以外保存
;-----------------------------------------------------------------------------
;=============================================================================
; キー設定
;=============================================================================
define KeyMode 31
;
; キーモードの設定を行う。
; Aには下記のKBD_xxxxを設定する。KBD_NUMLOCKとKBD_SFTxxxは | で接続して
; 使用する。
; 同様に、KBD_LOCK,KBD_UNLOCKも | で接続して使用する。
; 例:(KBD_NUMLOCK|KBD_SFTCALC) (KBD_KANA|KBD_LOCK)
;
; IN: A キーモード KBD_KANA カナモード
; KBD_ALPHA 英字モード
; KBD_NUMLOCK 数字モード
; KBD_SFTNUM (通常数字)
; KBD_SFTCALC (電卓用数字)
; KBD_SFTCLOCK (時計用数字)
; KBD_LOCK (キーボードロック)
; KBD_UNLOCK (キーボードロック解除)
;
; OUT: 無
;
; Reg. 全保存
;-----------------------------------------------------------------------------
define SetKeyMap 32
;
; キーマップの設定を行う。
; AにKMP_DEFAULTを設定した場合、HLは無視され、標準のキーマップが設定され
; る。
;
; IN: B マップ番号 KMP_NUM 数字マップ
; KMP_ALPHA 英字マップ
; KMP_KANA カナマップ
; A マップテーブルページ
; または KMP_DEFAULT 標準キーマップ
; HL マップテーブルアドレス
;
; OUT: 無
;
; Reg. 全保存
;=============================================================================
; サウンド
;=============================================================================
define Beep 33
;
; 長いビープ音を鳴らす。
;
; IN: 無
;
; OUT: 無
;
; Reg. 全保存
;-----------------------------------------------------------------------------
define Click 34
;
; 短いビープ音を鳴らす。
;
; IN: 無
;
; OUT: 無
;
; Reg. 全保存
;-----------------------------------------------------------------------------
define Sound 35
;
; サウンドを鳴らす。
; 音程はオクターブを指定するSND_O1~SND_O5と音階を指定するSND_C,SND_C_~
; SND_Bで指定する。(最高音程は SND_O5+SND_C)
;
; IN: A 音程 SND_REST 休符(無音)
; SND_Ox+SND_xx 音程
; SND_STOP 強制停止
; B 音長 10ms単位の音長
; または SND_CONTINUE 鳴り続ける
;
; OUT: 無
;
; Reg. 全保存
;=============================================================================
; ダイアラー
;=============================================================================
define DialTone 37
;
; ダイアルトーンを発生する。
;
; IN: A ダイアル番号 DLN_0~DLN_9 0~9
; DLN_STAR *
; DLN_SHARP #
;
; OUT: 無
;
; Reg. 全保存
;-----------------------------------------------------------------------------
define Dial 38
;
; オートダイアルを行う。
;
; IN: XP,IX ダイアル文字列 0~9及び*,# トーン発生
; . 1秒待ち
; その他 無視
;
; OUT: 無
;
; Reg. 全保存
;=============================================================================
; グラフィック
;=============================================================================
define GPset 44
;
; グラフィックのドットをセット/リセットする。
;
; IN: IX X座標(0-199)
; IY Y座標(0-319)
; A 点灯/消灯 OFF 消灯
; ON 点灯
;
; OUT: 無
;
; Reg. 全保存
;
; 縦画面表示のときは左上を起点として横をX座標, 縦をY座標としています。
; 横画面表示のときは左上を起点として縦をX座標, 横をY座標としています。
; これはドットの表示をできるだけ速く行うための使用ですが, 横画面表示
; の座標系が使いにくい場合, API_H のマクロを使えば横をX座標, 縦をY座
; 標として扱うことができます。
;
; つまり「API GPset」と書くところを「API_H GPset」としてください。
; このとき入力パラメーターは
;
; IN: IX X座標(0-319)
; IY Y座標(0-199)
; A 点灯/消灯 OFF 消灯
; ON 点灯
;
; となります。
;
;-----------------------------------------------------------------------------
define GPoint 45
;
; グラフィックのドット状態を検査する。
;
; IN: IX X座標(0-199)
; IY Y座標(0-319)
;
; OUT: A 点灯/消灯 OFF 消灯
; OFF以外 点灯
;
; Reg. A以外保存
;
; GPsetの場合と同様に, 横画面表示のときに「API_H GPoint」とすれば,
; 横をX座標, 縦をY座標として扱うことができます。
;
;=============================================================================
; 日付、時間
;=============================================================================
define SetTime 46
;
; システム時刻をセットする。
;
; IN: H 時 0~23
; L 分 0~59
; B 秒 0~59
;
; OUT: 無
;
; Reg. 全保存
;-----------------------------------------------------------------------------
define GetTime 47
;
; システム時刻を読み出す。
;
; IN: 無
;
; OUT: H 時 0~23
; L 分 0~59
; B 秒 0~59
;
; Reg. B,HL以外保存
;-----------------------------------------------------------------------------
define SetDate 48
;
; システム日付をセットする。
;
; IN: H 年 0~103 H年は1995年を基準とした差分
; で表わします。つまり,
; H年=(西暦-1995)
; 1995年は,H=0
; 1996年は,H=1
; となります。
; L 月 1~12
; B 日 1~31
;
; OUT: 無
;
; Reg. 全保存
;-----------------------------------------------------------------------------
define GetDate 49
;
; システム日付を読み出す。
;
; IN: 無
;
; OUT: H 年 0~103 H年は1995年を基準とした差分
; で表わします。つまり,
; H年=(西暦-1995)
; 1995年は,H=0
; 1996年は,H=1
; となります。
; L 月 1~12
; B 日 1~31
;
; Reg. B,HL以外保存
;-----------------------------------------------------------------------------
define DayOfWeek 50
;
; 指定年月日の曜日を取得する。
;
; IN: H 年 0~103 H年は1995年を基準とした差分
; で表わします。つまり,
; H年=(西暦-1995)
; 1995年は,H=0
; 1996年は,H=1
; となります。
; L 月 1~12
; B 日 1~31
;
; OUT: A 曜日 0:日~6:土
;
; Reg. A以外保存
;=============================================================================
; その他
;=============================================================================
define Random 51
;
; 擬似一様乱数を取得する。
;
; IN: 無
;
; OUT: A 乱数値 0~255
;
; Reg. A以外保存
;-----------------------------------------------------------------------------
define Wait 52
;
; 指定時間の時間待ちを行う。
;
; IN: A 待ち時間 10ms単位(10ms~2550ms:2.55s)
;
; OUT: 無
;
; Reg. 全保存
;-----------------------------------------------------------------------------
define SetWaitTimer 53
;
; 経過時間監視タイマーを設定する。
; このタイマーを使用中にWaitを使用するとこのタイマーは無効になります。
;
; IN: A タイマー初期値 10ms単位(10ms~2550ms:2.55s)
;
; OUT: 無
;
; Reg. 全保存
;-----------------------------------------------------------------------------
define GetWaitTimer 54
;
; 経過時間監視タイマーの値を読み出す。
; このタイマーを使用中にWaitを使用するとこのタイマーは無効になります。
;
; IN: 無
;
; OUT: A 残タイマー値 10ms単位
;
; Reg. 全保存
;=============================================================================
;=============================================================================
; API定数一覧
;
; APIで使用する定数は実際の番号ではなく、ここに記載されている定義名で使用して
; ください。
; 今後、API拡張などでAPIの機能に修整が加えられた場合でも、再アセンブルで対応
; する事が可能になります。
;=============================================================================
;-----------------------------------------------------------------------------
; Flags
;-----------------------------------------------------------------------------
define ON 01h
define OFF 00h
define TRUE 01h
define FALSE 00h
;-----------------------------------------------------------------------------
; API Screen
;-----------------------------------------------------------------------------
define SCR_TC100 0
define SCR_VW200V16 1
define SCR_VW200H16 2
define SCR_VW200V18 3
define SCR_VW200H18 4
;-----------------------------------------------------------------------------
; API PutNum,PutNum2
;-----------------------------------------------------------------------------
define PNM_ZEROFILL 00h
define PNM_SUPPRESS 80h
;-----------------------------------------------------------------------------
; API Indicator
;-----------------------------------------------------------------------------
define IND_UPARROW 0
define IND_RIGHTARROW 1
define IND_LEFTARROW 2
define IND_DOWNARROW 3
define IND_USER1 4
define IND_USER2 5
define IND_USER3 6
define IND_USER4 7
define IND_CALC 8
define IND_CLOCK 9
define IND_SMALL 10
define IND_ALPHA 11
define IND_NUM 12
define IND_KANA 13
define IND_INSERT 14
define IND_BATT 15
;-----------------------------------------------------------------------------
; API InKey,InKeyWait,SenseKey,Input,Input2
;
; キーモードを変えると同じキーを押しても返される値が変わる場合があ
; ります。たとえば, 電卓用数字では KCD_UP, KCD_DOWN, KCD_LEFT,
; KCD_RIGHTではなく, KCD_RM, KCD_MPLUS, KCD_MMINUS, KCD_CM が返され
; ます。
;-----------------------------------------------------------------------------
define KCD_NONE 00h
define KCD_DELETE 05h
define KCD_INSERT 06h
define KCD_CCE 08h
define KCD_RM 09h
define KCD_MMINUS 0ah
define KCD_CM 0bh
define KCD_MPLUS 0ch
define KCD_OK 0dh
define KCD_TIME 10h
define KCD_UP 1ch
define KCD_DOWN 1dh
define KCD_RIGHT 1eh
define KCD_LEFT 1fh
;-----------------------------------------------------------------------------
; API ReadKey
;-----------------------------------------------------------------------------
define KSC_NONE 0ffh
define KSC_ONOFF 0 (N/A)
define KSC_5 1
define KSC_6 2
define KSC_7 3
define KSC_8 4
define KSC_9 5
define KSC_LEFT 6
define KSC_UP 7
define KSC_FN 8 (N/A)
define KSC_0 9
define KSC_1 10
define KSC_2 11
define KSC_3 12
define KSC_4 13
define KSC_DOWN 14
define KSC_RIGHT 15
define KSC_DIV 16
define KSC_MUL 17
define KSC_PLUS 18
define KSC_MINUS 19
define KSC_PERCENT 20
define KSC_DOT 21
define KSC_CCE 22
define KSC_EQUAL 23
define KSC_OK 23
;-----------------------------------------------------------------------------
; API GetChar,GetChar2
;-----------------------------------------------------------------------------
define ATR_SBCS 0
define ATR_DBCS1 1
define ATR_DBCS2 2
;-----------------------------------------------------------------------------
; API KeyMode
;-----------------------------------------------------------------------------
define KBD_READY 80h ; type ahead buffer ready
define KBD_LOCK 20h ; key lock
define KBD_UNLOCK 00h ; key unlock
define KBD_NUMLOCK 40h ; NUM
define KBD_KANA 10h ; KANA
define KBD_ALPHA 00h ; ALPHA
define KBD_SFTNUM 00h ; NUM default
define KBD_SFTCALC 01h ; NUM calc
define KBD_SFTCLOCK 02h ; NUM clock
;-----------------------------------------------------------------------------
; API SetKeyMap
;-----------------------------------------------------------------------------
define KMP_NUM 0
define KMP_ALPHA 1
define KMP_KANA 2
define KMP_DEFAULT 0ffh
;-----------------------------------------------------------------------------
; API Sound
;-----------------------------------------------------------------------------
define SND_REST 0
define SND_C 1
define SND_C_ 2
define SND_D 3
define SND_D_ 4
define SND_E 5
define SND_F 6
define SND_F_ 7
define SND_G 8
define SND_G_ 9
define SND_A 10
define SND_A_ 11
define SND_B 12
define SND_O1 0
define SND_O2 12
define SND_O3 24
define SND_O4 36
define SND_O5 48
;「SND_Ox」の「O」は数字の「ゼロ(0)」ではなく, アルファベットの「O」です。
define SND_CONTINUE 0
define SND_STOP 0ffh
;-----------------------------------------------------------------------------
; API DialTone
;-----------------------------------------------------------------------------
define DLN_0 0
define DLN_1 1
define DLN_2 2
define DLN_3 3
define DLN_4 4
define DLN_5 5
define DLN_6 6
define DLN_7 7
define DLN_8 8
define DLN_9 9
define DLN_STAR 10
define DLN_SHARP 11
;=============================================================================
define WaitTimerReset 53
define WaitTimer 54
endif ;VW200API_INC