pcat: implement number literals

This commit is contained in:
Virgil Dupras 2020-06-16 21:34:35 -04:00
parent a92864a595
commit 49979404a5
3 changed files with 13 additions and 9 deletions

11
blk/813
View File

@ -2,14 +2,13 @@
these words' offset need to be stable, so they're part of these words' offset need to be stable, so they're part of
the "stable ABI" ) the "stable ABI" )
'E' A, 'X' A, 'I' A, 'T' A, 'E' A, 'X' A, 'I' A, 'T' A,
0 A,, ( prev ) 0 A,, ( prev ) 4 A, ( len )
4 A,
H@ XCURRENT ! ( set current tip of dict, 0x42 ) H@ XCURRENT ! ( set current tip of dict, 0x42 )
0x17 A, ( nativeWord ) 0x17 A, ( nativeWord )
DX [BP] 0 MOVx[]+, BP DECx, BP DECx, ( popRS ) DX [BP] 0 MOVx[]+, BP DECx, BP DECx, ( popRS )
;CODE ;CODE
CODE BYE BEGIN, JMPs, AGAIN, ;CODE PC ORG @ 0x20 + ! ( numberWord )
CODE FOO PC ORG @ 0x24 + ! ( addrWord ) ( see B287 for comments )
AH 0x0e MOVri, ( print char ) AL 'X' MOVri, 0x10 INT, DI DX MOVxx, DI [DI] MOVx[], DI PUSHx,
DX INCx, DX INCx,
;CODE ;CODE
: BAR FOO FOO ; : BAZ BAR FOO BYE ;

View File

@ -1,6 +1,6 @@
L4 BSET PC 3 - ORG @ 4 + ! ( find ) L4 BSET PC 3 - ORG @ 4 + ! ( find )
( find word the same name as str in SI starting from tip in ( find word the same name as str in SI starting from tip in
DI. Returns wordref in BX. Z if found, NZ if not. ) DI. Returns wordref in DI. Z if found, NZ if not. )
CH CH XORrr, CL [SI] MOVr[], ( CX -> strlen ) CH CH XORrr, CL [SI] MOVr[], ( CX -> strlen )
SI INCx, ( first char ) AX AX XORxx, ( initial prev ) SI INCx, ( first char ) AX AX XORxx, ( initial prev )
BEGIN, ( loop ) BEGIN, ( loop )

View File

@ -1,10 +1,15 @@
L3 BSET 3 A, 'B' A, 'A' A, 'Z' A, CODE BYE BEGIN, JMPs, AGAIN, ;CODE
CODE EMIT
AX POPx, AH 0x0e MOVri, ( print char ) 0x10 INT,
;CODE
: FOO 'X' EMIT ; : BAR FOO FOO BYE ;
L3 BSET 3 A, 'B' A, 'A' A, 'R' A,
PC 3 - ORG @ 1+ ! ( main ) PC 3 - ORG @ 1+ ! ( main )
SP PS_ADDR MOVxI, SP PS_ADDR MOVxI,
BP RS_ADDR MOVxI, BP RS_ADDR MOVxI,
DI 0x08 MOVxm, ( LATEST ) DI 0x08 MOVxm, ( LATEST )
SI L3 @ MOVxI, SI L3 @ MOVxI,
CALLn, L4 @ RPCn, ( find ) CALLn, L4 @ RPCn, ( find )
IFZ, JMPs, L1 @ RPCs, ( execute ) THEN, IFZ, JMPn, L1 @ RPCn, ( execute ) THEN,
AH 0x0e MOVri, ( print char ) AL '!' MOVri, 0x10 INT, AH 0x0e MOVri, ( print char ) AL '!' MOVri, 0x10 INT,
BEGIN, JMPs, AGAIN, BEGIN, JMPs, AGAIN,