(uxncore) added equ/neq/gth/lth
This commit is contained in:
parent
4f4043c705
commit
6f982b4596
|
@ -11,7 +11,7 @@ main(int argc, char **argv)
|
||||||
uxn.ram[0x104] = 0x80;
|
uxn.ram[0x104] = 0x80;
|
||||||
uxn.ram[0x105] = 0x56;
|
uxn.ram[0x105] = 0x56;
|
||||||
|
|
||||||
uxn.ram[0x106] = 0x06;
|
uxn.ram[0x106] = 0x0b;
|
||||||
if(uxn_eval(0x0100) && (uxn.dev[0x10] << 8 | uxn.dev[0x11]))
|
if(uxn_eval(0x0100) && (uxn.dev[0x10] << 8 | uxn.dev[0x11]))
|
||||||
while(!uxn.dev[0x0f]) ;
|
while(!uxn.dev[0x0f]) ;
|
||||||
return uxn.dev[0x0f] & 0x7f;
|
return uxn.dev[0x0f] & 0x7f;
|
||||||
|
|
|
@ -9,11 +9,11 @@ uxn_eval(Uint16 pc) {
|
||||||
case 0x04: /* SWP */ break;
|
case 0x04: /* SWP */ break;
|
||||||
case 0x05: /* ROT */ break;
|
case 0x05: /* ROT */ break;
|
||||||
case 0x06: /* DUP */ uxn.wst.dat[uxn.wst.ptr] = uxn.wst.dat[uxn.wst.ptr-1]; uxn.wst.ptr++; pc++; break;
|
case 0x06: /* DUP */ uxn.wst.dat[uxn.wst.ptr] = uxn.wst.dat[uxn.wst.ptr-1]; uxn.wst.ptr++; pc++; break;
|
||||||
case 0x07: /* OVR */ break;
|
case 0x07: /* OVR */ uxn.wst.dat[uxn.wst.ptr] = uxn.wst.dat[uxn.wst.ptr-2]; uxn.wst.ptr++; pc++; break;
|
||||||
case 0x08: /* EQU */ return 1; break;
|
case 0x08: /* EQU */ uxn.wst.dat[uxn.wst.ptr] = uxn.wst.dat[uxn.wst.ptr-2] == uxn.wst.dat[uxn.wst.ptr-1]; uxn.wst.ptr++; pc++; break;
|
||||||
case 0x09: /* NEQ */ return 1; break;
|
case 0x09: /* NEQ */ uxn.wst.dat[uxn.wst.ptr] = uxn.wst.dat[uxn.wst.ptr-2] != uxn.wst.dat[uxn.wst.ptr-1]; uxn.wst.ptr++; pc++; break;
|
||||||
case 0x0a: /* GTH */ return 1; break;
|
case 0x0a: /* GTH */ uxn.wst.dat[uxn.wst.ptr] = uxn.wst.dat[uxn.wst.ptr-2] > uxn.wst.dat[uxn.wst.ptr-1]; uxn.wst.ptr++; pc++; break;
|
||||||
case 0x0b: /* LTH */ return 1; break;
|
case 0x0b: /* LTH */ uxn.wst.dat[uxn.wst.ptr] = uxn.wst.dat[uxn.wst.ptr-2] < uxn.wst.dat[uxn.wst.ptr-1]; uxn.wst.ptr++; pc++; break;
|
||||||
case 0x0c: /* JMP */ return 1; break;
|
case 0x0c: /* JMP */ return 1; break;
|
||||||
case 0x0d: /* JCN */ return 1; break;
|
case 0x0d: /* JCN */ return 1; break;
|
||||||
case 0x0e: /* JSR */ return 1; break;
|
case 0x0e: /* JSR */ return 1; break;
|
||||||
|
@ -41,11 +41,11 @@ uxn_eval(Uint16 pc) {
|
||||||
case 0x24: /* SWP2 */ break;
|
case 0x24: /* SWP2 */ break;
|
||||||
case 0x25: /* ROT2 */ break;
|
case 0x25: /* ROT2 */ break;
|
||||||
case 0x26: /* DUP2 */ uxn.wst.dat[uxn.wst.ptr] = uxn.wst.dat[uxn.wst.ptr-1]; uxn.wst.ptr++; pc++; break;
|
case 0x26: /* DUP2 */ uxn.wst.dat[uxn.wst.ptr] = uxn.wst.dat[uxn.wst.ptr-1]; uxn.wst.ptr++; pc++; break;
|
||||||
case 0x27: /* OVR2 */ break;
|
case 0x27: /* OVR2 */ uxn.wst.dat[uxn.wst.ptr] = uxn.wst.dat[uxn.wst.ptr-2]; uxn.wst.ptr++; pc++; break;
|
||||||
case 0x28: /* EQU2 */ return 1; break;
|
case 0x28: /* EQU2 */ uxn.wst.dat[uxn.wst.ptr] = uxn.wst.dat[uxn.wst.ptr-2] == uxn.wst.dat[uxn.wst.ptr-1]; uxn.wst.ptr++; pc++; break;
|
||||||
case 0x29: /* NEQ2 */ return 1; break;
|
case 0x29: /* NEQ2 */ uxn.wst.dat[uxn.wst.ptr] = uxn.wst.dat[uxn.wst.ptr-2] != uxn.wst.dat[uxn.wst.ptr-1]; uxn.wst.ptr++; pc++; break;
|
||||||
case 0x2a: /* GTH2 */ return 1; break;
|
case 0x2a: /* GTH2 */ uxn.wst.dat[uxn.wst.ptr] = uxn.wst.dat[uxn.wst.ptr-2] > uxn.wst.dat[uxn.wst.ptr-1]; uxn.wst.ptr++; pc++; break;
|
||||||
case 0x2b: /* LTH2 */ return 1; break;
|
case 0x2b: /* LTH2 */ uxn.wst.dat[uxn.wst.ptr] = uxn.wst.dat[uxn.wst.ptr-2] < uxn.wst.dat[uxn.wst.ptr-1]; uxn.wst.ptr++; pc++; break;
|
||||||
case 0x2c: /* JMP2 */ return 1; break;
|
case 0x2c: /* JMP2 */ return 1; break;
|
||||||
case 0x2d: /* JCN2 */ return 1; break;
|
case 0x2d: /* JCN2 */ return 1; break;
|
||||||
case 0x2e: /* JSR2 */ return 1; break;
|
case 0x2e: /* JSR2 */ return 1; break;
|
||||||
|
@ -73,11 +73,11 @@ uxn_eval(Uint16 pc) {
|
||||||
case 0x44: /* SWPr */ break;
|
case 0x44: /* SWPr */ break;
|
||||||
case 0x45: /* ROTr */ break;
|
case 0x45: /* ROTr */ break;
|
||||||
case 0x46: /* DUPr */ uxn.rst.dat[uxn.rst.ptr] = uxn.rst.dat[uxn.rst.ptr-1]; uxn.rst.ptr++; pc++; break;
|
case 0x46: /* DUPr */ uxn.rst.dat[uxn.rst.ptr] = uxn.rst.dat[uxn.rst.ptr-1]; uxn.rst.ptr++; pc++; break;
|
||||||
case 0x47: /* OVRr */ break;
|
case 0x47: /* OVRr */ uxn.rst.dat[uxn.rst.ptr] = uxn.rst.dat[uxn.rst.ptr-2]; uxn.rst.ptr++; pc++; break;
|
||||||
case 0x48: /* EQUr */ return 1; break;
|
case 0x48: /* EQUr */ uxn.rst.dat[uxn.rst.ptr] = uxn.rst.dat[uxn.rst.ptr-2] == uxn.rst.dat[uxn.rst.ptr-1]; uxn.rst.ptr++; pc++; break;
|
||||||
case 0x49: /* NEQr */ return 1; break;
|
case 0x49: /* NEQr */ uxn.rst.dat[uxn.rst.ptr] = uxn.rst.dat[uxn.rst.ptr-2] != uxn.rst.dat[uxn.rst.ptr-1]; uxn.rst.ptr++; pc++; break;
|
||||||
case 0x4a: /* GTHr */ return 1; break;
|
case 0x4a: /* GTHr */ uxn.rst.dat[uxn.rst.ptr] = uxn.rst.dat[uxn.rst.ptr-2] > uxn.rst.dat[uxn.rst.ptr-1]; uxn.rst.ptr++; pc++; break;
|
||||||
case 0x4b: /* LTHr */ return 1; break;
|
case 0x4b: /* LTHr */ uxn.rst.dat[uxn.rst.ptr] = uxn.rst.dat[uxn.rst.ptr-2] < uxn.rst.dat[uxn.rst.ptr-1]; uxn.rst.ptr++; pc++; break;
|
||||||
case 0x4c: /* JMPr */ return 1; break;
|
case 0x4c: /* JMPr */ return 1; break;
|
||||||
case 0x4d: /* JCNr */ return 1; break;
|
case 0x4d: /* JCNr */ return 1; break;
|
||||||
case 0x4e: /* JSRr */ return 1; break;
|
case 0x4e: /* JSRr */ return 1; break;
|
||||||
|
@ -105,11 +105,11 @@ uxn_eval(Uint16 pc) {
|
||||||
case 0x64: /* SWP2r */ break;
|
case 0x64: /* SWP2r */ break;
|
||||||
case 0x65: /* ROT2r */ break;
|
case 0x65: /* ROT2r */ break;
|
||||||
case 0x66: /* DUP2r */ uxn.rst.dat[uxn.rst.ptr] = uxn.rst.dat[uxn.rst.ptr-1]; uxn.rst.ptr++; pc++; break;
|
case 0x66: /* DUP2r */ uxn.rst.dat[uxn.rst.ptr] = uxn.rst.dat[uxn.rst.ptr-1]; uxn.rst.ptr++; pc++; break;
|
||||||
case 0x67: /* OVR2r */ break;
|
case 0x67: /* OVR2r */ uxn.rst.dat[uxn.rst.ptr] = uxn.rst.dat[uxn.rst.ptr-2]; uxn.rst.ptr++; pc++; break;
|
||||||
case 0x68: /* EQU2r */ return 1; break;
|
case 0x68: /* EQU2r */ uxn.rst.dat[uxn.rst.ptr] = uxn.rst.dat[uxn.rst.ptr-2] == uxn.rst.dat[uxn.rst.ptr-1]; uxn.rst.ptr++; pc++; break;
|
||||||
case 0x69: /* NEQ2r */ return 1; break;
|
case 0x69: /* NEQ2r */ uxn.rst.dat[uxn.rst.ptr] = uxn.rst.dat[uxn.rst.ptr-2] != uxn.rst.dat[uxn.rst.ptr-1]; uxn.rst.ptr++; pc++; break;
|
||||||
case 0x6a: /* GTH2r */ return 1; break;
|
case 0x6a: /* GTH2r */ uxn.rst.dat[uxn.rst.ptr] = uxn.rst.dat[uxn.rst.ptr-2] > uxn.rst.dat[uxn.rst.ptr-1]; uxn.rst.ptr++; pc++; break;
|
||||||
case 0x6b: /* LTH2r */ return 1; break;
|
case 0x6b: /* LTH2r */ uxn.rst.dat[uxn.rst.ptr] = uxn.rst.dat[uxn.rst.ptr-2] < uxn.rst.dat[uxn.rst.ptr-1]; uxn.rst.ptr++; pc++; break;
|
||||||
case 0x6c: /* JMP2r */ return 1; break;
|
case 0x6c: /* JMP2r */ return 1; break;
|
||||||
case 0x6d: /* JCN2r */ return 1; break;
|
case 0x6d: /* JCN2r */ return 1; break;
|
||||||
case 0x6e: /* JSR2r */ return 1; break;
|
case 0x6e: /* JSR2r */ return 1; break;
|
||||||
|
@ -137,11 +137,11 @@ uxn_eval(Uint16 pc) {
|
||||||
case 0x84: /* SWPk */ break;
|
case 0x84: /* SWPk */ break;
|
||||||
case 0x85: /* ROTk */ break;
|
case 0x85: /* ROTk */ break;
|
||||||
case 0x86: /* DUPk */ uxn.wst.dat[uxn.wst.ptr] = uxn.wst.dat[uxn.wst.ptr-1]; uxn.wst.ptr++; pc++; break;
|
case 0x86: /* DUPk */ uxn.wst.dat[uxn.wst.ptr] = uxn.wst.dat[uxn.wst.ptr-1]; uxn.wst.ptr++; pc++; break;
|
||||||
case 0x87: /* OVRk */ break;
|
case 0x87: /* OVRk */ uxn.wst.dat[uxn.wst.ptr] = uxn.wst.dat[uxn.wst.ptr-2]; uxn.wst.ptr++; pc++; break;
|
||||||
case 0x88: /* EQUk */ return 1; break;
|
case 0x88: /* EQUk */ uxn.wst.dat[uxn.wst.ptr] = uxn.wst.dat[uxn.wst.ptr-2] == uxn.wst.dat[uxn.wst.ptr-1]; uxn.wst.ptr++; pc++; break;
|
||||||
case 0x89: /* NEQk */ return 1; break;
|
case 0x89: /* NEQk */ uxn.wst.dat[uxn.wst.ptr] = uxn.wst.dat[uxn.wst.ptr-2] != uxn.wst.dat[uxn.wst.ptr-1]; uxn.wst.ptr++; pc++; break;
|
||||||
case 0x8a: /* GTHk */ return 1; break;
|
case 0x8a: /* GTHk */ uxn.wst.dat[uxn.wst.ptr] = uxn.wst.dat[uxn.wst.ptr-2] > uxn.wst.dat[uxn.wst.ptr-1]; uxn.wst.ptr++; pc++; break;
|
||||||
case 0x8b: /* LTHk */ return 1; break;
|
case 0x8b: /* LTHk */ uxn.wst.dat[uxn.wst.ptr] = uxn.wst.dat[uxn.wst.ptr-2] < uxn.wst.dat[uxn.wst.ptr-1]; uxn.wst.ptr++; pc++; break;
|
||||||
case 0x8c: /* JMPk */ return 1; break;
|
case 0x8c: /* JMPk */ return 1; break;
|
||||||
case 0x8d: /* JCNk */ return 1; break;
|
case 0x8d: /* JCNk */ return 1; break;
|
||||||
case 0x8e: /* JSRk */ return 1; break;
|
case 0x8e: /* JSRk */ return 1; break;
|
||||||
|
@ -169,11 +169,11 @@ uxn_eval(Uint16 pc) {
|
||||||
case 0xa4: /* SWP2k */ break;
|
case 0xa4: /* SWP2k */ break;
|
||||||
case 0xa5: /* ROT2k */ break;
|
case 0xa5: /* ROT2k */ break;
|
||||||
case 0xa6: /* DUP2k */ uxn.wst.dat[uxn.wst.ptr] = uxn.wst.dat[uxn.wst.ptr-1]; uxn.wst.ptr++; pc++; break;
|
case 0xa6: /* DUP2k */ uxn.wst.dat[uxn.wst.ptr] = uxn.wst.dat[uxn.wst.ptr-1]; uxn.wst.ptr++; pc++; break;
|
||||||
case 0xa7: /* OVR2k */ break;
|
case 0xa7: /* OVR2k */ uxn.wst.dat[uxn.wst.ptr] = uxn.wst.dat[uxn.wst.ptr-2]; uxn.wst.ptr++; pc++; break;
|
||||||
case 0xa8: /* EQU2k */ return 1; break;
|
case 0xa8: /* EQU2k */ uxn.wst.dat[uxn.wst.ptr] = uxn.wst.dat[uxn.wst.ptr-2] == uxn.wst.dat[uxn.wst.ptr-1]; uxn.wst.ptr++; pc++; break;
|
||||||
case 0xa9: /* NEQ2k */ return 1; break;
|
case 0xa9: /* NEQ2k */ uxn.wst.dat[uxn.wst.ptr] = uxn.wst.dat[uxn.wst.ptr-2] != uxn.wst.dat[uxn.wst.ptr-1]; uxn.wst.ptr++; pc++; break;
|
||||||
case 0xaa: /* GTH2k */ return 1; break;
|
case 0xaa: /* GTH2k */ uxn.wst.dat[uxn.wst.ptr] = uxn.wst.dat[uxn.wst.ptr-2] > uxn.wst.dat[uxn.wst.ptr-1]; uxn.wst.ptr++; pc++; break;
|
||||||
case 0xab: /* LTH2k */ return 1; break;
|
case 0xab: /* LTH2k */ uxn.wst.dat[uxn.wst.ptr] = uxn.wst.dat[uxn.wst.ptr-2] < uxn.wst.dat[uxn.wst.ptr-1]; uxn.wst.ptr++; pc++; break;
|
||||||
case 0xac: /* JMP2k */ return 1; break;
|
case 0xac: /* JMP2k */ return 1; break;
|
||||||
case 0xad: /* JCN2k */ return 1; break;
|
case 0xad: /* JCN2k */ return 1; break;
|
||||||
case 0xae: /* JSR2k */ return 1; break;
|
case 0xae: /* JSR2k */ return 1; break;
|
||||||
|
@ -201,11 +201,11 @@ uxn_eval(Uint16 pc) {
|
||||||
case 0xc4: /* SWPkr */ break;
|
case 0xc4: /* SWPkr */ break;
|
||||||
case 0xc5: /* ROTkr */ break;
|
case 0xc5: /* ROTkr */ break;
|
||||||
case 0xc6: /* DUPkr */ uxn.rst.dat[uxn.rst.ptr] = uxn.rst.dat[uxn.rst.ptr-1]; uxn.rst.ptr++; pc++; break;
|
case 0xc6: /* DUPkr */ uxn.rst.dat[uxn.rst.ptr] = uxn.rst.dat[uxn.rst.ptr-1]; uxn.rst.ptr++; pc++; break;
|
||||||
case 0xc7: /* OVRkr */ break;
|
case 0xc7: /* OVRkr */ uxn.rst.dat[uxn.rst.ptr] = uxn.rst.dat[uxn.rst.ptr-2]; uxn.rst.ptr++; pc++; break;
|
||||||
case 0xc8: /* EQUkr */ return 1; break;
|
case 0xc8: /* EQUkr */ uxn.rst.dat[uxn.rst.ptr] = uxn.rst.dat[uxn.rst.ptr-2] == uxn.rst.dat[uxn.rst.ptr-1]; uxn.rst.ptr++; pc++; break;
|
||||||
case 0xc9: /* NEQkr */ return 1; break;
|
case 0xc9: /* NEQkr */ uxn.rst.dat[uxn.rst.ptr] = uxn.rst.dat[uxn.rst.ptr-2] != uxn.rst.dat[uxn.rst.ptr-1]; uxn.rst.ptr++; pc++; break;
|
||||||
case 0xca: /* GTHkr */ return 1; break;
|
case 0xca: /* GTHkr */ uxn.rst.dat[uxn.rst.ptr] = uxn.rst.dat[uxn.rst.ptr-2] > uxn.rst.dat[uxn.rst.ptr-1]; uxn.rst.ptr++; pc++; break;
|
||||||
case 0xcb: /* LTHkr */ return 1; break;
|
case 0xcb: /* LTHkr */ uxn.rst.dat[uxn.rst.ptr] = uxn.rst.dat[uxn.rst.ptr-2] < uxn.rst.dat[uxn.rst.ptr-1]; uxn.rst.ptr++; pc++; break;
|
||||||
case 0xcc: /* JMPkr */ return 1; break;
|
case 0xcc: /* JMPkr */ return 1; break;
|
||||||
case 0xcd: /* JCNkr */ return 1; break;
|
case 0xcd: /* JCNkr */ return 1; break;
|
||||||
case 0xce: /* JSRkr */ return 1; break;
|
case 0xce: /* JSRkr */ return 1; break;
|
||||||
|
@ -233,11 +233,11 @@ uxn_eval(Uint16 pc) {
|
||||||
case 0xe4: /* SWP2kr */ break;
|
case 0xe4: /* SWP2kr */ break;
|
||||||
case 0xe5: /* ROT2kr */ break;
|
case 0xe5: /* ROT2kr */ break;
|
||||||
case 0xe6: /* DUP2kr */ uxn.rst.dat[uxn.rst.ptr] = uxn.rst.dat[uxn.rst.ptr-1]; uxn.rst.ptr++; pc++; break;
|
case 0xe6: /* DUP2kr */ uxn.rst.dat[uxn.rst.ptr] = uxn.rst.dat[uxn.rst.ptr-1]; uxn.rst.ptr++; pc++; break;
|
||||||
case 0xe7: /* OVR2kr */ break;
|
case 0xe7: /* OVR2kr */ uxn.rst.dat[uxn.rst.ptr] = uxn.rst.dat[uxn.rst.ptr-2]; uxn.rst.ptr++; pc++; break;
|
||||||
case 0xe8: /* EQU2kr */ return 1; break;
|
case 0xe8: /* EQU2kr */ uxn.rst.dat[uxn.rst.ptr] = uxn.rst.dat[uxn.rst.ptr-2] == uxn.rst.dat[uxn.rst.ptr-1]; uxn.rst.ptr++; pc++; break;
|
||||||
case 0xe9: /* NEQ2kr */ return 1; break;
|
case 0xe9: /* NEQ2kr */ uxn.rst.dat[uxn.rst.ptr] = uxn.rst.dat[uxn.rst.ptr-2] != uxn.rst.dat[uxn.rst.ptr-1]; uxn.rst.ptr++; pc++; break;
|
||||||
case 0xea: /* GTH2kr */ return 1; break;
|
case 0xea: /* GTH2kr */ uxn.rst.dat[uxn.rst.ptr] = uxn.rst.dat[uxn.rst.ptr-2] > uxn.rst.dat[uxn.rst.ptr-1]; uxn.rst.ptr++; pc++; break;
|
||||||
case 0xeb: /* LTH2kr */ return 1; break;
|
case 0xeb: /* LTH2kr */ uxn.rst.dat[uxn.rst.ptr] = uxn.rst.dat[uxn.rst.ptr-2] < uxn.rst.dat[uxn.rst.ptr-1]; uxn.rst.ptr++; pc++; break;
|
||||||
case 0xec: /* JMP2kr */ return 1; break;
|
case 0xec: /* JMP2kr */ return 1; break;
|
||||||
case 0xed: /* JCN2kr */ return 1; break;
|
case 0xed: /* JCN2kr */ return 1; break;
|
||||||
case 0xee: /* JSR2kr */ return 1; break;
|
case 0xee: /* JSR2kr */ return 1; break;
|
||||||
|
|
|
@ -82,7 +82,7 @@
|
||||||
@opc-lut [
|
@opc-lut [
|
||||||
=op-brk =op-inc =op-pop =op-nip
|
=op-brk =op-inc =op-pop =op-nip
|
||||||
=op-swp =op-rot =op-dup =op-ovr
|
=op-swp =op-rot =op-dup =op-ovr
|
||||||
=op-brk =op-brk =op-brk =op-brk
|
=op-equ =op-neq =op-gth =op-lth
|
||||||
=op-brk =op-brk =op-brk =op-brk
|
=op-brk =op-brk =op-brk =op-brk
|
||||||
=op-brk =op-brk =op-brk =op-brk
|
=op-brk =op-brk =op-brk =op-brk
|
||||||
=op-brk =op-brk =op-brk =op-brk
|
=op-brk =op-brk =op-brk =op-brk
|
||||||
|
@ -99,8 +99,7 @@
|
||||||
@op-lit ( byte -- )
|
@op-lit ( byte -- )
|
||||||
<dat>
|
<dat>
|
||||||
[ LIT2 "[ 18 ] DEO
|
[ LIT2 "[ 18 ] DEO
|
||||||
<ptr>
|
<ptr-inc>
|
||||||
<inc>
|
|
||||||
[ LIT2 "] 18 ] DEO
|
[ LIT2 "] 18 ] DEO
|
||||||
<equ>
|
<equ>
|
||||||
<ram>
|
<ram>
|
||||||
|
@ -166,13 +165,113 @@
|
||||||
#01 <minus>
|
#01 <minus>
|
||||||
[ LIT2 "] 18 ] DEO
|
[ LIT2 "] 18 ] DEO
|
||||||
<then>
|
<then>
|
||||||
<ptr>
|
<ptr-inc>
|
||||||
<inc>
|
|
||||||
<then>
|
<then>
|
||||||
POP !<pc-inc>
|
POP !<pc-inc>
|
||||||
|
|
||||||
@op-ovr ( byte -- )
|
@op-ovr ( byte -- )
|
||||||
POP JMP2r
|
<dat>
|
||||||
|
[ LIT2 "[ 18 ] DEO
|
||||||
|
<ptr>
|
||||||
|
[ LIT2 "] 18 ] DEO
|
||||||
|
<equ>
|
||||||
|
<dat>
|
||||||
|
[ LIT2 "[ 18 ] DEO
|
||||||
|
<ptr>
|
||||||
|
#02 <minus>
|
||||||
|
[ LIT2 "] 18 ] DEO
|
||||||
|
<then>
|
||||||
|
<ptr-inc>
|
||||||
|
<then>
|
||||||
|
POP !<pc-inc>
|
||||||
|
|
||||||
|
@op-equ ( byte -- )
|
||||||
|
<dat>
|
||||||
|
[ LIT2 "[ 18 ] DEO
|
||||||
|
<ptr>
|
||||||
|
[ LIT2 "] 18 ] DEO
|
||||||
|
<equ>
|
||||||
|
<dat>
|
||||||
|
[ LIT2 "[ 18 ] DEO
|
||||||
|
<ptr>
|
||||||
|
#02 <minus>
|
||||||
|
[ LIT2 "] 18 ] DEO
|
||||||
|
<equality>
|
||||||
|
<dat>
|
||||||
|
[ LIT2 "[ 18 ] DEO
|
||||||
|
<ptr>
|
||||||
|
#01 <minus>
|
||||||
|
[ LIT2 "] 18 ] DEO
|
||||||
|
<then>
|
||||||
|
<ptr-inc>
|
||||||
|
<then>
|
||||||
|
POP !<pc-inc>
|
||||||
|
|
||||||
|
@op-neq ( byte -- )
|
||||||
|
<dat>
|
||||||
|
[ LIT2 "[ 18 ] DEO
|
||||||
|
<ptr>
|
||||||
|
[ LIT2 "] 18 ] DEO
|
||||||
|
<equ>
|
||||||
|
<dat>
|
||||||
|
[ LIT2 "[ 18 ] DEO
|
||||||
|
<ptr>
|
||||||
|
#02 <minus>
|
||||||
|
[ LIT2 "] 18 ] DEO
|
||||||
|
<inequality>
|
||||||
|
<dat>
|
||||||
|
[ LIT2 "[ 18 ] DEO
|
||||||
|
<ptr>
|
||||||
|
#01 <minus>
|
||||||
|
[ LIT2 "] 18 ] DEO
|
||||||
|
<then>
|
||||||
|
<ptr-inc>
|
||||||
|
<then>
|
||||||
|
POP !<pc-inc>
|
||||||
|
|
||||||
|
@op-gth ( byte -- )
|
||||||
|
<dat>
|
||||||
|
[ LIT2 "[ 18 ] DEO
|
||||||
|
<ptr>
|
||||||
|
[ LIT2 "] 18 ] DEO
|
||||||
|
<equ>
|
||||||
|
<dat>
|
||||||
|
[ LIT2 "[ 18 ] DEO
|
||||||
|
<ptr>
|
||||||
|
#02 <minus>
|
||||||
|
[ LIT2 "] 18 ] DEO
|
||||||
|
<gth>
|
||||||
|
<dat>
|
||||||
|
[ LIT2 "[ 18 ] DEO
|
||||||
|
<ptr>
|
||||||
|
#01 <minus>
|
||||||
|
[ LIT2 "] 18 ] DEO
|
||||||
|
<then>
|
||||||
|
<ptr-inc>
|
||||||
|
<then>
|
||||||
|
POP !<pc-inc>
|
||||||
|
|
||||||
|
@op-lth ( byte -- )
|
||||||
|
<dat>
|
||||||
|
[ LIT2 "[ 18 ] DEO
|
||||||
|
<ptr>
|
||||||
|
[ LIT2 "] 18 ] DEO
|
||||||
|
<equ>
|
||||||
|
<dat>
|
||||||
|
[ LIT2 "[ 18 ] DEO
|
||||||
|
<ptr>
|
||||||
|
#02 <minus>
|
||||||
|
[ LIT2 "] 18 ] DEO
|
||||||
|
<lth>
|
||||||
|
<dat>
|
||||||
|
[ LIT2 "[ 18 ] DEO
|
||||||
|
<ptr>
|
||||||
|
#01 <minus>
|
||||||
|
[ LIT2 "] 18 ] DEO
|
||||||
|
<then>
|
||||||
|
<ptr-inc>
|
||||||
|
<then>
|
||||||
|
POP !<pc-inc>
|
||||||
|
|
||||||
(
|
(
|
||||||
@|framework )
|
@|framework )
|
||||||
|
@ -185,6 +284,31 @@
|
||||||
[ LIT2 "- 18 ] DEOk DEO
|
[ LIT2 "- 18 ] DEOk DEO
|
||||||
JMP2r
|
JMP2r
|
||||||
|
|
||||||
|
@<equality> ( -- )
|
||||||
|
#2018 DEO
|
||||||
|
[ LIT2 "= 18 ] DEOk DEO
|
||||||
|
#2018 DEO
|
||||||
|
JMP2r
|
||||||
|
|
||||||
|
@<inequality> ( -- )
|
||||||
|
#2018 DEO
|
||||||
|
[ LIT2 "! 18 ] DEO
|
||||||
|
[ LIT2 "= 18 ] DEO
|
||||||
|
#2018 DEO
|
||||||
|
JMP2r
|
||||||
|
|
||||||
|
@<gth> ( -- )
|
||||||
|
#2018 DEO
|
||||||
|
[ LIT2 "> 18 ] DEO
|
||||||
|
#2018 DEO
|
||||||
|
JMP2r
|
||||||
|
|
||||||
|
@<lth> ( -- )
|
||||||
|
#2018 DEO
|
||||||
|
[ LIT2 "< 18 ] DEO
|
||||||
|
#2018 DEO
|
||||||
|
JMP2r
|
||||||
|
|
||||||
@<t> ( -- )
|
@<t> ( -- )
|
||||||
[ LIT2 "t 18 ] DEO
|
[ LIT2 "t 18 ] DEO
|
||||||
<equ>
|
<equ>
|
||||||
|
@ -199,9 +323,7 @@
|
||||||
JMP2r
|
JMP2r
|
||||||
|
|
||||||
@<minus> ( numchar -- )
|
@<minus> ( numchar -- )
|
||||||
#2018 DEO
|
|
||||||
[ LIT2 "- 18 ] DEO
|
[ LIT2 "- 18 ] DEO
|
||||||
#2018 DEO
|
|
||||||
[ LIT "0 ] ADD #18 DEO
|
[ LIT "0 ] ADD #18 DEO
|
||||||
JMP2r
|
JMP2r
|
||||||
|
|
||||||
|
@ -220,6 +342,10 @@
|
||||||
DUP #40 AND ?{ ;dict/uxn-wst-ptr !<pstr> }
|
DUP #40 AND ?{ ;dict/uxn-wst-ptr !<pstr> }
|
||||||
;dict/uxn-rst-ptr !<pstr>
|
;dict/uxn-rst-ptr !<pstr>
|
||||||
|
|
||||||
|
@<ptr-inc> ( byte -- byte )
|
||||||
|
<ptr>
|
||||||
|
!<inc>
|
||||||
|
|
||||||
@<ram> ( -- )
|
@<ram> ( -- )
|
||||||
;dict/uxn-ram !<pstr>
|
;dict/uxn-ram !<pstr>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue