PUBLIC ST_PTR

.NOLIST
INCLUDE ARITY.INC
.LIST

strdefcr MACRO idx,text
	strdef idx,<text,13,10>
ENDM

IFNDEF SYS_JAPANESE

DEFINITIONS MACRO

;;; File Errors
strdef 1001,"ERR 1001 File not found"
strdef 1002,"ERR 1002 Path not found"
strdef 1003,"ERR 1003 Too many open files"
strdef 1004,"ERR 1004 Access denied"
strdef 1005,"ERR 1005 Invalid handle"
strdef 1006,"ERR 1006 Attempted to remove the current directory"
strdef 1007,"ERR 1007 Cannot rename to different device"
strdef 1008,"ERR 1008 Disk full"


;;; Reader error strings
strdefcr 1,"SYNTAX 1 Error using operators."
strdefcr 2,"SYNTAX 2 Atom or variable name too long."
strdefcr 3,"SYNTAX 3 Error in list syntax."
strdefcr 4,"SYNTAX 4 Error in database ref token."
strdefcr 5,"SYNTAX 5 Right snip (!]) not found where expected."
strdefcr 6,"SYNTAX 6 Invalid punctuation character."
strdefcr 7,"SYNTAX 7 Precedence error using operators."
strdefcr 8,"SYNTAX 8 Right brace not found where expected."
strdefcr 9,"SYNTAX 9 Right paren not found where expected."
strdefcr 10,"SYNTAX 10 Invalid numeric entry."

;;; Exit stopcodes
strdef 101,"ERR 101 Unexpected system error"
strdef 102,"ERR 102 Unexpected fileerror"
strdef 103,"ERR 103 Database error"
strdef 104,"ERR 104 Not enough memory for startup"
strdef 105,"ERR 105 Must use DOS 2.0 or greater"
strdef 106,"ERR 106 Internal windows driver error"
strdef 107,"ERR 107 Error while restoring database"
strdef 108,"ERR 108 Error writing a page to disk - disk probably full"
strdef 109,"ERR 109 Could not create overflow file"
strdef 110,"ERR 110 Maximum number of Prolog threads exceeded"

;;; Cond stopcodes
strdef 200,"ERR 200 Illegal use of an erased ref or key"
strdef 201,"ERR 201 Attempt to erase something that has already been erased"
strdef 202,"ERR 202 Attempt to hard_erase something that has already been hard_erased"
strdef 203,"ERR 203 Invalid database access"
strdef 204,"ERR 204 Attempt to write to a read-only page"
strdef 205,"ERR 205 Illegal format for database file"
strdef 206,"ERR 206 Database file not found"
strdef 207,"ERR 207 Out of atom space"
strdef 208,"ERR 208 Database full"
strdef 209,"ERR 209 Maximum number of worlds exceeded"
strdef 210,"ERR 210 Maximum number of windows exceeded"
strdef 211,"ERR 211 Not enough local stack"
strdef 212,"ERR 212 Not enough global stack"
strdef 213,"ERR 213 Not enough trail stack"
strdef 214,"ERR 214 Error while saving database"
strdef 215,"ERR 215 Prolog predicate called as a C function failed"
strdef 216,"ERR 216 Invalid return type of function"
strdef 217,"ERR 217 Run-time type error in embedded C expression"
strdef 218,"ERR 218 Thread not initialized for Prolog"

;;; Miscellaneous errors and warnings (excess 500)
strdef 501,"STYLE 501 Predicate is not contiguous -- "
strdef 502,"STYLE 502 Single use of a variable -- "
strdef 503,"ERR 503 Attempt to redefine built-in predicate -- "
strdef 504,"ERR 504 Begin without End in resource definition -- "
strdef 505,"ERR 505 Error in dialog control definition -- "
strdef 506,"ERR 506 Illegal menu item definition -- "
strdef 507,"ERR 507 Include File not found -- "
strdef 508,"ERR 508 Error in macro expansion -- "
strdef 509,"ERR 509 :- elif without corresponding :- if"
strdef 510,"ERR 510 :- endif without corresponding :- if"
strdef 511,"ERR 511 Warning, redefining macro -- "

