mirror of
https://github.com/dschmenk/PLASMA.git
synced 2024-07-19 21:29:56 +00:00
Merge branch 'devel' of https://github.com/dschmenk/PLASMA into devel
This commit is contained in:
commit
b987b927d3
BIN
PLASMA-BLD2.PO
BIN
PLASMA-BLD2.PO
Binary file not shown.
BIN
PLASMA-DEM2.PO
BIN
PLASMA-DEM2.PO
Binary file not shown.
BIN
PLASMA-SOS2.PO
BIN
PLASMA-SOS2.PO
Binary file not shown.
BIN
PLASMA-SYS2.PO
BIN
PLASMA-SYS2.PO
Binary file not shown.
@ -1268,6 +1268,14 @@ int crunch_seq(t_opseq **seq, int pass)
|
|||||||
freeops = 1;
|
freeops = 1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case BRGT_CODE:
|
||||||
|
if (opprev && (opprev->code == CONST_CODE) && (op->val <= opprev->val))
|
||||||
|
freeops = 1;
|
||||||
|
break;
|
||||||
|
case BRLT_CODE:
|
||||||
|
if (opprev && (opprev->code == CONST_CODE) && (op->val >= opprev->val))
|
||||||
|
freeops = 1;
|
||||||
|
break;
|
||||||
case BROR_CODE:
|
case BROR_CODE:
|
||||||
if (!op->val)
|
if (!op->val)
|
||||||
freeops = -2; // Remove zero constant
|
freeops = -2; // Remove zero constant
|
||||||
@ -1355,7 +1363,7 @@ int crunch_seq(t_opseq **seq, int pass)
|
|||||||
case BINARY_CODE(LE_TOKEN):
|
case BINARY_CODE(LE_TOKEN):
|
||||||
op->val = op->val <= opnext->val ? 1 : 0;
|
op->val = op->val <= opnext->val ? 1 : 0;
|
||||||
freeops = 2;
|
freeops = 2;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// End of collapse constant operation
|
// End of collapse constant operation
|
||||||
if ((pass > 0) && (freeops == 0) && (op->val != 0))
|
if ((pass > 0) && (freeops == 0) && (op->val != 0))
|
||||||
@ -1976,6 +1984,12 @@ int emit_pending_seq()
|
|||||||
case BRTRUE_CODE:
|
case BRTRUE_CODE:
|
||||||
emit_brtru(op->tag);
|
emit_brtru(op->tag);
|
||||||
break;
|
break;
|
||||||
|
case BRGT_CODE:
|
||||||
|
emit_brgt(op->tag);
|
||||||
|
break;
|
||||||
|
case BRLT_CODE:
|
||||||
|
emit_brlt(op->tag);
|
||||||
|
break;
|
||||||
case CODETAG_CODE:
|
case CODETAG_CODE:
|
||||||
printf("_B%03d%c\n", op->tag, LBL);
|
printf("_B%03d%c\n", op->tag, LBL);
|
||||||
break;
|
break;
|
||||||
|
@ -66,10 +66,12 @@ typedef struct _opseq {
|
|||||||
#define BRTRUE_CODE 0x0322
|
#define BRTRUE_CODE 0x0322
|
||||||
#define BREQ_CODE 0x0323
|
#define BREQ_CODE 0x0323
|
||||||
#define BRNE_CODE 0x0324
|
#define BRNE_CODE 0x0324
|
||||||
#define BRAND_CODE 0x325
|
#define BRAND_CODE 0x0325
|
||||||
#define BROR_CODE 0x326
|
#define BROR_CODE 0x0326
|
||||||
#define CODETAG_CODE 0x0327
|
#define BRLT_CODE 0x0327
|
||||||
#define NOP_CODE 0x0328
|
#define BRGT_CODE 0x0328
|
||||||
|
#define CODETAG_CODE 0x0329
|
||||||
|
#define NOP_CODE 0x032A
|
||||||
#define ADDLB_CODE 0x0330
|
#define ADDLB_CODE 0x0330
|
||||||
#define ADDLW_CODE 0x0331
|
#define ADDLW_CODE 0x0331
|
||||||
#define ADDAB_CODE 0x0332
|
#define ADDAB_CODE 0x0332
|
||||||
@ -95,6 +97,8 @@ typedef struct _opseq {
|
|||||||
#define gen_drop(seq) gen_seq(seq,DROP_CODE,0,0,0,0)
|
#define gen_drop(seq) gen_seq(seq,DROP_CODE,0,0,0,0)
|
||||||
#define gen_brand(seq,tag) gen_seq(seq,BRAND_CODE,0,tag,0,0)
|
#define gen_brand(seq,tag) gen_seq(seq,BRAND_CODE,0,tag,0,0)
|
||||||
#define gen_bror(seq,tag) gen_seq(seq,BROR_CODE,0,tag,0,0)
|
#define gen_bror(seq,tag) gen_seq(seq,BROR_CODE,0,tag,0,0)
|
||||||
|
#define gen_brgt(seq,tag) gen_seq(seq,BRGT_CODE,0,tag,0,0)
|
||||||
|
#define gen_brlt(seq,tag) gen_seq(seq,BRLT_CODE,0,tag,0,0)
|
||||||
#define gen_brfls(seq,tag) gen_seq(seq,BRFALSE_CODE,0,tag,0,0)
|
#define gen_brfls(seq,tag) gen_seq(seq,BRFALSE_CODE,0,tag,0,0)
|
||||||
#define gen_brtru(seq,tag) gen_seq(seq,BRTRUE_CODE,0,tag,0,0)
|
#define gen_brtru(seq,tag) gen_seq(seq,BRTRUE_CODE,0,tag,0,0)
|
||||||
#define gen_brnch(seq,tag) gen_seq(seq,BRNCH_CODE,0,tag,0,0)
|
#define gen_brnch(seq,tag) gen_seq(seq,BRNCH_CODE,0,tag,0,0)
|
||||||
|
@ -113,6 +113,16 @@ def crunch_seq(seq, pass)
|
|||||||
freeops = 1
|
freeops = 1
|
||||||
fin
|
fin
|
||||||
break
|
break
|
||||||
|
is BRGT_CODE
|
||||||
|
if opprev and (opprev->opcode == CONST_CODE) and (op=>opval <= opprev=>opval)
|
||||||
|
freeops = 1
|
||||||
|
fin
|
||||||
|
break
|
||||||
|
is BRLT_CODE
|
||||||
|
if opprev and (opprev->opcode == CONST_CODE) and (op=>opval >= opprev=>opval)
|
||||||
|
freeops = 1
|
||||||
|
fin
|
||||||
|
break
|
||||||
is BROR_CODE
|
is BROR_CODE
|
||||||
if not op=>opval
|
if not op=>opval
|
||||||
freeops = -2 // Remove zero constant
|
freeops = -2 // Remove zero constant
|
||||||
|
@ -89,6 +89,8 @@ const BRTRUE_CODE = $4E
|
|||||||
const BRNCH_CODE = $50
|
const BRNCH_CODE = $50
|
||||||
const BRAND_CODE = $AC
|
const BRAND_CODE = $AC
|
||||||
const BROR_CODE = $AE
|
const BROR_CODE = $AE
|
||||||
|
const BRGT_CODE = $A0
|
||||||
|
const BRLT_CODE = $A2
|
||||||
//
|
//
|
||||||
// Code tag address group
|
// Code tag address group
|
||||||
//
|
//
|
||||||
|
@ -994,9 +994,8 @@ int parse_stmnt(void)
|
|||||||
{
|
{
|
||||||
seq = NULL;
|
seq = NULL;
|
||||||
}
|
}
|
||||||
emit_seq(toseq);
|
toseq = cat_seq(toseq, fromseq);
|
||||||
emit_seq(fromseq);
|
emit_seq(step > 0 ? gen_brgt(toseq, break_tag) : gen_brlt(toseq, break_tag));
|
||||||
step > 0 ? emit_brgt(break_tag) : emit_brlt(break_tag);
|
|
||||||
emit_codetag(tag_for);
|
emit_codetag(tag_for);
|
||||||
if (type & LOCAL_TYPE)
|
if (type & LOCAL_TYPE)
|
||||||
type & BYTE_TYPE ? emit_dlb(addr) : emit_dlw(addr);
|
type & BYTE_TYPE ? emit_dlb(addr) : emit_dlw(addr);
|
||||||
|
@ -755,9 +755,7 @@ def parse_stmnt
|
|||||||
else
|
else
|
||||||
seq = NULL
|
seq = NULL
|
||||||
fin
|
fin
|
||||||
emit_seq(toseq)
|
emit_seq(gen_oprel(cat_seq(toseq, fromseq), stepdir > 0 ?? BRGT_CODE :: BRLT_CODE, break_tag))
|
||||||
emit_seq(fromseq)
|
|
||||||
if stepdir > 0; emit_brgt(break_tag); else; emit_brlt(break_tag); fin
|
|
||||||
emit_tag(tag_for)
|
emit_tag(tag_for)
|
||||||
if type & LOCAL_TYPE
|
if type & LOCAL_TYPE
|
||||||
if type & BYTE_TYPE; emit_dlb(addr); else; emit_dlw(addr); fin
|
if type & BYTE_TYPE; emit_dlb(addr); else; emit_dlw(addr); fin
|
||||||
|
@ -634,12 +634,9 @@ LW LDA ESTKL,X
|
|||||||
LDA (ESTKH-1,X)
|
LDA (ESTKH-1,X)
|
||||||
STA ESTKL,X
|
STA ESTKL,X
|
||||||
INC ESTKH-1,X
|
INC ESTKH-1,X
|
||||||
BEQ +
|
BNE +
|
||||||
LDA (ESTKH-1,X)
|
INC ESTKH,X
|
||||||
STA ESTKH,X
|
+ LDA (ESTKH-1,X)
|
||||||
JMP NEXTOP
|
|
||||||
+ INC ESTKH,X
|
|
||||||
LDA (ESTKH-1,X)
|
|
||||||
STA ESTKH,X
|
STA ESTKH,X
|
||||||
JMP NEXTOP
|
JMP NEXTOP
|
||||||
;*
|
;*
|
||||||
@ -771,12 +768,9 @@ SW LDA ESTKL,X
|
|||||||
STA (ESTKH-1,X)
|
STA (ESTKH-1,X)
|
||||||
LDA ESTKH+1,X
|
LDA ESTKH+1,X
|
||||||
INC ESTKH-1,X
|
INC ESTKH-1,X
|
||||||
BEQ +
|
BNE +
|
||||||
STA (ESTKH-1,X)
|
INC ESTKH,X
|
||||||
INX
|
+ STA (ESTKH-1,X)
|
||||||
JMP DROP
|
|
||||||
+ INC ESTKH,X
|
|
||||||
STA (ESTKH-1,X)
|
|
||||||
;*
|
;*
|
||||||
;* DROP TOS, TOS-1
|
;* DROP TOS, TOS-1
|
||||||
;*
|
;*
|
||||||
|
@ -938,12 +938,14 @@ def init_cons()#0
|
|||||||
dev_control(devcons, $02, @nlmode)
|
dev_control(devcons, $02, @nlmode)
|
||||||
end
|
end
|
||||||
def cout(ch)#0
|
def cout(ch)#0
|
||||||
|
byte nc
|
||||||
|
|
||||||
|
nc = 1
|
||||||
if ch == $0D
|
if ch == $0D
|
||||||
ch = $0A0D
|
ch = $0A0D
|
||||||
write(refcons, @ch, 2)
|
nc = 2
|
||||||
else
|
|
||||||
write(refcons, @ch, 1)
|
|
||||||
fin
|
fin
|
||||||
|
write(refcons, @ch, nc)
|
||||||
end
|
end
|
||||||
def crout()#0
|
def crout()#0
|
||||||
cout($0D)
|
cout($0D)
|
||||||
|
Loading…
Reference in New Issue
Block a user