<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
<title>doc_inner/doxygen/latex/assemble_8c_source.tex</title>
<meta name='robots' content='noindex,nofollow' />
<meta name='generator' content='GLOBAL-6.6.14' />
<meta http-equiv='Content-Style-Type' content='text/css' />
<link rel='stylesheet' type='text/css' href='../style.css' />
</head>
<body>
<a id='TOP' name='TOP'></a><h2 class='header'><a href='../mains.html'>root</a>/<a href='../files/2920.html'>doc_inner</a>/<a href='../files/2921.html'>doxygen</a>/<a href='../files/2922.html'>latex</a>/assemble_8c_source.tex</h2>
<em class='comment'>/* [<][>][^][v][top]<a href='#BOTTOM'>[bottom]</a><a href='../mains.html'>[index]</a><a href='../help.html'>[help]</a> */</em>
<hr />
<pre>
<a id='L1' name='L1'></a>\doxysection{assemble.\+c}
<a id='L2' name='L2'></a>\label{assemble_8c_source}\index{src/assemble.c@{src/assemble.c}}
<a id='L3' name='L3'></a>\textbf{ Go to the documentation of this file.}
<a id='L4' name='L4'></a>\begin{DoxyCode}{0}
<a id='L5' name='L5'></a>\DoxyCodeLine{00001\ \textcolor{preprocessor}{\#include\ "{}assemble.h"{}}}
<a id='L6' name='L6'></a>\DoxyCodeLine{00002\ }
<a id='L7' name='L7'></a>\DoxyCodeLine{00011\ \textcolor{keywordtype}{void}\ printline(FILE\ *stream,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *filename,\ \textcolor{keywordtype}{int}\ lineno,\ \textcolor{keywordtype}{char}\ *line);}
<a id='L8' name='L8'></a>\DoxyCodeLine{00012\ }
<a id='L9' name='L9'></a>\DoxyCodeLine{00024\ WORD\ getadr(\textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *prog,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *str,\ PASS\ pass);}
<a id='L10' name='L10'></a>\DoxyCodeLine{00025\ }
<a id='L11' name='L11'></a>\DoxyCodeLine{00038\ WORD\ grword(\textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *str,\ \textcolor{keywordtype}{bool}\ is\_x);}
<a id='L12' name='L12'></a>\DoxyCodeLine{00039\ }
<a id='L13' name='L13'></a>\DoxyCodeLine{00048\ WORD\ getliteral(\textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *str,\ PASS\ pass);}
<a id='L14' name='L14'></a>\DoxyCodeLine{00049\ }
<a id='L15' name='L15'></a>\DoxyCodeLine{00057\ \textcolor{keywordtype}{void}\ writememory(WORD\ word,\ WORD\ adr,\ PASS\ pass);}
<a id='L16' name='L16'></a>\DoxyCodeLine{00058\ }
<a id='L17' name='L17'></a>\DoxyCodeLine{00066\ \textcolor{keywordtype}{void}\ writestr(\textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *str,\ \textcolor{keywordtype}{bool}\ literal,\ PASS\ pass);}
<a id='L18' name='L18'></a>\DoxyCodeLine{00067\ }
<a id='L19' name='L19'></a>\DoxyCodeLine{00074\ \textcolor{keywordtype}{void}\ writedc(\textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *str,\ PASS\ pass);}
<a id='L20' name='L20'></a>\DoxyCodeLine{00075\ }
<a id='L21' name='L21'></a>\DoxyCodeLine{00083\ \textcolor{keywordtype}{void}\ assemble\_start(\textcolor{keyword}{const}\ CMDLINE\ *cmdl,\ PASS\ pass);}
<a id='L22' name='L22'></a>\DoxyCodeLine{00084\ }
<a id='L23' name='L23'></a>\DoxyCodeLine{00092\ \textcolor{keywordtype}{void}\ assemble\_ds(\textcolor{keyword}{const}\ CMDLINE\ *cmdl,\ PASS\ pass);}
<a id='L24' name='L24'></a>\DoxyCodeLine{00093\ }
<a id='L25' name='L25'></a>\DoxyCodeLine{00101\ \textcolor{keywordtype}{void}\ assemble\_end(\textcolor{keyword}{const}\ CMDLINE\ *cmdl,\ PASS\ pass);}
<a id='L26' name='L26'></a>\DoxyCodeLine{00102\ }
<a id='L27' name='L27'></a>\DoxyCodeLine{00110\ \textcolor{keywordtype}{void}\ assemble\_dc(\textcolor{keyword}{const}\ CMDLINE\ *cmdl,\ PASS\ pass);}
<a id='L28' name='L28'></a>\DoxyCodeLine{00111\ }
<a id='L29' name='L29'></a>\DoxyCodeLine{00130\ \textcolor{keywordtype}{void}\ assemble\_in(\textcolor{keyword}{const}\ CMDLINE\ *cmdl,\ PASS\ pass);}
<a id='L30' name='L30'></a>\DoxyCodeLine{00131\ }
<a id='L31' name='L31'></a>\DoxyCodeLine{00152\ \textcolor{keywordtype}{void}\ assemble\_out(\textcolor{keyword}{const}\ CMDLINE\ *cmdl,\ PASS\ pass);}
<a id='L32' name='L32'></a>\DoxyCodeLine{00153\ }
<a id='L33' name='L33'></a>\DoxyCodeLine{00171\ \textcolor{keywordtype}{void}\ assemble\_rpush(\textcolor{keyword}{const}\ CMDLINE\ *cmdl,\ PASS\ pass);}
<a id='L34' name='L34'></a>\DoxyCodeLine{00172\ }
<a id='L35' name='L35'></a>\DoxyCodeLine{00191\ \textcolor{keywordtype}{void}\ assemble\_rpop(\textcolor{keyword}{const}\ CMDLINE\ *cmdl,\ PASS\ pass);}
<a id='L36' name='L36'></a>\DoxyCodeLine{00192\ }
<a id='L37' name='L37'></a>\DoxyCodeLine{00197\ }
<a id='L38' name='L38'></a>\DoxyCodeLine{00211\ \textcolor{keywordtype}{bool}\ casl2cmd(CMD\ *cmdtbl,\ \textcolor{keyword}{const}\ CMDLINE\ *cmdl,\ PASS\ pass);}
<a id='L39' name='L39'></a>\DoxyCodeLine{00212\ }
<a id='L40' name='L40'></a>\DoxyCodeLine{00221\ \textcolor{keywordtype}{bool}\ assemble\_comet2cmd(\textcolor{keyword}{const}\ CMDLINE\ *cmdl,\ PASS\ pass);}
<a id='L41' name='L41'></a>\DoxyCodeLine{00222\ }
<a id='L42' name='L42'></a>\DoxyCodeLine{00231\ \textcolor{keywordtype}{bool}\ assembletok(\textcolor{keyword}{const}\ CMDLINE\ *cmdl,\ PASS\ pass);}
<a id='L43' name='L43'></a>\DoxyCodeLine{00232\ }
<a id='L44' name='L44'></a>\DoxyCodeLine{00243\ \textcolor{keywordtype}{bool}\ assembleline(\textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *line,\ PASS\ pass);}
<a id='L45' name='L45'></a>\DoxyCodeLine{00244\ }
<a id='L46' name='L46'></a>\DoxyCodeLine{00248\ \textcolor{keyword}{static}\ CERR\ cerr\_assemble[]\ =\ \{}
<a id='L47' name='L47'></a>\DoxyCodeLine{00249\ \ \ \ \ \{\ 106,\ \textcolor{stringliteral}{"{}operand\ mismatch\ in\ CASL\ II\ command"{}}\ \},}
<a id='L48' name='L48'></a>\DoxyCodeLine{00250\ \ \ \ \ \{\ 107,\ \textcolor{stringliteral}{"{}no\ label\ in\ START"{}}\ \},}
<a id='L49' name='L49'></a>\DoxyCodeLine{00251\ \ \ \ \ \{\ 108,\ \textcolor{stringliteral}{"{}not\ command\ of\ operand\ \(\backslash\)"{}r\(\backslash\)"{}"{}}\ \},}
<a id='L50' name='L50'></a>\DoxyCodeLine{00252\ \ \ \ \ \{\ 109,\ \textcolor{stringliteral}{"{}not\ command\ of\ operand\ \(\backslash\)"{}r1,r2\(\backslash\)"{}"{}}\ \},}
<a id='L51' name='L51'></a>\DoxyCodeLine{00253\ \ \ \ \ \{\ 110,\ \textcolor{stringliteral}{"{}not\ command\ of\ operand\ \(\backslash\)"{}r,adr[,x]\(\backslash\)"{}"{}}\ \},}
<a id='L52' name='L52'></a>\DoxyCodeLine{00254\ \ \ \ \ \{\ 111,\ \textcolor{stringliteral}{"{}not\ command\ of\ operand\ \(\backslash\)"{}adr[,x]\(\backslash\)"{}"{}}\ \},}
<a id='L53' name='L53'></a>\DoxyCodeLine{00255\ \ \ \ \ \{\ 112,\ \textcolor{stringliteral}{"{}not\ command\ of\ no\ operand"{}}\ \},}
<a id='L54' name='L54'></a>\DoxyCodeLine{00256\ \ \ \ \ \{\ 113,\ \textcolor{stringliteral}{"{}operand\ too\ many\ in\ COMET\ II\ command"{}}\ \},}
<a id='L55' name='L55'></a>\DoxyCodeLine{00257\ \ \ \ \ \{\ 119,\ \textcolor{stringliteral}{"{}out\ of\ COMET\ II\ memory"{}}\ \},}
<a id='L56' name='L56'></a>\DoxyCodeLine{00258\ \ \ \ \ \{\ 120,\ \textcolor{stringliteral}{"{}GR0\ in\ operand\ x"{}}\ \},}
<a id='L57' name='L57'></a>\DoxyCodeLine{00259\ \ \ \ \ \{\ 122,\ \textcolor{stringliteral}{"{}cannot\ create\ hash\ table"{}}\ \},}
<a id='L58' name='L58'></a>\DoxyCodeLine{00260\ \ \ \ \ \{\ 124,\ \textcolor{stringliteral}{"{}more\ than\ one\ character\ in\ literal"{}}\ \},}
<a id='L59' name='L59'></a>\DoxyCodeLine{00261\ \ \ \ \ \{\ 125,\ \textcolor{stringliteral}{"{}not\ GR\ in\ operand\ x"{}}\ \},}
<a id='L60' name='L60'></a>\DoxyCodeLine{00262\ \};}
<a id='L61' name='L61'></a>\DoxyCodeLine{00263\ }
<a id='L62' name='L62'></a>\DoxyCodeLine{00267\ \textcolor{keyword}{static}\ CMD\ ascmd[]\ =\ \{}
<a id='L63' name='L63'></a>\DoxyCodeLine{00268\ \ \ \ \ \{\ \textcolor{stringliteral}{"{}START"{}},\ assemble\_start\ \},}
<a id='L64' name='L64'></a>\DoxyCodeLine{00269\ \ \ \ \ \{\ \textcolor{stringliteral}{"{}END"{}},\ assemble\_end\ \},}
<a id='L65' name='L65'></a>\DoxyCodeLine{00270\ \ \ \ \ \{\ \textcolor{stringliteral}{"{}DS"{}},\ assemble\_ds\ \},}
<a id='L66' name='L66'></a>\DoxyCodeLine{00271\ \ \ \ \ \{\ \textcolor{stringliteral}{"{}DC"{}},\ assemble\_dc\ \},}
<a id='L67' name='L67'></a>\DoxyCodeLine{00272\ \ \ \ \ \{\ \textcolor{stringliteral}{"{}"{}},\ NULL\ \}}
<a id='L68' name='L68'></a>\DoxyCodeLine{00273\ \};}
<a id='L69' name='L69'></a>\DoxyCodeLine{00274\ }
<a id='L70' name='L70'></a>\DoxyCodeLine{00278\ \textcolor{keyword}{static}\ CMD\ macrocmd[]\ =\ \{}
<a id='L71' name='L71'></a>\DoxyCodeLine{00279\ \ \ \ \ \{\ \textcolor{stringliteral}{"{}OUT"{}},\ assemble\_out\ \},}
<a id='L72' name='L72'></a>\DoxyCodeLine{00280\ \ \ \ \ \{\ \textcolor{stringliteral}{"{}IN"{}},\ assemble\_in\ \},}
<a id='L73' name='L73'></a>\DoxyCodeLine{00281\ \ \ \ \ \{\ \textcolor{stringliteral}{"{}RPUSH"{}},\ assemble\_rpush\ \},}
<a id='L74' name='L74'></a>\DoxyCodeLine{00282\ \ \ \ \ \{\ \textcolor{stringliteral}{"{}RPOP"{}},\ assemble\_rpop\ \},}
<a id='L75' name='L75'></a>\DoxyCodeLine{00283\ \ \ \ \ \{\ \textcolor{stringliteral}{"{}"{}},\ NULL\ \}}
<a id='L76' name='L76'></a>\DoxyCodeLine{00284\ \};}
<a id='L77' name='L77'></a>\DoxyCodeLine{00285\ }
<a id='L78' name='L78'></a>\DoxyCodeLine{00286\ ASPTR\ *asptr\ =\ NULL;}
<a id='L79' name='L79'></a>\DoxyCodeLine{00287\ }
<a id='L80' name='L80'></a>\DoxyCodeLine{00288\ ASMODE\ asmode\ =\ \{\textcolor{keyword}{false},\ \textcolor{keyword}{false},\ \textcolor{keyword}{false},\ \textcolor{keyword}{false},\ \textcolor{keyword}{false}\};}
<a id='L81' name='L81'></a>\DoxyCodeLine{00289\ }
<a id='L82' name='L82'></a>\DoxyCodeLine{00290\ \textcolor{keywordtype}{void}\ printline(FILE\ *stream,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *filename,\ \textcolor{keywordtype}{int}\ lineno,\ \textcolor{keywordtype}{char}\ *line)}
<a id='L83' name='L83'></a>\DoxyCodeLine{00291\ \{}
<a id='L84' name='L84'></a>\DoxyCodeLine{00292\ \ \ \ \ fprintf(stream,\ \textcolor{stringliteral}{"{}\%s:\%5d:\%s"{}},\ filename,\ lineno,\ line);}
<a id='L85' name='L85'></a>\DoxyCodeLine{00293\ \}}
<a id='L86' name='L86'></a>\DoxyCodeLine{00294\ }
<a id='L87' name='L87'></a>\DoxyCodeLine{00295\ WORD\ getadr(\textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *prog,\ \textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *str,\ PASS\ pass)}
<a id='L88' name='L88'></a>\DoxyCodeLine{00296\ \{}
<a id='L89' name='L89'></a>\DoxyCodeLine{00297\ \ \ \ \ WORD\ adr\ =\ 0;}
<a id='L90' name='L90'></a>\DoxyCodeLine{00298\ }
<a id='L91' name='L91'></a>\DoxyCodeLine{00299\ \ \ \ \ \textcolor{keywordflow}{if}(str[0]\ ==\ \textcolor{charliteral}{'='})\ \{}
<a id='L92' name='L92'></a>\DoxyCodeLine{00300\ \ \ \ \ \ \ \ \ adr\ =\ getliteral(str,\ pass);}
<a id='L93' name='L93'></a>\DoxyCodeLine{00301\ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \textcolor{keywordflow}{if}(isdigit(str[0])\ ||\ str[0]\ ==\ \textcolor{charliteral}{'-\/'}\ ||\ str[0]\ ==\ \textcolor{charliteral}{'\#'})\ \{}
<a id='L94' name='L94'></a>\DoxyCodeLine{00302\ \ \ \ \ \ \ \ \ adr\ =\ nh2word(str);}
<a id='L95' name='L95'></a>\DoxyCodeLine{00303\ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{}
<a id='L96' name='L96'></a>\DoxyCodeLine{00304\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}(pass\ ==\ SECOND)\ \{}
<a id='L97' name='L97'></a>\DoxyCodeLine{00305\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}((adr\ =\ getlabel(prog,\ str))\ ==\ 0xFFFF)\ \{}
<a id='L98' name='L98'></a>\DoxyCodeLine{00306\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ setcerr(103,\ str);\ \ \ \ \textcolor{comment}{/*\ label\ not\ found\ */}}
<a id='L99' name='L99'></a>\DoxyCodeLine{00307\ \ \ \ \ \ \ \ \ \ \ \ \ \}}
<a id='L100' name='L100'></a>\DoxyCodeLine{00308\ \ \ \ \ \ \ \ \ \}}
<a id='L101' name='L101'></a>\DoxyCodeLine{00309\ \ \ \ \ \}}
<a id='L102' name='L102'></a>\DoxyCodeLine{00310\ \ \ \ \ \textcolor{keywordflow}{return}\ adr;}
<a id='L103' name='L103'></a>\DoxyCodeLine{00311\ \}}
<a id='L104' name='L104'></a>\DoxyCodeLine{00312\ }
<a id='L105' name='L105'></a>\DoxyCodeLine{00313\ WORD\ grword(\textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *str,\ \textcolor{keywordtype}{bool}\ is\_x)}
<a id='L106' name='L106'></a>\DoxyCodeLine{00314\ \{}
<a id='L107' name='L107'></a>\DoxyCodeLine{00315\ \ \ \ \ WORD\ r\ =\ 0;}
<a id='L108' name='L108'></a>\DoxyCodeLine{00316\ }
<a id='L109' name='L109'></a>\DoxyCodeLine{00317\ \ \ \ \ \textcolor{comment}{/*\ \ "{}GR[0-\/7]"{}\ 以外の文字列では、0xFFFFを返して終了\ */}}
<a id='L110' name='L110'></a>\DoxyCodeLine{00318\ \ \ \ \ \textcolor{keywordflow}{if}(strlen(str)\ !=\ 3\ ||}
<a id='L111' name='L111'></a>\DoxyCodeLine{00319\ \ \ \ \ \ \ \ strncmp(str,\ \textcolor{stringliteral}{"{}GR"{}},\ 2)\ !=\ 0\ ||}
<a id='L112' name='L112'></a>\DoxyCodeLine{00320\ \ \ \ \ \ \ \ str[2]\ <\ \textcolor{charliteral}{'0'}\ ||\ str[2]\ >\ \textcolor{charliteral}{'0'}\ +\ (GRSIZE\ -\/\ 1))}
<a id='L113' name='L113'></a>\DoxyCodeLine{00321\ \ \ \ \ \{}
<a id='L114' name='L114'></a>\DoxyCodeLine{00322\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ 0xFFFF;}
<a id='L115' name='L115'></a>\DoxyCodeLine{00323\ \ \ \ \ \}}
<a id='L116' name='L116'></a>\DoxyCodeLine{00324\ \ \ \ \ r\ =\ (WORD)(str[2]\ -\/\ \textcolor{charliteral}{'0'});}
<a id='L117' name='L117'></a>\DoxyCodeLine{00325\ \ \ \ \ \textcolor{comment}{/*\ GR0は指標レジスタとして用いることができない\ */}}
<a id='L118' name='L118'></a>\DoxyCodeLine{00326\ \ \ \ \ \textcolor{keywordflow}{if}(is\_x\ ==\ \textcolor{keyword}{true}\ \&\&\ r\ ==\ 0x0)\ \{}
<a id='L119' name='L119'></a>\DoxyCodeLine{00327\ \ \ \ \ \ \ \ \ setcerr(120,\ \textcolor{stringliteral}{"{}"{}});\ \ \ \ \textcolor{comment}{/*\ GR0\ in\ operand\ x\ */}}
<a id='L120' name='L120'></a>\DoxyCodeLine{00328\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ 0;}
<a id='L121' name='L121'></a>\DoxyCodeLine{00329\ \ \ \ \ \}}
<a id='L122' name='L122'></a>\DoxyCodeLine{00330\ \ \ \ \ \textcolor{keywordflow}{return}\ r;}
<a id='L123' name='L123'></a>\DoxyCodeLine{00331\ \}}
<a id='L124' name='L124'></a>\DoxyCodeLine{00332\ }
<a id='L125' name='L125'></a>\DoxyCodeLine{00333\ WORD\ getliteral(\textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *str,\ PASS\ pass)}
<a id='L126' name='L126'></a>\DoxyCodeLine{00334\ \{}
<a id='L127' name='L127'></a>\DoxyCodeLine{00335\ \ \ \ \ assert(str[0]\ ==\ \textcolor{charliteral}{'='});}
<a id='L128' name='L128'></a>\DoxyCodeLine{00336\ \ \ \ \ WORD\ adr\ =\ asptr-\/>lptr;}
<a id='L129' name='L129'></a>\DoxyCodeLine{00337\ }
<a id='L130' name='L130'></a>\DoxyCodeLine{00338\ \ \ \ \ str++;}
<a id='L131' name='L131'></a>\DoxyCodeLine{00339\ \ \ \ \ \textcolor{keywordflow}{if}(str[0]\ ==\ \textcolor{charliteral}{'\(\backslash\)''})\ \{\ \ \ \ \textcolor{comment}{/*\ 文字定数\ */}}
<a id='L132' name='L132'></a>\DoxyCodeLine{00340\ \ \ \ \ \ \ \ \ writestr(str,\ \textcolor{keyword}{true},\ pass);}
<a id='L133' name='L133'></a>\DoxyCodeLine{00341\ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{}
<a id='L134' name='L134'></a>\DoxyCodeLine{00342\ \ \ \ \ \ \ \ \ writememory(nh2word(str),\ (asptr-\/>lptr)++,\ pass);}
<a id='L135' name='L135'></a>\DoxyCodeLine{00343\ \ \ \ \ \}}
<a id='L136' name='L136'></a>\DoxyCodeLine{00344\ \ \ \ \ \textcolor{keywordflow}{return}\ adr;}
<a id='L137' name='L137'></a>\DoxyCodeLine{00345\ \}}
<a id='L138' name='L138'></a>\DoxyCodeLine{00346\ }
<a id='L139' name='L139'></a>\DoxyCodeLine{00347\ \textcolor{keywordtype}{void}\ writememory(WORD\ word,\ WORD\ adr,\ PASS\ pass)}
<a id='L140' name='L140'></a>\DoxyCodeLine{00348\ \{}
<a id='L141' name='L141'></a>\DoxyCodeLine{00349\ \ \ \ \ \textcolor{keywordtype}{char}\ *n\ =\ NULL;}
<a id='L142' name='L142'></a>\DoxyCodeLine{00350\ }
<a id='L143' name='L143'></a>\DoxyCodeLine{00351\ \ \ \ \ \textcolor{comment}{/*\ メモリオーバーの場合、エラー発生\ */}}
<a id='L144' name='L144'></a>\DoxyCodeLine{00352\ \ \ \ \ \textcolor{keywordflow}{if}(adr\ >=\ sys-\/>memsize)\ \{}
<a id='L145' name='L145'></a>\DoxyCodeLine{00353\ \ \ \ \ \ \ \ \ setcerr(119,\ (n\ =\ word2n(adr)));\ \ \ \ \textcolor{comment}{/*\ out\ of\ COMET\ II\ memory\ */}}
<a id='L146' name='L146'></a>\DoxyCodeLine{00354\ \ \ \ \ \ \ \ \ FREE(n)}
<a id='L147' name='L147'></a>\DoxyCodeLine{00355\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return};}
<a id='L148' name='L148'></a>\DoxyCodeLine{00356\ \ \ \ \ \}}
<a id='L149' name='L149'></a>\DoxyCodeLine{00357\ \ \ \ \ (sys-\/>memory)[adr]\ =\ word;}
<a id='L150' name='L150'></a>\DoxyCodeLine{00358\ \ \ \ \ \textcolor{keywordflow}{if}(pass\ ==\ SECOND\ \&\&\ asmode.asdetail\ ==\ \textcolor{keyword}{true})\ \{}
<a id='L151' name='L151'></a>\DoxyCodeLine{00359\ \ \ \ \ \ \ \ \ fprintf(stdout,\ \textcolor{stringliteral}{"{}\(\backslash\)t\#\%04X\(\backslash\)t\#\%04X\(\backslash\)n"{}},\ adr,\ word);}
<a id='L152' name='L152'></a>\DoxyCodeLine{00360\ \ \ \ \ \}}
<a id='L153' name='L153'></a>\DoxyCodeLine{00361\ \}}
<a id='L154' name='L154'></a>\DoxyCodeLine{00362\ }
<a id='L155' name='L155'></a>\DoxyCodeLine{00363\ \textcolor{keywordtype}{void}\ writestr(\textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *str,\ \textcolor{keywordtype}{bool}\ literal,\ PASS\ pass)}
<a id='L156' name='L156'></a>\DoxyCodeLine{00364\ \{}
<a id='L157' name='L157'></a>\DoxyCodeLine{00365\ \ \ \ \ assert(str[0]\ ==\ \textcolor{charliteral}{'\(\backslash\)''});}
<a id='L158' name='L158'></a>\DoxyCodeLine{00366\ \ \ \ \ \textcolor{keywordtype}{bool}\ lw\ =\ \textcolor{keyword}{false};}
<a id='L159' name='L159'></a>\DoxyCodeLine{00367\ }
<a id='L160' name='L160'></a>\DoxyCodeLine{00368\ \ \ \ \ \textcolor{comment}{/*\ 「'」の場合、1文字スキップし、次の文字が「'」でなければ正常終了\ */}}
<a id='L161' name='L161'></a>\DoxyCodeLine{00369\ \ \ \ \ \textcolor{keywordflow}{for}(\textcolor{keywordtype}{int}\ i\ =\ 1;\ str[i]\ !=\ \textcolor{charliteral}{'\(\backslash\)''}\ ||\ str[++i]\ ==\ \textcolor{charliteral}{'\(\backslash\)''};\ i++)\ \{}
<a id='L162' name='L162'></a>\DoxyCodeLine{00370\ \ \ \ \ \ \ \ \ \textcolor{comment}{/*\ 「'」が閉じないまま文字列が終了した場合はエラー\ */}}
<a id='L163' name='L163'></a>\DoxyCodeLine{00371\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}(!str[i])\ \{}
<a id='L164' name='L164'></a>\DoxyCodeLine{00372\ \ \ \ \ \ \ \ \ \ \ \ \ setcerr(123,\ str);\ \ \ \ \textcolor{comment}{/*\ unclosed\ quote\ */}}
<a id='L165' name='L165'></a>\DoxyCodeLine{00373\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};}
<a id='L166' name='L166'></a>\DoxyCodeLine{00374\ \ \ \ \ \ \ \ \ \}}
<a id='L167' name='L167'></a>\DoxyCodeLine{00375\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}(literal\ ==\ \textcolor{keyword}{true}\ \&\&\ lw\ ==\ \textcolor{keyword}{true})\ \{}
<a id='L168' name='L168'></a>\DoxyCodeLine{00376\ \ \ \ \ \ \ \ \ \ \ \ \ setcerr(124,\ str);\ \ \ \ \textcolor{comment}{/*\ more\ than\ one\ character\ in\ literal\ */}}
<a id='L169' name='L169'></a>\DoxyCodeLine{00377\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};}
<a id='L170' name='L170'></a>\DoxyCodeLine{00378\ \ \ \ \ \ \ \ \ \}}
<a id='L171' name='L171'></a>\DoxyCodeLine{00379\ \ \ \ \ \ \ \ \ \textcolor{comment}{/*リテラルの場合はリテラル領域に書込\ */}}
<a id='L172' name='L172'></a>\DoxyCodeLine{00380\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}(literal\ ==\ \textcolor{keyword}{true})\ \{}
<a id='L173' name='L173'></a>\DoxyCodeLine{00381\ \ \ \ \ \ \ \ \ \ \ \ \ writememory(str[i],\ (asptr-\/>lptr)++,\ pass);}
<a id='L174' name='L174'></a>\DoxyCodeLine{00382\ \ \ \ \ \ \ \ \ \ \ \ \ lw\ =\ \textcolor{keyword}{true};}
<a id='L175' name='L175'></a>\DoxyCodeLine{00383\ \ \ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{}
<a id='L176' name='L176'></a>\DoxyCodeLine{00384\ \ \ \ \ \ \ \ \ \ \ \ \ writememory(str[i],\ (asptr-\/>ptr)++,\ pass);}
<a id='L177' name='L177'></a>\DoxyCodeLine{00385\ \ \ \ \ \ \ \ \ \}}
<a id='L178' name='L178'></a>\DoxyCodeLine{00386\ \ \ \ \ \}}
<a id='L179' name='L179'></a>\DoxyCodeLine{00387\ \}}
<a id='L180' name='L180'></a>\DoxyCodeLine{00388\ }
<a id='L181' name='L181'></a>\DoxyCodeLine{00389\ \textcolor{keywordtype}{void}\ writedc(\textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *str,\ PASS\ pass)}
<a id='L182' name='L182'></a>\DoxyCodeLine{00390\ \{}
<a id='L183' name='L183'></a>\DoxyCodeLine{00391\ \ \ \ \ WORD\ adr\ =\ 0;}
<a id='L184' name='L184'></a>\DoxyCodeLine{00392\ }
<a id='L185' name='L185'></a>\DoxyCodeLine{00393\ \ \ \ \ \textcolor{keywordflow}{if}(*str\ ==\ \textcolor{charliteral}{'\(\backslash\)''})\ \{}
<a id='L186' name='L186'></a>\DoxyCodeLine{00394\ \ \ \ \ \ \ \ \ writestr(str,\ \textcolor{keyword}{false},\ pass);}
<a id='L187' name='L187'></a>\DoxyCodeLine{00395\ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{}
<a id='L188' name='L188'></a>\DoxyCodeLine{00396\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}(str[0]\ ==\ \textcolor{charliteral}{'\#'}\ ||\ isdigit(str[0])\ ||\ str[0]\ ==\ \textcolor{charliteral}{'-\/'})\ \{}
<a id='L189' name='L189'></a>\DoxyCodeLine{00397\ \ \ \ \ \ \ \ \ \ \ \ \ adr\ =\ nh2word(str);}
<a id='L190' name='L190'></a>\DoxyCodeLine{00398\ \ \ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{}
<a id='L191' name='L191'></a>\DoxyCodeLine{00399\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}(pass\ ==\ SECOND\ \&\&\ (adr\ =\ getlabel(asptr-\/>prog,\ str))\ ==\ 0xFFFF)\ \{}
<a id='L192' name='L192'></a>\DoxyCodeLine{00400\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ setcerr(103,\ str);\ \ \ \ \textcolor{comment}{/*\ label\ not\ found\ */}}
<a id='L193' name='L193'></a>\DoxyCodeLine{00401\ \ \ \ \ \ \ \ \ \ \ \ \ \}}
<a id='L194' name='L194'></a>\DoxyCodeLine{00402\ \ \ \ \ \ \ \ \ \}}
<a id='L195' name='L195'></a>\DoxyCodeLine{00403\ \ \ \ \ \ \ \ \ writememory(adr,\ (asptr-\/>ptr)++,\ pass);}
<a id='L196' name='L196'></a>\DoxyCodeLine{00404\ \ \ \ \ \}}
<a id='L197' name='L197'></a>\DoxyCodeLine{00405\ \}}
<a id='L198' name='L198'></a>\DoxyCodeLine{00406\ }
<a id='L199' name='L199'></a>\DoxyCodeLine{00407\ \textcolor{keywordtype}{void}\ assemble\_start(\textcolor{keyword}{const}\ CMDLINE\ *cmdl,\ PASS\ pass)}
<a id='L200' name='L200'></a>\DoxyCodeLine{00408\ \{}
<a id='L201' name='L201'></a>\DoxyCodeLine{00409\ \ \ \ \ \textcolor{keywordflow}{if}(cmdl-\/>opd-\/>opdc\ >\ 1)\ \{}
<a id='L202' name='L202'></a>\DoxyCodeLine{00410\ \ \ \ \ \ \ \ \ setcerr(106,\ \textcolor{stringliteral}{"{}"{}});\ \ \ \ \textcolor{comment}{/*\ operand\ count\ mismatch\ */}}
<a id='L203' name='L203'></a>\DoxyCodeLine{00411\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return};}
<a id='L204' name='L204'></a>\DoxyCodeLine{00412\ \ \ \ \ \}}
<a id='L205' name='L205'></a>\DoxyCodeLine{00413\ \ \ \ \ \textcolor{keywordflow}{if}(!cmdl-\/>label[0])\ \{}
<a id='L206' name='L206'></a>\DoxyCodeLine{00414\ \ \ \ \ \ \ \ \ setcerr(107,\ \textcolor{stringliteral}{"{}"{}});\ \ \ \ \textcolor{comment}{/*\ no\ label\ in\ START\ */}}
<a id='L207' name='L207'></a>\DoxyCodeLine{00415\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return};}
<a id='L208' name='L208'></a>\DoxyCodeLine{00416\ \ \ \ \ \}}
<a id='L209' name='L209'></a>\DoxyCodeLine{00417\ \ \ \ \ \textcolor{comment}{/*\ プログラム名の設定\ */}}
<a id='L210' name='L210'></a>\DoxyCodeLine{00418\ \ \ \ \ strcpy(asptr-\/>prog,\ cmdl-\/>label);}
<a id='L211' name='L211'></a>\DoxyCodeLine{00419\ \ \ \ \ \textcolor{comment}{/*\ オペランドがある場合、書き込みと実行の開始アドレスを設定\ */}}
<a id='L212' name='L212'></a>\DoxyCodeLine{00420\ \ \ \ \ \textcolor{keywordflow}{if}(cmdl-\/>opd-\/>opdv[0]\ !=\ NULL)\ \{}
<a id='L213' name='L213'></a>\DoxyCodeLine{00421\ \ \ \ \ \ \ \ \ asptr-\/>ptr\ =\ execptr-\/>start\ =\ getadr(asptr-\/>prog,\ cmdl-\/>opd-\/>opdv[0],\ pass);}
<a id='L214' name='L214'></a>\DoxyCodeLine{00422\ \ \ \ \ \}}
<a id='L215' name='L215'></a>\DoxyCodeLine{00423\ \}}
<a id='L216' name='L216'></a>\DoxyCodeLine{00424\ }
<a id='L217' name='L217'></a>\DoxyCodeLine{00425\ \textcolor{keywordtype}{void}\ assemble\_end(\textcolor{keyword}{const}\ CMDLINE\ *cmdl,\ PASS\ pass)}
<a id='L218' name='L218'></a>\DoxyCodeLine{00426\ \{}
<a id='L219' name='L219'></a>\DoxyCodeLine{00427\ \ \ \ \ \textcolor{keywordflow}{if}(cmdl-\/>opd-\/>opdc\ >\ 0)\ \{}
<a id='L220' name='L220'></a>\DoxyCodeLine{00428\ \ \ \ \ \ \ \ \ setcerr(106,\ \textcolor{stringliteral}{"{}"{}});\ \ \ \ \textcolor{comment}{/*\ operand\ count\ mismatch\ */}}
<a id='L221' name='L221'></a>\DoxyCodeLine{00429\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return};}
<a id='L222' name='L222'></a>\DoxyCodeLine{00430\ \ \ \ \ \}}
<a id='L223' name='L223'></a>\DoxyCodeLine{00431\ \ \ \ \ \textcolor{comment}{/*\ 1回目のアセンブルの場合は、リテラル領域開始アドレスを設定\ */}}
<a id='L224' name='L224'></a>\DoxyCodeLine{00432\ \ \ \ \ \textcolor{keywordflow}{if}(pass\ ==\ FIRST)\ \{}
<a id='L225' name='L225'></a>\DoxyCodeLine{00433\ \ \ \ \ \ \ \ \ asptr-\/>lptr\ =\ asptr-\/>ptr;}
<a id='L226' name='L226'></a>\DoxyCodeLine{00434\ \ \ \ \ \}}
<a id='L227' name='L227'></a>\DoxyCodeLine{00435\ \ \ \ \ \textcolor{comment}{/*\ 2回目のアセンブルの場合は、リテラル領域終了アドレスを実行終了アドレスとして設定\ */}}
<a id='L228' name='L228'></a>\DoxyCodeLine{00436\ \ \ \ \ \textcolor{keywordflow}{else}\ \textcolor{keywordflow}{if}(pass\ ==\ SECOND)\ \{}
<a id='L229' name='L229'></a>\DoxyCodeLine{00437\ \ \ \ \ \ \ \ \ execptr-\/>end\ =\ asptr-\/>lptr;}
<a id='L230' name='L230'></a>\DoxyCodeLine{00438\ \ \ \ \ \}}
<a id='L231' name='L231'></a>\DoxyCodeLine{00439\ \ \ \ \ strcpy(asptr-\/>prog,\ \textcolor{stringliteral}{"{}"{}});}
<a id='L232' name='L232'></a>\DoxyCodeLine{00440\ \}}
<a id='L233' name='L233'></a>\DoxyCodeLine{00441\ }
<a id='L234' name='L234'></a>\DoxyCodeLine{00442\ \textcolor{keywordtype}{void}\ assemble\_ds(\textcolor{keyword}{const}\ CMDLINE\ *cmdl,\ PASS\ pass)}
<a id='L235' name='L235'></a>\DoxyCodeLine{00443\ \{}
<a id='L236' name='L236'></a>\DoxyCodeLine{00444\ \ \ \ \ \textcolor{keywordflow}{if}(cmdl-\/>opd-\/>opdc\ !=\ 1)\ \{}
<a id='L237' name='L237'></a>\DoxyCodeLine{00445\ \ \ \ \ \ \ \ \ setcerr(106,\ \textcolor{stringliteral}{"{}"{}});\ \ \ \ \textcolor{comment}{/*\ operand\ count\ mismatch\ */}}
<a id='L238' name='L238'></a>\DoxyCodeLine{00446\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return};}
<a id='L239' name='L239'></a>\DoxyCodeLine{00447\ \ \ \ \ \}}
<a id='L240' name='L240'></a>\DoxyCodeLine{00448\ \ \ \ \ \textcolor{keywordflow}{for}(\textcolor{keywordtype}{int}\ i\ =\ 0;\ i\ <\ atoi(cmdl-\/>opd-\/>opdv[0]);\ i++)\ \{}
<a id='L241' name='L241'></a>\DoxyCodeLine{00449\ \ \ \ \ \ \ \ \ writememory(0x0,\ (asptr-\/>ptr)++,\ pass);}
<a id='L242' name='L242'></a>\DoxyCodeLine{00450\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}(cerr-\/>num\ >\ 0)\ \{}
<a id='L243' name='L243'></a>\DoxyCodeLine{00451\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};}
<a id='L244' name='L244'></a>\DoxyCodeLine{00452\ \ \ \ \ \ \ \ \ \}}
<a id='L245' name='L245'></a>\DoxyCodeLine{00453\ \ \ \ \ \}}
<a id='L246' name='L246'></a>\DoxyCodeLine{00454\ \}}
<a id='L247' name='L247'></a>\DoxyCodeLine{00455\ }
<a id='L248' name='L248'></a>\DoxyCodeLine{00456\ \textcolor{keywordtype}{void}\ assemble\_dc(\textcolor{keyword}{const}\ CMDLINE\ *cmdl,\ PASS\ pass)}
<a id='L249' name='L249'></a>\DoxyCodeLine{00457\ \{}
<a id='L250' name='L250'></a>\DoxyCodeLine{00458\ \ \ \ \ \textcolor{keywordflow}{if}(cmdl-\/>opd-\/>opdc\ ==\ 0\ ||\ cmdl-\/>opd-\/>opdc\ >=\ OPDSIZE)\ \{}
<a id='L251' name='L251'></a>\DoxyCodeLine{00459\ \ \ \ \ \ \ \ \ setcerr(106,\ \textcolor{stringliteral}{"{}"{}});\ \ \ \ \textcolor{comment}{/*\ operand\ count\ mismatch\ */}}
<a id='L252' name='L252'></a>\DoxyCodeLine{00460\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return};}
<a id='L253' name='L253'></a>\DoxyCodeLine{00461\ \ \ \ \ \}}
<a id='L254' name='L254'></a>\DoxyCodeLine{00462\ \ \ \ \ \textcolor{keywordflow}{for}(\textcolor{keywordtype}{int}\ i\ =\ 0;\ i\ <\ cmdl-\/>opd-\/>opdc;\ i++)\ \{}
<a id='L255' name='L255'></a>\DoxyCodeLine{00463\ \ \ \ \ \ \ \ \ writedc(cmdl-\/>opd-\/>opdv[i],\ pass);}
<a id='L256' name='L256'></a>\DoxyCodeLine{00464\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}(cerr-\/>num\ >\ 0)\ \{}
<a id='L257' name='L257'></a>\DoxyCodeLine{00465\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};}
<a id='L258' name='L258'></a>\DoxyCodeLine{00466\ \ \ \ \ \ \ \ \ \}}
<a id='L259' name='L259'></a>\DoxyCodeLine{00467\ \ \ \ \ \}}
<a id='L260' name='L260'></a>\DoxyCodeLine{00468\ \}}
<a id='L261' name='L261'></a>\DoxyCodeLine{00469\ }
<a id='L262' name='L262'></a>\DoxyCodeLine{00470\ \textcolor{keywordtype}{void}\ assemble\_in(\textcolor{keyword}{const}\ CMDLINE\ *cmdl,\ PASS\ pass)}
<a id='L263' name='L263'></a>\DoxyCodeLine{00471\ \{}
<a id='L264' name='L264'></a>\DoxyCodeLine{00472\ \ \ \ \ \textcolor{keywordtype}{char}\ *line\ =\ malloc\_chk(LINESIZE\ +\ 1,\ \textcolor{stringliteral}{"{}assemble\_in.line"{}});}
<a id='L265' name='L265'></a>\DoxyCodeLine{00473\ }
<a id='L266' name='L266'></a>\DoxyCodeLine{00474\ \ \ \ \ \textcolor{keywordflow}{if}(cmdl-\/>opd-\/>opdc\ ==\ 0\ ||\ cmdl-\/>opd-\/>opdc\ >\ 2)\ \{}
<a id='L267' name='L267'></a>\DoxyCodeLine{00475\ \ \ \ \ \ \ \ \ setcerr(106,\ \textcolor{stringliteral}{"{}"{}});\ \ \ \ \textcolor{comment}{/*\ operand\ count\ mismatch\ */}}
<a id='L268' name='L268'></a>\DoxyCodeLine{00476\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return};}
<a id='L269' name='L269'></a>\DoxyCodeLine{00477\ \ \ \ \ \}}
<a id='L270' name='L270'></a>\DoxyCodeLine{00478\ \ \ \ \ assembleline(\textcolor{stringliteral}{"{}\ \ \ \ PUSH\ 0,GR1"{}},\ pass);}
<a id='L271' name='L271'></a>\DoxyCodeLine{00479\ \ \ \ \ assembleline(\textcolor{stringliteral}{"{}\ \ \ \ PUSH\ 0,GR2"{}},\ pass);}
<a id='L272' name='L272'></a>\DoxyCodeLine{00480\ \ \ \ \ sprintf(line,\ \textcolor{stringliteral}{"{}\ \ \ \ LAD\ GR1,\%s"{}},\ cmdl-\/>opd-\/>opdv[0]);}
<a id='L273' name='L273'></a>\DoxyCodeLine{00481\ \ \ \ \ assembleline(line,\ pass);}
<a id='L274' name='L274'></a>\DoxyCodeLine{00482\ \ \ \ \ sprintf(line,\ \textcolor{stringliteral}{"{}\ \ \ \ LAD\ GR2,\%s"{}},\ cmdl-\/>opd-\/>opdv[1]);}
<a id='L275' name='L275'></a>\DoxyCodeLine{00483\ \ \ \ \ assembleline(line,\ pass);}
<a id='L276' name='L276'></a>\DoxyCodeLine{00484\ \ \ \ \ assembleline(\textcolor{stringliteral}{"{}\ \ \ \ SVC\ 1"{}},\ pass);}
<a id='L277' name='L277'></a>\DoxyCodeLine{00485\ \ \ \ \ assembleline(\textcolor{stringliteral}{"{}\ \ \ \ POP\ GR2"{}},\ pass);}
<a id='L278' name='L278'></a>\DoxyCodeLine{00486\ \ \ \ \ assembleline(\textcolor{stringliteral}{"{}\ \ \ \ POP\ GR1"{}},\ pass);}
<a id='L279' name='L279'></a>\DoxyCodeLine{00487\ \ \ \ \ FREE(line);}
<a id='L280' name='L280'></a>\DoxyCodeLine{00488\ \}}
<a id='L281' name='L281'></a>\DoxyCodeLine{00489\ }
<a id='L282' name='L282'></a>\DoxyCodeLine{00490\ \textcolor{keywordtype}{void}\ assemble\_out(\textcolor{keyword}{const}\ CMDLINE\ *cmdl,\ PASS\ pass)}
<a id='L283' name='L283'></a>\DoxyCodeLine{00491\ \{}
<a id='L284' name='L284'></a>\DoxyCodeLine{00492\ \ \ \ \ \textcolor{keywordtype}{char}\ *line\ =\ malloc\_chk(LINESIZE\ +\ 1,\ \textcolor{stringliteral}{"{}assemble\_out.line"{}});}
<a id='L285' name='L285'></a>\DoxyCodeLine{00493\ }
<a id='L286' name='L286'></a>\DoxyCodeLine{00494\ \ \ \ \ \textcolor{keywordflow}{if}(cmdl-\/>opd-\/>opdc\ ==\ 0\ ||\ cmdl-\/>opd-\/>opdc\ >\ 2)\ \{}
<a id='L287' name='L287'></a>\DoxyCodeLine{00495\ \ \ \ \ \ \ \ \ setcerr(106,\ \textcolor{stringliteral}{"{}"{}});\ \ \ \ \textcolor{comment}{/*\ operand\ count\ mismatch\ */}}
<a id='L288' name='L288'></a>\DoxyCodeLine{00496\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return};}
<a id='L289' name='L289'></a>\DoxyCodeLine{00497\ \ \ \ \ \}}
<a id='L290' name='L290'></a>\DoxyCodeLine{00498\ \ \ \ \ assembleline(\textcolor{stringliteral}{"{}\ \ \ \ PUSH\ 0,GR1"{}},\ pass);}
<a id='L291' name='L291'></a>\DoxyCodeLine{00499\ \ \ \ \ assembleline(\textcolor{stringliteral}{"{}\ \ \ \ PUSH\ 0,GR2"{}},\ pass);}
<a id='L292' name='L292'></a>\DoxyCodeLine{00500\ \ \ \ \ sprintf(line,\ \textcolor{stringliteral}{"{}\ \ \ \ LAD\ GR1,\%s"{}},\ cmdl-\/>opd-\/>opdv[0]);}
<a id='L293' name='L293'></a>\DoxyCodeLine{00501\ \ \ \ \ assembleline(line,\ pass);}
<a id='L294' name='L294'></a>\DoxyCodeLine{00502\ \ \ \ \ sprintf(line,\ \textcolor{stringliteral}{"{}\ \ \ \ LAD\ GR2,\%s"{}},\ cmdl-\/>opd-\/>opdv[1]);}
<a id='L295' name='L295'></a>\DoxyCodeLine{00503\ \ \ \ \ assembleline(line,\ pass);}
<a id='L296' name='L296'></a>\DoxyCodeLine{00504\ \ \ \ \ assembleline(\textcolor{stringliteral}{"{}\ \ \ \ SVC\ 2"{}},\ pass);}
<a id='L297' name='L297'></a>\DoxyCodeLine{00505\ \ \ \ \ assembleline(\textcolor{stringliteral}{"{}\ \ \ \ LAD\ GR1,=\#A"{}},\ pass);}
<a id='L298' name='L298'></a>\DoxyCodeLine{00506\ \ \ \ \ assembleline(\textcolor{stringliteral}{"{}\ \ \ \ LAD\ GR2,=1"{}},\ pass);}
<a id='L299' name='L299'></a>\DoxyCodeLine{00507\ \ \ \ \ assembleline(\textcolor{stringliteral}{"{}\ \ \ \ SVC\ 2"{}},\ pass);}
<a id='L300' name='L300'></a>\DoxyCodeLine{00508\ \ \ \ \ assembleline(\textcolor{stringliteral}{"{}\ \ \ \ POP\ GR2"{}},\ pass);}
<a id='L301' name='L301'></a>\DoxyCodeLine{00509\ \ \ \ \ assembleline(\textcolor{stringliteral}{"{}\ \ \ \ POP\ GR1"{}},\ pass);}
<a id='L302' name='L302'></a>\DoxyCodeLine{00510\ \ \ \ \ FREE(line);}
<a id='L303' name='L303'></a>\DoxyCodeLine{00511\ \}}
<a id='L304' name='L304'></a>\DoxyCodeLine{00512\ }
<a id='L305' name='L305'></a>\DoxyCodeLine{00513\ \textcolor{keywordtype}{void}\ assemble\_rpush(\textcolor{keyword}{const}\ CMDLINE\ *cmdl,\ PASS\ pass)}
<a id='L306' name='L306'></a>\DoxyCodeLine{00514\ \{}
<a id='L307' name='L307'></a>\DoxyCodeLine{00515\ \ \ \ \ \textcolor{keywordtype}{char}\ *line\ =\ malloc\_chk(LINESIZE\ +\ 1,\ \textcolor{stringliteral}{"{}assemble\_rpush.line"{}});}
<a id='L308' name='L308'></a>\DoxyCodeLine{00516\ }
<a id='L309' name='L309'></a>\DoxyCodeLine{00517\ \ \ \ \ \textcolor{keywordflow}{if}(cmdl-\/>opd-\/>opdc\ >\ 0)\ \{}
<a id='L310' name='L310'></a>\DoxyCodeLine{00518\ \ \ \ \ \ \ \ \ setcerr(106,\ \textcolor{stringliteral}{"{}"{}});\ \ \ \ \textcolor{comment}{/*\ operand\ count\ mismatch\ */}}
<a id='L311' name='L311'></a>\DoxyCodeLine{00519\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return};}
<a id='L312' name='L312'></a>\DoxyCodeLine{00520\ \ \ \ \ \}}
<a id='L313' name='L313'></a>\DoxyCodeLine{00521\ \ \ \ \ \textcolor{keywordflow}{for}(\textcolor{keywordtype}{int}\ i\ =\ 1;\ i\ <=\ GRSIZE-\/1;\ i++)\ \{}
<a id='L314' name='L314'></a>\DoxyCodeLine{00522\ \ \ \ \ \ \ \ \ sprintf(line,\ \textcolor{stringliteral}{"{}\ \ \ \ PUSH\ 0,GR\%d"{}},\ i);}
<a id='L315' name='L315'></a>\DoxyCodeLine{00523\ \ \ \ \ \ \ \ \ assembleline(line,\ pass);}
<a id='L316' name='L316'></a>\DoxyCodeLine{00524\ \ \ \ \ \}}
<a id='L317' name='L317'></a>\DoxyCodeLine{00525\ \ \ \ \ FREE(line);}
<a id='L318' name='L318'></a>\DoxyCodeLine{00526\ \}}
<a id='L319' name='L319'></a>\DoxyCodeLine{00527\ }
<a id='L320' name='L320'></a>\DoxyCodeLine{00528\ \textcolor{keywordtype}{void}\ assemble\_rpop(\textcolor{keyword}{const}\ CMDLINE\ *cmdl,\ PASS\ pass)}
<a id='L321' name='L321'></a>\DoxyCodeLine{00529\ \{}
<a id='L322' name='L322'></a>\DoxyCodeLine{00530\ \ \ \ \ \textcolor{keywordtype}{char}\ *line\ =\ malloc\_chk(LINESIZE\ +\ 1,\ \textcolor{stringliteral}{"{}assemble\_rpop.line"{}});}
<a id='L323' name='L323'></a>\DoxyCodeLine{00531\ }
<a id='L324' name='L324'></a>\DoxyCodeLine{00532\ \ \ \ \ \textcolor{keywordflow}{if}(cmdl-\/>opd-\/>opdc\ >\ 0)\ \{}
<a id='L325' name='L325'></a>\DoxyCodeLine{00533\ \ \ \ \ \ \ \ \ setcerr(106,\ \textcolor{stringliteral}{"{}"{}});\ \ \ \ \textcolor{comment}{/*\ operand\ count\ mismatch\ */}}
<a id='L326' name='L326'></a>\DoxyCodeLine{00534\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return};}
<a id='L327' name='L327'></a>\DoxyCodeLine{00535\ \ \ \ \ \}}
<a id='L328' name='L328'></a>\DoxyCodeLine{00536\ \ \ \ \ \textcolor{keywordflow}{for}(\textcolor{keywordtype}{int}\ i\ =\ GRSIZE-\/1;\ i\ >=\ 1;\ i-\/-\/)\ \{}
<a id='L329' name='L329'></a>\DoxyCodeLine{00537\ \ \ \ \ \ \ \ \ sprintf(line,\ \textcolor{stringliteral}{"{}\ \ \ \ POP\ GR\%d"{}},\ i);}
<a id='L330' name='L330'></a>\DoxyCodeLine{00538\ \ \ \ \ \ \ \ \ assembleline(line,\ pass);}
<a id='L331' name='L331'></a>\DoxyCodeLine{00539\ \ \ \ \ \}}
<a id='L332' name='L332'></a>\DoxyCodeLine{00540\ \ \ \ \ FREE(line);}
<a id='L333' name='L333'></a>\DoxyCodeLine{00541\ \}}
<a id='L334' name='L334'></a>\DoxyCodeLine{00542\ }
<a id='L335' name='L335'></a>\DoxyCodeLine{00543\ \textcolor{keywordtype}{bool}\ casl2cmd(CMD\ *cmdtbl,\ \textcolor{keyword}{const}\ CMDLINE\ *cmdl,\ PASS\ pass)}
<a id='L336' name='L336'></a>\DoxyCodeLine{00544\ \{}
<a id='L337' name='L337'></a>\DoxyCodeLine{00545\ \ \ \ \ void\ (*cmdptr)()\ =\ NULL;}
<a id='L338' name='L338'></a>\DoxyCodeLine{00546\ }
<a id='L339' name='L339'></a>\DoxyCodeLine{00547\ \ \ \ \ \textcolor{keywordflow}{for}(\textcolor{keywordtype}{int}\ i\ =\ 0;\ cmdtbl[i].name[0];\ i++)\ \{}
<a id='L340' name='L340'></a>\DoxyCodeLine{00548\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}(strcmp(cmdl-\/>cmd,\ cmdtbl[i].name)\ ==\ 0)\ \{}
<a id='L341' name='L341'></a>\DoxyCodeLine{00549\ \ \ \ \ \ \ \ \ \ \ \ \ cmdptr\ =\ cmdtbl[i].ptr;}
<a id='L342' name='L342'></a>\DoxyCodeLine{00550\ \ \ \ \ \ \ \ \ \ \ \ \ (*cmdptr)(cmdl,\ pass);}
<a id='L343' name='L343'></a>\DoxyCodeLine{00551\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \textcolor{keyword}{true};}
<a id='L344' name='L344'></a>\DoxyCodeLine{00552\ \ \ \ \ \ \ \ \ \}}
<a id='L345' name='L345'></a>\DoxyCodeLine{00553\ \ \ \ \ \}}
<a id='L346' name='L346'></a>\DoxyCodeLine{00554\ \ \ \ \ \textcolor{keywordflow}{return}\ \textcolor{keyword}{false};}
<a id='L347' name='L347'></a>\DoxyCodeLine{00555\ \}}
<a id='L348' name='L348'></a>\DoxyCodeLine{00556\ }
<a id='L349' name='L349'></a>\DoxyCodeLine{00557\ \textcolor{keywordtype}{bool}\ assemble\_comet2cmd(\textcolor{keyword}{const}\ CMDLINE\ *cmdl,\ PASS\ pass)}
<a id='L350' name='L350'></a>\DoxyCodeLine{00558\ \{}
<a id='L351' name='L351'></a>\DoxyCodeLine{00559\ \ \ \ \ WORD\ cmd\ =\ 0;}
<a id='L352' name='L352'></a>\DoxyCodeLine{00560\ \ \ \ \ WORD\ r\_r1\ =\ 0;}
<a id='L353' name='L353'></a>\DoxyCodeLine{00561\ \ \ \ \ WORD\ x\_r2\ =\ 0;}
<a id='L354' name='L354'></a>\DoxyCodeLine{00562\ \ \ \ \ WORD\ adr\ =\ 0;}
<a id='L355' name='L355'></a>\DoxyCodeLine{00563\ }
<a id='L356' name='L356'></a>\DoxyCodeLine{00564\ \ \ \ \ \textcolor{comment}{/*\ オペランドなし\ */}}
<a id='L357' name='L357'></a>\DoxyCodeLine{00565\ \ \ \ \ \textcolor{keywordflow}{if}(cmdl-\/>opd-\/>opdc\ ==\ 0)\ \{}
<a id='L358' name='L358'></a>\DoxyCodeLine{00566\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}((cmd\ =\ getcmdcode(cmdl-\/>cmd,\ NONE))\ ==\ 0xFFFF)\ \{}
<a id='L359' name='L359'></a>\DoxyCodeLine{00567\ \ \ \ \ \ \ \ \ \ \ \ \ setcerr(112,\ cmdl-\/>cmd);\ \ \ \ \textcolor{comment}{/*\ not\ command\ of\ no\ operand\ */}}
<a id='L360' name='L360'></a>\DoxyCodeLine{00568\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \textcolor{keyword}{false};}
<a id='L361' name='L361'></a>\DoxyCodeLine{00569\ \ \ \ \ \ \ \ \ \}}
<a id='L362' name='L362'></a>\DoxyCodeLine{00570\ \ \ \ \ \ \ \ \ writememory(cmd,\ (asptr-\/>ptr)++,\ pass);}
<a id='L363' name='L363'></a>\DoxyCodeLine{00571\ \ \ \ \ \}}
<a id='L364' name='L364'></a>\DoxyCodeLine{00572\ \ \ \ \ \textcolor{comment}{/*\ 第1オペランドは汎用レジスタ\ */}}
<a id='L365' name='L365'></a>\DoxyCodeLine{00573\ \ \ \ \ \textcolor{keywordflow}{else}\ \textcolor{keywordflow}{if}((r\_r1\ =\ grword(cmdl-\/>opd-\/>opdv[0],\ \textcolor{keyword}{false}))\ !=\ 0xFFFF)\ \{}
<a id='L366' name='L366'></a>\DoxyCodeLine{00574\ \ \ \ \ \ \ \ \ \textcolor{comment}{/*\ オペランド数1\ */}}
<a id='L367' name='L367'></a>\DoxyCodeLine{00575\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}(cmdl-\/>opd-\/>opdc\ ==\ 1)\ \{}
<a id='L368' name='L368'></a>\DoxyCodeLine{00576\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}((cmd\ =\ getcmdcode(cmdl-\/>cmd,\ R\_))\ ==\ 0xFFFF)\ \{}
<a id='L369' name='L369'></a>\DoxyCodeLine{00577\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ setcerr(108,\ cmdl-\/>cmd);\ \ \ \ \textcolor{comment}{/*\ not\ command\ of\ operand\ "{}r"{}\ */}}
<a id='L370' name='L370'></a>\DoxyCodeLine{00578\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \textcolor{keyword}{false};}
<a id='L371' name='L371'></a>\DoxyCodeLine{00579\ \ \ \ \ \ \ \ \ \ \ \ \ \}}
<a id='L372' name='L372'></a>\DoxyCodeLine{00580\ \ \ \ \ \ \ \ \ \ \ \ \ cmd\ |=\ (r\_r1\ <<\ 4);}
<a id='L373' name='L373'></a>\DoxyCodeLine{00581\ \ \ \ \ \ \ \ \ \ \ \ \ writememory(cmd,\ (asptr-\/>ptr)++,\ pass);}
<a id='L374' name='L374'></a>\DoxyCodeLine{00582\ \ \ \ \ \ \ \ \ \}}
<a id='L375' name='L375'></a>\DoxyCodeLine{00583\ \ \ \ \ \ \ \ \ \textcolor{comment}{/*\ オペランド数2。第2オペランドは汎用レジスタ\ */}}
<a id='L376' name='L376'></a>\DoxyCodeLine{00584\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{else}\ \textcolor{keywordflow}{if}(cmdl-\/>opd-\/>opdc\ ==\ 2\ \&\&\ (x\_r2\ =\ grword(cmdl-\/>opd-\/>opdv[1],\ \textcolor{keyword}{false}))\ !=\ 0xFFFF)\ \{}
<a id='L377' name='L377'></a>\DoxyCodeLine{00585\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}((cmd\ =\ getcmdcode(cmdl-\/>cmd,\ R1\_R2))\ ==\ 0xFFFF)\ \{}
<a id='L378' name='L378'></a>\DoxyCodeLine{00586\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ setcerr(109,\ cmdl-\/>cmd);\ \ \ \ \textcolor{comment}{/*\ not\ command\ of\ operand\ "{}r1,r2"{}\ */}}
<a id='L379' name='L379'></a>\DoxyCodeLine{00587\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \textcolor{keyword}{false};}
<a id='L380' name='L380'></a>\DoxyCodeLine{00588\ \ \ \ \ \ \ \ \ \ \ \ \ \}}
<a id='L381' name='L381'></a>\DoxyCodeLine{00589\ \ \ \ \ \ \ \ \ \ \ \ \ cmd\ |=\ ((r\_r1\ <<\ 4)\ |\ x\_r2);\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{/*\ 第1オペランド、第2オペランドともに汎用レジスタ\ */}}
<a id='L382' name='L382'></a>\DoxyCodeLine{00590\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{/*\ メモリへの書き込み\ */}}
<a id='L383' name='L383'></a>\DoxyCodeLine{00591\ \ \ \ \ \ \ \ \ \ \ \ \ writememory(cmd,\ (asptr-\/>ptr)++,\ pass);}
<a id='L384' name='L384'></a>\DoxyCodeLine{00592\ \ \ \ \ \ \ \ \ \}}
<a id='L385' name='L385'></a>\DoxyCodeLine{00593\ \ \ \ \ \ \ \ \ \textcolor{comment}{/*\ オペランド数2または3\ */}}
<a id='L386' name='L386'></a>\DoxyCodeLine{00594\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{else}\ \textcolor{keywordflow}{if}(cmdl-\/>opd-\/>opdc\ ==\ 2\ ||\ cmdl-\/>opd-\/>opdc\ ==\ 3)\ \{}
<a id='L387' name='L387'></a>\DoxyCodeLine{00595\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}((cmd\ =\ getcmdcode(cmdl-\/>cmd,\ R\_ADR\_X))\ ==\ 0xFFFF)\ \{}
<a id='L388' name='L388'></a>\DoxyCodeLine{00596\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ setcerr(110,\ cmdl-\/>cmd);\ \ \ \ \textcolor{comment}{/*\ not\ command\ of\ operand\ "{}r,adr[,x]"{}\ */}}
<a id='L389' name='L389'></a>\DoxyCodeLine{00597\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \textcolor{keyword}{false};}
<a id='L390' name='L390'></a>\DoxyCodeLine{00598\ \ \ \ \ \ \ \ \ \ \ \ \ \}}
<a id='L391' name='L391'></a>\DoxyCodeLine{00599\ \ \ \ \ \ \ \ \ \ \ \ \ cmd\ |=\ (r\_r1\ <<\ 4);\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{/*\ 第1オペランドは汎用レジスタ\ */}}
<a id='L392' name='L392'></a>\DoxyCodeLine{00600\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{/*\ オペランド数3の場合\ */}}
<a id='L393' name='L393'></a>\DoxyCodeLine{00601\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}(cmdl-\/>opd-\/>opdc\ ==\ 3)\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{/*\ 第3オペランドは指標レジスタとして用いる汎用レジスタ\ */}}
<a id='L394' name='L394'></a>\DoxyCodeLine{00602\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}((x\_r2\ =\ grword(cmdl-\/>opd-\/>opdv[2],\ \textcolor{keyword}{true}))\ ==\ 0xFFFF)\ \{}
<a id='L395' name='L395'></a>\DoxyCodeLine{00603\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ setcerr(125,\ cmdl-\/>cmd);\ \ \ \ \textcolor{comment}{/*\ not\ GR\ in\ operand\ x\ */}}
<a id='L396' name='L396'></a>\DoxyCodeLine{00604\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \textcolor{keyword}{false};}
<a id='L397' name='L397'></a>\DoxyCodeLine{00605\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}}
<a id='L398' name='L398'></a>\DoxyCodeLine{00606\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ cmd\ |=\ x\_r2;}
<a id='L399' name='L399'></a>\DoxyCodeLine{00607\ \ \ \ \ \ \ \ \ \ \ \ \ \}}
<a id='L400' name='L400'></a>\DoxyCodeLine{00608\ \ \ \ \ \ \ \ \ \ \ \ \ adr\ =\ getadr(asptr-\/>prog,\ cmdl-\/>opd-\/>opdv[1],\ pass);\ \textcolor{comment}{/*\ 第2オペランドはアドレス\ */}}
<a id='L401' name='L401'></a>\DoxyCodeLine{00609\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{/*\ メモリへの書き込み\ */}}
<a id='L402' name='L402'></a>\DoxyCodeLine{00610\ \ \ \ \ \ \ \ \ \ \ \ \ writememory(cmd,\ (asptr-\/>ptr)++,\ pass);}
<a id='L403' name='L403'></a>\DoxyCodeLine{00611\ \ \ \ \ \ \ \ \ \ \ \ \ writememory(adr,\ (asptr-\/>ptr)++,\ pass);}
<a id='L404' name='L404'></a>\DoxyCodeLine{00612\ \ \ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \{}
<a id='L405' name='L405'></a>\DoxyCodeLine{00613\ \ \ \ \ \ \ \ \ \ \ \ \ setcerr(113,\ cmdl-\/>cmd);\ \ \ \ \textcolor{comment}{/*\ operand\ too\ many\ in\ COMET\ II\ command\ */}}
<a id='L406' name='L406'></a>\DoxyCodeLine{00614\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \textcolor{keyword}{false};}
<a id='L407' name='L407'></a>\DoxyCodeLine{00615\ \ \ \ \ \ \ \ \ \}}
<a id='L408' name='L408'></a>\DoxyCodeLine{00616\ \ \ \ \ \}}
<a id='L409' name='L409'></a>\DoxyCodeLine{00617\ \ \ \ \ \textcolor{comment}{/*\ オペランド数1または2。第1オペランドはアドレス\ */}}
<a id='L410' name='L410'></a>\DoxyCodeLine{00618\ \ \ \ \ \textcolor{keywordflow}{else}\ \textcolor{keywordflow}{if}(cmdl-\/>opd-\/>opdc\ ==\ 1\ ||\ cmdl-\/>opd-\/>opdc\ ==\ 2)\ \{}
<a id='L411' name='L411'></a>\DoxyCodeLine{00619\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}((cmd\ =\ getcmdcode(cmdl-\/>cmd,\ ADR\_X))\ ==\ 0xFFFF)\ \{}
<a id='L412' name='L412'></a>\DoxyCodeLine{00620\ \ \ \ \ \ \ \ \ \ \ \ \ setcerr(111,\ cmdl-\/>cmd);\ \ \ \ \textcolor{comment}{/*\ not\ command\ of\ operand\ "{}adr[,x]"{}\ */}}
<a id='L413' name='L413'></a>\DoxyCodeLine{00621\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \textcolor{keyword}{false};}
<a id='L414' name='L414'></a>\DoxyCodeLine{00622\ \ \ \ \ \ \ \ \ \}}
<a id='L415' name='L415'></a>\DoxyCodeLine{00623\ \ \ \ \ \ \ \ \ \textcolor{comment}{/*\ オペランド数2の場合\ */}}
<a id='L416' name='L416'></a>\DoxyCodeLine{00624\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}(cmdl-\/>opd-\/>opdc\ ==\ 2)\ \{\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{/*\ 第2オペランドは指標レジスタとして用いる汎用レジスタ\ */}}
<a id='L417' name='L417'></a>\DoxyCodeLine{00625\ \ \ \ \ \ \ \ \ \ \ \ \ x\_r2\ =\ grword(cmdl-\/>opd-\/>opdv[1],\ \textcolor{keyword}{true});}
<a id='L418' name='L418'></a>\DoxyCodeLine{00626\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}(cerr-\/>num\ >\ 0)\ \{}
<a id='L419' name='L419'></a>\DoxyCodeLine{00627\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \textcolor{keyword}{false};}
<a id='L420' name='L420'></a>\DoxyCodeLine{00628\ \ \ \ \ \ \ \ \ \ \ \ \ \}}
<a id='L421' name='L421'></a>\DoxyCodeLine{00629\ \ \ \ \ \ \ \ \ \ \ \ \ cmd\ |=\ x\_r2;}
<a id='L422' name='L422'></a>\DoxyCodeLine{00630\ \ \ \ \ \ \ \ \ \}}
<a id='L423' name='L423'></a>\DoxyCodeLine{00631\ \ \ \ \ \ \ \ \ \textcolor{comment}{/*\ CALLの場合はプログラムの入口名を表すラベルを取得\ */}}
<a id='L424' name='L424'></a>\DoxyCodeLine{00632\ \ \ \ \ \ \ \ \ \textcolor{comment}{/*\ CALL以外の命令の場合と、プログラムの入口名を取得できない場合は、\ */}}
<a id='L425' name='L425'></a>\DoxyCodeLine{00633\ \ \ \ \ \ \ \ \ \textcolor{comment}{/*\ 同一プログラム内のラベルを取得\ */}}
<a id='L426' name='L426'></a>\DoxyCodeLine{00634\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}(pass\ ==\ SECOND\ \&\&\ cmd\ ==\ 0x8000)\ \{\ \ \ \ \ \ \ \ \textcolor{comment}{/*\ CALL命令\ */}}
<a id='L427' name='L427'></a>\DoxyCodeLine{00635\ \ \ \ \ \ \ \ \ \ \ \ \ adr\ =\ getlabel(\textcolor{stringliteral}{"{}"{}},\ cmdl-\/>opd-\/>opdv[0]);}
<a id='L428' name='L428'></a>\DoxyCodeLine{00636\ \ \ \ \ \ \ \ \ \}}
<a id='L429' name='L429'></a>\DoxyCodeLine{00637\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}(cmd\ !=\ 0x8000\ ||\ (pass\ ==\ SECOND\ \&\&\ adr\ ==\ 0xFFFF))\ \{}
<a id='L430' name='L430'></a>\DoxyCodeLine{00638\ \ \ \ \ \ \ \ \ \ \ \ \ adr\ =\ getadr(asptr-\/>prog,\ cmdl-\/>opd-\/>opdv[0],\ pass);}
<a id='L431' name='L431'></a>\DoxyCodeLine{00639\ \ \ \ \ \ \ \ \ \}}
<a id='L432' name='L432'></a>\DoxyCodeLine{00640\ \ \ \ \ \ \ \ \ \textcolor{comment}{/*\ メモリへの書込\ */}}
<a id='L433' name='L433'></a>\DoxyCodeLine{00641\ \ \ \ \ \ \ \ \ writememory(cmd,\ (asptr-\/>ptr)++,\ pass);}
<a id='L434' name='L434'></a>\DoxyCodeLine{00642\ \ \ \ \ \ \ \ \ writememory(adr,\ (asptr-\/>ptr)++,\ pass);}
<a id='L435' name='L435'></a>\DoxyCodeLine{00643\ \ \ \ \ \}}
<a id='L436' name='L436'></a>\DoxyCodeLine{00644\ \ \ \ \ \textcolor{keywordflow}{return}\ (cerr-\/>num\ ==\ 0)\ ?\ true\ :\ \textcolor{keyword}{false};}
<a id='L437' name='L437'></a>\DoxyCodeLine{00645\ \}}
<a id='L438' name='L438'></a>\DoxyCodeLine{00646\ }
<a id='L439' name='L439'></a>\DoxyCodeLine{00647\ \textcolor{keywordtype}{bool}\ assembletok(\textcolor{keyword}{const}\ CMDLINE\ *cmdl,\ PASS\ pass)}
<a id='L440' name='L440'></a>\DoxyCodeLine{00648\ \{}
<a id='L441' name='L441'></a>\DoxyCodeLine{00649\ \ \ \ \ \textcolor{comment}{/*\ 命令がない場合\ */}}
<a id='L442' name='L442'></a>\DoxyCodeLine{00650\ \ \ \ \ \textcolor{keywordflow}{if}(!cmdl-\/>cmd[0])\ \{}
<a id='L443' name='L443'></a>\DoxyCodeLine{00651\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \textcolor{keyword}{true};}
<a id='L444' name='L444'></a>\DoxyCodeLine{00652\ \ \ \ \ \}}
<a id='L445' name='L445'></a>\DoxyCodeLine{00653\ \ \ \ \ \textcolor{comment}{/*\ アセンブラ命令またはマクロ命令の書込\ */}}
<a id='L446' name='L446'></a>\DoxyCodeLine{00654\ \ \ \ \ \textcolor{keywordflow}{if}(casl2cmd(ascmd,\ cmdl,\ pass)\ ==\ \textcolor{keyword}{false}\ \&\&\ casl2cmd(macrocmd,\ cmdl,\ pass)\ ==\ \textcolor{keyword}{false})\ \{}
<a id='L447' name='L447'></a>\DoxyCodeLine{00655\ \ \ \ \ \ \ \ \ \textcolor{comment}{/*\ 機械語命令の書込\ */}}
<a id='L448' name='L448'></a>\DoxyCodeLine{00656\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}(assemble\_comet2cmd(cmdl,\ pass)\ ==\ \textcolor{keyword}{false})\ \{}
<a id='L449' name='L449'></a>\DoxyCodeLine{00657\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}(cerr-\/>num\ ==\ 0)\ \{}
<a id='L450' name='L450'></a>\DoxyCodeLine{00658\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ setcerr(113,\ cmdl-\/>cmd);\ \ \ \ \textcolor{comment}{/*\ operand\ too\ many\ in\ COMET\ II\ command\ */}}
<a id='L451' name='L451'></a>\DoxyCodeLine{00659\ \ \ \ \ \ \ \ \ \ \ \ \ \}}
<a id='L452' name='L452'></a>\DoxyCodeLine{00660\ \ \ \ \ \ \ \ \ \}}
<a id='L453' name='L453'></a>\DoxyCodeLine{00661\ \ \ \ \ \}}
<a id='L454' name='L454'></a>\DoxyCodeLine{00662\ \ \ \ \ \textcolor{keywordflow}{return}\ (cerr-\/>num\ ==\ 0)\ ?\ true\ :\ \textcolor{keyword}{false};}
<a id='L455' name='L455'></a>\DoxyCodeLine{00663\ \}}
<a id='L456' name='L456'></a>\DoxyCodeLine{00664\ }
<a id='L457' name='L457'></a>\DoxyCodeLine{00665\ \textcolor{keywordtype}{bool}\ assembleline(\textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *line,\ PASS\ pass)}
<a id='L458' name='L458'></a>\DoxyCodeLine{00666\ \{}
<a id='L459' name='L459'></a>\DoxyCodeLine{00667\ \ \ \ \ CMDLINE\ *cmdl\ =\ NULL;}
<a id='L460' name='L460'></a>\DoxyCodeLine{00668\ \ \ \ \ \textcolor{keywordtype}{bool}\ stat\ =\ \textcolor{keyword}{true};}
<a id='L461' name='L461'></a>\DoxyCodeLine{00669\ }
<a id='L462' name='L462'></a>\DoxyCodeLine{00670\ \ \ \ \ cmdl\ =\ linetok(line);}
<a id='L463' name='L463'></a>\DoxyCodeLine{00671\ \ \ \ \ stat\ =\ (cerr-\/>num\ ==\ 0)\ ?\ \textcolor{keyword}{true}\ :\ \textcolor{keyword}{false};}
<a id='L464' name='L464'></a>\DoxyCodeLine{00672\ \ \ \ \ \textcolor{keywordflow}{if}(cmdl\ !=\ NULL)\ \{}
<a id='L465' name='L465'></a>\DoxyCodeLine{00673\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}(stat\ ==\ \textcolor{keyword}{true})\ \{}
<a id='L466' name='L466'></a>\DoxyCodeLine{00674\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}(pass\ ==\ FIRST\ \&\&\ cmdl-\/>label[0])\ \{}
<a id='L467' name='L467'></a>\DoxyCodeLine{00675\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ stat\ =\ addlabel(asptr-\/>prog,\ cmdl-\/>label,\ asptr-\/>ptr);}
<a id='L468' name='L468'></a>\DoxyCodeLine{00676\ \ \ \ \ \ \ \ \ \ \ \ \ \}}
<a id='L469' name='L469'></a>\DoxyCodeLine{00677\ \ \ \ \ \ \ \ \ \}}
<a id='L470' name='L470'></a>\DoxyCodeLine{00678\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}(stat\ ==\ \textcolor{keyword}{true})\ \{}
<a id='L471' name='L471'></a>\DoxyCodeLine{00679\ \ \ \ \ \ \ \ \ \ \ \ \ stat\ =\ assembletok(cmdl,\ pass);}
<a id='L472' name='L472'></a>\DoxyCodeLine{00680\ \ \ \ \ \ \ \ \ \}}
<a id='L473' name='L473'></a>\DoxyCodeLine{00681\ \ \ \ \ \ \ \ \ FREE(cmdl-\/>label);}
<a id='L474' name='L474'></a>\DoxyCodeLine{00682\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}(cmdl-\/>opd\ !=\ NULL)\ \{}
<a id='L475' name='L475'></a>\DoxyCodeLine{00683\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}(\textcolor{keywordtype}{int}\ i\ =\ 0;\ i\ <\ cmdl-\/>opd-\/>opdc;\ i++)\ \{}
<a id='L476' name='L476'></a>\DoxyCodeLine{00684\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ FREE(cmdl-\/>opd-\/>opdv[i]);}
<a id='L477' name='L477'></a>\DoxyCodeLine{00685\ \ \ \ \ \ \ \ \ \ \ \ \ \}}
<a id='L478' name='L478'></a>\DoxyCodeLine{00686\ \ \ \ \ \ \ \ \ \}}
<a id='L479' name='L479'></a>\DoxyCodeLine{00687\ \ \ \ \ \ \ \ \ FREE(cmdl-\/>opd);}
<a id='L480' name='L480'></a>\DoxyCodeLine{00688\ \ \ \ \ \ \ \ \ FREE(cmdl-\/>cmd);}
<a id='L481' name='L481'></a>\DoxyCodeLine{00689\ \ \ \ \ \}}
<a id='L482' name='L482'></a>\DoxyCodeLine{00690\ \ \ \ \ FREE(cmdl);}
<a id='L483' name='L483'></a>\DoxyCodeLine{00691\ \ \ \ \ \textcolor{keywordflow}{return}\ stat;}
<a id='L484' name='L484'></a>\DoxyCodeLine{00692\ \}}
<a id='L485' name='L485'></a>\DoxyCodeLine{00693\ }
<a id='L486' name='L486'></a>\DoxyCodeLine{00699\ \textcolor{keywordtype}{bool}\ assemblefile(\textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *file,\ PASS\ pass)}
<a id='L487' name='L487'></a>\DoxyCodeLine{00700\ \{}
<a id='L488' name='L488'></a>\DoxyCodeLine{00701\ \ \ \ \ \textcolor{keywordtype}{int}\ lineno\ =\ 1;}
<a id='L489' name='L489'></a>\DoxyCodeLine{00702\ \ \ \ \ \textcolor{keywordtype}{char}\ *line\ =\ NULL;}
<a id='L490' name='L490'></a>\DoxyCodeLine{00703\ \ \ \ \ FILE\ *fp\ =\ NULL;}
<a id='L491' name='L491'></a>\DoxyCodeLine{00704\ }
<a id='L492' name='L492'></a>\DoxyCodeLine{00705\ \ \ \ \ \textcolor{keywordflow}{if}((fp\ =\ fopen(file,\ \textcolor{stringliteral}{"{}r"{}}))\ ==\ NULL)\ \{}
<a id='L493' name='L493'></a>\DoxyCodeLine{00706\ \ \ \ \ \ \ \ \ cerr-\/>num\ =\ errno;}
<a id='L494' name='L494'></a>\DoxyCodeLine{00707\ \ \ \ \ \ \ \ \ perror(file);}
<a id='L495' name='L495'></a>\DoxyCodeLine{00708\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{return}\ \textcolor{keyword}{false};}
<a id='L496' name='L496'></a>\DoxyCodeLine{00709\ \ \ \ \ \}}
<a id='L497' name='L497'></a>\DoxyCodeLine{00710\ \ \ \ \ \textcolor{keywordflow}{for}(line\ =\ malloc\_chk(LINESIZE\ +\ 1,\ \textcolor{stringliteral}{"{}assemble.line"{}});\ fgets(line,\ LINESIZE,\ fp);\ lineno++)\ \{}
<a id='L498' name='L498'></a>\DoxyCodeLine{00711\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}((pass\ ==\ FIRST\ \&\&\ asmode.src\ ==\ \textcolor{keyword}{true})\ ||\ (pass\ ==\ SECOND\ \&\&\ asmode.asdetail\ ==\ \textcolor{keyword}{true}))\ \{}
<a id='L499' name='L499'></a>\DoxyCodeLine{00712\ \ \ \ \ \ \ \ \ \ \ \ \ printline(stdout,\ file,\ lineno,\ line);}
<a id='L500' name='L500'></a>\DoxyCodeLine{00713\ \ \ \ \ \ \ \ \ \}}
<a id='L501' name='L501'></a>\DoxyCodeLine{00714\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}(assembleline(line,\ pass)\ ==\ \textcolor{keyword}{false})\ \{}
<a id='L502' name='L502'></a>\DoxyCodeLine{00715\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};}
<a id='L503' name='L503'></a>\DoxyCodeLine{00716\ \ \ \ \ \ \ \ \ \}}
<a id='L504' name='L504'></a>\DoxyCodeLine{00717\ \ \ \ \ \}}
<a id='L505' name='L505'></a>\DoxyCodeLine{00718\ \ \ \ \ \textcolor{keywordflow}{if}(cerr-\/>num\ >\ 0)\ \{}
<a id='L506' name='L506'></a>\DoxyCodeLine{00719\ \ \ \ \ \ \ \ \ fprintf(stderr,\ \textcolor{stringliteral}{"{}Assemble\ error\ -\/\ \%d:\ \%s\(\backslash\)n"{}},\ cerr-\/>num,\ cerr-\/>msg);}
<a id='L507' name='L507'></a>\DoxyCodeLine{00720\ \ \ \ \ \ \ \ \ printline(stderr,\ file,\ lineno,\ line);}
<a id='L508' name='L508'></a>\DoxyCodeLine{00721\ \ \ \ \ \}}
<a id='L509' name='L509'></a>\DoxyCodeLine{00722\ \ \ \ \ FREE(line);}
<a id='L510' name='L510'></a>\DoxyCodeLine{00723\ \ \ \ \ fclose(fp);}
<a id='L511' name='L511'></a>\DoxyCodeLine{00724\ \ \ \ \ \textcolor{keywordflow}{return}\ (cerr-\/>num\ ==\ 0)\ ?\ true\ :\ \textcolor{keyword}{false};}
<a id='L512' name='L512'></a>\DoxyCodeLine{00725\ \}}
<a id='L513' name='L513'></a>\DoxyCodeLine{00726\ }
<a id='L514' name='L514'></a>\DoxyCodeLine{00727\ \textcolor{keywordtype}{bool}\ assemble(\textcolor{keywordtype}{int}\ filec,\ \textcolor{keywordtype}{char}\ *filev[],\ WORD\ adr)}
<a id='L515' name='L515'></a>\DoxyCodeLine{00728\ \{}
<a id='L516' name='L516'></a>\DoxyCodeLine{00729\ \ \ \ \ \textcolor{keywordtype}{int}\ i;}
<a id='L517' name='L517'></a>\DoxyCodeLine{00730\ \ \ \ \ PASS\ pass;}
<a id='L518' name='L518'></a>\DoxyCodeLine{00731\ \ \ \ \ WORD\ bp[filec];}
<a id='L519' name='L519'></a>\DoxyCodeLine{00732\ \ \ \ \ \textcolor{keywordtype}{bool}\ stat\ =\ \textcolor{keyword}{false};}
<a id='L520' name='L520'></a>\DoxyCodeLine{00733\ }
<a id='L521' name='L521'></a>\DoxyCodeLine{00734\ \ \ \ \ asptr\ =\ malloc\_chk(\textcolor{keyword}{sizeof}(ASPTR),\ \textcolor{stringliteral}{"{}asptr"{}});\ \ \ \ \textcolor{comment}{/*\ アセンブル時のプロパティ用の領域確保\ */}}
<a id='L522' name='L522'></a>\DoxyCodeLine{00735\ \ \ \ \ asptr-\/>prog\ =\ malloc\_chk(LABELSIZE\ +\ 1,\ \textcolor{stringliteral}{"{}asptr.prog"{}});}
<a id='L523' name='L523'></a>\DoxyCodeLine{00736\ \ \ \ \ asptr-\/>ptr\ =\ adr;}
<a id='L524' name='L524'></a>\DoxyCodeLine{00737\ \ \ \ \ \textcolor{comment}{/*\ アセンブル。ラベル表作成のため、2回行う\ */}}
<a id='L525' name='L525'></a>\DoxyCodeLine{00738\ \ \ \ \ \textcolor{keywordflow}{for}(pass\ =\ FIRST;\ pass\ <=\ SECOND;\ pass++)\ \{}
<a id='L526' name='L526'></a>\DoxyCodeLine{00739\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{for}(i\ =\ 0;\ i\ <\ filec;\ i++)\ \{}
<a id='L527' name='L527'></a>\DoxyCodeLine{00740\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{/*\ データの格納開始位置\ */}}
<a id='L528' name='L528'></a>\DoxyCodeLine{00741\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}(pass\ ==\ FIRST)\ \{}
<a id='L529' name='L529'></a>\DoxyCodeLine{00742\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ bp[i]\ =\ asptr-\/>ptr;}
<a id='L530' name='L530'></a>\DoxyCodeLine{00743\ \ \ \ \ \ \ \ \ \ \ \ \ \}\ \textcolor{keywordflow}{else}\ \textcolor{keywordflow}{if}(pass\ ==\ SECOND)\ \{}
<a id='L531' name='L531'></a>\DoxyCodeLine{00744\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ asptr-\/>ptr\ =\ bp[i];}
<a id='L532' name='L532'></a>\DoxyCodeLine{00745\ \ \ \ \ \ \ \ \ \ \ \ \ \}}
<a id='L533' name='L533'></a>\DoxyCodeLine{00746\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}(execmode.trace\ ==\ \textcolor{keyword}{true}\ ||\ execmode.dump\ ==\ \textcolor{keyword}{true}\ ||}
<a id='L534' name='L534'></a>\DoxyCodeLine{00747\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ asmode.src\ ==\ \textcolor{keyword}{true}\ ||\ asmode.label\ ==\ \textcolor{keyword}{true}\ ||\ asmode.asdetail\ ==\ \textcolor{keyword}{true})}
<a id='L535' name='L535'></a>\DoxyCodeLine{00748\ \ \ \ \ \ \ \ \ \ \ \ \ \{}
<a id='L536' name='L536'></a>\DoxyCodeLine{00749\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ fprintf(stdout,\ \textcolor{stringliteral}{"{}\(\backslash\)nAssemble\ \%s\ (\%d)\(\backslash\)n"{}},\ filev[i],\ pass);}
<a id='L537' name='L537'></a>\DoxyCodeLine{00750\ \ \ \ \ \ \ \ \ \ \ \ \ \}}
<a id='L538' name='L538'></a>\DoxyCodeLine{00751\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{/*\ ファイルをアセンブル\ */}}
<a id='L539' name='L539'></a>\DoxyCodeLine{00752\ \ \ \ \ \ \ \ \ \ \ \ \ stat\ =\ assemblefile(filev[i],\ pass);}
<a id='L540' name='L540'></a>\DoxyCodeLine{00753\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}(stat\ ==\ \textcolor{keyword}{false})\ \{}
<a id='L541' name='L541'></a>\DoxyCodeLine{00754\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{goto}\ asfin;}
<a id='L542' name='L542'></a>\DoxyCodeLine{00755\ \ \ \ \ \ \ \ \ \ \ \ \ \}}
<a id='L543' name='L543'></a>\DoxyCodeLine{00756\ \ \ \ \ \ \ \ \ \}}
<a id='L544' name='L544'></a>\DoxyCodeLine{00757\ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}(pass\ ==\ FIRST\ \&\&\ asmode.label\ ==\ \textcolor{keyword}{true})\ \{}
<a id='L545' name='L545'></a>\DoxyCodeLine{00758\ \ \ \ \ \ \ \ \ \ \ \ \ fprintf(stdout,\ \textcolor{stringliteral}{"{}\(\backslash\)nLabel::::\(\backslash\)n"{}});}
<a id='L546' name='L546'></a>\DoxyCodeLine{00759\ \ \ \ \ \ \ \ \ \ \ \ \ printlabel();}
<a id='L547' name='L547'></a>\DoxyCodeLine{00760\ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{if}(asmode.onlylabel\ ==\ \textcolor{keyword}{true})\ \{}
<a id='L548' name='L548'></a>\DoxyCodeLine{00761\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordflow}{break};}
<a id='L549' name='L549'></a>\DoxyCodeLine{00762\ \ \ \ \ \ \ \ \ \ \ \ \ \}}
<a id='L550' name='L550'></a>\DoxyCodeLine{00763\ \ \ \ \ \ \ \ \ \}}
<a id='L551' name='L551'></a>\DoxyCodeLine{00764\ \ \ \ \ \}}
<a id='L552' name='L552'></a>\DoxyCodeLine{00765\ asfin:}
<a id='L553' name='L553'></a>\DoxyCodeLine{00766\ \ \ \ \ freelabel();\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{/*\ ラベルハッシュ表を解放\ */}}
<a id='L554' name='L554'></a>\DoxyCodeLine{00767\ \ \ \ \ FREE(asptr-\/>prog);\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{comment}{/*\ アセンブル時のプロパティを解放\ */}}
<a id='L555' name='L555'></a>\DoxyCodeLine{00768\ \ \ \ \ FREE(asptr);}
<a id='L556' name='L556'></a>\DoxyCodeLine{00769\ \ \ \ \ \textcolor{keywordflow}{return}\ stat;}
<a id='L557' name='L557'></a>\DoxyCodeLine{00770\ \}}
<a id='L558' name='L558'></a>\DoxyCodeLine{00771\ }
<a id='L559' name='L559'></a>\DoxyCodeLine{00772\ \textcolor{comment}{/*\ assemble.hで定義された関数群\ */}}
<a id='L560' name='L560'></a>\DoxyCodeLine{00773\ \textcolor{keywordtype}{void}\ addcerrlist\_assemble()}
<a id='L561' name='L561'></a>\DoxyCodeLine{00774\ \{}
<a id='L562' name='L562'></a>\DoxyCodeLine{00775\ \ \ \ \ addcerrlist\_tok();}
<a id='L563' name='L563'></a>\DoxyCodeLine{00776\ \ \ \ \ addcerrlist\_word();}
<a id='L564' name='L564'></a>\DoxyCodeLine{00777\ \ \ \ \ addcerrlist\_label();}
<a id='L565' name='L565'></a>\DoxyCodeLine{00778\ \ \ \ \ addcerrlist(ARRAYSIZE(cerr\_assemble),\ cerr\_assemble);}
<a id='L566' name='L566'></a>\DoxyCodeLine{00779\ \}}
<a id='L567' name='L567'></a>\DoxyCodeLine{00780\ }
<a id='L568' name='L568'></a>\DoxyCodeLine{00781\ \textcolor{keywordtype}{void}\ outassemble(\textcolor{keyword}{const}\ \textcolor{keywordtype}{char}\ *file)}
<a id='L569' name='L569'></a>\DoxyCodeLine{00782\ \{}
<a id='L570' name='L570'></a>\DoxyCodeLine{00783\ \ \ \ \ FILE\ *fp\ =\ NULL;}
<a id='L571' name='L571'></a>\DoxyCodeLine{00784\ }
<a id='L572' name='L572'></a>\DoxyCodeLine{00785\ \ \ \ \ \textcolor{keywordflow}{if}((fp\ =\ fopen(file,\ \textcolor{stringliteral}{"{}w"{}}))\ ==\ NULL)\ \{}
<a id='L573' name='L573'></a>\DoxyCodeLine{00786\ \ \ \ \ \ \ \ \ perror(file);}
<a id='L574' name='L574'></a>\DoxyCodeLine{00787\ \ \ \ \ \ \ \ \ exit(1);}
<a id='L575' name='L575'></a>\DoxyCodeLine{00788\ \ \ \ \ \}}
<a id='L576' name='L576'></a>\DoxyCodeLine{00789\ \ \ \ \ fwrite(sys-\/>memory,\ \textcolor{keyword}{sizeof}(WORD),\ execptr-\/>end,\ fp);}
<a id='L577' name='L577'></a>\DoxyCodeLine{00790\ \ \ \ \ fclose(fp);}
<a id='L578' name='L578'></a>\DoxyCodeLine{00791\ \}}
<a id='L579' name='L579'></a>
<a id='L580' name='L580'></a>\end{DoxyCode}
</pre>
<hr />
<a id='BOTTOM' name='BOTTOM'></a>
<em class='comment'>/* [<][>][^][v]<a href='#TOP'>[top]</a>[bottom]<a href='../mains.html'>[index]</a><a href='../help.html'>[help]</a> */</em>
</body>
</html>