+ sys->cpu->pr += 2;
+}
+
+/**
+ * JPL命令。語長2
+ */
+void jpl()
+{
+ WORD w[2];
+ w[0] = sys->memory[sys->cpu->pr];
+ w[1] = sys->memory[sys->cpu->pr + 1];
+ if((sys->cpu->fr & (SF | ZF)) == 0) {
+ sys->cpu->pr = adrx(w[1], w[0]);
+ } else {
+ sys->cpu->pr += 2;
+ }
+}
+
+/**
+ * JMI命令。語長2
+ */
+void jmi()
+{
+ WORD w[2];
+ w[0] = sys->memory[sys->cpu->pr];
+ w[1] = sys->memory[sys->cpu->pr + 1];
+ if((sys->cpu->fr & SF) > 0) {
+ sys->cpu->pr = adrx(w[1], w[0]);
+ } else {
+ sys->cpu->pr += 2;
+ }
+}
+
+/**
+ * JNZ命令。語長2
+ */
+void jnz()
+{
+ WORD w[2];
+ w[0] = sys->memory[sys->cpu->pr];
+ w[1] = sys->memory[sys->cpu->pr + 1];
+ if((sys->cpu->fr & ZF) == 0) {
+ sys->cpu->pr = adrx(w[1], w[0]);
+ } else {
+ sys->cpu->pr += 2;
+ }
+}
+
+/**
+ * JZE命令。語長2
+ */
+void jze()
+{
+ WORD w[2];
+ w[0] = sys->memory[sys->cpu->pr];
+ w[1] = sys->memory[sys->cpu->pr + 1];
+ if((sys->cpu->fr & ZF) > 0) {
+ sys->cpu->pr = adrx(w[1], w[0]);
+ } else {
+ sys->cpu->pr += 2;
+ }
+}
+
+/**
+ * JOV命令。語長2
+ */
+void jov()
+{
+ WORD w[2];
+ w[0] = sys->memory[sys->cpu->pr];
+ w[1] = sys->memory[sys->cpu->pr + 1];
+ if((sys->cpu->fr & OF) > 0) {
+ sys->cpu->pr = adrx(w[1], w[0]);
+ } else {
+ sys->cpu->pr += 2;
+ }
+}
+
+/**
+ * JUMP命令。語長2
+ */
+void jump()
+{
+ WORD w[2];
+ w[0] = sys->memory[sys->cpu->pr];
+ w[1] = sys->memory[sys->cpu->pr + 1];
+ sys->cpu->pr = adrx(w[1], w[0]);
+}
+
+/**
+ * PUSH命令。語長2
+ */
+void push()
+{
+ WORD w[2];
+ w[0] = sys->memory[sys->cpu->pr];
+ w[1] = sys->memory[sys->cpu->pr + 1];
+ assert(sys->cpu->sp > execptr->end && sys->cpu->sp <= sys->memsize);
+ sys->memory[--(sys->cpu->sp)] = adrx(w[1], w[0]);
+ sys->cpu->pr += 2;
+}
+
+/**
+ * POP命令。語長1
+ */
+void pop()
+{
+ assert(sys->cpu->sp > execptr->end && sys->cpu->sp <= sys->memsize);
+ WORD w[1];
+ w[0] = sys->memory[sys->cpu->pr];
+ sys->cpu->gr[r_r1(w[0])] = sys->memory[(sys->cpu->sp)++];
+ sys->cpu->pr += 1;
+}
+
+/**
+ * CALL命令。語長2
+ */
+void call()
+{
+ assert(sys->cpu->sp > execptr->end && sys->cpu->sp <= sys->memsize);
+ WORD w[2];
+ w[0] = sys->memory[sys->cpu->pr];
+ w[1] = sys->memory[sys->cpu->pr + 1];
+ sys->memory[--(sys->cpu->sp)] = sys->cpu->pr + 1;
+ sys->cpu->pr = adrx(w[1], w[0]);
+}
+
+/**
+ * RET命令。語長1(OPのみ)
+ */
+void ret()
+{
+ assert(sys->cpu->sp <= sys->memsize);
+ if(sys->cpu->sp == sys->memsize) {
+ execptr->stop = true;
+ } else if(sys->cpu->sp < sys->memsize) {
+ sys->cpu->pr = sys->memory[(sys->cpu->sp)++] + 1;
+ }
+}
+
+/**
+ * SVC命令。語長2
+ */
+void svc()
+{
+ WORD w[2];
+ w[0] = sys->memory[sys->cpu->pr];
+ w[1] = sys->memory[sys->cpu->pr + 1];
+ switch(adrx(w[1], w[0]))
+ {
+ case 0x0: /* STOP */
+ execptr->stop = true;
+ break;
+ case 0x1: /* IN */
+ svcin();
+ break;
+ case 0x2: /* OUT */
+ svcout();
+ break;
+ }
+ sys->cpu->pr += 2;