;;; Random text
strdef 700,"Type any key to continue."
strdef 701,"Failing call to variable.  Type any key to continue."
strdefcr 702,"Failing call to undefined predicate: "
strdef 703,"Do you really want to abort? "
strdefcr 704,"Type 'h' for help."

strdefcr 1500,"APC1500: Cannot create new database - INI.IDB not found"
strdefcr 1501,"APC1501: Error creating database ~w"
strdefcr 1502,"APC1502: Database file ~w not found"
strdefcr 1503,"APC1503: Error creating object file ~w"
strdefcr 1504,"APC1504: Error creating intermediate file ~w"
strdefcr 1505,"APC1505: Illegal atomic goal -- ~q"
strdefcr 1506,"APC1506: Illegal syntax in case expression -- ~q"
strdefcr 1507,"APC1507: Illegal directive -- ~q"
strdefcr 1508,"APC1508: No definition for public predicate -- ~p"
strdefcr 1509,"APC1509: No definition for predicate -- ~p"
strdefcr 1510,"APC1510: No definition for visible predicate -- ~p"
strdef	1511,"APC1511: Input file not found -- "
strdefcr 1512,"APC1512: Module size exceeds system limit - break into smaller modules"
strdefcr 1513,"APC1513: No compiled arithmetic can be interpreted -- ~q"
strdef	1514,"APC1514: Intermediate file not found by second pass -- "
strdef	1515,"APC1515: Error creating new database -- "
strdef	1516,"APC1516: File error in compiler pass 2"
strdefcr 1517,"APC1517: File EVALPRED.INI not found"
strdef	1518,"APC1518: Invalid format for term in EVALPRED.INI -- "
strdefcr 1519,"APC1519: PLM instruction ~w not found"
strdefcr 1520,"APC1520: File PLM.ARI not found"
strdef 1521,"APC1521: Tokenization Error"
strdef	1522,"APC1522: Pragma not defined"
strdef	1523,"APC1523: Include File Not Found: "
strdef	1524,"APC1524: Warning: redefinition of symbol ~a"
strdef	1525,"APC1525: Auto declaration not supported"
strdef	1526,"APC1526: Register declaration not supported"
strdef	1527,"APC1527: Struc/Enum/Tag ~a is already defined"
strdef	1528,"APC1528: Void element of union of structure"
strdef	1529,"APC1529: Function element of union or structure"
strdef	1530,"APC1530: Name ~a is already defined"
strdef	1531,"APC1531: Extern variable ~a cannot be inited"
strdef	1532,"APC1532: Invalid type ~a"
strdef	1533,"APC1533: Warning: Type ~a ignored"
strdef	1534,"APC1534: Modifier ~a illegal in context"
strdef 1535,"APC1535: Found ~a when looking for ~a"
strdef	1536,"APC1536: Warning: Huge declaration treated as far"
strdef 1537,"APC1537: Syntax Error"
strdef 1538,"APC1538: Declaration Error"
strdef	1539,"APC1539: #endif, #elif, or #else without matching #if"
strdef	1540,"APC1540: Undefined identifier ~a"
strdef	1541,"APC1541: Warning: sizeof() returns 0"
strdef	1542,"APC1542: Warning: Address of a function/array - ignored"
strdef	1543,"APC1543: Warning: Conversion of a far pointer to near"
strdef	1544,"APC1544: Warning: Integer conversion to pointer"
strdef	1545,"APC1545: Warning: Pointer conversion to integer"
strdef	1546,"APC1546: Warning: Subtraction of pointers with different types or distances"
strdef	1547,"APC1547: General expression failure"
strdef	1548,"APC1548: Illegal arguments for operator ~a"
strdef	1549,"APC1549: Illegal 'is' assignment"
strdef	1550,"APC1550: Illegal assignment"
strdef	1551,"APC1551: Cannot compute address of argument (&)"
strdef	1552,"APC1552: Cannot dereference expression (*)"
strdef	1553,"APC1553: Invalid pointer operation"
strdef	1554,"APC1554: Size of object is 0 in pointer arithmetic"
strdef	1555,"APC1555: Divide by 0 error in expression"
strdef	1556,"APC1556: Illegal declaration"
strdef	1557,"APC1557: Attempt to redefine automatic identifier"
strdef	1558,"APC1558: Error in selection of member of struct or union"
strdef	1559,"APC1559: Illegal argument in sizeof()"
strdef	1560,"APC1560: Illegal function argument"
strdef	1561,"APC1561: Illegal cast"
strdef	1562,"APC1562: Unknown error compiling C expression"
strdef	1563,"APC1563: Warning: Too many actual parameters"
strdef	1564,"APC1564: Warning: Too few actual parameters"
strdef	1565,"APC1565: Warning: Formal parameter ignored"
strdef	1566,"APC1566: Struc/Enum/Tag ~a is undefined"
strdefcr 1567,"APC1567: Warning: Conflicting segmodule declarations for module ~w"
strdefcr 1568,"APC1568: Module ~w used in extrn declaration without segmodule declaration"
strdefcr 1569,"APC1569: Predicate ~p uses undefined predicate ~p"

