| ... | ... |
@@ -1,8 +1,8 @@ |
| 1 | 1 |
< subroutines > |
| 2 | 2 |
|
| 3 | 3 |
:begin |
| 4 |
- .addall JSR ADD ADD |
|
| 5 |
- 06 EQU .isequal JSR |
|
| 4 |
+ .addall JSI ADD ADD |
|
| 5 |
+ 06 EQU .isequal JSI |
|
| 6 | 6 |
BRK |
| 7 | 7 |
|
| 8 | 8 |
:add1 |
| ... | ... |
@@ -15,11 +15,11 @@ |
| 15 | 15 |
03 RTS |
| 16 | 16 |
|
| 17 | 17 |
:addall |
| 18 |
- .add1 JSR |
|
| 19 |
- .add2 JSR |
|
| 20 |
- .add3 JSR |
|
| 18 |
+ .add1 JSI |
|
| 19 |
+ .add2 JSI |
|
| 20 |
+ .add3 JSI |
|
| 21 | 21 |
RTS |
| 22 | 22 |
|
| 23 | 23 |
:isequal |
| 24 |
- .addall JSR ff |
|
| 24 |
+ .addall JSI ff |
|
| 25 | 25 |
RTS |
| ... | ... |
@@ -87,7 +87,7 @@ rspush(Uint8 v) |
| 87 | 87 |
} |
| 88 | 88 |
|
| 89 | 89 |
Uint8 |
| 90 |
-rwspop(void) |
|
| 90 |
+rspop(void) |
|
| 91 | 91 |
{
|
| 92 | 92 |
return cpu.rst.dat[--cpu.rst.ptr]; |
| 93 | 93 |
} |
| ... | ... |
@@ -97,19 +97,19 @@ rwspop(void) |
| 97 | 97 |
/* clang-format off */ |
| 98 | 98 |
|
| 99 | 99 |
void op_brk() { setflag(FLAG_HALT, 1); }
|
| 100 |
-void op_rts() { cpu.rom.ptr = wspop(); }
|
|
| 100 |
+void op_rts() { cpu.rom.ptr = rspop(); }
|
|
| 101 | 101 |
void op_lit() { cpu.literal += cpu.rom.dat[cpu.rom.ptr++]; }
|
| 102 | 102 |
void op_drp() { wspop(); }
|
| 103 | 103 |
void op_dup() { wspush(cpu.wst.dat[cpu.wst.ptr - 1]); }
|
| 104 | 104 |
void op_swp() { Uint8 b = wspop(), a = wspop(); wspush(b); wspush(a); }
|
| 105 | 105 |
void op_ovr() { wspush(cpu.wst.dat[cpu.wst.ptr - 2]); }
|
| 106 | 106 |
void op_rot() { Uint8 c = wspop(),b = wspop(),a = wspop(); wspush(b); wspush(c); wspush(a); }
|
| 107 |
-void op_jmp() { cpu.rom.ptr = wspop(); }
|
|
| 108 |
-void op_jsr() { rspush(cpu.rom.ptr); cpu.rom.ptr = wspop(); }
|
|
| 109 |
-void op_jmq() { Uint8 a = wspop(); if(getflag(FLAG_ZERO)){ cpu.rom.ptr = a; } setflag(FLAG_ZERO,0); }
|
|
| 110 |
-void op_jsq() { Uint8 a = wspop(); if(getflag(FLAG_ZERO)){ rspush(cpu.rom.ptr); cpu.rom.ptr = a; } setflag(FLAG_ZERO,0); }
|
|
| 111 |
-void op_equ() { setflag(FLAG_ZERO, wspop() == cpu.wst.dat[cpu.wst.ptr]); }
|
|
| 112 |
-void op_neq() { setflag(FLAG_ZERO, wspop() != cpu.wst.dat[cpu.wst.ptr]); }
|
|
| 107 |
+void op_jmi() { cpu.rom.ptr = wspop(); }
|
|
| 108 |
+void op_jsi() { rspush(cpu.rom.ptr); cpu.rom.ptr = wspop(); }
|
|
| 109 |
+void op_jmz() { Uint8 a = wspop(); if(getflag(FLAG_ZERO)){ cpu.rom.ptr = a; } setflag(FLAG_ZERO,0); }
|
|
| 110 |
+void op_jsz() { Uint8 a = wspop(); if(getflag(FLAG_ZERO)){ rspush(cpu.rom.ptr); cpu.rom.ptr = a; } setflag(FLAG_ZERO,0); }
|
|
| 111 |
+void op_equ() { Uint8 a = wspop(); Uint8 b = wspop(); setflag(FLAG_ZERO, a == b); wspush(b); }
|
|
| 112 |
+void op_neq() { Uint8 a = wspop(); Uint8 b = wspop(); setflag(FLAG_ZERO, a != b); wspush(b); }
|
|
| 113 | 113 |
void op_lth() { setflag(FLAG_ZERO, wspop() < cpu.wst.dat[cpu.wst.ptr]); }
|
| 114 | 114 |
void op_gth() { setflag(FLAG_ZERO, wspop() > cpu.wst.dat[cpu.wst.ptr]); }
|
| 115 | 115 |
void op_and() { wspush(wspop() & wspop()); }
|
| ... | ... |
@@ -123,13 +123,13 @@ void op_div() { wspush(wspop() / wspop()); }
|
| 123 | 123 |
|
| 124 | 124 |
void (*ops[])(void) = {
|
| 125 | 125 |
op_brk, op_rts, op_lit, op_drp, op_dup, op_swp, op_ovr, op_rot, |
| 126 |
- op_jmp, op_jsr, op_jmq, op_jsq, op_equ, op_neq, op_gth, op_lth, |
|
| 126 |
+ op_jmi, op_jsi, op_jmz, op_jsz, op_equ, op_neq, op_gth, op_lth, |
|
| 127 | 127 |
op_and, op_ora, op_rol, op_ror, op_add, op_sub, op_mul, op_div}; |
| 128 | 128 |
|
| 129 | 129 |
Uint8 opr[][2] = {
|
| 130 | 130 |
{0,0}, {0,0}, {0,0}, {0,0}, {0,0}, {0,0}, {0,0}, {0,0},
|
| 131 | 131 |
{0,0}, {0,0}, {0,0}, {0,0}, {0,0}, {0,0}, {0,0}, {0,0},
|
| 132 |
- {0,0}, {0,0}, {0,0}, {0,0}, {2,1}, {0,0}, {0,0}, {0,0},
|
|
| 132 |
+ {1,0}, {1,0}, {1,0}, {1,0}, {2,1}, {0,0}, {0,0}, {0,0},
|
|
| 133 | 133 |
{0,0}, {0,0}, {0,0}, {0,0}, {0,0}, {0,0}, {0,0}, {0,0},
|
| 134 | 134 |
}; |
| 135 | 135 |
|
| ... | ... |
@@ -179,7 +179,7 @@ eval() |
| 179 | 179 |
} |
| 180 | 180 |
if(instr > 0x10) |
| 181 | 181 |
setflag(FLAG_ZERO, 0); |
| 182 |
- if(cpu.counter == 64) {
|
|
| 182 |
+ if(cpu.counter == 128) {
|
|
| 183 | 183 |
printf("REACHED COUNTER\n");
|
| 184 | 184 |
return 0; |
| 185 | 185 |
} |
| ... | ... |
@@ -33,7 +33,7 @@ Label labels[256]; |
| 33 | 33 |
|
| 34 | 34 |
char opcodes[][4] = {
|
| 35 | 35 |
"BRK", "RTS", "LIT", "POP", "DUP", "SWP", "OVR", "ROT", |
| 36 |
- "JMP", "JSR", "JMQ", "JSQ", "EQU", "NEQ", "LTH", "GTH", |
|
| 36 |
+ "JMI", "JSI", "JMZ", "JSZ", "EQU", "NEQ", "LTH", "GTH", |
|
| 37 | 37 |
"AND", "ORA", "ROL", "ROR", "ADD", "SUB", "MUL", "DIV"}; |
| 38 | 38 |
|
| 39 | 39 |
/* clang-format on */ |