commit 8ba07a647b5a53edfab0cc524fca20271dd7ff93
parent 361d94df24cde99bc56b7178912cbafd0b44b87b
Author: Virgil Dupras <hsoft@hardcoded.net>
Date: Wed, 22 Mar 2023 17:59:40 -0400
hal: remove the T) register
It wasn't all that useful after all...
Diffstat:
4 files changed, 5 insertions(+), 10 deletions(-)
diff --git a/fs/comp/c/egen.fs b/fs/comp/c/egen.fs
@@ -131,7 +131,7 @@ current ' parseFactor realias
_prep +, ;
\ ops that can't freely swap their operands
-: _prep ( left right -- left halop ) Result :?>T over Result :?>W ;
+: _prep ( left right -- left halop ) Result :?>PS over Result :?>W ;
: _/, _prep /, ; : _%, _prep %, ;
: _<<, _prep <<, ; : _>>, _prep >>, ;
diff --git a/fs/comp/c/expr.fs b/fs/comp/c/expr.fs
@@ -53,9 +53,9 @@ struct[ Result
: :?freeCurrentW ( -- ) currentW ?dup if :>PS then ;
: :?>W dup :isW? if drop else :?freeCurrentW :>W then ;
: :?>W$ dup :?>W :release ;
- \ Free up W by sending it to T (if needed).
- : :?>T ( self -- halop )
- dup :isW? if :release T) dup !, else :hal# then ;
+ \ Free up W by sending it to PS (if needed).
+ : :?>PS ( self -- halop )
+ dup :isW? if dup :release dup :>PS then :hal# ;
: :* ( self -- ) 1 swap to+ lvl ;
: :& ( self -- )
dup lvl if -1 swap to+ lvl else
diff --git a/fs/doc/hal.txt b/fs/doc/hal.txt
@@ -62,7 +62,6 @@ The "high" layer of the HAL is provided by the assembler.
Operand words:
i)
-T) Temporary *direct* register. Can't be used with +)
Branching and conditions:
diff --git a/posix/vm.c b/posix/vm.c
@@ -36,8 +36,7 @@ no assembler to complete the HAL to "full" level later. It's all in there.
#define _RCNT_ (NEXTMETA+4)
#define NEXTWORD (_RCNT_+4)
#define MOD (NEXTWORD+4)
-#define TREG (MOD+4)
-#define CURWORD (TREG+4)
+#define CURWORD (MOD+4)
#define HBANKCNT 0x10
#define HBANKSZ (HBANKCNT*4)
#define HBANK (SYSVARS-HBANKSZ)
@@ -50,7 +49,6 @@ no assembler to complete the HAL to "full" level later. It's all in there.
#define OPRSP 3
#define OPMEM 4
#define OPIMM 5
-#define OPT 6
#define OPHASDISP 0x08
#define OP16B 0x100
#define OP8B 0x200
@@ -237,7 +235,6 @@ static dword readop() {
case OPPSP: addr = vm.PSP; break;
case OPRSP: addr = vm.RSP; break;
case OPIMM: addr = vm.PC; vm.PC += 4; return addr;
- case OPT: return TREG;
}
if (op & OPHASDISP) addr += gpc();
return addr;
@@ -901,7 +898,6 @@ static void buildsysdict() {
sysconst("[rcnt]", _RCNT_);
sysconst("W)", OPW); sysconst("A)", OPA);
sysconst("PSP)", OPPSP); sysconst("RSP)", OPRSP);
- sysconst("T)", OPT);
sysconst("Z)", CONDZ); sysconst("NZ)", CONDNZ);
sysconst("C)", CONDC); sysconst("NC)", CONDNC);
sysconst("<)", CONDC); sysconst(">=)", CONDNC);