ENDM

ELSE

DEFINITIONS MACRO

;;; File Errors
strdef 1001,"ERR 1001 ファイルが見つかりません"
strdef 1002,"ERR 1002 パスが見つかりません"
strdef 1003,"ERR 1003 オープンするファイルが多すぎます"
strdef 1004,"ERR 1004 アクセスできません"
strdef 1005,"ERR 1005 無効なハンドルです"
strdef 1006,"ERR 1006 カレントディレクトリを削除しようとしました"
strdef 1007,"ERR 1007 異なるデバイスにリネームしようとしました"
strdef 1008,"ERR 1008 ディスクが一杯です"


;;; Reader error strings
strdefcr 1,"SYNTAX 1 オペレータの用法に誤りがあります"
strdefcr 2,"SYNTAX 2 アトムあるいは変数名が長すぎます"
strdefcr 3,"SYNTAX 3 リストの文法が違います"
strdefcr 4,"SYNTAX 4 データベース参照番号の記号が違います"
strdefcr 5,"SYNTAX 5 右側のスニップ(!])が予想された場所に見つかりません"
strdefcr 6,"SYNTAX 6 句読文字が不適切です"
strdefcr 7,"SYNTAX 7 オペレータの優先順位に誤りがあります"
strdefcr 8,"SYNTAX 8 右側の大括弧が予想された場所に見つかりません"
strdefcr 9,"SYNTAX 9 右側の括弧が予想された場所に見つかりません"
strdefcr 10,"SYNTAX 10 数値入力が無効です"

;;; Exit stopcodes
strdef 101,"ERR 101 予期されなかったシステムエラーが発生しました"
strdef 102,"ERR 102 予期されなかったファイルエラーが発生しました"
strdef 103,"ERR 103 データベースエラーが発生しました"
strdef 104,"ERR 104 スタートアップのためのメモリが足りません"
strdef 105,"ERR 105 MS-DOS Version 2.0 以上をお使い下さい"
strdef 106,"ERR 106 内部のウィンドウ・ドライバのエラーが発生しました"
strdef 107,"ERR 107 データベースのリストア中にエラーが発生しました"
strdef 108,"ERR 108 ページをディスクに書き出し中にエラーを起こしました - おそらくディスクが一杯です"
strdef 109,"ERR 109 オーバーフローファイルを作成できませんでした"
strdef 110,"ERR 110 Maximum number of Prolog threads exceeded"

;;; Cond stopcodes
strdef 200,"ERR 200 消去されたデータベース参照番号かキーを不正に使用しています"
strdef 201,"ERR 201 すでに erase されていたものを再度 erase しようとしました"
strdef 202,"ERR 202 すでに hard_erase されていたものを再度 hard_erase しようとしました"
strdef 203,"ERR 203 無効なデータベースアクセスです"
strdef 204,"ERR 204 リードオンリなページに書き込もうとしました"
strdef 205,"ERR 205 データベースファイルのフォーマットが不正です"
strdef 206,"ERR 206 データベースファイルが見つかりません"
strdef 207,"ERR 207 アトム領域をオーバーしました"
strdef 208,"ERR 208 データベースが一杯です"
strdef 209,"ERR 209 ワールドの最大値を越えました"
strdef 210,"ERR 210 ウィンドウの最大値を越えました"
strdef 211,"ERR 211 ローカルスタック領域が足りません"
strdef 212,"ERR 212 グローバルスタック領域が足りません"
strdef 213,"ERR 213 トレイルスタック領域が足りません"
strdef 214,"ERR 214 データベースのセーブ中にエラーが発生しました"
strdef 215,"ERR 215 C から呼出された Prolog 述語が失敗しました"
strdef 216,"ERR 216 関数の戻り値が不正です"
strdef 217,"ERR 217 統合化Ｃ表現の型変換エラーです"
strdef 218,"ERR 218 Thread not initialized for Prolog"


