char *buffer = malloc_chk(INSIZE + 1,"svcin.buffer");
if(fgets(buffer, INSIZE, stdin) == NULL) {
char *buffer = malloc_chk(INSIZE + 1,"svcin.buffer");
if(fgets(buffer, INSIZE, stdin) == NULL) {
setcerr(203, NULL); /* SVC output - out of Comet II memory */
return;
}
/* 「文字の組」の符号表に記載された文字と、改行(CR)/タブを表示 */
/* それ以外の文字は、「.」で表す */
setcerr(203, NULL); /* SVC output - out of Comet II memory */
return;
}
/* 「文字の組」の符号表に記載された文字と、改行(CR)/タブを表示 */
/* それ以外の文字は、「.」で表す */
- if(cpu->pr >= memsize) {
- sprintf(errpr, "PR:#%04X", cpu->pr);
+ if(sys->cpu->pr >= sys->memsize) {
+ sprintf(errpr, "PR:#%04X", sys->cpu->pr);
setcerr(204, errpr); /* Program Register (PR) - out of COMET II memory */
}
/* スタック領域のアドレスが主記憶の範囲外の場合はエラー */
setcerr(204, errpr); /* Program Register (PR) - out of COMET II memory */
}
/* スタック領域のアドレスが主記憶の範囲外の場合はエラー */
- if(cpu->sp > memsize) {
- sprintf(errpr, "PR:#%04X", cpu->pr);
+ if(sys->cpu->sp > sys->memsize) {
+ sprintf(errpr, "PR:#%04X", sys->cpu->pr);
setcerr(207, errpr); /* Stack Pointer (SP) - out of COMET II memory */
}
/* スタック領域を確保できない場合はエラー */
setcerr(207, errpr); /* Stack Pointer (SP) - out of COMET II memory */
}
/* スタック領域を確保できない場合はエラー */
- if(cpu->sp <= progprop->end) {
- sprintf(errpr, "PR:#%04X", cpu->pr);
+ if(sys->cpu->sp <= prog->end) {
+ sprintf(errpr, "PR:#%04X", sys->cpu->pr);
- if(val >= memsize) {
- sprintf(errpr, "PR:#%04X", cpu->pr-1);
+ if(val >= sys->memsize) {
+ sprintf(errpr, "PR:#%04X", sys->cpu->pr-1);
- assert(cpu->sp > progprop->end && cpu->sp <= memsize);
- cpu->gr[r_r1] = memory[cpu->sp++];
+ assert(sys->cpu->sp > prog->end && sys->cpu->sp <= sys->memsize);
+ sys->cpu->gr[r_r1] = sys->memory[(sys->cpu->sp)++];
- assert(cpu->sp > progprop->end && cpu->sp <= memsize);
- memory[--(cpu->sp)] = cpu->pr;
- cpu->pr = val;
+ assert(sys->cpu->sp > prog->end && sys->cpu->sp <= sys->memsize);
+ sys->memory[--(sys->cpu->sp)] = sys->cpu->pr;
+ sys->cpu->pr = val;