-/* 10進定数をWORD値に変換 */
-WORD getint(const char *str)
-{
- assert(isdigit(*str) || *str == '-');
- char *check;
- int n;
- /* WORD値に変換 */
- n = strtol(str, &check, 10);
- if(*check != '\0') {
- setcerr(114, str); /* not integer */
- return 0x0;
- }
- /* nが-32768〜32767の範囲にないときは、その下位16ビットを格納 */
- if(n < -32768 || n > 32767) {
- n = n % 32768;
- }
- return (WORD)n;
-}
-
-/* 16進定数をWORD値に変換 */
-WORD gethex(const char *str)
-{
- assert(*str == '#');
- WORD adr = 0x0;
- char *check;
- str++;
- if(*str == '-' || strlen(str) > 4) {
- setcerr(116, str-1); /* out of hex range */
- return 0;
- }
- /* WORD値に変換 */
- adr = (WORD)strtol(str, &check, 16);
- if(*check != '\0') {
- setcerr(115, str-1); /* not hex */
- return 0x0;
- }
- return adr;
-}
-
-/* アドレスを返す
- アドレスには、リテラル/10進定数/16進定数/アドレス定数が含まれる */
-WORD getadr(const char *str, PASS pass)
+/* アドレスを返す */
+/* アドレスには、リテラル/10進定数/16進定数/アドレス定数が含まれる */
+WORD getadr(const char *prog, const char *str, PASS pass)