;;; Miscellaneous errors and warnings (excess 500)
strdef 501,"STYLE 501 述語が連続していません -- "
strdef 502,"STYLE 502 変数の単独使用です -- "
strdef 503,"ERR 503 すでに組み込まれている述語を再定義しようとしました -- "
strdef 504,"ERR 504 リソース定義の中に end の無い Begin があります -- "
strdef 505,"ERR 505 ダイアログ制御定義エラー  -- "
strdef 506,"ERR 506 メニューアイテム定義に誤りがあります -- "

;;; Random text
strdef 700,"どれかキーを押して下さい"
strdef 701,"変数呼び出しに失敗しました　どれかキーを押して下さい"
strdefcr 702,"述語が未定義なので失敗しました"
strdef 703,"中断abortしてよいですか"
strdefcr 704,"h 入力でヘルプが表示されます"

strdefcr 1500,"APC1500: INI.IDB が見つからないため新たなデータベースが作成できません"
strdef	 1501,"APC1501: Error creating database - "
strdefcr 1502,"APC1502: データベースファイルが見つかりません"
strdef	 1503,"APC1503: オブジェクトファイル作成中にエラーが発生しました -- "
strdef	 1504,"APC1504: 中間ファイルを作成中にエラーが発生しました -- "
strdef	 1505,"APC1505: ゴールの記述に誤りがあります -- "
strdef	 1506,"APC1506: case の表現に文法上の誤りがあります -- "
strdef	 1507,"APC1507: 命令に誤りがあります -- "
strdef	 1508,"APC1508: public な述語が見つかりません -- "
strdef	 1509,"APC1509: 述語が見つかりません -- "
strdef	 1510,"APC1510: visible な述語が見つかりません -- "
strdef	 1511,"APC1511: 入力されたファイルが見つかりません -- "
strdefcr 1512,"APC1512: モジュールサイズがシステムの限界を越えました - 小さなモジュールに分けて下さい"
strdef	 1513,"APC1513: 翻訳しなかった計算が解釈できなかった -- "
strdef	 1514,"APC1514: コンパイラパス2に対する中間ファイルが見つかりませんでした -- "
strdef	 1515,"APC1515: 新しいデータベースを作成できませんでした -- "
strdef	 1516,"APC1516: コンパイラパス2でエラーが発生しました"
strdefcr 1517,"APC1517: File EVALPRED.INI not found"
strdef	 1518,"APC1518: Invalid format for term in EVALPRED.INI -- "
strdef	 1519,"APC1519: PLM instruction not found -- "
strdefcr 1520,"APC1520: File PLM.ARI not found"
strdef	 1521,"APC1521: Ｃ宣言をトークン化できませんでした"
strdef	 1522,"APC1522: 実際の宣言がされていません"
strdef	 1523,"APC1523: インクルードファイルが見つかりません: "
strdef	 1524,"APC1524: Warning: シンボルはすでに定義されています: "
strdef	 1525,"APC1525: auto 宣言はサポートされていません"
strdef	 1526,"APC1526: register 宣言はサポートされていません"
strdef	 1527,"APC1527: 構造体/列挙型のタグはすでに定義されています: "
strdef	 1528,"APC1528: 構造体/共用体の要素として void を使用しています"
strdef	 1529,"APC1529: 共用体/構造体の要素として関数を使用しています"
strdef	 1530,"APC1530: 名前はすでに定義されています: "
strdef	 1531,"APC1531: 外部参照オブジェクトは初期化できません: "
strdef	 1532,"APC1532: 型が違います: "
strdef	 1533,"APC1533: Warning: 型宣言が無視されました: "
strdef	 1534,"APC1534: 文脈内の誤りを修正してください: "
strdef	 1535,"APC1535: 検索 "
strdef	 1536,"APC1536: Warning: Huge 宣言は無視されました"
strdef	 1537,"APC1537: 文法エラーです"
strdef	 1538,"APC1538: 宣言エラーです"
strdef	 1539,"APC1539: #endif,#elif,#else に対応する #if がありません"
strdef	 1540,"APC1540: 識別子が宣言されていません: "
strdef	 1541,"APC1541: Warning: sizeof() は 0 を返します"
strdef	 1542,"APC1542: Warning: 関数/配列のアドレスは無視されました"
strdef	 1543,"APC1543: Warning: far ポインタから near ポインタへ変換しました"
strdef	 1544,"APC1544: Warning: Integer conversion to pointer"
strdef	 1545,"APC1545: Warning: Pointer conversion to integer"
strdef	 1546,"APC1546: Warning: 型あるいは距離が違うポインタを減算しました"
strdef	 1547,"APC1547: 全般的な表現が違います"
strdef	 1548,"APC1548: オペレータの引数に誤りがあります: "
strdef	 1549,"APC1549: is の用法に誤りがあります"
strdef	 1550,"APC1550: 指定に誤りがあります"
strdef	 1551,"APC1551: 引数のアドレス計算ができません"
strdef	 1552,"APC1552: (*)表現で参照できません"
strdef	 1553,"APC1553: ポインタ操作が無効です"
strdef	 1554,"APC1554: ポインタの計算によるとオブジェクトのサイズは0です"
strdef	 1555,"APC1555: 0による除算が記述されています"
strdef	 1556,"APC1556: 宣言に誤りがあります"
strdef	 1557,"APC1557: 自動識別子の定義をしようとしました"
strdef	 1558,"APC1558: 構造体/共用体のメンバの選択に関するエラー"
strdef	 1559,"APC1559: sizeof() の引数に誤りがあります"
strdef	 1560,"APC1560: 関数の引数に誤りがあります"
strdef	 1561,"APC1561: cast に誤りがあります"
strdef	 1562,"APC1562: Ｃ表現のコンパイル中に未知のエラーが発生しました"
strdef	 1563,"APC1563: Warning: 実際のパラメータの数が多すぎます"
strdef	 1564,"APC1564: Warning: 実際のパラメータの数が少なすぎます"
strdef	 1565,"APC1565: Warning: 実際のパラメータが無視されました"
strdef	 1566,"APC1566: 構造体/列挙型/タグが宣言されていません: "
.ERR <Define 1567>
.ERR <Define 1568>

ENDM

ENDIF

.FARDATA

strdef	MACRO	idx,text
	WORD	idx
ENDM

st_indices	LABEL	WORD
	DEFINITIONS
st_indices_count	equ	(this word - st_indices)/2

PURGE strdef

strdef	MACRO	idx,text
	WORD	MSG&idx
ENDM

st_pointers	LABEL	WORD
	DEFINITIONS

PURGE strdef

strdef	MACRO	idx,text
MSG&idx BYTE	text,0
ENDM

	DEFINITIONS

.CODE ARITY_TEXT

;;; st_ptr - Return a pointer to a string
;;; Call:
;;; AX/ String Index
;;; Return/
;;; DX:AX - Long pointer to string
st_ptr PROC USES cx di es
	mov dx,SEG ST_INDICES
	mov es,dx
	mov di,OFFSET ST_INDICES
	mov cx,ST_INDICES_COUNT
	repne scasw			;Search for our entry
	jnz st_ptrx			;Not found
	sub di,OFFSET ST_INDICES
	mov ax,es:[di-2+st_pointers]
	mov dx,es
return:	ret
st_ptrx:
	xor ax,ax
	mov dx,ax
	jmp return
st_ptr ENDP

;;; pst_ptr - pascal callable version of st_ptr
pst_ptr PROC PASCAL PUBLIC idx:WORD
	mov ax,idx
	call st_ptr
	ret
pst_ptr ENDP

END
